From f1395dd7a3d270ce9bf8e17a4a1cb15e935c1fdf Mon Sep 17 00:00:00 2001 From: Nina Miolane Date: Tue, 13 Jan 2026 17:16:39 +0000 Subject: [PATCH 01/30] add install of gfortran in main readme + try out running Fran's code: works beautifully --- README.md | 1 + gagf/rnns/README.md | 1 + gagf/rnns/config.yaml | 11 ++++++----- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index d2c191e..321ac04 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,7 @@ Group Alternating Gradient Flows # Installing Dependencies ``` +sudo apt install -y gfortran conda env create -f conda.yaml conda activate gagf poetry install diff --git a/gagf/rnns/README.md b/gagf/rnns/README.md index 9b49905..5031d47 100644 --- a/gagf/rnns/README.md +++ b/gagf/rnns/README.md @@ -48,6 +48,7 @@ Automatically selects the recommended optimizer: To train a model on modular addition tasks: - **1D**: $(C_p)^k$ - Cyclic group of order $p$ - **2D**: $(C_{p1} \times C_{p2})^k$ - Product of two cyclic groups +- **Dihedral D3**: $D_3$ - Dihedral group of order 3 **Steps:** diff --git a/gagf/rnns/config.yaml b/gagf/rnns/config.yaml index 8ecf543..0f7ea12 100644 --- a/gagf/rnns/config.yaml +++ b/gagf/rnns/config.yaml @@ -15,12 +15,13 @@ # Data Configuration # ------------------ data: - # Dimension: 1 for C_p (cyclic group), 2 for C_p1 x C_p2 (product group) - dimension: 1 # 1 | 2 + # Dimension: 1 for C_p (cyclic group), 2 for C_p1 x C_p2 (product group), 'D3' for Dihedral D3 + dimension: 1 # 1 | 2 | 'D3' # Group Parameters # For dimension=1: only 'p' is used # For dimension=2: 'p1' and 'p2' are used + # For dimension='D3': none of p, p1, p2 are used p: 10 # Cyclic group dimension (1D only) p1: 4 #10 # Height/rows dimension (2D only) @@ -44,7 +45,7 @@ data: model: model_type: 'SequentialMLP' # 'QuadraticRNN' | 'SequentialMLP' - hidden_dim: 6 # Hidden layer size + hidden_dim: 600 # Hidden layer size # Note: SequentialMLP may need larger values (e.g., 600) init_scale: 1.0e-2 # Weight initialization scale @@ -62,8 +63,8 @@ training: mode: 'online' # 'online' | 'offline' # Steps/Epochs - epochs: 200 # Used when mode='offline' - num_steps: 1000000 #500000 # Used when mode='online' + epochs: 2 #200 # Used when mode='offline' + num_steps: 100 #1000000 #500000 # Used when mode='online' # Optimizer optimizer: 'adam' #per_neuron' # 'auto' | 'adam' | 'hybrid' | 'per_neuron' From ca421c0f78756367f9e315552465e6a4dbcfe1a6 Mon Sep 17 00:00:00 2001 From: Nina Miolane Date: Tue, 13 Jan 2026 17:36:38 +0000 Subject: [PATCH 02/30] Add comments to guide code generation --- gagf/rnns/config.yaml | 2 +- gagf/rnns/datamodule.py | 26 +++++++++++++ gagf/rnns/main.py | 82 +++++++++++++++++++++++++++++++++++++---- 3 files changed, 101 insertions(+), 9 deletions(-) diff --git a/gagf/rnns/config.yaml b/gagf/rnns/config.yaml index 0f7ea12..4fff6e8 100644 --- a/gagf/rnns/config.yaml +++ b/gagf/rnns/config.yaml @@ -60,7 +60,7 @@ model: # Training Configuration # ---------------------- training: - mode: 'online' # 'online' | 'offline' + mode: 'offline' # 'online' | 'offline' # Steps/Epochs epochs: 2 #200 # Used when mode='offline' diff --git a/gagf/rnns/datamodule.py b/gagf/rnns/datamodule.py index e3bffd9..bcb499e 100644 --- a/gagf/rnns/datamodule.py +++ b/gagf/rnns/datamodule.py @@ -326,6 +326,32 @@ def build_modular_addition_sequence_dataset_2d( return X, Y, sequence_xy +def build_modular_addition_sequence_dataset_D3( + p: int, + template: np.ndarray, + k: int, + mode: str = "sampled", + num_samples: int = 65536, + return_all_outputs: bool = False, +) -> tuple[np.ndarray, np.ndarray, np.ndarray]: + """ + Build 3D modular addition dataset. + + Args: + p: dimension of Dihedral D3 + template: (p,) template array + k: sequence length + mode: "sampled" or "exhaustive" + num_samples: number of samples for "sampled" mode + + Returns: + X: (N, k, p) where token t is template rolled by shift_t + Y: (N, p) or (N, k-1, p) target rolled by cumulative sum + sequence: (N, k) integer group elements (shifts) per token + """ + assert template.shape == (p,), f"template must be ({p},), got {template.shape}" + #TODO(Nina): Use code from binary_action_learning/ folder. + raise NotImplementedError("build_modular_addition_sequence_dataset_D3 is not implemented yet.") def sequence_to_paths_xy(sequence_xy: np.ndarray, p1: int, p2: int) -> np.ndarray: """ diff --git a/gagf/rnns/main.py b/gagf/rnns/main.py index 5d00939..5199924 100644 --- a/gagf/rnns/main.py +++ b/gagf/rnns/main.py @@ -476,6 +476,36 @@ def produce_plots_1d( print("\n✓ All 1D plots generated successfully!") +def produce_plots_D3( + run_dir: Path, + config: dict, + model, + param_hist, + param_save_indices, + train_loss_hist, + template_D3: np.ndarray, +): + """ + Generate all analysis plots after training (D3 version). + + Args: + run_dir: Directory to save plots + config: Configuration dictionary (must have dimension=3) + model: Trained model (QuadraticRNN or SequentialMLP) + param_hist: List of parameter snapshots + param_save_indices: Indices where params were saved + + train_loss_hist: Training loss history + template_D3: 3D template array (p, p, p) + """ + print("\n=== Generating Analysis Plots (D3) ===") + + ### ----- COMPUTE X-AXIS VALUES ----- ### + p = config['data']['p'] + k = config['data']['k'] + + # TODO(Nina): Using code in binary_action_learning.py + def train_single_run(config: dict, run_dir: Path = None) -> dict: """ Train a model (QuadraticRNN or SequentialMLP) on modular addition for a single configuration. @@ -504,8 +534,8 @@ def train_single_run(config: dict, run_dir: Path = None) -> dict: ### ----- GENERATE DATA ----- ### print("Generating data...") - dimension = config['data']['dimension'] - template_type = config['data']['template_type'] + dimension = config['data']['dimension'] # TODO(Nina): Here, it will be a string D3. + template_type = config['data']['template_type'] # TODO(Nina): Here, use a one-hot template for D3, i.e., a one-hot vector of length D3.order() = 6. if dimension == 1: # 1D template generation @@ -560,6 +590,18 @@ def train_single_run(config: dict, run_dir: Path = None) -> dict: fig, ax = plot_2d_signal(template_2d, title="Template", cmap="gray") fig.savefig(os.path.join(run_dir, "template.pdf"), bbox_inches="tight", dpi=150) print(f" ✓ Saved template") + elif dimension == 'D3': + from escnn.group import DihedralGroup + D3 = DihedralGroup(order=3) + template_d3 = np.eye(D3.order()) + template_d3 = template_d3 - np.mean(template_d3) + template = template_d3 # For consistency in code below + + # Visualize 3D template + print("Visualizing template...") + fig, ax = plt.plot(template_d3, title="Template", cmap="gray") + fig.savefig(os.path.join(run_dir, "template.pdf"), bbox_inches="tight", dpi=150) + print(f" ✓ Saved template") else: raise ValueError(f"dimension must be 1 or 2, got {dimension}") @@ -584,7 +626,7 @@ def train_single_run(config: dict, run_dir: Path = None) -> dict: transform_type=config['model']['transform_type'], ).to(device) elif model_type == 'SequentialMLP': - rnn_2d = SequentialMLP( + rnn_2d = SequentialMLP( #TODO(NiT): Rename rnn_2d, in both if loops, to model or something similar. p=p_flat, d=config['model']['hidden_dim'], template=template_torch, @@ -659,7 +701,7 @@ def train_single_run(config: dict, run_dir: Path = None) -> dict: from gagf.rnns.datamodule import OnlineModularAdditionDataset1D # Training dataset - train_dataset = OnlineModularAdditionDataset1D( + train_dataset = OnlineModularAdditionDataset1D( p=config['data']['p'], template=template_1d, k=config['data']['k'], @@ -677,7 +719,7 @@ def train_single_run(config: dict, run_dir: Path = None) -> dict: device=device, return_all_outputs=config['model']['return_all_outputs'], ) - else: # dimension == 2 + elif dimension == 2: from gagf.rnns.datamodule import OnlineModularAdditionDataset2D # Training dataset @@ -701,6 +743,8 @@ def train_single_run(config: dict, run_dir: Path = None) -> dict: device=device, return_all_outputs=config['model']['return_all_outputs'], ) + else: # Note: nothing to add here yet for D3. + raise ValueError(f"dimension must be 1 or 2, got {dimension}") train_loader = DataLoader(train_dataset, batch_size=None, num_workers=0) val_loader = DataLoader(val_dataset, batch_size=None, num_workers=0) @@ -735,7 +779,7 @@ def train_single_run(config: dict, run_dir: Path = None) -> dict: num_samples=val_samples, return_all_outputs=config['model']['return_all_outputs'], ) - else: # dimension == 2 + elif dimension == 2: from gagf.rnns.datamodule import build_modular_addition_sequence_dataset_2d # Generate training dataset @@ -760,7 +804,27 @@ def train_single_run(config: dict, run_dir: Path = None) -> dict: num_samples=val_samples, return_all_outputs=config['model']['return_all_outputs'], ) - + elif dimension == 'D3': # TODO(Nina): Add the option to ingest the D3 train and validation datasets. + from gagf.rnns.datamodule import build_modular_addition_sequence_dataset_d3 + X_train, Y_train, _ = build_modular_addition_sequence_dataset_d3( + config['data']['p'], + template_d3, + config['data']['k'], + mode=config['data']['mode'], + num_samples=config['data']['num_samples'], + return_all_outputs=config['model']['return_all_outputs'], + ) + X_val, Y_val, _ = build_modular_addition_sequence_dataset_d3( + config['data']['p'], + template_d3, + config['data']['k'], + mode='sampled', + num_samples=val_samples, + return_all_outputs=config['model']['return_all_outputs'], + ) + else: + raise ValueError(f"dimension must be 1 or 2, got {dimension}") + X_train_t = torch.tensor(X_train, dtype=torch.float32, device=device) Y_train_t = torch.tensor(Y_train, dtype=torch.float32, device=device) X_val_t = torch.tensor(X_val, dtype=torch.float32, device=device) @@ -859,7 +923,7 @@ def train_single_run(config: dict, run_dir: Path = None) -> dict: training_mode=training_mode, device=device ) - else: + elif dimension == 1: # Produce detailed plots for 1D produce_plots_1d( run_dir=run_dir, @@ -872,6 +936,8 @@ def train_single_run(config: dict, run_dir: Path = None) -> dict: training_mode=training_mode, device=device ) + else: # TODO(Nina): Add the option to ingest the D3 train and validation datasets. + raise ValueError(f"dimension must be 1 or 2, got {dimension}") # Return results dictionary results = { From 0f4d521fd69a9de312f77e8ed135e8d585131ad5 Mon Sep 17 00:00:00 2001 From: Nina Miolane Date: Tue, 13 Jan 2026 18:00:03 +0000 Subject: [PATCH 03/30] D3 running with one-hot --- gagf/rnns/config.yaml | 12 +- gagf/rnns/datamodule.py | 85 +++++++-- gagf/rnns/main.py | 370 +++++++++++++++++++++++++++++++++++++--- 3 files changed, 429 insertions(+), 38 deletions(-) diff --git a/gagf/rnns/config.yaml b/gagf/rnns/config.yaml index 4fff6e8..9d3923e 100644 --- a/gagf/rnns/config.yaml +++ b/gagf/rnns/config.yaml @@ -16,7 +16,7 @@ # ------------------ data: # Dimension: 1 for C_p (cyclic group), 2 for C_p1 x C_p2 (product group), 'D3' for Dihedral D3 - dimension: 1 # 1 | 2 | 'D3' + dimension: 'D3' # 1 | 2 | 'D3' # Group Parameters # For dimension=1: only 'p' is used @@ -37,7 +37,7 @@ data: n_freqs: 1 # Number of Fourier modes, only if template_type='fourier' # Dataset Mode (offline training only) - mode: sampled # 'sampled' | 'exhaustive' + mode: exhaustive # 'sampled' | 'exhaustive' num_samples: 50000 # Model Configuration @@ -63,11 +63,11 @@ training: mode: 'offline' # 'online' | 'offline' # Steps/Epochs - epochs: 2 #200 # Used when mode='offline' + epochs: 2000 #200 # Used when mode='offline' num_steps: 100 #1000000 #500000 # Used when mode='online' # Optimizer - optimizer: 'adam' #per_neuron' # 'auto' | 'adam' | 'hybrid' | 'per_neuron' + optimizer: 'per_neuron' #per_neuron' # 'auto' | 'adam' | 'hybrid' | 'per_neuron' # 'auto' selects optimizer based on model: # - SequentialMLP → 'per_neuron' (recommended) # - QuadraticRNN → 'adam' @@ -99,7 +99,7 @@ training: # ------------------------- # Stop training early when loss reduction reaches a threshold. # Set to null to disable (train for full num_steps/epochs). - reduction_threshold: 0.99 # e.g., 0.99 = stop when 99% loss reduction achieved + reduction_threshold: null # e.g., 0.99 = stop when 99% loss reduction achieved # null = disabled (train for full steps/epochs) # Device @@ -109,4 +109,4 @@ device: cuda:1 # 'cuda' | 'cpu' # Analysis & Visualization # ------------------------ analysis: - checkpoints: [0.0, 0.25, 0.5, 0.75, 1.0] # Fraction of training for analysis + checkpoints: [0.0, 1.0] # Fraction of training for analysis diff --git a/gagf/rnns/datamodule.py b/gagf/rnns/datamodule.py index bcb499e..d162da1 100644 --- a/gagf/rnns/datamodule.py +++ b/gagf/rnns/datamodule.py @@ -327,7 +327,6 @@ def build_modular_addition_sequence_dataset_2d( return X, Y, sequence_xy def build_modular_addition_sequence_dataset_D3( - p: int, template: np.ndarray, k: int, mode: str = "sampled", @@ -335,23 +334,87 @@ def build_modular_addition_sequence_dataset_D3( return_all_outputs: bool = False, ) -> tuple[np.ndarray, np.ndarray, np.ndarray]: """ - Build 3D modular addition dataset. + Build D3 (dihedral group) composition dataset for sequence length k. + + Uses the regular representation of D3 to transform the template. + For a sequence of k group elements (g1, g2, ..., gk), we compute: + - X[i, t, :] = regular_rep(g_t) @ template (template transformed by g_t) + - Y[i, :] = regular_rep(g1 * g2 * ... * gk) @ template (template transformed by composition) Args: - p: dimension of Dihedral D3 - template: (p,) template array - k: sequence length + template: (group_order,) template array, where group_order = 6 for D3 + k: sequence length (number of group elements to compose) mode: "sampled" or "exhaustive" num_samples: number of samples for "sampled" mode + return_all_outputs: if True, return intermediate outputs after each composition Returns: - X: (N, k, p) where token t is template rolled by shift_t - Y: (N, p) or (N, k-1, p) target rolled by cumulative sum - sequence: (N, k) integer group elements (shifts) per token + X: (N, k, group_order) input sequences + Y: (N, group_order) or (N, k-1, group_order) target outputs + sequence: (N, k) integer indices of group elements per token """ - assert template.shape == (p,), f"template must be ({p},), got {template.shape}" - #TODO(Nina): Use code from binary_action_learning/ folder. - raise NotImplementedError("build_modular_addition_sequence_dataset_D3 is not implemented yet.") + from escnn.group import DihedralGroup + + # Create D3 group (dihedral group of order 6) + D3 = DihedralGroup(N=3) + group_order = D3.order() # = 6 + + assert template.shape == (group_order,), f"template must be ({group_order},), got {template.shape}" + + # Get regular representation and list of elements + regular_rep = D3.representations["regular"] + elements = list(D3.elements) + n_elements = len(elements) # = 6 + + # Pre-compute representation matrices for all elements + rep_matrices = np.array([regular_rep(g) for g in elements]) # (6, 6, 6) + + if mode == "exhaustive": + # Total number of sequences: n_elements^k + total = n_elements ** k + if total > 1_000_000: + raise ValueError(f"n_elements^k = {total} is huge; use mode='sampled' instead.") + N = total + + # Generate all possible sequences of k element indices + sequence = np.zeros((N, k), dtype=np.int64) + for idx in range(N): + for t in range(k): + sequence[idx, t] = (idx // (n_elements ** t)) % n_elements + else: + # Sampled mode: randomly sample sequences + N = int(num_samples) + sequence = np.random.randint(0, n_elements, size=(N, k), dtype=np.int64) + + # Initialize output arrays + X = np.zeros((N, k, group_order), dtype=np.float32) + Y = np.zeros((N, k, group_order), dtype=np.float32) + + for i in range(N): + # Compute cumulative composition of group elements + cumulative_rep = np.eye(group_order) # Identity matrix (identity element) + + for t in range(k): + elem_idx = sequence[i, t] + g_rep = rep_matrices[elem_idx] + + # X[i, t] = template transformed by g_t + X[i, t, :] = g_rep @ template + + # Update cumulative composition: g1 * g2 * ... * g_t + cumulative_rep = cumulative_rep @ g_rep + + # Y[i, t] = template transformed by cumulative composition + Y[i, t, :] = cumulative_rep @ template + + if not return_all_outputs: + # Only return final output + Y = Y[:, -1, :] # (N, group_order) + else: + # Return all intermediate outputs (skip first since it's just g1, not a composition) + Y = Y[:, 1:, :] # (N, k-1, group_order) + + return X, Y, sequence def sequence_to_paths_xy(sequence_xy: np.ndarray, p1: int, p2: int) -> np.ndarray: """ diff --git a/gagf/rnns/main.py b/gagf/rnns/main.py index 5199924..2b32eec 100644 --- a/gagf/rnns/main.py +++ b/gagf/rnns/main.py @@ -476,6 +476,188 @@ def produce_plots_1d( print("\n✓ All 1D plots generated successfully!") +def plot_model_predictions_over_time_D3( + model, + param_hist, + X_eval, + Y_eval, + group_order: int, + checkpoint_indices: list, + save_path: str = None, + num_samples: int = 5, +): + """ + Plot model predictions vs targets at different training checkpoints for D3. + + Args: + model: Trained model + param_hist: List of parameter snapshots + X_eval: Input evaluation tensor (N, k, group_order) + Y_eval: Target evaluation tensor (N, group_order) + group_order: Order of D3 group (6) + checkpoint_indices: Indices into param_hist to visualize + save_path: Path to save the plot + num_samples: Number of samples to show + """ + n_checkpoints = len(checkpoint_indices) + + fig, axes = plt.subplots(num_samples, n_checkpoints, figsize=(4 * n_checkpoints, 3 * num_samples)) + if num_samples == 1: + axes = axes.reshape(1, -1) + if n_checkpoints == 1: + axes = axes.reshape(-1, 1) + + # Select random sample indices + sample_indices = np.random.choice(len(X_eval), size=min(num_samples, len(X_eval)), replace=False) + + for col, ckpt_idx in enumerate(checkpoint_indices): + # Load parameters for this checkpoint + model.load_state_dict(param_hist[ckpt_idx]) + model.eval() + + with torch.no_grad(): + outputs = model(X_eval[sample_indices]) + outputs_np = outputs.cpu().numpy() + targets_np = Y_eval[sample_indices].cpu().numpy() + + for row, (output, target) in enumerate(zip(outputs_np, targets_np)): + ax = axes[row, col] + x_axis = np.arange(group_order) + + ax.bar(x_axis - 0.15, target, width=0.3, label='Target', alpha=0.7, color='#2ecc71') + ax.bar(x_axis + 0.15, output, width=0.3, label='Output', alpha=0.7, color='#e74c3c') + + if row == 0: + ax.set_title(f'Checkpoint {ckpt_idx}') + if col == 0: + ax.set_ylabel(f'Sample {sample_indices[row]}') + if row == num_samples - 1: + ax.set_xlabel('Group element') + if row == 0 and col == n_checkpoints - 1: + ax.legend(loc='upper right', fontsize=8) + + ax.set_xticks(x_axis) + ax.grid(True, alpha=0.3) + + plt.suptitle('D3 Model Predictions vs Targets Over Training', fontsize=14) + plt.tight_layout() + + if save_path: + plt.savefig(save_path, bbox_inches='tight', dpi=150) + plt.close() + + +def plot_power_spectrum_over_time_D3( + model, + param_hist, + X_eval, + template: np.ndarray, + D3, + checkpoint_indices: list, + save_path: str = None, + num_samples_for_power: int = 100, +): + """ + Plot power spectrum of model outputs vs template power spectrum over training for D3. + + Args: + model: Trained model + param_hist: List of parameter snapshots + X_eval: Input evaluation tensor + template: Template array (group_order,) + D3: DihedralGroup object from escnn + checkpoint_indices: Indices into param_hist to visualize + save_path: Path to save the plot + num_samples_for_power: Number of samples to average power over + """ + from group_agf.binary_action_learning.group_fourier_transform import compute_group_fourier_coef + + group_order = D3.order() + irreps = D3.irreps() + n_irreps = len(irreps) + + # Compute template power spectrum + template_power = np.zeros(n_irreps) + for i, irrep in enumerate(irreps): + fourier_coef = compute_group_fourier_coef(D3, template, irrep) + template_power[i] = irrep.size * np.trace(fourier_coef.conj().T @ fourier_coef) + template_power = template_power / group_order + + # Compute model output power at each checkpoint + n_checkpoints = len(checkpoint_indices) + model_powers = np.zeros((n_checkpoints, n_irreps)) + + X_subset = X_eval[:num_samples_for_power] + + for ckpt_i, ckpt_idx in enumerate(checkpoint_indices): + model.load_state_dict(param_hist[ckpt_idx]) + model.eval() + + with torch.no_grad(): + outputs = model(X_subset) + outputs_np = outputs.cpu().numpy() + + # Average power over all samples + powers = np.zeros((len(outputs_np), n_irreps)) + for sample_i, output in enumerate(outputs_np): + for irrep_i, irrep in enumerate(irreps): + fourier_coef = compute_group_fourier_coef(D3, output, irrep) + powers[sample_i, irrep_i] = irrep.size * np.trace(fourier_coef.conj().T @ fourier_coef) + powers = powers / group_order + model_powers[ckpt_i] = np.mean(powers, axis=0) + + # Create plot + fig, axes = plt.subplots(1, 2, figsize=(14, 5)) + + # Left: Power spectrum comparison at checkpoints + ax1 = axes[0] + x_pos = np.arange(n_irreps) + width = 0.8 / (n_checkpoints + 1) + + # Plot template power + ax1.bar(x_pos - 0.4 + width/2, template_power, width=width, label='Template', color='black', alpha=0.8) + + # Plot model power at each checkpoint + colors = plt.cm.viridis(np.linspace(0.2, 0.8, n_checkpoints)) + for ckpt_i, (ckpt_idx, color) in enumerate(zip(checkpoint_indices, colors)): + offset = -0.4 + (ckpt_i + 1.5) * width + ax1.bar(x_pos + offset, model_powers[ckpt_i], width=width, + label=f'Ckpt {ckpt_idx}', color=color, alpha=0.7) + + ax1.set_xlabel('Irrep index') + ax1.set_ylabel('Power') + ax1.set_title('Power Spectrum: Template vs Model Output') + ax1.set_xticks(x_pos) + ax1.set_xticklabels([f'{i}\n(dim={irreps[i].size})' for i in range(n_irreps)], fontsize=8) + ax1.legend(loc='upper right', fontsize=8) + ax1.grid(True, alpha=0.3, axis='y') + + # Right: Power evolution over checkpoints for top irreps + ax2 = axes[1] + top_k = min(5, n_irreps) + top_irrep_indices = np.argsort(template_power)[::-1][:top_k] + + for irrep_idx in top_irrep_indices: + power_values = model_powers[:, irrep_idx] + ax2.plot(checkpoint_indices, power_values, 'o-', lw=2, markersize=8, + label=f'Irrep {irrep_idx} (dim={irreps[irrep_idx].size})') + # Add horizontal line for template power + ax2.axhline(template_power[irrep_idx], linestyle='--', alpha=0.5) + + ax2.set_xlabel('Checkpoint index') + ax2.set_ylabel('Power') + ax2.set_title('Power Evolution Over Training') + ax2.legend(loc='upper left', fontsize=8) + ax2.grid(True, alpha=0.3) + + plt.suptitle('D3 Power Spectrum Analysis', fontsize=14) + plt.tight_layout() + + if save_path: + plt.savefig(save_path, bbox_inches='tight', dpi=150) + plt.close() + + def produce_plots_D3( run_dir: Path, config: dict, @@ -484,27 +666,137 @@ def produce_plots_D3( param_save_indices, train_loss_hist, template_D3: np.ndarray, + device: str = 'cpu', ): """ Generate all analysis plots after training (D3 version). Args: run_dir: Directory to save plots - config: Configuration dictionary (must have dimension=3) + config: Configuration dictionary (must have dimension='D3') model: Trained model (QuadraticRNN or SequentialMLP) param_hist: List of parameter snapshots param_save_indices: Indices where params were saved - train_loss_hist: Training loss history - template_D3: 3D template array (p, p, p) + template_D3: 1D template array of shape (group_order,) where group_order=6 for D3 + device: Device string ('cpu' or 'cuda') """ print("\n=== Generating Analysis Plots (D3) ===") - ### ----- COMPUTE X-AXIS VALUES ----- ### - p = config['data']['p'] + from escnn.group import DihedralGroup + D3 = DihedralGroup(N=3) + group_order = D3.order() # = 6 + k = config['data']['k'] - - # TODO(Nina): Using code in binary_action_learning.py + batch_size = config['data']['batch_size'] + training_mode = config['training']['mode'] + + # Total data space size for D3 with k compositions + total_space_size = group_order ** k + + # Calculate x-axis values + if training_mode == 'online': + steps = np.arange(len(train_loss_hist)) + samples_seen = batch_size * steps + fraction_of_space = samples_seen / total_space_size + x_label = "Step" + x_values = steps + else: # offline + epochs = np.arange(len(train_loss_hist)) + samples_seen = config['data']['num_samples'] * epochs + fraction_of_space = samples_seen / total_space_size + x_label = "Epoch" + x_values = epochs + + # Save x-axis data + samples_seen_path = run_dir / "samples_seen.npy" + fraction_path = run_dir / "fraction_of_space_seen.npy" + np.save(samples_seen_path, samples_seen) + np.save(fraction_path, fraction_of_space) + print(f" ✓ Saved {samples_seen_path}") + print(f" ✓ Saved {fraction_path}") + + print(f"\nD3 group order: {group_order}") + print(f"Sequence length k: {k}") + print(f"Total data space: {total_space_size:,} sequences") + if len(samples_seen) > 0: + print(f"Samples seen: {samples_seen[-1]:,} ({fraction_of_space[-1]*100:.4f}% of space)") + + ### ----- GENERATE EVALUATION DATA ----- ### + print("\nGenerating evaluation data for visualization...") + from gagf.rnns.datamodule import build_modular_addition_sequence_dataset_D3 + X_eval, Y_eval, _ = build_modular_addition_sequence_dataset_D3( + template_D3, + k, + mode="sampled", + num_samples=min(config['data']['num_samples'], 1000), + return_all_outputs=config['model']['return_all_outputs'], + ) + X_eval_t = torch.tensor(X_eval, dtype=torch.float32, device=device) + Y_eval_t = torch.tensor(Y_eval, dtype=torch.float32, device=device) + print(f" Generated {X_eval_t.shape[0]} samples for visualization") + + ### ----- COMPUTE CHECKPOINT INDICES ----- ### + total_checkpoints = len(param_hist) + checkpoint_fractions = config['analysis']['checkpoints'] + checkpoint_indices = [int(f * (total_checkpoints - 1)) for f in checkpoint_fractions] + print(f"Analysis checkpoints: {checkpoint_indices} (out of {total_checkpoints})") + + ### ----- PLOT TRAINING LOSS ----- ### + print("\nPlotting training loss...") + + fig, axes = plt.subplots(2, 2, figsize=(12, 10)) + + scale_configs = [ + ('linear', 'linear', 'Linear Scale'), + ('linear', 'log', 'Log Y'), + ('log', 'linear', 'Log X'), + ('log', 'log', 'Log-Log'), + ] + + for ax, (xscale, yscale, title) in zip(axes.flat, scale_configs): + ax.plot(x_values, train_loss_hist, lw=2, color='#1f77b4') + ax.set_xscale(xscale) + ax.set_yscale(yscale) + ax.set_xlabel(x_label) + ax.set_ylabel('Training Loss') + ax.set_title(title) + ax.grid(True, alpha=0.3) + + plt.suptitle(f'D3 Group Composition (k={k})', fontsize=14) + plt.tight_layout() + training_loss_path = os.path.join(run_dir, "training_loss.pdf") + plt.savefig(training_loss_path, bbox_inches='tight', dpi=150) + plt.close() + print(f" ✓ Saved {training_loss_path}") + + ### ----- PLOT MODEL PREDICTIONS OVER TIME ----- ### + print("\nPlotting model predictions over time...") + plot_model_predictions_over_time_D3( + model=model, + param_hist=param_hist, + X_eval=X_eval_t, + Y_eval=Y_eval_t, + group_order=group_order, + checkpoint_indices=checkpoint_indices, + save_path=os.path.join(run_dir, "predictions_over_time.pdf"), + ) + print(f" ✓ Saved {os.path.join(run_dir, 'predictions_over_time.pdf')}") + + ### ----- PLOT POWER SPECTRUM OVER TIME ----- ### + print("\nPlotting power spectrum over time...") + plot_power_spectrum_over_time_D3( + model=model, + param_hist=param_hist, + X_eval=X_eval_t, + template=template_D3, + D3=D3, + checkpoint_indices=checkpoint_indices, + save_path=os.path.join(run_dir, "power_spectrum_analysis.pdf"), + ) + print(f" ✓ Saved {os.path.join(run_dir, 'power_spectrum_analysis.pdf')}") + + print("\n✓ All D3 plots generated successfully!") def train_single_run(config: dict, run_dir: Path = None) -> dict: """ @@ -592,15 +884,30 @@ def train_single_run(config: dict, run_dir: Path = None) -> dict: print(f" ✓ Saved template") elif dimension == 'D3': from escnn.group import DihedralGroup - D3 = DihedralGroup(order=3) - template_d3 = np.eye(D3.order()) + D3 = DihedralGroup(N=3) # D3 = dihedral group of order 6 (3 rotations * 2 for reflections) + group_order = D3.order() # = 6 + p_flat = group_order # For D3, the "p" is the group order + + # Generate one-hot template of length group_order + # This creates a template with a spike at position 1 + template_d3 = np.zeros(group_order, dtype=np.float32) + template_d3[1] = 10.0 template_d3 = template_d3 - np.mean(template_d3) template = template_d3 # For consistency in code below - # Visualize 3D template + print(f"D3 group order: {group_order}") + print(f"Template shape: {template.shape}") + + # Visualize D3 template print("Visualizing template...") - fig, ax = plt.plot(template_d3, title="Template", cmap="gray") + fig, ax = plt.subplots(figsize=(8, 4)) + ax.bar(range(group_order), template_d3) + ax.set_xlabel('Group element index') + ax.set_ylabel('Value') + ax.set_title(f'D3 Template (order={group_order})') + ax.set_xticks(range(group_order)) fig.savefig(os.path.join(run_dir, "template.pdf"), bbox_inches="tight", dpi=150) + plt.close(fig) print(f" ✓ Saved template") else: raise ValueError(f"dimension must be 1 or 2, got {dimension}") @@ -743,8 +1050,14 @@ def train_single_run(config: dict, run_dir: Path = None) -> dict: device=device, return_all_outputs=config['model']['return_all_outputs'], ) - else: # Note: nothing to add here yet for D3. - raise ValueError(f"dimension must be 1 or 2, got {dimension}") + elif dimension == 'D3': + # Online training for D3 is not yet implemented + raise NotImplementedError( + "Online training mode is not yet implemented for D3. " + "Please use training.mode='offline' in the config." + ) + else: + raise ValueError(f"dimension must be 1, 2, or 'D3', got {dimension}") train_loader = DataLoader(train_dataset, batch_size=None, num_workers=0) val_loader = DataLoader(val_dataset, batch_size=None, num_workers=0) @@ -804,18 +1117,21 @@ def train_single_run(config: dict, run_dir: Path = None) -> dict: num_samples=val_samples, return_all_outputs=config['model']['return_all_outputs'], ) - elif dimension == 'D3': # TODO(Nina): Add the option to ingest the D3 train and validation datasets. - from gagf.rnns.datamodule import build_modular_addition_sequence_dataset_d3 - X_train, Y_train, _ = build_modular_addition_sequence_dataset_d3( - config['data']['p'], + elif dimension == 'D3': + from gagf.rnns.datamodule import build_modular_addition_sequence_dataset_D3 + + # Generate training dataset + X_train, Y_train, _ = build_modular_addition_sequence_dataset_D3( template_d3, config['data']['k'], mode=config['data']['mode'], num_samples=config['data']['num_samples'], return_all_outputs=config['model']['return_all_outputs'], ) - X_val, Y_val, _ = build_modular_addition_sequence_dataset_d3( - config['data']['p'], + + # Generate validation dataset + val_samples = max(1000, config['data']['num_samples'] // 10) + X_val, Y_val, _ = build_modular_addition_sequence_dataset_D3( template_d3, config['data']['k'], mode='sampled', @@ -936,8 +1252,20 @@ def train_single_run(config: dict, run_dir: Path = None) -> dict: training_mode=training_mode, device=device ) - else: # TODO(Nina): Add the option to ingest the D3 train and validation datasets. - raise ValueError(f"dimension must be 1 or 2, got {dimension}") + elif dimension == 'D3': + # Produce basic plots for D3 + produce_plots_D3( + run_dir=run_dir, + config=config, + model=rnn_2d, + param_hist=param_hist, + param_save_indices=param_save_indices, + train_loss_hist=train_loss_hist, + template_D3=template_d3, + device=device, + ) + else: + raise ValueError(f"dimension must be 1, 2, or 'D3', got {dimension}") # Return results dictionary results = { From 31d12d641d0940081b6809ad5762ce5e00ff076c Mon Sep 17 00:00:00 2001 From: Nina Miolane Date: Tue, 13 Jan 2026 18:29:45 +0000 Subject: [PATCH 04/30] We have a staircase with D3 and specifying powers --- gagf/rnns/config.yaml | 24 +++++--- gagf/rnns/main.py | 127 ++++++++++++++++++++++++++++++++---------- 2 files changed, 114 insertions(+), 37 deletions(-) diff --git a/gagf/rnns/config.yaml b/gagf/rnns/config.yaml index 9d3923e..cc72006 100644 --- a/gagf/rnns/config.yaml +++ b/gagf/rnns/config.yaml @@ -32,10 +32,17 @@ data: seed: 5 # Template Generation - template_type: 'fourier' # 'mnist' | 'fourier' | 'gaussian' + # For dimension=1,2: 'mnist' | 'fourier' | 'gaussian' | 'onehot' + # For dimension='D3': 'onehot' | 'custom_fourier' + template_type: 'custom_fourier' mnist_label: 4 # MNIST digit (0-9), only if template_type='mnist' n_freqs: 1 # Number of Fourier modes, only if template_type='fourier' + # D3 custom_fourier template: powers for each irrep's Fourier coefficient + # D3 has 3 irreps with dimensions [1, 1, 2], so powers should have 3 values + # Example: [0., 1700., 400.] means DC=0, irrep1=1700, irrep2=400 + powers: [0., 1700., 400.] + # Dataset Mode (offline training only) mode: exhaustive # 'sampled' | 'exhaustive' num_samples: 50000 @@ -48,8 +55,9 @@ model: hidden_dim: 600 # Hidden layer size # Note: SequentialMLP may need larger values (e.g., 600) - init_scale: 1.0e-2 # Weight initialization scale + init_scale: 1.0e-6 # Weight initialization scale # Larger k may need larger init_scale + # Note: D3 needs very small init_scale (1e-6) return_all_outputs: false # true = seq-to-seq guidance (for QuadraticRNN only) # false = seq-to-one (final output only) @@ -63,7 +71,7 @@ training: mode: 'offline' # 'online' | 'offline' # Steps/Epochs - epochs: 2000 #200 # Used when mode='offline' + epochs: 5000 # Used when mode='offline' num_steps: 100 #1000000 #500000 # Used when mode='online' # Optimizer @@ -73,10 +81,10 @@ training: # - QuadraticRNN → 'adam' # 'hybrid' is QuadraticRNN-specific only - learning_rate: 1.0e-3 # Base learning rate + learning_rate: 0.01 # Base learning rate # Recommended settings: # - adam: 1e-3 to 1e-4 - # - per_neuron (SequentialMLP): 1.0 + # - per_neuron (SequentialMLP): 1.0 (or 0.01 for D3) # - hybrid: see scaling_factor betas: [0.9, 0.999] # Adam/hybrid beta parameters @@ -91,8 +99,8 @@ training: # Training Dynamics grad_clip: 0.1 - verbose_interval: 10 - save_param_interval: null # Save params every N steps/epochs + verbose_interval: 1000 + save_param_interval: 100 # Save params every N steps/epochs # Set to null to only save initial & final (memory efficient for sweeps) # Early Stopping (optional) @@ -109,4 +117,4 @@ device: cuda:1 # 'cuda' | 'cpu' # Analysis & Visualization # ------------------------ analysis: - checkpoints: [0.0, 1.0] # Fraction of training for analysis + checkpoints: [0.0, 0.25, 0.5, 0.75, 1.0] # Fraction of training for analysis diff --git a/gagf/rnns/main.py b/gagf/rnns/main.py index 2b32eec..f996925 100644 --- a/gagf/rnns/main.py +++ b/gagf/rnns/main.py @@ -550,12 +550,13 @@ def plot_model_predictions_over_time_D3( def plot_power_spectrum_over_time_D3( model, param_hist, + param_save_indices, X_eval, template: np.ndarray, D3, - checkpoint_indices: list, save_path: str = None, num_samples_for_power: int = 100, + num_checkpoints_to_sample: int = 50, ): """ Plot power spectrum of model outputs vs template power spectrum over training for D3. @@ -563,12 +564,13 @@ def plot_power_spectrum_over_time_D3( Args: model: Trained model param_hist: List of parameter snapshots + param_save_indices: List mapping param_hist index to epoch number X_eval: Input evaluation tensor template: Template array (group_order,) D3: DihedralGroup object from escnn - checkpoint_indices: Indices into param_hist to visualize save_path: Path to save the plot num_samples_for_power: Number of samples to average power over + num_checkpoints_to_sample: Number of checkpoints to sample for the evolution plot """ from group_agf.binary_action_learning.group_fourier_transform import compute_group_fourier_coef @@ -583,13 +585,26 @@ def plot_power_spectrum_over_time_D3( template_power[i] = irrep.size * np.trace(fourier_coef.conj().T @ fourier_coef) template_power = template_power / group_order - # Compute model output power at each checkpoint - n_checkpoints = len(checkpoint_indices) - model_powers = np.zeros((n_checkpoints, n_irreps)) + print(f" Template power spectrum: {template_power}") + print(f" (These are dim^2 * diag_value^2 / |G| for each irrep)") + + # Sample checkpoints uniformly for evolution plot + total_checkpoints = len(param_hist) + if total_checkpoints <= num_checkpoints_to_sample: + sampled_ckpt_indices = list(range(total_checkpoints)) + else: + sampled_ckpt_indices = np.linspace(0, total_checkpoints - 1, num_checkpoints_to_sample, dtype=int).tolist() + + # Get corresponding epoch numbers + epoch_numbers = [param_save_indices[i] for i in sampled_ckpt_indices] + + # Compute model output power at each sampled checkpoint + n_sampled = len(sampled_ckpt_indices) + model_powers = np.zeros((n_sampled, n_irreps)) X_subset = X_eval[:num_samples_for_power] - for ckpt_i, ckpt_idx in enumerate(checkpoint_indices): + for i, ckpt_idx in enumerate(sampled_ckpt_indices): model.load_state_dict(param_hist[ckpt_idx]) model.eval() @@ -604,25 +619,28 @@ def plot_power_spectrum_over_time_D3( fourier_coef = compute_group_fourier_coef(D3, output, irrep) powers[sample_i, irrep_i] = irrep.size * np.trace(fourier_coef.conj().T @ fourier_coef) powers = powers / group_order - model_powers[ckpt_i] = np.mean(powers, axis=0) + model_powers[i] = np.mean(powers, axis=0) # Create plot fig, axes = plt.subplots(1, 2, figsize=(14, 5)) - # Left: Power spectrum comparison at checkpoints + # Left: Power spectrum comparison at key checkpoints (start, middle, end) ax1 = axes[0] x_pos = np.arange(n_irreps) - width = 0.8 / (n_checkpoints + 1) + key_indices = [0, n_sampled // 2, n_sampled - 1] + n_bars = len(key_indices) + 1 # +1 for template + width = 0.8 / n_bars # Plot template power ax1.bar(x_pos - 0.4 + width/2, template_power, width=width, label='Template', color='black', alpha=0.8) - # Plot model power at each checkpoint - colors = plt.cm.viridis(np.linspace(0.2, 0.8, n_checkpoints)) - for ckpt_i, (ckpt_idx, color) in enumerate(zip(checkpoint_indices, colors)): - offset = -0.4 + (ckpt_i + 1.5) * width - ax1.bar(x_pos + offset, model_powers[ckpt_i], width=width, - label=f'Ckpt {ckpt_idx}', color=color, alpha=0.7) + # Plot model power at key checkpoints + colors = ['#3498db', '#e74c3c', '#2ecc71'] + for bar_i, (key_i, color) in enumerate(zip(key_indices, colors)): + offset = -0.4 + (bar_i + 1.5) * width + epoch = epoch_numbers[key_i] + ax1.bar(x_pos + offset, model_powers[key_i], width=width, + label=f'Epoch {epoch}', color=color, alpha=0.7) ax1.set_xlabel('Irrep index') ax1.set_ylabel('Power') @@ -632,19 +650,20 @@ def plot_power_spectrum_over_time_D3( ax1.legend(loc='upper right', fontsize=8) ax1.grid(True, alpha=0.3, axis='y') - # Right: Power evolution over checkpoints for top irreps + # Right: Power evolution over epochs for top irreps ax2 = axes[1] top_k = min(5, n_irreps) top_irrep_indices = np.argsort(template_power)[::-1][:top_k] - for irrep_idx in top_irrep_indices: + colors_line = plt.cm.tab10(np.linspace(0, 1, top_k)) + for i, irrep_idx in enumerate(top_irrep_indices): power_values = model_powers[:, irrep_idx] - ax2.plot(checkpoint_indices, power_values, 'o-', lw=2, markersize=8, + ax2.plot(epoch_numbers, power_values, '-', lw=2, color=colors_line[i], label=f'Irrep {irrep_idx} (dim={irreps[irrep_idx].size})') # Add horizontal line for template power - ax2.axhline(template_power[irrep_idx], linestyle='--', alpha=0.5) + ax2.axhline(template_power[irrep_idx], linestyle='--', alpha=0.5, color=colors_line[i]) - ax2.set_xlabel('Checkpoint index') + ax2.set_xlabel('Epoch') ax2.set_ylabel('Power') ax2.set_title('Power Evolution Over Training') ax2.legend(loc='upper left', fontsize=8) @@ -788,10 +807,10 @@ def produce_plots_D3( plot_power_spectrum_over_time_D3( model=model, param_hist=param_hist, + param_save_indices=param_save_indices, X_eval=X_eval_t, template=template_D3, D3=D3, - checkpoint_indices=checkpoint_indices, save_path=os.path.join(run_dir, "power_spectrum_analysis.pdf"), ) print(f" ✓ Saved {os.path.join(run_dir, 'power_spectrum_analysis.pdf')}") @@ -884,18 +903,65 @@ def train_single_run(config: dict, run_dir: Path = None) -> dict: print(f" ✓ Saved template") elif dimension == 'D3': from escnn.group import DihedralGroup + from group_agf.binary_action_learning.group_fourier_transform import compute_group_inverse_fourier_transform + D3 = DihedralGroup(N=3) # D3 = dihedral group of order 6 (3 rotations * 2 for reflections) group_order = D3.order() # = 6 p_flat = group_order # For D3, the "p" is the group order - # Generate one-hot template of length group_order - # This creates a template with a spike at position 1 - template_d3 = np.zeros(group_order, dtype=np.float32) - template_d3[1] = 10.0 - template_d3 = template_d3 - np.mean(template_d3) - template = template_d3 # For consistency in code below - print(f"D3 group order: {group_order}") + print(f"D3 irreps: {[irrep.size for irrep in D3.irreps()]} (dimensions)") + + if template_type == 'onehot': + # Generate one-hot template of length group_order + # This creates a template with a spike at position 1 + template_d3 = np.zeros(group_order, dtype=np.float32) + template_d3[1] = 10.0 + template_d3 = template_d3 - np.mean(template_d3) + print(f"Template type: onehot") + + elif template_type == 'custom_fourier': + # Generate template from Fourier coefficients for each irrep + # powers specifies the DESIRED POWER SPECTRUM values (not diagonal values) + # We convert powers to Fourier coefficient diagonal values using: + # diag_value = sqrt(group_size * power / dim^2) + # This is because: power = dim^2 * diag_value^2 / group_size + powers = config['data']['powers'] + irreps = D3.irreps() + irrep_dims = [ir.size for ir in irreps] + + assert len(powers) == len(irreps), \ + f"powers must have {len(irreps)} values (one per irrep), got {len(powers)}" + + # Convert powers to Fourier coefficient diagonal values + # (same formula as in binary_action_learning/main.py) + fourier_coef_diag_values = [ + np.sqrt(group_order * p / dim**2) if p > 0 else 0.0 + for p, dim in zip(powers, irrep_dims) + ] + + print(f"Template type: custom_fourier") + print(f"Desired powers (per irrep): {powers}") + print(f"Fourier coef diagonal values: {fourier_coef_diag_values}") + + # Build spectrum: list of diagonal matrices, one per irrep + spectrum = [] + for i, irrep in enumerate(irreps): + diag_val = fourier_coef_diag_values[i] + diag_values = np.full(irrep.size, diag_val, dtype=float) + mat = np.zeros((irrep.size, irrep.size), dtype=float) + np.fill_diagonal(mat, diag_values) + print(f" Irrep {i} (dim={irrep.size}): diag_value = {diag_val:.4f} -> power = {powers[i]}") + spectrum.append(mat) + + # Generate template via inverse group Fourier transform + template_d3 = compute_group_inverse_fourier_transform(D3, spectrum) + template_d3 = template_d3 - np.mean(template_d3) + template_d3 = template_d3.astype(np.float32) + else: + raise ValueError(f"Unknown template_type for D3: {template_type}. Must be 'onehot' or 'custom_fourier'") + + template = template_d3 # For consistency in code below print(f"Template shape: {template.shape}") # Visualize D3 template @@ -904,7 +970,10 @@ def train_single_run(config: dict, run_dir: Path = None) -> dict: ax.bar(range(group_order), template_d3) ax.set_xlabel('Group element index') ax.set_ylabel('Value') - ax.set_title(f'D3 Template (order={group_order})') + title = f'D3 Template (order={group_order}, type={template_type})' + if template_type == 'custom_fourier': + title += f'\npowers={powers}' + ax.set_title(title) ax.set_xticks(range(group_order)) fig.savefig(os.path.join(run_dir, "template.pdf"), bbox_inches="tight", dpi=150) plt.close(fig) From eb5864e42f54bf6d43914456e21ecdcca79a15f7 Mon Sep 17 00:00:00 2001 From: Nina Miolane Date: Tue, 13 Jan 2026 18:38:26 +0000 Subject: [PATCH 05/30] try onehot with D3 --- gagf/rnns/config.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gagf/rnns/config.yaml b/gagf/rnns/config.yaml index cc72006..0af6fe6 100644 --- a/gagf/rnns/config.yaml +++ b/gagf/rnns/config.yaml @@ -34,14 +34,14 @@ data: # Template Generation # For dimension=1,2: 'mnist' | 'fourier' | 'gaussian' | 'onehot' # For dimension='D3': 'onehot' | 'custom_fourier' - template_type: 'custom_fourier' + template_type: 'onehot' mnist_label: 4 # MNIST digit (0-9), only if template_type='mnist' n_freqs: 1 # Number of Fourier modes, only if template_type='fourier' # D3 custom_fourier template: powers for each irrep's Fourier coefficient # D3 has 3 irreps with dimensions [1, 1, 2], so powers should have 3 values # Example: [0., 1700., 400.] means DC=0, irrep1=1700, irrep2=400 - powers: [0., 1700., 400.] + powers: [0., 2600., 1200.] # Dataset Mode (offline training only) mode: exhaustive # 'sampled' | 'exhaustive' @@ -117,4 +117,4 @@ device: cuda:1 # 'cuda' | 'cpu' # Analysis & Visualization # ------------------------ analysis: - checkpoints: [0.0, 0.25, 0.5, 0.75, 1.0] # Fraction of training for analysis + checkpoints: [0.0, 1.0] # Fraction of training for analysis From 66276ae11dceaedcf5446871595278cda3a3cbcf Mon Sep 17 00:00:00 2001 From: Nina Miolane Date: Tue, 13 Jan 2026 20:52:31 +0000 Subject: [PATCH 06/30] Ran onehot experiments --- gagf/rnns/config.yaml | 15 +- gagf/rnns/main.py | 1379 ----------------------------------------- 2 files changed, 7 insertions(+), 1387 deletions(-) delete mode 100644 gagf/rnns/main.py diff --git a/gagf/rnns/config.yaml b/gagf/rnns/config.yaml index 0af6fe6..0750ae2 100644 --- a/gagf/rnns/config.yaml +++ b/gagf/rnns/config.yaml @@ -27,7 +27,7 @@ data: p1: 4 #10 # Height/rows dimension (2D only) p2: 4 # Width/cols dimension (2D only) - k: 2 # Sequence length + k: 5 # Sequence length batch_size: 1000 seed: 5 @@ -40,12 +40,12 @@ data: # D3 custom_fourier template: powers for each irrep's Fourier coefficient # D3 has 3 irreps with dimensions [1, 1, 2], so powers should have 3 values - # Example: [0., 1700., 400.] means DC=0, irrep1=1700, irrep2=400 - powers: [0., 2600., 1200.] + # Large ratio between powers = clearer staircase steps + powers: [0., 2000., 400.] # Dataset Mode (offline training only) - mode: exhaustive # 'sampled' | 'exhaustive' - num_samples: 50000 + mode: sampled # 'sampled' | 'exhaustive' + num_samples: 1000 # Model Configuration # ------------------- @@ -55,9 +55,8 @@ model: hidden_dim: 600 # Hidden layer size # Note: SequentialMLP may need larger values (e.g., 600) - init_scale: 1.0e-6 # Weight initialization scale + init_scale: 1.0e-2 # Weight initialization scale # Larger k may need larger init_scale - # Note: D3 needs very small init_scale (1e-6) return_all_outputs: false # true = seq-to-seq guidance (for QuadraticRNN only) # false = seq-to-one (final output only) @@ -100,7 +99,7 @@ training: # Training Dynamics grad_clip: 0.1 verbose_interval: 1000 - save_param_interval: 100 # Save params every N steps/epochs + save_param_interval: 10 # Save params every N steps/epochs # Set to null to only save initial & final (memory efficient for sweeps) # Early Stopping (optional) diff --git a/gagf/rnns/main.py b/gagf/rnns/main.py deleted file mode 100644 index f996925..0000000 --- a/gagf/rnns/main.py +++ /dev/null @@ -1,1379 +0,0 @@ -import numpy as np -import torch -from gagf.rnns.datamodule import ( - mnist_template_1d, - mnist_template_2d, - generate_fourier_template_1d, - generate_gaussian_template_1d, - generate_onehot_template_1d, - generate_template_unique_freqs, -) -from gagf.rnns.optimizers import HybridRNNOptimizer, PerNeuronScaledSGD - -from torch.utils.data import DataLoader -from torch import nn, optim -from gagf.rnns.model import QuadraticRNN, SequentialMLP -import time -import yaml -import json -from pathlib import Path -from datetime import datetime -import argparse -import os - -from gagf.rnns.utils import ( - plot_training_loss_with_theory, - plot_model_predictions_over_time, - plot_model_predictions_over_time_1d, - plot_prediction_power_spectrum_over_time, - plot_prediction_power_spectrum_over_time_1d, - plot_fourier_modes_reference, - topk_template_freqs, - topk_template_freqs_1d, - plot_wout_neuron_specialization, - plot_wout_neuron_specialization_1d, - plot_wmix_frequency_structure, - plot_2d_signal, - compute_theoretical_final_loss_1d, - compute_theoretical_final_loss_2d, -) - -import matplotlib.pyplot as plt - - - -def load_config(config_path: str) -> dict: - """Load configuration from YAML file.""" - with open(config_path, 'r') as f: - return yaml.safe_load(f) - - -def setup_run_directory(base_dir: str = "runs") -> Path: - """Create timestamped run directory.""" - base_dir = Path(base_dir) - base_dir.mkdir(exist_ok=True) - - timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") - run_dir = os.path.join(base_dir, timestamp) - os.makedirs(run_dir, exist_ok=True) - os.makedirs(os.path.join(run_dir, "checkpoints"), exist_ok=True) - - return Path(run_dir) - -def save_results( - run_dir: Path, - config: dict, - model, - train_loss_hist, - val_loss_hist, - param_hist, - template: np.ndarray, - training_time: float, - device: str -) -> dict: - """Save all experiment results.""" - print(f"Saving results to {run_dir}...") - - # Ensure checkpoints directory exists - checkpoints_dir = run_dir / "checkpoints" - checkpoints_dir.mkdir(exist_ok=True) - - # Save config - with open(run_dir / "config.yaml", 'w') as f: - yaml.dump(config, f, default_flow_style=False) - - # Save template - np.save(run_dir / "template.npy", template) - - # Save training history - np.save(run_dir / "train_loss_history.npy", np.array(train_loss_hist)) - np.save(run_dir / "val_loss_history.npy", np.array(val_loss_hist)) - torch.save(param_hist, run_dir / "param_history.pt") - - # Save final model - torch.save(model.state_dict(), checkpoints_dir / "final_model.pt") - - # Save metadata - metadata = { - 'final_train_loss': float(train_loss_hist[-1]), - 'final_val_loss': float(val_loss_hist[-1]), - 'training_time_seconds': training_time, - 'num_parameters': sum(p.numel() for p in model.parameters()), - 'device': device, - 'description': config.get('description', ''), - } - with open(run_dir / "metadata.json", 'w') as f: - json.dump(metadata, f, indent=2) - - print(f" ✓ All results saved") - return metadata - - -def produce_plots_2d( - run_dir: Path, - config: dict, - model, - param_hist, - param_save_indices, - train_loss_hist, - template_2d: np.ndarray, - training_mode: str, - device: str -): - """ - Generate all analysis plots after training (2D only). - - Note: This function currently only supports 2D templates with p1 and p2 dimensions. - For 1D templates, basic plots are generated separately in train_single_run. - - Some plots are model-specific: - - W_mix frequency structure: QuadraticRNN only (skipped for SequentialMLP) - - W_out neuron specialization: All models - - Power spectrum, predictions, loss curves: All models - - Args: - run_dir: Directory to save plots - config: Configuration dictionary (must have dimension=2) - model: Trained model (QuadraticRNN or SequentialMLP) - param_hist: List of parameter snapshots - param_save_indices: Indices where params were saved - train_loss_hist: Training loss history - template_2d: 2D template array (p1, p2) - training_mode: 'online' or 'offline' - device: Device string ('cpu' or 'cuda') - """ - print("\n=== Generating Analysis Plots ===") - - ### ----- COMPUTE X-AXIS VALUES ----- ### - dimension = config['data']['dimension'] - if dimension == 1: - p_flat = config['data']['p'] - else: - p_flat = config['data']['p1'] * config['data']['p2'] - - k = config['data']['k'] - batch_size = config['data']['batch_size'] - total_space_size = p_flat ** k - - # Calculate different x-axis values for plotting - if training_mode == 'online': - steps = np.arange(len(train_loss_hist)) - samples_seen = batch_size * steps - fraction_of_space = samples_seen / total_space_size - x_label_steps = "Step" - else: # offline - epochs = np.arange(len(train_loss_hist)) - samples_seen = config['data']['num_samples'] * epochs - fraction_of_space = samples_seen / total_space_size - x_label_steps = "Epoch" - - # Save x-axis data - np.save(run_dir / "samples_seen.npy", samples_seen) - np.save(run_dir / "fraction_of_space_seen.npy", fraction_of_space) - - print(f"Total data space: {total_space_size:,} sequences") - print(f"Samples seen: {samples_seen[-1]:,} ({fraction_of_space[-1]*100:.4f}% of space)") - - ### ----- GENERATE EVALUATION DATA ----- ### - print("Generating evaluation data for visualization...") - from gagf.rnns.datamodule import build_modular_addition_sequence_dataset_2d - X_seq_2d, Y_seq_2d, _ = build_modular_addition_sequence_dataset_2d( - config['data']['p1'], - config['data']['p2'], - template_2d, - config['data']['k'], - mode="sampled", - num_samples=min(config['data']['num_samples'], 1000), - return_all_outputs=config['model']['return_all_outputs'], - ) - X_seq_2d_t = torch.tensor(X_seq_2d, dtype=torch.float32, device=device) - Y_seq_2d_t = torch.tensor(Y_seq_2d, dtype=torch.float32, device=device) - print(f" Generated {X_seq_2d_t.shape[0]} samples for visualization") - - ### ----- COMPUTE CHECKPOINT INDICES ----- ### - total_checkpoints = len(param_hist) - checkpoint_fractions = config['analysis']['checkpoints'] - checkpoint_indices = [int(f * (total_checkpoints - 1)) for f in checkpoint_fractions] - - print(f"Analysis checkpoints: {checkpoint_indices} (out of {total_checkpoints})") - print(f" Corresponding to step/epoch indices: {[param_save_indices[i] for i in checkpoint_indices]}") - - ### ----- PLOT TRAINING LOSS ----- ### - print("\nPlotting training loss...") - - # Plot 1: Loss vs Steps/Epochs - plot_training_loss_with_theory( - loss_history=train_loss_hist, - template_2d=template_2d, - p1=config['data']['p1'], - p2=config['data']['p2'], - x_values=None, - x_label=x_label_steps, - save_path=os.path.join(run_dir, "training_loss_vs_steps.pdf"), - show=False, - ) - - # Plot 2: Loss vs Samples Seen - plot_training_loss_with_theory( - loss_history=train_loss_hist, - template_2d=template_2d, - p1=config['data']['p1'], - p2=config['data']['p2'], - x_values=samples_seen, - x_label="Samples Seen", - save_path=os.path.join(run_dir, "training_loss_vs_samples.pdf"), - show=False, - ) - - # Plot 3: Loss vs Fraction of Space - plot_training_loss_with_theory( - loss_history=train_loss_hist, - template_2d=template_2d, - p1=config['data']['p1'], - p2=config['data']['p2'], - x_values=fraction_of_space, - x_label="Samples Seen / Data Space Size", - save_path=os.path.join(run_dir, "training_loss_vs_fraction.pdf"), - show=False, - ) - - ### ----- PLOT MODEL PREDICTIONS ----- ### - print("Plotting model predictions over time...") - plot_model_predictions_over_time( - model, - param_hist, - X_seq_2d_t, - Y_seq_2d_t, - config['data']['p1'], - config['data']['p2'], - steps=checkpoint_indices, - save_path=os.path.join(run_dir, "predictions_over_time.pdf"), - show=False - ) - - # ### ----- PLOT POWER SPECTRUM ANALYSIS ----- ### - # print("Analyzing power spectrum of predictions over training...") - # plot_prediction_power_spectrum_over_time( - # model, - # param_hist, - # X_seq_2d_t, - # Y_seq_2d_t, - # template_2d, - # config['data']['p1'], - # config['data']['p2'], - # loss_history=train_loss_hist, - # param_save_indices=param_save_indices, - # num_freqs_to_track=10, - # checkpoint_indices=checkpoint_indices, - # num_samples=100, - # save_path=os.path.join(run_dir, "power_spectrum_analysis.pdf"), - # show=False - # ) - - ### ----- PLOT FOURIER MODES REFERENCE ----- ### - print("Creating Fourier modes reference...") - tracked_freqs = topk_template_freqs(template_2d, K=10) - colors = plt.cm.tab10(np.linspace(0, 1, len(tracked_freqs))) - - # plot_fourier_modes_reference( - # tracked_freqs, - # colors, - # config['data']['p1'], - # config['data']['p2'], - # save_path=os.path.join(run_dir, "fourier_modes_reference.pdf"), - # save_individual=True, - # individual_dir=os.path.join(run_dir, "fourier_modes"), - # show=False - # ) - - # ### ----- PLOT W_OUT NEURON SPECIALIZATION ----- ### - # print("Visualizing W_out neuron specialization...") - # plot_wout_neuron_specialization( - # param_hist, - # tracked_freqs, - # colors, - # config['data']['p1'], - # config['data']['p2'], - # steps=checkpoint_indices, - # dead_thresh_l2=0.25, - # save_dir=run_dir, - # show=False - # ) - - ### ----- PLOT W_MIX FREQUENCY STRUCTURE (QuadraticRNN only) ----- ### - model_type = config['model']['model_type'] - if model_type == 'QuadraticRNN': - print("Visualizing W_mix frequency structure...") - plot_wmix_frequency_structure( - param_hist, - tracked_freqs, - colors, - config['data']['p1'], - config['data']['p2'], - steps=checkpoint_indices, - within_group_order="phase", - dead_l2_thresh=0.1, - save_path=os.path.join(run_dir, "wmix_frequency_structure.pdf"), - show=False - ) - else: - print("Skipping W_mix frequency structure plot (not applicable for SequentialMLP)") - - print("\n✓ All plots generated successfully!") - - -def produce_plots_1d( - run_dir: Path, - config: dict, - model, - param_hist, - param_save_indices, - train_loss_hist, - template_1d: np.ndarray, - training_mode: str, - device: str -): - """ - Generate all analysis plots after training (1D version). - - Args: - run_dir: Directory to save plots - config: Configuration dictionary (must have dimension=1) - model: Trained model (QuadraticRNN or SequentialMLP) - param_hist: List of parameter snapshots - param_save_indices: Indices where params were saved - train_loss_hist: Training loss history - template_1d: 1D template array (p,) - training_mode: 'online' or 'offline' - device: Device string ('cpu' or 'cuda') - """ - print("\n=== Generating Analysis Plots (1D) ===") - - ### ----- COMPUTE X-AXIS VALUES ----- ### - p = config['data']['p'] - k = config['data']['k'] - batch_size = config['data']['batch_size'] - total_space_size = p ** k - - # Calculate different x-axis values for plotting - if training_mode == 'online': - steps = np.arange(len(train_loss_hist)) - samples_seen = batch_size * steps - fraction_of_space = samples_seen / total_space_size - x_label_steps = "Step" - else: # offline - epochs = np.arange(len(train_loss_hist)) - samples_seen = config['data']['num_samples'] * epochs - fraction_of_space = samples_seen / total_space_size - x_label_steps = "Epoch" - - # Save x-axis data - np.save(run_dir / "samples_seen.npy", samples_seen) - np.save(run_dir / "fraction_of_space_seen.npy", fraction_of_space) - - print(f"Total data space: {total_space_size:,} sequences") - print(f"Samples seen: {samples_seen[-1]:,} ({fraction_of_space[-1]*100:.4f}% of space)") - - ### ----- GENERATE EVALUATION DATA ----- ### - print("Generating evaluation data for visualization...") - from gagf.rnns.datamodule import build_modular_addition_sequence_dataset_1d - X_seq_1d, Y_seq_1d, _ = build_modular_addition_sequence_dataset_1d( - config['data']['p'], - template_1d, - config['data']['k'], - mode="sampled", - num_samples=min(config['data']['num_samples'], 1000), - return_all_outputs=config['model']['return_all_outputs'], - ) - X_seq_1d_t = torch.tensor(X_seq_1d, dtype=torch.float32, device=device) - Y_seq_1d_t = torch.tensor(Y_seq_1d, dtype=torch.float32, device=device) - print(f" Generated {X_seq_1d_t.shape[0]} samples for visualization") - - ### ----- COMPUTE CHECKPOINT INDICES ----- ### - total_checkpoints = len(param_hist) - checkpoint_fractions = config['analysis']['checkpoints'] - checkpoint_indices = [int(f * (total_checkpoints - 1)) for f in checkpoint_fractions] - - print(f"Analysis checkpoints: {checkpoint_indices} (out of {total_checkpoints})") - print(f" Corresponding to step/epoch indices: {[param_save_indices[i] for i in checkpoint_indices]}") - - ### ----- PLOT TRAINING LOSS ----- ### - print("\nPlotting training loss...") - - # Create a 2x2 subplot for different scale combinations - fig, axes = plt.subplots(2, 2, figsize=(12, 10)) - - x_values = steps if training_mode == 'online' else epochs - - scale_configs = [ - ('linear', 'linear', 'Linear Scale'), - ('linear', 'log', 'Log Y'), - ('log', 'linear', 'Log X'), - ('log', 'log', 'Log-Log'), - ] - - for ax, (xscale, yscale, title) in zip(axes.flat, scale_configs): - ax.plot(x_values, train_loss_hist, lw=2, color='#1f77b4') - ax.set_xscale(xscale) - ax.set_yscale(yscale) - ax.set_xlabel(x_label_steps) - ax.set_ylabel('Training Loss') - ax.set_title(title) - ax.grid(True, alpha=0.3) - - plt.tight_layout() - plt.savefig(os.path.join(run_dir, "training_loss.pdf"), bbox_inches='tight', dpi=150) - plt.close() - print(" ✓ Saved training loss plot (all scales)") - - ### ----- PLOT MODEL PREDICTIONS ----- ### - print("Plotting model predictions over time...") - plot_model_predictions_over_time_1d( - model, - param_hist, - X_seq_1d_t, - Y_seq_1d_t, - p, - steps=checkpoint_indices, - save_path=os.path.join(run_dir, "predictions_over_time.pdf"), - show=False - ) - - ### ----- PLOT POWER SPECTRUM ANALYSIS ----- ### - print("Analyzing power spectrum of predictions over training...") - plot_prediction_power_spectrum_over_time_1d( - model, - param_hist, - X_seq_1d_t, - Y_seq_1d_t, - template_1d, - p, - loss_history=train_loss_hist, - param_save_indices=param_save_indices, - num_freqs_to_track=min(10, p // 4), - checkpoint_indices=checkpoint_indices, - num_samples=100, - save_path=os.path.join(run_dir, "power_spectrum_analysis.pdf"), - show=False - ) - - # ### ----- PLOT W_OUT NEURON SPECIALIZATION ----- ### - # print("Visualizing W_out neuron specialization...") - # tracked_freqs = topk_template_freqs_1d(template_1d, K=min(10, p // 4)) - # colors = plt.cm.tab10(np.linspace(0, 1, len(tracked_freqs))) - - # plot_wout_neuron_specialization_1d( - # param_hist, - # tracked_freqs, - # colors, - # p, - # steps=checkpoint_indices, - # dead_thresh_l2=0.25, - # save_dir=run_dir, - # show=False - # ) - - print("\n✓ All 1D plots generated successfully!") - - -def plot_model_predictions_over_time_D3( - model, - param_hist, - X_eval, - Y_eval, - group_order: int, - checkpoint_indices: list, - save_path: str = None, - num_samples: int = 5, -): - """ - Plot model predictions vs targets at different training checkpoints for D3. - - Args: - model: Trained model - param_hist: List of parameter snapshots - X_eval: Input evaluation tensor (N, k, group_order) - Y_eval: Target evaluation tensor (N, group_order) - group_order: Order of D3 group (6) - checkpoint_indices: Indices into param_hist to visualize - save_path: Path to save the plot - num_samples: Number of samples to show - """ - n_checkpoints = len(checkpoint_indices) - - fig, axes = plt.subplots(num_samples, n_checkpoints, figsize=(4 * n_checkpoints, 3 * num_samples)) - if num_samples == 1: - axes = axes.reshape(1, -1) - if n_checkpoints == 1: - axes = axes.reshape(-1, 1) - - # Select random sample indices - sample_indices = np.random.choice(len(X_eval), size=min(num_samples, len(X_eval)), replace=False) - - for col, ckpt_idx in enumerate(checkpoint_indices): - # Load parameters for this checkpoint - model.load_state_dict(param_hist[ckpt_idx]) - model.eval() - - with torch.no_grad(): - outputs = model(X_eval[sample_indices]) - outputs_np = outputs.cpu().numpy() - targets_np = Y_eval[sample_indices].cpu().numpy() - - for row, (output, target) in enumerate(zip(outputs_np, targets_np)): - ax = axes[row, col] - x_axis = np.arange(group_order) - - ax.bar(x_axis - 0.15, target, width=0.3, label='Target', alpha=0.7, color='#2ecc71') - ax.bar(x_axis + 0.15, output, width=0.3, label='Output', alpha=0.7, color='#e74c3c') - - if row == 0: - ax.set_title(f'Checkpoint {ckpt_idx}') - if col == 0: - ax.set_ylabel(f'Sample {sample_indices[row]}') - if row == num_samples - 1: - ax.set_xlabel('Group element') - if row == 0 and col == n_checkpoints - 1: - ax.legend(loc='upper right', fontsize=8) - - ax.set_xticks(x_axis) - ax.grid(True, alpha=0.3) - - plt.suptitle('D3 Model Predictions vs Targets Over Training', fontsize=14) - plt.tight_layout() - - if save_path: - plt.savefig(save_path, bbox_inches='tight', dpi=150) - plt.close() - - -def plot_power_spectrum_over_time_D3( - model, - param_hist, - param_save_indices, - X_eval, - template: np.ndarray, - D3, - save_path: str = None, - num_samples_for_power: int = 100, - num_checkpoints_to_sample: int = 50, -): - """ - Plot power spectrum of model outputs vs template power spectrum over training for D3. - - Args: - model: Trained model - param_hist: List of parameter snapshots - param_save_indices: List mapping param_hist index to epoch number - X_eval: Input evaluation tensor - template: Template array (group_order,) - D3: DihedralGroup object from escnn - save_path: Path to save the plot - num_samples_for_power: Number of samples to average power over - num_checkpoints_to_sample: Number of checkpoints to sample for the evolution plot - """ - from group_agf.binary_action_learning.group_fourier_transform import compute_group_fourier_coef - - group_order = D3.order() - irreps = D3.irreps() - n_irreps = len(irreps) - - # Compute template power spectrum - template_power = np.zeros(n_irreps) - for i, irrep in enumerate(irreps): - fourier_coef = compute_group_fourier_coef(D3, template, irrep) - template_power[i] = irrep.size * np.trace(fourier_coef.conj().T @ fourier_coef) - template_power = template_power / group_order - - print(f" Template power spectrum: {template_power}") - print(f" (These are dim^2 * diag_value^2 / |G| for each irrep)") - - # Sample checkpoints uniformly for evolution plot - total_checkpoints = len(param_hist) - if total_checkpoints <= num_checkpoints_to_sample: - sampled_ckpt_indices = list(range(total_checkpoints)) - else: - sampled_ckpt_indices = np.linspace(0, total_checkpoints - 1, num_checkpoints_to_sample, dtype=int).tolist() - - # Get corresponding epoch numbers - epoch_numbers = [param_save_indices[i] for i in sampled_ckpt_indices] - - # Compute model output power at each sampled checkpoint - n_sampled = len(sampled_ckpt_indices) - model_powers = np.zeros((n_sampled, n_irreps)) - - X_subset = X_eval[:num_samples_for_power] - - for i, ckpt_idx in enumerate(sampled_ckpt_indices): - model.load_state_dict(param_hist[ckpt_idx]) - model.eval() - - with torch.no_grad(): - outputs = model(X_subset) - outputs_np = outputs.cpu().numpy() - - # Average power over all samples - powers = np.zeros((len(outputs_np), n_irreps)) - for sample_i, output in enumerate(outputs_np): - for irrep_i, irrep in enumerate(irreps): - fourier_coef = compute_group_fourier_coef(D3, output, irrep) - powers[sample_i, irrep_i] = irrep.size * np.trace(fourier_coef.conj().T @ fourier_coef) - powers = powers / group_order - model_powers[i] = np.mean(powers, axis=0) - - # Create plot - fig, axes = plt.subplots(1, 2, figsize=(14, 5)) - - # Left: Power spectrum comparison at key checkpoints (start, middle, end) - ax1 = axes[0] - x_pos = np.arange(n_irreps) - key_indices = [0, n_sampled // 2, n_sampled - 1] - n_bars = len(key_indices) + 1 # +1 for template - width = 0.8 / n_bars - - # Plot template power - ax1.bar(x_pos - 0.4 + width/2, template_power, width=width, label='Template', color='black', alpha=0.8) - - # Plot model power at key checkpoints - colors = ['#3498db', '#e74c3c', '#2ecc71'] - for bar_i, (key_i, color) in enumerate(zip(key_indices, colors)): - offset = -0.4 + (bar_i + 1.5) * width - epoch = epoch_numbers[key_i] - ax1.bar(x_pos + offset, model_powers[key_i], width=width, - label=f'Epoch {epoch}', color=color, alpha=0.7) - - ax1.set_xlabel('Irrep index') - ax1.set_ylabel('Power') - ax1.set_title('Power Spectrum: Template vs Model Output') - ax1.set_xticks(x_pos) - ax1.set_xticklabels([f'{i}\n(dim={irreps[i].size})' for i in range(n_irreps)], fontsize=8) - ax1.legend(loc='upper right', fontsize=8) - ax1.grid(True, alpha=0.3, axis='y') - - # Right: Power evolution over epochs for top irreps - ax2 = axes[1] - top_k = min(5, n_irreps) - top_irrep_indices = np.argsort(template_power)[::-1][:top_k] - - colors_line = plt.cm.tab10(np.linspace(0, 1, top_k)) - for i, irrep_idx in enumerate(top_irrep_indices): - power_values = model_powers[:, irrep_idx] - ax2.plot(epoch_numbers, power_values, '-', lw=2, color=colors_line[i], - label=f'Irrep {irrep_idx} (dim={irreps[irrep_idx].size})') - # Add horizontal line for template power - ax2.axhline(template_power[irrep_idx], linestyle='--', alpha=0.5, color=colors_line[i]) - - ax2.set_xlabel('Epoch') - ax2.set_ylabel('Power') - ax2.set_title('Power Evolution Over Training') - ax2.legend(loc='upper left', fontsize=8) - ax2.grid(True, alpha=0.3) - - plt.suptitle('D3 Power Spectrum Analysis', fontsize=14) - plt.tight_layout() - - if save_path: - plt.savefig(save_path, bbox_inches='tight', dpi=150) - plt.close() - - -def produce_plots_D3( - run_dir: Path, - config: dict, - model, - param_hist, - param_save_indices, - train_loss_hist, - template_D3: np.ndarray, - device: str = 'cpu', -): - """ - Generate all analysis plots after training (D3 version). - - Args: - run_dir: Directory to save plots - config: Configuration dictionary (must have dimension='D3') - model: Trained model (QuadraticRNN or SequentialMLP) - param_hist: List of parameter snapshots - param_save_indices: Indices where params were saved - train_loss_hist: Training loss history - template_D3: 1D template array of shape (group_order,) where group_order=6 for D3 - device: Device string ('cpu' or 'cuda') - """ - print("\n=== Generating Analysis Plots (D3) ===") - - from escnn.group import DihedralGroup - D3 = DihedralGroup(N=3) - group_order = D3.order() # = 6 - - k = config['data']['k'] - batch_size = config['data']['batch_size'] - training_mode = config['training']['mode'] - - # Total data space size for D3 with k compositions - total_space_size = group_order ** k - - # Calculate x-axis values - if training_mode == 'online': - steps = np.arange(len(train_loss_hist)) - samples_seen = batch_size * steps - fraction_of_space = samples_seen / total_space_size - x_label = "Step" - x_values = steps - else: # offline - epochs = np.arange(len(train_loss_hist)) - samples_seen = config['data']['num_samples'] * epochs - fraction_of_space = samples_seen / total_space_size - x_label = "Epoch" - x_values = epochs - - # Save x-axis data - samples_seen_path = run_dir / "samples_seen.npy" - fraction_path = run_dir / "fraction_of_space_seen.npy" - np.save(samples_seen_path, samples_seen) - np.save(fraction_path, fraction_of_space) - print(f" ✓ Saved {samples_seen_path}") - print(f" ✓ Saved {fraction_path}") - - print(f"\nD3 group order: {group_order}") - print(f"Sequence length k: {k}") - print(f"Total data space: {total_space_size:,} sequences") - if len(samples_seen) > 0: - print(f"Samples seen: {samples_seen[-1]:,} ({fraction_of_space[-1]*100:.4f}% of space)") - - ### ----- GENERATE EVALUATION DATA ----- ### - print("\nGenerating evaluation data for visualization...") - from gagf.rnns.datamodule import build_modular_addition_sequence_dataset_D3 - X_eval, Y_eval, _ = build_modular_addition_sequence_dataset_D3( - template_D3, - k, - mode="sampled", - num_samples=min(config['data']['num_samples'], 1000), - return_all_outputs=config['model']['return_all_outputs'], - ) - X_eval_t = torch.tensor(X_eval, dtype=torch.float32, device=device) - Y_eval_t = torch.tensor(Y_eval, dtype=torch.float32, device=device) - print(f" Generated {X_eval_t.shape[0]} samples for visualization") - - ### ----- COMPUTE CHECKPOINT INDICES ----- ### - total_checkpoints = len(param_hist) - checkpoint_fractions = config['analysis']['checkpoints'] - checkpoint_indices = [int(f * (total_checkpoints - 1)) for f in checkpoint_fractions] - print(f"Analysis checkpoints: {checkpoint_indices} (out of {total_checkpoints})") - - ### ----- PLOT TRAINING LOSS ----- ### - print("\nPlotting training loss...") - - fig, axes = plt.subplots(2, 2, figsize=(12, 10)) - - scale_configs = [ - ('linear', 'linear', 'Linear Scale'), - ('linear', 'log', 'Log Y'), - ('log', 'linear', 'Log X'), - ('log', 'log', 'Log-Log'), - ] - - for ax, (xscale, yscale, title) in zip(axes.flat, scale_configs): - ax.plot(x_values, train_loss_hist, lw=2, color='#1f77b4') - ax.set_xscale(xscale) - ax.set_yscale(yscale) - ax.set_xlabel(x_label) - ax.set_ylabel('Training Loss') - ax.set_title(title) - ax.grid(True, alpha=0.3) - - plt.suptitle(f'D3 Group Composition (k={k})', fontsize=14) - plt.tight_layout() - training_loss_path = os.path.join(run_dir, "training_loss.pdf") - plt.savefig(training_loss_path, bbox_inches='tight', dpi=150) - plt.close() - print(f" ✓ Saved {training_loss_path}") - - ### ----- PLOT MODEL PREDICTIONS OVER TIME ----- ### - print("\nPlotting model predictions over time...") - plot_model_predictions_over_time_D3( - model=model, - param_hist=param_hist, - X_eval=X_eval_t, - Y_eval=Y_eval_t, - group_order=group_order, - checkpoint_indices=checkpoint_indices, - save_path=os.path.join(run_dir, "predictions_over_time.pdf"), - ) - print(f" ✓ Saved {os.path.join(run_dir, 'predictions_over_time.pdf')}") - - ### ----- PLOT POWER SPECTRUM OVER TIME ----- ### - print("\nPlotting power spectrum over time...") - plot_power_spectrum_over_time_D3( - model=model, - param_hist=param_hist, - param_save_indices=param_save_indices, - X_eval=X_eval_t, - template=template_D3, - D3=D3, - save_path=os.path.join(run_dir, "power_spectrum_analysis.pdf"), - ) - print(f" ✓ Saved {os.path.join(run_dir, 'power_spectrum_analysis.pdf')}") - - print("\n✓ All D3 plots generated successfully!") - -def train_single_run(config: dict, run_dir: Path = None) -> dict: - """ - Train a model (QuadraticRNN or SequentialMLP) on modular addition for a single configuration. - - Args: - config: Configuration dictionary. Must include 'model.model_type' to specify - 'QuadraticRNN' or 'SequentialMLP'. - run_dir: Optional run directory. If None, will create a timestamped directory. - - Returns: - dict: Training results including final losses and metadata. - """ - # Setup run directory if not provided - if run_dir is None: - run_dir = setup_run_directory(base_dir="runs") - print(f"Experiment directory: {run_dir}") - - # Set seed - np.random.seed(config['data']['seed']) - torch.manual_seed(config['data']['seed']) - - # Determine device - device = config['device'] if torch.cuda.is_available() else "cpu" - print(f"Using device: {device}") - - ### ----- GENERATE DATA ----- ### - print("Generating data...") - - dimension = config['data']['dimension'] # TODO(Nina): Here, it will be a string D3. - template_type = config['data']['template_type'] # TODO(Nina): Here, use a one-hot template for D3, i.e., a one-hot vector of length D3.order() = 6. - - if dimension == 1: - # 1D template generation - p = config['data']['p'] - p_flat = p - - if template_type == 'mnist': - template_1d = mnist_template_1d(p, config['data']['mnist_label'], root="data") - elif template_type == 'fourier': - n_freqs = config['data']["n_freqs"] - template_1d = generate_fourier_template_1d(p, n_freqs=n_freqs, seed=config['data']['seed']) - elif template_type == 'gaussian': - template_1d = generate_gaussian_template_1d(p, n_gaussians=3, seed=config['data']['seed']) - elif template_type == 'onehot': - template_1d = generate_onehot_template_1d(p) - else: - raise ValueError(f"Unknown template_type: {template_type}") - - template_1d = template_1d - np.mean(template_1d) - template = template_1d # For consistency in code below - - # Visualize 1D template - print("Visualizing template...") - fig, ax = plt.subplots(figsize=(10, 4)) - ax.plot(template_1d) - ax.set_xlabel('Position') - ax.set_ylabel('Value') - ax.set_title('1D Template') - ax.grid(True, alpha=0.3) - fig.savefig(os.path.join(run_dir, "template.pdf"), bbox_inches="tight", dpi=150) - print(f" ✓ Saved template") - - elif dimension == 2: - # 2D template generation - p1 = config['data']['p1'] - p2 = config['data']['p2'] - p_flat = p1 * p2 - - if template_type == 'mnist': - template_2d = mnist_template_2d(p1, p2, config['data']['mnist_label'], root="data") - elif template_type == 'fourier': - n_freqs = config['data']["n_freqs"] - template_2d = generate_template_unique_freqs(p1, p2, n_freqs=n_freqs, seed=config['data']['seed']) - else: - raise ValueError(f"Unknown template_type for 2D: {template_type}") - - template_2d = template_2d - np.mean(template_2d) - template = template_2d # For consistency in code below - - # Visualize 2D template - print("Visualizing template...") - fig, ax = plot_2d_signal(template_2d, title="Template", cmap="gray") - fig.savefig(os.path.join(run_dir, "template.pdf"), bbox_inches="tight", dpi=150) - print(f" ✓ Saved template") - elif dimension == 'D3': - from escnn.group import DihedralGroup - from group_agf.binary_action_learning.group_fourier_transform import compute_group_inverse_fourier_transform - - D3 = DihedralGroup(N=3) # D3 = dihedral group of order 6 (3 rotations * 2 for reflections) - group_order = D3.order() # = 6 - p_flat = group_order # For D3, the "p" is the group order - - print(f"D3 group order: {group_order}") - print(f"D3 irreps: {[irrep.size for irrep in D3.irreps()]} (dimensions)") - - if template_type == 'onehot': - # Generate one-hot template of length group_order - # This creates a template with a spike at position 1 - template_d3 = np.zeros(group_order, dtype=np.float32) - template_d3[1] = 10.0 - template_d3 = template_d3 - np.mean(template_d3) - print(f"Template type: onehot") - - elif template_type == 'custom_fourier': - # Generate template from Fourier coefficients for each irrep - # powers specifies the DESIRED POWER SPECTRUM values (not diagonal values) - # We convert powers to Fourier coefficient diagonal values using: - # diag_value = sqrt(group_size * power / dim^2) - # This is because: power = dim^2 * diag_value^2 / group_size - powers = config['data']['powers'] - irreps = D3.irreps() - irrep_dims = [ir.size for ir in irreps] - - assert len(powers) == len(irreps), \ - f"powers must have {len(irreps)} values (one per irrep), got {len(powers)}" - - # Convert powers to Fourier coefficient diagonal values - # (same formula as in binary_action_learning/main.py) - fourier_coef_diag_values = [ - np.sqrt(group_order * p / dim**2) if p > 0 else 0.0 - for p, dim in zip(powers, irrep_dims) - ] - - print(f"Template type: custom_fourier") - print(f"Desired powers (per irrep): {powers}") - print(f"Fourier coef diagonal values: {fourier_coef_diag_values}") - - # Build spectrum: list of diagonal matrices, one per irrep - spectrum = [] - for i, irrep in enumerate(irreps): - diag_val = fourier_coef_diag_values[i] - diag_values = np.full(irrep.size, diag_val, dtype=float) - mat = np.zeros((irrep.size, irrep.size), dtype=float) - np.fill_diagonal(mat, diag_values) - print(f" Irrep {i} (dim={irrep.size}): diag_value = {diag_val:.4f} -> power = {powers[i]}") - spectrum.append(mat) - - # Generate template via inverse group Fourier transform - template_d3 = compute_group_inverse_fourier_transform(D3, spectrum) - template_d3 = template_d3 - np.mean(template_d3) - template_d3 = template_d3.astype(np.float32) - else: - raise ValueError(f"Unknown template_type for D3: {template_type}. Must be 'onehot' or 'custom_fourier'") - - template = template_d3 # For consistency in code below - print(f"Template shape: {template.shape}") - - # Visualize D3 template - print("Visualizing template...") - fig, ax = plt.subplots(figsize=(8, 4)) - ax.bar(range(group_order), template_d3) - ax.set_xlabel('Group element index') - ax.set_ylabel('Value') - title = f'D3 Template (order={group_order}, type={template_type})' - if template_type == 'custom_fourier': - title += f'\npowers={powers}' - ax.set_title(title) - ax.set_xticks(range(group_order)) - fig.savefig(os.path.join(run_dir, "template.pdf"), bbox_inches="tight", dpi=150) - plt.close(fig) - print(f" ✓ Saved template") - else: - raise ValueError(f"dimension must be 1 or 2, got {dimension}") - - - ### ----- SETUP TRAINING ----- ### - print("Setting up model and training...") - - # Flatten template for model (works for both 1D and 2D) - template_torch = torch.tensor(template, device=device, dtype=torch.float32).flatten() - - # Determine which model to use - model_type = config['model']['model_type'] - print(f"Using model type: {model_type}") - - if model_type == 'QuadraticRNN': - rnn_2d = QuadraticRNN( - p=p_flat, - d=config['model']['hidden_dim'], - template=template_torch, - init_scale=config['model']['init_scale'], - return_all_outputs=config['model']['return_all_outputs'], - transform_type=config['model']['transform_type'], - ).to(device) - elif model_type == 'SequentialMLP': - rnn_2d = SequentialMLP( #TODO(NiT): Rename rnn_2d, in both if loops, to model or something similar. - p=p_flat, - d=config['model']['hidden_dim'], - template=template_torch, - k=config['data']['k'], - init_scale=config['model']['init_scale'], - return_all_outputs=config['model']['return_all_outputs'], - ).to(device) - else: - raise ValueError(f"Invalid model_type: {model_type}. Must be 'QuadraticRNN' or 'SequentialMLP'") - - criterion = nn.MSELoss() - - # Optimizer selection with model-aware defaults - optimizer_name = config['training']['optimizer'] - - # Auto-select optimizer if not specified or if 'auto' - if optimizer_name == 'auto' or (optimizer_name not in ['adam', 'hybrid', 'per_neuron']): - if model_type == 'SequentialMLP': - optimizer_name = 'per_neuron' - print(f"Auto-selected optimizer: {optimizer_name} (recommended for SequentialMLP)") - else: - optimizer_name = 'adam' - print(f"Auto-selected optimizer: {optimizer_name}") - else: - print(f"Using optimizer: {optimizer_name}") - - if optimizer_name == 'adam': - optimizer = optim.Adam( - rnn_2d.parameters(), - lr=config['training']['learning_rate'], - betas=tuple(config['training']['betas']), - weight_decay=config['training']['weight_decay'] - ) - elif optimizer_name == 'hybrid': - if model_type != 'QuadraticRNN': - raise ValueError(f"'hybrid' optimizer is only supported for QuadraticRNN, got {model_type}") - optimizer = HybridRNNOptimizer( - rnn_2d, - lr=1, - scaling_factor=config['training']['scaling_factor'], - adam_lr=config['training']['learning_rate'], - adam_betas=tuple(config['training']['betas']), - adam_eps=1e-8, - ) - elif optimizer_name == 'per_neuron': - # Per-neuron scaled SGD (recommended for SequentialMLP) - degree = config['training']['degree'] - lr = config['training']['learning_rate'] - - # For SequentialMLP, use lr=1.0 by default if not specified - if model_type == 'SequentialMLP' and lr == 1.0e-3: - print(" Note: Using lr=1.0 for per_neuron optimizer with SequentialMLP") - lr = 1.0 - - optimizer = PerNeuronScaledSGD( - rnn_2d, - lr=lr, - degree=degree # Will auto-infer as k+1 for SequentialMLP (k = sequence length) - ) - print(f" Degree of homogeneity: {optimizer.param_groups[0]['degree']}") - else: - raise ValueError(f"Invalid optimizer: {optimizer_name}. Must be 'adam', 'hybrid', or 'per_neuron'") - - - ### ----- CREATE DATA LOADERS ----- ### - training_mode = config['training']['mode'] - - if training_mode == 'online': - print("Using ONLINE data generation...") - - if dimension == 1: - from gagf.rnns.datamodule import OnlineModularAdditionDataset1D - - # Training dataset - train_dataset = OnlineModularAdditionDataset1D( - p=config['data']['p'], - template=template_1d, - k=config['data']['k'], - batch_size=config['data']['batch_size'], - device=device, - return_all_outputs=config['model']['return_all_outputs'], - ) - - # Validation dataset - val_dataset = OnlineModularAdditionDataset1D( - p=config['data']['p'], - template=template_1d, - k=config['data']['k'], - batch_size=config['data']['batch_size'], - device=device, - return_all_outputs=config['model']['return_all_outputs'], - ) - elif dimension == 2: - from gagf.rnns.datamodule import OnlineModularAdditionDataset2D - - # Training dataset - train_dataset = OnlineModularAdditionDataset2D( - p1=config['data']['p1'], - p2=config['data']['p2'], - template=template_2d, - k=config['data']['k'], - batch_size=config['data']['batch_size'], - device=device, - return_all_outputs=config['model']['return_all_outputs'], - ) - - # Validation dataset - val_dataset = OnlineModularAdditionDataset2D( - p1=config['data']['p1'], - p2=config['data']['p2'], - template=template_2d, - k=config['data']['k'], - batch_size=config['data']['batch_size'], - device=device, - return_all_outputs=config['model']['return_all_outputs'], - ) - elif dimension == 'D3': - # Online training for D3 is not yet implemented - raise NotImplementedError( - "Online training mode is not yet implemented for D3. " - "Please use training.mode='offline' in the config." - ) - else: - raise ValueError(f"dimension must be 1, 2, or 'D3', got {dimension}") - - train_loader = DataLoader(train_dataset, batch_size=None, num_workers=0) - val_loader = DataLoader(val_dataset, batch_size=None, num_workers=0) - - num_steps = config['training']['num_steps'] - print(f" Training for {num_steps} steps") - - elif training_mode == 'offline': - print("Using OFFLINE pre-generated dataset...") - from torch.utils.data import TensorDataset - - if dimension == 1: - from gagf.rnns.datamodule import build_modular_addition_sequence_dataset_1d - - # Generate training dataset - X_train, Y_train, _ = build_modular_addition_sequence_dataset_1d( - config['data']['p'], - template_1d, - config['data']['k'], - mode=config['data']['mode'], - num_samples=config['data']['num_samples'], - return_all_outputs=config['model']['return_all_outputs'], - ) - - # Generate validation dataset - val_samples = max(1000, config['data']['num_samples'] // 10) - X_val, Y_val, _ = build_modular_addition_sequence_dataset_1d( - config['data']['p'], - template_1d, - config['data']['k'], - mode='sampled', - num_samples=val_samples, - return_all_outputs=config['model']['return_all_outputs'], - ) - elif dimension == 2: - from gagf.rnns.datamodule import build_modular_addition_sequence_dataset_2d - - # Generate training dataset - X_train, Y_train, _ = build_modular_addition_sequence_dataset_2d( - config['data']['p1'], - config['data']['p2'], - template_2d, - config['data']['k'], - mode=config['data']['mode'], - num_samples=config['data']['num_samples'], - return_all_outputs=config['model']['return_all_outputs'], - ) - - # Generate validation dataset - val_samples = max(1000, config['data']['num_samples'] // 10) - X_val, Y_val, _ = build_modular_addition_sequence_dataset_2d( - config['data']['p1'], - config['data']['p2'], - template_2d, - config['data']['k'], - mode='sampled', - num_samples=val_samples, - return_all_outputs=config['model']['return_all_outputs'], - ) - elif dimension == 'D3': - from gagf.rnns.datamodule import build_modular_addition_sequence_dataset_D3 - - # Generate training dataset - X_train, Y_train, _ = build_modular_addition_sequence_dataset_D3( - template_d3, - config['data']['k'], - mode=config['data']['mode'], - num_samples=config['data']['num_samples'], - return_all_outputs=config['model']['return_all_outputs'], - ) - - # Generate validation dataset - val_samples = max(1000, config['data']['num_samples'] // 10) - X_val, Y_val, _ = build_modular_addition_sequence_dataset_D3( - template_d3, - config['data']['k'], - mode='sampled', - num_samples=val_samples, - return_all_outputs=config['model']['return_all_outputs'], - ) - else: - raise ValueError(f"dimension must be 1 or 2, got {dimension}") - - X_train_t = torch.tensor(X_train, dtype=torch.float32, device=device) - Y_train_t = torch.tensor(Y_train, dtype=torch.float32, device=device) - X_val_t = torch.tensor(X_val, dtype=torch.float32, device=device) - Y_val_t = torch.tensor(Y_val, dtype=torch.float32, device=device) - - train_dataset = TensorDataset(X_train_t, Y_train_t) - val_dataset = TensorDataset(X_val_t, Y_val_t) - - train_loader = DataLoader( - train_dataset, - batch_size=config['data']['batch_size'], - shuffle=True - ) - val_loader = DataLoader( - val_dataset, - batch_size=config['data']['batch_size'], - shuffle=False - ) - - epochs = config['training']['epochs'] - print(f" Training for {epochs} epochs with {len(train_dataset)} samples") - - else: - raise ValueError(f"Invalid training mode: {training_mode}. Must be 'online' or 'offline'") - - ### ----- TRAIN MODEL ----- ### - print(f"Starting training in {training_mode} mode...") - - # Get optional early stopping threshold - reduction_threshold = config['training'].get('reduction_threshold') - if reduction_threshold is not None: - print(f"Early stopping enabled at {reduction_threshold*100:.1f}% reduction") - - start_time = time.time() - - if training_mode == 'online': - from gagf.rnns.train import train_online - train_loss_hist, val_loss_hist, param_hist, param_save_indices, final_step = train_online( - rnn_2d, - train_loader, - criterion, - optimizer, - num_steps=num_steps, - verbose_interval=config['training']['verbose_interval'], - grad_clip=config['training']['grad_clip'], - eval_dataloader=val_loader, - save_param_interval=config['training']['save_param_interval'], - reduction_threshold=reduction_threshold, - ) - else: # offline - from gagf.rnns.train import train - train_loss_hist, val_loss_hist, param_hist, param_save_indices, final_step = train( - rnn_2d, - train_loader, - criterion, - optimizer, - epochs=epochs, - verbose_interval=config['training']['verbose_interval'], - grad_clip=config['training']['grad_clip'], - eval_dataloader=val_loader, - save_param_interval=config['training']['save_param_interval'], - reduction_threshold=reduction_threshold, - ) - - training_time = time.time() - start_time - - print(f"\nTraining complete!") - print(f" Final train loss: {train_loss_hist[-1]:.6f}") - print(f" Final val loss: {val_loss_hist[-1]:.6f}") - print(f" Training time: {training_time:.2f}s") - if reduction_threshold is not None: - max_steps_or_epochs = num_steps if training_mode == 'online' else epochs - stopped_early = final_step < max_steps_or_epochs - status = "CONVERGED" if stopped_early else "DID NOT CONVERGE" - print(f" Status: {status} at step/epoch {final_step}") - - ### ----- SAVE RESULTS ----- ### - metadata = save_results( - run_dir, config, rnn_2d, - train_loss_hist, val_loss_hist, - param_hist, - template, training_time, device - ) - - ### ----- PRODUCE ALL PLOTS ----- ### - if dimension == 2: - # Only produce detailed plots for 2D (for now) - produce_plots_2d( - run_dir=run_dir, - config=config, - model=rnn_2d, - param_hist=param_hist, - param_save_indices=param_save_indices, - train_loss_hist=train_loss_hist, - template_2d=template_2d, - training_mode=training_mode, - device=device - ) - elif dimension == 1: - # Produce detailed plots for 1D - produce_plots_1d( - run_dir=run_dir, - config=config, - model=rnn_2d, - param_hist=param_hist, - param_save_indices=param_save_indices, - train_loss_hist=train_loss_hist, - template_1d=template_1d, - training_mode=training_mode, - device=device - ) - elif dimension == 'D3': - # Produce basic plots for D3 - produce_plots_D3( - run_dir=run_dir, - config=config, - model=rnn_2d, - param_hist=param_hist, - param_save_indices=param_save_indices, - train_loss_hist=train_loss_hist, - template_D3=template_d3, - device=device, - ) - else: - raise ValueError(f"dimension must be 1, 2, or 'D3', got {dimension}") - - # Return results dictionary - results = { - "final_train_loss": float(train_loss_hist[-1]), - "final_val_loss": float(val_loss_hist[-1]), - "training_time": training_time, - "metadata": metadata, - "run_dir": str(run_dir), - "final_step": final_step, - } - - # Add early stopping info if enabled - if reduction_threshold is not None: - max_steps_or_epochs = num_steps if training_mode == 'online' else epochs - results["converged"] = final_step < max_steps_or_epochs - - return results - - -def main(config: dict): - """ - Main entry point for single training run. - - Args: - config: Configuration dictionary. - """ - train_single_run(config) - - -if __name__ == "__main__": - parser = argparse.ArgumentParser(description="Train QuadraticRNN or SequentialMLP on 2D modular addition") - parser.add_argument( - "--config", - type=str, - default="gagf/rnns/config.yaml", - help="Path to config YAML file (default: gagf/rnns/config.yaml)" - ) - - args = parser.parse_args() - - config = load_config(args.config) - main(config) \ No newline at end of file From 59bef75ab1cea64b9231aac16c8966e6f65d6ea6 Mon Sep 17 00:00:00 2001 From: Nina Miolane Date: Tue, 13 Jan 2026 21:01:26 +0000 Subject: [PATCH 07/30] Starting double checking --- gagf/rnns/config.yaml | 2 +- gagf/rnns/datamodule.py | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/gagf/rnns/config.yaml b/gagf/rnns/config.yaml index 0750ae2..e3507eb 100644 --- a/gagf/rnns/config.yaml +++ b/gagf/rnns/config.yaml @@ -27,7 +27,7 @@ data: p1: 4 #10 # Height/rows dimension (2D only) p2: 4 # Width/cols dimension (2D only) - k: 5 # Sequence length + k: 2 # Sequence length batch_size: 1000 seed: 5 diff --git a/gagf/rnns/datamodule.py b/gagf/rnns/datamodule.py index d162da1..1a5c2f9 100644 --- a/gagf/rnns/datamodule.py +++ b/gagf/rnns/datamodule.py @@ -381,6 +381,8 @@ def build_modular_addition_sequence_dataset_D3( for idx in range(N): for t in range(k): sequence[idx, t] = (idx // (n_elements ** t)) % n_elements + print(f"sequence: {sequence}") + raise ValueError("Stop here") else: # Sampled mode: randomly sample sequences N = int(num_samples) From 68f0499c7d6d9816856fb3aa955c1385e3bc3b9d Mon Sep 17 00:00:00 2001 From: Nina Miolane Date: Tue, 13 Jan 2026 21:04:37 +0000 Subject: [PATCH 08/30] bringing back main --- gagf/rnns/main.py | 1379 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1379 insertions(+) create mode 100644 gagf/rnns/main.py diff --git a/gagf/rnns/main.py b/gagf/rnns/main.py new file mode 100644 index 0000000..f996925 --- /dev/null +++ b/gagf/rnns/main.py @@ -0,0 +1,1379 @@ +import numpy as np +import torch +from gagf.rnns.datamodule import ( + mnist_template_1d, + mnist_template_2d, + generate_fourier_template_1d, + generate_gaussian_template_1d, + generate_onehot_template_1d, + generate_template_unique_freqs, +) +from gagf.rnns.optimizers import HybridRNNOptimizer, PerNeuronScaledSGD + +from torch.utils.data import DataLoader +from torch import nn, optim +from gagf.rnns.model import QuadraticRNN, SequentialMLP +import time +import yaml +import json +from pathlib import Path +from datetime import datetime +import argparse +import os + +from gagf.rnns.utils import ( + plot_training_loss_with_theory, + plot_model_predictions_over_time, + plot_model_predictions_over_time_1d, + plot_prediction_power_spectrum_over_time, + plot_prediction_power_spectrum_over_time_1d, + plot_fourier_modes_reference, + topk_template_freqs, + topk_template_freqs_1d, + plot_wout_neuron_specialization, + plot_wout_neuron_specialization_1d, + plot_wmix_frequency_structure, + plot_2d_signal, + compute_theoretical_final_loss_1d, + compute_theoretical_final_loss_2d, +) + +import matplotlib.pyplot as plt + + + +def load_config(config_path: str) -> dict: + """Load configuration from YAML file.""" + with open(config_path, 'r') as f: + return yaml.safe_load(f) + + +def setup_run_directory(base_dir: str = "runs") -> Path: + """Create timestamped run directory.""" + base_dir = Path(base_dir) + base_dir.mkdir(exist_ok=True) + + timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") + run_dir = os.path.join(base_dir, timestamp) + os.makedirs(run_dir, exist_ok=True) + os.makedirs(os.path.join(run_dir, "checkpoints"), exist_ok=True) + + return Path(run_dir) + +def save_results( + run_dir: Path, + config: dict, + model, + train_loss_hist, + val_loss_hist, + param_hist, + template: np.ndarray, + training_time: float, + device: str +) -> dict: + """Save all experiment results.""" + print(f"Saving results to {run_dir}...") + + # Ensure checkpoints directory exists + checkpoints_dir = run_dir / "checkpoints" + checkpoints_dir.mkdir(exist_ok=True) + + # Save config + with open(run_dir / "config.yaml", 'w') as f: + yaml.dump(config, f, default_flow_style=False) + + # Save template + np.save(run_dir / "template.npy", template) + + # Save training history + np.save(run_dir / "train_loss_history.npy", np.array(train_loss_hist)) + np.save(run_dir / "val_loss_history.npy", np.array(val_loss_hist)) + torch.save(param_hist, run_dir / "param_history.pt") + + # Save final model + torch.save(model.state_dict(), checkpoints_dir / "final_model.pt") + + # Save metadata + metadata = { + 'final_train_loss': float(train_loss_hist[-1]), + 'final_val_loss': float(val_loss_hist[-1]), + 'training_time_seconds': training_time, + 'num_parameters': sum(p.numel() for p in model.parameters()), + 'device': device, + 'description': config.get('description', ''), + } + with open(run_dir / "metadata.json", 'w') as f: + json.dump(metadata, f, indent=2) + + print(f" ✓ All results saved") + return metadata + + +def produce_plots_2d( + run_dir: Path, + config: dict, + model, + param_hist, + param_save_indices, + train_loss_hist, + template_2d: np.ndarray, + training_mode: str, + device: str +): + """ + Generate all analysis plots after training (2D only). + + Note: This function currently only supports 2D templates with p1 and p2 dimensions. + For 1D templates, basic plots are generated separately in train_single_run. + + Some plots are model-specific: + - W_mix frequency structure: QuadraticRNN only (skipped for SequentialMLP) + - W_out neuron specialization: All models + - Power spectrum, predictions, loss curves: All models + + Args: + run_dir: Directory to save plots + config: Configuration dictionary (must have dimension=2) + model: Trained model (QuadraticRNN or SequentialMLP) + param_hist: List of parameter snapshots + param_save_indices: Indices where params were saved + train_loss_hist: Training loss history + template_2d: 2D template array (p1, p2) + training_mode: 'online' or 'offline' + device: Device string ('cpu' or 'cuda') + """ + print("\n=== Generating Analysis Plots ===") + + ### ----- COMPUTE X-AXIS VALUES ----- ### + dimension = config['data']['dimension'] + if dimension == 1: + p_flat = config['data']['p'] + else: + p_flat = config['data']['p1'] * config['data']['p2'] + + k = config['data']['k'] + batch_size = config['data']['batch_size'] + total_space_size = p_flat ** k + + # Calculate different x-axis values for plotting + if training_mode == 'online': + steps = np.arange(len(train_loss_hist)) + samples_seen = batch_size * steps + fraction_of_space = samples_seen / total_space_size + x_label_steps = "Step" + else: # offline + epochs = np.arange(len(train_loss_hist)) + samples_seen = config['data']['num_samples'] * epochs + fraction_of_space = samples_seen / total_space_size + x_label_steps = "Epoch" + + # Save x-axis data + np.save(run_dir / "samples_seen.npy", samples_seen) + np.save(run_dir / "fraction_of_space_seen.npy", fraction_of_space) + + print(f"Total data space: {total_space_size:,} sequences") + print(f"Samples seen: {samples_seen[-1]:,} ({fraction_of_space[-1]*100:.4f}% of space)") + + ### ----- GENERATE EVALUATION DATA ----- ### + print("Generating evaluation data for visualization...") + from gagf.rnns.datamodule import build_modular_addition_sequence_dataset_2d + X_seq_2d, Y_seq_2d, _ = build_modular_addition_sequence_dataset_2d( + config['data']['p1'], + config['data']['p2'], + template_2d, + config['data']['k'], + mode="sampled", + num_samples=min(config['data']['num_samples'], 1000), + return_all_outputs=config['model']['return_all_outputs'], + ) + X_seq_2d_t = torch.tensor(X_seq_2d, dtype=torch.float32, device=device) + Y_seq_2d_t = torch.tensor(Y_seq_2d, dtype=torch.float32, device=device) + print(f" Generated {X_seq_2d_t.shape[0]} samples for visualization") + + ### ----- COMPUTE CHECKPOINT INDICES ----- ### + total_checkpoints = len(param_hist) + checkpoint_fractions = config['analysis']['checkpoints'] + checkpoint_indices = [int(f * (total_checkpoints - 1)) for f in checkpoint_fractions] + + print(f"Analysis checkpoints: {checkpoint_indices} (out of {total_checkpoints})") + print(f" Corresponding to step/epoch indices: {[param_save_indices[i] for i in checkpoint_indices]}") + + ### ----- PLOT TRAINING LOSS ----- ### + print("\nPlotting training loss...") + + # Plot 1: Loss vs Steps/Epochs + plot_training_loss_with_theory( + loss_history=train_loss_hist, + template_2d=template_2d, + p1=config['data']['p1'], + p2=config['data']['p2'], + x_values=None, + x_label=x_label_steps, + save_path=os.path.join(run_dir, "training_loss_vs_steps.pdf"), + show=False, + ) + + # Plot 2: Loss vs Samples Seen + plot_training_loss_with_theory( + loss_history=train_loss_hist, + template_2d=template_2d, + p1=config['data']['p1'], + p2=config['data']['p2'], + x_values=samples_seen, + x_label="Samples Seen", + save_path=os.path.join(run_dir, "training_loss_vs_samples.pdf"), + show=False, + ) + + # Plot 3: Loss vs Fraction of Space + plot_training_loss_with_theory( + loss_history=train_loss_hist, + template_2d=template_2d, + p1=config['data']['p1'], + p2=config['data']['p2'], + x_values=fraction_of_space, + x_label="Samples Seen / Data Space Size", + save_path=os.path.join(run_dir, "training_loss_vs_fraction.pdf"), + show=False, + ) + + ### ----- PLOT MODEL PREDICTIONS ----- ### + print("Plotting model predictions over time...") + plot_model_predictions_over_time( + model, + param_hist, + X_seq_2d_t, + Y_seq_2d_t, + config['data']['p1'], + config['data']['p2'], + steps=checkpoint_indices, + save_path=os.path.join(run_dir, "predictions_over_time.pdf"), + show=False + ) + + # ### ----- PLOT POWER SPECTRUM ANALYSIS ----- ### + # print("Analyzing power spectrum of predictions over training...") + # plot_prediction_power_spectrum_over_time( + # model, + # param_hist, + # X_seq_2d_t, + # Y_seq_2d_t, + # template_2d, + # config['data']['p1'], + # config['data']['p2'], + # loss_history=train_loss_hist, + # param_save_indices=param_save_indices, + # num_freqs_to_track=10, + # checkpoint_indices=checkpoint_indices, + # num_samples=100, + # save_path=os.path.join(run_dir, "power_spectrum_analysis.pdf"), + # show=False + # ) + + ### ----- PLOT FOURIER MODES REFERENCE ----- ### + print("Creating Fourier modes reference...") + tracked_freqs = topk_template_freqs(template_2d, K=10) + colors = plt.cm.tab10(np.linspace(0, 1, len(tracked_freqs))) + + # plot_fourier_modes_reference( + # tracked_freqs, + # colors, + # config['data']['p1'], + # config['data']['p2'], + # save_path=os.path.join(run_dir, "fourier_modes_reference.pdf"), + # save_individual=True, + # individual_dir=os.path.join(run_dir, "fourier_modes"), + # show=False + # ) + + # ### ----- PLOT W_OUT NEURON SPECIALIZATION ----- ### + # print("Visualizing W_out neuron specialization...") + # plot_wout_neuron_specialization( + # param_hist, + # tracked_freqs, + # colors, + # config['data']['p1'], + # config['data']['p2'], + # steps=checkpoint_indices, + # dead_thresh_l2=0.25, + # save_dir=run_dir, + # show=False + # ) + + ### ----- PLOT W_MIX FREQUENCY STRUCTURE (QuadraticRNN only) ----- ### + model_type = config['model']['model_type'] + if model_type == 'QuadraticRNN': + print("Visualizing W_mix frequency structure...") + plot_wmix_frequency_structure( + param_hist, + tracked_freqs, + colors, + config['data']['p1'], + config['data']['p2'], + steps=checkpoint_indices, + within_group_order="phase", + dead_l2_thresh=0.1, + save_path=os.path.join(run_dir, "wmix_frequency_structure.pdf"), + show=False + ) + else: + print("Skipping W_mix frequency structure plot (not applicable for SequentialMLP)") + + print("\n✓ All plots generated successfully!") + + +def produce_plots_1d( + run_dir: Path, + config: dict, + model, + param_hist, + param_save_indices, + train_loss_hist, + template_1d: np.ndarray, + training_mode: str, + device: str +): + """ + Generate all analysis plots after training (1D version). + + Args: + run_dir: Directory to save plots + config: Configuration dictionary (must have dimension=1) + model: Trained model (QuadraticRNN or SequentialMLP) + param_hist: List of parameter snapshots + param_save_indices: Indices where params were saved + train_loss_hist: Training loss history + template_1d: 1D template array (p,) + training_mode: 'online' or 'offline' + device: Device string ('cpu' or 'cuda') + """ + print("\n=== Generating Analysis Plots (1D) ===") + + ### ----- COMPUTE X-AXIS VALUES ----- ### + p = config['data']['p'] + k = config['data']['k'] + batch_size = config['data']['batch_size'] + total_space_size = p ** k + + # Calculate different x-axis values for plotting + if training_mode == 'online': + steps = np.arange(len(train_loss_hist)) + samples_seen = batch_size * steps + fraction_of_space = samples_seen / total_space_size + x_label_steps = "Step" + else: # offline + epochs = np.arange(len(train_loss_hist)) + samples_seen = config['data']['num_samples'] * epochs + fraction_of_space = samples_seen / total_space_size + x_label_steps = "Epoch" + + # Save x-axis data + np.save(run_dir / "samples_seen.npy", samples_seen) + np.save(run_dir / "fraction_of_space_seen.npy", fraction_of_space) + + print(f"Total data space: {total_space_size:,} sequences") + print(f"Samples seen: {samples_seen[-1]:,} ({fraction_of_space[-1]*100:.4f}% of space)") + + ### ----- GENERATE EVALUATION DATA ----- ### + print("Generating evaluation data for visualization...") + from gagf.rnns.datamodule import build_modular_addition_sequence_dataset_1d + X_seq_1d, Y_seq_1d, _ = build_modular_addition_sequence_dataset_1d( + config['data']['p'], + template_1d, + config['data']['k'], + mode="sampled", + num_samples=min(config['data']['num_samples'], 1000), + return_all_outputs=config['model']['return_all_outputs'], + ) + X_seq_1d_t = torch.tensor(X_seq_1d, dtype=torch.float32, device=device) + Y_seq_1d_t = torch.tensor(Y_seq_1d, dtype=torch.float32, device=device) + print(f" Generated {X_seq_1d_t.shape[0]} samples for visualization") + + ### ----- COMPUTE CHECKPOINT INDICES ----- ### + total_checkpoints = len(param_hist) + checkpoint_fractions = config['analysis']['checkpoints'] + checkpoint_indices = [int(f * (total_checkpoints - 1)) for f in checkpoint_fractions] + + print(f"Analysis checkpoints: {checkpoint_indices} (out of {total_checkpoints})") + print(f" Corresponding to step/epoch indices: {[param_save_indices[i] for i in checkpoint_indices]}") + + ### ----- PLOT TRAINING LOSS ----- ### + print("\nPlotting training loss...") + + # Create a 2x2 subplot for different scale combinations + fig, axes = plt.subplots(2, 2, figsize=(12, 10)) + + x_values = steps if training_mode == 'online' else epochs + + scale_configs = [ + ('linear', 'linear', 'Linear Scale'), + ('linear', 'log', 'Log Y'), + ('log', 'linear', 'Log X'), + ('log', 'log', 'Log-Log'), + ] + + for ax, (xscale, yscale, title) in zip(axes.flat, scale_configs): + ax.plot(x_values, train_loss_hist, lw=2, color='#1f77b4') + ax.set_xscale(xscale) + ax.set_yscale(yscale) + ax.set_xlabel(x_label_steps) + ax.set_ylabel('Training Loss') + ax.set_title(title) + ax.grid(True, alpha=0.3) + + plt.tight_layout() + plt.savefig(os.path.join(run_dir, "training_loss.pdf"), bbox_inches='tight', dpi=150) + plt.close() + print(" ✓ Saved training loss plot (all scales)") + + ### ----- PLOT MODEL PREDICTIONS ----- ### + print("Plotting model predictions over time...") + plot_model_predictions_over_time_1d( + model, + param_hist, + X_seq_1d_t, + Y_seq_1d_t, + p, + steps=checkpoint_indices, + save_path=os.path.join(run_dir, "predictions_over_time.pdf"), + show=False + ) + + ### ----- PLOT POWER SPECTRUM ANALYSIS ----- ### + print("Analyzing power spectrum of predictions over training...") + plot_prediction_power_spectrum_over_time_1d( + model, + param_hist, + X_seq_1d_t, + Y_seq_1d_t, + template_1d, + p, + loss_history=train_loss_hist, + param_save_indices=param_save_indices, + num_freqs_to_track=min(10, p // 4), + checkpoint_indices=checkpoint_indices, + num_samples=100, + save_path=os.path.join(run_dir, "power_spectrum_analysis.pdf"), + show=False + ) + + # ### ----- PLOT W_OUT NEURON SPECIALIZATION ----- ### + # print("Visualizing W_out neuron specialization...") + # tracked_freqs = topk_template_freqs_1d(template_1d, K=min(10, p // 4)) + # colors = plt.cm.tab10(np.linspace(0, 1, len(tracked_freqs))) + + # plot_wout_neuron_specialization_1d( + # param_hist, + # tracked_freqs, + # colors, + # p, + # steps=checkpoint_indices, + # dead_thresh_l2=0.25, + # save_dir=run_dir, + # show=False + # ) + + print("\n✓ All 1D plots generated successfully!") + + +def plot_model_predictions_over_time_D3( + model, + param_hist, + X_eval, + Y_eval, + group_order: int, + checkpoint_indices: list, + save_path: str = None, + num_samples: int = 5, +): + """ + Plot model predictions vs targets at different training checkpoints for D3. + + Args: + model: Trained model + param_hist: List of parameter snapshots + X_eval: Input evaluation tensor (N, k, group_order) + Y_eval: Target evaluation tensor (N, group_order) + group_order: Order of D3 group (6) + checkpoint_indices: Indices into param_hist to visualize + save_path: Path to save the plot + num_samples: Number of samples to show + """ + n_checkpoints = len(checkpoint_indices) + + fig, axes = plt.subplots(num_samples, n_checkpoints, figsize=(4 * n_checkpoints, 3 * num_samples)) + if num_samples == 1: + axes = axes.reshape(1, -1) + if n_checkpoints == 1: + axes = axes.reshape(-1, 1) + + # Select random sample indices + sample_indices = np.random.choice(len(X_eval), size=min(num_samples, len(X_eval)), replace=False) + + for col, ckpt_idx in enumerate(checkpoint_indices): + # Load parameters for this checkpoint + model.load_state_dict(param_hist[ckpt_idx]) + model.eval() + + with torch.no_grad(): + outputs = model(X_eval[sample_indices]) + outputs_np = outputs.cpu().numpy() + targets_np = Y_eval[sample_indices].cpu().numpy() + + for row, (output, target) in enumerate(zip(outputs_np, targets_np)): + ax = axes[row, col] + x_axis = np.arange(group_order) + + ax.bar(x_axis - 0.15, target, width=0.3, label='Target', alpha=0.7, color='#2ecc71') + ax.bar(x_axis + 0.15, output, width=0.3, label='Output', alpha=0.7, color='#e74c3c') + + if row == 0: + ax.set_title(f'Checkpoint {ckpt_idx}') + if col == 0: + ax.set_ylabel(f'Sample {sample_indices[row]}') + if row == num_samples - 1: + ax.set_xlabel('Group element') + if row == 0 and col == n_checkpoints - 1: + ax.legend(loc='upper right', fontsize=8) + + ax.set_xticks(x_axis) + ax.grid(True, alpha=0.3) + + plt.suptitle('D3 Model Predictions vs Targets Over Training', fontsize=14) + plt.tight_layout() + + if save_path: + plt.savefig(save_path, bbox_inches='tight', dpi=150) + plt.close() + + +def plot_power_spectrum_over_time_D3( + model, + param_hist, + param_save_indices, + X_eval, + template: np.ndarray, + D3, + save_path: str = None, + num_samples_for_power: int = 100, + num_checkpoints_to_sample: int = 50, +): + """ + Plot power spectrum of model outputs vs template power spectrum over training for D3. + + Args: + model: Trained model + param_hist: List of parameter snapshots + param_save_indices: List mapping param_hist index to epoch number + X_eval: Input evaluation tensor + template: Template array (group_order,) + D3: DihedralGroup object from escnn + save_path: Path to save the plot + num_samples_for_power: Number of samples to average power over + num_checkpoints_to_sample: Number of checkpoints to sample for the evolution plot + """ + from group_agf.binary_action_learning.group_fourier_transform import compute_group_fourier_coef + + group_order = D3.order() + irreps = D3.irreps() + n_irreps = len(irreps) + + # Compute template power spectrum + template_power = np.zeros(n_irreps) + for i, irrep in enumerate(irreps): + fourier_coef = compute_group_fourier_coef(D3, template, irrep) + template_power[i] = irrep.size * np.trace(fourier_coef.conj().T @ fourier_coef) + template_power = template_power / group_order + + print(f" Template power spectrum: {template_power}") + print(f" (These are dim^2 * diag_value^2 / |G| for each irrep)") + + # Sample checkpoints uniformly for evolution plot + total_checkpoints = len(param_hist) + if total_checkpoints <= num_checkpoints_to_sample: + sampled_ckpt_indices = list(range(total_checkpoints)) + else: + sampled_ckpt_indices = np.linspace(0, total_checkpoints - 1, num_checkpoints_to_sample, dtype=int).tolist() + + # Get corresponding epoch numbers + epoch_numbers = [param_save_indices[i] for i in sampled_ckpt_indices] + + # Compute model output power at each sampled checkpoint + n_sampled = len(sampled_ckpt_indices) + model_powers = np.zeros((n_sampled, n_irreps)) + + X_subset = X_eval[:num_samples_for_power] + + for i, ckpt_idx in enumerate(sampled_ckpt_indices): + model.load_state_dict(param_hist[ckpt_idx]) + model.eval() + + with torch.no_grad(): + outputs = model(X_subset) + outputs_np = outputs.cpu().numpy() + + # Average power over all samples + powers = np.zeros((len(outputs_np), n_irreps)) + for sample_i, output in enumerate(outputs_np): + for irrep_i, irrep in enumerate(irreps): + fourier_coef = compute_group_fourier_coef(D3, output, irrep) + powers[sample_i, irrep_i] = irrep.size * np.trace(fourier_coef.conj().T @ fourier_coef) + powers = powers / group_order + model_powers[i] = np.mean(powers, axis=0) + + # Create plot + fig, axes = plt.subplots(1, 2, figsize=(14, 5)) + + # Left: Power spectrum comparison at key checkpoints (start, middle, end) + ax1 = axes[0] + x_pos = np.arange(n_irreps) + key_indices = [0, n_sampled // 2, n_sampled - 1] + n_bars = len(key_indices) + 1 # +1 for template + width = 0.8 / n_bars + + # Plot template power + ax1.bar(x_pos - 0.4 + width/2, template_power, width=width, label='Template', color='black', alpha=0.8) + + # Plot model power at key checkpoints + colors = ['#3498db', '#e74c3c', '#2ecc71'] + for bar_i, (key_i, color) in enumerate(zip(key_indices, colors)): + offset = -0.4 + (bar_i + 1.5) * width + epoch = epoch_numbers[key_i] + ax1.bar(x_pos + offset, model_powers[key_i], width=width, + label=f'Epoch {epoch}', color=color, alpha=0.7) + + ax1.set_xlabel('Irrep index') + ax1.set_ylabel('Power') + ax1.set_title('Power Spectrum: Template vs Model Output') + ax1.set_xticks(x_pos) + ax1.set_xticklabels([f'{i}\n(dim={irreps[i].size})' for i in range(n_irreps)], fontsize=8) + ax1.legend(loc='upper right', fontsize=8) + ax1.grid(True, alpha=0.3, axis='y') + + # Right: Power evolution over epochs for top irreps + ax2 = axes[1] + top_k = min(5, n_irreps) + top_irrep_indices = np.argsort(template_power)[::-1][:top_k] + + colors_line = plt.cm.tab10(np.linspace(0, 1, top_k)) + for i, irrep_idx in enumerate(top_irrep_indices): + power_values = model_powers[:, irrep_idx] + ax2.plot(epoch_numbers, power_values, '-', lw=2, color=colors_line[i], + label=f'Irrep {irrep_idx} (dim={irreps[irrep_idx].size})') + # Add horizontal line for template power + ax2.axhline(template_power[irrep_idx], linestyle='--', alpha=0.5, color=colors_line[i]) + + ax2.set_xlabel('Epoch') + ax2.set_ylabel('Power') + ax2.set_title('Power Evolution Over Training') + ax2.legend(loc='upper left', fontsize=8) + ax2.grid(True, alpha=0.3) + + plt.suptitle('D3 Power Spectrum Analysis', fontsize=14) + plt.tight_layout() + + if save_path: + plt.savefig(save_path, bbox_inches='tight', dpi=150) + plt.close() + + +def produce_plots_D3( + run_dir: Path, + config: dict, + model, + param_hist, + param_save_indices, + train_loss_hist, + template_D3: np.ndarray, + device: str = 'cpu', +): + """ + Generate all analysis plots after training (D3 version). + + Args: + run_dir: Directory to save plots + config: Configuration dictionary (must have dimension='D3') + model: Trained model (QuadraticRNN or SequentialMLP) + param_hist: List of parameter snapshots + param_save_indices: Indices where params were saved + train_loss_hist: Training loss history + template_D3: 1D template array of shape (group_order,) where group_order=6 for D3 + device: Device string ('cpu' or 'cuda') + """ + print("\n=== Generating Analysis Plots (D3) ===") + + from escnn.group import DihedralGroup + D3 = DihedralGroup(N=3) + group_order = D3.order() # = 6 + + k = config['data']['k'] + batch_size = config['data']['batch_size'] + training_mode = config['training']['mode'] + + # Total data space size for D3 with k compositions + total_space_size = group_order ** k + + # Calculate x-axis values + if training_mode == 'online': + steps = np.arange(len(train_loss_hist)) + samples_seen = batch_size * steps + fraction_of_space = samples_seen / total_space_size + x_label = "Step" + x_values = steps + else: # offline + epochs = np.arange(len(train_loss_hist)) + samples_seen = config['data']['num_samples'] * epochs + fraction_of_space = samples_seen / total_space_size + x_label = "Epoch" + x_values = epochs + + # Save x-axis data + samples_seen_path = run_dir / "samples_seen.npy" + fraction_path = run_dir / "fraction_of_space_seen.npy" + np.save(samples_seen_path, samples_seen) + np.save(fraction_path, fraction_of_space) + print(f" ✓ Saved {samples_seen_path}") + print(f" ✓ Saved {fraction_path}") + + print(f"\nD3 group order: {group_order}") + print(f"Sequence length k: {k}") + print(f"Total data space: {total_space_size:,} sequences") + if len(samples_seen) > 0: + print(f"Samples seen: {samples_seen[-1]:,} ({fraction_of_space[-1]*100:.4f}% of space)") + + ### ----- GENERATE EVALUATION DATA ----- ### + print("\nGenerating evaluation data for visualization...") + from gagf.rnns.datamodule import build_modular_addition_sequence_dataset_D3 + X_eval, Y_eval, _ = build_modular_addition_sequence_dataset_D3( + template_D3, + k, + mode="sampled", + num_samples=min(config['data']['num_samples'], 1000), + return_all_outputs=config['model']['return_all_outputs'], + ) + X_eval_t = torch.tensor(X_eval, dtype=torch.float32, device=device) + Y_eval_t = torch.tensor(Y_eval, dtype=torch.float32, device=device) + print(f" Generated {X_eval_t.shape[0]} samples for visualization") + + ### ----- COMPUTE CHECKPOINT INDICES ----- ### + total_checkpoints = len(param_hist) + checkpoint_fractions = config['analysis']['checkpoints'] + checkpoint_indices = [int(f * (total_checkpoints - 1)) for f in checkpoint_fractions] + print(f"Analysis checkpoints: {checkpoint_indices} (out of {total_checkpoints})") + + ### ----- PLOT TRAINING LOSS ----- ### + print("\nPlotting training loss...") + + fig, axes = plt.subplots(2, 2, figsize=(12, 10)) + + scale_configs = [ + ('linear', 'linear', 'Linear Scale'), + ('linear', 'log', 'Log Y'), + ('log', 'linear', 'Log X'), + ('log', 'log', 'Log-Log'), + ] + + for ax, (xscale, yscale, title) in zip(axes.flat, scale_configs): + ax.plot(x_values, train_loss_hist, lw=2, color='#1f77b4') + ax.set_xscale(xscale) + ax.set_yscale(yscale) + ax.set_xlabel(x_label) + ax.set_ylabel('Training Loss') + ax.set_title(title) + ax.grid(True, alpha=0.3) + + plt.suptitle(f'D3 Group Composition (k={k})', fontsize=14) + plt.tight_layout() + training_loss_path = os.path.join(run_dir, "training_loss.pdf") + plt.savefig(training_loss_path, bbox_inches='tight', dpi=150) + plt.close() + print(f" ✓ Saved {training_loss_path}") + + ### ----- PLOT MODEL PREDICTIONS OVER TIME ----- ### + print("\nPlotting model predictions over time...") + plot_model_predictions_over_time_D3( + model=model, + param_hist=param_hist, + X_eval=X_eval_t, + Y_eval=Y_eval_t, + group_order=group_order, + checkpoint_indices=checkpoint_indices, + save_path=os.path.join(run_dir, "predictions_over_time.pdf"), + ) + print(f" ✓ Saved {os.path.join(run_dir, 'predictions_over_time.pdf')}") + + ### ----- PLOT POWER SPECTRUM OVER TIME ----- ### + print("\nPlotting power spectrum over time...") + plot_power_spectrum_over_time_D3( + model=model, + param_hist=param_hist, + param_save_indices=param_save_indices, + X_eval=X_eval_t, + template=template_D3, + D3=D3, + save_path=os.path.join(run_dir, "power_spectrum_analysis.pdf"), + ) + print(f" ✓ Saved {os.path.join(run_dir, 'power_spectrum_analysis.pdf')}") + + print("\n✓ All D3 plots generated successfully!") + +def train_single_run(config: dict, run_dir: Path = None) -> dict: + """ + Train a model (QuadraticRNN or SequentialMLP) on modular addition for a single configuration. + + Args: + config: Configuration dictionary. Must include 'model.model_type' to specify + 'QuadraticRNN' or 'SequentialMLP'. + run_dir: Optional run directory. If None, will create a timestamped directory. + + Returns: + dict: Training results including final losses and metadata. + """ + # Setup run directory if not provided + if run_dir is None: + run_dir = setup_run_directory(base_dir="runs") + print(f"Experiment directory: {run_dir}") + + # Set seed + np.random.seed(config['data']['seed']) + torch.manual_seed(config['data']['seed']) + + # Determine device + device = config['device'] if torch.cuda.is_available() else "cpu" + print(f"Using device: {device}") + + ### ----- GENERATE DATA ----- ### + print("Generating data...") + + dimension = config['data']['dimension'] # TODO(Nina): Here, it will be a string D3. + template_type = config['data']['template_type'] # TODO(Nina): Here, use a one-hot template for D3, i.e., a one-hot vector of length D3.order() = 6. + + if dimension == 1: + # 1D template generation + p = config['data']['p'] + p_flat = p + + if template_type == 'mnist': + template_1d = mnist_template_1d(p, config['data']['mnist_label'], root="data") + elif template_type == 'fourier': + n_freqs = config['data']["n_freqs"] + template_1d = generate_fourier_template_1d(p, n_freqs=n_freqs, seed=config['data']['seed']) + elif template_type == 'gaussian': + template_1d = generate_gaussian_template_1d(p, n_gaussians=3, seed=config['data']['seed']) + elif template_type == 'onehot': + template_1d = generate_onehot_template_1d(p) + else: + raise ValueError(f"Unknown template_type: {template_type}") + + template_1d = template_1d - np.mean(template_1d) + template = template_1d # For consistency in code below + + # Visualize 1D template + print("Visualizing template...") + fig, ax = plt.subplots(figsize=(10, 4)) + ax.plot(template_1d) + ax.set_xlabel('Position') + ax.set_ylabel('Value') + ax.set_title('1D Template') + ax.grid(True, alpha=0.3) + fig.savefig(os.path.join(run_dir, "template.pdf"), bbox_inches="tight", dpi=150) + print(f" ✓ Saved template") + + elif dimension == 2: + # 2D template generation + p1 = config['data']['p1'] + p2 = config['data']['p2'] + p_flat = p1 * p2 + + if template_type == 'mnist': + template_2d = mnist_template_2d(p1, p2, config['data']['mnist_label'], root="data") + elif template_type == 'fourier': + n_freqs = config['data']["n_freqs"] + template_2d = generate_template_unique_freqs(p1, p2, n_freqs=n_freqs, seed=config['data']['seed']) + else: + raise ValueError(f"Unknown template_type for 2D: {template_type}") + + template_2d = template_2d - np.mean(template_2d) + template = template_2d # For consistency in code below + + # Visualize 2D template + print("Visualizing template...") + fig, ax = plot_2d_signal(template_2d, title="Template", cmap="gray") + fig.savefig(os.path.join(run_dir, "template.pdf"), bbox_inches="tight", dpi=150) + print(f" ✓ Saved template") + elif dimension == 'D3': + from escnn.group import DihedralGroup + from group_agf.binary_action_learning.group_fourier_transform import compute_group_inverse_fourier_transform + + D3 = DihedralGroup(N=3) # D3 = dihedral group of order 6 (3 rotations * 2 for reflections) + group_order = D3.order() # = 6 + p_flat = group_order # For D3, the "p" is the group order + + print(f"D3 group order: {group_order}") + print(f"D3 irreps: {[irrep.size for irrep in D3.irreps()]} (dimensions)") + + if template_type == 'onehot': + # Generate one-hot template of length group_order + # This creates a template with a spike at position 1 + template_d3 = np.zeros(group_order, dtype=np.float32) + template_d3[1] = 10.0 + template_d3 = template_d3 - np.mean(template_d3) + print(f"Template type: onehot") + + elif template_type == 'custom_fourier': + # Generate template from Fourier coefficients for each irrep + # powers specifies the DESIRED POWER SPECTRUM values (not diagonal values) + # We convert powers to Fourier coefficient diagonal values using: + # diag_value = sqrt(group_size * power / dim^2) + # This is because: power = dim^2 * diag_value^2 / group_size + powers = config['data']['powers'] + irreps = D3.irreps() + irrep_dims = [ir.size for ir in irreps] + + assert len(powers) == len(irreps), \ + f"powers must have {len(irreps)} values (one per irrep), got {len(powers)}" + + # Convert powers to Fourier coefficient diagonal values + # (same formula as in binary_action_learning/main.py) + fourier_coef_diag_values = [ + np.sqrt(group_order * p / dim**2) if p > 0 else 0.0 + for p, dim in zip(powers, irrep_dims) + ] + + print(f"Template type: custom_fourier") + print(f"Desired powers (per irrep): {powers}") + print(f"Fourier coef diagonal values: {fourier_coef_diag_values}") + + # Build spectrum: list of diagonal matrices, one per irrep + spectrum = [] + for i, irrep in enumerate(irreps): + diag_val = fourier_coef_diag_values[i] + diag_values = np.full(irrep.size, diag_val, dtype=float) + mat = np.zeros((irrep.size, irrep.size), dtype=float) + np.fill_diagonal(mat, diag_values) + print(f" Irrep {i} (dim={irrep.size}): diag_value = {diag_val:.4f} -> power = {powers[i]}") + spectrum.append(mat) + + # Generate template via inverse group Fourier transform + template_d3 = compute_group_inverse_fourier_transform(D3, spectrum) + template_d3 = template_d3 - np.mean(template_d3) + template_d3 = template_d3.astype(np.float32) + else: + raise ValueError(f"Unknown template_type for D3: {template_type}. Must be 'onehot' or 'custom_fourier'") + + template = template_d3 # For consistency in code below + print(f"Template shape: {template.shape}") + + # Visualize D3 template + print("Visualizing template...") + fig, ax = plt.subplots(figsize=(8, 4)) + ax.bar(range(group_order), template_d3) + ax.set_xlabel('Group element index') + ax.set_ylabel('Value') + title = f'D3 Template (order={group_order}, type={template_type})' + if template_type == 'custom_fourier': + title += f'\npowers={powers}' + ax.set_title(title) + ax.set_xticks(range(group_order)) + fig.savefig(os.path.join(run_dir, "template.pdf"), bbox_inches="tight", dpi=150) + plt.close(fig) + print(f" ✓ Saved template") + else: + raise ValueError(f"dimension must be 1 or 2, got {dimension}") + + + ### ----- SETUP TRAINING ----- ### + print("Setting up model and training...") + + # Flatten template for model (works for both 1D and 2D) + template_torch = torch.tensor(template, device=device, dtype=torch.float32).flatten() + + # Determine which model to use + model_type = config['model']['model_type'] + print(f"Using model type: {model_type}") + + if model_type == 'QuadraticRNN': + rnn_2d = QuadraticRNN( + p=p_flat, + d=config['model']['hidden_dim'], + template=template_torch, + init_scale=config['model']['init_scale'], + return_all_outputs=config['model']['return_all_outputs'], + transform_type=config['model']['transform_type'], + ).to(device) + elif model_type == 'SequentialMLP': + rnn_2d = SequentialMLP( #TODO(NiT): Rename rnn_2d, in both if loops, to model or something similar. + p=p_flat, + d=config['model']['hidden_dim'], + template=template_torch, + k=config['data']['k'], + init_scale=config['model']['init_scale'], + return_all_outputs=config['model']['return_all_outputs'], + ).to(device) + else: + raise ValueError(f"Invalid model_type: {model_type}. Must be 'QuadraticRNN' or 'SequentialMLP'") + + criterion = nn.MSELoss() + + # Optimizer selection with model-aware defaults + optimizer_name = config['training']['optimizer'] + + # Auto-select optimizer if not specified or if 'auto' + if optimizer_name == 'auto' or (optimizer_name not in ['adam', 'hybrid', 'per_neuron']): + if model_type == 'SequentialMLP': + optimizer_name = 'per_neuron' + print(f"Auto-selected optimizer: {optimizer_name} (recommended for SequentialMLP)") + else: + optimizer_name = 'adam' + print(f"Auto-selected optimizer: {optimizer_name}") + else: + print(f"Using optimizer: {optimizer_name}") + + if optimizer_name == 'adam': + optimizer = optim.Adam( + rnn_2d.parameters(), + lr=config['training']['learning_rate'], + betas=tuple(config['training']['betas']), + weight_decay=config['training']['weight_decay'] + ) + elif optimizer_name == 'hybrid': + if model_type != 'QuadraticRNN': + raise ValueError(f"'hybrid' optimizer is only supported for QuadraticRNN, got {model_type}") + optimizer = HybridRNNOptimizer( + rnn_2d, + lr=1, + scaling_factor=config['training']['scaling_factor'], + adam_lr=config['training']['learning_rate'], + adam_betas=tuple(config['training']['betas']), + adam_eps=1e-8, + ) + elif optimizer_name == 'per_neuron': + # Per-neuron scaled SGD (recommended for SequentialMLP) + degree = config['training']['degree'] + lr = config['training']['learning_rate'] + + # For SequentialMLP, use lr=1.0 by default if not specified + if model_type == 'SequentialMLP' and lr == 1.0e-3: + print(" Note: Using lr=1.0 for per_neuron optimizer with SequentialMLP") + lr = 1.0 + + optimizer = PerNeuronScaledSGD( + rnn_2d, + lr=lr, + degree=degree # Will auto-infer as k+1 for SequentialMLP (k = sequence length) + ) + print(f" Degree of homogeneity: {optimizer.param_groups[0]['degree']}") + else: + raise ValueError(f"Invalid optimizer: {optimizer_name}. Must be 'adam', 'hybrid', or 'per_neuron'") + + + ### ----- CREATE DATA LOADERS ----- ### + training_mode = config['training']['mode'] + + if training_mode == 'online': + print("Using ONLINE data generation...") + + if dimension == 1: + from gagf.rnns.datamodule import OnlineModularAdditionDataset1D + + # Training dataset + train_dataset = OnlineModularAdditionDataset1D( + p=config['data']['p'], + template=template_1d, + k=config['data']['k'], + batch_size=config['data']['batch_size'], + device=device, + return_all_outputs=config['model']['return_all_outputs'], + ) + + # Validation dataset + val_dataset = OnlineModularAdditionDataset1D( + p=config['data']['p'], + template=template_1d, + k=config['data']['k'], + batch_size=config['data']['batch_size'], + device=device, + return_all_outputs=config['model']['return_all_outputs'], + ) + elif dimension == 2: + from gagf.rnns.datamodule import OnlineModularAdditionDataset2D + + # Training dataset + train_dataset = OnlineModularAdditionDataset2D( + p1=config['data']['p1'], + p2=config['data']['p2'], + template=template_2d, + k=config['data']['k'], + batch_size=config['data']['batch_size'], + device=device, + return_all_outputs=config['model']['return_all_outputs'], + ) + + # Validation dataset + val_dataset = OnlineModularAdditionDataset2D( + p1=config['data']['p1'], + p2=config['data']['p2'], + template=template_2d, + k=config['data']['k'], + batch_size=config['data']['batch_size'], + device=device, + return_all_outputs=config['model']['return_all_outputs'], + ) + elif dimension == 'D3': + # Online training for D3 is not yet implemented + raise NotImplementedError( + "Online training mode is not yet implemented for D3. " + "Please use training.mode='offline' in the config." + ) + else: + raise ValueError(f"dimension must be 1, 2, or 'D3', got {dimension}") + + train_loader = DataLoader(train_dataset, batch_size=None, num_workers=0) + val_loader = DataLoader(val_dataset, batch_size=None, num_workers=0) + + num_steps = config['training']['num_steps'] + print(f" Training for {num_steps} steps") + + elif training_mode == 'offline': + print("Using OFFLINE pre-generated dataset...") + from torch.utils.data import TensorDataset + + if dimension == 1: + from gagf.rnns.datamodule import build_modular_addition_sequence_dataset_1d + + # Generate training dataset + X_train, Y_train, _ = build_modular_addition_sequence_dataset_1d( + config['data']['p'], + template_1d, + config['data']['k'], + mode=config['data']['mode'], + num_samples=config['data']['num_samples'], + return_all_outputs=config['model']['return_all_outputs'], + ) + + # Generate validation dataset + val_samples = max(1000, config['data']['num_samples'] // 10) + X_val, Y_val, _ = build_modular_addition_sequence_dataset_1d( + config['data']['p'], + template_1d, + config['data']['k'], + mode='sampled', + num_samples=val_samples, + return_all_outputs=config['model']['return_all_outputs'], + ) + elif dimension == 2: + from gagf.rnns.datamodule import build_modular_addition_sequence_dataset_2d + + # Generate training dataset + X_train, Y_train, _ = build_modular_addition_sequence_dataset_2d( + config['data']['p1'], + config['data']['p2'], + template_2d, + config['data']['k'], + mode=config['data']['mode'], + num_samples=config['data']['num_samples'], + return_all_outputs=config['model']['return_all_outputs'], + ) + + # Generate validation dataset + val_samples = max(1000, config['data']['num_samples'] // 10) + X_val, Y_val, _ = build_modular_addition_sequence_dataset_2d( + config['data']['p1'], + config['data']['p2'], + template_2d, + config['data']['k'], + mode='sampled', + num_samples=val_samples, + return_all_outputs=config['model']['return_all_outputs'], + ) + elif dimension == 'D3': + from gagf.rnns.datamodule import build_modular_addition_sequence_dataset_D3 + + # Generate training dataset + X_train, Y_train, _ = build_modular_addition_sequence_dataset_D3( + template_d3, + config['data']['k'], + mode=config['data']['mode'], + num_samples=config['data']['num_samples'], + return_all_outputs=config['model']['return_all_outputs'], + ) + + # Generate validation dataset + val_samples = max(1000, config['data']['num_samples'] // 10) + X_val, Y_val, _ = build_modular_addition_sequence_dataset_D3( + template_d3, + config['data']['k'], + mode='sampled', + num_samples=val_samples, + return_all_outputs=config['model']['return_all_outputs'], + ) + else: + raise ValueError(f"dimension must be 1 or 2, got {dimension}") + + X_train_t = torch.tensor(X_train, dtype=torch.float32, device=device) + Y_train_t = torch.tensor(Y_train, dtype=torch.float32, device=device) + X_val_t = torch.tensor(X_val, dtype=torch.float32, device=device) + Y_val_t = torch.tensor(Y_val, dtype=torch.float32, device=device) + + train_dataset = TensorDataset(X_train_t, Y_train_t) + val_dataset = TensorDataset(X_val_t, Y_val_t) + + train_loader = DataLoader( + train_dataset, + batch_size=config['data']['batch_size'], + shuffle=True + ) + val_loader = DataLoader( + val_dataset, + batch_size=config['data']['batch_size'], + shuffle=False + ) + + epochs = config['training']['epochs'] + print(f" Training for {epochs} epochs with {len(train_dataset)} samples") + + else: + raise ValueError(f"Invalid training mode: {training_mode}. Must be 'online' or 'offline'") + + ### ----- TRAIN MODEL ----- ### + print(f"Starting training in {training_mode} mode...") + + # Get optional early stopping threshold + reduction_threshold = config['training'].get('reduction_threshold') + if reduction_threshold is not None: + print(f"Early stopping enabled at {reduction_threshold*100:.1f}% reduction") + + start_time = time.time() + + if training_mode == 'online': + from gagf.rnns.train import train_online + train_loss_hist, val_loss_hist, param_hist, param_save_indices, final_step = train_online( + rnn_2d, + train_loader, + criterion, + optimizer, + num_steps=num_steps, + verbose_interval=config['training']['verbose_interval'], + grad_clip=config['training']['grad_clip'], + eval_dataloader=val_loader, + save_param_interval=config['training']['save_param_interval'], + reduction_threshold=reduction_threshold, + ) + else: # offline + from gagf.rnns.train import train + train_loss_hist, val_loss_hist, param_hist, param_save_indices, final_step = train( + rnn_2d, + train_loader, + criterion, + optimizer, + epochs=epochs, + verbose_interval=config['training']['verbose_interval'], + grad_clip=config['training']['grad_clip'], + eval_dataloader=val_loader, + save_param_interval=config['training']['save_param_interval'], + reduction_threshold=reduction_threshold, + ) + + training_time = time.time() - start_time + + print(f"\nTraining complete!") + print(f" Final train loss: {train_loss_hist[-1]:.6f}") + print(f" Final val loss: {val_loss_hist[-1]:.6f}") + print(f" Training time: {training_time:.2f}s") + if reduction_threshold is not None: + max_steps_or_epochs = num_steps if training_mode == 'online' else epochs + stopped_early = final_step < max_steps_or_epochs + status = "CONVERGED" if stopped_early else "DID NOT CONVERGE" + print(f" Status: {status} at step/epoch {final_step}") + + ### ----- SAVE RESULTS ----- ### + metadata = save_results( + run_dir, config, rnn_2d, + train_loss_hist, val_loss_hist, + param_hist, + template, training_time, device + ) + + ### ----- PRODUCE ALL PLOTS ----- ### + if dimension == 2: + # Only produce detailed plots for 2D (for now) + produce_plots_2d( + run_dir=run_dir, + config=config, + model=rnn_2d, + param_hist=param_hist, + param_save_indices=param_save_indices, + train_loss_hist=train_loss_hist, + template_2d=template_2d, + training_mode=training_mode, + device=device + ) + elif dimension == 1: + # Produce detailed plots for 1D + produce_plots_1d( + run_dir=run_dir, + config=config, + model=rnn_2d, + param_hist=param_hist, + param_save_indices=param_save_indices, + train_loss_hist=train_loss_hist, + template_1d=template_1d, + training_mode=training_mode, + device=device + ) + elif dimension == 'D3': + # Produce basic plots for D3 + produce_plots_D3( + run_dir=run_dir, + config=config, + model=rnn_2d, + param_hist=param_hist, + param_save_indices=param_save_indices, + train_loss_hist=train_loss_hist, + template_D3=template_d3, + device=device, + ) + else: + raise ValueError(f"dimension must be 1, 2, or 'D3', got {dimension}") + + # Return results dictionary + results = { + "final_train_loss": float(train_loss_hist[-1]), + "final_val_loss": float(val_loss_hist[-1]), + "training_time": training_time, + "metadata": metadata, + "run_dir": str(run_dir), + "final_step": final_step, + } + + # Add early stopping info if enabled + if reduction_threshold is not None: + max_steps_or_epochs = num_steps if training_mode == 'online' else epochs + results["converged"] = final_step < max_steps_or_epochs + + return results + + +def main(config: dict): + """ + Main entry point for single training run. + + Args: + config: Configuration dictionary. + """ + train_single_run(config) + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="Train QuadraticRNN or SequentialMLP on 2D modular addition") + parser.add_argument( + "--config", + type=str, + default="gagf/rnns/config.yaml", + help="Path to config YAML file (default: gagf/rnns/config.yaml)" + ) + + args = parser.parse_args() + + config = load_config(args.config) + main(config) \ No newline at end of file From 71a6179ce3411e6e9a0d5013d787825682e7073a Mon Sep 17 00:00:00 2001 From: Nina Miolane Date: Tue, 13 Jan 2026 21:22:58 +0000 Subject: [PATCH 09/30] changing the order of composition --- gagf/rnns/config.yaml | 4 ++-- gagf/rnns/datamodule.py | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/gagf/rnns/config.yaml b/gagf/rnns/config.yaml index e3507eb..21f152c 100644 --- a/gagf/rnns/config.yaml +++ b/gagf/rnns/config.yaml @@ -27,7 +27,7 @@ data: p1: 4 #10 # Height/rows dimension (2D only) p2: 4 # Width/cols dimension (2D only) - k: 2 # Sequence length + k: 3 # Sequence length batch_size: 1000 seed: 5 @@ -44,7 +44,7 @@ data: powers: [0., 2000., 400.] # Dataset Mode (offline training only) - mode: sampled # 'sampled' | 'exhaustive' + mode: exhaustive # 'sampled' | 'exhaustive' num_samples: 1000 # Model Configuration diff --git a/gagf/rnns/datamodule.py b/gagf/rnns/datamodule.py index 1a5c2f9..8b81357 100644 --- a/gagf/rnns/datamodule.py +++ b/gagf/rnns/datamodule.py @@ -381,8 +381,7 @@ def build_modular_addition_sequence_dataset_D3( for idx in range(N): for t in range(k): sequence[idx, t] = (idx // (n_elements ** t)) % n_elements - print(f"sequence: {sequence}") - raise ValueError("Stop here") + # print(f"sequence: {sequence}") Looking good. else: # Sampled mode: randomly sample sequences N = int(num_samples) @@ -397,14 +396,15 @@ def build_modular_addition_sequence_dataset_D3( cumulative_rep = np.eye(group_order) # Identity matrix (identity element) for t in range(k): - elem_idx = sequence[i, t] - g_rep = rep_matrices[elem_idx] + elem_idx = sequence[i, t] # Take the index of the t-th element of the i-th sequence. + g_rep = rep_matrices[elem_idx] # Regular representation, a 6x6 matrix representing the group element. # X[i, t] = template transformed by g_t X[i, t, :] = g_rep @ template # Update cumulative composition: g1 * g2 * ... * g_t - cumulative_rep = cumulative_rep @ g_rep + # cumulative_rep = cumulative_rep @ g_rep + cumulative_rep = g_rep @ cumulative_rep # Y[i, t] = template transformed by cumulative composition Y[i, t, :] = cumulative_rep @ template From 85de59e63645f36f3d207a586472d5ea0a66ca2b Mon Sep 17 00:00:00 2001 From: Nina Miolane Date: Tue, 13 Jan 2026 21:37:06 +0000 Subject: [PATCH 10/30] Still a bias for higher dim --- gagf/rnns/config.yaml | 4 ++-- gagf/rnns/main.py | 52 +++++++++++-------------------------------- 2 files changed, 15 insertions(+), 41 deletions(-) diff --git a/gagf/rnns/config.yaml b/gagf/rnns/config.yaml index 21f152c..09d6c85 100644 --- a/gagf/rnns/config.yaml +++ b/gagf/rnns/config.yaml @@ -27,7 +27,7 @@ data: p1: 4 #10 # Height/rows dimension (2D only) p2: 4 # Width/cols dimension (2D only) - k: 3 # Sequence length + k: 2 # Sequence length batch_size: 1000 seed: 5 @@ -70,7 +70,7 @@ training: mode: 'offline' # 'online' | 'offline' # Steps/Epochs - epochs: 5000 # Used when mode='offline' + epochs: 3000 # Used when mode='offline' num_steps: 100 #1000000 #500000 # Used when mode='online' # Optimizer diff --git a/gagf/rnns/main.py b/gagf/rnns/main.py index f996925..2fcff93 100644 --- a/gagf/rnns/main.py +++ b/gagf/rnns/main.py @@ -554,6 +554,7 @@ def plot_power_spectrum_over_time_D3( X_eval, template: np.ndarray, D3, + k: int, save_path: str = None, num_samples_for_power: int = 100, num_checkpoints_to_sample: int = 50, @@ -568,6 +569,7 @@ def plot_power_spectrum_over_time_D3( X_eval: Input evaluation tensor template: Template array (group_order,) D3: DihedralGroup object from escnn + k: Sequence length save_path: Path to save the plot num_samples_for_power: Number of samples to average power over num_checkpoints_to_sample: Number of checkpoints to sample for the evolution plot @@ -621,55 +623,26 @@ def plot_power_spectrum_over_time_D3( powers = powers / group_order model_powers[i] = np.mean(powers, axis=0) - # Create plot - fig, axes = plt.subplots(1, 2, figsize=(14, 5)) - - # Left: Power spectrum comparison at key checkpoints (start, middle, end) - ax1 = axes[0] - x_pos = np.arange(n_irreps) - key_indices = [0, n_sampled // 2, n_sampled - 1] - n_bars = len(key_indices) + 1 # +1 for template - width = 0.8 / n_bars - - # Plot template power - ax1.bar(x_pos - 0.4 + width/2, template_power, width=width, label='Template', color='black', alpha=0.8) - - # Plot model power at key checkpoints - colors = ['#3498db', '#e74c3c', '#2ecc71'] - for bar_i, (key_i, color) in enumerate(zip(key_indices, colors)): - offset = -0.4 + (bar_i + 1.5) * width - epoch = epoch_numbers[key_i] - ax1.bar(x_pos + offset, model_powers[key_i], width=width, - label=f'Epoch {epoch}', color=color, alpha=0.7) - - ax1.set_xlabel('Irrep index') - ax1.set_ylabel('Power') - ax1.set_title('Power Spectrum: Template vs Model Output') - ax1.set_xticks(x_pos) - ax1.set_xticklabels([f'{i}\n(dim={irreps[i].size})' for i in range(n_irreps)], fontsize=8) - ax1.legend(loc='upper right', fontsize=8) - ax1.grid(True, alpha=0.3, axis='y') - - # Right: Power evolution over epochs for top irreps - ax2 = axes[1] + # Create single plot for power evolution over training + fig, ax = plt.subplots(figsize=(8, 5)) + top_k = min(5, n_irreps) top_irrep_indices = np.argsort(template_power)[::-1][:top_k] colors_line = plt.cm.tab10(np.linspace(0, 1, top_k)) for i, irrep_idx in enumerate(top_irrep_indices): power_values = model_powers[:, irrep_idx] - ax2.plot(epoch_numbers, power_values, '-', lw=2, color=colors_line[i], + ax.plot(epoch_numbers, power_values, '-', lw=2, color=colors_line[i], label=f'Irrep {irrep_idx} (dim={irreps[irrep_idx].size})') # Add horizontal line for template power - ax2.axhline(template_power[irrep_idx], linestyle='--', alpha=0.5, color=colors_line[i]) + ax.axhline(template_power[irrep_idx], linestyle='--', alpha=0.5, color=colors_line[i]) - ax2.set_xlabel('Epoch') - ax2.set_ylabel('Power') - ax2.set_title('Power Evolution Over Training') - ax2.legend(loc='upper left', fontsize=8) - ax2.grid(True, alpha=0.3) + ax.set_xlabel('Epoch') + ax.set_ylabel('Power') + ax.set_title(f'D3 Power Evolution Over Training (k={k})', fontsize=14) + ax.legend(loc='upper left', fontsize=8) + ax.grid(True, alpha=0.3) - plt.suptitle('D3 Power Spectrum Analysis', fontsize=14) plt.tight_layout() if save_path: @@ -811,6 +784,7 @@ def produce_plots_D3( X_eval=X_eval_t, template=template_D3, D3=D3, + k=k, save_path=os.path.join(run_dir, "power_spectrum_analysis.pdf"), ) print(f" ✓ Saved {os.path.join(run_dir, 'power_spectrum_analysis.pdf')}") From 14f4c99a3b45e7bc0e41dc046b075a5839b2495f Mon Sep 17 00:00:00 2001 From: Nina Miolane Date: Tue, 13 Jan 2026 22:14:05 +0000 Subject: [PATCH 11/30] try lowering the lr --- gagf/rnns/config.yaml | 143 ++++++++++-------------------------------- gagf/rnns/main.py | 10 ++- 2 files changed, 43 insertions(+), 110 deletions(-) diff --git a/gagf/rnns/config.yaml b/gagf/rnns/config.yaml index 09d6c85..9b1ebb8 100644 --- a/gagf/rnns/config.yaml +++ b/gagf/rnns/config.yaml @@ -1,119 +1,44 @@ -# ============================================================================ -# Base Configuration File -# ============================================================================ -# This config supports both 1D and 2D modular addition tasks with either -# QuadraticRNN or SequentialMLP models. -# -# Quick Setup Guide: -# ------------------ -# 1D Task (C_p): Set dimension=1, specify p -# 2D Task (C_p1 x C_p2): Set dimension=2, specify p1 and p2 -# QuadraticRNN: Set model_type='QuadraticRNN' -# SequentialMLP: Set model_type='SequentialMLP' -# ============================================================================ - -# Data Configuration -# ------------------ data: - # Dimension: 1 for C_p (cyclic group), 2 for C_p1 x C_p2 (product group), 'D3' for Dihedral D3 - dimension: 'D3' # 1 | 2 | 'D3' - - # Group Parameters - # For dimension=1: only 'p' is used - # For dimension=2: 'p1' and 'p2' are used - # For dimension='D3': none of p, p1, p2 are used - p: 10 # Cyclic group dimension (1D only) - - p1: 4 #10 # Height/rows dimension (2D only) - p2: 4 # Width/cols dimension (2D only) - - k: 2 # Sequence length + dimension: D3 + p: 10 + p1: 4 + p2: 4 + k: 5 batch_size: 1000 seed: 5 - - # Template Generation - # For dimension=1,2: 'mnist' | 'fourier' | 'gaussian' | 'onehot' - # For dimension='D3': 'onehot' | 'custom_fourier' - template_type: 'onehot' - mnist_label: 4 # MNIST digit (0-9), only if template_type='mnist' - n_freqs: 1 # Number of Fourier modes, only if template_type='fourier' - - # D3 custom_fourier template: powers for each irrep's Fourier coefficient - # D3 has 3 irreps with dimensions [1, 1, 2], so powers should have 3 values - # Large ratio between powers = clearer staircase steps - powers: [0., 2000., 400.] - - # Dataset Mode (offline training only) - mode: exhaustive # 'sampled' | 'exhaustive' + template_type: onehot + mnist_label: 4 + n_freqs: 1 + powers: + - 0.0 + - 2000.0 + - 400.0 + mode: exhaustive num_samples: 1000 - -# Model Configuration -# ------------------- model: - model_type: 'SequentialMLP' # 'QuadraticRNN' | 'SequentialMLP' - - hidden_dim: 600 # Hidden layer size - # Note: SequentialMLP may need larger values (e.g., 600) - - init_scale: 1.0e-2 # Weight initialization scale - # Larger k may need larger init_scale - - return_all_outputs: false # true = seq-to-seq guidance (for QuadraticRNN only) - # false = seq-to-one (final output only) - - transform_type: 'quadratic' # 'quadratic' | 'multiplicative' - # Only used for QuadraticRNN - -# Training Configuration -# ---------------------- + model_type: SequentialMLP + hidden_dim: 600 + init_scale: 1.0e-6 + return_all_outputs: false + transform_type: quadratic training: - mode: 'offline' # 'online' | 'offline' - - # Steps/Epochs - epochs: 3000 # Used when mode='offline' - num_steps: 100 #1000000 #500000 # Used when mode='online' - - # Optimizer - optimizer: 'per_neuron' #per_neuron' # 'auto' | 'adam' | 'hybrid' | 'per_neuron' - # 'auto' selects optimizer based on model: - # - SequentialMLP → 'per_neuron' (recommended) - # - QuadraticRNN → 'adam' - # 'hybrid' is QuadraticRNN-specific only - - learning_rate: 0.01 # Base learning rate - # Recommended settings: - # - adam: 1e-3 to 1e-4 - # - per_neuron (SequentialMLP): 1.0 (or 0.01 for D3) - # - hybrid: see scaling_factor - - betas: [0.9, 0.999] # Adam/hybrid beta parameters + mode: offline + epochs: 3000 + num_steps: 100 + optimizer: per_neuron + learning_rate: 0.001 + betas: + - 0.9 + - 0.999 weight_decay: 0.0 - - # Homogeneity-based scaling parameters - scaling_factor: -3 # For 'hybrid' optimizer only (QuadraticRNN) - degree: null # For 'per_neuron' optimizer: degree of homogeneity - # If null (default), auto-inferred from model: - # - SequentialMLP: uses k+1 (k = sequence length) - # - Other models: defaults to 2 - - # Training Dynamics + scaling_factor: -3 + degree: null grad_clip: 0.1 verbose_interval: 1000 - save_param_interval: 10 # Save params every N steps/epochs - # Set to null to only save initial & final (memory efficient for sweeps) - - # Early Stopping (optional) - # ------------------------- - # Stop training early when loss reduction reaches a threshold. - # Set to null to disable (train for full num_steps/epochs). - reduction_threshold: null # e.g., 0.99 = stop when 99% loss reduction achieved - # null = disabled (train for full steps/epochs) - -# Device -# ------ -device: cuda:1 # 'cuda' | 'cpu' - -# Analysis & Visualization -# ------------------------ + save_param_interval: 10 + reduction_threshold: null +device: cuda:1 analysis: - checkpoints: [0.0, 1.0] # Fraction of training for analysis + checkpoints: + - 0.0 + - 1.0 diff --git a/gagf/rnns/main.py b/gagf/rnns/main.py index 2fcff93..63982c0 100644 --- a/gagf/rnns/main.py +++ b/gagf/rnns/main.py @@ -555,6 +555,8 @@ def plot_power_spectrum_over_time_D3( template: np.ndarray, D3, k: int, + optimizer: str, + init_scale: float, save_path: str = None, num_samples_for_power: int = 100, num_checkpoints_to_sample: int = 50, @@ -570,6 +572,8 @@ def plot_power_spectrum_over_time_D3( template: Template array (group_order,) D3: DihedralGroup object from escnn k: Sequence length + optimizer: Optimizer name (e.g., 'per_neuron', 'adam') + init_scale: Initialization scale save_path: Path to save the plot num_samples_for_power: Number of samples to average power over num_checkpoints_to_sample: Number of checkpoints to sample for the evolution plot @@ -639,7 +643,7 @@ def plot_power_spectrum_over_time_D3( ax.set_xlabel('Epoch') ax.set_ylabel('Power') - ax.set_title(f'D3 Power Evolution Over Training (k={k})', fontsize=14) + ax.set_title(f'D3 Power Evolution Over Training (k={k}, {optimizer}, init={init_scale:.0e})', fontsize=14) ax.legend(loc='upper left', fontsize=8) ax.grid(True, alpha=0.3) @@ -777,6 +781,8 @@ def produce_plots_D3( ### ----- PLOT POWER SPECTRUM OVER TIME ----- ### print("\nPlotting power spectrum over time...") + optimizer = config['training']['optimizer'] + init_scale = config['model']['init_scale'] plot_power_spectrum_over_time_D3( model=model, param_hist=param_hist, @@ -785,6 +791,8 @@ def produce_plots_D3( template=template_D3, D3=D3, k=k, + optimizer=optimizer, + init_scale=init_scale, save_path=os.path.join(run_dir, "power_spectrum_analysis.pdf"), ) print(f" ✓ Saved {os.path.join(run_dir, 'power_spectrum_analysis.pdf')}") From b3208b9b880d0b7b34ee5b7f479d78d2c52bd49b Mon Sep 17 00:00:00 2001 From: Nina Miolane Date: Tue, 13 Jan 2026 22:16:42 +0000 Subject: [PATCH 12/30] bring back docs in config.yaml --- gagf/rnns/config.yaml | 132 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 107 insertions(+), 25 deletions(-) diff --git a/gagf/rnns/config.yaml b/gagf/rnns/config.yaml index 9b1ebb8..c83f25d 100644 --- a/gagf/rnns/config.yaml +++ b/gagf/rnns/config.yaml @@ -1,44 +1,126 @@ +# ============================================================================ +# Base Configuration File +# ============================================================================ +# This config supports both 1D and 2D modular addition tasks with either +# QuadraticRNN or SequentialMLP models. +# +# Quick Setup Guide: +# ------------------ +# 1D Task (C_p): Set dimension=1, specify p +# 2D Task (C_p1 x C_p2): Set dimension=2, specify p1 and p2 +# QuadraticRNN: Set model_type='QuadraticRNN' +# SequentialMLP: Set model_type='SequentialMLP' +# ============================================================================ + +# Data Configuration +# ------------------ data: - dimension: D3 - p: 10 - p1: 4 - p2: 4 - k: 5 + # Dimension: 1 for C_p (cyclic group), 2 for C_p1 x C_p2 (product group), 'D3' for Dihedral D3 + dimension: D3 # 1 | 2 | 'D3' + + # Group Parameters + # For dimension=1: only 'p' is used + # For dimension=2: 'p1' and 'p2' are used + # For dimension='D3': none of p, p1, p2 are used + p: 10 # Cyclic group dimension (1D only) + + p1: 4 #10 # Height/rows dimension (2D only) + p2: 4 # Width/cols dimension (2D only) + + k: 5 # Sequence length batch_size: 1000 seed: 5 + + # Template Generation + # For dimension=1,2: 'mnist' | 'fourier' | 'gaussian' | 'onehot' + # For dimension='D3': 'onehot' | 'custom_fourier' template_type: onehot - mnist_label: 4 - n_freqs: 1 + mnist_label: 4 # MNIST digit (0-9), only if template_type='mnist' + n_freqs: 1 # Number of Fourier modes, only if template_type='fourier' + + # D3 custom_fourier template: powers for each irrep's Fourier coefficient + # D3 has 3 irreps with dimensions [1, 1, 2], so powers should have 3 values + # Large ratio between powers = clearer staircase steps powers: - 0.0 - 2000.0 - 400.0 - mode: exhaustive + + # Dataset Mode (offline training only) + mode: exhaustive # 'sampled' | 'exhaustive' num_samples: 1000 + +# Model Configuration +# ------------------- model: - model_type: SequentialMLP - hidden_dim: 600 - init_scale: 1.0e-6 - return_all_outputs: false - transform_type: quadratic + model_type: SequentialMLP # 'QuadraticRNN' | 'SequentialMLP' + + hidden_dim: 600 # Hidden layer size + # Note: SequentialMLP may need larger values (e.g., 600) + + init_scale: 1.0e-6 # Weight initialization scale + # Larger k may need larger init_scale + + return_all_outputs: false # true = seq-to-seq guidance (for QuadraticRNN only) + # false = seq-to-one (final output only) + + transform_type: quadratic # 'quadratic' | 'multiplicative' + # Only used for QuadraticRNN + +# Training Configuration +# ---------------------- training: - mode: offline - epochs: 3000 - num_steps: 100 - optimizer: per_neuron - learning_rate: 0.001 + mode: offline # 'online' | 'offline' + + # Steps/Epochs + epochs: 3000 # Used when mode='offline' + num_steps: 100 #1000000 #500000 # Used when mode='online' + + # Optimizer + optimizer: per_neuron #per_neuron' # 'auto' | 'adam' | 'hybrid' | 'per_neuron' + # 'auto' selects optimizer based on model: + # - SequentialMLP → 'per_neuron' (recommended) + # - QuadraticRNN → 'adam' + # 'hybrid' is QuadraticRNN-specific only + + learning_rate: 0.001 # Base learning rate + # Recommended settings: + # - adam: 1e-3 to 1e-4 + # - per_neuron (SequentialMLP): 1.0 (or 0.01 for D3) + # - hybrid: see scaling_factor + betas: - 0.9 - - 0.999 + - 0.999 # Adam/hybrid beta parameters weight_decay: 0.0 - scaling_factor: -3 - degree: null + + # Homogeneity-based scaling parameters + scaling_factor: -3 # For 'hybrid' optimizer only (QuadraticRNN) + degree: null # For 'per_neuron' optimizer: degree of homogeneity + # If null (default), auto-inferred from model: + # - SequentialMLP: uses k+1 (k = sequence length) + # - Other models: defaults to 2 + + # Training Dynamics grad_clip: 0.1 verbose_interval: 1000 - save_param_interval: 10 - reduction_threshold: null -device: cuda:1 + save_param_interval: 10 # Save params every N steps/epochs + # Set to null to only save initial & final (memory efficient for sweeps) + + # Early Stopping (optional) + # ------------------------- + # Stop training early when loss reduction reaches a threshold. + # Set to null to disable (train for full num_steps/epochs). + reduction_threshold: null # e.g., 0.99 = stop when 99% loss reduction achieved + # null = disabled (train for full steps/epochs) + +# Device +# ------ +device: cuda:1 # 'cuda' | 'cpu' + +# Analysis & Visualization +# ------------------------ analysis: checkpoints: - 0.0 - - 1.0 + - 1.0 # Fraction of training for analysis From b09b293d6d9a95ee6ecb00d85cabacdb04f413ae Mon Sep 17 00:00:00 2001 From: Nina Miolane Date: Tue, 13 Jan 2026 22:17:18 +0000 Subject: [PATCH 13/30] rm leftover todos --- gagf/rnns/main.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gagf/rnns/main.py b/gagf/rnns/main.py index 63982c0..a562aba 100644 --- a/gagf/rnns/main.py +++ b/gagf/rnns/main.py @@ -827,8 +827,8 @@ def train_single_run(config: dict, run_dir: Path = None) -> dict: ### ----- GENERATE DATA ----- ### print("Generating data...") - dimension = config['data']['dimension'] # TODO(Nina): Here, it will be a string D3. - template_type = config['data']['template_type'] # TODO(Nina): Here, use a one-hot template for D3, i.e., a one-hot vector of length D3.order() = 6. + dimension = config['data']['dimension'] + template_type = config['data']['template_type'] if dimension == 1: # 1D template generation @@ -984,7 +984,7 @@ def train_single_run(config: dict, run_dir: Path = None) -> dict: transform_type=config['model']['transform_type'], ).to(device) elif model_type == 'SequentialMLP': - rnn_2d = SequentialMLP( #TODO(NiT): Rename rnn_2d, in both if loops, to model or something similar. + rnn_2d = SequentialMLP( p=p_flat, d=config['model']['hidden_dim'], template=template_torch, From 534d958c902c1c341e8912ce1bb50bba104128bd Mon Sep 17 00:00:00 2001 From: Nina Miolane Date: Tue, 13 Jan 2026 22:18:41 +0000 Subject: [PATCH 14/30] Rm leftover comments --- gagf/rnns/config.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gagf/rnns/config.yaml b/gagf/rnns/config.yaml index c83f25d..876ced0 100644 --- a/gagf/rnns/config.yaml +++ b/gagf/rnns/config.yaml @@ -74,16 +74,16 @@ training: # Steps/Epochs epochs: 3000 # Used when mode='offline' - num_steps: 100 #1000000 #500000 # Used when mode='online' + num_steps: 100 # Used when mode='online' # Optimizer - optimizer: per_neuron #per_neuron' # 'auto' | 'adam' | 'hybrid' | 'per_neuron' + optimizer: per_neuron # 'auto' | 'adam' | 'hybrid' | 'per_neuron' # 'auto' selects optimizer based on model: # - SequentialMLP → 'per_neuron' (recommended) # - QuadraticRNN → 'adam' # 'hybrid' is QuadraticRNN-specific only - learning_rate: 0.001 # Base learning rate + learning_rate: 0.001 # Base learning rate # Recommended settings: # - adam: 1e-3 to 1e-4 # - per_neuron (SequentialMLP): 1.0 (or 0.01 for D3) From 3039d8e6490a610335c16abd3de82caeef11e3c8 Mon Sep 17 00:00:00 2001 From: Nina Miolane Date: Wed, 14 Jan 2026 05:00:48 +0000 Subject: [PATCH 15/30] Config with adam to have a cleaner/slower jump --- gagf/rnns/config.yaml | 10 ++++---- gagf/rnns/main.py | 55 ++++++++++++++++++++++++++++++++++++++----- 2 files changed, 54 insertions(+), 11 deletions(-) diff --git a/gagf/rnns/config.yaml b/gagf/rnns/config.yaml index 876ced0..9da8bbd 100644 --- a/gagf/rnns/config.yaml +++ b/gagf/rnns/config.yaml @@ -27,7 +27,7 @@ data: p1: 4 #10 # Height/rows dimension (2D only) p2: 4 # Width/cols dimension (2D only) - k: 5 # Sequence length + k: 2 # Sequence length batch_size: 1000 seed: 5 @@ -58,7 +58,7 @@ model: hidden_dim: 600 # Hidden layer size # Note: SequentialMLP may need larger values (e.g., 600) - init_scale: 1.0e-6 # Weight initialization scale + init_scale: 2.0e-7 # Weight initialization scale # Larger k may need larger init_scale return_all_outputs: false # true = seq-to-seq guidance (for QuadraticRNN only) @@ -73,17 +73,17 @@ training: mode: offline # 'online' | 'offline' # Steps/Epochs - epochs: 3000 # Used when mode='offline' + epochs: 2000 # Used when mode='offline' num_steps: 100 # Used when mode='online' # Optimizer - optimizer: per_neuron # 'auto' | 'adam' | 'hybrid' | 'per_neuron' + optimizer: adam # 'auto' | 'adam' | 'hybrid' | 'per_neuron' # 'auto' selects optimizer based on model: # - SequentialMLP → 'per_neuron' (recommended) # - QuadraticRNN → 'adam' # 'hybrid' is QuadraticRNN-specific only - learning_rate: 0.001 # Base learning rate + learning_rate: 0.00005 # Base learning rate # Recommended settings: # - adam: 1e-3 to 1e-4 # - per_neuron (SequentialMLP): 1.0 (or 0.01 for D3) diff --git a/gagf/rnns/main.py b/gagf/rnns/main.py index a562aba..9856642 100644 --- a/gagf/rnns/main.py +++ b/gagf/rnns/main.py @@ -627,26 +627,69 @@ def plot_power_spectrum_over_time_D3( powers = powers / group_order model_powers[i] = np.mean(powers, axis=0) - # Create single plot for power evolution over training - fig, ax = plt.subplots(figsize=(8, 5)) + # Create 3 subplots: linear, log-x, log-log + fig, axes = plt.subplots(1, 3, figsize=(18, 5)) top_k = min(5, n_irreps) top_irrep_indices = np.argsort(template_power)[::-1][:top_k] colors_line = plt.cm.tab10(np.linspace(0, 1, top_k)) + + # Filter out zero epochs for log scales + valid_mask = np.array(epoch_numbers) > 0 + valid_epochs = np.array(epoch_numbers)[valid_mask] + valid_model_powers = model_powers[valid_mask, :] + + # Plot 1: Linear scales + ax = axes[0] for i, irrep_idx in enumerate(top_irrep_indices): power_values = model_powers[:, irrep_idx] ax.plot(epoch_numbers, power_values, '-', lw=2, color=colors_line[i], label=f'Irrep {irrep_idx} (dim={irreps[irrep_idx].size})') - # Add horizontal line for template power ax.axhline(template_power[irrep_idx], linestyle='--', alpha=0.5, color=colors_line[i]) - ax.set_xlabel('Epoch') ax.set_ylabel('Power') - ax.set_title(f'D3 Power Evolution Over Training (k={k}, {optimizer}, init={init_scale:.0e})', fontsize=14) - ax.legend(loc='upper left', fontsize=8) + ax.set_title('Linear Scales', fontsize=12) + ax.legend(loc='upper left', fontsize=7) ax.grid(True, alpha=0.3) + # Plot 2: Log x-axis only + ax = axes[1] + for i, irrep_idx in enumerate(top_irrep_indices): + power_values = valid_model_powers[:, irrep_idx] + ax.plot(valid_epochs, power_values, '-', lw=2, color=colors_line[i], + label=f'Irrep {irrep_idx} (dim={irreps[irrep_idx].size})') + ax.axhline(template_power[irrep_idx], linestyle='--', alpha=0.5, color=colors_line[i]) + ax.set_xscale('log') + ax.set_xlabel('Epoch (log scale)') + ax.set_ylabel('Power') + ax.set_title('Log X-axis', fontsize=12) + ax.legend(loc='upper left', fontsize=7) + ax.grid(True, alpha=0.3) + + # Plot 3: Log-log scales + ax = axes[2] + for i, irrep_idx in enumerate(top_irrep_indices): + power_values = valid_model_powers[:, irrep_idx] + # Filter out zero powers for log scale + power_mask = power_values > 0 + if np.any(power_mask): + ax.plot(valid_epochs[power_mask], power_values[power_mask], '-', lw=2, color=colors_line[i], + label=f'Irrep {irrep_idx} (dim={irreps[irrep_idx].size})') + if template_power[irrep_idx] > 0: + ax.axhline(template_power[irrep_idx], linestyle='--', alpha=0.5, color=colors_line[i]) + ax.set_xscale('log') + ax.set_yscale('log') + ax.set_xlabel('Epoch (log scale)') + ax.set_ylabel('Power (log scale)') + ax.set_title('Log-Log Scales', fontsize=12) + ax.legend(loc='upper left', fontsize=7) + ax.grid(True, alpha=0.3) + + # Overall title + fig.suptitle(f'D3 Power Evolution Over Training (k={k}, {optimizer}, init={init_scale:.0e})', + fontsize=14, fontweight='bold') + plt.tight_layout() if save_path: From 885f2dabcae27ae28920e07ac95eddf2343353aa Mon Sep 17 00:00:00 2001 From: Nina Miolane Date: Thu, 5 Feb 2026 13:42:51 +0000 Subject: [PATCH 16/30] combined plots scaling expts with d3 --- gagf/rnns/config.yaml | 8 +- gagf/rnns/create_combined_power_plot.py | 297 ++++++++++++++++++ gagf/rnns/create_combined_power_plot_k4_k5.py | 293 +++++++++++++++++ 3 files changed, 594 insertions(+), 4 deletions(-) create mode 100644 gagf/rnns/create_combined_power_plot.py create mode 100644 gagf/rnns/create_combined_power_plot_k4_k5.py diff --git a/gagf/rnns/config.yaml b/gagf/rnns/config.yaml index 9da8bbd..8b78cb8 100644 --- a/gagf/rnns/config.yaml +++ b/gagf/rnns/config.yaml @@ -27,7 +27,7 @@ data: p1: 4 #10 # Height/rows dimension (2D only) p2: 4 # Width/cols dimension (2D only) - k: 2 # Sequence length + k: 5 # Sequence length batch_size: 1000 seed: 5 @@ -58,7 +58,7 @@ model: hidden_dim: 600 # Hidden layer size # Note: SequentialMLP may need larger values (e.g., 600) - init_scale: 2.0e-7 # Weight initialization scale + init_scale: 4.5e-3 # Weight initialization scale # Larger k may need larger init_scale return_all_outputs: false # true = seq-to-seq guidance (for QuadraticRNN only) @@ -73,7 +73,7 @@ training: mode: offline # 'online' | 'offline' # Steps/Epochs - epochs: 2000 # Used when mode='offline' + epochs: 10000 # Used when mode='offline' num_steps: 100 # Used when mode='online' # Optimizer @@ -83,7 +83,7 @@ training: # - QuadraticRNN → 'adam' # 'hybrid' is QuadraticRNN-specific only - learning_rate: 0.00005 # Base learning rate + learning_rate: 0.00008 # Base learning rate # Recommended settings: # - adam: 1e-3 to 1e-4 # - per_neuron (SequentialMLP): 1.0 (or 0.01 for D3) diff --git a/gagf/rnns/create_combined_power_plot.py b/gagf/rnns/create_combined_power_plot.py new file mode 100644 index 0000000..2c68093 --- /dev/null +++ b/gagf/rnns/create_combined_power_plot.py @@ -0,0 +1,297 @@ +#!/usr/bin/env python3 +""" +Create a combined 4x3 plot showing power spectrum evolution for k=2,3,4,5. +Each row corresponds to a k value, each column to a scale type (linear, log-x, log-log). +""" + +import numpy as np +import torch +import matplotlib.pyplot as plt +import yaml +import os +from pathlib import Path +from escnn.group import DihedralGroup +from group_agf.binary_action_learning.group_fourier_transform import compute_group_fourier_coef +from gagf.rnns.model import SequentialMLP +from gagf.rnns.datamodule import build_modular_addition_sequence_dataset_D3 + +def load_run_data(run_dir): + """Load all necessary data from a run directory.""" + run_dir = Path(run_dir) + + # Load config + with open(run_dir / "config.yaml") as f: + config = yaml.safe_load(f) + + # Load template + template = np.load(run_dir / "template.npy") + + # Load parameter history + param_hist = torch.load(run_dir / "param_history.pt", map_location='cpu') + + # Get k value + k = config['data']['k'] + + # Create model + D3 = DihedralGroup(N=3) + group_order = D3.order() + template_t = torch.tensor(template, dtype=torch.float32) + model = SequentialMLP( + p=group_order, + d=config['model']['hidden_dim'], + template=template_t, + k=k, + init_scale=config['model']['init_scale'], + ) + + # Generate evaluation data + X_eval, Y_eval, _ = build_modular_addition_sequence_dataset_D3( + template, k, mode="sampled", num_samples=100, return_all_outputs=False + ) + X_eval_t = torch.tensor(X_eval, dtype=torch.float32) + + # Compute template power + irreps = D3.irreps() + n_irreps = len(irreps) + template_power = np.zeros(n_irreps) + for i, irrep in enumerate(irreps): + fourier_coef = compute_group_fourier_coef(D3, template, irrep) + template_power[i] = irrep.size * np.trace(fourier_coef.conj().T @ fourier_coef) + template_power = template_power / group_order + + # Compute param_save_indices + save_interval = config['training'].get('save_param_interval', 10) or 10 + param_save_indices = [i * save_interval for i in range(len(param_hist))] + + return { + 'config': config, + 'template': template, + 'param_hist': param_hist, + 'param_save_indices': param_save_indices, + 'model': model, + 'X_eval_t': X_eval_t, + 'D3': D3, + 'template_power': template_power, + 'k': k, + } + +def compute_power_evolution(run_data, num_checkpoints_to_sample=50, num_samples_for_power=100): + """Compute power evolution over training.""" + model = run_data['model'] + param_hist = run_data['param_hist'] + param_save_indices = run_data['param_save_indices'] + X_eval_t = run_data['X_eval_t'] + D3 = run_data['D3'] + + irreps = D3.irreps() + n_irreps = len(irreps) + + # Sample checkpoints + total_checkpoints = len(param_hist) + if total_checkpoints <= num_checkpoints_to_sample: + sampled_ckpt_indices = list(range(total_checkpoints)) + else: + sampled_ckpt_indices = np.linspace(0, total_checkpoints - 1, num_checkpoints_to_sample, dtype=int).tolist() + + epoch_numbers = [param_save_indices[i] for i in sampled_ckpt_indices] + + # Compute model output power at each checkpoint + model_powers = np.zeros((len(sampled_ckpt_indices), n_irreps)) + X_subset = X_eval_t[:num_samples_for_power] + + for i, ckpt_idx in enumerate(sampled_ckpt_indices): + model.load_state_dict(param_hist[ckpt_idx]) + model.eval() + + with torch.no_grad(): + outputs = model(X_subset) + outputs_np = outputs.cpu().numpy() + + powers = np.zeros((len(outputs_np), n_irreps)) + for sample_i, output in enumerate(outputs_np): + for irrep_i, irrep in enumerate(irreps): + fourier_coef = compute_group_fourier_coef(D3, output, irrep) + powers[sample_i, irrep_i] = irrep.size * np.trace(fourier_coef.conj().T @ fourier_coef) + powers = powers / D3.order() + model_powers[i] = np.mean(powers, axis=0) + + return epoch_numbers, model_powers + +def create_combined_plot(run_dirs_dict, save_path): + """Create 4x3 combined plot.""" + # run_dirs_dict: {k: run_dir} + + fig = plt.figure(figsize=(18, 20)) + gs = fig.add_gridspec(5, 3, height_ratios=[0.15, 1, 1, 1, 1], hspace=0.3, wspace=0.3) + + # Top row for common parameters + ax_title = fig.add_subplot(gs[0, :]) + ax_title.axis('off') + + # Load first run to get common parameters + first_run_dir = list(run_dirs_dict.values())[0] + first_run_data = load_run_data(first_run_dir) + common_config = first_run_data['config'] + + # Extract common parameters + hidden_dim = common_config['model']['hidden_dim'] + mode = common_config['data']['mode'] + optimizer = common_config['training']['optimizer'] + + # Create title with common parameters + title_text = f'D3 Power Spectrum Evolution Over Training\n' + title_text += f'Common Parameters: hidden_dim={hidden_dim}, mode={mode}, optimizer={optimizer}' + ax_title.text(0.5, 0.5, title_text, ha='center', va='center', fontsize=14, fontweight='bold', + transform=ax_title.transAxes) + + # Create axes for plots with shared x-axes for each column + axes = [] + # First create all axes in the first row (no sharing yet) + for col in range(3): + axes.append([fig.add_subplot(gs[1, col])]) + + # Then create remaining rows sharing x-axis with first row in each column + for row in range(1, 4): + for col in range(3): + axes[col].append(fig.add_subplot(gs[row+1, col], sharex=axes[col][0])) + + # Convert to row-major format for easier indexing + axes = np.array([[axes[col][row] for col in range(3)] for row in range(4)]) + + k_values = sorted(run_dirs_dict.keys()) + + for row_idx, k in enumerate(k_values): + run_dir = run_dirs_dict[k] + print(f"Loading k={k} from {run_dir}...") + run_data = load_run_data(run_dir) + + epoch_numbers, model_powers = compute_power_evolution(run_data) + template_power = run_data['template_power'] + D3 = run_data['D3'] + irreps = D3.irreps() + config = run_data['config'] + + # Get row-specific parameters + learning_rate = config['training']['learning_rate'] + init_scale = config['model']['init_scale'] + + # Format init_scale nicely + if init_scale >= 1e-3: + init_scale_str = f"{init_scale:.0e}" + elif init_scale >= 1e-6: + init_scale_str = f"{init_scale:.1e}" + else: + init_scale_str = f"{init_scale:.2e}" + + # Format learning_rate nicely + if learning_rate >= 1e-3: + lr_str = f"{learning_rate:.0e}" + elif learning_rate >= 1e-6: + lr_str = f"{learning_rate:.1e}" + else: + lr_str = f"{learning_rate:.2e}" + + # Row label + row_label = f'k={k}, lr={lr_str}, init_scale={init_scale_str}' + + # Get top irreps + top_k_irreps = min(5, len(irreps)) + top_irrep_indices = np.argsort(template_power)[::-1][:top_k_irreps] + colors_line = plt.cm.tab10(np.linspace(0, 1, top_k_irreps)) + + # Filter for log scales + valid_mask = np.array(epoch_numbers) > 0 + valid_epochs = np.array(epoch_numbers)[valid_mask] + valid_model_powers = model_powers[valid_mask, :] + + # Column 1: Linear scales + ax = axes[row_idx, 0] + for i, irrep_idx in enumerate(top_irrep_indices): + power_values = model_powers[:, irrep_idx] + ax.plot(epoch_numbers, power_values, '-', lw=2, color=colors_line[i], + label=f'Irrep {irrep_idx} (dim={irreps[irrep_idx].size})') + ax.axhline(template_power[irrep_idx], linestyle='--', alpha=0.5, color=colors_line[i]) + if row_idx == 3: # Only bottom row shows xlabel + ax.set_xlabel('Epoch') + ax.set_ylabel('Power') + if row_idx == 0: + col_title = 'Linear Scales' + else: + col_title = '' + ax.set_title(f'{col_title}\n{row_label}', fontsize=12 if row_idx == 0 else 10) + ax.legend(loc='upper left', fontsize=7) + ax.grid(True, alpha=0.3) + # Hide x-axis labels for non-bottom rows (they're shared) + if row_idx < 3: + ax.tick_params(labelbottom=False) + + # Column 2: Log x-axis + ax = axes[row_idx, 1] + for i, irrep_idx in enumerate(top_irrep_indices): + power_values = valid_model_powers[:, irrep_idx] + ax.plot(valid_epochs, power_values, '-', lw=2, color=colors_line[i], + label=f'Irrep {irrep_idx} (dim={irreps[irrep_idx].size})') + ax.axhline(template_power[irrep_idx], linestyle='--', alpha=0.5, color=colors_line[i]) + ax.set_xscale('log') + if row_idx == 3: # Only bottom row shows xlabel + ax.set_xlabel('Epoch (log scale)') + ax.set_ylabel('Power') + if row_idx == 0: + col_title = 'Log X-axis' + else: + col_title = '' + ax.set_title(f'{col_title}\n{row_label}', fontsize=12 if row_idx == 0 else 10) + ax.legend(loc='upper left', fontsize=7) + ax.grid(True, alpha=0.3) + # Hide x-axis labels for non-bottom rows (they're shared) + if row_idx < 3: + ax.tick_params(labelbottom=False) + + # Column 3: Log-log scales + ax = axes[row_idx, 2] + for i, irrep_idx in enumerate(top_irrep_indices): + power_values = valid_model_powers[:, irrep_idx] + power_mask = power_values > 0 + if np.any(power_mask): + ax.plot(valid_epochs[power_mask], power_values[power_mask], '-', lw=2, color=colors_line[i], + label=f'Irrep {irrep_idx} (dim={irreps[irrep_idx].size})') + if template_power[irrep_idx] > 0: + ax.axhline(template_power[irrep_idx], linestyle='--', alpha=0.5, color=colors_line[i]) + ax.set_xscale('log') + ax.set_yscale('log') + if row_idx == 3: # Only bottom row shows xlabel + ax.set_xlabel('Epoch (log scale)') + ax.set_ylabel('Power (log scale)') + if row_idx == 0: + col_title = 'Log-Log Scales' + else: + col_title = '' + ax.set_title(f'{col_title}\n{row_label}', fontsize=12 if row_idx == 0 else 10) + ax.legend(loc='upper left', fontsize=7) + ax.grid(True, alpha=0.3) + # Hide x-axis labels for non-bottom rows (they're shared) + if row_idx < 3: + ax.tick_params(labelbottom=False) + + plt.savefig(save_path, bbox_inches='tight', dpi=150) + print(f"\n✓ Saved combined plot to {save_path}") + plt.close() + +if __name__ == "__main__": + # Map k values to run directories + # k=2, k=3: 10000 epochs + # k=4, k=5: 20000 epochs + run_dirs_dict = { + 2: "runs/20260114_134641", + 3: "runs/20260114_134800", + 4: "runs/20260114_141256", + 5: "runs/20260114_141951", + } + + # Verify all directories exist + for k, run_dir in run_dirs_dict.items(): + if not os.path.exists(run_dir): + print(f"Warning: {run_dir} does not exist for k={k}") + + save_path = "runs/combined_power_spectrum_4x3.pdf" + create_combined_plot(run_dirs_dict, save_path) diff --git a/gagf/rnns/create_combined_power_plot_k4_k5.py b/gagf/rnns/create_combined_power_plot_k4_k5.py new file mode 100644 index 0000000..e9d2e16 --- /dev/null +++ b/gagf/rnns/create_combined_power_plot_k4_k5.py @@ -0,0 +1,293 @@ +#!/usr/bin/env python3 +""" +Create a combined 2x3 plot showing power spectrum evolution for k=4 and k=5. +Each row corresponds to a k value, each column to a scale type (linear, log-x, log-log). +""" + +import numpy as np +import torch +import matplotlib.pyplot as plt +import yaml +import os +from pathlib import Path +from escnn.group import DihedralGroup +from group_agf.binary_action_learning.group_fourier_transform import compute_group_fourier_coef +from gagf.rnns.model import SequentialMLP +from gagf.rnns.datamodule import build_modular_addition_sequence_dataset_D3 + +def load_run_data(run_dir): + """Load all necessary data from a run directory.""" + run_dir = Path(run_dir) + + # Load config + with open(run_dir / "config.yaml") as f: + config = yaml.safe_load(f) + + # Load template + template = np.load(run_dir / "template.npy") + + # Load parameter history + param_hist = torch.load(run_dir / "param_history.pt", map_location='cpu') + + # Get k value + k = config['data']['k'] + + # Create model + D3 = DihedralGroup(N=3) + group_order = D3.order() + template_t = torch.tensor(template, dtype=torch.float32) + model = SequentialMLP( + p=group_order, + d=config['model']['hidden_dim'], + template=template_t, + k=k, + init_scale=config['model']['init_scale'], + ) + + # Generate evaluation data + X_eval, Y_eval, _ = build_modular_addition_sequence_dataset_D3( + template, k, mode="sampled", num_samples=100, return_all_outputs=False + ) + X_eval_t = torch.tensor(X_eval, dtype=torch.float32) + + # Compute template power + irreps = D3.irreps() + n_irreps = len(irreps) + template_power = np.zeros(n_irreps) + for i, irrep in enumerate(irreps): + fourier_coef = compute_group_fourier_coef(D3, template, irrep) + template_power[i] = irrep.size * np.trace(fourier_coef.conj().T @ fourier_coef) + template_power = template_power / group_order + + # Compute param_save_indices + save_interval = config['training'].get('save_param_interval', 10) or 10 + param_save_indices = [i * save_interval for i in range(len(param_hist))] + + return { + 'config': config, + 'template': template, + 'param_hist': param_hist, + 'param_save_indices': param_save_indices, + 'model': model, + 'X_eval_t': X_eval_t, + 'D3': D3, + 'template_power': template_power, + 'k': k, + } + +def compute_power_evolution(run_data, num_checkpoints_to_sample=50, num_samples_for_power=100): + """Compute power evolution over training.""" + model = run_data['model'] + param_hist = run_data['param_hist'] + param_save_indices = run_data['param_save_indices'] + X_eval_t = run_data['X_eval_t'] + D3 = run_data['D3'] + + irreps = D3.irreps() + n_irreps = len(irreps) + + # Sample checkpoints + total_checkpoints = len(param_hist) + if total_checkpoints <= num_checkpoints_to_sample: + sampled_ckpt_indices = list(range(total_checkpoints)) + else: + sampled_ckpt_indices = np.linspace(0, total_checkpoints - 1, num_checkpoints_to_sample, dtype=int).tolist() + + epoch_numbers = [param_save_indices[i] for i in sampled_ckpt_indices] + + # Compute model output power at each checkpoint + model_powers = np.zeros((len(sampled_ckpt_indices), n_irreps)) + X_subset = X_eval_t[:num_samples_for_power] + + for i, ckpt_idx in enumerate(sampled_ckpt_indices): + model.load_state_dict(param_hist[ckpt_idx]) + model.eval() + + with torch.no_grad(): + outputs = model(X_subset) + outputs_np = outputs.cpu().numpy() + + powers = np.zeros((len(outputs_np), n_irreps)) + for sample_i, output in enumerate(outputs_np): + for irrep_i, irrep in enumerate(irreps): + fourier_coef = compute_group_fourier_coef(D3, output, irrep) + powers[sample_i, irrep_i] = irrep.size * np.trace(fourier_coef.conj().T @ fourier_coef) + powers = powers / D3.order() + model_powers[i] = np.mean(powers, axis=0) + + return epoch_numbers, model_powers + +def create_combined_plot(run_dirs_dict, save_path): + """Create 2x3 combined plot.""" + # run_dirs_dict: {k: run_dir} + + fig = plt.figure(figsize=(18, 10)) + gs = fig.add_gridspec(3, 3, height_ratios=[0.15, 1, 1], hspace=0.3, wspace=0.3) + + # Top row for common parameters + ax_title = fig.add_subplot(gs[0, :]) + ax_title.axis('off') + + # Load first run to get common parameters + first_run_dir = list(run_dirs_dict.values())[0] + first_run_data = load_run_data(first_run_dir) + common_config = first_run_data['config'] + + # Extract common parameters + hidden_dim = common_config['model']['hidden_dim'] + mode = common_config['data']['mode'] + optimizer = common_config['training']['optimizer'] + + # Create title with common parameters + title_text = f'D3 Power Spectrum Evolution Over Training\n' + title_text += f'Common Parameters: hidden_dim={hidden_dim}, mode={mode}, optimizer={optimizer}' + ax_title.text(0.5, 0.5, title_text, ha='center', va='center', fontsize=14, fontweight='bold', + transform=ax_title.transAxes) + + # Create axes for plots with shared x-axes for each column + axes = [] + # First create all axes in the first row (no sharing yet) + for col in range(3): + axes.append([fig.add_subplot(gs[1, col])]) + + # Then create remaining rows sharing x-axis with first row in each column + for row in range(1, 2): + for col in range(3): + axes[col].append(fig.add_subplot(gs[row+1, col], sharex=axes[col][0])) + + # Convert to row-major format for easier indexing + axes = np.array([[axes[col][row] for col in range(3)] for row in range(2)]) + + k_values = sorted(run_dirs_dict.keys()) + + for row_idx, k in enumerate(k_values): + run_dir = run_dirs_dict[k] + print(f"Loading k={k} from {run_dir}...") + run_data = load_run_data(run_dir) + + epoch_numbers, model_powers = compute_power_evolution(run_data) + template_power = run_data['template_power'] + D3 = run_data['D3'] + irreps = D3.irreps() + config = run_data['config'] + + # Get row-specific parameters + learning_rate = config['training']['learning_rate'] + init_scale = config['model']['init_scale'] + + # Format init_scale nicely + if init_scale >= 1e-3: + init_scale_str = f"{init_scale:.0e}" + elif init_scale >= 1e-6: + init_scale_str = f"{init_scale:.1e}" + else: + init_scale_str = f"{init_scale:.2e}" + + # Format learning_rate nicely + if learning_rate >= 1e-3: + lr_str = f"{learning_rate:.0e}" + elif learning_rate >= 1e-6: + lr_str = f"{learning_rate:.1e}" + else: + lr_str = f"{learning_rate:.2e}" + + # Row label + row_label = f'k={k}, lr={lr_str}, init_scale={init_scale_str}' + + # Get top irreps + top_k_irreps = min(5, len(irreps)) + top_irrep_indices = np.argsort(template_power)[::-1][:top_k_irreps] + colors_line = plt.cm.tab10(np.linspace(0, 1, top_k_irreps)) + + # Filter for log scales + valid_mask = np.array(epoch_numbers) > 0 + valid_epochs = np.array(epoch_numbers)[valid_mask] + valid_model_powers = model_powers[valid_mask, :] + + # Column 1: Linear scales + ax = axes[row_idx, 0] + for i, irrep_idx in enumerate(top_irrep_indices): + power_values = model_powers[:, irrep_idx] + ax.plot(epoch_numbers, power_values, '-', lw=2, color=colors_line[i], + label=f'Irrep {irrep_idx} (dim={irreps[irrep_idx].size})') + ax.axhline(template_power[irrep_idx], linestyle='--', alpha=0.5, color=colors_line[i]) + if row_idx == 1: # Only bottom row shows xlabel + ax.set_xlabel('Epoch') + ax.set_ylabel('Power') + if row_idx == 0: + col_title = 'Linear Scales' + else: + col_title = '' + ax.set_title(f'{col_title}\n{row_label}', fontsize=12 if row_idx == 0 else 10) + ax.legend(loc='upper left', fontsize=7) + ax.grid(True, alpha=0.3) + # Hide x-axis labels for non-bottom rows (they're shared) + if row_idx < 1: + ax.tick_params(labelbottom=False) + + # Column 2: Log x-axis + ax = axes[row_idx, 1] + for i, irrep_idx in enumerate(top_irrep_indices): + power_values = valid_model_powers[:, irrep_idx] + ax.plot(valid_epochs, power_values, '-', lw=2, color=colors_line[i], + label=f'Irrep {irrep_idx} (dim={irreps[irrep_idx].size})') + ax.axhline(template_power[irrep_idx], linestyle='--', alpha=0.5, color=colors_line[i]) + ax.set_xscale('log') + if row_idx == 1: # Only bottom row shows xlabel + ax.set_xlabel('Epoch (log scale)') + ax.set_ylabel('Power') + if row_idx == 0: + col_title = 'Log X-axis' + else: + col_title = '' + ax.set_title(f'{col_title}\n{row_label}', fontsize=12 if row_idx == 0 else 10) + ax.legend(loc='upper left', fontsize=7) + ax.grid(True, alpha=0.3) + # Hide x-axis labels for non-bottom rows (they're shared) + if row_idx < 1: + ax.tick_params(labelbottom=False) + + # Column 3: Log-log scales + ax = axes[row_idx, 2] + for i, irrep_idx in enumerate(top_irrep_indices): + power_values = valid_model_powers[:, irrep_idx] + power_mask = power_values > 0 + if np.any(power_mask): + ax.plot(valid_epochs[power_mask], power_values[power_mask], '-', lw=2, color=colors_line[i], + label=f'Irrep {irrep_idx} (dim={irreps[irrep_idx].size})') + if template_power[irrep_idx] > 0: + ax.axhline(template_power[irrep_idx], linestyle='--', alpha=0.5, color=colors_line[i]) + ax.set_xscale('log') + ax.set_yscale('log') + if row_idx == 1: # Only bottom row shows xlabel + ax.set_xlabel('Epoch (log scale)') + ax.set_ylabel('Power (log scale)') + if row_idx == 0: + col_title = 'Log-Log Scales' + else: + col_title = '' + ax.set_title(f'{col_title}\n{row_label}', fontsize=12 if row_idx == 0 else 10) + ax.legend(loc='upper left', fontsize=7) + ax.grid(True, alpha=0.3) + # Hide x-axis labels for non-bottom rows (they're shared) + if row_idx < 1: + ax.tick_params(labelbottom=False) + + plt.savefig(save_path, bbox_inches='tight', dpi=150) + print(f"\n✓ Saved combined plot to {save_path}") + plt.close() + +if __name__ == "__main__": + # Map k values to run directories + run_dirs_dict = { + 4: "runs/20260114_170639", + 5: "runs/20260114_170913", + } + + # Verify all directories exist + for k, run_dir in run_dirs_dict.items(): + if not os.path.exists(run_dir): + print(f"Warning: {run_dir} does not exist for k={k}") + + save_path = "runs/combined_power_spectrum_k4_k5_2x3.pdf" + create_combined_plot(run_dirs_dict, save_path) From b3f9b041e1afc15e973fd9ef9744c0d9bb9223af Mon Sep 17 00:00:00 2001 From: Nina Miolane Date: Thu, 5 Feb 2026 15:46:09 +0000 Subject: [PATCH 17/30] Added 85 unit-tests to protect codebase --- gagf/rnns/test/__init__.py | 1 + gagf/rnns/test/test_datamodule.py | 262 ++++++++++++++++++ gagf/rnns/test/test_model.py | 193 +++++++++++++ gagf/rnns/test/test_optimizers.py | 158 +++++++++++ gagf/rnns/test/test_utils.py | 208 ++++++++++++++ .../binary_action_learning/test/__init__.py | 1 + .../test/test_datasets.py | 148 ++++++++++ .../test/test_group_fourier_transform.py | 7 +- .../test/test_models.py | 134 +++++++++ .../binary_action_learning/test/test_power.py | 4 +- .../test/test_templates.py | 149 ++++++++++ 11 files changed, 1258 insertions(+), 7 deletions(-) create mode 100644 gagf/rnns/test/__init__.py create mode 100644 gagf/rnns/test/test_datamodule.py create mode 100644 gagf/rnns/test/test_model.py create mode 100644 gagf/rnns/test/test_optimizers.py create mode 100644 gagf/rnns/test/test_utils.py create mode 100644 group_agf/binary_action_learning/test/__init__.py create mode 100644 group_agf/binary_action_learning/test/test_datasets.py create mode 100644 group_agf/binary_action_learning/test/test_models.py create mode 100644 group_agf/binary_action_learning/test/test_templates.py diff --git a/gagf/rnns/test/__init__.py b/gagf/rnns/test/__init__.py new file mode 100644 index 0000000..da760c8 --- /dev/null +++ b/gagf/rnns/test/__init__.py @@ -0,0 +1 @@ +# Tests for gagf.rnns module diff --git a/gagf/rnns/test/test_datamodule.py b/gagf/rnns/test/test_datamodule.py new file mode 100644 index 0000000..0028b47 --- /dev/null +++ b/gagf/rnns/test/test_datamodule.py @@ -0,0 +1,262 @@ +"""Tests for gagf.rnns.datamodule module.""" + +import pytest +import numpy as np +import torch + +from gagf.rnns.datamodule import ( + build_modular_addition_sequence_dataset_1d, + build_modular_addition_sequence_dataset_2d, + build_modular_addition_sequence_dataset_D3, + OnlineModularAdditionDataset1D, + OnlineModularAdditionDataset2D, +) + + +class TestBuildModularAdditionSequenceDataset1D: + """Tests for build_modular_addition_sequence_dataset_1d.""" + + @pytest.fixture + def template_1d(self): + """Create a simple 1D template.""" + p = 7 + template = np.random.randn(p).astype(np.float32) + return template + + def test_output_shape_sampled(self, template_1d): + """Test output shapes in sampled mode.""" + p = len(template_1d) + k = 3 + num_samples = 100 + + X, Y, sequence = build_modular_addition_sequence_dataset_1d( + p=p, template=template_1d, k=k, mode="sampled", num_samples=num_samples + ) + + assert X.shape == (num_samples, k, p), f"X shape mismatch: {X.shape}" + assert Y.shape == (num_samples, p), f"Y shape mismatch: {Y.shape}" + assert sequence.shape == (num_samples, k), f"sequence shape mismatch: {sequence.shape}" + + def test_output_shape_exhaustive(self, template_1d): + """Test output shapes in exhaustive mode.""" + p = len(template_1d) + k = 2 + + X, Y, sequence = build_modular_addition_sequence_dataset_1d( + p=p, template=template_1d, k=k, mode="exhaustive" + ) + + expected_n = p ** k + assert X.shape == (expected_n, k, p) + assert Y.shape == (expected_n, p) + assert sequence.shape == (expected_n, k) + + def test_output_shape_return_all_outputs(self, template_1d): + """Test output shapes with return_all_outputs=True.""" + p = len(template_1d) + k = 4 + num_samples = 50 + + X, Y, sequence = build_modular_addition_sequence_dataset_1d( + p=p, template=template_1d, k=k, mode="sampled", + num_samples=num_samples, return_all_outputs=True + ) + + # Y should have k-1 outputs (one after each pair of tokens) + assert X.shape == (num_samples, k, p) + assert Y.shape == (num_samples, k - 1, p) + assert sequence.shape == (num_samples, k) + + def test_rolling_correctness(self, template_1d): + """Test that X values are rolled versions of template.""" + p = len(template_1d) + k = 2 + + X, Y, sequence = build_modular_addition_sequence_dataset_1d( + p=p, template=template_1d, k=k, mode="exhaustive" + ) + + # Check first sample + shift_0 = int(sequence[0, 0]) + expected_x0 = np.roll(template_1d, shift_0) + np.testing.assert_allclose(X[0, 0, :], expected_x0, rtol=1e-5) + + +class TestBuildModularAdditionSequenceDataset2D: + """Tests for build_modular_addition_sequence_dataset_2d.""" + + @pytest.fixture + def template_2d(self): + """Create a simple 2D template.""" + p1, p2 = 5, 5 + template = np.random.randn(p1, p2).astype(np.float32) + return template + + def test_output_shape_sampled(self, template_2d): + """Test output shapes in sampled mode.""" + p1, p2 = template_2d.shape + k = 3 + num_samples = 100 + + X, Y, sequence_xy = build_modular_addition_sequence_dataset_2d( + p1=p1, p2=p2, template=template_2d, k=k, + mode="sampled", num_samples=num_samples + ) + + p_flat = p1 * p2 + assert X.shape == (num_samples, k, p_flat), f"X shape mismatch: {X.shape}" + assert Y.shape == (num_samples, p_flat), f"Y shape mismatch: {Y.shape}" + assert sequence_xy.shape == (num_samples, k, 2), f"sequence_xy shape mismatch: {sequence_xy.shape}" + + def test_output_shape_exhaustive(self, template_2d): + """Test output shapes in exhaustive mode.""" + p1, p2 = 3, 3 # Use small dimensions for exhaustive + template = np.random.randn(p1, p2).astype(np.float32) + k = 2 + + X, Y, sequence_xy = build_modular_addition_sequence_dataset_2d( + p1=p1, p2=p2, template=template, k=k, mode="exhaustive" + ) + + expected_n = (p1 * p2) ** k + p_flat = p1 * p2 + assert X.shape == (expected_n, k, p_flat) + assert Y.shape == (expected_n, p_flat) + assert sequence_xy.shape == (expected_n, k, 2) + + +class TestBuildModularAdditionSequenceDatasetD3: + """Tests for build_modular_addition_sequence_dataset_D3.""" + + @pytest.fixture + def template_d3(self): + """Create a template for D3 group (order 6).""" + group_order = 6 + template = np.random.randn(group_order).astype(np.float32) + return template + + def test_output_shape_sampled(self, template_d3): + """Test output shapes in sampled mode.""" + k = 3 + num_samples = 100 + group_order = len(template_d3) + + X, Y, sequence = build_modular_addition_sequence_dataset_D3( + template=template_d3, k=k, mode="sampled", num_samples=num_samples + ) + + assert X.shape == (num_samples, k, group_order), f"X shape mismatch: {X.shape}" + assert Y.shape == (num_samples, group_order), f"Y shape mismatch: {Y.shape}" + assert sequence.shape == (num_samples, k), f"sequence shape mismatch: {sequence.shape}" + + def test_output_shape_exhaustive(self, template_d3): + """Test output shapes in exhaustive mode.""" + k = 2 + group_order = len(template_d3) + n_elements = group_order # D3 has 6 elements + + X, Y, sequence = build_modular_addition_sequence_dataset_D3( + template=template_d3, k=k, mode="exhaustive" + ) + + expected_n = n_elements ** k + assert X.shape == (expected_n, k, group_order) + assert Y.shape == (expected_n, group_order) + assert sequence.shape == (expected_n, k) + + def test_output_shape_return_all_outputs(self, template_d3): + """Test output shapes with return_all_outputs=True.""" + k = 4 + num_samples = 50 + group_order = len(template_d3) + + X, Y, sequence = build_modular_addition_sequence_dataset_D3( + template=template_d3, k=k, mode="sampled", + num_samples=num_samples, return_all_outputs=True + ) + + assert X.shape == (num_samples, k, group_order) + assert Y.shape == (num_samples, k - 1, group_order) + assert sequence.shape == (num_samples, k) + + +class TestOnlineModularAdditionDataset1D: + """Tests for OnlineModularAdditionDataset1D.""" + + def test_batch_shape(self): + """Test that batches have correct shapes.""" + p = 7 + k = 3 + batch_size = 16 + template = np.random.randn(p).astype(np.float32) + + dataset = OnlineModularAdditionDataset1D( + p=p, template=template, k=k, batch_size=batch_size, device="cpu" + ) + + # Get first batch + iterator = iter(dataset) + X, Y = next(iterator) + + assert X.shape == (batch_size, k, p), f"X shape mismatch: {X.shape}" + assert Y.shape == (batch_size, p), f"Y shape mismatch: {Y.shape}" + + def test_batch_shape_return_all_outputs(self): + """Test batch shapes with return_all_outputs=True.""" + p = 7 + k = 4 + batch_size = 16 + template = np.random.randn(p).astype(np.float32) + + dataset = OnlineModularAdditionDataset1D( + p=p, template=template, k=k, batch_size=batch_size, + device="cpu", return_all_outputs=True + ) + + iterator = iter(dataset) + X, Y = next(iterator) + + assert X.shape == (batch_size, k, p) + assert Y.shape == (batch_size, k - 1, p) + + +class TestOnlineModularAdditionDataset2D: + """Tests for OnlineModularAdditionDataset2D.""" + + def test_batch_shape(self): + """Test that batches have correct shapes.""" + p1, p2 = 5, 5 + k = 3 + batch_size = 16 + template = np.random.randn(p1, p2).astype(np.float32) + + dataset = OnlineModularAdditionDataset2D( + p1=p1, p2=p2, template=template, k=k, + batch_size=batch_size, device="cpu" + ) + + iterator = iter(dataset) + X, Y = next(iterator) + + p_flat = p1 * p2 + assert X.shape == (batch_size, k, p_flat), f"X shape mismatch: {X.shape}" + assert Y.shape == (batch_size, p_flat), f"Y shape mismatch: {Y.shape}" + + def test_batch_shape_return_all_outputs(self): + """Test batch shapes with return_all_outputs=True.""" + p1, p2 = 5, 5 + k = 4 + batch_size = 16 + template = np.random.randn(p1, p2).astype(np.float32) + + dataset = OnlineModularAdditionDataset2D( + p1=p1, p2=p2, template=template, k=k, + batch_size=batch_size, device="cpu", return_all_outputs=True + ) + + iterator = iter(dataset) + X, Y = next(iterator) + + p_flat = p1 * p2 + assert X.shape == (batch_size, k, p_flat) + assert Y.shape == (batch_size, k - 1, p_flat) diff --git a/gagf/rnns/test/test_model.py b/gagf/rnns/test/test_model.py new file mode 100644 index 0000000..5cdfac1 --- /dev/null +++ b/gagf/rnns/test/test_model.py @@ -0,0 +1,193 @@ +"""Tests for gagf.rnns.model module.""" + +import pytest +import torch +import numpy as np + +from gagf.rnns.model import QuadraticRNN, SequentialMLP + + +class TestQuadraticRNN: + """Tests for the QuadraticRNN model.""" + + @pytest.fixture + def default_params(self): + """Default parameters for QuadraticRNN.""" + p = 7 + d = 10 + template = torch.randn(p) + return {"p": p, "d": d, "template": template} + + def test_output_shape_basic(self, default_params): + """Test that output shape is correct for basic forward pass.""" + model = QuadraticRNN(**default_params) + batch_size = 8 + k = 4 + p = default_params["p"] + + x = torch.randn(batch_size, k, p) + y = model(x) + + assert y.shape == (batch_size, p), f"Expected shape {(batch_size, p)}, got {y.shape}" + + def test_output_shape_return_all_outputs(self, default_params): + """Test output shape when return_all_outputs=True.""" + params = {**default_params, "return_all_outputs": True} + model = QuadraticRNN(**params) + batch_size = 8 + k = 5 + p = default_params["p"] + + x = torch.randn(batch_size, k, p) + y = model(x) + + # With return_all_outputs=True, we get k-1 outputs (after first two tokens) + expected_shape = (batch_size, k - 1, p) + assert y.shape == expected_shape, f"Expected shape {expected_shape}, got {y.shape}" + + def test_output_shape_k_equals_2(self, default_params): + """Test output shape when k=2 (minimum sequence length).""" + model = QuadraticRNN(**default_params) + batch_size = 4 + k = 2 + p = default_params["p"] + + x = torch.randn(batch_size, k, p) + y = model(x) + + assert y.shape == (batch_size, p) + + def test_quadratic_transform(self, default_params): + """Test that quadratic transform is applied correctly.""" + params = {**default_params, "transform_type": "quadratic"} + model = QuadraticRNN(**params) + + batch_size = 2 + k = 3 + p = default_params["p"] + + x = torch.randn(batch_size, k, p) + y = model(x) + + # Output should be finite + assert torch.isfinite(y).all(), "Output contains non-finite values" + + def test_multiplicative_transform(self, default_params): + """Test that multiplicative transform is applied correctly.""" + params = {**default_params, "transform_type": "multiplicative"} + model = QuadraticRNN(**params) + + batch_size = 2 + k = 3 + p = default_params["p"] + + x = torch.randn(batch_size, k, p) + y = model(x) + + # Output should be finite + assert torch.isfinite(y).all(), "Output contains non-finite values" + + def test_invalid_transform_type(self, default_params): + """Test that invalid transform type raises an error.""" + params = {**default_params, "transform_type": "invalid"} + model = QuadraticRNN(**params) + + x = torch.randn(2, 3, default_params["p"]) + + with pytest.raises(ValueError, match="Invalid transform type"): + model(x) + + def test_minimum_sequence_length_error(self, default_params): + """Test that k<2 raises an assertion error.""" + model = QuadraticRNN(**default_params) + + x = torch.randn(2, 1, default_params["p"]) # k=1 + + with pytest.raises(AssertionError, match="Sequence length must be at least 2"): + model(x) + + def test_gradient_flow(self, default_params): + """Test that gradients flow through the model.""" + model = QuadraticRNN(**default_params) + + x = torch.randn(4, 3, default_params["p"], requires_grad=True) + y = model(x) + loss = y.sum() + loss.backward() + + # Check that gradients exist for all parameters + for name, param in model.named_parameters(): + assert param.grad is not None, f"No gradient for {name}" + assert torch.isfinite(param.grad).all(), f"Non-finite gradient for {name}" + + +class TestSequentialMLP: + """Tests for the SequentialMLP model.""" + + @pytest.fixture + def default_params(self): + """Default parameters for SequentialMLP.""" + p = 7 + d = 10 + k = 3 + template = torch.randn(p) + return {"p": p, "d": d, "k": k, "template": template} + + def test_output_shape(self, default_params): + """Test that output shape is correct.""" + model = SequentialMLP(**default_params) + batch_size = 8 + k = default_params["k"] + p = default_params["p"] + + x = torch.randn(batch_size, k, p) + y = model(x) + + assert y.shape == (batch_size, p), f"Expected shape {(batch_size, p)}, got {y.shape}" + + def test_k_mismatch_error(self, default_params): + """Test that mismatched k raises an error.""" + model = SequentialMLP(**default_params) + + wrong_k = default_params["k"] + 1 + x = torch.randn(2, wrong_k, default_params["p"]) + + with pytest.raises(AssertionError, match="Expected k="): + model(x) + + def test_different_k_values(self): + """Test model with different k values.""" + p = 5 + d = 8 + template = torch.randn(p) + + for k in [2, 3, 4, 5]: + model = SequentialMLP(p=p, d=d, k=k, template=template) + x = torch.randn(4, k, p) + y = model(x) + + assert y.shape == (4, p), f"Failed for k={k}" + + def test_gradient_flow(self, default_params): + """Test that gradients flow through the model.""" + model = SequentialMLP(**default_params) + + x = torch.randn(4, default_params["k"], default_params["p"], requires_grad=True) + y = model(x) + loss = y.sum() + loss.backward() + + # Check that gradients exist for all parameters + for name, param in model.named_parameters(): + assert param.grad is not None, f"No gradient for {name}" + assert torch.isfinite(param.grad).all(), f"Non-finite gradient for {name}" + + def test_k_power_activation(self, default_params): + """Test that k-th power activation produces finite results.""" + model = SequentialMLP(**default_params) + + # Use small inputs to avoid overflow with k-th power + x = torch.randn(4, default_params["k"], default_params["p"]) * 0.1 + y = model(x) + + assert torch.isfinite(y).all(), "Output contains non-finite values" diff --git a/gagf/rnns/test/test_optimizers.py b/gagf/rnns/test/test_optimizers.py new file mode 100644 index 0000000..2d24dce --- /dev/null +++ b/gagf/rnns/test/test_optimizers.py @@ -0,0 +1,158 @@ +"""Tests for gagf.rnns.optimizers module.""" + +import pytest +import torch + +from gagf.rnns.model import SequentialMLP, QuadraticRNN +from gagf.rnns.optimizers import PerNeuronScaledSGD, HybridRNNOptimizer + + +class TestPerNeuronScaledSGD: + """Tests for PerNeuronScaledSGD optimizer.""" + + @pytest.fixture + def sequential_mlp(self): + """Create a SequentialMLP model.""" + p = 5 + d = 10 + k = 3 + template = torch.randn(p) + return SequentialMLP(p=p, d=d, k=k, template=template) + + def test_step_updates_parameters(self, sequential_mlp): + """Test that optimizer step updates model parameters.""" + optimizer = PerNeuronScaledSGD(sequential_mlp, lr=0.01) + + # Store initial parameters + initial_w_in = sequential_mlp.W_in.clone() + initial_w_out = sequential_mlp.W_out.clone() + + # Forward pass and backward + x = torch.randn(4, sequential_mlp.k, sequential_mlp.p) + y = sequential_mlp(x) + loss = y.sum() + loss.backward() + + # Optimizer step + optimizer.step() + + # Parameters should have changed + assert not torch.allclose(sequential_mlp.W_in, initial_w_in), "W_in not updated" + assert not torch.allclose(sequential_mlp.W_out, initial_w_out), "W_out not updated" + + def test_degree_inference(self, sequential_mlp): + """Test that degree is correctly inferred from model.""" + optimizer = PerNeuronScaledSGD(sequential_mlp, lr=0.01) + + # Degree should be k + 1 for SequentialMLP + expected_degree = sequential_mlp.k + 1 + assert optimizer.defaults['degree'] == expected_degree + + def test_explicit_degree(self, sequential_mlp): + """Test that explicit degree overrides inference.""" + explicit_degree = 5 + optimizer = PerNeuronScaledSGD(sequential_mlp, lr=0.01, degree=explicit_degree) + + assert optimizer.defaults['degree'] == explicit_degree + + def test_finite_gradients_after_step(self, sequential_mlp): + """Test that gradients remain finite after optimization step.""" + optimizer = PerNeuronScaledSGD(sequential_mlp, lr=0.01) + + x = torch.randn(4, sequential_mlp.k, sequential_mlp.p) + y = sequential_mlp(x) + loss = y.sum() + loss.backward() + + optimizer.step() + + # All parameters should still be finite + for name, param in sequential_mlp.named_parameters(): + assert torch.isfinite(param).all(), f"Non-finite values in {name}" + + +class TestHybridRNNOptimizer: + """Tests for HybridRNNOptimizer.""" + + @pytest.fixture + def quadratic_rnn(self): + """Create a QuadraticRNN model.""" + p = 5 + d = 10 + template = torch.randn(p) + return QuadraticRNN(p=p, d=d, template=template) + + def test_step_updates_all_parameters(self, quadratic_rnn): + """Test that optimizer step updates all model parameters.""" + optimizer = HybridRNNOptimizer(quadratic_rnn, lr=0.01, adam_lr=0.001) + + # Store initial parameters + initial_params = { + name: param.clone() + for name, param in quadratic_rnn.named_parameters() + } + + # Forward pass and backward + x = torch.randn(4, 3, quadratic_rnn.p) + y = quadratic_rnn(x) + loss = y.sum() + loss.backward() + + # Optimizer step + optimizer.step() + + # All parameters should have changed + for name, param in quadratic_rnn.named_parameters(): + assert not torch.allclose(param, initial_params[name]), f"{name} not updated" + + def test_scaled_sgd_for_mlp_params(self, quadratic_rnn): + """Test that W_in, W_drive, W_out use scaled SGD.""" + optimizer = HybridRNNOptimizer(quadratic_rnn, lr=0.01) + + # The optimizer should have two param groups + assert len(optimizer.param_groups) == 2 + + # First group should be scaled_sgd + assert optimizer.param_groups[0]['type'] == 'scaled_sgd' + # Second group should be adam + assert optimizer.param_groups[1]['type'] == 'adam' + + def test_adam_for_w_mix(self, quadratic_rnn): + """Test that W_mix uses Adam optimizer.""" + optimizer = HybridRNNOptimizer(quadratic_rnn, lr=0.01, adam_lr=0.001) + + # W_mix should be in the adam group + adam_params = list(optimizer.param_groups[1]['params']) + assert len(adam_params) == 1 + assert adam_params[0] is quadratic_rnn.W_mix + + def test_finite_parameters_after_step(self, quadratic_rnn): + """Test that parameters remain finite after optimization.""" + optimizer = HybridRNNOptimizer(quadratic_rnn, lr=0.01, adam_lr=0.001) + + x = torch.randn(4, 3, quadratic_rnn.p) + y = quadratic_rnn(x) + loss = y.sum() + loss.backward() + + optimizer.step() + + # All parameters should be finite + for name, param in quadratic_rnn.named_parameters(): + assert torch.isfinite(param).all(), f"Non-finite values in {name}" + + def test_multiple_steps(self, quadratic_rnn): + """Test that multiple optimization steps work correctly.""" + optimizer = HybridRNNOptimizer(quadratic_rnn, lr=0.01, adam_lr=0.001) + + for _ in range(5): + optimizer.zero_grad() + x = torch.randn(4, 3, quadratic_rnn.p) + y = quadratic_rnn(x) + loss = y.sum() + loss.backward() + optimizer.step() + + # All parameters should still be finite after multiple steps + for name, param in quadratic_rnn.named_parameters(): + assert torch.isfinite(param).all(), f"Non-finite values in {name}" diff --git a/gagf/rnns/test/test_utils.py b/gagf/rnns/test/test_utils.py new file mode 100644 index 0000000..d55ebce --- /dev/null +++ b/gagf/rnns/test/test_utils.py @@ -0,0 +1,208 @@ +"""Tests for gagf.rnns.utils module.""" + +import pytest +import numpy as np + +from gagf.rnns.utils import ( + get_power_1d, + get_power_2d_adele, + topk_template_freqs_1d, + topk_template_freqs, +) + + +class TestGetPower1D: + """Tests for get_power_1d function.""" + + def test_output_shape(self): + """Test that output shape is correct.""" + p = 10 + signal = np.random.randn(p) + + power, freqs = get_power_1d(signal) + + expected_len = p // 2 + 1 + assert power.shape == (expected_len,), f"power shape mismatch: {power.shape}" + assert freqs.shape == (expected_len,), f"freqs shape mismatch: {freqs.shape}" + + def test_parseval_theorem(self): + """Test that Parseval's theorem holds (total power ≈ norm squared).""" + p = 16 + signal = np.random.randn(p) + + power, _ = get_power_1d(signal) + total_power = np.sum(power) + norm_squared = np.linalg.norm(signal) ** 2 + + np.testing.assert_allclose( + total_power, norm_squared, rtol=1e-6, + err_msg="Parseval's theorem violated" + ) + + def test_parseval_theorem_odd_length(self): + """Test Parseval's theorem for odd-length signals.""" + p = 15 + signal = np.random.randn(p) + + power, _ = get_power_1d(signal) + total_power = np.sum(power) + norm_squared = np.linalg.norm(signal) ** 2 + + np.testing.assert_allclose( + total_power, norm_squared, rtol=1e-6, + err_msg="Parseval's theorem violated for odd length" + ) + + def test_dc_component(self): + """Test that DC component power is correct for constant signal.""" + p = 8 + constant_value = 3.0 + signal = np.full(p, constant_value) + + power, freqs = get_power_1d(signal) + + # DC component should contain all the power for constant signal + expected_dc_power = constant_value ** 2 * p + np.testing.assert_allclose(power[0], expected_dc_power, rtol=1e-6) + + # All other components should be zero + assert np.allclose(power[1:], 0, atol=1e-10) + + +class TestGetPower2DAdele: + """Tests for get_power_2d_adele function.""" + + def test_output_shape(self): + """Test that output shape is correct.""" + M, N = 8, 10 + signal = np.random.randn(M, N) + + freqs_u, freqs_v, power = get_power_2d_adele(signal) + + expected_power_shape = (M, N // 2 + 1) + assert power.shape == expected_power_shape, f"power shape mismatch: {power.shape}" + assert freqs_u.shape == (M,), f"freqs_u shape mismatch: {freqs_u.shape}" + assert freqs_v.shape == (N // 2 + 1,), f"freqs_v shape mismatch: {freqs_v.shape}" + + def test_output_shape_no_freq(self): + """Test output when no_freq=True.""" + M, N = 8, 10 + signal = np.random.randn(M, N) + + result = get_power_2d_adele(signal, no_freq=True) + + # Should only return power + expected_shape = (M, N // 2 + 1) + assert result.shape == expected_shape + + def test_parseval_theorem(self): + """Test that Parseval's theorem holds.""" + M, N = 12, 12 + signal = np.random.randn(M, N) + + power = get_power_2d_adele(signal, no_freq=True) + total_power = np.sum(power) + norm_squared = np.linalg.norm(signal) ** 2 + + np.testing.assert_allclose( + total_power, norm_squared, rtol=1e-6, + err_msg="Parseval's theorem violated for 2D" + ) + + def test_parseval_theorem_rectangular(self): + """Test Parseval's theorem for rectangular arrays.""" + M, N = 7, 11 # Both odd + signal = np.random.randn(M, N) + + power = get_power_2d_adele(signal, no_freq=True) + total_power = np.sum(power) + norm_squared = np.linalg.norm(signal) ** 2 + + np.testing.assert_allclose( + total_power, norm_squared, rtol=1e-6, + err_msg="Parseval's theorem violated for rectangular array" + ) + + +class TestTopkTemplateFreqs1D: + """Tests for topk_template_freqs_1d function.""" + + def test_returns_top_k(self): + """Test that function returns exactly K frequencies.""" + p = 16 + K = 3 + template = np.random.randn(p) + + top_freqs = topk_template_freqs_1d(template, K) + + assert len(top_freqs) == K, f"Expected {K} frequencies, got {len(top_freqs)}" + + def test_returns_sorted_by_power(self): + """Test that frequencies are sorted by descending power.""" + p = 16 + K = 5 + template = np.random.randn(p) + + top_freqs = topk_template_freqs_1d(template, K) + power, _ = get_power_1d(template) + + # Get powers for returned frequencies + returned_powers = [power[f] for f in top_freqs] + + # Should be in descending order + assert returned_powers == sorted(returned_powers, reverse=True) + + def test_empty_for_zero_signal(self): + """Test that zero signal with high min_power returns empty list.""" + p = 8 + template = np.zeros(p) + + top_freqs = topk_template_freqs_1d(template, K=3, min_power=1e-10) + + assert top_freqs == [] + + def test_handles_k_larger_than_freqs(self): + """Test behavior when K is larger than available frequencies.""" + p = 6 + K = 10 # More than available frequencies + template = np.random.randn(p) + + top_freqs = topk_template_freqs_1d(template, K) + + # Should return at most p//2 + 1 frequencies + assert len(top_freqs) <= p // 2 + 1 + + +class TestTopkTemplateFreqs: + """Tests for topk_template_freqs function (2D).""" + + def test_returns_top_k(self): + """Test that function returns exactly K frequency pairs.""" + p1, p2 = 8, 8 + K = 3 + template = np.random.randn(p1, p2) + + top_freqs = topk_template_freqs(template, K) + + assert len(top_freqs) == K, f"Expected {K} frequency pairs, got {len(top_freqs)}" + + def test_returns_tuples(self): + """Test that returned values are (kx, ky) tuples.""" + p1, p2 = 8, 8 + K = 3 + template = np.random.randn(p1, p2) + + top_freqs = topk_template_freqs(template, K) + + for freq in top_freqs: + assert isinstance(freq, tuple), f"Expected tuple, got {type(freq)}" + assert len(freq) == 2, f"Expected 2-tuple, got {len(freq)}-tuple" + + def test_empty_for_zero_signal(self): + """Test that zero signal returns empty list.""" + p1, p2 = 6, 6 + template = np.zeros((p1, p2)) + + top_freqs = topk_template_freqs(template, K=3, min_power=1e-10) + + assert top_freqs == [] diff --git a/group_agf/binary_action_learning/test/__init__.py b/group_agf/binary_action_learning/test/__init__.py new file mode 100644 index 0000000..fd76427 --- /dev/null +++ b/group_agf/binary_action_learning/test/__init__.py @@ -0,0 +1 @@ +# Tests for group_agf.binary_action_learning module diff --git a/group_agf/binary_action_learning/test/test_datasets.py b/group_agf/binary_action_learning/test/test_datasets.py new file mode 100644 index 0000000..cca6aba --- /dev/null +++ b/group_agf/binary_action_learning/test/test_datasets.py @@ -0,0 +1,148 @@ +"""Tests for group_agf.binary_action_learning.datasets module.""" + +import pytest +import numpy as np +import torch + +from group_agf.binary_action_learning.datasets import ( + cn_dataset, + cnxcn_dataset, + group_dataset, + move_dataset_to_device_and_flatten, +) + + +class TestCnDataset: + """Tests for cn_dataset function.""" + + def test_output_shape(self): + """Test that output shapes are correct.""" + group_size = 7 + template = np.random.randn(group_size) + + X, Y = cn_dataset(template) + + n_samples = group_size ** 2 + assert X.shape == (n_samples, 2, group_size), f"X shape mismatch: {X.shape}" + assert Y.shape == (n_samples, group_size), f"Y shape mismatch: {Y.shape}" + + def test_modular_addition_property(self): + """Test that Y is the rolled template by (a+b) mod p.""" + group_size = 5 + template = np.arange(group_size).astype(float) # [0, 1, 2, 3, 4] + + X, Y = cn_dataset(template) + + # Check a specific case: a=1, b=2 -> q=(1+2)%5=3 + # Index = a * group_size + b = 1 * 5 + 2 = 7 + idx = 1 * group_size + 2 + expected_y = np.roll(template, 3) # rolled by 3 + np.testing.assert_allclose(Y[idx], expected_y) + + def test_covers_all_pairs(self): + """Test that all pairs (a, b) are covered.""" + group_size = 4 + template = np.random.randn(group_size) + + X, Y = cn_dataset(template) + + # Should have exactly group_size^2 samples + assert X.shape[0] == group_size ** 2 + + +class TestCnxcnDataset: + """Tests for cnxcn_dataset function.""" + + def test_output_shape(self): + """Test that output shapes are correct.""" + image_length = 4 + template = np.random.randn(image_length * image_length) + + X, Y = cnxcn_dataset(template) + + n_samples = image_length ** 4 + n_features = image_length * image_length + assert X.shape == (n_samples, 2, n_features), f"X shape mismatch: {X.shape}" + assert Y.shape == (n_samples, n_features), f"Y shape mismatch: {Y.shape}" + + def test_covers_all_combinations(self): + """Test that all combinations are covered.""" + image_length = 3 + template = np.random.randn(image_length * image_length) + + X, Y = cnxcn_dataset(template) + + expected_n = image_length ** 4 + assert X.shape[0] == expected_n + + +class TestGroupDataset: + """Tests for group_dataset function.""" + + @pytest.fixture + def dihedral_group(self): + """Create a DihedralGroup for testing.""" + from escnn.group import DihedralGroup + return DihedralGroup(N=3) # D3 + + def test_output_shape(self, dihedral_group): + """Test that output shapes are correct for D3.""" + group_order = dihedral_group.order() # 6 for D3 + template = np.random.randn(group_order) + + X, Y = group_dataset(dihedral_group, template) + + n_samples = group_order ** 2 + assert X.shape == (n_samples, 2, group_order), f"X shape mismatch: {X.shape}" + assert Y.shape == (n_samples, group_order), f"Y shape mismatch: {Y.shape}" + + def test_template_length_mismatch_error(self, dihedral_group): + """Test that mismatched template length raises error.""" + wrong_size = dihedral_group.order() + 1 + template = np.random.randn(wrong_size) + + with pytest.raises(AssertionError): + group_dataset(dihedral_group, template) + + +class TestMoveDatasetToDeviceAndFlatten: + """Tests for move_dataset_to_device_and_flatten function.""" + + def test_output_shape_and_type(self): + """Test that output shapes and types are correct.""" + group_size = 5 + n_samples = 10 + + X = np.random.randn(n_samples, 2, group_size) + Y = np.random.randn(n_samples, group_size) + + X_tensor, Y_tensor, device = move_dataset_to_device_and_flatten(X, Y, device="cpu") + + assert isinstance(X_tensor, torch.Tensor) + assert isinstance(Y_tensor, torch.Tensor) + assert X_tensor.shape == (n_samples, 2 * group_size) + assert Y_tensor.shape == (n_samples, group_size) + + def test_flattening(self): + """Test that X is correctly flattened.""" + group_size = 4 + n_samples = 5 + + X = np.arange(n_samples * 2 * group_size).reshape(n_samples, 2, group_size).astype(float) + Y = np.random.randn(n_samples, group_size) + + X_tensor, Y_tensor, device = move_dataset_to_device_and_flatten(X, Y, device="cpu") + + # Check first sample + expected_flat = np.concatenate([X[0, 0, :], X[0, 1, :]]) + np.testing.assert_allclose(X_tensor[0].numpy(), expected_flat) + + def test_device_cpu(self): + """Test explicit CPU device.""" + X = np.random.randn(5, 2, 4) + Y = np.random.randn(5, 4) + + X_tensor, Y_tensor, device = move_dataset_to_device_and_flatten(X, Y, device="cpu") + + assert X_tensor.device.type == "cpu" + assert Y_tensor.device.type == "cpu" diff --git a/group_agf/binary_action_learning/test/test_group_fourier_transform.py b/group_agf/binary_action_learning/test/test_group_fourier_transform.py index afd3b95..4e46b65 100644 --- a/group_agf/binary_action_learning/test/test_group_fourier_transform.py +++ b/group_agf/binary_action_learning/test/test_group_fourier_transform.py @@ -2,7 +2,7 @@ import pytest from escnn.group import Octahedral -from group_agf.binary_action_learning.datasets import generate_fixed_group_template +from group_agf.binary_action_learning.templates import fixed_group_template from group_agf.binary_action_learning.group_fourier_transform import ( compute_group_fourier_transform, compute_group_inverse_fourier_transform) @@ -30,7 +30,7 @@ def test_fourier_inverse_is_identity(): seed = 42 # Generate template with nontrivial spectrum - template = generate_fixed_group_template(group, seed=seed, fourier_coef_diag_values=[100.0, 20.0, 0.0, 0.0, 0.0]) + template = fixed_group_template(group, fourier_coef_diag_values=[100.0, 20.0, 0.0, 0.0, 0.0]) # Forward Fourier transform fourier_transform = compute_group_fourier_transform(group, template) @@ -55,9 +55,6 @@ def test_fourier_inverse_is_identity(): assert np.allclose(ft, ft_rec, atol=1e-10), \ f"Fourier transform failed at index {i}! max diff: {np.max(np.abs(ft - ft_rec))}" print(f'diff at index {i}: {np.max(np.abs(ft - ft_rec))}') - #print(f'diff: {(np.abs(fourier_transform - fourier_transform_reconstructed))}') - - raise Exception("Stop here to check the max diff.") if __name__ == "__main__": test_fourier_inverse_is_identity() diff --git a/group_agf/binary_action_learning/test/test_models.py b/group_agf/binary_action_learning/test/test_models.py new file mode 100644 index 0000000..5f4714c --- /dev/null +++ b/group_agf/binary_action_learning/test/test_models.py @@ -0,0 +1,134 @@ +"""Tests for group_agf.binary_action_learning.models module.""" + +import pytest +import torch +import numpy as np + +from group_agf.binary_action_learning.models import TwoLayerNet + + +class TestTwoLayerNet: + """Tests for the TwoLayerNet model.""" + + @pytest.fixture + def default_params(self): + """Default parameters for TwoLayerNet.""" + return {"group_size": 6, "hidden_size": 20} + + def test_output_shape(self, default_params): + """Test that output shape is correct.""" + model = TwoLayerNet(**default_params) + batch_size = 8 + group_size = default_params["group_size"] + + # Input is flattened: (batch, 2 * group_size) + x = torch.randn(batch_size, 2 * group_size) + y = model(x) + + assert y.shape == (batch_size, group_size), f"Expected shape {(batch_size, group_size)}, got {y.shape}" + + def test_square_nonlinearity(self, default_params): + """Test that square nonlinearity produces finite results.""" + params = {**default_params, "nonlinearity": "square"} + model = TwoLayerNet(**params) + + x = torch.randn(4, 2 * default_params["group_size"]) + y = model(x) + + assert torch.isfinite(y).all(), "Output contains non-finite values" + + def test_relu_nonlinearity(self, default_params): + """Test that relu nonlinearity produces finite results.""" + params = {**default_params, "nonlinearity": "relu"} + model = TwoLayerNet(**params) + + x = torch.randn(4, 2 * default_params["group_size"]) + y = model(x) + + assert torch.isfinite(y).all(), "Output contains non-finite values" + + def test_tanh_nonlinearity(self, default_params): + """Test that tanh nonlinearity produces finite results.""" + params = {**default_params, "nonlinearity": "tanh"} + model = TwoLayerNet(**params) + + x = torch.randn(4, 2 * default_params["group_size"]) + y = model(x) + + assert torch.isfinite(y).all(), "Output contains non-finite values" + + def test_gelu_nonlinearity(self, default_params): + """Test that gelu nonlinearity produces finite results.""" + params = {**default_params, "nonlinearity": "gelu"} + model = TwoLayerNet(**params) + + x = torch.randn(4, 2 * default_params["group_size"]) + y = model(x) + + assert torch.isfinite(y).all(), "Output contains non-finite values" + + def test_linear_nonlinearity(self, default_params): + """Test that linear (no activation) produces finite results.""" + params = {**default_params, "nonlinearity": "linear"} + model = TwoLayerNet(**params) + + x = torch.randn(4, 2 * default_params["group_size"]) + y = model(x) + + assert torch.isfinite(y).all(), "Output contains non-finite values" + + def test_invalid_nonlinearity(self, default_params): + """Test that invalid nonlinearity raises an error.""" + params = {**default_params, "nonlinearity": "invalid"} + model = TwoLayerNet(**params) + + x = torch.randn(4, 2 * default_params["group_size"]) + + with pytest.raises(ValueError, match="Invalid nonlinearity"): + model(x) + + def test_gradient_flow(self, default_params): + """Test that gradients flow through the model.""" + model = TwoLayerNet(**default_params) + + x = torch.randn(4, 2 * default_params["group_size"], requires_grad=True) + y = model(x) + loss = y.sum() + loss.backward() + + # Check that gradients exist for all parameters + for name, param in model.named_parameters(): + assert param.grad is not None, f"No gradient for {name}" + assert torch.isfinite(param.grad).all(), f"Non-finite gradient for {name}" + + def test_default_hidden_size(self): + """Test that default hidden_size is computed correctly.""" + group_size = 8 + model = TwoLayerNet(group_size=group_size) + + # Default hidden_size should be 50 * group_size + assert model.hidden_size == 50 * group_size + + def test_output_scale(self, default_params): + """Test that output_scale affects the output magnitude.""" + scale_small = 0.1 + scale_large = 10.0 + + model_small = TwoLayerNet(**default_params, output_scale=scale_small) + model_large = TwoLayerNet(**default_params, output_scale=scale_large) + + # Same random seed for reproducibility + torch.manual_seed(42) + x = torch.randn(4, 2 * default_params["group_size"]) + + # Initialize both models with same weights + torch.manual_seed(42) + model_small = TwoLayerNet(**default_params, output_scale=scale_small) + torch.manual_seed(42) + model_large = TwoLayerNet(**default_params, output_scale=scale_large) + + y_small = model_small(x) + y_large = model_large(x) + + # Output with larger scale should have larger absolute values on average + assert y_large.abs().mean() > y_small.abs().mean() diff --git a/group_agf/binary_action_learning/test/test_power.py b/group_agf/binary_action_learning/test/test_power.py index bde3420..3757719 100644 --- a/group_agf/binary_action_learning/test/test_power.py +++ b/group_agf/binary_action_learning/test/test_power.py @@ -1,7 +1,7 @@ import numpy as np from escnn.group import Octahedral -from group_agf.binary_action_learning.datasets import generate_fixed_group_template +from group_agf.binary_action_learning.templates import fixed_group_template from group_agf.binary_action_learning.power import GroupPower @@ -12,7 +12,7 @@ def test_power_custom_template(): seed = 42 powers = [0., 20.0, 20.0, 100.0, 0.0] # on irreps [1, 3, 3, 2, 1] fourier_coef_diag_values = [np.sqrt(group.order()*p / dim**2) for p, dim in zip(powers, irrep_sizes)] - template = generate_fixed_group_template(group, seed=seed, fourier_coef_diag_values=fourier_coef_diag_values) + template = fixed_group_template(group, fourier_coef_diag_values=fourier_coef_diag_values) gp = GroupPower(template, group) power = gp.power diff --git a/group_agf/binary_action_learning/test/test_templates.py b/group_agf/binary_action_learning/test/test_templates.py new file mode 100644 index 0000000..9bcd48a --- /dev/null +++ b/group_agf/binary_action_learning/test/test_templates.py @@ -0,0 +1,149 @@ +"""Tests for group_agf.binary_action_learning.templates module.""" + +import pytest +import numpy as np + +from group_agf.binary_action_learning.templates import ( + one_hot, + fixed_cn_template, + fixed_cnxcn_template, + fixed_group_template, +) + + +class TestOneHot: + """Tests for one_hot function.""" + + def test_output_shape(self): + """Test that output shape is correct.""" + p = 7 + template = one_hot(p) + + assert template.shape == (p,), f"Expected shape ({p},), got {template.shape}" + + def test_mean_centered(self): + """Test that the template is mean-centered.""" + p = 10 + template = one_hot(p) + + np.testing.assert_allclose(template.mean(), 0, atol=1e-10) + + def test_has_spike(self): + """Test that template has a spike at index 1.""" + p = 5 + template = one_hot(p) + + # The spike value should be 10 - mean + zeroth_freq = 10 / p # Mean of array with value 10 at index 1 + expected_spike_value = 10 - zeroth_freq + + np.testing.assert_allclose(template[1], expected_spike_value, rtol=1e-5) + + +class TestFixedCnTemplate: + """Tests for fixed_cn_template function.""" + + def test_output_shape(self): + """Test that output shape is correct.""" + group_size = 8 + fourier_coef_mags = [0, 5, 3, 2, 1] # Include DC and some frequencies + + template = fixed_cn_template(group_size, fourier_coef_mags) + + assert template.shape == (group_size,), f"Expected shape ({group_size},), got {template.shape}" + + def test_mean_centered(self): + """Test that the template is mean-centered.""" + group_size = 10 + fourier_coef_mags = [0, 5, 3, 2] + + template = fixed_cn_template(group_size, fourier_coef_mags) + + np.testing.assert_allclose(template.mean(), 0, atol=1e-10) + + def test_real_valued(self): + """Test that the template is real-valued.""" + group_size = 8 + fourier_coef_mags = [0, 5, 3] + + template = fixed_cn_template(group_size, fourier_coef_mags) + + # Template should be real (no imaginary component) + assert np.isreal(template).all() + + +class TestFixedCnxcnTemplate: + """Tests for fixed_cnxcn_template function.""" + + def test_output_shape(self): + """Test that output shape is correct (flattened).""" + image_length = 6 + fourier_coef_mags = [0, 5, 3, 2] # DC and some frequencies + + template = fixed_cnxcn_template(image_length, fourier_coef_mags) + + expected_size = image_length * image_length + assert template.shape == (expected_size,), f"Expected shape ({expected_size},), got {template.shape}" + + def test_mean_centered(self): + """Test that the template is mean-centered.""" + image_length = 5 + fourier_coef_mags = [0, 5, 3] + + template = fixed_cnxcn_template(image_length, fourier_coef_mags) + + np.testing.assert_allclose(template.mean(), 0, atol=1e-10) + + def test_real_valued(self): + """Test that the template is real-valued.""" + image_length = 4 + fourier_coef_mags = [0, 5] + + template = fixed_cnxcn_template(image_length, fourier_coef_mags) + + assert np.isreal(template).all() + + +class TestFixedGroupTemplate: + """Tests for fixed_group_template function.""" + + @pytest.fixture + def dihedral_group(self): + """Create a DihedralGroup for testing.""" + from escnn.group import DihedralGroup + return DihedralGroup(N=3) # D3 has 5 irreps + + def test_output_shape(self, dihedral_group): + """Test that output shape matches group order.""" + group_order = dihedral_group.order() # 6 for D3 + num_irreps = len(list(dihedral_group.irreps())) # 5 for D3 + fourier_coef_diag_values = [1.0] * num_irreps + + template = fixed_group_template(dihedral_group, fourier_coef_diag_values) + + assert template.shape == (group_order,), f"Expected shape ({group_order},), got {template.shape}" + + def test_mean_centered(self, dihedral_group): + """Test that the template is mean-centered.""" + num_irreps = len(list(dihedral_group.irreps())) + fourier_coef_diag_values = [1.0] * num_irreps + + template = fixed_group_template(dihedral_group, fourier_coef_diag_values) + + np.testing.assert_allclose(template.mean(), 0, atol=1e-10) + + def test_wrong_num_coefs_error(self, dihedral_group): + """Test that mismatched number of coefficients raises error.""" + wrong_num_coefs = [1.0, 2.0] # Wrong number + + with pytest.raises(AssertionError): + fixed_group_template(dihedral_group, wrong_num_coefs) + + def test_real_valued(self, dihedral_group): + """Test that the template is real-valued.""" + num_irreps = len(list(dihedral_group.irreps())) + fourier_coef_diag_values = [1.0] * num_irreps + + template = fixed_group_template(dihedral_group, fourier_coef_diag_values) + + assert np.isreal(template).all() From c5c220206f39cd17e61d57c12665ae7a1e24d747 Mon Sep 17 00:00:00 2001 From: Nina Miolane Date: Thu, 5 Feb 2026 16:05:26 +0000 Subject: [PATCH 18/30] Remove leftover notebooks and svg --- notebooks/dihedral-group.ipynb | 602 - notebooks/fourier_power_only.svg | 1395 - notebooks/group_defining_rep.ipynb | 290 - notebooks/group_regular_rep.ipynb | 222005 -------------------------- notebooks/loss-without-lines.svg | 1003 - 5 files changed, 225295 deletions(-) delete mode 100644 notebooks/dihedral-group.ipynb delete mode 100644 notebooks/fourier_power_only.svg delete mode 100644 notebooks/group_defining_rep.ipynb delete mode 100644 notebooks/group_regular_rep.ipynb delete mode 100644 notebooks/loss-without-lines.svg diff --git a/notebooks/dihedral-group.ipynb b/notebooks/dihedral-group.ipynb deleted file mode 100644 index 8571ec8..0000000 --- a/notebooks/dihedral-group.ipynb +++ /dev/null @@ -1,602 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "id": "bc882f65-e5ad-4c68-a1b4-7c92dd80970c", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/danielkunin/Library/Python/3.9/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", - " warnings.warn(\n" - ] - } - ], - "source": [ - "# %% [markdown]\n", - "# # Dihedral Group Dataset (NumPy + Matplotlib only)\n", - "#\n", - "# Builds the left-regular representation of D_n, encodes elements by P_g x with a\n", - "# mean-centered base vector x in R^{|G|}, constructs the dataset\n", - "# ((g·x, h·x) -> (gh)·x), and visualizes permutation matrices and a 2D PCA\n", - "# (implemented via NumPy SVD).\n", - "#\n", - "# Ordering convention:\n", - "# [r^0, r^1, ..., r^{n-1}, r^0 s, r^1 s, ..., r^{n-1} s]\n", - "# For n=3, printed labels: [\"e\",\"r\",\"r^2\",\"s\",\"sr\",\"sr^2\"].\n", - "\n", - "import torch\n", - "import torchvision\n", - "import torchvision.transforms as transforms\n", - "import matplotlib.pyplot as plt\n", - "import matplotlib.image as mpimg\n", - "import numpy as np" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "a68b97eb-2745-4c44-b70c-efe45c6e581e", - "metadata": {}, - "outputs": [], - "source": [ - "# ========== Core group machinery ==========\n", - "\n", - "Element = tuple # ('rot' or 'ref', k)\n", - "\n", - "def elements_Dn(n: int):\n", - " \"\"\"Elements in fixed order: rotations then reflections with s on the right.\"\"\"\n", - " return [('rot', k) for k in range(n)] + [('ref', k) for k in range(n)]\n", - "\n", - "def multiply_Dn(a: Element, b: Element, n: int) -> Element:\n", - " \"\"\"Group multiplication in D_n with normal form r^k and r^k s (s on the right).\"\"\"\n", - " ka, ia = a; kb, ib = b\n", - " ia %= n; ib %= n\n", - " if ka == 'rot' and kb == 'rot': # (r^ia)(r^ib) = r^{ia+ib}\n", - " return ('rot', (ia + ib) % n)\n", - " if ka == 'rot' and kb == 'ref': # (r^ia)(r^ib s) = r^{ia+ib} s\n", - " return ('ref', (ia + ib) % n)\n", - " if ka == 'ref' and kb == 'rot': # (r^ia s)(r^ib) = r^{ia-ib} s\n", - " return ('ref', (ia - ib) % n)\n", - " # (r^ia s)(r^ib s) = r^{ia - ib}\n", - " return ('rot', (ia - ib) % n)\n", - "\n", - "def left_perm_matrix(g: Element, order, n: int) -> np.ndarray:\n", - " \"\"\"Permutation matrix P_g s.t. P_g e_h = e_{g·h} under 'order'.\"\"\"\n", - " m = len(order)\n", - " idx = {order[i]: i for i in range(m)}\n", - " M = np.zeros((m, m), dtype=int)\n", - " for j, h in enumerate(order):\n", - " gh = multiply_Dn(g, h, n)\n", - " i = idx[gh]\n", - " M[i, j] = 1\n", - " return M\n", - "\n", - "def label_Dn(el: Element, n: int) -> str:\n", - " \"\"\"Human-readable label matching the paper's D3 example.\"\"\"\n", - " kind, k = el\n", - " k %= n\n", - " if kind == 'rot':\n", - " if k == 0: return 'e'\n", - " if k == 1: return 'r'\n", - " return f'r^{k}'\n", - " # reflections: r^k s, printed as s, sr, sr^2, ...\n", - " if k == 0: return 's'\n", - " if k == 1: return 'sr'\n", - " return f'sr^{k}'\n", - " \n", - "def parse_el(s: str, n: int):\n", - " \"\"\"\n", - " Parse element strings under the ORIGINAL convention:\n", - " ('rot', k) == r^k\n", - " ('ref', k) == r^k s (we *print* these as \"s\", \"sr\", \"sr^k\")\n", - " Examples: \"e\", \"r\", \"r5\", \"r^7\", \"s\", \"sr\", \"sr7\", \"sr^20\", \"r^-3\", \"sr^-2\"\n", - " \"\"\"\n", - " t = s.strip().lower().replace(\" \", \"\")\n", - " def parse_exp(exp: str) -> int:\n", - " if exp == \"\" or exp == \"^\":\n", - " return 1\n", - " if exp.startswith(\"^\"):\n", - " exp = exp[1:]\n", - " return int(exp) % n\n", - "\n", - " if t in (\"e\", \"r0\", \"r^0\"):\n", - " return ('rot', 0)\n", - " if t == \"s\":\n", - " return ('ref', 0)\n", - " if t.startswith(\"sr\"):\n", - " k = parse_exp(t[2:])\n", - " return ('ref', k)\n", - " if t.startswith(\"r\"):\n", - " k = parse_exp(t[1:])\n", - " return ('rot', k)\n", - " raise ValueError(f\"Unrecognized element string: {s!r}\")" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "d20e1cec-75bb-4564-b5bd-dd5daeda9943", - "metadata": {}, - "outputs": [], - "source": [ - "# ========== Encodings & dataset ==========\n", - "\n", - "def mean_center_unit(x: np.ndarray) -> np.ndarray:\n", - " x = x - np.mean(x)\n", - " nrm = np.linalg.norm(x)\n", - " return x / (nrm + 1e-12)\n", - "\n", - "def build_encodings(n: int, seed: int = 0):\n", - " \"\"\"\n", - " Returns:\n", - " order: list[Element]\n", - " labels: list[str]\n", - " P: dict(Element -> permutation matrix)\n", - " x: base vector in R^{|G|}\n", - " enc: dict(Element -> P_g x)\n", - " \"\"\"\n", - " rng = np.random.default_rng(seed)\n", - " order = elements_Dn(n)\n", - " labels = [label_Dn(g, n) for g in order]\n", - " P = {g: left_perm_matrix(g, order, n) for g in order}\n", - "\n", - " x = rng.normal(size=len(order))\n", - " x = mean_center_unit(x)\n", - "\n", - " enc = {g: P[g] @ x for g in order}\n", - " return order, labels, P, x, enc\n", - "\n", - "def build_dataset(n: int = 3, seed: int = 0):\n", - " \"\"\"\n", - " Constructs arrays:\n", - " X1, X2, Y ∈ R^{|G|^2 × |G|}\n", - " where each row is (g·x, h·x) -> (gh)·x.\n", - " \"\"\"\n", - " order, labels, P, x, enc = build_encodings(n=n, seed=seed)\n", - " m = len(order)\n", - " N = m * m\n", - " X1 = np.zeros((N, m))\n", - " X2 = np.zeros((N, m))\n", - " Y = np.zeros((N, m))\n", - " pairs = []\n", - "\n", - " idx = 0\n", - " for g in order:\n", - " gx = enc[g]\n", - " for h in order:\n", - " hx = enc[h]\n", - " gh = multiply_Dn(g, h, n)\n", - " ghx = enc[gh]\n", - " X1[idx] = gx\n", - " X2[idx] = hx\n", - " Y[idx] = ghx\n", - " pairs.append((g, h, gh))\n", - " idx += 1\n", - "\n", - " return X1, X2, Y, pairs, order, labels, P, x, enc" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "bcb8afc3-25cf-475d-a5c4-77224edb35f1", - "metadata": {}, - "outputs": [], - "source": [ - "# ========== Utilities: Cayley table (text), PCA via SVD, visuals ==========\n", - "\n", - "def print_cayley_table(order, n: int):\n", - " \"\"\"Pretty-print Cayley table using only print().\"\"\"\n", - " labels = [label_Dn(g, n) for g in order]\n", - " w = max(len(s) for s in labels + ['·']) + 1\n", - "\n", - " def cell(s): return s.ljust(w)\n", - " header = cell('·') + ''.join(cell(s) for s in labels)\n", - " print(header)\n", - " print('-' * len(header))\n", - " for g in order:\n", - " row = [label_Dn(multiply_Dn(g, h, n), n) for h in order]\n", - " print(cell(label_Dn(g, n)) + ''.join(cell(s) for s in row))\n", - "\n", - "def imshow_perm(M: np.ndarray, title: str):\n", - " plt.figure()\n", - " plt.imshow(M, interpolation='nearest')\n", - " plt.title(title)\n", - " plt.xlabel(\"column j\")\n", - " plt.ylabel(\"row i\")\n", - " plt.tight_layout()" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "c2f4c23c-5e0d-486e-9456-827808dad049", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Cayley table for D_3 (order = 6):\n", - "\n", - "· e r r^2 s sr sr^2 \n", - "-----------------------------------\n", - "e e r r^2 s sr sr^2 \n", - "r r r^2 e sr sr^2 s \n", - "r^2 r^2 e r sr^2 s sr \n", - "s s sr^2 sr e r^2 r \n", - "sr sr s sr^2 r e r^2 \n", - "sr^2 sr^2 sr s r^2 r e \n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAboAAAHWCAYAAAABwUykAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAg70lEQVR4nO3de3BU9f3/8dcmIUuAJFwMl0BIQCERbMIIwkSEICA0IgiWihQhUi+0TRyQOmrsyKWMTbQjwhSKWJAowqDWAZQqkYuB0oJyixKsXFKKYSDgZchNs0L2/P74/twhQpDNZT/JJ8/HzM5kz56c894M49NzSdblOI4jAAAsFWR6AAAAGhKhAwBYjdABAKxG6AAAViN0AACrEToAgNUIHQDAaoQOAGA1QgcAsBqhAxqRP//5z+rZs6eCg4PVr18/0+MAViB0wCVycnLkcrl8j5YtW6p3797KyMjQ2bNnG3TfH3zwgZ544gkNHjxYq1at0p/+9KcG3d8DDzxQ7b22adNGPXv21MSJE/X222/L6/X6vc3Dhw/rl7/8pXr27KlWrVrpuuuu09ChQ/Xuu+82wDsArk2I6QGAxuiPf/yjevToocrKSu3atUvLli3Te++9p4KCArVq1apB9rl9+3YFBQVp5cqVCg0NbZB9/Jjb7daKFSskSd99951Onjypd999VxMnTtSwYcO0ceNGRUREXPP2Tp48qbKyMqWlpSk6Olrffvut3n77bY0bN07Lly/XI4880lBvBaiZA8Bn1apVjiRn79691ZbPnj3bkeSsXbu21tuuqqpyvvvuuxpfnz59utO6detab//HvF6v8+2339b4elpaWo37y8rKciQ59957b53nuHjxopOUlOTEx8fXeVtAbXDqErgGw4cPlySdOHHimr/H5XIpIyNDa9asUd++feV2u7V58+Ya1121apUqKip8pxJzcnIkSRcvXtSCBQt0/fXXy+12Ky4uTk8//bQ8Hk+1bcTFxemuu+5Sbm6uBgwYoLCwMC1fvrxW7/epp57SqFGj9NZbb+no0aO12sYPgoODFRMTo/Pnz9dpO0BtETrgGhQWFkqSOnTo4Nf3bd++XY899pgmTZqkxYsXKy4u7orrrV69WkOGDJHb7dbq1au1evVqDR06VJL00EMPac6cObr55pv14osvKiUlRVlZWbrvvvsu286RI0c0efJk3XHHHVq8eHGdbmiZOnWqHMfRli1b/P7eiooKffXVVyosLNSLL76o999/XyNGjKj1LECdmD6kBBqTH05dbt261fnyyy+doqIiZ926dU6HDh2csLAw59SpU9e8LUlOUFCQc/jw4Wta/0qnEvPz8x1JzkMPPVRt+eOPP+5IcrZv3+5bFhsb60hyNm/eXOv9XergwYOOJOexxx67pu1dasaMGY4k389g4sSJzjfffOP3doD6wBEdcAUjR45UVFSUYmJidN9996lNmzZav369unbt6td2UlJS1KdPn1rP8d5770mSZs+eXW3573//e0nSP/7xj2rLe/ToodGjR9d6f5dq06aNJKmsrMzv7501a5a2bNmiV199VampqaqqqtL3339fL3MB/uKuS+AKli5dqt69eyskJESdOnVSfHy8goL8///CHj161GmOkydPKigoSDfccEO15Z07d1bbtm118uTJet3fpcrLyyVJ4eHhfn9vQkKCEhISJEnTpk3TqFGjNHbsWH300UdyuVz1NiNwLQgdcAUDBw7UgAED6rydsLCwephG1xyH+tqfJBUUFEjSZZGtjYkTJ2rGjBk6evSo4uPj67w9wB+cugQasdjYWHm9Xh07dqza8rNnz+r8+fOKjY1tsH2vXr1aLpdLd9xxR5239d1330mSSkpK6rwtwF+EDmjE7rzzTknSokWLqi1fuHChJGnMmDENst/s7Gx98MEHmjRpknr16nXN33fu3LnLll24cEGvvfaawsLC6nS9EqgtTl0CjVhSUpLS0tL08ssv6/z580pJSdHHH3+sV199VePHj9ftt99ep+1fvHhRr7/+uiSpsrJSJ0+e1DvvvKNPP/1Ut99+u15++WW/tjdjxgyVlpZq6NCh6tq1q4qLi7VmzRp9/vnneuGFF3w3uACBROiARm7FihXq2bOncnJytH79enXu3FmZmZmaO3dunbft8Xg0depUSVKrVq3UsWNH9e/fX3PmzNGECRP8vgFn0qRJWrlypZYtW6avv/5a4eHh6t+/v5577jmNGzeuzvMCteFyHMcxPQQAAA2Fa3QAAKtx6hLwU3Fx8VVfDwsLU2RkZICmCYzy8nLf79XVJCoqSsHBwQGaCLh2nLoE/PRTv9OWlpbm+4PMtpg3b57mz59/1XVOnDhR49/yBEziiA7w00/9kePo6OgATRI406ZN02233XbVdTp3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WrTQO++8c9V1x40bVy+DAQBQH64pdOPHj1dxcbE6duyo8ePH17iey+VSVVVVfc0GAECdXVPovF7vFb8GAKCx4xodAMBqhA4AYDVCBwCwGqEDAFiN0AEArOZ36KZNm6ZVq1apsLCwIeYBAKBe+R260NBQZWVlqVevXoqJidH999+vFStW6NixYw0xHwAAdeJ36FasWKGjR4+qqKhIzz//vNq0aaMXXnhBCQkJ6tatW0PMCABArdX6Gl27du3UoUMHtWvXTm3btlVISIiioqLqczYAAOrM79A9/fTTuvXWW9WhQwc99dRTqqys1FNPPaXi4mIdPHiwIWYEAKDWrulPgF0qOztbUVFRmjt3ru655x717t27IeYCAKBe+B26gwcPaseOHcrLy9MLL7yg0NBQpaSkaNiwYRo2bBjhAwA0Ki7HcZy6bOCTTz7Riy++qDVr1sjr9Qb00wtKS0sVGRmpYbpbIa4WAdsvADQWuafzTY9gTGmZV+16/1clJSWKiIiocT2/j+gcx9HBgweVl5envLw87dq1S6WlpUpMTFRKSkqdhgYAoL75Hbr27durvLxcSUlJSklJ0cMPP6whQ4aobdu2DTAeAAB143foXn/9dQ0ZMuSqh4kAADQWfoduzJgxvq9PnTolSfyiOACg0fL79+i8Xq/++Mc/KjIyUrGxsYqNjVXbtm21YMECPn0cANDo+H1E94c//EErV65Udna2Bg8eLEnatWuX5s2bp8rKSj377LP1PiQAALXld+heffVVrVixQuPGjfMtS0xMVNeuXfW73/2O0AEAGhW/T11+8803SkhIuGx5QkKCvvnmm3oZCgCA+uJ36JKSkrRkyZLLli9ZskRJSUn1MhQAAPXF71OXzz//vMaMGaOtW7cqOTlZkrR7924VFRXpvffeq/cBAQCoC7+P6FJSUnT06FFNmDBB58+f1/nz53XPPffoyJEjGjJkSEPMCABArfl1RHfhwgX9/Oc/10svvcRNJwCAJsGvI7oWLVro008/bahZAACod36furz//vu1cuXKhpgFAIB65/fNKBcvXtQrr7yirVu3qn///mrdunW11xcuXFhvwwEAUFd+h66goEA333yzJOno0aPVXnO5XPUzFQAA9cTv0H344YcNMQcAAA3C72t0AAA0JYQOAGA1QgcAsBqhAwBYjdABAKxG6AAAViN0AACrEToA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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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F6fc3FwVFxfrgw8+UGpqqrZs2XJVxK6wsFATJkzQ+vXr1bhxY9PjBFxKSorv5/j4ePXv31+xsbF677339Mgjjxic7OIIXTW0adNGwcHBOn78eJXlx48fV/v27Q1NhUBLT0/X6tWrtXXr1nrxLRqBFBoaquuuu06S1KdPH+3cuVOvv/665s+fb3iyurd7926dOHFCN9xwg29ZZWWltm7dqjlz5sjj8Sg4ONjghIHVokULdevWTfn5+aZHuSjO0VVDaGio+vTpo40bN/qWeb1ebdy48ao7T3E1chxH6enpWrFihTZt2qQuXbqYHsk4r9crj8djeoyAGDp0qPbu3avc3FzfrW/fvho7dqxyc3OvqshJUllZmQoKCtShQwfTo1wUe3TVNGnSJKWmpqpv377q16+fXnvtNZWXl2v8+PGmR6tzZWVlVf7v7dChQ8rNzVWrVq3UqVMng5MFRlpamrKzs7Vq1SqFhYXp2LFjkv73vVhNmjQxPF3dy8jIUEpKijp16qTS0lJlZ2crJydHa9euNT1aQISFhZ13PrZZs2Zq3br1VXGe9plnntGIESMUGxuroqIiTZkyRcHBwRozZozp0S7O9GWfDdkf//hHp1OnTk5oaKjTr18/Z8eOHaZHCojNmzc7ks67paammh4tIC703iU5ixcvNj1aQDz88MNObGysExoa6kRGRjpDhw511q1bZ3oso66mXy8YPXq006FDByc0NNTp2LGjM3r0aCc/P9/0WJfEtxcAAKzGOToAgNUIHQDAaoQOAGA1QgcAsBqhAwBYjdABAKxG6AAAViN0AACrETqgHnnooYc0atQo02NcUE5Ojlwul06dOmV6FMAvhA7AFbn55pt19OhRRUREmB4F8Asf6gzgioSGhvI1VGiQ2KMDapHX69XLL7+s6667Tm63W506ddLMmTN9j+/du1dDhgxRkyZN1Lp1a/3yl79UWVnZRV+vc+fOeu2116os6927t6ZOneq773K5NH/+fN15551q2rSpevTooe3btys/P1+DBw9Ws2bNdPPNN6ugoMD3nKlTp6p3795655131LlzZ0VEROj+++9XaWnpRWfh0CUaKkIH1KKMjAxlZWVp8uTJ2r9/v7Kzs9WuXTtJUnl5uZKTk9WyZUvt3LlT77//vjZs2KD09PQab3fGjBl68MEHlZubq+7du+vnP/+5HnvsMWVkZGjXrl2+79D7oYKCAq1cuVKrV6/W6tWrtWXLFmVlZdV4FqC+4dAlUEtKS0v1+uuva86cOUpNTZUkXXvttRo4cKAkKTs7WxUVFXr77bfVrFkzSdKcOXM0YsQI/e53v/MFsTrGjx+v++67T5L03HPPKTExUZMnT1ZycrIkacKECed9V6LX69WSJUsUFhYmSRo3bpw2btxYZQ8UsAF7dEAt+fLLL+XxeDR06NCLPp6QkOCLnCQNGDBAXq9XBw4cqNG24+PjfT9/H8yf/OQnVZZVVFSopKTEt6xz586+yElShw4ddOLEiRrNAdRHhA6oJXXx7eJBQUH68VdGnj179rz1GjVq5PvZ5XJddJnX673gc75f54ePA7YgdEAt6dq1q5o0aaKNGzde8PEePXroiy++UHl5uW/Zp59+qqCgIMXFxV3wOZGRkTp69KjvfklJiQ4dOlS7gwOWI3RALWncuLGee+45Pfvss3r77bdVUFCgHTt2aOHChZKksWPHqnHjxkpNTVVeXp42b96sJ598UuPGjbvo+bkhQ4bonXfe0V//+lft3btXqampCg4ODuTbAho8LkYBatHkyZMVEhKil156SUVFRerQoYMef/xxSVLTpk21du1aTZgwQTfeeKOaNm2qn/3sZ5o1a9ZFXy8jI0OHDh3SnXfeqYiICM2YMYM9OsBPLufHJwAA4ALWrl2rlJQUVVRUKDQ01PQ4wBXj0CWAyzp+/LhWrVqlrl27Ejk0OBy6BHBZd9xxh0pLS/XGG2+YHgXwG4cuAQBW49AlAMBqhA4AYDVCBwCwGqEDAFiN0AEArEboAABWI3QAAKsROgCA1QgdAMBq/x9oIpdKkOttzgAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# ========== Example: D3 (change n below as needed) ==========\n", - "\n", - "# Set n here (n >= 3)\n", - "n = 3\n", - "seed = 42\n", - "\n", - "# Build everything (no plotting happens until you run the visualize cells)\n", - "X1, X2, Y, pairs, order, labels, P, x, enc = build_dataset(n=n, seed=seed)\n", - "\n", - "# %% [markdown]\n", - "# ## Verify generators & Cayley table\n", - "\n", - "# %%\n", - "# Print Cayley table to stdout\n", - "print(\"Cayley table for D_{} (order = {}):\\n\".format(n, 2*n))\n", - "print_cayley_table(order, n)\n", - "\n", - "# Show permutation matrices for r and s\n", - "Pr = P[('rot', 1)]\n", - "Ps = P[('ref', 0)]\n", - "imshow_perm(Pr, f\"P_r for D_{n}\")\n", - "imshow_perm(Ps, f\"P_s for D_{n}\")" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "01921e29-01c9-4b1a-8241-b3e93fd6b489", - "metadata": {}, - "outputs": [], - "source": [ - "# ----- Build D_n × D_n utilities (no big matrices; we use index permutations) -----\n", - "\n", - "def product_elements(order_G):\n", - " \"\"\"Lexicographic list of elements of G×G given a fixed order of G.\"\"\"\n", - " return [(a, b) for a in order_G for b in order_G]\n", - "\n", - "def product_multiply(gpair, hpair, n):\n", - " \"\"\"(g1,g2)*(h1,h2) = (g1*h1, g2*h2) under D_n multiplication.\"\"\"\n", - " g1, g2 = gpair\n", - " h1, h2 = hpair\n", - " return (multiply_Dn(g1, h1, n), multiply_Dn(g2, h2, n))\n", - "\n", - "def product_labels(gpair, n):\n", - " \"\"\"String label for a pair (g1,g2).\"\"\"\n", - " g1, g2 = gpair\n", - " return f\"({label_Dn(g1, n)}, {label_Dn(g2, n)})\"\n", - "\n", - "def left_action_perm_indices(gpair, order_prod, n, idx_prod):\n", - " \"\"\"\n", - " For element gpair ∈ G×G, return array I_of_J of length |G×G|,\n", - " where for each basis index j (column), the result index i (row) satisfies:\n", - " (P_{gpair}) e_j = e_i with i = I_of_J[j].\n", - " This lets us apply the permutation as: y[I_of_J] = x.\n", - " \"\"\"\n", - " m = len(order_prod)\n", - " I_of_J = np.empty(m, dtype=int)\n", - " for j, hpair in enumerate(order_prod):\n", - " prod = product_multiply(gpair, hpair, n)\n", - " i = idx_prod[prod]\n", - " I_of_J[j] = i\n", - " return I_of_J" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "2c09a611-57a4-4fb7-be4a-02e1a9efe809", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Random MNIST sample index 29636, label = 3\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Download (first run) and load MNIST training set\n", - "mnist_train = torchvision.datasets.MNIST(\n", - " root=\"data\",\n", - " train=True,\n", - " download=True,\n", - " transform=transforms.ToTensor()\n", - ")\n", - "\n", - "# Pick a random sample\n", - "idx = torch.randint(len(mnist_train), (1,)).item()\n", - "img, label = mnist_train[idx] # img is shape (1,28,28), values in [0,1]\n", - "\n", - "print(f\"Random MNIST sample index {idx}, label = {label}\")\n", - "\n", - "# Display\n", - "plt.imshow(img.squeeze(0), cmap=\"gray\")\n", - "plt.title(f\"Digit {label}\")\n", - "plt.axis(\"off\")\n", - "plt.savefig('x.pdf')\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "id": "d14ec1cc-4e47-40ea-b23c-fd6be6b0b14e", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAABMAAAAEnCAYAAABPMz8LAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAxsElEQVR4nO3df7zW8/04/sdJkn6oJK2MSKZOlpH9MBUzakk0C7N3JL9CzcKmphAK5VdRLDZheNtKb+/lxzvMhNlnxvxcP1akTflVlEqlOtf3j321va7rdM65OtfVOefV/X679cfjeb1ez+fzivPodT3O6/W4SjKZTCYAAAAAIKXq1fQGAAAAAKCYFMAAAAAASDUFMAAAAABSTQEMAAAAgFRTAAMAAAAg1RTAAAAAAEg1BTAAAAAAUk0BDAAAAIBUUwADAAAAINUUwAAAoA4ZPXp0lJSUxLJly2p6KwAFM378+OjYsWOUlZXlfe7pp58eTZo0qfS45cuXR+PGjeOxxx7bmi1SxymAAQAAADXm008/jXHjxsXw4cOjXr3ilSlatmwZZ511Vlx22WVFW4PaSwEMAAAAqDF33XVXbNy4MU455ZSir3XuuefGX//613j66aeLvha1iwIYAAAAUGOmTp0axx13XDRs2LDoa3Xq1CkOOOCAuPvuu4u+FrWLAlgdtWTJkjjjjDOidevWsdNOO0Xnzp3jrrvuKtj8a9eujY4dO0bHjh1j7dq1m8c//vjjaNOmTXz729+OTZs2FWw9gHw988wzccghh0TDhg1j3333jSlTpmzui1MoAwcOjIYNG8bcuXMT47169YoWLVrE0qVLC7YWQL5WrFgRp59+ejRv3jyaNWsWgwYNis8++6xg88uBwLawaNGieP311+Ooo47KeW358uVx6qmnxi677BLNmzePgQMHxmuvvRYlJSXlFrCWLFkS/fr1iyZNmkSrVq3ipz/9abmfW48++uiYOXNmZDKZgryHp59+OurVqxeXX355YvyBBx6IkpKSuP322wuyDtWjAFYHffDBB/Gtb30rnnrqqRg6dGhMnDgxOnToEGeeeWZMmDChIGvsvPPOcc8998TChQtj5MiRm8eHDBkSK1eujLvvvjt22GGHgqwFkK9XXnklvve978Xy5cvjyiuvjDPPPDOuuuqqePjhhwu6zsSJE6NVq1YxcODAzRdPU6ZMiSeeeCJuvfXWaNu2bUHXA8jHSSedFKtWrYprr702TjrppLj77rvjyiuvLNj8ciCwLbzwwgsREXHwwQcnxsvKyqJv377x3//93zFw4MAYO3ZsvPfeezFw4MBy59m0aVP06tUrWrZsGTfccEMcfvjhceONN8Ydd9yRc2zXrl1jxYoV8be//a0g7+HII4+M888/P6699tr461//GhER7733Xvz4xz+Oo446Ks4999yCrEM1ZahzzjzzzEybNm0yy5YtS4z/8Ic/zDRr1izz2WefVXj+4sWLM3Pnzq3SWj//+c8z9erVyzz77LOZadOmZSIiM2HChK3eO0Ah9O3bN9OoUaPMkiVLNo8tWLAgU79+/UxV/mn76KOPMnPnzs2sWbOm0mNnzZqViYjMmDFjMm+//XamSZMmmX79+lVr/wDVccUVV2QiInPGGWckxr///e9nWrZsWen5ciBQm4waNSoTEZlVq1Ylxh966KGcz5+bNm3KHHnkkZmIyEydOnXz+MCBAzMRkbnqqqsScxx00EGZrl275qz5wgsvZCIi85vf/KbCvX3++eeZuXPnZpYuXVrp+1izZk2mQ4cOmc6dO2fWrVuX6dOnT2aXXXbJLF68uNJz2TbcAVbHZDKZeOihh6Jv376RyWRi2bJlm//06tUrVq5cubnivCWnnXZadOrUqUrrjR49Ojp37hwDBw6M888/Pw4//PC44IILCvFWALbKpk2b4qmnnop+/fol7j7o0KFD9O7du0pzTJo0KTp16hQvvvhipcf27NkzBg8eHFdddVWccMIJ0bBhw5gyZcpW7x+gULLvKOjevXssX748Pv300wrPkwOB2mT58uVRv379aNKkSWL8//7v/2LHHXeMs88+e/NYvXr1YsiQIVucq7y8+Pbbb+cc16JFi4iIWLZsWYV7W7JkSXTq1Cl+/vOfV/o+GjVqFHfffXfMnTs3evToEY8++mjcfPPNsddee1V6LtuGAlgd89FHH8WKFSvijjvuiFatWiX+DBo0KCIiPvzww4Kt16BBg7jrrrti0aJFsWrVqpg6dWpB++sA5OvDDz+MtWvXRocOHXJeK2+sEG644YbYdddd49VXX41bbrkldt9996KsA5CP7A9VX3yg++STTwq6jhwI1ITFixdHmzZtolGjRonxLV3vNWzYMFq1apUYa9GiRbk5MfP/9/4q9Gfbww47LM4777x48cUXo1evXnHGGWcUdH6qp35Nb4D8lJWVRUTEgAEDtvjsc5cuXSqc45lnnslrzVmzZkVExLp162LBggWxzz775HU+QG0zevToGD16dJWPf+WVVzb/cuGNN97YJl/RDVCZLfVjzVTS1FkOBGqTli1bxsaNG2PVqlXRtGnTrZ4nnx7VXxTFdttttwqP23vvvfNqlL9+/frNn7ffeuut+Oyzz3IKeNQcd4DVMa1atYqmTZvGpk2b4qijjir3TyF/K/f666/HVVddFYMGDYqDDjoozjrrrFi5cmXB5gfI1+677x4NGzaMhQsX5rxW3lh1rVmzJgYNGhSlpaVxzjnnxPjx4+Mvf/lLwdcBqI3kQKDYOnbsGBH/+jbI/9SuXbt47733cr7dthDXe1+sVdXWQFV1xRVXxNy5c+OGG26IRYsWxYgRIwo6P9WjAFbH7LDDDvGDH/wgHnrooXjzzTdzXv/oo48KttaGDRvi9NNPj7Zt28bEiRPj7rvvjg8++CAuvPDCgq0BkK8ddtghjjrqqHj44Ydj6dKlm8cXLlwYjz/+eMHXGz58ePzjH/+Ie+65J2666abYe++9Y+DAgbF+/fqCrwVQ28iBQLEdeuihERHx0ksvJcZ79eoVGzZsiDvvvHPzWFlZWUyePLnaa7788svRrFmz6Ny5c7Xn+sKf//znuOGGG2LYsGFx8cUXx89+9rOYNGlSzJ49u2BrUD0KYHXQddddF23atIlvfvObMWzYsLjjjjviuuuui5NOOin233//gq0zZsyYePXVV+Ouu+6Kpk2bRpcuXeLyyy+PqVOnxmOPPVawdQDyNXr06Ni4cWMcdthhMX78+Lj22mvj8MMPjwMOOKCg6zz99NNx2223xciRI+Pggw+Oxo0bx9SpU2P+/Plx2WWXFXQtgNpGDgS2hfbt28cBBxwQTz31VGK8X79+8Y1vfCMuvvji+PGPfxyTJ0+O3r17x8cffxwR1evf9eSTT0bfvn0L1gNs3bp1MXDgwNhvv/1i7NixERFx5ZVXRmlpaQwaNCjWrFlTkHWoHgWwOqh169bx4osvxqBBg2LGjBkxdOjQmDhxYnz88ccxbty4gqzx17/+Na655poYOnRofOc739k8PmLEiPj6178eZ599dqxYsaIgawHkq2vXrvH4449HixYt4rLLLotf/epXcdVVV8V3v/vdaNiwYUHWWLVqVZxxxhlx0EEHxciRIzePd+/ePX7yk5/EjTfeGP/v//2/gqwFUNvIgcC2dMYZZ8TMmTNj7dq1m8d22GGHePTRR+Pkk0+Oe+65J0aOHBlt27bdfAfY1l7zzZs3L9588804/fTTC7H1iIi49NJLY+HChXHPPfds3leDBg3innvuiX/+85/xs5/9rGBrsfVKMvl0dAOAWqxfv37xt7/9LRYsWFDTWwEAoIpWrlwZ7du3j/Hjx8eZZ55Z4bEPP/xwfP/734/nn38+DjvssLzXGjZsWDz77LPx8ssvF/xbIKnd3AEGQJ30n78hjIhYsGBBPPbYY3HEEUfUzIYAANgqzZo1i0suuSSuv/76KCsr2zyefb23adOmuPXWW2OXXXaJgw8+OO91li9fHr/85S9jzJgxil/bIXeAAVAntWnTJk4//fRo3759LF68OG6//fZYv359vPLKK7HffvvV9PYAAKims846K9auXRuHHnporF+/PmbMmBEvvPBCXHPNNfHzn/+8prdHHaMABkCdNGjQoPjDH/4Q77//fuy0005x6KGHxjXXXLNVvw0EAKD2eeCBB+LGG2+MhQsXxrp166JDhw5x3nnnxdChQ2t6a9RBCmAAAAAApJoeYAAAAACkmgIYAAAAAKmmAAZAUYwfPz46duyY+CYfKvetb30rLrnkkpreBlAkcmPEnDlzon79+vHmm2/W9FaAPMlhNW/EiBHxzW9+s6a3UScpgAFQcJ9++mmMGzcuhg8fHvXq5f9PzT/+8Y9o27ZtlJSUxA033LDF4955550oKSkp98+DDz5YnbdQJa+88ko0bdo06tWrF7/97W+3eNzf/va3OPHEE6N9+/bRqFGj2G233aJHjx4xc+bMnGOHDx8ekydPjvfff7+YWwdqQHVzY0258847o6SkJFq2bBnz58/f4nF77733FnPyf347b2lpafTp0ycuv/zybbF9oEC2l+u7qqhqXpw/f35ceOGF8e1vfzsaNmwYJSUl8c4772zx+N/97ndx8MEHR8OGDWOvvfaKK664IjZu3Jg4ZtiwYfHaa6/F7373u0K9ne1G/ZreAADpc9ddd8XGjRvjlFNOyfvcTz75JHr37h1r1qyJHj16xCWXXBJ77rlnnHzyyVs855RTToljjjkmMXbooYfmvXY+Fi9eHH369IlddtklvvKVr8Rpp50Wbdq0ie7du5d77KpVq2LgwIHRtm3b+Oyzz+Khhx6K4447LqZMmRLnnHPO5mOPP/742GWXXeK2226Lq666qqjvAdi2qpMba8pjjz0W5513Xhx66KHx97//PXr37h1/+tOfonXr1jnHTpgwIVavXp0YW7x4cYwaNSp69uyZGD/33HPjmGOOibfeeiv23Xffor4HoDC2h+u7qsgnL/7pT3+KW265JUpLS6NTp07x6quvbnHexx9/PPr16xdHHHFE3HrrrfHGG2/EmDFj4sMPP4zbb79983Ff+tKX4vjjj48bbrghjjvuuGK8xfTKAECBdenSJTNgwIBKj9uwYUNm/fr1m+N169ZlevTokdlll10yf/rTnzLr1q3L9OnTJ7PTTjtlZs+enXP+okWLMhGRuf766wu6/2xr167NbNq0aXP88ccfZzp16pTZY489MgsWLMh88sknmUMOOSTTokWLzNy5c6s058aNGzMHHnhgZv/99895bejQoZl27dplysrKCvYegJpX1dxYU1avXp2IX3rppUzjxo0z3/nOdzJr1qzJvPrqq5mWLVtmDjnkkJxjt+Tqq6/ORETmj3/8Y2L8888/z7Ro0SJz2WWXFWz/QHGl7fquKqqbF5cvX5759NNPM5lMJnP99ddnIiKzaNGictcqLS3NHHjggZkNGzZsHhs5cmSmpKQk5/py+vTpmZKSksxbb71VzXe4fak7914DUCcsWrQoXn/99TjqqKMS41/czn7DDTfEhAkTYt99942ddtop5syZExERmUwmBg4cGK+99lo8+eST8a1vfSt22mmnmDFjRhx99NHRr1+/zceWZ82aNfH5559Xe//PPPPM5lvsR40aFXvssUc0atQoPv3004iIWL9+fRx//PGxatWqmD17dnTo0CGaN28eTz75ZHTo0CG+973vVenxxR122CH23HPPWLFiRc5rRx99dCxevLjC3xICdcuWcmNERFlZWUyYMCE6d+4cDRs2jNatW8fgwYPjk08+2er1br311ujcuXM0atQoWrRoEYccckg88MADm18fPXp0lJSUxJw5c+JHP/pRtGjRIrp165bYb58+feKb3/xmPPLII9GoUaM48MAD4+mnn4533nknTj755Ni0aVOl+3jggQdin332iW9/+9uJ8R133DGOOOKI+N///d+tfo/AtlPXr+8iaiYv7rrrrtG0adNK9zZnzpyYM2dOnHPOOVG//r8f1Dv//PMjk8nE9OnTE8d/8d9BDs2PAhgABfXCCy9ERMTBBx9c7utTp06NW2+9Nc4555y48cYbY9ddd42IiEsuuSRmzZoVTz75ZHzjG9/YfHyDBg3ioYceim7dukXv3r3jvffey5nzyiuvjCZNmkTDhg3j61//ejzxxBPVfh9XX311PProo/HTn/40rrnmmmjQoEFkMpk47bTT4p133onZs2cnHtv5ogjWunXrOOaYY3IeA4r410XcsmXL4q233oqbb745Hn/88fjud7+bc1zXrl0jIuKPf/xjtd8HUDtUlBsHDx4cP/vZz+Kwww6LiRMnxqBBg+L++++PXr16xYYNG/Je684774wLLrggSktLY8KECXHllVfG1772tfjzn/+cc+yJJ54Yn332WVxzzTVx9tlnR0TExx9/HL17946vfvWrmz/kfaFLly7x+9//Pv785z/HeeedV+E+XnnllZg7d2786Ec/Kvf1rl27xptvvrn5FwxA7VXXr+9qS17ckldeeSUiIg455JDEeNu2bePLX/7y5te/0KxZs9h3331dK+ZJDzAACmrevHkREbHPPvuU+/q7774bCxcujFatWiXGr7/++rj++uvLPadBgwblNvqsV69e9OzZM77//e/HHnvsEW+//XbcdNNN0bt37/jd734Xffr02er3sW7dunjppZdi5513Toz/5je/2eI5zZo1K/dC6gsXX3xxTJkyZfPeTzjhhJg0aVLOcXvssUc0aNCgwt+IAnXLlnLj888/H7/85S/j/vvvTxSKvvOd78T3vve9mDZt2hYLSFvy6KOPRufOnWPatGmVHnvggQcm7oCI+NcdC1/stzxdunSJjz76qNK577///oiI+K//+q9yX2/fvn2UlZXFvHnzEh+Mgdqnrl/f1Za8uCVfFADbtGmT81qbNm1i6dKlOePt27d3rZgnBTAACmr58uVRv379aNKkSbmv/+AHP8i5ONpae+21V8yaNSsxduqpp0ZpaWlcfPHF1SqADRw4MKf4VV3Dhg2L/v37x9KlS+O3v/1tbNq0aYu39bdo0SKWLVtW0PWBmrOl3Dht2rRo1qxZHH300Ymf+a5du0aTJk3iD3/4Q94FsObNm8e7774bf/nLX+LrX/96hceee+65ec1dVWVlZfHggw/GQQcdFJ06dSr3mBYtWkREyHVQB9T167vakBcrsnbt2oiI2GmnnXJea9iwYbl3yrZo0SLnzjAq5hFIALapLf3msFB23XXXGDRoUMyfPz/efffdrZ6nGPvs2LFjHHXUUXHaaafFI488EqtXr46+fftGJpPJOTaTyURJSUnB9wDULgsWLIiVK1fG7rvvHq1atUr8Wb16dXz44Yd5zzl8+PBo0qRJfOMb34j99tsvhgwZssXHZIqVk2fPnh1LlizZ4t1fEbE598l1UPfV9uu72pAXK/LFL13Xr1+f89q6devK/aWsa8X8KYABUFAtW7aMjRs3xqpVq8p9vdB3VZVnzz33jIh/9WvYWttin/3794+//OUv8fe//z3ntRUrVsRuu+1W9D0A28aWcmNZWVnsvvvu8eSTT5b756qrrsp7rU6dOsX8+fPjwQcfjG7dum3us3PFFVfkHFusXHf//fdHvXr14pRTTtniMV80+ZfroPar69d3tSEvVuSLRx/L64X23nvvRdu2bXPGP/nkE/kzTwpgABRUx44dI+Jf35RTU95+++2IiILdil8sX9zuvnLlysT4kiVL4vPPP9/iY0NA3bOl3LjvvvvG8uXL47DDDoujjjoq58+BBx64Ves1btw4Tj755Jg6dWr84x//iD59+sTYsWNj3bp11X4vlVm/fn089NBDccQRR5T7oe0LixYtinr16sVXvvKVou8JqJ40XN/VZF6szNe+9rWIiHjppZcS40uXLo1333138+v/adGiRa4V86QABkBBHXrooRGR+w94MZTXbHTJkiVx1113RZcuXcptJFoTynuEacOGDXHvvffGzjvvHKWlpYnXXn755YiI+Pa3v71N9gcU35Zy40knnRSbNm2Kq6++OuecjRs3xooVK/Jea/ny5Ym4QYMGUVpaGplMZqu+VTJfjz32WKxYsaLCxx8j/pXrOnfuHM2aNSv6noDqqevXdzWdFyvTuXPn6NixY9xxxx2xadOmzeO33357lJSURP/+/RPHr1y5Mt566y3XinnSBB+Agmrfvn0ccMAB8dRTT8UZZ5xR1LUuueSSeOutt+K73/1utG3bNt55552YMmVKrFmzJiZOnJg49u67745BgwbF1KlT4/TTTy/qvrINHjw4Pv300+jRo0fsscce8f7778f9998f8+bNixtvvDGnoeyTTz4Ze+21Vxx00EHbdJ9A8WwpNx5++OExePDguPbaa+PVV1+Nnj17xo477hgLFiyIadOmxcSJEzd/8KlqHuvZs2d86UtfisMOOyxat24dc+fOjUmTJkWfPn2iadOmxX6rcf/998dOO+0UP/jBD7Z4zIYNG2L27Nlx/vnnF30/QPXV9eu7msqLK1eujFtvvTUiYnPPsUmTJkXz5s2jefPmMXTo0M3HXn/99XHcccdFz54944c//GG8+eabMWnSpDjrrLNy7vR66qmnIpPJxPHHH1+0vaeRAhgABXfGGWfE5ZdfHmvXri1qH4WePXvGL37xi5g8eXJ88skn0bx58+jRo0eMGjUqDj744MSxq1evjojyv1662E4++eT41a9+FbfffnssX748mjZtGl27do1x48bFcccdlzi2rKwsHnrooTjzzDM1NoWU2VJu/MUvfhFdu3aNKVOmxKWXXhr169ePvffeOwYMGBCHHXbY5uOqmscGDx4c999/f9x0002xevXq+PKXvxwXXHBBjBo1qjhv7D98+umn8eijj0afPn0qvLPr97//fXz88ccxcODAou8JKIy6fH1XU3nxk08+icsuuywxduONN0ZERLt27RIFsGOPPTZmzJgRV155Zfz4xz+OVq1axaWXXhqXX355zrzTpk2Lbt26xb777lvU/adNSaa8r54CgGpYuXJltG/fPsaPHx9nnnlmTW8nIv71mNE777wTL774Yk1vpUIPP/xw/OhHP4q33nqr1jzCCRRGdXNjXcljVdGvX78oKSmJ//mf/6nprQBV5Pqudnj//fdjn332iQcffNAdYHlSAAOgKMaNGxdTp06NOXPmRL16NdtyMpPJROvWreO+++6Lnj171uheKnPooYdG9+7dY/z48TW9FaAItjY31qU8Vpm5c+fGV7/61Xj11VfjgAMOqOntAHlwfVfzRowYEU8//fR2VfQrFAUwAAAAAFLNt0ACAAAAkGoKYAAAAACkmgIYAAAAAKmmAAYAAABAqtWv6oElJSXF3AdQTb7PorhqYw4sb0/Z34AzatSoRNy2bdtE3K5duwrn3Jr/r7LnWL16dSJ+/fXXE/GYMWNy5pg1a1be67J9kwOLrzbmQeDf5MHikgPTZePGjTljixcvTsRLly5NxNnXrE888UQi3p5/Bnv16pWIsz+DdOnSJRE3adIkERfiM0dVvpXUHWAAAAAApJoCGAAAAACppgAGAAAAQKqVZKr4sKVnnqF2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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# ----- Set up D14 × D14 and indexing -----\n", - "\n", - "n = 28\n", - "order_G = elements_Dn(n) # D28 elements (56 of them)\n", - "order_GxG = product_elements(order_G) # 56*56 = 4 * 784 elements\n", - "idx_GxG = {gpair: i for i, gpair in enumerate(order_GxG)}\n", - "\n", - "# sanity: the action space matches a 28x28 image flattened\n", - "assert len(order_GxG) == 2*n * 2*n, \"Expected 4 * 784 = 56×56 states for D28×D28.\"\n", - "\n", - "# Construct image with top left corner is MNIST image\n", - "x_img = np.zeros((2*n, 2*n))\n", - "x_img[:28, :28] = img.numpy()\n", - "\n", - "# Flatten to a NumPy vector of length 4 * 784\n", - "x_vec = x_img.reshape(-1)\n", - "\n", - "# Optionally mean-center (uncomment if desired)\n", - "x_vec = x_vec - x_vec.mean()\n", - "\n", - "# Choose a g, h from D28×D28\n", - "g_strings = (\"r5\", \"r3\") # g = (g1, g2)\n", - "h_strings = (\"e\", \"sr7\") # h = (h1, h2)\n", - "gpair = tuple(parse_el(s, n) for s in g_strings)\n", - "hpair = tuple(parse_el(s, n) for s in h_strings)\n", - "ghpair = product_multiply(gpair, hpair, n)\n", - "\n", - "# Build permutation index maps for g and h (and compose for gh)\n", - "I_g = left_action_perm_indices(gpair, order_GxG, n, idx_GxG) # y[I_g] = x\n", - "I_h = left_action_perm_indices(hpair, order_GxG, n, idx_GxG)\n", - "I_gh = left_action_perm_indices(ghpair, order_GxG, n, idx_GxG)\n", - "\n", - "# Apply permutations to x (forward map j -> i, so: y[i_of_j] = x[j])\n", - "gx_vec = np.empty_like(x_vec); gx_vec[I_g] = x_vec\n", - "hx_vec = np.empty_like(x_vec); hx_vec[I_h] = x_vec\n", - "ghx_vec = np.empty_like(x_vec); ghx_vec[I_gh] = x_vec\n", - "\n", - "# Reshape back to 56×56 images for viewing\n", - "x_img = x_vec.reshape(2*n, 2*n)\n", - "gx_img = gx_vec.reshape(2*n, 2*n)\n", - "hx_img = hx_vec.reshape(2*n, 2*n)\n", - "ghx_img = ghx_vec.reshape(2*n, 2*n)\n", - "\n", - "# Plot\n", - "fig, axs = plt.subplots(1, 4, figsize=(13, 3))\n", - "axs[0].imshow(x_img, cmap=\"gray\")\n", - "axs[0].set_title(f\"e · x\\n\")\n", - "axs[1].imshow(gx_img, cmap=\"gray\")\n", - "axs[1].set_title(f\"g · x\\n{product_labels(gpair, n)}\")\n", - "axs[2].imshow(hx_img, cmap=\"gray\")\n", - "axs[2].set_title(f\"h · x\\n{product_labels(hpair, n)}\")\n", - "axs[3].imshow(ghx_img, cmap=\"gray\")\n", - "axs[3].set_title(f\"(gh) · x\\n{product_labels(ghpair, n)}\")\n", - "for ax in axs: \n", - " ax.axis(\"off\")\n", - "plt.tight_layout()\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "id": "6c1d645e-291f-464f-b7e1-17bd8ed624df", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAGFCAYAAAASI+9IAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAJUUlEQVR4nO3csUvV/x7H8e+RCPo55GBLES5OLv0DadDQELSEYwUtNQhlDhFZ0GBQjWEtba1JS0I4Zq4tDWWji0G0BDoFnt9w4cW9/Lrc8/5ej57s8Zh9cT6noz79Dn063W632wBA0zRD+30AAAaHKAAQogBAiAIAIQoAhCgAEKIAQIgCAHGo1y/sdDr9PAf7qM1ne+7cufLm3r175U3TNM3x48fLm7GxsfKmzb/DoP/fzzbvaWtrq7z5+PFjebOwsFDeNE3TrKystNrR2/erJwUAQhQACFEAIEQBgBAFAEIUAAhRACBEAYAQBQBCFAAIUQAgRAGA6HR7vNHLhXjsl/Hx8fJmfX29vBn0C/GWlpbKm7W1tfJmY2OjvHnz5k15w95zIR4AJaIAQIgCACEKAIQoABCiAECIAgAhCgCEKAAQogBAiAIAIQoAhAvxAP4QLsQDoEQUAAhRACBEAYAQBQBCFAAIUQAgRAGAEAUAQhQACFEAIEQBgBAFAEIUAAhRACBEAYAQBQBCFAAIUQAgRAGAEAUAQhQACFEAIEQBgBAFAEIUAAhRACBEAYAQBQBCFAAIUQAgRAGAEAUAQhQACFEAIEQBgBAFAEIUAAhRACBEAYAQBQBCFAAIUQAgRAGAEAUAQhQACFEAIEQBgBAFAEIUAAhRACBEAYAQBQBCFAAIUQAgRAGAEAUAQhQACFEAIEQBgBAFAEIUAAhRACBEAYAQBQBCFAAIUQAgRAGAEAUAQhQACFEAIEQBgBAFAEIUAAhRACBEAYAQBQBCFAAIUQAgRAGAEAUAQhQACFEAIEQBgBAFAEIUAAhRACBEAYAQBQBCFAAIUQAgRAGAEAUAQhQACFEAIEQBgBAFAEIUAAhRACBEAYAQBQBCFAAIUQAgRAGAEAUA4tB+HwD64cyZM+XNqVOnypv5+fnyZnR0tLxpa2io/nffzs5OH07yTzdv3my1W1xc3OWT8O88KQAQogBAiAIAIQoAhCgAEKIAQIgCACEKAIQoABCiAECIAgAhCgBEp9vtdnv6wk6n32fhgGtzSV3TNM2tW7fKm8nJyfJmZGSkvOnxx2fftPm53av39P3791a7s2fPljefPn1q9VoHTS+frScFAEIUAAhRACBEAYAQBQBCFAAIUQAgRAGAEAUAQhQACFEAIEQBgBAFAMItqQfM4cOHy5u5ubnyps0tpG02TdM0f/31V6td1Y8fP8qbb9++9eEku2doqP5335EjR8qb48ePlzdtLS4uljezs7O7f5DfkFtSASgRBQBCFAAIUQAgRAGAEAUAQhQACFEAIEQBgBAFAEIUAAhRACAO7fcB+LWJiYlWu9u3b5c3ly5davVag2xpaam8ef78eXmzurpa3gy6Fy9elDdXr17tw0nYD54UAAhRACBEAYAQBQBCFAAIUQAgRAGAEAUAQhQACFEAIEQBgBAFAMKFeAOq7SV1g3y53cuXL1vtnjx5Ut6sr6+3eq2D5saNG+XNhQsX+nCS3fP+/fv9PsKB5kkBgBAFAEIUAAhRACBEAYAQBQBCFAAIUQAgRAGAEAUAQhQACFEAIDrdbrfb0xd2Ov0+y4F15syZ8ub169etXuvo0aOtdlVv374tb65du9bqtb5+/dpqN6iGh4db7aampsqb5eXl8qbHXwn/t4WFhVa7Bw8e7O5B/iC9fLaeFAAIUQAgRAGAEAUAQhQACFEAIEQBgBAFAEIUAAhRACBEAYAQBQDi0H4f4E/w7t278ubDhw+tXuvkyZPlzdLSUnlz//798mbQjYyMlDejo6PlzdzcXHnTNO0vFDxoxsfHy5uNjY3y5ufPn+XNQeBJAYAQBQBCFAAIUQAgRAGAEAUAQhQACFEAIEQBgBAFAEIUAAhRACBEAYDodLvdbk9f2On0+yywa6anp8ubmZmZ8mZycrK82Uttfm57/JWwb9q8p7t375Y3jx8/Lm8GXS+frScFAEIUAAhRACBEAYAQBQBCFAAIUQAgRAGAEAUAQhQACFEAIEQBgHAhHgNvfHy8vPny5Ut5MzRU/xtpZ2envNlL3tO/tHlPjx49Km/m5+fLm73kQjwASkQBgBAFAEIUAAhRACBEAYAQBQBCFAAIUQAgRAGAEAUAQhQACBfiMfDaXIi3vr5e3rT5Hu/xx+c/bG9vlzdN0zSrq6vlzdraWnmztLRU3hw7dqy8aXt53Pnz58ubNp/T5uZmeTM5OVneNE3TbGxstNpVuRAPgBJRACBEAYAQBQBCFAAIUQAgRAGAEAUAQhQACFEAIEQBgBAFAMKFeAy84eHh8ub06dPlzaBfiNfmcruD6NmzZ+XN9evX+3CSf5qdnW21W1xc3N2D/BcuxAOgRBQACFEAIEQBgBAFAEIUAAhRACBEAYAQBQBCFAAIUQAgRAGAOLTfB4D/pc0FcisrK304CYNgfX19v49woHlSACBEAYAQBQBCFAAIUQAgRAGAEAUAQhQACFEAIEQBgBAFAEIUAAhRACDckgr8Vjqdzp5s/lSeFAAIUQAgRAGAEAUAQhQACFEAIEQBgBAFAEIUAAhRACBEAYAQBQDChXjAb2V+fr686Xa75c329nZ5s7GxUd4MGk8KAIQoABCiAECIAgAhCgCEKAAQogBAiAIAIQoAhCgAEKIAQIgCAOFCPFoZGRkpb65cudLqtZ4+fdpqx945ceJEeXP58uVWrzU6OlretLkQb3Nzs7x58+ZNeTNoPCkAEKIAQIgCACEKAIQoABCiAECIAgAhCgCEKAAQogBAiAIAIQoAhAvxaKanp8ubmZmZ8mZra6u8aRoX4u21iYmJ8qbNRXBjY2PlDf3nSQGAEAUAQhQACFEAIEQBgBAFAEIUAAhRACBEAYAQBQBCFAAIUQAgRAGAcEsqzeTkZHkzNTXVh5P82sOHD8ub+fn5Ppzk9/Pq1avy5uLFi304ye4ZGqr/LXvnzp3y5vHjx+XNQeBJAYAQBQBCFAAIUQAgRAGAEAUAQhQACFEAIEQBgBAFAEIUAAhRACBciEfz+fPn8qbb7fbhJL82NzdX3kxPT5c3nU6nvNnLf4c2xsfHy5tBf0/Ly8vlzcuXL/twkoPJkwIAIQoAhCgAEKIAQIgCACEKAIQoABCiAECIAgAhCgCEKAAQogBAdLqDfvsVAHvGkwIAIQoAhCgAEKIAQIgCACEKAIQoABCiAECIAgDxNzUwUXREwp6HAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.axis(\"off\")\n", - "plt.imshow(gx_img[:28,:28], cmap=\"gray\")\n", - "plt.savefig('x.pdf')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "869bcf81-345b-4ec8-8e03-65eee108e07f", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Number of elements: 8: [(+, 0[2pi/4]), (+, 1[2pi/4]), (+, 2[2pi/4]), (+, 3[2pi/4]), (-, 0[2pi/4]), (-, 1[2pi/4]), (-, 2[2pi/4]), (-, 3[2pi/4])]\n" - ] - }, - { - "data": { - "image/png": "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nDnjtR5OnDihWbNmKTMzUytWrFBkZKRmzJihHTt2tNhvYWGhIiIiNGHCBLf2VatW6cKFC1q0aJHfY05PT1dNTY3+/e9/+90HgiPYNdHc/O4ragKBEox6qK2t1blz53T8+HE9/fTTOnr0qL73ve/53R/1EBztKvwfP35ckjRw4EDH+66srFSfPn082hvbKioq/Op31apVunr1qmbNmuWx7OjRoyooKNDixYu1YMEC7dmzR8YYny64zcvLU2ZmpiIiIlxthw8f1p///Ge9+OKL6tixo1/jlaRBgwapoaHB9e+N8BTIegiUDRs26LPPPvNaD6WlpXrllVe0YsUKPfnkk9q7d6/i4+O1cOHCFvvNy8vT3XffrdjYWFfb6dOntXz5ci1fvlzdunXze8yNF/WXlJT43QeCI9g10dz87itqAoESjHqYOXOm4uLidNttt+n3v/+95s2b16YLYKmH4GhX4b+6ulqRkZFut1pySl1dnTp37uzRHhUV5VreWnv27NHSpUs1c+ZMffe73/VYPmrUKKWnp7t+79evn6ZOnarCwkLV19c32W9NTY3279/v8fXV448/rszMTI9Ptq3VvXt3SfK4SxDCSyDrIRCOHz+u+fPna9SoUZozZ47H8sTERN1///2u37t166af/OQn+uijj7ze0apRQ0ODCgoKPOph4cKFrjuytAX10H4EsyZamt99QU0gkIJRDytXrtT27dv1yiuvaOTIkbp69aquX7/uV1/UQ/BEhnoATqiqqnILy127dm31zv7Nb37T63n9ly9fdi1vjePHj+v+++9Xamqq1q1b53WdwYMHe7QlJSXp0qVLqqqqUkJCgtfXFRYWSpJbyM/NzdW+ffscuUd/43lrN36rgPbDiXpw2unTpzV58mTFxsZq8+bNXr+Z+va3v+2xzyUlJUn68l7RTdVDcXGxqqqq3Cb2f/7zn8rJydGuXbvafHs76qH9c7omfJnfW0JNIFScrIe0tDTXf8+ePVvDhw/XT3/601bfz596CK52deS/Z8+eun79uj7//HO39u985zvq06eP6+eFF15odd99+vTxer/mxrbExESf+yovL9eECRMUGxur/Px8xcTEtHo8zcnPz/f4+uqpp57SjBkz1KlTJ508eVInT550XXRTXl7eqtOWLly4IEltOo8VgRfIenDS//73P2VmZqqmpkYFBQWtqiVf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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# conda install gfortran\n", - "# pip install --prefer-binary pyshtools\n", - "# pip install py3nj==0.2.1\n", - "# pip install escnn\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "from escnn.group import *\n", - "\n", - "group = DihedralGroup(N=4)\n", - "\n", - "fig, axs = plt.subplots(2, 4, figsize=(8, 4))\n", - "axs = axs.flatten()\n", - "for i, g in enumerate(group.elements):\n", - " matrix = group.representations[\"regular\"](g)\n", - " axs[i].imshow(matrix)\n", - " axs[i].set_title(f\"{g}\")\n", - " axs[i].axis('off')\n", - "plt.tight_layout()\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "a556879b-835a-4b00-b29a-1108506299f0", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "D4|[regular]:8" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "group.representations[\"regular\"]" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "057a075e", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(+, 0[2pi/4])\n", - "(8, 8)\n", - "(+, 1[2pi/4])\n", - "(8, 8)\n", - "(+, 2[2pi/4])\n", - "(8, 8)\n", - "(+, 3[2pi/4])\n", - "(8, 8)\n", - "(-, 0[2pi/4])\n", - "(8, 8)\n", - "(-, 1[2pi/4])\n", - "(8, 8)\n", - "(-, 2[2pi/4])\n", - "(8, 8)\n", - "(-, 3[2pi/4])\n", - "(8, 8)\n" - ] - } - ], - "source": [ - "for g in group.elements:\n", - " print(g)\n", - " #print(group.representations[\"regular\"](g))\n", - " print(group.representations[\"regular\"](g).shape)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "aab3f9dd", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "gagf", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.12" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/notebooks/fourier_power_only.svg b/notebooks/fourier_power_only.svg deleted file mode 100644 index a30194b..0000000 --- a/notebooks/fourier_power_only.svg +++ /dev/null @@ -1,1395 +0,0 @@ - - - - - - - - 2025-12-09T14:05:52.768624 - image/svg+xml - - - Matplotlib v3.10.7, https://matplotlib.org/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/notebooks/group_defining_rep.ipynb b/notebooks/group_defining_rep.ipynb deleted file mode 100644 index 1f43df5..0000000 --- a/notebooks/group_defining_rep.ipynb +++ /dev/null @@ -1,290 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "8059d277", - "metadata": {}, - "source": [ - "# Finite Groups (Dihedral Only)\n", - "\n", - "This notebook runs the modular arithmetic task on any finite group (available in package escnn) using the regular representation acting on the domain of the encoding vector `template`.\n", - "\n", - "This is only a work in progress" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "556651c7", - "metadata": {}, - "outputs": [ - { - "ename": "ModuleNotFoundError", - "evalue": "No module named 'escnn'", - "output_type": "error", - "traceback": [ - "\u001b[31m---------------------------------------------------------------------------\u001b[39m", - "\u001b[31mModuleNotFoundError\u001b[39m Traceback (most recent call last)", - "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[1]\u001b[39m\u001b[32m, line 1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m1\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mescnn\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mgroup\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m *\n\u001b[32m 3\u001b[39m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mmatplotlib\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mpyplot\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mplt\u001b[39;00m\n\u001b[32m 4\u001b[39m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mnumpy\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mnp\u001b[39;00m\n", - "\u001b[31mModuleNotFoundError\u001b[39m: No module named 'escnn'" - ] - } - ], - "source": [ - "from escnn.group import *\n", - "\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "\n", - "group = DihedralGroup(3)\n", - "\n", - "g = group.elements[3]\n", - "g.param # use this to do the defining representation instead\n", - "\n", - "group.PARAMETRIZATIONS\n", - "\n", - "g.to(\"MAT\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "730274b5", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "type(mat): , mat=[[ 1. -0.]\n", - " [ 0. 1.]]\n", - "type(mat): , mat=[[-0.5 -0.8660254]\n", - " [ 0.8660254 -0.5 ]]\n", - "type(mat): , mat=[[-0.5 0.8660254]\n", - " [-0.8660254 -0.5 ]]\n", - "type(mat): , mat=[[ 1. -0.]\n", - " [ 0. 1.]]\n", - "type(mat): , mat=[[-0.5 -0.8660254]\n", - " [ 0.8660254 -0.5 ]]\n", - "type(mat): , mat=[[-0.5 0.8660254]\n", - " [-0.8660254 -0.5 ]]\n" - ] - }, - { - "data": { - "image/png": "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vXqpfPnyyewsAAD2QXYnb93dvXt33bp1S66urnr22Wc1bdo0zuAHDACWWrhwoSEpyc3DwyPevpKM0aNHx37ds2dPo2DBgsalS5fi7de5c2cjR44cxp07dwzDMIz169cbkoxy5coZ4eHhsft16dLFsNlsRosWLeIdX6tWLaN48eKxX//999+Gq6urMXHixHj77d+/33Bzc4t3e7169QxJxpIlS2JvCwsLMwoUKGB06NAh9rYdO3YYkoyFCxcmr1H/r2/fvrH9cXFxMV544QXjypUrKboPAAD+C7J7YfIaZRjGhx9+aOTIkcO4cOFC7M8qW7Zsso8HAOBxILsXJqtPmzZtMjp06GAsWLDA+OWXX4xJkyYZuXPnNjJmzGjs3r07WfcBpFVczgVwEHPmzNHq1avjbStWrDDd3zAM/fjjj2rdurUMw9ClS5dit2bNmun69evavXt3vGO6du0qd3f32K9r1qwpwzDUo0ePePvVrFlTp06din3r1k8//aTo6Gh16tQp3s8pUKCAPD09tX79+njHZ82aVa+88krs1xkyZFCNGjV07NixR+5PjIEDB2r16tVavHixWrRooaioKIWHh//n+wUAIKXI7ge7fPmyRo0apZEjRypv3ryPfD8AADwuZPeD1a5dWz/88IN69OihNm3aaNiwYdq6datsNpuGDx/+yPcLpAVczgVwEDVq1EjR26MuXryoa9euad68eZo3b16S+1y4cCHe18WKFYv3dY4cOSRJRYsWTXR7dHS0rl+/rty5cys0NFSGYcjT0zPJnxP3PxAkqUiRIrLZbPFue+KJJ7Rv376H/2IP4ePjIx8fH0n3/+OkadOmat26tbZt25boZwIAYE9k94O9//77ypUrl958881Hvg8AAB4nsjvlnnrqKbVt21Y//fSToqKi5Orq+ljvH3AWDNEBJxUdHS1JeuWVV9StW7ck96lQoUK8r83Czux2wzBif5bNZtOKFSuS3Ddr1qwpur/H6YUXXlDfvn0VEhIib2/vx37/AAA8Lukpu0NDQzVv3jz5+/vrn3/+ib393r17ioiI0N9//63s2bMrV65cj3T/AACkhvSU3Q9StGhRhYeH6/bt28qePftjv3/AGTBEB5xU3rx5lS1bNkVFRalx48Z2/VlPPvmkDMNQyZIl5eXl9Vju83GdNX737l1J9z8gBgAAR5aesvvMmTOK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9tayZcu0YsUK+fj46OLFi+rTp4+qVaumjRs32rFYAADwCNEdm93Lly+Xt7e3Ll68qN69e5PdAACkApvNpozuGSVJbi7JC28vLy/99ttvrLsBwMExRMdDNW/eXPv27ZO/v79y5MihwMBA1atXTy+++KJOnDhhdXkAACCBFi1aaP/+/fLz8yO7AQBwAnHX3Tlz5ozN7k6dOpHdAOAAGKIjWdzd3eXr66vQ0FD169dPLi4u+u677+Tj46NRo0bp9u3bVpcIAADicHd318CBA5PM7tGjR5PdAAA4mLjr7v79+8vFxUXff/89624AcAAM0ZEiefPm1ccff6w9e/aofv36unfvnsaPHy9vb2999dVXMgzD6hIBAEAcMdm9e/fu2OweN26cfHx8yG4AABxQnjx59NFHH2nPnj1q0KBBvHX3l19+SXYDgAUYouORVKhQQevWrdOPP/6oEiVK6MyZM3r55ZdVp04d7dixw+ryAABAAhUrVtS6dev0ww8/qESJEjp9+nRsdu/cudPq8gAAQAIVKlTQ2rVr4627X3nlFT3zzDOsuwEglTFExyOz2Wxq3769Dh8+rIkTJypLlizavHmzatSooe7du+vs2bNWlwgAAOKw2Wzq0KFDouyuXr26evTooXPnzlldIgAAiCPuuvuDDz5QlixZtGXLFtbdAJDKGKLjP8uYMaNGjBihkJAQde3aVZK0aNEieXl5acqUKQoLC7O4QgAAEFdMdgcHB+vVV1+VJC1cuFCenp5kNwAADihjxowaPnx4kuvuyZMn6969exZXCABpG0N0PDaFChXS4sWLtXXrVtWsWVO3bt3SsGHDVKZMGf38889ctw0AAAdTuHBhLVmyJPaMtpjsLlu2rH755ReyGwAAB5PUunv48OEqW7Ys624AsCOG6Hjsatasqc2bN2vJkiUqWLCgjh07pueff15NmjTRgQMHrC4PAAAk8PTTT2vLli2x2X306FG1a9dOTZs2JbsBAHBAcdfdhQoVYt0NAHbGEB124eLioldffVUhISF677335OHhobVr16pixYoaMGCALl++bHWJAAAgjrjZPWLECHl4eGjNmjWqVKkS2Q0AgAOKye7g4GDW3QBgZwzRYVdZs2bVhAkTdPjwYXXo0EHR0dGaM2eOPD09NXv2bEVERFhdIgAAiCNr1qyaOHFibHZHRUXFZveHH36oyMhI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z6/58+ez7gbg1BiiA5KqVKmiDz74QJ9//rmKFCmiEydOqFOnTqpfv74CAwOtLg8AACRQtWpVTZo0KV52d+zYUQ0aNCC7AQBwQKy7ATgzhujA/7PZbHrxxRcVHBysMWPGKFOmTNq4caOqVKmivn376sKFC1aXCAAA4oib3aNHj1bGjBn1xx9/qGrVqurbt68uXrxodYkAACAO1t0AnBVDdCCBzJkza/To0QoKClLnzp1lGIbmzZsnT09PzZw5U+Hh4VaXCAAA4sicObPGjBmj4OBgde7cWdHR0bHZ7efnR3YDAOBgWHcDcDYM0QETxYoV09dff60///xTVapU0Y0bNzR48GCVL19ey5cvt7o8AACQQEx2b9y4UZUrV9b169c1aNAgVahQQStWrLC6PAAAkADrbgDOgiE68BB16tTR9u3btWDBAuXLl08hISFq1aqVWrRooaCgIKvLAwAACTz77LPasWOH5s+fr3z58ik4OFgtW7ZUq1atFBwcbHV5AAAgAbN1d8uWLVl3A3AIDNGBZHB1dVWPHj0UGhqqIUOGyN3dXStXrlT58uX19ttv69q1a1aXCAAA4nB1dVXPnj3jZffy5ctVrlw5DRo0iOwGAMDBJLXuXrFiBetuAA6BITqQAtmzZ9fUqVN18OBBtW7dWpGRkfL395enp6c++eQTRUVFWV0iAACII6ns9vPzk6enp+bNm0d2AwDgYFh3A3BEDNGBR+Dp6alff/1Vq1atUpkyZXTp0iX169dPVapU0YYNG6wuDwAAJBCT3StXrlTp0qV16dIl9e3bV1WrViW7AQBwQHHX3THZzbobgFUYogP/QdOmTRUYGKhZs2YpZ86c2rdvnxo0aKAXXnhBx48ft7o8AACQQLNmzbR3797Y7N67d68aNGigjh076u+//7a6PAAAkEDTpk3jZTfrbgBWYIgO/Efu7u568803FRoaqtdff10uLi768ccfVbp0ab3//vu6deuW1SUCAIA4ksruH374QT4+Pho5cqRu375tdYkAACAO1t0ArMYQHXhM8uTJozlz5igwMFANGzZUWFiYJk6cKG9vb33xxReKjo62ukQAABBHUtk9YcIEshsAAAfFuhuAVRiiA49Z+fLltWbNGi1dulSlSpXSP//8o1dffVW1a9fWtm3brC4PAAAkEDe7S5YsqTNnzujVV1/VM888o+3bt1tdHgAASIB1N4DUxhAdsAObzaZ27drp4MGDmjRpkrJmzapt27bp6aefVrdu3fTPP/9YXSIAAIgjJrsPHTqkSZMmKUuWLNq6datq1qyp1157jewGAMDBJFx3Z8mShXU3ALthiA7YUcaMGTVs2DCFhITotddekyQtWbJEXl5e+uCDD3Tv3j1rCwQAAPHEze5u3bpJkhYvXiwvLy9NmjSJ7AYAwMHEZHdoaGiidTfZDeBxYYgOpIKCBQtq4cKF2r59u55++mndvn1b7733nkqXLq2ffvpJhmFYXSIAAIijUKFCWrRoUewZbbdv39aIESNUpkwZLV26lOwGAMDBJLXujslu1t0A/iuG6EAqql69ujZv3qwvvvhChQsX1t9//60OHTqoUaNG2rdvn9XlAQCABGrUqBGb3YUKFdLx48fVvn17NW7cWPv377e6PAAAkEDCdffx48dZdwP4zxiiA6nMZrPp5ZdfVnBwsEaOHKmMGTNq/fr1qly5svr3769Lly5ZXSIAAIgjbna///778vDw0Lp161SpUiW9/vrrZDcAAA6GdTeAx40hOmCRLFmyaNy4cTp8+LA6duyo6OhozZ07V56engoICFBERITVJQIAgDiyZs2q8ePHKygoKDa7P/74Y3l6emrWrFlkNwAADoZ1N4DHhSE6YLESJUrou+++0x9//KFKlSrp2rVrGjhwoCpUqKCVK1daXR4AAEggJrs3bNigihUr6tq1a/L19VXFihW1atUqq8sDAAAJJJXdMetushtAcjBEBxxE3bp1tXPnTs2bN0958+ZVUFCQWrRooeeee04hISFWlwcAABKoV6+edu3apU8++UR58uTR4cOH1bx5c7Vu3ZrsBgDAAcVk97x585QnTx4FBQWR3QCShSE64EBcXV3Vu3dvhYSEaNCgQXJzc9Pvv/+ucuXK6Z133tH169etLhEAAMTh6uqqPn36KDQ0NDa7ly1bpnLlymnIkCFkNwAADiZm3Z1UdrPuBmCGITrggHLmzKkZM2bowIEDatWqlSIiIjRjxgx5enrq008/VVRUlNUlAgCAOOJmd8uWLRUREaHp06fLy8tLCxYsILsBAHAwD1p3z58/n+wGEA9DdMCBeXt7a9myZVq+fLm8vb118eJF9enTR9WqVdPGjRutLg8AACTg7e2t33//Xb///ru8vb114cIF9erVS9WrV9eff/5p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+uuvy8XFRT/++KNKly6t999/X7du3bK6RAAAEIe7u7veeusthYaGqn///nJxcdH333+v0qVLa+TIkbp9+7bVJQIAgDiSyu4ffvhBPj4+ZDfSBYboANKMPHnyaM6cOQoMDFTDhg0VFhamiRMnytvbW1988YWio6OtLhEAAMSRJ08effTRRwoMDFSDBg107949TZgwQd7e3vryyy9lGIbVJQIAgDhisnvPnj1q0KCBwsLCYrObdTfSMoboANKc8uXLa82aNVq6dKlKliypf/75R6+++qqeeeYZbd++3eryAABAAuXLl9fatWv1008/qWTJkjpz5oxeeeUVPfPMM9qxY4fV5QEAgAQqVKigtWvX6scff4zNbtbdSMsYogNIk2w2m9q1a6dDhw5p0qRJypIli7Zu3aqaNWuqW7du+ueff6wuEQAAxGGz2fT888/r0KFD+uCDD5QlSxZt2bJFNWrUUPfu3XX27FmrSwQAAHHYbDa1b98+XnbHrLtfe+01shtpCkN0AGlaxowZNWzYMIWEhKhbt26SpCVLlsjLy0uTJk3SvXv3LK4QAADElTFjRg0fPjxedi9atEheXl6aPHky2Q0AgIOJm91du3aVJC1evJh1N9IUhugA0oVChQpp0aJF2rZtm55++mndvn1bI0aMUJkyZfTTTz9xzVUAABxMwuy+deuWhg8frrJly+rnn38muwEAcDCFChXS4sWLtW3bNtWsWVO3bt2KXXcvXbqU7IZTY4gOIF2pUaOGNm/erC+++EKFChXS8ePH1aFDBzVq1Ej79u2zujwAAJBAjRo1tGnTptjsPnbsmJ5//nk1btxY+/fvt7o8AACQQMy6+/PPP49dd7dv357shlNjiA4g3bHZbHr55ZcVHBys999/Xx4eHlq/fr0qV66s/v3769KlSw+9j5CQf/+9d6/EB5ADAGA/Li4uibJ73bp1qlSpkt544w1dvnz5ofcRfClYEdERkqTDlw4r2iC8AQCwFxcXF73yyisKDg7We++9Fy+7X3/99WStuxUSIkXcz24FBbHwhqUYogNIt7Jmzarx48crKChIHTt2VHR0tObOnStPT08FBAQoIias/19EhP6vvfuPyrq+/z/+uPjhhWRAKgKeqYEatPxd08GW4qRA/Hb0dGbT/DTdt2XTdpJpGrlNP5YepyvbsVl21iZup7XVOWo7ZTklOJ2K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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Define triangle vertices and colors\n", - "triangle = np.array([\n", - " [1, 0], # First vertex\n", - " [-0.5, 0.866], # Second vertex \n", - " [-0.5, -0.866] # Third vertex\n", - "])\n", - "\n", - "# Define colors for vertices\n", - "colors = ['red', 'green', 'blue']\n", - "\n", - "# Create figure with 2 rows and 3 columns\n", - "fig, axes = plt.subplots(2, 3, figsize=(15, 10))\n", - "axes = axes.flatten()\n", - "\n", - "# Plot for each group element\n", - "for idx, g in enumerate(group.elements):\n", - " # Get transformation matrix\n", - " s, mat = g.to(\"MAT\")\n", - " \n", - " # Transform triangle vertices\n", - " transformed = triangle @ mat.T\n", - " # Apply reflection if s=1 (reflection element)\n", - " if s == 1:\n", - " transformed = transformed * [-1, 1] # Reflect across y-axis\n", - " \n", - " # Plot original points with colors\n", - " ax = axes[idx]\n", - " ax.scatter(transformed[:,0], transformed[:,1], c=colors, s=100)\n", - " \n", - " # Plot triangle edges by connecting vertices\n", - " # Connect vertices in order, including back to first vertex\n", - " for i in range(len(transformed)):\n", - " j = (i + 1) % len(transformed) # Next vertex (wraps around to 0)\n", - " ax.plot([transformed[i,0], transformed[j,0]], \n", - " [transformed[i,1], transformed[j,1]], \n", - " 'k-') # Black solid line\n", - " \n", - " # Plot barycenter (origin)\n", - " ax.scatter(0, 0, c='black', marker='x')\n", - " \n", - " # Set equal aspect ratio and limits\n", - " ax.set_aspect('equal')\n", - " ax.set_xlim(-1.5, 1.5)\n", - " ax.set_ylim(-1.5, 1.5)\n", - " \n", - " # Add grid\n", - " ax.grid(True)\n", - " \n", - " # Add title showing group element\n", - " ax.set_title(f'Element {idx}')\n", - "\n", - "plt.tight_layout()\n", - "plt.show()\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "975b1502", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['int', 'radians', 'MAT']" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "group.PARAMETRIZATIONS " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "b5fe930a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(+, 1[2pi/3])" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "group.elements[1]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# TODO: Check if dataset is correctly centered (see paper on generating dataset)\n", - "def group_dataset(group, template, representation=\"defining\"):\n", - " \"\"\"Generate a dataset of group elements acting on the template.\n", - "\n", - " Using the \"defining\" representation.\n", - "\n", - " N = group.order() // 2 for the dihedral group.\n", - " \n", - " Parameters\n", - " ----------\n", - " group : Group (escnn object)\n", - " The group.\n", - " template : np.ndarray, shape=[N]\n", - " The template to generate the dataset from.\n", - "\n", - " Returns\n", - " -------\n", - " X : np.ndarray, shape=[N**2, 2, N]\n", - " The dataset of group elements acting on the template. \n", - " Y : np.ndarray, shape=[N**2, N]\n", - " The dataset of group elements acting on the template.\n", - " \"\"\"\n", - " \n", - " # Initialize data arrays\n", - " N = group.order() // 2\n", - "\n", - " # This create a \"template\" of N points on the unit circle\n", - " # such that each point is associated with a scalar value (its color)\n", - " assert len(template) == N, \"template must have the same length as the group order\"\n", - " template_coordinates = np.array([\n", - " [np.cos(2 * np.pi * k / N), np.sin(2 * np.pi * k / N)] \n", - " for k in range(N)\n", - " ])\n", - "\n", - " n_samples = N ** 2\n", - " X = np.zeros((n_samples, 2, N))\n", - " Y = np.zeros((n_samples, N))\n", - "\n", - " # Generate transformed coordinates and values for each group element\n", - " transformed_coords = np.zeros((len(group.elements), N, 2))\n", - " transformed_values = np.zeros((len(group.elements), N))\n", - " \n", - " for i, g in enumerate(group.elements):\n", - " # Decompose into sign and rotation matrix\n", - " s, mat = g.to(\"MAT\")\n", - " \n", - " # Transform coordinates by applying rotation matrix\n", - " rotated_coords = template_coordinates @ mat.T\n", - " \n", - " # Apply reflection if s = -1\n", - " if s > 0:\n", - " rotated_coords = -rotated_coords\n", - " \n", - " transformed_coords[i] = rotated_coords\n", - " \n", - " # Similarly transform the template values\n", - " transformed_values[i] = template if s > 0 else template[::-1]\n", - " \n", - " # Generate the dataset\n", - " idx = 0\n", - " for a in range(N):\n", - " for b in range(N):\n", - " for sa in (-1, 1):\n", - " for sb in (-1, 1): \n", - " X[idx, 0, :] = np.roll(template, a)[::sa] # reverse or does not reverse the order, depending on sa.\n", - " X[idx, 1, :] = np.roll(template, b)[::sb]\n", - " Y[idx, :] = np.roll(np.roll(template, a)[::sa], b)[::sb]\n", - " idx += 1\n", - " \n", - " return X, Y" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "02fd0dd7", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "gagf", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.12" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/notebooks/group_regular_rep.ipynb b/notebooks/group_regular_rep.ipynb deleted file mode 100644 index af124e6..0000000 --- a/notebooks/group_regular_rep.ipynb +++ /dev/null @@ -1,222005 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "51d11caf-0971-4324-b63b-819b714a9c3c", - "metadata": {}, - "source": [ - "# Finite Groups\n", - "\n", - "This notebook runs the modular arithmetic task on any finite group (available in package escnn) using the regular representation acting on the domain of the encoding vector `template`." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "80f249f1-6985-4c73-86cd-04e1adac3e8d", - "metadata": {}, - "outputs": [], - "source": [ - "import random\n", - "import datetime\n", - "import matplotlib.pyplot as plt\n", - "from matplotlib.ticker import MaxNLocator\n", - "import numpy as np\n", - "import torch\n", - "import torch.nn as nn\n", - "import torch.optim as optim\n", - "from torch.utils.data import DataLoader, TensorDataset\n", - "\n", - "from escnn.group import *" - ] - }, - { - "cell_type": "markdown", - "id": "5766b2da", - "metadata": {}, - "source": [ - "# Group Fourier Transform and Inverse" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "9fddca08", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Fourier coef of irrep_0,0: [[-0.17237735]] float64\n", - "Fourier coef of irrep_1,0: [[-4.64588463]] float64\n", - "Fourier coef of irrep_1,1: [[-0.51882576 -2.32793326]\n", - " [-1.5278462 -0.93688628]] float64\n" - ] - }, - { - "data": { - "text/plain": [ - "array([0.00495233, 3.597374 , 2.96684113])" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "N = 3\n", - "group = DihedralGroup(N)\n", - "template = np.random.randn(group.order())\n", - "\n", - "\n", - "def compute_group_fourier_coef(group, template, irrep):\n", - " \"\"\"Compute the Fourier coefficient of template x at irrep rho.\n", - " \n", - " hat x [rho] = sum_{g in G} x[g] * rho(g).conj().T\n", - "\n", - " Formula from the Group-AGF paper.\n", - " \n", - " Parameters\n", - " ----------\n", - " group : Group\n", - " The group (escnn object)\n", - " template : np.ndarray, shape=[group.order()]\n", - " The template to compute the Fourier coefficient of.\n", - " irrep : IrreducibleRepresentation\n", - " The irrep (escnn object).\n", - "\n", - " Returns\n", - " -------\n", - " _ : np.ndarray, shape=[irrep.size, irrep.size]\n", - " The (matrix) Fourier coefficient of template x at irrep rho.\n", - " \"\"\"\n", - " return sum([template[i_g] * irrep(g).conj().T for i_g, g in enumerate(group.elements)])\n", - "\n", - "def compute_group_fourier_transform(group, template):\n", - " \"\"\"Compute the group Fourier transform of the template.\n", - " \n", - " Parameters\n", - " ----------\n", - " group : Group\n", - " The group (escnn object)\n", - " template : np.ndarray, shape=[group.order()]\n", - " The template to compute the Fourier transform of.\n", - " \n", - " Returns\n", - " -------\n", - " _: list of np.ndarray, each of shape=[irrep.size, irrep.size]\n", - " A list of (matrix) Fourier coefficients of template at each irrep.\n", - " Since each irrep has a different size (dimension), the (matrix) Fourier\n", - " coefficients have different shapes: the list cannot be concatenated\n", - " into a single array.\n", - " \"\"\"\n", - " irreps = group.irreps()\n", - " fourier_coefs = []\n", - " for irrep in irreps:\n", - " fourier_coef = compute_group_fourier_coef(group, template, irrep)\n", - " fourier_coefs.append(fourier_coef)\n", - " return fourier_coefs\n", - "\n", - "def compute_group_inverse_fourier_element(group, fourier_transform, g):\n", - " \"\"\"Compute the inverse Fourier transform at element g.\n", - " \n", - " Using the formula (Wikipedia):\n", - " x(g) = 1/|G| * sum_{rho in irreps} dim(rho) * Tr(rho(g) * hat x[rho])\n", - "\n", - " Parameters\n", - " ----------\n", - " group : Group (escnn object)\n", - " The group.\n", - " fourier_transform : list of np.ndarray, each of shape=[irrep.size, irrep.size]\n", - " The (matrix) Fourier coefficients of template at each irrep.\n", - " g : GroupElement (escnn object)\n", - " The element of the group to compute the inverse Fourier transform at.\n", - "\n", - " Returns\n", - " -------\n", - " _ : np.ndarray, shape=[group.order()]\n", - " The inverse Fourier transform at element g.\n", - " \"\"\"\n", - " irreps = group.irreps()\n", - " inverse_fourier_element = 1/group.order() * sum(\n", - " [irrep.size * np.trace(irrep(g) @ fourier_transform[i]) \n", - " for i, irrep in enumerate(irreps)])\n", - " return inverse_fourier_element\n", - "\n", - "def compute_group_inverse_fourier_transform(group, fourier_transform):\n", - " \"\"\"Compute the inverse Fourier transform.\n", - " \n", - " Parameters\n", - " ----------\n", - " group : Group (escnn object)\n", - " The group.\n", - " fourier_transform : list of np.ndarray, each of shape=[irrep.size, irrep.size]\n", - " The (matrix) Fourier coefficients of template at each irrep.\n", - " \n", - " Returns\n", - " -------\n", - " _ : np.ndarray, shape=[group.order()]\n", - " The inverse Fourier transform: a signal over the group.\n", - " \"\"\"\n", - " return np.array([\n", - " compute_group_inverse_fourier_element(\n", - " group, fourier_transform, g) for g in group.elements])\n", - "\n", - "def group_power_spectrum(group, template):\n", - " \"\"\"Compute the (group) power spectrum of the template.\n", - "\n", - " For each irrep rho, the power is given by:\n", - " ||hat x(rho)||_rho = dim(rho) * Tr(hat x(rho)^dagger * hat x(rho))\n", - " where hat x(rho) is the (matrix) Fourier coefficient of template x at irrep rho.\n", - "\n", - " We multiply by the dimension of the irrep because for 2D irreps, the power\n", - " would otherwise be split across two dimensions, so we must double it to get the correct \n", - " total power.\n", - "\n", - " Parameters\n", - " ----------\n", - " group : Group (escnn object)\n", - " The group.\n", - " template : np.ndarray, shape=[group.order()]\n", - " The template to compute the power spectrum of.\n", - "\n", - " Returns\n", - " -------\n", - " _ : np.ndarray, shape=[len(group.irreps())]\n", - " The power spectrum of the template.\n", - " \"\"\"\n", - " \n", - " irreps = group.irreps()\n", - "\n", - " power_spectrum = np.zeros(len(irreps))\n", - " for i, irrep in enumerate(irreps):\n", - " fourier_coef = compute_group_fourier_coef(group, template, irrep)\n", - " power_spectrum[i] = irrep.size * np.trace(fourier_coef.conj().T @ fourier_coef) # TODO: check if this is correct \n", - " # print(f\"Power of {irrep.name}: {power_spectrum[i]}, type: {type(power_spectrum[i])}\")\n", - " power_spectrum = power_spectrum/group.order()\n", - " \n", - " return np.array(power_spectrum)\n", - "\n", - "# Test functions:\n", - "for test_irrep in group.irreps():\n", - " fourier_coef = compute_group_fourier_coef(group, template, test_irrep)\n", - " print(f\"Fourier coef of {test_irrep.name}: {fourier_coef}\", fourier_coef.dtype)\n", - "\n", - "group_power_spectrum(group, template)\n", - "\n", - "#Note: https://groupprops.subwiki.org/wiki/Linear_representation_theory_of_dihedral_groups\n", - "# all dihedral groups are ambivalent groups -- every element is conjugate to its inverse. \n", - "# Thus, all the irreducible representations of a dihedral group over the complex numbers can be realized over the real numbers." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "579bdc29", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAGGCAYAAABmGOKbAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAg65JREFUeJzt3XmcTfUfx/HXnRkz1rHv2yAJWUJJYShLKiVK9iUVRRESv7KmlIRWtAhJm5A2TIRICzWRkDX7vs7YZjm/P77dMcPMGNe999zl/Xw8PJx77rnnfubrms/9nPNdHJZlWYiIiIiIiIiI24XYHYCIiIiIiIhIoFLRLSIiIiIiIuIhKrpFREREREREPERFt4iIiIiIiIiHqOgWERERERER8RAV3SIiIiIiIiIeoqJbRERERERExENUdIuIiIiIiIh4iIpuEREREREREQ9R0S3iBSNGjMDhcLj02mnTpuFwONixY4d7g0plx44dOBwOpk2b5rH3sEtUVBTdunWzOwwRERG/o+8HIu6holskE+vXr6dTp06ULFmSiIgISpQoQceOHVm/fr3doXldVFQUDofjsn8CJTHv3buXESNGEBsba3coIiJ+xXmx2PknLCyMkiVL0q1bN/bs2WN3eG739ttv25777IxB3w9ELi/M7gBEfNWcOXNo3749BQoUoEePHpQrV44dO3bw/vvvM3v2bD755BPuu+++LJ3rueeeY/DgwS7F0blzZ9q1a0dERIRLr3eXiRMnEhcXl/L422+/5eOPP2bChAkUKlQoZf8tt9xiR3hut3fvXkaOHElUVBQ1a9a0OxwREb8zatQoypUrx9mzZ/n555+ZNm0aK1as4K+//iJ79ux2h+c2b7/9NoUKFbL1rqmdMej7gcjlqegWScfWrVvp3Lkz5cuXZ/ny5RQuXDjlub59+9KgQQM6d+7M2rVrKV++fIbniY+PJ1euXISFhREW5tp/t9DQUEJDQ116rTu1atUqzeP9+/fz8ccf06pVK6KiomyJSUREfFeLFi2oU6cOAA8//DCFChXi5ZdfZv78+bRt29bm6Ozh/F4QSPT9QOTy1L1cJB2vvPIKp0+f5p133klTcAMUKlSIKVOmEB8fz9ixY1P2O8dt//3333To0IH8+fNTv379NM+ldubMGZ588kkKFSpEnjx5uOeee9izZw8Oh4MRI0akHJfemO6oqCjuvvtuVqxYwU033UT27NkpX748M2bMSPMeR48eZeDAgVSrVo3cuXMTGRlJixYt+PPPP93UUpeaOXMmtWvXJkeOHBQoUIB27dqxa9euNMc0atSI66+/nrVr1xIdHU3OnDm55pprmD17NgDLli2jbt265MiRg0qVKvH999+neb2zPTdu3Ejbtm2JjIykYMGC9O3bl7Nnz2YaX1baZOnSpdx4440AdO/ePd2ucb/88gt33HEHefPmJWfOnERHR7Ny5cqraToRkYDWoEEDwFzYTm3jxo3cf//9FChQgOzZs1OnTh3mz59/yeuPHz/OU089RVRUFBEREZQqVYouXbpw+PDhlGMOHjxIjx49KFq0KNmzZ6dGjRpMnz49zXmc45THjRvHO++8Q4UKFYiIiODGG2/kt99+S3Ps/v376d69O6VKlSIiIoLixYtz7733puTkqKgo1q9fz7Jly1JyRaNGjYAL+XvZsmU8/vjjFClShFKlSgHQrVu3dAvSjOaAmTlzJjfddBM5c+Ykf/78NGzYkEWLFl02Bme79evXj9KlSxMREcE111zDyy+/THJy8iXt261bN/LmzUu+fPno2rUrx48fvyQWV+n7gQQz3ekWScdXX31FVFRUyheEizVs2JCoqCi++eabS5574IEHqFixIi+++CKWZWX4Ht26deOzzz6jc+fO3HzzzSxbtoy77roryzFu2bKF+++/nx49etC1a1emTp1Kt27dqF27NlWrVgVg27ZtzJs3jwceeIBy5cpx4MABpkyZQnR0NH///TclSpTI8vtlxQsvvMDQoUNp27YtDz/8MIcOHeKNN96gYcOG/PHHH+TLly/l2GPHjnH33XfTrl07HnjgASZNmkS7du346KOP6NevH7169aJDhw688sor3H///ezatYs8efKkeb+2bdsSFRXFmDFj+Pnnn3n99dc5duzYJRcfUstKm1SuXJlRo0YxbNgwHn300ZTPgbNr3JIlS2jRogW1a9dm+PDhhISE8MEHH3Dbbbfx448/ctNNN7m1XUVEAoGzUM2fP3/KvvXr13PrrbdSsmRJBg8eTK5cufjss89o1aoVX3zxRcowrri4OBo0aMCGDRt46KGHqFWrFocPH2b+/Pns3r2bQoUKcebMGRo1asSWLVvo06cP5cqV4/PPP6dbt24cP36cvn37poln1qxZnDp1ip49e+JwOBg7diytW7dm27ZtZMuWDYA2bdqwfv16nnjiCaKiojh48CAxMTHs3LmTqKgoJk6cyBNPPEHu3Ll59tlnAShatGia93n88ccpXLgww4YNIz4+/orbbeTIkYwYMYJbbrmFUaNGER4ezi+//MKSJUto1qxZpjGcPn2a6Oho9uzZQ8+ePSlTpgw//fQTQ4YMYd++fUycOBEAy7K49957WbFiBb169aJy5crMnTuXrl27XnG86dH3A30/CHqWiKRx/PhxC7DuvffeTI+75557LMA6efKkZVmWNXz4cAuw2rdvf8mxzuec1qxZYwFWv3790hzXrVs3C7CGDx+esu+DDz6wAGv79u0p+8qWLWsB1vLly1P2HTx40IqIiLAGDBiQsu/s2bNWUlJSmvfYvn27FRERYY0aNSrNPsD64IMPMv2ZU3vllVfSxLVjxw4rNDTUeuGFF9Ict27dOissLCzN/ujoaAuwZs2albJv48aNFmCFhIRYP//8c8r+hQsXXhKbsz3vueeeNO/1+OOPW4D1559/puwrW7as1bVr1ytuk99++y3dNklOTrYqVqxoNW/e3EpOTk7Zf/r0aatcuXJW06ZNM2gxEZHg4Mxb33//vXXo0CFr165d1uzZs63ChQtbERER1q5du1KOvf32261q1apZZ8+eTdmXnJxs3XLLLVbFihVT9g0bNswCrDlz5lzyfs7fxRMnTrQAa+bMmSnPnT9/3qpXr56VO3fulHztzHkFCxa0jh49mnLsl19+aQHWV199ZVmWZR07dswCrFdeeSXTn7dq1apWdHR0hu1Qv359KzExMc1zXbt2tcqWLXvJay7+vrB582YrJCTEuu+++y7JXalzUEYxPP/881auXLmsf/75J83+wYMHW6GhodbOnTsty7KsefPmWYA1duzYlGMSExOtBg0a6PuBvh+IG6h7uchFTp06BXDJVdOLOZ8/efJkmv29evW67HssWLAAMFe/U3viiSeyHGeVKlXS3IkvXLgwlSpVYtu2bSn7IiIiCAkx/82TkpI4cuQIuXPnplKlSvz+++9Zfq+smDNnDsnJybRt25bDhw+n/ClWrBgVK1bkhx9+SHN87ty5adeuXcrjSpUqkS9fPipXrkzdunVT9ju3U/9cTr17907z2Nl+3377bYZxXm2bxMbGsnnzZjp06MCRI0dSfs74+Hhuv/12li9ffkmXPRGRYNSkSRMKFy5M6dKluf/++8mVKxfz589P6WJ99OhRlixZQtu2bTl16lTK79MjR47QvHlzNm/enDLb+RdffEGNGjXSncDU2R3722+/pVixYrRv3z7luWzZsvHkk08SFxfHsmXL0rzuwQcfTHPX3ZlTnfkmR44chIeHs3TpUo4dO+ZyOzzyyCMuz80yb948kpOTGTZsWErucsrKUqSff/45DRo0IH/+/Glyc5MmTUhKSmL58uWAabuwsDAee+yxlNeGhoZe0feSjOj7gb4fiLqXi1zCWUw7i++MZFSclytX7rLv8e+//xISEnLJsddcc02W4yxTpswl+/Lnz5/mi0FycjKvvfYab7/9Ntu3bycpKSnluYIFC2b5vbJi8+bNWJZFxYoV033e2VXPqVSpUpd8YcibNy+lS5e+ZB+Q7heei9+rQoUKhISEZLqm+dW2yebNmwEy7XJ34sSJNF/kRESC0VtvvcW1117LiRMnmDp1KsuXL0+zEseWLVuwLIuhQ4cydOjQdM9x8OBBSpYsydatW2nTpk2m7/fvv/9SsWLFS4rTypUrpzyf2sV51Pl725lvIiIiePnllxkwYABFixbl5ptv5u6776ZLly4UK1YsCy1gZOV7QUa2bt1KSEgIVapUcen1mzdvZu3atZfMT+N08OBBwLRN8eLFyZ07d5rnK1Wq5NL7XhyDvh8Y+n4QvFR0i1wkb968FC9enLVr12Z63Nq1aylZsiSRkZFp9ufIkcOT4aXI6Kq5lWoc+YsvvsjQoUN56KGHeP755ylQoAAhISH069fP7Vdbk5OTcTgcfPfdd+nGdnEizyj+rPxcGcnKVf+rbRPnMa+88kqGS4Vc/LOKiASjm266KWX28latWlG/fn06dOjApk2byJ07d8rv04EDB9K8efN0z3ElF6OvVFbyTb9+/WjZsiXz5s1j4cKFDB06lDFjxrBkyRJuuOGGLL1Pet8LMspXqQs9d0hOTqZp06YMGjQo3eevvfZat75fRjHo+4Gh7wfBS0W3SDruvvtu3n33XVasWJEyA3lqP/74Izt27KBnz54unb9s2bIkJyezffv2NFdjt2zZ4nLM6Zk9ezaNGzfm/fffT7P/+PHjadbOdIcKFSpgWRblypXzShIHc1U59R2ELVu2kJycnOkSJVltk4wSdIUKFQCIjIykSZMmVxG9iEjwCA0NZcyYMTRu3Jg333yTwYMHpyy5mS1btsv+Pq1QoQJ//fVXpseULVuWtWvXkpycnOZu98aNG1Oed0WFChUYMGAAAwYMYPPmzdSsWZNXX32VmTNnAlkr6C6WP3/+dGcGv/hufIUKFUhOTubvv//OdE3ozHJWXFzcZdu3bNmyLF68mLi4uDSF4aZNmzJ9XVbo+4GIlgwTSdfTTz9Njhw56NmzJ0eOHEnz3NGjR+nVqxc5c+bk6aefdun8ziv6b7/9dpr9b7zxhmsBZyA0NPSSK8Cff/55yhg5d2rdujWhoaGMHDnykve0LOuSdnSHt956K81jZ/u1aNEiw9dktU2c66he/KWodu3aVKhQgXHjxhEXF3fJ+Q8dOpTl+EVEgkmjRo246aabmDhxImfPnqVIkSI0atSIKVOmsG/fvkuOT/37tE2bNvz555/MnTv3kuOcv9PvvPNO9u/fz6effpryXGJiIm+88Qa5c+cmOjr6iuI9ffr0JctMVahQgTx58nDu3LmUfbly5bripbUqVKjAiRMn0vSq27dv3yU/X6tWrQgJCWHUqFGX3G1NncsyiqFt27asWrWKhQsXXvLc8ePHSUxMBEzbJSYmMmnSpJTnk5KS3PK9RN8PDH0/CG660y2SjooVKzJ9+nQ6duxItWrV6NGjB+XKlWPHjh28//77HD58mI8//jjlquaVql27Nm3atGHixIkcOXIkZcmwf/75B3Dtqnl67r77bkaNGkX37t255ZZbWLduHR999FHK3QV3qlChAqNHj2bIkCHs2LGDVq1akSdPHrZv387cuXN59NFHGThwoFvfc/v27dxzzz3ccccdrFq1ipkzZ9KhQwdq1KiR4Wuy2iYVKlQgX758TJ48mTx58pArVy7q1q1LuXLleO+992jRogVVq1ale/fulCxZkj179vDDDz8QGRnJV1995dafU0QkUDz99NM88MADTJs2jV69evHWW29Rv359qlWrxiOPPEL58uU5cOAAq1atYvfu3SlrJD/99NPMnj2bBx54gIceeojatWtz9OhR5s+fz+TJk6lRowaPPvooU6ZMoVu3bqxZs4aoqChmz57NypUrmThx4mUnSL3YP//8w+23307btm2pUqUKYWFhzJ07lwMHDqSZ6Kt27dpMmjSJ0aNHc80111CkSBFuu+22TM/drl07nnnmGe677z6efPJJTp8+zaRJk7j22mvTTNp1zTXX8Oyzz/L888/ToEEDWrduTUREBL/99hslSpRgzJgxmcbw9NNPM3/+fO6+++6UZUXj4+NZt24ds2fPZseOHRQqVIiWLVty6623MnjwYHbs2EGVKlWYM2cOJ06cuKI2S4++H+j7gaAlw0Qys3btWqt9+/ZW8eLFrWzZslnFihWz2rdvb61bt+6SY53LVBw6dCjD51KLj4+3evfubRUoUMDKnTu31apVK2vTpk0WYL300kspx2W0ZNhdd911yftER0enWTLk7Nmz1oABA6zixYtbOXLksG699VZr1apVlxznjiXDnL744gurfv36Vq5cuaxcuXJZ1113ndW7d29r06ZNaeKsWrXqJefM6OcCrN69e6c8drbn33//bd1///1Wnjx5rPz581t9+vSxzpw5c8k5L14SJCttYllm+ZgqVapYYWFhl7TPH3/8YbVu3doqWLCgFRERYZUtW9Zq27attXjx4iy0nohI4HLmrd9+++2S55KSkqwKFSpYFSpUSFlGa+vWrVaXLl2sYsWKWdmyZbNKlixp3X333dbs2bPTvPbIkSNWnz59rJIlS1rh4eFWqVKlrK5du1qHDx9OOebAgQNW9+7drUKFClnh4eFWtWrVLsltzpyX3lJgpFq28/Dhw1bv3r2t6667zsqVK5eVN29eq27dutZnn32W5jX79++37rrrLitPnjwWkJJLMmsHy7KsRYsWWddff70VHh5uVapUyZo5c2a63xcsy7KmTp1q3XDDDVZERISVP39+Kzo62oqJiblsDJZlWadOnbKGDBliXXPNNVZ4eLhVqFAh65ZbbrHGjRtnnT9/Pk37du7c2YqMjLTy5s1rde7c2frjjz/0/UDfD8QNHJaVhdkHRMQrYmNjueGGG5g5cyYdO3a0OxyfNWLECEaOHMmhQ4fcPjZdRERE/JO+H4iv0phuEZucOXPmkn0TJ04kJCSEhg0b2hCRiIiIiIi4m8Z0i9hk7NixrFmzhsaNGxMWFsZ3333Hd999x6OPPnrJWpQiIiIiIuKfVHSL2OSWW24hJiaG559/nri4OMqUKcOIESN49tln7Q5NRERERETcRGO6RURERERERDxEY7pFREREREREPERFt4iIiIiIiIiHBNyY7uTkZPbu3UuePHlwOBx2hyMiInLFLMvi1KlTlChRgpCQwL0+rpwtIiL+LKv5OuCK7r1792rmZxERCQi7du2iVKlSdofhMcrZIiISCC6XrwOu6M6TJw9gfvDIyMirPl9CQgKLFi2iWbNmZMuW7arPF0zUdq5T27lObec6tZ3r3N12J0+epHTp0ik5LVApZ/sOtZ1r1G6uU9u5Tm3nOrvydcAV3c7uaZGRkW5L4Dlz5iQyMlIf6iuktnOd2s51ajvXqe1c56m2C/Qu18rZvkNt5xq1m+vUdq5T27nOrnwduAPFRERERERERGymoltERERERETEQ1R0i4iIiIiIiHhIwI3pzqqkpCQSEhIue1xCQgJhYWGcPXuWpKQkL0QWOK607bJly0ZoaKgXIhMREX+inO15wdB2+p4hInYJuqLbsiz279/P8ePHs3x8sWLF2LVrV8BPaONurrRdvnz5KFasmNpaRESUs70oWNpO3zNExA5BV3Q7k3eRIkXImTPnZX/pJicnExcXR+7cuTNd8FwudSVtZ1kWp0+f5uDBgwAUL17cGyGKiIgPU872nkBvO33PEBE7BVXRnZSUlJK8CxYsmKXXJCcnc/78ebJnzx6QSciTrrTtcuTIAcDBgwcpUqSIuoCJiAQx5WzvCoa20/cMEbFLYP5WzYBzPFjOnDltjkQy4vy3ycrYPRERX5CUBMuWOVi+vCTLljkI0OGwXqecLZ6g7xkiQSwpCceyZZRcvhzHsmV4M2EHVdHtpHE8vkv/NiLiT+bMgagoaNo0jPHj69C0aRhRUWa/uIfygriTPk8iQeq/hB3WtCl1xo8nrGlTvJmwg7LoFhERuVpz5sD998Pu3Wn379lj9qvwFhER8QE+kLBVdAeBHTt24HA4iI2NzfJrpk2bRr58+WyPQ0TEFyUlQd++YFmXPufc16+fV3uuiQjQrVs3WrVqZXcYIuIrfCRhq+j2I7t27eKhhx6iRIkShIeHU7ZsWfr27cuRI0cyfV3p0qXZt28f119/fZbf68EHH+Sff/652pBFRALSjz9eesE8NcuCXbvMcRJ8unXrhsPhwOFwkC1bNsqVK8egQYM4e/as3aFlydKlS3E4HFlequ1qqVAWEY/xkYStottPbNu2jTp16rB582Y+/vhjtmzZwuTJk1m8eDH16tXj6NGj6b7u/PnzhIaGUqxYMcLCsj5ZfY4cOShSpIi7whcRCSj79rn3OAk8d9xxB/v27WPbtm1MmDCBKVOmMHz4cLvDcqvz58/bHYKISOZ8JGGr6PYTvXv3Jjw8nEWLFhEdHU2ZMmVo0aIF33//PXv27OHZZ58FICoqiueff54uXboQGRnJo48+mm637vnz51OxYkWyZ89O48aNmT59epqr2hd3Lx8xYgQ1a9bkww8/JCoqirx589KuXTtOnTqVcsyCBQuoX78++fLlo2DBgrRs2ZLt27d7o3lERLwqq0v8aing4BUREUGxYsUoXbo0rVq1okmTJsTExABmea4xY8ZQrlw5cuTIQY0aNZg9e3aa169fv567776byMhI8uTJQ4MGDdi6dWvK60eNGkWpUqWIiIigZs2aLFiwIOW1zrw/Z84cGjduTM6cOalRowarVq1KOebff/+lZcuW5M+fn1y5clGtWjUWLVrEjh07aNy4MQD58+fH4XDQrVs3ABo1akSfPn3o168fhQoVonnz5ul+xzh+/DgOh4OlS5de9ucZMWIE06dP58svv0zpHeB83a5du2jbti358uWjQIEC3HvvvezYsSPlnElJSfTv3z/le8egQYOw0utCKiLBy0cSdtAX3ZYF8fH2/MlqXjh69CgLFy7k8ccfT1lj0qlYsWJ07NiRTz/9NCXRjBs3jho1avDHH38wdOjQS863fft27r//flq1asWff/5Jz549U4r2zGzdupV58+bx9ddf8/XXX7Ns2TJeeumllOfj4+Pp378/q1evZvHixYSEhNCpUyeSk5Oz9oOKiPiJBg2gVKmMn3c4oHRpc5y4iT8k7Az89ddf/PTTT4SHhwMwZswYZsyYweTJk1m/fj1PPfUUnTp1YtmyZQDs2bOHhg0bEhERwZIlS1izZg0PPfQQiYmJALz22mu8+uqrjBs3jrVr19K8eXPuueceNm/enOZ9n332WQYOHEhsbCzXXnst7du3TzlH7969OXfuHMuXL2fdunWMGTOGXLlyUbp0ab744gsANm3axL59+3jttddSzjl9+nTCw8NZuXIlkydPztLPn9nPM3DgQNq2bZvSM2Dfvn3ccsstJCQk0Lx5c/LkycOPP/7IypUryZ07N3fccUfKHfZXX32VadOmMXXqVFasWMHRo0eZO3fuVfxLiUjAcSbsjFYu8FLCznp/4wB1+jTkzp3ZESFAPo+8d1wc5Mp1+eM2b96MZVlUrlw53ecrV67MsWPHOHToEAC33XYbAwYMSHk+9VVhgClTplCpUiVeeeUVACpVqsRff/3FCy+8kGkcycnJTJs2jTx58gDQuXNnFi9enPK6Nm3apDn+/fffp2jRovz9999Ur1798j+oiIifCA2F116Di37tARfy+sSJ5jhxk8snbM9l7Kwm7FS+/vprcufOTWJiIufOnSMkJIQ333yTc+fO8eKLL/L9999Tr149AMqXL8+KFSuYMmUK0dHRvPXWW+TNm5dPPvmEbNmyAXDttdemnHvcuHE888wztGvXDoCXX36ZH374gYkTJ/LWW2+lHDdw4EDuuusuAEaOHEnVqlXZsmUL1113HTt37qRNmzZUq1YNMD3lTp48SWhoKAUKFACgSJEil0yqWrFiRcaOHZvy+OLvGOm53M+TI0cOzp07R7FixVL2zZw5k+TkZN57772UZb4++OAD8uXLx9KlS2nWrBkTJ05kyJAhtG7dGoDJkyezcOHCy8YjIkHEmbDvv//S57yYsIP+Trc/yWqXqTp16mT6/KZNm7jxxhvT7Lvpppsue96oqKiUghugePHiHDx4MOXx5s2bad++PeXLlycyMpLy5csDsHPnzizFLSLiT5o3h+zZL91fqhTMng3/1QESpBo3bkxsbCy//PILXbt2pXv37rRp04YtW7Zw+vRpmjZtSu7cuVP+zJgxI6X7eGxsLA0aNEgpUFM7efIke/fu5dZbb02z/9Zbb2XDhg1p9qW+4F38v66Tzrz95JNPMnr0aG699VaGDx/O2rVrs/Rz1a5dO+uN8J/Mfp6M/Pnnn2zZsoU8efKktFGBAgU4e/YsW7du5cSJE+zbt4+6deumvCYsLOyy34FEJAi1bg1t216634sJO+jvdOfMaS5gZyQ5OZmTJ08SGRlJSIh7r1HkzJm146655hocDgcbNmzgvvvuu+T5DRs2kD9/fgoXLgxAriu8Gp9VFydLh8ORput4y5YtKVu2LO+++y4lSpQgMTGR6tWra6IVEQlIc+bA2bNQoQJMmpTIggWxtGhRk8aNw3SH2xMul7DxYM7OasJOJVeuXFxzzTUATJ06lRo1avD++++nrCTyzTffULJkyTSviYiIALhkKJmrUudt591iZ95++OGHad68Od988w2LFi1izJgxjB49moEDB17250rN2c6pbwwkJCSkOcaVnycuLo7atWvz0UcfXfKc8/uOiEiWWBasXg1A0jPP8EdCAjVbtCCscWOvdUkL+qLb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jBpl7oD4AstKu7aneJXHi+4HH3yQcePGMWzYMGrWrElsbCwLFixImXxl586d7Nu3L+X4W265hVmzZvHOO+9Qo0YNZs+ezbx587j++us9HapIQJk4EVasgNy5Tf4OCY5e5QErIuLC97F33oGVK+2Nx8mZv7t00WfM3ylfi9jk+HHTJRngiSfgtttsDUfcoGNHuP12OHsWHn/cN9bu/vln2LwZcuWCNm3sjiboeGUitT59+mR45Xvpf+MKUnvggQd44IEHPByVSOD6++8L63BPmABRUbaGI27SsCE89BBMnQq9epmhYnYOx9qzxyxJCupaHiiUr0Vs0Lev+YVasaIZCyb+z7l2d7VqsGgRfPoptGtnb0zOq+Rt2pg7MuJVui8hEmASEkyvoXPnzMzXzovnEhjGjoVCheCvv+wfKjZzplkurEEDKF/e3lhERPzSvHkwY4bpKjRtGrhx6TyxWcWKF+6A2D0hy9mzpvAHdS23iYpukQDz0kuwejXkywfvvovHlpcSexQseGGo2MiRsG2bPXFoaJiIyFU6fBh69jTbAwfCLbfYG4+436BBcN11cOAApJoTw+vmzzfDGMqUMRP9iNep6BYJILGxZs4OgDffhJIlbQ1HPKRTJzPkz86hYqtXw4YNkD07qHexiMgVsix47DEzO2bVquYqqgSe1BOyTJkCq1bZE4fzKnnnzpqAxSZqdZEAce6cGVebmAitW0OHDnZHJJ7iHCoWHm4mvP3sM+/HMGOG+fu++zTJrojIFfv0U5g9G8LCTEGUPbvdEYmnREfDf6tA8OijZhygN+3fb74sgCm6xRYqukUCxMiRsG6dWRpy0iR1Kw901157YahY376m15i3nD8PH39sttW1XETkCu3bZ7opATz3HNSubW884nmvvHJhQhZvr8E+a5ZZR/bmm6FSJe++t6RQ0S0SAH7+GV5+2WxPngxFitgbj3jHM8+Y/OntoWLffANHjkCJEtCkiffeV0TE71kWPPKImVSrVi343//sjki8oWDBC7OfjhwJ27d77701AYtPUNEt4udOnza/R5OTzVjf1q3tjki8xa6hYs783akThIZ65z1FRALCBx+YK5fh4Wacjp3rPop3de4MjRvDmTPem5AlNhbWrjVfGB580PPvJxlS0S3i5/73P/jnH3PX8fXX7Y5GvK1RI+jWzeTunj09P1Ts0CHzfRF0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F180Y7hFRES8SEV3OubMgfvvNxOkpbZ/v/kTFgb/+x8MHmxmKBcRERGbZJS0jx83f5cvD7NmQd26Xg9NREQEVHRfIinJ3OG+OHenVriwmYclNNR7cYmIiMhFspK0z5/X2G0REbGVBjRd5McfL4zVzsi+feY4ERERsVFWkvbu3UraIiJiKxXdF9m3z73HiYiIiIcoaYuIiB9Q0X2R4sXde5yIiIh4iJK2iIj4ARXdF2nQAEqVMhOdpsfhgNKlzXEiIiJiIyVtERHxAyq6LxIaatbchktzuPPxxImaRE1ERMR2StoiIuIHVHSno3VrmD0bSpZMu79UKbO/dWt74hIREZGLKGmLiIiP05JhGWjdGu69F374IZHvvoulRYuaNG4cpovlIiIivua/pJ34ww/EfvcdNVu0IKxxY93hFhERn6CiOxOhoRAdbREfv4fo6BrK3SIiIr4qNBQrOpo98fHUiI5WwS0iIj5D3ctFREREREREPERFt4iIiIiIiIiHqOgWERERERER8RAV3SIiIiIiIiIeoqJbRERERERExENUdIuIiIiIiIh4SMAtGWZZFgAnT550y/kSEhI4ffo0J0+eJFu2bG45Z7BQ27lObec6tZ3r1Hauc3fbOXOYM6cFKuVs36G2c43azXVqO9ep7VxnV74OuKL71KlTAJQuXdrmSERERK7OqVOnyJs3r91heIxytoiIBILL5WuHFWCX0ZOTk9m7dy958uTB4XBc9flOnjxJ6dKl2bVrF5GRkW6IMHio7VyntnOd2s51ajvXubvtLMvi1KlTlChRgpCQwB0JppztO9R2rlG7uU5t5zq1nevsytcBd6c7JCSEUqVKuf28kZGR+lC7SG3nOrWd69R2rlPbuc6dbRfId7idlLN9j9rONWo316ntXKe2c52383XgXj4XERERERERsZmKbhEREREREREPUdF9GREREQwfPpyIiAi7Q/E7ajvXqe1cp7ZzndrOdWo736B/B9ep7VyjdnOd2s51ajvX2dV2ATeRmoiIiIiIiIiv0J1uEREREREREQ9R0S0iIiIiIiLiISq6RURERERERDxERbeIiIiIiIiIh6jovoy33nqLqKgosmfPTt26dfn111/tDsnnLV++nJYtW1KiRAkcDgfz5s2zOyS/MWbMGG688Uby5MlDkSJFaNWqFZs2bbI7LL8wadIkqlevTmRkJJGRkdSrV4/vvvvO7rD8zksvvYTD4aBfv352h+LzRowYgcPhSPPnuuuuszusoKV87RrlbNcoX7tO+dp9lLOzzu6craI7E59++in9+/dn+PDh/P7779SoUYPmzZtz8OBBu0PzafHx8dSoUYO33nrL7lD8zrJly+jduzc///wzMTExJCQk0KxZM+Lj4+0OzeeVKlWKl156iTVr1rB69Wpuu+027r33XtavX293aH7jt99+Y8qUKVSvXt3uUPxG1apV2bdvX8qfFStW2B1SUFK+dp1ytmuUr12nfO0eytlXztacbUmGbrrpJqt3794pj5OSkqwSJUpYY8aMsTEq/wJYc+fOtTsMv3Xw4EELsJYtW2Z3KH4pf/781nvvvWd3GH7h1KlTVsWKFa2YmBgrOjra6tu3r90h+bzhw4dbNWrUsDsMsZSv3UU523XK11dH+frKKGdfObtztu50Z+D8+fOsWbOGJk2apOwLCQmhSZMmrFq1ysbIJJicOHECgAIFCtgciX9JSkrik08+IT4+nnr16tkdjl/o3bs3d911V5rfeXJ5mzdvpkSJEpQvX56OHTuyc+dOu0MKOsrX4guUr12jfO0a5WzX2Jmzw7z2Tn7m8OHDJCUlUbRo0TT7ixYtysaNG22KSoJJcnIy/fr149Zbb+X666+3Oxy/sG7dOurVq8fZs2fJnTs3c+fOpUqVKnaH5fM++eQTfv/9d3777Te7Q/ErdevWZdq0aVSqVIl9+/YxcuRIGjRowF9//UWePHnsDi9oKF+L3ZSvr5zyteuUs11jd85W0S3io3r37s1ff/2lMaJXoFKlSsTGxnLixAlmz55N165dWbZsmRJ5Jnbt2kXfvn2JiYkhe/bsdofjV1q0aJGyXb16derWrUvZsmX57LPP6NGjh42RiYg3KV9fOeVr1yhnu87unK2iOwOFChUiNDSUAwcOpNl/4MABihUrZlNUEiz69OnD119/zfLlyylVqpTd4fiN8PBwrrnmGgBq167Nb7/9xmuvvcaUKVNsjsx3rVmzhoMHD1KrVq2UfUlJSSxfvpw333yTc+fOERoaamOE/iNfvnxce+21bNmyxe5QgorytdhJ+do1yteuUc52H2/nbI3pzkB4eDi1a9dm8eLFKfuSk5NZvHixxpyIx1iWRZ8+fZg7dy5LliyhXLlydofk15KTkzl37pzdYfi022+/nXXr1hEbG5vyp06dOnTs2JHY2Fgl7ysQFxfH1q1bKV68uN2hBBXla7GD8rV7KV9njXK2+3g7Z+tOdyb69+9P165dqVOnDjfddBMTJ04kPj6e7t272x2aT4uLi0tz1Wj79u3ExsZSoEABypQpY2Nkvq93797MmjWLL7/8kjx58rB//34A8ubNS44cOWyOzrcNGTKEFi1aUKZMGU6dOsWsWbNYunQpCxcutDs0n5YnT55LxiDmypWLggULamziZQwcOJCWLVtStmxZ9u7dy/DhwwkNDaV9+/Z2hxZ0lK9dp5ztGuVr1ylfu04523V252wV3Zl48MEHOXToEMOGDWP//v3UrFmTBQsWXDJZi6S1evVqGjdunPK4f//+AHTt2pVp06bZFJV/mDRpEgCNGjVKs/+DDz6gW7du3g/Ijxw8eJAuXbqwb98+8ubNS/Xq1Vm4cCFNmza1OzQJULt376Z9+/YcOXKEwoULU79+fX7++WcKFy5sd2hBR/nadcrZrlG+dp3ytdjB7pztsCzL8so7iYiIiIiIiAQZjekWERERERER8RAV3SIiIiIiIiIeoqJbRERERERExENUdIuIiIiIiIh4iIpuEREREREREQ9R0S0iIiIiIiLiISq6RURERERERDxERbeIiIiIiIiIh6joFhEREREREfEQFd0iIiIiIiIiHqKiW0RERERERMRDVHSLiIiIiIiIeMj/ARmcdM0ovf0LAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# This is a quick test that tests the Fourier transform and inverse Fourier transform.\n", - "ft_template = compute_group_fourier_transform(group, template)\n", - "\n", - "template_rec = compute_group_inverse_fourier_transform(group, ft_template)\n", - "\n", - "plt.figure(figsize=(10, 4))\n", - "\n", - "# Plot original template\n", - "plt.subplot(121)\n", - "plt.plot(template, 'b-', label='Original')\n", - "plt.plot(template, 'bo')\n", - "plt.title('Original Template')\n", - "plt.grid(True)\n", - "plt.legend()\n", - "\n", - "# Plot reconstructed template\n", - "plt.subplot(122)\n", - "plt.plot(template_rec.real, 'r-', label='Reconstructed') \n", - "plt.plot(template_rec.real, 'ro')\n", - "plt.title('Reconstructed Template')\n", - "plt.grid(True)\n", - "plt.legend()\n", - "\n", - "plt.tight_layout()\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "9fd05577-db56-4d0a-bb93-1d0b48cecaf6", - "metadata": {}, - "source": [ - "## Dataset" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "765a4ff5", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[D3|[irrep_0,0]:1, D3|[irrep_1,0]:1, D3|[irrep_1,1]:2]" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "group.irreps()" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "cfb18032", - "metadata": {}, - "outputs": [], - "source": [ - "def generate_fixed_group_template(group):\n", - " \"\"\"Generate a fixed template for a group, that has non-zero Fourier coefficients \n", - " only for a few irreps.\n", - " \n", - " Parameters\n", - " ----------\n", - " group : Group (escnn object)\n", - " The group.\n", - "\n", - " Returns\n", - " -------\n", - " template : np.ndarray, shape=[group.order()]\n", - " The template.\n", - " \"\"\"\n", - " # TODO: This only works for D3 for now.\n", - " # Generate template array from Fourier spectrum\n", - " spectrum = [np.array([[20.]]), np.array([[10.]]), np.array([[5., 5.], [5., 5.]])]\n", - " # Generate signal from spectrum\n", - " template = compute_group_inverse_fourier_transform(group, spectrum)\n", - "\n", - " return template" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "dfe8284e", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[66.66666667 16.66666667 33.33333333]\n" - ] - }, - { - "data": { - "image/png": "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lWT852zGjBlq06aNpk6dqsDAQLVv394p7+v9999X+/btFRYWpmnTpmns2LH65Zdf1KRJE8cvaLv09HS1a9dO0dHRevnll1W1alWNGDFCixYt0r333qsGDRpo2rRpKlGihPr16+c4qbraiBEjtH//fo0fP179+vXTkiVL1KVLl1wLAsnJyVqwYIFatGihadOmafz48Tp9+rTatm2rvXv3SpLKlCnjONG6//779f777+v9999X165dJUk///yz7rrrLu3fv1/PPfecXnvtNRUvXlxdunTRmjVrct1HVqtVu3bt0u23356PPZs3jz/+uA4ePKgJEyaoU6dOmjdvnsaOHauOHTsqPT1dkydPVpMmTfTKK69kGSL46KOP6umnn1bjxo31xhtvaODAgVqyZInatm0rq9VaqFwPPfSQJGnjxo2OZYsWLVKPHj3k7++vKVOmaMiQIVq9erWaNGmSZS6GwnxW/vzzT3300Ufq0KGDpk+frqefflo//fSTmjdvrhMnTvxr9vT0dLVt21aRkZF69dVX1bx5c7322mtZ/lsrSfXr11dSUlK2J7UAABSVP/74Q5Ixx6FknPuNGzdOt99+u15//XU1b95cU6ZMUc+ePR3Padq0qf7+++9Mv8O2b98uPz8/bd++PdMySWrWrJmk/J2DStIXX3yhUaNG6cEHH9Qbb7yhqlWrZvseqlSpIsn459XFixfz9L7zcl6Y13PVH3/8UQ0bNtQXX3yhIUOG6I033lCXLl30ySefSJK6du3q6H32+uuvO84V7f/QzM97zY0zzpcBuIAN8EALFy60Scr2y2az2Q4dOmSTZFu4cGGm5/Xq1csWGhpq++2332yvvPKKTZLto48+cjz+/vvv2/z8/Gzbt2/P9Lw5c+bYJNm+/vprm81ms+3du9cmyfbYY49lWq937942SbYXXnghz+9l5cqVNkm2LVu22Gw2m+2ff/6xlSxZ0jZkyJBM6yUkJNgiIiIyLe/fv79Nkm3y5MmOZWfPnrUVK1bMZrFYbMuXL3cs//XXX7Nks+/H+vXr29LS0hzLX375ZZsk28cff+xY1rx5c1vz5s0d9y9fvmxLTU3NlPHs2bO2cuXK2R5++GHHstOnT+e4T1q1amW75ZZbbCkpKY5lGRkZtrvvvtt200035bDHDL///rtNku3NN9/Mdb2bb745U+6rValSxda/f3/H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z37yeODAgSz/pTxw4EC+Ti7/zapVq3TPPffo7bffzrQ8KSnJ6YUj+zGtVauWU7cLAEBB2c/9Dh48mOn3U2JiopKSkjL9zrUXmuLj47Vr1y4999xzkowJzOPi4lShQgUVL15c9evXdzwnr+egztSgQQNt3bpVJ0+ezJT/384L83quaj/Xs/9DLScFeb/24f3XXsDl6p5qANwfc0jBZyQlJWnw4MG68847NXnyZC1YsEDff/+9Jk+e7FinR48eOn78uObPn5/l+ZcuXdKFCxckSe3atZOkLEP+ZsyYUeicbdu2VXh4uCZPnpztVdlOnz5d6Ne41rx58zK9VlxcnC5fvux4n9mx/0fp6v8gffvtt9qxY0em9UJDQyVlPWEoW7asWrRooblz5+rkyZNZtv9v7zMwMFANGjTQ7t27c12vKPXo0UPp6emaOHFilscuX76cZR/kx9KlS7VgwQI1atRIrVq1kmScSJYtW1Zz5szJdEnozz77TPv373faVR8l43hf+9/ClStX5jrPV0Ht2bNHERERuvnmm52+bQAACsJejLn2XM/eo+nq37nVqlVTxYoV9frrr8tqtapx48aSjELVH3/8oVWrVumuu+7K1JMor+eg+ZWQkKBffvkly/K0tDRt3rw522GI/3ZemNdz1TJlyqhZs2Z65513dOTIkUzrXH1OUbx4cUlZzxVzU6VKFfn7+zvm6rKzXzkbgGeghxR8xpNPPqkzZ85o06ZN8vf317333qvBgwdr0qRJ6ty5s+rVq6eHHnpIH3zwgYYOHaotW7aocePGSk9P16+//qoPPvhAGzZsUIMGDXTrrbeqV69emj17ts6dO6e7775bmzdv1u+//17onOHh4YqLi9NDDz2k22+/XT179lSZMmV05MgRrVu3To0bN9Zbb73lhD1yRVpamlq1aqUePXrowIEDmj17tpo0aaJOnTrl+JwOHTpo9erVuv/++9W+fXsdOnRIc+bMUe3atR1zHUlGN+vatWtrxYoVql69ukqXLq06deqoTp06mjVrlpo0aaJbbrlFQ4YM0fXXX6/ExETt2LFDx44d0w8//JBr7s6dO+v5559XcnJylrm1zNC8eXM9+uijmjJlivbu3as2bdooMDBQBw8e1MqVK/XGG2+oe/fu/7qdVatWKSwsTGlpaTp+/Lg2bNigr7/+WvXq1dPKlSsd6wUGBmratGkaOHCgmjdvrl69eikxMdFxSeRRo0Y57b116NBBL774ogYOHKi7775bP/30k5YsWeL476czxcfHq2PHjswhBQBwG/Xq1VP//v01b948JSUlqXnz5vruu+/07rvvqkuXLpl6FElG8Wn58uW65ZZbHL15br/9dhUvXly//fZbpvmjJOX5HDS/jh07pjvvvFMtW7ZUq1atFBUVpVOnTmnZsmX64YcfNHLkyCw9nf/tvDA/56ozZ85UkyZNdPvtt+uRRx5RtWrVdPjwYa1bt0579+6VJEdPseeff149e/ZUYGCgOnbs6ChUZSciIkIPPPCA3nzzTVksFt1www369NNPCz1fJ4CiRUEKPmHt2rV677339Nprr6lmzZqO5dOnT1d8fLz69++vXbt2KTAwUB999JFef/11vffee1qzZo1CQ0N1/fXX68knn1T16tUdz33nnXdUpkwZLVmyRB999JFatmypdevWOWWeqd69e6tChQqaOnWqXnnlFaWmpqpixYpq2rSpBg4cWOjtX+utt97SkiVLNG7cOFmtVvXq1UszZ87MtSAwYMAAJSQkaO7cudqwYYNq166txYsXa+XKlfryyy8zrbtgwQI9/vjjGjVqlNLS0vTCCy+oTp06ql27tnbv3q0JEyZo0aJFOnPmjMqWLavbbrtN48aN+9fcDz30kJ577jmtXbtWffv2LexucIo5c+aofv36mjt3rsaMGaOAgABVrVpVffv2dfyH9N8MGzZMkjEB53XXXadbb71V77zzjnr37q3g4OBM6w4YMEChoaGaOnWqnn32WRUvXlz333+/pk2blml+tMIaM2aMLly4oKVLl2rFihW6/fbbtW7dOscwBGf59ddftW/fPqf0NgQAwJkWLFig66+/XosWLdKaNWsUFRWl0aNHZ5muQLpSkGrSpIljWUBAgBo1aqRNmzZlmj9KMiYez+s5aH7UqFFDM2bM0Pr16zV79mwlJiYqJCREderU0fz58zNdQdguL+eFeT1XrVevnnbu3KmxY8cqLi5OKSkpqlKlSqYr291xxx2aOHGi5syZo88//1wZGRk6dOhQrgUpSXrzzTdltVo1Z84cBQcHq0ePHnrllVcKPYk6gKJjsTFjG+CzFi1apIEDB2rXrl0F+q+bOxg0aJB+++23LFeIgWcaOXKktm3bpj179tBDCgCAIuQN54UAPAtzSAHw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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "template = generate_fixed_group_template(group)\n", - "\n", - "# Plot the template\n", - "plt.figure(figsize=(12, 6))\n", - "\n", - "# Plot template in time domain\n", - "plt.subplot(121)\n", - "plt.plot(template, 'b-', label='Template')\n", - "plt.plot(template, 'bo')\n", - "plt.title('Fixed Template (Time Domain)')\n", - "plt.grid(True)\n", - "plt.legend()\n", - "\n", - "# Plot power spectrum\n", - "plt.subplot(122)\n", - "ft_template = compute_group_fourier_transform(group, template)\n", - "powers = group_power_spectrum(group, template)\n", - "print(powers)\n", - "plt.bar(range(len(powers)), powers)\n", - "plt.title('Power Spectrum')\n", - "plt.xlabel('Irrep Index')\n", - "plt.ylabel('Power')\n", - "plt.grid(True)\n", - "\n", - "plt.tight_layout()\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "f19bd1ad-9e8f-4720-b317-afe13fafae88", - "metadata": {}, - "outputs": [], - "source": [ - "# TODO: Check if dataset is correctly centered (see paper on generating dataset)\n", - "def group_dataset(group, template):\n", - " \"\"\"Generate a dataset of group elements acting on the template.\n", - "\n", - " Using the regular representation.\n", - " \n", - " Parameters\n", - " ----------\n", - " group : Group (escnn object)\n", - " The group.\n", - " template : np.ndarray, shape=[group.order()]\n", - " The template to generate the dataset from.\n", - "\n", - " Returns\n", - " -------\n", - " X : np.ndarray, shape=[group.order()**2, 2, group.order()]\n", - " The dataset of group elements acting on the template. \n", - " Y : np.ndarray, shape=[group.order()**2, group.order()]\n", - " The dataset of group elements acting on the template.\n", - " \"\"\"\n", - " \n", - " # Initialize data arrays\n", - " group_order = group.order()\n", - " assert len(template) == group_order, \"template must have the same length as the group order\"\n", - " n_samples = group_order ** 2\n", - " X = np.zeros((n_samples, 2, group_order))\n", - " Y = np.zeros((n_samples, group_order))\n", - " regular_rep = group.representations[\"regular\"]\n", - " \n", - " idx = 0\n", - " for g1 in group.elements:\n", - " for g2 in group.elements:\n", - " g1_rep = regular_rep(g1)\n", - " g2_rep = regular_rep(g2)\n", - " g12_rep = g1_rep @ g2_rep\n", - "\n", - " X[idx, 0, :] = g1_rep @ template\n", - " X[idx, 1, :] = g2_rep @ template\n", - " Y[idx, :] = g12_rep @ template\n", - " idx += 1\n", - " \n", - " return X, Y" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "92ec37ca", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(36, 6)" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "N = 3\n", - "group = DihedralGroup(N)\n", - "template = generate_fixed_group_template(group)\n", - "X, Y = group_dataset(group, template)\n", - "X.shape\n", - "Y.shape\n" - ] - }, - { - "cell_type": "markdown", - "id": "7a0ecbbd-ceaf-4bef-af4a-13a22fa70063", - "metadata": {}, - "source": [ - "## Architecture" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "2cf22b7d-49e7-445b-8742-2e75cd1fa55a", - "metadata": {}, - "outputs": [], - "source": [ - "class TwoLayerNet(nn.Module):\n", - " def __init__(self, group, hidden_size, nonlinearity='square', init_scale=1.0, output_scale=1.0):\n", - " super(TwoLayerNet, self).__init__()\n", - " \n", - " # Store dimensions\n", - " self.p = group.order()\n", - " self.hidden_size = hidden_size\n", - " self.nonlinearity = nonlinearity\n", - " self.init_scale = init_scale\n", - " self.output_scale = output_scale\n", - " \n", - " # Initialize parameters \n", - " self.U = nn.Parameter(\n", - " self.init_scale * torch.randn(hidden_size, self.p) / np.sqrt(2 * self.p)) # First p elements\n", - " self.V = nn.Parameter(\n", - " self.init_scale * torch.randn(hidden_size, self.p) / np.sqrt(2 * self.p)) # Second p elements\n", - " self.W = nn.Parameter(\n", - " self.init_scale * torch.randn(hidden_size, self.p) / np.sqrt(self.p)) # Second layer weights\n", - " print(f\"Initialized U with shape {self.U.shape}\")\n", - " print(f\"Initialized V with shape {self.V.shape}\")\n", - " print(f\"Initialized W with shape {self.W.shape}\")\n", - "\n", - " def forward(self, x):\n", - " print(f\"Input x shape: {x.shape}\")\n", - " # First layer (linear and combined)\n", - " x1 = x[:, :self.p] @ self.U.T\n", - " print(f\"x1 (x @ U.T) shape: {x1.shape}\")\n", - " x2 = x[:, self.p:] @ self.V.T\n", - " print(f\"x2 (x @ V.T) shape: {x2.shape}\")\n", - " x_combined = x1 + x2\n", - " print(f\"x_combined (x1 + x2) shape: {x_combined.shape}\")\n", - "\n", - " # Apply nonlinearity activation\n", - " if self.nonlinearity == 'relu':\n", - " x_combined = torch.relu(x_combined)\n", - " print(\"Applied ReLU nonlinearity\")\n", - " elif self.nonlinearity == 'square':\n", - " x_combined = x_combined**2\n", - " print(\"Applied square nonlinearity\")\n", - " elif self.nonlinearity == 'linear':\n", - " x_combined = x_combined\n", - " print(\"Applied linear (identity) nonlinearity\")\n", - " elif self.nonlinearity == 'tanh':\n", - " x_combined = torch.tanh(x_combined)\n", - " print(\"Applied tanh nonlinearity\")\n", - " elif self.nonlinearity == 'gelu':\n", - " gelu = torch.nn.GELU()\n", - " x_combined = gelu(x_combined)\n", - " print(\"Applied GELU nonlinearity\")\n", - " else:\n", - " raise ValueError(f\"Invalid nonlinearity '{self.nonlinearity}' provided.\")\n", - "\n", - " # Second layer (linear)\n", - " x_out = x_combined @ self.W\n", - " print(f\"x_out (x_combined @ W) shape: {x_out.shape}\")\n", - "\n", - " # Feature learning scaling\n", - " x_out *= self.output_scale\n", - " print(f\"x_out after scaling with output_scale={self.output_scale}: shape {x_out.shape}\")\n", - " \n", - " return x_out" - ] - }, - { - "cell_type": "markdown", - "id": "f7e7336b-5c6e-48af-a357-2b2c877f6168", - "metadata": {}, - "source": [ - "## Optimization" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "1035f81c-e877-4655-8640-4e4c3d323af8", - "metadata": {}, - "outputs": [], - "source": [ - "def test_accuracy(model, dataloader):\n", - " correct = 0\n", - " total = 0\n", - " print(\"Starting test_accuracy evaluation...\")\n", - " \n", - " with torch.no_grad(): # Disable gradient calculation for evaluation\n", - " for i, (inputs, labels) in enumerate(dataloader):\n", - " inputs = inputs.view(inputs.shape[0], -1) # Flatten input for FC layers\n", - " #print(f\"Batch {i+1}: inputs reshaped\")\n", - " outputs = model(inputs)\n", - " #print(f\"Batch {i+1}: model forward pass done\")\n", - " _, predicted = torch.max(outputs, 1) # Get the index of the largest value (class)\n", - " _, true_labels = torch.max(labels, 1) # Get the true class from the one-hot encoding\n", - " correct += (predicted == true_labels).sum().item()\n", - " total += labels.size(0)\n", - " #print(f\"Batch {i+1}: accuracy updated (correct={correct}, total={total})\")\n", - " \n", - " accuracy = 100 * correct / total\n", - " print(f\"Final test accuracy: {accuracy:.2f}%\")\n", - " return accuracy\n", - "\n", - "def train(model, dataloader, criterion, optimizer, epochs=100, verbose_interval=10, checkpoint_interval=1000):\n", - " print(\"Starting training loop...\")\n", - " model.train() # Set the model to training mode\n", - " print(\"Model set to train mode.\")\n", - " loss_history = [] # List to store loss values\n", - " accuracy_history = []\n", - " param_history = []\n", - "\n", - " for epoch in range(epochs):\n", - " print(f\"Epoch {epoch+1} started.\")\n", - " running_loss = 0.0\n", - " for batch_idx, (inputs, labels) in enumerate(dataloader):\n", - " inputs = inputs.view(inputs.shape[0], -1) # Flatten input for FC layers\n", - " #print(f\" Batch {batch_idx+1}: inputs reshaped\")\n", - "\n", - " optimizer.zero_grad() # Zero gradients\n", - " #print(f\" Batch {batch_idx+1}: optimizer gradients zeroed\")\n", - " outputs = model(inputs) # Forward pass\n", - " #print(f\" Batch {batch_idx+1}: model forward pass done\")\n", - " loss = criterion(outputs, labels) # Compute loss\n", - " #print(f\" Batch {batch_idx+1}: loss computed ({loss.item():.4f})\")\n", - " loss.backward() # Backpropagation\n", - " #print(f\" Batch {batch_idx+1}: backward pass done\")\n", - " optimizer.step() # Update weights\n", - " #print(f\" Batch {batch_idx+1}: optimizer step done\")\n", - "\n", - " running_loss += loss.item()\n", - " #print(f\" Batch {batch_idx+1}: running_loss updated ({running_loss:.4f})\")\n", - "\n", - " # Append the average loss for the epoch to loss_history\n", - " avg_loss = running_loss / len(dataloader)\n", - " loss_history.append(avg_loss)\n", - " print(f\"Epoch {epoch+1}: avg_loss appended ({avg_loss:.4f})\")\n", - "\n", - " # Append the accuracy\n", - " model.eval()\n", - " print(f\"Epoch {epoch+1}: model set to eval mode for accuracy check\")\n", - " accuracy = test_accuracy(model, dataloader)\n", - " accuracy_history.append(accuracy)\n", - " print(f\"Epoch {epoch+1}: accuracy appended ({accuracy:.2f}%)\")\n", - " model.train()\n", - " print(f\"Epoch {epoch+1}: model set back to train mode\")\n", - "\n", - " # Save current model parameters\n", - " current_params = {\n", - " \"U\": model.U.detach().cpu().clone(),\n", - " \"V\": model.V.detach().cpu().clone(),\n", - " \"W\": model.W.detach().cpu().clone()\n", - " }\n", - " param_history.append(current_params)\n", - " print(f\"Epoch {epoch+1}: model parameters saved\")\n", - "\n", - " # Print verbose information every `verbose_interval` epochs\n", - " if (epoch + 1) % verbose_interval == 0:\n", - " print(f\"Epoch {epoch+1}/{epochs}, Loss: {avg_loss:.4f}, Accuracy: {accuracy:.2f}%\")\n", - "\n", - " # Save checkpoint at specified intervals\n", - " if (epoch + 1) % checkpoint_interval == 0:\n", - " date = datetime.datetime.now().strftime(\"%m%d\")\n", - " torch.save(model.state_dict(), f'checkpoint_dihedral{N}_epoch_{epoch+1}_date{date}.pt')\n", - " print(f\"Epoch {epoch+1}: checkpoint saved\")\n", - "\n", - " print(\"Training loop finished.\")\n", - " return loss_history, accuracy_history, param_history # Return loss history for plotting" - ] - }, - { - "cell_type": "markdown", - "id": "0e86c4f6-83a6-4465-abf0-7d104432cc9c", - "metadata": {}, - "source": [ - "## Plotting functions" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "014e2d10-9550-4fd4-adb7-168a27fda1b3", - "metadata": {}, - "outputs": [], - "source": [ - "def style_axes(ax, numyticks=5, numxticks=5, labelsize=24):\n", - " # Y-axis ticks\n", - " ax.tick_params(axis=\"y\", which=\"both\", bottom=True, top=False,\n", - " labelbottom=True, left=True, right=False,\n", - " labelleft=True, direction='out', length=7, width=1.5, pad=8, labelsize=labelsize)\n", - " ax.yaxis.set_major_locator(MaxNLocator(nbins=numyticks))\n", - " \n", - " # X-axis ticks\n", - " ax.tick_params(axis=\"x\", which=\"both\", bottom=True, top=False,\n", - " labelbottom=True, left=True, right=False,\n", - " labelleft=True, direction='out', length=7, width=1.5, pad=8, labelsize=labelsize)\n", - " ax.xaxis.set_major_locator(MaxNLocator(nbins=numxticks))\n", - "\n", - " # Scientific notation formatting\n", - " if ax.get_yscale() == 'linear':\n", - " ax.ticklabel_format(style='sci', axis='y', scilimits=(-2, 2))\n", - " if ax.get_xscale() == 'linear':\n", - " ax.ticklabel_format(style='sci', axis='x', scilimits=(-2, 2))\n", - "\n", - " ax.xaxis.offsetText.set_fontsize(20)\n", - " ax.grid()\n", - "\n", - " # Customize spines\n", - " for spine in [\"top\", \"right\"]:\n", - " ax.spines[spine].set_visible(False)\n", - " for spine in [\"left\", \"bottom\"]:\n", - " ax.spines[spine].set_linewidth(3)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "20989d96-f34f-4be7-a0f9-4b92fb7f235a", - "metadata": {}, - "outputs": [], - "source": [ - "def get_power(points): # TODO: Do we need to generalize this to general groups too?\n", - " p = len(points)\n", - " num_coefficients = (p // 2) + 1\n", - " \n", - " # Perform FFT and calculate power spectrum\n", - " ft = np.fft.fft(points) # Could consider using np.fft.rfft which is designed for real valued input.\n", - " power = np.abs(ft[:num_coefficients])**2 / p\n", - " \n", - " # Double power for frequencies strictly between 0 and Nyquist (Nyquist is not doubled if p is even)\n", - " if p % 2 == 0: # p is even, Nyquist frequency at index num_coefficients - 1\n", - " power[1:num_coefficients - 1] *= 2\n", - " else: # p is odd, no Nyquist frequency\n", - " power[1:] *= 2\n", - "\n", - " # Confirm the power sum approximates the squared norm of points\n", - " total_power = np.sum(power)\n", - " norm_squared = np.linalg.norm(points)**2\n", - " #if not np.isclose(total_power, norm_squared, rtol=1e-3):\n", - " #print(f\"Warning: Total power {total_power:.3f} does not match norm squared {norm_squared:.3f}\")\n", - "\n", - " return np.arange(num_coefficients), power\n", - "\n", - "def interpolate(ax, points, color, continuous, alpha=1.0):\n", - " p = len(points)\n", - " if continuous:\n", - " # Perform Fourier Transform\n", - " ft = np.fft.fft(points)\n", - " \n", - " # Keep only non-negative frequencies (first half + Nyquist if p is even)\n", - " num_coefficients = (p // 2) + 1\n", - " ft = ft[:num_coefficients] # Truncate to keep non-negative frequencies\n", - " \n", - " # Create a dense set of x-values for smooth interpolation\n", - " xs = np.linspace(0, p, 10 * p) # 10 times more points than the original for smoothness\n", - " curr_val = np.zeros(xs.shape, dtype=complex)\n", - " \n", - " # Use only non-negative frequencies for interpolation\n", - " for freq in range(num_coefficients):\n", - " theta = np.angle(ft[freq])\n", - " r = np.abs(ft[freq]) / p\n", - " # Double amplitude except for DC (freq = 0) and Nyquist (freq = p / 2, when p is even)\n", - " if freq > 0 and (freq < p / 2 or p % 2 != 0):\n", - " r *= 2\n", - " curr_val += r * np.exp(1j * ((2 * np.pi * freq * xs / p) + theta))\n", - "\n", - " # Plot the real part (since output is real-valued)\n", - " ax.plot(xs, curr_val.real, color=color, alpha=alpha)\n", - " else:\n", - " ax.plot(np.arange(p), points, color=color, alpha=alpha) " - ] - }, - { - "cell_type": "markdown", - "id": "e99dae27-f8fe-403a-b70f-0bcaf818cbe7", - "metadata": {}, - "source": [ - "## Gradient Descent Experiment" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "bcd15c5a-5745-41ba-b015-48e403160c7e", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Initialized U with shape torch.Size([36, 6])\n", - "Initialized V with shape torch.Size([36, 6])\n", - "Initialized W with shape torch.Size([36, 6])\n", - "Starting training loop...\n", - "Model set to train mode.\n", - "Epoch 1 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1: avg_loss appended (8.3333)\n", - "Epoch 1: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 16.67%\n", - "Epoch 1: accuracy appended (16.67%)\n", - "Epoch 1: model set back to train mode\n", - "Epoch 1: model parameters saved\n", - "Epoch 2 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2: avg_loss appended (8.3333)\n", - "Epoch 2: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 16.67%\n", - "Epoch 2: accuracy appended (16.67%)\n", - "Epoch 2: model set back to train mode\n", - "Epoch 2: model parameters saved\n", - "Epoch 3 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3: avg_loss appended (8.3333)\n", - "Epoch 3: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 16.67%\n", - "Epoch 3: accuracy appended (16.67%)\n", - "Epoch 3: model set back to train mode\n", - "Epoch 3: model parameters saved\n", - "Epoch 4 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4: avg_loss appended (8.3333)\n", - "Epoch 4: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 16.67%\n", - "Epoch 4: accuracy appended (16.67%)\n", - "Epoch 4: model set back to train mode\n", - "Epoch 4: model parameters saved\n", - "Epoch 5 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5: avg_loss appended (8.3333)\n", - "Epoch 5: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 22.22%\n", - "Epoch 5: accuracy appended (22.22%)\n", - "Epoch 5: model set back to train mode\n", - "Epoch 5: model parameters saved\n", - "Epoch 6 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6: avg_loss appended (8.3333)\n", - "Epoch 6: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 22.22%\n", - "Epoch 6: accuracy appended (22.22%)\n", - "Epoch 6: model set back to train mode\n", - "Epoch 6: model parameters saved\n", - "Epoch 7 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7: avg_loss appended (8.3333)\n", - "Epoch 7: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 22.22%\n", - "Epoch 7: accuracy appended (22.22%)\n", - "Epoch 7: model set back to train mode\n", - "Epoch 7: model parameters saved\n", - "Epoch 8 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8: avg_loss appended (8.3333)\n", - "Epoch 8: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 22.22%\n", - "Epoch 8: accuracy appended (22.22%)\n", - "Epoch 8: model set back to train mode\n", - "Epoch 8: model parameters saved\n", - "Epoch 9 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9: avg_loss appended (8.3333)\n", - "Epoch 9: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 25.00%\n", - "Epoch 9: accuracy appended (25.00%)\n", - "Epoch 9: model set back to train mode\n", - "Epoch 9: model parameters saved\n", - "Epoch 10 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 10: avg_loss appended (8.3333)\n", - "Epoch 10: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 25.00%\n", - "Epoch 10: accuracy appended (25.00%)\n", - "Epoch 10: model set back to train mode\n", - "Epoch 10: model parameters saved\n", - "Epoch 11 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 11: avg_loss appended (8.3333)\n", - "Epoch 11: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 25.00%\n", - "Epoch 11: accuracy appended (25.00%)\n", - "Epoch 11: model set back to train mode\n", - "Epoch 11: model parameters saved\n", - "Epoch 12 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 12: avg_loss appended (8.3333)\n", - "Epoch 12: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 22.22%\n", - "Epoch 12: accuracy appended (22.22%)\n", - "Epoch 12: model set back to train mode\n", - "Epoch 12: model parameters saved\n", - "Epoch 13 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 13: avg_loss appended (8.3333)\n", - "Epoch 13: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 25.00%\n", - "Epoch 13: accuracy appended (25.00%)\n", - "Epoch 13: model set back to train mode\n", - "Epoch 13: model parameters saved\n", - "Epoch 14 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 14: avg_loss appended (8.3333)\n", - "Epoch 14: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 27.78%\n", - "Epoch 14: accuracy appended (27.78%)\n", - "Epoch 14: model set back to train mode\n", - "Epoch 14: model parameters saved\n", - "Epoch 15 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 15: avg_loss appended (8.3333)\n", - "Epoch 15: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 33.33%\n", - "Epoch 15: accuracy appended (33.33%)\n", - "Epoch 15: model set back to train mode\n", - "Epoch 15: model parameters saved\n", - "Epoch 16 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 16: avg_loss appended (8.3333)\n", - "Epoch 16: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 33.33%\n", - "Epoch 16: accuracy appended (33.33%)\n", - "Epoch 16: model set back to train mode\n", - "Epoch 16: model parameters saved\n", - "Epoch 17 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 17: avg_loss appended (8.3333)\n", - "Epoch 17: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 33.33%\n", - "Epoch 17: accuracy appended (33.33%)\n", - "Epoch 17: model set back to train mode\n", - "Epoch 17: model parameters saved\n", - "Epoch 18 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 18: avg_loss appended (8.3333)\n", - "Epoch 18: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 33.33%\n", - "Epoch 18: accuracy appended (33.33%)\n", - "Epoch 18: model set back to train mode\n", - "Epoch 18: model parameters saved\n", - "Epoch 19 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 19: avg_loss appended (8.3333)\n", - "Epoch 19: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 38.89%\n", - "Epoch 19: accuracy appended (38.89%)\n", - "Epoch 19: model set back to train mode\n", - "Epoch 19: model parameters saved\n", - "Epoch 20 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 20: avg_loss appended (8.3332)\n", - "Epoch 20: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 38.89%\n", - "Epoch 20: accuracy appended (38.89%)\n", - "Epoch 20: model set back to train mode\n", - "Epoch 20: model parameters saved\n", - "Epoch 21 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 21: avg_loss appended (8.3332)\n", - "Epoch 21: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 41.67%\n", - "Epoch 21: accuracy appended (41.67%)\n", - "Epoch 21: model set back to train mode\n", - "Epoch 21: model parameters saved\n", - "Epoch 22 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 22: avg_loss appended (8.3332)\n", - "Epoch 22: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 44.44%\n", - "Epoch 22: accuracy appended (44.44%)\n", - "Epoch 22: model set back to train mode\n", - "Epoch 22: model parameters saved\n", - "Epoch 23 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 23: avg_loss appended (8.3332)\n", - "Epoch 23: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 44.44%\n", - "Epoch 23: accuracy appended (44.44%)\n", - "Epoch 23: model set back to train mode\n", - "Epoch 23: model parameters saved\n", - "Epoch 24 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 24: avg_loss appended (8.3332)\n", - "Epoch 24: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 44.44%\n", - "Epoch 24: accuracy appended (44.44%)\n", - "Epoch 24: model set back to train mode\n", - "Epoch 24: model parameters saved\n", - "Epoch 25 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 25: avg_loss appended (8.3332)\n", - "Epoch 25: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 41.67%\n", - "Epoch 25: accuracy appended (41.67%)\n", - "Epoch 25: model set back to train mode\n", - "Epoch 25: model parameters saved\n", - "Epoch 26 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 26: avg_loss appended (8.3332)\n", - "Epoch 26: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 44.44%\n", - "Epoch 26: accuracy appended (44.44%)\n", - "Epoch 26: model set back to train mode\n", - "Epoch 26: model parameters saved\n", - "Epoch 27 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 27: avg_loss appended (8.3332)\n", - "Epoch 27: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 44.44%\n", - "Epoch 27: accuracy appended (44.44%)\n", - "Epoch 27: model set back to train mode\n", - "Epoch 27: model parameters saved\n", - "Epoch 28 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 28: avg_loss appended (8.3331)\n", - "Epoch 28: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 44.44%\n", - "Epoch 28: accuracy appended (44.44%)\n", - "Epoch 28: model set back to train mode\n", - "Epoch 28: model parameters saved\n", - "Epoch 29 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 29: avg_loss appended (8.3331)\n", - "Epoch 29: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 44.44%\n", - "Epoch 29: accuracy appended (44.44%)\n", - "Epoch 29: model set back to train mode\n", - "Epoch 29: model parameters saved\n", - "Epoch 30 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 30: avg_loss appended (8.3331)\n", - "Epoch 30: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 44.44%\n", - "Epoch 30: accuracy appended (44.44%)\n", - "Epoch 30: model set back to train mode\n", - "Epoch 30: model parameters saved\n", - "Epoch 31 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 31: avg_loss appended (8.3331)\n", - "Epoch 31: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 47.22%\n", - "Epoch 31: accuracy appended (47.22%)\n", - "Epoch 31: model set back to train mode\n", - "Epoch 31: model parameters saved\n", - "Epoch 32 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 32: avg_loss appended (8.3331)\n", - "Epoch 32: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 47.22%\n", - "Epoch 32: accuracy appended (47.22%)\n", - "Epoch 32: model set back to train mode\n", - "Epoch 32: model parameters saved\n", - "Epoch 33 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 33: avg_loss appended (8.3330)\n", - "Epoch 33: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 44.44%\n", - "Epoch 33: accuracy appended (44.44%)\n", - "Epoch 33: model set back to train mode\n", - "Epoch 33: model parameters saved\n", - "Epoch 34 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 34: avg_loss appended (8.3330)\n", - "Epoch 34: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 44.44%\n", - "Epoch 34: accuracy appended (44.44%)\n", - "Epoch 34: model set back to train mode\n", - "Epoch 34: model parameters saved\n", - "Epoch 35 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 35: avg_loss appended (8.3330)\n", - "Epoch 35: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 44.44%\n", - "Epoch 35: accuracy appended (44.44%)\n", - "Epoch 35: model set back to train mode\n", - "Epoch 35: model parameters saved\n", - "Epoch 36 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 36: avg_loss appended (8.3329)\n", - "Epoch 36: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 44.44%\n", - "Epoch 36: accuracy appended (44.44%)\n", - "Epoch 36: model set back to train mode\n", - "Epoch 36: model parameters saved\n", - "Epoch 37 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 37: avg_loss appended (8.3329)\n", - "Epoch 37: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 44.44%\n", - "Epoch 37: accuracy appended (44.44%)\n", - "Epoch 37: model set back to train mode\n", - "Epoch 37: model parameters saved\n", - "Epoch 38 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 38: avg_loss appended (8.3329)\n", - "Epoch 38: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 44.44%\n", - "Epoch 38: accuracy appended (44.44%)\n", - "Epoch 38: model set back to train mode\n", - "Epoch 38: model parameters saved\n", - "Epoch 39 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 39: avg_loss appended (8.3328)\n", - "Epoch 39: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 44.44%\n", - "Epoch 39: accuracy appended (44.44%)\n", - "Epoch 39: model set back to train mode\n", - "Epoch 39: model parameters saved\n", - "Epoch 40 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 40: avg_loss appended (8.3327)\n", - "Epoch 40: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 44.44%\n", - "Epoch 40: accuracy appended (44.44%)\n", - "Epoch 40: model set back to train mode\n", - "Epoch 40: model parameters saved\n", - "Epoch 41 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 41: avg_loss appended (8.3327)\n", - "Epoch 41: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 44.44%\n", - "Epoch 41: accuracy appended (44.44%)\n", - "Epoch 41: model set back to train mode\n", - "Epoch 41: model parameters saved\n", - "Epoch 42 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 42: avg_loss appended (8.3326)\n", - "Epoch 42: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 44.44%\n", - "Epoch 42: accuracy appended (44.44%)\n", - "Epoch 42: model set back to train mode\n", - "Epoch 42: model parameters saved\n", - "Epoch 43 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 43: avg_loss appended (8.3325)\n", - "Epoch 43: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 44.44%\n", - "Epoch 43: accuracy appended (44.44%)\n", - "Epoch 43: model set back to train mode\n", - "Epoch 43: model parameters saved\n", - "Epoch 44 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 44: avg_loss appended (8.3323)\n", - "Epoch 44: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 44.44%\n", - "Epoch 44: accuracy appended (44.44%)\n", - "Epoch 44: model set back to train mode\n", - "Epoch 44: model parameters saved\n", - "Epoch 45 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 45: avg_loss appended (8.3322)\n", - "Epoch 45: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 44.44%\n", - "Epoch 45: accuracy appended (44.44%)\n", - "Epoch 45: model set back to train mode\n", - "Epoch 45: model parameters saved\n", - "Epoch 46 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 46: avg_loss appended (8.3320)\n", - "Epoch 46: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 44.44%\n", - "Epoch 46: accuracy appended (44.44%)\n", - "Epoch 46: model set back to train mode\n", - "Epoch 46: model parameters saved\n", - "Epoch 47 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 47: avg_loss appended (8.3318)\n", - "Epoch 47: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 44.44%\n", - "Epoch 47: accuracy appended (44.44%)\n", - "Epoch 47: model set back to train mode\n", - "Epoch 47: model parameters saved\n", - "Epoch 48 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 48: avg_loss appended (8.3315)\n", - "Epoch 48: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 44.44%\n", - "Epoch 48: accuracy appended (44.44%)\n", - "Epoch 48: model set back to train mode\n", - "Epoch 48: model parameters saved\n", - "Epoch 49 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 49: avg_loss appended (8.3311)\n", - "Epoch 49: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 44.44%\n", - "Epoch 49: accuracy appended (44.44%)\n", - "Epoch 49: model set back to train mode\n", - "Epoch 49: model parameters saved\n", - "Epoch 50 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 50: avg_loss appended (8.3307)\n", - "Epoch 50: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 44.44%\n", - "Epoch 50: accuracy appended (44.44%)\n", - "Epoch 50: model set back to train mode\n", - "Epoch 50: model parameters saved\n", - "Epoch 51 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 51: avg_loss appended (8.3301)\n", - "Epoch 51: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 44.44%\n", - "Epoch 51: accuracy appended (44.44%)\n", - "Epoch 51: model set back to train mode\n", - "Epoch 51: model parameters saved\n", - "Epoch 52 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 52: avg_loss appended (8.3294)\n", - "Epoch 52: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 44.44%\n", - "Epoch 52: accuracy appended (44.44%)\n", - "Epoch 52: model set back to train mode\n", - "Epoch 52: model parameters saved\n", - "Epoch 53 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 53: avg_loss appended (8.3284)\n", - "Epoch 53: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 44.44%\n", - "Epoch 53: accuracy appended (44.44%)\n", - "Epoch 53: model set back to train mode\n", - "Epoch 53: model parameters saved\n", - "Epoch 54 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 54: avg_loss appended (8.3270)\n", - "Epoch 54: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 44.44%\n", - "Epoch 54: accuracy appended (44.44%)\n", - "Epoch 54: model set back to train mode\n", - "Epoch 54: model parameters saved\n", - "Epoch 55 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 55: avg_loss appended (8.3252)\n", - "Epoch 55: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 44.44%\n", - "Epoch 55: accuracy appended (44.44%)\n", - "Epoch 55: model set back to train mode\n", - "Epoch 55: model parameters saved\n", - "Epoch 56 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 56: avg_loss appended (8.3226)\n", - "Epoch 56: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 44.44%\n", - "Epoch 56: accuracy appended (44.44%)\n", - "Epoch 56: model set back to train mode\n", - "Epoch 56: model parameters saved\n", - "Epoch 57 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 57: avg_loss appended (8.3188)\n", - "Epoch 57: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 44.44%\n", - "Epoch 57: accuracy appended (44.44%)\n", - "Epoch 57: model set back to train mode\n", - "Epoch 57: model parameters saved\n", - "Epoch 58 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 58: avg_loss appended (8.3133)\n", - "Epoch 58: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 44.44%\n", - "Epoch 58: accuracy appended (44.44%)\n", - "Epoch 58: model set back to train mode\n", - "Epoch 58: model parameters saved\n", - "Epoch 59 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 59: avg_loss appended (8.3050)\n", - "Epoch 59: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 44.44%\n", - "Epoch 59: accuracy appended (44.44%)\n", - "Epoch 59: model set back to train mode\n", - "Epoch 59: model parameters saved\n", - "Epoch 60 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 60: avg_loss appended (8.2920)\n", - "Epoch 60: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 44.44%\n", - "Epoch 60: accuracy appended (44.44%)\n", - "Epoch 60: model set back to train mode\n", - "Epoch 60: model parameters saved\n", - "Epoch 61 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 61: avg_loss appended (8.2710)\n", - "Epoch 61: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 44.44%\n", - "Epoch 61: accuracy appended (44.44%)\n", - "Epoch 61: model set back to train mode\n", - "Epoch 61: model parameters saved\n", - "Epoch 62 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 62: avg_loss appended (8.2357)\n", - "Epoch 62: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 44.44%\n", - "Epoch 62: accuracy appended (44.44%)\n", - "Epoch 62: model set back to train mode\n", - "Epoch 62: model parameters saved\n", - "Epoch 63 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 63: avg_loss appended (8.1740)\n", - "Epoch 63: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 44.44%\n", - "Epoch 63: accuracy appended (44.44%)\n", - "Epoch 63: model set back to train mode\n", - "Epoch 63: model parameters saved\n", - "Epoch 64 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 64: avg_loss appended (8.0623)\n", - "Epoch 64: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 41.67%\n", - "Epoch 64: accuracy appended (41.67%)\n", - "Epoch 64: model set back to train mode\n", - "Epoch 64: model parameters saved\n", - "Epoch 65 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 65: avg_loss appended (7.8565)\n", - "Epoch 65: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 44.44%\n", - "Epoch 65: accuracy appended (44.44%)\n", - "Epoch 65: model set back to train mode\n", - "Epoch 65: model parameters saved\n", - "Epoch 66 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 66: avg_loss appended (7.4961)\n", - "Epoch 66: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 44.44%\n", - "Epoch 66: accuracy appended (44.44%)\n", - "Epoch 66: model set back to train mode\n", - "Epoch 66: model parameters saved\n", - "Epoch 67 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 67: avg_loss appended (7.0320)\n", - "Epoch 67: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 44.44%\n", - "Epoch 67: accuracy appended (44.44%)\n", - "Epoch 67: model set back to train mode\n", - "Epoch 67: model parameters saved\n", - "Epoch 68 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 68: avg_loss appended (7.1057)\n", - "Epoch 68: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 44.44%\n", - "Epoch 68: accuracy appended (44.44%)\n", - "Epoch 68: model set back to train mode\n", - "Epoch 68: model parameters saved\n", - "Epoch 69 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 69: avg_loss appended (7.7950)\n", - "Epoch 69: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 44.44%\n", - "Epoch 69: accuracy appended (44.44%)\n", - "Epoch 69: model set back to train mode\n", - "Epoch 69: model parameters saved\n", - "Epoch 70 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 70: avg_loss appended (7.0662)\n", - "Epoch 70: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 44.44%\n", - "Epoch 70: accuracy appended (44.44%)\n", - "Epoch 70: model set back to train mode\n", - "Epoch 70: model parameters saved\n", - "Epoch 71 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 71: avg_loss appended (6.9454)\n", - "Epoch 71: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 44.44%\n", - "Epoch 71: accuracy appended (44.44%)\n", - "Epoch 71: model set back to train mode\n", - "Epoch 71: model parameters saved\n", - "Epoch 72 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 72: avg_loss appended (7.1858)\n", - "Epoch 72: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 44.44%\n", - "Epoch 72: accuracy appended (44.44%)\n", - "Epoch 72: model set back to train mode\n", - "Epoch 72: model parameters saved\n", - "Epoch 73 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 73: avg_loss appended (7.2858)\n", - "Epoch 73: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 38.89%\n", - "Epoch 73: accuracy appended (38.89%)\n", - "Epoch 73: model set back to train mode\n", - "Epoch 73: model parameters saved\n", - "Epoch 74 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 74: avg_loss appended (7.1702)\n", - "Epoch 74: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 33.33%\n", - "Epoch 74: accuracy appended (33.33%)\n", - "Epoch 74: model set back to train mode\n", - "Epoch 74: model parameters saved\n", - "Epoch 75 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 75: avg_loss appended (6.8184)\n", - "Epoch 75: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 33.33%\n", - "Epoch 75: accuracy appended (33.33%)\n", - "Epoch 75: model set back to train mode\n", - "Epoch 75: model parameters saved\n", - "Epoch 76 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 76: avg_loss appended (6.2530)\n", - "Epoch 76: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 33.33%\n", - "Epoch 76: accuracy appended (33.33%)\n", - "Epoch 76: model set back to train mode\n", - "Epoch 76: model parameters saved\n", - "Epoch 77 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 77: avg_loss appended (5.7719)\n", - "Epoch 77: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 33.33%\n", - "Epoch 77: accuracy appended (33.33%)\n", - "Epoch 77: model set back to train mode\n", - "Epoch 77: model parameters saved\n", - "Epoch 78 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 78: avg_loss appended (5.9555)\n", - "Epoch 78: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 38.89%\n", - "Epoch 78: accuracy appended (38.89%)\n", - "Epoch 78: model set back to train mode\n", - "Epoch 78: model parameters saved\n", - "Epoch 79 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 79: avg_loss appended (6.5606)\n", - "Epoch 79: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 52.78%\n", - "Epoch 79: accuracy appended (52.78%)\n", - "Epoch 79: model set back to train mode\n", - "Epoch 79: model parameters saved\n", - "Epoch 80 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 80: avg_loss appended (5.8355)\n", - "Epoch 80: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 33.33%\n", - "Epoch 80: accuracy appended (33.33%)\n", - "Epoch 80: model set back to train mode\n", - "Epoch 80: model parameters saved\n", - "Epoch 81 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 81: avg_loss appended (5.6731)\n", - "Epoch 81: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 33.33%\n", - "Epoch 81: accuracy appended (33.33%)\n", - "Epoch 81: model set back to train mode\n", - "Epoch 81: model parameters saved\n", - "Epoch 82 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 82: avg_loss appended (6.0264)\n", - "Epoch 82: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 33.33%\n", - "Epoch 82: accuracy appended (33.33%)\n", - "Epoch 82: model set back to train mode\n", - "Epoch 82: model parameters saved\n", - "Epoch 83 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 83: avg_loss appended (6.1925)\n", - "Epoch 83: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 33.33%\n", - "Epoch 83: accuracy appended (33.33%)\n", - "Epoch 83: model set back to train mode\n", - "Epoch 83: model parameters saved\n", - "Epoch 84 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 84: avg_loss appended (6.0986)\n", - "Epoch 84: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 33.33%\n", - "Epoch 84: accuracy appended (33.33%)\n", - "Epoch 84: model set back to train mode\n", - "Epoch 84: model parameters saved\n", - "Epoch 85 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 85: avg_loss appended (5.8805)\n", - "Epoch 85: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 33.33%\n", - "Epoch 85: accuracy appended (33.33%)\n", - "Epoch 85: model set back to train mode\n", - "Epoch 85: model parameters saved\n", - "Epoch 86 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 86: avg_loss appended (5.7243)\n", - "Epoch 86: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 41.67%\n", - "Epoch 86: accuracy appended (41.67%)\n", - "Epoch 86: model set back to train mode\n", - "Epoch 86: model parameters saved\n", - "Epoch 87 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 87: avg_loss appended (5.6844)\n", - "Epoch 87: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 38.89%\n", - "Epoch 87: accuracy appended (38.89%)\n", - "Epoch 87: model set back to train mode\n", - "Epoch 87: model parameters saved\n", - "Epoch 88 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 88: avg_loss appended (5.8408)\n", - "Epoch 88: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 55.56%\n", - "Epoch 88: accuracy appended (55.56%)\n", - "Epoch 88: model set back to train mode\n", - "Epoch 88: model parameters saved\n", - "Epoch 89 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 89: avg_loss appended (5.7522)\n", - "Epoch 89: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 50.00%\n", - "Epoch 89: accuracy appended (50.00%)\n", - "Epoch 89: model set back to train mode\n", - "Epoch 89: model parameters saved\n", - "Epoch 90 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 90: avg_loss appended (5.5816)\n", - "Epoch 90: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 50.00%\n", - "Epoch 90: accuracy appended (50.00%)\n", - "Epoch 90: model set back to train mode\n", - "Epoch 90: model parameters saved\n", - "Epoch 91 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 91: avg_loss appended (5.6532)\n", - "Epoch 91: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 50.00%\n", - "Epoch 91: accuracy appended (50.00%)\n", - "Epoch 91: model set back to train mode\n", - "Epoch 91: model parameters saved\n", - "Epoch 92 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 92: avg_loss appended (5.6957)\n", - "Epoch 92: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 47.22%\n", - "Epoch 92: accuracy appended (47.22%)\n", - "Epoch 92: model set back to train mode\n", - "Epoch 92: model parameters saved\n", - "Epoch 93 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 93: avg_loss appended (5.6146)\n", - "Epoch 93: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 61.11%\n", - "Epoch 93: accuracy appended (61.11%)\n", - "Epoch 93: model set back to train mode\n", - "Epoch 93: model parameters saved\n", - "Epoch 94 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 94: avg_loss appended (5.4704)\n", - "Epoch 94: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 58.33%\n", - "Epoch 94: accuracy appended (58.33%)\n", - "Epoch 94: model set back to train mode\n", - "Epoch 94: model parameters saved\n", - "Epoch 95 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 95: avg_loss appended (5.2978)\n", - "Epoch 95: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 61.11%\n", - "Epoch 95: accuracy appended (61.11%)\n", - "Epoch 95: model set back to train mode\n", - "Epoch 95: model parameters saved\n", - "Epoch 96 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 96: avg_loss appended (5.1406)\n", - "Epoch 96: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 61.11%\n", - "Epoch 96: accuracy appended (61.11%)\n", - "Epoch 96: model set back to train mode\n", - "Epoch 96: model parameters saved\n", - "Epoch 97 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 97: avg_loss appended (4.9797)\n", - "Epoch 97: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 63.89%\n", - "Epoch 97: accuracy appended (63.89%)\n", - "Epoch 97: model set back to train mode\n", - "Epoch 97: model parameters saved\n", - "Epoch 98 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 98: avg_loss appended (4.7744)\n", - "Epoch 98: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 61.11%\n", - "Epoch 98: accuracy appended (61.11%)\n", - "Epoch 98: model set back to train mode\n", - "Epoch 98: model parameters saved\n", - "Epoch 99 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 99: avg_loss appended (4.7855)\n", - "Epoch 99: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 55.56%\n", - "Epoch 99: accuracy appended (55.56%)\n", - "Epoch 99: model set back to train mode\n", - "Epoch 99: model parameters saved\n", - "Epoch 100 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 100: avg_loss appended (4.6532)\n", - "Epoch 100: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 55.56%\n", - "Epoch 100: accuracy appended (55.56%)\n", - "Epoch 100: model set back to train mode\n", - "Epoch 100: model parameters saved\n", - "Epoch 100/10000, Loss: 4.6532, Accuracy: 55.56%\n", - "Epoch 101 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 101: avg_loss appended (4.4867)\n", - "Epoch 101: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 55.56%\n", - "Epoch 101: accuracy appended (55.56%)\n", - "Epoch 101: model set back to train mode\n", - "Epoch 101: model parameters saved\n", - "Epoch 102 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 102: avg_loss appended (4.6698)\n", - "Epoch 102: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 55.56%\n", - "Epoch 102: accuracy appended (55.56%)\n", - "Epoch 102: model set back to train mode\n", - "Epoch 102: model parameters saved\n", - "Epoch 103 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 103: avg_loss appended (4.6152)\n", - "Epoch 103: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 55.56%\n", - "Epoch 103: accuracy appended (55.56%)\n", - "Epoch 103: model set back to train mode\n", - "Epoch 103: model parameters saved\n", - "Epoch 104 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 104: avg_loss appended (4.5552)\n", - "Epoch 104: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 55.56%\n", - "Epoch 104: accuracy appended (55.56%)\n", - "Epoch 104: model set back to train mode\n", - "Epoch 104: model parameters saved\n", - "Epoch 105 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 105: avg_loss appended (4.7512)\n", - "Epoch 105: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 55.56%\n", - "Epoch 105: accuracy appended (55.56%)\n", - "Epoch 105: model set back to train mode\n", - "Epoch 105: model parameters saved\n", - "Epoch 106 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 106: avg_loss appended (4.4766)\n", - "Epoch 106: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 58.33%\n", - "Epoch 106: accuracy appended (58.33%)\n", - "Epoch 106: model set back to train mode\n", - "Epoch 106: model parameters saved\n", - "Epoch 107 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 107: avg_loss appended (4.5883)\n", - "Epoch 107: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 58.33%\n", - "Epoch 107: accuracy appended (58.33%)\n", - "Epoch 107: model set back to train mode\n", - "Epoch 107: model parameters saved\n", - "Epoch 108 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 108: avg_loss appended (4.5044)\n", - "Epoch 108: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 55.56%\n", - "Epoch 108: accuracy appended (55.56%)\n", - "Epoch 108: model set back to train mode\n", - "Epoch 108: model parameters saved\n", - "Epoch 109 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 109: avg_loss appended (4.3297)\n", - "Epoch 109: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 58.33%\n", - "Epoch 109: accuracy appended (58.33%)\n", - "Epoch 109: model set back to train mode\n", - "Epoch 109: model parameters saved\n", - "Epoch 110 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 110: avg_loss appended (4.3747)\n", - "Epoch 110: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 58.33%\n", - "Epoch 110: accuracy appended (58.33%)\n", - "Epoch 110: model set back to train mode\n", - "Epoch 110: model parameters saved\n", - "Epoch 111 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 111: avg_loss appended (4.2582)\n", - "Epoch 111: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 61.11%\n", - "Epoch 111: accuracy appended (61.11%)\n", - "Epoch 111: model set back to train mode\n", - "Epoch 111: model parameters saved\n", - "Epoch 112 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 112: avg_loss appended (4.1115)\n", - "Epoch 112: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 66.67%\n", - "Epoch 112: accuracy appended (66.67%)\n", - "Epoch 112: model set back to train mode\n", - "Epoch 112: model parameters saved\n", - "Epoch 113 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 113: avg_loss appended (4.0001)\n", - "Epoch 113: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 66.67%\n", - "Epoch 113: accuracy appended (66.67%)\n", - "Epoch 113: model set back to train mode\n", - "Epoch 113: model parameters saved\n", - "Epoch 114 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 114: avg_loss appended (3.7760)\n", - "Epoch 114: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 63.89%\n", - "Epoch 114: accuracy appended (63.89%)\n", - "Epoch 114: model set back to train mode\n", - "Epoch 114: model parameters saved\n", - "Epoch 115 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 115: avg_loss appended (3.5881)\n", - "Epoch 115: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 115: accuracy appended (69.44%)\n", - "Epoch 115: model set back to train mode\n", - "Epoch 115: model parameters saved\n", - "Epoch 116 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 116: avg_loss appended (3.6038)\n", - "Epoch 116: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 116: accuracy appended (75.00%)\n", - "Epoch 116: model set back to train mode\n", - "Epoch 116: model parameters saved\n", - "Epoch 117 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 117: avg_loss appended (3.5436)\n", - "Epoch 117: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 117: accuracy appended (75.00%)\n", - "Epoch 117: model set back to train mode\n", - "Epoch 117: model parameters saved\n", - "Epoch 118 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 118: avg_loss appended (3.3518)\n", - "Epoch 118: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 118: accuracy appended (72.22%)\n", - "Epoch 118: model set back to train mode\n", - "Epoch 118: model parameters saved\n", - "Epoch 119 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 119: avg_loss appended (3.3951)\n", - "Epoch 119: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 119: accuracy appended (75.00%)\n", - "Epoch 119: model set back to train mode\n", - "Epoch 119: model parameters saved\n", - "Epoch 120 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 120: avg_loss appended (3.3318)\n", - "Epoch 120: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 120: accuracy appended (75.00%)\n", - "Epoch 120: model set back to train mode\n", - "Epoch 120: model parameters saved\n", - "Epoch 121 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 121: avg_loss appended (3.2354)\n", - "Epoch 121: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 121: accuracy appended (77.78%)\n", - "Epoch 121: model set back to train mode\n", - "Epoch 121: model parameters saved\n", - "Epoch 122 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 122: avg_loss appended (3.3113)\n", - "Epoch 122: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 122: accuracy appended (77.78%)\n", - "Epoch 122: model set back to train mode\n", - "Epoch 122: model parameters saved\n", - "Epoch 123 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 123: avg_loss appended (3.2206)\n", - "Epoch 123: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 123: accuracy appended (75.00%)\n", - "Epoch 123: model set back to train mode\n", - "Epoch 123: model parameters saved\n", - "Epoch 124 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 124: avg_loss appended (3.2149)\n", - "Epoch 124: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 124: accuracy appended (75.00%)\n", - "Epoch 124: model set back to train mode\n", - "Epoch 124: model parameters saved\n", - "Epoch 125 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 125: avg_loss appended (3.2420)\n", - "Epoch 125: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 125: accuracy appended (77.78%)\n", - "Epoch 125: model set back to train mode\n", - "Epoch 125: model parameters saved\n", - "Epoch 126 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 126: avg_loss appended (3.1714)\n", - "Epoch 126: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 126: accuracy appended (75.00%)\n", - "Epoch 126: model set back to train mode\n", - "Epoch 126: model parameters saved\n", - "Epoch 127 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 127: avg_loss appended (3.1683)\n", - "Epoch 127: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 127: accuracy appended (77.78%)\n", - "Epoch 127: model set back to train mode\n", - "Epoch 127: model parameters saved\n", - "Epoch 128 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 128: avg_loss appended (3.0919)\n", - "Epoch 128: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 128: accuracy appended (77.78%)\n", - "Epoch 128: model set back to train mode\n", - "Epoch 128: model parameters saved\n", - "Epoch 129 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 129: avg_loss appended (3.1217)\n", - "Epoch 129: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 129: accuracy appended (77.78%)\n", - "Epoch 129: model set back to train mode\n", - "Epoch 129: model parameters saved\n", - "Epoch 130 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 130: avg_loss appended (3.0878)\n", - "Epoch 130: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 130: accuracy appended (75.00%)\n", - "Epoch 130: model set back to train mode\n", - "Epoch 130: model parameters saved\n", - "Epoch 131 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 131: avg_loss appended (3.0827)\n", - "Epoch 131: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 131: accuracy appended (75.00%)\n", - "Epoch 131: model set back to train mode\n", - "Epoch 131: model parameters saved\n", - "Epoch 132 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 132: avg_loss appended (3.1126)\n", - "Epoch 132: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 132: accuracy appended (75.00%)\n", - "Epoch 132: model set back to train mode\n", - "Epoch 132: model parameters saved\n", - "Epoch 133 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 133: avg_loss appended (3.0697)\n", - "Epoch 133: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 133: accuracy appended (72.22%)\n", - "Epoch 133: model set back to train mode\n", - "Epoch 133: model parameters saved\n", - "Epoch 134 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 134: avg_loss appended (3.0751)\n", - "Epoch 134: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 134: accuracy appended (75.00%)\n", - "Epoch 134: model set back to train mode\n", - "Epoch 134: model parameters saved\n", - "Epoch 135 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 135: avg_loss appended (3.0322)\n", - "Epoch 135: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 135: accuracy appended (69.44%)\n", - "Epoch 135: model set back to train mode\n", - "Epoch 135: model parameters saved\n", - "Epoch 136 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 136: avg_loss appended (3.0100)\n", - "Epoch 136: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 136: accuracy appended (69.44%)\n", - "Epoch 136: model set back to train mode\n", - "Epoch 136: model parameters saved\n", - "Epoch 137 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 137: avg_loss appended (3.0170)\n", - "Epoch 137: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 137: accuracy appended (72.22%)\n", - "Epoch 137: model set back to train mode\n", - "Epoch 137: model parameters saved\n", - "Epoch 138 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 138: avg_loss appended (2.9793)\n", - "Epoch 138: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 138: accuracy appended (75.00%)\n", - "Epoch 138: model set back to train mode\n", - "Epoch 138: model parameters saved\n", - "Epoch 139 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 139: avg_loss appended (2.9805)\n", - "Epoch 139: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 139: accuracy appended (75.00%)\n", - "Epoch 139: model set back to train mode\n", - "Epoch 139: model parameters saved\n", - "Epoch 140 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 140: avg_loss appended (2.9594)\n", - "Epoch 140: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 140: accuracy appended (75.00%)\n", - "Epoch 140: model set back to train mode\n", - "Epoch 140: model parameters saved\n", - "Epoch 141 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 141: avg_loss appended (2.9300)\n", - "Epoch 141: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 141: accuracy appended (77.78%)\n", - "Epoch 141: model set back to train mode\n", - "Epoch 141: model parameters saved\n", - "Epoch 142 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 142: avg_loss appended (2.9269)\n", - "Epoch 142: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 142: accuracy appended (80.56%)\n", - "Epoch 142: model set back to train mode\n", - "Epoch 142: model parameters saved\n", - "Epoch 143 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 143: avg_loss appended (2.8963)\n", - "Epoch 143: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 143: accuracy appended (75.00%)\n", - "Epoch 143: model set back to train mode\n", - "Epoch 143: model parameters saved\n", - "Epoch 144 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 144: avg_loss appended (2.8887)\n", - "Epoch 144: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 144: accuracy appended (75.00%)\n", - "Epoch 144: model set back to train mode\n", - "Epoch 144: model parameters saved\n", - "Epoch 145 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 145: avg_loss appended (2.8768)\n", - "Epoch 145: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 145: accuracy appended (72.22%)\n", - "Epoch 145: model set back to train mode\n", - "Epoch 145: model parameters saved\n", - "Epoch 146 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 146: avg_loss appended (2.8556)\n", - "Epoch 146: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 146: accuracy appended (77.78%)\n", - "Epoch 146: model set back to train mode\n", - "Epoch 146: model parameters saved\n", - "Epoch 147 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 147: avg_loss appended (2.8472)\n", - "Epoch 147: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 147: accuracy appended (69.44%)\n", - "Epoch 147: model set back to train mode\n", - "Epoch 147: model parameters saved\n", - "Epoch 148 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 148: avg_loss appended (2.8263)\n", - "Epoch 148: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 148: accuracy appended (69.44%)\n", - "Epoch 148: model set back to train mode\n", - "Epoch 148: model parameters saved\n", - "Epoch 149 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 149: avg_loss appended (2.8176)\n", - "Epoch 149: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 149: accuracy appended (77.78%)\n", - "Epoch 149: model set back to train mode\n", - "Epoch 149: model parameters saved\n", - "Epoch 150 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 150: avg_loss appended (2.8181)\n", - "Epoch 150: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 150: accuracy appended (72.22%)\n", - "Epoch 150: model set back to train mode\n", - "Epoch 150: model parameters saved\n", - "Epoch 151 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 151: avg_loss appended (2.8105)\n", - "Epoch 151: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 151: accuracy appended (69.44%)\n", - "Epoch 151: model set back to train mode\n", - "Epoch 151: model parameters saved\n", - "Epoch 152 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 152: avg_loss appended (2.8106)\n", - "Epoch 152: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 152: accuracy appended (69.44%)\n", - "Epoch 152: model set back to train mode\n", - "Epoch 152: model parameters saved\n", - "Epoch 153 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 153: avg_loss appended (2.8072)\n", - "Epoch 153: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 153: accuracy appended (69.44%)\n", - "Epoch 153: model set back to train mode\n", - "Epoch 153: model parameters saved\n", - "Epoch 154 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 154: avg_loss appended (2.8026)\n", - "Epoch 154: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 154: accuracy appended (69.44%)\n", - "Epoch 154: model set back to train mode\n", - "Epoch 154: model parameters saved\n", - "Epoch 155 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 155: avg_loss appended (2.8028)\n", - "Epoch 155: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 66.67%\n", - "Epoch 155: accuracy appended (66.67%)\n", - "Epoch 155: model set back to train mode\n", - "Epoch 155: model parameters saved\n", - "Epoch 156 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 156: avg_loss appended (2.7974)\n", - "Epoch 156: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 66.67%\n", - "Epoch 156: accuracy appended (66.67%)\n", - "Epoch 156: model set back to train mode\n", - "Epoch 156: model parameters saved\n", - "Epoch 157 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 157: avg_loss appended (2.7948)\n", - "Epoch 157: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 157: accuracy appended (69.44%)\n", - "Epoch 157: model set back to train mode\n", - "Epoch 157: model parameters saved\n", - "Epoch 158 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 158: avg_loss appended (2.7955)\n", - "Epoch 158: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 158: accuracy appended (72.22%)\n", - "Epoch 158: model set back to train mode\n", - "Epoch 158: model parameters saved\n", - "Epoch 159 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 159: avg_loss appended (2.7942)\n", - "Epoch 159: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 159: accuracy appended (72.22%)\n", - "Epoch 159: model set back to train mode\n", - "Epoch 159: model parameters saved\n", - "Epoch 160 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 160: avg_loss appended (2.7953)\n", - "Epoch 160: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 160: accuracy appended (75.00%)\n", - "Epoch 160: model set back to train mode\n", - "Epoch 160: model parameters saved\n", - "Epoch 161 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 161: avg_loss appended (2.7940)\n", - "Epoch 161: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 161: accuracy appended (69.44%)\n", - "Epoch 161: model set back to train mode\n", - "Epoch 161: model parameters saved\n", - "Epoch 162 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 162: avg_loss appended (2.7910)\n", - "Epoch 162: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 162: accuracy appended (75.00%)\n", - "Epoch 162: model set back to train mode\n", - "Epoch 162: model parameters saved\n", - "Epoch 163 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 163: avg_loss appended (2.7895)\n", - "Epoch 163: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 163: accuracy appended (80.56%)\n", - "Epoch 163: model set back to train mode\n", - "Epoch 163: model parameters saved\n", - "Epoch 164 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 164: avg_loss appended (2.7868)\n", - "Epoch 164: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 164: accuracy appended (80.56%)\n", - "Epoch 164: model set back to train mode\n", - "Epoch 164: model parameters saved\n", - "Epoch 165 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 165: avg_loss appended (2.7853)\n", - "Epoch 165: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 66.67%\n", - "Epoch 165: accuracy appended (66.67%)\n", - "Epoch 165: model set back to train mode\n", - "Epoch 165: model parameters saved\n", - "Epoch 166 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 166: avg_loss appended (2.7853)\n", - "Epoch 166: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 166: accuracy appended (72.22%)\n", - "Epoch 166: model set back to train mode\n", - "Epoch 166: model parameters saved\n", - "Epoch 167 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 167: avg_loss appended (2.7849)\n", - "Epoch 167: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 167: accuracy appended (69.44%)\n", - "Epoch 167: model set back to train mode\n", - "Epoch 167: model parameters saved\n", - "Epoch 168 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 168: avg_loss appended (2.7850)\n", - "Epoch 168: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 168: accuracy appended (69.44%)\n", - "Epoch 168: model set back to train mode\n", - "Epoch 168: model parameters saved\n", - "Epoch 169 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 169: avg_loss appended (2.7846)\n", - "Epoch 169: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 169: accuracy appended (72.22%)\n", - "Epoch 169: model set back to train mode\n", - "Epoch 169: model parameters saved\n", - "Epoch 170 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 170: avg_loss appended (2.7835)\n", - "Epoch 170: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 170: accuracy appended (69.44%)\n", - "Epoch 170: model set back to train mode\n", - "Epoch 170: model parameters saved\n", - "Epoch 171 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 171: avg_loss appended (2.7830)\n", - "Epoch 171: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 171: accuracy appended (69.44%)\n", - "Epoch 171: model set back to train mode\n", - "Epoch 171: model parameters saved\n", - "Epoch 172 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 172: avg_loss appended (2.7824)\n", - "Epoch 172: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 172: accuracy appended (72.22%)\n", - "Epoch 172: model set back to train mode\n", - "Epoch 172: model parameters saved\n", - "Epoch 173 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 173: avg_loss appended (2.7820)\n", - "Epoch 173: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 173: accuracy appended (72.22%)\n", - "Epoch 173: model set back to train mode\n", - "Epoch 173: model parameters saved\n", - "Epoch 174 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 174: avg_loss appended (2.7819)\n", - "Epoch 174: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 174: accuracy appended (69.44%)\n", - "Epoch 174: model set back to train mode\n", - "Epoch 174: model parameters saved\n", - "Epoch 175 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 175: avg_loss appended (2.7816)\n", - "Epoch 175: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 175: accuracy appended (69.44%)\n", - "Epoch 175: model set back to train mode\n", - "Epoch 175: model parameters saved\n", - "Epoch 176 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 176: avg_loss appended (2.7812)\n", - "Epoch 176: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 176: accuracy appended (69.44%)\n", - "Epoch 176: model set back to train mode\n", - "Epoch 176: model parameters saved\n", - "Epoch 177 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 177: avg_loss appended (2.7811)\n", - "Epoch 177: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 177: accuracy appended (69.44%)\n", - "Epoch 177: model set back to train mode\n", - "Epoch 177: model parameters saved\n", - "Epoch 178 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 178: avg_loss appended (2.7808)\n", - "Epoch 178: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 178: accuracy appended (75.00%)\n", - "Epoch 178: model set back to train mode\n", - "Epoch 178: model parameters saved\n", - "Epoch 179 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 179: avg_loss appended (2.7805)\n", - "Epoch 179: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 179: accuracy appended (77.78%)\n", - "Epoch 179: model set back to train mode\n", - "Epoch 179: model parameters saved\n", - "Epoch 180 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 180: avg_loss appended (2.7802)\n", - "Epoch 180: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 180: accuracy appended (77.78%)\n", - "Epoch 180: model set back to train mode\n", - "Epoch 180: model parameters saved\n", - "Epoch 181 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 181: avg_loss appended (2.7798)\n", - "Epoch 181: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 181: accuracy appended (77.78%)\n", - "Epoch 181: model set back to train mode\n", - "Epoch 181: model parameters saved\n", - "Epoch 182 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 182: avg_loss appended (2.7794)\n", - "Epoch 182: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 182: accuracy appended (77.78%)\n", - "Epoch 182: model set back to train mode\n", - "Epoch 182: model parameters saved\n", - "Epoch 183 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 183: avg_loss appended (2.7792)\n", - "Epoch 183: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 183: accuracy appended (72.22%)\n", - "Epoch 183: model set back to train mode\n", - "Epoch 183: model parameters saved\n", - "Epoch 184 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 184: avg_loss appended (2.7790)\n", - "Epoch 184: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 184: accuracy appended (72.22%)\n", - "Epoch 184: model set back to train mode\n", - "Epoch 184: model parameters saved\n", - "Epoch 185 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 185: avg_loss appended (2.7790)\n", - "Epoch 185: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 185: accuracy appended (69.44%)\n", - "Epoch 185: model set back to train mode\n", - "Epoch 185: model parameters saved\n", - "Epoch 186 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 186: avg_loss appended (2.7789)\n", - "Epoch 186: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 66.67%\n", - "Epoch 186: accuracy appended (66.67%)\n", - "Epoch 186: model set back to train mode\n", - "Epoch 186: model parameters saved\n", - "Epoch 187 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 187: avg_loss appended (2.7788)\n", - "Epoch 187: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 187: accuracy appended (72.22%)\n", - "Epoch 187: model set back to train mode\n", - "Epoch 187: model parameters saved\n", - "Epoch 188 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 188: avg_loss appended (2.7788)\n", - "Epoch 188: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 188: accuracy appended (69.44%)\n", - "Epoch 188: model set back to train mode\n", - "Epoch 188: model parameters saved\n", - "Epoch 189 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 189: avg_loss appended (2.7786)\n", - "Epoch 189: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 63.89%\n", - "Epoch 189: accuracy appended (63.89%)\n", - "Epoch 189: model set back to train mode\n", - "Epoch 189: model parameters saved\n", - "Epoch 190 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 190: avg_loss appended (2.7785)\n", - "Epoch 190: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 66.67%\n", - "Epoch 190: accuracy appended (66.67%)\n", - "Epoch 190: model set back to train mode\n", - "Epoch 190: model parameters saved\n", - "Epoch 191 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 191: avg_loss appended (2.7784)\n", - "Epoch 191: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 66.67%\n", - "Epoch 191: accuracy appended (66.67%)\n", - "Epoch 191: model set back to train mode\n", - "Epoch 191: model parameters saved\n", - "Epoch 192 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 192: avg_loss appended (2.7784)\n", - "Epoch 192: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 66.67%\n", - "Epoch 192: accuracy appended (66.67%)\n", - "Epoch 192: model set back to train mode\n", - "Epoch 192: model parameters saved\n", - "Epoch 193 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 193: avg_loss appended (2.7785)\n", - "Epoch 193: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 66.67%\n", - "Epoch 193: accuracy appended (66.67%)\n", - "Epoch 193: model set back to train mode\n", - "Epoch 193: model parameters saved\n", - "Epoch 194 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 194: avg_loss appended (2.7785)\n", - "Epoch 194: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 194: accuracy appended (69.44%)\n", - "Epoch 194: model set back to train mode\n", - "Epoch 194: model parameters saved\n", - "Epoch 195 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 195: avg_loss appended (2.7784)\n", - "Epoch 195: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 195: accuracy appended (69.44%)\n", - "Epoch 195: model set back to train mode\n", - "Epoch 195: model parameters saved\n", - "Epoch 196 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 196: avg_loss appended (2.7784)\n", - "Epoch 196: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 66.67%\n", - "Epoch 196: accuracy appended (66.67%)\n", - "Epoch 196: model set back to train mode\n", - "Epoch 196: model parameters saved\n", - "Epoch 197 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 197: avg_loss appended (2.7783)\n", - "Epoch 197: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 197: accuracy appended (69.44%)\n", - "Epoch 197: model set back to train mode\n", - "Epoch 197: model parameters saved\n", - "Epoch 198 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 198: avg_loss appended (2.7782)\n", - "Epoch 198: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 198: accuracy appended (75.00%)\n", - "Epoch 198: model set back to train mode\n", - "Epoch 198: model parameters saved\n", - "Epoch 199 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 199: avg_loss appended (2.7782)\n", - "Epoch 199: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 199: accuracy appended (77.78%)\n", - "Epoch 199: model set back to train mode\n", - "Epoch 199: model parameters saved\n", - "Epoch 200 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 200: avg_loss appended (2.7781)\n", - "Epoch 200: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 200: accuracy appended (77.78%)\n", - "Epoch 200: model set back to train mode\n", - "Epoch 200: model parameters saved\n", - "Epoch 200/10000, Loss: 2.7781, Accuracy: 77.78%\n", - "Epoch 201 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 201: avg_loss appended (2.7781)\n", - "Epoch 201: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 201: accuracy appended (75.00%)\n", - "Epoch 201: model set back to train mode\n", - "Epoch 201: model parameters saved\n", - "Epoch 202 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 202: avg_loss appended (2.7781)\n", - "Epoch 202: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 202: accuracy appended (75.00%)\n", - "Epoch 202: model set back to train mode\n", - "Epoch 202: model parameters saved\n", - "Epoch 203 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 203: avg_loss appended (2.7781)\n", - "Epoch 203: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 203: accuracy appended (72.22%)\n", - "Epoch 203: model set back to train mode\n", - "Epoch 203: model parameters saved\n", - "Epoch 204 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 204: avg_loss appended (2.7781)\n", - "Epoch 204: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 204: accuracy appended (72.22%)\n", - "Epoch 204: model set back to train mode\n", - "Epoch 204: model parameters saved\n", - "Epoch 205 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 205: avg_loss appended (2.7780)\n", - "Epoch 205: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 205: accuracy appended (72.22%)\n", - "Epoch 205: model set back to train mode\n", - "Epoch 205: model parameters saved\n", - "Epoch 206 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 206: avg_loss appended (2.7780)\n", - "Epoch 206: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 206: accuracy appended (72.22%)\n", - "Epoch 206: model set back to train mode\n", - "Epoch 206: model parameters saved\n", - "Epoch 207 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 207: avg_loss appended (2.7780)\n", - "Epoch 207: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 66.67%\n", - "Epoch 207: accuracy appended (66.67%)\n", - "Epoch 207: model set back to train mode\n", - "Epoch 207: model parameters saved\n", - "Epoch 208 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 208: avg_loss appended (2.7780)\n", - "Epoch 208: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 66.67%\n", - "Epoch 208: accuracy appended (66.67%)\n", - "Epoch 208: model set back to train mode\n", - "Epoch 208: model parameters saved\n", - "Epoch 209 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 209: avg_loss appended (2.7780)\n", - "Epoch 209: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 209: accuracy appended (69.44%)\n", - "Epoch 209: model set back to train mode\n", - "Epoch 209: model parameters saved\n", - "Epoch 210 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 210: avg_loss appended (2.7780)\n", - "Epoch 210: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 210: accuracy appended (69.44%)\n", - "Epoch 210: model set back to train mode\n", - "Epoch 210: model parameters saved\n", - "Epoch 211 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 211: avg_loss appended (2.7780)\n", - "Epoch 211: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 66.67%\n", - "Epoch 211: accuracy appended (66.67%)\n", - "Epoch 211: model set back to train mode\n", - "Epoch 211: model parameters saved\n", - "Epoch 212 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 212: avg_loss appended (2.7780)\n", - "Epoch 212: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 212: accuracy appended (69.44%)\n", - "Epoch 212: model set back to train mode\n", - "Epoch 212: model parameters saved\n", - "Epoch 213 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 213: avg_loss appended (2.7779)\n", - "Epoch 213: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 213: accuracy appended (72.22%)\n", - "Epoch 213: model set back to train mode\n", - "Epoch 213: model parameters saved\n", - "Epoch 214 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 214: avg_loss appended (2.7779)\n", - "Epoch 214: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 214: accuracy appended (72.22%)\n", - "Epoch 214: model set back to train mode\n", - "Epoch 214: model parameters saved\n", - "Epoch 215 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 215: avg_loss appended (2.7779)\n", - "Epoch 215: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 66.67%\n", - "Epoch 215: accuracy appended (66.67%)\n", - "Epoch 215: model set back to train mode\n", - "Epoch 215: model parameters saved\n", - "Epoch 216 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 216: avg_loss appended (2.7779)\n", - "Epoch 216: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 216: accuracy appended (69.44%)\n", - "Epoch 216: model set back to train mode\n", - "Epoch 216: model parameters saved\n", - "Epoch 217 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 217: avg_loss appended (2.7779)\n", - "Epoch 217: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 217: accuracy appended (72.22%)\n", - "Epoch 217: model set back to train mode\n", - "Epoch 217: model parameters saved\n", - "Epoch 218 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 218: avg_loss appended (2.7779)\n", - "Epoch 218: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 218: accuracy appended (69.44%)\n", - "Epoch 218: model set back to train mode\n", - "Epoch 218: model parameters saved\n", - "Epoch 219 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 219: avg_loss appended (2.7779)\n", - "Epoch 219: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 219: accuracy appended (72.22%)\n", - "Epoch 219: model set back to train mode\n", - "Epoch 219: model parameters saved\n", - "Epoch 220 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 220: avg_loss appended (2.7779)\n", - "Epoch 220: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 220: accuracy appended (69.44%)\n", - "Epoch 220: model set back to train mode\n", - "Epoch 220: model parameters saved\n", - "Epoch 221 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 221: avg_loss appended (2.7779)\n", - "Epoch 221: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 221: accuracy appended (69.44%)\n", - "Epoch 221: model set back to train mode\n", - "Epoch 221: model parameters saved\n", - "Epoch 222 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 222: avg_loss appended (2.7779)\n", - "Epoch 222: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 222: accuracy appended (72.22%)\n", - "Epoch 222: model set back to train mode\n", - "Epoch 222: model parameters saved\n", - "Epoch 223 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 223: avg_loss appended (2.7779)\n", - "Epoch 223: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 223: accuracy appended (75.00%)\n", - "Epoch 223: model set back to train mode\n", - "Epoch 223: model parameters saved\n", - "Epoch 224 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 224: avg_loss appended (2.7778)\n", - "Epoch 224: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 224: accuracy appended (72.22%)\n", - "Epoch 224: model set back to train mode\n", - "Epoch 224: model parameters saved\n", - "Epoch 225 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 225: avg_loss appended (2.7778)\n", - "Epoch 225: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 225: accuracy appended (72.22%)\n", - "Epoch 225: model set back to train mode\n", - "Epoch 225: model parameters saved\n", - "Epoch 226 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 226: avg_loss appended (2.7778)\n", - "Epoch 226: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 226: accuracy appended (75.00%)\n", - "Epoch 226: model set back to train mode\n", - "Epoch 226: model parameters saved\n", - "Epoch 227 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 227: avg_loss appended (2.7778)\n", - "Epoch 227: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 227: accuracy appended (75.00%)\n", - "Epoch 227: model set back to train mode\n", - "Epoch 227: model parameters saved\n", - "Epoch 228 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 228: avg_loss appended (2.7778)\n", - "Epoch 228: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 228: accuracy appended (75.00%)\n", - "Epoch 228: model set back to train mode\n", - "Epoch 228: model parameters saved\n", - "Epoch 229 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 229: avg_loss appended (2.7778)\n", - "Epoch 229: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 229: accuracy appended (75.00%)\n", - "Epoch 229: model set back to train mode\n", - "Epoch 229: model parameters saved\n", - "Epoch 230 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 230: avg_loss appended (2.7778)\n", - "Epoch 230: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 230: accuracy appended (72.22%)\n", - "Epoch 230: model set back to train mode\n", - "Epoch 230: model parameters saved\n", - "Epoch 231 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 231: avg_loss appended (2.7778)\n", - "Epoch 231: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 231: accuracy appended (72.22%)\n", - "Epoch 231: model set back to train mode\n", - "Epoch 231: model parameters saved\n", - "Epoch 232 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 232: avg_loss appended (2.7778)\n", - "Epoch 232: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 232: accuracy appended (72.22%)\n", - "Epoch 232: model set back to train mode\n", - "Epoch 232: model parameters saved\n", - "Epoch 233 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 233: avg_loss appended (2.7778)\n", - "Epoch 233: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 233: accuracy appended (72.22%)\n", - "Epoch 233: model set back to train mode\n", - "Epoch 233: model parameters saved\n", - "Epoch 234 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 234: avg_loss appended (2.7778)\n", - "Epoch 234: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 234: accuracy appended (72.22%)\n", - "Epoch 234: model set back to train mode\n", - "Epoch 234: model parameters saved\n", - "Epoch 235 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 235: avg_loss appended (2.7778)\n", - "Epoch 235: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 235: accuracy appended (72.22%)\n", - "Epoch 235: model set back to train mode\n", - "Epoch 235: model parameters saved\n", - "Epoch 236 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 236: avg_loss appended (2.7778)\n", - "Epoch 236: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 236: accuracy appended (72.22%)\n", - "Epoch 236: model set back to train mode\n", - "Epoch 236: model parameters saved\n", - "Epoch 237 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 237: avg_loss appended (2.7778)\n", - "Epoch 237: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 237: accuracy appended (72.22%)\n", - "Epoch 237: model set back to train mode\n", - "Epoch 237: model parameters saved\n", - "Epoch 238 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 238: avg_loss appended (2.7778)\n", - "Epoch 238: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 238: accuracy appended (75.00%)\n", - "Epoch 238: model set back to train mode\n", - "Epoch 238: model parameters saved\n", - "Epoch 239 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 239: avg_loss appended (2.7778)\n", - "Epoch 239: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 239: accuracy appended (72.22%)\n", - "Epoch 239: model set back to train mode\n", - "Epoch 239: model parameters saved\n", - "Epoch 240 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 240: avg_loss appended (2.7778)\n", - "Epoch 240: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 240: accuracy appended (69.44%)\n", - "Epoch 240: model set back to train mode\n", - "Epoch 240: model parameters saved\n", - "Epoch 241 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 241: avg_loss appended (2.7778)\n", - "Epoch 241: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 241: accuracy appended (75.00%)\n", - "Epoch 241: model set back to train mode\n", - "Epoch 241: model parameters saved\n", - "Epoch 242 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 242: avg_loss appended (2.7778)\n", - "Epoch 242: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 242: accuracy appended (75.00%)\n", - "Epoch 242: model set back to train mode\n", - "Epoch 242: model parameters saved\n", - "Epoch 243 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 243: avg_loss appended (2.7778)\n", - "Epoch 243: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 243: accuracy appended (75.00%)\n", - "Epoch 243: model set back to train mode\n", - "Epoch 243: model parameters saved\n", - "Epoch 244 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 244: avg_loss appended (2.7778)\n", - "Epoch 244: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 244: accuracy appended (72.22%)\n", - "Epoch 244: model set back to train mode\n", - "Epoch 244: model parameters saved\n", - "Epoch 245 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 245: avg_loss appended (2.7778)\n", - "Epoch 245: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 245: accuracy appended (72.22%)\n", - "Epoch 245: model set back to train mode\n", - "Epoch 245: model parameters saved\n", - "Epoch 246 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 246: avg_loss appended (2.7778)\n", - "Epoch 246: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 246: accuracy appended (75.00%)\n", - "Epoch 246: model set back to train mode\n", - "Epoch 246: model parameters saved\n", - "Epoch 247 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 247: avg_loss appended (2.7778)\n", - "Epoch 247: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 247: accuracy appended (75.00%)\n", - "Epoch 247: model set back to train mode\n", - "Epoch 247: model parameters saved\n", - "Epoch 248 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 248: avg_loss appended (2.7778)\n", - "Epoch 248: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 248: accuracy appended (75.00%)\n", - "Epoch 248: model set back to train mode\n", - "Epoch 248: model parameters saved\n", - "Epoch 249 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 249: avg_loss appended (2.7778)\n", - "Epoch 249: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 249: accuracy appended (75.00%)\n", - "Epoch 249: model set back to train mode\n", - "Epoch 249: model parameters saved\n", - "Epoch 250 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 250: avg_loss appended (2.7778)\n", - "Epoch 250: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 250: accuracy appended (72.22%)\n", - "Epoch 250: model set back to train mode\n", - "Epoch 250: model parameters saved\n", - "Epoch 251 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 251: avg_loss appended (2.7778)\n", - "Epoch 251: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 251: accuracy appended (69.44%)\n", - "Epoch 251: model set back to train mode\n", - "Epoch 251: model parameters saved\n", - "Epoch 252 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 252: avg_loss appended (2.7778)\n", - "Epoch 252: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 252: accuracy appended (69.44%)\n", - "Epoch 252: model set back to train mode\n", - "Epoch 252: model parameters saved\n", - "Epoch 253 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 253: avg_loss appended (2.7778)\n", - "Epoch 253: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 253: accuracy appended (69.44%)\n", - "Epoch 253: model set back to train mode\n", - "Epoch 253: model parameters saved\n", - "Epoch 254 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 254: avg_loss appended (2.7778)\n", - "Epoch 254: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 254: accuracy appended (72.22%)\n", - "Epoch 254: model set back to train mode\n", - "Epoch 254: model parameters saved\n", - "Epoch 255 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 255: avg_loss appended (2.7778)\n", - "Epoch 255: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 255: accuracy appended (72.22%)\n", - "Epoch 255: model set back to train mode\n", - "Epoch 255: model parameters saved\n", - "Epoch 256 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 256: avg_loss appended (2.7778)\n", - "Epoch 256: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 256: accuracy appended (72.22%)\n", - "Epoch 256: model set back to train mode\n", - "Epoch 256: model parameters saved\n", - "Epoch 257 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 257: avg_loss appended (2.7778)\n", - "Epoch 257: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 257: accuracy appended (72.22%)\n", - "Epoch 257: model set back to train mode\n", - "Epoch 257: model parameters saved\n", - "Epoch 258 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 258: avg_loss appended (2.7778)\n", - "Epoch 258: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 258: accuracy appended (72.22%)\n", - "Epoch 258: model set back to train mode\n", - "Epoch 258: model parameters saved\n", - "Epoch 259 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 259: avg_loss appended (2.7778)\n", - "Epoch 259: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 259: accuracy appended (72.22%)\n", - "Epoch 259: model set back to train mode\n", - "Epoch 259: model parameters saved\n", - "Epoch 260 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 260: avg_loss appended (2.7778)\n", - "Epoch 260: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 260: accuracy appended (69.44%)\n", - "Epoch 260: model set back to train mode\n", - "Epoch 260: model parameters saved\n", - "Epoch 261 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 261: avg_loss appended (2.7778)\n", - "Epoch 261: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 261: accuracy appended (69.44%)\n", - "Epoch 261: model set back to train mode\n", - "Epoch 261: model parameters saved\n", - "Epoch 262 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 262: avg_loss appended (2.7778)\n", - "Epoch 262: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 262: accuracy appended (69.44%)\n", - "Epoch 262: model set back to train mode\n", - "Epoch 262: model parameters saved\n", - "Epoch 263 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 263: avg_loss appended (2.7778)\n", - "Epoch 263: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 263: accuracy appended (69.44%)\n", - "Epoch 263: model set back to train mode\n", - "Epoch 263: model parameters saved\n", - "Epoch 264 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 264: avg_loss appended (2.7778)\n", - "Epoch 264: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 264: accuracy appended (69.44%)\n", - "Epoch 264: model set back to train mode\n", - "Epoch 264: model parameters saved\n", - "Epoch 265 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 265: avg_loss appended (2.7778)\n", - "Epoch 265: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 265: accuracy appended (69.44%)\n", - "Epoch 265: model set back to train mode\n", - "Epoch 265: model parameters saved\n", - "Epoch 266 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 266: avg_loss appended (2.7778)\n", - "Epoch 266: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 266: accuracy appended (72.22%)\n", - "Epoch 266: model set back to train mode\n", - "Epoch 266: model parameters saved\n", - "Epoch 267 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 267: avg_loss appended (2.7778)\n", - "Epoch 267: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 267: accuracy appended (72.22%)\n", - "Epoch 267: model set back to train mode\n", - "Epoch 267: model parameters saved\n", - "Epoch 268 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 268: avg_loss appended (2.7778)\n", - "Epoch 268: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 268: accuracy appended (72.22%)\n", - "Epoch 268: model set back to train mode\n", - "Epoch 268: model parameters saved\n", - "Epoch 269 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 269: avg_loss appended (2.7778)\n", - "Epoch 269: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 269: accuracy appended (72.22%)\n", - "Epoch 269: model set back to train mode\n", - "Epoch 269: model parameters saved\n", - "Epoch 270 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 270: avg_loss appended (2.7778)\n", - "Epoch 270: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 270: accuracy appended (72.22%)\n", - "Epoch 270: model set back to train mode\n", - "Epoch 270: model parameters saved\n", - "Epoch 271 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 271: avg_loss appended (2.7778)\n", - "Epoch 271: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 271: accuracy appended (72.22%)\n", - "Epoch 271: model set back to train mode\n", - "Epoch 271: model parameters saved\n", - "Epoch 272 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 272: avg_loss appended (2.7778)\n", - "Epoch 272: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 272: accuracy appended (72.22%)\n", - "Epoch 272: model set back to train mode\n", - "Epoch 272: model parameters saved\n", - "Epoch 273 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 273: avg_loss appended (2.7778)\n", - "Epoch 273: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 273: accuracy appended (72.22%)\n", - "Epoch 273: model set back to train mode\n", - "Epoch 273: model parameters saved\n", - "Epoch 274 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 274: avg_loss appended (2.7778)\n", - "Epoch 274: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 274: accuracy appended (72.22%)\n", - "Epoch 274: model set back to train mode\n", - "Epoch 274: model parameters saved\n", - "Epoch 275 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 275: avg_loss appended (2.7778)\n", - "Epoch 275: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 275: accuracy appended (72.22%)\n", - "Epoch 275: model set back to train mode\n", - "Epoch 275: model parameters saved\n", - "Epoch 276 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 276: avg_loss appended (2.7778)\n", - "Epoch 276: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 276: accuracy appended (72.22%)\n", - "Epoch 276: model set back to train mode\n", - "Epoch 276: model parameters saved\n", - "Epoch 277 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 277: avg_loss appended (2.7778)\n", - "Epoch 277: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 277: accuracy appended (72.22%)\n", - "Epoch 277: model set back to train mode\n", - "Epoch 277: model parameters saved\n", - "Epoch 278 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 278: avg_loss appended (2.7778)\n", - "Epoch 278: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 278: accuracy appended (72.22%)\n", - "Epoch 278: model set back to train mode\n", - "Epoch 278: model parameters saved\n", - "Epoch 279 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 279: avg_loss appended (2.7778)\n", - "Epoch 279: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 279: accuracy appended (72.22%)\n", - "Epoch 279: model set back to train mode\n", - "Epoch 279: model parameters saved\n", - "Epoch 280 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 280: avg_loss appended (2.7778)\n", - "Epoch 280: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 280: accuracy appended (72.22%)\n", - "Epoch 280: model set back to train mode\n", - "Epoch 280: model parameters saved\n", - "Epoch 281 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 281: avg_loss appended (2.7778)\n", - "Epoch 281: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 281: accuracy appended (72.22%)\n", - "Epoch 281: model set back to train mode\n", - "Epoch 281: model parameters saved\n", - "Epoch 282 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 282: avg_loss appended (2.7778)\n", - "Epoch 282: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 282: accuracy appended (72.22%)\n", - "Epoch 282: model set back to train mode\n", - "Epoch 282: model parameters saved\n", - "Epoch 283 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 283: avg_loss appended (2.7778)\n", - "Epoch 283: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 283: accuracy appended (72.22%)\n", - "Epoch 283: model set back to train mode\n", - "Epoch 283: model parameters saved\n", - "Epoch 284 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 284: avg_loss appended (2.7778)\n", - "Epoch 284: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 284: accuracy appended (72.22%)\n", - "Epoch 284: model set back to train mode\n", - "Epoch 284: model parameters saved\n", - "Epoch 285 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 285: avg_loss appended (2.7778)\n", - "Epoch 285: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 285: accuracy appended (75.00%)\n", - "Epoch 285: model set back to train mode\n", - "Epoch 285: model parameters saved\n", - "Epoch 286 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 286: avg_loss appended (2.7778)\n", - "Epoch 286: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 286: accuracy appended (72.22%)\n", - "Epoch 286: model set back to train mode\n", - "Epoch 286: model parameters saved\n", - "Epoch 287 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 287: avg_loss appended (2.7778)\n", - "Epoch 287: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 287: accuracy appended (72.22%)\n", - "Epoch 287: model set back to train mode\n", - "Epoch 287: model parameters saved\n", - "Epoch 288 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 288: avg_loss appended (2.7778)\n", - "Epoch 288: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 288: accuracy appended (72.22%)\n", - "Epoch 288: model set back to train mode\n", - "Epoch 288: model parameters saved\n", - "Epoch 289 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 289: avg_loss appended (2.7778)\n", - "Epoch 289: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 289: accuracy appended (72.22%)\n", - "Epoch 289: model set back to train mode\n", - "Epoch 289: model parameters saved\n", - "Epoch 290 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 290: avg_loss appended (2.7778)\n", - "Epoch 290: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 290: accuracy appended (72.22%)\n", - "Epoch 290: model set back to train mode\n", - "Epoch 290: model parameters saved\n", - "Epoch 291 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 291: avg_loss appended (2.7778)\n", - "Epoch 291: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 291: accuracy appended (72.22%)\n", - "Epoch 291: model set back to train mode\n", - "Epoch 291: model parameters saved\n", - "Epoch 292 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 292: avg_loss appended (2.7778)\n", - "Epoch 292: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 292: accuracy appended (72.22%)\n", - "Epoch 292: model set back to train mode\n", - "Epoch 292: model parameters saved\n", - "Epoch 293 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 293: avg_loss appended (2.7778)\n", - "Epoch 293: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 293: accuracy appended (75.00%)\n", - "Epoch 293: model set back to train mode\n", - "Epoch 293: model parameters saved\n", - "Epoch 294 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 294: avg_loss appended (2.7778)\n", - "Epoch 294: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 294: accuracy appended (75.00%)\n", - "Epoch 294: model set back to train mode\n", - "Epoch 294: model parameters saved\n", - "Epoch 295 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 295: avg_loss appended (2.7778)\n", - "Epoch 295: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 295: accuracy appended (75.00%)\n", - "Epoch 295: model set back to train mode\n", - "Epoch 295: model parameters saved\n", - "Epoch 296 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 296: avg_loss appended (2.7778)\n", - "Epoch 296: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 296: accuracy appended (75.00%)\n", - "Epoch 296: model set back to train mode\n", - "Epoch 296: model parameters saved\n", - "Epoch 297 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 297: avg_loss appended (2.7778)\n", - "Epoch 297: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 297: accuracy appended (75.00%)\n", - "Epoch 297: model set back to train mode\n", - "Epoch 297: model parameters saved\n", - "Epoch 298 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 298: avg_loss appended (2.7778)\n", - "Epoch 298: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 298: accuracy appended (75.00%)\n", - "Epoch 298: model set back to train mode\n", - "Epoch 298: model parameters saved\n", - "Epoch 299 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 299: avg_loss appended (2.7778)\n", - "Epoch 299: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 299: accuracy appended (75.00%)\n", - "Epoch 299: model set back to train mode\n", - "Epoch 299: model parameters saved\n", - "Epoch 300 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 300: avg_loss appended (2.7778)\n", - "Epoch 300: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 300: accuracy appended (75.00%)\n", - "Epoch 300: model set back to train mode\n", - "Epoch 300: model parameters saved\n", - "Epoch 300/10000, Loss: 2.7778, Accuracy: 75.00%\n", - "Epoch 301 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 301: avg_loss appended (2.7778)\n", - "Epoch 301: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 301: accuracy appended (75.00%)\n", - "Epoch 301: model set back to train mode\n", - "Epoch 301: model parameters saved\n", - "Epoch 302 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 302: avg_loss appended (2.7778)\n", - "Epoch 302: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 302: accuracy appended (75.00%)\n", - "Epoch 302: model set back to train mode\n", - "Epoch 302: model parameters saved\n", - "Epoch 303 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 303: avg_loss appended (2.7778)\n", - "Epoch 303: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 303: accuracy appended (75.00%)\n", - "Epoch 303: model set back to train mode\n", - "Epoch 303: model parameters saved\n", - "Epoch 304 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 304: avg_loss appended (2.7778)\n", - "Epoch 304: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 304: accuracy appended (75.00%)\n", - "Epoch 304: model set back to train mode\n", - "Epoch 304: model parameters saved\n", - "Epoch 305 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 305: avg_loss appended (2.7778)\n", - "Epoch 305: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 305: accuracy appended (75.00%)\n", - "Epoch 305: model set back to train mode\n", - "Epoch 305: model parameters saved\n", - "Epoch 306 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 306: avg_loss appended (2.7778)\n", - "Epoch 306: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 306: accuracy appended (75.00%)\n", - "Epoch 306: model set back to train mode\n", - "Epoch 306: model parameters saved\n", - "Epoch 307 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 307: avg_loss appended (2.7778)\n", - "Epoch 307: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 307: accuracy appended (75.00%)\n", - "Epoch 307: model set back to train mode\n", - "Epoch 307: model parameters saved\n", - "Epoch 308 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 308: avg_loss appended (2.7778)\n", - "Epoch 308: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 308: accuracy appended (75.00%)\n", - "Epoch 308: model set back to train mode\n", - "Epoch 308: model parameters saved\n", - "Epoch 309 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 309: avg_loss appended (2.7778)\n", - "Epoch 309: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 309: accuracy appended (75.00%)\n", - "Epoch 309: model set back to train mode\n", - "Epoch 309: model parameters saved\n", - "Epoch 310 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 310: avg_loss appended (2.7778)\n", - "Epoch 310: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 310: accuracy appended (75.00%)\n", - "Epoch 310: model set back to train mode\n", - "Epoch 310: model parameters saved\n", - "Epoch 311 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 311: avg_loss appended (2.7778)\n", - "Epoch 311: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 311: accuracy appended (75.00%)\n", - "Epoch 311: model set back to train mode\n", - "Epoch 311: model parameters saved\n", - "Epoch 312 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 312: avg_loss appended (2.7778)\n", - "Epoch 312: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 312: accuracy appended (75.00%)\n", - "Epoch 312: model set back to train mode\n", - "Epoch 312: model parameters saved\n", - "Epoch 313 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 313: avg_loss appended (2.7778)\n", - "Epoch 313: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 313: accuracy appended (75.00%)\n", - "Epoch 313: model set back to train mode\n", - "Epoch 313: model parameters saved\n", - "Epoch 314 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 314: avg_loss appended (2.7778)\n", - "Epoch 314: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 314: accuracy appended (75.00%)\n", - "Epoch 314: model set back to train mode\n", - "Epoch 314: model parameters saved\n", - "Epoch 315 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 315: avg_loss appended (2.7778)\n", - "Epoch 315: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 315: accuracy appended (75.00%)\n", - "Epoch 315: model set back to train mode\n", - "Epoch 315: model parameters saved\n", - "Epoch 316 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 316: avg_loss appended (2.7778)\n", - "Epoch 316: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 316: accuracy appended (75.00%)\n", - "Epoch 316: model set back to train mode\n", - "Epoch 316: model parameters saved\n", - "Epoch 317 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 317: avg_loss appended (2.7778)\n", - "Epoch 317: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 317: accuracy appended (75.00%)\n", - "Epoch 317: model set back to train mode\n", - "Epoch 317: model parameters saved\n", - "Epoch 318 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 318: avg_loss appended (2.7778)\n", - "Epoch 318: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 318: accuracy appended (75.00%)\n", - "Epoch 318: model set back to train mode\n", - "Epoch 318: model parameters saved\n", - "Epoch 319 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 319: avg_loss appended (2.7778)\n", - "Epoch 319: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 319: accuracy appended (75.00%)\n", - "Epoch 319: model set back to train mode\n", - "Epoch 319: model parameters saved\n", - "Epoch 320 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 320: avg_loss appended (2.7778)\n", - "Epoch 320: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 320: accuracy appended (75.00%)\n", - "Epoch 320: model set back to train mode\n", - "Epoch 320: model parameters saved\n", - "Epoch 321 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 321: avg_loss appended (2.7778)\n", - "Epoch 321: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 321: accuracy appended (75.00%)\n", - "Epoch 321: model set back to train mode\n", - "Epoch 321: model parameters saved\n", - "Epoch 322 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 322: avg_loss appended (2.7778)\n", - "Epoch 322: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 322: accuracy appended (75.00%)\n", - "Epoch 322: model set back to train mode\n", - "Epoch 322: model parameters saved\n", - "Epoch 323 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 323: avg_loss appended (2.7778)\n", - "Epoch 323: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 323: accuracy appended (75.00%)\n", - "Epoch 323: model set back to train mode\n", - "Epoch 323: model parameters saved\n", - "Epoch 324 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 324: avg_loss appended (2.7778)\n", - "Epoch 324: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 324: accuracy appended (75.00%)\n", - "Epoch 324: model set back to train mode\n", - "Epoch 324: model parameters saved\n", - "Epoch 325 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 325: avg_loss appended (2.7778)\n", - "Epoch 325: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 325: accuracy appended (75.00%)\n", - "Epoch 325: model set back to train mode\n", - "Epoch 325: model parameters saved\n", - "Epoch 326 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 326: avg_loss appended (2.7778)\n", - "Epoch 326: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 326: accuracy appended (75.00%)\n", - "Epoch 326: model set back to train mode\n", - "Epoch 326: model parameters saved\n", - "Epoch 327 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 327: avg_loss appended (2.7778)\n", - "Epoch 327: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 327: accuracy appended (75.00%)\n", - "Epoch 327: model set back to train mode\n", - "Epoch 327: model parameters saved\n", - "Epoch 328 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 328: avg_loss appended (2.7778)\n", - "Epoch 328: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 328: accuracy appended (75.00%)\n", - "Epoch 328: model set back to train mode\n", - "Epoch 328: model parameters saved\n", - "Epoch 329 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 329: avg_loss appended (2.7778)\n", - "Epoch 329: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 329: accuracy appended (75.00%)\n", - "Epoch 329: model set back to train mode\n", - "Epoch 329: model parameters saved\n", - "Epoch 330 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 330: avg_loss appended (2.7778)\n", - "Epoch 330: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 330: accuracy appended (75.00%)\n", - "Epoch 330: model set back to train mode\n", - "Epoch 330: model parameters saved\n", - "Epoch 331 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 331: avg_loss appended (2.7778)\n", - "Epoch 331: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 331: accuracy appended (75.00%)\n", - "Epoch 331: model set back to train mode\n", - "Epoch 331: model parameters saved\n", - "Epoch 332 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 332: avg_loss appended (2.7778)\n", - "Epoch 332: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 332: accuracy appended (75.00%)\n", - "Epoch 332: model set back to train mode\n", - "Epoch 332: model parameters saved\n", - "Epoch 333 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 333: avg_loss appended (2.7778)\n", - "Epoch 333: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 333: accuracy appended (75.00%)\n", - "Epoch 333: model set back to train mode\n", - "Epoch 333: model parameters saved\n", - "Epoch 334 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 334: avg_loss appended (2.7778)\n", - "Epoch 334: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 334: accuracy appended (75.00%)\n", - "Epoch 334: model set back to train mode\n", - "Epoch 334: model parameters saved\n", - "Epoch 335 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 335: avg_loss appended (2.7778)\n", - "Epoch 335: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 335: accuracy appended (75.00%)\n", - "Epoch 335: model set back to train mode\n", - "Epoch 335: model parameters saved\n", - "Epoch 336 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 336: avg_loss appended (2.7778)\n", - "Epoch 336: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 336: accuracy appended (75.00%)\n", - "Epoch 336: model set back to train mode\n", - "Epoch 336: model parameters saved\n", - "Epoch 337 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 337: avg_loss appended (2.7778)\n", - "Epoch 337: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 337: accuracy appended (75.00%)\n", - "Epoch 337: model set back to train mode\n", - "Epoch 337: model parameters saved\n", - "Epoch 338 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 338: avg_loss appended (2.7778)\n", - "Epoch 338: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 338: accuracy appended (75.00%)\n", - "Epoch 338: model set back to train mode\n", - "Epoch 338: model parameters saved\n", - "Epoch 339 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 339: avg_loss appended (2.7778)\n", - "Epoch 339: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 339: accuracy appended (75.00%)\n", - "Epoch 339: model set back to train mode\n", - "Epoch 339: model parameters saved\n", - "Epoch 340 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 340: avg_loss appended (2.7778)\n", - "Epoch 340: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 340: accuracy appended (75.00%)\n", - "Epoch 340: model set back to train mode\n", - "Epoch 340: model parameters saved\n", - "Epoch 341 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 341: avg_loss appended (2.7778)\n", - "Epoch 341: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 341: accuracy appended (72.22%)\n", - "Epoch 341: model set back to train mode\n", - "Epoch 341: model parameters saved\n", - "Epoch 342 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 342: avg_loss appended (2.7778)\n", - "Epoch 342: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 342: accuracy appended (72.22%)\n", - "Epoch 342: model set back to train mode\n", - "Epoch 342: model parameters saved\n", - "Epoch 343 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 343: avg_loss appended (2.7778)\n", - "Epoch 343: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 343: accuracy appended (72.22%)\n", - "Epoch 343: model set back to train mode\n", - "Epoch 343: model parameters saved\n", - "Epoch 344 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 344: avg_loss appended (2.7778)\n", - "Epoch 344: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 344: accuracy appended (72.22%)\n", - "Epoch 344: model set back to train mode\n", - "Epoch 344: model parameters saved\n", - "Epoch 345 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 345: avg_loss appended (2.7778)\n", - "Epoch 345: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 345: accuracy appended (72.22%)\n", - "Epoch 345: model set back to train mode\n", - "Epoch 345: model parameters saved\n", - "Epoch 346 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 346: avg_loss appended (2.7778)\n", - "Epoch 346: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 346: accuracy appended (72.22%)\n", - "Epoch 346: model set back to train mode\n", - "Epoch 346: model parameters saved\n", - "Epoch 347 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 347: avg_loss appended (2.7778)\n", - "Epoch 347: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 347: accuracy appended (72.22%)\n", - "Epoch 347: model set back to train mode\n", - "Epoch 347: model parameters saved\n", - "Epoch 348 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 348: avg_loss appended (2.7778)\n", - "Epoch 348: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 348: accuracy appended (72.22%)\n", - "Epoch 348: model set back to train mode\n", - "Epoch 348: model parameters saved\n", - "Epoch 349 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 349: avg_loss appended (2.7778)\n", - "Epoch 349: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 349: accuracy appended (72.22%)\n", - "Epoch 349: model set back to train mode\n", - "Epoch 349: model parameters saved\n", - "Epoch 350 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 350: avg_loss appended (2.7778)\n", - "Epoch 350: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 350: accuracy appended (72.22%)\n", - "Epoch 350: model set back to train mode\n", - "Epoch 350: model parameters saved\n", - "Epoch 351 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 351: avg_loss appended (2.7778)\n", - "Epoch 351: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 351: accuracy appended (72.22%)\n", - "Epoch 351: model set back to train mode\n", - "Epoch 351: model parameters saved\n", - "Epoch 352 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 352: avg_loss appended (2.7778)\n", - "Epoch 352: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 352: accuracy appended (72.22%)\n", - "Epoch 352: model set back to train mode\n", - "Epoch 352: model parameters saved\n", - "Epoch 353 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 353: avg_loss appended (2.7778)\n", - "Epoch 353: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 353: accuracy appended (72.22%)\n", - "Epoch 353: model set back to train mode\n", - "Epoch 353: model parameters saved\n", - "Epoch 354 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 354: avg_loss appended (2.7778)\n", - "Epoch 354: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 354: accuracy appended (72.22%)\n", - "Epoch 354: model set back to train mode\n", - "Epoch 354: model parameters saved\n", - "Epoch 355 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 355: avg_loss appended (2.7778)\n", - "Epoch 355: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 355: accuracy appended (72.22%)\n", - "Epoch 355: model set back to train mode\n", - "Epoch 355: model parameters saved\n", - "Epoch 356 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 356: avg_loss appended (2.7778)\n", - "Epoch 356: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 356: accuracy appended (72.22%)\n", - "Epoch 356: model set back to train mode\n", - "Epoch 356: model parameters saved\n", - "Epoch 357 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 357: avg_loss appended (2.7778)\n", - "Epoch 357: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 357: accuracy appended (72.22%)\n", - "Epoch 357: model set back to train mode\n", - "Epoch 357: model parameters saved\n", - "Epoch 358 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 358: avg_loss appended (2.7778)\n", - "Epoch 358: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 358: accuracy appended (72.22%)\n", - "Epoch 358: model set back to train mode\n", - "Epoch 358: model parameters saved\n", - "Epoch 359 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 359: avg_loss appended (2.7778)\n", - "Epoch 359: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 359: accuracy appended (72.22%)\n", - "Epoch 359: model set back to train mode\n", - "Epoch 359: model parameters saved\n", - "Epoch 360 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 360: avg_loss appended (2.7778)\n", - "Epoch 360: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 360: accuracy appended (72.22%)\n", - "Epoch 360: model set back to train mode\n", - "Epoch 360: model parameters saved\n", - "Epoch 361 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 361: avg_loss appended (2.7778)\n", - "Epoch 361: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 361: accuracy appended (72.22%)\n", - "Epoch 361: model set back to train mode\n", - "Epoch 361: model parameters saved\n", - "Epoch 362 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 362: avg_loss appended (2.7778)\n", - "Epoch 362: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 362: accuracy appended (72.22%)\n", - "Epoch 362: model set back to train mode\n", - "Epoch 362: model parameters saved\n", - "Epoch 363 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 363: avg_loss appended (2.7778)\n", - "Epoch 363: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 363: accuracy appended (75.00%)\n", - "Epoch 363: model set back to train mode\n", - "Epoch 363: model parameters saved\n", - "Epoch 364 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 364: avg_loss appended (2.7778)\n", - "Epoch 364: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 364: accuracy appended (75.00%)\n", - "Epoch 364: model set back to train mode\n", - "Epoch 364: model parameters saved\n", - "Epoch 365 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 365: avg_loss appended (2.7778)\n", - "Epoch 365: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 365: accuracy appended (72.22%)\n", - "Epoch 365: model set back to train mode\n", - "Epoch 365: model parameters saved\n", - "Epoch 366 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 366: avg_loss appended (2.7778)\n", - "Epoch 366: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 366: accuracy appended (72.22%)\n", - "Epoch 366: model set back to train mode\n", - "Epoch 366: model parameters saved\n", - "Epoch 367 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 367: avg_loss appended (2.7778)\n", - "Epoch 367: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 367: accuracy appended (72.22%)\n", - "Epoch 367: model set back to train mode\n", - "Epoch 367: model parameters saved\n", - "Epoch 368 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 368: avg_loss appended (2.7778)\n", - "Epoch 368: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 368: accuracy appended (72.22%)\n", - "Epoch 368: model set back to train mode\n", - "Epoch 368: model parameters saved\n", - "Epoch 369 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 369: avg_loss appended (2.7778)\n", - "Epoch 369: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 369: accuracy appended (72.22%)\n", - "Epoch 369: model set back to train mode\n", - "Epoch 369: model parameters saved\n", - "Epoch 370 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 370: avg_loss appended (2.7778)\n", - "Epoch 370: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 370: accuracy appended (72.22%)\n", - "Epoch 370: model set back to train mode\n", - "Epoch 370: model parameters saved\n", - "Epoch 371 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 371: avg_loss appended (2.7778)\n", - "Epoch 371: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 371: accuracy appended (72.22%)\n", - "Epoch 371: model set back to train mode\n", - "Epoch 371: model parameters saved\n", - "Epoch 372 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 372: avg_loss appended (2.7778)\n", - "Epoch 372: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 372: accuracy appended (72.22%)\n", - "Epoch 372: model set back to train mode\n", - "Epoch 372: model parameters saved\n", - "Epoch 373 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 373: avg_loss appended (2.7778)\n", - "Epoch 373: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 373: accuracy appended (72.22%)\n", - "Epoch 373: model set back to train mode\n", - "Epoch 373: model parameters saved\n", - "Epoch 374 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 374: avg_loss appended (2.7778)\n", - "Epoch 374: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 374: accuracy appended (72.22%)\n", - "Epoch 374: model set back to train mode\n", - "Epoch 374: model parameters saved\n", - "Epoch 375 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 375: avg_loss appended (2.7778)\n", - "Epoch 375: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 375: accuracy appended (72.22%)\n", - "Epoch 375: model set back to train mode\n", - "Epoch 375: model parameters saved\n", - "Epoch 376 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 376: avg_loss appended (2.7778)\n", - "Epoch 376: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 376: accuracy appended (72.22%)\n", - "Epoch 376: model set back to train mode\n", - "Epoch 376: model parameters saved\n", - "Epoch 377 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 377: avg_loss appended (2.7778)\n", - "Epoch 377: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 377: accuracy appended (72.22%)\n", - "Epoch 377: model set back to train mode\n", - "Epoch 377: model parameters saved\n", - "Epoch 378 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 378: avg_loss appended (2.7778)\n", - "Epoch 378: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 378: accuracy appended (72.22%)\n", - "Epoch 378: model set back to train mode\n", - "Epoch 378: model parameters saved\n", - "Epoch 379 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 379: avg_loss appended (2.7778)\n", - "Epoch 379: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 379: accuracy appended (72.22%)\n", - "Epoch 379: model set back to train mode\n", - "Epoch 379: model parameters saved\n", - "Epoch 380 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 380: avg_loss appended (2.7778)\n", - "Epoch 380: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 380: accuracy appended (72.22%)\n", - "Epoch 380: model set back to train mode\n", - "Epoch 380: model parameters saved\n", - "Epoch 381 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 381: avg_loss appended (2.7778)\n", - "Epoch 381: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 381: accuracy appended (72.22%)\n", - "Epoch 381: model set back to train mode\n", - "Epoch 381: model parameters saved\n", - "Epoch 382 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 382: avg_loss appended (2.7778)\n", - "Epoch 382: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 382: accuracy appended (72.22%)\n", - "Epoch 382: model set back to train mode\n", - "Epoch 382: model parameters saved\n", - "Epoch 383 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 383: avg_loss appended (2.7778)\n", - "Epoch 383: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 383: accuracy appended (72.22%)\n", - "Epoch 383: model set back to train mode\n", - "Epoch 383: model parameters saved\n", - "Epoch 384 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 384: avg_loss appended (2.7778)\n", - "Epoch 384: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 384: accuracy appended (72.22%)\n", - "Epoch 384: model set back to train mode\n", - "Epoch 384: model parameters saved\n", - "Epoch 385 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 385: avg_loss appended (2.7778)\n", - "Epoch 385: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 385: accuracy appended (72.22%)\n", - "Epoch 385: model set back to train mode\n", - "Epoch 385: model parameters saved\n", - "Epoch 386 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 386: avg_loss appended (2.7778)\n", - "Epoch 386: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 386: accuracy appended (72.22%)\n", - "Epoch 386: model set back to train mode\n", - "Epoch 386: model parameters saved\n", - "Epoch 387 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 387: avg_loss appended (2.7778)\n", - "Epoch 387: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 387: accuracy appended (72.22%)\n", - "Epoch 387: model set back to train mode\n", - "Epoch 387: model parameters saved\n", - "Epoch 388 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 388: avg_loss appended (2.7778)\n", - "Epoch 388: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 388: accuracy appended (72.22%)\n", - "Epoch 388: model set back to train mode\n", - "Epoch 388: model parameters saved\n", - "Epoch 389 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 389: avg_loss appended (2.7778)\n", - "Epoch 389: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 389: accuracy appended (72.22%)\n", - "Epoch 389: model set back to train mode\n", - "Epoch 389: model parameters saved\n", - "Epoch 390 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 390: avg_loss appended (2.7778)\n", - "Epoch 390: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 390: accuracy appended (72.22%)\n", - "Epoch 390: model set back to train mode\n", - "Epoch 390: model parameters saved\n", - "Epoch 391 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 391: avg_loss appended (2.7778)\n", - "Epoch 391: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 391: accuracy appended (72.22%)\n", - "Epoch 391: model set back to train mode\n", - "Epoch 391: model parameters saved\n", - "Epoch 392 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 392: avg_loss appended (2.7778)\n", - "Epoch 392: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 392: accuracy appended (72.22%)\n", - "Epoch 392: model set back to train mode\n", - "Epoch 392: model parameters saved\n", - "Epoch 393 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 393: avg_loss appended (2.7778)\n", - "Epoch 393: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 393: accuracy appended (72.22%)\n", - "Epoch 393: model set back to train mode\n", - "Epoch 393: model parameters saved\n", - "Epoch 394 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 394: avg_loss appended (2.7778)\n", - "Epoch 394: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 394: accuracy appended (72.22%)\n", - "Epoch 394: model set back to train mode\n", - "Epoch 394: model parameters saved\n", - "Epoch 395 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 395: avg_loss appended (2.7778)\n", - "Epoch 395: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 395: accuracy appended (72.22%)\n", - "Epoch 395: model set back to train mode\n", - "Epoch 395: model parameters saved\n", - "Epoch 396 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 396: avg_loss appended (2.7778)\n", - "Epoch 396: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 396: accuracy appended (72.22%)\n", - "Epoch 396: model set back to train mode\n", - "Epoch 396: model parameters saved\n", - "Epoch 397 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 397: avg_loss appended (2.7778)\n", - "Epoch 397: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 397: accuracy appended (72.22%)\n", - "Epoch 397: model set back to train mode\n", - "Epoch 397: model parameters saved\n", - "Epoch 398 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 398: avg_loss appended (2.7778)\n", - "Epoch 398: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 398: accuracy appended (72.22%)\n", - "Epoch 398: model set back to train mode\n", - "Epoch 398: model parameters saved\n", - "Epoch 399 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 399: avg_loss appended (2.7778)\n", - "Epoch 399: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 399: accuracy appended (72.22%)\n", - "Epoch 399: model set back to train mode\n", - "Epoch 399: model parameters saved\n", - "Epoch 400 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 400: avg_loss appended (2.7778)\n", - "Epoch 400: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 400: accuracy appended (72.22%)\n", - "Epoch 400: model set back to train mode\n", - "Epoch 400: model parameters saved\n", - "Epoch 400/10000, Loss: 2.7778, Accuracy: 72.22%\n", - "Epoch 401 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 401: avg_loss appended (2.7778)\n", - "Epoch 401: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 401: accuracy appended (69.44%)\n", - "Epoch 401: model set back to train mode\n", - "Epoch 401: model parameters saved\n", - "Epoch 402 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 402: avg_loss appended (2.7778)\n", - "Epoch 402: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 402: accuracy appended (69.44%)\n", - "Epoch 402: model set back to train mode\n", - "Epoch 402: model parameters saved\n", - "Epoch 403 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 403: avg_loss appended (2.7778)\n", - "Epoch 403: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 403: accuracy appended (69.44%)\n", - "Epoch 403: model set back to train mode\n", - "Epoch 403: model parameters saved\n", - "Epoch 404 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 404: avg_loss appended (2.7778)\n", - "Epoch 404: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 404: accuracy appended (69.44%)\n", - "Epoch 404: model set back to train mode\n", - "Epoch 404: model parameters saved\n", - "Epoch 405 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 405: avg_loss appended (2.7778)\n", - "Epoch 405: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 405: accuracy appended (69.44%)\n", - "Epoch 405: model set back to train mode\n", - "Epoch 405: model parameters saved\n", - "Epoch 406 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 406: avg_loss appended (2.7778)\n", - "Epoch 406: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 406: accuracy appended (69.44%)\n", - "Epoch 406: model set back to train mode\n", - "Epoch 406: model parameters saved\n", - "Epoch 407 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 407: avg_loss appended (2.7778)\n", - "Epoch 407: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 407: accuracy appended (69.44%)\n", - "Epoch 407: model set back to train mode\n", - "Epoch 407: model parameters saved\n", - "Epoch 408 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 408: avg_loss appended (2.7778)\n", - "Epoch 408: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 408: accuracy appended (69.44%)\n", - "Epoch 408: model set back to train mode\n", - "Epoch 408: model parameters saved\n", - "Epoch 409 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 409: avg_loss appended (2.7778)\n", - "Epoch 409: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 409: accuracy appended (69.44%)\n", - "Epoch 409: model set back to train mode\n", - "Epoch 409: model parameters saved\n", - "Epoch 410 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 410: avg_loss appended (2.7778)\n", - "Epoch 410: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 410: accuracy appended (69.44%)\n", - "Epoch 410: model set back to train mode\n", - "Epoch 410: model parameters saved\n", - "Epoch 411 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 411: avg_loss appended (2.7778)\n", - "Epoch 411: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 411: accuracy appended (69.44%)\n", - "Epoch 411: model set back to train mode\n", - "Epoch 411: model parameters saved\n", - "Epoch 412 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 412: avg_loss appended (2.7778)\n", - "Epoch 412: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 412: accuracy appended (69.44%)\n", - "Epoch 412: model set back to train mode\n", - "Epoch 412: model parameters saved\n", - "Epoch 413 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 413: avg_loss appended (2.7778)\n", - "Epoch 413: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 66.67%\n", - "Epoch 413: accuracy appended (66.67%)\n", - "Epoch 413: model set back to train mode\n", - "Epoch 413: model parameters saved\n", - "Epoch 414 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 414: avg_loss appended (2.7778)\n", - "Epoch 414: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 66.67%\n", - "Epoch 414: accuracy appended (66.67%)\n", - "Epoch 414: model set back to train mode\n", - "Epoch 414: model parameters saved\n", - "Epoch 415 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 415: avg_loss appended (2.7778)\n", - "Epoch 415: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 66.67%\n", - "Epoch 415: accuracy appended (66.67%)\n", - "Epoch 415: model set back to train mode\n", - "Epoch 415: model parameters saved\n", - "Epoch 416 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 416: avg_loss appended (2.7778)\n", - "Epoch 416: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 66.67%\n", - "Epoch 416: accuracy appended (66.67%)\n", - "Epoch 416: model set back to train mode\n", - "Epoch 416: model parameters saved\n", - "Epoch 417 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 417: avg_loss appended (2.7778)\n", - "Epoch 417: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 66.67%\n", - "Epoch 417: accuracy appended (66.67%)\n", - "Epoch 417: model set back to train mode\n", - "Epoch 417: model parameters saved\n", - "Epoch 418 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 418: avg_loss appended (2.7778)\n", - "Epoch 418: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 66.67%\n", - "Epoch 418: accuracy appended (66.67%)\n", - "Epoch 418: model set back to train mode\n", - "Epoch 418: model parameters saved\n", - "Epoch 419 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 419: avg_loss appended (2.7778)\n", - "Epoch 419: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 66.67%\n", - "Epoch 419: accuracy appended (66.67%)\n", - "Epoch 419: model set back to train mode\n", - "Epoch 419: model parameters saved\n", - "Epoch 420 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 420: avg_loss appended (2.7778)\n", - "Epoch 420: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 66.67%\n", - "Epoch 420: accuracy appended (66.67%)\n", - "Epoch 420: model set back to train mode\n", - "Epoch 420: model parameters saved\n", - "Epoch 421 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 421: avg_loss appended (2.7778)\n", - "Epoch 421: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 66.67%\n", - "Epoch 421: accuracy appended (66.67%)\n", - "Epoch 421: model set back to train mode\n", - "Epoch 421: model parameters saved\n", - "Epoch 422 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 422: avg_loss appended (2.7778)\n", - "Epoch 422: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 66.67%\n", - "Epoch 422: accuracy appended (66.67%)\n", - "Epoch 422: model set back to train mode\n", - "Epoch 422: model parameters saved\n", - "Epoch 423 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 423: avg_loss appended (2.7778)\n", - "Epoch 423: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 66.67%\n", - "Epoch 423: accuracy appended (66.67%)\n", - "Epoch 423: model set back to train mode\n", - "Epoch 423: model parameters saved\n", - "Epoch 424 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 424: avg_loss appended (2.7778)\n", - "Epoch 424: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 66.67%\n", - "Epoch 424: accuracy appended (66.67%)\n", - "Epoch 424: model set back to train mode\n", - "Epoch 424: model parameters saved\n", - "Epoch 425 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 425: avg_loss appended (2.7778)\n", - "Epoch 425: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 66.67%\n", - "Epoch 425: accuracy appended (66.67%)\n", - "Epoch 425: model set back to train mode\n", - "Epoch 425: model parameters saved\n", - "Epoch 426 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 426: avg_loss appended (2.7778)\n", - "Epoch 426: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 66.67%\n", - "Epoch 426: accuracy appended (66.67%)\n", - "Epoch 426: model set back to train mode\n", - "Epoch 426: model parameters saved\n", - "Epoch 427 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 427: avg_loss appended (2.7778)\n", - "Epoch 427: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 66.67%\n", - "Epoch 427: accuracy appended (66.67%)\n", - "Epoch 427: model set back to train mode\n", - "Epoch 427: model parameters saved\n", - "Epoch 428 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 428: avg_loss appended (2.7778)\n", - "Epoch 428: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 66.67%\n", - "Epoch 428: accuracy appended (66.67%)\n", - "Epoch 428: model set back to train mode\n", - "Epoch 428: model parameters saved\n", - "Epoch 429 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 429: avg_loss appended (2.7778)\n", - "Epoch 429: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 429: accuracy appended (69.44%)\n", - "Epoch 429: model set back to train mode\n", - "Epoch 429: model parameters saved\n", - "Epoch 430 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 430: avg_loss appended (2.7778)\n", - "Epoch 430: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 430: accuracy appended (69.44%)\n", - "Epoch 430: model set back to train mode\n", - "Epoch 430: model parameters saved\n", - "Epoch 431 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 431: avg_loss appended (2.7778)\n", - "Epoch 431: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 431: accuracy appended (69.44%)\n", - "Epoch 431: model set back to train mode\n", - "Epoch 431: model parameters saved\n", - "Epoch 432 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 432: avg_loss appended (2.7778)\n", - "Epoch 432: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 432: accuracy appended (69.44%)\n", - "Epoch 432: model set back to train mode\n", - "Epoch 432: model parameters saved\n", - "Epoch 433 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 433: avg_loss appended (2.7778)\n", - "Epoch 433: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 433: accuracy appended (69.44%)\n", - "Epoch 433: model set back to train mode\n", - "Epoch 433: model parameters saved\n", - "Epoch 434 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 434: avg_loss appended (2.7778)\n", - "Epoch 434: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 434: accuracy appended (69.44%)\n", - "Epoch 434: model set back to train mode\n", - "Epoch 434: model parameters saved\n", - "Epoch 435 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 435: avg_loss appended (2.7778)\n", - "Epoch 435: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 435: accuracy appended (69.44%)\n", - "Epoch 435: model set back to train mode\n", - "Epoch 435: model parameters saved\n", - "Epoch 436 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 436: avg_loss appended (2.7778)\n", - "Epoch 436: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 436: accuracy appended (69.44%)\n", - "Epoch 436: model set back to train mode\n", - "Epoch 436: model parameters saved\n", - "Epoch 437 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 437: avg_loss appended (2.7778)\n", - "Epoch 437: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 437: accuracy appended (69.44%)\n", - "Epoch 437: model set back to train mode\n", - "Epoch 437: model parameters saved\n", - "Epoch 438 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 438: avg_loss appended (2.7778)\n", - "Epoch 438: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 438: accuracy appended (69.44%)\n", - "Epoch 438: model set back to train mode\n", - "Epoch 438: model parameters saved\n", - "Epoch 439 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 439: avg_loss appended (2.7778)\n", - "Epoch 439: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 439: accuracy appended (69.44%)\n", - "Epoch 439: model set back to train mode\n", - "Epoch 439: model parameters saved\n", - "Epoch 440 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 440: avg_loss appended (2.7778)\n", - "Epoch 440: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 440: accuracy appended (69.44%)\n", - "Epoch 440: model set back to train mode\n", - "Epoch 440: model parameters saved\n", - "Epoch 441 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 441: avg_loss appended (2.7778)\n", - "Epoch 441: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 441: accuracy appended (69.44%)\n", - "Epoch 441: model set back to train mode\n", - "Epoch 441: model parameters saved\n", - "Epoch 442 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 442: avg_loss appended (2.7778)\n", - "Epoch 442: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 442: accuracy appended (69.44%)\n", - "Epoch 442: model set back to train mode\n", - "Epoch 442: model parameters saved\n", - "Epoch 443 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 443: avg_loss appended (2.7778)\n", - "Epoch 443: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 443: accuracy appended (69.44%)\n", - "Epoch 443: model set back to train mode\n", - "Epoch 443: model parameters saved\n", - "Epoch 444 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 444: avg_loss appended (2.7778)\n", - "Epoch 444: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 444: accuracy appended (69.44%)\n", - "Epoch 444: model set back to train mode\n", - "Epoch 444: model parameters saved\n", - "Epoch 445 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 445: avg_loss appended (2.7778)\n", - "Epoch 445: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 445: accuracy appended (69.44%)\n", - "Epoch 445: model set back to train mode\n", - "Epoch 445: model parameters saved\n", - "Epoch 446 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 446: avg_loss appended (2.7778)\n", - "Epoch 446: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 446: accuracy appended (69.44%)\n", - "Epoch 446: model set back to train mode\n", - "Epoch 446: model parameters saved\n", - "Epoch 447 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 447: avg_loss appended (2.7778)\n", - "Epoch 447: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 447: accuracy appended (69.44%)\n", - "Epoch 447: model set back to train mode\n", - "Epoch 447: model parameters saved\n", - "Epoch 448 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 448: avg_loss appended (2.7778)\n", - "Epoch 448: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 448: accuracy appended (69.44%)\n", - "Epoch 448: model set back to train mode\n", - "Epoch 448: model parameters saved\n", - "Epoch 449 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 449: avg_loss appended (2.7778)\n", - "Epoch 449: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 449: accuracy appended (69.44%)\n", - "Epoch 449: model set back to train mode\n", - "Epoch 449: model parameters saved\n", - "Epoch 450 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 450: avg_loss appended (2.7778)\n", - "Epoch 450: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 450: accuracy appended (69.44%)\n", - "Epoch 450: model set back to train mode\n", - "Epoch 450: model parameters saved\n", - "Epoch 451 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 451: avg_loss appended (2.7778)\n", - "Epoch 451: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 451: accuracy appended (69.44%)\n", - "Epoch 451: model set back to train mode\n", - "Epoch 451: model parameters saved\n", - "Epoch 452 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 452: avg_loss appended (2.7778)\n", - "Epoch 452: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 452: accuracy appended (69.44%)\n", - "Epoch 452: model set back to train mode\n", - "Epoch 452: model parameters saved\n", - "Epoch 453 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 453: avg_loss appended (2.7778)\n", - "Epoch 453: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 453: accuracy appended (69.44%)\n", - "Epoch 453: model set back to train mode\n", - "Epoch 453: model parameters saved\n", - "Epoch 454 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 454: avg_loss appended (2.7778)\n", - "Epoch 454: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 454: accuracy appended (69.44%)\n", - "Epoch 454: model set back to train mode\n", - "Epoch 454: model parameters saved\n", - "Epoch 455 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 455: avg_loss appended (2.7778)\n", - "Epoch 455: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 455: accuracy appended (69.44%)\n", - "Epoch 455: model set back to train mode\n", - "Epoch 455: model parameters saved\n", - "Epoch 456 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 456: avg_loss appended (2.7778)\n", - "Epoch 456: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 456: accuracy appended (69.44%)\n", - "Epoch 456: model set back to train mode\n", - "Epoch 456: model parameters saved\n", - "Epoch 457 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 457: avg_loss appended (2.7778)\n", - "Epoch 457: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 457: accuracy appended (69.44%)\n", - "Epoch 457: model set back to train mode\n", - "Epoch 457: model parameters saved\n", - "Epoch 458 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 458: avg_loss appended (2.7778)\n", - "Epoch 458: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 458: accuracy appended (69.44%)\n", - "Epoch 458: model set back to train mode\n", - "Epoch 458: model parameters saved\n", - "Epoch 459 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 459: avg_loss appended (2.7778)\n", - "Epoch 459: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 459: accuracy appended (69.44%)\n", - "Epoch 459: model set back to train mode\n", - "Epoch 459: model parameters saved\n", - "Epoch 460 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 460: avg_loss appended (2.7778)\n", - "Epoch 460: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 460: accuracy appended (69.44%)\n", - "Epoch 460: model set back to train mode\n", - "Epoch 460: model parameters saved\n", - "Epoch 461 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 461: avg_loss appended (2.7778)\n", - "Epoch 461: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 461: accuracy appended (69.44%)\n", - "Epoch 461: model set back to train mode\n", - "Epoch 461: model parameters saved\n", - "Epoch 462 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 462: avg_loss appended (2.7778)\n", - "Epoch 462: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 462: accuracy appended (69.44%)\n", - "Epoch 462: model set back to train mode\n", - "Epoch 462: model parameters saved\n", - "Epoch 463 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 463: avg_loss appended (2.7778)\n", - "Epoch 463: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 463: accuracy appended (69.44%)\n", - "Epoch 463: model set back to train mode\n", - "Epoch 463: model parameters saved\n", - "Epoch 464 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 464: avg_loss appended (2.7778)\n", - "Epoch 464: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 464: accuracy appended (69.44%)\n", - "Epoch 464: model set back to train mode\n", - "Epoch 464: model parameters saved\n", - "Epoch 465 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 465: avg_loss appended (2.7778)\n", - "Epoch 465: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 465: accuracy appended (69.44%)\n", - "Epoch 465: model set back to train mode\n", - "Epoch 465: model parameters saved\n", - "Epoch 466 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 466: avg_loss appended (2.7778)\n", - "Epoch 466: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 466: accuracy appended (69.44%)\n", - "Epoch 466: model set back to train mode\n", - "Epoch 466: model parameters saved\n", - "Epoch 467 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 467: avg_loss appended (2.7778)\n", - "Epoch 467: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 467: accuracy appended (69.44%)\n", - "Epoch 467: model set back to train mode\n", - "Epoch 467: model parameters saved\n", - "Epoch 468 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 468: avg_loss appended (2.7778)\n", - "Epoch 468: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 468: accuracy appended (69.44%)\n", - "Epoch 468: model set back to train mode\n", - "Epoch 468: model parameters saved\n", - "Epoch 469 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 469: avg_loss appended (2.7778)\n", - "Epoch 469: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 469: accuracy appended (69.44%)\n", - "Epoch 469: model set back to train mode\n", - "Epoch 469: model parameters saved\n", - "Epoch 470 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 470: avg_loss appended (2.7778)\n", - "Epoch 470: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 470: accuracy appended (69.44%)\n", - "Epoch 470: model set back to train mode\n", - "Epoch 470: model parameters saved\n", - "Epoch 471 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 471: avg_loss appended (2.7778)\n", - "Epoch 471: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 471: accuracy appended (69.44%)\n", - "Epoch 471: model set back to train mode\n", - "Epoch 471: model parameters saved\n", - "Epoch 472 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 472: avg_loss appended (2.7778)\n", - "Epoch 472: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 472: accuracy appended (69.44%)\n", - "Epoch 472: model set back to train mode\n", - "Epoch 472: model parameters saved\n", - "Epoch 473 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 473: avg_loss appended (2.7778)\n", - "Epoch 473: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 473: accuracy appended (69.44%)\n", - "Epoch 473: model set back to train mode\n", - "Epoch 473: model parameters saved\n", - "Epoch 474 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 474: avg_loss appended (2.7778)\n", - "Epoch 474: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 474: accuracy appended (69.44%)\n", - "Epoch 474: model set back to train mode\n", - "Epoch 474: model parameters saved\n", - "Epoch 475 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 475: avg_loss appended (2.7778)\n", - "Epoch 475: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 475: accuracy appended (69.44%)\n", - "Epoch 475: model set back to train mode\n", - "Epoch 475: model parameters saved\n", - "Epoch 476 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 476: avg_loss appended (2.7778)\n", - "Epoch 476: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 476: accuracy appended (69.44%)\n", - "Epoch 476: model set back to train mode\n", - "Epoch 476: model parameters saved\n", - "Epoch 477 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 477: avg_loss appended (2.7778)\n", - "Epoch 477: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 477: accuracy appended (69.44%)\n", - "Epoch 477: model set back to train mode\n", - "Epoch 477: model parameters saved\n", - "Epoch 478 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 478: avg_loss appended (2.7778)\n", - "Epoch 478: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 478: accuracy appended (69.44%)\n", - "Epoch 478: model set back to train mode\n", - "Epoch 478: model parameters saved\n", - "Epoch 479 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 479: avg_loss appended (2.7778)\n", - "Epoch 479: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 479: accuracy appended (69.44%)\n", - "Epoch 479: model set back to train mode\n", - "Epoch 479: model parameters saved\n", - "Epoch 480 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 480: avg_loss appended (2.7778)\n", - "Epoch 480: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 480: accuracy appended (69.44%)\n", - "Epoch 480: model set back to train mode\n", - "Epoch 480: model parameters saved\n", - "Epoch 481 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 481: avg_loss appended (2.7778)\n", - "Epoch 481: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 481: accuracy appended (69.44%)\n", - "Epoch 481: model set back to train mode\n", - "Epoch 481: model parameters saved\n", - "Epoch 482 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 482: avg_loss appended (2.7778)\n", - "Epoch 482: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 482: accuracy appended (69.44%)\n", - "Epoch 482: model set back to train mode\n", - "Epoch 482: model parameters saved\n", - "Epoch 483 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 483: avg_loss appended (2.7778)\n", - "Epoch 483: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 483: accuracy appended (69.44%)\n", - "Epoch 483: model set back to train mode\n", - "Epoch 483: model parameters saved\n", - "Epoch 484 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 484: avg_loss appended (2.7778)\n", - "Epoch 484: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 484: accuracy appended (69.44%)\n", - "Epoch 484: model set back to train mode\n", - "Epoch 484: model parameters saved\n", - "Epoch 485 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 485: avg_loss appended (2.7778)\n", - "Epoch 485: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 66.67%\n", - "Epoch 485: accuracy appended (66.67%)\n", - "Epoch 485: model set back to train mode\n", - "Epoch 485: model parameters saved\n", - "Epoch 486 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 486: avg_loss appended (2.7778)\n", - "Epoch 486: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 66.67%\n", - "Epoch 486: accuracy appended (66.67%)\n", - "Epoch 486: model set back to train mode\n", - "Epoch 486: model parameters saved\n", - "Epoch 487 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 487: avg_loss appended (2.7778)\n", - "Epoch 487: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 66.67%\n", - "Epoch 487: accuracy appended (66.67%)\n", - "Epoch 487: model set back to train mode\n", - "Epoch 487: model parameters saved\n", - "Epoch 488 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 488: avg_loss appended (2.7778)\n", - "Epoch 488: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 66.67%\n", - "Epoch 488: accuracy appended (66.67%)\n", - "Epoch 488: model set back to train mode\n", - "Epoch 488: model parameters saved\n", - "Epoch 489 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 489: avg_loss appended (2.7778)\n", - "Epoch 489: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 66.67%\n", - "Epoch 489: accuracy appended (66.67%)\n", - "Epoch 489: model set back to train mode\n", - "Epoch 489: model parameters saved\n", - "Epoch 490 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 490: avg_loss appended (2.7778)\n", - "Epoch 490: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 66.67%\n", - "Epoch 490: accuracy appended (66.67%)\n", - "Epoch 490: model set back to train mode\n", - "Epoch 490: model parameters saved\n", - "Epoch 491 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 491: avg_loss appended (2.7778)\n", - "Epoch 491: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 66.67%\n", - "Epoch 491: accuracy appended (66.67%)\n", - "Epoch 491: model set back to train mode\n", - "Epoch 491: model parameters saved\n", - "Epoch 492 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 492: avg_loss appended (2.7778)\n", - "Epoch 492: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 66.67%\n", - "Epoch 492: accuracy appended (66.67%)\n", - "Epoch 492: model set back to train mode\n", - "Epoch 492: model parameters saved\n", - "Epoch 493 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 493: avg_loss appended (2.7778)\n", - "Epoch 493: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 66.67%\n", - "Epoch 493: accuracy appended (66.67%)\n", - "Epoch 493: model set back to train mode\n", - "Epoch 493: model parameters saved\n", - "Epoch 494 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 494: avg_loss appended (2.7778)\n", - "Epoch 494: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 66.67%\n", - "Epoch 494: accuracy appended (66.67%)\n", - "Epoch 494: model set back to train mode\n", - "Epoch 494: model parameters saved\n", - "Epoch 495 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 495: avg_loss appended (2.7778)\n", - "Epoch 495: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 66.67%\n", - "Epoch 495: accuracy appended (66.67%)\n", - "Epoch 495: model set back to train mode\n", - "Epoch 495: model parameters saved\n", - "Epoch 496 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 496: avg_loss appended (2.7778)\n", - "Epoch 496: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 66.67%\n", - "Epoch 496: accuracy appended (66.67%)\n", - "Epoch 496: model set back to train mode\n", - "Epoch 496: model parameters saved\n", - "Epoch 497 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 497: avg_loss appended (2.7778)\n", - "Epoch 497: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 66.67%\n", - "Epoch 497: accuracy appended (66.67%)\n", - "Epoch 497: model set back to train mode\n", - "Epoch 497: model parameters saved\n", - "Epoch 498 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 498: avg_loss appended (2.7778)\n", - "Epoch 498: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 66.67%\n", - "Epoch 498: accuracy appended (66.67%)\n", - "Epoch 498: model set back to train mode\n", - "Epoch 498: model parameters saved\n", - "Epoch 499 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 499: avg_loss appended (2.7778)\n", - "Epoch 499: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 66.67%\n", - "Epoch 499: accuracy appended (66.67%)\n", - "Epoch 499: model set back to train mode\n", - "Epoch 499: model parameters saved\n", - "Epoch 500 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 500: avg_loss appended (2.7778)\n", - "Epoch 500: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 66.67%\n", - "Epoch 500: accuracy appended (66.67%)\n", - "Epoch 500: model set back to train mode\n", - "Epoch 500: model parameters saved\n", - "Epoch 500/10000, Loss: 2.7778, Accuracy: 66.67%\n", - "Epoch 501 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 501: avg_loss appended (2.7778)\n", - "Epoch 501: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 501: accuracy appended (69.44%)\n", - "Epoch 501: model set back to train mode\n", - "Epoch 501: model parameters saved\n", - "Epoch 502 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 502: avg_loss appended (2.7778)\n", - "Epoch 502: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 502: accuracy appended (69.44%)\n", - "Epoch 502: model set back to train mode\n", - "Epoch 502: model parameters saved\n", - "Epoch 503 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 503: avg_loss appended (2.7778)\n", - "Epoch 503: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 503: accuracy appended (69.44%)\n", - "Epoch 503: model set back to train mode\n", - "Epoch 503: model parameters saved\n", - "Epoch 504 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 504: avg_loss appended (2.7778)\n", - "Epoch 504: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 504: accuracy appended (69.44%)\n", - "Epoch 504: model set back to train mode\n", - "Epoch 504: model parameters saved\n", - "Epoch 505 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 505: avg_loss appended (2.7778)\n", - "Epoch 505: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 505: accuracy appended (69.44%)\n", - "Epoch 505: model set back to train mode\n", - "Epoch 505: model parameters saved\n", - "Epoch 506 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 506: avg_loss appended (2.7778)\n", - "Epoch 506: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 506: accuracy appended (69.44%)\n", - "Epoch 506: model set back to train mode\n", - "Epoch 506: model parameters saved\n", - "Epoch 507 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 507: avg_loss appended (2.7778)\n", - "Epoch 507: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 507: accuracy appended (69.44%)\n", - "Epoch 507: model set back to train mode\n", - "Epoch 507: model parameters saved\n", - "Epoch 508 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 508: avg_loss appended (2.7778)\n", - "Epoch 508: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 508: accuracy appended (69.44%)\n", - "Epoch 508: model set back to train mode\n", - "Epoch 508: model parameters saved\n", - "Epoch 509 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 509: avg_loss appended (2.7778)\n", - "Epoch 509: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 509: accuracy appended (69.44%)\n", - "Epoch 509: model set back to train mode\n", - "Epoch 509: model parameters saved\n", - "Epoch 510 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 510: avg_loss appended (2.7778)\n", - "Epoch 510: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 510: accuracy appended (69.44%)\n", - "Epoch 510: model set back to train mode\n", - "Epoch 510: model parameters saved\n", - "Epoch 511 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 511: avg_loss appended (2.7778)\n", - "Epoch 511: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 511: accuracy appended (69.44%)\n", - "Epoch 511: model set back to train mode\n", - "Epoch 511: model parameters saved\n", - "Epoch 512 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 512: avg_loss appended (2.7778)\n", - "Epoch 512: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 512: accuracy appended (69.44%)\n", - "Epoch 512: model set back to train mode\n", - "Epoch 512: model parameters saved\n", - "Epoch 513 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 513: avg_loss appended (2.7778)\n", - "Epoch 513: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 513: accuracy appended (69.44%)\n", - "Epoch 513: model set back to train mode\n", - "Epoch 513: model parameters saved\n", - "Epoch 514 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 514: avg_loss appended (2.7778)\n", - "Epoch 514: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 514: accuracy appended (69.44%)\n", - "Epoch 514: model set back to train mode\n", - "Epoch 514: model parameters saved\n", - "Epoch 515 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 515: avg_loss appended (2.7778)\n", - "Epoch 515: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 515: accuracy appended (69.44%)\n", - "Epoch 515: model set back to train mode\n", - "Epoch 515: model parameters saved\n", - "Epoch 516 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 516: avg_loss appended (2.7778)\n", - "Epoch 516: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 516: accuracy appended (69.44%)\n", - "Epoch 516: model set back to train mode\n", - "Epoch 516: model parameters saved\n", - "Epoch 517 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 517: avg_loss appended (2.7778)\n", - "Epoch 517: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 517: accuracy appended (69.44%)\n", - "Epoch 517: model set back to train mode\n", - "Epoch 517: model parameters saved\n", - "Epoch 518 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 518: avg_loss appended (2.7778)\n", - "Epoch 518: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 518: accuracy appended (69.44%)\n", - "Epoch 518: model set back to train mode\n", - "Epoch 518: model parameters saved\n", - "Epoch 519 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 519: avg_loss appended (2.7778)\n", - "Epoch 519: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 519: accuracy appended (69.44%)\n", - "Epoch 519: model set back to train mode\n", - "Epoch 519: model parameters saved\n", - "Epoch 520 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 520: avg_loss appended (2.7778)\n", - "Epoch 520: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 520: accuracy appended (69.44%)\n", - "Epoch 520: model set back to train mode\n", - "Epoch 520: model parameters saved\n", - "Epoch 521 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 521: avg_loss appended (2.7778)\n", - "Epoch 521: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 521: accuracy appended (69.44%)\n", - "Epoch 521: model set back to train mode\n", - "Epoch 521: model parameters saved\n", - "Epoch 522 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 522: avg_loss appended (2.7778)\n", - "Epoch 522: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 522: accuracy appended (69.44%)\n", - "Epoch 522: model set back to train mode\n", - "Epoch 522: model parameters saved\n", - "Epoch 523 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 523: avg_loss appended (2.7778)\n", - "Epoch 523: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 523: accuracy appended (69.44%)\n", - "Epoch 523: model set back to train mode\n", - "Epoch 523: model parameters saved\n", - "Epoch 524 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 524: avg_loss appended (2.7778)\n", - "Epoch 524: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 524: accuracy appended (69.44%)\n", - "Epoch 524: model set back to train mode\n", - "Epoch 524: model parameters saved\n", - "Epoch 525 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 525: avg_loss appended (2.7778)\n", - "Epoch 525: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 525: accuracy appended (69.44%)\n", - "Epoch 525: model set back to train mode\n", - "Epoch 525: model parameters saved\n", - "Epoch 526 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 526: avg_loss appended (2.7778)\n", - "Epoch 526: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 526: accuracy appended (69.44%)\n", - "Epoch 526: model set back to train mode\n", - "Epoch 526: model parameters saved\n", - "Epoch 527 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 527: avg_loss appended (2.7778)\n", - "Epoch 527: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 527: accuracy appended (69.44%)\n", - "Epoch 527: model set back to train mode\n", - "Epoch 527: model parameters saved\n", - "Epoch 528 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 528: avg_loss appended (2.7778)\n", - "Epoch 528: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 528: accuracy appended (69.44%)\n", - "Epoch 528: model set back to train mode\n", - "Epoch 528: model parameters saved\n", - "Epoch 529 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 529: avg_loss appended (2.7778)\n", - "Epoch 529: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 529: accuracy appended (69.44%)\n", - "Epoch 529: model set back to train mode\n", - "Epoch 529: model parameters saved\n", - "Epoch 530 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 530: avg_loss appended (2.7778)\n", - "Epoch 530: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 530: accuracy appended (69.44%)\n", - "Epoch 530: model set back to train mode\n", - "Epoch 530: model parameters saved\n", - "Epoch 531 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 531: avg_loss appended (2.7778)\n", - "Epoch 531: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 531: accuracy appended (69.44%)\n", - "Epoch 531: model set back to train mode\n", - "Epoch 531: model parameters saved\n", - "Epoch 532 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 532: avg_loss appended (2.7778)\n", - "Epoch 532: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 69.44%\n", - "Epoch 532: accuracy appended (69.44%)\n", - "Epoch 532: model set back to train mode\n", - "Epoch 532: model parameters saved\n", - "Epoch 533 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 533: avg_loss appended (2.7778)\n", - "Epoch 533: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 533: accuracy appended (72.22%)\n", - "Epoch 533: model set back to train mode\n", - "Epoch 533: model parameters saved\n", - "Epoch 534 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 534: avg_loss appended (2.7778)\n", - "Epoch 534: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 534: accuracy appended (72.22%)\n", - "Epoch 534: model set back to train mode\n", - "Epoch 534: model parameters saved\n", - "Epoch 535 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 535: avg_loss appended (2.7778)\n", - "Epoch 535: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 535: accuracy appended (72.22%)\n", - "Epoch 535: model set back to train mode\n", - "Epoch 535: model parameters saved\n", - "Epoch 536 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 536: avg_loss appended (2.7778)\n", - "Epoch 536: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 536: accuracy appended (72.22%)\n", - "Epoch 536: model set back to train mode\n", - "Epoch 536: model parameters saved\n", - "Epoch 537 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 537: avg_loss appended (2.7778)\n", - "Epoch 537: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 537: accuracy appended (72.22%)\n", - "Epoch 537: model set back to train mode\n", - "Epoch 537: model parameters saved\n", - "Epoch 538 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 538: avg_loss appended (2.7778)\n", - "Epoch 538: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 538: accuracy appended (72.22%)\n", - "Epoch 538: model set back to train mode\n", - "Epoch 538: model parameters saved\n", - "Epoch 539 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 539: avg_loss appended (2.7778)\n", - "Epoch 539: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 539: accuracy appended (72.22%)\n", - "Epoch 539: model set back to train mode\n", - "Epoch 539: model parameters saved\n", - "Epoch 540 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 540: avg_loss appended (2.7778)\n", - "Epoch 540: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 540: accuracy appended (72.22%)\n", - "Epoch 540: model set back to train mode\n", - "Epoch 540: model parameters saved\n", - "Epoch 541 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 541: avg_loss appended (2.7778)\n", - "Epoch 541: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 541: accuracy appended (72.22%)\n", - "Epoch 541: model set back to train mode\n", - "Epoch 541: model parameters saved\n", - "Epoch 542 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 542: avg_loss appended (2.7778)\n", - "Epoch 542: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 542: accuracy appended (72.22%)\n", - "Epoch 542: model set back to train mode\n", - "Epoch 542: model parameters saved\n", - "Epoch 543 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 543: avg_loss appended (2.7778)\n", - "Epoch 543: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 543: accuracy appended (72.22%)\n", - "Epoch 543: model set back to train mode\n", - "Epoch 543: model parameters saved\n", - "Epoch 544 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 544: avg_loss appended (2.7778)\n", - "Epoch 544: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 544: accuracy appended (72.22%)\n", - "Epoch 544: model set back to train mode\n", - "Epoch 544: model parameters saved\n", - "Epoch 545 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 545: avg_loss appended (2.7778)\n", - "Epoch 545: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 545: accuracy appended (72.22%)\n", - "Epoch 545: model set back to train mode\n", - "Epoch 545: model parameters saved\n", - "Epoch 546 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 546: avg_loss appended (2.7778)\n", - "Epoch 546: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 546: accuracy appended (72.22%)\n", - "Epoch 546: model set back to train mode\n", - "Epoch 546: model parameters saved\n", - "Epoch 547 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 547: avg_loss appended (2.7778)\n", - "Epoch 547: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 547: accuracy appended (72.22%)\n", - "Epoch 547: model set back to train mode\n", - "Epoch 547: model parameters saved\n", - "Epoch 548 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 548: avg_loss appended (2.7778)\n", - "Epoch 548: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 548: accuracy appended (72.22%)\n", - "Epoch 548: model set back to train mode\n", - "Epoch 548: model parameters saved\n", - "Epoch 549 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 549: avg_loss appended (2.7778)\n", - "Epoch 549: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 549: accuracy appended (72.22%)\n", - "Epoch 549: model set back to train mode\n", - "Epoch 549: model parameters saved\n", - "Epoch 550 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 550: avg_loss appended (2.7778)\n", - "Epoch 550: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 550: accuracy appended (72.22%)\n", - "Epoch 550: model set back to train mode\n", - "Epoch 550: model parameters saved\n", - "Epoch 551 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 551: avg_loss appended (2.7778)\n", - "Epoch 551: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 551: accuracy appended (72.22%)\n", - "Epoch 551: model set back to train mode\n", - "Epoch 551: model parameters saved\n", - "Epoch 552 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 552: avg_loss appended (2.7778)\n", - "Epoch 552: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 552: accuracy appended (72.22%)\n", - "Epoch 552: model set back to train mode\n", - "Epoch 552: model parameters saved\n", - "Epoch 553 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 553: avg_loss appended (2.7778)\n", - "Epoch 553: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 553: accuracy appended (72.22%)\n", - "Epoch 553: model set back to train mode\n", - "Epoch 553: model parameters saved\n", - "Epoch 554 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 554: avg_loss appended (2.7778)\n", - "Epoch 554: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 554: accuracy appended (72.22%)\n", - "Epoch 554: model set back to train mode\n", - "Epoch 554: model parameters saved\n", - "Epoch 555 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 555: avg_loss appended (2.7778)\n", - "Epoch 555: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 555: accuracy appended (72.22%)\n", - "Epoch 555: model set back to train mode\n", - "Epoch 555: model parameters saved\n", - "Epoch 556 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 556: avg_loss appended (2.7778)\n", - "Epoch 556: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 556: accuracy appended (72.22%)\n", - "Epoch 556: model set back to train mode\n", - "Epoch 556: model parameters saved\n", - "Epoch 557 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 557: avg_loss appended (2.7778)\n", - "Epoch 557: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 557: accuracy appended (72.22%)\n", - "Epoch 557: model set back to train mode\n", - "Epoch 557: model parameters saved\n", - "Epoch 558 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 558: avg_loss appended (2.7778)\n", - "Epoch 558: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 558: accuracy appended (72.22%)\n", - "Epoch 558: model set back to train mode\n", - "Epoch 558: model parameters saved\n", - "Epoch 559 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 559: avg_loss appended (2.7778)\n", - "Epoch 559: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 559: accuracy appended (72.22%)\n", - "Epoch 559: model set back to train mode\n", - "Epoch 559: model parameters saved\n", - "Epoch 560 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 560: avg_loss appended (2.7778)\n", - "Epoch 560: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 560: accuracy appended (72.22%)\n", - "Epoch 560: model set back to train mode\n", - "Epoch 560: model parameters saved\n", - "Epoch 561 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 561: avg_loss appended (2.7778)\n", - "Epoch 561: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 561: accuracy appended (72.22%)\n", - "Epoch 561: model set back to train mode\n", - "Epoch 561: model parameters saved\n", - "Epoch 562 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 562: avg_loss appended (2.7778)\n", - "Epoch 562: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 562: accuracy appended (72.22%)\n", - "Epoch 562: model set back to train mode\n", - "Epoch 562: model parameters saved\n", - "Epoch 563 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 563: avg_loss appended (2.7778)\n", - "Epoch 563: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 563: accuracy appended (72.22%)\n", - "Epoch 563: model set back to train mode\n", - "Epoch 563: model parameters saved\n", - "Epoch 564 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 564: avg_loss appended (2.7778)\n", - "Epoch 564: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 564: accuracy appended (72.22%)\n", - "Epoch 564: model set back to train mode\n", - "Epoch 564: model parameters saved\n", - "Epoch 565 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 565: avg_loss appended (2.7778)\n", - "Epoch 565: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 565: accuracy appended (72.22%)\n", - "Epoch 565: model set back to train mode\n", - "Epoch 565: model parameters saved\n", - "Epoch 566 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 566: avg_loss appended (2.7778)\n", - "Epoch 566: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 566: accuracy appended (72.22%)\n", - "Epoch 566: model set back to train mode\n", - "Epoch 566: model parameters saved\n", - "Epoch 567 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 567: avg_loss appended (2.7778)\n", - "Epoch 567: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 567: accuracy appended (72.22%)\n", - "Epoch 567: model set back to train mode\n", - "Epoch 567: model parameters saved\n", - "Epoch 568 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 568: avg_loss appended (2.7778)\n", - "Epoch 568: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 568: accuracy appended (72.22%)\n", - "Epoch 568: model set back to train mode\n", - "Epoch 568: model parameters saved\n", - "Epoch 569 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 569: avg_loss appended (2.7778)\n", - "Epoch 569: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 569: accuracy appended (72.22%)\n", - "Epoch 569: model set back to train mode\n", - "Epoch 569: model parameters saved\n", - "Epoch 570 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 570: avg_loss appended (2.7778)\n", - "Epoch 570: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 570: accuracy appended (72.22%)\n", - "Epoch 570: model set back to train mode\n", - "Epoch 570: model parameters saved\n", - "Epoch 571 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 571: avg_loss appended (2.7778)\n", - "Epoch 571: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 571: accuracy appended (72.22%)\n", - "Epoch 571: model set back to train mode\n", - "Epoch 571: model parameters saved\n", - "Epoch 572 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 572: avg_loss appended (2.7778)\n", - "Epoch 572: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 572: accuracy appended (72.22%)\n", - "Epoch 572: model set back to train mode\n", - "Epoch 572: model parameters saved\n", - "Epoch 573 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 573: avg_loss appended (2.7778)\n", - "Epoch 573: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 573: accuracy appended (72.22%)\n", - "Epoch 573: model set back to train mode\n", - "Epoch 573: model parameters saved\n", - "Epoch 574 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 574: avg_loss appended (2.7778)\n", - "Epoch 574: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 574: accuracy appended (72.22%)\n", - "Epoch 574: model set back to train mode\n", - "Epoch 574: model parameters saved\n", - "Epoch 575 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 575: avg_loss appended (2.7778)\n", - "Epoch 575: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 575: accuracy appended (72.22%)\n", - "Epoch 575: model set back to train mode\n", - "Epoch 575: model parameters saved\n", - "Epoch 576 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 576: avg_loss appended (2.7778)\n", - "Epoch 576: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 576: accuracy appended (72.22%)\n", - "Epoch 576: model set back to train mode\n", - "Epoch 576: model parameters saved\n", - "Epoch 577 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 577: avg_loss appended (2.7778)\n", - "Epoch 577: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 577: accuracy appended (72.22%)\n", - "Epoch 577: model set back to train mode\n", - "Epoch 577: model parameters saved\n", - "Epoch 578 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 578: avg_loss appended (2.7778)\n", - "Epoch 578: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 578: accuracy appended (72.22%)\n", - "Epoch 578: model set back to train mode\n", - "Epoch 578: model parameters saved\n", - "Epoch 579 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 579: avg_loss appended (2.7778)\n", - "Epoch 579: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 579: accuracy appended (72.22%)\n", - "Epoch 579: model set back to train mode\n", - "Epoch 579: model parameters saved\n", - "Epoch 580 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 580: avg_loss appended (2.7778)\n", - "Epoch 580: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 580: accuracy appended (72.22%)\n", - "Epoch 580: model set back to train mode\n", - "Epoch 580: model parameters saved\n", - "Epoch 581 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 581: avg_loss appended (2.7778)\n", - "Epoch 581: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 581: accuracy appended (72.22%)\n", - "Epoch 581: model set back to train mode\n", - "Epoch 581: model parameters saved\n", - "Epoch 582 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 582: avg_loss appended (2.7778)\n", - "Epoch 582: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 582: accuracy appended (72.22%)\n", - "Epoch 582: model set back to train mode\n", - "Epoch 582: model parameters saved\n", - "Epoch 583 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 583: avg_loss appended (2.7778)\n", - "Epoch 583: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 583: accuracy appended (72.22%)\n", - "Epoch 583: model set back to train mode\n", - "Epoch 583: model parameters saved\n", - "Epoch 584 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 584: avg_loss appended (2.7778)\n", - "Epoch 584: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 584: accuracy appended (72.22%)\n", - "Epoch 584: model set back to train mode\n", - "Epoch 584: model parameters saved\n", - "Epoch 585 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 585: avg_loss appended (2.7778)\n", - "Epoch 585: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 585: accuracy appended (72.22%)\n", - "Epoch 585: model set back to train mode\n", - "Epoch 585: model parameters saved\n", - "Epoch 586 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 586: avg_loss appended (2.7778)\n", - "Epoch 586: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 586: accuracy appended (72.22%)\n", - "Epoch 586: model set back to train mode\n", - "Epoch 586: model parameters saved\n", - "Epoch 587 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 587: avg_loss appended (2.7778)\n", - "Epoch 587: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 587: accuracy appended (72.22%)\n", - "Epoch 587: model set back to train mode\n", - "Epoch 587: model parameters saved\n", - "Epoch 588 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 588: avg_loss appended (2.7778)\n", - "Epoch 588: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 588: accuracy appended (72.22%)\n", - "Epoch 588: model set back to train mode\n", - "Epoch 588: model parameters saved\n", - "Epoch 589 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 589: avg_loss appended (2.7778)\n", - "Epoch 589: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 589: accuracy appended (72.22%)\n", - "Epoch 589: model set back to train mode\n", - "Epoch 589: model parameters saved\n", - "Epoch 590 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 590: avg_loss appended (2.7778)\n", - "Epoch 590: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 590: accuracy appended (72.22%)\n", - "Epoch 590: model set back to train mode\n", - "Epoch 590: model parameters saved\n", - "Epoch 591 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 591: avg_loss appended (2.7778)\n", - "Epoch 591: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 591: accuracy appended (72.22%)\n", - "Epoch 591: model set back to train mode\n", - "Epoch 591: model parameters saved\n", - "Epoch 592 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 592: avg_loss appended (2.7778)\n", - "Epoch 592: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 592: accuracy appended (72.22%)\n", - "Epoch 592: model set back to train mode\n", - "Epoch 592: model parameters saved\n", - "Epoch 593 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 593: avg_loss appended (2.7778)\n", - "Epoch 593: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 593: accuracy appended (72.22%)\n", - "Epoch 593: model set back to train mode\n", - "Epoch 593: model parameters saved\n", - "Epoch 594 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 594: avg_loss appended (2.7778)\n", - "Epoch 594: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 594: accuracy appended (72.22%)\n", - "Epoch 594: model set back to train mode\n", - "Epoch 594: model parameters saved\n", - "Epoch 595 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 595: avg_loss appended (2.7778)\n", - "Epoch 595: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 595: accuracy appended (72.22%)\n", - "Epoch 595: model set back to train mode\n", - "Epoch 595: model parameters saved\n", - "Epoch 596 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 596: avg_loss appended (2.7778)\n", - "Epoch 596: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 596: accuracy appended (72.22%)\n", - "Epoch 596: model set back to train mode\n", - "Epoch 596: model parameters saved\n", - "Epoch 597 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 597: avg_loss appended (2.7778)\n", - "Epoch 597: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 597: accuracy appended (72.22%)\n", - "Epoch 597: model set back to train mode\n", - "Epoch 597: model parameters saved\n", - "Epoch 598 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 598: avg_loss appended (2.7778)\n", - "Epoch 598: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 598: accuracy appended (72.22%)\n", - "Epoch 598: model set back to train mode\n", - "Epoch 598: model parameters saved\n", - "Epoch 599 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 599: avg_loss appended (2.7778)\n", - "Epoch 599: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 599: accuracy appended (72.22%)\n", - "Epoch 599: model set back to train mode\n", - "Epoch 599: model parameters saved\n", - "Epoch 600 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 600: avg_loss appended (2.7778)\n", - "Epoch 600: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 600: accuracy appended (72.22%)\n", - "Epoch 600: model set back to train mode\n", - "Epoch 600: model parameters saved\n", - "Epoch 600/10000, Loss: 2.7778, Accuracy: 72.22%\n", - "Epoch 601 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 601: avg_loss appended (2.7778)\n", - "Epoch 601: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 601: accuracy appended (72.22%)\n", - "Epoch 601: model set back to train mode\n", - "Epoch 601: model parameters saved\n", - "Epoch 602 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 602: avg_loss appended (2.7778)\n", - "Epoch 602: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 602: accuracy appended (72.22%)\n", - "Epoch 602: model set back to train mode\n", - "Epoch 602: model parameters saved\n", - "Epoch 603 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 603: avg_loss appended (2.7778)\n", - "Epoch 603: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 603: accuracy appended (72.22%)\n", - "Epoch 603: model set back to train mode\n", - "Epoch 603: model parameters saved\n", - "Epoch 604 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 604: avg_loss appended (2.7778)\n", - "Epoch 604: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 604: accuracy appended (72.22%)\n", - "Epoch 604: model set back to train mode\n", - "Epoch 604: model parameters saved\n", - "Epoch 605 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 605: avg_loss appended (2.7778)\n", - "Epoch 605: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 605: accuracy appended (72.22%)\n", - "Epoch 605: model set back to train mode\n", - "Epoch 605: model parameters saved\n", - "Epoch 606 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 606: avg_loss appended (2.7778)\n", - "Epoch 606: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 606: accuracy appended (72.22%)\n", - "Epoch 606: model set back to train mode\n", - "Epoch 606: model parameters saved\n", - "Epoch 607 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 607: avg_loss appended (2.7778)\n", - "Epoch 607: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 607: accuracy appended (72.22%)\n", - "Epoch 607: model set back to train mode\n", - "Epoch 607: model parameters saved\n", - "Epoch 608 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 608: avg_loss appended (2.7778)\n", - "Epoch 608: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 608: accuracy appended (72.22%)\n", - "Epoch 608: model set back to train mode\n", - "Epoch 608: model parameters saved\n", - "Epoch 609 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 609: avg_loss appended (2.7778)\n", - "Epoch 609: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 609: accuracy appended (72.22%)\n", - "Epoch 609: model set back to train mode\n", - "Epoch 609: model parameters saved\n", - "Epoch 610 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 610: avg_loss appended (2.7778)\n", - "Epoch 610: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 610: accuracy appended (72.22%)\n", - "Epoch 610: model set back to train mode\n", - "Epoch 610: model parameters saved\n", - "Epoch 611 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 611: avg_loss appended (2.7778)\n", - "Epoch 611: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 611: accuracy appended (72.22%)\n", - "Epoch 611: model set back to train mode\n", - "Epoch 611: model parameters saved\n", - "Epoch 612 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 612: avg_loss appended (2.7778)\n", - "Epoch 612: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 612: accuracy appended (72.22%)\n", - "Epoch 612: model set back to train mode\n", - "Epoch 612: model parameters saved\n", - "Epoch 613 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 613: avg_loss appended (2.7778)\n", - "Epoch 613: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 613: accuracy appended (72.22%)\n", - "Epoch 613: model set back to train mode\n", - "Epoch 613: model parameters saved\n", - "Epoch 614 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 614: avg_loss appended (2.7778)\n", - "Epoch 614: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 614: accuracy appended (72.22%)\n", - "Epoch 614: model set back to train mode\n", - "Epoch 614: model parameters saved\n", - "Epoch 615 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 615: avg_loss appended (2.7778)\n", - "Epoch 615: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 615: accuracy appended (72.22%)\n", - "Epoch 615: model set back to train mode\n", - "Epoch 615: model parameters saved\n", - "Epoch 616 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 616: avg_loss appended (2.7778)\n", - "Epoch 616: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 616: accuracy appended (72.22%)\n", - "Epoch 616: model set back to train mode\n", - "Epoch 616: model parameters saved\n", - "Epoch 617 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 617: avg_loss appended (2.7778)\n", - "Epoch 617: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 617: accuracy appended (72.22%)\n", - "Epoch 617: model set back to train mode\n", - "Epoch 617: model parameters saved\n", - "Epoch 618 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 618: avg_loss appended (2.7778)\n", - "Epoch 618: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 618: accuracy appended (72.22%)\n", - "Epoch 618: model set back to train mode\n", - "Epoch 618: model parameters saved\n", - "Epoch 619 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 619: avg_loss appended (2.7778)\n", - "Epoch 619: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 619: accuracy appended (72.22%)\n", - "Epoch 619: model set back to train mode\n", - "Epoch 619: model parameters saved\n", - "Epoch 620 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 620: avg_loss appended (2.7778)\n", - "Epoch 620: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 620: accuracy appended (72.22%)\n", - "Epoch 620: model set back to train mode\n", - "Epoch 620: model parameters saved\n", - "Epoch 621 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 621: avg_loss appended (2.7778)\n", - "Epoch 621: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 621: accuracy appended (72.22%)\n", - "Epoch 621: model set back to train mode\n", - "Epoch 621: model parameters saved\n", - "Epoch 622 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 622: avg_loss appended (2.7778)\n", - "Epoch 622: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 622: accuracy appended (72.22%)\n", - "Epoch 622: model set back to train mode\n", - "Epoch 622: model parameters saved\n", - "Epoch 623 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 623: avg_loss appended (2.7778)\n", - "Epoch 623: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 623: accuracy appended (72.22%)\n", - "Epoch 623: model set back to train mode\n", - "Epoch 623: model parameters saved\n", - "Epoch 624 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 624: avg_loss appended (2.7778)\n", - "Epoch 624: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 624: accuracy appended (72.22%)\n", - "Epoch 624: model set back to train mode\n", - "Epoch 624: model parameters saved\n", - "Epoch 625 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 625: avg_loss appended (2.7778)\n", - "Epoch 625: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 625: accuracy appended (72.22%)\n", - "Epoch 625: model set back to train mode\n", - "Epoch 625: model parameters saved\n", - "Epoch 626 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 626: avg_loss appended (2.7778)\n", - "Epoch 626: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 626: accuracy appended (72.22%)\n", - "Epoch 626: model set back to train mode\n", - "Epoch 626: model parameters saved\n", - "Epoch 627 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 627: avg_loss appended (2.7778)\n", - "Epoch 627: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 627: accuracy appended (72.22%)\n", - "Epoch 627: model set back to train mode\n", - "Epoch 627: model parameters saved\n", - "Epoch 628 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 628: avg_loss appended (2.7778)\n", - "Epoch 628: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 628: accuracy appended (72.22%)\n", - "Epoch 628: model set back to train mode\n", - "Epoch 628: model parameters saved\n", - "Epoch 629 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 629: avg_loss appended (2.7778)\n", - "Epoch 629: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 72.22%\n", - "Epoch 629: accuracy appended (72.22%)\n", - "Epoch 629: model set back to train mode\n", - "Epoch 629: model parameters saved\n", - "Epoch 630 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 630: avg_loss appended (2.7778)\n", - "Epoch 630: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 630: accuracy appended (75.00%)\n", - "Epoch 630: model set back to train mode\n", - "Epoch 630: model parameters saved\n", - "Epoch 631 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 631: avg_loss appended (2.7778)\n", - "Epoch 631: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 631: accuracy appended (75.00%)\n", - "Epoch 631: model set back to train mode\n", - "Epoch 631: model parameters saved\n", - "Epoch 632 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 632: avg_loss appended (2.7778)\n", - "Epoch 632: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 632: accuracy appended (75.00%)\n", - "Epoch 632: model set back to train mode\n", - "Epoch 632: model parameters saved\n", - "Epoch 633 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 633: avg_loss appended (2.7778)\n", - "Epoch 633: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 633: accuracy appended (75.00%)\n", - "Epoch 633: model set back to train mode\n", - "Epoch 633: model parameters saved\n", - "Epoch 634 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 634: avg_loss appended (2.7778)\n", - "Epoch 634: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 634: accuracy appended (75.00%)\n", - "Epoch 634: model set back to train mode\n", - "Epoch 634: model parameters saved\n", - "Epoch 635 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 635: avg_loss appended (2.7778)\n", - "Epoch 635: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 635: accuracy appended (75.00%)\n", - "Epoch 635: model set back to train mode\n", - "Epoch 635: model parameters saved\n", - "Epoch 636 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 636: avg_loss appended (2.7778)\n", - "Epoch 636: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 636: accuracy appended (75.00%)\n", - "Epoch 636: model set back to train mode\n", - "Epoch 636: model parameters saved\n", - "Epoch 637 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 637: avg_loss appended (2.7778)\n", - "Epoch 637: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 637: accuracy appended (75.00%)\n", - "Epoch 637: model set back to train mode\n", - "Epoch 637: model parameters saved\n", - "Epoch 638 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 638: avg_loss appended (2.7778)\n", - "Epoch 638: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 638: accuracy appended (75.00%)\n", - "Epoch 638: model set back to train mode\n", - "Epoch 638: model parameters saved\n", - "Epoch 639 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 639: avg_loss appended (2.7778)\n", - "Epoch 639: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 639: accuracy appended (75.00%)\n", - "Epoch 639: model set back to train mode\n", - "Epoch 639: model parameters saved\n", - "Epoch 640 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 640: avg_loss appended (2.7778)\n", - "Epoch 640: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 640: accuracy appended (75.00%)\n", - "Epoch 640: model set back to train mode\n", - "Epoch 640: model parameters saved\n", - "Epoch 641 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 641: avg_loss appended (2.7778)\n", - "Epoch 641: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 641: accuracy appended (75.00%)\n", - "Epoch 641: model set back to train mode\n", - "Epoch 641: model parameters saved\n", - "Epoch 642 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 642: avg_loss appended (2.7778)\n", - "Epoch 642: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 642: accuracy appended (75.00%)\n", - "Epoch 642: model set back to train mode\n", - "Epoch 642: model parameters saved\n", - "Epoch 643 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 643: avg_loss appended (2.7778)\n", - "Epoch 643: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 643: accuracy appended (75.00%)\n", - "Epoch 643: model set back to train mode\n", - "Epoch 643: model parameters saved\n", - "Epoch 644 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 644: avg_loss appended (2.7778)\n", - "Epoch 644: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 644: accuracy appended (75.00%)\n", - "Epoch 644: model set back to train mode\n", - "Epoch 644: model parameters saved\n", - "Epoch 645 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 645: avg_loss appended (2.7778)\n", - "Epoch 645: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 645: accuracy appended (75.00%)\n", - "Epoch 645: model set back to train mode\n", - "Epoch 645: model parameters saved\n", - "Epoch 646 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 646: avg_loss appended (2.7778)\n", - "Epoch 646: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 646: accuracy appended (75.00%)\n", - "Epoch 646: model set back to train mode\n", - "Epoch 646: model parameters saved\n", - "Epoch 647 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 647: avg_loss appended (2.7778)\n", - "Epoch 647: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 647: accuracy appended (75.00%)\n", - "Epoch 647: model set back to train mode\n", - "Epoch 647: model parameters saved\n", - "Epoch 648 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 648: avg_loss appended (2.7778)\n", - "Epoch 648: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 648: accuracy appended (75.00%)\n", - "Epoch 648: model set back to train mode\n", - "Epoch 648: model parameters saved\n", - "Epoch 649 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 649: avg_loss appended (2.7778)\n", - "Epoch 649: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 649: accuracy appended (75.00%)\n", - "Epoch 649: model set back to train mode\n", - "Epoch 649: model parameters saved\n", - "Epoch 650 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 650: avg_loss appended (2.7778)\n", - "Epoch 650: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 650: accuracy appended (75.00%)\n", - "Epoch 650: model set back to train mode\n", - "Epoch 650: model parameters saved\n", - "Epoch 651 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 651: avg_loss appended (2.7778)\n", - "Epoch 651: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 651: accuracy appended (75.00%)\n", - "Epoch 651: model set back to train mode\n", - "Epoch 651: model parameters saved\n", - "Epoch 652 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 652: avg_loss appended (2.7778)\n", - "Epoch 652: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 652: accuracy appended (75.00%)\n", - "Epoch 652: model set back to train mode\n", - "Epoch 652: model parameters saved\n", - "Epoch 653 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 653: avg_loss appended (2.7778)\n", - "Epoch 653: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 653: accuracy appended (75.00%)\n", - "Epoch 653: model set back to train mode\n", - "Epoch 653: model parameters saved\n", - "Epoch 654 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 654: avg_loss appended (2.7778)\n", - "Epoch 654: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 654: accuracy appended (75.00%)\n", - "Epoch 654: model set back to train mode\n", - "Epoch 654: model parameters saved\n", - "Epoch 655 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 655: avg_loss appended (2.7778)\n", - "Epoch 655: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 655: accuracy appended (75.00%)\n", - "Epoch 655: model set back to train mode\n", - "Epoch 655: model parameters saved\n", - "Epoch 656 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 656: avg_loss appended (2.7778)\n", - "Epoch 656: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 656: accuracy appended (75.00%)\n", - "Epoch 656: model set back to train mode\n", - "Epoch 656: model parameters saved\n", - "Epoch 657 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 657: avg_loss appended (2.7778)\n", - "Epoch 657: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 657: accuracy appended (75.00%)\n", - "Epoch 657: model set back to train mode\n", - "Epoch 657: model parameters saved\n", - "Epoch 658 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 658: avg_loss appended (2.7778)\n", - "Epoch 658: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 658: accuracy appended (75.00%)\n", - "Epoch 658: model set back to train mode\n", - "Epoch 658: model parameters saved\n", - "Epoch 659 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 659: avg_loss appended (2.7778)\n", - "Epoch 659: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 659: accuracy appended (75.00%)\n", - "Epoch 659: model set back to train mode\n", - "Epoch 659: model parameters saved\n", - "Epoch 660 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 660: avg_loss appended (2.7778)\n", - "Epoch 660: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 660: accuracy appended (75.00%)\n", - "Epoch 660: model set back to train mode\n", - "Epoch 660: model parameters saved\n", - "Epoch 661 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 661: avg_loss appended (2.7778)\n", - "Epoch 661: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 661: accuracy appended (75.00%)\n", - "Epoch 661: model set back to train mode\n", - "Epoch 661: model parameters saved\n", - "Epoch 662 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 662: avg_loss appended (2.7778)\n", - "Epoch 662: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 662: accuracy appended (75.00%)\n", - "Epoch 662: model set back to train mode\n", - "Epoch 662: model parameters saved\n", - "Epoch 663 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 663: avg_loss appended (2.7778)\n", - "Epoch 663: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 663: accuracy appended (75.00%)\n", - "Epoch 663: model set back to train mode\n", - "Epoch 663: model parameters saved\n", - "Epoch 664 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 664: avg_loss appended (2.7778)\n", - "Epoch 664: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 664: accuracy appended (75.00%)\n", - "Epoch 664: model set back to train mode\n", - "Epoch 664: model parameters saved\n", - "Epoch 665 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 665: avg_loss appended (2.7778)\n", - "Epoch 665: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 665: accuracy appended (75.00%)\n", - "Epoch 665: model set back to train mode\n", - "Epoch 665: model parameters saved\n", - "Epoch 666 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 666: avg_loss appended (2.7778)\n", - "Epoch 666: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 666: accuracy appended (75.00%)\n", - "Epoch 666: model set back to train mode\n", - "Epoch 666: model parameters saved\n", - "Epoch 667 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 667: avg_loss appended (2.7778)\n", - "Epoch 667: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 667: accuracy appended (75.00%)\n", - "Epoch 667: model set back to train mode\n", - "Epoch 667: model parameters saved\n", - "Epoch 668 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 668: avg_loss appended (2.7778)\n", - "Epoch 668: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 668: accuracy appended (75.00%)\n", - "Epoch 668: model set back to train mode\n", - "Epoch 668: model parameters saved\n", - "Epoch 669 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 669: avg_loss appended (2.7778)\n", - "Epoch 669: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 669: accuracy appended (75.00%)\n", - "Epoch 669: model set back to train mode\n", - "Epoch 669: model parameters saved\n", - "Epoch 670 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 670: avg_loss appended (2.7778)\n", - "Epoch 670: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 670: accuracy appended (75.00%)\n", - "Epoch 670: model set back to train mode\n", - "Epoch 670: model parameters saved\n", - "Epoch 671 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 671: avg_loss appended (2.7778)\n", - "Epoch 671: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 671: accuracy appended (75.00%)\n", - "Epoch 671: model set back to train mode\n", - "Epoch 671: model parameters saved\n", - "Epoch 672 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 672: avg_loss appended (2.7778)\n", - "Epoch 672: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 672: accuracy appended (75.00%)\n", - "Epoch 672: model set back to train mode\n", - "Epoch 672: model parameters saved\n", - "Epoch 673 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 673: avg_loss appended (2.7778)\n", - "Epoch 673: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 673: accuracy appended (75.00%)\n", - "Epoch 673: model set back to train mode\n", - "Epoch 673: model parameters saved\n", - "Epoch 674 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 674: avg_loss appended (2.7778)\n", - "Epoch 674: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 674: accuracy appended (75.00%)\n", - "Epoch 674: model set back to train mode\n", - "Epoch 674: model parameters saved\n", - "Epoch 675 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 675: avg_loss appended (2.7778)\n", - "Epoch 675: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 675: accuracy appended (75.00%)\n", - "Epoch 675: model set back to train mode\n", - "Epoch 675: model parameters saved\n", - "Epoch 676 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 676: avg_loss appended (2.7778)\n", - "Epoch 676: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 676: accuracy appended (75.00%)\n", - "Epoch 676: model set back to train mode\n", - "Epoch 676: model parameters saved\n", - "Epoch 677 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 677: avg_loss appended (2.7778)\n", - "Epoch 677: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 677: accuracy appended (75.00%)\n", - "Epoch 677: model set back to train mode\n", - "Epoch 677: model parameters saved\n", - "Epoch 678 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 678: avg_loss appended (2.7778)\n", - "Epoch 678: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 678: accuracy appended (75.00%)\n", - "Epoch 678: model set back to train mode\n", - "Epoch 678: model parameters saved\n", - "Epoch 679 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 679: avg_loss appended (2.7778)\n", - "Epoch 679: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 679: accuracy appended (75.00%)\n", - "Epoch 679: model set back to train mode\n", - "Epoch 679: model parameters saved\n", - "Epoch 680 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 680: avg_loss appended (2.7778)\n", - "Epoch 680: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 680: accuracy appended (75.00%)\n", - "Epoch 680: model set back to train mode\n", - "Epoch 680: model parameters saved\n", - "Epoch 681 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 681: avg_loss appended (2.7778)\n", - "Epoch 681: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 681: accuracy appended (75.00%)\n", - "Epoch 681: model set back to train mode\n", - "Epoch 681: model parameters saved\n", - "Epoch 682 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 682: avg_loss appended (2.7778)\n", - "Epoch 682: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 682: accuracy appended (75.00%)\n", - "Epoch 682: model set back to train mode\n", - "Epoch 682: model parameters saved\n", - "Epoch 683 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 683: avg_loss appended (2.7778)\n", - "Epoch 683: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 683: accuracy appended (75.00%)\n", - "Epoch 683: model set back to train mode\n", - "Epoch 683: model parameters saved\n", - "Epoch 684 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 684: avg_loss appended (2.7778)\n", - "Epoch 684: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 684: accuracy appended (75.00%)\n", - "Epoch 684: model set back to train mode\n", - "Epoch 684: model parameters saved\n", - "Epoch 685 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 685: avg_loss appended (2.7778)\n", - "Epoch 685: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 685: accuracy appended (75.00%)\n", - "Epoch 685: model set back to train mode\n", - "Epoch 685: model parameters saved\n", - "Epoch 686 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 686: avg_loss appended (2.7778)\n", - "Epoch 686: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 686: accuracy appended (75.00%)\n", - "Epoch 686: model set back to train mode\n", - "Epoch 686: model parameters saved\n", - "Epoch 687 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 687: avg_loss appended (2.7778)\n", - "Epoch 687: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 687: accuracy appended (75.00%)\n", - "Epoch 687: model set back to train mode\n", - "Epoch 687: model parameters saved\n", - "Epoch 688 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 688: avg_loss appended (2.7778)\n", - "Epoch 688: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 688: accuracy appended (75.00%)\n", - "Epoch 688: model set back to train mode\n", - "Epoch 688: model parameters saved\n", - "Epoch 689 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 689: avg_loss appended (2.7778)\n", - "Epoch 689: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 689: accuracy appended (75.00%)\n", - "Epoch 689: model set back to train mode\n", - "Epoch 689: model parameters saved\n", - "Epoch 690 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 690: avg_loss appended (2.7778)\n", - "Epoch 690: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 690: accuracy appended (75.00%)\n", - "Epoch 690: model set back to train mode\n", - "Epoch 690: model parameters saved\n", - "Epoch 691 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 691: avg_loss appended (2.7778)\n", - "Epoch 691: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 691: accuracy appended (75.00%)\n", - "Epoch 691: model set back to train mode\n", - "Epoch 691: model parameters saved\n", - "Epoch 692 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 692: avg_loss appended (2.7778)\n", - "Epoch 692: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 692: accuracy appended (75.00%)\n", - "Epoch 692: model set back to train mode\n", - "Epoch 692: model parameters saved\n", - "Epoch 693 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 693: avg_loss appended (2.7778)\n", - "Epoch 693: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 693: accuracy appended (75.00%)\n", - "Epoch 693: model set back to train mode\n", - "Epoch 693: model parameters saved\n", - "Epoch 694 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 694: avg_loss appended (2.7778)\n", - "Epoch 694: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 694: accuracy appended (75.00%)\n", - "Epoch 694: model set back to train mode\n", - "Epoch 694: model parameters saved\n", - "Epoch 695 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 695: avg_loss appended (2.7778)\n", - "Epoch 695: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 695: accuracy appended (75.00%)\n", - "Epoch 695: model set back to train mode\n", - "Epoch 695: model parameters saved\n", - "Epoch 696 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 696: avg_loss appended (2.7778)\n", - "Epoch 696: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 696: accuracy appended (75.00%)\n", - "Epoch 696: model set back to train mode\n", - "Epoch 696: model parameters saved\n", - "Epoch 697 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 697: avg_loss appended (2.7778)\n", - "Epoch 697: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 697: accuracy appended (75.00%)\n", - "Epoch 697: model set back to train mode\n", - "Epoch 697: model parameters saved\n", - "Epoch 698 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 698: avg_loss appended (2.7778)\n", - "Epoch 698: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 698: accuracy appended (75.00%)\n", - "Epoch 698: model set back to train mode\n", - "Epoch 698: model parameters saved\n", - "Epoch 699 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 699: avg_loss appended (2.7778)\n", - "Epoch 699: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 699: accuracy appended (75.00%)\n", - "Epoch 699: model set back to train mode\n", - "Epoch 699: model parameters saved\n", - "Epoch 700 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 700: avg_loss appended (2.7778)\n", - "Epoch 700: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 700: accuracy appended (75.00%)\n", - "Epoch 700: model set back to train mode\n", - "Epoch 700: model parameters saved\n", - "Epoch 700/10000, Loss: 2.7778, Accuracy: 75.00%\n", - "Epoch 701 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 701: avg_loss appended (2.7778)\n", - "Epoch 701: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 701: accuracy appended (75.00%)\n", - "Epoch 701: model set back to train mode\n", - "Epoch 701: model parameters saved\n", - "Epoch 702 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 702: avg_loss appended (2.7778)\n", - "Epoch 702: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 702: accuracy appended (75.00%)\n", - "Epoch 702: model set back to train mode\n", - "Epoch 702: model parameters saved\n", - "Epoch 703 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 703: avg_loss appended (2.7778)\n", - "Epoch 703: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 703: accuracy appended (75.00%)\n", - "Epoch 703: model set back to train mode\n", - "Epoch 703: model parameters saved\n", - "Epoch 704 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 704: avg_loss appended (2.7778)\n", - "Epoch 704: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 704: accuracy appended (75.00%)\n", - "Epoch 704: model set back to train mode\n", - "Epoch 704: model parameters saved\n", - "Epoch 705 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 705: avg_loss appended (2.7778)\n", - "Epoch 705: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 705: accuracy appended (75.00%)\n", - "Epoch 705: model set back to train mode\n", - "Epoch 705: model parameters saved\n", - "Epoch 706 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 706: avg_loss appended (2.7778)\n", - "Epoch 706: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 706: accuracy appended (75.00%)\n", - "Epoch 706: model set back to train mode\n", - "Epoch 706: model parameters saved\n", - "Epoch 707 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 707: avg_loss appended (2.7778)\n", - "Epoch 707: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 707: accuracy appended (75.00%)\n", - "Epoch 707: model set back to train mode\n", - "Epoch 707: model parameters saved\n", - "Epoch 708 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 708: avg_loss appended (2.7778)\n", - "Epoch 708: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 708: accuracy appended (75.00%)\n", - "Epoch 708: model set back to train mode\n", - "Epoch 708: model parameters saved\n", - "Epoch 709 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 709: avg_loss appended (2.7778)\n", - "Epoch 709: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 709: accuracy appended (75.00%)\n", - "Epoch 709: model set back to train mode\n", - "Epoch 709: model parameters saved\n", - "Epoch 710 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 710: avg_loss appended (2.7778)\n", - "Epoch 710: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 710: accuracy appended (75.00%)\n", - "Epoch 710: model set back to train mode\n", - "Epoch 710: model parameters saved\n", - "Epoch 711 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 711: avg_loss appended (2.7778)\n", - "Epoch 711: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 711: accuracy appended (75.00%)\n", - "Epoch 711: model set back to train mode\n", - "Epoch 711: model parameters saved\n", - "Epoch 712 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 712: avg_loss appended (2.7778)\n", - "Epoch 712: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 712: accuracy appended (75.00%)\n", - "Epoch 712: model set back to train mode\n", - "Epoch 712: model parameters saved\n", - "Epoch 713 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 713: avg_loss appended (2.7778)\n", - "Epoch 713: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 713: accuracy appended (75.00%)\n", - "Epoch 713: model set back to train mode\n", - "Epoch 713: model parameters saved\n", - "Epoch 714 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 714: avg_loss appended (2.7778)\n", - "Epoch 714: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 714: accuracy appended (75.00%)\n", - "Epoch 714: model set back to train mode\n", - "Epoch 714: model parameters saved\n", - "Epoch 715 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 715: avg_loss appended (2.7778)\n", - "Epoch 715: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 715: accuracy appended (75.00%)\n", - "Epoch 715: model set back to train mode\n", - "Epoch 715: model parameters saved\n", - "Epoch 716 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 716: avg_loss appended (2.7778)\n", - "Epoch 716: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 716: accuracy appended (75.00%)\n", - "Epoch 716: model set back to train mode\n", - "Epoch 716: model parameters saved\n", - "Epoch 717 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 717: avg_loss appended (2.7778)\n", - "Epoch 717: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 75.00%\n", - "Epoch 717: accuracy appended (75.00%)\n", - "Epoch 717: model set back to train mode\n", - "Epoch 717: model parameters saved\n", - "Epoch 718 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 718: avg_loss appended (2.7778)\n", - "Epoch 718: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 718: accuracy appended (77.78%)\n", - "Epoch 718: model set back to train mode\n", - "Epoch 718: model parameters saved\n", - "Epoch 719 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 719: avg_loss appended (2.7778)\n", - "Epoch 719: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 719: accuracy appended (77.78%)\n", - "Epoch 719: model set back to train mode\n", - "Epoch 719: model parameters saved\n", - "Epoch 720 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 720: avg_loss appended (2.7778)\n", - "Epoch 720: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 720: accuracy appended (77.78%)\n", - "Epoch 720: model set back to train mode\n", - "Epoch 720: model parameters saved\n", - "Epoch 721 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 721: avg_loss appended (2.7778)\n", - "Epoch 721: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 721: accuracy appended (77.78%)\n", - "Epoch 721: model set back to train mode\n", - "Epoch 721: model parameters saved\n", - "Epoch 722 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 722: avg_loss appended (2.7778)\n", - "Epoch 722: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 722: accuracy appended (77.78%)\n", - "Epoch 722: model set back to train mode\n", - "Epoch 722: model parameters saved\n", - "Epoch 723 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 723: avg_loss appended (2.7778)\n", - "Epoch 723: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 723: accuracy appended (77.78%)\n", - "Epoch 723: model set back to train mode\n", - "Epoch 723: model parameters saved\n", - "Epoch 724 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 724: avg_loss appended (2.7778)\n", - "Epoch 724: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 724: accuracy appended (77.78%)\n", - "Epoch 724: model set back to train mode\n", - "Epoch 724: model parameters saved\n", - "Epoch 725 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 725: avg_loss appended (2.7778)\n", - "Epoch 725: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 725: accuracy appended (77.78%)\n", - "Epoch 725: model set back to train mode\n", - "Epoch 725: model parameters saved\n", - "Epoch 726 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 726: avg_loss appended (2.7778)\n", - "Epoch 726: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 726: accuracy appended (77.78%)\n", - "Epoch 726: model set back to train mode\n", - "Epoch 726: model parameters saved\n", - "Epoch 727 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 727: avg_loss appended (2.7778)\n", - "Epoch 727: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 727: accuracy appended (77.78%)\n", - "Epoch 727: model set back to train mode\n", - "Epoch 727: model parameters saved\n", - "Epoch 728 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 728: avg_loss appended (2.7778)\n", - "Epoch 728: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 728: accuracy appended (77.78%)\n", - "Epoch 728: model set back to train mode\n", - "Epoch 728: model parameters saved\n", - "Epoch 729 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 729: avg_loss appended (2.7778)\n", - "Epoch 729: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 729: accuracy appended (77.78%)\n", - "Epoch 729: model set back to train mode\n", - "Epoch 729: model parameters saved\n", - "Epoch 730 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 730: avg_loss appended (2.7778)\n", - "Epoch 730: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 730: accuracy appended (77.78%)\n", - "Epoch 730: model set back to train mode\n", - "Epoch 730: model parameters saved\n", - "Epoch 731 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 731: avg_loss appended (2.7778)\n", - "Epoch 731: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 731: accuracy appended (77.78%)\n", - "Epoch 731: model set back to train mode\n", - "Epoch 731: model parameters saved\n", - "Epoch 732 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 732: avg_loss appended (2.7778)\n", - "Epoch 732: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 732: accuracy appended (77.78%)\n", - "Epoch 732: model set back to train mode\n", - "Epoch 732: model parameters saved\n", - "Epoch 733 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 733: avg_loss appended (2.7778)\n", - "Epoch 733: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 733: accuracy appended (77.78%)\n", - "Epoch 733: model set back to train mode\n", - "Epoch 733: model parameters saved\n", - "Epoch 734 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 734: avg_loss appended (2.7778)\n", - "Epoch 734: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 734: accuracy appended (77.78%)\n", - "Epoch 734: model set back to train mode\n", - "Epoch 734: model parameters saved\n", - "Epoch 735 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 735: avg_loss appended (2.7778)\n", - "Epoch 735: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 735: accuracy appended (77.78%)\n", - "Epoch 735: model set back to train mode\n", - "Epoch 735: model parameters saved\n", - "Epoch 736 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 736: avg_loss appended (2.7778)\n", - "Epoch 736: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 736: accuracy appended (77.78%)\n", - "Epoch 736: model set back to train mode\n", - "Epoch 736: model parameters saved\n", - "Epoch 737 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 737: avg_loss appended (2.7778)\n", - "Epoch 737: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 737: accuracy appended (77.78%)\n", - "Epoch 737: model set back to train mode\n", - "Epoch 737: model parameters saved\n", - "Epoch 738 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 738: avg_loss appended (2.7778)\n", - "Epoch 738: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 738: accuracy appended (77.78%)\n", - "Epoch 738: model set back to train mode\n", - "Epoch 738: model parameters saved\n", - "Epoch 739 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 739: avg_loss appended (2.7778)\n", - "Epoch 739: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 739: accuracy appended (77.78%)\n", - "Epoch 739: model set back to train mode\n", - "Epoch 739: model parameters saved\n", - "Epoch 740 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 740: avg_loss appended (2.7778)\n", - "Epoch 740: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 740: accuracy appended (77.78%)\n", - "Epoch 740: model set back to train mode\n", - "Epoch 740: model parameters saved\n", - "Epoch 741 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 741: avg_loss appended (2.7778)\n", - "Epoch 741: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 741: accuracy appended (77.78%)\n", - "Epoch 741: model set back to train mode\n", - "Epoch 741: model parameters saved\n", - "Epoch 742 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 742: avg_loss appended (2.7778)\n", - "Epoch 742: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 742: accuracy appended (77.78%)\n", - "Epoch 742: model set back to train mode\n", - "Epoch 742: model parameters saved\n", - "Epoch 743 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 743: avg_loss appended (2.7778)\n", - "Epoch 743: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 743: accuracy appended (77.78%)\n", - "Epoch 743: model set back to train mode\n", - "Epoch 743: model parameters saved\n", - "Epoch 744 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 744: avg_loss appended (2.7778)\n", - "Epoch 744: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 744: accuracy appended (77.78%)\n", - "Epoch 744: model set back to train mode\n", - "Epoch 744: model parameters saved\n", - "Epoch 745 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 745: avg_loss appended (2.7778)\n", - "Epoch 745: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 745: accuracy appended (77.78%)\n", - "Epoch 745: model set back to train mode\n", - "Epoch 745: model parameters saved\n", - "Epoch 746 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 746: avg_loss appended (2.7778)\n", - "Epoch 746: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 746: accuracy appended (77.78%)\n", - "Epoch 746: model set back to train mode\n", - "Epoch 746: model parameters saved\n", - "Epoch 747 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 747: avg_loss appended (2.7778)\n", - "Epoch 747: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 747: accuracy appended (77.78%)\n", - "Epoch 747: model set back to train mode\n", - "Epoch 747: model parameters saved\n", - "Epoch 748 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 748: avg_loss appended (2.7778)\n", - "Epoch 748: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 748: accuracy appended (77.78%)\n", - "Epoch 748: model set back to train mode\n", - "Epoch 748: model parameters saved\n", - "Epoch 749 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 749: avg_loss appended (2.7778)\n", - "Epoch 749: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 749: accuracy appended (77.78%)\n", - "Epoch 749: model set back to train mode\n", - "Epoch 749: model parameters saved\n", - "Epoch 750 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 750: avg_loss appended (2.7778)\n", - "Epoch 750: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 750: accuracy appended (77.78%)\n", - "Epoch 750: model set back to train mode\n", - "Epoch 750: model parameters saved\n", - "Epoch 751 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 751: avg_loss appended (2.7778)\n", - "Epoch 751: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 751: accuracy appended (77.78%)\n", - "Epoch 751: model set back to train mode\n", - "Epoch 751: model parameters saved\n", - "Epoch 752 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 752: avg_loss appended (2.7778)\n", - "Epoch 752: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 752: accuracy appended (77.78%)\n", - "Epoch 752: model set back to train mode\n", - "Epoch 752: model parameters saved\n", - "Epoch 753 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 753: avg_loss appended (2.7778)\n", - "Epoch 753: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 753: accuracy appended (77.78%)\n", - "Epoch 753: model set back to train mode\n", - "Epoch 753: model parameters saved\n", - "Epoch 754 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 754: avg_loss appended (2.7778)\n", - "Epoch 754: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 754: accuracy appended (77.78%)\n", - "Epoch 754: model set back to train mode\n", - "Epoch 754: model parameters saved\n", - "Epoch 755 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 755: avg_loss appended (2.7778)\n", - "Epoch 755: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 755: accuracy appended (77.78%)\n", - "Epoch 755: model set back to train mode\n", - "Epoch 755: model parameters saved\n", - "Epoch 756 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 756: avg_loss appended (2.7778)\n", - "Epoch 756: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 756: accuracy appended (77.78%)\n", - "Epoch 756: model set back to train mode\n", - "Epoch 756: model parameters saved\n", - "Epoch 757 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 757: avg_loss appended (2.7778)\n", - "Epoch 757: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 757: accuracy appended (77.78%)\n", - "Epoch 757: model set back to train mode\n", - "Epoch 757: model parameters saved\n", - "Epoch 758 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 758: avg_loss appended (2.7778)\n", - "Epoch 758: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 758: accuracy appended (77.78%)\n", - "Epoch 758: model set back to train mode\n", - "Epoch 758: model parameters saved\n", - "Epoch 759 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 759: avg_loss appended (2.7778)\n", - "Epoch 759: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 759: accuracy appended (77.78%)\n", - "Epoch 759: model set back to train mode\n", - "Epoch 759: model parameters saved\n", - "Epoch 760 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 760: avg_loss appended (2.7778)\n", - "Epoch 760: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 760: accuracy appended (77.78%)\n", - "Epoch 760: model set back to train mode\n", - "Epoch 760: model parameters saved\n", - "Epoch 761 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 761: avg_loss appended (2.7778)\n", - "Epoch 761: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 761: accuracy appended (77.78%)\n", - "Epoch 761: model set back to train mode\n", - "Epoch 761: model parameters saved\n", - "Epoch 762 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 762: avg_loss appended (2.7778)\n", - "Epoch 762: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 762: accuracy appended (77.78%)\n", - "Epoch 762: model set back to train mode\n", - "Epoch 762: model parameters saved\n", - "Epoch 763 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 763: avg_loss appended (2.7778)\n", - "Epoch 763: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 763: accuracy appended (77.78%)\n", - "Epoch 763: model set back to train mode\n", - "Epoch 763: model parameters saved\n", - "Epoch 764 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 764: avg_loss appended (2.7778)\n", - "Epoch 764: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 764: accuracy appended (77.78%)\n", - "Epoch 764: model set back to train mode\n", - "Epoch 764: model parameters saved\n", - "Epoch 765 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 765: avg_loss appended (2.7778)\n", - "Epoch 765: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 765: accuracy appended (77.78%)\n", - "Epoch 765: model set back to train mode\n", - "Epoch 765: model parameters saved\n", - "Epoch 766 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 766: avg_loss appended (2.7778)\n", - "Epoch 766: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 766: accuracy appended (77.78%)\n", - "Epoch 766: model set back to train mode\n", - "Epoch 766: model parameters saved\n", - "Epoch 767 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 767: avg_loss appended (2.7778)\n", - "Epoch 767: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 767: accuracy appended (77.78%)\n", - "Epoch 767: model set back to train mode\n", - "Epoch 767: model parameters saved\n", - "Epoch 768 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 768: avg_loss appended (2.7778)\n", - "Epoch 768: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 768: accuracy appended (77.78%)\n", - "Epoch 768: model set back to train mode\n", - "Epoch 768: model parameters saved\n", - "Epoch 769 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 769: avg_loss appended (2.7778)\n", - "Epoch 769: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 769: accuracy appended (77.78%)\n", - "Epoch 769: model set back to train mode\n", - "Epoch 769: model parameters saved\n", - "Epoch 770 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 770: avg_loss appended (2.7778)\n", - "Epoch 770: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 770: accuracy appended (77.78%)\n", - "Epoch 770: model set back to train mode\n", - "Epoch 770: model parameters saved\n", - "Epoch 771 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 771: avg_loss appended (2.7778)\n", - "Epoch 771: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 771: accuracy appended (77.78%)\n", - "Epoch 771: model set back to train mode\n", - "Epoch 771: model parameters saved\n", - "Epoch 772 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 772: avg_loss appended (2.7778)\n", - "Epoch 772: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 772: accuracy appended (77.78%)\n", - "Epoch 772: model set back to train mode\n", - "Epoch 772: model parameters saved\n", - "Epoch 773 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 773: avg_loss appended (2.7778)\n", - "Epoch 773: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 773: accuracy appended (77.78%)\n", - "Epoch 773: model set back to train mode\n", - "Epoch 773: model parameters saved\n", - "Epoch 774 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 774: avg_loss appended (2.7778)\n", - "Epoch 774: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 774: accuracy appended (77.78%)\n", - "Epoch 774: model set back to train mode\n", - "Epoch 774: model parameters saved\n", - "Epoch 775 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 775: avg_loss appended (2.7778)\n", - "Epoch 775: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 775: accuracy appended (77.78%)\n", - "Epoch 775: model set back to train mode\n", - "Epoch 775: model parameters saved\n", - "Epoch 776 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 776: avg_loss appended (2.7778)\n", - "Epoch 776: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 776: accuracy appended (77.78%)\n", - "Epoch 776: model set back to train mode\n", - "Epoch 776: model parameters saved\n", - "Epoch 777 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 777: avg_loss appended (2.7778)\n", - "Epoch 777: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 777: accuracy appended (77.78%)\n", - "Epoch 777: model set back to train mode\n", - "Epoch 777: model parameters saved\n", - "Epoch 778 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 778: avg_loss appended (2.7778)\n", - "Epoch 778: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 778: accuracy appended (77.78%)\n", - "Epoch 778: model set back to train mode\n", - "Epoch 778: model parameters saved\n", - "Epoch 779 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 779: avg_loss appended (2.7778)\n", - "Epoch 779: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 779: accuracy appended (77.78%)\n", - "Epoch 779: model set back to train mode\n", - "Epoch 779: model parameters saved\n", - "Epoch 780 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 780: avg_loss appended (2.7778)\n", - "Epoch 780: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 780: accuracy appended (77.78%)\n", - "Epoch 780: model set back to train mode\n", - "Epoch 780: model parameters saved\n", - "Epoch 781 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 781: avg_loss appended (2.7778)\n", - "Epoch 781: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 781: accuracy appended (77.78%)\n", - "Epoch 781: model set back to train mode\n", - "Epoch 781: model parameters saved\n", - "Epoch 782 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 782: avg_loss appended (2.7778)\n", - "Epoch 782: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 782: accuracy appended (77.78%)\n", - "Epoch 782: model set back to train mode\n", - "Epoch 782: model parameters saved\n", - "Epoch 783 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 783: avg_loss appended (2.7778)\n", - "Epoch 783: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 783: accuracy appended (77.78%)\n", - "Epoch 783: model set back to train mode\n", - "Epoch 783: model parameters saved\n", - "Epoch 784 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 784: avg_loss appended (2.7778)\n", - "Epoch 784: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 784: accuracy appended (77.78%)\n", - "Epoch 784: model set back to train mode\n", - "Epoch 784: model parameters saved\n", - "Epoch 785 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 785: avg_loss appended (2.7778)\n", - "Epoch 785: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 785: accuracy appended (77.78%)\n", - "Epoch 785: model set back to train mode\n", - "Epoch 785: model parameters saved\n", - "Epoch 786 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 786: avg_loss appended (2.7778)\n", - "Epoch 786: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 786: accuracy appended (77.78%)\n", - "Epoch 786: model set back to train mode\n", - "Epoch 786: model parameters saved\n", - "Epoch 787 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 787: avg_loss appended (2.7778)\n", - "Epoch 787: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 787: accuracy appended (77.78%)\n", - "Epoch 787: model set back to train mode\n", - "Epoch 787: model parameters saved\n", - "Epoch 788 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 788: avg_loss appended (2.7778)\n", - "Epoch 788: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 788: accuracy appended (77.78%)\n", - "Epoch 788: model set back to train mode\n", - "Epoch 788: model parameters saved\n", - "Epoch 789 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 789: avg_loss appended (2.7778)\n", - "Epoch 789: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 789: accuracy appended (77.78%)\n", - "Epoch 789: model set back to train mode\n", - "Epoch 789: model parameters saved\n", - "Epoch 790 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 790: avg_loss appended (2.7778)\n", - "Epoch 790: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 790: accuracy appended (77.78%)\n", - "Epoch 790: model set back to train mode\n", - "Epoch 790: model parameters saved\n", - "Epoch 791 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 791: avg_loss appended (2.7778)\n", - "Epoch 791: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 791: accuracy appended (77.78%)\n", - "Epoch 791: model set back to train mode\n", - "Epoch 791: model parameters saved\n", - "Epoch 792 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 792: avg_loss appended (2.7778)\n", - "Epoch 792: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 792: accuracy appended (77.78%)\n", - "Epoch 792: model set back to train mode\n", - "Epoch 792: model parameters saved\n", - "Epoch 793 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 793: avg_loss appended (2.7778)\n", - "Epoch 793: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 793: accuracy appended (77.78%)\n", - "Epoch 793: model set back to train mode\n", - "Epoch 793: model parameters saved\n", - "Epoch 794 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 794: avg_loss appended (2.7778)\n", - "Epoch 794: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 794: accuracy appended (77.78%)\n", - "Epoch 794: model set back to train mode\n", - "Epoch 794: model parameters saved\n", - "Epoch 795 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 795: avg_loss appended (2.7778)\n", - "Epoch 795: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 795: accuracy appended (77.78%)\n", - "Epoch 795: model set back to train mode\n", - "Epoch 795: model parameters saved\n", - "Epoch 796 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 796: avg_loss appended (2.7778)\n", - "Epoch 796: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 796: accuracy appended (77.78%)\n", - "Epoch 796: model set back to train mode\n", - "Epoch 796: model parameters saved\n", - "Epoch 797 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 797: avg_loss appended (2.7778)\n", - "Epoch 797: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 797: accuracy appended (77.78%)\n", - "Epoch 797: model set back to train mode\n", - "Epoch 797: model parameters saved\n", - "Epoch 798 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 798: avg_loss appended (2.7778)\n", - "Epoch 798: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 798: accuracy appended (77.78%)\n", - "Epoch 798: model set back to train mode\n", - "Epoch 798: model parameters saved\n", - "Epoch 799 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 799: avg_loss appended (2.7778)\n", - "Epoch 799: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 799: accuracy appended (77.78%)\n", - "Epoch 799: model set back to train mode\n", - "Epoch 799: model parameters saved\n", - "Epoch 800 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 800: avg_loss appended (2.7778)\n", - "Epoch 800: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 800: accuracy appended (77.78%)\n", - "Epoch 800: model set back to train mode\n", - "Epoch 800: model parameters saved\n", - "Epoch 800/10000, Loss: 2.7778, Accuracy: 77.78%\n", - "Epoch 801 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 801: avg_loss appended (2.7778)\n", - "Epoch 801: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 801: accuracy appended (77.78%)\n", - "Epoch 801: model set back to train mode\n", - "Epoch 801: model parameters saved\n", - "Epoch 802 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 802: avg_loss appended (2.7778)\n", - "Epoch 802: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 802: accuracy appended (77.78%)\n", - "Epoch 802: model set back to train mode\n", - "Epoch 802: model parameters saved\n", - "Epoch 803 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 803: avg_loss appended (2.7778)\n", - "Epoch 803: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 803: accuracy appended (77.78%)\n", - "Epoch 803: model set back to train mode\n", - "Epoch 803: model parameters saved\n", - "Epoch 804 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 804: avg_loss appended (2.7778)\n", - "Epoch 804: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 804: accuracy appended (77.78%)\n", - "Epoch 804: model set back to train mode\n", - "Epoch 804: model parameters saved\n", - "Epoch 805 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 805: avg_loss appended (2.7778)\n", - "Epoch 805: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 805: accuracy appended (77.78%)\n", - "Epoch 805: model set back to train mode\n", - "Epoch 805: model parameters saved\n", - "Epoch 806 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 806: avg_loss appended (2.7778)\n", - "Epoch 806: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 806: accuracy appended (77.78%)\n", - "Epoch 806: model set back to train mode\n", - "Epoch 806: model parameters saved\n", - "Epoch 807 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 807: avg_loss appended (2.7778)\n", - "Epoch 807: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 807: accuracy appended (77.78%)\n", - "Epoch 807: model set back to train mode\n", - "Epoch 807: model parameters saved\n", - "Epoch 808 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 808: avg_loss appended (2.7778)\n", - "Epoch 808: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 808: accuracy appended (77.78%)\n", - "Epoch 808: model set back to train mode\n", - "Epoch 808: model parameters saved\n", - "Epoch 809 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 809: avg_loss appended (2.7778)\n", - "Epoch 809: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 809: accuracy appended (77.78%)\n", - "Epoch 809: model set back to train mode\n", - "Epoch 809: model parameters saved\n", - "Epoch 810 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 810: avg_loss appended (2.7778)\n", - "Epoch 810: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 810: accuracy appended (77.78%)\n", - "Epoch 810: model set back to train mode\n", - "Epoch 810: model parameters saved\n", - "Epoch 811 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 811: avg_loss appended (2.7778)\n", - "Epoch 811: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 811: accuracy appended (77.78%)\n", - "Epoch 811: model set back to train mode\n", - "Epoch 811: model parameters saved\n", - "Epoch 812 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 812: avg_loss appended (2.7778)\n", - "Epoch 812: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 812: accuracy appended (77.78%)\n", - "Epoch 812: model set back to train mode\n", - "Epoch 812: model parameters saved\n", - "Epoch 813 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 813: avg_loss appended (2.7778)\n", - "Epoch 813: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 813: accuracy appended (77.78%)\n", - "Epoch 813: model set back to train mode\n", - "Epoch 813: model parameters saved\n", - "Epoch 814 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 814: avg_loss appended (2.7778)\n", - "Epoch 814: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 814: accuracy appended (77.78%)\n", - "Epoch 814: model set back to train mode\n", - "Epoch 814: model parameters saved\n", - "Epoch 815 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 815: avg_loss appended (2.7778)\n", - "Epoch 815: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 815: accuracy appended (77.78%)\n", - "Epoch 815: model set back to train mode\n", - "Epoch 815: model parameters saved\n", - "Epoch 816 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 816: avg_loss appended (2.7778)\n", - "Epoch 816: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 816: accuracy appended (77.78%)\n", - "Epoch 816: model set back to train mode\n", - "Epoch 816: model parameters saved\n", - "Epoch 817 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 817: avg_loss appended (2.7778)\n", - "Epoch 817: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 817: accuracy appended (77.78%)\n", - "Epoch 817: model set back to train mode\n", - "Epoch 817: model parameters saved\n", - "Epoch 818 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 818: avg_loss appended (2.7778)\n", - "Epoch 818: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 818: accuracy appended (77.78%)\n", - "Epoch 818: model set back to train mode\n", - "Epoch 818: model parameters saved\n", - "Epoch 819 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 819: avg_loss appended (2.7778)\n", - "Epoch 819: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 819: accuracy appended (77.78%)\n", - "Epoch 819: model set back to train mode\n", - "Epoch 819: model parameters saved\n", - "Epoch 820 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 820: avg_loss appended (2.7778)\n", - "Epoch 820: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 820: accuracy appended (77.78%)\n", - "Epoch 820: model set back to train mode\n", - "Epoch 820: model parameters saved\n", - "Epoch 821 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 821: avg_loss appended (2.7778)\n", - "Epoch 821: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 821: accuracy appended (77.78%)\n", - "Epoch 821: model set back to train mode\n", - "Epoch 821: model parameters saved\n", - "Epoch 822 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 822: avg_loss appended (2.7778)\n", - "Epoch 822: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 822: accuracy appended (77.78%)\n", - "Epoch 822: model set back to train mode\n", - "Epoch 822: model parameters saved\n", - "Epoch 823 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 823: avg_loss appended (2.7778)\n", - "Epoch 823: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 823: accuracy appended (77.78%)\n", - "Epoch 823: model set back to train mode\n", - "Epoch 823: model parameters saved\n", - "Epoch 824 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 824: avg_loss appended (2.7778)\n", - "Epoch 824: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 824: accuracy appended (77.78%)\n", - "Epoch 824: model set back to train mode\n", - "Epoch 824: model parameters saved\n", - "Epoch 825 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 825: avg_loss appended (2.7778)\n", - "Epoch 825: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 825: accuracy appended (77.78%)\n", - "Epoch 825: model set back to train mode\n", - "Epoch 825: model parameters saved\n", - "Epoch 826 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 826: avg_loss appended (2.7778)\n", - "Epoch 826: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 826: accuracy appended (77.78%)\n", - "Epoch 826: model set back to train mode\n", - "Epoch 826: model parameters saved\n", - "Epoch 827 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 827: avg_loss appended (2.7778)\n", - "Epoch 827: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 827: accuracy appended (77.78%)\n", - "Epoch 827: model set back to train mode\n", - "Epoch 827: model parameters saved\n", - "Epoch 828 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 828: avg_loss appended (2.7778)\n", - "Epoch 828: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 828: accuracy appended (77.78%)\n", - "Epoch 828: model set back to train mode\n", - "Epoch 828: model parameters saved\n", - "Epoch 829 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 829: avg_loss appended (2.7778)\n", - "Epoch 829: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 829: accuracy appended (77.78%)\n", - "Epoch 829: model set back to train mode\n", - "Epoch 829: model parameters saved\n", - "Epoch 830 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 830: avg_loss appended (2.7778)\n", - "Epoch 830: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 830: accuracy appended (77.78%)\n", - "Epoch 830: model set back to train mode\n", - "Epoch 830: model parameters saved\n", - "Epoch 831 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 831: avg_loss appended (2.7778)\n", - "Epoch 831: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 831: accuracy appended (77.78%)\n", - "Epoch 831: model set back to train mode\n", - "Epoch 831: model parameters saved\n", - "Epoch 832 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 832: avg_loss appended (2.7778)\n", - "Epoch 832: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 832: accuracy appended (77.78%)\n", - "Epoch 832: model set back to train mode\n", - "Epoch 832: model parameters saved\n", - "Epoch 833 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 833: avg_loss appended (2.7778)\n", - "Epoch 833: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 833: accuracy appended (77.78%)\n", - "Epoch 833: model set back to train mode\n", - "Epoch 833: model parameters saved\n", - "Epoch 834 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 834: avg_loss appended (2.7778)\n", - "Epoch 834: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 834: accuracy appended (77.78%)\n", - "Epoch 834: model set back to train mode\n", - "Epoch 834: model parameters saved\n", - "Epoch 835 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 835: avg_loss appended (2.7778)\n", - "Epoch 835: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 835: accuracy appended (77.78%)\n", - "Epoch 835: model set back to train mode\n", - "Epoch 835: model parameters saved\n", - "Epoch 836 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 836: avg_loss appended (2.7778)\n", - "Epoch 836: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 836: accuracy appended (77.78%)\n", - "Epoch 836: model set back to train mode\n", - "Epoch 836: model parameters saved\n", - "Epoch 837 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 837: avg_loss appended (2.7778)\n", - "Epoch 837: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 837: accuracy appended (77.78%)\n", - "Epoch 837: model set back to train mode\n", - "Epoch 837: model parameters saved\n", - "Epoch 838 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 838: avg_loss appended (2.7778)\n", - "Epoch 838: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 838: accuracy appended (77.78%)\n", - "Epoch 838: model set back to train mode\n", - "Epoch 838: model parameters saved\n", - "Epoch 839 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 839: avg_loss appended (2.7778)\n", - "Epoch 839: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 839: accuracy appended (77.78%)\n", - "Epoch 839: model set back to train mode\n", - "Epoch 839: model parameters saved\n", - "Epoch 840 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 840: avg_loss appended (2.7778)\n", - "Epoch 840: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 840: accuracy appended (77.78%)\n", - "Epoch 840: model set back to train mode\n", - "Epoch 840: model parameters saved\n", - "Epoch 841 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 841: avg_loss appended (2.7778)\n", - "Epoch 841: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 841: accuracy appended (77.78%)\n", - "Epoch 841: model set back to train mode\n", - "Epoch 841: model parameters saved\n", - "Epoch 842 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 842: avg_loss appended (2.7778)\n", - "Epoch 842: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 842: accuracy appended (77.78%)\n", - "Epoch 842: model set back to train mode\n", - "Epoch 842: model parameters saved\n", - "Epoch 843 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 843: avg_loss appended (2.7778)\n", - "Epoch 843: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 843: accuracy appended (77.78%)\n", - "Epoch 843: model set back to train mode\n", - "Epoch 843: model parameters saved\n", - "Epoch 844 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 844: avg_loss appended (2.7778)\n", - "Epoch 844: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 844: accuracy appended (77.78%)\n", - "Epoch 844: model set back to train mode\n", - "Epoch 844: model parameters saved\n", - "Epoch 845 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 845: avg_loss appended (2.7778)\n", - "Epoch 845: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 845: accuracy appended (77.78%)\n", - "Epoch 845: model set back to train mode\n", - "Epoch 845: model parameters saved\n", - "Epoch 846 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 846: avg_loss appended (2.7778)\n", - "Epoch 846: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 846: accuracy appended (77.78%)\n", - "Epoch 846: model set back to train mode\n", - "Epoch 846: model parameters saved\n", - "Epoch 847 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 847: avg_loss appended (2.7778)\n", - "Epoch 847: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 847: accuracy appended (77.78%)\n", - "Epoch 847: model set back to train mode\n", - "Epoch 847: model parameters saved\n", - "Epoch 848 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 848: avg_loss appended (2.7778)\n", - "Epoch 848: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 848: accuracy appended (77.78%)\n", - "Epoch 848: model set back to train mode\n", - "Epoch 848: model parameters saved\n", - "Epoch 849 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 849: avg_loss appended (2.7778)\n", - "Epoch 849: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 849: accuracy appended (77.78%)\n", - "Epoch 849: model set back to train mode\n", - "Epoch 849: model parameters saved\n", - "Epoch 850 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 850: avg_loss appended (2.7778)\n", - "Epoch 850: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 850: accuracy appended (77.78%)\n", - "Epoch 850: model set back to train mode\n", - "Epoch 850: model parameters saved\n", - "Epoch 851 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 851: avg_loss appended (2.7778)\n", - "Epoch 851: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 851: accuracy appended (77.78%)\n", - "Epoch 851: model set back to train mode\n", - "Epoch 851: model parameters saved\n", - "Epoch 852 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 852: avg_loss appended (2.7778)\n", - "Epoch 852: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 852: accuracy appended (77.78%)\n", - "Epoch 852: model set back to train mode\n", - "Epoch 852: model parameters saved\n", - "Epoch 853 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 853: avg_loss appended (2.7778)\n", - "Epoch 853: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 853: accuracy appended (77.78%)\n", - "Epoch 853: model set back to train mode\n", - "Epoch 853: model parameters saved\n", - "Epoch 854 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 854: avg_loss appended (2.7778)\n", - "Epoch 854: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 854: accuracy appended (77.78%)\n", - "Epoch 854: model set back to train mode\n", - "Epoch 854: model parameters saved\n", - "Epoch 855 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 855: avg_loss appended (2.7778)\n", - "Epoch 855: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 855: accuracy appended (77.78%)\n", - "Epoch 855: model set back to train mode\n", - "Epoch 855: model parameters saved\n", - "Epoch 856 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 856: avg_loss appended (2.7778)\n", - "Epoch 856: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 856: accuracy appended (77.78%)\n", - "Epoch 856: model set back to train mode\n", - "Epoch 856: model parameters saved\n", - "Epoch 857 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 857: avg_loss appended (2.7778)\n", - "Epoch 857: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 857: accuracy appended (77.78%)\n", - "Epoch 857: model set back to train mode\n", - "Epoch 857: model parameters saved\n", - "Epoch 858 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 858: avg_loss appended (2.7778)\n", - "Epoch 858: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 858: accuracy appended (77.78%)\n", - "Epoch 858: model set back to train mode\n", - "Epoch 858: model parameters saved\n", - "Epoch 859 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 859: avg_loss appended (2.7778)\n", - "Epoch 859: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 859: accuracy appended (77.78%)\n", - "Epoch 859: model set back to train mode\n", - "Epoch 859: model parameters saved\n", - "Epoch 860 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 860: avg_loss appended (2.7778)\n", - "Epoch 860: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 860: accuracy appended (77.78%)\n", - "Epoch 860: model set back to train mode\n", - "Epoch 860: model parameters saved\n", - "Epoch 861 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 861: avg_loss appended (2.7778)\n", - "Epoch 861: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 861: accuracy appended (77.78%)\n", - "Epoch 861: model set back to train mode\n", - "Epoch 861: model parameters saved\n", - "Epoch 862 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 862: avg_loss appended (2.7778)\n", - "Epoch 862: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 862: accuracy appended (77.78%)\n", - "Epoch 862: model set back to train mode\n", - "Epoch 862: model parameters saved\n", - "Epoch 863 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 863: avg_loss appended (2.7778)\n", - "Epoch 863: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 863: accuracy appended (77.78%)\n", - "Epoch 863: model set back to train mode\n", - "Epoch 863: model parameters saved\n", - "Epoch 864 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 864: avg_loss appended (2.7778)\n", - "Epoch 864: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 864: accuracy appended (77.78%)\n", - "Epoch 864: model set back to train mode\n", - "Epoch 864: model parameters saved\n", - "Epoch 865 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 865: avg_loss appended (2.7778)\n", - "Epoch 865: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 865: accuracy appended (77.78%)\n", - "Epoch 865: model set back to train mode\n", - "Epoch 865: model parameters saved\n", - "Epoch 866 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 866: avg_loss appended (2.7778)\n", - "Epoch 866: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 866: accuracy appended (77.78%)\n", - "Epoch 866: model set back to train mode\n", - "Epoch 866: model parameters saved\n", - "Epoch 867 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 867: avg_loss appended (2.7778)\n", - "Epoch 867: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 867: accuracy appended (77.78%)\n", - "Epoch 867: model set back to train mode\n", - "Epoch 867: model parameters saved\n", - "Epoch 868 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 868: avg_loss appended (2.7778)\n", - "Epoch 868: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 868: accuracy appended (77.78%)\n", - "Epoch 868: model set back to train mode\n", - "Epoch 868: model parameters saved\n", - "Epoch 869 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 869: avg_loss appended (2.7778)\n", - "Epoch 869: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 869: accuracy appended (77.78%)\n", - "Epoch 869: model set back to train mode\n", - "Epoch 869: model parameters saved\n", - "Epoch 870 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 870: avg_loss appended (2.7778)\n", - "Epoch 870: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 870: accuracy appended (77.78%)\n", - "Epoch 870: model set back to train mode\n", - "Epoch 870: model parameters saved\n", - "Epoch 871 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 871: avg_loss appended (2.7778)\n", - "Epoch 871: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 871: accuracy appended (77.78%)\n", - "Epoch 871: model set back to train mode\n", - "Epoch 871: model parameters saved\n", - "Epoch 872 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 872: avg_loss appended (2.7778)\n", - "Epoch 872: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 872: accuracy appended (77.78%)\n", - "Epoch 872: model set back to train mode\n", - "Epoch 872: model parameters saved\n", - "Epoch 873 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 873: avg_loss appended (2.7778)\n", - "Epoch 873: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 873: accuracy appended (77.78%)\n", - "Epoch 873: model set back to train mode\n", - "Epoch 873: model parameters saved\n", - "Epoch 874 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 874: avg_loss appended (2.7778)\n", - "Epoch 874: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 874: accuracy appended (77.78%)\n", - "Epoch 874: model set back to train mode\n", - "Epoch 874: model parameters saved\n", - "Epoch 875 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 875: avg_loss appended (2.7778)\n", - "Epoch 875: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 875: accuracy appended (77.78%)\n", - "Epoch 875: model set back to train mode\n", - "Epoch 875: model parameters saved\n", - "Epoch 876 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 876: avg_loss appended (2.7778)\n", - "Epoch 876: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 876: accuracy appended (77.78%)\n", - "Epoch 876: model set back to train mode\n", - "Epoch 876: model parameters saved\n", - "Epoch 877 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 877: avg_loss appended (2.7778)\n", - "Epoch 877: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 877: accuracy appended (77.78%)\n", - "Epoch 877: model set back to train mode\n", - "Epoch 877: model parameters saved\n", - "Epoch 878 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 878: avg_loss appended (2.7778)\n", - "Epoch 878: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 878: accuracy appended (77.78%)\n", - "Epoch 878: model set back to train mode\n", - "Epoch 878: model parameters saved\n", - "Epoch 879 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 879: avg_loss appended (2.7778)\n", - "Epoch 879: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 879: accuracy appended (77.78%)\n", - "Epoch 879: model set back to train mode\n", - "Epoch 879: model parameters saved\n", - "Epoch 880 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 880: avg_loss appended (2.7778)\n", - "Epoch 880: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 880: accuracy appended (77.78%)\n", - "Epoch 880: model set back to train mode\n", - "Epoch 880: model parameters saved\n", - "Epoch 881 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 881: avg_loss appended (2.7778)\n", - "Epoch 881: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 881: accuracy appended (77.78%)\n", - "Epoch 881: model set back to train mode\n", - "Epoch 881: model parameters saved\n", - "Epoch 882 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 882: avg_loss appended (2.7778)\n", - "Epoch 882: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 882: accuracy appended (77.78%)\n", - "Epoch 882: model set back to train mode\n", - "Epoch 882: model parameters saved\n", - "Epoch 883 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 883: avg_loss appended (2.7778)\n", - "Epoch 883: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 883: accuracy appended (77.78%)\n", - "Epoch 883: model set back to train mode\n", - "Epoch 883: model parameters saved\n", - "Epoch 884 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 884: avg_loss appended (2.7778)\n", - "Epoch 884: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 884: accuracy appended (77.78%)\n", - "Epoch 884: model set back to train mode\n", - "Epoch 884: model parameters saved\n", - "Epoch 885 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 885: avg_loss appended (2.7778)\n", - "Epoch 885: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 885: accuracy appended (77.78%)\n", - "Epoch 885: model set back to train mode\n", - "Epoch 885: model parameters saved\n", - "Epoch 886 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 886: avg_loss appended (2.7778)\n", - "Epoch 886: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 886: accuracy appended (77.78%)\n", - "Epoch 886: model set back to train mode\n", - "Epoch 886: model parameters saved\n", - "Epoch 887 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 887: avg_loss appended (2.7778)\n", - "Epoch 887: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 887: accuracy appended (77.78%)\n", - "Epoch 887: model set back to train mode\n", - "Epoch 887: model parameters saved\n", - "Epoch 888 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 888: avg_loss appended (2.7778)\n", - "Epoch 888: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 888: accuracy appended (77.78%)\n", - "Epoch 888: model set back to train mode\n", - "Epoch 888: model parameters saved\n", - "Epoch 889 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 889: avg_loss appended (2.7778)\n", - "Epoch 889: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 889: accuracy appended (77.78%)\n", - "Epoch 889: model set back to train mode\n", - "Epoch 889: model parameters saved\n", - "Epoch 890 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 890: avg_loss appended (2.7778)\n", - "Epoch 890: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 890: accuracy appended (77.78%)\n", - "Epoch 890: model set back to train mode\n", - "Epoch 890: model parameters saved\n", - "Epoch 891 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 891: avg_loss appended (2.7778)\n", - "Epoch 891: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 891: accuracy appended (77.78%)\n", - "Epoch 891: model set back to train mode\n", - "Epoch 891: model parameters saved\n", - "Epoch 892 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 892: avg_loss appended (2.7778)\n", - "Epoch 892: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 892: accuracy appended (77.78%)\n", - "Epoch 892: model set back to train mode\n", - "Epoch 892: model parameters saved\n", - "Epoch 893 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 893: avg_loss appended (2.7778)\n", - "Epoch 893: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 893: accuracy appended (77.78%)\n", - "Epoch 893: model set back to train mode\n", - "Epoch 893: model parameters saved\n", - "Epoch 894 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 894: avg_loss appended (2.7778)\n", - "Epoch 894: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 894: accuracy appended (77.78%)\n", - "Epoch 894: model set back to train mode\n", - "Epoch 894: model parameters saved\n", - "Epoch 895 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 895: avg_loss appended (2.7778)\n", - "Epoch 895: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 895: accuracy appended (77.78%)\n", - "Epoch 895: model set back to train mode\n", - "Epoch 895: model parameters saved\n", - "Epoch 896 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 896: avg_loss appended (2.7778)\n", - "Epoch 896: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 896: accuracy appended (77.78%)\n", - "Epoch 896: model set back to train mode\n", - "Epoch 896: model parameters saved\n", - "Epoch 897 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 897: avg_loss appended (2.7778)\n", - "Epoch 897: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 897: accuracy appended (77.78%)\n", - "Epoch 897: model set back to train mode\n", - "Epoch 897: model parameters saved\n", - "Epoch 898 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 898: avg_loss appended (2.7778)\n", - "Epoch 898: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 898: accuracy appended (77.78%)\n", - "Epoch 898: model set back to train mode\n", - "Epoch 898: model parameters saved\n", - "Epoch 899 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 899: avg_loss appended (2.7778)\n", - "Epoch 899: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 899: accuracy appended (77.78%)\n", - "Epoch 899: model set back to train mode\n", - "Epoch 899: model parameters saved\n", - "Epoch 900 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 900: avg_loss appended (2.7778)\n", - "Epoch 900: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 900: accuracy appended (77.78%)\n", - "Epoch 900: model set back to train mode\n", - "Epoch 900: model parameters saved\n", - "Epoch 900/10000, Loss: 2.7778, Accuracy: 77.78%\n", - "Epoch 901 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 901: avg_loss appended (2.7778)\n", - "Epoch 901: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 901: accuracy appended (77.78%)\n", - "Epoch 901: model set back to train mode\n", - "Epoch 901: model parameters saved\n", - "Epoch 902 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 902: avg_loss appended (2.7778)\n", - "Epoch 902: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 902: accuracy appended (77.78%)\n", - "Epoch 902: model set back to train mode\n", - "Epoch 902: model parameters saved\n", - "Epoch 903 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 903: avg_loss appended (2.7778)\n", - "Epoch 903: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 903: accuracy appended (77.78%)\n", - "Epoch 903: model set back to train mode\n", - "Epoch 903: model parameters saved\n", - "Epoch 904 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 904: avg_loss appended (2.7778)\n", - "Epoch 904: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 904: accuracy appended (77.78%)\n", - "Epoch 904: model set back to train mode\n", - "Epoch 904: model parameters saved\n", - "Epoch 905 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 905: avg_loss appended (2.7778)\n", - "Epoch 905: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 905: accuracy appended (77.78%)\n", - "Epoch 905: model set back to train mode\n", - "Epoch 905: model parameters saved\n", - "Epoch 906 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 906: avg_loss appended (2.7778)\n", - "Epoch 906: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 906: accuracy appended (77.78%)\n", - "Epoch 906: model set back to train mode\n", - "Epoch 906: model parameters saved\n", - "Epoch 907 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 907: avg_loss appended (2.7778)\n", - "Epoch 907: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 907: accuracy appended (77.78%)\n", - "Epoch 907: model set back to train mode\n", - "Epoch 907: model parameters saved\n", - "Epoch 908 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 908: avg_loss appended (2.7778)\n", - "Epoch 908: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 908: accuracy appended (77.78%)\n", - "Epoch 908: model set back to train mode\n", - "Epoch 908: model parameters saved\n", - "Epoch 909 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 909: avg_loss appended (2.7778)\n", - "Epoch 909: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 909: accuracy appended (77.78%)\n", - "Epoch 909: model set back to train mode\n", - "Epoch 909: model parameters saved\n", - "Epoch 910 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 910: avg_loss appended (2.7778)\n", - "Epoch 910: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 910: accuracy appended (77.78%)\n", - "Epoch 910: model set back to train mode\n", - "Epoch 910: model parameters saved\n", - "Epoch 911 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 911: avg_loss appended (2.7778)\n", - "Epoch 911: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 911: accuracy appended (77.78%)\n", - "Epoch 911: model set back to train mode\n", - "Epoch 911: model parameters saved\n", - "Epoch 912 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 912: avg_loss appended (2.7778)\n", - "Epoch 912: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 912: accuracy appended (77.78%)\n", - "Epoch 912: model set back to train mode\n", - "Epoch 912: model parameters saved\n", - "Epoch 913 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 913: avg_loss appended (2.7778)\n", - "Epoch 913: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 913: accuracy appended (77.78%)\n", - "Epoch 913: model set back to train mode\n", - "Epoch 913: model parameters saved\n", - "Epoch 914 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 914: avg_loss appended (2.7778)\n", - "Epoch 914: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 914: accuracy appended (77.78%)\n", - "Epoch 914: model set back to train mode\n", - "Epoch 914: model parameters saved\n", - "Epoch 915 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 915: avg_loss appended (2.7778)\n", - "Epoch 915: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 915: accuracy appended (77.78%)\n", - "Epoch 915: model set back to train mode\n", - "Epoch 915: model parameters saved\n", - "Epoch 916 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 916: avg_loss appended (2.7778)\n", - "Epoch 916: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 916: accuracy appended (77.78%)\n", - "Epoch 916: model set back to train mode\n", - "Epoch 916: model parameters saved\n", - "Epoch 917 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 917: avg_loss appended (2.7778)\n", - "Epoch 917: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 917: accuracy appended (77.78%)\n", - "Epoch 917: model set back to train mode\n", - "Epoch 917: model parameters saved\n", - "Epoch 918 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 918: avg_loss appended (2.7778)\n", - "Epoch 918: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 918: accuracy appended (77.78%)\n", - "Epoch 918: model set back to train mode\n", - "Epoch 918: model parameters saved\n", - "Epoch 919 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 919: avg_loss appended (2.7778)\n", - "Epoch 919: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 919: accuracy appended (77.78%)\n", - "Epoch 919: model set back to train mode\n", - "Epoch 919: model parameters saved\n", - "Epoch 920 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 920: avg_loss appended (2.7778)\n", - "Epoch 920: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 920: accuracy appended (77.78%)\n", - "Epoch 920: model set back to train mode\n", - "Epoch 920: model parameters saved\n", - "Epoch 921 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 921: avg_loss appended (2.7778)\n", - "Epoch 921: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 921: accuracy appended (77.78%)\n", - "Epoch 921: model set back to train mode\n", - "Epoch 921: model parameters saved\n", - "Epoch 922 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 922: avg_loss appended (2.7778)\n", - "Epoch 922: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 922: accuracy appended (77.78%)\n", - "Epoch 922: model set back to train mode\n", - "Epoch 922: model parameters saved\n", - "Epoch 923 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 923: avg_loss appended (2.7778)\n", - "Epoch 923: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 923: accuracy appended (77.78%)\n", - "Epoch 923: model set back to train mode\n", - "Epoch 923: model parameters saved\n", - "Epoch 924 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 924: avg_loss appended (2.7778)\n", - "Epoch 924: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 924: accuracy appended (77.78%)\n", - "Epoch 924: model set back to train mode\n", - "Epoch 924: model parameters saved\n", - "Epoch 925 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 925: avg_loss appended (2.7778)\n", - "Epoch 925: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 925: accuracy appended (77.78%)\n", - "Epoch 925: model set back to train mode\n", - "Epoch 925: model parameters saved\n", - "Epoch 926 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 926: avg_loss appended (2.7778)\n", - "Epoch 926: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 926: accuracy appended (77.78%)\n", - "Epoch 926: model set back to train mode\n", - "Epoch 926: model parameters saved\n", - "Epoch 927 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 927: avg_loss appended (2.7778)\n", - "Epoch 927: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 927: accuracy appended (77.78%)\n", - "Epoch 927: model set back to train mode\n", - "Epoch 927: model parameters saved\n", - "Epoch 928 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 928: avg_loss appended (2.7778)\n", - "Epoch 928: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 928: accuracy appended (77.78%)\n", - "Epoch 928: model set back to train mode\n", - "Epoch 928: model parameters saved\n", - "Epoch 929 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 929: avg_loss appended (2.7778)\n", - "Epoch 929: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 929: accuracy appended (77.78%)\n", - "Epoch 929: model set back to train mode\n", - "Epoch 929: model parameters saved\n", - "Epoch 930 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 930: avg_loss appended (2.7778)\n", - "Epoch 930: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 930: accuracy appended (77.78%)\n", - "Epoch 930: model set back to train mode\n", - "Epoch 930: model parameters saved\n", - "Epoch 931 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 931: avg_loss appended (2.7778)\n", - "Epoch 931: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 931: accuracy appended (77.78%)\n", - "Epoch 931: model set back to train mode\n", - "Epoch 931: model parameters saved\n", - "Epoch 932 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 932: avg_loss appended (2.7778)\n", - "Epoch 932: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 932: accuracy appended (77.78%)\n", - "Epoch 932: model set back to train mode\n", - "Epoch 932: model parameters saved\n", - "Epoch 933 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 933: avg_loss appended (2.7778)\n", - "Epoch 933: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 933: accuracy appended (77.78%)\n", - "Epoch 933: model set back to train mode\n", - "Epoch 933: model parameters saved\n", - "Epoch 934 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 934: avg_loss appended (2.7778)\n", - "Epoch 934: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 934: accuracy appended (77.78%)\n", - "Epoch 934: model set back to train mode\n", - "Epoch 934: model parameters saved\n", - "Epoch 935 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 935: avg_loss appended (2.7778)\n", - "Epoch 935: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 935: accuracy appended (77.78%)\n", - "Epoch 935: model set back to train mode\n", - "Epoch 935: model parameters saved\n", - "Epoch 936 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 936: avg_loss appended (2.7778)\n", - "Epoch 936: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 936: accuracy appended (77.78%)\n", - "Epoch 936: model set back to train mode\n", - "Epoch 936: model parameters saved\n", - "Epoch 937 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 937: avg_loss appended (2.7778)\n", - "Epoch 937: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 937: accuracy appended (77.78%)\n", - "Epoch 937: model set back to train mode\n", - "Epoch 937: model parameters saved\n", - "Epoch 938 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 938: avg_loss appended (2.7778)\n", - "Epoch 938: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 938: accuracy appended (77.78%)\n", - "Epoch 938: model set back to train mode\n", - "Epoch 938: model parameters saved\n", - "Epoch 939 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 939: avg_loss appended (2.7778)\n", - "Epoch 939: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 939: accuracy appended (77.78%)\n", - "Epoch 939: model set back to train mode\n", - "Epoch 939: model parameters saved\n", - "Epoch 940 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 940: avg_loss appended (2.7778)\n", - "Epoch 940: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 940: accuracy appended (77.78%)\n", - "Epoch 940: model set back to train mode\n", - "Epoch 940: model parameters saved\n", - "Epoch 941 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 941: avg_loss appended (2.7778)\n", - "Epoch 941: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 941: accuracy appended (77.78%)\n", - "Epoch 941: model set back to train mode\n", - "Epoch 941: model parameters saved\n", - "Epoch 942 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 942: avg_loss appended (2.7778)\n", - "Epoch 942: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 942: accuracy appended (77.78%)\n", - "Epoch 942: model set back to train mode\n", - "Epoch 942: model parameters saved\n", - "Epoch 943 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 943: avg_loss appended (2.7778)\n", - "Epoch 943: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 943: accuracy appended (77.78%)\n", - "Epoch 943: model set back to train mode\n", - "Epoch 943: model parameters saved\n", - "Epoch 944 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 944: avg_loss appended (2.7778)\n", - "Epoch 944: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 944: accuracy appended (77.78%)\n", - "Epoch 944: model set back to train mode\n", - "Epoch 944: model parameters saved\n", - "Epoch 945 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 945: avg_loss appended (2.7778)\n", - "Epoch 945: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 945: accuracy appended (77.78%)\n", - "Epoch 945: model set back to train mode\n", - "Epoch 945: model parameters saved\n", - "Epoch 946 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 946: avg_loss appended (2.7778)\n", - "Epoch 946: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 946: accuracy appended (77.78%)\n", - "Epoch 946: model set back to train mode\n", - "Epoch 946: model parameters saved\n", - "Epoch 947 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 947: avg_loss appended (2.7778)\n", - "Epoch 947: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 947: accuracy appended (77.78%)\n", - "Epoch 947: model set back to train mode\n", - "Epoch 947: model parameters saved\n", - "Epoch 948 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 948: avg_loss appended (2.7778)\n", - "Epoch 948: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 948: accuracy appended (77.78%)\n", - "Epoch 948: model set back to train mode\n", - "Epoch 948: model parameters saved\n", - "Epoch 949 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 949: avg_loss appended (2.7778)\n", - "Epoch 949: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 949: accuracy appended (77.78%)\n", - "Epoch 949: model set back to train mode\n", - "Epoch 949: model parameters saved\n", - "Epoch 950 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 950: avg_loss appended (2.7778)\n", - "Epoch 950: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 950: accuracy appended (77.78%)\n", - "Epoch 950: model set back to train mode\n", - "Epoch 950: model parameters saved\n", - "Epoch 951 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 951: avg_loss appended (2.7778)\n", - "Epoch 951: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 951: accuracy appended (77.78%)\n", - "Epoch 951: model set back to train mode\n", - "Epoch 951: model parameters saved\n", - "Epoch 952 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 952: avg_loss appended (2.7778)\n", - "Epoch 952: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 952: accuracy appended (77.78%)\n", - "Epoch 952: model set back to train mode\n", - "Epoch 952: model parameters saved\n", - "Epoch 953 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 953: avg_loss appended (2.7778)\n", - "Epoch 953: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 953: accuracy appended (77.78%)\n", - "Epoch 953: model set back to train mode\n", - "Epoch 953: model parameters saved\n", - "Epoch 954 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 954: avg_loss appended (2.7778)\n", - "Epoch 954: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 954: accuracy appended (77.78%)\n", - "Epoch 954: model set back to train mode\n", - "Epoch 954: model parameters saved\n", - "Epoch 955 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 955: avg_loss appended (2.7778)\n", - "Epoch 955: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 955: accuracy appended (77.78%)\n", - "Epoch 955: model set back to train mode\n", - "Epoch 955: model parameters saved\n", - "Epoch 956 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 956: avg_loss appended (2.7778)\n", - "Epoch 956: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 956: accuracy appended (77.78%)\n", - "Epoch 956: model set back to train mode\n", - "Epoch 956: model parameters saved\n", - "Epoch 957 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 957: avg_loss appended (2.7778)\n", - "Epoch 957: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 957: accuracy appended (77.78%)\n", - "Epoch 957: model set back to train mode\n", - "Epoch 957: model parameters saved\n", - "Epoch 958 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 958: avg_loss appended (2.7778)\n", - "Epoch 958: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 958: accuracy appended (77.78%)\n", - "Epoch 958: model set back to train mode\n", - "Epoch 958: model parameters saved\n", - "Epoch 959 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 959: avg_loss appended (2.7778)\n", - "Epoch 959: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 959: accuracy appended (77.78%)\n", - "Epoch 959: model set back to train mode\n", - "Epoch 959: model parameters saved\n", - "Epoch 960 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 960: avg_loss appended (2.7778)\n", - "Epoch 960: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 960: accuracy appended (77.78%)\n", - "Epoch 960: model set back to train mode\n", - "Epoch 960: model parameters saved\n", - "Epoch 961 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 961: avg_loss appended (2.7778)\n", - "Epoch 961: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 961: accuracy appended (77.78%)\n", - "Epoch 961: model set back to train mode\n", - "Epoch 961: model parameters saved\n", - "Epoch 962 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 962: avg_loss appended (2.7778)\n", - "Epoch 962: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 962: accuracy appended (77.78%)\n", - "Epoch 962: model set back to train mode\n", - "Epoch 962: model parameters saved\n", - "Epoch 963 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 963: avg_loss appended (2.7778)\n", - "Epoch 963: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 963: accuracy appended (77.78%)\n", - "Epoch 963: model set back to train mode\n", - "Epoch 963: model parameters saved\n", - "Epoch 964 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 964: avg_loss appended (2.7778)\n", - "Epoch 964: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 964: accuracy appended (77.78%)\n", - "Epoch 964: model set back to train mode\n", - "Epoch 964: model parameters saved\n", - "Epoch 965 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 965: avg_loss appended (2.7778)\n", - "Epoch 965: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 965: accuracy appended (77.78%)\n", - "Epoch 965: model set back to train mode\n", - "Epoch 965: model parameters saved\n", - "Epoch 966 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 966: avg_loss appended (2.7778)\n", - "Epoch 966: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 966: accuracy appended (77.78%)\n", - "Epoch 966: model set back to train mode\n", - "Epoch 966: model parameters saved\n", - "Epoch 967 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 967: avg_loss appended (2.7778)\n", - "Epoch 967: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 967: accuracy appended (77.78%)\n", - "Epoch 967: model set back to train mode\n", - "Epoch 967: model parameters saved\n", - "Epoch 968 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 968: avg_loss appended (2.7778)\n", - "Epoch 968: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 968: accuracy appended (77.78%)\n", - "Epoch 968: model set back to train mode\n", - "Epoch 968: model parameters saved\n", - "Epoch 969 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 969: avg_loss appended (2.7778)\n", - "Epoch 969: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 969: accuracy appended (77.78%)\n", - "Epoch 969: model set back to train mode\n", - "Epoch 969: model parameters saved\n", - "Epoch 970 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 970: avg_loss appended (2.7778)\n", - "Epoch 970: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 970: accuracy appended (77.78%)\n", - "Epoch 970: model set back to train mode\n", - "Epoch 970: model parameters saved\n", - "Epoch 971 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 971: avg_loss appended (2.7778)\n", - "Epoch 971: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 971: accuracy appended (77.78%)\n", - "Epoch 971: model set back to train mode\n", - "Epoch 971: model parameters saved\n", - "Epoch 972 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 972: avg_loss appended (2.7778)\n", - "Epoch 972: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 972: accuracy appended (77.78%)\n", - "Epoch 972: model set back to train mode\n", - "Epoch 972: model parameters saved\n", - "Epoch 973 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 973: avg_loss appended (2.7778)\n", - "Epoch 973: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 973: accuracy appended (77.78%)\n", - "Epoch 973: model set back to train mode\n", - "Epoch 973: model parameters saved\n", - "Epoch 974 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 974: avg_loss appended (2.7778)\n", - "Epoch 974: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 974: accuracy appended (77.78%)\n", - "Epoch 974: model set back to train mode\n", - "Epoch 974: model parameters saved\n", - "Epoch 975 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 975: avg_loss appended (2.7778)\n", - "Epoch 975: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 975: accuracy appended (77.78%)\n", - "Epoch 975: model set back to train mode\n", - "Epoch 975: model parameters saved\n", - "Epoch 976 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 976: avg_loss appended (2.7778)\n", - "Epoch 976: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 976: accuracy appended (77.78%)\n", - "Epoch 976: model set back to train mode\n", - "Epoch 976: model parameters saved\n", - "Epoch 977 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 977: avg_loss appended (2.7778)\n", - "Epoch 977: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 977: accuracy appended (77.78%)\n", - "Epoch 977: model set back to train mode\n", - "Epoch 977: model parameters saved\n", - "Epoch 978 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 978: avg_loss appended (2.7778)\n", - "Epoch 978: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 978: accuracy appended (77.78%)\n", - "Epoch 978: model set back to train mode\n", - "Epoch 978: model parameters saved\n", - "Epoch 979 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 979: avg_loss appended (2.7778)\n", - "Epoch 979: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 979: accuracy appended (77.78%)\n", - "Epoch 979: model set back to train mode\n", - "Epoch 979: model parameters saved\n", - "Epoch 980 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 980: avg_loss appended (2.7778)\n", - "Epoch 980: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 980: accuracy appended (77.78%)\n", - "Epoch 980: model set back to train mode\n", - "Epoch 980: model parameters saved\n", - "Epoch 981 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 981: avg_loss appended (2.7778)\n", - "Epoch 981: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 981: accuracy appended (77.78%)\n", - "Epoch 981: model set back to train mode\n", - "Epoch 981: model parameters saved\n", - "Epoch 982 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 982: avg_loss appended (2.7778)\n", - "Epoch 982: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 982: accuracy appended (77.78%)\n", - "Epoch 982: model set back to train mode\n", - "Epoch 982: model parameters saved\n", - "Epoch 983 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 983: avg_loss appended (2.7778)\n", - "Epoch 983: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 983: accuracy appended (77.78%)\n", - "Epoch 983: model set back to train mode\n", - "Epoch 983: model parameters saved\n", - "Epoch 984 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 984: avg_loss appended (2.7778)\n", - "Epoch 984: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 984: accuracy appended (77.78%)\n", - "Epoch 984: model set back to train mode\n", - "Epoch 984: model parameters saved\n", - "Epoch 985 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 985: avg_loss appended (2.7778)\n", - "Epoch 985: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 985: accuracy appended (77.78%)\n", - "Epoch 985: model set back to train mode\n", - "Epoch 985: model parameters saved\n", - "Epoch 986 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 986: avg_loss appended (2.7778)\n", - "Epoch 986: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 986: accuracy appended (77.78%)\n", - "Epoch 986: model set back to train mode\n", - "Epoch 986: model parameters saved\n", - "Epoch 987 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 987: avg_loss appended (2.7778)\n", - "Epoch 987: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 987: accuracy appended (77.78%)\n", - "Epoch 987: model set back to train mode\n", - "Epoch 987: model parameters saved\n", - "Epoch 988 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 988: avg_loss appended (2.7778)\n", - "Epoch 988: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 988: accuracy appended (77.78%)\n", - "Epoch 988: model set back to train mode\n", - "Epoch 988: model parameters saved\n", - "Epoch 989 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 989: avg_loss appended (2.7778)\n", - "Epoch 989: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 989: accuracy appended (77.78%)\n", - "Epoch 989: model set back to train mode\n", - "Epoch 989: model parameters saved\n", - "Epoch 990 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 990: avg_loss appended (2.7778)\n", - "Epoch 990: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 990: accuracy appended (77.78%)\n", - "Epoch 990: model set back to train mode\n", - "Epoch 990: model parameters saved\n", - "Epoch 991 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 991: avg_loss appended (2.7778)\n", - "Epoch 991: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 991: accuracy appended (77.78%)\n", - "Epoch 991: model set back to train mode\n", - "Epoch 991: model parameters saved\n", - "Epoch 992 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 992: avg_loss appended (2.7778)\n", - "Epoch 992: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 992: accuracy appended (77.78%)\n", - "Epoch 992: model set back to train mode\n", - "Epoch 992: model parameters saved\n", - "Epoch 993 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 993: avg_loss appended (2.7778)\n", - "Epoch 993: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 993: accuracy appended (77.78%)\n", - "Epoch 993: model set back to train mode\n", - "Epoch 993: model parameters saved\n", - "Epoch 994 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 994: avg_loss appended (2.7778)\n", - "Epoch 994: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 994: accuracy appended (77.78%)\n", - "Epoch 994: model set back to train mode\n", - "Epoch 994: model parameters saved\n", - "Epoch 995 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 995: avg_loss appended (2.7778)\n", - "Epoch 995: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 995: accuracy appended (77.78%)\n", - "Epoch 995: model set back to train mode\n", - "Epoch 995: model parameters saved\n", - "Epoch 996 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 996: avg_loss appended (2.7778)\n", - "Epoch 996: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 996: accuracy appended (77.78%)\n", - "Epoch 996: model set back to train mode\n", - "Epoch 996: model parameters saved\n", - "Epoch 997 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 997: avg_loss appended (2.7778)\n", - "Epoch 997: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 997: accuracy appended (77.78%)\n", - "Epoch 997: model set back to train mode\n", - "Epoch 997: model parameters saved\n", - "Epoch 998 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 998: avg_loss appended (2.7778)\n", - "Epoch 998: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 998: accuracy appended (77.78%)\n", - "Epoch 998: model set back to train mode\n", - "Epoch 998: model parameters saved\n", - "Epoch 999 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 999: avg_loss appended (2.7778)\n", - "Epoch 999: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 999: accuracy appended (77.78%)\n", - "Epoch 999: model set back to train mode\n", - "Epoch 999: model parameters saved\n", - "Epoch 1000 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1000: avg_loss appended (2.7778)\n", - "Epoch 1000: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1000: accuracy appended (77.78%)\n", - "Epoch 1000: model set back to train mode\n", - "Epoch 1000: model parameters saved\n", - "Epoch 1000/10000, Loss: 2.7778, Accuracy: 77.78%\n", - "Epoch 1000: checkpoint saved\n", - "Epoch 1001 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1001: avg_loss appended (2.7778)\n", - "Epoch 1001: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1001: accuracy appended (77.78%)\n", - "Epoch 1001: model set back to train mode\n", - "Epoch 1001: model parameters saved\n", - "Epoch 1002 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1002: avg_loss appended (2.7778)\n", - "Epoch 1002: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1002: accuracy appended (77.78%)\n", - "Epoch 1002: model set back to train mode\n", - "Epoch 1002: model parameters saved\n", - "Epoch 1003 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1003: avg_loss appended (2.7778)\n", - "Epoch 1003: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1003: accuracy appended (77.78%)\n", - "Epoch 1003: model set back to train mode\n", - "Epoch 1003: model parameters saved\n", - "Epoch 1004 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1004: avg_loss appended (2.7778)\n", - "Epoch 1004: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1004: accuracy appended (77.78%)\n", - "Epoch 1004: model set back to train mode\n", - "Epoch 1004: model parameters saved\n", - "Epoch 1005 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1005: avg_loss appended (2.7778)\n", - "Epoch 1005: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1005: accuracy appended (77.78%)\n", - "Epoch 1005: model set back to train mode\n", - "Epoch 1005: model parameters saved\n", - "Epoch 1006 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1006: avg_loss appended (2.7778)\n", - "Epoch 1006: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1006: accuracy appended (77.78%)\n", - "Epoch 1006: model set back to train mode\n", - "Epoch 1006: model parameters saved\n", - "Epoch 1007 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1007: avg_loss appended (2.7778)\n", - "Epoch 1007: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1007: accuracy appended (77.78%)\n", - "Epoch 1007: model set back to train mode\n", - "Epoch 1007: model parameters saved\n", - "Epoch 1008 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1008: avg_loss appended (2.7778)\n", - "Epoch 1008: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1008: accuracy appended (77.78%)\n", - "Epoch 1008: model set back to train mode\n", - "Epoch 1008: model parameters saved\n", - "Epoch 1009 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1009: avg_loss appended (2.7778)\n", - "Epoch 1009: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1009: accuracy appended (77.78%)\n", - "Epoch 1009: model set back to train mode\n", - "Epoch 1009: model parameters saved\n", - "Epoch 1010 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1010: avg_loss appended (2.7778)\n", - "Epoch 1010: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1010: accuracy appended (77.78%)\n", - "Epoch 1010: model set back to train mode\n", - "Epoch 1010: model parameters saved\n", - "Epoch 1011 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1011: avg_loss appended (2.7778)\n", - "Epoch 1011: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1011: accuracy appended (77.78%)\n", - "Epoch 1011: model set back to train mode\n", - "Epoch 1011: model parameters saved\n", - "Epoch 1012 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1012: avg_loss appended (2.7778)\n", - "Epoch 1012: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1012: accuracy appended (77.78%)\n", - "Epoch 1012: model set back to train mode\n", - "Epoch 1012: model parameters saved\n", - "Epoch 1013 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1013: avg_loss appended (2.7778)\n", - "Epoch 1013: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1013: accuracy appended (77.78%)\n", - "Epoch 1013: model set back to train mode\n", - "Epoch 1013: model parameters saved\n", - "Epoch 1014 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1014: avg_loss appended (2.7778)\n", - "Epoch 1014: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1014: accuracy appended (77.78%)\n", - "Epoch 1014: model set back to train mode\n", - "Epoch 1014: model parameters saved\n", - "Epoch 1015 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1015: avg_loss appended (2.7778)\n", - "Epoch 1015: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1015: accuracy appended (77.78%)\n", - "Epoch 1015: model set back to train mode\n", - "Epoch 1015: model parameters saved\n", - "Epoch 1016 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1016: avg_loss appended (2.7778)\n", - "Epoch 1016: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1016: accuracy appended (77.78%)\n", - "Epoch 1016: model set back to train mode\n", - "Epoch 1016: model parameters saved\n", - "Epoch 1017 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1017: avg_loss appended (2.7778)\n", - "Epoch 1017: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1017: accuracy appended (77.78%)\n", - "Epoch 1017: model set back to train mode\n", - "Epoch 1017: model parameters saved\n", - "Epoch 1018 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1018: avg_loss appended (2.7778)\n", - "Epoch 1018: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1018: accuracy appended (77.78%)\n", - "Epoch 1018: model set back to train mode\n", - "Epoch 1018: model parameters saved\n", - "Epoch 1019 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1019: avg_loss appended (2.7778)\n", - "Epoch 1019: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1019: accuracy appended (77.78%)\n", - "Epoch 1019: model set back to train mode\n", - "Epoch 1019: model parameters saved\n", - "Epoch 1020 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1020: avg_loss appended (2.7778)\n", - "Epoch 1020: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1020: accuracy appended (77.78%)\n", - "Epoch 1020: model set back to train mode\n", - "Epoch 1020: model parameters saved\n", - "Epoch 1021 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1021: avg_loss appended (2.7778)\n", - "Epoch 1021: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1021: accuracy appended (77.78%)\n", - "Epoch 1021: model set back to train mode\n", - "Epoch 1021: model parameters saved\n", - "Epoch 1022 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1022: avg_loss appended (2.7778)\n", - "Epoch 1022: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1022: accuracy appended (77.78%)\n", - "Epoch 1022: model set back to train mode\n", - "Epoch 1022: model parameters saved\n", - "Epoch 1023 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1023: avg_loss appended (2.7778)\n", - "Epoch 1023: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1023: accuracy appended (77.78%)\n", - "Epoch 1023: model set back to train mode\n", - "Epoch 1023: model parameters saved\n", - "Epoch 1024 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1024: avg_loss appended (2.7778)\n", - "Epoch 1024: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1024: accuracy appended (77.78%)\n", - "Epoch 1024: model set back to train mode\n", - "Epoch 1024: model parameters saved\n", - "Epoch 1025 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1025: avg_loss appended (2.7778)\n", - "Epoch 1025: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1025: accuracy appended (77.78%)\n", - "Epoch 1025: model set back to train mode\n", - "Epoch 1025: model parameters saved\n", - "Epoch 1026 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1026: avg_loss appended (2.7778)\n", - "Epoch 1026: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1026: accuracy appended (77.78%)\n", - "Epoch 1026: model set back to train mode\n", - "Epoch 1026: model parameters saved\n", - "Epoch 1027 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1027: avg_loss appended (2.7778)\n", - "Epoch 1027: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1027: accuracy appended (77.78%)\n", - "Epoch 1027: model set back to train mode\n", - "Epoch 1027: model parameters saved\n", - "Epoch 1028 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1028: avg_loss appended (2.7778)\n", - "Epoch 1028: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1028: accuracy appended (77.78%)\n", - "Epoch 1028: model set back to train mode\n", - "Epoch 1028: model parameters saved\n", - "Epoch 1029 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1029: avg_loss appended (2.7778)\n", - "Epoch 1029: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1029: accuracy appended (77.78%)\n", - "Epoch 1029: model set back to train mode\n", - "Epoch 1029: model parameters saved\n", - "Epoch 1030 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1030: avg_loss appended (2.7778)\n", - "Epoch 1030: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1030: accuracy appended (77.78%)\n", - "Epoch 1030: model set back to train mode\n", - "Epoch 1030: model parameters saved\n", - "Epoch 1031 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1031: avg_loss appended (2.7778)\n", - "Epoch 1031: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1031: accuracy appended (77.78%)\n", - "Epoch 1031: model set back to train mode\n", - "Epoch 1031: model parameters saved\n", - "Epoch 1032 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1032: avg_loss appended (2.7778)\n", - "Epoch 1032: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1032: accuracy appended (77.78%)\n", - "Epoch 1032: model set back to train mode\n", - "Epoch 1032: model parameters saved\n", - "Epoch 1033 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1033: avg_loss appended (2.7778)\n", - "Epoch 1033: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1033: accuracy appended (77.78%)\n", - "Epoch 1033: model set back to train mode\n", - "Epoch 1033: model parameters saved\n", - "Epoch 1034 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1034: avg_loss appended (2.7778)\n", - "Epoch 1034: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1034: accuracy appended (77.78%)\n", - "Epoch 1034: model set back to train mode\n", - "Epoch 1034: model parameters saved\n", - "Epoch 1035 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1035: avg_loss appended (2.7778)\n", - "Epoch 1035: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1035: accuracy appended (77.78%)\n", - "Epoch 1035: model set back to train mode\n", - "Epoch 1035: model parameters saved\n", - "Epoch 1036 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1036: avg_loss appended (2.7778)\n", - "Epoch 1036: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1036: accuracy appended (77.78%)\n", - "Epoch 1036: model set back to train mode\n", - "Epoch 1036: model parameters saved\n", - "Epoch 1037 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1037: avg_loss appended (2.7778)\n", - "Epoch 1037: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1037: accuracy appended (77.78%)\n", - "Epoch 1037: model set back to train mode\n", - "Epoch 1037: model parameters saved\n", - "Epoch 1038 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1038: avg_loss appended (2.7778)\n", - "Epoch 1038: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1038: accuracy appended (77.78%)\n", - "Epoch 1038: model set back to train mode\n", - "Epoch 1038: model parameters saved\n", - "Epoch 1039 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1039: avg_loss appended (2.7778)\n", - "Epoch 1039: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1039: accuracy appended (77.78%)\n", - "Epoch 1039: model set back to train mode\n", - "Epoch 1039: model parameters saved\n", - "Epoch 1040 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1040: avg_loss appended (2.7778)\n", - "Epoch 1040: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1040: accuracy appended (77.78%)\n", - "Epoch 1040: model set back to train mode\n", - "Epoch 1040: model parameters saved\n", - "Epoch 1041 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1041: avg_loss appended (2.7778)\n", - "Epoch 1041: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1041: accuracy appended (77.78%)\n", - "Epoch 1041: model set back to train mode\n", - "Epoch 1041: model parameters saved\n", - "Epoch 1042 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1042: avg_loss appended (2.7778)\n", - "Epoch 1042: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1042: accuracy appended (77.78%)\n", - "Epoch 1042: model set back to train mode\n", - "Epoch 1042: model parameters saved\n", - "Epoch 1043 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1043: avg_loss appended (2.7778)\n", - "Epoch 1043: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1043: accuracy appended (77.78%)\n", - "Epoch 1043: model set back to train mode\n", - "Epoch 1043: model parameters saved\n", - "Epoch 1044 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1044: avg_loss appended (2.7778)\n", - "Epoch 1044: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1044: accuracy appended (77.78%)\n", - "Epoch 1044: model set back to train mode\n", - "Epoch 1044: model parameters saved\n", - "Epoch 1045 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1045: avg_loss appended (2.7778)\n", - "Epoch 1045: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1045: accuracy appended (77.78%)\n", - "Epoch 1045: model set back to train mode\n", - "Epoch 1045: model parameters saved\n", - "Epoch 1046 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1046: avg_loss appended (2.7778)\n", - "Epoch 1046: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1046: accuracy appended (77.78%)\n", - "Epoch 1046: model set back to train mode\n", - "Epoch 1046: model parameters saved\n", - "Epoch 1047 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1047: avg_loss appended (2.7778)\n", - "Epoch 1047: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1047: accuracy appended (77.78%)\n", - "Epoch 1047: model set back to train mode\n", - "Epoch 1047: model parameters saved\n", - "Epoch 1048 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1048: avg_loss appended (2.7778)\n", - "Epoch 1048: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1048: accuracy appended (77.78%)\n", - "Epoch 1048: model set back to train mode\n", - "Epoch 1048: model parameters saved\n", - "Epoch 1049 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1049: avg_loss appended (2.7778)\n", - "Epoch 1049: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1049: accuracy appended (77.78%)\n", - "Epoch 1049: model set back to train mode\n", - "Epoch 1049: model parameters saved\n", - "Epoch 1050 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1050: avg_loss appended (2.7778)\n", - "Epoch 1050: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1050: accuracy appended (77.78%)\n", - "Epoch 1050: model set back to train mode\n", - "Epoch 1050: model parameters saved\n", - "Epoch 1051 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1051: avg_loss appended (2.7778)\n", - "Epoch 1051: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1051: accuracy appended (77.78%)\n", - "Epoch 1051: model set back to train mode\n", - "Epoch 1051: model parameters saved\n", - "Epoch 1052 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1052: avg_loss appended (2.7778)\n", - "Epoch 1052: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1052: accuracy appended (77.78%)\n", - "Epoch 1052: model set back to train mode\n", - "Epoch 1052: model parameters saved\n", - "Epoch 1053 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1053: avg_loss appended (2.7778)\n", - "Epoch 1053: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1053: accuracy appended (77.78%)\n", - "Epoch 1053: model set back to train mode\n", - "Epoch 1053: model parameters saved\n", - "Epoch 1054 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1054: avg_loss appended (2.7778)\n", - "Epoch 1054: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1054: accuracy appended (77.78%)\n", - "Epoch 1054: model set back to train mode\n", - "Epoch 1054: model parameters saved\n", - "Epoch 1055 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1055: avg_loss appended (2.7778)\n", - "Epoch 1055: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1055: accuracy appended (77.78%)\n", - "Epoch 1055: model set back to train mode\n", - "Epoch 1055: model parameters saved\n", - "Epoch 1056 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1056: avg_loss appended (2.7778)\n", - "Epoch 1056: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1056: accuracy appended (77.78%)\n", - "Epoch 1056: model set back to train mode\n", - "Epoch 1056: model parameters saved\n", - "Epoch 1057 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1057: avg_loss appended (2.7778)\n", - "Epoch 1057: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1057: accuracy appended (77.78%)\n", - "Epoch 1057: model set back to train mode\n", - "Epoch 1057: model parameters saved\n", - "Epoch 1058 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1058: avg_loss appended (2.7778)\n", - "Epoch 1058: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1058: accuracy appended (77.78%)\n", - "Epoch 1058: model set back to train mode\n", - "Epoch 1058: model parameters saved\n", - "Epoch 1059 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1059: avg_loss appended (2.7778)\n", - "Epoch 1059: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1059: accuracy appended (77.78%)\n", - "Epoch 1059: model set back to train mode\n", - "Epoch 1059: model parameters saved\n", - "Epoch 1060 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1060: avg_loss appended (2.7778)\n", - "Epoch 1060: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1060: accuracy appended (77.78%)\n", - "Epoch 1060: model set back to train mode\n", - "Epoch 1060: model parameters saved\n", - "Epoch 1061 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1061: avg_loss appended (2.7778)\n", - "Epoch 1061: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1061: accuracy appended (77.78%)\n", - "Epoch 1061: model set back to train mode\n", - "Epoch 1061: model parameters saved\n", - "Epoch 1062 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1062: avg_loss appended (2.7778)\n", - "Epoch 1062: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1062: accuracy appended (77.78%)\n", - "Epoch 1062: model set back to train mode\n", - "Epoch 1062: model parameters saved\n", - "Epoch 1063 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1063: avg_loss appended (2.7778)\n", - "Epoch 1063: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1063: accuracy appended (77.78%)\n", - "Epoch 1063: model set back to train mode\n", - "Epoch 1063: model parameters saved\n", - "Epoch 1064 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1064: avg_loss appended (2.7778)\n", - "Epoch 1064: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1064: accuracy appended (77.78%)\n", - "Epoch 1064: model set back to train mode\n", - "Epoch 1064: model parameters saved\n", - "Epoch 1065 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1065: avg_loss appended (2.7778)\n", - "Epoch 1065: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1065: accuracy appended (77.78%)\n", - "Epoch 1065: model set back to train mode\n", - "Epoch 1065: model parameters saved\n", - "Epoch 1066 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1066: avg_loss appended (2.7778)\n", - "Epoch 1066: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1066: accuracy appended (77.78%)\n", - "Epoch 1066: model set back to train mode\n", - "Epoch 1066: model parameters saved\n", - "Epoch 1067 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1067: avg_loss appended (2.7778)\n", - "Epoch 1067: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1067: accuracy appended (77.78%)\n", - "Epoch 1067: model set back to train mode\n", - "Epoch 1067: model parameters saved\n", - "Epoch 1068 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1068: avg_loss appended (2.7778)\n", - "Epoch 1068: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1068: accuracy appended (77.78%)\n", - "Epoch 1068: model set back to train mode\n", - "Epoch 1068: model parameters saved\n", - "Epoch 1069 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1069: avg_loss appended (2.7778)\n", - "Epoch 1069: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1069: accuracy appended (77.78%)\n", - "Epoch 1069: model set back to train mode\n", - "Epoch 1069: model parameters saved\n", - "Epoch 1070 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1070: avg_loss appended (2.7778)\n", - "Epoch 1070: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1070: accuracy appended (77.78%)\n", - "Epoch 1070: model set back to train mode\n", - "Epoch 1070: model parameters saved\n", - "Epoch 1071 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1071: avg_loss appended (2.7778)\n", - "Epoch 1071: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1071: accuracy appended (77.78%)\n", - "Epoch 1071: model set back to train mode\n", - "Epoch 1071: model parameters saved\n", - "Epoch 1072 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1072: avg_loss appended (2.7778)\n", - "Epoch 1072: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1072: accuracy appended (77.78%)\n", - "Epoch 1072: model set back to train mode\n", - "Epoch 1072: model parameters saved\n", - "Epoch 1073 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1073: avg_loss appended (2.7778)\n", - "Epoch 1073: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1073: accuracy appended (77.78%)\n", - "Epoch 1073: model set back to train mode\n", - "Epoch 1073: model parameters saved\n", - "Epoch 1074 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1074: avg_loss appended (2.7778)\n", - "Epoch 1074: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1074: accuracy appended (77.78%)\n", - "Epoch 1074: model set back to train mode\n", - "Epoch 1074: model parameters saved\n", - "Epoch 1075 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1075: avg_loss appended (2.7778)\n", - "Epoch 1075: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1075: accuracy appended (77.78%)\n", - "Epoch 1075: model set back to train mode\n", - "Epoch 1075: model parameters saved\n", - "Epoch 1076 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1076: avg_loss appended (2.7778)\n", - "Epoch 1076: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1076: accuracy appended (77.78%)\n", - "Epoch 1076: model set back to train mode\n", - "Epoch 1076: model parameters saved\n", - "Epoch 1077 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1077: avg_loss appended (2.7778)\n", - "Epoch 1077: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1077: accuracy appended (77.78%)\n", - "Epoch 1077: model set back to train mode\n", - "Epoch 1077: model parameters saved\n", - "Epoch 1078 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1078: avg_loss appended (2.7778)\n", - "Epoch 1078: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1078: accuracy appended (77.78%)\n", - "Epoch 1078: model set back to train mode\n", - "Epoch 1078: model parameters saved\n", - "Epoch 1079 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1079: avg_loss appended (2.7778)\n", - "Epoch 1079: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1079: accuracy appended (77.78%)\n", - "Epoch 1079: model set back to train mode\n", - "Epoch 1079: model parameters saved\n", - "Epoch 1080 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1080: avg_loss appended (2.7778)\n", - "Epoch 1080: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1080: accuracy appended (77.78%)\n", - "Epoch 1080: model set back to train mode\n", - "Epoch 1080: model parameters saved\n", - "Epoch 1081 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1081: avg_loss appended (2.7778)\n", - "Epoch 1081: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1081: accuracy appended (77.78%)\n", - "Epoch 1081: model set back to train mode\n", - "Epoch 1081: model parameters saved\n", - "Epoch 1082 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1082: avg_loss appended (2.7778)\n", - "Epoch 1082: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1082: accuracy appended (77.78%)\n", - "Epoch 1082: model set back to train mode\n", - "Epoch 1082: model parameters saved\n", - "Epoch 1083 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1083: avg_loss appended (2.7778)\n", - "Epoch 1083: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1083: accuracy appended (77.78%)\n", - "Epoch 1083: model set back to train mode\n", - "Epoch 1083: model parameters saved\n", - "Epoch 1084 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1084: avg_loss appended (2.7778)\n", - "Epoch 1084: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1084: accuracy appended (77.78%)\n", - "Epoch 1084: model set back to train mode\n", - "Epoch 1084: model parameters saved\n", - "Epoch 1085 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1085: avg_loss appended (2.7778)\n", - "Epoch 1085: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1085: accuracy appended (77.78%)\n", - "Epoch 1085: model set back to train mode\n", - "Epoch 1085: model parameters saved\n", - "Epoch 1086 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1086: avg_loss appended (2.7778)\n", - "Epoch 1086: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1086: accuracy appended (77.78%)\n", - "Epoch 1086: model set back to train mode\n", - "Epoch 1086: model parameters saved\n", - "Epoch 1087 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1087: avg_loss appended (2.7778)\n", - "Epoch 1087: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1087: accuracy appended (77.78%)\n", - "Epoch 1087: model set back to train mode\n", - "Epoch 1087: model parameters saved\n", - "Epoch 1088 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1088: avg_loss appended (2.7778)\n", - "Epoch 1088: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1088: accuracy appended (77.78%)\n", - "Epoch 1088: model set back to train mode\n", - "Epoch 1088: model parameters saved\n", - "Epoch 1089 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1089: avg_loss appended (2.7778)\n", - "Epoch 1089: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1089: accuracy appended (77.78%)\n", - "Epoch 1089: model set back to train mode\n", - "Epoch 1089: model parameters saved\n", - "Epoch 1090 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1090: avg_loss appended (2.7778)\n", - "Epoch 1090: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1090: accuracy appended (77.78%)\n", - "Epoch 1090: model set back to train mode\n", - "Epoch 1090: model parameters saved\n", - "Epoch 1091 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1091: avg_loss appended (2.7778)\n", - "Epoch 1091: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1091: accuracy appended (77.78%)\n", - "Epoch 1091: model set back to train mode\n", - "Epoch 1091: model parameters saved\n", - "Epoch 1092 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1092: avg_loss appended (2.7778)\n", - "Epoch 1092: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1092: accuracy appended (77.78%)\n", - "Epoch 1092: model set back to train mode\n", - "Epoch 1092: model parameters saved\n", - "Epoch 1093 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1093: avg_loss appended (2.7778)\n", - "Epoch 1093: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1093: accuracy appended (77.78%)\n", - "Epoch 1093: model set back to train mode\n", - "Epoch 1093: model parameters saved\n", - "Epoch 1094 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1094: avg_loss appended (2.7778)\n", - "Epoch 1094: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1094: accuracy appended (77.78%)\n", - "Epoch 1094: model set back to train mode\n", - "Epoch 1094: model parameters saved\n", - "Epoch 1095 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1095: avg_loss appended (2.7778)\n", - "Epoch 1095: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1095: accuracy appended (77.78%)\n", - "Epoch 1095: model set back to train mode\n", - "Epoch 1095: model parameters saved\n", - "Epoch 1096 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1096: avg_loss appended (2.7778)\n", - "Epoch 1096: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1096: accuracy appended (77.78%)\n", - "Epoch 1096: model set back to train mode\n", - "Epoch 1096: model parameters saved\n", - "Epoch 1097 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1097: avg_loss appended (2.7778)\n", - "Epoch 1097: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1097: accuracy appended (77.78%)\n", - "Epoch 1097: model set back to train mode\n", - "Epoch 1097: model parameters saved\n", - "Epoch 1098 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1098: avg_loss appended (2.7778)\n", - "Epoch 1098: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1098: accuracy appended (77.78%)\n", - "Epoch 1098: model set back to train mode\n", - "Epoch 1098: model parameters saved\n", - "Epoch 1099 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1099: avg_loss appended (2.7778)\n", - "Epoch 1099: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1099: accuracy appended (77.78%)\n", - "Epoch 1099: model set back to train mode\n", - "Epoch 1099: model parameters saved\n", - "Epoch 1100 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1100: avg_loss appended (2.7778)\n", - "Epoch 1100: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1100: accuracy appended (77.78%)\n", - "Epoch 1100: model set back to train mode\n", - "Epoch 1100: model parameters saved\n", - "Epoch 1100/10000, Loss: 2.7778, Accuracy: 77.78%\n", - "Epoch 1101 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1101: avg_loss appended (2.7778)\n", - "Epoch 1101: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1101: accuracy appended (77.78%)\n", - "Epoch 1101: model set back to train mode\n", - "Epoch 1101: model parameters saved\n", - "Epoch 1102 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1102: avg_loss appended (2.7778)\n", - "Epoch 1102: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1102: accuracy appended (77.78%)\n", - "Epoch 1102: model set back to train mode\n", - "Epoch 1102: model parameters saved\n", - "Epoch 1103 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1103: avg_loss appended (2.7778)\n", - "Epoch 1103: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1103: accuracy appended (77.78%)\n", - "Epoch 1103: model set back to train mode\n", - "Epoch 1103: model parameters saved\n", - "Epoch 1104 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1104: avg_loss appended (2.7778)\n", - "Epoch 1104: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1104: accuracy appended (77.78%)\n", - "Epoch 1104: model set back to train mode\n", - "Epoch 1104: model parameters saved\n", - "Epoch 1105 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1105: avg_loss appended (2.7778)\n", - "Epoch 1105: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1105: accuracy appended (77.78%)\n", - "Epoch 1105: model set back to train mode\n", - "Epoch 1105: model parameters saved\n", - "Epoch 1106 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1106: avg_loss appended (2.7778)\n", - "Epoch 1106: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1106: accuracy appended (77.78%)\n", - "Epoch 1106: model set back to train mode\n", - "Epoch 1106: model parameters saved\n", - "Epoch 1107 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1107: avg_loss appended (2.7778)\n", - "Epoch 1107: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1107: accuracy appended (77.78%)\n", - "Epoch 1107: model set back to train mode\n", - "Epoch 1107: model parameters saved\n", - "Epoch 1108 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1108: avg_loss appended (2.7778)\n", - "Epoch 1108: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1108: accuracy appended (77.78%)\n", - "Epoch 1108: model set back to train mode\n", - "Epoch 1108: model parameters saved\n", - "Epoch 1109 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1109: avg_loss appended (2.7778)\n", - "Epoch 1109: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1109: accuracy appended (77.78%)\n", - "Epoch 1109: model set back to train mode\n", - "Epoch 1109: model parameters saved\n", - "Epoch 1110 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1110: avg_loss appended (2.7778)\n", - "Epoch 1110: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1110: accuracy appended (77.78%)\n", - "Epoch 1110: model set back to train mode\n", - "Epoch 1110: model parameters saved\n", - "Epoch 1111 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1111: avg_loss appended (2.7778)\n", - "Epoch 1111: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1111: accuracy appended (77.78%)\n", - "Epoch 1111: model set back to train mode\n", - "Epoch 1111: model parameters saved\n", - "Epoch 1112 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1112: avg_loss appended (2.7778)\n", - "Epoch 1112: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1112: accuracy appended (77.78%)\n", - "Epoch 1112: model set back to train mode\n", - "Epoch 1112: model parameters saved\n", - "Epoch 1113 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1113: avg_loss appended (2.7778)\n", - "Epoch 1113: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1113: accuracy appended (77.78%)\n", - "Epoch 1113: model set back to train mode\n", - "Epoch 1113: model parameters saved\n", - "Epoch 1114 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1114: avg_loss appended (2.7778)\n", - "Epoch 1114: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1114: accuracy appended (77.78%)\n", - "Epoch 1114: model set back to train mode\n", - "Epoch 1114: model parameters saved\n", - "Epoch 1115 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1115: avg_loss appended (2.7778)\n", - "Epoch 1115: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1115: accuracy appended (77.78%)\n", - "Epoch 1115: model set back to train mode\n", - "Epoch 1115: model parameters saved\n", - "Epoch 1116 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1116: avg_loss appended (2.7778)\n", - "Epoch 1116: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1116: accuracy appended (77.78%)\n", - "Epoch 1116: model set back to train mode\n", - "Epoch 1116: model parameters saved\n", - "Epoch 1117 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1117: avg_loss appended (2.7778)\n", - "Epoch 1117: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1117: accuracy appended (77.78%)\n", - "Epoch 1117: model set back to train mode\n", - "Epoch 1117: model parameters saved\n", - "Epoch 1118 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1118: avg_loss appended (2.7778)\n", - "Epoch 1118: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1118: accuracy appended (77.78%)\n", - "Epoch 1118: model set back to train mode\n", - "Epoch 1118: model parameters saved\n", - "Epoch 1119 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1119: avg_loss appended (2.7778)\n", - "Epoch 1119: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1119: accuracy appended (77.78%)\n", - "Epoch 1119: model set back to train mode\n", - "Epoch 1119: model parameters saved\n", - "Epoch 1120 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1120: avg_loss appended (2.7778)\n", - "Epoch 1120: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1120: accuracy appended (77.78%)\n", - "Epoch 1120: model set back to train mode\n", - "Epoch 1120: model parameters saved\n", - "Epoch 1121 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1121: avg_loss appended (2.7778)\n", - "Epoch 1121: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1121: accuracy appended (77.78%)\n", - "Epoch 1121: model set back to train mode\n", - "Epoch 1121: model parameters saved\n", - "Epoch 1122 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1122: avg_loss appended (2.7778)\n", - "Epoch 1122: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1122: accuracy appended (77.78%)\n", - "Epoch 1122: model set back to train mode\n", - "Epoch 1122: model parameters saved\n", - "Epoch 1123 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1123: avg_loss appended (2.7778)\n", - "Epoch 1123: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1123: accuracy appended (77.78%)\n", - "Epoch 1123: model set back to train mode\n", - "Epoch 1123: model parameters saved\n", - "Epoch 1124 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1124: avg_loss appended (2.7778)\n", - "Epoch 1124: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1124: accuracy appended (77.78%)\n", - "Epoch 1124: model set back to train mode\n", - "Epoch 1124: model parameters saved\n", - "Epoch 1125 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1125: avg_loss appended (2.7778)\n", - "Epoch 1125: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1125: accuracy appended (77.78%)\n", - "Epoch 1125: model set back to train mode\n", - "Epoch 1125: model parameters saved\n", - "Epoch 1126 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1126: avg_loss appended (2.7778)\n", - "Epoch 1126: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1126: accuracy appended (77.78%)\n", - "Epoch 1126: model set back to train mode\n", - "Epoch 1126: model parameters saved\n", - "Epoch 1127 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1127: avg_loss appended (2.7778)\n", - "Epoch 1127: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1127: accuracy appended (77.78%)\n", - "Epoch 1127: model set back to train mode\n", - "Epoch 1127: model parameters saved\n", - "Epoch 1128 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1128: avg_loss appended (2.7778)\n", - "Epoch 1128: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1128: accuracy appended (77.78%)\n", - "Epoch 1128: model set back to train mode\n", - "Epoch 1128: model parameters saved\n", - "Epoch 1129 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1129: avg_loss appended (2.7778)\n", - "Epoch 1129: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1129: accuracy appended (77.78%)\n", - "Epoch 1129: model set back to train mode\n", - "Epoch 1129: model parameters saved\n", - "Epoch 1130 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1130: avg_loss appended (2.7778)\n", - "Epoch 1130: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1130: accuracy appended (77.78%)\n", - "Epoch 1130: model set back to train mode\n", - "Epoch 1130: model parameters saved\n", - "Epoch 1131 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1131: avg_loss appended (2.7778)\n", - "Epoch 1131: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1131: accuracy appended (77.78%)\n", - "Epoch 1131: model set back to train mode\n", - "Epoch 1131: model parameters saved\n", - "Epoch 1132 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1132: avg_loss appended (2.7778)\n", - "Epoch 1132: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1132: accuracy appended (77.78%)\n", - "Epoch 1132: model set back to train mode\n", - "Epoch 1132: model parameters saved\n", - "Epoch 1133 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1133: avg_loss appended (2.7778)\n", - "Epoch 1133: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1133: accuracy appended (77.78%)\n", - "Epoch 1133: model set back to train mode\n", - "Epoch 1133: model parameters saved\n", - "Epoch 1134 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1134: avg_loss appended (2.7778)\n", - "Epoch 1134: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1134: accuracy appended (77.78%)\n", - "Epoch 1134: model set back to train mode\n", - "Epoch 1134: model parameters saved\n", - "Epoch 1135 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1135: avg_loss appended (2.7778)\n", - "Epoch 1135: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1135: accuracy appended (77.78%)\n", - "Epoch 1135: model set back to train mode\n", - "Epoch 1135: model parameters saved\n", - "Epoch 1136 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1136: avg_loss appended (2.7778)\n", - "Epoch 1136: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1136: accuracy appended (77.78%)\n", - "Epoch 1136: model set back to train mode\n", - "Epoch 1136: model parameters saved\n", - "Epoch 1137 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1137: avg_loss appended (2.7778)\n", - "Epoch 1137: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1137: accuracy appended (77.78%)\n", - "Epoch 1137: model set back to train mode\n", - "Epoch 1137: model parameters saved\n", - "Epoch 1138 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1138: avg_loss appended (2.7778)\n", - "Epoch 1138: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1138: accuracy appended (77.78%)\n", - "Epoch 1138: model set back to train mode\n", - "Epoch 1138: model parameters saved\n", - "Epoch 1139 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1139: avg_loss appended (2.7778)\n", - "Epoch 1139: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1139: accuracy appended (77.78%)\n", - "Epoch 1139: model set back to train mode\n", - "Epoch 1139: model parameters saved\n", - "Epoch 1140 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1140: avg_loss appended (2.7778)\n", - "Epoch 1140: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1140: accuracy appended (80.56%)\n", - "Epoch 1140: model set back to train mode\n", - "Epoch 1140: model parameters saved\n", - "Epoch 1141 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1141: avg_loss appended (2.7778)\n", - "Epoch 1141: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1141: accuracy appended (80.56%)\n", - "Epoch 1141: model set back to train mode\n", - "Epoch 1141: model parameters saved\n", - "Epoch 1142 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1142: avg_loss appended (2.7778)\n", - "Epoch 1142: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1142: accuracy appended (80.56%)\n", - "Epoch 1142: model set back to train mode\n", - "Epoch 1142: model parameters saved\n", - "Epoch 1143 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1143: avg_loss appended (2.7778)\n", - "Epoch 1143: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1143: accuracy appended (80.56%)\n", - "Epoch 1143: model set back to train mode\n", - "Epoch 1143: model parameters saved\n", - "Epoch 1144 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1144: avg_loss appended (2.7778)\n", - "Epoch 1144: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1144: accuracy appended (80.56%)\n", - "Epoch 1144: model set back to train mode\n", - "Epoch 1144: model parameters saved\n", - "Epoch 1145 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1145: avg_loss appended (2.7778)\n", - "Epoch 1145: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1145: accuracy appended (80.56%)\n", - "Epoch 1145: model set back to train mode\n", - "Epoch 1145: model parameters saved\n", - "Epoch 1146 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1146: avg_loss appended (2.7778)\n", - "Epoch 1146: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1146: accuracy appended (80.56%)\n", - "Epoch 1146: model set back to train mode\n", - "Epoch 1146: model parameters saved\n", - "Epoch 1147 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1147: avg_loss appended (2.7778)\n", - "Epoch 1147: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1147: accuracy appended (80.56%)\n", - "Epoch 1147: model set back to train mode\n", - "Epoch 1147: model parameters saved\n", - "Epoch 1148 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1148: avg_loss appended (2.7778)\n", - "Epoch 1148: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1148: accuracy appended (80.56%)\n", - "Epoch 1148: model set back to train mode\n", - "Epoch 1148: model parameters saved\n", - "Epoch 1149 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1149: avg_loss appended (2.7778)\n", - "Epoch 1149: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1149: accuracy appended (80.56%)\n", - "Epoch 1149: model set back to train mode\n", - "Epoch 1149: model parameters saved\n", - "Epoch 1150 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1150: avg_loss appended (2.7778)\n", - "Epoch 1150: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1150: accuracy appended (80.56%)\n", - "Epoch 1150: model set back to train mode\n", - "Epoch 1150: model parameters saved\n", - "Epoch 1151 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1151: avg_loss appended (2.7778)\n", - "Epoch 1151: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1151: accuracy appended (80.56%)\n", - "Epoch 1151: model set back to train mode\n", - "Epoch 1151: model parameters saved\n", - "Epoch 1152 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1152: avg_loss appended (2.7778)\n", - "Epoch 1152: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1152: accuracy appended (80.56%)\n", - "Epoch 1152: model set back to train mode\n", - "Epoch 1152: model parameters saved\n", - "Epoch 1153 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1153: avg_loss appended (2.7778)\n", - "Epoch 1153: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1153: accuracy appended (80.56%)\n", - "Epoch 1153: model set back to train mode\n", - "Epoch 1153: model parameters saved\n", - "Epoch 1154 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1154: avg_loss appended (2.7778)\n", - "Epoch 1154: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1154: accuracy appended (80.56%)\n", - "Epoch 1154: model set back to train mode\n", - "Epoch 1154: model parameters saved\n", - "Epoch 1155 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1155: avg_loss appended (2.7778)\n", - "Epoch 1155: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1155: accuracy appended (80.56%)\n", - "Epoch 1155: model set back to train mode\n", - "Epoch 1155: model parameters saved\n", - "Epoch 1156 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1156: avg_loss appended (2.7778)\n", - "Epoch 1156: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1156: accuracy appended (80.56%)\n", - "Epoch 1156: model set back to train mode\n", - "Epoch 1156: model parameters saved\n", - "Epoch 1157 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1157: avg_loss appended (2.7778)\n", - "Epoch 1157: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1157: accuracy appended (80.56%)\n", - "Epoch 1157: model set back to train mode\n", - "Epoch 1157: model parameters saved\n", - "Epoch 1158 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1158: avg_loss appended (2.7778)\n", - "Epoch 1158: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1158: accuracy appended (80.56%)\n", - "Epoch 1158: model set back to train mode\n", - "Epoch 1158: model parameters saved\n", - "Epoch 1159 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1159: avg_loss appended (2.7778)\n", - "Epoch 1159: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1159: accuracy appended (80.56%)\n", - "Epoch 1159: model set back to train mode\n", - "Epoch 1159: model parameters saved\n", - "Epoch 1160 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1160: avg_loss appended (2.7778)\n", - "Epoch 1160: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1160: accuracy appended (80.56%)\n", - "Epoch 1160: model set back to train mode\n", - "Epoch 1160: model parameters saved\n", - "Epoch 1161 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1161: avg_loss appended (2.7778)\n", - "Epoch 1161: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1161: accuracy appended (80.56%)\n", - "Epoch 1161: model set back to train mode\n", - "Epoch 1161: model parameters saved\n", - "Epoch 1162 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1162: avg_loss appended (2.7778)\n", - "Epoch 1162: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1162: accuracy appended (80.56%)\n", - "Epoch 1162: model set back to train mode\n", - "Epoch 1162: model parameters saved\n", - "Epoch 1163 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1163: avg_loss appended (2.7778)\n", - "Epoch 1163: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1163: accuracy appended (80.56%)\n", - "Epoch 1163: model set back to train mode\n", - "Epoch 1163: model parameters saved\n", - "Epoch 1164 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1164: avg_loss appended (2.7778)\n", - "Epoch 1164: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1164: accuracy appended (80.56%)\n", - "Epoch 1164: model set back to train mode\n", - "Epoch 1164: model parameters saved\n", - "Epoch 1165 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1165: avg_loss appended (2.7778)\n", - "Epoch 1165: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1165: accuracy appended (80.56%)\n", - "Epoch 1165: model set back to train mode\n", - "Epoch 1165: model parameters saved\n", - "Epoch 1166 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1166: avg_loss appended (2.7778)\n", - "Epoch 1166: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1166: accuracy appended (80.56%)\n", - "Epoch 1166: model set back to train mode\n", - "Epoch 1166: model parameters saved\n", - "Epoch 1167 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1167: avg_loss appended (2.7778)\n", - "Epoch 1167: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1167: accuracy appended (80.56%)\n", - "Epoch 1167: model set back to train mode\n", - "Epoch 1167: model parameters saved\n", - "Epoch 1168 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1168: avg_loss appended (2.7778)\n", - "Epoch 1168: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1168: accuracy appended (80.56%)\n", - "Epoch 1168: model set back to train mode\n", - "Epoch 1168: model parameters saved\n", - "Epoch 1169 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1169: avg_loss appended (2.7778)\n", - "Epoch 1169: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1169: accuracy appended (80.56%)\n", - "Epoch 1169: model set back to train mode\n", - "Epoch 1169: model parameters saved\n", - "Epoch 1170 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1170: avg_loss appended (2.7778)\n", - "Epoch 1170: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1170: accuracy appended (80.56%)\n", - "Epoch 1170: model set back to train mode\n", - "Epoch 1170: model parameters saved\n", - "Epoch 1171 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1171: avg_loss appended (2.7778)\n", - "Epoch 1171: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1171: accuracy appended (80.56%)\n", - "Epoch 1171: model set back to train mode\n", - "Epoch 1171: model parameters saved\n", - "Epoch 1172 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1172: avg_loss appended (2.7778)\n", - "Epoch 1172: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1172: accuracy appended (80.56%)\n", - "Epoch 1172: model set back to train mode\n", - "Epoch 1172: model parameters saved\n", - "Epoch 1173 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1173: avg_loss appended (2.7778)\n", - "Epoch 1173: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1173: accuracy appended (80.56%)\n", - "Epoch 1173: model set back to train mode\n", - "Epoch 1173: model parameters saved\n", - "Epoch 1174 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1174: avg_loss appended (2.7778)\n", - "Epoch 1174: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1174: accuracy appended (80.56%)\n", - "Epoch 1174: model set back to train mode\n", - "Epoch 1174: model parameters saved\n", - "Epoch 1175 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1175: avg_loss appended (2.7778)\n", - "Epoch 1175: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1175: accuracy appended (80.56%)\n", - "Epoch 1175: model set back to train mode\n", - "Epoch 1175: model parameters saved\n", - "Epoch 1176 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1176: avg_loss appended (2.7778)\n", - "Epoch 1176: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1176: accuracy appended (80.56%)\n", - "Epoch 1176: model set back to train mode\n", - "Epoch 1176: model parameters saved\n", - "Epoch 1177 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1177: avg_loss appended (2.7778)\n", - "Epoch 1177: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1177: accuracy appended (80.56%)\n", - "Epoch 1177: model set back to train mode\n", - "Epoch 1177: model parameters saved\n", - "Epoch 1178 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1178: avg_loss appended (2.7778)\n", - "Epoch 1178: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1178: accuracy appended (80.56%)\n", - "Epoch 1178: model set back to train mode\n", - "Epoch 1178: model parameters saved\n", - "Epoch 1179 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1179: avg_loss appended (2.7778)\n", - "Epoch 1179: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1179: accuracy appended (80.56%)\n", - "Epoch 1179: model set back to train mode\n", - "Epoch 1179: model parameters saved\n", - "Epoch 1180 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1180: avg_loss appended (2.7778)\n", - "Epoch 1180: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1180: accuracy appended (80.56%)\n", - "Epoch 1180: model set back to train mode\n", - "Epoch 1180: model parameters saved\n", - "Epoch 1181 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1181: avg_loss appended (2.7778)\n", - "Epoch 1181: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1181: accuracy appended (80.56%)\n", - "Epoch 1181: model set back to train mode\n", - "Epoch 1181: model parameters saved\n", - "Epoch 1182 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1182: avg_loss appended (2.7778)\n", - "Epoch 1182: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1182: accuracy appended (80.56%)\n", - "Epoch 1182: model set back to train mode\n", - "Epoch 1182: model parameters saved\n", - "Epoch 1183 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1183: avg_loss appended (2.7778)\n", - "Epoch 1183: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1183: accuracy appended (80.56%)\n", - "Epoch 1183: model set back to train mode\n", - "Epoch 1183: model parameters saved\n", - "Epoch 1184 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1184: avg_loss appended (2.7778)\n", - "Epoch 1184: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1184: accuracy appended (80.56%)\n", - "Epoch 1184: model set back to train mode\n", - "Epoch 1184: model parameters saved\n", - "Epoch 1185 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1185: avg_loss appended (2.7778)\n", - "Epoch 1185: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1185: accuracy appended (80.56%)\n", - "Epoch 1185: model set back to train mode\n", - "Epoch 1185: model parameters saved\n", - "Epoch 1186 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1186: avg_loss appended (2.7778)\n", - "Epoch 1186: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1186: accuracy appended (80.56%)\n", - "Epoch 1186: model set back to train mode\n", - "Epoch 1186: model parameters saved\n", - "Epoch 1187 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1187: avg_loss appended (2.7778)\n", - "Epoch 1187: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1187: accuracy appended (80.56%)\n", - "Epoch 1187: model set back to train mode\n", - "Epoch 1187: model parameters saved\n", - "Epoch 1188 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1188: avg_loss appended (2.7778)\n", - "Epoch 1188: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1188: accuracy appended (80.56%)\n", - "Epoch 1188: model set back to train mode\n", - "Epoch 1188: model parameters saved\n", - "Epoch 1189 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1189: avg_loss appended (2.7778)\n", - "Epoch 1189: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1189: accuracy appended (80.56%)\n", - "Epoch 1189: model set back to train mode\n", - "Epoch 1189: model parameters saved\n", - "Epoch 1190 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1190: avg_loss appended (2.7778)\n", - "Epoch 1190: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1190: accuracy appended (80.56%)\n", - "Epoch 1190: model set back to train mode\n", - "Epoch 1190: model parameters saved\n", - "Epoch 1191 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1191: avg_loss appended (2.7778)\n", - "Epoch 1191: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1191: accuracy appended (80.56%)\n", - "Epoch 1191: model set back to train mode\n", - "Epoch 1191: model parameters saved\n", - "Epoch 1192 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1192: avg_loss appended (2.7778)\n", - "Epoch 1192: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1192: accuracy appended (80.56%)\n", - "Epoch 1192: model set back to train mode\n", - "Epoch 1192: model parameters saved\n", - "Epoch 1193 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1193: avg_loss appended (2.7778)\n", - "Epoch 1193: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1193: accuracy appended (80.56%)\n", - "Epoch 1193: model set back to train mode\n", - "Epoch 1193: model parameters saved\n", - "Epoch 1194 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1194: avg_loss appended (2.7778)\n", - "Epoch 1194: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1194: accuracy appended (80.56%)\n", - "Epoch 1194: model set back to train mode\n", - "Epoch 1194: model parameters saved\n", - "Epoch 1195 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1195: avg_loss appended (2.7778)\n", - "Epoch 1195: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1195: accuracy appended (80.56%)\n", - "Epoch 1195: model set back to train mode\n", - "Epoch 1195: model parameters saved\n", - "Epoch 1196 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1196: avg_loss appended (2.7778)\n", - "Epoch 1196: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1196: accuracy appended (80.56%)\n", - "Epoch 1196: model set back to train mode\n", - "Epoch 1196: model parameters saved\n", - "Epoch 1197 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1197: avg_loss appended (2.7778)\n", - "Epoch 1197: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1197: accuracy appended (80.56%)\n", - "Epoch 1197: model set back to train mode\n", - "Epoch 1197: model parameters saved\n", - "Epoch 1198 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1198: avg_loss appended (2.7778)\n", - "Epoch 1198: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1198: accuracy appended (80.56%)\n", - "Epoch 1198: model set back to train mode\n", - "Epoch 1198: model parameters saved\n", - "Epoch 1199 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1199: avg_loss appended (2.7778)\n", - "Epoch 1199: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1199: accuracy appended (80.56%)\n", - "Epoch 1199: model set back to train mode\n", - "Epoch 1199: model parameters saved\n", - "Epoch 1200 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1200: avg_loss appended (2.7778)\n", - "Epoch 1200: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1200: accuracy appended (80.56%)\n", - "Epoch 1200: model set back to train mode\n", - "Epoch 1200: model parameters saved\n", - "Epoch 1200/10000, Loss: 2.7778, Accuracy: 80.56%\n", - "Epoch 1201 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1201: avg_loss appended (2.7778)\n", - "Epoch 1201: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1201: accuracy appended (80.56%)\n", - "Epoch 1201: model set back to train mode\n", - "Epoch 1201: model parameters saved\n", - "Epoch 1202 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1202: avg_loss appended (2.7778)\n", - "Epoch 1202: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1202: accuracy appended (80.56%)\n", - "Epoch 1202: model set back to train mode\n", - "Epoch 1202: model parameters saved\n", - "Epoch 1203 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1203: avg_loss appended (2.7778)\n", - "Epoch 1203: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1203: accuracy appended (80.56%)\n", - "Epoch 1203: model set back to train mode\n", - "Epoch 1203: model parameters saved\n", - "Epoch 1204 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1204: avg_loss appended (2.7778)\n", - "Epoch 1204: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1204: accuracy appended (80.56%)\n", - "Epoch 1204: model set back to train mode\n", - "Epoch 1204: model parameters saved\n", - "Epoch 1205 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1205: avg_loss appended (2.7778)\n", - "Epoch 1205: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1205: accuracy appended (80.56%)\n", - "Epoch 1205: model set back to train mode\n", - "Epoch 1205: model parameters saved\n", - "Epoch 1206 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1206: avg_loss appended (2.7778)\n", - "Epoch 1206: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1206: accuracy appended (80.56%)\n", - "Epoch 1206: model set back to train mode\n", - "Epoch 1206: model parameters saved\n", - "Epoch 1207 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1207: avg_loss appended (2.7778)\n", - "Epoch 1207: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1207: accuracy appended (80.56%)\n", - "Epoch 1207: model set back to train mode\n", - "Epoch 1207: model parameters saved\n", - "Epoch 1208 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1208: avg_loss appended (2.7778)\n", - "Epoch 1208: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1208: accuracy appended (80.56%)\n", - "Epoch 1208: model set back to train mode\n", - "Epoch 1208: model parameters saved\n", - "Epoch 1209 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1209: avg_loss appended (2.7778)\n", - "Epoch 1209: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1209: accuracy appended (80.56%)\n", - "Epoch 1209: model set back to train mode\n", - "Epoch 1209: model parameters saved\n", - "Epoch 1210 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1210: avg_loss appended (2.7778)\n", - "Epoch 1210: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1210: accuracy appended (80.56%)\n", - "Epoch 1210: model set back to train mode\n", - "Epoch 1210: model parameters saved\n", - "Epoch 1211 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1211: avg_loss appended (2.7778)\n", - "Epoch 1211: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1211: accuracy appended (80.56%)\n", - "Epoch 1211: model set back to train mode\n", - "Epoch 1211: model parameters saved\n", - "Epoch 1212 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1212: avg_loss appended (2.7778)\n", - "Epoch 1212: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1212: accuracy appended (80.56%)\n", - "Epoch 1212: model set back to train mode\n", - "Epoch 1212: model parameters saved\n", - "Epoch 1213 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1213: avg_loss appended (2.7778)\n", - "Epoch 1213: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1213: accuracy appended (80.56%)\n", - "Epoch 1213: model set back to train mode\n", - "Epoch 1213: model parameters saved\n", - "Epoch 1214 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1214: avg_loss appended (2.7778)\n", - "Epoch 1214: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1214: accuracy appended (80.56%)\n", - "Epoch 1214: model set back to train mode\n", - "Epoch 1214: model parameters saved\n", - "Epoch 1215 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1215: avg_loss appended (2.7778)\n", - "Epoch 1215: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1215: accuracy appended (80.56%)\n", - "Epoch 1215: model set back to train mode\n", - "Epoch 1215: model parameters saved\n", - "Epoch 1216 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1216: avg_loss appended (2.7778)\n", - "Epoch 1216: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1216: accuracy appended (80.56%)\n", - "Epoch 1216: model set back to train mode\n", - "Epoch 1216: model parameters saved\n", - "Epoch 1217 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1217: avg_loss appended (2.7778)\n", - "Epoch 1217: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1217: accuracy appended (80.56%)\n", - "Epoch 1217: model set back to train mode\n", - "Epoch 1217: model parameters saved\n", - "Epoch 1218 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1218: avg_loss appended (2.7778)\n", - "Epoch 1218: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1218: accuracy appended (80.56%)\n", - "Epoch 1218: model set back to train mode\n", - "Epoch 1218: model parameters saved\n", - "Epoch 1219 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1219: avg_loss appended (2.7778)\n", - "Epoch 1219: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1219: accuracy appended (80.56%)\n", - "Epoch 1219: model set back to train mode\n", - "Epoch 1219: model parameters saved\n", - "Epoch 1220 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1220: avg_loss appended (2.7778)\n", - "Epoch 1220: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1220: accuracy appended (80.56%)\n", - "Epoch 1220: model set back to train mode\n", - "Epoch 1220: model parameters saved\n", - "Epoch 1221 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1221: avg_loss appended (2.7778)\n", - "Epoch 1221: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1221: accuracy appended (80.56%)\n", - "Epoch 1221: model set back to train mode\n", - "Epoch 1221: model parameters saved\n", - "Epoch 1222 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1222: avg_loss appended (2.7778)\n", - "Epoch 1222: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1222: accuracy appended (80.56%)\n", - "Epoch 1222: model set back to train mode\n", - "Epoch 1222: model parameters saved\n", - "Epoch 1223 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1223: avg_loss appended (2.7778)\n", - "Epoch 1223: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1223: accuracy appended (80.56%)\n", - "Epoch 1223: model set back to train mode\n", - "Epoch 1223: model parameters saved\n", - "Epoch 1224 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1224: avg_loss appended (2.7778)\n", - "Epoch 1224: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1224: accuracy appended (80.56%)\n", - "Epoch 1224: model set back to train mode\n", - "Epoch 1224: model parameters saved\n", - "Epoch 1225 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1225: avg_loss appended (2.7778)\n", - "Epoch 1225: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1225: accuracy appended (80.56%)\n", - "Epoch 1225: model set back to train mode\n", - "Epoch 1225: model parameters saved\n", - "Epoch 1226 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1226: avg_loss appended (2.7778)\n", - "Epoch 1226: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1226: accuracy appended (80.56%)\n", - "Epoch 1226: model set back to train mode\n", - "Epoch 1226: model parameters saved\n", - "Epoch 1227 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1227: avg_loss appended (2.7778)\n", - "Epoch 1227: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1227: accuracy appended (80.56%)\n", - "Epoch 1227: model set back to train mode\n", - "Epoch 1227: model parameters saved\n", - "Epoch 1228 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1228: avg_loss appended (2.7778)\n", - "Epoch 1228: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1228: accuracy appended (80.56%)\n", - "Epoch 1228: model set back to train mode\n", - "Epoch 1228: model parameters saved\n", - "Epoch 1229 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1229: avg_loss appended (2.7778)\n", - "Epoch 1229: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1229: accuracy appended (80.56%)\n", - "Epoch 1229: model set back to train mode\n", - "Epoch 1229: model parameters saved\n", - "Epoch 1230 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1230: avg_loss appended (2.7778)\n", - "Epoch 1230: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1230: accuracy appended (80.56%)\n", - "Epoch 1230: model set back to train mode\n", - "Epoch 1230: model parameters saved\n", - "Epoch 1231 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1231: avg_loss appended (2.7778)\n", - "Epoch 1231: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1231: accuracy appended (80.56%)\n", - "Epoch 1231: model set back to train mode\n", - "Epoch 1231: model parameters saved\n", - "Epoch 1232 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1232: avg_loss appended (2.7778)\n", - "Epoch 1232: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1232: accuracy appended (80.56%)\n", - "Epoch 1232: model set back to train mode\n", - "Epoch 1232: model parameters saved\n", - "Epoch 1233 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1233: avg_loss appended (2.7778)\n", - "Epoch 1233: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1233: accuracy appended (80.56%)\n", - "Epoch 1233: model set back to train mode\n", - "Epoch 1233: model parameters saved\n", - "Epoch 1234 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1234: avg_loss appended (2.7778)\n", - "Epoch 1234: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1234: accuracy appended (80.56%)\n", - "Epoch 1234: model set back to train mode\n", - "Epoch 1234: model parameters saved\n", - "Epoch 1235 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1235: avg_loss appended (2.7778)\n", - "Epoch 1235: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1235: accuracy appended (80.56%)\n", - "Epoch 1235: model set back to train mode\n", - "Epoch 1235: model parameters saved\n", - "Epoch 1236 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1236: avg_loss appended (2.7778)\n", - "Epoch 1236: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1236: accuracy appended (80.56%)\n", - "Epoch 1236: model set back to train mode\n", - "Epoch 1236: model parameters saved\n", - "Epoch 1237 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1237: avg_loss appended (2.7778)\n", - "Epoch 1237: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1237: accuracy appended (80.56%)\n", - "Epoch 1237: model set back to train mode\n", - "Epoch 1237: model parameters saved\n", - "Epoch 1238 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1238: avg_loss appended (2.7778)\n", - "Epoch 1238: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1238: accuracy appended (80.56%)\n", - "Epoch 1238: model set back to train mode\n", - "Epoch 1238: model parameters saved\n", - "Epoch 1239 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1239: avg_loss appended (2.7778)\n", - "Epoch 1239: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1239: accuracy appended (80.56%)\n", - "Epoch 1239: model set back to train mode\n", - "Epoch 1239: model parameters saved\n", - "Epoch 1240 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1240: avg_loss appended (2.7778)\n", - "Epoch 1240: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1240: accuracy appended (80.56%)\n", - "Epoch 1240: model set back to train mode\n", - "Epoch 1240: model parameters saved\n", - "Epoch 1241 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1241: avg_loss appended (2.7778)\n", - "Epoch 1241: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1241: accuracy appended (80.56%)\n", - "Epoch 1241: model set back to train mode\n", - "Epoch 1241: model parameters saved\n", - "Epoch 1242 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1242: avg_loss appended (2.7778)\n", - "Epoch 1242: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1242: accuracy appended (80.56%)\n", - "Epoch 1242: model set back to train mode\n", - "Epoch 1242: model parameters saved\n", - "Epoch 1243 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1243: avg_loss appended (2.7778)\n", - "Epoch 1243: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1243: accuracy appended (80.56%)\n", - "Epoch 1243: model set back to train mode\n", - "Epoch 1243: model parameters saved\n", - "Epoch 1244 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1244: avg_loss appended (2.7778)\n", - "Epoch 1244: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1244: accuracy appended (80.56%)\n", - "Epoch 1244: model set back to train mode\n", - "Epoch 1244: model parameters saved\n", - "Epoch 1245 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1245: avg_loss appended (2.7778)\n", - "Epoch 1245: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1245: accuracy appended (80.56%)\n", - "Epoch 1245: model set back to train mode\n", - "Epoch 1245: model parameters saved\n", - "Epoch 1246 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1246: avg_loss appended (2.7778)\n", - "Epoch 1246: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1246: accuracy appended (80.56%)\n", - "Epoch 1246: model set back to train mode\n", - "Epoch 1246: model parameters saved\n", - "Epoch 1247 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1247: avg_loss appended (2.7778)\n", - "Epoch 1247: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1247: accuracy appended (80.56%)\n", - "Epoch 1247: model set back to train mode\n", - "Epoch 1247: model parameters saved\n", - "Epoch 1248 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1248: avg_loss appended (2.7778)\n", - "Epoch 1248: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1248: accuracy appended (80.56%)\n", - "Epoch 1248: model set back to train mode\n", - "Epoch 1248: model parameters saved\n", - "Epoch 1249 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1249: avg_loss appended (2.7778)\n", - "Epoch 1249: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1249: accuracy appended (80.56%)\n", - "Epoch 1249: model set back to train mode\n", - "Epoch 1249: model parameters saved\n", - "Epoch 1250 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1250: avg_loss appended (2.7778)\n", - "Epoch 1250: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1250: accuracy appended (80.56%)\n", - "Epoch 1250: model set back to train mode\n", - "Epoch 1250: model parameters saved\n", - "Epoch 1251 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1251: avg_loss appended (2.7778)\n", - "Epoch 1251: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1251: accuracy appended (80.56%)\n", - "Epoch 1251: model set back to train mode\n", - "Epoch 1251: model parameters saved\n", - "Epoch 1252 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1252: avg_loss appended (2.7778)\n", - "Epoch 1252: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1252: accuracy appended (80.56%)\n", - "Epoch 1252: model set back to train mode\n", - "Epoch 1252: model parameters saved\n", - "Epoch 1253 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1253: avg_loss appended (2.7778)\n", - "Epoch 1253: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1253: accuracy appended (80.56%)\n", - "Epoch 1253: model set back to train mode\n", - "Epoch 1253: model parameters saved\n", - "Epoch 1254 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1254: avg_loss appended (2.7778)\n", - "Epoch 1254: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1254: accuracy appended (80.56%)\n", - "Epoch 1254: model set back to train mode\n", - "Epoch 1254: model parameters saved\n", - "Epoch 1255 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1255: avg_loss appended (2.7778)\n", - "Epoch 1255: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1255: accuracy appended (80.56%)\n", - "Epoch 1255: model set back to train mode\n", - "Epoch 1255: model parameters saved\n", - "Epoch 1256 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1256: avg_loss appended (2.7778)\n", - "Epoch 1256: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1256: accuracy appended (80.56%)\n", - "Epoch 1256: model set back to train mode\n", - "Epoch 1256: model parameters saved\n", - "Epoch 1257 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1257: avg_loss appended (2.7778)\n", - "Epoch 1257: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1257: accuracy appended (80.56%)\n", - "Epoch 1257: model set back to train mode\n", - "Epoch 1257: model parameters saved\n", - "Epoch 1258 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1258: avg_loss appended (2.7778)\n", - "Epoch 1258: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1258: accuracy appended (80.56%)\n", - "Epoch 1258: model set back to train mode\n", - "Epoch 1258: model parameters saved\n", - "Epoch 1259 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1259: avg_loss appended (2.7778)\n", - "Epoch 1259: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1259: accuracy appended (80.56%)\n", - "Epoch 1259: model set back to train mode\n", - "Epoch 1259: model parameters saved\n", - "Epoch 1260 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1260: avg_loss appended (2.7778)\n", - "Epoch 1260: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1260: accuracy appended (80.56%)\n", - "Epoch 1260: model set back to train mode\n", - "Epoch 1260: model parameters saved\n", - "Epoch 1261 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1261: avg_loss appended (2.7778)\n", - "Epoch 1261: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1261: accuracy appended (80.56%)\n", - "Epoch 1261: model set back to train mode\n", - "Epoch 1261: model parameters saved\n", - "Epoch 1262 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1262: avg_loss appended (2.7778)\n", - "Epoch 1262: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1262: accuracy appended (80.56%)\n", - "Epoch 1262: model set back to train mode\n", - "Epoch 1262: model parameters saved\n", - "Epoch 1263 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1263: avg_loss appended (2.7778)\n", - "Epoch 1263: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1263: accuracy appended (80.56%)\n", - "Epoch 1263: model set back to train mode\n", - "Epoch 1263: model parameters saved\n", - "Epoch 1264 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1264: avg_loss appended (2.7778)\n", - "Epoch 1264: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1264: accuracy appended (80.56%)\n", - "Epoch 1264: model set back to train mode\n", - "Epoch 1264: model parameters saved\n", - "Epoch 1265 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1265: avg_loss appended (2.7778)\n", - "Epoch 1265: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1265: accuracy appended (80.56%)\n", - "Epoch 1265: model set back to train mode\n", - "Epoch 1265: model parameters saved\n", - "Epoch 1266 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1266: avg_loss appended (2.7778)\n", - "Epoch 1266: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1266: accuracy appended (80.56%)\n", - "Epoch 1266: model set back to train mode\n", - "Epoch 1266: model parameters saved\n", - "Epoch 1267 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1267: avg_loss appended (2.7778)\n", - "Epoch 1267: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1267: accuracy appended (80.56%)\n", - "Epoch 1267: model set back to train mode\n", - "Epoch 1267: model parameters saved\n", - "Epoch 1268 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1268: avg_loss appended (2.7778)\n", - "Epoch 1268: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1268: accuracy appended (80.56%)\n", - "Epoch 1268: model set back to train mode\n", - "Epoch 1268: model parameters saved\n", - "Epoch 1269 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1269: avg_loss appended (2.7778)\n", - "Epoch 1269: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1269: accuracy appended (80.56%)\n", - "Epoch 1269: model set back to train mode\n", - "Epoch 1269: model parameters saved\n", - "Epoch 1270 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1270: avg_loss appended (2.7778)\n", - "Epoch 1270: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1270: accuracy appended (80.56%)\n", - "Epoch 1270: model set back to train mode\n", - "Epoch 1270: model parameters saved\n", - "Epoch 1271 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1271: avg_loss appended (2.7778)\n", - "Epoch 1271: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1271: accuracy appended (80.56%)\n", - "Epoch 1271: model set back to train mode\n", - "Epoch 1271: model parameters saved\n", - "Epoch 1272 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1272: avg_loss appended (2.7778)\n", - "Epoch 1272: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1272: accuracy appended (80.56%)\n", - "Epoch 1272: model set back to train mode\n", - "Epoch 1272: model parameters saved\n", - "Epoch 1273 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1273: avg_loss appended (2.7778)\n", - "Epoch 1273: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1273: accuracy appended (80.56%)\n", - "Epoch 1273: model set back to train mode\n", - "Epoch 1273: model parameters saved\n", - "Epoch 1274 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1274: avg_loss appended (2.7778)\n", - "Epoch 1274: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1274: accuracy appended (80.56%)\n", - "Epoch 1274: model set back to train mode\n", - "Epoch 1274: model parameters saved\n", - "Epoch 1275 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1275: avg_loss appended (2.7778)\n", - "Epoch 1275: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1275: accuracy appended (80.56%)\n", - "Epoch 1275: model set back to train mode\n", - "Epoch 1275: model parameters saved\n", - "Epoch 1276 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1276: avg_loss appended (2.7778)\n", - "Epoch 1276: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1276: accuracy appended (80.56%)\n", - "Epoch 1276: model set back to train mode\n", - "Epoch 1276: model parameters saved\n", - "Epoch 1277 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1277: avg_loss appended (2.7778)\n", - "Epoch 1277: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1277: accuracy appended (80.56%)\n", - "Epoch 1277: model set back to train mode\n", - "Epoch 1277: model parameters saved\n", - "Epoch 1278 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1278: avg_loss appended (2.7778)\n", - "Epoch 1278: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1278: accuracy appended (80.56%)\n", - "Epoch 1278: model set back to train mode\n", - "Epoch 1278: model parameters saved\n", - "Epoch 1279 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1279: avg_loss appended (2.7778)\n", - "Epoch 1279: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1279: accuracy appended (80.56%)\n", - "Epoch 1279: model set back to train mode\n", - "Epoch 1279: model parameters saved\n", - "Epoch 1280 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1280: avg_loss appended (2.7778)\n", - "Epoch 1280: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1280: accuracy appended (80.56%)\n", - "Epoch 1280: model set back to train mode\n", - "Epoch 1280: model parameters saved\n", - "Epoch 1281 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1281: avg_loss appended (2.7778)\n", - "Epoch 1281: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1281: accuracy appended (80.56%)\n", - "Epoch 1281: model set back to train mode\n", - "Epoch 1281: model parameters saved\n", - "Epoch 1282 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1282: avg_loss appended (2.7778)\n", - "Epoch 1282: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1282: accuracy appended (80.56%)\n", - "Epoch 1282: model set back to train mode\n", - "Epoch 1282: model parameters saved\n", - "Epoch 1283 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1283: avg_loss appended (2.7778)\n", - "Epoch 1283: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1283: accuracy appended (80.56%)\n", - "Epoch 1283: model set back to train mode\n", - "Epoch 1283: model parameters saved\n", - "Epoch 1284 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1284: avg_loss appended (2.7778)\n", - "Epoch 1284: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1284: accuracy appended (80.56%)\n", - "Epoch 1284: model set back to train mode\n", - "Epoch 1284: model parameters saved\n", - "Epoch 1285 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1285: avg_loss appended (2.7778)\n", - "Epoch 1285: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1285: accuracy appended (80.56%)\n", - "Epoch 1285: model set back to train mode\n", - "Epoch 1285: model parameters saved\n", - "Epoch 1286 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1286: avg_loss appended (2.7778)\n", - "Epoch 1286: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1286: accuracy appended (80.56%)\n", - "Epoch 1286: model set back to train mode\n", - "Epoch 1286: model parameters saved\n", - "Epoch 1287 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1287: avg_loss appended (2.7778)\n", - "Epoch 1287: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1287: accuracy appended (80.56%)\n", - "Epoch 1287: model set back to train mode\n", - "Epoch 1287: model parameters saved\n", - "Epoch 1288 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1288: avg_loss appended (2.7778)\n", - "Epoch 1288: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1288: accuracy appended (80.56%)\n", - "Epoch 1288: model set back to train mode\n", - "Epoch 1288: model parameters saved\n", - "Epoch 1289 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1289: avg_loss appended (2.7778)\n", - "Epoch 1289: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1289: accuracy appended (80.56%)\n", - "Epoch 1289: model set back to train mode\n", - "Epoch 1289: model parameters saved\n", - "Epoch 1290 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1290: avg_loss appended (2.7778)\n", - "Epoch 1290: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1290: accuracy appended (80.56%)\n", - "Epoch 1290: model set back to train mode\n", - "Epoch 1290: model parameters saved\n", - "Epoch 1291 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1291: avg_loss appended (2.7778)\n", - "Epoch 1291: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1291: accuracy appended (80.56%)\n", - "Epoch 1291: model set back to train mode\n", - "Epoch 1291: model parameters saved\n", - "Epoch 1292 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1292: avg_loss appended (2.7778)\n", - "Epoch 1292: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1292: accuracy appended (80.56%)\n", - "Epoch 1292: model set back to train mode\n", - "Epoch 1292: model parameters saved\n", - "Epoch 1293 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1293: avg_loss appended (2.7778)\n", - "Epoch 1293: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1293: accuracy appended (80.56%)\n", - "Epoch 1293: model set back to train mode\n", - "Epoch 1293: model parameters saved\n", - "Epoch 1294 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1294: avg_loss appended (2.7778)\n", - "Epoch 1294: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1294: accuracy appended (80.56%)\n", - "Epoch 1294: model set back to train mode\n", - "Epoch 1294: model parameters saved\n", - "Epoch 1295 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1295: avg_loss appended (2.7778)\n", - "Epoch 1295: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1295: accuracy appended (80.56%)\n", - "Epoch 1295: model set back to train mode\n", - "Epoch 1295: model parameters saved\n", - "Epoch 1296 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1296: avg_loss appended (2.7778)\n", - "Epoch 1296: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1296: accuracy appended (80.56%)\n", - "Epoch 1296: model set back to train mode\n", - "Epoch 1296: model parameters saved\n", - "Epoch 1297 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1297: avg_loss appended (2.7778)\n", - "Epoch 1297: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1297: accuracy appended (80.56%)\n", - "Epoch 1297: model set back to train mode\n", - "Epoch 1297: model parameters saved\n", - "Epoch 1298 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1298: avg_loss appended (2.7778)\n", - "Epoch 1298: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1298: accuracy appended (80.56%)\n", - "Epoch 1298: model set back to train mode\n", - "Epoch 1298: model parameters saved\n", - "Epoch 1299 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1299: avg_loss appended (2.7778)\n", - "Epoch 1299: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1299: accuracy appended (80.56%)\n", - "Epoch 1299: model set back to train mode\n", - "Epoch 1299: model parameters saved\n", - "Epoch 1300 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1300: avg_loss appended (2.7778)\n", - "Epoch 1300: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1300: accuracy appended (80.56%)\n", - "Epoch 1300: model set back to train mode\n", - "Epoch 1300: model parameters saved\n", - "Epoch 1300/10000, Loss: 2.7778, Accuracy: 80.56%\n", - "Epoch 1301 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1301: avg_loss appended (2.7778)\n", - "Epoch 1301: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1301: accuracy appended (80.56%)\n", - "Epoch 1301: model set back to train mode\n", - "Epoch 1301: model parameters saved\n", - "Epoch 1302 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1302: avg_loss appended (2.7778)\n", - "Epoch 1302: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1302: accuracy appended (80.56%)\n", - "Epoch 1302: model set back to train mode\n", - "Epoch 1302: model parameters saved\n", - "Epoch 1303 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1303: avg_loss appended (2.7778)\n", - "Epoch 1303: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1303: accuracy appended (80.56%)\n", - "Epoch 1303: model set back to train mode\n", - "Epoch 1303: model parameters saved\n", - "Epoch 1304 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1304: avg_loss appended (2.7778)\n", - "Epoch 1304: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1304: accuracy appended (80.56%)\n", - "Epoch 1304: model set back to train mode\n", - "Epoch 1304: model parameters saved\n", - "Epoch 1305 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1305: avg_loss appended (2.7778)\n", - "Epoch 1305: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1305: accuracy appended (80.56%)\n", - "Epoch 1305: model set back to train mode\n", - "Epoch 1305: model parameters saved\n", - "Epoch 1306 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1306: avg_loss appended (2.7778)\n", - "Epoch 1306: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1306: accuracy appended (80.56%)\n", - "Epoch 1306: model set back to train mode\n", - "Epoch 1306: model parameters saved\n", - "Epoch 1307 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1307: avg_loss appended (2.7778)\n", - "Epoch 1307: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1307: accuracy appended (80.56%)\n", - "Epoch 1307: model set back to train mode\n", - "Epoch 1307: model parameters saved\n", - "Epoch 1308 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1308: avg_loss appended (2.7778)\n", - "Epoch 1308: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1308: accuracy appended (80.56%)\n", - "Epoch 1308: model set back to train mode\n", - "Epoch 1308: model parameters saved\n", - "Epoch 1309 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1309: avg_loss appended (2.7778)\n", - "Epoch 1309: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1309: accuracy appended (80.56%)\n", - "Epoch 1309: model set back to train mode\n", - "Epoch 1309: model parameters saved\n", - "Epoch 1310 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1310: avg_loss appended (2.7778)\n", - "Epoch 1310: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1310: accuracy appended (80.56%)\n", - "Epoch 1310: model set back to train mode\n", - "Epoch 1310: model parameters saved\n", - "Epoch 1311 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1311: avg_loss appended (2.7778)\n", - "Epoch 1311: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1311: accuracy appended (80.56%)\n", - "Epoch 1311: model set back to train mode\n", - "Epoch 1311: model parameters saved\n", - "Epoch 1312 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1312: avg_loss appended (2.7778)\n", - "Epoch 1312: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1312: accuracy appended (80.56%)\n", - "Epoch 1312: model set back to train mode\n", - "Epoch 1312: model parameters saved\n", - "Epoch 1313 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1313: avg_loss appended (2.7778)\n", - "Epoch 1313: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1313: accuracy appended (80.56%)\n", - "Epoch 1313: model set back to train mode\n", - "Epoch 1313: model parameters saved\n", - "Epoch 1314 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1314: avg_loss appended (2.7778)\n", - "Epoch 1314: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1314: accuracy appended (80.56%)\n", - "Epoch 1314: model set back to train mode\n", - "Epoch 1314: model parameters saved\n", - "Epoch 1315 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1315: avg_loss appended (2.7778)\n", - "Epoch 1315: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1315: accuracy appended (80.56%)\n", - "Epoch 1315: model set back to train mode\n", - "Epoch 1315: model parameters saved\n", - "Epoch 1316 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1316: avg_loss appended (2.7778)\n", - "Epoch 1316: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1316: accuracy appended (80.56%)\n", - "Epoch 1316: model set back to train mode\n", - "Epoch 1316: model parameters saved\n", - "Epoch 1317 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1317: avg_loss appended (2.7778)\n", - "Epoch 1317: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1317: accuracy appended (80.56%)\n", - "Epoch 1317: model set back to train mode\n", - "Epoch 1317: model parameters saved\n", - "Epoch 1318 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1318: avg_loss appended (2.7778)\n", - "Epoch 1318: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1318: accuracy appended (80.56%)\n", - "Epoch 1318: model set back to train mode\n", - "Epoch 1318: model parameters saved\n", - "Epoch 1319 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1319: avg_loss appended (2.7778)\n", - "Epoch 1319: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1319: accuracy appended (80.56%)\n", - "Epoch 1319: model set back to train mode\n", - "Epoch 1319: model parameters saved\n", - "Epoch 1320 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1320: avg_loss appended (2.7778)\n", - "Epoch 1320: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1320: accuracy appended (80.56%)\n", - "Epoch 1320: model set back to train mode\n", - "Epoch 1320: model parameters saved\n", - "Epoch 1321 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1321: avg_loss appended (2.7778)\n", - "Epoch 1321: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1321: accuracy appended (80.56%)\n", - "Epoch 1321: model set back to train mode\n", - "Epoch 1321: model parameters saved\n", - "Epoch 1322 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1322: avg_loss appended (2.7778)\n", - "Epoch 1322: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1322: accuracy appended (80.56%)\n", - "Epoch 1322: model set back to train mode\n", - "Epoch 1322: model parameters saved\n", - "Epoch 1323 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1323: avg_loss appended (2.7778)\n", - "Epoch 1323: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1323: accuracy appended (80.56%)\n", - "Epoch 1323: model set back to train mode\n", - "Epoch 1323: model parameters saved\n", - "Epoch 1324 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1324: avg_loss appended (2.7778)\n", - "Epoch 1324: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1324: accuracy appended (80.56%)\n", - "Epoch 1324: model set back to train mode\n", - "Epoch 1324: model parameters saved\n", - "Epoch 1325 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1325: avg_loss appended (2.7778)\n", - "Epoch 1325: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1325: accuracy appended (80.56%)\n", - "Epoch 1325: model set back to train mode\n", - "Epoch 1325: model parameters saved\n", - "Epoch 1326 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1326: avg_loss appended (2.7778)\n", - "Epoch 1326: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1326: accuracy appended (80.56%)\n", - "Epoch 1326: model set back to train mode\n", - "Epoch 1326: model parameters saved\n", - "Epoch 1327 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1327: avg_loss appended (2.7778)\n", - "Epoch 1327: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1327: accuracy appended (80.56%)\n", - "Epoch 1327: model set back to train mode\n", - "Epoch 1327: model parameters saved\n", - "Epoch 1328 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1328: avg_loss appended (2.7778)\n", - "Epoch 1328: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1328: accuracy appended (80.56%)\n", - "Epoch 1328: model set back to train mode\n", - "Epoch 1328: model parameters saved\n", - "Epoch 1329 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1329: avg_loss appended (2.7778)\n", - "Epoch 1329: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1329: accuracy appended (80.56%)\n", - "Epoch 1329: model set back to train mode\n", - "Epoch 1329: model parameters saved\n", - "Epoch 1330 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1330: avg_loss appended (2.7778)\n", - "Epoch 1330: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1330: accuracy appended (80.56%)\n", - "Epoch 1330: model set back to train mode\n", - "Epoch 1330: model parameters saved\n", - "Epoch 1331 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1331: avg_loss appended (2.7778)\n", - "Epoch 1331: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1331: accuracy appended (80.56%)\n", - "Epoch 1331: model set back to train mode\n", - "Epoch 1331: model parameters saved\n", - "Epoch 1332 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1332: avg_loss appended (2.7778)\n", - "Epoch 1332: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1332: accuracy appended (80.56%)\n", - "Epoch 1332: model set back to train mode\n", - "Epoch 1332: model parameters saved\n", - "Epoch 1333 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1333: avg_loss appended (2.7778)\n", - "Epoch 1333: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1333: accuracy appended (80.56%)\n", - "Epoch 1333: model set back to train mode\n", - "Epoch 1333: model parameters saved\n", - "Epoch 1334 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1334: avg_loss appended (2.7778)\n", - "Epoch 1334: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1334: accuracy appended (80.56%)\n", - "Epoch 1334: model set back to train mode\n", - "Epoch 1334: model parameters saved\n", - "Epoch 1335 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1335: avg_loss appended (2.7778)\n", - "Epoch 1335: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1335: accuracy appended (80.56%)\n", - "Epoch 1335: model set back to train mode\n", - "Epoch 1335: model parameters saved\n", - "Epoch 1336 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1336: avg_loss appended (2.7778)\n", - "Epoch 1336: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1336: accuracy appended (80.56%)\n", - "Epoch 1336: model set back to train mode\n", - "Epoch 1336: model parameters saved\n", - "Epoch 1337 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1337: avg_loss appended (2.7778)\n", - "Epoch 1337: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1337: accuracy appended (80.56%)\n", - "Epoch 1337: model set back to train mode\n", - "Epoch 1337: model parameters saved\n", - "Epoch 1338 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1338: avg_loss appended (2.7778)\n", - "Epoch 1338: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1338: accuracy appended (80.56%)\n", - "Epoch 1338: model set back to train mode\n", - "Epoch 1338: model parameters saved\n", - "Epoch 1339 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1339: avg_loss appended (2.7778)\n", - "Epoch 1339: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1339: accuracy appended (80.56%)\n", - "Epoch 1339: model set back to train mode\n", - "Epoch 1339: model parameters saved\n", - "Epoch 1340 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1340: avg_loss appended (2.7778)\n", - "Epoch 1340: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1340: accuracy appended (80.56%)\n", - "Epoch 1340: model set back to train mode\n", - "Epoch 1340: model parameters saved\n", - "Epoch 1341 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1341: avg_loss appended (2.7778)\n", - "Epoch 1341: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1341: accuracy appended (80.56%)\n", - "Epoch 1341: model set back to train mode\n", - "Epoch 1341: model parameters saved\n", - "Epoch 1342 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1342: avg_loss appended (2.7778)\n", - "Epoch 1342: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1342: accuracy appended (80.56%)\n", - "Epoch 1342: model set back to train mode\n", - "Epoch 1342: model parameters saved\n", - "Epoch 1343 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1343: avg_loss appended (2.7778)\n", - "Epoch 1343: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1343: accuracy appended (80.56%)\n", - "Epoch 1343: model set back to train mode\n", - "Epoch 1343: model parameters saved\n", - "Epoch 1344 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1344: avg_loss appended (2.7778)\n", - "Epoch 1344: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1344: accuracy appended (80.56%)\n", - "Epoch 1344: model set back to train mode\n", - "Epoch 1344: model parameters saved\n", - "Epoch 1345 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1345: avg_loss appended (2.7778)\n", - "Epoch 1345: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1345: accuracy appended (80.56%)\n", - "Epoch 1345: model set back to train mode\n", - "Epoch 1345: model parameters saved\n", - "Epoch 1346 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1346: avg_loss appended (2.7778)\n", - "Epoch 1346: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1346: accuracy appended (80.56%)\n", - "Epoch 1346: model set back to train mode\n", - "Epoch 1346: model parameters saved\n", - "Epoch 1347 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1347: avg_loss appended (2.7778)\n", - "Epoch 1347: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1347: accuracy appended (80.56%)\n", - "Epoch 1347: model set back to train mode\n", - "Epoch 1347: model parameters saved\n", - "Epoch 1348 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1348: avg_loss appended (2.7778)\n", - "Epoch 1348: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1348: accuracy appended (80.56%)\n", - "Epoch 1348: model set back to train mode\n", - "Epoch 1348: model parameters saved\n", - "Epoch 1349 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1349: avg_loss appended (2.7778)\n", - "Epoch 1349: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1349: accuracy appended (80.56%)\n", - "Epoch 1349: model set back to train mode\n", - "Epoch 1349: model parameters saved\n", - "Epoch 1350 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1350: avg_loss appended (2.7778)\n", - "Epoch 1350: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1350: accuracy appended (80.56%)\n", - "Epoch 1350: model set back to train mode\n", - "Epoch 1350: model parameters saved\n", - "Epoch 1351 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1351: avg_loss appended (2.7778)\n", - "Epoch 1351: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1351: accuracy appended (80.56%)\n", - "Epoch 1351: model set back to train mode\n", - "Epoch 1351: model parameters saved\n", - "Epoch 1352 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1352: avg_loss appended (2.7778)\n", - "Epoch 1352: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1352: accuracy appended (80.56%)\n", - "Epoch 1352: model set back to train mode\n", - "Epoch 1352: model parameters saved\n", - "Epoch 1353 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1353: avg_loss appended (2.7778)\n", - "Epoch 1353: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1353: accuracy appended (80.56%)\n", - "Epoch 1353: model set back to train mode\n", - "Epoch 1353: model parameters saved\n", - "Epoch 1354 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1354: avg_loss appended (2.7778)\n", - "Epoch 1354: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1354: accuracy appended (80.56%)\n", - "Epoch 1354: model set back to train mode\n", - "Epoch 1354: model parameters saved\n", - "Epoch 1355 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1355: avg_loss appended (2.7778)\n", - "Epoch 1355: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1355: accuracy appended (80.56%)\n", - "Epoch 1355: model set back to train mode\n", - "Epoch 1355: model parameters saved\n", - "Epoch 1356 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1356: avg_loss appended (2.7778)\n", - "Epoch 1356: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1356: accuracy appended (80.56%)\n", - "Epoch 1356: model set back to train mode\n", - "Epoch 1356: model parameters saved\n", - "Epoch 1357 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1357: avg_loss appended (2.7778)\n", - "Epoch 1357: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1357: accuracy appended (80.56%)\n", - "Epoch 1357: model set back to train mode\n", - "Epoch 1357: model parameters saved\n", - "Epoch 1358 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1358: avg_loss appended (2.7778)\n", - "Epoch 1358: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1358: accuracy appended (80.56%)\n", - "Epoch 1358: model set back to train mode\n", - "Epoch 1358: model parameters saved\n", - "Epoch 1359 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1359: avg_loss appended (2.7778)\n", - "Epoch 1359: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1359: accuracy appended (80.56%)\n", - "Epoch 1359: model set back to train mode\n", - "Epoch 1359: model parameters saved\n", - "Epoch 1360 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1360: avg_loss appended (2.7778)\n", - "Epoch 1360: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1360: accuracy appended (80.56%)\n", - "Epoch 1360: model set back to train mode\n", - "Epoch 1360: model parameters saved\n", - "Epoch 1361 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1361: avg_loss appended (2.7778)\n", - "Epoch 1361: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1361: accuracy appended (80.56%)\n", - "Epoch 1361: model set back to train mode\n", - "Epoch 1361: model parameters saved\n", - "Epoch 1362 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1362: avg_loss appended (2.7778)\n", - "Epoch 1362: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1362: accuracy appended (80.56%)\n", - "Epoch 1362: model set back to train mode\n", - "Epoch 1362: model parameters saved\n", - "Epoch 1363 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1363: avg_loss appended (2.7778)\n", - "Epoch 1363: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1363: accuracy appended (80.56%)\n", - "Epoch 1363: model set back to train mode\n", - "Epoch 1363: model parameters saved\n", - "Epoch 1364 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1364: avg_loss appended (2.7778)\n", - "Epoch 1364: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1364: accuracy appended (80.56%)\n", - "Epoch 1364: model set back to train mode\n", - "Epoch 1364: model parameters saved\n", - "Epoch 1365 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1365: avg_loss appended (2.7778)\n", - "Epoch 1365: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1365: accuracy appended (80.56%)\n", - "Epoch 1365: model set back to train mode\n", - "Epoch 1365: model parameters saved\n", - "Epoch 1366 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1366: avg_loss appended (2.7778)\n", - "Epoch 1366: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1366: accuracy appended (80.56%)\n", - "Epoch 1366: model set back to train mode\n", - "Epoch 1366: model parameters saved\n", - "Epoch 1367 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1367: avg_loss appended (2.7778)\n", - "Epoch 1367: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1367: accuracy appended (80.56%)\n", - "Epoch 1367: model set back to train mode\n", - "Epoch 1367: model parameters saved\n", - "Epoch 1368 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1368: avg_loss appended (2.7778)\n", - "Epoch 1368: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1368: accuracy appended (80.56%)\n", - "Epoch 1368: model set back to train mode\n", - "Epoch 1368: model parameters saved\n", - "Epoch 1369 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1369: avg_loss appended (2.7778)\n", - "Epoch 1369: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1369: accuracy appended (80.56%)\n", - "Epoch 1369: model set back to train mode\n", - "Epoch 1369: model parameters saved\n", - "Epoch 1370 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1370: avg_loss appended (2.7778)\n", - "Epoch 1370: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1370: accuracy appended (80.56%)\n", - "Epoch 1370: model set back to train mode\n", - "Epoch 1370: model parameters saved\n", - "Epoch 1371 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1371: avg_loss appended (2.7778)\n", - "Epoch 1371: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1371: accuracy appended (80.56%)\n", - "Epoch 1371: model set back to train mode\n", - "Epoch 1371: model parameters saved\n", - "Epoch 1372 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1372: avg_loss appended (2.7778)\n", - "Epoch 1372: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1372: accuracy appended (80.56%)\n", - "Epoch 1372: model set back to train mode\n", - "Epoch 1372: model parameters saved\n", - "Epoch 1373 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1373: avg_loss appended (2.7778)\n", - "Epoch 1373: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1373: accuracy appended (80.56%)\n", - "Epoch 1373: model set back to train mode\n", - "Epoch 1373: model parameters saved\n", - "Epoch 1374 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1374: avg_loss appended (2.7778)\n", - "Epoch 1374: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1374: accuracy appended (80.56%)\n", - "Epoch 1374: model set back to train mode\n", - "Epoch 1374: model parameters saved\n", - "Epoch 1375 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1375: avg_loss appended (2.7778)\n", - "Epoch 1375: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1375: accuracy appended (80.56%)\n", - "Epoch 1375: model set back to train mode\n", - "Epoch 1375: model parameters saved\n", - "Epoch 1376 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1376: avg_loss appended (2.7778)\n", - "Epoch 1376: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1376: accuracy appended (80.56%)\n", - "Epoch 1376: model set back to train mode\n", - "Epoch 1376: model parameters saved\n", - "Epoch 1377 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1377: avg_loss appended (2.7778)\n", - "Epoch 1377: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1377: accuracy appended (80.56%)\n", - "Epoch 1377: model set back to train mode\n", - "Epoch 1377: model parameters saved\n", - "Epoch 1378 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1378: avg_loss appended (2.7778)\n", - "Epoch 1378: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1378: accuracy appended (80.56%)\n", - "Epoch 1378: model set back to train mode\n", - "Epoch 1378: model parameters saved\n", - "Epoch 1379 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1379: avg_loss appended (2.7778)\n", - "Epoch 1379: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1379: accuracy appended (80.56%)\n", - "Epoch 1379: model set back to train mode\n", - "Epoch 1379: model parameters saved\n", - "Epoch 1380 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1380: avg_loss appended (2.7778)\n", - "Epoch 1380: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1380: accuracy appended (80.56%)\n", - "Epoch 1380: model set back to train mode\n", - "Epoch 1380: model parameters saved\n", - "Epoch 1381 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1381: avg_loss appended (2.7778)\n", - "Epoch 1381: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1381: accuracy appended (80.56%)\n", - "Epoch 1381: model set back to train mode\n", - "Epoch 1381: model parameters saved\n", - "Epoch 1382 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1382: avg_loss appended (2.7778)\n", - "Epoch 1382: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1382: accuracy appended (80.56%)\n", - "Epoch 1382: model set back to train mode\n", - "Epoch 1382: model parameters saved\n", - "Epoch 1383 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1383: avg_loss appended (2.7778)\n", - "Epoch 1383: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1383: accuracy appended (80.56%)\n", - "Epoch 1383: model set back to train mode\n", - "Epoch 1383: model parameters saved\n", - "Epoch 1384 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1384: avg_loss appended (2.7778)\n", - "Epoch 1384: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1384: accuracy appended (80.56%)\n", - "Epoch 1384: model set back to train mode\n", - "Epoch 1384: model parameters saved\n", - "Epoch 1385 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1385: avg_loss appended (2.7778)\n", - "Epoch 1385: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1385: accuracy appended (80.56%)\n", - "Epoch 1385: model set back to train mode\n", - "Epoch 1385: model parameters saved\n", - "Epoch 1386 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1386: avg_loss appended (2.7778)\n", - "Epoch 1386: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1386: accuracy appended (80.56%)\n", - "Epoch 1386: model set back to train mode\n", - "Epoch 1386: model parameters saved\n", - "Epoch 1387 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1387: avg_loss appended (2.7778)\n", - "Epoch 1387: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1387: accuracy appended (80.56%)\n", - "Epoch 1387: model set back to train mode\n", - "Epoch 1387: model parameters saved\n", - "Epoch 1388 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1388: avg_loss appended (2.7778)\n", - "Epoch 1388: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1388: accuracy appended (80.56%)\n", - "Epoch 1388: model set back to train mode\n", - "Epoch 1388: model parameters saved\n", - "Epoch 1389 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1389: avg_loss appended (2.7778)\n", - "Epoch 1389: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1389: accuracy appended (80.56%)\n", - "Epoch 1389: model set back to train mode\n", - "Epoch 1389: model parameters saved\n", - "Epoch 1390 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1390: avg_loss appended (2.7778)\n", - "Epoch 1390: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1390: accuracy appended (80.56%)\n", - "Epoch 1390: model set back to train mode\n", - "Epoch 1390: model parameters saved\n", - "Epoch 1391 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1391: avg_loss appended (2.7778)\n", - "Epoch 1391: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1391: accuracy appended (80.56%)\n", - "Epoch 1391: model set back to train mode\n", - "Epoch 1391: model parameters saved\n", - "Epoch 1392 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1392: avg_loss appended (2.7778)\n", - "Epoch 1392: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1392: accuracy appended (80.56%)\n", - "Epoch 1392: model set back to train mode\n", - "Epoch 1392: model parameters saved\n", - "Epoch 1393 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1393: avg_loss appended (2.7778)\n", - "Epoch 1393: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1393: accuracy appended (80.56%)\n", - "Epoch 1393: model set back to train mode\n", - "Epoch 1393: model parameters saved\n", - "Epoch 1394 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1394: avg_loss appended (2.7778)\n", - "Epoch 1394: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1394: accuracy appended (80.56%)\n", - "Epoch 1394: model set back to train mode\n", - "Epoch 1394: model parameters saved\n", - "Epoch 1395 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1395: avg_loss appended (2.7778)\n", - "Epoch 1395: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1395: accuracy appended (80.56%)\n", - "Epoch 1395: model set back to train mode\n", - "Epoch 1395: model parameters saved\n", - "Epoch 1396 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1396: avg_loss appended (2.7778)\n", - "Epoch 1396: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1396: accuracy appended (80.56%)\n", - "Epoch 1396: model set back to train mode\n", - "Epoch 1396: model parameters saved\n", - "Epoch 1397 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1397: avg_loss appended (2.7778)\n", - "Epoch 1397: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1397: accuracy appended (80.56%)\n", - "Epoch 1397: model set back to train mode\n", - "Epoch 1397: model parameters saved\n", - "Epoch 1398 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1398: avg_loss appended (2.7778)\n", - "Epoch 1398: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1398: accuracy appended (80.56%)\n", - "Epoch 1398: model set back to train mode\n", - "Epoch 1398: model parameters saved\n", - "Epoch 1399 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1399: avg_loss appended (2.7778)\n", - "Epoch 1399: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1399: accuracy appended (80.56%)\n", - "Epoch 1399: model set back to train mode\n", - "Epoch 1399: model parameters saved\n", - "Epoch 1400 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1400: avg_loss appended (2.7778)\n", - "Epoch 1400: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1400: accuracy appended (80.56%)\n", - "Epoch 1400: model set back to train mode\n", - "Epoch 1400: model parameters saved\n", - "Epoch 1400/10000, Loss: 2.7778, Accuracy: 80.56%\n", - "Epoch 1401 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1401: avg_loss appended (2.7778)\n", - "Epoch 1401: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1401: accuracy appended (80.56%)\n", - "Epoch 1401: model set back to train mode\n", - "Epoch 1401: model parameters saved\n", - "Epoch 1402 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1402: avg_loss appended (2.7778)\n", - "Epoch 1402: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1402: accuracy appended (80.56%)\n", - "Epoch 1402: model set back to train mode\n", - "Epoch 1402: model parameters saved\n", - "Epoch 1403 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1403: avg_loss appended (2.7778)\n", - "Epoch 1403: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1403: accuracy appended (80.56%)\n", - "Epoch 1403: model set back to train mode\n", - "Epoch 1403: model parameters saved\n", - "Epoch 1404 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1404: avg_loss appended (2.7778)\n", - "Epoch 1404: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1404: accuracy appended (80.56%)\n", - "Epoch 1404: model set back to train mode\n", - "Epoch 1404: model parameters saved\n", - "Epoch 1405 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1405: avg_loss appended (2.7778)\n", - "Epoch 1405: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1405: accuracy appended (80.56%)\n", - "Epoch 1405: model set back to train mode\n", - "Epoch 1405: model parameters saved\n", - "Epoch 1406 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1406: avg_loss appended (2.7778)\n", - "Epoch 1406: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1406: accuracy appended (80.56%)\n", - "Epoch 1406: model set back to train mode\n", - "Epoch 1406: model parameters saved\n", - "Epoch 1407 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1407: avg_loss appended (2.7778)\n", - "Epoch 1407: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1407: accuracy appended (80.56%)\n", - "Epoch 1407: model set back to train mode\n", - "Epoch 1407: model parameters saved\n", - "Epoch 1408 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1408: avg_loss appended (2.7778)\n", - "Epoch 1408: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1408: accuracy appended (80.56%)\n", - "Epoch 1408: model set back to train mode\n", - "Epoch 1408: model parameters saved\n", - "Epoch 1409 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1409: avg_loss appended (2.7778)\n", - "Epoch 1409: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1409: accuracy appended (80.56%)\n", - "Epoch 1409: model set back to train mode\n", - "Epoch 1409: model parameters saved\n", - "Epoch 1410 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1410: avg_loss appended (2.7778)\n", - "Epoch 1410: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1410: accuracy appended (80.56%)\n", - "Epoch 1410: model set back to train mode\n", - "Epoch 1410: model parameters saved\n", - "Epoch 1411 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1411: avg_loss appended (2.7778)\n", - "Epoch 1411: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1411: accuracy appended (80.56%)\n", - "Epoch 1411: model set back to train mode\n", - "Epoch 1411: model parameters saved\n", - "Epoch 1412 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1412: avg_loss appended (2.7778)\n", - "Epoch 1412: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1412: accuracy appended (80.56%)\n", - "Epoch 1412: model set back to train mode\n", - "Epoch 1412: model parameters saved\n", - "Epoch 1413 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1413: avg_loss appended (2.7778)\n", - "Epoch 1413: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1413: accuracy appended (80.56%)\n", - "Epoch 1413: model set back to train mode\n", - "Epoch 1413: model parameters saved\n", - "Epoch 1414 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1414: avg_loss appended (2.7778)\n", - "Epoch 1414: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1414: accuracy appended (80.56%)\n", - "Epoch 1414: model set back to train mode\n", - "Epoch 1414: model parameters saved\n", - "Epoch 1415 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1415: avg_loss appended (2.7778)\n", - "Epoch 1415: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1415: accuracy appended (80.56%)\n", - "Epoch 1415: model set back to train mode\n", - "Epoch 1415: model parameters saved\n", - "Epoch 1416 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1416: avg_loss appended (2.7778)\n", - "Epoch 1416: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1416: accuracy appended (80.56%)\n", - "Epoch 1416: model set back to train mode\n", - "Epoch 1416: model parameters saved\n", - "Epoch 1417 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1417: avg_loss appended (2.7778)\n", - "Epoch 1417: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1417: accuracy appended (80.56%)\n", - "Epoch 1417: model set back to train mode\n", - "Epoch 1417: model parameters saved\n", - "Epoch 1418 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1418: avg_loss appended (2.7778)\n", - "Epoch 1418: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1418: accuracy appended (80.56%)\n", - "Epoch 1418: model set back to train mode\n", - "Epoch 1418: model parameters saved\n", - "Epoch 1419 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1419: avg_loss appended (2.7778)\n", - "Epoch 1419: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1419: accuracy appended (80.56%)\n", - "Epoch 1419: model set back to train mode\n", - "Epoch 1419: model parameters saved\n", - "Epoch 1420 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1420: avg_loss appended (2.7778)\n", - "Epoch 1420: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1420: accuracy appended (80.56%)\n", - "Epoch 1420: model set back to train mode\n", - "Epoch 1420: model parameters saved\n", - "Epoch 1421 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1421: avg_loss appended (2.7778)\n", - "Epoch 1421: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1421: accuracy appended (80.56%)\n", - "Epoch 1421: model set back to train mode\n", - "Epoch 1421: model parameters saved\n", - "Epoch 1422 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1422: avg_loss appended (2.7778)\n", - "Epoch 1422: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1422: accuracy appended (80.56%)\n", - "Epoch 1422: model set back to train mode\n", - "Epoch 1422: model parameters saved\n", - "Epoch 1423 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1423: avg_loss appended (2.7778)\n", - "Epoch 1423: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1423: accuracy appended (80.56%)\n", - "Epoch 1423: model set back to train mode\n", - "Epoch 1423: model parameters saved\n", - "Epoch 1424 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1424: avg_loss appended (2.7778)\n", - "Epoch 1424: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1424: accuracy appended (80.56%)\n", - "Epoch 1424: model set back to train mode\n", - "Epoch 1424: model parameters saved\n", - "Epoch 1425 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1425: avg_loss appended (2.7778)\n", - "Epoch 1425: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1425: accuracy appended (80.56%)\n", - "Epoch 1425: model set back to train mode\n", - "Epoch 1425: model parameters saved\n", - "Epoch 1426 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1426: avg_loss appended (2.7778)\n", - "Epoch 1426: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1426: accuracy appended (80.56%)\n", - "Epoch 1426: model set back to train mode\n", - "Epoch 1426: model parameters saved\n", - "Epoch 1427 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1427: avg_loss appended (2.7778)\n", - "Epoch 1427: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1427: accuracy appended (80.56%)\n", - "Epoch 1427: model set back to train mode\n", - "Epoch 1427: model parameters saved\n", - "Epoch 1428 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1428: avg_loss appended (2.7778)\n", - "Epoch 1428: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1428: accuracy appended (80.56%)\n", - "Epoch 1428: model set back to train mode\n", - "Epoch 1428: model parameters saved\n", - "Epoch 1429 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1429: avg_loss appended (2.7778)\n", - "Epoch 1429: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1429: accuracy appended (80.56%)\n", - "Epoch 1429: model set back to train mode\n", - "Epoch 1429: model parameters saved\n", - "Epoch 1430 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1430: avg_loss appended (2.7778)\n", - "Epoch 1430: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1430: accuracy appended (80.56%)\n", - "Epoch 1430: model set back to train mode\n", - "Epoch 1430: model parameters saved\n", - "Epoch 1431 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1431: avg_loss appended (2.7778)\n", - "Epoch 1431: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1431: accuracy appended (80.56%)\n", - "Epoch 1431: model set back to train mode\n", - "Epoch 1431: model parameters saved\n", - "Epoch 1432 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1432: avg_loss appended (2.7778)\n", - "Epoch 1432: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1432: accuracy appended (80.56%)\n", - "Epoch 1432: model set back to train mode\n", - "Epoch 1432: model parameters saved\n", - "Epoch 1433 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1433: avg_loss appended (2.7778)\n", - "Epoch 1433: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1433: accuracy appended (80.56%)\n", - "Epoch 1433: model set back to train mode\n", - "Epoch 1433: model parameters saved\n", - "Epoch 1434 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1434: avg_loss appended (2.7778)\n", - "Epoch 1434: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1434: accuracy appended (80.56%)\n", - "Epoch 1434: model set back to train mode\n", - "Epoch 1434: model parameters saved\n", - "Epoch 1435 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1435: avg_loss appended (2.7778)\n", - "Epoch 1435: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1435: accuracy appended (80.56%)\n", - "Epoch 1435: model set back to train mode\n", - "Epoch 1435: model parameters saved\n", - "Epoch 1436 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1436: avg_loss appended (2.7778)\n", - "Epoch 1436: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1436: accuracy appended (80.56%)\n", - "Epoch 1436: model set back to train mode\n", - "Epoch 1436: model parameters saved\n", - "Epoch 1437 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1437: avg_loss appended (2.7778)\n", - "Epoch 1437: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1437: accuracy appended (80.56%)\n", - "Epoch 1437: model set back to train mode\n", - "Epoch 1437: model parameters saved\n", - "Epoch 1438 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1438: avg_loss appended (2.7778)\n", - "Epoch 1438: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1438: accuracy appended (80.56%)\n", - "Epoch 1438: model set back to train mode\n", - "Epoch 1438: model parameters saved\n", - "Epoch 1439 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1439: avg_loss appended (2.7778)\n", - "Epoch 1439: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1439: accuracy appended (80.56%)\n", - "Epoch 1439: model set back to train mode\n", - "Epoch 1439: model parameters saved\n", - "Epoch 1440 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1440: avg_loss appended (2.7778)\n", - "Epoch 1440: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1440: accuracy appended (80.56%)\n", - "Epoch 1440: model set back to train mode\n", - "Epoch 1440: model parameters saved\n", - "Epoch 1441 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1441: avg_loss appended (2.7778)\n", - "Epoch 1441: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1441: accuracy appended (80.56%)\n", - "Epoch 1441: model set back to train mode\n", - "Epoch 1441: model parameters saved\n", - "Epoch 1442 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1442: avg_loss appended (2.7778)\n", - "Epoch 1442: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1442: accuracy appended (80.56%)\n", - "Epoch 1442: model set back to train mode\n", - "Epoch 1442: model parameters saved\n", - "Epoch 1443 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1443: avg_loss appended (2.7778)\n", - "Epoch 1443: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1443: accuracy appended (80.56%)\n", - "Epoch 1443: model set back to train mode\n", - "Epoch 1443: model parameters saved\n", - "Epoch 1444 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1444: avg_loss appended (2.7778)\n", - "Epoch 1444: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1444: accuracy appended (80.56%)\n", - "Epoch 1444: model set back to train mode\n", - "Epoch 1444: model parameters saved\n", - "Epoch 1445 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1445: avg_loss appended (2.7778)\n", - "Epoch 1445: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1445: accuracy appended (80.56%)\n", - "Epoch 1445: model set back to train mode\n", - "Epoch 1445: model parameters saved\n", - "Epoch 1446 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1446: avg_loss appended (2.7778)\n", - "Epoch 1446: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1446: accuracy appended (80.56%)\n", - "Epoch 1446: model set back to train mode\n", - "Epoch 1446: model parameters saved\n", - "Epoch 1447 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1447: avg_loss appended (2.7778)\n", - "Epoch 1447: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1447: accuracy appended (80.56%)\n", - "Epoch 1447: model set back to train mode\n", - "Epoch 1447: model parameters saved\n", - "Epoch 1448 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1448: avg_loss appended (2.7778)\n", - "Epoch 1448: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1448: accuracy appended (80.56%)\n", - "Epoch 1448: model set back to train mode\n", - "Epoch 1448: model parameters saved\n", - "Epoch 1449 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1449: avg_loss appended (2.7778)\n", - "Epoch 1449: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1449: accuracy appended (80.56%)\n", - "Epoch 1449: model set back to train mode\n", - "Epoch 1449: model parameters saved\n", - "Epoch 1450 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1450: avg_loss appended (2.7778)\n", - "Epoch 1450: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1450: accuracy appended (80.56%)\n", - "Epoch 1450: model set back to train mode\n", - "Epoch 1450: model parameters saved\n", - "Epoch 1451 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1451: avg_loss appended (2.7778)\n", - "Epoch 1451: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1451: accuracy appended (80.56%)\n", - "Epoch 1451: model set back to train mode\n", - "Epoch 1451: model parameters saved\n", - "Epoch 1452 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1452: avg_loss appended (2.7778)\n", - "Epoch 1452: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1452: accuracy appended (80.56%)\n", - "Epoch 1452: model set back to train mode\n", - "Epoch 1452: model parameters saved\n", - "Epoch 1453 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1453: avg_loss appended (2.7778)\n", - "Epoch 1453: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1453: accuracy appended (80.56%)\n", - "Epoch 1453: model set back to train mode\n", - "Epoch 1453: model parameters saved\n", - "Epoch 1454 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1454: avg_loss appended (2.7778)\n", - "Epoch 1454: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1454: accuracy appended (80.56%)\n", - "Epoch 1454: model set back to train mode\n", - "Epoch 1454: model parameters saved\n", - "Epoch 1455 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1455: avg_loss appended (2.7778)\n", - "Epoch 1455: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1455: accuracy appended (80.56%)\n", - "Epoch 1455: model set back to train mode\n", - "Epoch 1455: model parameters saved\n", - "Epoch 1456 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1456: avg_loss appended (2.7778)\n", - "Epoch 1456: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1456: accuracy appended (80.56%)\n", - "Epoch 1456: model set back to train mode\n", - "Epoch 1456: model parameters saved\n", - "Epoch 1457 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1457: avg_loss appended (2.7778)\n", - "Epoch 1457: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1457: accuracy appended (80.56%)\n", - "Epoch 1457: model set back to train mode\n", - "Epoch 1457: model parameters saved\n", - "Epoch 1458 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1458: avg_loss appended (2.7778)\n", - "Epoch 1458: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1458: accuracy appended (80.56%)\n", - "Epoch 1458: model set back to train mode\n", - "Epoch 1458: model parameters saved\n", - "Epoch 1459 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1459: avg_loss appended (2.7778)\n", - "Epoch 1459: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1459: accuracy appended (80.56%)\n", - "Epoch 1459: model set back to train mode\n", - "Epoch 1459: model parameters saved\n", - "Epoch 1460 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1460: avg_loss appended (2.7778)\n", - "Epoch 1460: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1460: accuracy appended (80.56%)\n", - "Epoch 1460: model set back to train mode\n", - "Epoch 1460: model parameters saved\n", - "Epoch 1461 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1461: avg_loss appended (2.7778)\n", - "Epoch 1461: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1461: accuracy appended (80.56%)\n", - "Epoch 1461: model set back to train mode\n", - "Epoch 1461: model parameters saved\n", - "Epoch 1462 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1462: avg_loss appended (2.7778)\n", - "Epoch 1462: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1462: accuracy appended (80.56%)\n", - "Epoch 1462: model set back to train mode\n", - "Epoch 1462: model parameters saved\n", - "Epoch 1463 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1463: avg_loss appended (2.7778)\n", - "Epoch 1463: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1463: accuracy appended (80.56%)\n", - "Epoch 1463: model set back to train mode\n", - "Epoch 1463: model parameters saved\n", - "Epoch 1464 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1464: avg_loss appended (2.7778)\n", - "Epoch 1464: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1464: accuracy appended (80.56%)\n", - "Epoch 1464: model set back to train mode\n", - "Epoch 1464: model parameters saved\n", - "Epoch 1465 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1465: avg_loss appended (2.7778)\n", - "Epoch 1465: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1465: accuracy appended (80.56%)\n", - "Epoch 1465: model set back to train mode\n", - "Epoch 1465: model parameters saved\n", - "Epoch 1466 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1466: avg_loss appended (2.7778)\n", - "Epoch 1466: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1466: accuracy appended (80.56%)\n", - "Epoch 1466: model set back to train mode\n", - "Epoch 1466: model parameters saved\n", - "Epoch 1467 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1467: avg_loss appended (2.7778)\n", - "Epoch 1467: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1467: accuracy appended (80.56%)\n", - "Epoch 1467: model set back to train mode\n", - "Epoch 1467: model parameters saved\n", - "Epoch 1468 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1468: avg_loss appended (2.7778)\n", - "Epoch 1468: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1468: accuracy appended (80.56%)\n", - "Epoch 1468: model set back to train mode\n", - "Epoch 1468: model parameters saved\n", - "Epoch 1469 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1469: avg_loss appended (2.7778)\n", - "Epoch 1469: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1469: accuracy appended (80.56%)\n", - "Epoch 1469: model set back to train mode\n", - "Epoch 1469: model parameters saved\n", - "Epoch 1470 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1470: avg_loss appended (2.7778)\n", - "Epoch 1470: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1470: accuracy appended (80.56%)\n", - "Epoch 1470: model set back to train mode\n", - "Epoch 1470: model parameters saved\n", - "Epoch 1471 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1471: avg_loss appended (2.7778)\n", - "Epoch 1471: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1471: accuracy appended (80.56%)\n", - "Epoch 1471: model set back to train mode\n", - "Epoch 1471: model parameters saved\n", - "Epoch 1472 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1472: avg_loss appended (2.7778)\n", - "Epoch 1472: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1472: accuracy appended (80.56%)\n", - "Epoch 1472: model set back to train mode\n", - "Epoch 1472: model parameters saved\n", - "Epoch 1473 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1473: avg_loss appended (2.7778)\n", - "Epoch 1473: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1473: accuracy appended (80.56%)\n", - "Epoch 1473: model set back to train mode\n", - "Epoch 1473: model parameters saved\n", - "Epoch 1474 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1474: avg_loss appended (2.7778)\n", - "Epoch 1474: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1474: accuracy appended (80.56%)\n", - "Epoch 1474: model set back to train mode\n", - "Epoch 1474: model parameters saved\n", - "Epoch 1475 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1475: avg_loss appended (2.7778)\n", - "Epoch 1475: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1475: accuracy appended (80.56%)\n", - "Epoch 1475: model set back to train mode\n", - "Epoch 1475: model parameters saved\n", - "Epoch 1476 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1476: avg_loss appended (2.7778)\n", - "Epoch 1476: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1476: accuracy appended (80.56%)\n", - "Epoch 1476: model set back to train mode\n", - "Epoch 1476: model parameters saved\n", - "Epoch 1477 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1477: avg_loss appended (2.7778)\n", - "Epoch 1477: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1477: accuracy appended (80.56%)\n", - "Epoch 1477: model set back to train mode\n", - "Epoch 1477: model parameters saved\n", - "Epoch 1478 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1478: avg_loss appended (2.7778)\n", - "Epoch 1478: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1478: accuracy appended (80.56%)\n", - "Epoch 1478: model set back to train mode\n", - "Epoch 1478: model parameters saved\n", - "Epoch 1479 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1479: avg_loss appended (2.7778)\n", - "Epoch 1479: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1479: accuracy appended (80.56%)\n", - "Epoch 1479: model set back to train mode\n", - "Epoch 1479: model parameters saved\n", - "Epoch 1480 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1480: avg_loss appended (2.7778)\n", - "Epoch 1480: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1480: accuracy appended (80.56%)\n", - "Epoch 1480: model set back to train mode\n", - "Epoch 1480: model parameters saved\n", - "Epoch 1481 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1481: avg_loss appended (2.7778)\n", - "Epoch 1481: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1481: accuracy appended (80.56%)\n", - "Epoch 1481: model set back to train mode\n", - "Epoch 1481: model parameters saved\n", - "Epoch 1482 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1482: avg_loss appended (2.7778)\n", - "Epoch 1482: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1482: accuracy appended (80.56%)\n", - "Epoch 1482: model set back to train mode\n", - "Epoch 1482: model parameters saved\n", - "Epoch 1483 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1483: avg_loss appended (2.7778)\n", - "Epoch 1483: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1483: accuracy appended (80.56%)\n", - "Epoch 1483: model set back to train mode\n", - "Epoch 1483: model parameters saved\n", - "Epoch 1484 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1484: avg_loss appended (2.7778)\n", - "Epoch 1484: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1484: accuracy appended (80.56%)\n", - "Epoch 1484: model set back to train mode\n", - "Epoch 1484: model parameters saved\n", - "Epoch 1485 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1485: avg_loss appended (2.7778)\n", - "Epoch 1485: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1485: accuracy appended (80.56%)\n", - "Epoch 1485: model set back to train mode\n", - "Epoch 1485: model parameters saved\n", - "Epoch 1486 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1486: avg_loss appended (2.7778)\n", - "Epoch 1486: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1486: accuracy appended (80.56%)\n", - "Epoch 1486: model set back to train mode\n", - "Epoch 1486: model parameters saved\n", - "Epoch 1487 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1487: avg_loss appended (2.7778)\n", - "Epoch 1487: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1487: accuracy appended (80.56%)\n", - "Epoch 1487: model set back to train mode\n", - "Epoch 1487: model parameters saved\n", - "Epoch 1488 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1488: avg_loss appended (2.7778)\n", - "Epoch 1488: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1488: accuracy appended (80.56%)\n", - "Epoch 1488: model set back to train mode\n", - "Epoch 1488: model parameters saved\n", - "Epoch 1489 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1489: avg_loss appended (2.7778)\n", - "Epoch 1489: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1489: accuracy appended (80.56%)\n", - "Epoch 1489: model set back to train mode\n", - "Epoch 1489: model parameters saved\n", - "Epoch 1490 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1490: avg_loss appended (2.7778)\n", - "Epoch 1490: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1490: accuracy appended (80.56%)\n", - "Epoch 1490: model set back to train mode\n", - "Epoch 1490: model parameters saved\n", - "Epoch 1491 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1491: avg_loss appended (2.7778)\n", - "Epoch 1491: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1491: accuracy appended (80.56%)\n", - "Epoch 1491: model set back to train mode\n", - "Epoch 1491: model parameters saved\n", - "Epoch 1492 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1492: avg_loss appended (2.7778)\n", - "Epoch 1492: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1492: accuracy appended (80.56%)\n", - "Epoch 1492: model set back to train mode\n", - "Epoch 1492: model parameters saved\n", - "Epoch 1493 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1493: avg_loss appended (2.7778)\n", - "Epoch 1493: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1493: accuracy appended (80.56%)\n", - "Epoch 1493: model set back to train mode\n", - "Epoch 1493: model parameters saved\n", - "Epoch 1494 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1494: avg_loss appended (2.7778)\n", - "Epoch 1494: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1494: accuracy appended (80.56%)\n", - "Epoch 1494: model set back to train mode\n", - "Epoch 1494: model parameters saved\n", - "Epoch 1495 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1495: avg_loss appended (2.7778)\n", - "Epoch 1495: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1495: accuracy appended (80.56%)\n", - "Epoch 1495: model set back to train mode\n", - "Epoch 1495: model parameters saved\n", - "Epoch 1496 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1496: avg_loss appended (2.7778)\n", - "Epoch 1496: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1496: accuracy appended (80.56%)\n", - "Epoch 1496: model set back to train mode\n", - "Epoch 1496: model parameters saved\n", - "Epoch 1497 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1497: avg_loss appended (2.7778)\n", - "Epoch 1497: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1497: accuracy appended (80.56%)\n", - "Epoch 1497: model set back to train mode\n", - "Epoch 1497: model parameters saved\n", - "Epoch 1498 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1498: avg_loss appended (2.7778)\n", - "Epoch 1498: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1498: accuracy appended (80.56%)\n", - "Epoch 1498: model set back to train mode\n", - "Epoch 1498: model parameters saved\n", - "Epoch 1499 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1499: avg_loss appended (2.7778)\n", - "Epoch 1499: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1499: accuracy appended (80.56%)\n", - "Epoch 1499: model set back to train mode\n", - "Epoch 1499: model parameters saved\n", - "Epoch 1500 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1500: avg_loss appended (2.7778)\n", - "Epoch 1500: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1500: accuracy appended (80.56%)\n", - "Epoch 1500: model set back to train mode\n", - "Epoch 1500: model parameters saved\n", - "Epoch 1500/10000, Loss: 2.7778, Accuracy: 80.56%\n", - "Epoch 1501 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1501: avg_loss appended (2.7778)\n", - "Epoch 1501: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1501: accuracy appended (80.56%)\n", - "Epoch 1501: model set back to train mode\n", - "Epoch 1501: model parameters saved\n", - "Epoch 1502 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1502: avg_loss appended (2.7778)\n", - "Epoch 1502: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1502: accuracy appended (80.56%)\n", - "Epoch 1502: model set back to train mode\n", - "Epoch 1502: model parameters saved\n", - "Epoch 1503 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1503: avg_loss appended (2.7778)\n", - "Epoch 1503: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1503: accuracy appended (80.56%)\n", - "Epoch 1503: model set back to train mode\n", - "Epoch 1503: model parameters saved\n", - "Epoch 1504 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1504: avg_loss appended (2.7778)\n", - "Epoch 1504: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1504: accuracy appended (80.56%)\n", - "Epoch 1504: model set back to train mode\n", - "Epoch 1504: model parameters saved\n", - "Epoch 1505 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1505: avg_loss appended (2.7778)\n", - "Epoch 1505: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1505: accuracy appended (80.56%)\n", - "Epoch 1505: model set back to train mode\n", - "Epoch 1505: model parameters saved\n", - "Epoch 1506 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1506: avg_loss appended (2.7778)\n", - "Epoch 1506: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1506: accuracy appended (80.56%)\n", - "Epoch 1506: model set back to train mode\n", - "Epoch 1506: model parameters saved\n", - "Epoch 1507 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1507: avg_loss appended (2.7778)\n", - "Epoch 1507: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1507: accuracy appended (80.56%)\n", - "Epoch 1507: model set back to train mode\n", - "Epoch 1507: model parameters saved\n", - "Epoch 1508 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1508: avg_loss appended (2.7778)\n", - "Epoch 1508: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1508: accuracy appended (80.56%)\n", - "Epoch 1508: model set back to train mode\n", - "Epoch 1508: model parameters saved\n", - "Epoch 1509 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1509: avg_loss appended (2.7778)\n", - "Epoch 1509: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1509: accuracy appended (80.56%)\n", - "Epoch 1509: model set back to train mode\n", - "Epoch 1509: model parameters saved\n", - "Epoch 1510 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1510: avg_loss appended (2.7778)\n", - "Epoch 1510: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1510: accuracy appended (80.56%)\n", - "Epoch 1510: model set back to train mode\n", - "Epoch 1510: model parameters saved\n", - "Epoch 1511 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1511: avg_loss appended (2.7778)\n", - "Epoch 1511: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1511: accuracy appended (80.56%)\n", - "Epoch 1511: model set back to train mode\n", - "Epoch 1511: model parameters saved\n", - "Epoch 1512 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1512: avg_loss appended (2.7778)\n", - "Epoch 1512: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1512: accuracy appended (80.56%)\n", - "Epoch 1512: model set back to train mode\n", - "Epoch 1512: model parameters saved\n", - "Epoch 1513 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1513: avg_loss appended (2.7778)\n", - "Epoch 1513: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1513: accuracy appended (80.56%)\n", - "Epoch 1513: model set back to train mode\n", - "Epoch 1513: model parameters saved\n", - "Epoch 1514 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1514: avg_loss appended (2.7778)\n", - "Epoch 1514: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1514: accuracy appended (80.56%)\n", - "Epoch 1514: model set back to train mode\n", - "Epoch 1514: model parameters saved\n", - "Epoch 1515 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1515: avg_loss appended (2.7778)\n", - "Epoch 1515: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1515: accuracy appended (80.56%)\n", - "Epoch 1515: model set back to train mode\n", - "Epoch 1515: model parameters saved\n", - "Epoch 1516 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1516: avg_loss appended (2.7778)\n", - "Epoch 1516: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1516: accuracy appended (80.56%)\n", - "Epoch 1516: model set back to train mode\n", - "Epoch 1516: model parameters saved\n", - "Epoch 1517 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1517: avg_loss appended (2.7778)\n", - "Epoch 1517: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1517: accuracy appended (80.56%)\n", - "Epoch 1517: model set back to train mode\n", - "Epoch 1517: model parameters saved\n", - "Epoch 1518 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1518: avg_loss appended (2.7778)\n", - "Epoch 1518: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1518: accuracy appended (80.56%)\n", - "Epoch 1518: model set back to train mode\n", - "Epoch 1518: model parameters saved\n", - "Epoch 1519 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1519: avg_loss appended (2.7778)\n", - "Epoch 1519: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1519: accuracy appended (80.56%)\n", - "Epoch 1519: model set back to train mode\n", - "Epoch 1519: model parameters saved\n", - "Epoch 1520 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1520: avg_loss appended (2.7778)\n", - "Epoch 1520: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1520: accuracy appended (80.56%)\n", - "Epoch 1520: model set back to train mode\n", - "Epoch 1520: model parameters saved\n", - "Epoch 1521 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1521: avg_loss appended (2.7778)\n", - "Epoch 1521: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1521: accuracy appended (80.56%)\n", - "Epoch 1521: model set back to train mode\n", - "Epoch 1521: model parameters saved\n", - "Epoch 1522 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1522: avg_loss appended (2.7778)\n", - "Epoch 1522: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1522: accuracy appended (80.56%)\n", - "Epoch 1522: model set back to train mode\n", - "Epoch 1522: model parameters saved\n", - "Epoch 1523 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1523: avg_loss appended (2.7778)\n", - "Epoch 1523: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1523: accuracy appended (80.56%)\n", - "Epoch 1523: model set back to train mode\n", - "Epoch 1523: model parameters saved\n", - "Epoch 1524 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1524: avg_loss appended (2.7778)\n", - "Epoch 1524: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1524: accuracy appended (80.56%)\n", - "Epoch 1524: model set back to train mode\n", - "Epoch 1524: model parameters saved\n", - "Epoch 1525 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1525: avg_loss appended (2.7778)\n", - "Epoch 1525: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1525: accuracy appended (80.56%)\n", - "Epoch 1525: model set back to train mode\n", - "Epoch 1525: model parameters saved\n", - "Epoch 1526 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1526: avg_loss appended (2.7778)\n", - "Epoch 1526: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1526: accuracy appended (80.56%)\n", - "Epoch 1526: model set back to train mode\n", - "Epoch 1526: model parameters saved\n", - "Epoch 1527 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1527: avg_loss appended (2.7778)\n", - "Epoch 1527: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1527: accuracy appended (80.56%)\n", - "Epoch 1527: model set back to train mode\n", - "Epoch 1527: model parameters saved\n", - "Epoch 1528 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1528: avg_loss appended (2.7778)\n", - "Epoch 1528: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1528: accuracy appended (80.56%)\n", - "Epoch 1528: model set back to train mode\n", - "Epoch 1528: model parameters saved\n", - "Epoch 1529 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1529: avg_loss appended (2.7778)\n", - "Epoch 1529: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1529: accuracy appended (80.56%)\n", - "Epoch 1529: model set back to train mode\n", - "Epoch 1529: model parameters saved\n", - "Epoch 1530 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1530: avg_loss appended (2.7778)\n", - "Epoch 1530: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1530: accuracy appended (80.56%)\n", - "Epoch 1530: model set back to train mode\n", - "Epoch 1530: model parameters saved\n", - "Epoch 1531 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1531: avg_loss appended (2.7778)\n", - "Epoch 1531: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1531: accuracy appended (80.56%)\n", - "Epoch 1531: model set back to train mode\n", - "Epoch 1531: model parameters saved\n", - "Epoch 1532 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1532: avg_loss appended (2.7778)\n", - "Epoch 1532: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1532: accuracy appended (80.56%)\n", - "Epoch 1532: model set back to train mode\n", - "Epoch 1532: model parameters saved\n", - "Epoch 1533 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1533: avg_loss appended (2.7778)\n", - "Epoch 1533: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1533: accuracy appended (80.56%)\n", - "Epoch 1533: model set back to train mode\n", - "Epoch 1533: model parameters saved\n", - "Epoch 1534 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1534: avg_loss appended (2.7778)\n", - "Epoch 1534: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1534: accuracy appended (80.56%)\n", - "Epoch 1534: model set back to train mode\n", - "Epoch 1534: model parameters saved\n", - "Epoch 1535 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1535: avg_loss appended (2.7778)\n", - "Epoch 1535: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1535: accuracy appended (80.56%)\n", - "Epoch 1535: model set back to train mode\n", - "Epoch 1535: model parameters saved\n", - "Epoch 1536 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1536: avg_loss appended (2.7778)\n", - "Epoch 1536: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1536: accuracy appended (80.56%)\n", - "Epoch 1536: model set back to train mode\n", - "Epoch 1536: model parameters saved\n", - "Epoch 1537 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1537: avg_loss appended (2.7778)\n", - "Epoch 1537: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1537: accuracy appended (80.56%)\n", - "Epoch 1537: model set back to train mode\n", - "Epoch 1537: model parameters saved\n", - "Epoch 1538 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1538: avg_loss appended (2.7778)\n", - "Epoch 1538: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1538: accuracy appended (80.56%)\n", - "Epoch 1538: model set back to train mode\n", - "Epoch 1538: model parameters saved\n", - "Epoch 1539 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1539: avg_loss appended (2.7778)\n", - "Epoch 1539: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1539: accuracy appended (80.56%)\n", - "Epoch 1539: model set back to train mode\n", - "Epoch 1539: model parameters saved\n", - "Epoch 1540 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1540: avg_loss appended (2.7778)\n", - "Epoch 1540: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1540: accuracy appended (80.56%)\n", - "Epoch 1540: model set back to train mode\n", - "Epoch 1540: model parameters saved\n", - "Epoch 1541 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1541: avg_loss appended (2.7778)\n", - "Epoch 1541: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1541: accuracy appended (80.56%)\n", - "Epoch 1541: model set back to train mode\n", - "Epoch 1541: model parameters saved\n", - "Epoch 1542 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1542: avg_loss appended (2.7778)\n", - "Epoch 1542: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1542: accuracy appended (80.56%)\n", - "Epoch 1542: model set back to train mode\n", - "Epoch 1542: model parameters saved\n", - "Epoch 1543 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1543: avg_loss appended (2.7778)\n", - "Epoch 1543: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1543: accuracy appended (80.56%)\n", - "Epoch 1543: model set back to train mode\n", - "Epoch 1543: model parameters saved\n", - "Epoch 1544 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1544: avg_loss appended (2.7778)\n", - "Epoch 1544: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1544: accuracy appended (80.56%)\n", - "Epoch 1544: model set back to train mode\n", - "Epoch 1544: model parameters saved\n", - "Epoch 1545 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1545: avg_loss appended (2.7778)\n", - "Epoch 1545: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1545: accuracy appended (80.56%)\n", - "Epoch 1545: model set back to train mode\n", - "Epoch 1545: model parameters saved\n", - "Epoch 1546 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1546: avg_loss appended (2.7778)\n", - "Epoch 1546: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1546: accuracy appended (80.56%)\n", - "Epoch 1546: model set back to train mode\n", - "Epoch 1546: model parameters saved\n", - "Epoch 1547 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1547: avg_loss appended (2.7778)\n", - "Epoch 1547: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1547: accuracy appended (80.56%)\n", - "Epoch 1547: model set back to train mode\n", - "Epoch 1547: model parameters saved\n", - "Epoch 1548 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1548: avg_loss appended (2.7778)\n", - "Epoch 1548: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1548: accuracy appended (80.56%)\n", - "Epoch 1548: model set back to train mode\n", - "Epoch 1548: model parameters saved\n", - "Epoch 1549 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1549: avg_loss appended (2.7778)\n", - "Epoch 1549: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1549: accuracy appended (80.56%)\n", - "Epoch 1549: model set back to train mode\n", - "Epoch 1549: model parameters saved\n", - "Epoch 1550 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1550: avg_loss appended (2.7778)\n", - "Epoch 1550: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1550: accuracy appended (80.56%)\n", - "Epoch 1550: model set back to train mode\n", - "Epoch 1550: model parameters saved\n", - "Epoch 1551 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1551: avg_loss appended (2.7778)\n", - "Epoch 1551: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1551: accuracy appended (80.56%)\n", - "Epoch 1551: model set back to train mode\n", - "Epoch 1551: model parameters saved\n", - "Epoch 1552 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1552: avg_loss appended (2.7778)\n", - "Epoch 1552: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1552: accuracy appended (80.56%)\n", - "Epoch 1552: model set back to train mode\n", - "Epoch 1552: model parameters saved\n", - "Epoch 1553 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1553: avg_loss appended (2.7778)\n", - "Epoch 1553: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1553: accuracy appended (80.56%)\n", - "Epoch 1553: model set back to train mode\n", - "Epoch 1553: model parameters saved\n", - "Epoch 1554 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1554: avg_loss appended (2.7778)\n", - "Epoch 1554: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1554: accuracy appended (80.56%)\n", - "Epoch 1554: model set back to train mode\n", - "Epoch 1554: model parameters saved\n", - "Epoch 1555 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1555: avg_loss appended (2.7778)\n", - "Epoch 1555: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1555: accuracy appended (80.56%)\n", - "Epoch 1555: model set back to train mode\n", - "Epoch 1555: model parameters saved\n", - "Epoch 1556 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1556: avg_loss appended (2.7778)\n", - "Epoch 1556: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1556: accuracy appended (80.56%)\n", - "Epoch 1556: model set back to train mode\n", - "Epoch 1556: model parameters saved\n", - "Epoch 1557 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1557: avg_loss appended (2.7778)\n", - "Epoch 1557: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1557: accuracy appended (80.56%)\n", - "Epoch 1557: model set back to train mode\n", - "Epoch 1557: model parameters saved\n", - "Epoch 1558 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1558: avg_loss appended (2.7778)\n", - "Epoch 1558: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1558: accuracy appended (80.56%)\n", - "Epoch 1558: model set back to train mode\n", - "Epoch 1558: model parameters saved\n", - "Epoch 1559 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1559: avg_loss appended (2.7778)\n", - "Epoch 1559: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1559: accuracy appended (80.56%)\n", - "Epoch 1559: model set back to train mode\n", - "Epoch 1559: model parameters saved\n", - "Epoch 1560 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1560: avg_loss appended (2.7778)\n", - "Epoch 1560: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1560: accuracy appended (80.56%)\n", - "Epoch 1560: model set back to train mode\n", - "Epoch 1560: model parameters saved\n", - "Epoch 1561 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1561: avg_loss appended (2.7778)\n", - "Epoch 1561: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1561: accuracy appended (80.56%)\n", - "Epoch 1561: model set back to train mode\n", - "Epoch 1561: model parameters saved\n", - "Epoch 1562 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1562: avg_loss appended (2.7778)\n", - "Epoch 1562: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1562: accuracy appended (80.56%)\n", - "Epoch 1562: model set back to train mode\n", - "Epoch 1562: model parameters saved\n", - "Epoch 1563 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1563: avg_loss appended (2.7778)\n", - "Epoch 1563: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1563: accuracy appended (80.56%)\n", - "Epoch 1563: model set back to train mode\n", - "Epoch 1563: model parameters saved\n", - "Epoch 1564 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1564: avg_loss appended (2.7778)\n", - "Epoch 1564: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1564: accuracy appended (80.56%)\n", - "Epoch 1564: model set back to train mode\n", - "Epoch 1564: model parameters saved\n", - "Epoch 1565 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1565: avg_loss appended (2.7778)\n", - "Epoch 1565: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1565: accuracy appended (80.56%)\n", - "Epoch 1565: model set back to train mode\n", - "Epoch 1565: model parameters saved\n", - "Epoch 1566 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1566: avg_loss appended (2.7778)\n", - "Epoch 1566: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1566: accuracy appended (80.56%)\n", - "Epoch 1566: model set back to train mode\n", - "Epoch 1566: model parameters saved\n", - "Epoch 1567 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1567: avg_loss appended (2.7778)\n", - "Epoch 1567: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1567: accuracy appended (80.56%)\n", - "Epoch 1567: model set back to train mode\n", - "Epoch 1567: model parameters saved\n", - "Epoch 1568 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1568: avg_loss appended (2.7778)\n", - "Epoch 1568: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1568: accuracy appended (80.56%)\n", - "Epoch 1568: model set back to train mode\n", - "Epoch 1568: model parameters saved\n", - "Epoch 1569 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1569: avg_loss appended (2.7778)\n", - "Epoch 1569: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1569: accuracy appended (80.56%)\n", - "Epoch 1569: model set back to train mode\n", - "Epoch 1569: model parameters saved\n", - "Epoch 1570 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1570: avg_loss appended (2.7778)\n", - "Epoch 1570: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1570: accuracy appended (80.56%)\n", - "Epoch 1570: model set back to train mode\n", - "Epoch 1570: model parameters saved\n", - "Epoch 1571 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1571: avg_loss appended (2.7778)\n", - "Epoch 1571: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1571: accuracy appended (80.56%)\n", - "Epoch 1571: model set back to train mode\n", - "Epoch 1571: model parameters saved\n", - "Epoch 1572 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1572: avg_loss appended (2.7778)\n", - "Epoch 1572: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1572: accuracy appended (80.56%)\n", - "Epoch 1572: model set back to train mode\n", - "Epoch 1572: model parameters saved\n", - "Epoch 1573 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1573: avg_loss appended (2.7778)\n", - "Epoch 1573: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1573: accuracy appended (80.56%)\n", - "Epoch 1573: model set back to train mode\n", - "Epoch 1573: model parameters saved\n", - "Epoch 1574 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1574: avg_loss appended (2.7778)\n", - "Epoch 1574: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1574: accuracy appended (80.56%)\n", - "Epoch 1574: model set back to train mode\n", - "Epoch 1574: model parameters saved\n", - "Epoch 1575 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1575: avg_loss appended (2.7778)\n", - "Epoch 1575: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1575: accuracy appended (80.56%)\n", - "Epoch 1575: model set back to train mode\n", - "Epoch 1575: model parameters saved\n", - "Epoch 1576 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1576: avg_loss appended (2.7778)\n", - "Epoch 1576: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 1576: accuracy appended (80.56%)\n", - "Epoch 1576: model set back to train mode\n", - "Epoch 1576: model parameters saved\n", - "Epoch 1577 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1577: avg_loss appended (2.7778)\n", - "Epoch 1577: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1577: accuracy appended (77.78%)\n", - "Epoch 1577: model set back to train mode\n", - "Epoch 1577: model parameters saved\n", - "Epoch 1578 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1578: avg_loss appended (2.7778)\n", - "Epoch 1578: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1578: accuracy appended (77.78%)\n", - "Epoch 1578: model set back to train mode\n", - "Epoch 1578: model parameters saved\n", - "Epoch 1579 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1579: avg_loss appended (2.7778)\n", - "Epoch 1579: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1579: accuracy appended (77.78%)\n", - "Epoch 1579: model set back to train mode\n", - "Epoch 1579: model parameters saved\n", - "Epoch 1580 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1580: avg_loss appended (2.7778)\n", - "Epoch 1580: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1580: accuracy appended (77.78%)\n", - "Epoch 1580: model set back to train mode\n", - "Epoch 1580: model parameters saved\n", - "Epoch 1581 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1581: avg_loss appended (2.7778)\n", - "Epoch 1581: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1581: accuracy appended (77.78%)\n", - "Epoch 1581: model set back to train mode\n", - "Epoch 1581: model parameters saved\n", - "Epoch 1582 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1582: avg_loss appended (2.7778)\n", - "Epoch 1582: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1582: accuracy appended (77.78%)\n", - "Epoch 1582: model set back to train mode\n", - "Epoch 1582: model parameters saved\n", - "Epoch 1583 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1583: avg_loss appended (2.7778)\n", - "Epoch 1583: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1583: accuracy appended (77.78%)\n", - "Epoch 1583: model set back to train mode\n", - "Epoch 1583: model parameters saved\n", - "Epoch 1584 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1584: avg_loss appended (2.7778)\n", - "Epoch 1584: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1584: accuracy appended (77.78%)\n", - "Epoch 1584: model set back to train mode\n", - "Epoch 1584: model parameters saved\n", - "Epoch 1585 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1585: avg_loss appended (2.7778)\n", - "Epoch 1585: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1585: accuracy appended (77.78%)\n", - "Epoch 1585: model set back to train mode\n", - "Epoch 1585: model parameters saved\n", - "Epoch 1586 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1586: avg_loss appended (2.7778)\n", - "Epoch 1586: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1586: accuracy appended (77.78%)\n", - "Epoch 1586: model set back to train mode\n", - "Epoch 1586: model parameters saved\n", - "Epoch 1587 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1587: avg_loss appended (2.7778)\n", - "Epoch 1587: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1587: accuracy appended (77.78%)\n", - "Epoch 1587: model set back to train mode\n", - "Epoch 1587: model parameters saved\n", - "Epoch 1588 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1588: avg_loss appended (2.7778)\n", - "Epoch 1588: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1588: accuracy appended (77.78%)\n", - "Epoch 1588: model set back to train mode\n", - "Epoch 1588: model parameters saved\n", - "Epoch 1589 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1589: avg_loss appended (2.7778)\n", - "Epoch 1589: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1589: accuracy appended (77.78%)\n", - "Epoch 1589: model set back to train mode\n", - "Epoch 1589: model parameters saved\n", - "Epoch 1590 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1590: avg_loss appended (2.7778)\n", - "Epoch 1590: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1590: accuracy appended (77.78%)\n", - "Epoch 1590: model set back to train mode\n", - "Epoch 1590: model parameters saved\n", - "Epoch 1591 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1591: avg_loss appended (2.7778)\n", - "Epoch 1591: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1591: accuracy appended (77.78%)\n", - "Epoch 1591: model set back to train mode\n", - "Epoch 1591: model parameters saved\n", - "Epoch 1592 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1592: avg_loss appended (2.7778)\n", - "Epoch 1592: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1592: accuracy appended (77.78%)\n", - "Epoch 1592: model set back to train mode\n", - "Epoch 1592: model parameters saved\n", - "Epoch 1593 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1593: avg_loss appended (2.7778)\n", - "Epoch 1593: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1593: accuracy appended (77.78%)\n", - "Epoch 1593: model set back to train mode\n", - "Epoch 1593: model parameters saved\n", - "Epoch 1594 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1594: avg_loss appended (2.7778)\n", - "Epoch 1594: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1594: accuracy appended (77.78%)\n", - "Epoch 1594: model set back to train mode\n", - "Epoch 1594: model parameters saved\n", - "Epoch 1595 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1595: avg_loss appended (2.7778)\n", - "Epoch 1595: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1595: accuracy appended (77.78%)\n", - "Epoch 1595: model set back to train mode\n", - "Epoch 1595: model parameters saved\n", - "Epoch 1596 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1596: avg_loss appended (2.7778)\n", - "Epoch 1596: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1596: accuracy appended (77.78%)\n", - "Epoch 1596: model set back to train mode\n", - "Epoch 1596: model parameters saved\n", - "Epoch 1597 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1597: avg_loss appended (2.7778)\n", - "Epoch 1597: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1597: accuracy appended (77.78%)\n", - "Epoch 1597: model set back to train mode\n", - "Epoch 1597: model parameters saved\n", - "Epoch 1598 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1598: avg_loss appended (2.7778)\n", - "Epoch 1598: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1598: accuracy appended (77.78%)\n", - "Epoch 1598: model set back to train mode\n", - "Epoch 1598: model parameters saved\n", - "Epoch 1599 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1599: avg_loss appended (2.7778)\n", - "Epoch 1599: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1599: accuracy appended (77.78%)\n", - "Epoch 1599: model set back to train mode\n", - "Epoch 1599: model parameters saved\n", - "Epoch 1600 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1600: avg_loss appended (2.7778)\n", - "Epoch 1600: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1600: accuracy appended (77.78%)\n", - "Epoch 1600: model set back to train mode\n", - "Epoch 1600: model parameters saved\n", - "Epoch 1600/10000, Loss: 2.7778, Accuracy: 77.78%\n", - "Epoch 1601 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1601: avg_loss appended (2.7778)\n", - "Epoch 1601: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1601: accuracy appended (77.78%)\n", - "Epoch 1601: model set back to train mode\n", - "Epoch 1601: model parameters saved\n", - "Epoch 1602 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1602: avg_loss appended (2.7778)\n", - "Epoch 1602: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1602: accuracy appended (77.78%)\n", - "Epoch 1602: model set back to train mode\n", - "Epoch 1602: model parameters saved\n", - "Epoch 1603 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1603: avg_loss appended (2.7778)\n", - "Epoch 1603: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1603: accuracy appended (77.78%)\n", - "Epoch 1603: model set back to train mode\n", - "Epoch 1603: model parameters saved\n", - "Epoch 1604 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1604: avg_loss appended (2.7778)\n", - "Epoch 1604: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1604: accuracy appended (77.78%)\n", - "Epoch 1604: model set back to train mode\n", - "Epoch 1604: model parameters saved\n", - "Epoch 1605 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1605: avg_loss appended (2.7778)\n", - "Epoch 1605: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1605: accuracy appended (77.78%)\n", - "Epoch 1605: model set back to train mode\n", - "Epoch 1605: model parameters saved\n", - "Epoch 1606 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1606: avg_loss appended (2.7778)\n", - "Epoch 1606: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1606: accuracy appended (77.78%)\n", - "Epoch 1606: model set back to train mode\n", - "Epoch 1606: model parameters saved\n", - "Epoch 1607 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1607: avg_loss appended (2.7778)\n", - "Epoch 1607: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1607: accuracy appended (77.78%)\n", - "Epoch 1607: model set back to train mode\n", - "Epoch 1607: model parameters saved\n", - "Epoch 1608 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1608: avg_loss appended (2.7778)\n", - "Epoch 1608: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1608: accuracy appended (77.78%)\n", - "Epoch 1608: model set back to train mode\n", - "Epoch 1608: model parameters saved\n", - "Epoch 1609 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1609: avg_loss appended (2.7778)\n", - "Epoch 1609: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1609: accuracy appended (77.78%)\n", - "Epoch 1609: model set back to train mode\n", - "Epoch 1609: model parameters saved\n", - "Epoch 1610 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1610: avg_loss appended (2.7778)\n", - "Epoch 1610: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1610: accuracy appended (77.78%)\n", - "Epoch 1610: model set back to train mode\n", - "Epoch 1610: model parameters saved\n", - "Epoch 1611 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1611: avg_loss appended (2.7778)\n", - "Epoch 1611: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1611: accuracy appended (77.78%)\n", - "Epoch 1611: model set back to train mode\n", - "Epoch 1611: model parameters saved\n", - "Epoch 1612 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1612: avg_loss appended (2.7778)\n", - "Epoch 1612: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1612: accuracy appended (77.78%)\n", - "Epoch 1612: model set back to train mode\n", - "Epoch 1612: model parameters saved\n", - "Epoch 1613 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1613: avg_loss appended (2.7778)\n", - "Epoch 1613: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1613: accuracy appended (77.78%)\n", - "Epoch 1613: model set back to train mode\n", - "Epoch 1613: model parameters saved\n", - "Epoch 1614 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1614: avg_loss appended (2.7778)\n", - "Epoch 1614: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1614: accuracy appended (77.78%)\n", - "Epoch 1614: model set back to train mode\n", - "Epoch 1614: model parameters saved\n", - "Epoch 1615 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1615: avg_loss appended (2.7778)\n", - "Epoch 1615: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1615: accuracy appended (77.78%)\n", - "Epoch 1615: model set back to train mode\n", - "Epoch 1615: model parameters saved\n", - "Epoch 1616 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1616: avg_loss appended (2.7778)\n", - "Epoch 1616: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1616: accuracy appended (77.78%)\n", - "Epoch 1616: model set back to train mode\n", - "Epoch 1616: model parameters saved\n", - "Epoch 1617 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1617: avg_loss appended (2.7778)\n", - "Epoch 1617: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1617: accuracy appended (77.78%)\n", - "Epoch 1617: model set back to train mode\n", - "Epoch 1617: model parameters saved\n", - "Epoch 1618 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1618: avg_loss appended (2.7778)\n", - "Epoch 1618: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1618: accuracy appended (77.78%)\n", - "Epoch 1618: model set back to train mode\n", - "Epoch 1618: model parameters saved\n", - "Epoch 1619 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1619: avg_loss appended (2.7778)\n", - "Epoch 1619: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1619: accuracy appended (77.78%)\n", - "Epoch 1619: model set back to train mode\n", - "Epoch 1619: model parameters saved\n", - "Epoch 1620 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1620: avg_loss appended (2.7778)\n", - "Epoch 1620: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1620: accuracy appended (77.78%)\n", - "Epoch 1620: model set back to train mode\n", - "Epoch 1620: model parameters saved\n", - "Epoch 1621 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1621: avg_loss appended (2.7778)\n", - "Epoch 1621: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1621: accuracy appended (77.78%)\n", - "Epoch 1621: model set back to train mode\n", - "Epoch 1621: model parameters saved\n", - "Epoch 1622 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1622: avg_loss appended (2.7778)\n", - "Epoch 1622: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1622: accuracy appended (77.78%)\n", - "Epoch 1622: model set back to train mode\n", - "Epoch 1622: model parameters saved\n", - "Epoch 1623 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1623: avg_loss appended (2.7778)\n", - "Epoch 1623: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1623: accuracy appended (77.78%)\n", - "Epoch 1623: model set back to train mode\n", - "Epoch 1623: model parameters saved\n", - "Epoch 1624 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1624: avg_loss appended (2.7778)\n", - "Epoch 1624: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1624: accuracy appended (77.78%)\n", - "Epoch 1624: model set back to train mode\n", - "Epoch 1624: model parameters saved\n", - "Epoch 1625 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1625: avg_loss appended (2.7778)\n", - "Epoch 1625: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1625: accuracy appended (77.78%)\n", - "Epoch 1625: model set back to train mode\n", - "Epoch 1625: model parameters saved\n", - "Epoch 1626 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1626: avg_loss appended (2.7778)\n", - "Epoch 1626: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1626: accuracy appended (77.78%)\n", - "Epoch 1626: model set back to train mode\n", - "Epoch 1626: model parameters saved\n", - "Epoch 1627 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1627: avg_loss appended (2.7778)\n", - "Epoch 1627: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1627: accuracy appended (77.78%)\n", - "Epoch 1627: model set back to train mode\n", - "Epoch 1627: model parameters saved\n", - "Epoch 1628 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1628: avg_loss appended (2.7778)\n", - "Epoch 1628: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1628: accuracy appended (77.78%)\n", - "Epoch 1628: model set back to train mode\n", - "Epoch 1628: model parameters saved\n", - "Epoch 1629 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1629: avg_loss appended (2.7778)\n", - "Epoch 1629: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1629: accuracy appended (77.78%)\n", - "Epoch 1629: model set back to train mode\n", - "Epoch 1629: model parameters saved\n", - "Epoch 1630 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1630: avg_loss appended (2.7778)\n", - "Epoch 1630: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1630: accuracy appended (77.78%)\n", - "Epoch 1630: model set back to train mode\n", - "Epoch 1630: model parameters saved\n", - "Epoch 1631 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1631: avg_loss appended (2.7778)\n", - "Epoch 1631: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1631: accuracy appended (77.78%)\n", - "Epoch 1631: model set back to train mode\n", - "Epoch 1631: model parameters saved\n", - "Epoch 1632 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1632: avg_loss appended (2.7778)\n", - "Epoch 1632: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1632: accuracy appended (77.78%)\n", - "Epoch 1632: model set back to train mode\n", - "Epoch 1632: model parameters saved\n", - "Epoch 1633 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1633: avg_loss appended (2.7778)\n", - "Epoch 1633: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1633: accuracy appended (77.78%)\n", - "Epoch 1633: model set back to train mode\n", - "Epoch 1633: model parameters saved\n", - "Epoch 1634 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1634: avg_loss appended (2.7778)\n", - "Epoch 1634: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1634: accuracy appended (77.78%)\n", - "Epoch 1634: model set back to train mode\n", - "Epoch 1634: model parameters saved\n", - "Epoch 1635 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1635: avg_loss appended (2.7778)\n", - "Epoch 1635: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1635: accuracy appended (77.78%)\n", - "Epoch 1635: model set back to train mode\n", - "Epoch 1635: model parameters saved\n", - "Epoch 1636 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1636: avg_loss appended (2.7778)\n", - "Epoch 1636: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1636: accuracy appended (77.78%)\n", - "Epoch 1636: model set back to train mode\n", - "Epoch 1636: model parameters saved\n", - "Epoch 1637 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1637: avg_loss appended (2.7778)\n", - "Epoch 1637: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1637: accuracy appended (77.78%)\n", - "Epoch 1637: model set back to train mode\n", - "Epoch 1637: model parameters saved\n", - "Epoch 1638 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1638: avg_loss appended (2.7778)\n", - "Epoch 1638: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1638: accuracy appended (77.78%)\n", - "Epoch 1638: model set back to train mode\n", - "Epoch 1638: model parameters saved\n", - "Epoch 1639 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1639: avg_loss appended (2.7778)\n", - "Epoch 1639: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1639: accuracy appended (77.78%)\n", - "Epoch 1639: model set back to train mode\n", - "Epoch 1639: model parameters saved\n", - "Epoch 1640 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1640: avg_loss appended (2.7778)\n", - "Epoch 1640: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1640: accuracy appended (77.78%)\n", - "Epoch 1640: model set back to train mode\n", - "Epoch 1640: model parameters saved\n", - "Epoch 1641 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1641: avg_loss appended (2.7778)\n", - "Epoch 1641: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1641: accuracy appended (77.78%)\n", - "Epoch 1641: model set back to train mode\n", - "Epoch 1641: model parameters saved\n", - "Epoch 1642 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1642: avg_loss appended (2.7778)\n", - "Epoch 1642: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1642: accuracy appended (77.78%)\n", - "Epoch 1642: model set back to train mode\n", - "Epoch 1642: model parameters saved\n", - "Epoch 1643 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1643: avg_loss appended (2.7778)\n", - "Epoch 1643: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1643: accuracy appended (77.78%)\n", - "Epoch 1643: model set back to train mode\n", - "Epoch 1643: model parameters saved\n", - "Epoch 1644 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1644: avg_loss appended (2.7778)\n", - "Epoch 1644: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1644: accuracy appended (77.78%)\n", - "Epoch 1644: model set back to train mode\n", - "Epoch 1644: model parameters saved\n", - "Epoch 1645 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1645: avg_loss appended (2.7778)\n", - "Epoch 1645: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1645: accuracy appended (77.78%)\n", - "Epoch 1645: model set back to train mode\n", - "Epoch 1645: model parameters saved\n", - "Epoch 1646 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1646: avg_loss appended (2.7778)\n", - "Epoch 1646: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1646: accuracy appended (77.78%)\n", - "Epoch 1646: model set back to train mode\n", - "Epoch 1646: model parameters saved\n", - "Epoch 1647 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1647: avg_loss appended (2.7778)\n", - "Epoch 1647: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1647: accuracy appended (77.78%)\n", - "Epoch 1647: model set back to train mode\n", - "Epoch 1647: model parameters saved\n", - "Epoch 1648 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1648: avg_loss appended (2.7778)\n", - "Epoch 1648: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1648: accuracy appended (77.78%)\n", - "Epoch 1648: model set back to train mode\n", - "Epoch 1648: model parameters saved\n", - "Epoch 1649 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1649: avg_loss appended (2.7778)\n", - "Epoch 1649: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1649: accuracy appended (77.78%)\n", - "Epoch 1649: model set back to train mode\n", - "Epoch 1649: model parameters saved\n", - "Epoch 1650 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1650: avg_loss appended (2.7778)\n", - "Epoch 1650: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1650: accuracy appended (77.78%)\n", - "Epoch 1650: model set back to train mode\n", - "Epoch 1650: model parameters saved\n", - "Epoch 1651 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1651: avg_loss appended (2.7778)\n", - "Epoch 1651: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1651: accuracy appended (77.78%)\n", - "Epoch 1651: model set back to train mode\n", - "Epoch 1651: model parameters saved\n", - "Epoch 1652 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1652: avg_loss appended (2.7778)\n", - "Epoch 1652: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1652: accuracy appended (77.78%)\n", - "Epoch 1652: model set back to train mode\n", - "Epoch 1652: model parameters saved\n", - "Epoch 1653 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1653: avg_loss appended (2.7778)\n", - "Epoch 1653: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1653: accuracy appended (77.78%)\n", - "Epoch 1653: model set back to train mode\n", - "Epoch 1653: model parameters saved\n", - "Epoch 1654 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1654: avg_loss appended (2.7778)\n", - "Epoch 1654: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1654: accuracy appended (77.78%)\n", - "Epoch 1654: model set back to train mode\n", - "Epoch 1654: model parameters saved\n", - "Epoch 1655 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1655: avg_loss appended (2.7778)\n", - "Epoch 1655: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1655: accuracy appended (77.78%)\n", - "Epoch 1655: model set back to train mode\n", - "Epoch 1655: model parameters saved\n", - "Epoch 1656 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1656: avg_loss appended (2.7778)\n", - "Epoch 1656: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1656: accuracy appended (77.78%)\n", - "Epoch 1656: model set back to train mode\n", - "Epoch 1656: model parameters saved\n", - "Epoch 1657 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1657: avg_loss appended (2.7778)\n", - "Epoch 1657: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1657: accuracy appended (77.78%)\n", - "Epoch 1657: model set back to train mode\n", - "Epoch 1657: model parameters saved\n", - "Epoch 1658 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1658: avg_loss appended (2.7778)\n", - "Epoch 1658: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1658: accuracy appended (77.78%)\n", - "Epoch 1658: model set back to train mode\n", - "Epoch 1658: model parameters saved\n", - "Epoch 1659 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1659: avg_loss appended (2.7778)\n", - "Epoch 1659: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1659: accuracy appended (77.78%)\n", - "Epoch 1659: model set back to train mode\n", - "Epoch 1659: model parameters saved\n", - "Epoch 1660 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1660: avg_loss appended (2.7778)\n", - "Epoch 1660: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1660: accuracy appended (77.78%)\n", - "Epoch 1660: model set back to train mode\n", - "Epoch 1660: model parameters saved\n", - "Epoch 1661 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1661: avg_loss appended (2.7778)\n", - "Epoch 1661: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1661: accuracy appended (77.78%)\n", - "Epoch 1661: model set back to train mode\n", - "Epoch 1661: model parameters saved\n", - "Epoch 1662 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1662: avg_loss appended (2.7778)\n", - "Epoch 1662: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1662: accuracy appended (77.78%)\n", - "Epoch 1662: model set back to train mode\n", - "Epoch 1662: model parameters saved\n", - "Epoch 1663 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1663: avg_loss appended (2.7778)\n", - "Epoch 1663: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1663: accuracy appended (77.78%)\n", - "Epoch 1663: model set back to train mode\n", - "Epoch 1663: model parameters saved\n", - "Epoch 1664 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1664: avg_loss appended (2.7778)\n", - "Epoch 1664: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1664: accuracy appended (77.78%)\n", - "Epoch 1664: model set back to train mode\n", - "Epoch 1664: model parameters saved\n", - "Epoch 1665 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1665: avg_loss appended (2.7778)\n", - "Epoch 1665: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1665: accuracy appended (77.78%)\n", - "Epoch 1665: model set back to train mode\n", - "Epoch 1665: model parameters saved\n", - "Epoch 1666 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1666: avg_loss appended (2.7778)\n", - "Epoch 1666: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1666: accuracy appended (77.78%)\n", - "Epoch 1666: model set back to train mode\n", - "Epoch 1666: model parameters saved\n", - "Epoch 1667 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1667: avg_loss appended (2.7778)\n", - "Epoch 1667: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1667: accuracy appended (77.78%)\n", - "Epoch 1667: model set back to train mode\n", - "Epoch 1667: model parameters saved\n", - "Epoch 1668 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1668: avg_loss appended (2.7778)\n", - "Epoch 1668: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1668: accuracy appended (77.78%)\n", - "Epoch 1668: model set back to train mode\n", - "Epoch 1668: model parameters saved\n", - "Epoch 1669 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1669: avg_loss appended (2.7778)\n", - "Epoch 1669: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1669: accuracy appended (77.78%)\n", - "Epoch 1669: model set back to train mode\n", - "Epoch 1669: model parameters saved\n", - "Epoch 1670 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1670: avg_loss appended (2.7778)\n", - "Epoch 1670: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1670: accuracy appended (77.78%)\n", - "Epoch 1670: model set back to train mode\n", - "Epoch 1670: model parameters saved\n", - "Epoch 1671 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1671: avg_loss appended (2.7778)\n", - "Epoch 1671: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1671: accuracy appended (77.78%)\n", - "Epoch 1671: model set back to train mode\n", - "Epoch 1671: model parameters saved\n", - "Epoch 1672 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1672: avg_loss appended (2.7778)\n", - "Epoch 1672: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1672: accuracy appended (77.78%)\n", - "Epoch 1672: model set back to train mode\n", - "Epoch 1672: model parameters saved\n", - "Epoch 1673 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1673: avg_loss appended (2.7778)\n", - "Epoch 1673: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1673: accuracy appended (77.78%)\n", - "Epoch 1673: model set back to train mode\n", - "Epoch 1673: model parameters saved\n", - "Epoch 1674 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1674: avg_loss appended (2.7778)\n", - "Epoch 1674: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1674: accuracy appended (77.78%)\n", - "Epoch 1674: model set back to train mode\n", - "Epoch 1674: model parameters saved\n", - "Epoch 1675 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1675: avg_loss appended (2.7778)\n", - "Epoch 1675: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1675: accuracy appended (77.78%)\n", - "Epoch 1675: model set back to train mode\n", - "Epoch 1675: model parameters saved\n", - "Epoch 1676 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1676: avg_loss appended (2.7778)\n", - "Epoch 1676: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1676: accuracy appended (77.78%)\n", - "Epoch 1676: model set back to train mode\n", - "Epoch 1676: model parameters saved\n", - "Epoch 1677 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1677: avg_loss appended (2.7778)\n", - "Epoch 1677: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1677: accuracy appended (77.78%)\n", - "Epoch 1677: model set back to train mode\n", - "Epoch 1677: model parameters saved\n", - "Epoch 1678 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1678: avg_loss appended (2.7778)\n", - "Epoch 1678: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1678: accuracy appended (77.78%)\n", - "Epoch 1678: model set back to train mode\n", - "Epoch 1678: model parameters saved\n", - "Epoch 1679 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1679: avg_loss appended (2.7778)\n", - "Epoch 1679: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1679: accuracy appended (77.78%)\n", - "Epoch 1679: model set back to train mode\n", - "Epoch 1679: model parameters saved\n", - "Epoch 1680 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1680: avg_loss appended (2.7778)\n", - "Epoch 1680: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1680: accuracy appended (77.78%)\n", - "Epoch 1680: model set back to train mode\n", - "Epoch 1680: model parameters saved\n", - "Epoch 1681 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1681: avg_loss appended (2.7778)\n", - "Epoch 1681: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1681: accuracy appended (77.78%)\n", - "Epoch 1681: model set back to train mode\n", - "Epoch 1681: model parameters saved\n", - "Epoch 1682 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1682: avg_loss appended (2.7778)\n", - "Epoch 1682: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1682: accuracy appended (77.78%)\n", - "Epoch 1682: model set back to train mode\n", - "Epoch 1682: model parameters saved\n", - "Epoch 1683 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1683: avg_loss appended (2.7778)\n", - "Epoch 1683: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1683: accuracy appended (77.78%)\n", - "Epoch 1683: model set back to train mode\n", - "Epoch 1683: model parameters saved\n", - "Epoch 1684 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1684: avg_loss appended (2.7778)\n", - "Epoch 1684: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1684: accuracy appended (77.78%)\n", - "Epoch 1684: model set back to train mode\n", - "Epoch 1684: model parameters saved\n", - "Epoch 1685 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1685: avg_loss appended (2.7778)\n", - "Epoch 1685: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1685: accuracy appended (77.78%)\n", - "Epoch 1685: model set back to train mode\n", - "Epoch 1685: model parameters saved\n", - "Epoch 1686 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1686: avg_loss appended (2.7778)\n", - "Epoch 1686: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1686: accuracy appended (77.78%)\n", - "Epoch 1686: model set back to train mode\n", - "Epoch 1686: model parameters saved\n", - "Epoch 1687 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1687: avg_loss appended (2.7778)\n", - "Epoch 1687: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1687: accuracy appended (77.78%)\n", - "Epoch 1687: model set back to train mode\n", - "Epoch 1687: model parameters saved\n", - "Epoch 1688 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1688: avg_loss appended (2.7778)\n", - "Epoch 1688: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1688: accuracy appended (77.78%)\n", - "Epoch 1688: model set back to train mode\n", - "Epoch 1688: model parameters saved\n", - "Epoch 1689 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1689: avg_loss appended (2.7778)\n", - "Epoch 1689: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1689: accuracy appended (77.78%)\n", - "Epoch 1689: model set back to train mode\n", - "Epoch 1689: model parameters saved\n", - "Epoch 1690 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1690: avg_loss appended (2.7778)\n", - "Epoch 1690: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1690: accuracy appended (77.78%)\n", - "Epoch 1690: model set back to train mode\n", - "Epoch 1690: model parameters saved\n", - "Epoch 1691 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1691: avg_loss appended (2.7778)\n", - "Epoch 1691: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1691: accuracy appended (77.78%)\n", - "Epoch 1691: model set back to train mode\n", - "Epoch 1691: model parameters saved\n", - "Epoch 1692 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1692: avg_loss appended (2.7778)\n", - "Epoch 1692: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1692: accuracy appended (77.78%)\n", - "Epoch 1692: model set back to train mode\n", - "Epoch 1692: model parameters saved\n", - "Epoch 1693 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1693: avg_loss appended (2.7778)\n", - "Epoch 1693: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1693: accuracy appended (77.78%)\n", - "Epoch 1693: model set back to train mode\n", - "Epoch 1693: model parameters saved\n", - "Epoch 1694 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1694: avg_loss appended (2.7778)\n", - "Epoch 1694: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1694: accuracy appended (77.78%)\n", - "Epoch 1694: model set back to train mode\n", - "Epoch 1694: model parameters saved\n", - "Epoch 1695 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1695: avg_loss appended (2.7778)\n", - "Epoch 1695: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1695: accuracy appended (77.78%)\n", - "Epoch 1695: model set back to train mode\n", - "Epoch 1695: model parameters saved\n", - "Epoch 1696 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1696: avg_loss appended (2.7778)\n", - "Epoch 1696: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1696: accuracy appended (77.78%)\n", - "Epoch 1696: model set back to train mode\n", - "Epoch 1696: model parameters saved\n", - "Epoch 1697 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1697: avg_loss appended (2.7778)\n", - "Epoch 1697: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1697: accuracy appended (77.78%)\n", - "Epoch 1697: model set back to train mode\n", - "Epoch 1697: model parameters saved\n", - "Epoch 1698 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1698: avg_loss appended (2.7778)\n", - "Epoch 1698: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1698: accuracy appended (77.78%)\n", - "Epoch 1698: model set back to train mode\n", - "Epoch 1698: model parameters saved\n", - "Epoch 1699 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1699: avg_loss appended (2.7778)\n", - "Epoch 1699: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1699: accuracy appended (77.78%)\n", - "Epoch 1699: model set back to train mode\n", - "Epoch 1699: model parameters saved\n", - "Epoch 1700 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1700: avg_loss appended (2.7778)\n", - "Epoch 1700: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1700: accuracy appended (77.78%)\n", - "Epoch 1700: model set back to train mode\n", - "Epoch 1700: model parameters saved\n", - "Epoch 1700/10000, Loss: 2.7778, Accuracy: 77.78%\n", - "Epoch 1701 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1701: avg_loss appended (2.7778)\n", - "Epoch 1701: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1701: accuracy appended (77.78%)\n", - "Epoch 1701: model set back to train mode\n", - "Epoch 1701: model parameters saved\n", - "Epoch 1702 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1702: avg_loss appended (2.7778)\n", - "Epoch 1702: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1702: accuracy appended (77.78%)\n", - "Epoch 1702: model set back to train mode\n", - "Epoch 1702: model parameters saved\n", - "Epoch 1703 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1703: avg_loss appended (2.7778)\n", - "Epoch 1703: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1703: accuracy appended (77.78%)\n", - "Epoch 1703: model set back to train mode\n", - "Epoch 1703: model parameters saved\n", - "Epoch 1704 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1704: avg_loss appended (2.7778)\n", - "Epoch 1704: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1704: accuracy appended (77.78%)\n", - "Epoch 1704: model set back to train mode\n", - "Epoch 1704: model parameters saved\n", - "Epoch 1705 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1705: avg_loss appended (2.7778)\n", - "Epoch 1705: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1705: accuracy appended (77.78%)\n", - "Epoch 1705: model set back to train mode\n", - "Epoch 1705: model parameters saved\n", - "Epoch 1706 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1706: avg_loss appended (2.7778)\n", - "Epoch 1706: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1706: accuracy appended (77.78%)\n", - "Epoch 1706: model set back to train mode\n", - "Epoch 1706: model parameters saved\n", - "Epoch 1707 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1707: avg_loss appended (2.7778)\n", - "Epoch 1707: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1707: accuracy appended (77.78%)\n", - "Epoch 1707: model set back to train mode\n", - "Epoch 1707: model parameters saved\n", - "Epoch 1708 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1708: avg_loss appended (2.7778)\n", - "Epoch 1708: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1708: accuracy appended (77.78%)\n", - "Epoch 1708: model set back to train mode\n", - "Epoch 1708: model parameters saved\n", - "Epoch 1709 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1709: avg_loss appended (2.7778)\n", - "Epoch 1709: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1709: accuracy appended (77.78%)\n", - "Epoch 1709: model set back to train mode\n", - "Epoch 1709: model parameters saved\n", - "Epoch 1710 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1710: avg_loss appended (2.7778)\n", - "Epoch 1710: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1710: accuracy appended (77.78%)\n", - "Epoch 1710: model set back to train mode\n", - "Epoch 1710: model parameters saved\n", - "Epoch 1711 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1711: avg_loss appended (2.7778)\n", - "Epoch 1711: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1711: accuracy appended (77.78%)\n", - "Epoch 1711: model set back to train mode\n", - "Epoch 1711: model parameters saved\n", - "Epoch 1712 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1712: avg_loss appended (2.7778)\n", - "Epoch 1712: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1712: accuracy appended (77.78%)\n", - "Epoch 1712: model set back to train mode\n", - "Epoch 1712: model parameters saved\n", - "Epoch 1713 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1713: avg_loss appended (2.7778)\n", - "Epoch 1713: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1713: accuracy appended (77.78%)\n", - "Epoch 1713: model set back to train mode\n", - "Epoch 1713: model parameters saved\n", - "Epoch 1714 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1714: avg_loss appended (2.7778)\n", - "Epoch 1714: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1714: accuracy appended (77.78%)\n", - "Epoch 1714: model set back to train mode\n", - "Epoch 1714: model parameters saved\n", - "Epoch 1715 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1715: avg_loss appended (2.7778)\n", - "Epoch 1715: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1715: accuracy appended (77.78%)\n", - "Epoch 1715: model set back to train mode\n", - "Epoch 1715: model parameters saved\n", - "Epoch 1716 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1716: avg_loss appended (2.7778)\n", - "Epoch 1716: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1716: accuracy appended (77.78%)\n", - "Epoch 1716: model set back to train mode\n", - "Epoch 1716: model parameters saved\n", - "Epoch 1717 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1717: avg_loss appended (2.7778)\n", - "Epoch 1717: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1717: accuracy appended (77.78%)\n", - "Epoch 1717: model set back to train mode\n", - "Epoch 1717: model parameters saved\n", - "Epoch 1718 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1718: avg_loss appended (2.7778)\n", - "Epoch 1718: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1718: accuracy appended (77.78%)\n", - "Epoch 1718: model set back to train mode\n", - "Epoch 1718: model parameters saved\n", - "Epoch 1719 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1719: avg_loss appended (2.7778)\n", - "Epoch 1719: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1719: accuracy appended (77.78%)\n", - "Epoch 1719: model set back to train mode\n", - "Epoch 1719: model parameters saved\n", - "Epoch 1720 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1720: avg_loss appended (2.7778)\n", - "Epoch 1720: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1720: accuracy appended (77.78%)\n", - "Epoch 1720: model set back to train mode\n", - "Epoch 1720: model parameters saved\n", - "Epoch 1721 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1721: avg_loss appended (2.7778)\n", - "Epoch 1721: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1721: accuracy appended (77.78%)\n", - "Epoch 1721: model set back to train mode\n", - "Epoch 1721: model parameters saved\n", - "Epoch 1722 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1722: avg_loss appended (2.7778)\n", - "Epoch 1722: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1722: accuracy appended (77.78%)\n", - "Epoch 1722: model set back to train mode\n", - "Epoch 1722: model parameters saved\n", - "Epoch 1723 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1723: avg_loss appended (2.7778)\n", - "Epoch 1723: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1723: accuracy appended (77.78%)\n", - "Epoch 1723: model set back to train mode\n", - "Epoch 1723: model parameters saved\n", - "Epoch 1724 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1724: avg_loss appended (2.7778)\n", - "Epoch 1724: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1724: accuracy appended (77.78%)\n", - "Epoch 1724: model set back to train mode\n", - "Epoch 1724: model parameters saved\n", - "Epoch 1725 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1725: avg_loss appended (2.7778)\n", - "Epoch 1725: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1725: accuracy appended (77.78%)\n", - "Epoch 1725: model set back to train mode\n", - "Epoch 1725: model parameters saved\n", - "Epoch 1726 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1726: avg_loss appended (2.7778)\n", - "Epoch 1726: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1726: accuracy appended (77.78%)\n", - "Epoch 1726: model set back to train mode\n", - "Epoch 1726: model parameters saved\n", - "Epoch 1727 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1727: avg_loss appended (2.7778)\n", - "Epoch 1727: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1727: accuracy appended (77.78%)\n", - "Epoch 1727: model set back to train mode\n", - "Epoch 1727: model parameters saved\n", - "Epoch 1728 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1728: avg_loss appended (2.7778)\n", - "Epoch 1728: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1728: accuracy appended (77.78%)\n", - "Epoch 1728: model set back to train mode\n", - "Epoch 1728: model parameters saved\n", - "Epoch 1729 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1729: avg_loss appended (2.7778)\n", - "Epoch 1729: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1729: accuracy appended (77.78%)\n", - "Epoch 1729: model set back to train mode\n", - "Epoch 1729: model parameters saved\n", - "Epoch 1730 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1730: avg_loss appended (2.7778)\n", - "Epoch 1730: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1730: accuracy appended (77.78%)\n", - "Epoch 1730: model set back to train mode\n", - "Epoch 1730: model parameters saved\n", - "Epoch 1731 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1731: avg_loss appended (2.7778)\n", - "Epoch 1731: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1731: accuracy appended (77.78%)\n", - "Epoch 1731: model set back to train mode\n", - "Epoch 1731: model parameters saved\n", - "Epoch 1732 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1732: avg_loss appended (2.7778)\n", - "Epoch 1732: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1732: accuracy appended (77.78%)\n", - "Epoch 1732: model set back to train mode\n", - "Epoch 1732: model parameters saved\n", - "Epoch 1733 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1733: avg_loss appended (2.7778)\n", - "Epoch 1733: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1733: accuracy appended (77.78%)\n", - "Epoch 1733: model set back to train mode\n", - "Epoch 1733: model parameters saved\n", - "Epoch 1734 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1734: avg_loss appended (2.7778)\n", - "Epoch 1734: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1734: accuracy appended (77.78%)\n", - "Epoch 1734: model set back to train mode\n", - "Epoch 1734: model parameters saved\n", - "Epoch 1735 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1735: avg_loss appended (2.7778)\n", - "Epoch 1735: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1735: accuracy appended (77.78%)\n", - "Epoch 1735: model set back to train mode\n", - "Epoch 1735: model parameters saved\n", - "Epoch 1736 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1736: avg_loss appended (2.7778)\n", - "Epoch 1736: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1736: accuracy appended (77.78%)\n", - "Epoch 1736: model set back to train mode\n", - "Epoch 1736: model parameters saved\n", - "Epoch 1737 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1737: avg_loss appended (2.7778)\n", - "Epoch 1737: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1737: accuracy appended (77.78%)\n", - "Epoch 1737: model set back to train mode\n", - "Epoch 1737: model parameters saved\n", - "Epoch 1738 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1738: avg_loss appended (2.7778)\n", - "Epoch 1738: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1738: accuracy appended (77.78%)\n", - "Epoch 1738: model set back to train mode\n", - "Epoch 1738: model parameters saved\n", - "Epoch 1739 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1739: avg_loss appended (2.7778)\n", - "Epoch 1739: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1739: accuracy appended (77.78%)\n", - "Epoch 1739: model set back to train mode\n", - "Epoch 1739: model parameters saved\n", - "Epoch 1740 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1740: avg_loss appended (2.7778)\n", - "Epoch 1740: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1740: accuracy appended (77.78%)\n", - "Epoch 1740: model set back to train mode\n", - "Epoch 1740: model parameters saved\n", - "Epoch 1741 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1741: avg_loss appended (2.7778)\n", - "Epoch 1741: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1741: accuracy appended (77.78%)\n", - "Epoch 1741: model set back to train mode\n", - "Epoch 1741: model parameters saved\n", - "Epoch 1742 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1742: avg_loss appended (2.7778)\n", - "Epoch 1742: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1742: accuracy appended (77.78%)\n", - "Epoch 1742: model set back to train mode\n", - "Epoch 1742: model parameters saved\n", - "Epoch 1743 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1743: avg_loss appended (2.7778)\n", - "Epoch 1743: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1743: accuracy appended (77.78%)\n", - "Epoch 1743: model set back to train mode\n", - "Epoch 1743: model parameters saved\n", - "Epoch 1744 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1744: avg_loss appended (2.7778)\n", - "Epoch 1744: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1744: accuracy appended (77.78%)\n", - "Epoch 1744: model set back to train mode\n", - "Epoch 1744: model parameters saved\n", - "Epoch 1745 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1745: avg_loss appended (2.7778)\n", - "Epoch 1745: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1745: accuracy appended (77.78%)\n", - "Epoch 1745: model set back to train mode\n", - "Epoch 1745: model parameters saved\n", - "Epoch 1746 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1746: avg_loss appended (2.7778)\n", - "Epoch 1746: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1746: accuracy appended (77.78%)\n", - "Epoch 1746: model set back to train mode\n", - "Epoch 1746: model parameters saved\n", - "Epoch 1747 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1747: avg_loss appended (2.7778)\n", - "Epoch 1747: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1747: accuracy appended (77.78%)\n", - "Epoch 1747: model set back to train mode\n", - "Epoch 1747: model parameters saved\n", - "Epoch 1748 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1748: avg_loss appended (2.7778)\n", - "Epoch 1748: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1748: accuracy appended (77.78%)\n", - "Epoch 1748: model set back to train mode\n", - "Epoch 1748: model parameters saved\n", - "Epoch 1749 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1749: avg_loss appended (2.7778)\n", - "Epoch 1749: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1749: accuracy appended (77.78%)\n", - "Epoch 1749: model set back to train mode\n", - "Epoch 1749: model parameters saved\n", - "Epoch 1750 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1750: avg_loss appended (2.7778)\n", - "Epoch 1750: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1750: accuracy appended (77.78%)\n", - "Epoch 1750: model set back to train mode\n", - "Epoch 1750: model parameters saved\n", - "Epoch 1751 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1751: avg_loss appended (2.7778)\n", - "Epoch 1751: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1751: accuracy appended (77.78%)\n", - "Epoch 1751: model set back to train mode\n", - "Epoch 1751: model parameters saved\n", - "Epoch 1752 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1752: avg_loss appended (2.7778)\n", - "Epoch 1752: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1752: accuracy appended (77.78%)\n", - "Epoch 1752: model set back to train mode\n", - "Epoch 1752: model parameters saved\n", - "Epoch 1753 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1753: avg_loss appended (2.7778)\n", - "Epoch 1753: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1753: accuracy appended (77.78%)\n", - "Epoch 1753: model set back to train mode\n", - "Epoch 1753: model parameters saved\n", - "Epoch 1754 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1754: avg_loss appended (2.7778)\n", - "Epoch 1754: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1754: accuracy appended (77.78%)\n", - "Epoch 1754: model set back to train mode\n", - "Epoch 1754: model parameters saved\n", - "Epoch 1755 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1755: avg_loss appended (2.7778)\n", - "Epoch 1755: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1755: accuracy appended (77.78%)\n", - "Epoch 1755: model set back to train mode\n", - "Epoch 1755: model parameters saved\n", - "Epoch 1756 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1756: avg_loss appended (2.7778)\n", - "Epoch 1756: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1756: accuracy appended (77.78%)\n", - "Epoch 1756: model set back to train mode\n", - "Epoch 1756: model parameters saved\n", - "Epoch 1757 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1757: avg_loss appended (2.7778)\n", - "Epoch 1757: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1757: accuracy appended (77.78%)\n", - "Epoch 1757: model set back to train mode\n", - "Epoch 1757: model parameters saved\n", - "Epoch 1758 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1758: avg_loss appended (2.7778)\n", - "Epoch 1758: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1758: accuracy appended (77.78%)\n", - "Epoch 1758: model set back to train mode\n", - "Epoch 1758: model parameters saved\n", - "Epoch 1759 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1759: avg_loss appended (2.7778)\n", - "Epoch 1759: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1759: accuracy appended (77.78%)\n", - "Epoch 1759: model set back to train mode\n", - "Epoch 1759: model parameters saved\n", - "Epoch 1760 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1760: avg_loss appended (2.7778)\n", - "Epoch 1760: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1760: accuracy appended (77.78%)\n", - "Epoch 1760: model set back to train mode\n", - "Epoch 1760: model parameters saved\n", - "Epoch 1761 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1761: avg_loss appended (2.7778)\n", - "Epoch 1761: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1761: accuracy appended (77.78%)\n", - "Epoch 1761: model set back to train mode\n", - "Epoch 1761: model parameters saved\n", - "Epoch 1762 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1762: avg_loss appended (2.7778)\n", - "Epoch 1762: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1762: accuracy appended (77.78%)\n", - "Epoch 1762: model set back to train mode\n", - "Epoch 1762: model parameters saved\n", - "Epoch 1763 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1763: avg_loss appended (2.7778)\n", - "Epoch 1763: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1763: accuracy appended (77.78%)\n", - "Epoch 1763: model set back to train mode\n", - "Epoch 1763: model parameters saved\n", - "Epoch 1764 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1764: avg_loss appended (2.7778)\n", - "Epoch 1764: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1764: accuracy appended (77.78%)\n", - "Epoch 1764: model set back to train mode\n", - "Epoch 1764: model parameters saved\n", - "Epoch 1765 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1765: avg_loss appended (2.7778)\n", - "Epoch 1765: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1765: accuracy appended (77.78%)\n", - "Epoch 1765: model set back to train mode\n", - "Epoch 1765: model parameters saved\n", - "Epoch 1766 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1766: avg_loss appended (2.7778)\n", - "Epoch 1766: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1766: accuracy appended (77.78%)\n", - "Epoch 1766: model set back to train mode\n", - "Epoch 1766: model parameters saved\n", - "Epoch 1767 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1767: avg_loss appended (2.7778)\n", - "Epoch 1767: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1767: accuracy appended (77.78%)\n", - "Epoch 1767: model set back to train mode\n", - "Epoch 1767: model parameters saved\n", - "Epoch 1768 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1768: avg_loss appended (2.7778)\n", - "Epoch 1768: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1768: accuracy appended (77.78%)\n", - "Epoch 1768: model set back to train mode\n", - "Epoch 1768: model parameters saved\n", - "Epoch 1769 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1769: avg_loss appended (2.7778)\n", - "Epoch 1769: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1769: accuracy appended (77.78%)\n", - "Epoch 1769: model set back to train mode\n", - "Epoch 1769: model parameters saved\n", - "Epoch 1770 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1770: avg_loss appended (2.7778)\n", - "Epoch 1770: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1770: accuracy appended (77.78%)\n", - "Epoch 1770: model set back to train mode\n", - "Epoch 1770: model parameters saved\n", - "Epoch 1771 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1771: avg_loss appended (2.7778)\n", - "Epoch 1771: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1771: accuracy appended (77.78%)\n", - "Epoch 1771: model set back to train mode\n", - "Epoch 1771: model parameters saved\n", - "Epoch 1772 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1772: avg_loss appended (2.7778)\n", - "Epoch 1772: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1772: accuracy appended (77.78%)\n", - "Epoch 1772: model set back to train mode\n", - "Epoch 1772: model parameters saved\n", - "Epoch 1773 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1773: avg_loss appended (2.7778)\n", - "Epoch 1773: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1773: accuracy appended (77.78%)\n", - "Epoch 1773: model set back to train mode\n", - "Epoch 1773: model parameters saved\n", - "Epoch 1774 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1774: avg_loss appended (2.7778)\n", - "Epoch 1774: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1774: accuracy appended (77.78%)\n", - "Epoch 1774: model set back to train mode\n", - "Epoch 1774: model parameters saved\n", - "Epoch 1775 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1775: avg_loss appended (2.7778)\n", - "Epoch 1775: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1775: accuracy appended (77.78%)\n", - "Epoch 1775: model set back to train mode\n", - "Epoch 1775: model parameters saved\n", - "Epoch 1776 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1776: avg_loss appended (2.7778)\n", - "Epoch 1776: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1776: accuracy appended (77.78%)\n", - "Epoch 1776: model set back to train mode\n", - "Epoch 1776: model parameters saved\n", - "Epoch 1777 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1777: avg_loss appended (2.7778)\n", - "Epoch 1777: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1777: accuracy appended (77.78%)\n", - "Epoch 1777: model set back to train mode\n", - "Epoch 1777: model parameters saved\n", - "Epoch 1778 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1778: avg_loss appended (2.7778)\n", - "Epoch 1778: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1778: accuracy appended (77.78%)\n", - "Epoch 1778: model set back to train mode\n", - "Epoch 1778: model parameters saved\n", - "Epoch 1779 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1779: avg_loss appended (2.7778)\n", - "Epoch 1779: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1779: accuracy appended (77.78%)\n", - "Epoch 1779: model set back to train mode\n", - "Epoch 1779: model parameters saved\n", - "Epoch 1780 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1780: avg_loss appended (2.7778)\n", - "Epoch 1780: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1780: accuracy appended (77.78%)\n", - "Epoch 1780: model set back to train mode\n", - "Epoch 1780: model parameters saved\n", - "Epoch 1781 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1781: avg_loss appended (2.7778)\n", - "Epoch 1781: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1781: accuracy appended (77.78%)\n", - "Epoch 1781: model set back to train mode\n", - "Epoch 1781: model parameters saved\n", - "Epoch 1782 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1782: avg_loss appended (2.7778)\n", - "Epoch 1782: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1782: accuracy appended (77.78%)\n", - "Epoch 1782: model set back to train mode\n", - "Epoch 1782: model parameters saved\n", - "Epoch 1783 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1783: avg_loss appended (2.7778)\n", - "Epoch 1783: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1783: accuracy appended (77.78%)\n", - "Epoch 1783: model set back to train mode\n", - "Epoch 1783: model parameters saved\n", - "Epoch 1784 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1784: avg_loss appended (2.7778)\n", - "Epoch 1784: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1784: accuracy appended (77.78%)\n", - "Epoch 1784: model set back to train mode\n", - "Epoch 1784: model parameters saved\n", - "Epoch 1785 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1785: avg_loss appended (2.7778)\n", - "Epoch 1785: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1785: accuracy appended (77.78%)\n", - "Epoch 1785: model set back to train mode\n", - "Epoch 1785: model parameters saved\n", - "Epoch 1786 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1786: avg_loss appended (2.7778)\n", - "Epoch 1786: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1786: accuracy appended (77.78%)\n", - "Epoch 1786: model set back to train mode\n", - "Epoch 1786: model parameters saved\n", - "Epoch 1787 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1787: avg_loss appended (2.7778)\n", - "Epoch 1787: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1787: accuracy appended (77.78%)\n", - "Epoch 1787: model set back to train mode\n", - "Epoch 1787: model parameters saved\n", - "Epoch 1788 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1788: avg_loss appended (2.7778)\n", - "Epoch 1788: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1788: accuracy appended (77.78%)\n", - "Epoch 1788: model set back to train mode\n", - "Epoch 1788: model parameters saved\n", - "Epoch 1789 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1789: avg_loss appended (2.7778)\n", - "Epoch 1789: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1789: accuracy appended (77.78%)\n", - "Epoch 1789: model set back to train mode\n", - "Epoch 1789: model parameters saved\n", - "Epoch 1790 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1790: avg_loss appended (2.7778)\n", - "Epoch 1790: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1790: accuracy appended (77.78%)\n", - "Epoch 1790: model set back to train mode\n", - "Epoch 1790: model parameters saved\n", - "Epoch 1791 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1791: avg_loss appended (2.7778)\n", - "Epoch 1791: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1791: accuracy appended (77.78%)\n", - "Epoch 1791: model set back to train mode\n", - "Epoch 1791: model parameters saved\n", - "Epoch 1792 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1792: avg_loss appended (2.7778)\n", - "Epoch 1792: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1792: accuracy appended (77.78%)\n", - "Epoch 1792: model set back to train mode\n", - "Epoch 1792: model parameters saved\n", - "Epoch 1793 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1793: avg_loss appended (2.7778)\n", - "Epoch 1793: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1793: accuracy appended (77.78%)\n", - "Epoch 1793: model set back to train mode\n", - "Epoch 1793: model parameters saved\n", - "Epoch 1794 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1794: avg_loss appended (2.7778)\n", - "Epoch 1794: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1794: accuracy appended (77.78%)\n", - "Epoch 1794: model set back to train mode\n", - "Epoch 1794: model parameters saved\n", - "Epoch 1795 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1795: avg_loss appended (2.7778)\n", - "Epoch 1795: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1795: accuracy appended (77.78%)\n", - "Epoch 1795: model set back to train mode\n", - "Epoch 1795: model parameters saved\n", - "Epoch 1796 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1796: avg_loss appended (2.7778)\n", - "Epoch 1796: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1796: accuracy appended (77.78%)\n", - "Epoch 1796: model set back to train mode\n", - "Epoch 1796: model parameters saved\n", - "Epoch 1797 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1797: avg_loss appended (2.7778)\n", - "Epoch 1797: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1797: accuracy appended (77.78%)\n", - "Epoch 1797: model set back to train mode\n", - "Epoch 1797: model parameters saved\n", - "Epoch 1798 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1798: avg_loss appended (2.7778)\n", - "Epoch 1798: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1798: accuracy appended (77.78%)\n", - "Epoch 1798: model set back to train mode\n", - "Epoch 1798: model parameters saved\n", - "Epoch 1799 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1799: avg_loss appended (2.7778)\n", - "Epoch 1799: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1799: accuracy appended (77.78%)\n", - "Epoch 1799: model set back to train mode\n", - "Epoch 1799: model parameters saved\n", - "Epoch 1800 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1800: avg_loss appended (2.7778)\n", - "Epoch 1800: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1800: accuracy appended (77.78%)\n", - "Epoch 1800: model set back to train mode\n", - "Epoch 1800: model parameters saved\n", - "Epoch 1800/10000, Loss: 2.7778, Accuracy: 77.78%\n", - "Epoch 1801 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1801: avg_loss appended (2.7778)\n", - "Epoch 1801: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1801: accuracy appended (77.78%)\n", - "Epoch 1801: model set back to train mode\n", - "Epoch 1801: model parameters saved\n", - "Epoch 1802 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1802: avg_loss appended (2.7778)\n", - "Epoch 1802: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1802: accuracy appended (77.78%)\n", - "Epoch 1802: model set back to train mode\n", - "Epoch 1802: model parameters saved\n", - "Epoch 1803 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1803: avg_loss appended (2.7778)\n", - "Epoch 1803: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1803: accuracy appended (77.78%)\n", - "Epoch 1803: model set back to train mode\n", - "Epoch 1803: model parameters saved\n", - "Epoch 1804 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1804: avg_loss appended (2.7778)\n", - "Epoch 1804: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1804: accuracy appended (77.78%)\n", - "Epoch 1804: model set back to train mode\n", - "Epoch 1804: model parameters saved\n", - "Epoch 1805 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1805: avg_loss appended (2.7778)\n", - "Epoch 1805: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1805: accuracy appended (77.78%)\n", - "Epoch 1805: model set back to train mode\n", - "Epoch 1805: model parameters saved\n", - "Epoch 1806 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1806: avg_loss appended (2.7778)\n", - "Epoch 1806: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1806: accuracy appended (77.78%)\n", - "Epoch 1806: model set back to train mode\n", - "Epoch 1806: model parameters saved\n", - "Epoch 1807 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1807: avg_loss appended (2.7778)\n", - "Epoch 1807: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1807: accuracy appended (77.78%)\n", - "Epoch 1807: model set back to train mode\n", - "Epoch 1807: model parameters saved\n", - "Epoch 1808 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1808: avg_loss appended (2.7778)\n", - "Epoch 1808: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1808: accuracy appended (77.78%)\n", - "Epoch 1808: model set back to train mode\n", - "Epoch 1808: model parameters saved\n", - "Epoch 1809 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1809: avg_loss appended (2.7778)\n", - "Epoch 1809: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1809: accuracy appended (77.78%)\n", - "Epoch 1809: model set back to train mode\n", - "Epoch 1809: model parameters saved\n", - "Epoch 1810 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1810: avg_loss appended (2.7778)\n", - "Epoch 1810: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1810: accuracy appended (77.78%)\n", - "Epoch 1810: model set back to train mode\n", - "Epoch 1810: model parameters saved\n", - "Epoch 1811 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1811: avg_loss appended (2.7778)\n", - "Epoch 1811: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1811: accuracy appended (77.78%)\n", - "Epoch 1811: model set back to train mode\n", - "Epoch 1811: model parameters saved\n", - "Epoch 1812 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1812: avg_loss appended (2.7778)\n", - "Epoch 1812: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1812: accuracy appended (77.78%)\n", - "Epoch 1812: model set back to train mode\n", - "Epoch 1812: model parameters saved\n", - "Epoch 1813 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1813: avg_loss appended (2.7778)\n", - "Epoch 1813: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1813: accuracy appended (77.78%)\n", - "Epoch 1813: model set back to train mode\n", - "Epoch 1813: model parameters saved\n", - "Epoch 1814 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1814: avg_loss appended (2.7778)\n", - "Epoch 1814: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1814: accuracy appended (77.78%)\n", - "Epoch 1814: model set back to train mode\n", - "Epoch 1814: model parameters saved\n", - "Epoch 1815 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1815: avg_loss appended (2.7778)\n", - "Epoch 1815: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1815: accuracy appended (77.78%)\n", - "Epoch 1815: model set back to train mode\n", - "Epoch 1815: model parameters saved\n", - "Epoch 1816 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1816: avg_loss appended (2.7778)\n", - "Epoch 1816: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1816: accuracy appended (77.78%)\n", - "Epoch 1816: model set back to train mode\n", - "Epoch 1816: model parameters saved\n", - "Epoch 1817 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1817: avg_loss appended (2.7778)\n", - "Epoch 1817: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1817: accuracy appended (77.78%)\n", - "Epoch 1817: model set back to train mode\n", - "Epoch 1817: model parameters saved\n", - "Epoch 1818 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1818: avg_loss appended (2.7778)\n", - "Epoch 1818: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1818: accuracy appended (77.78%)\n", - "Epoch 1818: model set back to train mode\n", - "Epoch 1818: model parameters saved\n", - "Epoch 1819 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1819: avg_loss appended (2.7778)\n", - "Epoch 1819: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1819: accuracy appended (77.78%)\n", - "Epoch 1819: model set back to train mode\n", - "Epoch 1819: model parameters saved\n", - "Epoch 1820 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1820: avg_loss appended (2.7778)\n", - "Epoch 1820: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1820: accuracy appended (77.78%)\n", - "Epoch 1820: model set back to train mode\n", - "Epoch 1820: model parameters saved\n", - "Epoch 1821 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1821: avg_loss appended (2.7778)\n", - "Epoch 1821: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1821: accuracy appended (77.78%)\n", - "Epoch 1821: model set back to train mode\n", - "Epoch 1821: model parameters saved\n", - "Epoch 1822 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1822: avg_loss appended (2.7778)\n", - "Epoch 1822: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1822: accuracy appended (77.78%)\n", - "Epoch 1822: model set back to train mode\n", - "Epoch 1822: model parameters saved\n", - "Epoch 1823 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1823: avg_loss appended (2.7778)\n", - "Epoch 1823: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1823: accuracy appended (77.78%)\n", - "Epoch 1823: model set back to train mode\n", - "Epoch 1823: model parameters saved\n", - "Epoch 1824 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1824: avg_loss appended (2.7778)\n", - "Epoch 1824: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1824: accuracy appended (77.78%)\n", - "Epoch 1824: model set back to train mode\n", - "Epoch 1824: model parameters saved\n", - "Epoch 1825 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1825: avg_loss appended (2.7778)\n", - "Epoch 1825: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1825: accuracy appended (77.78%)\n", - "Epoch 1825: model set back to train mode\n", - "Epoch 1825: model parameters saved\n", - "Epoch 1826 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1826: avg_loss appended (2.7778)\n", - "Epoch 1826: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1826: accuracy appended (77.78%)\n", - "Epoch 1826: model set back to train mode\n", - "Epoch 1826: model parameters saved\n", - "Epoch 1827 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1827: avg_loss appended (2.7778)\n", - "Epoch 1827: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1827: accuracy appended (77.78%)\n", - "Epoch 1827: model set back to train mode\n", - "Epoch 1827: model parameters saved\n", - "Epoch 1828 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1828: avg_loss appended (2.7778)\n", - "Epoch 1828: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1828: accuracy appended (77.78%)\n", - "Epoch 1828: model set back to train mode\n", - "Epoch 1828: model parameters saved\n", - "Epoch 1829 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1829: avg_loss appended (2.7778)\n", - "Epoch 1829: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1829: accuracy appended (77.78%)\n", - "Epoch 1829: model set back to train mode\n", - "Epoch 1829: model parameters saved\n", - "Epoch 1830 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1830: avg_loss appended (2.7778)\n", - "Epoch 1830: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1830: accuracy appended (77.78%)\n", - "Epoch 1830: model set back to train mode\n", - "Epoch 1830: model parameters saved\n", - "Epoch 1831 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1831: avg_loss appended (2.7778)\n", - "Epoch 1831: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1831: accuracy appended (77.78%)\n", - "Epoch 1831: model set back to train mode\n", - "Epoch 1831: model parameters saved\n", - "Epoch 1832 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1832: avg_loss appended (2.7778)\n", - "Epoch 1832: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1832: accuracy appended (77.78%)\n", - "Epoch 1832: model set back to train mode\n", - "Epoch 1832: model parameters saved\n", - "Epoch 1833 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1833: avg_loss appended (2.7778)\n", - "Epoch 1833: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1833: accuracy appended (77.78%)\n", - "Epoch 1833: model set back to train mode\n", - "Epoch 1833: model parameters saved\n", - "Epoch 1834 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1834: avg_loss appended (2.7778)\n", - "Epoch 1834: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1834: accuracy appended (77.78%)\n", - "Epoch 1834: model set back to train mode\n", - "Epoch 1834: model parameters saved\n", - "Epoch 1835 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1835: avg_loss appended (2.7778)\n", - "Epoch 1835: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1835: accuracy appended (77.78%)\n", - "Epoch 1835: model set back to train mode\n", - "Epoch 1835: model parameters saved\n", - "Epoch 1836 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1836: avg_loss appended (2.7778)\n", - "Epoch 1836: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1836: accuracy appended (77.78%)\n", - "Epoch 1836: model set back to train mode\n", - "Epoch 1836: model parameters saved\n", - "Epoch 1837 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1837: avg_loss appended (2.7778)\n", - "Epoch 1837: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1837: accuracy appended (77.78%)\n", - "Epoch 1837: model set back to train mode\n", - "Epoch 1837: model parameters saved\n", - "Epoch 1838 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1838: avg_loss appended (2.7778)\n", - "Epoch 1838: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1838: accuracy appended (77.78%)\n", - "Epoch 1838: model set back to train mode\n", - "Epoch 1838: model parameters saved\n", - "Epoch 1839 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1839: avg_loss appended (2.7778)\n", - "Epoch 1839: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1839: accuracy appended (77.78%)\n", - "Epoch 1839: model set back to train mode\n", - "Epoch 1839: model parameters saved\n", - "Epoch 1840 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1840: avg_loss appended (2.7778)\n", - "Epoch 1840: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1840: accuracy appended (77.78%)\n", - "Epoch 1840: model set back to train mode\n", - "Epoch 1840: model parameters saved\n", - "Epoch 1841 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1841: avg_loss appended (2.7778)\n", - "Epoch 1841: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1841: accuracy appended (77.78%)\n", - "Epoch 1841: model set back to train mode\n", - "Epoch 1841: model parameters saved\n", - "Epoch 1842 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1842: avg_loss appended (2.7778)\n", - "Epoch 1842: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1842: accuracy appended (77.78%)\n", - "Epoch 1842: model set back to train mode\n", - "Epoch 1842: model parameters saved\n", - "Epoch 1843 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1843: avg_loss appended (2.7778)\n", - "Epoch 1843: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1843: accuracy appended (77.78%)\n", - "Epoch 1843: model set back to train mode\n", - "Epoch 1843: model parameters saved\n", - "Epoch 1844 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1844: avg_loss appended (2.7778)\n", - "Epoch 1844: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1844: accuracy appended (77.78%)\n", - "Epoch 1844: model set back to train mode\n", - "Epoch 1844: model parameters saved\n", - "Epoch 1845 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1845: avg_loss appended (2.7778)\n", - "Epoch 1845: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1845: accuracy appended (77.78%)\n", - "Epoch 1845: model set back to train mode\n", - "Epoch 1845: model parameters saved\n", - "Epoch 1846 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1846: avg_loss appended (2.7778)\n", - "Epoch 1846: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1846: accuracy appended (77.78%)\n", - "Epoch 1846: model set back to train mode\n", - "Epoch 1846: model parameters saved\n", - "Epoch 1847 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1847: avg_loss appended (2.7778)\n", - "Epoch 1847: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1847: accuracy appended (77.78%)\n", - "Epoch 1847: model set back to train mode\n", - "Epoch 1847: model parameters saved\n", - "Epoch 1848 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1848: avg_loss appended (2.7778)\n", - "Epoch 1848: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1848: accuracy appended (77.78%)\n", - "Epoch 1848: model set back to train mode\n", - "Epoch 1848: model parameters saved\n", - "Epoch 1849 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1849: avg_loss appended (2.7778)\n", - "Epoch 1849: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1849: accuracy appended (77.78%)\n", - "Epoch 1849: model set back to train mode\n", - "Epoch 1849: model parameters saved\n", - "Epoch 1850 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1850: avg_loss appended (2.7778)\n", - "Epoch 1850: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1850: accuracy appended (77.78%)\n", - "Epoch 1850: model set back to train mode\n", - "Epoch 1850: model parameters saved\n", - "Epoch 1851 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1851: avg_loss appended (2.7778)\n", - "Epoch 1851: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1851: accuracy appended (77.78%)\n", - "Epoch 1851: model set back to train mode\n", - "Epoch 1851: model parameters saved\n", - "Epoch 1852 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1852: avg_loss appended (2.7778)\n", - "Epoch 1852: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1852: accuracy appended (77.78%)\n", - "Epoch 1852: model set back to train mode\n", - "Epoch 1852: model parameters saved\n", - "Epoch 1853 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1853: avg_loss appended (2.7778)\n", - "Epoch 1853: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1853: accuracy appended (77.78%)\n", - "Epoch 1853: model set back to train mode\n", - "Epoch 1853: model parameters saved\n", - "Epoch 1854 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1854: avg_loss appended (2.7778)\n", - "Epoch 1854: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1854: accuracy appended (77.78%)\n", - "Epoch 1854: model set back to train mode\n", - "Epoch 1854: model parameters saved\n", - "Epoch 1855 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1855: avg_loss appended (2.7778)\n", - "Epoch 1855: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1855: accuracy appended (77.78%)\n", - "Epoch 1855: model set back to train mode\n", - "Epoch 1855: model parameters saved\n", - "Epoch 1856 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1856: avg_loss appended (2.7778)\n", - "Epoch 1856: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1856: accuracy appended (77.78%)\n", - "Epoch 1856: model set back to train mode\n", - "Epoch 1856: model parameters saved\n", - "Epoch 1857 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1857: avg_loss appended (2.7778)\n", - "Epoch 1857: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1857: accuracy appended (77.78%)\n", - "Epoch 1857: model set back to train mode\n", - "Epoch 1857: model parameters saved\n", - "Epoch 1858 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1858: avg_loss appended (2.7778)\n", - "Epoch 1858: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1858: accuracy appended (77.78%)\n", - "Epoch 1858: model set back to train mode\n", - "Epoch 1858: model parameters saved\n", - "Epoch 1859 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1859: avg_loss appended (2.7778)\n", - "Epoch 1859: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1859: accuracy appended (77.78%)\n", - "Epoch 1859: model set back to train mode\n", - "Epoch 1859: model parameters saved\n", - "Epoch 1860 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1860: avg_loss appended (2.7778)\n", - "Epoch 1860: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1860: accuracy appended (77.78%)\n", - "Epoch 1860: model set back to train mode\n", - "Epoch 1860: model parameters saved\n", - "Epoch 1861 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1861: avg_loss appended (2.7778)\n", - "Epoch 1861: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1861: accuracy appended (77.78%)\n", - "Epoch 1861: model set back to train mode\n", - "Epoch 1861: model parameters saved\n", - "Epoch 1862 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1862: avg_loss appended (2.7778)\n", - "Epoch 1862: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1862: accuracy appended (77.78%)\n", - "Epoch 1862: model set back to train mode\n", - "Epoch 1862: model parameters saved\n", - "Epoch 1863 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1863: avg_loss appended (2.7778)\n", - "Epoch 1863: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1863: accuracy appended (77.78%)\n", - "Epoch 1863: model set back to train mode\n", - "Epoch 1863: model parameters saved\n", - "Epoch 1864 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1864: avg_loss appended (2.7778)\n", - "Epoch 1864: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1864: accuracy appended (77.78%)\n", - "Epoch 1864: model set back to train mode\n", - "Epoch 1864: model parameters saved\n", - "Epoch 1865 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1865: avg_loss appended (2.7778)\n", - "Epoch 1865: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1865: accuracy appended (77.78%)\n", - "Epoch 1865: model set back to train mode\n", - "Epoch 1865: model parameters saved\n", - "Epoch 1866 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1866: avg_loss appended (2.7778)\n", - "Epoch 1866: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1866: accuracy appended (77.78%)\n", - "Epoch 1866: model set back to train mode\n", - "Epoch 1866: model parameters saved\n", - "Epoch 1867 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1867: avg_loss appended (2.7778)\n", - "Epoch 1867: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1867: accuracy appended (77.78%)\n", - "Epoch 1867: model set back to train mode\n", - "Epoch 1867: model parameters saved\n", - "Epoch 1868 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1868: avg_loss appended (2.7778)\n", - "Epoch 1868: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1868: accuracy appended (77.78%)\n", - "Epoch 1868: model set back to train mode\n", - "Epoch 1868: model parameters saved\n", - "Epoch 1869 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1869: avg_loss appended (2.7778)\n", - "Epoch 1869: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1869: accuracy appended (77.78%)\n", - "Epoch 1869: model set back to train mode\n", - "Epoch 1869: model parameters saved\n", - "Epoch 1870 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1870: avg_loss appended (2.7778)\n", - "Epoch 1870: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1870: accuracy appended (77.78%)\n", - "Epoch 1870: model set back to train mode\n", - "Epoch 1870: model parameters saved\n", - "Epoch 1871 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1871: avg_loss appended (2.7778)\n", - "Epoch 1871: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1871: accuracy appended (77.78%)\n", - "Epoch 1871: model set back to train mode\n", - "Epoch 1871: model parameters saved\n", - "Epoch 1872 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1872: avg_loss appended (2.7778)\n", - "Epoch 1872: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1872: accuracy appended (77.78%)\n", - "Epoch 1872: model set back to train mode\n", - "Epoch 1872: model parameters saved\n", - "Epoch 1873 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1873: avg_loss appended (2.7778)\n", - "Epoch 1873: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1873: accuracy appended (77.78%)\n", - "Epoch 1873: model set back to train mode\n", - "Epoch 1873: model parameters saved\n", - "Epoch 1874 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1874: avg_loss appended (2.7778)\n", - "Epoch 1874: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1874: accuracy appended (77.78%)\n", - "Epoch 1874: model set back to train mode\n", - "Epoch 1874: model parameters saved\n", - "Epoch 1875 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1875: avg_loss appended (2.7778)\n", - "Epoch 1875: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1875: accuracy appended (77.78%)\n", - "Epoch 1875: model set back to train mode\n", - "Epoch 1875: model parameters saved\n", - "Epoch 1876 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1876: avg_loss appended (2.7778)\n", - "Epoch 1876: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1876: accuracy appended (77.78%)\n", - "Epoch 1876: model set back to train mode\n", - "Epoch 1876: model parameters saved\n", - "Epoch 1877 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1877: avg_loss appended (2.7778)\n", - "Epoch 1877: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1877: accuracy appended (77.78%)\n", - "Epoch 1877: model set back to train mode\n", - "Epoch 1877: model parameters saved\n", - "Epoch 1878 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1878: avg_loss appended (2.7778)\n", - "Epoch 1878: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1878: accuracy appended (77.78%)\n", - "Epoch 1878: model set back to train mode\n", - "Epoch 1878: model parameters saved\n", - "Epoch 1879 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1879: avg_loss appended (2.7778)\n", - "Epoch 1879: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1879: accuracy appended (77.78%)\n", - "Epoch 1879: model set back to train mode\n", - "Epoch 1879: model parameters saved\n", - "Epoch 1880 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1880: avg_loss appended (2.7778)\n", - "Epoch 1880: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1880: accuracy appended (77.78%)\n", - "Epoch 1880: model set back to train mode\n", - "Epoch 1880: model parameters saved\n", - "Epoch 1881 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1881: avg_loss appended (2.7778)\n", - "Epoch 1881: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1881: accuracy appended (77.78%)\n", - "Epoch 1881: model set back to train mode\n", - "Epoch 1881: model parameters saved\n", - "Epoch 1882 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1882: avg_loss appended (2.7778)\n", - "Epoch 1882: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1882: accuracy appended (77.78%)\n", - "Epoch 1882: model set back to train mode\n", - "Epoch 1882: model parameters saved\n", - "Epoch 1883 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1883: avg_loss appended (2.7778)\n", - "Epoch 1883: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1883: accuracy appended (77.78%)\n", - "Epoch 1883: model set back to train mode\n", - "Epoch 1883: model parameters saved\n", - "Epoch 1884 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1884: avg_loss appended (2.7778)\n", - "Epoch 1884: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1884: accuracy appended (77.78%)\n", - "Epoch 1884: model set back to train mode\n", - "Epoch 1884: model parameters saved\n", - "Epoch 1885 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1885: avg_loss appended (2.7778)\n", - "Epoch 1885: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1885: accuracy appended (77.78%)\n", - "Epoch 1885: model set back to train mode\n", - "Epoch 1885: model parameters saved\n", - "Epoch 1886 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1886: avg_loss appended (2.7778)\n", - "Epoch 1886: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1886: accuracy appended (77.78%)\n", - "Epoch 1886: model set back to train mode\n", - "Epoch 1886: model parameters saved\n", - "Epoch 1887 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1887: avg_loss appended (2.7778)\n", - "Epoch 1887: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1887: accuracy appended (77.78%)\n", - "Epoch 1887: model set back to train mode\n", - "Epoch 1887: model parameters saved\n", - "Epoch 1888 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1888: avg_loss appended (2.7778)\n", - "Epoch 1888: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1888: accuracy appended (77.78%)\n", - "Epoch 1888: model set back to train mode\n", - "Epoch 1888: model parameters saved\n", - "Epoch 1889 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1889: avg_loss appended (2.7778)\n", - "Epoch 1889: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1889: accuracy appended (77.78%)\n", - "Epoch 1889: model set back to train mode\n", - "Epoch 1889: model parameters saved\n", - "Epoch 1890 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1890: avg_loss appended (2.7778)\n", - "Epoch 1890: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1890: accuracy appended (77.78%)\n", - "Epoch 1890: model set back to train mode\n", - "Epoch 1890: model parameters saved\n", - "Epoch 1891 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1891: avg_loss appended (2.7778)\n", - "Epoch 1891: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1891: accuracy appended (77.78%)\n", - "Epoch 1891: model set back to train mode\n", - "Epoch 1891: model parameters saved\n", - "Epoch 1892 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1892: avg_loss appended (2.7778)\n", - "Epoch 1892: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1892: accuracy appended (77.78%)\n", - "Epoch 1892: model set back to train mode\n", - "Epoch 1892: model parameters saved\n", - "Epoch 1893 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1893: avg_loss appended (2.7778)\n", - "Epoch 1893: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1893: accuracy appended (77.78%)\n", - "Epoch 1893: model set back to train mode\n", - "Epoch 1893: model parameters saved\n", - "Epoch 1894 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1894: avg_loss appended (2.7778)\n", - "Epoch 1894: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1894: accuracy appended (77.78%)\n", - "Epoch 1894: model set back to train mode\n", - "Epoch 1894: model parameters saved\n", - "Epoch 1895 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1895: avg_loss appended (2.7778)\n", - "Epoch 1895: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1895: accuracy appended (77.78%)\n", - "Epoch 1895: model set back to train mode\n", - "Epoch 1895: model parameters saved\n", - "Epoch 1896 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1896: avg_loss appended (2.7778)\n", - "Epoch 1896: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1896: accuracy appended (77.78%)\n", - "Epoch 1896: model set back to train mode\n", - "Epoch 1896: model parameters saved\n", - "Epoch 1897 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1897: avg_loss appended (2.7778)\n", - "Epoch 1897: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1897: accuracy appended (77.78%)\n", - "Epoch 1897: model set back to train mode\n", - "Epoch 1897: model parameters saved\n", - "Epoch 1898 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1898: avg_loss appended (2.7778)\n", - "Epoch 1898: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1898: accuracy appended (77.78%)\n", - "Epoch 1898: model set back to train mode\n", - "Epoch 1898: model parameters saved\n", - "Epoch 1899 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1899: avg_loss appended (2.7778)\n", - "Epoch 1899: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1899: accuracy appended (77.78%)\n", - "Epoch 1899: model set back to train mode\n", - "Epoch 1899: model parameters saved\n", - "Epoch 1900 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1900: avg_loss appended (2.7778)\n", - "Epoch 1900: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1900: accuracy appended (77.78%)\n", - "Epoch 1900: model set back to train mode\n", - "Epoch 1900: model parameters saved\n", - "Epoch 1900/10000, Loss: 2.7778, Accuracy: 77.78%\n", - "Epoch 1901 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1901: avg_loss appended (2.7778)\n", - "Epoch 1901: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1901: accuracy appended (77.78%)\n", - "Epoch 1901: model set back to train mode\n", - "Epoch 1901: model parameters saved\n", - "Epoch 1902 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1902: avg_loss appended (2.7778)\n", - "Epoch 1902: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1902: accuracy appended (77.78%)\n", - "Epoch 1902: model set back to train mode\n", - "Epoch 1902: model parameters saved\n", - "Epoch 1903 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1903: avg_loss appended (2.7778)\n", - "Epoch 1903: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1903: accuracy appended (77.78%)\n", - "Epoch 1903: model set back to train mode\n", - "Epoch 1903: model parameters saved\n", - "Epoch 1904 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1904: avg_loss appended (2.7778)\n", - "Epoch 1904: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1904: accuracy appended (77.78%)\n", - "Epoch 1904: model set back to train mode\n", - "Epoch 1904: model parameters saved\n", - "Epoch 1905 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1905: avg_loss appended (2.7778)\n", - "Epoch 1905: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1905: accuracy appended (77.78%)\n", - "Epoch 1905: model set back to train mode\n", - "Epoch 1905: model parameters saved\n", - "Epoch 1906 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1906: avg_loss appended (2.7778)\n", - "Epoch 1906: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1906: accuracy appended (77.78%)\n", - "Epoch 1906: model set back to train mode\n", - "Epoch 1906: model parameters saved\n", - "Epoch 1907 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1907: avg_loss appended (2.7778)\n", - "Epoch 1907: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1907: accuracy appended (77.78%)\n", - "Epoch 1907: model set back to train mode\n", - "Epoch 1907: model parameters saved\n", - "Epoch 1908 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1908: avg_loss appended (2.7778)\n", - "Epoch 1908: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1908: accuracy appended (77.78%)\n", - "Epoch 1908: model set back to train mode\n", - "Epoch 1908: model parameters saved\n", - "Epoch 1909 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1909: avg_loss appended (2.7778)\n", - "Epoch 1909: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1909: accuracy appended (77.78%)\n", - "Epoch 1909: model set back to train mode\n", - "Epoch 1909: model parameters saved\n", - "Epoch 1910 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1910: avg_loss appended (2.7778)\n", - "Epoch 1910: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1910: accuracy appended (77.78%)\n", - "Epoch 1910: model set back to train mode\n", - "Epoch 1910: model parameters saved\n", - "Epoch 1911 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1911: avg_loss appended (2.7778)\n", - "Epoch 1911: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1911: accuracy appended (77.78%)\n", - "Epoch 1911: model set back to train mode\n", - "Epoch 1911: model parameters saved\n", - "Epoch 1912 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1912: avg_loss appended (2.7778)\n", - "Epoch 1912: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1912: accuracy appended (77.78%)\n", - "Epoch 1912: model set back to train mode\n", - "Epoch 1912: model parameters saved\n", - "Epoch 1913 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1913: avg_loss appended (2.7778)\n", - "Epoch 1913: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1913: accuracy appended (77.78%)\n", - "Epoch 1913: model set back to train mode\n", - "Epoch 1913: model parameters saved\n", - "Epoch 1914 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1914: avg_loss appended (2.7778)\n", - "Epoch 1914: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1914: accuracy appended (77.78%)\n", - "Epoch 1914: model set back to train mode\n", - "Epoch 1914: model parameters saved\n", - "Epoch 1915 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1915: avg_loss appended (2.7778)\n", - "Epoch 1915: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1915: accuracy appended (77.78%)\n", - "Epoch 1915: model set back to train mode\n", - "Epoch 1915: model parameters saved\n", - "Epoch 1916 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1916: avg_loss appended (2.7778)\n", - "Epoch 1916: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1916: accuracy appended (77.78%)\n", - "Epoch 1916: model set back to train mode\n", - "Epoch 1916: model parameters saved\n", - "Epoch 1917 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1917: avg_loss appended (2.7778)\n", - "Epoch 1917: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1917: accuracy appended (77.78%)\n", - "Epoch 1917: model set back to train mode\n", - "Epoch 1917: model parameters saved\n", - "Epoch 1918 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1918: avg_loss appended (2.7778)\n", - "Epoch 1918: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1918: accuracy appended (77.78%)\n", - "Epoch 1918: model set back to train mode\n", - "Epoch 1918: model parameters saved\n", - "Epoch 1919 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1919: avg_loss appended (2.7778)\n", - "Epoch 1919: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1919: accuracy appended (77.78%)\n", - "Epoch 1919: model set back to train mode\n", - "Epoch 1919: model parameters saved\n", - "Epoch 1920 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1920: avg_loss appended (2.7778)\n", - "Epoch 1920: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1920: accuracy appended (77.78%)\n", - "Epoch 1920: model set back to train mode\n", - "Epoch 1920: model parameters saved\n", - "Epoch 1921 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1921: avg_loss appended (2.7778)\n", - "Epoch 1921: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1921: accuracy appended (77.78%)\n", - "Epoch 1921: model set back to train mode\n", - "Epoch 1921: model parameters saved\n", - "Epoch 1922 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1922: avg_loss appended (2.7778)\n", - "Epoch 1922: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1922: accuracy appended (77.78%)\n", - "Epoch 1922: model set back to train mode\n", - "Epoch 1922: model parameters saved\n", - "Epoch 1923 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1923: avg_loss appended (2.7778)\n", - "Epoch 1923: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1923: accuracy appended (77.78%)\n", - "Epoch 1923: model set back to train mode\n", - "Epoch 1923: model parameters saved\n", - "Epoch 1924 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1924: avg_loss appended (2.7778)\n", - "Epoch 1924: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1924: accuracy appended (77.78%)\n", - "Epoch 1924: model set back to train mode\n", - "Epoch 1924: model parameters saved\n", - "Epoch 1925 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1925: avg_loss appended (2.7778)\n", - "Epoch 1925: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1925: accuracy appended (77.78%)\n", - "Epoch 1925: model set back to train mode\n", - "Epoch 1925: model parameters saved\n", - "Epoch 1926 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1926: avg_loss appended (2.7778)\n", - "Epoch 1926: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1926: accuracy appended (77.78%)\n", - "Epoch 1926: model set back to train mode\n", - "Epoch 1926: model parameters saved\n", - "Epoch 1927 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1927: avg_loss appended (2.7778)\n", - "Epoch 1927: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1927: accuracy appended (77.78%)\n", - "Epoch 1927: model set back to train mode\n", - "Epoch 1927: model parameters saved\n", - "Epoch 1928 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1928: avg_loss appended (2.7778)\n", - "Epoch 1928: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1928: accuracy appended (77.78%)\n", - "Epoch 1928: model set back to train mode\n", - "Epoch 1928: model parameters saved\n", - "Epoch 1929 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1929: avg_loss appended (2.7778)\n", - "Epoch 1929: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1929: accuracy appended (77.78%)\n", - "Epoch 1929: model set back to train mode\n", - "Epoch 1929: model parameters saved\n", - "Epoch 1930 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1930: avg_loss appended (2.7778)\n", - "Epoch 1930: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1930: accuracy appended (77.78%)\n", - "Epoch 1930: model set back to train mode\n", - "Epoch 1930: model parameters saved\n", - "Epoch 1931 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1931: avg_loss appended (2.7778)\n", - "Epoch 1931: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1931: accuracy appended (77.78%)\n", - "Epoch 1931: model set back to train mode\n", - "Epoch 1931: model parameters saved\n", - "Epoch 1932 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1932: avg_loss appended (2.7778)\n", - "Epoch 1932: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1932: accuracy appended (77.78%)\n", - "Epoch 1932: model set back to train mode\n", - "Epoch 1932: model parameters saved\n", - "Epoch 1933 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1933: avg_loss appended (2.7778)\n", - "Epoch 1933: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1933: accuracy appended (77.78%)\n", - "Epoch 1933: model set back to train mode\n", - "Epoch 1933: model parameters saved\n", - "Epoch 1934 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1934: avg_loss appended (2.7778)\n", - "Epoch 1934: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1934: accuracy appended (77.78%)\n", - "Epoch 1934: model set back to train mode\n", - "Epoch 1934: model parameters saved\n", - "Epoch 1935 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1935: avg_loss appended (2.7778)\n", - "Epoch 1935: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1935: accuracy appended (77.78%)\n", - "Epoch 1935: model set back to train mode\n", - "Epoch 1935: model parameters saved\n", - "Epoch 1936 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1936: avg_loss appended (2.7778)\n", - "Epoch 1936: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1936: accuracy appended (77.78%)\n", - "Epoch 1936: model set back to train mode\n", - "Epoch 1936: model parameters saved\n", - "Epoch 1937 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1937: avg_loss appended (2.7778)\n", - "Epoch 1937: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1937: accuracy appended (77.78%)\n", - "Epoch 1937: model set back to train mode\n", - "Epoch 1937: model parameters saved\n", - "Epoch 1938 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1938: avg_loss appended (2.7778)\n", - "Epoch 1938: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1938: accuracy appended (77.78%)\n", - "Epoch 1938: model set back to train mode\n", - "Epoch 1938: model parameters saved\n", - "Epoch 1939 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1939: avg_loss appended (2.7778)\n", - "Epoch 1939: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1939: accuracy appended (77.78%)\n", - "Epoch 1939: model set back to train mode\n", - "Epoch 1939: model parameters saved\n", - "Epoch 1940 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1940: avg_loss appended (2.7778)\n", - "Epoch 1940: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1940: accuracy appended (77.78%)\n", - "Epoch 1940: model set back to train mode\n", - "Epoch 1940: model parameters saved\n", - "Epoch 1941 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1941: avg_loss appended (2.7778)\n", - "Epoch 1941: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1941: accuracy appended (77.78%)\n", - "Epoch 1941: model set back to train mode\n", - "Epoch 1941: model parameters saved\n", - "Epoch 1942 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1942: avg_loss appended (2.7778)\n", - "Epoch 1942: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1942: accuracy appended (77.78%)\n", - "Epoch 1942: model set back to train mode\n", - "Epoch 1942: model parameters saved\n", - "Epoch 1943 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1943: avg_loss appended (2.7778)\n", - "Epoch 1943: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1943: accuracy appended (77.78%)\n", - "Epoch 1943: model set back to train mode\n", - "Epoch 1943: model parameters saved\n", - "Epoch 1944 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1944: avg_loss appended (2.7778)\n", - "Epoch 1944: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1944: accuracy appended (77.78%)\n", - "Epoch 1944: model set back to train mode\n", - "Epoch 1944: model parameters saved\n", - "Epoch 1945 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1945: avg_loss appended (2.7778)\n", - "Epoch 1945: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1945: accuracy appended (77.78%)\n", - "Epoch 1945: model set back to train mode\n", - "Epoch 1945: model parameters saved\n", - "Epoch 1946 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1946: avg_loss appended (2.7778)\n", - "Epoch 1946: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1946: accuracy appended (77.78%)\n", - "Epoch 1946: model set back to train mode\n", - "Epoch 1946: model parameters saved\n", - "Epoch 1947 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1947: avg_loss appended (2.7778)\n", - "Epoch 1947: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1947: accuracy appended (77.78%)\n", - "Epoch 1947: model set back to train mode\n", - "Epoch 1947: model parameters saved\n", - "Epoch 1948 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1948: avg_loss appended (2.7778)\n", - "Epoch 1948: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1948: accuracy appended (77.78%)\n", - "Epoch 1948: model set back to train mode\n", - "Epoch 1948: model parameters saved\n", - "Epoch 1949 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1949: avg_loss appended (2.7778)\n", - "Epoch 1949: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1949: accuracy appended (77.78%)\n", - "Epoch 1949: model set back to train mode\n", - "Epoch 1949: model parameters saved\n", - "Epoch 1950 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1950: avg_loss appended (2.7778)\n", - "Epoch 1950: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1950: accuracy appended (77.78%)\n", - "Epoch 1950: model set back to train mode\n", - "Epoch 1950: model parameters saved\n", - "Epoch 1951 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1951: avg_loss appended (2.7778)\n", - "Epoch 1951: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1951: accuracy appended (77.78%)\n", - "Epoch 1951: model set back to train mode\n", - "Epoch 1951: model parameters saved\n", - "Epoch 1952 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1952: avg_loss appended (2.7778)\n", - "Epoch 1952: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1952: accuracy appended (77.78%)\n", - "Epoch 1952: model set back to train mode\n", - "Epoch 1952: model parameters saved\n", - "Epoch 1953 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1953: avg_loss appended (2.7778)\n", - "Epoch 1953: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1953: accuracy appended (77.78%)\n", - "Epoch 1953: model set back to train mode\n", - "Epoch 1953: model parameters saved\n", - "Epoch 1954 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1954: avg_loss appended (2.7778)\n", - "Epoch 1954: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1954: accuracy appended (77.78%)\n", - "Epoch 1954: model set back to train mode\n", - "Epoch 1954: model parameters saved\n", - "Epoch 1955 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1955: avg_loss appended (2.7778)\n", - "Epoch 1955: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1955: accuracy appended (77.78%)\n", - "Epoch 1955: model set back to train mode\n", - "Epoch 1955: model parameters saved\n", - "Epoch 1956 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1956: avg_loss appended (2.7778)\n", - "Epoch 1956: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1956: accuracy appended (77.78%)\n", - "Epoch 1956: model set back to train mode\n", - "Epoch 1956: model parameters saved\n", - "Epoch 1957 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1957: avg_loss appended (2.7778)\n", - "Epoch 1957: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1957: accuracy appended (77.78%)\n", - "Epoch 1957: model set back to train mode\n", - "Epoch 1957: model parameters saved\n", - "Epoch 1958 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1958: avg_loss appended (2.7778)\n", - "Epoch 1958: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1958: accuracy appended (77.78%)\n", - "Epoch 1958: model set back to train mode\n", - "Epoch 1958: model parameters saved\n", - "Epoch 1959 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1959: avg_loss appended (2.7778)\n", - "Epoch 1959: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1959: accuracy appended (77.78%)\n", - "Epoch 1959: model set back to train mode\n", - "Epoch 1959: model parameters saved\n", - "Epoch 1960 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1960: avg_loss appended (2.7778)\n", - "Epoch 1960: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1960: accuracy appended (77.78%)\n", - "Epoch 1960: model set back to train mode\n", - "Epoch 1960: model parameters saved\n", - "Epoch 1961 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1961: avg_loss appended (2.7778)\n", - "Epoch 1961: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1961: accuracy appended (77.78%)\n", - "Epoch 1961: model set back to train mode\n", - "Epoch 1961: model parameters saved\n", - "Epoch 1962 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1962: avg_loss appended (2.7778)\n", - "Epoch 1962: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1962: accuracy appended (77.78%)\n", - "Epoch 1962: model set back to train mode\n", - "Epoch 1962: model parameters saved\n", - "Epoch 1963 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1963: avg_loss appended (2.7778)\n", - "Epoch 1963: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1963: accuracy appended (77.78%)\n", - "Epoch 1963: model set back to train mode\n", - "Epoch 1963: model parameters saved\n", - "Epoch 1964 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1964: avg_loss appended (2.7778)\n", - "Epoch 1964: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1964: accuracy appended (77.78%)\n", - "Epoch 1964: model set back to train mode\n", - "Epoch 1964: model parameters saved\n", - "Epoch 1965 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1965: avg_loss appended (2.7778)\n", - "Epoch 1965: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1965: accuracy appended (77.78%)\n", - "Epoch 1965: model set back to train mode\n", - "Epoch 1965: model parameters saved\n", - "Epoch 1966 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1966: avg_loss appended (2.7778)\n", - "Epoch 1966: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1966: accuracy appended (77.78%)\n", - "Epoch 1966: model set back to train mode\n", - "Epoch 1966: model parameters saved\n", - "Epoch 1967 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1967: avg_loss appended (2.7778)\n", - "Epoch 1967: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1967: accuracy appended (77.78%)\n", - "Epoch 1967: model set back to train mode\n", - "Epoch 1967: model parameters saved\n", - "Epoch 1968 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1968: avg_loss appended (2.7778)\n", - "Epoch 1968: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1968: accuracy appended (77.78%)\n", - "Epoch 1968: model set back to train mode\n", - "Epoch 1968: model parameters saved\n", - "Epoch 1969 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1969: avg_loss appended (2.7778)\n", - "Epoch 1969: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1969: accuracy appended (77.78%)\n", - "Epoch 1969: model set back to train mode\n", - "Epoch 1969: model parameters saved\n", - "Epoch 1970 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1970: avg_loss appended (2.7778)\n", - "Epoch 1970: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1970: accuracy appended (77.78%)\n", - "Epoch 1970: model set back to train mode\n", - "Epoch 1970: model parameters saved\n", - "Epoch 1971 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1971: avg_loss appended (2.7778)\n", - "Epoch 1971: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1971: accuracy appended (77.78%)\n", - "Epoch 1971: model set back to train mode\n", - "Epoch 1971: model parameters saved\n", - "Epoch 1972 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1972: avg_loss appended (2.7778)\n", - "Epoch 1972: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1972: accuracy appended (77.78%)\n", - "Epoch 1972: model set back to train mode\n", - "Epoch 1972: model parameters saved\n", - "Epoch 1973 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1973: avg_loss appended (2.7778)\n", - "Epoch 1973: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1973: accuracy appended (77.78%)\n", - "Epoch 1973: model set back to train mode\n", - "Epoch 1973: model parameters saved\n", - "Epoch 1974 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1974: avg_loss appended (2.7778)\n", - "Epoch 1974: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1974: accuracy appended (77.78%)\n", - "Epoch 1974: model set back to train mode\n", - "Epoch 1974: model parameters saved\n", - "Epoch 1975 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1975: avg_loss appended (2.7778)\n", - "Epoch 1975: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1975: accuracy appended (77.78%)\n", - "Epoch 1975: model set back to train mode\n", - "Epoch 1975: model parameters saved\n", - "Epoch 1976 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1976: avg_loss appended (2.7778)\n", - "Epoch 1976: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1976: accuracy appended (77.78%)\n", - "Epoch 1976: model set back to train mode\n", - "Epoch 1976: model parameters saved\n", - "Epoch 1977 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1977: avg_loss appended (2.7778)\n", - "Epoch 1977: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1977: accuracy appended (77.78%)\n", - "Epoch 1977: model set back to train mode\n", - "Epoch 1977: model parameters saved\n", - "Epoch 1978 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1978: avg_loss appended (2.7778)\n", - "Epoch 1978: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1978: accuracy appended (77.78%)\n", - "Epoch 1978: model set back to train mode\n", - "Epoch 1978: model parameters saved\n", - "Epoch 1979 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1979: avg_loss appended (2.7778)\n", - "Epoch 1979: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1979: accuracy appended (77.78%)\n", - "Epoch 1979: model set back to train mode\n", - "Epoch 1979: model parameters saved\n", - "Epoch 1980 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1980: avg_loss appended (2.7778)\n", - "Epoch 1980: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1980: accuracy appended (77.78%)\n", - "Epoch 1980: model set back to train mode\n", - "Epoch 1980: model parameters saved\n", - "Epoch 1981 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1981: avg_loss appended (2.7778)\n", - "Epoch 1981: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1981: accuracy appended (77.78%)\n", - "Epoch 1981: model set back to train mode\n", - "Epoch 1981: model parameters saved\n", - "Epoch 1982 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1982: avg_loss appended (2.7778)\n", - "Epoch 1982: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1982: accuracy appended (77.78%)\n", - "Epoch 1982: model set back to train mode\n", - "Epoch 1982: model parameters saved\n", - "Epoch 1983 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1983: avg_loss appended (2.7778)\n", - "Epoch 1983: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1983: accuracy appended (77.78%)\n", - "Epoch 1983: model set back to train mode\n", - "Epoch 1983: model parameters saved\n", - "Epoch 1984 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1984: avg_loss appended (2.7778)\n", - "Epoch 1984: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1984: accuracy appended (77.78%)\n", - "Epoch 1984: model set back to train mode\n", - "Epoch 1984: model parameters saved\n", - "Epoch 1985 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1985: avg_loss appended (2.7778)\n", - "Epoch 1985: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1985: accuracy appended (77.78%)\n", - "Epoch 1985: model set back to train mode\n", - "Epoch 1985: model parameters saved\n", - "Epoch 1986 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1986: avg_loss appended (2.7778)\n", - "Epoch 1986: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1986: accuracy appended (77.78%)\n", - "Epoch 1986: model set back to train mode\n", - "Epoch 1986: model parameters saved\n", - "Epoch 1987 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1987: avg_loss appended (2.7778)\n", - "Epoch 1987: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1987: accuracy appended (77.78%)\n", - "Epoch 1987: model set back to train mode\n", - "Epoch 1987: model parameters saved\n", - "Epoch 1988 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1988: avg_loss appended (2.7778)\n", - "Epoch 1988: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1988: accuracy appended (77.78%)\n", - "Epoch 1988: model set back to train mode\n", - "Epoch 1988: model parameters saved\n", - "Epoch 1989 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1989: avg_loss appended (2.7778)\n", - "Epoch 1989: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1989: accuracy appended (77.78%)\n", - "Epoch 1989: model set back to train mode\n", - "Epoch 1989: model parameters saved\n", - "Epoch 1990 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1990: avg_loss appended (2.7778)\n", - "Epoch 1990: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1990: accuracy appended (77.78%)\n", - "Epoch 1990: model set back to train mode\n", - "Epoch 1990: model parameters saved\n", - "Epoch 1991 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1991: avg_loss appended (2.7778)\n", - "Epoch 1991: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1991: accuracy appended (77.78%)\n", - "Epoch 1991: model set back to train mode\n", - "Epoch 1991: model parameters saved\n", - "Epoch 1992 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1992: avg_loss appended (2.7778)\n", - "Epoch 1992: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1992: accuracy appended (77.78%)\n", - "Epoch 1992: model set back to train mode\n", - "Epoch 1992: model parameters saved\n", - "Epoch 1993 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1993: avg_loss appended (2.7778)\n", - "Epoch 1993: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1993: accuracy appended (77.78%)\n", - "Epoch 1993: model set back to train mode\n", - "Epoch 1993: model parameters saved\n", - "Epoch 1994 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1994: avg_loss appended (2.7778)\n", - "Epoch 1994: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1994: accuracy appended (77.78%)\n", - "Epoch 1994: model set back to train mode\n", - "Epoch 1994: model parameters saved\n", - "Epoch 1995 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1995: avg_loss appended (2.7778)\n", - "Epoch 1995: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1995: accuracy appended (77.78%)\n", - "Epoch 1995: model set back to train mode\n", - "Epoch 1995: model parameters saved\n", - "Epoch 1996 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1996: avg_loss appended (2.7778)\n", - "Epoch 1996: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1996: accuracy appended (77.78%)\n", - "Epoch 1996: model set back to train mode\n", - "Epoch 1996: model parameters saved\n", - "Epoch 1997 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1997: avg_loss appended (2.7778)\n", - "Epoch 1997: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1997: accuracy appended (77.78%)\n", - "Epoch 1997: model set back to train mode\n", - "Epoch 1997: model parameters saved\n", - "Epoch 1998 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1998: avg_loss appended (2.7778)\n", - "Epoch 1998: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1998: accuracy appended (77.78%)\n", - "Epoch 1998: model set back to train mode\n", - "Epoch 1998: model parameters saved\n", - "Epoch 1999 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 1999: avg_loss appended (2.7778)\n", - "Epoch 1999: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 1999: accuracy appended (77.78%)\n", - "Epoch 1999: model set back to train mode\n", - "Epoch 1999: model parameters saved\n", - "Epoch 2000 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2000: avg_loss appended (2.7778)\n", - "Epoch 2000: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2000: accuracy appended (77.78%)\n", - "Epoch 2000: model set back to train mode\n", - "Epoch 2000: model parameters saved\n", - "Epoch 2000/10000, Loss: 2.7778, Accuracy: 77.78%\n", - "Epoch 2000: checkpoint saved\n", - "Epoch 2001 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2001: avg_loss appended (2.7778)\n", - "Epoch 2001: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2001: accuracy appended (77.78%)\n", - "Epoch 2001: model set back to train mode\n", - "Epoch 2001: model parameters saved\n", - "Epoch 2002 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2002: avg_loss appended (2.7778)\n", - "Epoch 2002: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2002: accuracy appended (77.78%)\n", - "Epoch 2002: model set back to train mode\n", - "Epoch 2002: model parameters saved\n", - "Epoch 2003 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2003: avg_loss appended (2.7778)\n", - "Epoch 2003: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2003: accuracy appended (77.78%)\n", - "Epoch 2003: model set back to train mode\n", - "Epoch 2003: model parameters saved\n", - "Epoch 2004 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2004: avg_loss appended (2.7778)\n", - "Epoch 2004: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2004: accuracy appended (77.78%)\n", - "Epoch 2004: model set back to train mode\n", - "Epoch 2004: model parameters saved\n", - "Epoch 2005 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2005: avg_loss appended (2.7778)\n", - "Epoch 2005: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2005: accuracy appended (77.78%)\n", - "Epoch 2005: model set back to train mode\n", - "Epoch 2005: model parameters saved\n", - "Epoch 2006 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2006: avg_loss appended (2.7778)\n", - "Epoch 2006: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2006: accuracy appended (77.78%)\n", - "Epoch 2006: model set back to train mode\n", - "Epoch 2006: model parameters saved\n", - "Epoch 2007 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2007: avg_loss appended (2.7778)\n", - "Epoch 2007: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2007: accuracy appended (77.78%)\n", - "Epoch 2007: model set back to train mode\n", - "Epoch 2007: model parameters saved\n", - "Epoch 2008 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2008: avg_loss appended (2.7778)\n", - "Epoch 2008: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2008: accuracy appended (77.78%)\n", - "Epoch 2008: model set back to train mode\n", - "Epoch 2008: model parameters saved\n", - "Epoch 2009 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2009: avg_loss appended (2.7778)\n", - "Epoch 2009: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2009: accuracy appended (77.78%)\n", - "Epoch 2009: model set back to train mode\n", - "Epoch 2009: model parameters saved\n", - "Epoch 2010 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2010: avg_loss appended (2.7778)\n", - "Epoch 2010: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2010: accuracy appended (77.78%)\n", - "Epoch 2010: model set back to train mode\n", - "Epoch 2010: model parameters saved\n", - "Epoch 2011 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2011: avg_loss appended (2.7778)\n", - "Epoch 2011: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2011: accuracy appended (77.78%)\n", - "Epoch 2011: model set back to train mode\n", - "Epoch 2011: model parameters saved\n", - "Epoch 2012 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2012: avg_loss appended (2.7778)\n", - "Epoch 2012: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2012: accuracy appended (77.78%)\n", - "Epoch 2012: model set back to train mode\n", - "Epoch 2012: model parameters saved\n", - "Epoch 2013 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2013: avg_loss appended (2.7778)\n", - "Epoch 2013: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2013: accuracy appended (77.78%)\n", - "Epoch 2013: model set back to train mode\n", - "Epoch 2013: model parameters saved\n", - "Epoch 2014 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2014: avg_loss appended (2.7778)\n", - "Epoch 2014: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2014: accuracy appended (77.78%)\n", - "Epoch 2014: model set back to train mode\n", - "Epoch 2014: model parameters saved\n", - "Epoch 2015 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2015: avg_loss appended (2.7778)\n", - "Epoch 2015: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2015: accuracy appended (77.78%)\n", - "Epoch 2015: model set back to train mode\n", - "Epoch 2015: model parameters saved\n", - "Epoch 2016 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2016: avg_loss appended (2.7778)\n", - "Epoch 2016: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2016: accuracy appended (77.78%)\n", - "Epoch 2016: model set back to train mode\n", - "Epoch 2016: model parameters saved\n", - "Epoch 2017 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2017: avg_loss appended (2.7778)\n", - "Epoch 2017: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2017: accuracy appended (77.78%)\n", - "Epoch 2017: model set back to train mode\n", - "Epoch 2017: model parameters saved\n", - "Epoch 2018 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2018: avg_loss appended (2.7778)\n", - "Epoch 2018: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2018: accuracy appended (77.78%)\n", - "Epoch 2018: model set back to train mode\n", - "Epoch 2018: model parameters saved\n", - "Epoch 2019 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2019: avg_loss appended (2.7778)\n", - "Epoch 2019: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2019: accuracy appended (77.78%)\n", - "Epoch 2019: model set back to train mode\n", - "Epoch 2019: model parameters saved\n", - "Epoch 2020 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2020: avg_loss appended (2.7778)\n", - "Epoch 2020: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2020: accuracy appended (77.78%)\n", - "Epoch 2020: model set back to train mode\n", - "Epoch 2020: model parameters saved\n", - "Epoch 2021 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2021: avg_loss appended (2.7778)\n", - "Epoch 2021: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2021: accuracy appended (77.78%)\n", - "Epoch 2021: model set back to train mode\n", - "Epoch 2021: model parameters saved\n", - "Epoch 2022 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2022: avg_loss appended (2.7778)\n", - "Epoch 2022: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2022: accuracy appended (77.78%)\n", - "Epoch 2022: model set back to train mode\n", - "Epoch 2022: model parameters saved\n", - "Epoch 2023 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2023: avg_loss appended (2.7778)\n", - "Epoch 2023: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2023: accuracy appended (77.78%)\n", - "Epoch 2023: model set back to train mode\n", - "Epoch 2023: model parameters saved\n", - "Epoch 2024 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2024: avg_loss appended (2.7778)\n", - "Epoch 2024: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2024: accuracy appended (77.78%)\n", - "Epoch 2024: model set back to train mode\n", - "Epoch 2024: model parameters saved\n", - "Epoch 2025 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2025: avg_loss appended (2.7778)\n", - "Epoch 2025: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2025: accuracy appended (77.78%)\n", - "Epoch 2025: model set back to train mode\n", - "Epoch 2025: model parameters saved\n", - "Epoch 2026 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2026: avg_loss appended (2.7778)\n", - "Epoch 2026: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2026: accuracy appended (77.78%)\n", - "Epoch 2026: model set back to train mode\n", - "Epoch 2026: model parameters saved\n", - "Epoch 2027 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2027: avg_loss appended (2.7778)\n", - "Epoch 2027: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2027: accuracy appended (77.78%)\n", - "Epoch 2027: model set back to train mode\n", - "Epoch 2027: model parameters saved\n", - "Epoch 2028 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2028: avg_loss appended (2.7778)\n", - "Epoch 2028: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2028: accuracy appended (77.78%)\n", - "Epoch 2028: model set back to train mode\n", - "Epoch 2028: model parameters saved\n", - "Epoch 2029 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2029: avg_loss appended (2.7778)\n", - "Epoch 2029: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2029: accuracy appended (77.78%)\n", - "Epoch 2029: model set back to train mode\n", - "Epoch 2029: model parameters saved\n", - "Epoch 2030 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2030: avg_loss appended (2.7778)\n", - "Epoch 2030: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2030: accuracy appended (77.78%)\n", - "Epoch 2030: model set back to train mode\n", - "Epoch 2030: model parameters saved\n", - "Epoch 2031 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2031: avg_loss appended (2.7778)\n", - "Epoch 2031: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2031: accuracy appended (77.78%)\n", - "Epoch 2031: model set back to train mode\n", - "Epoch 2031: model parameters saved\n", - "Epoch 2032 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2032: avg_loss appended (2.7778)\n", - "Epoch 2032: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2032: accuracy appended (77.78%)\n", - "Epoch 2032: model set back to train mode\n", - "Epoch 2032: model parameters saved\n", - "Epoch 2033 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2033: avg_loss appended (2.7778)\n", - "Epoch 2033: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2033: accuracy appended (77.78%)\n", - "Epoch 2033: model set back to train mode\n", - "Epoch 2033: model parameters saved\n", - "Epoch 2034 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2034: avg_loss appended (2.7778)\n", - "Epoch 2034: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2034: accuracy appended (77.78%)\n", - "Epoch 2034: model set back to train mode\n", - "Epoch 2034: model parameters saved\n", - "Epoch 2035 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2035: avg_loss appended (2.7778)\n", - "Epoch 2035: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2035: accuracy appended (77.78%)\n", - "Epoch 2035: model set back to train mode\n", - "Epoch 2035: model parameters saved\n", - "Epoch 2036 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2036: avg_loss appended (2.7778)\n", - "Epoch 2036: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2036: accuracy appended (77.78%)\n", - "Epoch 2036: model set back to train mode\n", - "Epoch 2036: model parameters saved\n", - "Epoch 2037 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2037: avg_loss appended (2.7778)\n", - "Epoch 2037: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2037: accuracy appended (77.78%)\n", - "Epoch 2037: model set back to train mode\n", - "Epoch 2037: model parameters saved\n", - "Epoch 2038 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2038: avg_loss appended (2.7778)\n", - "Epoch 2038: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2038: accuracy appended (77.78%)\n", - "Epoch 2038: model set back to train mode\n", - "Epoch 2038: model parameters saved\n", - "Epoch 2039 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2039: avg_loss appended (2.7778)\n", - "Epoch 2039: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2039: accuracy appended (77.78%)\n", - "Epoch 2039: model set back to train mode\n", - "Epoch 2039: model parameters saved\n", - "Epoch 2040 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2040: avg_loss appended (2.7778)\n", - "Epoch 2040: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2040: accuracy appended (77.78%)\n", - "Epoch 2040: model set back to train mode\n", - "Epoch 2040: model parameters saved\n", - "Epoch 2041 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2041: avg_loss appended (2.7778)\n", - "Epoch 2041: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2041: accuracy appended (77.78%)\n", - "Epoch 2041: model set back to train mode\n", - "Epoch 2041: model parameters saved\n", - "Epoch 2042 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2042: avg_loss appended (2.7778)\n", - "Epoch 2042: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2042: accuracy appended (77.78%)\n", - "Epoch 2042: model set back to train mode\n", - "Epoch 2042: model parameters saved\n", - "Epoch 2043 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2043: avg_loss appended (2.7778)\n", - "Epoch 2043: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2043: accuracy appended (77.78%)\n", - "Epoch 2043: model set back to train mode\n", - "Epoch 2043: model parameters saved\n", - "Epoch 2044 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2044: avg_loss appended (2.7778)\n", - "Epoch 2044: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2044: accuracy appended (77.78%)\n", - "Epoch 2044: model set back to train mode\n", - "Epoch 2044: model parameters saved\n", - "Epoch 2045 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2045: avg_loss appended (2.7778)\n", - "Epoch 2045: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2045: accuracy appended (77.78%)\n", - "Epoch 2045: model set back to train mode\n", - "Epoch 2045: model parameters saved\n", - "Epoch 2046 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2046: avg_loss appended (2.7778)\n", - "Epoch 2046: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2046: accuracy appended (77.78%)\n", - "Epoch 2046: model set back to train mode\n", - "Epoch 2046: model parameters saved\n", - "Epoch 2047 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2047: avg_loss appended (2.7778)\n", - "Epoch 2047: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2047: accuracy appended (77.78%)\n", - "Epoch 2047: model set back to train mode\n", - "Epoch 2047: model parameters saved\n", - "Epoch 2048 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2048: avg_loss appended (2.7778)\n", - "Epoch 2048: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2048: accuracy appended (77.78%)\n", - "Epoch 2048: model set back to train mode\n", - "Epoch 2048: model parameters saved\n", - "Epoch 2049 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2049: avg_loss appended (2.7778)\n", - "Epoch 2049: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2049: accuracy appended (77.78%)\n", - "Epoch 2049: model set back to train mode\n", - "Epoch 2049: model parameters saved\n", - "Epoch 2050 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2050: avg_loss appended (2.7778)\n", - "Epoch 2050: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2050: accuracy appended (77.78%)\n", - "Epoch 2050: model set back to train mode\n", - "Epoch 2050: model parameters saved\n", - "Epoch 2051 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2051: avg_loss appended (2.7778)\n", - "Epoch 2051: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2051: accuracy appended (77.78%)\n", - "Epoch 2051: model set back to train mode\n", - "Epoch 2051: model parameters saved\n", - "Epoch 2052 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2052: avg_loss appended (2.7778)\n", - "Epoch 2052: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2052: accuracy appended (77.78%)\n", - "Epoch 2052: model set back to train mode\n", - "Epoch 2052: model parameters saved\n", - "Epoch 2053 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2053: avg_loss appended (2.7778)\n", - "Epoch 2053: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2053: accuracy appended (77.78%)\n", - "Epoch 2053: model set back to train mode\n", - "Epoch 2053: model parameters saved\n", - "Epoch 2054 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2054: avg_loss appended (2.7778)\n", - "Epoch 2054: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2054: accuracy appended (77.78%)\n", - "Epoch 2054: model set back to train mode\n", - "Epoch 2054: model parameters saved\n", - "Epoch 2055 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2055: avg_loss appended (2.7778)\n", - "Epoch 2055: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2055: accuracy appended (77.78%)\n", - "Epoch 2055: model set back to train mode\n", - "Epoch 2055: model parameters saved\n", - "Epoch 2056 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2056: avg_loss appended (2.7778)\n", - "Epoch 2056: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2056: accuracy appended (77.78%)\n", - "Epoch 2056: model set back to train mode\n", - "Epoch 2056: model parameters saved\n", - "Epoch 2057 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2057: avg_loss appended (2.7778)\n", - "Epoch 2057: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2057: accuracy appended (77.78%)\n", - "Epoch 2057: model set back to train mode\n", - "Epoch 2057: model parameters saved\n", - "Epoch 2058 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2058: avg_loss appended (2.7778)\n", - "Epoch 2058: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2058: accuracy appended (77.78%)\n", - "Epoch 2058: model set back to train mode\n", - "Epoch 2058: model parameters saved\n", - "Epoch 2059 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2059: avg_loss appended (2.7778)\n", - "Epoch 2059: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2059: accuracy appended (77.78%)\n", - "Epoch 2059: model set back to train mode\n", - "Epoch 2059: model parameters saved\n", - "Epoch 2060 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2060: avg_loss appended (2.7778)\n", - "Epoch 2060: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2060: accuracy appended (77.78%)\n", - "Epoch 2060: model set back to train mode\n", - "Epoch 2060: model parameters saved\n", - "Epoch 2061 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2061: avg_loss appended (2.7778)\n", - "Epoch 2061: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2061: accuracy appended (77.78%)\n", - "Epoch 2061: model set back to train mode\n", - "Epoch 2061: model parameters saved\n", - "Epoch 2062 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2062: avg_loss appended (2.7778)\n", - "Epoch 2062: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2062: accuracy appended (77.78%)\n", - "Epoch 2062: model set back to train mode\n", - "Epoch 2062: model parameters saved\n", - "Epoch 2063 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2063: avg_loss appended (2.7778)\n", - "Epoch 2063: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2063: accuracy appended (77.78%)\n", - "Epoch 2063: model set back to train mode\n", - "Epoch 2063: model parameters saved\n", - "Epoch 2064 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2064: avg_loss appended (2.7778)\n", - "Epoch 2064: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2064: accuracy appended (77.78%)\n", - "Epoch 2064: model set back to train mode\n", - "Epoch 2064: model parameters saved\n", - "Epoch 2065 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2065: avg_loss appended (2.7778)\n", - "Epoch 2065: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2065: accuracy appended (77.78%)\n", - "Epoch 2065: model set back to train mode\n", - "Epoch 2065: model parameters saved\n", - "Epoch 2066 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2066: avg_loss appended (2.7778)\n", - "Epoch 2066: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2066: accuracy appended (77.78%)\n", - "Epoch 2066: model set back to train mode\n", - "Epoch 2066: model parameters saved\n", - "Epoch 2067 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2067: avg_loss appended (2.7778)\n", - "Epoch 2067: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2067: accuracy appended (77.78%)\n", - "Epoch 2067: model set back to train mode\n", - "Epoch 2067: model parameters saved\n", - "Epoch 2068 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2068: avg_loss appended (2.7778)\n", - "Epoch 2068: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2068: accuracy appended (77.78%)\n", - "Epoch 2068: model set back to train mode\n", - "Epoch 2068: model parameters saved\n", - "Epoch 2069 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2069: avg_loss appended (2.7778)\n", - "Epoch 2069: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2069: accuracy appended (77.78%)\n", - "Epoch 2069: model set back to train mode\n", - "Epoch 2069: model parameters saved\n", - "Epoch 2070 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2070: avg_loss appended (2.7778)\n", - "Epoch 2070: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2070: accuracy appended (77.78%)\n", - "Epoch 2070: model set back to train mode\n", - "Epoch 2070: model parameters saved\n", - "Epoch 2071 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2071: avg_loss appended (2.7778)\n", - "Epoch 2071: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2071: accuracy appended (77.78%)\n", - "Epoch 2071: model set back to train mode\n", - "Epoch 2071: model parameters saved\n", - "Epoch 2072 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2072: avg_loss appended (2.7778)\n", - "Epoch 2072: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2072: accuracy appended (77.78%)\n", - "Epoch 2072: model set back to train mode\n", - "Epoch 2072: model parameters saved\n", - "Epoch 2073 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2073: avg_loss appended (2.7778)\n", - "Epoch 2073: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2073: accuracy appended (77.78%)\n", - "Epoch 2073: model set back to train mode\n", - "Epoch 2073: model parameters saved\n", - "Epoch 2074 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2074: avg_loss appended (2.7778)\n", - "Epoch 2074: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2074: accuracy appended (77.78%)\n", - "Epoch 2074: model set back to train mode\n", - "Epoch 2074: model parameters saved\n", - "Epoch 2075 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2075: avg_loss appended (2.7778)\n", - "Epoch 2075: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2075: accuracy appended (77.78%)\n", - "Epoch 2075: model set back to train mode\n", - "Epoch 2075: model parameters saved\n", - "Epoch 2076 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2076: avg_loss appended (2.7778)\n", - "Epoch 2076: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2076: accuracy appended (77.78%)\n", - "Epoch 2076: model set back to train mode\n", - "Epoch 2076: model parameters saved\n", - "Epoch 2077 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2077: avg_loss appended (2.7778)\n", - "Epoch 2077: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2077: accuracy appended (77.78%)\n", - "Epoch 2077: model set back to train mode\n", - "Epoch 2077: model parameters saved\n", - "Epoch 2078 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2078: avg_loss appended (2.7778)\n", - "Epoch 2078: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2078: accuracy appended (77.78%)\n", - "Epoch 2078: model set back to train mode\n", - "Epoch 2078: model parameters saved\n", - "Epoch 2079 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2079: avg_loss appended (2.7778)\n", - "Epoch 2079: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2079: accuracy appended (77.78%)\n", - "Epoch 2079: model set back to train mode\n", - "Epoch 2079: model parameters saved\n", - "Epoch 2080 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2080: avg_loss appended (2.7778)\n", - "Epoch 2080: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2080: accuracy appended (77.78%)\n", - "Epoch 2080: model set back to train mode\n", - "Epoch 2080: model parameters saved\n", - "Epoch 2081 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2081: avg_loss appended (2.7778)\n", - "Epoch 2081: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2081: accuracy appended (77.78%)\n", - "Epoch 2081: model set back to train mode\n", - "Epoch 2081: model parameters saved\n", - "Epoch 2082 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2082: avg_loss appended (2.7778)\n", - "Epoch 2082: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2082: accuracy appended (77.78%)\n", - "Epoch 2082: model set back to train mode\n", - "Epoch 2082: model parameters saved\n", - "Epoch 2083 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2083: avg_loss appended (2.7778)\n", - "Epoch 2083: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2083: accuracy appended (77.78%)\n", - "Epoch 2083: model set back to train mode\n", - "Epoch 2083: model parameters saved\n", - "Epoch 2084 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2084: avg_loss appended (2.7778)\n", - "Epoch 2084: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2084: accuracy appended (77.78%)\n", - "Epoch 2084: model set back to train mode\n", - "Epoch 2084: model parameters saved\n", - "Epoch 2085 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2085: avg_loss appended (2.7778)\n", - "Epoch 2085: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2085: accuracy appended (77.78%)\n", - "Epoch 2085: model set back to train mode\n", - "Epoch 2085: model parameters saved\n", - "Epoch 2086 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2086: avg_loss appended (2.7778)\n", - "Epoch 2086: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2086: accuracy appended (77.78%)\n", - "Epoch 2086: model set back to train mode\n", - "Epoch 2086: model parameters saved\n", - "Epoch 2087 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2087: avg_loss appended (2.7778)\n", - "Epoch 2087: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2087: accuracy appended (77.78%)\n", - "Epoch 2087: model set back to train mode\n", - "Epoch 2087: model parameters saved\n", - "Epoch 2088 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2088: avg_loss appended (2.7778)\n", - "Epoch 2088: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2088: accuracy appended (77.78%)\n", - "Epoch 2088: model set back to train mode\n", - "Epoch 2088: model parameters saved\n", - "Epoch 2089 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2089: avg_loss appended (2.7778)\n", - "Epoch 2089: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2089: accuracy appended (77.78%)\n", - "Epoch 2089: model set back to train mode\n", - "Epoch 2089: model parameters saved\n", - "Epoch 2090 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2090: avg_loss appended (2.7778)\n", - "Epoch 2090: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2090: accuracy appended (77.78%)\n", - "Epoch 2090: model set back to train mode\n", - "Epoch 2090: model parameters saved\n", - "Epoch 2091 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2091: avg_loss appended (2.7778)\n", - "Epoch 2091: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2091: accuracy appended (77.78%)\n", - "Epoch 2091: model set back to train mode\n", - "Epoch 2091: model parameters saved\n", - "Epoch 2092 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2092: avg_loss appended (2.7778)\n", - "Epoch 2092: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2092: accuracy appended (77.78%)\n", - "Epoch 2092: model set back to train mode\n", - "Epoch 2092: model parameters saved\n", - "Epoch 2093 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2093: avg_loss appended (2.7778)\n", - "Epoch 2093: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2093: accuracy appended (77.78%)\n", - "Epoch 2093: model set back to train mode\n", - "Epoch 2093: model parameters saved\n", - "Epoch 2094 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2094: avg_loss appended (2.7778)\n", - "Epoch 2094: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2094: accuracy appended (77.78%)\n", - "Epoch 2094: model set back to train mode\n", - "Epoch 2094: model parameters saved\n", - "Epoch 2095 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2095: avg_loss appended (2.7778)\n", - "Epoch 2095: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2095: accuracy appended (77.78%)\n", - "Epoch 2095: model set back to train mode\n", - "Epoch 2095: model parameters saved\n", - "Epoch 2096 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2096: avg_loss appended (2.7778)\n", - "Epoch 2096: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2096: accuracy appended (77.78%)\n", - "Epoch 2096: model set back to train mode\n", - "Epoch 2096: model parameters saved\n", - "Epoch 2097 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2097: avg_loss appended (2.7778)\n", - "Epoch 2097: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2097: accuracy appended (77.78%)\n", - "Epoch 2097: model set back to train mode\n", - "Epoch 2097: model parameters saved\n", - "Epoch 2098 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2098: avg_loss appended (2.7778)\n", - "Epoch 2098: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2098: accuracy appended (77.78%)\n", - "Epoch 2098: model set back to train mode\n", - "Epoch 2098: model parameters saved\n", - "Epoch 2099 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2099: avg_loss appended (2.7778)\n", - "Epoch 2099: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2099: accuracy appended (77.78%)\n", - "Epoch 2099: model set back to train mode\n", - "Epoch 2099: model parameters saved\n", - "Epoch 2100 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2100: avg_loss appended (2.7778)\n", - "Epoch 2100: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2100: accuracy appended (77.78%)\n", - "Epoch 2100: model set back to train mode\n", - "Epoch 2100: model parameters saved\n", - "Epoch 2100/10000, Loss: 2.7778, Accuracy: 77.78%\n", - "Epoch 2101 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2101: avg_loss appended (2.7778)\n", - "Epoch 2101: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2101: accuracy appended (77.78%)\n", - "Epoch 2101: model set back to train mode\n", - "Epoch 2101: model parameters saved\n", - "Epoch 2102 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2102: avg_loss appended (2.7778)\n", - "Epoch 2102: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2102: accuracy appended (77.78%)\n", - "Epoch 2102: model set back to train mode\n", - "Epoch 2102: model parameters saved\n", - "Epoch 2103 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2103: avg_loss appended (2.7778)\n", - "Epoch 2103: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2103: accuracy appended (77.78%)\n", - "Epoch 2103: model set back to train mode\n", - "Epoch 2103: model parameters saved\n", - "Epoch 2104 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2104: avg_loss appended (2.7778)\n", - "Epoch 2104: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2104: accuracy appended (77.78%)\n", - "Epoch 2104: model set back to train mode\n", - "Epoch 2104: model parameters saved\n", - "Epoch 2105 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2105: avg_loss appended (2.7778)\n", - "Epoch 2105: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2105: accuracy appended (77.78%)\n", - "Epoch 2105: model set back to train mode\n", - "Epoch 2105: model parameters saved\n", - "Epoch 2106 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2106: avg_loss appended (2.7778)\n", - "Epoch 2106: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2106: accuracy appended (77.78%)\n", - "Epoch 2106: model set back to train mode\n", - "Epoch 2106: model parameters saved\n", - "Epoch 2107 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2107: avg_loss appended (2.7778)\n", - "Epoch 2107: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2107: accuracy appended (77.78%)\n", - "Epoch 2107: model set back to train mode\n", - "Epoch 2107: model parameters saved\n", - "Epoch 2108 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2108: avg_loss appended (2.7778)\n", - "Epoch 2108: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2108: accuracy appended (77.78%)\n", - "Epoch 2108: model set back to train mode\n", - "Epoch 2108: model parameters saved\n", - "Epoch 2109 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2109: avg_loss appended (2.7778)\n", - "Epoch 2109: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2109: accuracy appended (77.78%)\n", - "Epoch 2109: model set back to train mode\n", - "Epoch 2109: model parameters saved\n", - "Epoch 2110 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2110: avg_loss appended (2.7778)\n", - "Epoch 2110: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2110: accuracy appended (77.78%)\n", - "Epoch 2110: model set back to train mode\n", - "Epoch 2110: model parameters saved\n", - "Epoch 2111 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2111: avg_loss appended (2.7778)\n", - "Epoch 2111: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2111: accuracy appended (77.78%)\n", - "Epoch 2111: model set back to train mode\n", - "Epoch 2111: model parameters saved\n", - "Epoch 2112 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2112: avg_loss appended (2.7778)\n", - "Epoch 2112: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2112: accuracy appended (77.78%)\n", - "Epoch 2112: model set back to train mode\n", - "Epoch 2112: model parameters saved\n", - "Epoch 2113 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2113: avg_loss appended (2.7778)\n", - "Epoch 2113: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2113: accuracy appended (77.78%)\n", - "Epoch 2113: model set back to train mode\n", - "Epoch 2113: model parameters saved\n", - "Epoch 2114 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2114: avg_loss appended (2.7778)\n", - "Epoch 2114: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2114: accuracy appended (77.78%)\n", - "Epoch 2114: model set back to train mode\n", - "Epoch 2114: model parameters saved\n", - "Epoch 2115 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2115: avg_loss appended (2.7778)\n", - "Epoch 2115: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2115: accuracy appended (77.78%)\n", - "Epoch 2115: model set back to train mode\n", - "Epoch 2115: model parameters saved\n", - "Epoch 2116 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2116: avg_loss appended (2.7778)\n", - "Epoch 2116: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2116: accuracy appended (77.78%)\n", - "Epoch 2116: model set back to train mode\n", - "Epoch 2116: model parameters saved\n", - "Epoch 2117 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2117: avg_loss appended (2.7778)\n", - "Epoch 2117: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2117: accuracy appended (77.78%)\n", - "Epoch 2117: model set back to train mode\n", - "Epoch 2117: model parameters saved\n", - "Epoch 2118 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2118: avg_loss appended (2.7778)\n", - "Epoch 2118: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2118: accuracy appended (77.78%)\n", - "Epoch 2118: model set back to train mode\n", - "Epoch 2118: model parameters saved\n", - "Epoch 2119 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2119: avg_loss appended (2.7778)\n", - "Epoch 2119: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2119: accuracy appended (77.78%)\n", - "Epoch 2119: model set back to train mode\n", - "Epoch 2119: model parameters saved\n", - "Epoch 2120 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2120: avg_loss appended (2.7778)\n", - "Epoch 2120: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2120: accuracy appended (77.78%)\n", - "Epoch 2120: model set back to train mode\n", - "Epoch 2120: model parameters saved\n", - "Epoch 2121 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2121: avg_loss appended (2.7778)\n", - "Epoch 2121: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2121: accuracy appended (77.78%)\n", - "Epoch 2121: model set back to train mode\n", - "Epoch 2121: model parameters saved\n", - "Epoch 2122 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2122: avg_loss appended (2.7778)\n", - "Epoch 2122: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2122: accuracy appended (77.78%)\n", - "Epoch 2122: model set back to train mode\n", - "Epoch 2122: model parameters saved\n", - "Epoch 2123 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2123: avg_loss appended (2.7778)\n", - "Epoch 2123: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2123: accuracy appended (77.78%)\n", - "Epoch 2123: model set back to train mode\n", - "Epoch 2123: model parameters saved\n", - "Epoch 2124 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2124: avg_loss appended (2.7778)\n", - "Epoch 2124: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2124: accuracy appended (77.78%)\n", - "Epoch 2124: model set back to train mode\n", - "Epoch 2124: model parameters saved\n", - "Epoch 2125 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2125: avg_loss appended (2.7778)\n", - "Epoch 2125: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2125: accuracy appended (77.78%)\n", - "Epoch 2125: model set back to train mode\n", - "Epoch 2125: model parameters saved\n", - "Epoch 2126 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2126: avg_loss appended (2.7778)\n", - "Epoch 2126: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2126: accuracy appended (77.78%)\n", - "Epoch 2126: model set back to train mode\n", - "Epoch 2126: model parameters saved\n", - "Epoch 2127 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2127: avg_loss appended (2.7778)\n", - "Epoch 2127: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2127: accuracy appended (77.78%)\n", - "Epoch 2127: model set back to train mode\n", - "Epoch 2127: model parameters saved\n", - "Epoch 2128 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2128: avg_loss appended (2.7778)\n", - "Epoch 2128: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2128: accuracy appended (77.78%)\n", - "Epoch 2128: model set back to train mode\n", - "Epoch 2128: model parameters saved\n", - "Epoch 2129 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2129: avg_loss appended (2.7778)\n", - "Epoch 2129: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2129: accuracy appended (77.78%)\n", - "Epoch 2129: model set back to train mode\n", - "Epoch 2129: model parameters saved\n", - "Epoch 2130 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2130: avg_loss appended (2.7778)\n", - "Epoch 2130: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 77.78%\n", - "Epoch 2130: accuracy appended (77.78%)\n", - "Epoch 2130: model set back to train mode\n", - "Epoch 2130: model parameters saved\n", - "Epoch 2131 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2131: avg_loss appended (2.7778)\n", - "Epoch 2131: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2131: accuracy appended (80.56%)\n", - "Epoch 2131: model set back to train mode\n", - "Epoch 2131: model parameters saved\n", - "Epoch 2132 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2132: avg_loss appended (2.7778)\n", - "Epoch 2132: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2132: accuracy appended (80.56%)\n", - "Epoch 2132: model set back to train mode\n", - "Epoch 2132: model parameters saved\n", - "Epoch 2133 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2133: avg_loss appended (2.7778)\n", - "Epoch 2133: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2133: accuracy appended (80.56%)\n", - "Epoch 2133: model set back to train mode\n", - "Epoch 2133: model parameters saved\n", - "Epoch 2134 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2134: avg_loss appended (2.7778)\n", - "Epoch 2134: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2134: accuracy appended (80.56%)\n", - "Epoch 2134: model set back to train mode\n", - "Epoch 2134: model parameters saved\n", - "Epoch 2135 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2135: avg_loss appended (2.7778)\n", - "Epoch 2135: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2135: accuracy appended (80.56%)\n", - "Epoch 2135: model set back to train mode\n", - "Epoch 2135: model parameters saved\n", - "Epoch 2136 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2136: avg_loss appended (2.7778)\n", - "Epoch 2136: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2136: accuracy appended (80.56%)\n", - "Epoch 2136: model set back to train mode\n", - "Epoch 2136: model parameters saved\n", - "Epoch 2137 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2137: avg_loss appended (2.7778)\n", - "Epoch 2137: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2137: accuracy appended (80.56%)\n", - "Epoch 2137: model set back to train mode\n", - "Epoch 2137: model parameters saved\n", - "Epoch 2138 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2138: avg_loss appended (2.7778)\n", - "Epoch 2138: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2138: accuracy appended (80.56%)\n", - "Epoch 2138: model set back to train mode\n", - "Epoch 2138: model parameters saved\n", - "Epoch 2139 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2139: avg_loss appended (2.7778)\n", - "Epoch 2139: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2139: accuracy appended (80.56%)\n", - "Epoch 2139: model set back to train mode\n", - "Epoch 2139: model parameters saved\n", - "Epoch 2140 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2140: avg_loss appended (2.7778)\n", - "Epoch 2140: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2140: accuracy appended (80.56%)\n", - "Epoch 2140: model set back to train mode\n", - "Epoch 2140: model parameters saved\n", - "Epoch 2141 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2141: avg_loss appended (2.7778)\n", - "Epoch 2141: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2141: accuracy appended (80.56%)\n", - "Epoch 2141: model set back to train mode\n", - "Epoch 2141: model parameters saved\n", - "Epoch 2142 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2142: avg_loss appended (2.7778)\n", - "Epoch 2142: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2142: accuracy appended (80.56%)\n", - "Epoch 2142: model set back to train mode\n", - "Epoch 2142: model parameters saved\n", - "Epoch 2143 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2143: avg_loss appended (2.7778)\n", - "Epoch 2143: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2143: accuracy appended (80.56%)\n", - "Epoch 2143: model set back to train mode\n", - "Epoch 2143: model parameters saved\n", - "Epoch 2144 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2144: avg_loss appended (2.7778)\n", - "Epoch 2144: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2144: accuracy appended (80.56%)\n", - "Epoch 2144: model set back to train mode\n", - "Epoch 2144: model parameters saved\n", - "Epoch 2145 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2145: avg_loss appended (2.7778)\n", - "Epoch 2145: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2145: accuracy appended (80.56%)\n", - "Epoch 2145: model set back to train mode\n", - "Epoch 2145: model parameters saved\n", - "Epoch 2146 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2146: avg_loss appended (2.7778)\n", - "Epoch 2146: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2146: accuracy appended (80.56%)\n", - "Epoch 2146: model set back to train mode\n", - "Epoch 2146: model parameters saved\n", - "Epoch 2147 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2147: avg_loss appended (2.7778)\n", - "Epoch 2147: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2147: accuracy appended (80.56%)\n", - "Epoch 2147: model set back to train mode\n", - "Epoch 2147: model parameters saved\n", - "Epoch 2148 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2148: avg_loss appended (2.7778)\n", - "Epoch 2148: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2148: accuracy appended (80.56%)\n", - "Epoch 2148: model set back to train mode\n", - "Epoch 2148: model parameters saved\n", - "Epoch 2149 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2149: avg_loss appended (2.7778)\n", - "Epoch 2149: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2149: accuracy appended (80.56%)\n", - "Epoch 2149: model set back to train mode\n", - "Epoch 2149: model parameters saved\n", - "Epoch 2150 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2150: avg_loss appended (2.7778)\n", - "Epoch 2150: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2150: accuracy appended (80.56%)\n", - "Epoch 2150: model set back to train mode\n", - "Epoch 2150: model parameters saved\n", - "Epoch 2151 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2151: avg_loss appended (2.7778)\n", - "Epoch 2151: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2151: accuracy appended (80.56%)\n", - "Epoch 2151: model set back to train mode\n", - "Epoch 2151: model parameters saved\n", - "Epoch 2152 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2152: avg_loss appended (2.7778)\n", - "Epoch 2152: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2152: accuracy appended (80.56%)\n", - "Epoch 2152: model set back to train mode\n", - "Epoch 2152: model parameters saved\n", - "Epoch 2153 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2153: avg_loss appended (2.7778)\n", - "Epoch 2153: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2153: accuracy appended (80.56%)\n", - "Epoch 2153: model set back to train mode\n", - "Epoch 2153: model parameters saved\n", - "Epoch 2154 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2154: avg_loss appended (2.7778)\n", - "Epoch 2154: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2154: accuracy appended (80.56%)\n", - "Epoch 2154: model set back to train mode\n", - "Epoch 2154: model parameters saved\n", - "Epoch 2155 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2155: avg_loss appended (2.7778)\n", - "Epoch 2155: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2155: accuracy appended (80.56%)\n", - "Epoch 2155: model set back to train mode\n", - "Epoch 2155: model parameters saved\n", - "Epoch 2156 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2156: avg_loss appended (2.7778)\n", - "Epoch 2156: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2156: accuracy appended (80.56%)\n", - "Epoch 2156: model set back to train mode\n", - "Epoch 2156: model parameters saved\n", - "Epoch 2157 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2157: avg_loss appended (2.7778)\n", - "Epoch 2157: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2157: accuracy appended (80.56%)\n", - "Epoch 2157: model set back to train mode\n", - "Epoch 2157: model parameters saved\n", - "Epoch 2158 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2158: avg_loss appended (2.7778)\n", - "Epoch 2158: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2158: accuracy appended (80.56%)\n", - "Epoch 2158: model set back to train mode\n", - "Epoch 2158: model parameters saved\n", - "Epoch 2159 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2159: avg_loss appended (2.7778)\n", - "Epoch 2159: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2159: accuracy appended (80.56%)\n", - "Epoch 2159: model set back to train mode\n", - "Epoch 2159: model parameters saved\n", - "Epoch 2160 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2160: avg_loss appended (2.7778)\n", - "Epoch 2160: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2160: accuracy appended (80.56%)\n", - "Epoch 2160: model set back to train mode\n", - "Epoch 2160: model parameters saved\n", - "Epoch 2161 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2161: avg_loss appended (2.7778)\n", - "Epoch 2161: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2161: accuracy appended (80.56%)\n", - "Epoch 2161: model set back to train mode\n", - "Epoch 2161: model parameters saved\n", - "Epoch 2162 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2162: avg_loss appended (2.7778)\n", - "Epoch 2162: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2162: accuracy appended (80.56%)\n", - "Epoch 2162: model set back to train mode\n", - "Epoch 2162: model parameters saved\n", - "Epoch 2163 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2163: avg_loss appended (2.7778)\n", - "Epoch 2163: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2163: accuracy appended (80.56%)\n", - "Epoch 2163: model set back to train mode\n", - "Epoch 2163: model parameters saved\n", - "Epoch 2164 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2164: avg_loss appended (2.7778)\n", - "Epoch 2164: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2164: accuracy appended (80.56%)\n", - "Epoch 2164: model set back to train mode\n", - "Epoch 2164: model parameters saved\n", - "Epoch 2165 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2165: avg_loss appended (2.7778)\n", - "Epoch 2165: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2165: accuracy appended (80.56%)\n", - "Epoch 2165: model set back to train mode\n", - "Epoch 2165: model parameters saved\n", - "Epoch 2166 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2166: avg_loss appended (2.7778)\n", - "Epoch 2166: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2166: accuracy appended (80.56%)\n", - "Epoch 2166: model set back to train mode\n", - "Epoch 2166: model parameters saved\n", - "Epoch 2167 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2167: avg_loss appended (2.7778)\n", - "Epoch 2167: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2167: accuracy appended (80.56%)\n", - "Epoch 2167: model set back to train mode\n", - "Epoch 2167: model parameters saved\n", - "Epoch 2168 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2168: avg_loss appended (2.7778)\n", - "Epoch 2168: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2168: accuracy appended (80.56%)\n", - "Epoch 2168: model set back to train mode\n", - "Epoch 2168: model parameters saved\n", - "Epoch 2169 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2169: avg_loss appended (2.7778)\n", - "Epoch 2169: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2169: accuracy appended (80.56%)\n", - "Epoch 2169: model set back to train mode\n", - "Epoch 2169: model parameters saved\n", - "Epoch 2170 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2170: avg_loss appended (2.7778)\n", - "Epoch 2170: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2170: accuracy appended (80.56%)\n", - "Epoch 2170: model set back to train mode\n", - "Epoch 2170: model parameters saved\n", - "Epoch 2171 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2171: avg_loss appended (2.7778)\n", - "Epoch 2171: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2171: accuracy appended (80.56%)\n", - "Epoch 2171: model set back to train mode\n", - "Epoch 2171: model parameters saved\n", - "Epoch 2172 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2172: avg_loss appended (2.7778)\n", - "Epoch 2172: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2172: accuracy appended (80.56%)\n", - "Epoch 2172: model set back to train mode\n", - "Epoch 2172: model parameters saved\n", - "Epoch 2173 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2173: avg_loss appended (2.7778)\n", - "Epoch 2173: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2173: accuracy appended (80.56%)\n", - "Epoch 2173: model set back to train mode\n", - "Epoch 2173: model parameters saved\n", - "Epoch 2174 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2174: avg_loss appended (2.7778)\n", - "Epoch 2174: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2174: accuracy appended (80.56%)\n", - "Epoch 2174: model set back to train mode\n", - "Epoch 2174: model parameters saved\n", - "Epoch 2175 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2175: avg_loss appended (2.7778)\n", - "Epoch 2175: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2175: accuracy appended (80.56%)\n", - "Epoch 2175: model set back to train mode\n", - "Epoch 2175: model parameters saved\n", - "Epoch 2176 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2176: avg_loss appended (2.7778)\n", - "Epoch 2176: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2176: accuracy appended (80.56%)\n", - "Epoch 2176: model set back to train mode\n", - "Epoch 2176: model parameters saved\n", - "Epoch 2177 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2177: avg_loss appended (2.7778)\n", - "Epoch 2177: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2177: accuracy appended (80.56%)\n", - "Epoch 2177: model set back to train mode\n", - "Epoch 2177: model parameters saved\n", - "Epoch 2178 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2178: avg_loss appended (2.7778)\n", - "Epoch 2178: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2178: accuracy appended (80.56%)\n", - "Epoch 2178: model set back to train mode\n", - "Epoch 2178: model parameters saved\n", - "Epoch 2179 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2179: avg_loss appended (2.7778)\n", - "Epoch 2179: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2179: accuracy appended (80.56%)\n", - "Epoch 2179: model set back to train mode\n", - "Epoch 2179: model parameters saved\n", - "Epoch 2180 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2180: avg_loss appended (2.7778)\n", - "Epoch 2180: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2180: accuracy appended (80.56%)\n", - "Epoch 2180: model set back to train mode\n", - "Epoch 2180: model parameters saved\n", - "Epoch 2181 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2181: avg_loss appended (2.7778)\n", - "Epoch 2181: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2181: accuracy appended (80.56%)\n", - "Epoch 2181: model set back to train mode\n", - "Epoch 2181: model parameters saved\n", - "Epoch 2182 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2182: avg_loss appended (2.7778)\n", - "Epoch 2182: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2182: accuracy appended (80.56%)\n", - "Epoch 2182: model set back to train mode\n", - "Epoch 2182: model parameters saved\n", - "Epoch 2183 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2183: avg_loss appended (2.7778)\n", - "Epoch 2183: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2183: accuracy appended (80.56%)\n", - "Epoch 2183: model set back to train mode\n", - "Epoch 2183: model parameters saved\n", - "Epoch 2184 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2184: avg_loss appended (2.7778)\n", - "Epoch 2184: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2184: accuracy appended (80.56%)\n", - "Epoch 2184: model set back to train mode\n", - "Epoch 2184: model parameters saved\n", - "Epoch 2185 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2185: avg_loss appended (2.7778)\n", - "Epoch 2185: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2185: accuracy appended (80.56%)\n", - "Epoch 2185: model set back to train mode\n", - "Epoch 2185: model parameters saved\n", - "Epoch 2186 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2186: avg_loss appended (2.7778)\n", - "Epoch 2186: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2186: accuracy appended (80.56%)\n", - "Epoch 2186: model set back to train mode\n", - "Epoch 2186: model parameters saved\n", - "Epoch 2187 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2187: avg_loss appended (2.7778)\n", - "Epoch 2187: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2187: accuracy appended (80.56%)\n", - "Epoch 2187: model set back to train mode\n", - "Epoch 2187: model parameters saved\n", - "Epoch 2188 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2188: avg_loss appended (2.7778)\n", - "Epoch 2188: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2188: accuracy appended (80.56%)\n", - "Epoch 2188: model set back to train mode\n", - "Epoch 2188: model parameters saved\n", - "Epoch 2189 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2189: avg_loss appended (2.7778)\n", - "Epoch 2189: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2189: accuracy appended (80.56%)\n", - "Epoch 2189: model set back to train mode\n", - "Epoch 2189: model parameters saved\n", - "Epoch 2190 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2190: avg_loss appended (2.7778)\n", - "Epoch 2190: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2190: accuracy appended (80.56%)\n", - "Epoch 2190: model set back to train mode\n", - "Epoch 2190: model parameters saved\n", - "Epoch 2191 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2191: avg_loss appended (2.7778)\n", - "Epoch 2191: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2191: accuracy appended (80.56%)\n", - "Epoch 2191: model set back to train mode\n", - "Epoch 2191: model parameters saved\n", - "Epoch 2192 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2192: avg_loss appended (2.7778)\n", - "Epoch 2192: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2192: accuracy appended (80.56%)\n", - "Epoch 2192: model set back to train mode\n", - "Epoch 2192: model parameters saved\n", - "Epoch 2193 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2193: avg_loss appended (2.7778)\n", - "Epoch 2193: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2193: accuracy appended (80.56%)\n", - "Epoch 2193: model set back to train mode\n", - "Epoch 2193: model parameters saved\n", - "Epoch 2194 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2194: avg_loss appended (2.7778)\n", - "Epoch 2194: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2194: accuracy appended (80.56%)\n", - "Epoch 2194: model set back to train mode\n", - "Epoch 2194: model parameters saved\n", - "Epoch 2195 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2195: avg_loss appended (2.7778)\n", - "Epoch 2195: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2195: accuracy appended (80.56%)\n", - "Epoch 2195: model set back to train mode\n", - "Epoch 2195: model parameters saved\n", - "Epoch 2196 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2196: avg_loss appended (2.7778)\n", - "Epoch 2196: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2196: accuracy appended (80.56%)\n", - "Epoch 2196: model set back to train mode\n", - "Epoch 2196: model parameters saved\n", - "Epoch 2197 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2197: avg_loss appended (2.7778)\n", - "Epoch 2197: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2197: accuracy appended (80.56%)\n", - "Epoch 2197: model set back to train mode\n", - "Epoch 2197: model parameters saved\n", - "Epoch 2198 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2198: avg_loss appended (2.7778)\n", - "Epoch 2198: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2198: accuracy appended (80.56%)\n", - "Epoch 2198: model set back to train mode\n", - "Epoch 2198: model parameters saved\n", - "Epoch 2199 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2199: avg_loss appended (2.7778)\n", - "Epoch 2199: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2199: accuracy appended (80.56%)\n", - "Epoch 2199: model set back to train mode\n", - "Epoch 2199: model parameters saved\n", - "Epoch 2200 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2200: avg_loss appended (2.7778)\n", - "Epoch 2200: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2200: accuracy appended (80.56%)\n", - "Epoch 2200: model set back to train mode\n", - "Epoch 2200: model parameters saved\n", - "Epoch 2200/10000, Loss: 2.7778, Accuracy: 80.56%\n", - "Epoch 2201 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2201: avg_loss appended (2.7778)\n", - "Epoch 2201: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2201: accuracy appended (80.56%)\n", - "Epoch 2201: model set back to train mode\n", - "Epoch 2201: model parameters saved\n", - "Epoch 2202 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2202: avg_loss appended (2.7778)\n", - "Epoch 2202: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2202: accuracy appended (80.56%)\n", - "Epoch 2202: model set back to train mode\n", - "Epoch 2202: model parameters saved\n", - "Epoch 2203 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2203: avg_loss appended (2.7778)\n", - "Epoch 2203: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2203: accuracy appended (80.56%)\n", - "Epoch 2203: model set back to train mode\n", - "Epoch 2203: model parameters saved\n", - "Epoch 2204 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2204: avg_loss appended (2.7778)\n", - "Epoch 2204: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2204: accuracy appended (80.56%)\n", - "Epoch 2204: model set back to train mode\n", - "Epoch 2204: model parameters saved\n", - "Epoch 2205 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2205: avg_loss appended (2.7778)\n", - "Epoch 2205: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2205: accuracy appended (80.56%)\n", - "Epoch 2205: model set back to train mode\n", - "Epoch 2205: model parameters saved\n", - "Epoch 2206 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2206: avg_loss appended (2.7778)\n", - "Epoch 2206: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2206: accuracy appended (80.56%)\n", - "Epoch 2206: model set back to train mode\n", - "Epoch 2206: model parameters saved\n", - "Epoch 2207 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2207: avg_loss appended (2.7778)\n", - "Epoch 2207: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2207: accuracy appended (80.56%)\n", - "Epoch 2207: model set back to train mode\n", - "Epoch 2207: model parameters saved\n", - "Epoch 2208 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2208: avg_loss appended (2.7778)\n", - "Epoch 2208: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2208: accuracy appended (80.56%)\n", - "Epoch 2208: model set back to train mode\n", - "Epoch 2208: model parameters saved\n", - "Epoch 2209 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2209: avg_loss appended (2.7778)\n", - "Epoch 2209: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2209: accuracy appended (80.56%)\n", - "Epoch 2209: model set back to train mode\n", - "Epoch 2209: model parameters saved\n", - "Epoch 2210 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2210: avg_loss appended (2.7778)\n", - "Epoch 2210: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2210: accuracy appended (80.56%)\n", - "Epoch 2210: model set back to train mode\n", - "Epoch 2210: model parameters saved\n", - "Epoch 2211 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2211: avg_loss appended (2.7778)\n", - "Epoch 2211: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2211: accuracy appended (80.56%)\n", - "Epoch 2211: model set back to train mode\n", - "Epoch 2211: model parameters saved\n", - "Epoch 2212 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2212: avg_loss appended (2.7778)\n", - "Epoch 2212: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2212: accuracy appended (80.56%)\n", - "Epoch 2212: model set back to train mode\n", - "Epoch 2212: model parameters saved\n", - "Epoch 2213 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2213: avg_loss appended (2.7778)\n", - "Epoch 2213: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2213: accuracy appended (80.56%)\n", - "Epoch 2213: model set back to train mode\n", - "Epoch 2213: model parameters saved\n", - "Epoch 2214 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2214: avg_loss appended (2.7778)\n", - "Epoch 2214: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2214: accuracy appended (80.56%)\n", - "Epoch 2214: model set back to train mode\n", - "Epoch 2214: model parameters saved\n", - "Epoch 2215 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2215: avg_loss appended (2.7778)\n", - "Epoch 2215: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2215: accuracy appended (80.56%)\n", - "Epoch 2215: model set back to train mode\n", - "Epoch 2215: model parameters saved\n", - "Epoch 2216 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2216: avg_loss appended (2.7778)\n", - "Epoch 2216: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2216: accuracy appended (80.56%)\n", - "Epoch 2216: model set back to train mode\n", - "Epoch 2216: model parameters saved\n", - "Epoch 2217 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2217: avg_loss appended (2.7778)\n", - "Epoch 2217: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2217: accuracy appended (80.56%)\n", - "Epoch 2217: model set back to train mode\n", - "Epoch 2217: model parameters saved\n", - "Epoch 2218 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2218: avg_loss appended (2.7778)\n", - "Epoch 2218: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2218: accuracy appended (80.56%)\n", - "Epoch 2218: model set back to train mode\n", - "Epoch 2218: model parameters saved\n", - "Epoch 2219 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2219: avg_loss appended (2.7778)\n", - "Epoch 2219: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2219: accuracy appended (80.56%)\n", - "Epoch 2219: model set back to train mode\n", - "Epoch 2219: model parameters saved\n", - "Epoch 2220 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2220: avg_loss appended (2.7778)\n", - "Epoch 2220: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2220: accuracy appended (80.56%)\n", - "Epoch 2220: model set back to train mode\n", - "Epoch 2220: model parameters saved\n", - "Epoch 2221 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2221: avg_loss appended (2.7778)\n", - "Epoch 2221: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2221: accuracy appended (80.56%)\n", - "Epoch 2221: model set back to train mode\n", - "Epoch 2221: model parameters saved\n", - "Epoch 2222 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2222: avg_loss appended (2.7778)\n", - "Epoch 2222: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2222: accuracy appended (80.56%)\n", - "Epoch 2222: model set back to train mode\n", - "Epoch 2222: model parameters saved\n", - "Epoch 2223 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2223: avg_loss appended (2.7778)\n", - "Epoch 2223: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2223: accuracy appended (80.56%)\n", - "Epoch 2223: model set back to train mode\n", - "Epoch 2223: model parameters saved\n", - "Epoch 2224 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2224: avg_loss appended (2.7778)\n", - "Epoch 2224: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2224: accuracy appended (83.33%)\n", - "Epoch 2224: model set back to train mode\n", - "Epoch 2224: model parameters saved\n", - "Epoch 2225 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2225: avg_loss appended (2.7778)\n", - "Epoch 2225: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2225: accuracy appended (83.33%)\n", - "Epoch 2225: model set back to train mode\n", - "Epoch 2225: model parameters saved\n", - "Epoch 2226 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2226: avg_loss appended (2.7778)\n", - "Epoch 2226: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2226: accuracy appended (80.56%)\n", - "Epoch 2226: model set back to train mode\n", - "Epoch 2226: model parameters saved\n", - "Epoch 2227 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2227: avg_loss appended (2.7778)\n", - "Epoch 2227: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2227: accuracy appended (80.56%)\n", - "Epoch 2227: model set back to train mode\n", - "Epoch 2227: model parameters saved\n", - "Epoch 2228 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2228: avg_loss appended (2.7778)\n", - "Epoch 2228: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2228: accuracy appended (80.56%)\n", - "Epoch 2228: model set back to train mode\n", - "Epoch 2228: model parameters saved\n", - "Epoch 2229 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2229: avg_loss appended (2.7778)\n", - "Epoch 2229: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2229: accuracy appended (80.56%)\n", - "Epoch 2229: model set back to train mode\n", - "Epoch 2229: model parameters saved\n", - "Epoch 2230 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2230: avg_loss appended (2.7778)\n", - "Epoch 2230: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2230: accuracy appended (80.56%)\n", - "Epoch 2230: model set back to train mode\n", - "Epoch 2230: model parameters saved\n", - "Epoch 2231 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2231: avg_loss appended (2.7778)\n", - "Epoch 2231: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2231: accuracy appended (80.56%)\n", - "Epoch 2231: model set back to train mode\n", - "Epoch 2231: model parameters saved\n", - "Epoch 2232 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2232: avg_loss appended (2.7778)\n", - "Epoch 2232: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2232: accuracy appended (83.33%)\n", - "Epoch 2232: model set back to train mode\n", - "Epoch 2232: model parameters saved\n", - "Epoch 2233 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2233: avg_loss appended (2.7778)\n", - "Epoch 2233: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2233: accuracy appended (83.33%)\n", - "Epoch 2233: model set back to train mode\n", - "Epoch 2233: model parameters saved\n", - "Epoch 2234 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2234: avg_loss appended (2.7778)\n", - "Epoch 2234: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2234: accuracy appended (83.33%)\n", - "Epoch 2234: model set back to train mode\n", - "Epoch 2234: model parameters saved\n", - "Epoch 2235 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2235: avg_loss appended (2.7778)\n", - "Epoch 2235: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2235: accuracy appended (83.33%)\n", - "Epoch 2235: model set back to train mode\n", - "Epoch 2235: model parameters saved\n", - "Epoch 2236 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2236: avg_loss appended (2.7778)\n", - "Epoch 2236: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2236: accuracy appended (83.33%)\n", - "Epoch 2236: model set back to train mode\n", - "Epoch 2236: model parameters saved\n", - "Epoch 2237 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2237: avg_loss appended (2.7778)\n", - "Epoch 2237: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2237: accuracy appended (80.56%)\n", - "Epoch 2237: model set back to train mode\n", - "Epoch 2237: model parameters saved\n", - "Epoch 2238 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2238: avg_loss appended (2.7778)\n", - "Epoch 2238: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2238: accuracy appended (80.56%)\n", - "Epoch 2238: model set back to train mode\n", - "Epoch 2238: model parameters saved\n", - "Epoch 2239 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2239: avg_loss appended (2.7778)\n", - "Epoch 2239: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2239: accuracy appended (83.33%)\n", - "Epoch 2239: model set back to train mode\n", - "Epoch 2239: model parameters saved\n", - "Epoch 2240 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2240: avg_loss appended (2.7778)\n", - "Epoch 2240: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2240: accuracy appended (80.56%)\n", - "Epoch 2240: model set back to train mode\n", - "Epoch 2240: model parameters saved\n", - "Epoch 2241 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2241: avg_loss appended (2.7778)\n", - "Epoch 2241: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2241: accuracy appended (83.33%)\n", - "Epoch 2241: model set back to train mode\n", - "Epoch 2241: model parameters saved\n", - "Epoch 2242 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2242: avg_loss appended (2.7778)\n", - "Epoch 2242: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2242: accuracy appended (83.33%)\n", - "Epoch 2242: model set back to train mode\n", - "Epoch 2242: model parameters saved\n", - "Epoch 2243 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2243: avg_loss appended (2.7778)\n", - "Epoch 2243: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2243: accuracy appended (83.33%)\n", - "Epoch 2243: model set back to train mode\n", - "Epoch 2243: model parameters saved\n", - "Epoch 2244 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2244: avg_loss appended (2.7778)\n", - "Epoch 2244: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2244: accuracy appended (83.33%)\n", - "Epoch 2244: model set back to train mode\n", - "Epoch 2244: model parameters saved\n", - "Epoch 2245 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2245: avg_loss appended (2.7778)\n", - "Epoch 2245: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2245: accuracy appended (83.33%)\n", - "Epoch 2245: model set back to train mode\n", - "Epoch 2245: model parameters saved\n", - "Epoch 2246 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2246: avg_loss appended (2.7778)\n", - "Epoch 2246: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2246: accuracy appended (83.33%)\n", - "Epoch 2246: model set back to train mode\n", - "Epoch 2246: model parameters saved\n", - "Epoch 2247 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2247: avg_loss appended (2.7778)\n", - "Epoch 2247: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2247: accuracy appended (83.33%)\n", - "Epoch 2247: model set back to train mode\n", - "Epoch 2247: model parameters saved\n", - "Epoch 2248 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2248: avg_loss appended (2.7778)\n", - "Epoch 2248: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2248: accuracy appended (83.33%)\n", - "Epoch 2248: model set back to train mode\n", - "Epoch 2248: model parameters saved\n", - "Epoch 2249 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2249: avg_loss appended (2.7778)\n", - "Epoch 2249: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2249: accuracy appended (83.33%)\n", - "Epoch 2249: model set back to train mode\n", - "Epoch 2249: model parameters saved\n", - "Epoch 2250 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2250: avg_loss appended (2.7778)\n", - "Epoch 2250: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2250: accuracy appended (83.33%)\n", - "Epoch 2250: model set back to train mode\n", - "Epoch 2250: model parameters saved\n", - "Epoch 2251 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2251: avg_loss appended (2.7778)\n", - "Epoch 2251: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2251: accuracy appended (83.33%)\n", - "Epoch 2251: model set back to train mode\n", - "Epoch 2251: model parameters saved\n", - "Epoch 2252 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2252: avg_loss appended (2.7778)\n", - "Epoch 2252: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2252: accuracy appended (83.33%)\n", - "Epoch 2252: model set back to train mode\n", - "Epoch 2252: model parameters saved\n", - "Epoch 2253 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2253: avg_loss appended (2.7778)\n", - "Epoch 2253: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2253: accuracy appended (83.33%)\n", - "Epoch 2253: model set back to train mode\n", - "Epoch 2253: model parameters saved\n", - "Epoch 2254 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2254: avg_loss appended (2.7778)\n", - "Epoch 2254: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2254: accuracy appended (83.33%)\n", - "Epoch 2254: model set back to train mode\n", - "Epoch 2254: model parameters saved\n", - "Epoch 2255 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2255: avg_loss appended (2.7778)\n", - "Epoch 2255: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2255: accuracy appended (83.33%)\n", - "Epoch 2255: model set back to train mode\n", - "Epoch 2255: model parameters saved\n", - "Epoch 2256 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2256: avg_loss appended (2.7778)\n", - "Epoch 2256: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2256: accuracy appended (83.33%)\n", - "Epoch 2256: model set back to train mode\n", - "Epoch 2256: model parameters saved\n", - "Epoch 2257 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2257: avg_loss appended (2.7778)\n", - "Epoch 2257: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2257: accuracy appended (83.33%)\n", - "Epoch 2257: model set back to train mode\n", - "Epoch 2257: model parameters saved\n", - "Epoch 2258 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2258: avg_loss appended (2.7778)\n", - "Epoch 2258: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2258: accuracy appended (83.33%)\n", - "Epoch 2258: model set back to train mode\n", - "Epoch 2258: model parameters saved\n", - "Epoch 2259 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2259: avg_loss appended (2.7778)\n", - "Epoch 2259: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2259: accuracy appended (83.33%)\n", - "Epoch 2259: model set back to train mode\n", - "Epoch 2259: model parameters saved\n", - "Epoch 2260 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2260: avg_loss appended (2.7778)\n", - "Epoch 2260: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2260: accuracy appended (83.33%)\n", - "Epoch 2260: model set back to train mode\n", - "Epoch 2260: model parameters saved\n", - "Epoch 2261 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2261: avg_loss appended (2.7778)\n", - "Epoch 2261: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2261: accuracy appended (83.33%)\n", - "Epoch 2261: model set back to train mode\n", - "Epoch 2261: model parameters saved\n", - "Epoch 2262 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2262: avg_loss appended (2.7778)\n", - "Epoch 2262: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2262: accuracy appended (83.33%)\n", - "Epoch 2262: model set back to train mode\n", - "Epoch 2262: model parameters saved\n", - "Epoch 2263 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2263: avg_loss appended (2.7778)\n", - "Epoch 2263: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2263: accuracy appended (83.33%)\n", - "Epoch 2263: model set back to train mode\n", - "Epoch 2263: model parameters saved\n", - "Epoch 2264 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2264: avg_loss appended (2.7778)\n", - "Epoch 2264: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2264: accuracy appended (83.33%)\n", - "Epoch 2264: model set back to train mode\n", - "Epoch 2264: model parameters saved\n", - "Epoch 2265 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2265: avg_loss appended (2.7778)\n", - "Epoch 2265: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2265: accuracy appended (83.33%)\n", - "Epoch 2265: model set back to train mode\n", - "Epoch 2265: model parameters saved\n", - "Epoch 2266 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2266: avg_loss appended (2.7778)\n", - "Epoch 2266: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2266: accuracy appended (83.33%)\n", - "Epoch 2266: model set back to train mode\n", - "Epoch 2266: model parameters saved\n", - "Epoch 2267 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2267: avg_loss appended (2.7778)\n", - "Epoch 2267: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2267: accuracy appended (83.33%)\n", - "Epoch 2267: model set back to train mode\n", - "Epoch 2267: model parameters saved\n", - "Epoch 2268 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2268: avg_loss appended (2.7778)\n", - "Epoch 2268: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2268: accuracy appended (83.33%)\n", - "Epoch 2268: model set back to train mode\n", - "Epoch 2268: model parameters saved\n", - "Epoch 2269 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2269: avg_loss appended (2.7778)\n", - "Epoch 2269: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2269: accuracy appended (83.33%)\n", - "Epoch 2269: model set back to train mode\n", - "Epoch 2269: model parameters saved\n", - "Epoch 2270 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2270: avg_loss appended (2.7778)\n", - "Epoch 2270: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2270: accuracy appended (83.33%)\n", - "Epoch 2270: model set back to train mode\n", - "Epoch 2270: model parameters saved\n", - "Epoch 2271 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2271: avg_loss appended (2.7778)\n", - "Epoch 2271: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2271: accuracy appended (83.33%)\n", - "Epoch 2271: model set back to train mode\n", - "Epoch 2271: model parameters saved\n", - "Epoch 2272 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2272: avg_loss appended (2.7778)\n", - "Epoch 2272: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2272: accuracy appended (83.33%)\n", - "Epoch 2272: model set back to train mode\n", - "Epoch 2272: model parameters saved\n", - "Epoch 2273 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2273: avg_loss appended (2.7778)\n", - "Epoch 2273: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2273: accuracy appended (83.33%)\n", - "Epoch 2273: model set back to train mode\n", - "Epoch 2273: model parameters saved\n", - "Epoch 2274 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2274: avg_loss appended (2.7778)\n", - "Epoch 2274: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2274: accuracy appended (83.33%)\n", - "Epoch 2274: model set back to train mode\n", - "Epoch 2274: model parameters saved\n", - "Epoch 2275 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2275: avg_loss appended (2.7778)\n", - "Epoch 2275: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2275: accuracy appended (83.33%)\n", - "Epoch 2275: model set back to train mode\n", - "Epoch 2275: model parameters saved\n", - "Epoch 2276 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2276: avg_loss appended (2.7778)\n", - "Epoch 2276: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2276: accuracy appended (83.33%)\n", - "Epoch 2276: model set back to train mode\n", - "Epoch 2276: model parameters saved\n", - "Epoch 2277 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2277: avg_loss appended (2.7778)\n", - "Epoch 2277: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2277: accuracy appended (83.33%)\n", - "Epoch 2277: model set back to train mode\n", - "Epoch 2277: model parameters saved\n", - "Epoch 2278 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2278: avg_loss appended (2.7778)\n", - "Epoch 2278: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2278: accuracy appended (83.33%)\n", - "Epoch 2278: model set back to train mode\n", - "Epoch 2278: model parameters saved\n", - "Epoch 2279 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2279: avg_loss appended (2.7778)\n", - "Epoch 2279: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2279: accuracy appended (83.33%)\n", - "Epoch 2279: model set back to train mode\n", - "Epoch 2279: model parameters saved\n", - "Epoch 2280 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2280: avg_loss appended (2.7778)\n", - "Epoch 2280: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2280: accuracy appended (83.33%)\n", - "Epoch 2280: model set back to train mode\n", - "Epoch 2280: model parameters saved\n", - "Epoch 2281 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2281: avg_loss appended (2.7778)\n", - "Epoch 2281: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2281: accuracy appended (83.33%)\n", - "Epoch 2281: model set back to train mode\n", - "Epoch 2281: model parameters saved\n", - "Epoch 2282 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2282: avg_loss appended (2.7778)\n", - "Epoch 2282: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2282: accuracy appended (83.33%)\n", - "Epoch 2282: model set back to train mode\n", - "Epoch 2282: model parameters saved\n", - "Epoch 2283 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2283: avg_loss appended (2.7778)\n", - "Epoch 2283: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2283: accuracy appended (83.33%)\n", - "Epoch 2283: model set back to train mode\n", - "Epoch 2283: model parameters saved\n", - "Epoch 2284 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2284: avg_loss appended (2.7778)\n", - "Epoch 2284: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2284: accuracy appended (83.33%)\n", - "Epoch 2284: model set back to train mode\n", - "Epoch 2284: model parameters saved\n", - "Epoch 2285 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2285: avg_loss appended (2.7778)\n", - "Epoch 2285: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2285: accuracy appended (83.33%)\n", - "Epoch 2285: model set back to train mode\n", - "Epoch 2285: model parameters saved\n", - "Epoch 2286 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2286: avg_loss appended (2.7778)\n", - "Epoch 2286: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2286: accuracy appended (83.33%)\n", - "Epoch 2286: model set back to train mode\n", - "Epoch 2286: model parameters saved\n", - "Epoch 2287 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2287: avg_loss appended (2.7778)\n", - "Epoch 2287: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2287: accuracy appended (83.33%)\n", - "Epoch 2287: model set back to train mode\n", - "Epoch 2287: model parameters saved\n", - "Epoch 2288 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2288: avg_loss appended (2.7778)\n", - "Epoch 2288: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2288: accuracy appended (83.33%)\n", - "Epoch 2288: model set back to train mode\n", - "Epoch 2288: model parameters saved\n", - "Epoch 2289 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2289: avg_loss appended (2.7778)\n", - "Epoch 2289: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2289: accuracy appended (83.33%)\n", - "Epoch 2289: model set back to train mode\n", - "Epoch 2289: model parameters saved\n", - "Epoch 2290 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2290: avg_loss appended (2.7778)\n", - "Epoch 2290: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2290: accuracy appended (83.33%)\n", - "Epoch 2290: model set back to train mode\n", - "Epoch 2290: model parameters saved\n", - "Epoch 2291 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2291: avg_loss appended (2.7778)\n", - "Epoch 2291: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2291: accuracy appended (83.33%)\n", - "Epoch 2291: model set back to train mode\n", - "Epoch 2291: model parameters saved\n", - "Epoch 2292 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2292: avg_loss appended (2.7778)\n", - "Epoch 2292: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2292: accuracy appended (83.33%)\n", - "Epoch 2292: model set back to train mode\n", - "Epoch 2292: model parameters saved\n", - "Epoch 2293 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2293: avg_loss appended (2.7778)\n", - "Epoch 2293: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2293: accuracy appended (83.33%)\n", - "Epoch 2293: model set back to train mode\n", - "Epoch 2293: model parameters saved\n", - "Epoch 2294 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2294: avg_loss appended (2.7778)\n", - "Epoch 2294: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2294: accuracy appended (83.33%)\n", - "Epoch 2294: model set back to train mode\n", - "Epoch 2294: model parameters saved\n", - "Epoch 2295 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2295: avg_loss appended (2.7778)\n", - "Epoch 2295: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2295: accuracy appended (83.33%)\n", - "Epoch 2295: model set back to train mode\n", - "Epoch 2295: model parameters saved\n", - "Epoch 2296 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2296: avg_loss appended (2.7778)\n", - "Epoch 2296: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2296: accuracy appended (83.33%)\n", - "Epoch 2296: model set back to train mode\n", - "Epoch 2296: model parameters saved\n", - "Epoch 2297 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2297: avg_loss appended (2.7778)\n", - "Epoch 2297: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2297: accuracy appended (83.33%)\n", - "Epoch 2297: model set back to train mode\n", - "Epoch 2297: model parameters saved\n", - "Epoch 2298 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2298: avg_loss appended (2.7778)\n", - "Epoch 2298: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2298: accuracy appended (83.33%)\n", - "Epoch 2298: model set back to train mode\n", - "Epoch 2298: model parameters saved\n", - "Epoch 2299 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2299: avg_loss appended (2.7778)\n", - "Epoch 2299: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2299: accuracy appended (83.33%)\n", - "Epoch 2299: model set back to train mode\n", - "Epoch 2299: model parameters saved\n", - "Epoch 2300 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2300: avg_loss appended (2.7778)\n", - "Epoch 2300: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2300: accuracy appended (83.33%)\n", - "Epoch 2300: model set back to train mode\n", - "Epoch 2300: model parameters saved\n", - "Epoch 2300/10000, Loss: 2.7778, Accuracy: 83.33%\n", - "Epoch 2301 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2301: avg_loss appended (2.7778)\n", - "Epoch 2301: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2301: accuracy appended (83.33%)\n", - "Epoch 2301: model set back to train mode\n", - "Epoch 2301: model parameters saved\n", - "Epoch 2302 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2302: avg_loss appended (2.7778)\n", - "Epoch 2302: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2302: accuracy appended (83.33%)\n", - "Epoch 2302: model set back to train mode\n", - "Epoch 2302: model parameters saved\n", - "Epoch 2303 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2303: avg_loss appended (2.7778)\n", - "Epoch 2303: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2303: accuracy appended (83.33%)\n", - "Epoch 2303: model set back to train mode\n", - "Epoch 2303: model parameters saved\n", - "Epoch 2304 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2304: avg_loss appended (2.7778)\n", - "Epoch 2304: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2304: accuracy appended (83.33%)\n", - "Epoch 2304: model set back to train mode\n", - "Epoch 2304: model parameters saved\n", - "Epoch 2305 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2305: avg_loss appended (2.7778)\n", - "Epoch 2305: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2305: accuracy appended (83.33%)\n", - "Epoch 2305: model set back to train mode\n", - "Epoch 2305: model parameters saved\n", - "Epoch 2306 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2306: avg_loss appended (2.7778)\n", - "Epoch 2306: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2306: accuracy appended (83.33%)\n", - "Epoch 2306: model set back to train mode\n", - "Epoch 2306: model parameters saved\n", - "Epoch 2307 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2307: avg_loss appended (2.7778)\n", - "Epoch 2307: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2307: accuracy appended (83.33%)\n", - "Epoch 2307: model set back to train mode\n", - "Epoch 2307: model parameters saved\n", - "Epoch 2308 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2308: avg_loss appended (2.7778)\n", - "Epoch 2308: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2308: accuracy appended (83.33%)\n", - "Epoch 2308: model set back to train mode\n", - "Epoch 2308: model parameters saved\n", - "Epoch 2309 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2309: avg_loss appended (2.7778)\n", - "Epoch 2309: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2309: accuracy appended (83.33%)\n", - "Epoch 2309: model set back to train mode\n", - "Epoch 2309: model parameters saved\n", - "Epoch 2310 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2310: avg_loss appended (2.7778)\n", - "Epoch 2310: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2310: accuracy appended (83.33%)\n", - "Epoch 2310: model set back to train mode\n", - "Epoch 2310: model parameters saved\n", - "Epoch 2311 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2311: avg_loss appended (2.7778)\n", - "Epoch 2311: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2311: accuracy appended (83.33%)\n", - "Epoch 2311: model set back to train mode\n", - "Epoch 2311: model parameters saved\n", - "Epoch 2312 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2312: avg_loss appended (2.7778)\n", - "Epoch 2312: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2312: accuracy appended (83.33%)\n", - "Epoch 2312: model set back to train mode\n", - "Epoch 2312: model parameters saved\n", - "Epoch 2313 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2313: avg_loss appended (2.7778)\n", - "Epoch 2313: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2313: accuracy appended (83.33%)\n", - "Epoch 2313: model set back to train mode\n", - "Epoch 2313: model parameters saved\n", - "Epoch 2314 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2314: avg_loss appended (2.7778)\n", - "Epoch 2314: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2314: accuracy appended (83.33%)\n", - "Epoch 2314: model set back to train mode\n", - "Epoch 2314: model parameters saved\n", - "Epoch 2315 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2315: avg_loss appended (2.7778)\n", - "Epoch 2315: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2315: accuracy appended (83.33%)\n", - "Epoch 2315: model set back to train mode\n", - "Epoch 2315: model parameters saved\n", - "Epoch 2316 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2316: avg_loss appended (2.7778)\n", - "Epoch 2316: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2316: accuracy appended (83.33%)\n", - "Epoch 2316: model set back to train mode\n", - "Epoch 2316: model parameters saved\n", - "Epoch 2317 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2317: avg_loss appended (2.7778)\n", - "Epoch 2317: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2317: accuracy appended (83.33%)\n", - "Epoch 2317: model set back to train mode\n", - "Epoch 2317: model parameters saved\n", - "Epoch 2318 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2318: avg_loss appended (2.7778)\n", - "Epoch 2318: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2318: accuracy appended (83.33%)\n", - "Epoch 2318: model set back to train mode\n", - "Epoch 2318: model parameters saved\n", - "Epoch 2319 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2319: avg_loss appended (2.7778)\n", - "Epoch 2319: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2319: accuracy appended (83.33%)\n", - "Epoch 2319: model set back to train mode\n", - "Epoch 2319: model parameters saved\n", - "Epoch 2320 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2320: avg_loss appended (2.7778)\n", - "Epoch 2320: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2320: accuracy appended (83.33%)\n", - "Epoch 2320: model set back to train mode\n", - "Epoch 2320: model parameters saved\n", - "Epoch 2321 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2321: avg_loss appended (2.7778)\n", - "Epoch 2321: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2321: accuracy appended (83.33%)\n", - "Epoch 2321: model set back to train mode\n", - "Epoch 2321: model parameters saved\n", - "Epoch 2322 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2322: avg_loss appended (2.7778)\n", - "Epoch 2322: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2322: accuracy appended (83.33%)\n", - "Epoch 2322: model set back to train mode\n", - "Epoch 2322: model parameters saved\n", - "Epoch 2323 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2323: avg_loss appended (2.7778)\n", - "Epoch 2323: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2323: accuracy appended (83.33%)\n", - "Epoch 2323: model set back to train mode\n", - "Epoch 2323: model parameters saved\n", - "Epoch 2324 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2324: avg_loss appended (2.7778)\n", - "Epoch 2324: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2324: accuracy appended (83.33%)\n", - "Epoch 2324: model set back to train mode\n", - "Epoch 2324: model parameters saved\n", - "Epoch 2325 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2325: avg_loss appended (2.7778)\n", - "Epoch 2325: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2325: accuracy appended (83.33%)\n", - "Epoch 2325: model set back to train mode\n", - "Epoch 2325: model parameters saved\n", - "Epoch 2326 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2326: avg_loss appended (2.7778)\n", - "Epoch 2326: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2326: accuracy appended (83.33%)\n", - "Epoch 2326: model set back to train mode\n", - "Epoch 2326: model parameters saved\n", - "Epoch 2327 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2327: avg_loss appended (2.7778)\n", - "Epoch 2327: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2327: accuracy appended (83.33%)\n", - "Epoch 2327: model set back to train mode\n", - "Epoch 2327: model parameters saved\n", - "Epoch 2328 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2328: avg_loss appended (2.7778)\n", - "Epoch 2328: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2328: accuracy appended (83.33%)\n", - "Epoch 2328: model set back to train mode\n", - "Epoch 2328: model parameters saved\n", - "Epoch 2329 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2329: avg_loss appended (2.7778)\n", - "Epoch 2329: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2329: accuracy appended (83.33%)\n", - "Epoch 2329: model set back to train mode\n", - "Epoch 2329: model parameters saved\n", - "Epoch 2330 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2330: avg_loss appended (2.7778)\n", - "Epoch 2330: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2330: accuracy appended (83.33%)\n", - "Epoch 2330: model set back to train mode\n", - "Epoch 2330: model parameters saved\n", - "Epoch 2331 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2331: avg_loss appended (2.7778)\n", - "Epoch 2331: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2331: accuracy appended (83.33%)\n", - "Epoch 2331: model set back to train mode\n", - "Epoch 2331: model parameters saved\n", - "Epoch 2332 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2332: avg_loss appended (2.7778)\n", - "Epoch 2332: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2332: accuracy appended (83.33%)\n", - "Epoch 2332: model set back to train mode\n", - "Epoch 2332: model parameters saved\n", - "Epoch 2333 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2333: avg_loss appended (2.7778)\n", - "Epoch 2333: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2333: accuracy appended (83.33%)\n", - "Epoch 2333: model set back to train mode\n", - "Epoch 2333: model parameters saved\n", - "Epoch 2334 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2334: avg_loss appended (2.7778)\n", - "Epoch 2334: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2334: accuracy appended (83.33%)\n", - "Epoch 2334: model set back to train mode\n", - "Epoch 2334: model parameters saved\n", - "Epoch 2335 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2335: avg_loss appended (2.7778)\n", - "Epoch 2335: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2335: accuracy appended (83.33%)\n", - "Epoch 2335: model set back to train mode\n", - "Epoch 2335: model parameters saved\n", - "Epoch 2336 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2336: avg_loss appended (2.7778)\n", - "Epoch 2336: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2336: accuracy appended (83.33%)\n", - "Epoch 2336: model set back to train mode\n", - "Epoch 2336: model parameters saved\n", - "Epoch 2337 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2337: avg_loss appended (2.7778)\n", - "Epoch 2337: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2337: accuracy appended (83.33%)\n", - "Epoch 2337: model set back to train mode\n", - "Epoch 2337: model parameters saved\n", - "Epoch 2338 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2338: avg_loss appended (2.7778)\n", - "Epoch 2338: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2338: accuracy appended (83.33%)\n", - "Epoch 2338: model set back to train mode\n", - "Epoch 2338: model parameters saved\n", - "Epoch 2339 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2339: avg_loss appended (2.7778)\n", - "Epoch 2339: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2339: accuracy appended (83.33%)\n", - "Epoch 2339: model set back to train mode\n", - "Epoch 2339: model parameters saved\n", - "Epoch 2340 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2340: avg_loss appended (2.7778)\n", - "Epoch 2340: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2340: accuracy appended (83.33%)\n", - "Epoch 2340: model set back to train mode\n", - "Epoch 2340: model parameters saved\n", - "Epoch 2341 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2341: avg_loss appended (2.7778)\n", - "Epoch 2341: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2341: accuracy appended (83.33%)\n", - "Epoch 2341: model set back to train mode\n", - "Epoch 2341: model parameters saved\n", - "Epoch 2342 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2342: avg_loss appended (2.7778)\n", - "Epoch 2342: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2342: accuracy appended (83.33%)\n", - "Epoch 2342: model set back to train mode\n", - "Epoch 2342: model parameters saved\n", - "Epoch 2343 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2343: avg_loss appended (2.7778)\n", - "Epoch 2343: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2343: accuracy appended (83.33%)\n", - "Epoch 2343: model set back to train mode\n", - "Epoch 2343: model parameters saved\n", - "Epoch 2344 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2344: avg_loss appended (2.7778)\n", - "Epoch 2344: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2344: accuracy appended (83.33%)\n", - "Epoch 2344: model set back to train mode\n", - "Epoch 2344: model parameters saved\n", - "Epoch 2345 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2345: avg_loss appended (2.7778)\n", - "Epoch 2345: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2345: accuracy appended (83.33%)\n", - "Epoch 2345: model set back to train mode\n", - "Epoch 2345: model parameters saved\n", - "Epoch 2346 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2346: avg_loss appended (2.7778)\n", - "Epoch 2346: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2346: accuracy appended (83.33%)\n", - "Epoch 2346: model set back to train mode\n", - "Epoch 2346: model parameters saved\n", - "Epoch 2347 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2347: avg_loss appended (2.7778)\n", - "Epoch 2347: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2347: accuracy appended (83.33%)\n", - "Epoch 2347: model set back to train mode\n", - "Epoch 2347: model parameters saved\n", - "Epoch 2348 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2348: avg_loss appended (2.7778)\n", - "Epoch 2348: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2348: accuracy appended (83.33%)\n", - "Epoch 2348: model set back to train mode\n", - "Epoch 2348: model parameters saved\n", - "Epoch 2349 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2349: avg_loss appended (2.7778)\n", - "Epoch 2349: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2349: accuracy appended (83.33%)\n", - "Epoch 2349: model set back to train mode\n", - "Epoch 2349: model parameters saved\n", - "Epoch 2350 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2350: avg_loss appended (2.7778)\n", - "Epoch 2350: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2350: accuracy appended (83.33%)\n", - "Epoch 2350: model set back to train mode\n", - "Epoch 2350: model parameters saved\n", - "Epoch 2351 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2351: avg_loss appended (2.7778)\n", - "Epoch 2351: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2351: accuracy appended (83.33%)\n", - "Epoch 2351: model set back to train mode\n", - "Epoch 2351: model parameters saved\n", - "Epoch 2352 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2352: avg_loss appended (2.7778)\n", - "Epoch 2352: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2352: accuracy appended (83.33%)\n", - "Epoch 2352: model set back to train mode\n", - "Epoch 2352: model parameters saved\n", - "Epoch 2353 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2353: avg_loss appended (2.7778)\n", - "Epoch 2353: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2353: accuracy appended (83.33%)\n", - "Epoch 2353: model set back to train mode\n", - "Epoch 2353: model parameters saved\n", - "Epoch 2354 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2354: avg_loss appended (2.7778)\n", - "Epoch 2354: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2354: accuracy appended (83.33%)\n", - "Epoch 2354: model set back to train mode\n", - "Epoch 2354: model parameters saved\n", - "Epoch 2355 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2355: avg_loss appended (2.7778)\n", - "Epoch 2355: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2355: accuracy appended (83.33%)\n", - "Epoch 2355: model set back to train mode\n", - "Epoch 2355: model parameters saved\n", - "Epoch 2356 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2356: avg_loss appended (2.7778)\n", - "Epoch 2356: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2356: accuracy appended (83.33%)\n", - "Epoch 2356: model set back to train mode\n", - "Epoch 2356: model parameters saved\n", - "Epoch 2357 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2357: avg_loss appended (2.7778)\n", - "Epoch 2357: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2357: accuracy appended (83.33%)\n", - "Epoch 2357: model set back to train mode\n", - "Epoch 2357: model parameters saved\n", - "Epoch 2358 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2358: avg_loss appended (2.7778)\n", - "Epoch 2358: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2358: accuracy appended (83.33%)\n", - "Epoch 2358: model set back to train mode\n", - "Epoch 2358: model parameters saved\n", - "Epoch 2359 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2359: avg_loss appended (2.7778)\n", - "Epoch 2359: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2359: accuracy appended (83.33%)\n", - "Epoch 2359: model set back to train mode\n", - "Epoch 2359: model parameters saved\n", - "Epoch 2360 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2360: avg_loss appended (2.7778)\n", - "Epoch 2360: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2360: accuracy appended (83.33%)\n", - "Epoch 2360: model set back to train mode\n", - "Epoch 2360: model parameters saved\n", - "Epoch 2361 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2361: avg_loss appended (2.7778)\n", - "Epoch 2361: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2361: accuracy appended (83.33%)\n", - "Epoch 2361: model set back to train mode\n", - "Epoch 2361: model parameters saved\n", - "Epoch 2362 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2362: avg_loss appended (2.7778)\n", - "Epoch 2362: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2362: accuracy appended (83.33%)\n", - "Epoch 2362: model set back to train mode\n", - "Epoch 2362: model parameters saved\n", - "Epoch 2363 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2363: avg_loss appended (2.7778)\n", - "Epoch 2363: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2363: accuracy appended (83.33%)\n", - "Epoch 2363: model set back to train mode\n", - "Epoch 2363: model parameters saved\n", - "Epoch 2364 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2364: avg_loss appended (2.7778)\n", - "Epoch 2364: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2364: accuracy appended (83.33%)\n", - "Epoch 2364: model set back to train mode\n", - "Epoch 2364: model parameters saved\n", - "Epoch 2365 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2365: avg_loss appended (2.7778)\n", - "Epoch 2365: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2365: accuracy appended (83.33%)\n", - "Epoch 2365: model set back to train mode\n", - "Epoch 2365: model parameters saved\n", - "Epoch 2366 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2366: avg_loss appended (2.7778)\n", - "Epoch 2366: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2366: accuracy appended (83.33%)\n", - "Epoch 2366: model set back to train mode\n", - "Epoch 2366: model parameters saved\n", - "Epoch 2367 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2367: avg_loss appended (2.7778)\n", - "Epoch 2367: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2367: accuracy appended (83.33%)\n", - "Epoch 2367: model set back to train mode\n", - "Epoch 2367: model parameters saved\n", - "Epoch 2368 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2368: avg_loss appended (2.7778)\n", - "Epoch 2368: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2368: accuracy appended (83.33%)\n", - "Epoch 2368: model set back to train mode\n", - "Epoch 2368: model parameters saved\n", - "Epoch 2369 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2369: avg_loss appended (2.7778)\n", - "Epoch 2369: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2369: accuracy appended (83.33%)\n", - "Epoch 2369: model set back to train mode\n", - "Epoch 2369: model parameters saved\n", - "Epoch 2370 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2370: avg_loss appended (2.7778)\n", - "Epoch 2370: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2370: accuracy appended (83.33%)\n", - "Epoch 2370: model set back to train mode\n", - "Epoch 2370: model parameters saved\n", - "Epoch 2371 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2371: avg_loss appended (2.7778)\n", - "Epoch 2371: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2371: accuracy appended (83.33%)\n", - "Epoch 2371: model set back to train mode\n", - "Epoch 2371: model parameters saved\n", - "Epoch 2372 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2372: avg_loss appended (2.7778)\n", - "Epoch 2372: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2372: accuracy appended (83.33%)\n", - "Epoch 2372: model set back to train mode\n", - "Epoch 2372: model parameters saved\n", - "Epoch 2373 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2373: avg_loss appended (2.7778)\n", - "Epoch 2373: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2373: accuracy appended (83.33%)\n", - "Epoch 2373: model set back to train mode\n", - "Epoch 2373: model parameters saved\n", - "Epoch 2374 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2374: avg_loss appended (2.7778)\n", - "Epoch 2374: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2374: accuracy appended (83.33%)\n", - "Epoch 2374: model set back to train mode\n", - "Epoch 2374: model parameters saved\n", - "Epoch 2375 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2375: avg_loss appended (2.7778)\n", - "Epoch 2375: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2375: accuracy appended (83.33%)\n", - "Epoch 2375: model set back to train mode\n", - "Epoch 2375: model parameters saved\n", - "Epoch 2376 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2376: avg_loss appended (2.7778)\n", - "Epoch 2376: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2376: accuracy appended (83.33%)\n", - "Epoch 2376: model set back to train mode\n", - "Epoch 2376: model parameters saved\n", - "Epoch 2377 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2377: avg_loss appended (2.7778)\n", - "Epoch 2377: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2377: accuracy appended (83.33%)\n", - "Epoch 2377: model set back to train mode\n", - "Epoch 2377: model parameters saved\n", - "Epoch 2378 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2378: avg_loss appended (2.7778)\n", - "Epoch 2378: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2378: accuracy appended (83.33%)\n", - "Epoch 2378: model set back to train mode\n", - "Epoch 2378: model parameters saved\n", - "Epoch 2379 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2379: avg_loss appended (2.7778)\n", - "Epoch 2379: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2379: accuracy appended (83.33%)\n", - "Epoch 2379: model set back to train mode\n", - "Epoch 2379: model parameters saved\n", - "Epoch 2380 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2380: avg_loss appended (2.7778)\n", - "Epoch 2380: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2380: accuracy appended (83.33%)\n", - "Epoch 2380: model set back to train mode\n", - "Epoch 2380: model parameters saved\n", - "Epoch 2381 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2381: avg_loss appended (2.7778)\n", - "Epoch 2381: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2381: accuracy appended (83.33%)\n", - "Epoch 2381: model set back to train mode\n", - "Epoch 2381: model parameters saved\n", - "Epoch 2382 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2382: avg_loss appended (2.7778)\n", - "Epoch 2382: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2382: accuracy appended (83.33%)\n", - "Epoch 2382: model set back to train mode\n", - "Epoch 2382: model parameters saved\n", - "Epoch 2383 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2383: avg_loss appended (2.7778)\n", - "Epoch 2383: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2383: accuracy appended (83.33%)\n", - "Epoch 2383: model set back to train mode\n", - "Epoch 2383: model parameters saved\n", - "Epoch 2384 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2384: avg_loss appended (2.7778)\n", - "Epoch 2384: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2384: accuracy appended (83.33%)\n", - "Epoch 2384: model set back to train mode\n", - "Epoch 2384: model parameters saved\n", - "Epoch 2385 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2385: avg_loss appended (2.7778)\n", - "Epoch 2385: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2385: accuracy appended (83.33%)\n", - "Epoch 2385: model set back to train mode\n", - "Epoch 2385: model parameters saved\n", - "Epoch 2386 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2386: avg_loss appended (2.7778)\n", - "Epoch 2386: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2386: accuracy appended (83.33%)\n", - "Epoch 2386: model set back to train mode\n", - "Epoch 2386: model parameters saved\n", - "Epoch 2387 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2387: avg_loss appended (2.7778)\n", - "Epoch 2387: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2387: accuracy appended (83.33%)\n", - "Epoch 2387: model set back to train mode\n", - "Epoch 2387: model parameters saved\n", - "Epoch 2388 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2388: avg_loss appended (2.7778)\n", - "Epoch 2388: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2388: accuracy appended (83.33%)\n", - "Epoch 2388: model set back to train mode\n", - "Epoch 2388: model parameters saved\n", - "Epoch 2389 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2389: avg_loss appended (2.7778)\n", - "Epoch 2389: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2389: accuracy appended (83.33%)\n", - "Epoch 2389: model set back to train mode\n", - "Epoch 2389: model parameters saved\n", - "Epoch 2390 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2390: avg_loss appended (2.7778)\n", - "Epoch 2390: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2390: accuracy appended (83.33%)\n", - "Epoch 2390: model set back to train mode\n", - "Epoch 2390: model parameters saved\n", - "Epoch 2391 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2391: avg_loss appended (2.7778)\n", - "Epoch 2391: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2391: accuracy appended (83.33%)\n", - "Epoch 2391: model set back to train mode\n", - "Epoch 2391: model parameters saved\n", - "Epoch 2392 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2392: avg_loss appended (2.7778)\n", - "Epoch 2392: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2392: accuracy appended (83.33%)\n", - "Epoch 2392: model set back to train mode\n", - "Epoch 2392: model parameters saved\n", - "Epoch 2393 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2393: avg_loss appended (2.7778)\n", - "Epoch 2393: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2393: accuracy appended (83.33%)\n", - "Epoch 2393: model set back to train mode\n", - "Epoch 2393: model parameters saved\n", - "Epoch 2394 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2394: avg_loss appended (2.7778)\n", - "Epoch 2394: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2394: accuracy appended (83.33%)\n", - "Epoch 2394: model set back to train mode\n", - "Epoch 2394: model parameters saved\n", - "Epoch 2395 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2395: avg_loss appended (2.7778)\n", - "Epoch 2395: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2395: accuracy appended (83.33%)\n", - "Epoch 2395: model set back to train mode\n", - "Epoch 2395: model parameters saved\n", - "Epoch 2396 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2396: avg_loss appended (2.7778)\n", - "Epoch 2396: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2396: accuracy appended (83.33%)\n", - "Epoch 2396: model set back to train mode\n", - "Epoch 2396: model parameters saved\n", - "Epoch 2397 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2397: avg_loss appended (2.7778)\n", - "Epoch 2397: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2397: accuracy appended (83.33%)\n", - "Epoch 2397: model set back to train mode\n", - "Epoch 2397: model parameters saved\n", - "Epoch 2398 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2398: avg_loss appended (2.7778)\n", - "Epoch 2398: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2398: accuracy appended (83.33%)\n", - "Epoch 2398: model set back to train mode\n", - "Epoch 2398: model parameters saved\n", - "Epoch 2399 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2399: avg_loss appended (2.7778)\n", - "Epoch 2399: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2399: accuracy appended (83.33%)\n", - "Epoch 2399: model set back to train mode\n", - "Epoch 2399: model parameters saved\n", - "Epoch 2400 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2400: avg_loss appended (2.7778)\n", - "Epoch 2400: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2400: accuracy appended (83.33%)\n", - "Epoch 2400: model set back to train mode\n", - "Epoch 2400: model parameters saved\n", - "Epoch 2400/10000, Loss: 2.7778, Accuracy: 83.33%\n", - "Epoch 2401 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2401: avg_loss appended (2.7778)\n", - "Epoch 2401: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2401: accuracy appended (83.33%)\n", - "Epoch 2401: model set back to train mode\n", - "Epoch 2401: model parameters saved\n", - "Epoch 2402 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2402: avg_loss appended (2.7778)\n", - "Epoch 2402: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2402: accuracy appended (83.33%)\n", - "Epoch 2402: model set back to train mode\n", - "Epoch 2402: model parameters saved\n", - "Epoch 2403 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2403: avg_loss appended (2.7778)\n", - "Epoch 2403: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2403: accuracy appended (83.33%)\n", - "Epoch 2403: model set back to train mode\n", - "Epoch 2403: model parameters saved\n", - "Epoch 2404 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2404: avg_loss appended (2.7778)\n", - "Epoch 2404: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2404: accuracy appended (83.33%)\n", - "Epoch 2404: model set back to train mode\n", - "Epoch 2404: model parameters saved\n", - "Epoch 2405 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2405: avg_loss appended (2.7778)\n", - "Epoch 2405: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2405: accuracy appended (83.33%)\n", - "Epoch 2405: model set back to train mode\n", - "Epoch 2405: model parameters saved\n", - "Epoch 2406 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2406: avg_loss appended (2.7778)\n", - "Epoch 2406: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2406: accuracy appended (83.33%)\n", - "Epoch 2406: model set back to train mode\n", - "Epoch 2406: model parameters saved\n", - "Epoch 2407 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2407: avg_loss appended (2.7778)\n", - "Epoch 2407: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2407: accuracy appended (83.33%)\n", - "Epoch 2407: model set back to train mode\n", - "Epoch 2407: model parameters saved\n", - "Epoch 2408 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2408: avg_loss appended (2.7778)\n", - "Epoch 2408: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2408: accuracy appended (83.33%)\n", - "Epoch 2408: model set back to train mode\n", - "Epoch 2408: model parameters saved\n", - "Epoch 2409 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2409: avg_loss appended (2.7778)\n", - "Epoch 2409: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2409: accuracy appended (83.33%)\n", - "Epoch 2409: model set back to train mode\n", - "Epoch 2409: model parameters saved\n", - "Epoch 2410 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2410: avg_loss appended (2.7778)\n", - "Epoch 2410: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2410: accuracy appended (83.33%)\n", - "Epoch 2410: model set back to train mode\n", - "Epoch 2410: model parameters saved\n", - "Epoch 2411 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2411: avg_loss appended (2.7778)\n", - "Epoch 2411: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2411: accuracy appended (83.33%)\n", - "Epoch 2411: model set back to train mode\n", - "Epoch 2411: model parameters saved\n", - "Epoch 2412 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2412: avg_loss appended (2.7778)\n", - "Epoch 2412: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2412: accuracy appended (83.33%)\n", - "Epoch 2412: model set back to train mode\n", - "Epoch 2412: model parameters saved\n", - "Epoch 2413 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2413: avg_loss appended (2.7778)\n", - "Epoch 2413: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2413: accuracy appended (83.33%)\n", - "Epoch 2413: model set back to train mode\n", - "Epoch 2413: model parameters saved\n", - "Epoch 2414 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2414: avg_loss appended (2.7778)\n", - "Epoch 2414: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2414: accuracy appended (83.33%)\n", - "Epoch 2414: model set back to train mode\n", - "Epoch 2414: model parameters saved\n", - "Epoch 2415 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2415: avg_loss appended (2.7778)\n", - "Epoch 2415: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2415: accuracy appended (83.33%)\n", - "Epoch 2415: model set back to train mode\n", - "Epoch 2415: model parameters saved\n", - "Epoch 2416 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2416: avg_loss appended (2.7778)\n", - "Epoch 2416: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2416: accuracy appended (83.33%)\n", - "Epoch 2416: model set back to train mode\n", - "Epoch 2416: model parameters saved\n", - "Epoch 2417 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2417: avg_loss appended (2.7778)\n", - "Epoch 2417: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2417: accuracy appended (83.33%)\n", - "Epoch 2417: model set back to train mode\n", - "Epoch 2417: model parameters saved\n", - "Epoch 2418 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2418: avg_loss appended (2.7778)\n", - "Epoch 2418: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2418: accuracy appended (83.33%)\n", - "Epoch 2418: model set back to train mode\n", - "Epoch 2418: model parameters saved\n", - "Epoch 2419 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2419: avg_loss appended (2.7778)\n", - "Epoch 2419: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2419: accuracy appended (83.33%)\n", - "Epoch 2419: model set back to train mode\n", - "Epoch 2419: model parameters saved\n", - "Epoch 2420 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2420: avg_loss appended (2.7778)\n", - "Epoch 2420: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2420: accuracy appended (83.33%)\n", - "Epoch 2420: model set back to train mode\n", - "Epoch 2420: model parameters saved\n", - "Epoch 2421 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2421: avg_loss appended (2.7778)\n", - "Epoch 2421: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2421: accuracy appended (83.33%)\n", - "Epoch 2421: model set back to train mode\n", - "Epoch 2421: model parameters saved\n", - "Epoch 2422 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2422: avg_loss appended (2.7778)\n", - "Epoch 2422: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2422: accuracy appended (83.33%)\n", - "Epoch 2422: model set back to train mode\n", - "Epoch 2422: model parameters saved\n", - "Epoch 2423 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2423: avg_loss appended (2.7778)\n", - "Epoch 2423: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2423: accuracy appended (83.33%)\n", - "Epoch 2423: model set back to train mode\n", - "Epoch 2423: model parameters saved\n", - "Epoch 2424 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2424: avg_loss appended (2.7778)\n", - "Epoch 2424: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2424: accuracy appended (83.33%)\n", - "Epoch 2424: model set back to train mode\n", - "Epoch 2424: model parameters saved\n", - "Epoch 2425 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2425: avg_loss appended (2.7778)\n", - "Epoch 2425: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2425: accuracy appended (83.33%)\n", - "Epoch 2425: model set back to train mode\n", - "Epoch 2425: model parameters saved\n", - "Epoch 2426 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2426: avg_loss appended (2.7778)\n", - "Epoch 2426: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2426: accuracy appended (83.33%)\n", - "Epoch 2426: model set back to train mode\n", - "Epoch 2426: model parameters saved\n", - "Epoch 2427 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2427: avg_loss appended (2.7778)\n", - "Epoch 2427: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2427: accuracy appended (83.33%)\n", - "Epoch 2427: model set back to train mode\n", - "Epoch 2427: model parameters saved\n", - "Epoch 2428 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2428: avg_loss appended (2.7778)\n", - "Epoch 2428: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2428: accuracy appended (83.33%)\n", - "Epoch 2428: model set back to train mode\n", - "Epoch 2428: model parameters saved\n", - "Epoch 2429 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2429: avg_loss appended (2.7778)\n", - "Epoch 2429: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2429: accuracy appended (83.33%)\n", - "Epoch 2429: model set back to train mode\n", - "Epoch 2429: model parameters saved\n", - "Epoch 2430 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2430: avg_loss appended (2.7778)\n", - "Epoch 2430: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2430: accuracy appended (83.33%)\n", - "Epoch 2430: model set back to train mode\n", - "Epoch 2430: model parameters saved\n", - "Epoch 2431 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2431: avg_loss appended (2.7778)\n", - "Epoch 2431: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2431: accuracy appended (83.33%)\n", - "Epoch 2431: model set back to train mode\n", - "Epoch 2431: model parameters saved\n", - "Epoch 2432 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2432: avg_loss appended (2.7778)\n", - "Epoch 2432: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2432: accuracy appended (83.33%)\n", - "Epoch 2432: model set back to train mode\n", - "Epoch 2432: model parameters saved\n", - "Epoch 2433 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2433: avg_loss appended (2.7778)\n", - "Epoch 2433: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2433: accuracy appended (83.33%)\n", - "Epoch 2433: model set back to train mode\n", - "Epoch 2433: model parameters saved\n", - "Epoch 2434 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2434: avg_loss appended (2.7778)\n", - "Epoch 2434: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2434: accuracy appended (83.33%)\n", - "Epoch 2434: model set back to train mode\n", - "Epoch 2434: model parameters saved\n", - "Epoch 2435 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2435: avg_loss appended (2.7778)\n", - "Epoch 2435: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2435: accuracy appended (83.33%)\n", - "Epoch 2435: model set back to train mode\n", - "Epoch 2435: model parameters saved\n", - "Epoch 2436 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2436: avg_loss appended (2.7778)\n", - "Epoch 2436: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2436: accuracy appended (83.33%)\n", - "Epoch 2436: model set back to train mode\n", - "Epoch 2436: model parameters saved\n", - "Epoch 2437 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2437: avg_loss appended (2.7778)\n", - "Epoch 2437: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2437: accuracy appended (83.33%)\n", - "Epoch 2437: model set back to train mode\n", - "Epoch 2437: model parameters saved\n", - "Epoch 2438 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2438: avg_loss appended (2.7778)\n", - "Epoch 2438: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2438: accuracy appended (83.33%)\n", - "Epoch 2438: model set back to train mode\n", - "Epoch 2438: model parameters saved\n", - "Epoch 2439 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2439: avg_loss appended (2.7778)\n", - "Epoch 2439: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2439: accuracy appended (83.33%)\n", - "Epoch 2439: model set back to train mode\n", - "Epoch 2439: model parameters saved\n", - "Epoch 2440 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2440: avg_loss appended (2.7778)\n", - "Epoch 2440: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2440: accuracy appended (83.33%)\n", - "Epoch 2440: model set back to train mode\n", - "Epoch 2440: model parameters saved\n", - "Epoch 2441 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2441: avg_loss appended (2.7778)\n", - "Epoch 2441: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2441: accuracy appended (83.33%)\n", - "Epoch 2441: model set back to train mode\n", - "Epoch 2441: model parameters saved\n", - "Epoch 2442 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2442: avg_loss appended (2.7778)\n", - "Epoch 2442: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2442: accuracy appended (83.33%)\n", - "Epoch 2442: model set back to train mode\n", - "Epoch 2442: model parameters saved\n", - "Epoch 2443 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2443: avg_loss appended (2.7778)\n", - "Epoch 2443: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2443: accuracy appended (83.33%)\n", - "Epoch 2443: model set back to train mode\n", - "Epoch 2443: model parameters saved\n", - "Epoch 2444 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2444: avg_loss appended (2.7778)\n", - "Epoch 2444: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2444: accuracy appended (83.33%)\n", - "Epoch 2444: model set back to train mode\n", - "Epoch 2444: model parameters saved\n", - "Epoch 2445 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2445: avg_loss appended (2.7778)\n", - "Epoch 2445: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2445: accuracy appended (83.33%)\n", - "Epoch 2445: model set back to train mode\n", - "Epoch 2445: model parameters saved\n", - "Epoch 2446 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2446: avg_loss appended (2.7778)\n", - "Epoch 2446: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2446: accuracy appended (83.33%)\n", - "Epoch 2446: model set back to train mode\n", - "Epoch 2446: model parameters saved\n", - "Epoch 2447 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2447: avg_loss appended (2.7778)\n", - "Epoch 2447: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2447: accuracy appended (83.33%)\n", - "Epoch 2447: model set back to train mode\n", - "Epoch 2447: model parameters saved\n", - "Epoch 2448 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2448: avg_loss appended (2.7778)\n", - "Epoch 2448: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2448: accuracy appended (83.33%)\n", - "Epoch 2448: model set back to train mode\n", - "Epoch 2448: model parameters saved\n", - "Epoch 2449 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2449: avg_loss appended (2.7778)\n", - "Epoch 2449: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2449: accuracy appended (83.33%)\n", - "Epoch 2449: model set back to train mode\n", - "Epoch 2449: model parameters saved\n", - "Epoch 2450 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2450: avg_loss appended (2.7778)\n", - "Epoch 2450: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2450: accuracy appended (83.33%)\n", - "Epoch 2450: model set back to train mode\n", - "Epoch 2450: model parameters saved\n", - "Epoch 2451 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2451: avg_loss appended (2.7778)\n", - "Epoch 2451: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2451: accuracy appended (83.33%)\n", - "Epoch 2451: model set back to train mode\n", - "Epoch 2451: model parameters saved\n", - "Epoch 2452 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2452: avg_loss appended (2.7778)\n", - "Epoch 2452: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2452: accuracy appended (83.33%)\n", - "Epoch 2452: model set back to train mode\n", - "Epoch 2452: model parameters saved\n", - "Epoch 2453 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2453: avg_loss appended (2.7778)\n", - "Epoch 2453: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2453: accuracy appended (83.33%)\n", - "Epoch 2453: model set back to train mode\n", - "Epoch 2453: model parameters saved\n", - "Epoch 2454 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2454: avg_loss appended (2.7778)\n", - "Epoch 2454: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2454: accuracy appended (83.33%)\n", - "Epoch 2454: model set back to train mode\n", - "Epoch 2454: model parameters saved\n", - "Epoch 2455 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2455: avg_loss appended (2.7778)\n", - "Epoch 2455: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2455: accuracy appended (83.33%)\n", - "Epoch 2455: model set back to train mode\n", - "Epoch 2455: model parameters saved\n", - "Epoch 2456 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2456: avg_loss appended (2.7778)\n", - "Epoch 2456: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2456: accuracy appended (83.33%)\n", - "Epoch 2456: model set back to train mode\n", - "Epoch 2456: model parameters saved\n", - "Epoch 2457 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2457: avg_loss appended (2.7778)\n", - "Epoch 2457: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2457: accuracy appended (83.33%)\n", - "Epoch 2457: model set back to train mode\n", - "Epoch 2457: model parameters saved\n", - "Epoch 2458 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2458: avg_loss appended (2.7778)\n", - "Epoch 2458: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2458: accuracy appended (83.33%)\n", - "Epoch 2458: model set back to train mode\n", - "Epoch 2458: model parameters saved\n", - "Epoch 2459 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2459: avg_loss appended (2.7778)\n", - "Epoch 2459: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2459: accuracy appended (83.33%)\n", - "Epoch 2459: model set back to train mode\n", - "Epoch 2459: model parameters saved\n", - "Epoch 2460 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2460: avg_loss appended (2.7778)\n", - "Epoch 2460: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2460: accuracy appended (83.33%)\n", - "Epoch 2460: model set back to train mode\n", - "Epoch 2460: model parameters saved\n", - "Epoch 2461 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2461: avg_loss appended (2.7778)\n", - "Epoch 2461: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2461: accuracy appended (83.33%)\n", - "Epoch 2461: model set back to train mode\n", - "Epoch 2461: model parameters saved\n", - "Epoch 2462 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2462: avg_loss appended (2.7778)\n", - "Epoch 2462: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2462: accuracy appended (83.33%)\n", - "Epoch 2462: model set back to train mode\n", - "Epoch 2462: model parameters saved\n", - "Epoch 2463 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2463: avg_loss appended (2.7778)\n", - "Epoch 2463: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2463: accuracy appended (83.33%)\n", - "Epoch 2463: model set back to train mode\n", - "Epoch 2463: model parameters saved\n", - "Epoch 2464 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2464: avg_loss appended (2.7778)\n", - "Epoch 2464: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2464: accuracy appended (83.33%)\n", - "Epoch 2464: model set back to train mode\n", - "Epoch 2464: model parameters saved\n", - "Epoch 2465 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2465: avg_loss appended (2.7778)\n", - "Epoch 2465: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2465: accuracy appended (83.33%)\n", - "Epoch 2465: model set back to train mode\n", - "Epoch 2465: model parameters saved\n", - "Epoch 2466 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2466: avg_loss appended (2.7778)\n", - "Epoch 2466: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2466: accuracy appended (83.33%)\n", - "Epoch 2466: model set back to train mode\n", - "Epoch 2466: model parameters saved\n", - "Epoch 2467 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2467: avg_loss appended (2.7778)\n", - "Epoch 2467: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2467: accuracy appended (83.33%)\n", - "Epoch 2467: model set back to train mode\n", - "Epoch 2467: model parameters saved\n", - "Epoch 2468 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2468: avg_loss appended (2.7778)\n", - "Epoch 2468: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2468: accuracy appended (83.33%)\n", - "Epoch 2468: model set back to train mode\n", - "Epoch 2468: model parameters saved\n", - "Epoch 2469 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2469: avg_loss appended (2.7778)\n", - "Epoch 2469: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2469: accuracy appended (83.33%)\n", - "Epoch 2469: model set back to train mode\n", - "Epoch 2469: model parameters saved\n", - "Epoch 2470 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2470: avg_loss appended (2.7778)\n", - "Epoch 2470: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2470: accuracy appended (83.33%)\n", - "Epoch 2470: model set back to train mode\n", - "Epoch 2470: model parameters saved\n", - "Epoch 2471 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2471: avg_loss appended (2.7778)\n", - "Epoch 2471: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2471: accuracy appended (83.33%)\n", - "Epoch 2471: model set back to train mode\n", - "Epoch 2471: model parameters saved\n", - "Epoch 2472 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2472: avg_loss appended (2.7778)\n", - "Epoch 2472: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2472: accuracy appended (83.33%)\n", - "Epoch 2472: model set back to train mode\n", - "Epoch 2472: model parameters saved\n", - "Epoch 2473 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2473: avg_loss appended (2.7778)\n", - "Epoch 2473: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2473: accuracy appended (83.33%)\n", - "Epoch 2473: model set back to train mode\n", - "Epoch 2473: model parameters saved\n", - "Epoch 2474 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2474: avg_loss appended (2.7778)\n", - "Epoch 2474: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2474: accuracy appended (83.33%)\n", - "Epoch 2474: model set back to train mode\n", - "Epoch 2474: model parameters saved\n", - "Epoch 2475 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2475: avg_loss appended (2.7778)\n", - "Epoch 2475: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2475: accuracy appended (83.33%)\n", - "Epoch 2475: model set back to train mode\n", - "Epoch 2475: model parameters saved\n", - "Epoch 2476 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2476: avg_loss appended (2.7778)\n", - "Epoch 2476: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2476: accuracy appended (83.33%)\n", - "Epoch 2476: model set back to train mode\n", - "Epoch 2476: model parameters saved\n", - "Epoch 2477 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2477: avg_loss appended (2.7778)\n", - "Epoch 2477: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2477: accuracy appended (83.33%)\n", - "Epoch 2477: model set back to train mode\n", - "Epoch 2477: model parameters saved\n", - "Epoch 2478 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2478: avg_loss appended (2.7778)\n", - "Epoch 2478: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2478: accuracy appended (83.33%)\n", - "Epoch 2478: model set back to train mode\n", - "Epoch 2478: model parameters saved\n", - "Epoch 2479 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2479: avg_loss appended (2.7778)\n", - "Epoch 2479: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2479: accuracy appended (83.33%)\n", - "Epoch 2479: model set back to train mode\n", - "Epoch 2479: model parameters saved\n", - "Epoch 2480 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2480: avg_loss appended (2.7778)\n", - "Epoch 2480: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2480: accuracy appended (83.33%)\n", - "Epoch 2480: model set back to train mode\n", - "Epoch 2480: model parameters saved\n", - "Epoch 2481 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2481: avg_loss appended (2.7778)\n", - "Epoch 2481: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2481: accuracy appended (83.33%)\n", - "Epoch 2481: model set back to train mode\n", - "Epoch 2481: model parameters saved\n", - "Epoch 2482 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2482: avg_loss appended (2.7778)\n", - "Epoch 2482: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2482: accuracy appended (83.33%)\n", - "Epoch 2482: model set back to train mode\n", - "Epoch 2482: model parameters saved\n", - "Epoch 2483 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2483: avg_loss appended (2.7778)\n", - "Epoch 2483: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2483: accuracy appended (83.33%)\n", - "Epoch 2483: model set back to train mode\n", - "Epoch 2483: model parameters saved\n", - "Epoch 2484 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2484: avg_loss appended (2.7778)\n", - "Epoch 2484: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2484: accuracy appended (83.33%)\n", - "Epoch 2484: model set back to train mode\n", - "Epoch 2484: model parameters saved\n", - "Epoch 2485 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2485: avg_loss appended (2.7778)\n", - "Epoch 2485: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2485: accuracy appended (83.33%)\n", - "Epoch 2485: model set back to train mode\n", - "Epoch 2485: model parameters saved\n", - "Epoch 2486 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2486: avg_loss appended (2.7778)\n", - "Epoch 2486: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2486: accuracy appended (83.33%)\n", - "Epoch 2486: model set back to train mode\n", - "Epoch 2486: model parameters saved\n", - "Epoch 2487 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2487: avg_loss appended (2.7778)\n", - "Epoch 2487: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2487: accuracy appended (83.33%)\n", - "Epoch 2487: model set back to train mode\n", - "Epoch 2487: model parameters saved\n", - "Epoch 2488 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2488: avg_loss appended (2.7778)\n", - "Epoch 2488: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2488: accuracy appended (83.33%)\n", - "Epoch 2488: model set back to train mode\n", - "Epoch 2488: model parameters saved\n", - "Epoch 2489 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2489: avg_loss appended (2.7778)\n", - "Epoch 2489: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2489: accuracy appended (83.33%)\n", - "Epoch 2489: model set back to train mode\n", - "Epoch 2489: model parameters saved\n", - "Epoch 2490 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2490: avg_loss appended (2.7778)\n", - "Epoch 2490: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2490: accuracy appended (83.33%)\n", - "Epoch 2490: model set back to train mode\n", - "Epoch 2490: model parameters saved\n", - "Epoch 2491 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2491: avg_loss appended (2.7778)\n", - "Epoch 2491: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2491: accuracy appended (83.33%)\n", - "Epoch 2491: model set back to train mode\n", - "Epoch 2491: model parameters saved\n", - "Epoch 2492 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2492: avg_loss appended (2.7778)\n", - "Epoch 2492: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2492: accuracy appended (83.33%)\n", - "Epoch 2492: model set back to train mode\n", - "Epoch 2492: model parameters saved\n", - "Epoch 2493 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2493: avg_loss appended (2.7778)\n", - "Epoch 2493: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2493: accuracy appended (83.33%)\n", - "Epoch 2493: model set back to train mode\n", - "Epoch 2493: model parameters saved\n", - "Epoch 2494 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2494: avg_loss appended (2.7778)\n", - "Epoch 2494: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2494: accuracy appended (83.33%)\n", - "Epoch 2494: model set back to train mode\n", - "Epoch 2494: model parameters saved\n", - "Epoch 2495 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2495: avg_loss appended (2.7778)\n", - "Epoch 2495: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2495: accuracy appended (83.33%)\n", - "Epoch 2495: model set back to train mode\n", - "Epoch 2495: model parameters saved\n", - "Epoch 2496 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2496: avg_loss appended (2.7778)\n", - "Epoch 2496: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2496: accuracy appended (80.56%)\n", - "Epoch 2496: model set back to train mode\n", - "Epoch 2496: model parameters saved\n", - "Epoch 2497 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2497: avg_loss appended (2.7778)\n", - "Epoch 2497: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2497: accuracy appended (80.56%)\n", - "Epoch 2497: model set back to train mode\n", - "Epoch 2497: model parameters saved\n", - "Epoch 2498 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2498: avg_loss appended (2.7778)\n", - "Epoch 2498: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2498: accuracy appended (83.33%)\n", - "Epoch 2498: model set back to train mode\n", - "Epoch 2498: model parameters saved\n", - "Epoch 2499 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2499: avg_loss appended (2.7778)\n", - "Epoch 2499: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 2499: accuracy appended (83.33%)\n", - "Epoch 2499: model set back to train mode\n", - "Epoch 2499: model parameters saved\n", - "Epoch 2500 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2500: avg_loss appended (2.7778)\n", - "Epoch 2500: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2500: accuracy appended (80.56%)\n", - "Epoch 2500: model set back to train mode\n", - "Epoch 2500: model parameters saved\n", - "Epoch 2500/10000, Loss: 2.7778, Accuracy: 80.56%\n", - "Epoch 2501 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2501: avg_loss appended (2.7778)\n", - "Epoch 2501: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2501: accuracy appended (80.56%)\n", - "Epoch 2501: model set back to train mode\n", - "Epoch 2501: model parameters saved\n", - "Epoch 2502 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2502: avg_loss appended (2.7778)\n", - "Epoch 2502: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2502: accuracy appended (80.56%)\n", - "Epoch 2502: model set back to train mode\n", - "Epoch 2502: model parameters saved\n", - "Epoch 2503 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2503: avg_loss appended (2.7778)\n", - "Epoch 2503: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2503: accuracy appended (80.56%)\n", - "Epoch 2503: model set back to train mode\n", - "Epoch 2503: model parameters saved\n", - "Epoch 2504 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2504: avg_loss appended (2.7778)\n", - "Epoch 2504: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2504: accuracy appended (80.56%)\n", - "Epoch 2504: model set back to train mode\n", - "Epoch 2504: model parameters saved\n", - "Epoch 2505 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2505: avg_loss appended (2.7778)\n", - "Epoch 2505: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2505: accuracy appended (80.56%)\n", - "Epoch 2505: model set back to train mode\n", - "Epoch 2505: model parameters saved\n", - "Epoch 2506 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2506: avg_loss appended (2.7778)\n", - "Epoch 2506: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2506: accuracy appended (80.56%)\n", - "Epoch 2506: model set back to train mode\n", - "Epoch 2506: model parameters saved\n", - "Epoch 2507 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2507: avg_loss appended (2.7778)\n", - "Epoch 2507: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2507: accuracy appended (80.56%)\n", - "Epoch 2507: model set back to train mode\n", - "Epoch 2507: model parameters saved\n", - "Epoch 2508 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2508: avg_loss appended (2.7778)\n", - "Epoch 2508: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2508: accuracy appended (80.56%)\n", - "Epoch 2508: model set back to train mode\n", - "Epoch 2508: model parameters saved\n", - "Epoch 2509 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2509: avg_loss appended (2.7778)\n", - "Epoch 2509: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2509: accuracy appended (80.56%)\n", - "Epoch 2509: model set back to train mode\n", - "Epoch 2509: model parameters saved\n", - "Epoch 2510 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2510: avg_loss appended (2.7778)\n", - "Epoch 2510: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2510: accuracy appended (80.56%)\n", - "Epoch 2510: model set back to train mode\n", - "Epoch 2510: model parameters saved\n", - "Epoch 2511 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2511: avg_loss appended (2.7778)\n", - "Epoch 2511: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2511: accuracy appended (80.56%)\n", - "Epoch 2511: model set back to train mode\n", - "Epoch 2511: model parameters saved\n", - "Epoch 2512 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2512: avg_loss appended (2.7778)\n", - "Epoch 2512: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2512: accuracy appended (80.56%)\n", - "Epoch 2512: model set back to train mode\n", - "Epoch 2512: model parameters saved\n", - "Epoch 2513 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2513: avg_loss appended (2.7778)\n", - "Epoch 2513: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2513: accuracy appended (80.56%)\n", - "Epoch 2513: model set back to train mode\n", - "Epoch 2513: model parameters saved\n", - "Epoch 2514 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2514: avg_loss appended (2.7778)\n", - "Epoch 2514: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2514: accuracy appended (80.56%)\n", - "Epoch 2514: model set back to train mode\n", - "Epoch 2514: model parameters saved\n", - "Epoch 2515 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2515: avg_loss appended (2.7778)\n", - "Epoch 2515: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2515: accuracy appended (80.56%)\n", - "Epoch 2515: model set back to train mode\n", - "Epoch 2515: model parameters saved\n", - "Epoch 2516 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2516: avg_loss appended (2.7778)\n", - "Epoch 2516: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2516: accuracy appended (80.56%)\n", - "Epoch 2516: model set back to train mode\n", - "Epoch 2516: model parameters saved\n", - "Epoch 2517 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2517: avg_loss appended (2.7778)\n", - "Epoch 2517: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2517: accuracy appended (80.56%)\n", - "Epoch 2517: model set back to train mode\n", - "Epoch 2517: model parameters saved\n", - "Epoch 2518 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2518: avg_loss appended (2.7778)\n", - "Epoch 2518: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2518: accuracy appended (80.56%)\n", - "Epoch 2518: model set back to train mode\n", - "Epoch 2518: model parameters saved\n", - "Epoch 2519 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2519: avg_loss appended (2.7778)\n", - "Epoch 2519: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2519: accuracy appended (80.56%)\n", - "Epoch 2519: model set back to train mode\n", - "Epoch 2519: model parameters saved\n", - "Epoch 2520 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2520: avg_loss appended (2.7778)\n", - "Epoch 2520: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2520: accuracy appended (80.56%)\n", - "Epoch 2520: model set back to train mode\n", - "Epoch 2520: model parameters saved\n", - "Epoch 2521 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2521: avg_loss appended (2.7778)\n", - "Epoch 2521: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2521: accuracy appended (80.56%)\n", - "Epoch 2521: model set back to train mode\n", - "Epoch 2521: model parameters saved\n", - "Epoch 2522 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2522: avg_loss appended (2.7778)\n", - "Epoch 2522: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2522: accuracy appended (80.56%)\n", - "Epoch 2522: model set back to train mode\n", - "Epoch 2522: model parameters saved\n", - "Epoch 2523 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2523: avg_loss appended (2.7778)\n", - "Epoch 2523: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2523: accuracy appended (80.56%)\n", - "Epoch 2523: model set back to train mode\n", - "Epoch 2523: model parameters saved\n", - "Epoch 2524 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2524: avg_loss appended (2.7778)\n", - "Epoch 2524: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2524: accuracy appended (80.56%)\n", - "Epoch 2524: model set back to train mode\n", - "Epoch 2524: model parameters saved\n", - "Epoch 2525 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2525: avg_loss appended (2.7778)\n", - "Epoch 2525: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2525: accuracy appended (80.56%)\n", - "Epoch 2525: model set back to train mode\n", - "Epoch 2525: model parameters saved\n", - "Epoch 2526 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2526: avg_loss appended (2.7778)\n", - "Epoch 2526: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2526: accuracy appended (80.56%)\n", - "Epoch 2526: model set back to train mode\n", - "Epoch 2526: model parameters saved\n", - "Epoch 2527 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2527: avg_loss appended (2.7778)\n", - "Epoch 2527: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2527: accuracy appended (80.56%)\n", - "Epoch 2527: model set back to train mode\n", - "Epoch 2527: model parameters saved\n", - "Epoch 2528 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2528: avg_loss appended (2.7778)\n", - "Epoch 2528: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2528: accuracy appended (80.56%)\n", - "Epoch 2528: model set back to train mode\n", - "Epoch 2528: model parameters saved\n", - "Epoch 2529 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2529: avg_loss appended (2.7778)\n", - "Epoch 2529: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2529: accuracy appended (80.56%)\n", - "Epoch 2529: model set back to train mode\n", - "Epoch 2529: model parameters saved\n", - "Epoch 2530 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2530: avg_loss appended (2.7778)\n", - "Epoch 2530: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2530: accuracy appended (80.56%)\n", - "Epoch 2530: model set back to train mode\n", - "Epoch 2530: model parameters saved\n", - "Epoch 2531 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2531: avg_loss appended (2.7778)\n", - "Epoch 2531: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2531: accuracy appended (80.56%)\n", - "Epoch 2531: model set back to train mode\n", - "Epoch 2531: model parameters saved\n", - "Epoch 2532 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2532: avg_loss appended (2.7778)\n", - "Epoch 2532: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2532: accuracy appended (80.56%)\n", - "Epoch 2532: model set back to train mode\n", - "Epoch 2532: model parameters saved\n", - "Epoch 2533 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2533: avg_loss appended (2.7778)\n", - "Epoch 2533: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2533: accuracy appended (80.56%)\n", - "Epoch 2533: model set back to train mode\n", - "Epoch 2533: model parameters saved\n", - "Epoch 2534 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2534: avg_loss appended (2.7778)\n", - "Epoch 2534: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2534: accuracy appended (80.56%)\n", - "Epoch 2534: model set back to train mode\n", - "Epoch 2534: model parameters saved\n", - "Epoch 2535 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2535: avg_loss appended (2.7778)\n", - "Epoch 2535: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2535: accuracy appended (80.56%)\n", - "Epoch 2535: model set back to train mode\n", - "Epoch 2535: model parameters saved\n", - "Epoch 2536 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2536: avg_loss appended (2.7778)\n", - "Epoch 2536: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2536: accuracy appended (80.56%)\n", - "Epoch 2536: model set back to train mode\n", - "Epoch 2536: model parameters saved\n", - "Epoch 2537 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2537: avg_loss appended (2.7778)\n", - "Epoch 2537: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2537: accuracy appended (80.56%)\n", - "Epoch 2537: model set back to train mode\n", - "Epoch 2537: model parameters saved\n", - "Epoch 2538 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2538: avg_loss appended (2.7778)\n", - "Epoch 2538: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2538: accuracy appended (80.56%)\n", - "Epoch 2538: model set back to train mode\n", - "Epoch 2538: model parameters saved\n", - "Epoch 2539 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2539: avg_loss appended (2.7778)\n", - "Epoch 2539: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2539: accuracy appended (80.56%)\n", - "Epoch 2539: model set back to train mode\n", - "Epoch 2539: model parameters saved\n", - "Epoch 2540 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2540: avg_loss appended (2.7778)\n", - "Epoch 2540: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2540: accuracy appended (80.56%)\n", - "Epoch 2540: model set back to train mode\n", - "Epoch 2540: model parameters saved\n", - "Epoch 2541 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2541: avg_loss appended (2.7778)\n", - "Epoch 2541: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2541: accuracy appended (80.56%)\n", - "Epoch 2541: model set back to train mode\n", - "Epoch 2541: model parameters saved\n", - "Epoch 2542 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2542: avg_loss appended (2.7778)\n", - "Epoch 2542: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2542: accuracy appended (80.56%)\n", - "Epoch 2542: model set back to train mode\n", - "Epoch 2542: model parameters saved\n", - "Epoch 2543 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2543: avg_loss appended (2.7778)\n", - "Epoch 2543: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2543: accuracy appended (80.56%)\n", - "Epoch 2543: model set back to train mode\n", - "Epoch 2543: model parameters saved\n", - "Epoch 2544 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2544: avg_loss appended (2.7778)\n", - "Epoch 2544: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2544: accuracy appended (80.56%)\n", - "Epoch 2544: model set back to train mode\n", - "Epoch 2544: model parameters saved\n", - "Epoch 2545 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2545: avg_loss appended (2.7778)\n", - "Epoch 2545: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2545: accuracy appended (80.56%)\n", - "Epoch 2545: model set back to train mode\n", - "Epoch 2545: model parameters saved\n", - "Epoch 2546 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2546: avg_loss appended (2.7778)\n", - "Epoch 2546: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2546: accuracy appended (80.56%)\n", - "Epoch 2546: model set back to train mode\n", - "Epoch 2546: model parameters saved\n", - "Epoch 2547 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2547: avg_loss appended (2.7778)\n", - "Epoch 2547: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2547: accuracy appended (80.56%)\n", - "Epoch 2547: model set back to train mode\n", - "Epoch 2547: model parameters saved\n", - "Epoch 2548 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2548: avg_loss appended (2.7778)\n", - "Epoch 2548: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2548: accuracy appended (80.56%)\n", - "Epoch 2548: model set back to train mode\n", - "Epoch 2548: model parameters saved\n", - "Epoch 2549 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2549: avg_loss appended (2.7778)\n", - "Epoch 2549: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2549: accuracy appended (80.56%)\n", - "Epoch 2549: model set back to train mode\n", - "Epoch 2549: model parameters saved\n", - "Epoch 2550 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2550: avg_loss appended (2.7778)\n", - "Epoch 2550: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2550: accuracy appended (80.56%)\n", - "Epoch 2550: model set back to train mode\n", - "Epoch 2550: model parameters saved\n", - "Epoch 2551 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2551: avg_loss appended (2.7778)\n", - "Epoch 2551: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2551: accuracy appended (80.56%)\n", - "Epoch 2551: model set back to train mode\n", - "Epoch 2551: model parameters saved\n", - "Epoch 2552 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2552: avg_loss appended (2.7778)\n", - "Epoch 2552: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2552: accuracy appended (80.56%)\n", - "Epoch 2552: model set back to train mode\n", - "Epoch 2552: model parameters saved\n", - "Epoch 2553 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2553: avg_loss appended (2.7778)\n", - "Epoch 2553: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2553: accuracy appended (80.56%)\n", - "Epoch 2553: model set back to train mode\n", - "Epoch 2553: model parameters saved\n", - "Epoch 2554 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2554: avg_loss appended (2.7778)\n", - "Epoch 2554: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2554: accuracy appended (80.56%)\n", - "Epoch 2554: model set back to train mode\n", - "Epoch 2554: model parameters saved\n", - "Epoch 2555 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2555: avg_loss appended (2.7778)\n", - "Epoch 2555: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2555: accuracy appended (80.56%)\n", - "Epoch 2555: model set back to train mode\n", - "Epoch 2555: model parameters saved\n", - "Epoch 2556 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2556: avg_loss appended (2.7778)\n", - "Epoch 2556: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2556: accuracy appended (80.56%)\n", - "Epoch 2556: model set back to train mode\n", - "Epoch 2556: model parameters saved\n", - "Epoch 2557 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2557: avg_loss appended (2.7778)\n", - "Epoch 2557: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2557: accuracy appended (80.56%)\n", - "Epoch 2557: model set back to train mode\n", - "Epoch 2557: model parameters saved\n", - "Epoch 2558 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2558: avg_loss appended (2.7778)\n", - "Epoch 2558: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2558: accuracy appended (80.56%)\n", - "Epoch 2558: model set back to train mode\n", - "Epoch 2558: model parameters saved\n", - "Epoch 2559 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2559: avg_loss appended (2.7778)\n", - "Epoch 2559: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2559: accuracy appended (80.56%)\n", - "Epoch 2559: model set back to train mode\n", - "Epoch 2559: model parameters saved\n", - "Epoch 2560 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2560: avg_loss appended (2.7778)\n", - "Epoch 2560: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2560: accuracy appended (80.56%)\n", - "Epoch 2560: model set back to train mode\n", - "Epoch 2560: model parameters saved\n", - "Epoch 2561 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2561: avg_loss appended (2.7778)\n", - "Epoch 2561: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2561: accuracy appended (80.56%)\n", - "Epoch 2561: model set back to train mode\n", - "Epoch 2561: model parameters saved\n", - "Epoch 2562 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2562: avg_loss appended (2.7778)\n", - "Epoch 2562: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2562: accuracy appended (80.56%)\n", - "Epoch 2562: model set back to train mode\n", - "Epoch 2562: model parameters saved\n", - "Epoch 2563 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2563: avg_loss appended (2.7778)\n", - "Epoch 2563: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2563: accuracy appended (80.56%)\n", - "Epoch 2563: model set back to train mode\n", - "Epoch 2563: model parameters saved\n", - "Epoch 2564 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2564: avg_loss appended (2.7778)\n", - "Epoch 2564: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2564: accuracy appended (80.56%)\n", - "Epoch 2564: model set back to train mode\n", - "Epoch 2564: model parameters saved\n", - "Epoch 2565 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2565: avg_loss appended (2.7778)\n", - "Epoch 2565: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2565: accuracy appended (80.56%)\n", - "Epoch 2565: model set back to train mode\n", - "Epoch 2565: model parameters saved\n", - "Epoch 2566 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2566: avg_loss appended (2.7778)\n", - "Epoch 2566: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2566: accuracy appended (80.56%)\n", - "Epoch 2566: model set back to train mode\n", - "Epoch 2566: model parameters saved\n", - "Epoch 2567 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2567: avg_loss appended (2.7778)\n", - "Epoch 2567: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2567: accuracy appended (80.56%)\n", - "Epoch 2567: model set back to train mode\n", - "Epoch 2567: model parameters saved\n", - "Epoch 2568 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2568: avg_loss appended (2.7778)\n", - "Epoch 2568: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2568: accuracy appended (80.56%)\n", - "Epoch 2568: model set back to train mode\n", - "Epoch 2568: model parameters saved\n", - "Epoch 2569 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2569: avg_loss appended (2.7778)\n", - "Epoch 2569: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2569: accuracy appended (80.56%)\n", - "Epoch 2569: model set back to train mode\n", - "Epoch 2569: model parameters saved\n", - "Epoch 2570 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2570: avg_loss appended (2.7778)\n", - "Epoch 2570: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2570: accuracy appended (80.56%)\n", - "Epoch 2570: model set back to train mode\n", - "Epoch 2570: model parameters saved\n", - "Epoch 2571 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2571: avg_loss appended (2.7778)\n", - "Epoch 2571: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2571: accuracy appended (80.56%)\n", - "Epoch 2571: model set back to train mode\n", - "Epoch 2571: model parameters saved\n", - "Epoch 2572 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2572: avg_loss appended (2.7778)\n", - "Epoch 2572: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2572: accuracy appended (80.56%)\n", - "Epoch 2572: model set back to train mode\n", - "Epoch 2572: model parameters saved\n", - "Epoch 2573 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2573: avg_loss appended (2.7778)\n", - "Epoch 2573: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2573: accuracy appended (80.56%)\n", - "Epoch 2573: model set back to train mode\n", - "Epoch 2573: model parameters saved\n", - "Epoch 2574 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2574: avg_loss appended (2.7778)\n", - "Epoch 2574: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2574: accuracy appended (80.56%)\n", - "Epoch 2574: model set back to train mode\n", - "Epoch 2574: model parameters saved\n", - "Epoch 2575 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2575: avg_loss appended (2.7778)\n", - "Epoch 2575: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2575: accuracy appended (80.56%)\n", - "Epoch 2575: model set back to train mode\n", - "Epoch 2575: model parameters saved\n", - "Epoch 2576 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2576: avg_loss appended (2.7778)\n", - "Epoch 2576: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2576: accuracy appended (80.56%)\n", - "Epoch 2576: model set back to train mode\n", - "Epoch 2576: model parameters saved\n", - "Epoch 2577 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2577: avg_loss appended (2.7778)\n", - "Epoch 2577: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2577: accuracy appended (80.56%)\n", - "Epoch 2577: model set back to train mode\n", - "Epoch 2577: model parameters saved\n", - "Epoch 2578 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2578: avg_loss appended (2.7778)\n", - "Epoch 2578: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2578: accuracy appended (80.56%)\n", - "Epoch 2578: model set back to train mode\n", - "Epoch 2578: model parameters saved\n", - "Epoch 2579 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2579: avg_loss appended (2.7778)\n", - "Epoch 2579: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2579: accuracy appended (80.56%)\n", - "Epoch 2579: model set back to train mode\n", - "Epoch 2579: model parameters saved\n", - "Epoch 2580 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2580: avg_loss appended (2.7778)\n", - "Epoch 2580: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2580: accuracy appended (80.56%)\n", - "Epoch 2580: model set back to train mode\n", - "Epoch 2580: model parameters saved\n", - "Epoch 2581 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2581: avg_loss appended (2.7778)\n", - "Epoch 2581: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2581: accuracy appended (80.56%)\n", - "Epoch 2581: model set back to train mode\n", - "Epoch 2581: model parameters saved\n", - "Epoch 2582 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2582: avg_loss appended (2.7778)\n", - "Epoch 2582: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2582: accuracy appended (80.56%)\n", - "Epoch 2582: model set back to train mode\n", - "Epoch 2582: model parameters saved\n", - "Epoch 2583 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2583: avg_loss appended (2.7778)\n", - "Epoch 2583: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2583: accuracy appended (80.56%)\n", - "Epoch 2583: model set back to train mode\n", - "Epoch 2583: model parameters saved\n", - "Epoch 2584 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2584: avg_loss appended (2.7778)\n", - "Epoch 2584: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2584: accuracy appended (80.56%)\n", - "Epoch 2584: model set back to train mode\n", - "Epoch 2584: model parameters saved\n", - "Epoch 2585 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2585: avg_loss appended (2.7778)\n", - "Epoch 2585: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2585: accuracy appended (80.56%)\n", - "Epoch 2585: model set back to train mode\n", - "Epoch 2585: model parameters saved\n", - "Epoch 2586 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2586: avg_loss appended (2.7778)\n", - "Epoch 2586: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2586: accuracy appended (80.56%)\n", - "Epoch 2586: model set back to train mode\n", - "Epoch 2586: model parameters saved\n", - "Epoch 2587 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2587: avg_loss appended (2.7778)\n", - "Epoch 2587: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2587: accuracy appended (80.56%)\n", - "Epoch 2587: model set back to train mode\n", - "Epoch 2587: model parameters saved\n", - "Epoch 2588 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2588: avg_loss appended (2.7778)\n", - "Epoch 2588: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2588: accuracy appended (80.56%)\n", - "Epoch 2588: model set back to train mode\n", - "Epoch 2588: model parameters saved\n", - "Epoch 2589 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2589: avg_loss appended (2.7778)\n", - "Epoch 2589: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2589: accuracy appended (80.56%)\n", - "Epoch 2589: model set back to train mode\n", - "Epoch 2589: model parameters saved\n", - "Epoch 2590 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2590: avg_loss appended (2.7778)\n", - "Epoch 2590: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2590: accuracy appended (80.56%)\n", - "Epoch 2590: model set back to train mode\n", - "Epoch 2590: model parameters saved\n", - "Epoch 2591 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2591: avg_loss appended (2.7778)\n", - "Epoch 2591: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2591: accuracy appended (80.56%)\n", - "Epoch 2591: model set back to train mode\n", - "Epoch 2591: model parameters saved\n", - "Epoch 2592 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2592: avg_loss appended (2.7778)\n", - "Epoch 2592: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2592: accuracy appended (80.56%)\n", - "Epoch 2592: model set back to train mode\n", - "Epoch 2592: model parameters saved\n", - "Epoch 2593 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2593: avg_loss appended (2.7778)\n", - "Epoch 2593: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2593: accuracy appended (80.56%)\n", - "Epoch 2593: model set back to train mode\n", - "Epoch 2593: model parameters saved\n", - "Epoch 2594 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2594: avg_loss appended (2.7778)\n", - "Epoch 2594: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2594: accuracy appended (80.56%)\n", - "Epoch 2594: model set back to train mode\n", - "Epoch 2594: model parameters saved\n", - "Epoch 2595 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2595: avg_loss appended (2.7778)\n", - "Epoch 2595: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2595: accuracy appended (80.56%)\n", - "Epoch 2595: model set back to train mode\n", - "Epoch 2595: model parameters saved\n", - "Epoch 2596 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2596: avg_loss appended (2.7778)\n", - "Epoch 2596: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2596: accuracy appended (80.56%)\n", - "Epoch 2596: model set back to train mode\n", - "Epoch 2596: model parameters saved\n", - "Epoch 2597 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2597: avg_loss appended (2.7778)\n", - "Epoch 2597: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2597: accuracy appended (80.56%)\n", - "Epoch 2597: model set back to train mode\n", - "Epoch 2597: model parameters saved\n", - "Epoch 2598 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2598: avg_loss appended (2.7778)\n", - "Epoch 2598: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2598: accuracy appended (80.56%)\n", - "Epoch 2598: model set back to train mode\n", - "Epoch 2598: model parameters saved\n", - "Epoch 2599 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2599: avg_loss appended (2.7778)\n", - "Epoch 2599: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2599: accuracy appended (80.56%)\n", - "Epoch 2599: model set back to train mode\n", - "Epoch 2599: model parameters saved\n", - "Epoch 2600 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2600: avg_loss appended (2.7778)\n", - "Epoch 2600: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2600: accuracy appended (80.56%)\n", - "Epoch 2600: model set back to train mode\n", - "Epoch 2600: model parameters saved\n", - "Epoch 2600/10000, Loss: 2.7778, Accuracy: 80.56%\n", - "Epoch 2601 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2601: avg_loss appended (2.7778)\n", - "Epoch 2601: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2601: accuracy appended (80.56%)\n", - "Epoch 2601: model set back to train mode\n", - "Epoch 2601: model parameters saved\n", - "Epoch 2602 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2602: avg_loss appended (2.7778)\n", - "Epoch 2602: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2602: accuracy appended (80.56%)\n", - "Epoch 2602: model set back to train mode\n", - "Epoch 2602: model parameters saved\n", - "Epoch 2603 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2603: avg_loss appended (2.7778)\n", - "Epoch 2603: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2603: accuracy appended (80.56%)\n", - "Epoch 2603: model set back to train mode\n", - "Epoch 2603: model parameters saved\n", - "Epoch 2604 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2604: avg_loss appended (2.7778)\n", - "Epoch 2604: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2604: accuracy appended (80.56%)\n", - "Epoch 2604: model set back to train mode\n", - "Epoch 2604: model parameters saved\n", - "Epoch 2605 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2605: avg_loss appended (2.7778)\n", - "Epoch 2605: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2605: accuracy appended (80.56%)\n", - "Epoch 2605: model set back to train mode\n", - "Epoch 2605: model parameters saved\n", - "Epoch 2606 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2606: avg_loss appended (2.7778)\n", - "Epoch 2606: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2606: accuracy appended (80.56%)\n", - "Epoch 2606: model set back to train mode\n", - "Epoch 2606: model parameters saved\n", - "Epoch 2607 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2607: avg_loss appended (2.7778)\n", - "Epoch 2607: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2607: accuracy appended (80.56%)\n", - "Epoch 2607: model set back to train mode\n", - "Epoch 2607: model parameters saved\n", - "Epoch 2608 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2608: avg_loss appended (2.7778)\n", - "Epoch 2608: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2608: accuracy appended (80.56%)\n", - "Epoch 2608: model set back to train mode\n", - "Epoch 2608: model parameters saved\n", - "Epoch 2609 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2609: avg_loss appended (2.7778)\n", - "Epoch 2609: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2609: accuracy appended (80.56%)\n", - "Epoch 2609: model set back to train mode\n", - "Epoch 2609: model parameters saved\n", - "Epoch 2610 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2610: avg_loss appended (2.7778)\n", - "Epoch 2610: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2610: accuracy appended (80.56%)\n", - "Epoch 2610: model set back to train mode\n", - "Epoch 2610: model parameters saved\n", - "Epoch 2611 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2611: avg_loss appended (2.7778)\n", - "Epoch 2611: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2611: accuracy appended (80.56%)\n", - "Epoch 2611: model set back to train mode\n", - "Epoch 2611: model parameters saved\n", - "Epoch 2612 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2612: avg_loss appended (2.7778)\n", - "Epoch 2612: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2612: accuracy appended (80.56%)\n", - "Epoch 2612: model set back to train mode\n", - "Epoch 2612: model parameters saved\n", - "Epoch 2613 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2613: avg_loss appended (2.7778)\n", - "Epoch 2613: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2613: accuracy appended (80.56%)\n", - "Epoch 2613: model set back to train mode\n", - "Epoch 2613: model parameters saved\n", - "Epoch 2614 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2614: avg_loss appended (2.7778)\n", - "Epoch 2614: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2614: accuracy appended (80.56%)\n", - "Epoch 2614: model set back to train mode\n", - "Epoch 2614: model parameters saved\n", - "Epoch 2615 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2615: avg_loss appended (2.7778)\n", - "Epoch 2615: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2615: accuracy appended (80.56%)\n", - "Epoch 2615: model set back to train mode\n", - "Epoch 2615: model parameters saved\n", - "Epoch 2616 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2616: avg_loss appended (2.7778)\n", - "Epoch 2616: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2616: accuracy appended (80.56%)\n", - "Epoch 2616: model set back to train mode\n", - "Epoch 2616: model parameters saved\n", - "Epoch 2617 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2617: avg_loss appended (2.7778)\n", - "Epoch 2617: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2617: accuracy appended (80.56%)\n", - "Epoch 2617: model set back to train mode\n", - "Epoch 2617: model parameters saved\n", - "Epoch 2618 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2618: avg_loss appended (2.7778)\n", - "Epoch 2618: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2618: accuracy appended (80.56%)\n", - "Epoch 2618: model set back to train mode\n", - "Epoch 2618: model parameters saved\n", - "Epoch 2619 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2619: avg_loss appended (2.7778)\n", - "Epoch 2619: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2619: accuracy appended (80.56%)\n", - "Epoch 2619: model set back to train mode\n", - "Epoch 2619: model parameters saved\n", - "Epoch 2620 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2620: avg_loss appended (2.7778)\n", - "Epoch 2620: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2620: accuracy appended (80.56%)\n", - "Epoch 2620: model set back to train mode\n", - "Epoch 2620: model parameters saved\n", - "Epoch 2621 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2621: avg_loss appended (2.7778)\n", - "Epoch 2621: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2621: accuracy appended (80.56%)\n", - "Epoch 2621: model set back to train mode\n", - "Epoch 2621: model parameters saved\n", - "Epoch 2622 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2622: avg_loss appended (2.7778)\n", - "Epoch 2622: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2622: accuracy appended (80.56%)\n", - "Epoch 2622: model set back to train mode\n", - "Epoch 2622: model parameters saved\n", - "Epoch 2623 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2623: avg_loss appended (2.7778)\n", - "Epoch 2623: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2623: accuracy appended (80.56%)\n", - "Epoch 2623: model set back to train mode\n", - "Epoch 2623: model parameters saved\n", - "Epoch 2624 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2624: avg_loss appended (2.7778)\n", - "Epoch 2624: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2624: accuracy appended (80.56%)\n", - "Epoch 2624: model set back to train mode\n", - "Epoch 2624: model parameters saved\n", - "Epoch 2625 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2625: avg_loss appended (2.7778)\n", - "Epoch 2625: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2625: accuracy appended (80.56%)\n", - "Epoch 2625: model set back to train mode\n", - "Epoch 2625: model parameters saved\n", - "Epoch 2626 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2626: avg_loss appended (2.7778)\n", - "Epoch 2626: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2626: accuracy appended (80.56%)\n", - "Epoch 2626: model set back to train mode\n", - "Epoch 2626: model parameters saved\n", - "Epoch 2627 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2627: avg_loss appended (2.7778)\n", - "Epoch 2627: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2627: accuracy appended (80.56%)\n", - "Epoch 2627: model set back to train mode\n", - "Epoch 2627: model parameters saved\n", - "Epoch 2628 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2628: avg_loss appended (2.7778)\n", - "Epoch 2628: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2628: accuracy appended (80.56%)\n", - "Epoch 2628: model set back to train mode\n", - "Epoch 2628: model parameters saved\n", - "Epoch 2629 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2629: avg_loss appended (2.7778)\n", - "Epoch 2629: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2629: accuracy appended (80.56%)\n", - "Epoch 2629: model set back to train mode\n", - "Epoch 2629: model parameters saved\n", - "Epoch 2630 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2630: avg_loss appended (2.7778)\n", - "Epoch 2630: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2630: accuracy appended (80.56%)\n", - "Epoch 2630: model set back to train mode\n", - "Epoch 2630: model parameters saved\n", - "Epoch 2631 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2631: avg_loss appended (2.7778)\n", - "Epoch 2631: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2631: accuracy appended (80.56%)\n", - "Epoch 2631: model set back to train mode\n", - "Epoch 2631: model parameters saved\n", - "Epoch 2632 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2632: avg_loss appended (2.7778)\n", - "Epoch 2632: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2632: accuracy appended (80.56%)\n", - "Epoch 2632: model set back to train mode\n", - "Epoch 2632: model parameters saved\n", - "Epoch 2633 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2633: avg_loss appended (2.7778)\n", - "Epoch 2633: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2633: accuracy appended (80.56%)\n", - "Epoch 2633: model set back to train mode\n", - "Epoch 2633: model parameters saved\n", - "Epoch 2634 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2634: avg_loss appended (2.7778)\n", - "Epoch 2634: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2634: accuracy appended (80.56%)\n", - "Epoch 2634: model set back to train mode\n", - "Epoch 2634: model parameters saved\n", - "Epoch 2635 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2635: avg_loss appended (2.7778)\n", - "Epoch 2635: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2635: accuracy appended (80.56%)\n", - "Epoch 2635: model set back to train mode\n", - "Epoch 2635: model parameters saved\n", - "Epoch 2636 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2636: avg_loss appended (2.7778)\n", - "Epoch 2636: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2636: accuracy appended (80.56%)\n", - "Epoch 2636: model set back to train mode\n", - "Epoch 2636: model parameters saved\n", - "Epoch 2637 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2637: avg_loss appended (2.7778)\n", - "Epoch 2637: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2637: accuracy appended (80.56%)\n", - "Epoch 2637: model set back to train mode\n", - "Epoch 2637: model parameters saved\n", - "Epoch 2638 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2638: avg_loss appended (2.7778)\n", - "Epoch 2638: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2638: accuracy appended (80.56%)\n", - "Epoch 2638: model set back to train mode\n", - "Epoch 2638: model parameters saved\n", - "Epoch 2639 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2639: avg_loss appended (2.7778)\n", - "Epoch 2639: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2639: accuracy appended (80.56%)\n", - "Epoch 2639: model set back to train mode\n", - "Epoch 2639: model parameters saved\n", - "Epoch 2640 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2640: avg_loss appended (2.7778)\n", - "Epoch 2640: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2640: accuracy appended (80.56%)\n", - "Epoch 2640: model set back to train mode\n", - "Epoch 2640: model parameters saved\n", - "Epoch 2641 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2641: avg_loss appended (2.7778)\n", - "Epoch 2641: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2641: accuracy appended (80.56%)\n", - "Epoch 2641: model set back to train mode\n", - "Epoch 2641: model parameters saved\n", - "Epoch 2642 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2642: avg_loss appended (2.7778)\n", - "Epoch 2642: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2642: accuracy appended (80.56%)\n", - "Epoch 2642: model set back to train mode\n", - "Epoch 2642: model parameters saved\n", - "Epoch 2643 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2643: avg_loss appended (2.7778)\n", - "Epoch 2643: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2643: accuracy appended (80.56%)\n", - "Epoch 2643: model set back to train mode\n", - "Epoch 2643: model parameters saved\n", - "Epoch 2644 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2644: avg_loss appended (2.7778)\n", - "Epoch 2644: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2644: accuracy appended (80.56%)\n", - "Epoch 2644: model set back to train mode\n", - "Epoch 2644: model parameters saved\n", - "Epoch 2645 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2645: avg_loss appended (2.7778)\n", - "Epoch 2645: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2645: accuracy appended (80.56%)\n", - "Epoch 2645: model set back to train mode\n", - "Epoch 2645: model parameters saved\n", - "Epoch 2646 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2646: avg_loss appended (2.7778)\n", - "Epoch 2646: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2646: accuracy appended (80.56%)\n", - "Epoch 2646: model set back to train mode\n", - "Epoch 2646: model parameters saved\n", - "Epoch 2647 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2647: avg_loss appended (2.7778)\n", - "Epoch 2647: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2647: accuracy appended (80.56%)\n", - "Epoch 2647: model set back to train mode\n", - "Epoch 2647: model parameters saved\n", - "Epoch 2648 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2648: avg_loss appended (2.7778)\n", - "Epoch 2648: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2648: accuracy appended (80.56%)\n", - "Epoch 2648: model set back to train mode\n", - "Epoch 2648: model parameters saved\n", - "Epoch 2649 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2649: avg_loss appended (2.7778)\n", - "Epoch 2649: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2649: accuracy appended (80.56%)\n", - "Epoch 2649: model set back to train mode\n", - "Epoch 2649: model parameters saved\n", - "Epoch 2650 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2650: avg_loss appended (2.7778)\n", - "Epoch 2650: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2650: accuracy appended (80.56%)\n", - "Epoch 2650: model set back to train mode\n", - "Epoch 2650: model parameters saved\n", - "Epoch 2651 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2651: avg_loss appended (2.7778)\n", - "Epoch 2651: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2651: accuracy appended (80.56%)\n", - "Epoch 2651: model set back to train mode\n", - "Epoch 2651: model parameters saved\n", - "Epoch 2652 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2652: avg_loss appended (2.7778)\n", - "Epoch 2652: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2652: accuracy appended (80.56%)\n", - "Epoch 2652: model set back to train mode\n", - "Epoch 2652: model parameters saved\n", - "Epoch 2653 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2653: avg_loss appended (2.7778)\n", - "Epoch 2653: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2653: accuracy appended (80.56%)\n", - "Epoch 2653: model set back to train mode\n", - "Epoch 2653: model parameters saved\n", - "Epoch 2654 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2654: avg_loss appended (2.7778)\n", - "Epoch 2654: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2654: accuracy appended (80.56%)\n", - "Epoch 2654: model set back to train mode\n", - "Epoch 2654: model parameters saved\n", - "Epoch 2655 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2655: avg_loss appended (2.7778)\n", - "Epoch 2655: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2655: accuracy appended (80.56%)\n", - "Epoch 2655: model set back to train mode\n", - "Epoch 2655: model parameters saved\n", - "Epoch 2656 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2656: avg_loss appended (2.7778)\n", - "Epoch 2656: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2656: accuracy appended (80.56%)\n", - "Epoch 2656: model set back to train mode\n", - "Epoch 2656: model parameters saved\n", - "Epoch 2657 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2657: avg_loss appended (2.7778)\n", - "Epoch 2657: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2657: accuracy appended (80.56%)\n", - "Epoch 2657: model set back to train mode\n", - "Epoch 2657: model parameters saved\n", - "Epoch 2658 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2658: avg_loss appended (2.7778)\n", - "Epoch 2658: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2658: accuracy appended (80.56%)\n", - "Epoch 2658: model set back to train mode\n", - "Epoch 2658: model parameters saved\n", - "Epoch 2659 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2659: avg_loss appended (2.7778)\n", - "Epoch 2659: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2659: accuracy appended (80.56%)\n", - "Epoch 2659: model set back to train mode\n", - "Epoch 2659: model parameters saved\n", - "Epoch 2660 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2660: avg_loss appended (2.7778)\n", - "Epoch 2660: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2660: accuracy appended (80.56%)\n", - "Epoch 2660: model set back to train mode\n", - "Epoch 2660: model parameters saved\n", - "Epoch 2661 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2661: avg_loss appended (2.7778)\n", - "Epoch 2661: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2661: accuracy appended (80.56%)\n", - "Epoch 2661: model set back to train mode\n", - "Epoch 2661: model parameters saved\n", - "Epoch 2662 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2662: avg_loss appended (2.7778)\n", - "Epoch 2662: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2662: accuracy appended (80.56%)\n", - "Epoch 2662: model set back to train mode\n", - "Epoch 2662: model parameters saved\n", - "Epoch 2663 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2663: avg_loss appended (2.7778)\n", - "Epoch 2663: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2663: accuracy appended (80.56%)\n", - "Epoch 2663: model set back to train mode\n", - "Epoch 2663: model parameters saved\n", - "Epoch 2664 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2664: avg_loss appended (2.7778)\n", - "Epoch 2664: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2664: accuracy appended (80.56%)\n", - "Epoch 2664: model set back to train mode\n", - "Epoch 2664: model parameters saved\n", - "Epoch 2665 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2665: avg_loss appended (2.7778)\n", - "Epoch 2665: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2665: accuracy appended (80.56%)\n", - "Epoch 2665: model set back to train mode\n", - "Epoch 2665: model parameters saved\n", - "Epoch 2666 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2666: avg_loss appended (2.7778)\n", - "Epoch 2666: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2666: accuracy appended (80.56%)\n", - "Epoch 2666: model set back to train mode\n", - "Epoch 2666: model parameters saved\n", - "Epoch 2667 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2667: avg_loss appended (2.7778)\n", - "Epoch 2667: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2667: accuracy appended (80.56%)\n", - "Epoch 2667: model set back to train mode\n", - "Epoch 2667: model parameters saved\n", - "Epoch 2668 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2668: avg_loss appended (2.7778)\n", - "Epoch 2668: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2668: accuracy appended (80.56%)\n", - "Epoch 2668: model set back to train mode\n", - "Epoch 2668: model parameters saved\n", - "Epoch 2669 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2669: avg_loss appended (2.7778)\n", - "Epoch 2669: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2669: accuracy appended (80.56%)\n", - "Epoch 2669: model set back to train mode\n", - "Epoch 2669: model parameters saved\n", - "Epoch 2670 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2670: avg_loss appended (2.7778)\n", - "Epoch 2670: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2670: accuracy appended (80.56%)\n", - "Epoch 2670: model set back to train mode\n", - "Epoch 2670: model parameters saved\n", - "Epoch 2671 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2671: avg_loss appended (2.7778)\n", - "Epoch 2671: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2671: accuracy appended (80.56%)\n", - "Epoch 2671: model set back to train mode\n", - "Epoch 2671: model parameters saved\n", - "Epoch 2672 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2672: avg_loss appended (2.7778)\n", - "Epoch 2672: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2672: accuracy appended (80.56%)\n", - "Epoch 2672: model set back to train mode\n", - "Epoch 2672: model parameters saved\n", - "Epoch 2673 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2673: avg_loss appended (2.7778)\n", - "Epoch 2673: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2673: accuracy appended (80.56%)\n", - "Epoch 2673: model set back to train mode\n", - "Epoch 2673: model parameters saved\n", - "Epoch 2674 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2674: avg_loss appended (2.7778)\n", - "Epoch 2674: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2674: accuracy appended (80.56%)\n", - "Epoch 2674: model set back to train mode\n", - "Epoch 2674: model parameters saved\n", - "Epoch 2675 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2675: avg_loss appended (2.7778)\n", - "Epoch 2675: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2675: accuracy appended (80.56%)\n", - "Epoch 2675: model set back to train mode\n", - "Epoch 2675: model parameters saved\n", - "Epoch 2676 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2676: avg_loss appended (2.7778)\n", - "Epoch 2676: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2676: accuracy appended (80.56%)\n", - "Epoch 2676: model set back to train mode\n", - "Epoch 2676: model parameters saved\n", - "Epoch 2677 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2677: avg_loss appended (2.7778)\n", - "Epoch 2677: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2677: accuracy appended (80.56%)\n", - "Epoch 2677: model set back to train mode\n", - "Epoch 2677: model parameters saved\n", - "Epoch 2678 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2678: avg_loss appended (2.7778)\n", - "Epoch 2678: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2678: accuracy appended (80.56%)\n", - "Epoch 2678: model set back to train mode\n", - "Epoch 2678: model parameters saved\n", - "Epoch 2679 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2679: avg_loss appended (2.7778)\n", - "Epoch 2679: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2679: accuracy appended (80.56%)\n", - "Epoch 2679: model set back to train mode\n", - "Epoch 2679: model parameters saved\n", - "Epoch 2680 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2680: avg_loss appended (2.7778)\n", - "Epoch 2680: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2680: accuracy appended (80.56%)\n", - "Epoch 2680: model set back to train mode\n", - "Epoch 2680: model parameters saved\n", - "Epoch 2681 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2681: avg_loss appended (2.7778)\n", - "Epoch 2681: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2681: accuracy appended (80.56%)\n", - "Epoch 2681: model set back to train mode\n", - "Epoch 2681: model parameters saved\n", - "Epoch 2682 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2682: avg_loss appended (2.7778)\n", - "Epoch 2682: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2682: accuracy appended (80.56%)\n", - "Epoch 2682: model set back to train mode\n", - "Epoch 2682: model parameters saved\n", - "Epoch 2683 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2683: avg_loss appended (2.7778)\n", - "Epoch 2683: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2683: accuracy appended (80.56%)\n", - "Epoch 2683: model set back to train mode\n", - "Epoch 2683: model parameters saved\n", - "Epoch 2684 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2684: avg_loss appended (2.7778)\n", - "Epoch 2684: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2684: accuracy appended (80.56%)\n", - "Epoch 2684: model set back to train mode\n", - "Epoch 2684: model parameters saved\n", - "Epoch 2685 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2685: avg_loss appended (2.7778)\n", - "Epoch 2685: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2685: accuracy appended (80.56%)\n", - "Epoch 2685: model set back to train mode\n", - "Epoch 2685: model parameters saved\n", - "Epoch 2686 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2686: avg_loss appended (2.7778)\n", - "Epoch 2686: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2686: accuracy appended (80.56%)\n", - "Epoch 2686: model set back to train mode\n", - "Epoch 2686: model parameters saved\n", - "Epoch 2687 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2687: avg_loss appended (2.7778)\n", - "Epoch 2687: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2687: accuracy appended (80.56%)\n", - "Epoch 2687: model set back to train mode\n", - "Epoch 2687: model parameters saved\n", - "Epoch 2688 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2688: avg_loss appended (2.7778)\n", - "Epoch 2688: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2688: accuracy appended (80.56%)\n", - "Epoch 2688: model set back to train mode\n", - "Epoch 2688: model parameters saved\n", - "Epoch 2689 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2689: avg_loss appended (2.7778)\n", - "Epoch 2689: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2689: accuracy appended (80.56%)\n", - "Epoch 2689: model set back to train mode\n", - "Epoch 2689: model parameters saved\n", - "Epoch 2690 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2690: avg_loss appended (2.7778)\n", - "Epoch 2690: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2690: accuracy appended (80.56%)\n", - "Epoch 2690: model set back to train mode\n", - "Epoch 2690: model parameters saved\n", - "Epoch 2691 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2691: avg_loss appended (2.7778)\n", - "Epoch 2691: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2691: accuracy appended (80.56%)\n", - "Epoch 2691: model set back to train mode\n", - "Epoch 2691: model parameters saved\n", - "Epoch 2692 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2692: avg_loss appended (2.7778)\n", - "Epoch 2692: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2692: accuracy appended (80.56%)\n", - "Epoch 2692: model set back to train mode\n", - "Epoch 2692: model parameters saved\n", - "Epoch 2693 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2693: avg_loss appended (2.7778)\n", - "Epoch 2693: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2693: accuracy appended (80.56%)\n", - "Epoch 2693: model set back to train mode\n", - "Epoch 2693: model parameters saved\n", - "Epoch 2694 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2694: avg_loss appended (2.7778)\n", - "Epoch 2694: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2694: accuracy appended (80.56%)\n", - "Epoch 2694: model set back to train mode\n", - "Epoch 2694: model parameters saved\n", - "Epoch 2695 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2695: avg_loss appended (2.7778)\n", - "Epoch 2695: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2695: accuracy appended (80.56%)\n", - "Epoch 2695: model set back to train mode\n", - "Epoch 2695: model parameters saved\n", - "Epoch 2696 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2696: avg_loss appended (2.7778)\n", - "Epoch 2696: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2696: accuracy appended (80.56%)\n", - "Epoch 2696: model set back to train mode\n", - "Epoch 2696: model parameters saved\n", - "Epoch 2697 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2697: avg_loss appended (2.7778)\n", - "Epoch 2697: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2697: accuracy appended (80.56%)\n", - "Epoch 2697: model set back to train mode\n", - "Epoch 2697: model parameters saved\n", - "Epoch 2698 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2698: avg_loss appended (2.7778)\n", - "Epoch 2698: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2698: accuracy appended (80.56%)\n", - "Epoch 2698: model set back to train mode\n", - "Epoch 2698: model parameters saved\n", - "Epoch 2699 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2699: avg_loss appended (2.7778)\n", - "Epoch 2699: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2699: accuracy appended (80.56%)\n", - "Epoch 2699: model set back to train mode\n", - "Epoch 2699: model parameters saved\n", - "Epoch 2700 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2700: avg_loss appended (2.7778)\n", - "Epoch 2700: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2700: accuracy appended (80.56%)\n", - "Epoch 2700: model set back to train mode\n", - "Epoch 2700: model parameters saved\n", - "Epoch 2700/10000, Loss: 2.7778, Accuracy: 80.56%\n", - "Epoch 2701 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2701: avg_loss appended (2.7778)\n", - "Epoch 2701: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2701: accuracy appended (80.56%)\n", - "Epoch 2701: model set back to train mode\n", - "Epoch 2701: model parameters saved\n", - "Epoch 2702 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2702: avg_loss appended (2.7778)\n", - "Epoch 2702: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2702: accuracy appended (80.56%)\n", - "Epoch 2702: model set back to train mode\n", - "Epoch 2702: model parameters saved\n", - "Epoch 2703 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2703: avg_loss appended (2.7778)\n", - "Epoch 2703: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2703: accuracy appended (80.56%)\n", - "Epoch 2703: model set back to train mode\n", - "Epoch 2703: model parameters saved\n", - "Epoch 2704 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2704: avg_loss appended (2.7778)\n", - "Epoch 2704: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2704: accuracy appended (80.56%)\n", - "Epoch 2704: model set back to train mode\n", - "Epoch 2704: model parameters saved\n", - "Epoch 2705 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2705: avg_loss appended (2.7778)\n", - "Epoch 2705: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2705: accuracy appended (80.56%)\n", - "Epoch 2705: model set back to train mode\n", - "Epoch 2705: model parameters saved\n", - "Epoch 2706 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2706: avg_loss appended (2.7778)\n", - "Epoch 2706: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2706: accuracy appended (80.56%)\n", - "Epoch 2706: model set back to train mode\n", - "Epoch 2706: model parameters saved\n", - "Epoch 2707 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2707: avg_loss appended (2.7778)\n", - "Epoch 2707: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2707: accuracy appended (80.56%)\n", - "Epoch 2707: model set back to train mode\n", - "Epoch 2707: model parameters saved\n", - "Epoch 2708 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2708: avg_loss appended (2.7778)\n", - "Epoch 2708: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2708: accuracy appended (80.56%)\n", - "Epoch 2708: model set back to train mode\n", - "Epoch 2708: model parameters saved\n", - "Epoch 2709 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2709: avg_loss appended (2.7778)\n", - "Epoch 2709: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2709: accuracy appended (80.56%)\n", - "Epoch 2709: model set back to train mode\n", - "Epoch 2709: model parameters saved\n", - "Epoch 2710 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2710: avg_loss appended (2.7778)\n", - "Epoch 2710: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2710: accuracy appended (80.56%)\n", - "Epoch 2710: model set back to train mode\n", - "Epoch 2710: model parameters saved\n", - "Epoch 2711 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2711: avg_loss appended (2.7778)\n", - "Epoch 2711: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2711: accuracy appended (80.56%)\n", - "Epoch 2711: model set back to train mode\n", - "Epoch 2711: model parameters saved\n", - "Epoch 2712 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2712: avg_loss appended (2.7778)\n", - "Epoch 2712: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2712: accuracy appended (80.56%)\n", - "Epoch 2712: model set back to train mode\n", - "Epoch 2712: model parameters saved\n", - "Epoch 2713 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2713: avg_loss appended (2.7778)\n", - "Epoch 2713: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2713: accuracy appended (80.56%)\n", - "Epoch 2713: model set back to train mode\n", - "Epoch 2713: model parameters saved\n", - "Epoch 2714 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2714: avg_loss appended (2.7778)\n", - "Epoch 2714: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2714: accuracy appended (80.56%)\n", - "Epoch 2714: model set back to train mode\n", - "Epoch 2714: model parameters saved\n", - "Epoch 2715 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2715: avg_loss appended (2.7778)\n", - "Epoch 2715: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2715: accuracy appended (80.56%)\n", - "Epoch 2715: model set back to train mode\n", - "Epoch 2715: model parameters saved\n", - "Epoch 2716 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2716: avg_loss appended (2.7778)\n", - "Epoch 2716: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2716: accuracy appended (80.56%)\n", - "Epoch 2716: model set back to train mode\n", - "Epoch 2716: model parameters saved\n", - "Epoch 2717 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2717: avg_loss appended (2.7778)\n", - "Epoch 2717: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2717: accuracy appended (80.56%)\n", - "Epoch 2717: model set back to train mode\n", - "Epoch 2717: model parameters saved\n", - "Epoch 2718 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2718: avg_loss appended (2.7778)\n", - "Epoch 2718: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2718: accuracy appended (80.56%)\n", - "Epoch 2718: model set back to train mode\n", - "Epoch 2718: model parameters saved\n", - "Epoch 2719 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2719: avg_loss appended (2.7778)\n", - "Epoch 2719: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2719: accuracy appended (80.56%)\n", - "Epoch 2719: model set back to train mode\n", - "Epoch 2719: model parameters saved\n", - "Epoch 2720 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2720: avg_loss appended (2.7778)\n", - "Epoch 2720: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2720: accuracy appended (80.56%)\n", - "Epoch 2720: model set back to train mode\n", - "Epoch 2720: model parameters saved\n", - "Epoch 2721 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2721: avg_loss appended (2.7778)\n", - "Epoch 2721: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2721: accuracy appended (80.56%)\n", - "Epoch 2721: model set back to train mode\n", - "Epoch 2721: model parameters saved\n", - "Epoch 2722 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2722: avg_loss appended (2.7778)\n", - "Epoch 2722: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2722: accuracy appended (80.56%)\n", - "Epoch 2722: model set back to train mode\n", - "Epoch 2722: model parameters saved\n", - "Epoch 2723 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2723: avg_loss appended (2.7778)\n", - "Epoch 2723: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2723: accuracy appended (80.56%)\n", - "Epoch 2723: model set back to train mode\n", - "Epoch 2723: model parameters saved\n", - "Epoch 2724 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2724: avg_loss appended (2.7778)\n", - "Epoch 2724: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2724: accuracy appended (80.56%)\n", - "Epoch 2724: model set back to train mode\n", - "Epoch 2724: model parameters saved\n", - "Epoch 2725 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2725: avg_loss appended (2.7778)\n", - "Epoch 2725: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2725: accuracy appended (80.56%)\n", - "Epoch 2725: model set back to train mode\n", - "Epoch 2725: model parameters saved\n", - "Epoch 2726 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2726: avg_loss appended (2.7778)\n", - "Epoch 2726: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2726: accuracy appended (80.56%)\n", - "Epoch 2726: model set back to train mode\n", - "Epoch 2726: model parameters saved\n", - "Epoch 2727 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2727: avg_loss appended (2.7778)\n", - "Epoch 2727: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2727: accuracy appended (80.56%)\n", - "Epoch 2727: model set back to train mode\n", - "Epoch 2727: model parameters saved\n", - "Epoch 2728 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2728: avg_loss appended (2.7778)\n", - "Epoch 2728: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2728: accuracy appended (80.56%)\n", - "Epoch 2728: model set back to train mode\n", - "Epoch 2728: model parameters saved\n", - "Epoch 2729 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2729: avg_loss appended (2.7778)\n", - "Epoch 2729: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2729: accuracy appended (80.56%)\n", - "Epoch 2729: model set back to train mode\n", - "Epoch 2729: model parameters saved\n", - "Epoch 2730 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2730: avg_loss appended (2.7778)\n", - "Epoch 2730: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2730: accuracy appended (80.56%)\n", - "Epoch 2730: model set back to train mode\n", - "Epoch 2730: model parameters saved\n", - "Epoch 2731 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2731: avg_loss appended (2.7778)\n", - "Epoch 2731: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2731: accuracy appended (80.56%)\n", - "Epoch 2731: model set back to train mode\n", - "Epoch 2731: model parameters saved\n", - "Epoch 2732 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2732: avg_loss appended (2.7778)\n", - "Epoch 2732: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2732: accuracy appended (80.56%)\n", - "Epoch 2732: model set back to train mode\n", - "Epoch 2732: model parameters saved\n", - "Epoch 2733 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2733: avg_loss appended (2.7778)\n", - "Epoch 2733: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2733: accuracy appended (80.56%)\n", - "Epoch 2733: model set back to train mode\n", - "Epoch 2733: model parameters saved\n", - "Epoch 2734 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2734: avg_loss appended (2.7778)\n", - "Epoch 2734: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2734: accuracy appended (80.56%)\n", - "Epoch 2734: model set back to train mode\n", - "Epoch 2734: model parameters saved\n", - "Epoch 2735 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2735: avg_loss appended (2.7778)\n", - "Epoch 2735: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2735: accuracy appended (80.56%)\n", - "Epoch 2735: model set back to train mode\n", - "Epoch 2735: model parameters saved\n", - "Epoch 2736 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2736: avg_loss appended (2.7778)\n", - "Epoch 2736: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2736: accuracy appended (80.56%)\n", - "Epoch 2736: model set back to train mode\n", - "Epoch 2736: model parameters saved\n", - "Epoch 2737 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2737: avg_loss appended (2.7778)\n", - "Epoch 2737: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2737: accuracy appended (80.56%)\n", - "Epoch 2737: model set back to train mode\n", - "Epoch 2737: model parameters saved\n", - "Epoch 2738 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2738: avg_loss appended (2.7778)\n", - "Epoch 2738: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2738: accuracy appended (80.56%)\n", - "Epoch 2738: model set back to train mode\n", - "Epoch 2738: model parameters saved\n", - "Epoch 2739 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2739: avg_loss appended (2.7778)\n", - "Epoch 2739: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2739: accuracy appended (80.56%)\n", - "Epoch 2739: model set back to train mode\n", - "Epoch 2739: model parameters saved\n", - "Epoch 2740 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2740: avg_loss appended (2.7778)\n", - "Epoch 2740: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2740: accuracy appended (80.56%)\n", - "Epoch 2740: model set back to train mode\n", - "Epoch 2740: model parameters saved\n", - "Epoch 2741 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2741: avg_loss appended (2.7778)\n", - "Epoch 2741: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2741: accuracy appended (80.56%)\n", - "Epoch 2741: model set back to train mode\n", - "Epoch 2741: model parameters saved\n", - "Epoch 2742 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2742: avg_loss appended (2.7778)\n", - "Epoch 2742: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2742: accuracy appended (80.56%)\n", - "Epoch 2742: model set back to train mode\n", - "Epoch 2742: model parameters saved\n", - "Epoch 2743 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2743: avg_loss appended (2.7778)\n", - "Epoch 2743: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2743: accuracy appended (80.56%)\n", - "Epoch 2743: model set back to train mode\n", - "Epoch 2743: model parameters saved\n", - "Epoch 2744 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2744: avg_loss appended (2.7778)\n", - "Epoch 2744: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2744: accuracy appended (80.56%)\n", - "Epoch 2744: model set back to train mode\n", - "Epoch 2744: model parameters saved\n", - "Epoch 2745 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2745: avg_loss appended (2.7778)\n", - "Epoch 2745: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2745: accuracy appended (80.56%)\n", - "Epoch 2745: model set back to train mode\n", - "Epoch 2745: model parameters saved\n", - "Epoch 2746 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2746: avg_loss appended (2.7778)\n", - "Epoch 2746: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2746: accuracy appended (80.56%)\n", - "Epoch 2746: model set back to train mode\n", - "Epoch 2746: model parameters saved\n", - "Epoch 2747 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2747: avg_loss appended (2.7778)\n", - "Epoch 2747: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2747: accuracy appended (80.56%)\n", - "Epoch 2747: model set back to train mode\n", - "Epoch 2747: model parameters saved\n", - "Epoch 2748 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2748: avg_loss appended (2.7778)\n", - "Epoch 2748: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2748: accuracy appended (80.56%)\n", - "Epoch 2748: model set back to train mode\n", - "Epoch 2748: model parameters saved\n", - "Epoch 2749 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2749: avg_loss appended (2.7778)\n", - "Epoch 2749: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2749: accuracy appended (80.56%)\n", - "Epoch 2749: model set back to train mode\n", - "Epoch 2749: model parameters saved\n", - "Epoch 2750 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2750: avg_loss appended (2.7778)\n", - "Epoch 2750: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2750: accuracy appended (80.56%)\n", - "Epoch 2750: model set back to train mode\n", - "Epoch 2750: model parameters saved\n", - "Epoch 2751 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2751: avg_loss appended (2.7778)\n", - "Epoch 2751: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2751: accuracy appended (80.56%)\n", - "Epoch 2751: model set back to train mode\n", - "Epoch 2751: model parameters saved\n", - "Epoch 2752 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2752: avg_loss appended (2.7778)\n", - "Epoch 2752: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2752: accuracy appended (80.56%)\n", - "Epoch 2752: model set back to train mode\n", - "Epoch 2752: model parameters saved\n", - "Epoch 2753 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2753: avg_loss appended (2.7778)\n", - "Epoch 2753: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2753: accuracy appended (80.56%)\n", - "Epoch 2753: model set back to train mode\n", - "Epoch 2753: model parameters saved\n", - "Epoch 2754 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2754: avg_loss appended (2.7778)\n", - "Epoch 2754: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2754: accuracy appended (80.56%)\n", - "Epoch 2754: model set back to train mode\n", - "Epoch 2754: model parameters saved\n", - "Epoch 2755 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2755: avg_loss appended (2.7778)\n", - "Epoch 2755: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2755: accuracy appended (80.56%)\n", - "Epoch 2755: model set back to train mode\n", - "Epoch 2755: model parameters saved\n", - "Epoch 2756 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2756: avg_loss appended (2.7778)\n", - "Epoch 2756: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2756: accuracy appended (80.56%)\n", - "Epoch 2756: model set back to train mode\n", - "Epoch 2756: model parameters saved\n", - "Epoch 2757 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2757: avg_loss appended (2.7778)\n", - "Epoch 2757: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2757: accuracy appended (80.56%)\n", - "Epoch 2757: model set back to train mode\n", - "Epoch 2757: model parameters saved\n", - "Epoch 2758 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2758: avg_loss appended (2.7778)\n", - "Epoch 2758: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2758: accuracy appended (80.56%)\n", - "Epoch 2758: model set back to train mode\n", - "Epoch 2758: model parameters saved\n", - "Epoch 2759 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2759: avg_loss appended (2.7778)\n", - "Epoch 2759: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2759: accuracy appended (80.56%)\n", - "Epoch 2759: model set back to train mode\n", - "Epoch 2759: model parameters saved\n", - "Epoch 2760 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2760: avg_loss appended (2.7778)\n", - "Epoch 2760: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2760: accuracy appended (80.56%)\n", - "Epoch 2760: model set back to train mode\n", - "Epoch 2760: model parameters saved\n", - "Epoch 2761 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2761: avg_loss appended (2.7778)\n", - "Epoch 2761: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2761: accuracy appended (80.56%)\n", - "Epoch 2761: model set back to train mode\n", - "Epoch 2761: model parameters saved\n", - "Epoch 2762 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2762: avg_loss appended (2.7778)\n", - "Epoch 2762: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2762: accuracy appended (80.56%)\n", - "Epoch 2762: model set back to train mode\n", - "Epoch 2762: model parameters saved\n", - "Epoch 2763 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2763: avg_loss appended (2.7778)\n", - "Epoch 2763: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2763: accuracy appended (80.56%)\n", - "Epoch 2763: model set back to train mode\n", - "Epoch 2763: model parameters saved\n", - "Epoch 2764 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2764: avg_loss appended (2.7778)\n", - "Epoch 2764: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2764: accuracy appended (80.56%)\n", - "Epoch 2764: model set back to train mode\n", - "Epoch 2764: model parameters saved\n", - "Epoch 2765 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2765: avg_loss appended (2.7778)\n", - "Epoch 2765: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2765: accuracy appended (80.56%)\n", - "Epoch 2765: model set back to train mode\n", - "Epoch 2765: model parameters saved\n", - "Epoch 2766 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2766: avg_loss appended (2.7778)\n", - "Epoch 2766: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2766: accuracy appended (80.56%)\n", - "Epoch 2766: model set back to train mode\n", - "Epoch 2766: model parameters saved\n", - "Epoch 2767 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2767: avg_loss appended (2.7778)\n", - "Epoch 2767: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2767: accuracy appended (80.56%)\n", - "Epoch 2767: model set back to train mode\n", - "Epoch 2767: model parameters saved\n", - "Epoch 2768 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2768: avg_loss appended (2.7778)\n", - "Epoch 2768: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2768: accuracy appended (80.56%)\n", - "Epoch 2768: model set back to train mode\n", - "Epoch 2768: model parameters saved\n", - "Epoch 2769 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2769: avg_loss appended (2.7778)\n", - "Epoch 2769: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2769: accuracy appended (80.56%)\n", - "Epoch 2769: model set back to train mode\n", - "Epoch 2769: model parameters saved\n", - "Epoch 2770 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2770: avg_loss appended (2.7778)\n", - "Epoch 2770: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2770: accuracy appended (80.56%)\n", - "Epoch 2770: model set back to train mode\n", - "Epoch 2770: model parameters saved\n", - "Epoch 2771 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2771: avg_loss appended (2.7778)\n", - "Epoch 2771: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2771: accuracy appended (80.56%)\n", - "Epoch 2771: model set back to train mode\n", - "Epoch 2771: model parameters saved\n", - "Epoch 2772 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2772: avg_loss appended (2.7778)\n", - "Epoch 2772: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2772: accuracy appended (80.56%)\n", - "Epoch 2772: model set back to train mode\n", - "Epoch 2772: model parameters saved\n", - "Epoch 2773 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2773: avg_loss appended (2.7778)\n", - "Epoch 2773: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2773: accuracy appended (80.56%)\n", - "Epoch 2773: model set back to train mode\n", - "Epoch 2773: model parameters saved\n", - "Epoch 2774 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2774: avg_loss appended (2.7778)\n", - "Epoch 2774: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2774: accuracy appended (80.56%)\n", - "Epoch 2774: model set back to train mode\n", - "Epoch 2774: model parameters saved\n", - "Epoch 2775 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2775: avg_loss appended (2.7778)\n", - "Epoch 2775: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2775: accuracy appended (80.56%)\n", - "Epoch 2775: model set back to train mode\n", - "Epoch 2775: model parameters saved\n", - "Epoch 2776 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2776: avg_loss appended (2.7778)\n", - "Epoch 2776: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2776: accuracy appended (80.56%)\n", - "Epoch 2776: model set back to train mode\n", - "Epoch 2776: model parameters saved\n", - "Epoch 2777 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2777: avg_loss appended (2.7778)\n", - "Epoch 2777: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2777: accuracy appended (80.56%)\n", - "Epoch 2777: model set back to train mode\n", - "Epoch 2777: model parameters saved\n", - "Epoch 2778 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2778: avg_loss appended (2.7778)\n", - "Epoch 2778: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2778: accuracy appended (80.56%)\n", - "Epoch 2778: model set back to train mode\n", - "Epoch 2778: model parameters saved\n", - "Epoch 2779 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2779: avg_loss appended (2.7778)\n", - "Epoch 2779: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2779: accuracy appended (80.56%)\n", - "Epoch 2779: model set back to train mode\n", - "Epoch 2779: model parameters saved\n", - "Epoch 2780 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2780: avg_loss appended (2.7778)\n", - "Epoch 2780: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2780: accuracy appended (80.56%)\n", - "Epoch 2780: model set back to train mode\n", - "Epoch 2780: model parameters saved\n", - "Epoch 2781 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2781: avg_loss appended (2.7778)\n", - "Epoch 2781: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2781: accuracy appended (80.56%)\n", - "Epoch 2781: model set back to train mode\n", - "Epoch 2781: model parameters saved\n", - "Epoch 2782 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2782: avg_loss appended (2.7778)\n", - "Epoch 2782: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2782: accuracy appended (80.56%)\n", - "Epoch 2782: model set back to train mode\n", - "Epoch 2782: model parameters saved\n", - "Epoch 2783 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2783: avg_loss appended (2.7778)\n", - "Epoch 2783: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2783: accuracy appended (80.56%)\n", - "Epoch 2783: model set back to train mode\n", - "Epoch 2783: model parameters saved\n", - "Epoch 2784 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2784: avg_loss appended (2.7778)\n", - "Epoch 2784: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2784: accuracy appended (80.56%)\n", - "Epoch 2784: model set back to train mode\n", - "Epoch 2784: model parameters saved\n", - "Epoch 2785 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2785: avg_loss appended (2.7778)\n", - "Epoch 2785: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2785: accuracy appended (80.56%)\n", - "Epoch 2785: model set back to train mode\n", - "Epoch 2785: model parameters saved\n", - "Epoch 2786 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2786: avg_loss appended (2.7778)\n", - "Epoch 2786: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2786: accuracy appended (80.56%)\n", - "Epoch 2786: model set back to train mode\n", - "Epoch 2786: model parameters saved\n", - "Epoch 2787 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2787: avg_loss appended (2.7778)\n", - "Epoch 2787: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2787: accuracy appended (80.56%)\n", - "Epoch 2787: model set back to train mode\n", - "Epoch 2787: model parameters saved\n", - "Epoch 2788 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2788: avg_loss appended (2.7778)\n", - "Epoch 2788: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2788: accuracy appended (80.56%)\n", - "Epoch 2788: model set back to train mode\n", - "Epoch 2788: model parameters saved\n", - "Epoch 2789 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2789: avg_loss appended (2.7778)\n", - "Epoch 2789: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2789: accuracy appended (80.56%)\n", - "Epoch 2789: model set back to train mode\n", - "Epoch 2789: model parameters saved\n", - "Epoch 2790 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2790: avg_loss appended (2.7778)\n", - "Epoch 2790: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2790: accuracy appended (80.56%)\n", - "Epoch 2790: model set back to train mode\n", - "Epoch 2790: model parameters saved\n", - "Epoch 2791 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2791: avg_loss appended (2.7778)\n", - "Epoch 2791: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2791: accuracy appended (80.56%)\n", - "Epoch 2791: model set back to train mode\n", - "Epoch 2791: model parameters saved\n", - "Epoch 2792 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2792: avg_loss appended (2.7778)\n", - "Epoch 2792: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2792: accuracy appended (80.56%)\n", - "Epoch 2792: model set back to train mode\n", - "Epoch 2792: model parameters saved\n", - "Epoch 2793 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2793: avg_loss appended (2.7778)\n", - "Epoch 2793: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2793: accuracy appended (80.56%)\n", - "Epoch 2793: model set back to train mode\n", - "Epoch 2793: model parameters saved\n", - "Epoch 2794 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2794: avg_loss appended (2.7778)\n", - "Epoch 2794: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2794: accuracy appended (80.56%)\n", - "Epoch 2794: model set back to train mode\n", - "Epoch 2794: model parameters saved\n", - "Epoch 2795 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2795: avg_loss appended (2.7778)\n", - "Epoch 2795: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2795: accuracy appended (80.56%)\n", - "Epoch 2795: model set back to train mode\n", - "Epoch 2795: model parameters saved\n", - "Epoch 2796 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2796: avg_loss appended (2.7778)\n", - "Epoch 2796: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2796: accuracy appended (80.56%)\n", - "Epoch 2796: model set back to train mode\n", - "Epoch 2796: model parameters saved\n", - "Epoch 2797 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2797: avg_loss appended (2.7778)\n", - "Epoch 2797: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2797: accuracy appended (80.56%)\n", - "Epoch 2797: model set back to train mode\n", - "Epoch 2797: model parameters saved\n", - "Epoch 2798 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2798: avg_loss appended (2.7778)\n", - "Epoch 2798: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2798: accuracy appended (80.56%)\n", - "Epoch 2798: model set back to train mode\n", - "Epoch 2798: model parameters saved\n", - "Epoch 2799 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2799: avg_loss appended (2.7778)\n", - "Epoch 2799: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2799: accuracy appended (80.56%)\n", - "Epoch 2799: model set back to train mode\n", - "Epoch 2799: model parameters saved\n", - "Epoch 2800 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2800: avg_loss appended (2.7778)\n", - "Epoch 2800: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2800: accuracy appended (80.56%)\n", - "Epoch 2800: model set back to train mode\n", - "Epoch 2800: model parameters saved\n", - "Epoch 2800/10000, Loss: 2.7778, Accuracy: 80.56%\n", - "Epoch 2801 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2801: avg_loss appended (2.7778)\n", - "Epoch 2801: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2801: accuracy appended (80.56%)\n", - "Epoch 2801: model set back to train mode\n", - "Epoch 2801: model parameters saved\n", - "Epoch 2802 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2802: avg_loss appended (2.7778)\n", - "Epoch 2802: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2802: accuracy appended (80.56%)\n", - "Epoch 2802: model set back to train mode\n", - "Epoch 2802: model parameters saved\n", - "Epoch 2803 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2803: avg_loss appended (2.7778)\n", - "Epoch 2803: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2803: accuracy appended (80.56%)\n", - "Epoch 2803: model set back to train mode\n", - "Epoch 2803: model parameters saved\n", - "Epoch 2804 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2804: avg_loss appended (2.7778)\n", - "Epoch 2804: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2804: accuracy appended (80.56%)\n", - "Epoch 2804: model set back to train mode\n", - "Epoch 2804: model parameters saved\n", - "Epoch 2805 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2805: avg_loss appended (2.7778)\n", - "Epoch 2805: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2805: accuracy appended (80.56%)\n", - "Epoch 2805: model set back to train mode\n", - "Epoch 2805: model parameters saved\n", - "Epoch 2806 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2806: avg_loss appended (2.7778)\n", - "Epoch 2806: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2806: accuracy appended (80.56%)\n", - "Epoch 2806: model set back to train mode\n", - "Epoch 2806: model parameters saved\n", - "Epoch 2807 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2807: avg_loss appended (2.7778)\n", - "Epoch 2807: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2807: accuracy appended (80.56%)\n", - "Epoch 2807: model set back to train mode\n", - "Epoch 2807: model parameters saved\n", - "Epoch 2808 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2808: avg_loss appended (2.7778)\n", - "Epoch 2808: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2808: accuracy appended (80.56%)\n", - "Epoch 2808: model set back to train mode\n", - "Epoch 2808: model parameters saved\n", - "Epoch 2809 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2809: avg_loss appended (2.7778)\n", - "Epoch 2809: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2809: accuracy appended (80.56%)\n", - "Epoch 2809: model set back to train mode\n", - "Epoch 2809: model parameters saved\n", - "Epoch 2810 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2810: avg_loss appended (2.7778)\n", - "Epoch 2810: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2810: accuracy appended (80.56%)\n", - "Epoch 2810: model set back to train mode\n", - "Epoch 2810: model parameters saved\n", - "Epoch 2811 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2811: avg_loss appended (2.7778)\n", - "Epoch 2811: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2811: accuracy appended (80.56%)\n", - "Epoch 2811: model set back to train mode\n", - "Epoch 2811: model parameters saved\n", - "Epoch 2812 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2812: avg_loss appended (2.7778)\n", - "Epoch 2812: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2812: accuracy appended (80.56%)\n", - "Epoch 2812: model set back to train mode\n", - "Epoch 2812: model parameters saved\n", - "Epoch 2813 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2813: avg_loss appended (2.7778)\n", - "Epoch 2813: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2813: accuracy appended (80.56%)\n", - "Epoch 2813: model set back to train mode\n", - "Epoch 2813: model parameters saved\n", - "Epoch 2814 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2814: avg_loss appended (2.7778)\n", - "Epoch 2814: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2814: accuracy appended (80.56%)\n", - "Epoch 2814: model set back to train mode\n", - "Epoch 2814: model parameters saved\n", - "Epoch 2815 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2815: avg_loss appended (2.7778)\n", - "Epoch 2815: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2815: accuracy appended (80.56%)\n", - "Epoch 2815: model set back to train mode\n", - "Epoch 2815: model parameters saved\n", - "Epoch 2816 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2816: avg_loss appended (2.7778)\n", - "Epoch 2816: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2816: accuracy appended (80.56%)\n", - "Epoch 2816: model set back to train mode\n", - "Epoch 2816: model parameters saved\n", - "Epoch 2817 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2817: avg_loss appended (2.7778)\n", - "Epoch 2817: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2817: accuracy appended (80.56%)\n", - "Epoch 2817: model set back to train mode\n", - "Epoch 2817: model parameters saved\n", - "Epoch 2818 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2818: avg_loss appended (2.7778)\n", - "Epoch 2818: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2818: accuracy appended (80.56%)\n", - "Epoch 2818: model set back to train mode\n", - "Epoch 2818: model parameters saved\n", - "Epoch 2819 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2819: avg_loss appended (2.7778)\n", - "Epoch 2819: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2819: accuracy appended (80.56%)\n", - "Epoch 2819: model set back to train mode\n", - "Epoch 2819: model parameters saved\n", - "Epoch 2820 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2820: avg_loss appended (2.7778)\n", - "Epoch 2820: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2820: accuracy appended (80.56%)\n", - "Epoch 2820: model set back to train mode\n", - "Epoch 2820: model parameters saved\n", - "Epoch 2821 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2821: avg_loss appended (2.7778)\n", - "Epoch 2821: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2821: accuracy appended (80.56%)\n", - "Epoch 2821: model set back to train mode\n", - "Epoch 2821: model parameters saved\n", - "Epoch 2822 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2822: avg_loss appended (2.7778)\n", - "Epoch 2822: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2822: accuracy appended (80.56%)\n", - "Epoch 2822: model set back to train mode\n", - "Epoch 2822: model parameters saved\n", - "Epoch 2823 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2823: avg_loss appended (2.7778)\n", - "Epoch 2823: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2823: accuracy appended (80.56%)\n", - "Epoch 2823: model set back to train mode\n", - "Epoch 2823: model parameters saved\n", - "Epoch 2824 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2824: avg_loss appended (2.7778)\n", - "Epoch 2824: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2824: accuracy appended (80.56%)\n", - "Epoch 2824: model set back to train mode\n", - "Epoch 2824: model parameters saved\n", - "Epoch 2825 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2825: avg_loss appended (2.7778)\n", - "Epoch 2825: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2825: accuracy appended (80.56%)\n", - "Epoch 2825: model set back to train mode\n", - "Epoch 2825: model parameters saved\n", - "Epoch 2826 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2826: avg_loss appended (2.7778)\n", - "Epoch 2826: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2826: accuracy appended (80.56%)\n", - "Epoch 2826: model set back to train mode\n", - "Epoch 2826: model parameters saved\n", - "Epoch 2827 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2827: avg_loss appended (2.7778)\n", - "Epoch 2827: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2827: accuracy appended (80.56%)\n", - "Epoch 2827: model set back to train mode\n", - "Epoch 2827: model parameters saved\n", - "Epoch 2828 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2828: avg_loss appended (2.7778)\n", - "Epoch 2828: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2828: accuracy appended (80.56%)\n", - "Epoch 2828: model set back to train mode\n", - "Epoch 2828: model parameters saved\n", - "Epoch 2829 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2829: avg_loss appended (2.7778)\n", - "Epoch 2829: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2829: accuracy appended (80.56%)\n", - "Epoch 2829: model set back to train mode\n", - "Epoch 2829: model parameters saved\n", - "Epoch 2830 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2830: avg_loss appended (2.7778)\n", - "Epoch 2830: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2830: accuracy appended (80.56%)\n", - "Epoch 2830: model set back to train mode\n", - "Epoch 2830: model parameters saved\n", - "Epoch 2831 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2831: avg_loss appended (2.7778)\n", - "Epoch 2831: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2831: accuracy appended (80.56%)\n", - "Epoch 2831: model set back to train mode\n", - "Epoch 2831: model parameters saved\n", - "Epoch 2832 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2832: avg_loss appended (2.7778)\n", - "Epoch 2832: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2832: accuracy appended (80.56%)\n", - "Epoch 2832: model set back to train mode\n", - "Epoch 2832: model parameters saved\n", - "Epoch 2833 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2833: avg_loss appended (2.7778)\n", - "Epoch 2833: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2833: accuracy appended (80.56%)\n", - "Epoch 2833: model set back to train mode\n", - "Epoch 2833: model parameters saved\n", - "Epoch 2834 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2834: avg_loss appended (2.7778)\n", - "Epoch 2834: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2834: accuracy appended (80.56%)\n", - "Epoch 2834: model set back to train mode\n", - "Epoch 2834: model parameters saved\n", - "Epoch 2835 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2835: avg_loss appended (2.7778)\n", - "Epoch 2835: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2835: accuracy appended (80.56%)\n", - "Epoch 2835: model set back to train mode\n", - "Epoch 2835: model parameters saved\n", - "Epoch 2836 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2836: avg_loss appended (2.7778)\n", - "Epoch 2836: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2836: accuracy appended (80.56%)\n", - "Epoch 2836: model set back to train mode\n", - "Epoch 2836: model parameters saved\n", - "Epoch 2837 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2837: avg_loss appended (2.7778)\n", - "Epoch 2837: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2837: accuracy appended (80.56%)\n", - "Epoch 2837: model set back to train mode\n", - "Epoch 2837: model parameters saved\n", - "Epoch 2838 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2838: avg_loss appended (2.7778)\n", - "Epoch 2838: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2838: accuracy appended (80.56%)\n", - "Epoch 2838: model set back to train mode\n", - "Epoch 2838: model parameters saved\n", - "Epoch 2839 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2839: avg_loss appended (2.7778)\n", - "Epoch 2839: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2839: accuracy appended (80.56%)\n", - "Epoch 2839: model set back to train mode\n", - "Epoch 2839: model parameters saved\n", - "Epoch 2840 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2840: avg_loss appended (2.7778)\n", - "Epoch 2840: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2840: accuracy appended (80.56%)\n", - "Epoch 2840: model set back to train mode\n", - "Epoch 2840: model parameters saved\n", - "Epoch 2841 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2841: avg_loss appended (2.7778)\n", - "Epoch 2841: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2841: accuracy appended (80.56%)\n", - "Epoch 2841: model set back to train mode\n", - "Epoch 2841: model parameters saved\n", - "Epoch 2842 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2842: avg_loss appended (2.7778)\n", - "Epoch 2842: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2842: accuracy appended (80.56%)\n", - "Epoch 2842: model set back to train mode\n", - "Epoch 2842: model parameters saved\n", - "Epoch 2843 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2843: avg_loss appended (2.7778)\n", - "Epoch 2843: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2843: accuracy appended (80.56%)\n", - "Epoch 2843: model set back to train mode\n", - "Epoch 2843: model parameters saved\n", - "Epoch 2844 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2844: avg_loss appended (2.7778)\n", - "Epoch 2844: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2844: accuracy appended (80.56%)\n", - "Epoch 2844: model set back to train mode\n", - "Epoch 2844: model parameters saved\n", - "Epoch 2845 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2845: avg_loss appended (2.7778)\n", - "Epoch 2845: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2845: accuracy appended (80.56%)\n", - "Epoch 2845: model set back to train mode\n", - "Epoch 2845: model parameters saved\n", - "Epoch 2846 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2846: avg_loss appended (2.7778)\n", - "Epoch 2846: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2846: accuracy appended (80.56%)\n", - "Epoch 2846: model set back to train mode\n", - "Epoch 2846: model parameters saved\n", - "Epoch 2847 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2847: avg_loss appended (2.7778)\n", - "Epoch 2847: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2847: accuracy appended (80.56%)\n", - "Epoch 2847: model set back to train mode\n", - "Epoch 2847: model parameters saved\n", - "Epoch 2848 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2848: avg_loss appended (2.7778)\n", - "Epoch 2848: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2848: accuracy appended (80.56%)\n", - "Epoch 2848: model set back to train mode\n", - "Epoch 2848: model parameters saved\n", - "Epoch 2849 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2849: avg_loss appended (2.7778)\n", - "Epoch 2849: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2849: accuracy appended (80.56%)\n", - "Epoch 2849: model set back to train mode\n", - "Epoch 2849: model parameters saved\n", - "Epoch 2850 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2850: avg_loss appended (2.7778)\n", - "Epoch 2850: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2850: accuracy appended (80.56%)\n", - "Epoch 2850: model set back to train mode\n", - "Epoch 2850: model parameters saved\n", - "Epoch 2851 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2851: avg_loss appended (2.7778)\n", - "Epoch 2851: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2851: accuracy appended (80.56%)\n", - "Epoch 2851: model set back to train mode\n", - "Epoch 2851: model parameters saved\n", - "Epoch 2852 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2852: avg_loss appended (2.7778)\n", - "Epoch 2852: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2852: accuracy appended (80.56%)\n", - "Epoch 2852: model set back to train mode\n", - "Epoch 2852: model parameters saved\n", - "Epoch 2853 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2853: avg_loss appended (2.7778)\n", - "Epoch 2853: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2853: accuracy appended (80.56%)\n", - "Epoch 2853: model set back to train mode\n", - "Epoch 2853: model parameters saved\n", - "Epoch 2854 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2854: avg_loss appended (2.7778)\n", - "Epoch 2854: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2854: accuracy appended (80.56%)\n", - "Epoch 2854: model set back to train mode\n", - "Epoch 2854: model parameters saved\n", - "Epoch 2855 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2855: avg_loss appended (2.7778)\n", - "Epoch 2855: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2855: accuracy appended (80.56%)\n", - "Epoch 2855: model set back to train mode\n", - "Epoch 2855: model parameters saved\n", - "Epoch 2856 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2856: avg_loss appended (2.7778)\n", - "Epoch 2856: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2856: accuracy appended (80.56%)\n", - "Epoch 2856: model set back to train mode\n", - "Epoch 2856: model parameters saved\n", - "Epoch 2857 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2857: avg_loss appended (2.7778)\n", - "Epoch 2857: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2857: accuracy appended (80.56%)\n", - "Epoch 2857: model set back to train mode\n", - "Epoch 2857: model parameters saved\n", - "Epoch 2858 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2858: avg_loss appended (2.7778)\n", - "Epoch 2858: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2858: accuracy appended (80.56%)\n", - "Epoch 2858: model set back to train mode\n", - "Epoch 2858: model parameters saved\n", - "Epoch 2859 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2859: avg_loss appended (2.7778)\n", - "Epoch 2859: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2859: accuracy appended (80.56%)\n", - "Epoch 2859: model set back to train mode\n", - "Epoch 2859: model parameters saved\n", - "Epoch 2860 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2860: avg_loss appended (2.7778)\n", - "Epoch 2860: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2860: accuracy appended (80.56%)\n", - "Epoch 2860: model set back to train mode\n", - "Epoch 2860: model parameters saved\n", - "Epoch 2861 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2861: avg_loss appended (2.7778)\n", - "Epoch 2861: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2861: accuracy appended (80.56%)\n", - "Epoch 2861: model set back to train mode\n", - "Epoch 2861: model parameters saved\n", - "Epoch 2862 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2862: avg_loss appended (2.7778)\n", - "Epoch 2862: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2862: accuracy appended (80.56%)\n", - "Epoch 2862: model set back to train mode\n", - "Epoch 2862: model parameters saved\n", - "Epoch 2863 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2863: avg_loss appended (2.7778)\n", - "Epoch 2863: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2863: accuracy appended (80.56%)\n", - "Epoch 2863: model set back to train mode\n", - "Epoch 2863: model parameters saved\n", - "Epoch 2864 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2864: avg_loss appended (2.7778)\n", - "Epoch 2864: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2864: accuracy appended (80.56%)\n", - "Epoch 2864: model set back to train mode\n", - "Epoch 2864: model parameters saved\n", - "Epoch 2865 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2865: avg_loss appended (2.7778)\n", - "Epoch 2865: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2865: accuracy appended (80.56%)\n", - "Epoch 2865: model set back to train mode\n", - "Epoch 2865: model parameters saved\n", - "Epoch 2866 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2866: avg_loss appended (2.7778)\n", - "Epoch 2866: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2866: accuracy appended (80.56%)\n", - "Epoch 2866: model set back to train mode\n", - "Epoch 2866: model parameters saved\n", - "Epoch 2867 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2867: avg_loss appended (2.7778)\n", - "Epoch 2867: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2867: accuracy appended (80.56%)\n", - "Epoch 2867: model set back to train mode\n", - "Epoch 2867: model parameters saved\n", - "Epoch 2868 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2868: avg_loss appended (2.7778)\n", - "Epoch 2868: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2868: accuracy appended (80.56%)\n", - "Epoch 2868: model set back to train mode\n", - "Epoch 2868: model parameters saved\n", - "Epoch 2869 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2869: avg_loss appended (2.7778)\n", - "Epoch 2869: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2869: accuracy appended (80.56%)\n", - "Epoch 2869: model set back to train mode\n", - "Epoch 2869: model parameters saved\n", - "Epoch 2870 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2870: avg_loss appended (2.7778)\n", - "Epoch 2870: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2870: accuracy appended (80.56%)\n", - "Epoch 2870: model set back to train mode\n", - "Epoch 2870: model parameters saved\n", - "Epoch 2871 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2871: avg_loss appended (2.7778)\n", - "Epoch 2871: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2871: accuracy appended (80.56%)\n", - "Epoch 2871: model set back to train mode\n", - "Epoch 2871: model parameters saved\n", - "Epoch 2872 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2872: avg_loss appended (2.7778)\n", - "Epoch 2872: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2872: accuracy appended (80.56%)\n", - "Epoch 2872: model set back to train mode\n", - "Epoch 2872: model parameters saved\n", - "Epoch 2873 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2873: avg_loss appended (2.7778)\n", - "Epoch 2873: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2873: accuracy appended (80.56%)\n", - "Epoch 2873: model set back to train mode\n", - "Epoch 2873: model parameters saved\n", - "Epoch 2874 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2874: avg_loss appended (2.7778)\n", - "Epoch 2874: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2874: accuracy appended (80.56%)\n", - "Epoch 2874: model set back to train mode\n", - "Epoch 2874: model parameters saved\n", - "Epoch 2875 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2875: avg_loss appended (2.7778)\n", - "Epoch 2875: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2875: accuracy appended (80.56%)\n", - "Epoch 2875: model set back to train mode\n", - "Epoch 2875: model parameters saved\n", - "Epoch 2876 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2876: avg_loss appended (2.7778)\n", - "Epoch 2876: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2876: accuracy appended (80.56%)\n", - "Epoch 2876: model set back to train mode\n", - "Epoch 2876: model parameters saved\n", - "Epoch 2877 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2877: avg_loss appended (2.7778)\n", - "Epoch 2877: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2877: accuracy appended (80.56%)\n", - "Epoch 2877: model set back to train mode\n", - "Epoch 2877: model parameters saved\n", - "Epoch 2878 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2878: avg_loss appended (2.7778)\n", - "Epoch 2878: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2878: accuracy appended (80.56%)\n", - "Epoch 2878: model set back to train mode\n", - "Epoch 2878: model parameters saved\n", - "Epoch 2879 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2879: avg_loss appended (2.7778)\n", - "Epoch 2879: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2879: accuracy appended (80.56%)\n", - "Epoch 2879: model set back to train mode\n", - "Epoch 2879: model parameters saved\n", - "Epoch 2880 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2880: avg_loss appended (2.7778)\n", - "Epoch 2880: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2880: accuracy appended (80.56%)\n", - "Epoch 2880: model set back to train mode\n", - "Epoch 2880: model parameters saved\n", - "Epoch 2881 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2881: avg_loss appended (2.7778)\n", - "Epoch 2881: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2881: accuracy appended (80.56%)\n", - "Epoch 2881: model set back to train mode\n", - "Epoch 2881: model parameters saved\n", - "Epoch 2882 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2882: avg_loss appended (2.7778)\n", - "Epoch 2882: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2882: accuracy appended (80.56%)\n", - "Epoch 2882: model set back to train mode\n", - "Epoch 2882: model parameters saved\n", - "Epoch 2883 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2883: avg_loss appended (2.7778)\n", - "Epoch 2883: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2883: accuracy appended (80.56%)\n", - "Epoch 2883: model set back to train mode\n", - "Epoch 2883: model parameters saved\n", - "Epoch 2884 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2884: avg_loss appended (2.7778)\n", - "Epoch 2884: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2884: accuracy appended (80.56%)\n", - "Epoch 2884: model set back to train mode\n", - "Epoch 2884: model parameters saved\n", - "Epoch 2885 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2885: avg_loss appended (2.7778)\n", - "Epoch 2885: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2885: accuracy appended (80.56%)\n", - "Epoch 2885: model set back to train mode\n", - "Epoch 2885: model parameters saved\n", - "Epoch 2886 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2886: avg_loss appended (2.7778)\n", - "Epoch 2886: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2886: accuracy appended (80.56%)\n", - "Epoch 2886: model set back to train mode\n", - "Epoch 2886: model parameters saved\n", - "Epoch 2887 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2887: avg_loss appended (2.7778)\n", - "Epoch 2887: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2887: accuracy appended (80.56%)\n", - "Epoch 2887: model set back to train mode\n", - "Epoch 2887: model parameters saved\n", - "Epoch 2888 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2888: avg_loss appended (2.7778)\n", - "Epoch 2888: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2888: accuracy appended (80.56%)\n", - "Epoch 2888: model set back to train mode\n", - "Epoch 2888: model parameters saved\n", - "Epoch 2889 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2889: avg_loss appended (2.7778)\n", - "Epoch 2889: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2889: accuracy appended (80.56%)\n", - "Epoch 2889: model set back to train mode\n", - "Epoch 2889: model parameters saved\n", - "Epoch 2890 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2890: avg_loss appended (2.7778)\n", - "Epoch 2890: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2890: accuracy appended (80.56%)\n", - "Epoch 2890: model set back to train mode\n", - "Epoch 2890: model parameters saved\n", - "Epoch 2891 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2891: avg_loss appended (2.7778)\n", - "Epoch 2891: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2891: accuracy appended (80.56%)\n", - "Epoch 2891: model set back to train mode\n", - "Epoch 2891: model parameters saved\n", - "Epoch 2892 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2892: avg_loss appended (2.7778)\n", - "Epoch 2892: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2892: accuracy appended (80.56%)\n", - "Epoch 2892: model set back to train mode\n", - "Epoch 2892: model parameters saved\n", - "Epoch 2893 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2893: avg_loss appended (2.7778)\n", - "Epoch 2893: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2893: accuracy appended (80.56%)\n", - "Epoch 2893: model set back to train mode\n", - "Epoch 2893: model parameters saved\n", - "Epoch 2894 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2894: avg_loss appended (2.7778)\n", - "Epoch 2894: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2894: accuracy appended (80.56%)\n", - "Epoch 2894: model set back to train mode\n", - "Epoch 2894: model parameters saved\n", - "Epoch 2895 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2895: avg_loss appended (2.7778)\n", - "Epoch 2895: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2895: accuracy appended (80.56%)\n", - "Epoch 2895: model set back to train mode\n", - "Epoch 2895: model parameters saved\n", - "Epoch 2896 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2896: avg_loss appended (2.7778)\n", - "Epoch 2896: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2896: accuracy appended (80.56%)\n", - "Epoch 2896: model set back to train mode\n", - "Epoch 2896: model parameters saved\n", - "Epoch 2897 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2897: avg_loss appended (2.7778)\n", - "Epoch 2897: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2897: accuracy appended (80.56%)\n", - "Epoch 2897: model set back to train mode\n", - "Epoch 2897: model parameters saved\n", - "Epoch 2898 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2898: avg_loss appended (2.7778)\n", - "Epoch 2898: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2898: accuracy appended (80.56%)\n", - "Epoch 2898: model set back to train mode\n", - "Epoch 2898: model parameters saved\n", - "Epoch 2899 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2899: avg_loss appended (2.7778)\n", - "Epoch 2899: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2899: accuracy appended (80.56%)\n", - "Epoch 2899: model set back to train mode\n", - "Epoch 2899: model parameters saved\n", - "Epoch 2900 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2900: avg_loss appended (2.7778)\n", - "Epoch 2900: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2900: accuracy appended (80.56%)\n", - "Epoch 2900: model set back to train mode\n", - "Epoch 2900: model parameters saved\n", - "Epoch 2900/10000, Loss: 2.7778, Accuracy: 80.56%\n", - "Epoch 2901 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2901: avg_loss appended (2.7778)\n", - "Epoch 2901: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2901: accuracy appended (80.56%)\n", - "Epoch 2901: model set back to train mode\n", - "Epoch 2901: model parameters saved\n", - "Epoch 2902 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2902: avg_loss appended (2.7778)\n", - "Epoch 2902: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2902: accuracy appended (80.56%)\n", - "Epoch 2902: model set back to train mode\n", - "Epoch 2902: model parameters saved\n", - "Epoch 2903 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2903: avg_loss appended (2.7778)\n", - "Epoch 2903: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2903: accuracy appended (80.56%)\n", - "Epoch 2903: model set back to train mode\n", - "Epoch 2903: model parameters saved\n", - "Epoch 2904 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2904: avg_loss appended (2.7778)\n", - "Epoch 2904: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2904: accuracy appended (80.56%)\n", - "Epoch 2904: model set back to train mode\n", - "Epoch 2904: model parameters saved\n", - "Epoch 2905 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2905: avg_loss appended (2.7778)\n", - "Epoch 2905: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2905: accuracy appended (80.56%)\n", - "Epoch 2905: model set back to train mode\n", - "Epoch 2905: model parameters saved\n", - "Epoch 2906 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2906: avg_loss appended (2.7778)\n", - "Epoch 2906: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2906: accuracy appended (80.56%)\n", - "Epoch 2906: model set back to train mode\n", - "Epoch 2906: model parameters saved\n", - "Epoch 2907 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2907: avg_loss appended (2.7778)\n", - "Epoch 2907: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2907: accuracy appended (80.56%)\n", - "Epoch 2907: model set back to train mode\n", - "Epoch 2907: model parameters saved\n", - "Epoch 2908 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2908: avg_loss appended (2.7778)\n", - "Epoch 2908: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2908: accuracy appended (80.56%)\n", - "Epoch 2908: model set back to train mode\n", - "Epoch 2908: model parameters saved\n", - "Epoch 2909 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2909: avg_loss appended (2.7778)\n", - "Epoch 2909: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2909: accuracy appended (80.56%)\n", - "Epoch 2909: model set back to train mode\n", - "Epoch 2909: model parameters saved\n", - "Epoch 2910 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2910: avg_loss appended (2.7778)\n", - "Epoch 2910: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2910: accuracy appended (80.56%)\n", - "Epoch 2910: model set back to train mode\n", - "Epoch 2910: model parameters saved\n", - "Epoch 2911 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2911: avg_loss appended (2.7778)\n", - "Epoch 2911: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2911: accuracy appended (80.56%)\n", - "Epoch 2911: model set back to train mode\n", - "Epoch 2911: model parameters saved\n", - "Epoch 2912 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2912: avg_loss appended (2.7778)\n", - "Epoch 2912: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2912: accuracy appended (80.56%)\n", - "Epoch 2912: model set back to train mode\n", - "Epoch 2912: model parameters saved\n", - "Epoch 2913 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2913: avg_loss appended (2.7778)\n", - "Epoch 2913: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2913: accuracy appended (80.56%)\n", - "Epoch 2913: model set back to train mode\n", - "Epoch 2913: model parameters saved\n", - "Epoch 2914 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2914: avg_loss appended (2.7778)\n", - "Epoch 2914: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2914: accuracy appended (80.56%)\n", - "Epoch 2914: model set back to train mode\n", - "Epoch 2914: model parameters saved\n", - "Epoch 2915 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2915: avg_loss appended (2.7778)\n", - "Epoch 2915: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2915: accuracy appended (80.56%)\n", - "Epoch 2915: model set back to train mode\n", - "Epoch 2915: model parameters saved\n", - "Epoch 2916 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2916: avg_loss appended (2.7778)\n", - "Epoch 2916: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2916: accuracy appended (80.56%)\n", - "Epoch 2916: model set back to train mode\n", - "Epoch 2916: model parameters saved\n", - "Epoch 2917 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2917: avg_loss appended (2.7778)\n", - "Epoch 2917: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2917: accuracy appended (80.56%)\n", - "Epoch 2917: model set back to train mode\n", - "Epoch 2917: model parameters saved\n", - "Epoch 2918 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2918: avg_loss appended (2.7778)\n", - "Epoch 2918: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2918: accuracy appended (80.56%)\n", - "Epoch 2918: model set back to train mode\n", - "Epoch 2918: model parameters saved\n", - "Epoch 2919 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2919: avg_loss appended (2.7778)\n", - "Epoch 2919: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2919: accuracy appended (80.56%)\n", - "Epoch 2919: model set back to train mode\n", - "Epoch 2919: model parameters saved\n", - "Epoch 2920 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2920: avg_loss appended (2.7778)\n", - "Epoch 2920: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2920: accuracy appended (80.56%)\n", - "Epoch 2920: model set back to train mode\n", - "Epoch 2920: model parameters saved\n", - "Epoch 2921 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2921: avg_loss appended (2.7778)\n", - "Epoch 2921: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2921: accuracy appended (80.56%)\n", - "Epoch 2921: model set back to train mode\n", - "Epoch 2921: model parameters saved\n", - "Epoch 2922 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2922: avg_loss appended (2.7778)\n", - "Epoch 2922: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2922: accuracy appended (80.56%)\n", - "Epoch 2922: model set back to train mode\n", - "Epoch 2922: model parameters saved\n", - "Epoch 2923 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2923: avg_loss appended (2.7778)\n", - "Epoch 2923: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2923: accuracy appended (80.56%)\n", - "Epoch 2923: model set back to train mode\n", - "Epoch 2923: model parameters saved\n", - "Epoch 2924 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2924: avg_loss appended (2.7778)\n", - "Epoch 2924: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2924: accuracy appended (80.56%)\n", - "Epoch 2924: model set back to train mode\n", - "Epoch 2924: model parameters saved\n", - "Epoch 2925 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2925: avg_loss appended (2.7778)\n", - "Epoch 2925: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2925: accuracy appended (80.56%)\n", - "Epoch 2925: model set back to train mode\n", - "Epoch 2925: model parameters saved\n", - "Epoch 2926 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2926: avg_loss appended (2.7778)\n", - "Epoch 2926: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2926: accuracy appended (80.56%)\n", - "Epoch 2926: model set back to train mode\n", - "Epoch 2926: model parameters saved\n", - "Epoch 2927 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2927: avg_loss appended (2.7778)\n", - "Epoch 2927: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2927: accuracy appended (80.56%)\n", - "Epoch 2927: model set back to train mode\n", - "Epoch 2927: model parameters saved\n", - "Epoch 2928 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2928: avg_loss appended (2.7778)\n", - "Epoch 2928: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2928: accuracy appended (80.56%)\n", - "Epoch 2928: model set back to train mode\n", - "Epoch 2928: model parameters saved\n", - "Epoch 2929 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2929: avg_loss appended (2.7778)\n", - "Epoch 2929: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2929: accuracy appended (80.56%)\n", - "Epoch 2929: model set back to train mode\n", - "Epoch 2929: model parameters saved\n", - "Epoch 2930 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2930: avg_loss appended (2.7778)\n", - "Epoch 2930: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2930: accuracy appended (80.56%)\n", - "Epoch 2930: model set back to train mode\n", - "Epoch 2930: model parameters saved\n", - "Epoch 2931 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2931: avg_loss appended (2.7778)\n", - "Epoch 2931: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2931: accuracy appended (80.56%)\n", - "Epoch 2931: model set back to train mode\n", - "Epoch 2931: model parameters saved\n", - "Epoch 2932 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2932: avg_loss appended (2.7778)\n", - "Epoch 2932: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2932: accuracy appended (80.56%)\n", - "Epoch 2932: model set back to train mode\n", - "Epoch 2932: model parameters saved\n", - "Epoch 2933 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2933: avg_loss appended (2.7778)\n", - "Epoch 2933: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2933: accuracy appended (80.56%)\n", - "Epoch 2933: model set back to train mode\n", - "Epoch 2933: model parameters saved\n", - "Epoch 2934 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2934: avg_loss appended (2.7778)\n", - "Epoch 2934: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2934: accuracy appended (80.56%)\n", - "Epoch 2934: model set back to train mode\n", - "Epoch 2934: model parameters saved\n", - "Epoch 2935 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2935: avg_loss appended (2.7778)\n", - "Epoch 2935: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2935: accuracy appended (80.56%)\n", - "Epoch 2935: model set back to train mode\n", - "Epoch 2935: model parameters saved\n", - "Epoch 2936 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2936: avg_loss appended (2.7778)\n", - "Epoch 2936: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2936: accuracy appended (80.56%)\n", - "Epoch 2936: model set back to train mode\n", - "Epoch 2936: model parameters saved\n", - "Epoch 2937 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2937: avg_loss appended (2.7778)\n", - "Epoch 2937: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2937: accuracy appended (80.56%)\n", - "Epoch 2937: model set back to train mode\n", - "Epoch 2937: model parameters saved\n", - "Epoch 2938 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2938: avg_loss appended (2.7778)\n", - "Epoch 2938: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2938: accuracy appended (80.56%)\n", - "Epoch 2938: model set back to train mode\n", - "Epoch 2938: model parameters saved\n", - "Epoch 2939 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2939: avg_loss appended (2.7778)\n", - "Epoch 2939: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2939: accuracy appended (80.56%)\n", - "Epoch 2939: model set back to train mode\n", - "Epoch 2939: model parameters saved\n", - "Epoch 2940 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2940: avg_loss appended (2.7778)\n", - "Epoch 2940: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2940: accuracy appended (80.56%)\n", - "Epoch 2940: model set back to train mode\n", - "Epoch 2940: model parameters saved\n", - "Epoch 2941 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2941: avg_loss appended (2.7778)\n", - "Epoch 2941: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2941: accuracy appended (80.56%)\n", - "Epoch 2941: model set back to train mode\n", - "Epoch 2941: model parameters saved\n", - "Epoch 2942 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2942: avg_loss appended (2.7778)\n", - "Epoch 2942: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2942: accuracy appended (80.56%)\n", - "Epoch 2942: model set back to train mode\n", - "Epoch 2942: model parameters saved\n", - "Epoch 2943 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2943: avg_loss appended (2.7778)\n", - "Epoch 2943: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2943: accuracy appended (80.56%)\n", - "Epoch 2943: model set back to train mode\n", - "Epoch 2943: model parameters saved\n", - "Epoch 2944 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2944: avg_loss appended (2.7778)\n", - "Epoch 2944: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2944: accuracy appended (80.56%)\n", - "Epoch 2944: model set back to train mode\n", - "Epoch 2944: model parameters saved\n", - "Epoch 2945 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2945: avg_loss appended (2.7778)\n", - "Epoch 2945: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2945: accuracy appended (80.56%)\n", - "Epoch 2945: model set back to train mode\n", - "Epoch 2945: model parameters saved\n", - "Epoch 2946 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2946: avg_loss appended (2.7778)\n", - "Epoch 2946: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2946: accuracy appended (80.56%)\n", - "Epoch 2946: model set back to train mode\n", - "Epoch 2946: model parameters saved\n", - "Epoch 2947 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2947: avg_loss appended (2.7778)\n", - "Epoch 2947: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2947: accuracy appended (80.56%)\n", - "Epoch 2947: model set back to train mode\n", - "Epoch 2947: model parameters saved\n", - "Epoch 2948 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2948: avg_loss appended (2.7778)\n", - "Epoch 2948: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2948: accuracy appended (80.56%)\n", - "Epoch 2948: model set back to train mode\n", - "Epoch 2948: model parameters saved\n", - "Epoch 2949 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2949: avg_loss appended (2.7778)\n", - "Epoch 2949: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2949: accuracy appended (80.56%)\n", - "Epoch 2949: model set back to train mode\n", - "Epoch 2949: model parameters saved\n", - "Epoch 2950 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2950: avg_loss appended (2.7778)\n", - "Epoch 2950: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2950: accuracy appended (80.56%)\n", - "Epoch 2950: model set back to train mode\n", - "Epoch 2950: model parameters saved\n", - "Epoch 2951 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2951: avg_loss appended (2.7778)\n", - "Epoch 2951: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2951: accuracy appended (80.56%)\n", - "Epoch 2951: model set back to train mode\n", - "Epoch 2951: model parameters saved\n", - "Epoch 2952 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2952: avg_loss appended (2.7778)\n", - "Epoch 2952: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2952: accuracy appended (80.56%)\n", - "Epoch 2952: model set back to train mode\n", - "Epoch 2952: model parameters saved\n", - "Epoch 2953 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2953: avg_loss appended (2.7778)\n", - "Epoch 2953: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2953: accuracy appended (80.56%)\n", - "Epoch 2953: model set back to train mode\n", - "Epoch 2953: model parameters saved\n", - "Epoch 2954 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2954: avg_loss appended (2.7778)\n", - "Epoch 2954: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2954: accuracy appended (80.56%)\n", - "Epoch 2954: model set back to train mode\n", - "Epoch 2954: model parameters saved\n", - "Epoch 2955 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2955: avg_loss appended (2.7778)\n", - "Epoch 2955: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2955: accuracy appended (80.56%)\n", - "Epoch 2955: model set back to train mode\n", - "Epoch 2955: model parameters saved\n", - "Epoch 2956 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2956: avg_loss appended (2.7778)\n", - "Epoch 2956: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2956: accuracy appended (80.56%)\n", - "Epoch 2956: model set back to train mode\n", - "Epoch 2956: model parameters saved\n", - "Epoch 2957 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2957: avg_loss appended (2.7778)\n", - "Epoch 2957: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2957: accuracy appended (80.56%)\n", - "Epoch 2957: model set back to train mode\n", - "Epoch 2957: model parameters saved\n", - "Epoch 2958 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2958: avg_loss appended (2.7778)\n", - "Epoch 2958: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2958: accuracy appended (80.56%)\n", - "Epoch 2958: model set back to train mode\n", - "Epoch 2958: model parameters saved\n", - "Epoch 2959 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2959: avg_loss appended (2.7778)\n", - "Epoch 2959: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2959: accuracy appended (80.56%)\n", - "Epoch 2959: model set back to train mode\n", - "Epoch 2959: model parameters saved\n", - "Epoch 2960 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2960: avg_loss appended (2.7778)\n", - "Epoch 2960: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2960: accuracy appended (80.56%)\n", - "Epoch 2960: model set back to train mode\n", - "Epoch 2960: model parameters saved\n", - "Epoch 2961 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2961: avg_loss appended (2.7778)\n", - "Epoch 2961: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2961: accuracy appended (80.56%)\n", - "Epoch 2961: model set back to train mode\n", - "Epoch 2961: model parameters saved\n", - "Epoch 2962 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2962: avg_loss appended (2.7778)\n", - "Epoch 2962: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2962: accuracy appended (80.56%)\n", - "Epoch 2962: model set back to train mode\n", - "Epoch 2962: model parameters saved\n", - "Epoch 2963 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2963: avg_loss appended (2.7778)\n", - "Epoch 2963: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2963: accuracy appended (80.56%)\n", - "Epoch 2963: model set back to train mode\n", - "Epoch 2963: model parameters saved\n", - "Epoch 2964 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2964: avg_loss appended (2.7778)\n", - "Epoch 2964: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2964: accuracy appended (80.56%)\n", - "Epoch 2964: model set back to train mode\n", - "Epoch 2964: model parameters saved\n", - "Epoch 2965 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2965: avg_loss appended (2.7778)\n", - "Epoch 2965: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2965: accuracy appended (80.56%)\n", - "Epoch 2965: model set back to train mode\n", - "Epoch 2965: model parameters saved\n", - "Epoch 2966 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2966: avg_loss appended (2.7778)\n", - "Epoch 2966: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2966: accuracy appended (80.56%)\n", - "Epoch 2966: model set back to train mode\n", - "Epoch 2966: model parameters saved\n", - "Epoch 2967 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2967: avg_loss appended (2.7778)\n", - "Epoch 2967: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2967: accuracy appended (80.56%)\n", - "Epoch 2967: model set back to train mode\n", - "Epoch 2967: model parameters saved\n", - "Epoch 2968 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2968: avg_loss appended (2.7778)\n", - "Epoch 2968: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2968: accuracy appended (80.56%)\n", - "Epoch 2968: model set back to train mode\n", - "Epoch 2968: model parameters saved\n", - "Epoch 2969 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2969: avg_loss appended (2.7778)\n", - "Epoch 2969: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2969: accuracy appended (80.56%)\n", - "Epoch 2969: model set back to train mode\n", - "Epoch 2969: model parameters saved\n", - "Epoch 2970 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2970: avg_loss appended (2.7778)\n", - "Epoch 2970: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2970: accuracy appended (80.56%)\n", - "Epoch 2970: model set back to train mode\n", - "Epoch 2970: model parameters saved\n", - "Epoch 2971 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2971: avg_loss appended (2.7778)\n", - "Epoch 2971: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2971: accuracy appended (80.56%)\n", - "Epoch 2971: model set back to train mode\n", - "Epoch 2971: model parameters saved\n", - "Epoch 2972 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2972: avg_loss appended (2.7778)\n", - "Epoch 2972: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2972: accuracy appended (80.56%)\n", - "Epoch 2972: model set back to train mode\n", - "Epoch 2972: model parameters saved\n", - "Epoch 2973 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2973: avg_loss appended (2.7778)\n", - "Epoch 2973: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2973: accuracy appended (80.56%)\n", - "Epoch 2973: model set back to train mode\n", - "Epoch 2973: model parameters saved\n", - "Epoch 2974 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2974: avg_loss appended (2.7778)\n", - "Epoch 2974: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2974: accuracy appended (80.56%)\n", - "Epoch 2974: model set back to train mode\n", - "Epoch 2974: model parameters saved\n", - "Epoch 2975 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2975: avg_loss appended (2.7778)\n", - "Epoch 2975: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2975: accuracy appended (80.56%)\n", - "Epoch 2975: model set back to train mode\n", - "Epoch 2975: model parameters saved\n", - "Epoch 2976 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2976: avg_loss appended (2.7778)\n", - "Epoch 2976: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2976: accuracy appended (80.56%)\n", - "Epoch 2976: model set back to train mode\n", - "Epoch 2976: model parameters saved\n", - "Epoch 2977 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2977: avg_loss appended (2.7778)\n", - "Epoch 2977: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2977: accuracy appended (80.56%)\n", - "Epoch 2977: model set back to train mode\n", - "Epoch 2977: model parameters saved\n", - "Epoch 2978 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2978: avg_loss appended (2.7778)\n", - "Epoch 2978: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2978: accuracy appended (80.56%)\n", - "Epoch 2978: model set back to train mode\n", - "Epoch 2978: model parameters saved\n", - "Epoch 2979 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2979: avg_loss appended (2.7778)\n", - "Epoch 2979: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2979: accuracy appended (80.56%)\n", - "Epoch 2979: model set back to train mode\n", - "Epoch 2979: model parameters saved\n", - "Epoch 2980 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2980: avg_loss appended (2.7778)\n", - "Epoch 2980: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2980: accuracy appended (80.56%)\n", - "Epoch 2980: model set back to train mode\n", - "Epoch 2980: model parameters saved\n", - "Epoch 2981 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2981: avg_loss appended (2.7778)\n", - "Epoch 2981: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2981: accuracy appended (80.56%)\n", - "Epoch 2981: model set back to train mode\n", - "Epoch 2981: model parameters saved\n", - "Epoch 2982 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2982: avg_loss appended (2.7778)\n", - "Epoch 2982: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2982: accuracy appended (80.56%)\n", - "Epoch 2982: model set back to train mode\n", - "Epoch 2982: model parameters saved\n", - "Epoch 2983 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2983: avg_loss appended (2.7778)\n", - "Epoch 2983: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2983: accuracy appended (80.56%)\n", - "Epoch 2983: model set back to train mode\n", - "Epoch 2983: model parameters saved\n", - "Epoch 2984 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2984: avg_loss appended (2.7778)\n", - "Epoch 2984: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2984: accuracy appended (80.56%)\n", - "Epoch 2984: model set back to train mode\n", - "Epoch 2984: model parameters saved\n", - "Epoch 2985 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2985: avg_loss appended (2.7778)\n", - "Epoch 2985: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2985: accuracy appended (80.56%)\n", - "Epoch 2985: model set back to train mode\n", - "Epoch 2985: model parameters saved\n", - "Epoch 2986 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2986: avg_loss appended (2.7778)\n", - "Epoch 2986: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2986: accuracy appended (80.56%)\n", - "Epoch 2986: model set back to train mode\n", - "Epoch 2986: model parameters saved\n", - "Epoch 2987 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2987: avg_loss appended (2.7778)\n", - "Epoch 2987: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2987: accuracy appended (80.56%)\n", - "Epoch 2987: model set back to train mode\n", - "Epoch 2987: model parameters saved\n", - "Epoch 2988 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2988: avg_loss appended (2.7778)\n", - "Epoch 2988: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2988: accuracy appended (80.56%)\n", - "Epoch 2988: model set back to train mode\n", - "Epoch 2988: model parameters saved\n", - "Epoch 2989 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2989: avg_loss appended (2.7778)\n", - "Epoch 2989: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2989: accuracy appended (80.56%)\n", - "Epoch 2989: model set back to train mode\n", - "Epoch 2989: model parameters saved\n", - "Epoch 2990 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2990: avg_loss appended (2.7778)\n", - "Epoch 2990: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2990: accuracy appended (80.56%)\n", - "Epoch 2990: model set back to train mode\n", - "Epoch 2990: model parameters saved\n", - "Epoch 2991 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2991: avg_loss appended (2.7778)\n", - "Epoch 2991: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2991: accuracy appended (80.56%)\n", - "Epoch 2991: model set back to train mode\n", - "Epoch 2991: model parameters saved\n", - "Epoch 2992 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2992: avg_loss appended (2.7778)\n", - "Epoch 2992: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2992: accuracy appended (80.56%)\n", - "Epoch 2992: model set back to train mode\n", - "Epoch 2992: model parameters saved\n", - "Epoch 2993 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2993: avg_loss appended (2.7778)\n", - "Epoch 2993: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2993: accuracy appended (80.56%)\n", - "Epoch 2993: model set back to train mode\n", - "Epoch 2993: model parameters saved\n", - "Epoch 2994 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2994: avg_loss appended (2.7778)\n", - "Epoch 2994: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2994: accuracy appended (80.56%)\n", - "Epoch 2994: model set back to train mode\n", - "Epoch 2994: model parameters saved\n", - "Epoch 2995 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2995: avg_loss appended (2.7778)\n", - "Epoch 2995: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2995: accuracy appended (80.56%)\n", - "Epoch 2995: model set back to train mode\n", - "Epoch 2995: model parameters saved\n", - "Epoch 2996 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2996: avg_loss appended (2.7778)\n", - "Epoch 2996: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2996: accuracy appended (80.56%)\n", - "Epoch 2996: model set back to train mode\n", - "Epoch 2996: model parameters saved\n", - "Epoch 2997 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2997: avg_loss appended (2.7778)\n", - "Epoch 2997: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2997: accuracy appended (80.56%)\n", - "Epoch 2997: model set back to train mode\n", - "Epoch 2997: model parameters saved\n", - "Epoch 2998 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2998: avg_loss appended (2.7778)\n", - "Epoch 2998: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2998: accuracy appended (80.56%)\n", - "Epoch 2998: model set back to train mode\n", - "Epoch 2998: model parameters saved\n", - "Epoch 2999 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 2999: avg_loss appended (2.7778)\n", - "Epoch 2999: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 2999: accuracy appended (80.56%)\n", - "Epoch 2999: model set back to train mode\n", - "Epoch 2999: model parameters saved\n", - "Epoch 3000 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3000: avg_loss appended (2.7778)\n", - "Epoch 3000: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3000: accuracy appended (80.56%)\n", - "Epoch 3000: model set back to train mode\n", - "Epoch 3000: model parameters saved\n", - "Epoch 3000/10000, Loss: 2.7778, Accuracy: 80.56%\n", - "Epoch 3000: checkpoint saved\n", - "Epoch 3001 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3001: avg_loss appended (2.7778)\n", - "Epoch 3001: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3001: accuracy appended (80.56%)\n", - "Epoch 3001: model set back to train mode\n", - "Epoch 3001: model parameters saved\n", - "Epoch 3002 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3002: avg_loss appended (2.7778)\n", - "Epoch 3002: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3002: accuracy appended (80.56%)\n", - "Epoch 3002: model set back to train mode\n", - "Epoch 3002: model parameters saved\n", - "Epoch 3003 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3003: avg_loss appended (2.7778)\n", - "Epoch 3003: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3003: accuracy appended (80.56%)\n", - "Epoch 3003: model set back to train mode\n", - "Epoch 3003: model parameters saved\n", - "Epoch 3004 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3004: avg_loss appended (2.7778)\n", - "Epoch 3004: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3004: accuracy appended (80.56%)\n", - "Epoch 3004: model set back to train mode\n", - "Epoch 3004: model parameters saved\n", - "Epoch 3005 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3005: avg_loss appended (2.7778)\n", - "Epoch 3005: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3005: accuracy appended (80.56%)\n", - "Epoch 3005: model set back to train mode\n", - "Epoch 3005: model parameters saved\n", - "Epoch 3006 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3006: avg_loss appended (2.7778)\n", - "Epoch 3006: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3006: accuracy appended (80.56%)\n", - "Epoch 3006: model set back to train mode\n", - "Epoch 3006: model parameters saved\n", - "Epoch 3007 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3007: avg_loss appended (2.7778)\n", - "Epoch 3007: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3007: accuracy appended (80.56%)\n", - "Epoch 3007: model set back to train mode\n", - "Epoch 3007: model parameters saved\n", - "Epoch 3008 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3008: avg_loss appended (2.7778)\n", - "Epoch 3008: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3008: accuracy appended (80.56%)\n", - "Epoch 3008: model set back to train mode\n", - "Epoch 3008: model parameters saved\n", - "Epoch 3009 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3009: avg_loss appended (2.7778)\n", - "Epoch 3009: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3009: accuracy appended (80.56%)\n", - "Epoch 3009: model set back to train mode\n", - "Epoch 3009: model parameters saved\n", - "Epoch 3010 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3010: avg_loss appended (2.7778)\n", - "Epoch 3010: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3010: accuracy appended (80.56%)\n", - "Epoch 3010: model set back to train mode\n", - "Epoch 3010: model parameters saved\n", - "Epoch 3011 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3011: avg_loss appended (2.7778)\n", - "Epoch 3011: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3011: accuracy appended (80.56%)\n", - "Epoch 3011: model set back to train mode\n", - "Epoch 3011: model parameters saved\n", - "Epoch 3012 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3012: avg_loss appended (2.7778)\n", - "Epoch 3012: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3012: accuracy appended (80.56%)\n", - "Epoch 3012: model set back to train mode\n", - "Epoch 3012: model parameters saved\n", - "Epoch 3013 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3013: avg_loss appended (2.7778)\n", - "Epoch 3013: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3013: accuracy appended (80.56%)\n", - "Epoch 3013: model set back to train mode\n", - "Epoch 3013: model parameters saved\n", - "Epoch 3014 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3014: avg_loss appended (2.7778)\n", - "Epoch 3014: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3014: accuracy appended (80.56%)\n", - "Epoch 3014: model set back to train mode\n", - "Epoch 3014: model parameters saved\n", - "Epoch 3015 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3015: avg_loss appended (2.7778)\n", - "Epoch 3015: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3015: accuracy appended (80.56%)\n", - "Epoch 3015: model set back to train mode\n", - "Epoch 3015: model parameters saved\n", - "Epoch 3016 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3016: avg_loss appended (2.7778)\n", - "Epoch 3016: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3016: accuracy appended (80.56%)\n", - "Epoch 3016: model set back to train mode\n", - "Epoch 3016: model parameters saved\n", - "Epoch 3017 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3017: avg_loss appended (2.7778)\n", - "Epoch 3017: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3017: accuracy appended (80.56%)\n", - "Epoch 3017: model set back to train mode\n", - "Epoch 3017: model parameters saved\n", - "Epoch 3018 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3018: avg_loss appended (2.7778)\n", - "Epoch 3018: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3018: accuracy appended (80.56%)\n", - "Epoch 3018: model set back to train mode\n", - "Epoch 3018: model parameters saved\n", - "Epoch 3019 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3019: avg_loss appended (2.7778)\n", - "Epoch 3019: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3019: accuracy appended (80.56%)\n", - "Epoch 3019: model set back to train mode\n", - "Epoch 3019: model parameters saved\n", - "Epoch 3020 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3020: avg_loss appended (2.7778)\n", - "Epoch 3020: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3020: accuracy appended (80.56%)\n", - "Epoch 3020: model set back to train mode\n", - "Epoch 3020: model parameters saved\n", - "Epoch 3021 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3021: avg_loss appended (2.7778)\n", - "Epoch 3021: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3021: accuracy appended (80.56%)\n", - "Epoch 3021: model set back to train mode\n", - "Epoch 3021: model parameters saved\n", - "Epoch 3022 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3022: avg_loss appended (2.7778)\n", - "Epoch 3022: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3022: accuracy appended (80.56%)\n", - "Epoch 3022: model set back to train mode\n", - "Epoch 3022: model parameters saved\n", - "Epoch 3023 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3023: avg_loss appended (2.7778)\n", - "Epoch 3023: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3023: accuracy appended (80.56%)\n", - "Epoch 3023: model set back to train mode\n", - "Epoch 3023: model parameters saved\n", - "Epoch 3024 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3024: avg_loss appended (2.7778)\n", - "Epoch 3024: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3024: accuracy appended (80.56%)\n", - "Epoch 3024: model set back to train mode\n", - "Epoch 3024: model parameters saved\n", - "Epoch 3025 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3025: avg_loss appended (2.7778)\n", - "Epoch 3025: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3025: accuracy appended (80.56%)\n", - "Epoch 3025: model set back to train mode\n", - "Epoch 3025: model parameters saved\n", - "Epoch 3026 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3026: avg_loss appended (2.7778)\n", - "Epoch 3026: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3026: accuracy appended (80.56%)\n", - "Epoch 3026: model set back to train mode\n", - "Epoch 3026: model parameters saved\n", - "Epoch 3027 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3027: avg_loss appended (2.7778)\n", - "Epoch 3027: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3027: accuracy appended (80.56%)\n", - "Epoch 3027: model set back to train mode\n", - "Epoch 3027: model parameters saved\n", - "Epoch 3028 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3028: avg_loss appended (2.7778)\n", - "Epoch 3028: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3028: accuracy appended (80.56%)\n", - "Epoch 3028: model set back to train mode\n", - "Epoch 3028: model parameters saved\n", - "Epoch 3029 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3029: avg_loss appended (2.7778)\n", - "Epoch 3029: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3029: accuracy appended (80.56%)\n", - "Epoch 3029: model set back to train mode\n", - "Epoch 3029: model parameters saved\n", - "Epoch 3030 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3030: avg_loss appended (2.7778)\n", - "Epoch 3030: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3030: accuracy appended (80.56%)\n", - "Epoch 3030: model set back to train mode\n", - "Epoch 3030: model parameters saved\n", - "Epoch 3031 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3031: avg_loss appended (2.7778)\n", - "Epoch 3031: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3031: accuracy appended (80.56%)\n", - "Epoch 3031: model set back to train mode\n", - "Epoch 3031: model parameters saved\n", - "Epoch 3032 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3032: avg_loss appended (2.7778)\n", - "Epoch 3032: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3032: accuracy appended (80.56%)\n", - "Epoch 3032: model set back to train mode\n", - "Epoch 3032: model parameters saved\n", - "Epoch 3033 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3033: avg_loss appended (2.7778)\n", - "Epoch 3033: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3033: accuracy appended (80.56%)\n", - "Epoch 3033: model set back to train mode\n", - "Epoch 3033: model parameters saved\n", - "Epoch 3034 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3034: avg_loss appended (2.7778)\n", - "Epoch 3034: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3034: accuracy appended (80.56%)\n", - "Epoch 3034: model set back to train mode\n", - "Epoch 3034: model parameters saved\n", - "Epoch 3035 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3035: avg_loss appended (2.7778)\n", - "Epoch 3035: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3035: accuracy appended (80.56%)\n", - "Epoch 3035: model set back to train mode\n", - "Epoch 3035: model parameters saved\n", - "Epoch 3036 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3036: avg_loss appended (2.7778)\n", - "Epoch 3036: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3036: accuracy appended (80.56%)\n", - "Epoch 3036: model set back to train mode\n", - "Epoch 3036: model parameters saved\n", - "Epoch 3037 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3037: avg_loss appended (2.7778)\n", - "Epoch 3037: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3037: accuracy appended (80.56%)\n", - "Epoch 3037: model set back to train mode\n", - "Epoch 3037: model parameters saved\n", - "Epoch 3038 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3038: avg_loss appended (2.7778)\n", - "Epoch 3038: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3038: accuracy appended (80.56%)\n", - "Epoch 3038: model set back to train mode\n", - "Epoch 3038: model parameters saved\n", - "Epoch 3039 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3039: avg_loss appended (2.7778)\n", - "Epoch 3039: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3039: accuracy appended (80.56%)\n", - "Epoch 3039: model set back to train mode\n", - "Epoch 3039: model parameters saved\n", - "Epoch 3040 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3040: avg_loss appended (2.7778)\n", - "Epoch 3040: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3040: accuracy appended (80.56%)\n", - "Epoch 3040: model set back to train mode\n", - "Epoch 3040: model parameters saved\n", - "Epoch 3041 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3041: avg_loss appended (2.7778)\n", - "Epoch 3041: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3041: accuracy appended (80.56%)\n", - "Epoch 3041: model set back to train mode\n", - "Epoch 3041: model parameters saved\n", - "Epoch 3042 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3042: avg_loss appended (2.7778)\n", - "Epoch 3042: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3042: accuracy appended (80.56%)\n", - "Epoch 3042: model set back to train mode\n", - "Epoch 3042: model parameters saved\n", - "Epoch 3043 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3043: avg_loss appended (2.7778)\n", - "Epoch 3043: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3043: accuracy appended (80.56%)\n", - "Epoch 3043: model set back to train mode\n", - "Epoch 3043: model parameters saved\n", - "Epoch 3044 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3044: avg_loss appended (2.7778)\n", - "Epoch 3044: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3044: accuracy appended (80.56%)\n", - "Epoch 3044: model set back to train mode\n", - "Epoch 3044: model parameters saved\n", - "Epoch 3045 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3045: avg_loss appended (2.7778)\n", - "Epoch 3045: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3045: accuracy appended (80.56%)\n", - "Epoch 3045: model set back to train mode\n", - "Epoch 3045: model parameters saved\n", - "Epoch 3046 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3046: avg_loss appended (2.7778)\n", - "Epoch 3046: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3046: accuracy appended (80.56%)\n", - "Epoch 3046: model set back to train mode\n", - "Epoch 3046: model parameters saved\n", - "Epoch 3047 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3047: avg_loss appended (2.7778)\n", - "Epoch 3047: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3047: accuracy appended (80.56%)\n", - "Epoch 3047: model set back to train mode\n", - "Epoch 3047: model parameters saved\n", - "Epoch 3048 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3048: avg_loss appended (2.7778)\n", - "Epoch 3048: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3048: accuracy appended (80.56%)\n", - "Epoch 3048: model set back to train mode\n", - "Epoch 3048: model parameters saved\n", - "Epoch 3049 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3049: avg_loss appended (2.7778)\n", - "Epoch 3049: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3049: accuracy appended (80.56%)\n", - "Epoch 3049: model set back to train mode\n", - "Epoch 3049: model parameters saved\n", - "Epoch 3050 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3050: avg_loss appended (2.7778)\n", - "Epoch 3050: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3050: accuracy appended (80.56%)\n", - "Epoch 3050: model set back to train mode\n", - "Epoch 3050: model parameters saved\n", - "Epoch 3051 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3051: avg_loss appended (2.7778)\n", - "Epoch 3051: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3051: accuracy appended (80.56%)\n", - "Epoch 3051: model set back to train mode\n", - "Epoch 3051: model parameters saved\n", - "Epoch 3052 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3052: avg_loss appended (2.7778)\n", - "Epoch 3052: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3052: accuracy appended (80.56%)\n", - "Epoch 3052: model set back to train mode\n", - "Epoch 3052: model parameters saved\n", - "Epoch 3053 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3053: avg_loss appended (2.7778)\n", - "Epoch 3053: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3053: accuracy appended (80.56%)\n", - "Epoch 3053: model set back to train mode\n", - "Epoch 3053: model parameters saved\n", - "Epoch 3054 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3054: avg_loss appended (2.7778)\n", - "Epoch 3054: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3054: accuracy appended (80.56%)\n", - "Epoch 3054: model set back to train mode\n", - "Epoch 3054: model parameters saved\n", - "Epoch 3055 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3055: avg_loss appended (2.7778)\n", - "Epoch 3055: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3055: accuracy appended (80.56%)\n", - "Epoch 3055: model set back to train mode\n", - "Epoch 3055: model parameters saved\n", - "Epoch 3056 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3056: avg_loss appended (2.7778)\n", - "Epoch 3056: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3056: accuracy appended (80.56%)\n", - "Epoch 3056: model set back to train mode\n", - "Epoch 3056: model parameters saved\n", - "Epoch 3057 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3057: avg_loss appended (2.7778)\n", - "Epoch 3057: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3057: accuracy appended (80.56%)\n", - "Epoch 3057: model set back to train mode\n", - "Epoch 3057: model parameters saved\n", - "Epoch 3058 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3058: avg_loss appended (2.7778)\n", - "Epoch 3058: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3058: accuracy appended (80.56%)\n", - "Epoch 3058: model set back to train mode\n", - "Epoch 3058: model parameters saved\n", - "Epoch 3059 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3059: avg_loss appended (2.7778)\n", - "Epoch 3059: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3059: accuracy appended (80.56%)\n", - "Epoch 3059: model set back to train mode\n", - "Epoch 3059: model parameters saved\n", - "Epoch 3060 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3060: avg_loss appended (2.7778)\n", - "Epoch 3060: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3060: accuracy appended (80.56%)\n", - "Epoch 3060: model set back to train mode\n", - "Epoch 3060: model parameters saved\n", - "Epoch 3061 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3061: avg_loss appended (2.7778)\n", - "Epoch 3061: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3061: accuracy appended (80.56%)\n", - "Epoch 3061: model set back to train mode\n", - "Epoch 3061: model parameters saved\n", - "Epoch 3062 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3062: avg_loss appended (2.7778)\n", - "Epoch 3062: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3062: accuracy appended (80.56%)\n", - "Epoch 3062: model set back to train mode\n", - "Epoch 3062: model parameters saved\n", - "Epoch 3063 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3063: avg_loss appended (2.7778)\n", - "Epoch 3063: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3063: accuracy appended (80.56%)\n", - "Epoch 3063: model set back to train mode\n", - "Epoch 3063: model parameters saved\n", - "Epoch 3064 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3064: avg_loss appended (2.7778)\n", - "Epoch 3064: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3064: accuracy appended (80.56%)\n", - "Epoch 3064: model set back to train mode\n", - "Epoch 3064: model parameters saved\n", - "Epoch 3065 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3065: avg_loss appended (2.7778)\n", - "Epoch 3065: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3065: accuracy appended (80.56%)\n", - "Epoch 3065: model set back to train mode\n", - "Epoch 3065: model parameters saved\n", - "Epoch 3066 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3066: avg_loss appended (2.7778)\n", - "Epoch 3066: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3066: accuracy appended (80.56%)\n", - "Epoch 3066: model set back to train mode\n", - "Epoch 3066: model parameters saved\n", - "Epoch 3067 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3067: avg_loss appended (2.7778)\n", - "Epoch 3067: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3067: accuracy appended (80.56%)\n", - "Epoch 3067: model set back to train mode\n", - "Epoch 3067: model parameters saved\n", - "Epoch 3068 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3068: avg_loss appended (2.7778)\n", - "Epoch 3068: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3068: accuracy appended (80.56%)\n", - "Epoch 3068: model set back to train mode\n", - "Epoch 3068: model parameters saved\n", - "Epoch 3069 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3069: avg_loss appended (2.7778)\n", - "Epoch 3069: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3069: accuracy appended (80.56%)\n", - "Epoch 3069: model set back to train mode\n", - "Epoch 3069: model parameters saved\n", - "Epoch 3070 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3070: avg_loss appended (2.7778)\n", - "Epoch 3070: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3070: accuracy appended (80.56%)\n", - "Epoch 3070: model set back to train mode\n", - "Epoch 3070: model parameters saved\n", - "Epoch 3071 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3071: avg_loss appended (2.7778)\n", - "Epoch 3071: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3071: accuracy appended (80.56%)\n", - "Epoch 3071: model set back to train mode\n", - "Epoch 3071: model parameters saved\n", - "Epoch 3072 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3072: avg_loss appended (2.7778)\n", - "Epoch 3072: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3072: accuracy appended (80.56%)\n", - "Epoch 3072: model set back to train mode\n", - "Epoch 3072: model parameters saved\n", - "Epoch 3073 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3073: avg_loss appended (2.7778)\n", - "Epoch 3073: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3073: accuracy appended (80.56%)\n", - "Epoch 3073: model set back to train mode\n", - "Epoch 3073: model parameters saved\n", - "Epoch 3074 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3074: avg_loss appended (2.7778)\n", - "Epoch 3074: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3074: accuracy appended (80.56%)\n", - "Epoch 3074: model set back to train mode\n", - "Epoch 3074: model parameters saved\n", - "Epoch 3075 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3075: avg_loss appended (2.7778)\n", - "Epoch 3075: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3075: accuracy appended (80.56%)\n", - "Epoch 3075: model set back to train mode\n", - "Epoch 3075: model parameters saved\n", - "Epoch 3076 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3076: avg_loss appended (2.7778)\n", - "Epoch 3076: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3076: accuracy appended (80.56%)\n", - "Epoch 3076: model set back to train mode\n", - "Epoch 3076: model parameters saved\n", - "Epoch 3077 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3077: avg_loss appended (2.7778)\n", - "Epoch 3077: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3077: accuracy appended (80.56%)\n", - "Epoch 3077: model set back to train mode\n", - "Epoch 3077: model parameters saved\n", - "Epoch 3078 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3078: avg_loss appended (2.7778)\n", - "Epoch 3078: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3078: accuracy appended (80.56%)\n", - "Epoch 3078: model set back to train mode\n", - "Epoch 3078: model parameters saved\n", - "Epoch 3079 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3079: avg_loss appended (2.7778)\n", - "Epoch 3079: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3079: accuracy appended (80.56%)\n", - "Epoch 3079: model set back to train mode\n", - "Epoch 3079: model parameters saved\n", - "Epoch 3080 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3080: avg_loss appended (2.7778)\n", - "Epoch 3080: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3080: accuracy appended (80.56%)\n", - "Epoch 3080: model set back to train mode\n", - "Epoch 3080: model parameters saved\n", - "Epoch 3081 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3081: avg_loss appended (2.7778)\n", - "Epoch 3081: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3081: accuracy appended (80.56%)\n", - "Epoch 3081: model set back to train mode\n", - "Epoch 3081: model parameters saved\n", - "Epoch 3082 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3082: avg_loss appended (2.7778)\n", - "Epoch 3082: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3082: accuracy appended (80.56%)\n", - "Epoch 3082: model set back to train mode\n", - "Epoch 3082: model parameters saved\n", - "Epoch 3083 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3083: avg_loss appended (2.7778)\n", - "Epoch 3083: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3083: accuracy appended (80.56%)\n", - "Epoch 3083: model set back to train mode\n", - "Epoch 3083: model parameters saved\n", - "Epoch 3084 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3084: avg_loss appended (2.7778)\n", - "Epoch 3084: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3084: accuracy appended (80.56%)\n", - "Epoch 3084: model set back to train mode\n", - "Epoch 3084: model parameters saved\n", - "Epoch 3085 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3085: avg_loss appended (2.7778)\n", - "Epoch 3085: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3085: accuracy appended (80.56%)\n", - "Epoch 3085: model set back to train mode\n", - "Epoch 3085: model parameters saved\n", - "Epoch 3086 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3086: avg_loss appended (2.7778)\n", - "Epoch 3086: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3086: accuracy appended (80.56%)\n", - "Epoch 3086: model set back to train mode\n", - "Epoch 3086: model parameters saved\n", - "Epoch 3087 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3087: avg_loss appended (2.7778)\n", - "Epoch 3087: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3087: accuracy appended (80.56%)\n", - "Epoch 3087: model set back to train mode\n", - "Epoch 3087: model parameters saved\n", - "Epoch 3088 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3088: avg_loss appended (2.7778)\n", - "Epoch 3088: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3088: accuracy appended (80.56%)\n", - "Epoch 3088: model set back to train mode\n", - "Epoch 3088: model parameters saved\n", - "Epoch 3089 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3089: avg_loss appended (2.7778)\n", - "Epoch 3089: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3089: accuracy appended (80.56%)\n", - "Epoch 3089: model set back to train mode\n", - "Epoch 3089: model parameters saved\n", - "Epoch 3090 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3090: avg_loss appended (2.7778)\n", - "Epoch 3090: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3090: accuracy appended (80.56%)\n", - "Epoch 3090: model set back to train mode\n", - "Epoch 3090: model parameters saved\n", - "Epoch 3091 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3091: avg_loss appended (2.7778)\n", - "Epoch 3091: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3091: accuracy appended (80.56%)\n", - "Epoch 3091: model set back to train mode\n", - "Epoch 3091: model parameters saved\n", - "Epoch 3092 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3092: avg_loss appended (2.7778)\n", - "Epoch 3092: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3092: accuracy appended (80.56%)\n", - "Epoch 3092: model set back to train mode\n", - "Epoch 3092: model parameters saved\n", - "Epoch 3093 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3093: avg_loss appended (2.7778)\n", - "Epoch 3093: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3093: accuracy appended (80.56%)\n", - "Epoch 3093: model set back to train mode\n", - "Epoch 3093: model parameters saved\n", - "Epoch 3094 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3094: avg_loss appended (2.7778)\n", - "Epoch 3094: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3094: accuracy appended (80.56%)\n", - "Epoch 3094: model set back to train mode\n", - "Epoch 3094: model parameters saved\n", - "Epoch 3095 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3095: avg_loss appended (2.7778)\n", - "Epoch 3095: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3095: accuracy appended (80.56%)\n", - "Epoch 3095: model set back to train mode\n", - "Epoch 3095: model parameters saved\n", - "Epoch 3096 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3096: avg_loss appended (2.7778)\n", - "Epoch 3096: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3096: accuracy appended (80.56%)\n", - "Epoch 3096: model set back to train mode\n", - "Epoch 3096: model parameters saved\n", - "Epoch 3097 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3097: avg_loss appended (2.7778)\n", - "Epoch 3097: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3097: accuracy appended (80.56%)\n", - "Epoch 3097: model set back to train mode\n", - "Epoch 3097: model parameters saved\n", - "Epoch 3098 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3098: avg_loss appended (2.7778)\n", - "Epoch 3098: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3098: accuracy appended (80.56%)\n", - "Epoch 3098: model set back to train mode\n", - "Epoch 3098: model parameters saved\n", - "Epoch 3099 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3099: avg_loss appended (2.7778)\n", - "Epoch 3099: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3099: accuracy appended (80.56%)\n", - "Epoch 3099: model set back to train mode\n", - "Epoch 3099: model parameters saved\n", - "Epoch 3100 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3100: avg_loss appended (2.7778)\n", - "Epoch 3100: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3100: accuracy appended (80.56%)\n", - "Epoch 3100: model set back to train mode\n", - "Epoch 3100: model parameters saved\n", - "Epoch 3100/10000, Loss: 2.7778, Accuracy: 80.56%\n", - "Epoch 3101 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3101: avg_loss appended (2.7778)\n", - "Epoch 3101: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3101: accuracy appended (80.56%)\n", - "Epoch 3101: model set back to train mode\n", - "Epoch 3101: model parameters saved\n", - "Epoch 3102 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3102: avg_loss appended (2.7778)\n", - "Epoch 3102: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3102: accuracy appended (80.56%)\n", - "Epoch 3102: model set back to train mode\n", - "Epoch 3102: model parameters saved\n", - "Epoch 3103 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3103: avg_loss appended (2.7778)\n", - "Epoch 3103: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3103: accuracy appended (80.56%)\n", - "Epoch 3103: model set back to train mode\n", - "Epoch 3103: model parameters saved\n", - "Epoch 3104 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3104: avg_loss appended (2.7778)\n", - "Epoch 3104: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3104: accuracy appended (80.56%)\n", - "Epoch 3104: model set back to train mode\n", - "Epoch 3104: model parameters saved\n", - "Epoch 3105 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3105: avg_loss appended (2.7778)\n", - "Epoch 3105: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3105: accuracy appended (80.56%)\n", - "Epoch 3105: model set back to train mode\n", - "Epoch 3105: model parameters saved\n", - "Epoch 3106 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3106: avg_loss appended (2.7778)\n", - "Epoch 3106: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3106: accuracy appended (80.56%)\n", - "Epoch 3106: model set back to train mode\n", - "Epoch 3106: model parameters saved\n", - "Epoch 3107 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3107: avg_loss appended (2.7778)\n", - "Epoch 3107: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3107: accuracy appended (80.56%)\n", - "Epoch 3107: model set back to train mode\n", - "Epoch 3107: model parameters saved\n", - "Epoch 3108 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3108: avg_loss appended (2.7778)\n", - "Epoch 3108: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3108: accuracy appended (80.56%)\n", - "Epoch 3108: model set back to train mode\n", - "Epoch 3108: model parameters saved\n", - "Epoch 3109 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3109: avg_loss appended (2.7778)\n", - "Epoch 3109: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3109: accuracy appended (80.56%)\n", - "Epoch 3109: model set back to train mode\n", - "Epoch 3109: model parameters saved\n", - "Epoch 3110 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3110: avg_loss appended (2.7778)\n", - "Epoch 3110: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3110: accuracy appended (80.56%)\n", - "Epoch 3110: model set back to train mode\n", - "Epoch 3110: model parameters saved\n", - "Epoch 3111 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3111: avg_loss appended (2.7778)\n", - "Epoch 3111: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3111: accuracy appended (80.56%)\n", - "Epoch 3111: model set back to train mode\n", - "Epoch 3111: model parameters saved\n", - "Epoch 3112 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3112: avg_loss appended (2.7778)\n", - "Epoch 3112: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3112: accuracy appended (80.56%)\n", - "Epoch 3112: model set back to train mode\n", - "Epoch 3112: model parameters saved\n", - "Epoch 3113 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3113: avg_loss appended (2.7778)\n", - "Epoch 3113: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3113: accuracy appended (80.56%)\n", - "Epoch 3113: model set back to train mode\n", - "Epoch 3113: model parameters saved\n", - "Epoch 3114 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3114: avg_loss appended (2.7778)\n", - "Epoch 3114: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3114: accuracy appended (80.56%)\n", - "Epoch 3114: model set back to train mode\n", - "Epoch 3114: model parameters saved\n", - "Epoch 3115 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3115: avg_loss appended (2.7778)\n", - "Epoch 3115: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3115: accuracy appended (80.56%)\n", - "Epoch 3115: model set back to train mode\n", - "Epoch 3115: model parameters saved\n", - "Epoch 3116 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3116: avg_loss appended (2.7778)\n", - "Epoch 3116: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3116: accuracy appended (80.56%)\n", - "Epoch 3116: model set back to train mode\n", - "Epoch 3116: model parameters saved\n", - "Epoch 3117 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3117: avg_loss appended (2.7778)\n", - "Epoch 3117: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3117: accuracy appended (80.56%)\n", - "Epoch 3117: model set back to train mode\n", - "Epoch 3117: model parameters saved\n", - "Epoch 3118 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3118: avg_loss appended (2.7778)\n", - "Epoch 3118: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3118: accuracy appended (80.56%)\n", - "Epoch 3118: model set back to train mode\n", - "Epoch 3118: model parameters saved\n", - "Epoch 3119 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3119: avg_loss appended (2.7778)\n", - "Epoch 3119: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3119: accuracy appended (80.56%)\n", - "Epoch 3119: model set back to train mode\n", - "Epoch 3119: model parameters saved\n", - "Epoch 3120 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3120: avg_loss appended (2.7778)\n", - "Epoch 3120: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3120: accuracy appended (80.56%)\n", - "Epoch 3120: model set back to train mode\n", - "Epoch 3120: model parameters saved\n", - "Epoch 3121 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3121: avg_loss appended (2.7778)\n", - "Epoch 3121: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3121: accuracy appended (80.56%)\n", - "Epoch 3121: model set back to train mode\n", - "Epoch 3121: model parameters saved\n", - "Epoch 3122 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3122: avg_loss appended (2.7778)\n", - "Epoch 3122: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3122: accuracy appended (80.56%)\n", - "Epoch 3122: model set back to train mode\n", - "Epoch 3122: model parameters saved\n", - "Epoch 3123 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3123: avg_loss appended (2.7778)\n", - "Epoch 3123: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3123: accuracy appended (80.56%)\n", - "Epoch 3123: model set back to train mode\n", - "Epoch 3123: model parameters saved\n", - "Epoch 3124 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3124: avg_loss appended (2.7778)\n", - "Epoch 3124: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3124: accuracy appended (80.56%)\n", - "Epoch 3124: model set back to train mode\n", - "Epoch 3124: model parameters saved\n", - "Epoch 3125 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3125: avg_loss appended (2.7778)\n", - "Epoch 3125: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3125: accuracy appended (80.56%)\n", - "Epoch 3125: model set back to train mode\n", - "Epoch 3125: model parameters saved\n", - "Epoch 3126 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3126: avg_loss appended (2.7778)\n", - "Epoch 3126: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3126: accuracy appended (80.56%)\n", - "Epoch 3126: model set back to train mode\n", - "Epoch 3126: model parameters saved\n", - "Epoch 3127 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3127: avg_loss appended (2.7778)\n", - "Epoch 3127: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3127: accuracy appended (80.56%)\n", - "Epoch 3127: model set back to train mode\n", - "Epoch 3127: model parameters saved\n", - "Epoch 3128 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3128: avg_loss appended (2.7778)\n", - "Epoch 3128: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3128: accuracy appended (80.56%)\n", - "Epoch 3128: model set back to train mode\n", - "Epoch 3128: model parameters saved\n", - "Epoch 3129 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3129: avg_loss appended (2.7778)\n", - "Epoch 3129: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3129: accuracy appended (80.56%)\n", - "Epoch 3129: model set back to train mode\n", - "Epoch 3129: model parameters saved\n", - "Epoch 3130 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3130: avg_loss appended (2.7778)\n", - "Epoch 3130: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3130: accuracy appended (80.56%)\n", - "Epoch 3130: model set back to train mode\n", - "Epoch 3130: model parameters saved\n", - "Epoch 3131 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3131: avg_loss appended (2.7778)\n", - "Epoch 3131: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3131: accuracy appended (80.56%)\n", - "Epoch 3131: model set back to train mode\n", - "Epoch 3131: model parameters saved\n", - "Epoch 3132 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3132: avg_loss appended (2.7778)\n", - "Epoch 3132: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3132: accuracy appended (80.56%)\n", - "Epoch 3132: model set back to train mode\n", - "Epoch 3132: model parameters saved\n", - "Epoch 3133 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3133: avg_loss appended (2.7778)\n", - "Epoch 3133: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3133: accuracy appended (80.56%)\n", - "Epoch 3133: model set back to train mode\n", - "Epoch 3133: model parameters saved\n", - "Epoch 3134 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3134: avg_loss appended (2.7778)\n", - "Epoch 3134: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3134: accuracy appended (80.56%)\n", - "Epoch 3134: model set back to train mode\n", - "Epoch 3134: model parameters saved\n", - "Epoch 3135 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3135: avg_loss appended (2.7778)\n", - "Epoch 3135: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3135: accuracy appended (80.56%)\n", - "Epoch 3135: model set back to train mode\n", - "Epoch 3135: model parameters saved\n", - "Epoch 3136 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3136: avg_loss appended (2.7778)\n", - "Epoch 3136: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3136: accuracy appended (80.56%)\n", - "Epoch 3136: model set back to train mode\n", - "Epoch 3136: model parameters saved\n", - "Epoch 3137 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3137: avg_loss appended (2.7778)\n", - "Epoch 3137: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3137: accuracy appended (80.56%)\n", - "Epoch 3137: model set back to train mode\n", - "Epoch 3137: model parameters saved\n", - "Epoch 3138 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3138: avg_loss appended (2.7778)\n", - "Epoch 3138: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3138: accuracy appended (80.56%)\n", - "Epoch 3138: model set back to train mode\n", - "Epoch 3138: model parameters saved\n", - "Epoch 3139 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3139: avg_loss appended (2.7778)\n", - "Epoch 3139: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3139: accuracy appended (80.56%)\n", - "Epoch 3139: model set back to train mode\n", - "Epoch 3139: model parameters saved\n", - "Epoch 3140 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3140: avg_loss appended (2.7778)\n", - "Epoch 3140: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3140: accuracy appended (80.56%)\n", - "Epoch 3140: model set back to train mode\n", - "Epoch 3140: model parameters saved\n", - "Epoch 3141 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3141: avg_loss appended (2.7778)\n", - "Epoch 3141: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3141: accuracy appended (80.56%)\n", - "Epoch 3141: model set back to train mode\n", - "Epoch 3141: model parameters saved\n", - "Epoch 3142 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3142: avg_loss appended (2.7778)\n", - "Epoch 3142: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3142: accuracy appended (80.56%)\n", - "Epoch 3142: model set back to train mode\n", - "Epoch 3142: model parameters saved\n", - "Epoch 3143 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3143: avg_loss appended (2.7778)\n", - "Epoch 3143: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3143: accuracy appended (80.56%)\n", - "Epoch 3143: model set back to train mode\n", - "Epoch 3143: model parameters saved\n", - "Epoch 3144 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3144: avg_loss appended (2.7778)\n", - "Epoch 3144: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3144: accuracy appended (80.56%)\n", - "Epoch 3144: model set back to train mode\n", - "Epoch 3144: model parameters saved\n", - "Epoch 3145 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3145: avg_loss appended (2.7778)\n", - "Epoch 3145: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3145: accuracy appended (80.56%)\n", - "Epoch 3145: model set back to train mode\n", - "Epoch 3145: model parameters saved\n", - "Epoch 3146 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3146: avg_loss appended (2.7778)\n", - "Epoch 3146: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3146: accuracy appended (80.56%)\n", - "Epoch 3146: model set back to train mode\n", - "Epoch 3146: model parameters saved\n", - "Epoch 3147 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3147: avg_loss appended (2.7778)\n", - "Epoch 3147: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3147: accuracy appended (80.56%)\n", - "Epoch 3147: model set back to train mode\n", - "Epoch 3147: model parameters saved\n", - "Epoch 3148 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3148: avg_loss appended (2.7778)\n", - "Epoch 3148: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3148: accuracy appended (80.56%)\n", - "Epoch 3148: model set back to train mode\n", - "Epoch 3148: model parameters saved\n", - "Epoch 3149 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3149: avg_loss appended (2.7778)\n", - "Epoch 3149: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3149: accuracy appended (80.56%)\n", - "Epoch 3149: model set back to train mode\n", - "Epoch 3149: model parameters saved\n", - "Epoch 3150 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3150: avg_loss appended (2.7778)\n", - "Epoch 3150: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3150: accuracy appended (80.56%)\n", - "Epoch 3150: model set back to train mode\n", - "Epoch 3150: model parameters saved\n", - "Epoch 3151 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3151: avg_loss appended (2.7778)\n", - "Epoch 3151: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3151: accuracy appended (80.56%)\n", - "Epoch 3151: model set back to train mode\n", - "Epoch 3151: model parameters saved\n", - "Epoch 3152 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3152: avg_loss appended (2.7778)\n", - "Epoch 3152: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3152: accuracy appended (80.56%)\n", - "Epoch 3152: model set back to train mode\n", - "Epoch 3152: model parameters saved\n", - "Epoch 3153 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3153: avg_loss appended (2.7778)\n", - "Epoch 3153: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3153: accuracy appended (80.56%)\n", - "Epoch 3153: model set back to train mode\n", - "Epoch 3153: model parameters saved\n", - "Epoch 3154 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3154: avg_loss appended (2.7778)\n", - "Epoch 3154: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3154: accuracy appended (80.56%)\n", - "Epoch 3154: model set back to train mode\n", - "Epoch 3154: model parameters saved\n", - "Epoch 3155 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3155: avg_loss appended (2.7778)\n", - "Epoch 3155: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3155: accuracy appended (80.56%)\n", - "Epoch 3155: model set back to train mode\n", - "Epoch 3155: model parameters saved\n", - "Epoch 3156 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3156: avg_loss appended (2.7778)\n", - "Epoch 3156: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3156: accuracy appended (80.56%)\n", - "Epoch 3156: model set back to train mode\n", - "Epoch 3156: model parameters saved\n", - "Epoch 3157 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3157: avg_loss appended (2.7778)\n", - "Epoch 3157: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3157: accuracy appended (80.56%)\n", - "Epoch 3157: model set back to train mode\n", - "Epoch 3157: model parameters saved\n", - "Epoch 3158 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3158: avg_loss appended (2.7778)\n", - "Epoch 3158: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3158: accuracy appended (80.56%)\n", - "Epoch 3158: model set back to train mode\n", - "Epoch 3158: model parameters saved\n", - "Epoch 3159 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3159: avg_loss appended (2.7778)\n", - "Epoch 3159: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3159: accuracy appended (80.56%)\n", - "Epoch 3159: model set back to train mode\n", - "Epoch 3159: model parameters saved\n", - "Epoch 3160 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3160: avg_loss appended (2.7778)\n", - "Epoch 3160: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3160: accuracy appended (80.56%)\n", - "Epoch 3160: model set back to train mode\n", - "Epoch 3160: model parameters saved\n", - "Epoch 3161 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3161: avg_loss appended (2.7778)\n", - "Epoch 3161: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3161: accuracy appended (80.56%)\n", - "Epoch 3161: model set back to train mode\n", - "Epoch 3161: model parameters saved\n", - "Epoch 3162 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3162: avg_loss appended (2.7778)\n", - "Epoch 3162: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3162: accuracy appended (80.56%)\n", - "Epoch 3162: model set back to train mode\n", - "Epoch 3162: model parameters saved\n", - "Epoch 3163 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3163: avg_loss appended (2.7778)\n", - "Epoch 3163: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3163: accuracy appended (80.56%)\n", - "Epoch 3163: model set back to train mode\n", - "Epoch 3163: model parameters saved\n", - "Epoch 3164 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3164: avg_loss appended (2.7778)\n", - "Epoch 3164: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3164: accuracy appended (80.56%)\n", - "Epoch 3164: model set back to train mode\n", - "Epoch 3164: model parameters saved\n", - "Epoch 3165 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3165: avg_loss appended (2.7778)\n", - "Epoch 3165: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3165: accuracy appended (80.56%)\n", - "Epoch 3165: model set back to train mode\n", - "Epoch 3165: model parameters saved\n", - "Epoch 3166 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3166: avg_loss appended (2.7778)\n", - "Epoch 3166: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3166: accuracy appended (80.56%)\n", - "Epoch 3166: model set back to train mode\n", - "Epoch 3166: model parameters saved\n", - "Epoch 3167 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3167: avg_loss appended (2.7778)\n", - "Epoch 3167: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3167: accuracy appended (80.56%)\n", - "Epoch 3167: model set back to train mode\n", - "Epoch 3167: model parameters saved\n", - "Epoch 3168 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3168: avg_loss appended (2.7778)\n", - "Epoch 3168: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3168: accuracy appended (80.56%)\n", - "Epoch 3168: model set back to train mode\n", - "Epoch 3168: model parameters saved\n", - "Epoch 3169 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3169: avg_loss appended (2.7778)\n", - "Epoch 3169: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3169: accuracy appended (80.56%)\n", - "Epoch 3169: model set back to train mode\n", - "Epoch 3169: model parameters saved\n", - "Epoch 3170 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3170: avg_loss appended (2.7778)\n", - "Epoch 3170: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3170: accuracy appended (80.56%)\n", - "Epoch 3170: model set back to train mode\n", - "Epoch 3170: model parameters saved\n", - "Epoch 3171 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3171: avg_loss appended (2.7778)\n", - "Epoch 3171: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3171: accuracy appended (80.56%)\n", - "Epoch 3171: model set back to train mode\n", - "Epoch 3171: model parameters saved\n", - "Epoch 3172 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3172: avg_loss appended (2.7778)\n", - "Epoch 3172: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3172: accuracy appended (80.56%)\n", - "Epoch 3172: model set back to train mode\n", - "Epoch 3172: model parameters saved\n", - "Epoch 3173 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3173: avg_loss appended (2.7778)\n", - "Epoch 3173: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3173: accuracy appended (80.56%)\n", - "Epoch 3173: model set back to train mode\n", - "Epoch 3173: model parameters saved\n", - "Epoch 3174 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3174: avg_loss appended (2.7778)\n", - "Epoch 3174: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3174: accuracy appended (80.56%)\n", - "Epoch 3174: model set back to train mode\n", - "Epoch 3174: model parameters saved\n", - "Epoch 3175 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3175: avg_loss appended (2.7778)\n", - "Epoch 3175: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3175: accuracy appended (80.56%)\n", - "Epoch 3175: model set back to train mode\n", - "Epoch 3175: model parameters saved\n", - "Epoch 3176 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3176: avg_loss appended (2.7778)\n", - "Epoch 3176: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3176: accuracy appended (80.56%)\n", - "Epoch 3176: model set back to train mode\n", - "Epoch 3176: model parameters saved\n", - "Epoch 3177 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3177: avg_loss appended (2.7778)\n", - "Epoch 3177: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3177: accuracy appended (80.56%)\n", - "Epoch 3177: model set back to train mode\n", - "Epoch 3177: model parameters saved\n", - "Epoch 3178 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3178: avg_loss appended (2.7778)\n", - "Epoch 3178: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3178: accuracy appended (80.56%)\n", - "Epoch 3178: model set back to train mode\n", - "Epoch 3178: model parameters saved\n", - "Epoch 3179 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3179: avg_loss appended (2.7778)\n", - "Epoch 3179: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3179: accuracy appended (80.56%)\n", - "Epoch 3179: model set back to train mode\n", - "Epoch 3179: model parameters saved\n", - "Epoch 3180 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3180: avg_loss appended (2.7778)\n", - "Epoch 3180: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3180: accuracy appended (80.56%)\n", - "Epoch 3180: model set back to train mode\n", - "Epoch 3180: model parameters saved\n", - "Epoch 3181 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3181: avg_loss appended (2.7778)\n", - "Epoch 3181: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3181: accuracy appended (80.56%)\n", - "Epoch 3181: model set back to train mode\n", - "Epoch 3181: model parameters saved\n", - "Epoch 3182 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3182: avg_loss appended (2.7778)\n", - "Epoch 3182: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3182: accuracy appended (80.56%)\n", - "Epoch 3182: model set back to train mode\n", - "Epoch 3182: model parameters saved\n", - "Epoch 3183 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3183: avg_loss appended (2.7778)\n", - "Epoch 3183: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3183: accuracy appended (80.56%)\n", - "Epoch 3183: model set back to train mode\n", - "Epoch 3183: model parameters saved\n", - "Epoch 3184 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3184: avg_loss appended (2.7778)\n", - "Epoch 3184: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3184: accuracy appended (80.56%)\n", - "Epoch 3184: model set back to train mode\n", - "Epoch 3184: model parameters saved\n", - "Epoch 3185 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3185: avg_loss appended (2.7778)\n", - "Epoch 3185: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3185: accuracy appended (80.56%)\n", - "Epoch 3185: model set back to train mode\n", - "Epoch 3185: model parameters saved\n", - "Epoch 3186 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3186: avg_loss appended (2.7778)\n", - "Epoch 3186: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3186: accuracy appended (80.56%)\n", - "Epoch 3186: model set back to train mode\n", - "Epoch 3186: model parameters saved\n", - "Epoch 3187 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3187: avg_loss appended (2.7778)\n", - "Epoch 3187: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3187: accuracy appended (80.56%)\n", - "Epoch 3187: model set back to train mode\n", - "Epoch 3187: model parameters saved\n", - "Epoch 3188 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3188: avg_loss appended (2.7778)\n", - "Epoch 3188: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3188: accuracy appended (80.56%)\n", - "Epoch 3188: model set back to train mode\n", - "Epoch 3188: model parameters saved\n", - "Epoch 3189 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3189: avg_loss appended (2.7778)\n", - "Epoch 3189: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3189: accuracy appended (80.56%)\n", - "Epoch 3189: model set back to train mode\n", - "Epoch 3189: model parameters saved\n", - "Epoch 3190 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3190: avg_loss appended (2.7778)\n", - "Epoch 3190: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3190: accuracy appended (80.56%)\n", - "Epoch 3190: model set back to train mode\n", - "Epoch 3190: model parameters saved\n", - "Epoch 3191 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3191: avg_loss appended (2.7778)\n", - "Epoch 3191: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3191: accuracy appended (80.56%)\n", - "Epoch 3191: model set back to train mode\n", - "Epoch 3191: model parameters saved\n", - "Epoch 3192 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3192: avg_loss appended (2.7778)\n", - "Epoch 3192: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3192: accuracy appended (80.56%)\n", - "Epoch 3192: model set back to train mode\n", - "Epoch 3192: model parameters saved\n", - "Epoch 3193 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3193: avg_loss appended (2.7778)\n", - "Epoch 3193: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3193: accuracy appended (80.56%)\n", - "Epoch 3193: model set back to train mode\n", - "Epoch 3193: model parameters saved\n", - "Epoch 3194 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3194: avg_loss appended (2.7778)\n", - "Epoch 3194: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3194: accuracy appended (80.56%)\n", - "Epoch 3194: model set back to train mode\n", - "Epoch 3194: model parameters saved\n", - "Epoch 3195 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3195: avg_loss appended (2.7778)\n", - "Epoch 3195: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3195: accuracy appended (80.56%)\n", - "Epoch 3195: model set back to train mode\n", - "Epoch 3195: model parameters saved\n", - "Epoch 3196 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3196: avg_loss appended (2.7778)\n", - "Epoch 3196: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3196: accuracy appended (80.56%)\n", - "Epoch 3196: model set back to train mode\n", - "Epoch 3196: model parameters saved\n", - "Epoch 3197 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3197: avg_loss appended (2.7778)\n", - "Epoch 3197: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3197: accuracy appended (80.56%)\n", - "Epoch 3197: model set back to train mode\n", - "Epoch 3197: model parameters saved\n", - "Epoch 3198 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3198: avg_loss appended (2.7778)\n", - "Epoch 3198: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3198: accuracy appended (80.56%)\n", - "Epoch 3198: model set back to train mode\n", - "Epoch 3198: model parameters saved\n", - "Epoch 3199 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3199: avg_loss appended (2.7778)\n", - "Epoch 3199: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3199: accuracy appended (80.56%)\n", - "Epoch 3199: model set back to train mode\n", - "Epoch 3199: model parameters saved\n", - "Epoch 3200 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3200: avg_loss appended (2.7778)\n", - "Epoch 3200: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3200: accuracy appended (80.56%)\n", - "Epoch 3200: model set back to train mode\n", - "Epoch 3200: model parameters saved\n", - "Epoch 3200/10000, Loss: 2.7778, Accuracy: 80.56%\n", - "Epoch 3201 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3201: avg_loss appended (2.7778)\n", - "Epoch 3201: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3201: accuracy appended (80.56%)\n", - "Epoch 3201: model set back to train mode\n", - "Epoch 3201: model parameters saved\n", - "Epoch 3202 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3202: avg_loss appended (2.7778)\n", - "Epoch 3202: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3202: accuracy appended (80.56%)\n", - "Epoch 3202: model set back to train mode\n", - "Epoch 3202: model parameters saved\n", - "Epoch 3203 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3203: avg_loss appended (2.7778)\n", - "Epoch 3203: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3203: accuracy appended (80.56%)\n", - "Epoch 3203: model set back to train mode\n", - "Epoch 3203: model parameters saved\n", - "Epoch 3204 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3204: avg_loss appended (2.7778)\n", - "Epoch 3204: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3204: accuracy appended (80.56%)\n", - "Epoch 3204: model set back to train mode\n", - "Epoch 3204: model parameters saved\n", - "Epoch 3205 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3205: avg_loss appended (2.7778)\n", - "Epoch 3205: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3205: accuracy appended (80.56%)\n", - "Epoch 3205: model set back to train mode\n", - "Epoch 3205: model parameters saved\n", - "Epoch 3206 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3206: avg_loss appended (2.7778)\n", - "Epoch 3206: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3206: accuracy appended (80.56%)\n", - "Epoch 3206: model set back to train mode\n", - "Epoch 3206: model parameters saved\n", - "Epoch 3207 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3207: avg_loss appended (2.7778)\n", - "Epoch 3207: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3207: accuracy appended (80.56%)\n", - "Epoch 3207: model set back to train mode\n", - "Epoch 3207: model parameters saved\n", - "Epoch 3208 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3208: avg_loss appended (2.7778)\n", - "Epoch 3208: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3208: accuracy appended (80.56%)\n", - "Epoch 3208: model set back to train mode\n", - "Epoch 3208: model parameters saved\n", - "Epoch 3209 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3209: avg_loss appended (2.7778)\n", - "Epoch 3209: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3209: accuracy appended (80.56%)\n", - "Epoch 3209: model set back to train mode\n", - "Epoch 3209: model parameters saved\n", - "Epoch 3210 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3210: avg_loss appended (2.7778)\n", - "Epoch 3210: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3210: accuracy appended (80.56%)\n", - "Epoch 3210: model set back to train mode\n", - "Epoch 3210: model parameters saved\n", - "Epoch 3211 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3211: avg_loss appended (2.7778)\n", - "Epoch 3211: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3211: accuracy appended (80.56%)\n", - "Epoch 3211: model set back to train mode\n", - "Epoch 3211: model parameters saved\n", - "Epoch 3212 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3212: avg_loss appended (2.7778)\n", - "Epoch 3212: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3212: accuracy appended (80.56%)\n", - "Epoch 3212: model set back to train mode\n", - "Epoch 3212: model parameters saved\n", - "Epoch 3213 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3213: avg_loss appended (2.7778)\n", - "Epoch 3213: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3213: accuracy appended (80.56%)\n", - "Epoch 3213: model set back to train mode\n", - "Epoch 3213: model parameters saved\n", - "Epoch 3214 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3214: avg_loss appended (2.7778)\n", - "Epoch 3214: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3214: accuracy appended (80.56%)\n", - "Epoch 3214: model set back to train mode\n", - "Epoch 3214: model parameters saved\n", - "Epoch 3215 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3215: avg_loss appended (2.7778)\n", - "Epoch 3215: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3215: accuracy appended (80.56%)\n", - "Epoch 3215: model set back to train mode\n", - "Epoch 3215: model parameters saved\n", - "Epoch 3216 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3216: avg_loss appended (2.7778)\n", - "Epoch 3216: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3216: accuracy appended (80.56%)\n", - "Epoch 3216: model set back to train mode\n", - "Epoch 3216: model parameters saved\n", - "Epoch 3217 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3217: avg_loss appended (2.7778)\n", - "Epoch 3217: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3217: accuracy appended (80.56%)\n", - "Epoch 3217: model set back to train mode\n", - "Epoch 3217: model parameters saved\n", - "Epoch 3218 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3218: avg_loss appended (2.7778)\n", - "Epoch 3218: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3218: accuracy appended (80.56%)\n", - "Epoch 3218: model set back to train mode\n", - "Epoch 3218: model parameters saved\n", - "Epoch 3219 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3219: avg_loss appended (2.7778)\n", - "Epoch 3219: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3219: accuracy appended (80.56%)\n", - "Epoch 3219: model set back to train mode\n", - "Epoch 3219: model parameters saved\n", - "Epoch 3220 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3220: avg_loss appended (2.7778)\n", - "Epoch 3220: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3220: accuracy appended (80.56%)\n", - "Epoch 3220: model set back to train mode\n", - "Epoch 3220: model parameters saved\n", - "Epoch 3221 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3221: avg_loss appended (2.7778)\n", - "Epoch 3221: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3221: accuracy appended (80.56%)\n", - "Epoch 3221: model set back to train mode\n", - "Epoch 3221: model parameters saved\n", - "Epoch 3222 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3222: avg_loss appended (2.7778)\n", - "Epoch 3222: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3222: accuracy appended (80.56%)\n", - "Epoch 3222: model set back to train mode\n", - "Epoch 3222: model parameters saved\n", - "Epoch 3223 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3223: avg_loss appended (2.7778)\n", - "Epoch 3223: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3223: accuracy appended (80.56%)\n", - "Epoch 3223: model set back to train mode\n", - "Epoch 3223: model parameters saved\n", - "Epoch 3224 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3224: avg_loss appended (2.7778)\n", - "Epoch 3224: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3224: accuracy appended (80.56%)\n", - "Epoch 3224: model set back to train mode\n", - "Epoch 3224: model parameters saved\n", - "Epoch 3225 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3225: avg_loss appended (2.7778)\n", - "Epoch 3225: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3225: accuracy appended (80.56%)\n", - "Epoch 3225: model set back to train mode\n", - "Epoch 3225: model parameters saved\n", - "Epoch 3226 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3226: avg_loss appended (2.7778)\n", - "Epoch 3226: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3226: accuracy appended (80.56%)\n", - "Epoch 3226: model set back to train mode\n", - "Epoch 3226: model parameters saved\n", - "Epoch 3227 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3227: avg_loss appended (2.7778)\n", - "Epoch 3227: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3227: accuracy appended (80.56%)\n", - "Epoch 3227: model set back to train mode\n", - "Epoch 3227: model parameters saved\n", - "Epoch 3228 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3228: avg_loss appended (2.7778)\n", - "Epoch 3228: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3228: accuracy appended (80.56%)\n", - "Epoch 3228: model set back to train mode\n", - "Epoch 3228: model parameters saved\n", - "Epoch 3229 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3229: avg_loss appended (2.7778)\n", - "Epoch 3229: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3229: accuracy appended (80.56%)\n", - "Epoch 3229: model set back to train mode\n", - "Epoch 3229: model parameters saved\n", - "Epoch 3230 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3230: avg_loss appended (2.7778)\n", - "Epoch 3230: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3230: accuracy appended (80.56%)\n", - "Epoch 3230: model set back to train mode\n", - "Epoch 3230: model parameters saved\n", - "Epoch 3231 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3231: avg_loss appended (2.7778)\n", - "Epoch 3231: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3231: accuracy appended (80.56%)\n", - "Epoch 3231: model set back to train mode\n", - "Epoch 3231: model parameters saved\n", - "Epoch 3232 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3232: avg_loss appended (2.7778)\n", - "Epoch 3232: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3232: accuracy appended (80.56%)\n", - "Epoch 3232: model set back to train mode\n", - "Epoch 3232: model parameters saved\n", - "Epoch 3233 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3233: avg_loss appended (2.7778)\n", - "Epoch 3233: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3233: accuracy appended (80.56%)\n", - "Epoch 3233: model set back to train mode\n", - "Epoch 3233: model parameters saved\n", - "Epoch 3234 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3234: avg_loss appended (2.7778)\n", - "Epoch 3234: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3234: accuracy appended (80.56%)\n", - "Epoch 3234: model set back to train mode\n", - "Epoch 3234: model parameters saved\n", - "Epoch 3235 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3235: avg_loss appended (2.7778)\n", - "Epoch 3235: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3235: accuracy appended (80.56%)\n", - "Epoch 3235: model set back to train mode\n", - "Epoch 3235: model parameters saved\n", - "Epoch 3236 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3236: avg_loss appended (2.7778)\n", - "Epoch 3236: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3236: accuracy appended (80.56%)\n", - "Epoch 3236: model set back to train mode\n", - "Epoch 3236: model parameters saved\n", - "Epoch 3237 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3237: avg_loss appended (2.7778)\n", - "Epoch 3237: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3237: accuracy appended (80.56%)\n", - "Epoch 3237: model set back to train mode\n", - "Epoch 3237: model parameters saved\n", - "Epoch 3238 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3238: avg_loss appended (2.7778)\n", - "Epoch 3238: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3238: accuracy appended (80.56%)\n", - "Epoch 3238: model set back to train mode\n", - "Epoch 3238: model parameters saved\n", - "Epoch 3239 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3239: avg_loss appended (2.7778)\n", - "Epoch 3239: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3239: accuracy appended (80.56%)\n", - "Epoch 3239: model set back to train mode\n", - "Epoch 3239: model parameters saved\n", - "Epoch 3240 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3240: avg_loss appended (2.7778)\n", - "Epoch 3240: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3240: accuracy appended (80.56%)\n", - "Epoch 3240: model set back to train mode\n", - "Epoch 3240: model parameters saved\n", - "Epoch 3241 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3241: avg_loss appended (2.7778)\n", - "Epoch 3241: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3241: accuracy appended (80.56%)\n", - "Epoch 3241: model set back to train mode\n", - "Epoch 3241: model parameters saved\n", - "Epoch 3242 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3242: avg_loss appended (2.7778)\n", - "Epoch 3242: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3242: accuracy appended (80.56%)\n", - "Epoch 3242: model set back to train mode\n", - "Epoch 3242: model parameters saved\n", - "Epoch 3243 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3243: avg_loss appended (2.7778)\n", - "Epoch 3243: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3243: accuracy appended (80.56%)\n", - "Epoch 3243: model set back to train mode\n", - "Epoch 3243: model parameters saved\n", - "Epoch 3244 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3244: avg_loss appended (2.7778)\n", - "Epoch 3244: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3244: accuracy appended (80.56%)\n", - "Epoch 3244: model set back to train mode\n", - "Epoch 3244: model parameters saved\n", - "Epoch 3245 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3245: avg_loss appended (2.7778)\n", - "Epoch 3245: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3245: accuracy appended (80.56%)\n", - "Epoch 3245: model set back to train mode\n", - "Epoch 3245: model parameters saved\n", - "Epoch 3246 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3246: avg_loss appended (2.7778)\n", - "Epoch 3246: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3246: accuracy appended (80.56%)\n", - "Epoch 3246: model set back to train mode\n", - "Epoch 3246: model parameters saved\n", - "Epoch 3247 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3247: avg_loss appended (2.7778)\n", - "Epoch 3247: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3247: accuracy appended (80.56%)\n", - "Epoch 3247: model set back to train mode\n", - "Epoch 3247: model parameters saved\n", - "Epoch 3248 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3248: avg_loss appended (2.7778)\n", - "Epoch 3248: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3248: accuracy appended (80.56%)\n", - "Epoch 3248: model set back to train mode\n", - "Epoch 3248: model parameters saved\n", - "Epoch 3249 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3249: avg_loss appended (2.7778)\n", - "Epoch 3249: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3249: accuracy appended (80.56%)\n", - "Epoch 3249: model set back to train mode\n", - "Epoch 3249: model parameters saved\n", - "Epoch 3250 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3250: avg_loss appended (2.7778)\n", - "Epoch 3250: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3250: accuracy appended (80.56%)\n", - "Epoch 3250: model set back to train mode\n", - "Epoch 3250: model parameters saved\n", - "Epoch 3251 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3251: avg_loss appended (2.7778)\n", - "Epoch 3251: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3251: accuracy appended (80.56%)\n", - "Epoch 3251: model set back to train mode\n", - "Epoch 3251: model parameters saved\n", - "Epoch 3252 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3252: avg_loss appended (2.7778)\n", - "Epoch 3252: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3252: accuracy appended (80.56%)\n", - "Epoch 3252: model set back to train mode\n", - "Epoch 3252: model parameters saved\n", - "Epoch 3253 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3253: avg_loss appended (2.7778)\n", - "Epoch 3253: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3253: accuracy appended (80.56%)\n", - "Epoch 3253: model set back to train mode\n", - "Epoch 3253: model parameters saved\n", - "Epoch 3254 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3254: avg_loss appended (2.7778)\n", - "Epoch 3254: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3254: accuracy appended (80.56%)\n", - "Epoch 3254: model set back to train mode\n", - "Epoch 3254: model parameters saved\n", - "Epoch 3255 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3255: avg_loss appended (2.7778)\n", - "Epoch 3255: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3255: accuracy appended (80.56%)\n", - "Epoch 3255: model set back to train mode\n", - "Epoch 3255: model parameters saved\n", - "Epoch 3256 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3256: avg_loss appended (2.7778)\n", - "Epoch 3256: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3256: accuracy appended (80.56%)\n", - "Epoch 3256: model set back to train mode\n", - "Epoch 3256: model parameters saved\n", - "Epoch 3257 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3257: avg_loss appended (2.7778)\n", - "Epoch 3257: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3257: accuracy appended (80.56%)\n", - "Epoch 3257: model set back to train mode\n", - "Epoch 3257: model parameters saved\n", - "Epoch 3258 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3258: avg_loss appended (2.7778)\n", - "Epoch 3258: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3258: accuracy appended (80.56%)\n", - "Epoch 3258: model set back to train mode\n", - "Epoch 3258: model parameters saved\n", - "Epoch 3259 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3259: avg_loss appended (2.7778)\n", - "Epoch 3259: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3259: accuracy appended (80.56%)\n", - "Epoch 3259: model set back to train mode\n", - "Epoch 3259: model parameters saved\n", - "Epoch 3260 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3260: avg_loss appended (2.7778)\n", - "Epoch 3260: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3260: accuracy appended (80.56%)\n", - "Epoch 3260: model set back to train mode\n", - "Epoch 3260: model parameters saved\n", - "Epoch 3261 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3261: avg_loss appended (2.7778)\n", - "Epoch 3261: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3261: accuracy appended (80.56%)\n", - "Epoch 3261: model set back to train mode\n", - "Epoch 3261: model parameters saved\n", - "Epoch 3262 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3262: avg_loss appended (2.7778)\n", - "Epoch 3262: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3262: accuracy appended (80.56%)\n", - "Epoch 3262: model set back to train mode\n", - "Epoch 3262: model parameters saved\n", - "Epoch 3263 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3263: avg_loss appended (2.7778)\n", - "Epoch 3263: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3263: accuracy appended (80.56%)\n", - "Epoch 3263: model set back to train mode\n", - "Epoch 3263: model parameters saved\n", - "Epoch 3264 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3264: avg_loss appended (2.7778)\n", - "Epoch 3264: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3264: accuracy appended (80.56%)\n", - "Epoch 3264: model set back to train mode\n", - "Epoch 3264: model parameters saved\n", - "Epoch 3265 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3265: avg_loss appended (2.7778)\n", - "Epoch 3265: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3265: accuracy appended (80.56%)\n", - "Epoch 3265: model set back to train mode\n", - "Epoch 3265: model parameters saved\n", - "Epoch 3266 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3266: avg_loss appended (2.7778)\n", - "Epoch 3266: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3266: accuracy appended (80.56%)\n", - "Epoch 3266: model set back to train mode\n", - "Epoch 3266: model parameters saved\n", - "Epoch 3267 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3267: avg_loss appended (2.7778)\n", - "Epoch 3267: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3267: accuracy appended (80.56%)\n", - "Epoch 3267: model set back to train mode\n", - "Epoch 3267: model parameters saved\n", - "Epoch 3268 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3268: avg_loss appended (2.7778)\n", - "Epoch 3268: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3268: accuracy appended (80.56%)\n", - "Epoch 3268: model set back to train mode\n", - "Epoch 3268: model parameters saved\n", - "Epoch 3269 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3269: avg_loss appended (2.7778)\n", - "Epoch 3269: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3269: accuracy appended (80.56%)\n", - "Epoch 3269: model set back to train mode\n", - "Epoch 3269: model parameters saved\n", - "Epoch 3270 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3270: avg_loss appended (2.7778)\n", - "Epoch 3270: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3270: accuracy appended (80.56%)\n", - "Epoch 3270: model set back to train mode\n", - "Epoch 3270: model parameters saved\n", - "Epoch 3271 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3271: avg_loss appended (2.7778)\n", - "Epoch 3271: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3271: accuracy appended (80.56%)\n", - "Epoch 3271: model set back to train mode\n", - "Epoch 3271: model parameters saved\n", - "Epoch 3272 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3272: avg_loss appended (2.7778)\n", - "Epoch 3272: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3272: accuracy appended (80.56%)\n", - "Epoch 3272: model set back to train mode\n", - "Epoch 3272: model parameters saved\n", - "Epoch 3273 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3273: avg_loss appended (2.7778)\n", - "Epoch 3273: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3273: accuracy appended (80.56%)\n", - "Epoch 3273: model set back to train mode\n", - "Epoch 3273: model parameters saved\n", - "Epoch 3274 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3274: avg_loss appended (2.7778)\n", - "Epoch 3274: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3274: accuracy appended (80.56%)\n", - "Epoch 3274: model set back to train mode\n", - "Epoch 3274: model parameters saved\n", - "Epoch 3275 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3275: avg_loss appended (2.7778)\n", - "Epoch 3275: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3275: accuracy appended (80.56%)\n", - "Epoch 3275: model set back to train mode\n", - "Epoch 3275: model parameters saved\n", - "Epoch 3276 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3276: avg_loss appended (2.7778)\n", - "Epoch 3276: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3276: accuracy appended (80.56%)\n", - "Epoch 3276: model set back to train mode\n", - "Epoch 3276: model parameters saved\n", - "Epoch 3277 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3277: avg_loss appended (2.7778)\n", - "Epoch 3277: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3277: accuracy appended (80.56%)\n", - "Epoch 3277: model set back to train mode\n", - "Epoch 3277: model parameters saved\n", - "Epoch 3278 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3278: avg_loss appended (2.7778)\n", - "Epoch 3278: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3278: accuracy appended (80.56%)\n", - "Epoch 3278: model set back to train mode\n", - "Epoch 3278: model parameters saved\n", - "Epoch 3279 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3279: avg_loss appended (2.7778)\n", - "Epoch 3279: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3279: accuracy appended (80.56%)\n", - "Epoch 3279: model set back to train mode\n", - "Epoch 3279: model parameters saved\n", - "Epoch 3280 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3280: avg_loss appended (2.7778)\n", - "Epoch 3280: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3280: accuracy appended (80.56%)\n", - "Epoch 3280: model set back to train mode\n", - "Epoch 3280: model parameters saved\n", - "Epoch 3281 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3281: avg_loss appended (2.7778)\n", - "Epoch 3281: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3281: accuracy appended (80.56%)\n", - "Epoch 3281: model set back to train mode\n", - "Epoch 3281: model parameters saved\n", - "Epoch 3282 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3282: avg_loss appended (2.7778)\n", - "Epoch 3282: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3282: accuracy appended (80.56%)\n", - "Epoch 3282: model set back to train mode\n", - "Epoch 3282: model parameters saved\n", - "Epoch 3283 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3283: avg_loss appended (2.7778)\n", - "Epoch 3283: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3283: accuracy appended (80.56%)\n", - "Epoch 3283: model set back to train mode\n", - "Epoch 3283: model parameters saved\n", - "Epoch 3284 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3284: avg_loss appended (2.7778)\n", - "Epoch 3284: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3284: accuracy appended (80.56%)\n", - "Epoch 3284: model set back to train mode\n", - "Epoch 3284: model parameters saved\n", - "Epoch 3285 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3285: avg_loss appended (2.7778)\n", - "Epoch 3285: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3285: accuracy appended (80.56%)\n", - "Epoch 3285: model set back to train mode\n", - "Epoch 3285: model parameters saved\n", - "Epoch 3286 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3286: avg_loss appended (2.7778)\n", - "Epoch 3286: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3286: accuracy appended (80.56%)\n", - "Epoch 3286: model set back to train mode\n", - "Epoch 3286: model parameters saved\n", - "Epoch 3287 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3287: avg_loss appended (2.7778)\n", - "Epoch 3287: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3287: accuracy appended (80.56%)\n", - "Epoch 3287: model set back to train mode\n", - "Epoch 3287: model parameters saved\n", - "Epoch 3288 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3288: avg_loss appended (2.7778)\n", - "Epoch 3288: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3288: accuracy appended (80.56%)\n", - "Epoch 3288: model set back to train mode\n", - "Epoch 3288: model parameters saved\n", - "Epoch 3289 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3289: avg_loss appended (2.7778)\n", - "Epoch 3289: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3289: accuracy appended (80.56%)\n", - "Epoch 3289: model set back to train mode\n", - "Epoch 3289: model parameters saved\n", - "Epoch 3290 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3290: avg_loss appended (2.7778)\n", - "Epoch 3290: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3290: accuracy appended (80.56%)\n", - "Epoch 3290: model set back to train mode\n", - "Epoch 3290: model parameters saved\n", - "Epoch 3291 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3291: avg_loss appended (2.7778)\n", - "Epoch 3291: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3291: accuracy appended (80.56%)\n", - "Epoch 3291: model set back to train mode\n", - "Epoch 3291: model parameters saved\n", - "Epoch 3292 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3292: avg_loss appended (2.7778)\n", - "Epoch 3292: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3292: accuracy appended (80.56%)\n", - "Epoch 3292: model set back to train mode\n", - "Epoch 3292: model parameters saved\n", - "Epoch 3293 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3293: avg_loss appended (2.7778)\n", - "Epoch 3293: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3293: accuracy appended (80.56%)\n", - "Epoch 3293: model set back to train mode\n", - "Epoch 3293: model parameters saved\n", - "Epoch 3294 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3294: avg_loss appended (2.7778)\n", - "Epoch 3294: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3294: accuracy appended (80.56%)\n", - "Epoch 3294: model set back to train mode\n", - "Epoch 3294: model parameters saved\n", - "Epoch 3295 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3295: avg_loss appended (2.7778)\n", - "Epoch 3295: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3295: accuracy appended (80.56%)\n", - "Epoch 3295: model set back to train mode\n", - "Epoch 3295: model parameters saved\n", - "Epoch 3296 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3296: avg_loss appended (2.7778)\n", - "Epoch 3296: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3296: accuracy appended (80.56%)\n", - "Epoch 3296: model set back to train mode\n", - "Epoch 3296: model parameters saved\n", - "Epoch 3297 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3297: avg_loss appended (2.7778)\n", - "Epoch 3297: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3297: accuracy appended (80.56%)\n", - "Epoch 3297: model set back to train mode\n", - "Epoch 3297: model parameters saved\n", - "Epoch 3298 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3298: avg_loss appended (2.7778)\n", - "Epoch 3298: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3298: accuracy appended (80.56%)\n", - "Epoch 3298: model set back to train mode\n", - "Epoch 3298: model parameters saved\n", - "Epoch 3299 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3299: avg_loss appended (2.7778)\n", - "Epoch 3299: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3299: accuracy appended (80.56%)\n", - "Epoch 3299: model set back to train mode\n", - "Epoch 3299: model parameters saved\n", - "Epoch 3300 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3300: avg_loss appended (2.7778)\n", - "Epoch 3300: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3300: accuracy appended (80.56%)\n", - "Epoch 3300: model set back to train mode\n", - "Epoch 3300: model parameters saved\n", - "Epoch 3300/10000, Loss: 2.7778, Accuracy: 80.56%\n", - "Epoch 3301 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3301: avg_loss appended (2.7778)\n", - "Epoch 3301: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3301: accuracy appended (80.56%)\n", - "Epoch 3301: model set back to train mode\n", - "Epoch 3301: model parameters saved\n", - "Epoch 3302 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3302: avg_loss appended (2.7778)\n", - "Epoch 3302: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3302: accuracy appended (80.56%)\n", - "Epoch 3302: model set back to train mode\n", - "Epoch 3302: model parameters saved\n", - "Epoch 3303 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3303: avg_loss appended (2.7778)\n", - "Epoch 3303: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3303: accuracy appended (80.56%)\n", - "Epoch 3303: model set back to train mode\n", - "Epoch 3303: model parameters saved\n", - "Epoch 3304 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3304: avg_loss appended (2.7778)\n", - "Epoch 3304: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3304: accuracy appended (80.56%)\n", - "Epoch 3304: model set back to train mode\n", - "Epoch 3304: model parameters saved\n", - "Epoch 3305 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3305: avg_loss appended (2.7778)\n", - "Epoch 3305: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3305: accuracy appended (80.56%)\n", - "Epoch 3305: model set back to train mode\n", - "Epoch 3305: model parameters saved\n", - "Epoch 3306 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3306: avg_loss appended (2.7778)\n", - "Epoch 3306: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3306: accuracy appended (80.56%)\n", - "Epoch 3306: model set back to train mode\n", - "Epoch 3306: model parameters saved\n", - "Epoch 3307 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3307: avg_loss appended (2.7778)\n", - "Epoch 3307: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3307: accuracy appended (80.56%)\n", - "Epoch 3307: model set back to train mode\n", - "Epoch 3307: model parameters saved\n", - "Epoch 3308 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3308: avg_loss appended (2.7778)\n", - "Epoch 3308: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3308: accuracy appended (80.56%)\n", - "Epoch 3308: model set back to train mode\n", - "Epoch 3308: model parameters saved\n", - "Epoch 3309 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3309: avg_loss appended (2.7778)\n", - "Epoch 3309: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3309: accuracy appended (80.56%)\n", - "Epoch 3309: model set back to train mode\n", - "Epoch 3309: model parameters saved\n", - "Epoch 3310 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3310: avg_loss appended (2.7778)\n", - "Epoch 3310: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3310: accuracy appended (80.56%)\n", - "Epoch 3310: model set back to train mode\n", - "Epoch 3310: model parameters saved\n", - "Epoch 3311 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3311: avg_loss appended (2.7778)\n", - "Epoch 3311: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3311: accuracy appended (80.56%)\n", - "Epoch 3311: model set back to train mode\n", - "Epoch 3311: model parameters saved\n", - "Epoch 3312 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3312: avg_loss appended (2.7778)\n", - "Epoch 3312: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3312: accuracy appended (80.56%)\n", - "Epoch 3312: model set back to train mode\n", - "Epoch 3312: model parameters saved\n", - "Epoch 3313 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3313: avg_loss appended (2.7778)\n", - "Epoch 3313: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3313: accuracy appended (80.56%)\n", - "Epoch 3313: model set back to train mode\n", - "Epoch 3313: model parameters saved\n", - "Epoch 3314 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3314: avg_loss appended (2.7778)\n", - "Epoch 3314: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3314: accuracy appended (80.56%)\n", - "Epoch 3314: model set back to train mode\n", - "Epoch 3314: model parameters saved\n", - "Epoch 3315 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3315: avg_loss appended (2.7778)\n", - "Epoch 3315: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3315: accuracy appended (80.56%)\n", - "Epoch 3315: model set back to train mode\n", - "Epoch 3315: model parameters saved\n", - "Epoch 3316 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3316: avg_loss appended (2.7778)\n", - "Epoch 3316: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3316: accuracy appended (80.56%)\n", - "Epoch 3316: model set back to train mode\n", - "Epoch 3316: model parameters saved\n", - "Epoch 3317 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3317: avg_loss appended (2.7778)\n", - "Epoch 3317: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3317: accuracy appended (80.56%)\n", - "Epoch 3317: model set back to train mode\n", - "Epoch 3317: model parameters saved\n", - "Epoch 3318 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3318: avg_loss appended (2.7778)\n", - "Epoch 3318: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3318: accuracy appended (80.56%)\n", - "Epoch 3318: model set back to train mode\n", - "Epoch 3318: model parameters saved\n", - "Epoch 3319 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3319: avg_loss appended (2.7778)\n", - "Epoch 3319: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3319: accuracy appended (80.56%)\n", - "Epoch 3319: model set back to train mode\n", - "Epoch 3319: model parameters saved\n", - "Epoch 3320 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3320: avg_loss appended (2.7778)\n", - "Epoch 3320: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3320: accuracy appended (80.56%)\n", - "Epoch 3320: model set back to train mode\n", - "Epoch 3320: model parameters saved\n", - "Epoch 3321 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3321: avg_loss appended (2.7778)\n", - "Epoch 3321: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3321: accuracy appended (80.56%)\n", - "Epoch 3321: model set back to train mode\n", - "Epoch 3321: model parameters saved\n", - "Epoch 3322 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3322: avg_loss appended (2.7778)\n", - "Epoch 3322: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3322: accuracy appended (80.56%)\n", - "Epoch 3322: model set back to train mode\n", - "Epoch 3322: model parameters saved\n", - "Epoch 3323 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3323: avg_loss appended (2.7778)\n", - "Epoch 3323: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3323: accuracy appended (80.56%)\n", - "Epoch 3323: model set back to train mode\n", - "Epoch 3323: model parameters saved\n", - "Epoch 3324 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3324: avg_loss appended (2.7778)\n", - "Epoch 3324: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3324: accuracy appended (80.56%)\n", - "Epoch 3324: model set back to train mode\n", - "Epoch 3324: model parameters saved\n", - "Epoch 3325 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3325: avg_loss appended (2.7778)\n", - "Epoch 3325: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3325: accuracy appended (80.56%)\n", - "Epoch 3325: model set back to train mode\n", - "Epoch 3325: model parameters saved\n", - "Epoch 3326 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3326: avg_loss appended (2.7778)\n", - "Epoch 3326: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3326: accuracy appended (80.56%)\n", - "Epoch 3326: model set back to train mode\n", - "Epoch 3326: model parameters saved\n", - "Epoch 3327 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3327: avg_loss appended (2.7778)\n", - "Epoch 3327: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3327: accuracy appended (80.56%)\n", - "Epoch 3327: model set back to train mode\n", - "Epoch 3327: model parameters saved\n", - "Epoch 3328 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3328: avg_loss appended (2.7778)\n", - "Epoch 3328: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3328: accuracy appended (80.56%)\n", - "Epoch 3328: model set back to train mode\n", - "Epoch 3328: model parameters saved\n", - "Epoch 3329 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3329: avg_loss appended (2.7778)\n", - "Epoch 3329: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3329: accuracy appended (80.56%)\n", - "Epoch 3329: model set back to train mode\n", - "Epoch 3329: model parameters saved\n", - "Epoch 3330 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3330: avg_loss appended (2.7778)\n", - "Epoch 3330: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3330: accuracy appended (80.56%)\n", - "Epoch 3330: model set back to train mode\n", - "Epoch 3330: model parameters saved\n", - "Epoch 3331 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3331: avg_loss appended (2.7778)\n", - "Epoch 3331: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3331: accuracy appended (80.56%)\n", - "Epoch 3331: model set back to train mode\n", - "Epoch 3331: model parameters saved\n", - "Epoch 3332 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3332: avg_loss appended (2.7778)\n", - "Epoch 3332: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3332: accuracy appended (80.56%)\n", - "Epoch 3332: model set back to train mode\n", - "Epoch 3332: model parameters saved\n", - "Epoch 3333 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3333: avg_loss appended (2.7778)\n", - "Epoch 3333: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3333: accuracy appended (80.56%)\n", - "Epoch 3333: model set back to train mode\n", - "Epoch 3333: model parameters saved\n", - "Epoch 3334 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3334: avg_loss appended (2.7778)\n", - "Epoch 3334: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3334: accuracy appended (80.56%)\n", - "Epoch 3334: model set back to train mode\n", - "Epoch 3334: model parameters saved\n", - "Epoch 3335 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3335: avg_loss appended (2.7778)\n", - "Epoch 3335: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3335: accuracy appended (80.56%)\n", - "Epoch 3335: model set back to train mode\n", - "Epoch 3335: model parameters saved\n", - "Epoch 3336 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3336: avg_loss appended (2.7778)\n", - "Epoch 3336: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3336: accuracy appended (80.56%)\n", - "Epoch 3336: model set back to train mode\n", - "Epoch 3336: model parameters saved\n", - "Epoch 3337 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3337: avg_loss appended (2.7778)\n", - "Epoch 3337: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3337: accuracy appended (80.56%)\n", - "Epoch 3337: model set back to train mode\n", - "Epoch 3337: model parameters saved\n", - "Epoch 3338 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3338: avg_loss appended (2.7778)\n", - "Epoch 3338: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3338: accuracy appended (80.56%)\n", - "Epoch 3338: model set back to train mode\n", - "Epoch 3338: model parameters saved\n", - "Epoch 3339 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3339: avg_loss appended (2.7778)\n", - "Epoch 3339: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3339: accuracy appended (80.56%)\n", - "Epoch 3339: model set back to train mode\n", - "Epoch 3339: model parameters saved\n", - "Epoch 3340 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3340: avg_loss appended (2.7778)\n", - "Epoch 3340: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3340: accuracy appended (80.56%)\n", - "Epoch 3340: model set back to train mode\n", - "Epoch 3340: model parameters saved\n", - "Epoch 3341 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3341: avg_loss appended (2.7778)\n", - "Epoch 3341: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3341: accuracy appended (80.56%)\n", - "Epoch 3341: model set back to train mode\n", - "Epoch 3341: model parameters saved\n", - "Epoch 3342 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3342: avg_loss appended (2.7778)\n", - "Epoch 3342: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3342: accuracy appended (80.56%)\n", - "Epoch 3342: model set back to train mode\n", - "Epoch 3342: model parameters saved\n", - "Epoch 3343 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3343: avg_loss appended (2.7778)\n", - "Epoch 3343: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3343: accuracy appended (80.56%)\n", - "Epoch 3343: model set back to train mode\n", - "Epoch 3343: model parameters saved\n", - "Epoch 3344 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3344: avg_loss appended (2.7778)\n", - "Epoch 3344: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3344: accuracy appended (80.56%)\n", - "Epoch 3344: model set back to train mode\n", - "Epoch 3344: model parameters saved\n", - "Epoch 3345 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3345: avg_loss appended (2.7778)\n", - "Epoch 3345: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3345: accuracy appended (80.56%)\n", - "Epoch 3345: model set back to train mode\n", - "Epoch 3345: model parameters saved\n", - "Epoch 3346 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3346: avg_loss appended (2.7778)\n", - "Epoch 3346: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3346: accuracy appended (80.56%)\n", - "Epoch 3346: model set back to train mode\n", - "Epoch 3346: model parameters saved\n", - "Epoch 3347 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3347: avg_loss appended (2.7778)\n", - "Epoch 3347: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3347: accuracy appended (80.56%)\n", - "Epoch 3347: model set back to train mode\n", - "Epoch 3347: model parameters saved\n", - "Epoch 3348 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3348: avg_loss appended (2.7778)\n", - "Epoch 3348: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3348: accuracy appended (80.56%)\n", - "Epoch 3348: model set back to train mode\n", - "Epoch 3348: model parameters saved\n", - "Epoch 3349 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3349: avg_loss appended (2.7778)\n", - "Epoch 3349: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3349: accuracy appended (80.56%)\n", - "Epoch 3349: model set back to train mode\n", - "Epoch 3349: model parameters saved\n", - "Epoch 3350 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3350: avg_loss appended (2.7778)\n", - "Epoch 3350: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3350: accuracy appended (80.56%)\n", - "Epoch 3350: model set back to train mode\n", - "Epoch 3350: model parameters saved\n", - "Epoch 3351 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3351: avg_loss appended (2.7778)\n", - "Epoch 3351: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3351: accuracy appended (80.56%)\n", - "Epoch 3351: model set back to train mode\n", - "Epoch 3351: model parameters saved\n", - "Epoch 3352 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3352: avg_loss appended (2.7778)\n", - "Epoch 3352: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3352: accuracy appended (80.56%)\n", - "Epoch 3352: model set back to train mode\n", - "Epoch 3352: model parameters saved\n", - "Epoch 3353 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3353: avg_loss appended (2.7778)\n", - "Epoch 3353: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3353: accuracy appended (80.56%)\n", - "Epoch 3353: model set back to train mode\n", - "Epoch 3353: model parameters saved\n", - "Epoch 3354 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3354: avg_loss appended (2.7778)\n", - "Epoch 3354: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3354: accuracy appended (80.56%)\n", - "Epoch 3354: model set back to train mode\n", - "Epoch 3354: model parameters saved\n", - "Epoch 3355 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3355: avg_loss appended (2.7778)\n", - "Epoch 3355: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3355: accuracy appended (80.56%)\n", - "Epoch 3355: model set back to train mode\n", - "Epoch 3355: model parameters saved\n", - "Epoch 3356 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3356: avg_loss appended (2.7778)\n", - "Epoch 3356: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3356: accuracy appended (80.56%)\n", - "Epoch 3356: model set back to train mode\n", - "Epoch 3356: model parameters saved\n", - "Epoch 3357 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3357: avg_loss appended (2.7778)\n", - "Epoch 3357: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3357: accuracy appended (80.56%)\n", - "Epoch 3357: model set back to train mode\n", - "Epoch 3357: model parameters saved\n", - "Epoch 3358 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3358: avg_loss appended (2.7778)\n", - "Epoch 3358: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3358: accuracy appended (80.56%)\n", - "Epoch 3358: model set back to train mode\n", - "Epoch 3358: model parameters saved\n", - "Epoch 3359 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3359: avg_loss appended (2.7778)\n", - "Epoch 3359: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3359: accuracy appended (80.56%)\n", - "Epoch 3359: model set back to train mode\n", - "Epoch 3359: model parameters saved\n", - "Epoch 3360 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3360: avg_loss appended (2.7778)\n", - "Epoch 3360: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3360: accuracy appended (80.56%)\n", - "Epoch 3360: model set back to train mode\n", - "Epoch 3360: model parameters saved\n", - "Epoch 3361 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3361: avg_loss appended (2.7778)\n", - "Epoch 3361: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3361: accuracy appended (80.56%)\n", - "Epoch 3361: model set back to train mode\n", - "Epoch 3361: model parameters saved\n", - "Epoch 3362 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3362: avg_loss appended (2.7778)\n", - "Epoch 3362: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3362: accuracy appended (80.56%)\n", - "Epoch 3362: model set back to train mode\n", - "Epoch 3362: model parameters saved\n", - "Epoch 3363 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3363: avg_loss appended (2.7778)\n", - "Epoch 3363: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3363: accuracy appended (80.56%)\n", - "Epoch 3363: model set back to train mode\n", - "Epoch 3363: model parameters saved\n", - "Epoch 3364 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3364: avg_loss appended (2.7778)\n", - "Epoch 3364: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3364: accuracy appended (80.56%)\n", - "Epoch 3364: model set back to train mode\n", - "Epoch 3364: model parameters saved\n", - "Epoch 3365 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3365: avg_loss appended (2.7778)\n", - "Epoch 3365: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3365: accuracy appended (80.56%)\n", - "Epoch 3365: model set back to train mode\n", - "Epoch 3365: model parameters saved\n", - "Epoch 3366 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3366: avg_loss appended (2.7778)\n", - "Epoch 3366: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3366: accuracy appended (80.56%)\n", - "Epoch 3366: model set back to train mode\n", - "Epoch 3366: model parameters saved\n", - "Epoch 3367 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3367: avg_loss appended (2.7778)\n", - "Epoch 3367: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3367: accuracy appended (80.56%)\n", - "Epoch 3367: model set back to train mode\n", - "Epoch 3367: model parameters saved\n", - "Epoch 3368 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3368: avg_loss appended (2.7778)\n", - "Epoch 3368: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3368: accuracy appended (80.56%)\n", - "Epoch 3368: model set back to train mode\n", - "Epoch 3368: model parameters saved\n", - "Epoch 3369 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3369: avg_loss appended (2.7778)\n", - "Epoch 3369: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3369: accuracy appended (80.56%)\n", - "Epoch 3369: model set back to train mode\n", - "Epoch 3369: model parameters saved\n", - "Epoch 3370 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3370: avg_loss appended (2.7778)\n", - "Epoch 3370: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3370: accuracy appended (80.56%)\n", - "Epoch 3370: model set back to train mode\n", - "Epoch 3370: model parameters saved\n", - "Epoch 3371 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3371: avg_loss appended (2.7778)\n", - "Epoch 3371: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3371: accuracy appended (80.56%)\n", - "Epoch 3371: model set back to train mode\n", - "Epoch 3371: model parameters saved\n", - "Epoch 3372 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3372: avg_loss appended (2.7778)\n", - "Epoch 3372: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3372: accuracy appended (80.56%)\n", - "Epoch 3372: model set back to train mode\n", - "Epoch 3372: model parameters saved\n", - "Epoch 3373 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3373: avg_loss appended (2.7778)\n", - "Epoch 3373: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3373: accuracy appended (80.56%)\n", - "Epoch 3373: model set back to train mode\n", - "Epoch 3373: model parameters saved\n", - "Epoch 3374 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3374: avg_loss appended (2.7778)\n", - "Epoch 3374: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3374: accuracy appended (80.56%)\n", - "Epoch 3374: model set back to train mode\n", - "Epoch 3374: model parameters saved\n", - "Epoch 3375 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3375: avg_loss appended (2.7778)\n", - "Epoch 3375: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3375: accuracy appended (80.56%)\n", - "Epoch 3375: model set back to train mode\n", - "Epoch 3375: model parameters saved\n", - "Epoch 3376 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3376: avg_loss appended (2.7778)\n", - "Epoch 3376: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3376: accuracy appended (80.56%)\n", - "Epoch 3376: model set back to train mode\n", - "Epoch 3376: model parameters saved\n", - "Epoch 3377 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3377: avg_loss appended (2.7778)\n", - "Epoch 3377: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3377: accuracy appended (80.56%)\n", - "Epoch 3377: model set back to train mode\n", - "Epoch 3377: model parameters saved\n", - "Epoch 3378 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3378: avg_loss appended (2.7778)\n", - "Epoch 3378: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3378: accuracy appended (80.56%)\n", - "Epoch 3378: model set back to train mode\n", - "Epoch 3378: model parameters saved\n", - "Epoch 3379 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3379: avg_loss appended (2.7778)\n", - "Epoch 3379: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3379: accuracy appended (80.56%)\n", - "Epoch 3379: model set back to train mode\n", - "Epoch 3379: model parameters saved\n", - "Epoch 3380 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3380: avg_loss appended (2.7778)\n", - "Epoch 3380: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3380: accuracy appended (80.56%)\n", - "Epoch 3380: model set back to train mode\n", - "Epoch 3380: model parameters saved\n", - "Epoch 3381 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3381: avg_loss appended (2.7778)\n", - "Epoch 3381: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3381: accuracy appended (80.56%)\n", - "Epoch 3381: model set back to train mode\n", - "Epoch 3381: model parameters saved\n", - "Epoch 3382 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3382: avg_loss appended (2.7778)\n", - "Epoch 3382: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3382: accuracy appended (80.56%)\n", - "Epoch 3382: model set back to train mode\n", - "Epoch 3382: model parameters saved\n", - "Epoch 3383 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3383: avg_loss appended (2.7778)\n", - "Epoch 3383: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3383: accuracy appended (80.56%)\n", - "Epoch 3383: model set back to train mode\n", - "Epoch 3383: model parameters saved\n", - "Epoch 3384 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3384: avg_loss appended (2.7778)\n", - "Epoch 3384: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3384: accuracy appended (80.56%)\n", - "Epoch 3384: model set back to train mode\n", - "Epoch 3384: model parameters saved\n", - "Epoch 3385 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3385: avg_loss appended (2.7778)\n", - "Epoch 3385: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3385: accuracy appended (80.56%)\n", - "Epoch 3385: model set back to train mode\n", - "Epoch 3385: model parameters saved\n", - "Epoch 3386 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3386: avg_loss appended (2.7778)\n", - "Epoch 3386: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3386: accuracy appended (80.56%)\n", - "Epoch 3386: model set back to train mode\n", - "Epoch 3386: model parameters saved\n", - "Epoch 3387 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3387: avg_loss appended (2.7778)\n", - "Epoch 3387: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3387: accuracy appended (80.56%)\n", - "Epoch 3387: model set back to train mode\n", - "Epoch 3387: model parameters saved\n", - "Epoch 3388 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3388: avg_loss appended (2.7778)\n", - "Epoch 3388: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3388: accuracy appended (80.56%)\n", - "Epoch 3388: model set back to train mode\n", - "Epoch 3388: model parameters saved\n", - "Epoch 3389 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3389: avg_loss appended (2.7778)\n", - "Epoch 3389: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3389: accuracy appended (80.56%)\n", - "Epoch 3389: model set back to train mode\n", - "Epoch 3389: model parameters saved\n", - "Epoch 3390 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3390: avg_loss appended (2.7778)\n", - "Epoch 3390: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3390: accuracy appended (80.56%)\n", - "Epoch 3390: model set back to train mode\n", - "Epoch 3390: model parameters saved\n", - "Epoch 3391 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3391: avg_loss appended (2.7778)\n", - "Epoch 3391: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3391: accuracy appended (80.56%)\n", - "Epoch 3391: model set back to train mode\n", - "Epoch 3391: model parameters saved\n", - "Epoch 3392 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3392: avg_loss appended (2.7778)\n", - "Epoch 3392: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3392: accuracy appended (80.56%)\n", - "Epoch 3392: model set back to train mode\n", - "Epoch 3392: model parameters saved\n", - "Epoch 3393 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3393: avg_loss appended (2.7778)\n", - "Epoch 3393: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3393: accuracy appended (80.56%)\n", - "Epoch 3393: model set back to train mode\n", - "Epoch 3393: model parameters saved\n", - "Epoch 3394 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3394: avg_loss appended (2.7778)\n", - "Epoch 3394: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3394: accuracy appended (80.56%)\n", - "Epoch 3394: model set back to train mode\n", - "Epoch 3394: model parameters saved\n", - "Epoch 3395 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3395: avg_loss appended (2.7778)\n", - "Epoch 3395: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3395: accuracy appended (80.56%)\n", - "Epoch 3395: model set back to train mode\n", - "Epoch 3395: model parameters saved\n", - "Epoch 3396 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3396: avg_loss appended (2.7778)\n", - "Epoch 3396: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3396: accuracy appended (80.56%)\n", - "Epoch 3396: model set back to train mode\n", - "Epoch 3396: model parameters saved\n", - "Epoch 3397 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3397: avg_loss appended (2.7778)\n", - "Epoch 3397: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3397: accuracy appended (80.56%)\n", - "Epoch 3397: model set back to train mode\n", - "Epoch 3397: model parameters saved\n", - "Epoch 3398 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3398: avg_loss appended (2.7778)\n", - "Epoch 3398: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3398: accuracy appended (80.56%)\n", - "Epoch 3398: model set back to train mode\n", - "Epoch 3398: model parameters saved\n", - "Epoch 3399 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3399: avg_loss appended (2.7778)\n", - "Epoch 3399: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3399: accuracy appended (80.56%)\n", - "Epoch 3399: model set back to train mode\n", - "Epoch 3399: model parameters saved\n", - "Epoch 3400 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3400: avg_loss appended (2.7778)\n", - "Epoch 3400: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3400: accuracy appended (80.56%)\n", - "Epoch 3400: model set back to train mode\n", - "Epoch 3400: model parameters saved\n", - "Epoch 3400/10000, Loss: 2.7778, Accuracy: 80.56%\n", - "Epoch 3401 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3401: avg_loss appended (2.7778)\n", - "Epoch 3401: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3401: accuracy appended (80.56%)\n", - "Epoch 3401: model set back to train mode\n", - "Epoch 3401: model parameters saved\n", - "Epoch 3402 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3402: avg_loss appended (2.7778)\n", - "Epoch 3402: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3402: accuracy appended (80.56%)\n", - "Epoch 3402: model set back to train mode\n", - "Epoch 3402: model parameters saved\n", - "Epoch 3403 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3403: avg_loss appended (2.7778)\n", - "Epoch 3403: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3403: accuracy appended (80.56%)\n", - "Epoch 3403: model set back to train mode\n", - "Epoch 3403: model parameters saved\n", - "Epoch 3404 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3404: avg_loss appended (2.7778)\n", - "Epoch 3404: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3404: accuracy appended (80.56%)\n", - "Epoch 3404: model set back to train mode\n", - "Epoch 3404: model parameters saved\n", - "Epoch 3405 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3405: avg_loss appended (2.7778)\n", - "Epoch 3405: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3405: accuracy appended (80.56%)\n", - "Epoch 3405: model set back to train mode\n", - "Epoch 3405: model parameters saved\n", - "Epoch 3406 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3406: avg_loss appended (2.7778)\n", - "Epoch 3406: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3406: accuracy appended (80.56%)\n", - "Epoch 3406: model set back to train mode\n", - "Epoch 3406: model parameters saved\n", - "Epoch 3407 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3407: avg_loss appended (2.7778)\n", - "Epoch 3407: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3407: accuracy appended (80.56%)\n", - "Epoch 3407: model set back to train mode\n", - "Epoch 3407: model parameters saved\n", - "Epoch 3408 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3408: avg_loss appended (2.7778)\n", - "Epoch 3408: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3408: accuracy appended (80.56%)\n", - "Epoch 3408: model set back to train mode\n", - "Epoch 3408: model parameters saved\n", - "Epoch 3409 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3409: avg_loss appended (2.7778)\n", - "Epoch 3409: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3409: accuracy appended (80.56%)\n", - "Epoch 3409: model set back to train mode\n", - "Epoch 3409: model parameters saved\n", - "Epoch 3410 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3410: avg_loss appended (2.7778)\n", - "Epoch 3410: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3410: accuracy appended (80.56%)\n", - "Epoch 3410: model set back to train mode\n", - "Epoch 3410: model parameters saved\n", - "Epoch 3411 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3411: avg_loss appended (2.7778)\n", - "Epoch 3411: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3411: accuracy appended (80.56%)\n", - "Epoch 3411: model set back to train mode\n", - "Epoch 3411: model parameters saved\n", - "Epoch 3412 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3412: avg_loss appended (2.7778)\n", - "Epoch 3412: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3412: accuracy appended (80.56%)\n", - "Epoch 3412: model set back to train mode\n", - "Epoch 3412: model parameters saved\n", - "Epoch 3413 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3413: avg_loss appended (2.7778)\n", - "Epoch 3413: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3413: accuracy appended (80.56%)\n", - "Epoch 3413: model set back to train mode\n", - "Epoch 3413: model parameters saved\n", - "Epoch 3414 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3414: avg_loss appended (2.7778)\n", - "Epoch 3414: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3414: accuracy appended (80.56%)\n", - "Epoch 3414: model set back to train mode\n", - "Epoch 3414: model parameters saved\n", - "Epoch 3415 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3415: avg_loss appended (2.7778)\n", - "Epoch 3415: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3415: accuracy appended (80.56%)\n", - "Epoch 3415: model set back to train mode\n", - "Epoch 3415: model parameters saved\n", - "Epoch 3416 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3416: avg_loss appended (2.7778)\n", - "Epoch 3416: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3416: accuracy appended (80.56%)\n", - "Epoch 3416: model set back to train mode\n", - "Epoch 3416: model parameters saved\n", - "Epoch 3417 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3417: avg_loss appended (2.7778)\n", - "Epoch 3417: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3417: accuracy appended (80.56%)\n", - "Epoch 3417: model set back to train mode\n", - "Epoch 3417: model parameters saved\n", - "Epoch 3418 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3418: avg_loss appended (2.7778)\n", - "Epoch 3418: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3418: accuracy appended (80.56%)\n", - "Epoch 3418: model set back to train mode\n", - "Epoch 3418: model parameters saved\n", - "Epoch 3419 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3419: avg_loss appended (2.7778)\n", - "Epoch 3419: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3419: accuracy appended (80.56%)\n", - "Epoch 3419: model set back to train mode\n", - "Epoch 3419: model parameters saved\n", - "Epoch 3420 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3420: avg_loss appended (2.7778)\n", - "Epoch 3420: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3420: accuracy appended (80.56%)\n", - "Epoch 3420: model set back to train mode\n", - "Epoch 3420: model parameters saved\n", - "Epoch 3421 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3421: avg_loss appended (2.7778)\n", - "Epoch 3421: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3421: accuracy appended (80.56%)\n", - "Epoch 3421: model set back to train mode\n", - "Epoch 3421: model parameters saved\n", - "Epoch 3422 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3422: avg_loss appended (2.7778)\n", - "Epoch 3422: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3422: accuracy appended (80.56%)\n", - "Epoch 3422: model set back to train mode\n", - "Epoch 3422: model parameters saved\n", - "Epoch 3423 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3423: avg_loss appended (2.7778)\n", - "Epoch 3423: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3423: accuracy appended (80.56%)\n", - "Epoch 3423: model set back to train mode\n", - "Epoch 3423: model parameters saved\n", - "Epoch 3424 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3424: avg_loss appended (2.7778)\n", - "Epoch 3424: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3424: accuracy appended (80.56%)\n", - "Epoch 3424: model set back to train mode\n", - "Epoch 3424: model parameters saved\n", - "Epoch 3425 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3425: avg_loss appended (2.7778)\n", - "Epoch 3425: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3425: accuracy appended (80.56%)\n", - "Epoch 3425: model set back to train mode\n", - "Epoch 3425: model parameters saved\n", - "Epoch 3426 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3426: avg_loss appended (2.7778)\n", - "Epoch 3426: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3426: accuracy appended (80.56%)\n", - "Epoch 3426: model set back to train mode\n", - "Epoch 3426: model parameters saved\n", - "Epoch 3427 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3427: avg_loss appended (2.7778)\n", - "Epoch 3427: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3427: accuracy appended (80.56%)\n", - "Epoch 3427: model set back to train mode\n", - "Epoch 3427: model parameters saved\n", - "Epoch 3428 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3428: avg_loss appended (2.7778)\n", - "Epoch 3428: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3428: accuracy appended (80.56%)\n", - "Epoch 3428: model set back to train mode\n", - "Epoch 3428: model parameters saved\n", - "Epoch 3429 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3429: avg_loss appended (2.7778)\n", - "Epoch 3429: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3429: accuracy appended (80.56%)\n", - "Epoch 3429: model set back to train mode\n", - "Epoch 3429: model parameters saved\n", - "Epoch 3430 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3430: avg_loss appended (2.7778)\n", - "Epoch 3430: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3430: accuracy appended (80.56%)\n", - "Epoch 3430: model set back to train mode\n", - "Epoch 3430: model parameters saved\n", - "Epoch 3431 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3431: avg_loss appended (2.7778)\n", - "Epoch 3431: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3431: accuracy appended (80.56%)\n", - "Epoch 3431: model set back to train mode\n", - "Epoch 3431: model parameters saved\n", - "Epoch 3432 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3432: avg_loss appended (2.7778)\n", - "Epoch 3432: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3432: accuracy appended (80.56%)\n", - "Epoch 3432: model set back to train mode\n", - "Epoch 3432: model parameters saved\n", - "Epoch 3433 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3433: avg_loss appended (2.7778)\n", - "Epoch 3433: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3433: accuracy appended (80.56%)\n", - "Epoch 3433: model set back to train mode\n", - "Epoch 3433: model parameters saved\n", - "Epoch 3434 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3434: avg_loss appended (2.7778)\n", - "Epoch 3434: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3434: accuracy appended (80.56%)\n", - "Epoch 3434: model set back to train mode\n", - "Epoch 3434: model parameters saved\n", - "Epoch 3435 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3435: avg_loss appended (2.7778)\n", - "Epoch 3435: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3435: accuracy appended (80.56%)\n", - "Epoch 3435: model set back to train mode\n", - "Epoch 3435: model parameters saved\n", - "Epoch 3436 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3436: avg_loss appended (2.7778)\n", - "Epoch 3436: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3436: accuracy appended (80.56%)\n", - "Epoch 3436: model set back to train mode\n", - "Epoch 3436: model parameters saved\n", - "Epoch 3437 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3437: avg_loss appended (2.7778)\n", - "Epoch 3437: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3437: accuracy appended (80.56%)\n", - "Epoch 3437: model set back to train mode\n", - "Epoch 3437: model parameters saved\n", - "Epoch 3438 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3438: avg_loss appended (2.7778)\n", - "Epoch 3438: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3438: accuracy appended (80.56%)\n", - "Epoch 3438: model set back to train mode\n", - "Epoch 3438: model parameters saved\n", - "Epoch 3439 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3439: avg_loss appended (2.7778)\n", - "Epoch 3439: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3439: accuracy appended (80.56%)\n", - "Epoch 3439: model set back to train mode\n", - "Epoch 3439: model parameters saved\n", - "Epoch 3440 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3440: avg_loss appended (2.7778)\n", - "Epoch 3440: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3440: accuracy appended (80.56%)\n", - "Epoch 3440: model set back to train mode\n", - "Epoch 3440: model parameters saved\n", - "Epoch 3441 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3441: avg_loss appended (2.7778)\n", - "Epoch 3441: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3441: accuracy appended (80.56%)\n", - "Epoch 3441: model set back to train mode\n", - "Epoch 3441: model parameters saved\n", - "Epoch 3442 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3442: avg_loss appended (2.7778)\n", - "Epoch 3442: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3442: accuracy appended (80.56%)\n", - "Epoch 3442: model set back to train mode\n", - "Epoch 3442: model parameters saved\n", - "Epoch 3443 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3443: avg_loss appended (2.7778)\n", - "Epoch 3443: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3443: accuracy appended (80.56%)\n", - "Epoch 3443: model set back to train mode\n", - "Epoch 3443: model parameters saved\n", - "Epoch 3444 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3444: avg_loss appended (2.7778)\n", - "Epoch 3444: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3444: accuracy appended (80.56%)\n", - "Epoch 3444: model set back to train mode\n", - "Epoch 3444: model parameters saved\n", - "Epoch 3445 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3445: avg_loss appended (2.7778)\n", - "Epoch 3445: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3445: accuracy appended (80.56%)\n", - "Epoch 3445: model set back to train mode\n", - "Epoch 3445: model parameters saved\n", - "Epoch 3446 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3446: avg_loss appended (2.7778)\n", - "Epoch 3446: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3446: accuracy appended (80.56%)\n", - "Epoch 3446: model set back to train mode\n", - "Epoch 3446: model parameters saved\n", - "Epoch 3447 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3447: avg_loss appended (2.7778)\n", - "Epoch 3447: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3447: accuracy appended (80.56%)\n", - "Epoch 3447: model set back to train mode\n", - "Epoch 3447: model parameters saved\n", - "Epoch 3448 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3448: avg_loss appended (2.7778)\n", - "Epoch 3448: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3448: accuracy appended (80.56%)\n", - "Epoch 3448: model set back to train mode\n", - "Epoch 3448: model parameters saved\n", - "Epoch 3449 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3449: avg_loss appended (2.7778)\n", - "Epoch 3449: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3449: accuracy appended (80.56%)\n", - "Epoch 3449: model set back to train mode\n", - "Epoch 3449: model parameters saved\n", - "Epoch 3450 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3450: avg_loss appended (2.7778)\n", - "Epoch 3450: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3450: accuracy appended (80.56%)\n", - "Epoch 3450: model set back to train mode\n", - "Epoch 3450: model parameters saved\n", - "Epoch 3451 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3451: avg_loss appended (2.7778)\n", - "Epoch 3451: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3451: accuracy appended (80.56%)\n", - "Epoch 3451: model set back to train mode\n", - "Epoch 3451: model parameters saved\n", - "Epoch 3452 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3452: avg_loss appended (2.7778)\n", - "Epoch 3452: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3452: accuracy appended (80.56%)\n", - "Epoch 3452: model set back to train mode\n", - "Epoch 3452: model parameters saved\n", - "Epoch 3453 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3453: avg_loss appended (2.7778)\n", - "Epoch 3453: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3453: accuracy appended (80.56%)\n", - "Epoch 3453: model set back to train mode\n", - "Epoch 3453: model parameters saved\n", - "Epoch 3454 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3454: avg_loss appended (2.7778)\n", - "Epoch 3454: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3454: accuracy appended (80.56%)\n", - "Epoch 3454: model set back to train mode\n", - "Epoch 3454: model parameters saved\n", - "Epoch 3455 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3455: avg_loss appended (2.7778)\n", - "Epoch 3455: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3455: accuracy appended (80.56%)\n", - "Epoch 3455: model set back to train mode\n", - "Epoch 3455: model parameters saved\n", - "Epoch 3456 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3456: avg_loss appended (2.7778)\n", - "Epoch 3456: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3456: accuracy appended (80.56%)\n", - "Epoch 3456: model set back to train mode\n", - "Epoch 3456: model parameters saved\n", - "Epoch 3457 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3457: avg_loss appended (2.7778)\n", - "Epoch 3457: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3457: accuracy appended (80.56%)\n", - "Epoch 3457: model set back to train mode\n", - "Epoch 3457: model parameters saved\n", - "Epoch 3458 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3458: avg_loss appended (2.7778)\n", - "Epoch 3458: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3458: accuracy appended (80.56%)\n", - "Epoch 3458: model set back to train mode\n", - "Epoch 3458: model parameters saved\n", - "Epoch 3459 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3459: avg_loss appended (2.7778)\n", - "Epoch 3459: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3459: accuracy appended (80.56%)\n", - "Epoch 3459: model set back to train mode\n", - "Epoch 3459: model parameters saved\n", - "Epoch 3460 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3460: avg_loss appended (2.7778)\n", - "Epoch 3460: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3460: accuracy appended (80.56%)\n", - "Epoch 3460: model set back to train mode\n", - "Epoch 3460: model parameters saved\n", - "Epoch 3461 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3461: avg_loss appended (2.7778)\n", - "Epoch 3461: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3461: accuracy appended (80.56%)\n", - "Epoch 3461: model set back to train mode\n", - "Epoch 3461: model parameters saved\n", - "Epoch 3462 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3462: avg_loss appended (2.7778)\n", - "Epoch 3462: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3462: accuracy appended (80.56%)\n", - "Epoch 3462: model set back to train mode\n", - "Epoch 3462: model parameters saved\n", - "Epoch 3463 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3463: avg_loss appended (2.7778)\n", - "Epoch 3463: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3463: accuracy appended (80.56%)\n", - "Epoch 3463: model set back to train mode\n", - "Epoch 3463: model parameters saved\n", - "Epoch 3464 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3464: avg_loss appended (2.7778)\n", - "Epoch 3464: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3464: accuracy appended (80.56%)\n", - "Epoch 3464: model set back to train mode\n", - "Epoch 3464: model parameters saved\n", - "Epoch 3465 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3465: avg_loss appended (2.7778)\n", - "Epoch 3465: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3465: accuracy appended (80.56%)\n", - "Epoch 3465: model set back to train mode\n", - "Epoch 3465: model parameters saved\n", - "Epoch 3466 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3466: avg_loss appended (2.7778)\n", - "Epoch 3466: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3466: accuracy appended (80.56%)\n", - "Epoch 3466: model set back to train mode\n", - "Epoch 3466: model parameters saved\n", - "Epoch 3467 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3467: avg_loss appended (2.7778)\n", - "Epoch 3467: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3467: accuracy appended (80.56%)\n", - "Epoch 3467: model set back to train mode\n", - "Epoch 3467: model parameters saved\n", - "Epoch 3468 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3468: avg_loss appended (2.7778)\n", - "Epoch 3468: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3468: accuracy appended (80.56%)\n", - "Epoch 3468: model set back to train mode\n", - "Epoch 3468: model parameters saved\n", - "Epoch 3469 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3469: avg_loss appended (2.7778)\n", - "Epoch 3469: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3469: accuracy appended (80.56%)\n", - "Epoch 3469: model set back to train mode\n", - "Epoch 3469: model parameters saved\n", - "Epoch 3470 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3470: avg_loss appended (2.7778)\n", - "Epoch 3470: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3470: accuracy appended (80.56%)\n", - "Epoch 3470: model set back to train mode\n", - "Epoch 3470: model parameters saved\n", - "Epoch 3471 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3471: avg_loss appended (2.7778)\n", - "Epoch 3471: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3471: accuracy appended (80.56%)\n", - "Epoch 3471: model set back to train mode\n", - "Epoch 3471: model parameters saved\n", - "Epoch 3472 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3472: avg_loss appended (2.7778)\n", - "Epoch 3472: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3472: accuracy appended (80.56%)\n", - "Epoch 3472: model set back to train mode\n", - "Epoch 3472: model parameters saved\n", - "Epoch 3473 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3473: avg_loss appended (2.7778)\n", - "Epoch 3473: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3473: accuracy appended (80.56%)\n", - "Epoch 3473: model set back to train mode\n", - "Epoch 3473: model parameters saved\n", - "Epoch 3474 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3474: avg_loss appended (2.7778)\n", - "Epoch 3474: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3474: accuracy appended (80.56%)\n", - "Epoch 3474: model set back to train mode\n", - "Epoch 3474: model parameters saved\n", - "Epoch 3475 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3475: avg_loss appended (2.7778)\n", - "Epoch 3475: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3475: accuracy appended (80.56%)\n", - "Epoch 3475: model set back to train mode\n", - "Epoch 3475: model parameters saved\n", - "Epoch 3476 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3476: avg_loss appended (2.7778)\n", - "Epoch 3476: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3476: accuracy appended (80.56%)\n", - "Epoch 3476: model set back to train mode\n", - "Epoch 3476: model parameters saved\n", - "Epoch 3477 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3477: avg_loss appended (2.7778)\n", - "Epoch 3477: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3477: accuracy appended (80.56%)\n", - "Epoch 3477: model set back to train mode\n", - "Epoch 3477: model parameters saved\n", - "Epoch 3478 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3478: avg_loss appended (2.7778)\n", - "Epoch 3478: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3478: accuracy appended (80.56%)\n", - "Epoch 3478: model set back to train mode\n", - "Epoch 3478: model parameters saved\n", - "Epoch 3479 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3479: avg_loss appended (2.7778)\n", - "Epoch 3479: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3479: accuracy appended (80.56%)\n", - "Epoch 3479: model set back to train mode\n", - "Epoch 3479: model parameters saved\n", - "Epoch 3480 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3480: avg_loss appended (2.7778)\n", - "Epoch 3480: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3480: accuracy appended (80.56%)\n", - "Epoch 3480: model set back to train mode\n", - "Epoch 3480: model parameters saved\n", - "Epoch 3481 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3481: avg_loss appended (2.7778)\n", - "Epoch 3481: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3481: accuracy appended (80.56%)\n", - "Epoch 3481: model set back to train mode\n", - "Epoch 3481: model parameters saved\n", - "Epoch 3482 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3482: avg_loss appended (2.7778)\n", - "Epoch 3482: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3482: accuracy appended (80.56%)\n", - "Epoch 3482: model set back to train mode\n", - "Epoch 3482: model parameters saved\n", - "Epoch 3483 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3483: avg_loss appended (2.7778)\n", - "Epoch 3483: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3483: accuracy appended (80.56%)\n", - "Epoch 3483: model set back to train mode\n", - "Epoch 3483: model parameters saved\n", - "Epoch 3484 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3484: avg_loss appended (2.7778)\n", - "Epoch 3484: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3484: accuracy appended (80.56%)\n", - "Epoch 3484: model set back to train mode\n", - "Epoch 3484: model parameters saved\n", - "Epoch 3485 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3485: avg_loss appended (2.7778)\n", - "Epoch 3485: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3485: accuracy appended (80.56%)\n", - "Epoch 3485: model set back to train mode\n", - "Epoch 3485: model parameters saved\n", - "Epoch 3486 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3486: avg_loss appended (2.7778)\n", - "Epoch 3486: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3486: accuracy appended (80.56%)\n", - "Epoch 3486: model set back to train mode\n", - "Epoch 3486: model parameters saved\n", - "Epoch 3487 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3487: avg_loss appended (2.7778)\n", - "Epoch 3487: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3487: accuracy appended (80.56%)\n", - "Epoch 3487: model set back to train mode\n", - "Epoch 3487: model parameters saved\n", - "Epoch 3488 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3488: avg_loss appended (2.7778)\n", - "Epoch 3488: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3488: accuracy appended (80.56%)\n", - "Epoch 3488: model set back to train mode\n", - "Epoch 3488: model parameters saved\n", - "Epoch 3489 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3489: avg_loss appended (2.7778)\n", - "Epoch 3489: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3489: accuracy appended (80.56%)\n", - "Epoch 3489: model set back to train mode\n", - "Epoch 3489: model parameters saved\n", - "Epoch 3490 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3490: avg_loss appended (2.7778)\n", - "Epoch 3490: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3490: accuracy appended (80.56%)\n", - "Epoch 3490: model set back to train mode\n", - "Epoch 3490: model parameters saved\n", - "Epoch 3491 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3491: avg_loss appended (2.7778)\n", - "Epoch 3491: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3491: accuracy appended (80.56%)\n", - "Epoch 3491: model set back to train mode\n", - "Epoch 3491: model parameters saved\n", - "Epoch 3492 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3492: avg_loss appended (2.7778)\n", - "Epoch 3492: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3492: accuracy appended (80.56%)\n", - "Epoch 3492: model set back to train mode\n", - "Epoch 3492: model parameters saved\n", - "Epoch 3493 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3493: avg_loss appended (2.7778)\n", - "Epoch 3493: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3493: accuracy appended (80.56%)\n", - "Epoch 3493: model set back to train mode\n", - "Epoch 3493: model parameters saved\n", - "Epoch 3494 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3494: avg_loss appended (2.7778)\n", - "Epoch 3494: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3494: accuracy appended (80.56%)\n", - "Epoch 3494: model set back to train mode\n", - "Epoch 3494: model parameters saved\n", - "Epoch 3495 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3495: avg_loss appended (2.7778)\n", - "Epoch 3495: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3495: accuracy appended (80.56%)\n", - "Epoch 3495: model set back to train mode\n", - "Epoch 3495: model parameters saved\n", - "Epoch 3496 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3496: avg_loss appended (2.7778)\n", - "Epoch 3496: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3496: accuracy appended (80.56%)\n", - "Epoch 3496: model set back to train mode\n", - "Epoch 3496: model parameters saved\n", - "Epoch 3497 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3497: avg_loss appended (2.7778)\n", - "Epoch 3497: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3497: accuracy appended (80.56%)\n", - "Epoch 3497: model set back to train mode\n", - "Epoch 3497: model parameters saved\n", - "Epoch 3498 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3498: avg_loss appended (2.7778)\n", - "Epoch 3498: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3498: accuracy appended (80.56%)\n", - "Epoch 3498: model set back to train mode\n", - "Epoch 3498: model parameters saved\n", - "Epoch 3499 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3499: avg_loss appended (2.7778)\n", - "Epoch 3499: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3499: accuracy appended (80.56%)\n", - "Epoch 3499: model set back to train mode\n", - "Epoch 3499: model parameters saved\n", - "Epoch 3500 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3500: avg_loss appended (2.7778)\n", - "Epoch 3500: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3500: accuracy appended (80.56%)\n", - "Epoch 3500: model set back to train mode\n", - "Epoch 3500: model parameters saved\n", - "Epoch 3500/10000, Loss: 2.7778, Accuracy: 80.56%\n", - "Epoch 3501 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3501: avg_loss appended (2.7778)\n", - "Epoch 3501: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3501: accuracy appended (80.56%)\n", - "Epoch 3501: model set back to train mode\n", - "Epoch 3501: model parameters saved\n", - "Epoch 3502 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3502: avg_loss appended (2.7778)\n", - "Epoch 3502: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3502: accuracy appended (80.56%)\n", - "Epoch 3502: model set back to train mode\n", - "Epoch 3502: model parameters saved\n", - "Epoch 3503 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3503: avg_loss appended (2.7778)\n", - "Epoch 3503: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3503: accuracy appended (80.56%)\n", - "Epoch 3503: model set back to train mode\n", - "Epoch 3503: model parameters saved\n", - "Epoch 3504 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3504: avg_loss appended (2.7778)\n", - "Epoch 3504: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3504: accuracy appended (80.56%)\n", - "Epoch 3504: model set back to train mode\n", - "Epoch 3504: model parameters saved\n", - "Epoch 3505 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3505: avg_loss appended (2.7778)\n", - "Epoch 3505: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3505: accuracy appended (80.56%)\n", - "Epoch 3505: model set back to train mode\n", - "Epoch 3505: model parameters saved\n", - "Epoch 3506 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3506: avg_loss appended (2.7778)\n", - "Epoch 3506: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3506: accuracy appended (80.56%)\n", - "Epoch 3506: model set back to train mode\n", - "Epoch 3506: model parameters saved\n", - "Epoch 3507 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3507: avg_loss appended (2.7778)\n", - "Epoch 3507: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3507: accuracy appended (80.56%)\n", - "Epoch 3507: model set back to train mode\n", - "Epoch 3507: model parameters saved\n", - "Epoch 3508 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3508: avg_loss appended (2.7778)\n", - "Epoch 3508: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3508: accuracy appended (80.56%)\n", - "Epoch 3508: model set back to train mode\n", - "Epoch 3508: model parameters saved\n", - "Epoch 3509 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3509: avg_loss appended (2.7778)\n", - "Epoch 3509: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3509: accuracy appended (80.56%)\n", - "Epoch 3509: model set back to train mode\n", - "Epoch 3509: model parameters saved\n", - "Epoch 3510 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3510: avg_loss appended (2.7778)\n", - "Epoch 3510: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3510: accuracy appended (80.56%)\n", - "Epoch 3510: model set back to train mode\n", - "Epoch 3510: model parameters saved\n", - "Epoch 3511 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3511: avg_loss appended (2.7778)\n", - "Epoch 3511: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3511: accuracy appended (80.56%)\n", - "Epoch 3511: model set back to train mode\n", - "Epoch 3511: model parameters saved\n", - "Epoch 3512 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3512: avg_loss appended (2.7778)\n", - "Epoch 3512: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3512: accuracy appended (80.56%)\n", - "Epoch 3512: model set back to train mode\n", - "Epoch 3512: model parameters saved\n", - "Epoch 3513 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3513: avg_loss appended (2.7778)\n", - "Epoch 3513: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3513: accuracy appended (80.56%)\n", - "Epoch 3513: model set back to train mode\n", - "Epoch 3513: model parameters saved\n", - "Epoch 3514 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3514: avg_loss appended (2.7778)\n", - "Epoch 3514: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3514: accuracy appended (80.56%)\n", - "Epoch 3514: model set back to train mode\n", - "Epoch 3514: model parameters saved\n", - "Epoch 3515 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3515: avg_loss appended (2.7778)\n", - "Epoch 3515: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3515: accuracy appended (80.56%)\n", - "Epoch 3515: model set back to train mode\n", - "Epoch 3515: model parameters saved\n", - "Epoch 3516 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3516: avg_loss appended (2.7778)\n", - "Epoch 3516: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3516: accuracy appended (80.56%)\n", - "Epoch 3516: model set back to train mode\n", - "Epoch 3516: model parameters saved\n", - "Epoch 3517 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3517: avg_loss appended (2.7778)\n", - "Epoch 3517: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3517: accuracy appended (80.56%)\n", - "Epoch 3517: model set back to train mode\n", - "Epoch 3517: model parameters saved\n", - "Epoch 3518 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3518: avg_loss appended (2.7778)\n", - "Epoch 3518: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3518: accuracy appended (80.56%)\n", - "Epoch 3518: model set back to train mode\n", - "Epoch 3518: model parameters saved\n", - "Epoch 3519 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3519: avg_loss appended (2.7778)\n", - "Epoch 3519: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3519: accuracy appended (80.56%)\n", - "Epoch 3519: model set back to train mode\n", - "Epoch 3519: model parameters saved\n", - "Epoch 3520 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3520: avg_loss appended (2.7778)\n", - "Epoch 3520: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3520: accuracy appended (80.56%)\n", - "Epoch 3520: model set back to train mode\n", - "Epoch 3520: model parameters saved\n", - "Epoch 3521 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3521: avg_loss appended (2.7778)\n", - "Epoch 3521: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3521: accuracy appended (80.56%)\n", - "Epoch 3521: model set back to train mode\n", - "Epoch 3521: model parameters saved\n", - "Epoch 3522 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3522: avg_loss appended (2.7778)\n", - "Epoch 3522: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3522: accuracy appended (80.56%)\n", - "Epoch 3522: model set back to train mode\n", - "Epoch 3522: model parameters saved\n", - "Epoch 3523 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3523: avg_loss appended (2.7778)\n", - "Epoch 3523: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3523: accuracy appended (80.56%)\n", - "Epoch 3523: model set back to train mode\n", - "Epoch 3523: model parameters saved\n", - "Epoch 3524 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3524: avg_loss appended (2.7778)\n", - "Epoch 3524: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3524: accuracy appended (80.56%)\n", - "Epoch 3524: model set back to train mode\n", - "Epoch 3524: model parameters saved\n", - "Epoch 3525 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3525: avg_loss appended (2.7778)\n", - "Epoch 3525: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3525: accuracy appended (80.56%)\n", - "Epoch 3525: model set back to train mode\n", - "Epoch 3525: model parameters saved\n", - "Epoch 3526 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3526: avg_loss appended (2.7778)\n", - "Epoch 3526: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3526: accuracy appended (80.56%)\n", - "Epoch 3526: model set back to train mode\n", - "Epoch 3526: model parameters saved\n", - "Epoch 3527 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3527: avg_loss appended (2.7778)\n", - "Epoch 3527: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3527: accuracy appended (80.56%)\n", - "Epoch 3527: model set back to train mode\n", - "Epoch 3527: model parameters saved\n", - "Epoch 3528 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3528: avg_loss appended (2.7778)\n", - "Epoch 3528: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3528: accuracy appended (80.56%)\n", - "Epoch 3528: model set back to train mode\n", - "Epoch 3528: model parameters saved\n", - "Epoch 3529 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3529: avg_loss appended (2.7778)\n", - "Epoch 3529: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3529: accuracy appended (80.56%)\n", - "Epoch 3529: model set back to train mode\n", - "Epoch 3529: model parameters saved\n", - "Epoch 3530 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3530: avg_loss appended (2.7778)\n", - "Epoch 3530: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3530: accuracy appended (80.56%)\n", - "Epoch 3530: model set back to train mode\n", - "Epoch 3530: model parameters saved\n", - "Epoch 3531 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3531: avg_loss appended (2.7778)\n", - "Epoch 3531: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3531: accuracy appended (80.56%)\n", - "Epoch 3531: model set back to train mode\n", - "Epoch 3531: model parameters saved\n", - "Epoch 3532 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3532: avg_loss appended (2.7778)\n", - "Epoch 3532: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3532: accuracy appended (80.56%)\n", - "Epoch 3532: model set back to train mode\n", - "Epoch 3532: model parameters saved\n", - "Epoch 3533 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3533: avg_loss appended (2.7778)\n", - "Epoch 3533: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3533: accuracy appended (80.56%)\n", - "Epoch 3533: model set back to train mode\n", - "Epoch 3533: model parameters saved\n", - "Epoch 3534 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3534: avg_loss appended (2.7778)\n", - "Epoch 3534: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3534: accuracy appended (80.56%)\n", - "Epoch 3534: model set back to train mode\n", - "Epoch 3534: model parameters saved\n", - "Epoch 3535 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3535: avg_loss appended (2.7778)\n", - "Epoch 3535: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3535: accuracy appended (80.56%)\n", - "Epoch 3535: model set back to train mode\n", - "Epoch 3535: model parameters saved\n", - "Epoch 3536 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3536: avg_loss appended (2.7778)\n", - "Epoch 3536: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3536: accuracy appended (80.56%)\n", - "Epoch 3536: model set back to train mode\n", - "Epoch 3536: model parameters saved\n", - "Epoch 3537 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3537: avg_loss appended (2.7778)\n", - "Epoch 3537: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3537: accuracy appended (80.56%)\n", - "Epoch 3537: model set back to train mode\n", - "Epoch 3537: model parameters saved\n", - "Epoch 3538 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3538: avg_loss appended (2.7778)\n", - "Epoch 3538: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3538: accuracy appended (80.56%)\n", - "Epoch 3538: model set back to train mode\n", - "Epoch 3538: model parameters saved\n", - "Epoch 3539 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3539: avg_loss appended (2.7778)\n", - "Epoch 3539: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3539: accuracy appended (80.56%)\n", - "Epoch 3539: model set back to train mode\n", - "Epoch 3539: model parameters saved\n", - "Epoch 3540 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3540: avg_loss appended (2.7778)\n", - "Epoch 3540: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3540: accuracy appended (80.56%)\n", - "Epoch 3540: model set back to train mode\n", - "Epoch 3540: model parameters saved\n", - "Epoch 3541 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3541: avg_loss appended (2.7778)\n", - "Epoch 3541: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3541: accuracy appended (80.56%)\n", - "Epoch 3541: model set back to train mode\n", - "Epoch 3541: model parameters saved\n", - "Epoch 3542 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3542: avg_loss appended (2.7778)\n", - "Epoch 3542: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3542: accuracy appended (80.56%)\n", - "Epoch 3542: model set back to train mode\n", - "Epoch 3542: model parameters saved\n", - "Epoch 3543 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3543: avg_loss appended (2.7778)\n", - "Epoch 3543: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3543: accuracy appended (80.56%)\n", - "Epoch 3543: model set back to train mode\n", - "Epoch 3543: model parameters saved\n", - "Epoch 3544 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3544: avg_loss appended (2.7778)\n", - "Epoch 3544: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3544: accuracy appended (80.56%)\n", - "Epoch 3544: model set back to train mode\n", - "Epoch 3544: model parameters saved\n", - "Epoch 3545 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3545: avg_loss appended (2.7778)\n", - "Epoch 3545: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3545: accuracy appended (80.56%)\n", - "Epoch 3545: model set back to train mode\n", - "Epoch 3545: model parameters saved\n", - "Epoch 3546 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3546: avg_loss appended (2.7778)\n", - "Epoch 3546: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3546: accuracy appended (80.56%)\n", - "Epoch 3546: model set back to train mode\n", - "Epoch 3546: model parameters saved\n", - "Epoch 3547 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3547: avg_loss appended (2.7778)\n", - "Epoch 3547: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3547: accuracy appended (80.56%)\n", - "Epoch 3547: model set back to train mode\n", - "Epoch 3547: model parameters saved\n", - "Epoch 3548 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3548: avg_loss appended (2.7778)\n", - "Epoch 3548: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3548: accuracy appended (80.56%)\n", - "Epoch 3548: model set back to train mode\n", - "Epoch 3548: model parameters saved\n", - "Epoch 3549 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3549: avg_loss appended (2.7778)\n", - "Epoch 3549: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3549: accuracy appended (80.56%)\n", - "Epoch 3549: model set back to train mode\n", - "Epoch 3549: model parameters saved\n", - "Epoch 3550 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3550: avg_loss appended (2.7778)\n", - "Epoch 3550: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3550: accuracy appended (80.56%)\n", - "Epoch 3550: model set back to train mode\n", - "Epoch 3550: model parameters saved\n", - "Epoch 3551 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3551: avg_loss appended (2.7778)\n", - "Epoch 3551: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3551: accuracy appended (80.56%)\n", - "Epoch 3551: model set back to train mode\n", - "Epoch 3551: model parameters saved\n", - "Epoch 3552 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3552: avg_loss appended (2.7778)\n", - "Epoch 3552: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3552: accuracy appended (80.56%)\n", - "Epoch 3552: model set back to train mode\n", - "Epoch 3552: model parameters saved\n", - "Epoch 3553 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3553: avg_loss appended (2.7778)\n", - "Epoch 3553: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3553: accuracy appended (80.56%)\n", - "Epoch 3553: model set back to train mode\n", - "Epoch 3553: model parameters saved\n", - "Epoch 3554 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3554: avg_loss appended (2.7778)\n", - "Epoch 3554: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3554: accuracy appended (80.56%)\n", - "Epoch 3554: model set back to train mode\n", - "Epoch 3554: model parameters saved\n", - "Epoch 3555 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3555: avg_loss appended (2.7778)\n", - "Epoch 3555: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3555: accuracy appended (80.56%)\n", - "Epoch 3555: model set back to train mode\n", - "Epoch 3555: model parameters saved\n", - "Epoch 3556 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3556: avg_loss appended (2.7778)\n", - "Epoch 3556: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3556: accuracy appended (80.56%)\n", - "Epoch 3556: model set back to train mode\n", - "Epoch 3556: model parameters saved\n", - "Epoch 3557 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3557: avg_loss appended (2.7778)\n", - "Epoch 3557: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3557: accuracy appended (80.56%)\n", - "Epoch 3557: model set back to train mode\n", - "Epoch 3557: model parameters saved\n", - "Epoch 3558 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3558: avg_loss appended (2.7778)\n", - "Epoch 3558: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3558: accuracy appended (80.56%)\n", - "Epoch 3558: model set back to train mode\n", - "Epoch 3558: model parameters saved\n", - "Epoch 3559 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3559: avg_loss appended (2.7778)\n", - "Epoch 3559: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3559: accuracy appended (80.56%)\n", - "Epoch 3559: model set back to train mode\n", - "Epoch 3559: model parameters saved\n", - "Epoch 3560 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3560: avg_loss appended (2.7778)\n", - "Epoch 3560: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3560: accuracy appended (80.56%)\n", - "Epoch 3560: model set back to train mode\n", - "Epoch 3560: model parameters saved\n", - "Epoch 3561 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3561: avg_loss appended (2.7778)\n", - "Epoch 3561: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3561: accuracy appended (80.56%)\n", - "Epoch 3561: model set back to train mode\n", - "Epoch 3561: model parameters saved\n", - "Epoch 3562 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3562: avg_loss appended (2.7778)\n", - "Epoch 3562: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3562: accuracy appended (80.56%)\n", - "Epoch 3562: model set back to train mode\n", - "Epoch 3562: model parameters saved\n", - "Epoch 3563 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3563: avg_loss appended (2.7778)\n", - "Epoch 3563: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3563: accuracy appended (80.56%)\n", - "Epoch 3563: model set back to train mode\n", - "Epoch 3563: model parameters saved\n", - "Epoch 3564 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3564: avg_loss appended (2.7778)\n", - "Epoch 3564: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3564: accuracy appended (80.56%)\n", - "Epoch 3564: model set back to train mode\n", - "Epoch 3564: model parameters saved\n", - "Epoch 3565 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3565: avg_loss appended (2.7778)\n", - "Epoch 3565: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3565: accuracy appended (80.56%)\n", - "Epoch 3565: model set back to train mode\n", - "Epoch 3565: model parameters saved\n", - "Epoch 3566 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3566: avg_loss appended (2.7778)\n", - "Epoch 3566: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3566: accuracy appended (80.56%)\n", - "Epoch 3566: model set back to train mode\n", - "Epoch 3566: model parameters saved\n", - "Epoch 3567 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3567: avg_loss appended (2.7778)\n", - "Epoch 3567: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3567: accuracy appended (80.56%)\n", - "Epoch 3567: model set back to train mode\n", - "Epoch 3567: model parameters saved\n", - "Epoch 3568 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3568: avg_loss appended (2.7778)\n", - "Epoch 3568: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3568: accuracy appended (80.56%)\n", - "Epoch 3568: model set back to train mode\n", - "Epoch 3568: model parameters saved\n", - "Epoch 3569 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3569: avg_loss appended (2.7778)\n", - "Epoch 3569: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3569: accuracy appended (80.56%)\n", - "Epoch 3569: model set back to train mode\n", - "Epoch 3569: model parameters saved\n", - "Epoch 3570 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3570: avg_loss appended (2.7778)\n", - "Epoch 3570: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3570: accuracy appended (80.56%)\n", - "Epoch 3570: model set back to train mode\n", - "Epoch 3570: model parameters saved\n", - "Epoch 3571 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3571: avg_loss appended (2.7778)\n", - "Epoch 3571: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3571: accuracy appended (80.56%)\n", - "Epoch 3571: model set back to train mode\n", - "Epoch 3571: model parameters saved\n", - "Epoch 3572 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3572: avg_loss appended (2.7778)\n", - "Epoch 3572: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3572: accuracy appended (80.56%)\n", - "Epoch 3572: model set back to train mode\n", - "Epoch 3572: model parameters saved\n", - "Epoch 3573 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3573: avg_loss appended (2.7778)\n", - "Epoch 3573: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3573: accuracy appended (80.56%)\n", - "Epoch 3573: model set back to train mode\n", - "Epoch 3573: model parameters saved\n", - "Epoch 3574 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3574: avg_loss appended (2.7778)\n", - "Epoch 3574: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3574: accuracy appended (80.56%)\n", - "Epoch 3574: model set back to train mode\n", - "Epoch 3574: model parameters saved\n", - "Epoch 3575 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3575: avg_loss appended (2.7778)\n", - "Epoch 3575: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3575: accuracy appended (80.56%)\n", - "Epoch 3575: model set back to train mode\n", - "Epoch 3575: model parameters saved\n", - "Epoch 3576 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3576: avg_loss appended (2.7778)\n", - "Epoch 3576: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3576: accuracy appended (80.56%)\n", - "Epoch 3576: model set back to train mode\n", - "Epoch 3576: model parameters saved\n", - "Epoch 3577 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3577: avg_loss appended (2.7778)\n", - "Epoch 3577: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3577: accuracy appended (80.56%)\n", - "Epoch 3577: model set back to train mode\n", - "Epoch 3577: model parameters saved\n", - "Epoch 3578 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3578: avg_loss appended (2.7778)\n", - "Epoch 3578: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3578: accuracy appended (80.56%)\n", - "Epoch 3578: model set back to train mode\n", - "Epoch 3578: model parameters saved\n", - "Epoch 3579 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3579: avg_loss appended (2.7778)\n", - "Epoch 3579: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3579: accuracy appended (80.56%)\n", - "Epoch 3579: model set back to train mode\n", - "Epoch 3579: model parameters saved\n", - "Epoch 3580 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3580: avg_loss appended (2.7778)\n", - "Epoch 3580: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3580: accuracy appended (80.56%)\n", - "Epoch 3580: model set back to train mode\n", - "Epoch 3580: model parameters saved\n", - "Epoch 3581 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3581: avg_loss appended (2.7778)\n", - "Epoch 3581: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3581: accuracy appended (80.56%)\n", - "Epoch 3581: model set back to train mode\n", - "Epoch 3581: model parameters saved\n", - "Epoch 3582 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3582: avg_loss appended (2.7778)\n", - "Epoch 3582: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3582: accuracy appended (80.56%)\n", - "Epoch 3582: model set back to train mode\n", - "Epoch 3582: model parameters saved\n", - "Epoch 3583 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3583: avg_loss appended (2.7778)\n", - "Epoch 3583: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3583: accuracy appended (80.56%)\n", - "Epoch 3583: model set back to train mode\n", - "Epoch 3583: model parameters saved\n", - "Epoch 3584 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3584: avg_loss appended (2.7778)\n", - "Epoch 3584: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3584: accuracy appended (80.56%)\n", - "Epoch 3584: model set back to train mode\n", - "Epoch 3584: model parameters saved\n", - "Epoch 3585 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3585: avg_loss appended (2.7778)\n", - "Epoch 3585: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3585: accuracy appended (80.56%)\n", - "Epoch 3585: model set back to train mode\n", - "Epoch 3585: model parameters saved\n", - "Epoch 3586 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3586: avg_loss appended (2.7778)\n", - "Epoch 3586: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3586: accuracy appended (80.56%)\n", - "Epoch 3586: model set back to train mode\n", - "Epoch 3586: model parameters saved\n", - "Epoch 3587 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3587: avg_loss appended (2.7778)\n", - "Epoch 3587: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3587: accuracy appended (80.56%)\n", - "Epoch 3587: model set back to train mode\n", - "Epoch 3587: model parameters saved\n", - "Epoch 3588 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3588: avg_loss appended (2.7778)\n", - "Epoch 3588: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3588: accuracy appended (80.56%)\n", - "Epoch 3588: model set back to train mode\n", - "Epoch 3588: model parameters saved\n", - "Epoch 3589 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3589: avg_loss appended (2.7778)\n", - "Epoch 3589: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3589: accuracy appended (80.56%)\n", - "Epoch 3589: model set back to train mode\n", - "Epoch 3589: model parameters saved\n", - "Epoch 3590 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3590: avg_loss appended (2.7778)\n", - "Epoch 3590: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3590: accuracy appended (80.56%)\n", - "Epoch 3590: model set back to train mode\n", - "Epoch 3590: model parameters saved\n", - "Epoch 3591 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3591: avg_loss appended (2.7778)\n", - "Epoch 3591: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3591: accuracy appended (80.56%)\n", - "Epoch 3591: model set back to train mode\n", - "Epoch 3591: model parameters saved\n", - "Epoch 3592 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3592: avg_loss appended (2.7778)\n", - "Epoch 3592: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3592: accuracy appended (80.56%)\n", - "Epoch 3592: model set back to train mode\n", - "Epoch 3592: model parameters saved\n", - "Epoch 3593 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3593: avg_loss appended (2.7778)\n", - "Epoch 3593: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3593: accuracy appended (80.56%)\n", - "Epoch 3593: model set back to train mode\n", - "Epoch 3593: model parameters saved\n", - "Epoch 3594 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3594: avg_loss appended (2.7778)\n", - "Epoch 3594: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3594: accuracy appended (80.56%)\n", - "Epoch 3594: model set back to train mode\n", - "Epoch 3594: model parameters saved\n", - "Epoch 3595 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3595: avg_loss appended (2.7778)\n", - "Epoch 3595: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3595: accuracy appended (80.56%)\n", - "Epoch 3595: model set back to train mode\n", - "Epoch 3595: model parameters saved\n", - "Epoch 3596 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3596: avg_loss appended (2.7778)\n", - "Epoch 3596: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3596: accuracy appended (80.56%)\n", - "Epoch 3596: model set back to train mode\n", - "Epoch 3596: model parameters saved\n", - "Epoch 3597 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3597: avg_loss appended (2.7778)\n", - "Epoch 3597: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3597: accuracy appended (80.56%)\n", - "Epoch 3597: model set back to train mode\n", - "Epoch 3597: model parameters saved\n", - "Epoch 3598 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3598: avg_loss appended (2.7778)\n", - "Epoch 3598: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3598: accuracy appended (80.56%)\n", - "Epoch 3598: model set back to train mode\n", - "Epoch 3598: model parameters saved\n", - "Epoch 3599 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3599: avg_loss appended (2.7778)\n", - "Epoch 3599: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3599: accuracy appended (80.56%)\n", - "Epoch 3599: model set back to train mode\n", - "Epoch 3599: model parameters saved\n", - "Epoch 3600 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3600: avg_loss appended (2.7778)\n", - "Epoch 3600: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3600: accuracy appended (80.56%)\n", - "Epoch 3600: model set back to train mode\n", - "Epoch 3600: model parameters saved\n", - "Epoch 3600/10000, Loss: 2.7778, Accuracy: 80.56%\n", - "Epoch 3601 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3601: avg_loss appended (2.7778)\n", - "Epoch 3601: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3601: accuracy appended (80.56%)\n", - "Epoch 3601: model set back to train mode\n", - "Epoch 3601: model parameters saved\n", - "Epoch 3602 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3602: avg_loss appended (2.7778)\n", - "Epoch 3602: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3602: accuracy appended (80.56%)\n", - "Epoch 3602: model set back to train mode\n", - "Epoch 3602: model parameters saved\n", - "Epoch 3603 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3603: avg_loss appended (2.7778)\n", - "Epoch 3603: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3603: accuracy appended (80.56%)\n", - "Epoch 3603: model set back to train mode\n", - "Epoch 3603: model parameters saved\n", - "Epoch 3604 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3604: avg_loss appended (2.7778)\n", - "Epoch 3604: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3604: accuracy appended (80.56%)\n", - "Epoch 3604: model set back to train mode\n", - "Epoch 3604: model parameters saved\n", - "Epoch 3605 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3605: avg_loss appended (2.7778)\n", - "Epoch 3605: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3605: accuracy appended (80.56%)\n", - "Epoch 3605: model set back to train mode\n", - "Epoch 3605: model parameters saved\n", - "Epoch 3606 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3606: avg_loss appended (2.7778)\n", - "Epoch 3606: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3606: accuracy appended (80.56%)\n", - "Epoch 3606: model set back to train mode\n", - "Epoch 3606: model parameters saved\n", - "Epoch 3607 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3607: avg_loss appended (2.7778)\n", - "Epoch 3607: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3607: accuracy appended (80.56%)\n", - "Epoch 3607: model set back to train mode\n", - "Epoch 3607: model parameters saved\n", - "Epoch 3608 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3608: avg_loss appended (2.7778)\n", - "Epoch 3608: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3608: accuracy appended (80.56%)\n", - "Epoch 3608: model set back to train mode\n", - "Epoch 3608: model parameters saved\n", - "Epoch 3609 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3609: avg_loss appended (2.7778)\n", - "Epoch 3609: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3609: accuracy appended (80.56%)\n", - "Epoch 3609: model set back to train mode\n", - "Epoch 3609: model parameters saved\n", - "Epoch 3610 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3610: avg_loss appended (2.7778)\n", - "Epoch 3610: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3610: accuracy appended (80.56%)\n", - "Epoch 3610: model set back to train mode\n", - "Epoch 3610: model parameters saved\n", - "Epoch 3611 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3611: avg_loss appended (2.7778)\n", - "Epoch 3611: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3611: accuracy appended (80.56%)\n", - "Epoch 3611: model set back to train mode\n", - "Epoch 3611: model parameters saved\n", - "Epoch 3612 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3612: avg_loss appended (2.7778)\n", - "Epoch 3612: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3612: accuracy appended (80.56%)\n", - "Epoch 3612: model set back to train mode\n", - "Epoch 3612: model parameters saved\n", - "Epoch 3613 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3613: avg_loss appended (2.7778)\n", - "Epoch 3613: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3613: accuracy appended (80.56%)\n", - "Epoch 3613: model set back to train mode\n", - "Epoch 3613: model parameters saved\n", - "Epoch 3614 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3614: avg_loss appended (2.7778)\n", - "Epoch 3614: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3614: accuracy appended (80.56%)\n", - "Epoch 3614: model set back to train mode\n", - "Epoch 3614: model parameters saved\n", - "Epoch 3615 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3615: avg_loss appended (2.7778)\n", - "Epoch 3615: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3615: accuracy appended (80.56%)\n", - "Epoch 3615: model set back to train mode\n", - "Epoch 3615: model parameters saved\n", - "Epoch 3616 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3616: avg_loss appended (2.7778)\n", - "Epoch 3616: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3616: accuracy appended (80.56%)\n", - "Epoch 3616: model set back to train mode\n", - "Epoch 3616: model parameters saved\n", - "Epoch 3617 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3617: avg_loss appended (2.7778)\n", - "Epoch 3617: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3617: accuracy appended (80.56%)\n", - "Epoch 3617: model set back to train mode\n", - "Epoch 3617: model parameters saved\n", - "Epoch 3618 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3618: avg_loss appended (2.7778)\n", - "Epoch 3618: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3618: accuracy appended (80.56%)\n", - "Epoch 3618: model set back to train mode\n", - "Epoch 3618: model parameters saved\n", - "Epoch 3619 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3619: avg_loss appended (2.7778)\n", - "Epoch 3619: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3619: accuracy appended (80.56%)\n", - "Epoch 3619: model set back to train mode\n", - "Epoch 3619: model parameters saved\n", - "Epoch 3620 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3620: avg_loss appended (2.7778)\n", - "Epoch 3620: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3620: accuracy appended (80.56%)\n", - "Epoch 3620: model set back to train mode\n", - "Epoch 3620: model parameters saved\n", - "Epoch 3621 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3621: avg_loss appended (2.7778)\n", - "Epoch 3621: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3621: accuracy appended (80.56%)\n", - "Epoch 3621: model set back to train mode\n", - "Epoch 3621: model parameters saved\n", - "Epoch 3622 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3622: avg_loss appended (2.7778)\n", - "Epoch 3622: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3622: accuracy appended (80.56%)\n", - "Epoch 3622: model set back to train mode\n", - "Epoch 3622: model parameters saved\n", - "Epoch 3623 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3623: avg_loss appended (2.7778)\n", - "Epoch 3623: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3623: accuracy appended (80.56%)\n", - "Epoch 3623: model set back to train mode\n", - "Epoch 3623: model parameters saved\n", - "Epoch 3624 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3624: avg_loss appended (2.7778)\n", - "Epoch 3624: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3624: accuracy appended (80.56%)\n", - "Epoch 3624: model set back to train mode\n", - "Epoch 3624: model parameters saved\n", - "Epoch 3625 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3625: avg_loss appended (2.7778)\n", - "Epoch 3625: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3625: accuracy appended (80.56%)\n", - "Epoch 3625: model set back to train mode\n", - "Epoch 3625: model parameters saved\n", - "Epoch 3626 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3626: avg_loss appended (2.7778)\n", - "Epoch 3626: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3626: accuracy appended (80.56%)\n", - "Epoch 3626: model set back to train mode\n", - "Epoch 3626: model parameters saved\n", - "Epoch 3627 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3627: avg_loss appended (2.7778)\n", - "Epoch 3627: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3627: accuracy appended (80.56%)\n", - "Epoch 3627: model set back to train mode\n", - "Epoch 3627: model parameters saved\n", - "Epoch 3628 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3628: avg_loss appended (2.7778)\n", - "Epoch 3628: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3628: accuracy appended (80.56%)\n", - "Epoch 3628: model set back to train mode\n", - "Epoch 3628: model parameters saved\n", - "Epoch 3629 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3629: avg_loss appended (2.7778)\n", - "Epoch 3629: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3629: accuracy appended (80.56%)\n", - "Epoch 3629: model set back to train mode\n", - "Epoch 3629: model parameters saved\n", - "Epoch 3630 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3630: avg_loss appended (2.7778)\n", - "Epoch 3630: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3630: accuracy appended (80.56%)\n", - "Epoch 3630: model set back to train mode\n", - "Epoch 3630: model parameters saved\n", - "Epoch 3631 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3631: avg_loss appended (2.7778)\n", - "Epoch 3631: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3631: accuracy appended (80.56%)\n", - "Epoch 3631: model set back to train mode\n", - "Epoch 3631: model parameters saved\n", - "Epoch 3632 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3632: avg_loss appended (2.7778)\n", - "Epoch 3632: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3632: accuracy appended (80.56%)\n", - "Epoch 3632: model set back to train mode\n", - "Epoch 3632: model parameters saved\n", - "Epoch 3633 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3633: avg_loss appended (2.7778)\n", - "Epoch 3633: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3633: accuracy appended (80.56%)\n", - "Epoch 3633: model set back to train mode\n", - "Epoch 3633: model parameters saved\n", - "Epoch 3634 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3634: avg_loss appended (2.7778)\n", - "Epoch 3634: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3634: accuracy appended (80.56%)\n", - "Epoch 3634: model set back to train mode\n", - "Epoch 3634: model parameters saved\n", - "Epoch 3635 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3635: avg_loss appended (2.7778)\n", - "Epoch 3635: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3635: accuracy appended (80.56%)\n", - "Epoch 3635: model set back to train mode\n", - "Epoch 3635: model parameters saved\n", - "Epoch 3636 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3636: avg_loss appended (2.7778)\n", - "Epoch 3636: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3636: accuracy appended (80.56%)\n", - "Epoch 3636: model set back to train mode\n", - "Epoch 3636: model parameters saved\n", - "Epoch 3637 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3637: avg_loss appended (2.7778)\n", - "Epoch 3637: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3637: accuracy appended (80.56%)\n", - "Epoch 3637: model set back to train mode\n", - "Epoch 3637: model parameters saved\n", - "Epoch 3638 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3638: avg_loss appended (2.7778)\n", - "Epoch 3638: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3638: accuracy appended (80.56%)\n", - "Epoch 3638: model set back to train mode\n", - "Epoch 3638: model parameters saved\n", - "Epoch 3639 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3639: avg_loss appended (2.7778)\n", - "Epoch 3639: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3639: accuracy appended (80.56%)\n", - "Epoch 3639: model set back to train mode\n", - "Epoch 3639: model parameters saved\n", - "Epoch 3640 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3640: avg_loss appended (2.7778)\n", - "Epoch 3640: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3640: accuracy appended (80.56%)\n", - "Epoch 3640: model set back to train mode\n", - "Epoch 3640: model parameters saved\n", - "Epoch 3641 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3641: avg_loss appended (2.7778)\n", - "Epoch 3641: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3641: accuracy appended (80.56%)\n", - "Epoch 3641: model set back to train mode\n", - "Epoch 3641: model parameters saved\n", - "Epoch 3642 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3642: avg_loss appended (2.7778)\n", - "Epoch 3642: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3642: accuracy appended (80.56%)\n", - "Epoch 3642: model set back to train mode\n", - "Epoch 3642: model parameters saved\n", - "Epoch 3643 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3643: avg_loss appended (2.7778)\n", - "Epoch 3643: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3643: accuracy appended (80.56%)\n", - "Epoch 3643: model set back to train mode\n", - "Epoch 3643: model parameters saved\n", - "Epoch 3644 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3644: avg_loss appended (2.7778)\n", - "Epoch 3644: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3644: accuracy appended (80.56%)\n", - "Epoch 3644: model set back to train mode\n", - "Epoch 3644: model parameters saved\n", - "Epoch 3645 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3645: avg_loss appended (2.7778)\n", - "Epoch 3645: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3645: accuracy appended (80.56%)\n", - "Epoch 3645: model set back to train mode\n", - "Epoch 3645: model parameters saved\n", - "Epoch 3646 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3646: avg_loss appended (2.7778)\n", - "Epoch 3646: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3646: accuracy appended (80.56%)\n", - "Epoch 3646: model set back to train mode\n", - "Epoch 3646: model parameters saved\n", - "Epoch 3647 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3647: avg_loss appended (2.7778)\n", - "Epoch 3647: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3647: accuracy appended (80.56%)\n", - "Epoch 3647: model set back to train mode\n", - "Epoch 3647: model parameters saved\n", - "Epoch 3648 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3648: avg_loss appended (2.7778)\n", - "Epoch 3648: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3648: accuracy appended (80.56%)\n", - "Epoch 3648: model set back to train mode\n", - "Epoch 3648: model parameters saved\n", - "Epoch 3649 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3649: avg_loss appended (2.7778)\n", - "Epoch 3649: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3649: accuracy appended (80.56%)\n", - "Epoch 3649: model set back to train mode\n", - "Epoch 3649: model parameters saved\n", - "Epoch 3650 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3650: avg_loss appended (2.7778)\n", - "Epoch 3650: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3650: accuracy appended (80.56%)\n", - "Epoch 3650: model set back to train mode\n", - "Epoch 3650: model parameters saved\n", - "Epoch 3651 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3651: avg_loss appended (2.7778)\n", - "Epoch 3651: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3651: accuracy appended (80.56%)\n", - "Epoch 3651: model set back to train mode\n", - "Epoch 3651: model parameters saved\n", - "Epoch 3652 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3652: avg_loss appended (2.7778)\n", - "Epoch 3652: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3652: accuracy appended (80.56%)\n", - "Epoch 3652: model set back to train mode\n", - "Epoch 3652: model parameters saved\n", - "Epoch 3653 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3653: avg_loss appended (2.7778)\n", - "Epoch 3653: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3653: accuracy appended (80.56%)\n", - "Epoch 3653: model set back to train mode\n", - "Epoch 3653: model parameters saved\n", - "Epoch 3654 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3654: avg_loss appended (2.7778)\n", - "Epoch 3654: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3654: accuracy appended (80.56%)\n", - "Epoch 3654: model set back to train mode\n", - "Epoch 3654: model parameters saved\n", - "Epoch 3655 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3655: avg_loss appended (2.7778)\n", - "Epoch 3655: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3655: accuracy appended (80.56%)\n", - "Epoch 3655: model set back to train mode\n", - "Epoch 3655: model parameters saved\n", - "Epoch 3656 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3656: avg_loss appended (2.7778)\n", - "Epoch 3656: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3656: accuracy appended (80.56%)\n", - "Epoch 3656: model set back to train mode\n", - "Epoch 3656: model parameters saved\n", - "Epoch 3657 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3657: avg_loss appended (2.7778)\n", - "Epoch 3657: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3657: accuracy appended (80.56%)\n", - "Epoch 3657: model set back to train mode\n", - "Epoch 3657: model parameters saved\n", - "Epoch 3658 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3658: avg_loss appended (2.7778)\n", - "Epoch 3658: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3658: accuracy appended (80.56%)\n", - "Epoch 3658: model set back to train mode\n", - "Epoch 3658: model parameters saved\n", - "Epoch 3659 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3659: avg_loss appended (2.7778)\n", - "Epoch 3659: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3659: accuracy appended (80.56%)\n", - "Epoch 3659: model set back to train mode\n", - "Epoch 3659: model parameters saved\n", - "Epoch 3660 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3660: avg_loss appended (2.7778)\n", - "Epoch 3660: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3660: accuracy appended (80.56%)\n", - "Epoch 3660: model set back to train mode\n", - "Epoch 3660: model parameters saved\n", - "Epoch 3661 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3661: avg_loss appended (2.7778)\n", - "Epoch 3661: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3661: accuracy appended (80.56%)\n", - "Epoch 3661: model set back to train mode\n", - "Epoch 3661: model parameters saved\n", - "Epoch 3662 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3662: avg_loss appended (2.7778)\n", - "Epoch 3662: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3662: accuracy appended (80.56%)\n", - "Epoch 3662: model set back to train mode\n", - "Epoch 3662: model parameters saved\n", - "Epoch 3663 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3663: avg_loss appended (2.7778)\n", - "Epoch 3663: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3663: accuracy appended (80.56%)\n", - "Epoch 3663: model set back to train mode\n", - "Epoch 3663: model parameters saved\n", - "Epoch 3664 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3664: avg_loss appended (2.7778)\n", - "Epoch 3664: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3664: accuracy appended (80.56%)\n", - "Epoch 3664: model set back to train mode\n", - "Epoch 3664: model parameters saved\n", - "Epoch 3665 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3665: avg_loss appended (2.7778)\n", - "Epoch 3665: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3665: accuracy appended (80.56%)\n", - "Epoch 3665: model set back to train mode\n", - "Epoch 3665: model parameters saved\n", - "Epoch 3666 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3666: avg_loss appended (2.7778)\n", - "Epoch 3666: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3666: accuracy appended (80.56%)\n", - "Epoch 3666: model set back to train mode\n", - "Epoch 3666: model parameters saved\n", - "Epoch 3667 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3667: avg_loss appended (2.7778)\n", - "Epoch 3667: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3667: accuracy appended (80.56%)\n", - "Epoch 3667: model set back to train mode\n", - "Epoch 3667: model parameters saved\n", - "Epoch 3668 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3668: avg_loss appended (2.7778)\n", - "Epoch 3668: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3668: accuracy appended (80.56%)\n", - "Epoch 3668: model set back to train mode\n", - "Epoch 3668: model parameters saved\n", - "Epoch 3669 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3669: avg_loss appended (2.7778)\n", - "Epoch 3669: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3669: accuracy appended (80.56%)\n", - "Epoch 3669: model set back to train mode\n", - "Epoch 3669: model parameters saved\n", - "Epoch 3670 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3670: avg_loss appended (2.7778)\n", - "Epoch 3670: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3670: accuracy appended (80.56%)\n", - "Epoch 3670: model set back to train mode\n", - "Epoch 3670: model parameters saved\n", - "Epoch 3671 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3671: avg_loss appended (2.7778)\n", - "Epoch 3671: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3671: accuracy appended (80.56%)\n", - "Epoch 3671: model set back to train mode\n", - "Epoch 3671: model parameters saved\n", - "Epoch 3672 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3672: avg_loss appended (2.7778)\n", - "Epoch 3672: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3672: accuracy appended (80.56%)\n", - "Epoch 3672: model set back to train mode\n", - "Epoch 3672: model parameters saved\n", - "Epoch 3673 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3673: avg_loss appended (2.7778)\n", - "Epoch 3673: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3673: accuracy appended (80.56%)\n", - "Epoch 3673: model set back to train mode\n", - "Epoch 3673: model parameters saved\n", - "Epoch 3674 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3674: avg_loss appended (2.7778)\n", - "Epoch 3674: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3674: accuracy appended (80.56%)\n", - "Epoch 3674: model set back to train mode\n", - "Epoch 3674: model parameters saved\n", - "Epoch 3675 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3675: avg_loss appended (2.7778)\n", - "Epoch 3675: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3675: accuracy appended (80.56%)\n", - "Epoch 3675: model set back to train mode\n", - "Epoch 3675: model parameters saved\n", - "Epoch 3676 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3676: avg_loss appended (2.7778)\n", - "Epoch 3676: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3676: accuracy appended (80.56%)\n", - "Epoch 3676: model set back to train mode\n", - "Epoch 3676: model parameters saved\n", - "Epoch 3677 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3677: avg_loss appended (2.7778)\n", - "Epoch 3677: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3677: accuracy appended (80.56%)\n", - "Epoch 3677: model set back to train mode\n", - "Epoch 3677: model parameters saved\n", - "Epoch 3678 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3678: avg_loss appended (2.7778)\n", - "Epoch 3678: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3678: accuracy appended (80.56%)\n", - "Epoch 3678: model set back to train mode\n", - "Epoch 3678: model parameters saved\n", - "Epoch 3679 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3679: avg_loss appended (2.7778)\n", - "Epoch 3679: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3679: accuracy appended (80.56%)\n", - "Epoch 3679: model set back to train mode\n", - "Epoch 3679: model parameters saved\n", - "Epoch 3680 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3680: avg_loss appended (2.7778)\n", - "Epoch 3680: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3680: accuracy appended (80.56%)\n", - "Epoch 3680: model set back to train mode\n", - "Epoch 3680: model parameters saved\n", - "Epoch 3681 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3681: avg_loss appended (2.7778)\n", - "Epoch 3681: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3681: accuracy appended (80.56%)\n", - "Epoch 3681: model set back to train mode\n", - "Epoch 3681: model parameters saved\n", - "Epoch 3682 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3682: avg_loss appended (2.7778)\n", - "Epoch 3682: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3682: accuracy appended (80.56%)\n", - "Epoch 3682: model set back to train mode\n", - "Epoch 3682: model parameters saved\n", - "Epoch 3683 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3683: avg_loss appended (2.7778)\n", - "Epoch 3683: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3683: accuracy appended (80.56%)\n", - "Epoch 3683: model set back to train mode\n", - "Epoch 3683: model parameters saved\n", - "Epoch 3684 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3684: avg_loss appended (2.7778)\n", - "Epoch 3684: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3684: accuracy appended (80.56%)\n", - "Epoch 3684: model set back to train mode\n", - "Epoch 3684: model parameters saved\n", - "Epoch 3685 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3685: avg_loss appended (2.7778)\n", - "Epoch 3685: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3685: accuracy appended (80.56%)\n", - "Epoch 3685: model set back to train mode\n", - "Epoch 3685: model parameters saved\n", - "Epoch 3686 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3686: avg_loss appended (2.7778)\n", - "Epoch 3686: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3686: accuracy appended (80.56%)\n", - "Epoch 3686: model set back to train mode\n", - "Epoch 3686: model parameters saved\n", - "Epoch 3687 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3687: avg_loss appended (2.7778)\n", - "Epoch 3687: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3687: accuracy appended (80.56%)\n", - "Epoch 3687: model set back to train mode\n", - "Epoch 3687: model parameters saved\n", - "Epoch 3688 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3688: avg_loss appended (2.7778)\n", - "Epoch 3688: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3688: accuracy appended (80.56%)\n", - "Epoch 3688: model set back to train mode\n", - "Epoch 3688: model parameters saved\n", - "Epoch 3689 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3689: avg_loss appended (2.7778)\n", - "Epoch 3689: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3689: accuracy appended (80.56%)\n", - "Epoch 3689: model set back to train mode\n", - "Epoch 3689: model parameters saved\n", - "Epoch 3690 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3690: avg_loss appended (2.7778)\n", - "Epoch 3690: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3690: accuracy appended (80.56%)\n", - "Epoch 3690: model set back to train mode\n", - "Epoch 3690: model parameters saved\n", - "Epoch 3691 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3691: avg_loss appended (2.7778)\n", - "Epoch 3691: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3691: accuracy appended (80.56%)\n", - "Epoch 3691: model set back to train mode\n", - "Epoch 3691: model parameters saved\n", - "Epoch 3692 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3692: avg_loss appended (2.7778)\n", - "Epoch 3692: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3692: accuracy appended (80.56%)\n", - "Epoch 3692: model set back to train mode\n", - "Epoch 3692: model parameters saved\n", - "Epoch 3693 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3693: avg_loss appended (2.7778)\n", - "Epoch 3693: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3693: accuracy appended (80.56%)\n", - "Epoch 3693: model set back to train mode\n", - "Epoch 3693: model parameters saved\n", - "Epoch 3694 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3694: avg_loss appended (2.7778)\n", - "Epoch 3694: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3694: accuracy appended (80.56%)\n", - "Epoch 3694: model set back to train mode\n", - "Epoch 3694: model parameters saved\n", - "Epoch 3695 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3695: avg_loss appended (2.7778)\n", - "Epoch 3695: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3695: accuracy appended (80.56%)\n", - "Epoch 3695: model set back to train mode\n", - "Epoch 3695: model parameters saved\n", - "Epoch 3696 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3696: avg_loss appended (2.7778)\n", - "Epoch 3696: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3696: accuracy appended (80.56%)\n", - "Epoch 3696: model set back to train mode\n", - "Epoch 3696: model parameters saved\n", - "Epoch 3697 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3697: avg_loss appended (2.7778)\n", - "Epoch 3697: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3697: accuracy appended (80.56%)\n", - "Epoch 3697: model set back to train mode\n", - "Epoch 3697: model parameters saved\n", - "Epoch 3698 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3698: avg_loss appended (2.7778)\n", - "Epoch 3698: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3698: accuracy appended (80.56%)\n", - "Epoch 3698: model set back to train mode\n", - "Epoch 3698: model parameters saved\n", - "Epoch 3699 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3699: avg_loss appended (2.7778)\n", - "Epoch 3699: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3699: accuracy appended (83.33%)\n", - "Epoch 3699: model set back to train mode\n", - "Epoch 3699: model parameters saved\n", - "Epoch 3700 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3700: avg_loss appended (2.7778)\n", - "Epoch 3700: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3700: accuracy appended (80.56%)\n", - "Epoch 3700: model set back to train mode\n", - "Epoch 3700: model parameters saved\n", - "Epoch 3700/10000, Loss: 2.7778, Accuracy: 80.56%\n", - "Epoch 3701 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3701: avg_loss appended (2.7778)\n", - "Epoch 3701: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3701: accuracy appended (80.56%)\n", - "Epoch 3701: model set back to train mode\n", - "Epoch 3701: model parameters saved\n", - "Epoch 3702 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3702: avg_loss appended (2.7778)\n", - "Epoch 3702: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3702: accuracy appended (80.56%)\n", - "Epoch 3702: model set back to train mode\n", - "Epoch 3702: model parameters saved\n", - "Epoch 3703 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3703: avg_loss appended (2.7778)\n", - "Epoch 3703: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3703: accuracy appended (80.56%)\n", - "Epoch 3703: model set back to train mode\n", - "Epoch 3703: model parameters saved\n", - "Epoch 3704 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3704: avg_loss appended (2.7778)\n", - "Epoch 3704: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3704: accuracy appended (80.56%)\n", - "Epoch 3704: model set back to train mode\n", - "Epoch 3704: model parameters saved\n", - "Epoch 3705 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3705: avg_loss appended (2.7778)\n", - "Epoch 3705: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3705: accuracy appended (83.33%)\n", - "Epoch 3705: model set back to train mode\n", - "Epoch 3705: model parameters saved\n", - "Epoch 3706 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3706: avg_loss appended (2.7778)\n", - "Epoch 3706: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3706: accuracy appended (83.33%)\n", - "Epoch 3706: model set back to train mode\n", - "Epoch 3706: model parameters saved\n", - "Epoch 3707 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3707: avg_loss appended (2.7778)\n", - "Epoch 3707: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3707: accuracy appended (80.56%)\n", - "Epoch 3707: model set back to train mode\n", - "Epoch 3707: model parameters saved\n", - "Epoch 3708 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3708: avg_loss appended (2.7778)\n", - "Epoch 3708: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3708: accuracy appended (80.56%)\n", - "Epoch 3708: model set back to train mode\n", - "Epoch 3708: model parameters saved\n", - "Epoch 3709 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3709: avg_loss appended (2.7778)\n", - "Epoch 3709: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3709: accuracy appended (83.33%)\n", - "Epoch 3709: model set back to train mode\n", - "Epoch 3709: model parameters saved\n", - "Epoch 3710 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3710: avg_loss appended (2.7778)\n", - "Epoch 3710: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3710: accuracy appended (80.56%)\n", - "Epoch 3710: model set back to train mode\n", - "Epoch 3710: model parameters saved\n", - "Epoch 3711 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3711: avg_loss appended (2.7778)\n", - "Epoch 3711: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3711: accuracy appended (80.56%)\n", - "Epoch 3711: model set back to train mode\n", - "Epoch 3711: model parameters saved\n", - "Epoch 3712 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3712: avg_loss appended (2.7778)\n", - "Epoch 3712: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3712: accuracy appended (80.56%)\n", - "Epoch 3712: model set back to train mode\n", - "Epoch 3712: model parameters saved\n", - "Epoch 3713 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3713: avg_loss appended (2.7778)\n", - "Epoch 3713: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3713: accuracy appended (80.56%)\n", - "Epoch 3713: model set back to train mode\n", - "Epoch 3713: model parameters saved\n", - "Epoch 3714 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3714: avg_loss appended (2.7778)\n", - "Epoch 3714: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3714: accuracy appended (80.56%)\n", - "Epoch 3714: model set back to train mode\n", - "Epoch 3714: model parameters saved\n", - "Epoch 3715 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3715: avg_loss appended (2.7778)\n", - "Epoch 3715: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3715: accuracy appended (80.56%)\n", - "Epoch 3715: model set back to train mode\n", - "Epoch 3715: model parameters saved\n", - "Epoch 3716 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3716: avg_loss appended (2.7778)\n", - "Epoch 3716: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3716: accuracy appended (83.33%)\n", - "Epoch 3716: model set back to train mode\n", - "Epoch 3716: model parameters saved\n", - "Epoch 3717 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3717: avg_loss appended (2.7778)\n", - "Epoch 3717: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3717: accuracy appended (83.33%)\n", - "Epoch 3717: model set back to train mode\n", - "Epoch 3717: model parameters saved\n", - "Epoch 3718 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3718: avg_loss appended (2.7778)\n", - "Epoch 3718: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3718: accuracy appended (83.33%)\n", - "Epoch 3718: model set back to train mode\n", - "Epoch 3718: model parameters saved\n", - "Epoch 3719 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3719: avg_loss appended (2.7778)\n", - "Epoch 3719: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3719: accuracy appended (80.56%)\n", - "Epoch 3719: model set back to train mode\n", - "Epoch 3719: model parameters saved\n", - "Epoch 3720 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3720: avg_loss appended (2.7778)\n", - "Epoch 3720: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3720: accuracy appended (83.33%)\n", - "Epoch 3720: model set back to train mode\n", - "Epoch 3720: model parameters saved\n", - "Epoch 3721 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3721: avg_loss appended (2.7778)\n", - "Epoch 3721: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3721: accuracy appended (83.33%)\n", - "Epoch 3721: model set back to train mode\n", - "Epoch 3721: model parameters saved\n", - "Epoch 3722 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3722: avg_loss appended (2.7778)\n", - "Epoch 3722: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3722: accuracy appended (83.33%)\n", - "Epoch 3722: model set back to train mode\n", - "Epoch 3722: model parameters saved\n", - "Epoch 3723 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3723: avg_loss appended (2.7778)\n", - "Epoch 3723: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3723: accuracy appended (83.33%)\n", - "Epoch 3723: model set back to train mode\n", - "Epoch 3723: model parameters saved\n", - "Epoch 3724 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3724: avg_loss appended (2.7778)\n", - "Epoch 3724: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3724: accuracy appended (83.33%)\n", - "Epoch 3724: model set back to train mode\n", - "Epoch 3724: model parameters saved\n", - "Epoch 3725 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3725: avg_loss appended (2.7778)\n", - "Epoch 3725: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3725: accuracy appended (83.33%)\n", - "Epoch 3725: model set back to train mode\n", - "Epoch 3725: model parameters saved\n", - "Epoch 3726 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3726: avg_loss appended (2.7778)\n", - "Epoch 3726: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3726: accuracy appended (83.33%)\n", - "Epoch 3726: model set back to train mode\n", - "Epoch 3726: model parameters saved\n", - "Epoch 3727 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3727: avg_loss appended (2.7778)\n", - "Epoch 3727: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3727: accuracy appended (83.33%)\n", - "Epoch 3727: model set back to train mode\n", - "Epoch 3727: model parameters saved\n", - "Epoch 3728 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3728: avg_loss appended (2.7778)\n", - "Epoch 3728: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3728: accuracy appended (83.33%)\n", - "Epoch 3728: model set back to train mode\n", - "Epoch 3728: model parameters saved\n", - "Epoch 3729 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3729: avg_loss appended (2.7778)\n", - "Epoch 3729: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3729: accuracy appended (83.33%)\n", - "Epoch 3729: model set back to train mode\n", - "Epoch 3729: model parameters saved\n", - "Epoch 3730 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3730: avg_loss appended (2.7778)\n", - "Epoch 3730: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3730: accuracy appended (83.33%)\n", - "Epoch 3730: model set back to train mode\n", - "Epoch 3730: model parameters saved\n", - "Epoch 3731 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3731: avg_loss appended (2.7778)\n", - "Epoch 3731: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 3731: accuracy appended (80.56%)\n", - "Epoch 3731: model set back to train mode\n", - "Epoch 3731: model parameters saved\n", - "Epoch 3732 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3732: avg_loss appended (2.7778)\n", - "Epoch 3732: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3732: accuracy appended (83.33%)\n", - "Epoch 3732: model set back to train mode\n", - "Epoch 3732: model parameters saved\n", - "Epoch 3733 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3733: avg_loss appended (2.7778)\n", - "Epoch 3733: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3733: accuracy appended (83.33%)\n", - "Epoch 3733: model set back to train mode\n", - "Epoch 3733: model parameters saved\n", - "Epoch 3734 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3734: avg_loss appended (2.7778)\n", - "Epoch 3734: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3734: accuracy appended (83.33%)\n", - "Epoch 3734: model set back to train mode\n", - "Epoch 3734: model parameters saved\n", - "Epoch 3735 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3735: avg_loss appended (2.7778)\n", - "Epoch 3735: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3735: accuracy appended (83.33%)\n", - "Epoch 3735: model set back to train mode\n", - "Epoch 3735: model parameters saved\n", - "Epoch 3736 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3736: avg_loss appended (2.7778)\n", - "Epoch 3736: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3736: accuracy appended (83.33%)\n", - "Epoch 3736: model set back to train mode\n", - "Epoch 3736: model parameters saved\n", - "Epoch 3737 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3737: avg_loss appended (2.7778)\n", - "Epoch 3737: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3737: accuracy appended (83.33%)\n", - "Epoch 3737: model set back to train mode\n", - "Epoch 3737: model parameters saved\n", - "Epoch 3738 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3738: avg_loss appended (2.7778)\n", - "Epoch 3738: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3738: accuracy appended (83.33%)\n", - "Epoch 3738: model set back to train mode\n", - "Epoch 3738: model parameters saved\n", - "Epoch 3739 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3739: avg_loss appended (2.7778)\n", - "Epoch 3739: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3739: accuracy appended (83.33%)\n", - "Epoch 3739: model set back to train mode\n", - "Epoch 3739: model parameters saved\n", - "Epoch 3740 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3740: avg_loss appended (2.7778)\n", - "Epoch 3740: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3740: accuracy appended (83.33%)\n", - "Epoch 3740: model set back to train mode\n", - "Epoch 3740: model parameters saved\n", - "Epoch 3741 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3741: avg_loss appended (2.7778)\n", - "Epoch 3741: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3741: accuracy appended (83.33%)\n", - "Epoch 3741: model set back to train mode\n", - "Epoch 3741: model parameters saved\n", - "Epoch 3742 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3742: avg_loss appended (2.7778)\n", - "Epoch 3742: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3742: accuracy appended (83.33%)\n", - "Epoch 3742: model set back to train mode\n", - "Epoch 3742: model parameters saved\n", - "Epoch 3743 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3743: avg_loss appended (2.7778)\n", - "Epoch 3743: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3743: accuracy appended (83.33%)\n", - "Epoch 3743: model set back to train mode\n", - "Epoch 3743: model parameters saved\n", - "Epoch 3744 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3744: avg_loss appended (2.7778)\n", - "Epoch 3744: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3744: accuracy appended (83.33%)\n", - "Epoch 3744: model set back to train mode\n", - "Epoch 3744: model parameters saved\n", - "Epoch 3745 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3745: avg_loss appended (2.7778)\n", - "Epoch 3745: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3745: accuracy appended (83.33%)\n", - "Epoch 3745: model set back to train mode\n", - "Epoch 3745: model parameters saved\n", - "Epoch 3746 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3746: avg_loss appended (2.7778)\n", - "Epoch 3746: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3746: accuracy appended (83.33%)\n", - "Epoch 3746: model set back to train mode\n", - "Epoch 3746: model parameters saved\n", - "Epoch 3747 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3747: avg_loss appended (2.7778)\n", - "Epoch 3747: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3747: accuracy appended (83.33%)\n", - "Epoch 3747: model set back to train mode\n", - "Epoch 3747: model parameters saved\n", - "Epoch 3748 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3748: avg_loss appended (2.7778)\n", - "Epoch 3748: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3748: accuracy appended (83.33%)\n", - "Epoch 3748: model set back to train mode\n", - "Epoch 3748: model parameters saved\n", - "Epoch 3749 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3749: avg_loss appended (2.7778)\n", - "Epoch 3749: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3749: accuracy appended (83.33%)\n", - "Epoch 3749: model set back to train mode\n", - "Epoch 3749: model parameters saved\n", - "Epoch 3750 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3750: avg_loss appended (2.7778)\n", - "Epoch 3750: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3750: accuracy appended (83.33%)\n", - "Epoch 3750: model set back to train mode\n", - "Epoch 3750: model parameters saved\n", - "Epoch 3751 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3751: avg_loss appended (2.7778)\n", - "Epoch 3751: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3751: accuracy appended (83.33%)\n", - "Epoch 3751: model set back to train mode\n", - "Epoch 3751: model parameters saved\n", - "Epoch 3752 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3752: avg_loss appended (2.7778)\n", - "Epoch 3752: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3752: accuracy appended (83.33%)\n", - "Epoch 3752: model set back to train mode\n", - "Epoch 3752: model parameters saved\n", - "Epoch 3753 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3753: avg_loss appended (2.7778)\n", - "Epoch 3753: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3753: accuracy appended (83.33%)\n", - "Epoch 3753: model set back to train mode\n", - "Epoch 3753: model parameters saved\n", - "Epoch 3754 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3754: avg_loss appended (2.7778)\n", - "Epoch 3754: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3754: accuracy appended (83.33%)\n", - "Epoch 3754: model set back to train mode\n", - "Epoch 3754: model parameters saved\n", - "Epoch 3755 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3755: avg_loss appended (2.7778)\n", - "Epoch 3755: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3755: accuracy appended (83.33%)\n", - "Epoch 3755: model set back to train mode\n", - "Epoch 3755: model parameters saved\n", - "Epoch 3756 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3756: avg_loss appended (2.7778)\n", - "Epoch 3756: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3756: accuracy appended (83.33%)\n", - "Epoch 3756: model set back to train mode\n", - "Epoch 3756: model parameters saved\n", - "Epoch 3757 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3757: avg_loss appended (2.7778)\n", - "Epoch 3757: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3757: accuracy appended (83.33%)\n", - "Epoch 3757: model set back to train mode\n", - "Epoch 3757: model parameters saved\n", - "Epoch 3758 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3758: avg_loss appended (2.7778)\n", - "Epoch 3758: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3758: accuracy appended (83.33%)\n", - "Epoch 3758: model set back to train mode\n", - "Epoch 3758: model parameters saved\n", - "Epoch 3759 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3759: avg_loss appended (2.7778)\n", - "Epoch 3759: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3759: accuracy appended (83.33%)\n", - "Epoch 3759: model set back to train mode\n", - "Epoch 3759: model parameters saved\n", - "Epoch 3760 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3760: avg_loss appended (2.7778)\n", - "Epoch 3760: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3760: accuracy appended (83.33%)\n", - "Epoch 3760: model set back to train mode\n", - "Epoch 3760: model parameters saved\n", - "Epoch 3761 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3761: avg_loss appended (2.7778)\n", - "Epoch 3761: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3761: accuracy appended (83.33%)\n", - "Epoch 3761: model set back to train mode\n", - "Epoch 3761: model parameters saved\n", - "Epoch 3762 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3762: avg_loss appended (2.7778)\n", - "Epoch 3762: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3762: accuracy appended (83.33%)\n", - "Epoch 3762: model set back to train mode\n", - "Epoch 3762: model parameters saved\n", - "Epoch 3763 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3763: avg_loss appended (2.7778)\n", - "Epoch 3763: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3763: accuracy appended (83.33%)\n", - "Epoch 3763: model set back to train mode\n", - "Epoch 3763: model parameters saved\n", - "Epoch 3764 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3764: avg_loss appended (2.7778)\n", - "Epoch 3764: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3764: accuracy appended (83.33%)\n", - "Epoch 3764: model set back to train mode\n", - "Epoch 3764: model parameters saved\n", - "Epoch 3765 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3765: avg_loss appended (2.7778)\n", - "Epoch 3765: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3765: accuracy appended (83.33%)\n", - "Epoch 3765: model set back to train mode\n", - "Epoch 3765: model parameters saved\n", - "Epoch 3766 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3766: avg_loss appended (2.7778)\n", - "Epoch 3766: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3766: accuracy appended (83.33%)\n", - "Epoch 3766: model set back to train mode\n", - "Epoch 3766: model parameters saved\n", - "Epoch 3767 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3767: avg_loss appended (2.7778)\n", - "Epoch 3767: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3767: accuracy appended (83.33%)\n", - "Epoch 3767: model set back to train mode\n", - "Epoch 3767: model parameters saved\n", - "Epoch 3768 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3768: avg_loss appended (2.7778)\n", - "Epoch 3768: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3768: accuracy appended (83.33%)\n", - "Epoch 3768: model set back to train mode\n", - "Epoch 3768: model parameters saved\n", - "Epoch 3769 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3769: avg_loss appended (2.7778)\n", - "Epoch 3769: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3769: accuracy appended (83.33%)\n", - "Epoch 3769: model set back to train mode\n", - "Epoch 3769: model parameters saved\n", - "Epoch 3770 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3770: avg_loss appended (2.7778)\n", - "Epoch 3770: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3770: accuracy appended (83.33%)\n", - "Epoch 3770: model set back to train mode\n", - "Epoch 3770: model parameters saved\n", - "Epoch 3771 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3771: avg_loss appended (2.7778)\n", - "Epoch 3771: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3771: accuracy appended (83.33%)\n", - "Epoch 3771: model set back to train mode\n", - "Epoch 3771: model parameters saved\n", - "Epoch 3772 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3772: avg_loss appended (2.7778)\n", - "Epoch 3772: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3772: accuracy appended (83.33%)\n", - "Epoch 3772: model set back to train mode\n", - "Epoch 3772: model parameters saved\n", - "Epoch 3773 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3773: avg_loss appended (2.7778)\n", - "Epoch 3773: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3773: accuracy appended (83.33%)\n", - "Epoch 3773: model set back to train mode\n", - "Epoch 3773: model parameters saved\n", - "Epoch 3774 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3774: avg_loss appended (2.7778)\n", - "Epoch 3774: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3774: accuracy appended (83.33%)\n", - "Epoch 3774: model set back to train mode\n", - "Epoch 3774: model parameters saved\n", - "Epoch 3775 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3775: avg_loss appended (2.7778)\n", - "Epoch 3775: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3775: accuracy appended (83.33%)\n", - "Epoch 3775: model set back to train mode\n", - "Epoch 3775: model parameters saved\n", - "Epoch 3776 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3776: avg_loss appended (2.7778)\n", - "Epoch 3776: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3776: accuracy appended (83.33%)\n", - "Epoch 3776: model set back to train mode\n", - "Epoch 3776: model parameters saved\n", - "Epoch 3777 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3777: avg_loss appended (2.7778)\n", - "Epoch 3777: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3777: accuracy appended (83.33%)\n", - "Epoch 3777: model set back to train mode\n", - "Epoch 3777: model parameters saved\n", - "Epoch 3778 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3778: avg_loss appended (2.7778)\n", - "Epoch 3778: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3778: accuracy appended (83.33%)\n", - "Epoch 3778: model set back to train mode\n", - "Epoch 3778: model parameters saved\n", - "Epoch 3779 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3779: avg_loss appended (2.7778)\n", - "Epoch 3779: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3779: accuracy appended (83.33%)\n", - "Epoch 3779: model set back to train mode\n", - "Epoch 3779: model parameters saved\n", - "Epoch 3780 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3780: avg_loss appended (2.7778)\n", - "Epoch 3780: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3780: accuracy appended (83.33%)\n", - "Epoch 3780: model set back to train mode\n", - "Epoch 3780: model parameters saved\n", - "Epoch 3781 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3781: avg_loss appended (2.7778)\n", - "Epoch 3781: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3781: accuracy appended (83.33%)\n", - "Epoch 3781: model set back to train mode\n", - "Epoch 3781: model parameters saved\n", - "Epoch 3782 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3782: avg_loss appended (2.7778)\n", - "Epoch 3782: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3782: accuracy appended (83.33%)\n", - "Epoch 3782: model set back to train mode\n", - "Epoch 3782: model parameters saved\n", - "Epoch 3783 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3783: avg_loss appended (2.7778)\n", - "Epoch 3783: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3783: accuracy appended (83.33%)\n", - "Epoch 3783: model set back to train mode\n", - "Epoch 3783: model parameters saved\n", - "Epoch 3784 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3784: avg_loss appended (2.7778)\n", - "Epoch 3784: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3784: accuracy appended (83.33%)\n", - "Epoch 3784: model set back to train mode\n", - "Epoch 3784: model parameters saved\n", - "Epoch 3785 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3785: avg_loss appended (2.7778)\n", - "Epoch 3785: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3785: accuracy appended (83.33%)\n", - "Epoch 3785: model set back to train mode\n", - "Epoch 3785: model parameters saved\n", - "Epoch 3786 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3786: avg_loss appended (2.7778)\n", - "Epoch 3786: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3786: accuracy appended (83.33%)\n", - "Epoch 3786: model set back to train mode\n", - "Epoch 3786: model parameters saved\n", - "Epoch 3787 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3787: avg_loss appended (2.7778)\n", - "Epoch 3787: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3787: accuracy appended (83.33%)\n", - "Epoch 3787: model set back to train mode\n", - "Epoch 3787: model parameters saved\n", - "Epoch 3788 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3788: avg_loss appended (2.7778)\n", - "Epoch 3788: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3788: accuracy appended (83.33%)\n", - "Epoch 3788: model set back to train mode\n", - "Epoch 3788: model parameters saved\n", - "Epoch 3789 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3789: avg_loss appended (2.7778)\n", - "Epoch 3789: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3789: accuracy appended (83.33%)\n", - "Epoch 3789: model set back to train mode\n", - "Epoch 3789: model parameters saved\n", - "Epoch 3790 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3790: avg_loss appended (2.7778)\n", - "Epoch 3790: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3790: accuracy appended (83.33%)\n", - "Epoch 3790: model set back to train mode\n", - "Epoch 3790: model parameters saved\n", - "Epoch 3791 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3791: avg_loss appended (2.7778)\n", - "Epoch 3791: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3791: accuracy appended (83.33%)\n", - "Epoch 3791: model set back to train mode\n", - "Epoch 3791: model parameters saved\n", - "Epoch 3792 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3792: avg_loss appended (2.7778)\n", - "Epoch 3792: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3792: accuracy appended (83.33%)\n", - "Epoch 3792: model set back to train mode\n", - "Epoch 3792: model parameters saved\n", - "Epoch 3793 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3793: avg_loss appended (2.7778)\n", - "Epoch 3793: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3793: accuracy appended (83.33%)\n", - "Epoch 3793: model set back to train mode\n", - "Epoch 3793: model parameters saved\n", - "Epoch 3794 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3794: avg_loss appended (2.7778)\n", - "Epoch 3794: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3794: accuracy appended (83.33%)\n", - "Epoch 3794: model set back to train mode\n", - "Epoch 3794: model parameters saved\n", - "Epoch 3795 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3795: avg_loss appended (2.7778)\n", - "Epoch 3795: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3795: accuracy appended (83.33%)\n", - "Epoch 3795: model set back to train mode\n", - "Epoch 3795: model parameters saved\n", - "Epoch 3796 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3796: avg_loss appended (2.7778)\n", - "Epoch 3796: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3796: accuracy appended (83.33%)\n", - "Epoch 3796: model set back to train mode\n", - "Epoch 3796: model parameters saved\n", - "Epoch 3797 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3797: avg_loss appended (2.7778)\n", - "Epoch 3797: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3797: accuracy appended (83.33%)\n", - "Epoch 3797: model set back to train mode\n", - "Epoch 3797: model parameters saved\n", - "Epoch 3798 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3798: avg_loss appended (2.7778)\n", - "Epoch 3798: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3798: accuracy appended (83.33%)\n", - "Epoch 3798: model set back to train mode\n", - "Epoch 3798: model parameters saved\n", - "Epoch 3799 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3799: avg_loss appended (2.7778)\n", - "Epoch 3799: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3799: accuracy appended (83.33%)\n", - "Epoch 3799: model set back to train mode\n", - "Epoch 3799: model parameters saved\n", - "Epoch 3800 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3800: avg_loss appended (2.7778)\n", - "Epoch 3800: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3800: accuracy appended (83.33%)\n", - "Epoch 3800: model set back to train mode\n", - "Epoch 3800: model parameters saved\n", - "Epoch 3800/10000, Loss: 2.7778, Accuracy: 83.33%\n", - "Epoch 3801 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3801: avg_loss appended (2.7778)\n", - "Epoch 3801: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3801: accuracy appended (83.33%)\n", - "Epoch 3801: model set back to train mode\n", - "Epoch 3801: model parameters saved\n", - "Epoch 3802 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3802: avg_loss appended (2.7778)\n", - "Epoch 3802: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3802: accuracy appended (83.33%)\n", - "Epoch 3802: model set back to train mode\n", - "Epoch 3802: model parameters saved\n", - "Epoch 3803 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3803: avg_loss appended (2.7778)\n", - "Epoch 3803: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3803: accuracy appended (83.33%)\n", - "Epoch 3803: model set back to train mode\n", - "Epoch 3803: model parameters saved\n", - "Epoch 3804 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3804: avg_loss appended (2.7778)\n", - "Epoch 3804: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3804: accuracy appended (83.33%)\n", - "Epoch 3804: model set back to train mode\n", - "Epoch 3804: model parameters saved\n", - "Epoch 3805 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3805: avg_loss appended (2.7778)\n", - "Epoch 3805: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3805: accuracy appended (83.33%)\n", - "Epoch 3805: model set back to train mode\n", - "Epoch 3805: model parameters saved\n", - "Epoch 3806 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3806: avg_loss appended (2.7778)\n", - "Epoch 3806: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3806: accuracy appended (83.33%)\n", - "Epoch 3806: model set back to train mode\n", - "Epoch 3806: model parameters saved\n", - "Epoch 3807 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3807: avg_loss appended (2.7778)\n", - "Epoch 3807: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3807: accuracy appended (83.33%)\n", - "Epoch 3807: model set back to train mode\n", - "Epoch 3807: model parameters saved\n", - "Epoch 3808 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3808: avg_loss appended (2.7778)\n", - "Epoch 3808: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3808: accuracy appended (83.33%)\n", - "Epoch 3808: model set back to train mode\n", - "Epoch 3808: model parameters saved\n", - "Epoch 3809 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3809: avg_loss appended (2.7778)\n", - "Epoch 3809: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3809: accuracy appended (83.33%)\n", - "Epoch 3809: model set back to train mode\n", - "Epoch 3809: model parameters saved\n", - "Epoch 3810 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3810: avg_loss appended (2.7778)\n", - "Epoch 3810: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3810: accuracy appended (83.33%)\n", - "Epoch 3810: model set back to train mode\n", - "Epoch 3810: model parameters saved\n", - "Epoch 3811 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3811: avg_loss appended (2.7778)\n", - "Epoch 3811: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3811: accuracy appended (83.33%)\n", - "Epoch 3811: model set back to train mode\n", - "Epoch 3811: model parameters saved\n", - "Epoch 3812 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3812: avg_loss appended (2.7778)\n", - "Epoch 3812: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3812: accuracy appended (83.33%)\n", - "Epoch 3812: model set back to train mode\n", - "Epoch 3812: model parameters saved\n", - "Epoch 3813 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3813: avg_loss appended (2.7778)\n", - "Epoch 3813: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3813: accuracy appended (83.33%)\n", - "Epoch 3813: model set back to train mode\n", - "Epoch 3813: model parameters saved\n", - "Epoch 3814 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3814: avg_loss appended (2.7778)\n", - "Epoch 3814: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3814: accuracy appended (83.33%)\n", - "Epoch 3814: model set back to train mode\n", - "Epoch 3814: model parameters saved\n", - "Epoch 3815 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3815: avg_loss appended (2.7778)\n", - "Epoch 3815: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3815: accuracy appended (83.33%)\n", - "Epoch 3815: model set back to train mode\n", - "Epoch 3815: model parameters saved\n", - "Epoch 3816 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3816: avg_loss appended (2.7778)\n", - "Epoch 3816: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3816: accuracy appended (83.33%)\n", - "Epoch 3816: model set back to train mode\n", - "Epoch 3816: model parameters saved\n", - "Epoch 3817 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3817: avg_loss appended (2.7778)\n", - "Epoch 3817: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3817: accuracy appended (83.33%)\n", - "Epoch 3817: model set back to train mode\n", - "Epoch 3817: model parameters saved\n", - "Epoch 3818 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3818: avg_loss appended (2.7778)\n", - "Epoch 3818: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3818: accuracy appended (83.33%)\n", - "Epoch 3818: model set back to train mode\n", - "Epoch 3818: model parameters saved\n", - "Epoch 3819 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3819: avg_loss appended (2.7778)\n", - "Epoch 3819: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3819: accuracy appended (83.33%)\n", - "Epoch 3819: model set back to train mode\n", - "Epoch 3819: model parameters saved\n", - "Epoch 3820 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3820: avg_loss appended (2.7778)\n", - "Epoch 3820: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3820: accuracy appended (83.33%)\n", - "Epoch 3820: model set back to train mode\n", - "Epoch 3820: model parameters saved\n", - "Epoch 3821 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3821: avg_loss appended (2.7778)\n", - "Epoch 3821: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3821: accuracy appended (83.33%)\n", - "Epoch 3821: model set back to train mode\n", - "Epoch 3821: model parameters saved\n", - "Epoch 3822 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3822: avg_loss appended (2.7778)\n", - "Epoch 3822: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3822: accuracy appended (83.33%)\n", - "Epoch 3822: model set back to train mode\n", - "Epoch 3822: model parameters saved\n", - "Epoch 3823 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3823: avg_loss appended (2.7778)\n", - "Epoch 3823: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3823: accuracy appended (83.33%)\n", - "Epoch 3823: model set back to train mode\n", - "Epoch 3823: model parameters saved\n", - "Epoch 3824 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3824: avg_loss appended (2.7778)\n", - "Epoch 3824: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3824: accuracy appended (83.33%)\n", - "Epoch 3824: model set back to train mode\n", - "Epoch 3824: model parameters saved\n", - "Epoch 3825 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3825: avg_loss appended (2.7778)\n", - "Epoch 3825: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3825: accuracy appended (83.33%)\n", - "Epoch 3825: model set back to train mode\n", - "Epoch 3825: model parameters saved\n", - "Epoch 3826 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3826: avg_loss appended (2.7778)\n", - "Epoch 3826: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3826: accuracy appended (83.33%)\n", - "Epoch 3826: model set back to train mode\n", - "Epoch 3826: model parameters saved\n", - "Epoch 3827 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3827: avg_loss appended (2.7778)\n", - "Epoch 3827: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3827: accuracy appended (83.33%)\n", - "Epoch 3827: model set back to train mode\n", - "Epoch 3827: model parameters saved\n", - "Epoch 3828 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3828: avg_loss appended (2.7778)\n", - "Epoch 3828: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3828: accuracy appended (83.33%)\n", - "Epoch 3828: model set back to train mode\n", - "Epoch 3828: model parameters saved\n", - "Epoch 3829 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3829: avg_loss appended (2.7778)\n", - "Epoch 3829: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3829: accuracy appended (83.33%)\n", - "Epoch 3829: model set back to train mode\n", - "Epoch 3829: model parameters saved\n", - "Epoch 3830 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3830: avg_loss appended (2.7778)\n", - "Epoch 3830: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3830: accuracy appended (83.33%)\n", - "Epoch 3830: model set back to train mode\n", - "Epoch 3830: model parameters saved\n", - "Epoch 3831 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3831: avg_loss appended (2.7778)\n", - "Epoch 3831: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3831: accuracy appended (83.33%)\n", - "Epoch 3831: model set back to train mode\n", - "Epoch 3831: model parameters saved\n", - "Epoch 3832 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3832: avg_loss appended (2.7778)\n", - "Epoch 3832: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3832: accuracy appended (83.33%)\n", - "Epoch 3832: model set back to train mode\n", - "Epoch 3832: model parameters saved\n", - "Epoch 3833 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3833: avg_loss appended (2.7778)\n", - "Epoch 3833: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3833: accuracy appended (83.33%)\n", - "Epoch 3833: model set back to train mode\n", - "Epoch 3833: model parameters saved\n", - "Epoch 3834 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3834: avg_loss appended (2.7778)\n", - "Epoch 3834: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3834: accuracy appended (83.33%)\n", - "Epoch 3834: model set back to train mode\n", - "Epoch 3834: model parameters saved\n", - "Epoch 3835 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3835: avg_loss appended (2.7778)\n", - "Epoch 3835: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3835: accuracy appended (83.33%)\n", - "Epoch 3835: model set back to train mode\n", - "Epoch 3835: model parameters saved\n", - "Epoch 3836 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3836: avg_loss appended (2.7778)\n", - "Epoch 3836: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3836: accuracy appended (83.33%)\n", - "Epoch 3836: model set back to train mode\n", - "Epoch 3836: model parameters saved\n", - "Epoch 3837 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3837: avg_loss appended (2.7778)\n", - "Epoch 3837: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3837: accuracy appended (83.33%)\n", - "Epoch 3837: model set back to train mode\n", - "Epoch 3837: model parameters saved\n", - "Epoch 3838 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3838: avg_loss appended (2.7778)\n", - "Epoch 3838: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3838: accuracy appended (83.33%)\n", - "Epoch 3838: model set back to train mode\n", - "Epoch 3838: model parameters saved\n", - "Epoch 3839 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3839: avg_loss appended (2.7778)\n", - "Epoch 3839: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3839: accuracy appended (83.33%)\n", - "Epoch 3839: model set back to train mode\n", - "Epoch 3839: model parameters saved\n", - "Epoch 3840 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3840: avg_loss appended (2.7778)\n", - "Epoch 3840: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3840: accuracy appended (83.33%)\n", - "Epoch 3840: model set back to train mode\n", - "Epoch 3840: model parameters saved\n", - "Epoch 3841 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3841: avg_loss appended (2.7778)\n", - "Epoch 3841: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3841: accuracy appended (83.33%)\n", - "Epoch 3841: model set back to train mode\n", - "Epoch 3841: model parameters saved\n", - "Epoch 3842 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3842: avg_loss appended (2.7778)\n", - "Epoch 3842: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3842: accuracy appended (83.33%)\n", - "Epoch 3842: model set back to train mode\n", - "Epoch 3842: model parameters saved\n", - "Epoch 3843 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3843: avg_loss appended (2.7778)\n", - "Epoch 3843: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3843: accuracy appended (83.33%)\n", - "Epoch 3843: model set back to train mode\n", - "Epoch 3843: model parameters saved\n", - "Epoch 3844 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3844: avg_loss appended (2.7778)\n", - "Epoch 3844: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3844: accuracy appended (83.33%)\n", - "Epoch 3844: model set back to train mode\n", - "Epoch 3844: model parameters saved\n", - "Epoch 3845 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3845: avg_loss appended (2.7778)\n", - "Epoch 3845: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3845: accuracy appended (83.33%)\n", - "Epoch 3845: model set back to train mode\n", - "Epoch 3845: model parameters saved\n", - "Epoch 3846 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3846: avg_loss appended (2.7778)\n", - "Epoch 3846: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3846: accuracy appended (83.33%)\n", - "Epoch 3846: model set back to train mode\n", - "Epoch 3846: model parameters saved\n", - "Epoch 3847 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3847: avg_loss appended (2.7778)\n", - "Epoch 3847: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3847: accuracy appended (83.33%)\n", - "Epoch 3847: model set back to train mode\n", - "Epoch 3847: model parameters saved\n", - "Epoch 3848 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3848: avg_loss appended (2.7778)\n", - "Epoch 3848: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3848: accuracy appended (83.33%)\n", - "Epoch 3848: model set back to train mode\n", - "Epoch 3848: model parameters saved\n", - "Epoch 3849 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3849: avg_loss appended (2.7778)\n", - "Epoch 3849: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3849: accuracy appended (83.33%)\n", - "Epoch 3849: model set back to train mode\n", - "Epoch 3849: model parameters saved\n", - "Epoch 3850 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3850: avg_loss appended (2.7778)\n", - "Epoch 3850: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3850: accuracy appended (83.33%)\n", - "Epoch 3850: model set back to train mode\n", - "Epoch 3850: model parameters saved\n", - "Epoch 3851 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3851: avg_loss appended (2.7778)\n", - "Epoch 3851: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3851: accuracy appended (83.33%)\n", - "Epoch 3851: model set back to train mode\n", - "Epoch 3851: model parameters saved\n", - "Epoch 3852 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3852: avg_loss appended (2.7778)\n", - "Epoch 3852: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3852: accuracy appended (83.33%)\n", - "Epoch 3852: model set back to train mode\n", - "Epoch 3852: model parameters saved\n", - "Epoch 3853 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3853: avg_loss appended (2.7778)\n", - "Epoch 3853: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3853: accuracy appended (83.33%)\n", - "Epoch 3853: model set back to train mode\n", - "Epoch 3853: model parameters saved\n", - "Epoch 3854 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3854: avg_loss appended (2.7778)\n", - "Epoch 3854: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3854: accuracy appended (83.33%)\n", - "Epoch 3854: model set back to train mode\n", - "Epoch 3854: model parameters saved\n", - "Epoch 3855 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3855: avg_loss appended (2.7778)\n", - "Epoch 3855: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3855: accuracy appended (83.33%)\n", - "Epoch 3855: model set back to train mode\n", - "Epoch 3855: model parameters saved\n", - "Epoch 3856 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3856: avg_loss appended (2.7778)\n", - "Epoch 3856: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3856: accuracy appended (83.33%)\n", - "Epoch 3856: model set back to train mode\n", - "Epoch 3856: model parameters saved\n", - "Epoch 3857 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3857: avg_loss appended (2.7778)\n", - "Epoch 3857: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3857: accuracy appended (83.33%)\n", - "Epoch 3857: model set back to train mode\n", - "Epoch 3857: model parameters saved\n", - "Epoch 3858 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3858: avg_loss appended (2.7778)\n", - "Epoch 3858: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3858: accuracy appended (83.33%)\n", - "Epoch 3858: model set back to train mode\n", - "Epoch 3858: model parameters saved\n", - "Epoch 3859 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3859: avg_loss appended (2.7778)\n", - "Epoch 3859: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3859: accuracy appended (83.33%)\n", - "Epoch 3859: model set back to train mode\n", - "Epoch 3859: model parameters saved\n", - "Epoch 3860 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3860: avg_loss appended (2.7778)\n", - "Epoch 3860: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3860: accuracy appended (83.33%)\n", - "Epoch 3860: model set back to train mode\n", - "Epoch 3860: model parameters saved\n", - "Epoch 3861 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3861: avg_loss appended (2.7778)\n", - "Epoch 3861: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3861: accuracy appended (83.33%)\n", - "Epoch 3861: model set back to train mode\n", - "Epoch 3861: model parameters saved\n", - "Epoch 3862 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3862: avg_loss appended (2.7778)\n", - "Epoch 3862: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3862: accuracy appended (83.33%)\n", - "Epoch 3862: model set back to train mode\n", - "Epoch 3862: model parameters saved\n", - "Epoch 3863 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3863: avg_loss appended (2.7778)\n", - "Epoch 3863: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3863: accuracy appended (83.33%)\n", - "Epoch 3863: model set back to train mode\n", - "Epoch 3863: model parameters saved\n", - "Epoch 3864 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3864: avg_loss appended (2.7778)\n", - "Epoch 3864: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3864: accuracy appended (83.33%)\n", - "Epoch 3864: model set back to train mode\n", - "Epoch 3864: model parameters saved\n", - "Epoch 3865 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3865: avg_loss appended (2.7778)\n", - "Epoch 3865: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3865: accuracy appended (83.33%)\n", - "Epoch 3865: model set back to train mode\n", - "Epoch 3865: model parameters saved\n", - "Epoch 3866 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3866: avg_loss appended (2.7778)\n", - "Epoch 3866: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3866: accuracy appended (83.33%)\n", - "Epoch 3866: model set back to train mode\n", - "Epoch 3866: model parameters saved\n", - "Epoch 3867 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3867: avg_loss appended (2.7778)\n", - "Epoch 3867: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3867: accuracy appended (83.33%)\n", - "Epoch 3867: model set back to train mode\n", - "Epoch 3867: model parameters saved\n", - "Epoch 3868 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3868: avg_loss appended (2.7778)\n", - "Epoch 3868: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3868: accuracy appended (83.33%)\n", - "Epoch 3868: model set back to train mode\n", - "Epoch 3868: model parameters saved\n", - "Epoch 3869 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3869: avg_loss appended (2.7778)\n", - "Epoch 3869: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3869: accuracy appended (83.33%)\n", - "Epoch 3869: model set back to train mode\n", - "Epoch 3869: model parameters saved\n", - "Epoch 3870 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3870: avg_loss appended (2.7778)\n", - "Epoch 3870: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3870: accuracy appended (83.33%)\n", - "Epoch 3870: model set back to train mode\n", - "Epoch 3870: model parameters saved\n", - "Epoch 3871 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3871: avg_loss appended (2.7778)\n", - "Epoch 3871: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3871: accuracy appended (83.33%)\n", - "Epoch 3871: model set back to train mode\n", - "Epoch 3871: model parameters saved\n", - "Epoch 3872 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3872: avg_loss appended (2.7778)\n", - "Epoch 3872: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3872: accuracy appended (83.33%)\n", - "Epoch 3872: model set back to train mode\n", - "Epoch 3872: model parameters saved\n", - "Epoch 3873 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3873: avg_loss appended (2.7778)\n", - "Epoch 3873: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3873: accuracy appended (83.33%)\n", - "Epoch 3873: model set back to train mode\n", - "Epoch 3873: model parameters saved\n", - "Epoch 3874 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3874: avg_loss appended (2.7778)\n", - "Epoch 3874: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3874: accuracy appended (83.33%)\n", - "Epoch 3874: model set back to train mode\n", - "Epoch 3874: model parameters saved\n", - "Epoch 3875 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3875: avg_loss appended (2.7778)\n", - "Epoch 3875: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3875: accuracy appended (83.33%)\n", - "Epoch 3875: model set back to train mode\n", - "Epoch 3875: model parameters saved\n", - "Epoch 3876 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3876: avg_loss appended (2.7778)\n", - "Epoch 3876: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3876: accuracy appended (83.33%)\n", - "Epoch 3876: model set back to train mode\n", - "Epoch 3876: model parameters saved\n", - "Epoch 3877 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3877: avg_loss appended (2.7778)\n", - "Epoch 3877: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3877: accuracy appended (83.33%)\n", - "Epoch 3877: model set back to train mode\n", - "Epoch 3877: model parameters saved\n", - "Epoch 3878 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3878: avg_loss appended (2.7778)\n", - "Epoch 3878: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3878: accuracy appended (83.33%)\n", - "Epoch 3878: model set back to train mode\n", - "Epoch 3878: model parameters saved\n", - "Epoch 3879 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3879: avg_loss appended (2.7778)\n", - "Epoch 3879: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3879: accuracy appended (83.33%)\n", - "Epoch 3879: model set back to train mode\n", - "Epoch 3879: model parameters saved\n", - "Epoch 3880 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3880: avg_loss appended (2.7778)\n", - "Epoch 3880: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3880: accuracy appended (83.33%)\n", - "Epoch 3880: model set back to train mode\n", - "Epoch 3880: model parameters saved\n", - "Epoch 3881 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3881: avg_loss appended (2.7778)\n", - "Epoch 3881: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3881: accuracy appended (83.33%)\n", - "Epoch 3881: model set back to train mode\n", - "Epoch 3881: model parameters saved\n", - "Epoch 3882 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3882: avg_loss appended (2.7778)\n", - "Epoch 3882: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3882: accuracy appended (83.33%)\n", - "Epoch 3882: model set back to train mode\n", - "Epoch 3882: model parameters saved\n", - "Epoch 3883 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3883: avg_loss appended (2.7778)\n", - "Epoch 3883: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3883: accuracy appended (83.33%)\n", - "Epoch 3883: model set back to train mode\n", - "Epoch 3883: model parameters saved\n", - "Epoch 3884 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3884: avg_loss appended (2.7778)\n", - "Epoch 3884: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3884: accuracy appended (83.33%)\n", - "Epoch 3884: model set back to train mode\n", - "Epoch 3884: model parameters saved\n", - "Epoch 3885 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3885: avg_loss appended (2.7778)\n", - "Epoch 3885: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3885: accuracy appended (83.33%)\n", - "Epoch 3885: model set back to train mode\n", - "Epoch 3885: model parameters saved\n", - "Epoch 3886 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3886: avg_loss appended (2.7778)\n", - "Epoch 3886: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3886: accuracy appended (83.33%)\n", - "Epoch 3886: model set back to train mode\n", - "Epoch 3886: model parameters saved\n", - "Epoch 3887 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3887: avg_loss appended (2.7778)\n", - "Epoch 3887: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3887: accuracy appended (83.33%)\n", - "Epoch 3887: model set back to train mode\n", - "Epoch 3887: model parameters saved\n", - "Epoch 3888 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3888: avg_loss appended (2.7778)\n", - "Epoch 3888: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3888: accuracy appended (83.33%)\n", - "Epoch 3888: model set back to train mode\n", - "Epoch 3888: model parameters saved\n", - "Epoch 3889 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3889: avg_loss appended (2.7778)\n", - "Epoch 3889: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3889: accuracy appended (83.33%)\n", - "Epoch 3889: model set back to train mode\n", - "Epoch 3889: model parameters saved\n", - "Epoch 3890 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3890: avg_loss appended (2.7778)\n", - "Epoch 3890: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3890: accuracy appended (83.33%)\n", - "Epoch 3890: model set back to train mode\n", - "Epoch 3890: model parameters saved\n", - "Epoch 3891 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3891: avg_loss appended (2.7778)\n", - "Epoch 3891: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3891: accuracy appended (83.33%)\n", - "Epoch 3891: model set back to train mode\n", - "Epoch 3891: model parameters saved\n", - "Epoch 3892 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3892: avg_loss appended (2.7778)\n", - "Epoch 3892: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3892: accuracy appended (83.33%)\n", - "Epoch 3892: model set back to train mode\n", - "Epoch 3892: model parameters saved\n", - "Epoch 3893 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3893: avg_loss appended (2.7778)\n", - "Epoch 3893: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3893: accuracy appended (83.33%)\n", - "Epoch 3893: model set back to train mode\n", - "Epoch 3893: model parameters saved\n", - "Epoch 3894 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3894: avg_loss appended (2.7778)\n", - "Epoch 3894: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3894: accuracy appended (83.33%)\n", - "Epoch 3894: model set back to train mode\n", - "Epoch 3894: model parameters saved\n", - "Epoch 3895 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3895: avg_loss appended (2.7778)\n", - "Epoch 3895: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3895: accuracy appended (83.33%)\n", - "Epoch 3895: model set back to train mode\n", - "Epoch 3895: model parameters saved\n", - "Epoch 3896 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3896: avg_loss appended (2.7778)\n", - "Epoch 3896: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3896: accuracy appended (83.33%)\n", - "Epoch 3896: model set back to train mode\n", - "Epoch 3896: model parameters saved\n", - "Epoch 3897 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3897: avg_loss appended (2.7778)\n", - "Epoch 3897: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3897: accuracy appended (83.33%)\n", - "Epoch 3897: model set back to train mode\n", - "Epoch 3897: model parameters saved\n", - "Epoch 3898 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3898: avg_loss appended (2.7778)\n", - "Epoch 3898: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3898: accuracy appended (83.33%)\n", - "Epoch 3898: model set back to train mode\n", - "Epoch 3898: model parameters saved\n", - "Epoch 3899 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3899: avg_loss appended (2.7778)\n", - "Epoch 3899: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3899: accuracy appended (83.33%)\n", - "Epoch 3899: model set back to train mode\n", - "Epoch 3899: model parameters saved\n", - "Epoch 3900 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3900: avg_loss appended (2.7778)\n", - "Epoch 3900: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3900: accuracy appended (83.33%)\n", - "Epoch 3900: model set back to train mode\n", - "Epoch 3900: model parameters saved\n", - "Epoch 3900/10000, Loss: 2.7778, Accuracy: 83.33%\n", - "Epoch 3901 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3901: avg_loss appended (2.7778)\n", - "Epoch 3901: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3901: accuracy appended (83.33%)\n", - "Epoch 3901: model set back to train mode\n", - "Epoch 3901: model parameters saved\n", - "Epoch 3902 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3902: avg_loss appended (2.7778)\n", - "Epoch 3902: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3902: accuracy appended (83.33%)\n", - "Epoch 3902: model set back to train mode\n", - "Epoch 3902: model parameters saved\n", - "Epoch 3903 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3903: avg_loss appended (2.7778)\n", - "Epoch 3903: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3903: accuracy appended (83.33%)\n", - "Epoch 3903: model set back to train mode\n", - "Epoch 3903: model parameters saved\n", - "Epoch 3904 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3904: avg_loss appended (2.7778)\n", - "Epoch 3904: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3904: accuracy appended (83.33%)\n", - "Epoch 3904: model set back to train mode\n", - "Epoch 3904: model parameters saved\n", - "Epoch 3905 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3905: avg_loss appended (2.7778)\n", - "Epoch 3905: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3905: accuracy appended (83.33%)\n", - "Epoch 3905: model set back to train mode\n", - "Epoch 3905: model parameters saved\n", - "Epoch 3906 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3906: avg_loss appended (2.7778)\n", - "Epoch 3906: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3906: accuracy appended (83.33%)\n", - "Epoch 3906: model set back to train mode\n", - "Epoch 3906: model parameters saved\n", - "Epoch 3907 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3907: avg_loss appended (2.7778)\n", - "Epoch 3907: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3907: accuracy appended (83.33%)\n", - "Epoch 3907: model set back to train mode\n", - "Epoch 3907: model parameters saved\n", - "Epoch 3908 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3908: avg_loss appended (2.7778)\n", - "Epoch 3908: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3908: accuracy appended (83.33%)\n", - "Epoch 3908: model set back to train mode\n", - "Epoch 3908: model parameters saved\n", - "Epoch 3909 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3909: avg_loss appended (2.7778)\n", - "Epoch 3909: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3909: accuracy appended (83.33%)\n", - "Epoch 3909: model set back to train mode\n", - "Epoch 3909: model parameters saved\n", - "Epoch 3910 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3910: avg_loss appended (2.7778)\n", - "Epoch 3910: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3910: accuracy appended (83.33%)\n", - "Epoch 3910: model set back to train mode\n", - "Epoch 3910: model parameters saved\n", - "Epoch 3911 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3911: avg_loss appended (2.7778)\n", - "Epoch 3911: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3911: accuracy appended (83.33%)\n", - "Epoch 3911: model set back to train mode\n", - "Epoch 3911: model parameters saved\n", - "Epoch 3912 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3912: avg_loss appended (2.7778)\n", - "Epoch 3912: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3912: accuracy appended (83.33%)\n", - "Epoch 3912: model set back to train mode\n", - "Epoch 3912: model parameters saved\n", - "Epoch 3913 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3913: avg_loss appended (2.7778)\n", - "Epoch 3913: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3913: accuracy appended (83.33%)\n", - "Epoch 3913: model set back to train mode\n", - "Epoch 3913: model parameters saved\n", - "Epoch 3914 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3914: avg_loss appended (2.7778)\n", - "Epoch 3914: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3914: accuracy appended (83.33%)\n", - "Epoch 3914: model set back to train mode\n", - "Epoch 3914: model parameters saved\n", - "Epoch 3915 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3915: avg_loss appended (2.7778)\n", - "Epoch 3915: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3915: accuracy appended (83.33%)\n", - "Epoch 3915: model set back to train mode\n", - "Epoch 3915: model parameters saved\n", - "Epoch 3916 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3916: avg_loss appended (2.7778)\n", - "Epoch 3916: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3916: accuracy appended (83.33%)\n", - "Epoch 3916: model set back to train mode\n", - "Epoch 3916: model parameters saved\n", - "Epoch 3917 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3917: avg_loss appended (2.7778)\n", - "Epoch 3917: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3917: accuracy appended (83.33%)\n", - "Epoch 3917: model set back to train mode\n", - "Epoch 3917: model parameters saved\n", - "Epoch 3918 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3918: avg_loss appended (2.7778)\n", - "Epoch 3918: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3918: accuracy appended (83.33%)\n", - "Epoch 3918: model set back to train mode\n", - "Epoch 3918: model parameters saved\n", - "Epoch 3919 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3919: avg_loss appended (2.7778)\n", - "Epoch 3919: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3919: accuracy appended (83.33%)\n", - "Epoch 3919: model set back to train mode\n", - "Epoch 3919: model parameters saved\n", - "Epoch 3920 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3920: avg_loss appended (2.7778)\n", - "Epoch 3920: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3920: accuracy appended (83.33%)\n", - "Epoch 3920: model set back to train mode\n", - "Epoch 3920: model parameters saved\n", - "Epoch 3921 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3921: avg_loss appended (2.7778)\n", - "Epoch 3921: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3921: accuracy appended (83.33%)\n", - "Epoch 3921: model set back to train mode\n", - "Epoch 3921: model parameters saved\n", - "Epoch 3922 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3922: avg_loss appended (2.7778)\n", - "Epoch 3922: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3922: accuracy appended (83.33%)\n", - "Epoch 3922: model set back to train mode\n", - "Epoch 3922: model parameters saved\n", - "Epoch 3923 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3923: avg_loss appended (2.7778)\n", - "Epoch 3923: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3923: accuracy appended (83.33%)\n", - "Epoch 3923: model set back to train mode\n", - "Epoch 3923: model parameters saved\n", - "Epoch 3924 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3924: avg_loss appended (2.7778)\n", - "Epoch 3924: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3924: accuracy appended (83.33%)\n", - "Epoch 3924: model set back to train mode\n", - "Epoch 3924: model parameters saved\n", - "Epoch 3925 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3925: avg_loss appended (2.7778)\n", - "Epoch 3925: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3925: accuracy appended (83.33%)\n", - "Epoch 3925: model set back to train mode\n", - "Epoch 3925: model parameters saved\n", - "Epoch 3926 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3926: avg_loss appended (2.7778)\n", - "Epoch 3926: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3926: accuracy appended (83.33%)\n", - "Epoch 3926: model set back to train mode\n", - "Epoch 3926: model parameters saved\n", - "Epoch 3927 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3927: avg_loss appended (2.7778)\n", - "Epoch 3927: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3927: accuracy appended (83.33%)\n", - "Epoch 3927: model set back to train mode\n", - "Epoch 3927: model parameters saved\n", - "Epoch 3928 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3928: avg_loss appended (2.7778)\n", - "Epoch 3928: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3928: accuracy appended (83.33%)\n", - "Epoch 3928: model set back to train mode\n", - "Epoch 3928: model parameters saved\n", - "Epoch 3929 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3929: avg_loss appended (2.7778)\n", - "Epoch 3929: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3929: accuracy appended (83.33%)\n", - "Epoch 3929: model set back to train mode\n", - "Epoch 3929: model parameters saved\n", - "Epoch 3930 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3930: avg_loss appended (2.7778)\n", - "Epoch 3930: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3930: accuracy appended (83.33%)\n", - "Epoch 3930: model set back to train mode\n", - "Epoch 3930: model parameters saved\n", - "Epoch 3931 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3931: avg_loss appended (2.7778)\n", - "Epoch 3931: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3931: accuracy appended (83.33%)\n", - "Epoch 3931: model set back to train mode\n", - "Epoch 3931: model parameters saved\n", - "Epoch 3932 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3932: avg_loss appended (2.7778)\n", - "Epoch 3932: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3932: accuracy appended (83.33%)\n", - "Epoch 3932: model set back to train mode\n", - "Epoch 3932: model parameters saved\n", - "Epoch 3933 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3933: avg_loss appended (2.7778)\n", - "Epoch 3933: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3933: accuracy appended (83.33%)\n", - "Epoch 3933: model set back to train mode\n", - "Epoch 3933: model parameters saved\n", - "Epoch 3934 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3934: avg_loss appended (2.7778)\n", - "Epoch 3934: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3934: accuracy appended (83.33%)\n", - "Epoch 3934: model set back to train mode\n", - "Epoch 3934: model parameters saved\n", - "Epoch 3935 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3935: avg_loss appended (2.7778)\n", - "Epoch 3935: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3935: accuracy appended (83.33%)\n", - "Epoch 3935: model set back to train mode\n", - "Epoch 3935: model parameters saved\n", - "Epoch 3936 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3936: avg_loss appended (2.7778)\n", - "Epoch 3936: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3936: accuracy appended (83.33%)\n", - "Epoch 3936: model set back to train mode\n", - "Epoch 3936: model parameters saved\n", - "Epoch 3937 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3937: avg_loss appended (2.7778)\n", - "Epoch 3937: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3937: accuracy appended (83.33%)\n", - "Epoch 3937: model set back to train mode\n", - "Epoch 3937: model parameters saved\n", - "Epoch 3938 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3938: avg_loss appended (2.7778)\n", - "Epoch 3938: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3938: accuracy appended (83.33%)\n", - "Epoch 3938: model set back to train mode\n", - "Epoch 3938: model parameters saved\n", - "Epoch 3939 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3939: avg_loss appended (2.7778)\n", - "Epoch 3939: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3939: accuracy appended (83.33%)\n", - "Epoch 3939: model set back to train mode\n", - "Epoch 3939: model parameters saved\n", - "Epoch 3940 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3940: avg_loss appended (2.7778)\n", - "Epoch 3940: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3940: accuracy appended (83.33%)\n", - "Epoch 3940: model set back to train mode\n", - "Epoch 3940: model parameters saved\n", - "Epoch 3941 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3941: avg_loss appended (2.7778)\n", - "Epoch 3941: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3941: accuracy appended (83.33%)\n", - "Epoch 3941: model set back to train mode\n", - "Epoch 3941: model parameters saved\n", - "Epoch 3942 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3942: avg_loss appended (2.7778)\n", - "Epoch 3942: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3942: accuracy appended (83.33%)\n", - "Epoch 3942: model set back to train mode\n", - "Epoch 3942: model parameters saved\n", - "Epoch 3943 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3943: avg_loss appended (2.7778)\n", - "Epoch 3943: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3943: accuracy appended (83.33%)\n", - "Epoch 3943: model set back to train mode\n", - "Epoch 3943: model parameters saved\n", - "Epoch 3944 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3944: avg_loss appended (2.7778)\n", - "Epoch 3944: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3944: accuracy appended (83.33%)\n", - "Epoch 3944: model set back to train mode\n", - "Epoch 3944: model parameters saved\n", - "Epoch 3945 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3945: avg_loss appended (2.7778)\n", - "Epoch 3945: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3945: accuracy appended (83.33%)\n", - "Epoch 3945: model set back to train mode\n", - "Epoch 3945: model parameters saved\n", - "Epoch 3946 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3946: avg_loss appended (2.7778)\n", - "Epoch 3946: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3946: accuracy appended (83.33%)\n", - "Epoch 3946: model set back to train mode\n", - "Epoch 3946: model parameters saved\n", - "Epoch 3947 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3947: avg_loss appended (2.7778)\n", - "Epoch 3947: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3947: accuracy appended (83.33%)\n", - "Epoch 3947: model set back to train mode\n", - "Epoch 3947: model parameters saved\n", - "Epoch 3948 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3948: avg_loss appended (2.7778)\n", - "Epoch 3948: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3948: accuracy appended (83.33%)\n", - "Epoch 3948: model set back to train mode\n", - "Epoch 3948: model parameters saved\n", - "Epoch 3949 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3949: avg_loss appended (2.7778)\n", - "Epoch 3949: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3949: accuracy appended (83.33%)\n", - "Epoch 3949: model set back to train mode\n", - "Epoch 3949: model parameters saved\n", - "Epoch 3950 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3950: avg_loss appended (2.7778)\n", - "Epoch 3950: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3950: accuracy appended (83.33%)\n", - "Epoch 3950: model set back to train mode\n", - "Epoch 3950: model parameters saved\n", - "Epoch 3951 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3951: avg_loss appended (2.7778)\n", - "Epoch 3951: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3951: accuracy appended (83.33%)\n", - "Epoch 3951: model set back to train mode\n", - "Epoch 3951: model parameters saved\n", - "Epoch 3952 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3952: avg_loss appended (2.7778)\n", - "Epoch 3952: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3952: accuracy appended (83.33%)\n", - "Epoch 3952: model set back to train mode\n", - "Epoch 3952: model parameters saved\n", - "Epoch 3953 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3953: avg_loss appended (2.7778)\n", - "Epoch 3953: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3953: accuracy appended (83.33%)\n", - "Epoch 3953: model set back to train mode\n", - "Epoch 3953: model parameters saved\n", - "Epoch 3954 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3954: avg_loss appended (2.7778)\n", - "Epoch 3954: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3954: accuracy appended (83.33%)\n", - "Epoch 3954: model set back to train mode\n", - "Epoch 3954: model parameters saved\n", - "Epoch 3955 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3955: avg_loss appended (2.7778)\n", - "Epoch 3955: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3955: accuracy appended (83.33%)\n", - "Epoch 3955: model set back to train mode\n", - "Epoch 3955: model parameters saved\n", - "Epoch 3956 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3956: avg_loss appended (2.7778)\n", - "Epoch 3956: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3956: accuracy appended (83.33%)\n", - "Epoch 3956: model set back to train mode\n", - "Epoch 3956: model parameters saved\n", - "Epoch 3957 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3957: avg_loss appended (2.7778)\n", - "Epoch 3957: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3957: accuracy appended (83.33%)\n", - "Epoch 3957: model set back to train mode\n", - "Epoch 3957: model parameters saved\n", - "Epoch 3958 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3958: avg_loss appended (2.7778)\n", - "Epoch 3958: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3958: accuracy appended (83.33%)\n", - "Epoch 3958: model set back to train mode\n", - "Epoch 3958: model parameters saved\n", - "Epoch 3959 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3959: avg_loss appended (2.7778)\n", - "Epoch 3959: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3959: accuracy appended (83.33%)\n", - "Epoch 3959: model set back to train mode\n", - "Epoch 3959: model parameters saved\n", - "Epoch 3960 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3960: avg_loss appended (2.7778)\n", - "Epoch 3960: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3960: accuracy appended (83.33%)\n", - "Epoch 3960: model set back to train mode\n", - "Epoch 3960: model parameters saved\n", - "Epoch 3961 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3961: avg_loss appended (2.7778)\n", - "Epoch 3961: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3961: accuracy appended (83.33%)\n", - "Epoch 3961: model set back to train mode\n", - "Epoch 3961: model parameters saved\n", - "Epoch 3962 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3962: avg_loss appended (2.7778)\n", - "Epoch 3962: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3962: accuracy appended (83.33%)\n", - "Epoch 3962: model set back to train mode\n", - "Epoch 3962: model parameters saved\n", - "Epoch 3963 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3963: avg_loss appended (2.7778)\n", - "Epoch 3963: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3963: accuracy appended (83.33%)\n", - "Epoch 3963: model set back to train mode\n", - "Epoch 3963: model parameters saved\n", - "Epoch 3964 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3964: avg_loss appended (2.7778)\n", - "Epoch 3964: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3964: accuracy appended (83.33%)\n", - "Epoch 3964: model set back to train mode\n", - "Epoch 3964: model parameters saved\n", - "Epoch 3965 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3965: avg_loss appended (2.7778)\n", - "Epoch 3965: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3965: accuracy appended (83.33%)\n", - "Epoch 3965: model set back to train mode\n", - "Epoch 3965: model parameters saved\n", - "Epoch 3966 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3966: avg_loss appended (2.7778)\n", - "Epoch 3966: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3966: accuracy appended (83.33%)\n", - "Epoch 3966: model set back to train mode\n", - "Epoch 3966: model parameters saved\n", - "Epoch 3967 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3967: avg_loss appended (2.7778)\n", - "Epoch 3967: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3967: accuracy appended (83.33%)\n", - "Epoch 3967: model set back to train mode\n", - "Epoch 3967: model parameters saved\n", - "Epoch 3968 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3968: avg_loss appended (2.7778)\n", - "Epoch 3968: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3968: accuracy appended (83.33%)\n", - "Epoch 3968: model set back to train mode\n", - "Epoch 3968: model parameters saved\n", - "Epoch 3969 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3969: avg_loss appended (2.7778)\n", - "Epoch 3969: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3969: accuracy appended (83.33%)\n", - "Epoch 3969: model set back to train mode\n", - "Epoch 3969: model parameters saved\n", - "Epoch 3970 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3970: avg_loss appended (2.7778)\n", - "Epoch 3970: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3970: accuracy appended (83.33%)\n", - "Epoch 3970: model set back to train mode\n", - "Epoch 3970: model parameters saved\n", - "Epoch 3971 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3971: avg_loss appended (2.7778)\n", - "Epoch 3971: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3971: accuracy appended (83.33%)\n", - "Epoch 3971: model set back to train mode\n", - "Epoch 3971: model parameters saved\n", - "Epoch 3972 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3972: avg_loss appended (2.7778)\n", - "Epoch 3972: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3972: accuracy appended (83.33%)\n", - "Epoch 3972: model set back to train mode\n", - "Epoch 3972: model parameters saved\n", - "Epoch 3973 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3973: avg_loss appended (2.7778)\n", - "Epoch 3973: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3973: accuracy appended (83.33%)\n", - "Epoch 3973: model set back to train mode\n", - "Epoch 3973: model parameters saved\n", - "Epoch 3974 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3974: avg_loss appended (2.7778)\n", - "Epoch 3974: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3974: accuracy appended (83.33%)\n", - "Epoch 3974: model set back to train mode\n", - "Epoch 3974: model parameters saved\n", - "Epoch 3975 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3975: avg_loss appended (2.7778)\n", - "Epoch 3975: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3975: accuracy appended (83.33%)\n", - "Epoch 3975: model set back to train mode\n", - "Epoch 3975: model parameters saved\n", - "Epoch 3976 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3976: avg_loss appended (2.7778)\n", - "Epoch 3976: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3976: accuracy appended (83.33%)\n", - "Epoch 3976: model set back to train mode\n", - "Epoch 3976: model parameters saved\n", - "Epoch 3977 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3977: avg_loss appended (2.7778)\n", - "Epoch 3977: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3977: accuracy appended (83.33%)\n", - "Epoch 3977: model set back to train mode\n", - "Epoch 3977: model parameters saved\n", - "Epoch 3978 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3978: avg_loss appended (2.7778)\n", - "Epoch 3978: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3978: accuracy appended (83.33%)\n", - "Epoch 3978: model set back to train mode\n", - "Epoch 3978: model parameters saved\n", - "Epoch 3979 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3979: avg_loss appended (2.7778)\n", - "Epoch 3979: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3979: accuracy appended (83.33%)\n", - "Epoch 3979: model set back to train mode\n", - "Epoch 3979: model parameters saved\n", - "Epoch 3980 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3980: avg_loss appended (2.7778)\n", - "Epoch 3980: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3980: accuracy appended (83.33%)\n", - "Epoch 3980: model set back to train mode\n", - "Epoch 3980: model parameters saved\n", - "Epoch 3981 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3981: avg_loss appended (2.7778)\n", - "Epoch 3981: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3981: accuracy appended (83.33%)\n", - "Epoch 3981: model set back to train mode\n", - "Epoch 3981: model parameters saved\n", - "Epoch 3982 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3982: avg_loss appended (2.7778)\n", - "Epoch 3982: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3982: accuracy appended (83.33%)\n", - "Epoch 3982: model set back to train mode\n", - "Epoch 3982: model parameters saved\n", - "Epoch 3983 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3983: avg_loss appended (2.7778)\n", - "Epoch 3983: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3983: accuracy appended (83.33%)\n", - "Epoch 3983: model set back to train mode\n", - "Epoch 3983: model parameters saved\n", - "Epoch 3984 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3984: avg_loss appended (2.7778)\n", - "Epoch 3984: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3984: accuracy appended (83.33%)\n", - "Epoch 3984: model set back to train mode\n", - "Epoch 3984: model parameters saved\n", - "Epoch 3985 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3985: avg_loss appended (2.7778)\n", - "Epoch 3985: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3985: accuracy appended (83.33%)\n", - "Epoch 3985: model set back to train mode\n", - "Epoch 3985: model parameters saved\n", - "Epoch 3986 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3986: avg_loss appended (2.7778)\n", - "Epoch 3986: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3986: accuracy appended (83.33%)\n", - "Epoch 3986: model set back to train mode\n", - "Epoch 3986: model parameters saved\n", - "Epoch 3987 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3987: avg_loss appended (2.7778)\n", - "Epoch 3987: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3987: accuracy appended (83.33%)\n", - "Epoch 3987: model set back to train mode\n", - "Epoch 3987: model parameters saved\n", - "Epoch 3988 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3988: avg_loss appended (2.7778)\n", - "Epoch 3988: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3988: accuracy appended (83.33%)\n", - "Epoch 3988: model set back to train mode\n", - "Epoch 3988: model parameters saved\n", - "Epoch 3989 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3989: avg_loss appended (2.7778)\n", - "Epoch 3989: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3989: accuracy appended (83.33%)\n", - "Epoch 3989: model set back to train mode\n", - "Epoch 3989: model parameters saved\n", - "Epoch 3990 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3990: avg_loss appended (2.7778)\n", - "Epoch 3990: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3990: accuracy appended (83.33%)\n", - "Epoch 3990: model set back to train mode\n", - "Epoch 3990: model parameters saved\n", - "Epoch 3991 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3991: avg_loss appended (2.7778)\n", - "Epoch 3991: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3991: accuracy appended (83.33%)\n", - "Epoch 3991: model set back to train mode\n", - "Epoch 3991: model parameters saved\n", - "Epoch 3992 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3992: avg_loss appended (2.7778)\n", - "Epoch 3992: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3992: accuracy appended (83.33%)\n", - "Epoch 3992: model set back to train mode\n", - "Epoch 3992: model parameters saved\n", - "Epoch 3993 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3993: avg_loss appended (2.7778)\n", - "Epoch 3993: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3993: accuracy appended (83.33%)\n", - "Epoch 3993: model set back to train mode\n", - "Epoch 3993: model parameters saved\n", - "Epoch 3994 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3994: avg_loss appended (2.7778)\n", - "Epoch 3994: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3994: accuracy appended (83.33%)\n", - "Epoch 3994: model set back to train mode\n", - "Epoch 3994: model parameters saved\n", - "Epoch 3995 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3995: avg_loss appended (2.7778)\n", - "Epoch 3995: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3995: accuracy appended (83.33%)\n", - "Epoch 3995: model set back to train mode\n", - "Epoch 3995: model parameters saved\n", - "Epoch 3996 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3996: avg_loss appended (2.7778)\n", - "Epoch 3996: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3996: accuracy appended (83.33%)\n", - "Epoch 3996: model set back to train mode\n", - "Epoch 3996: model parameters saved\n", - "Epoch 3997 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3997: avg_loss appended (2.7778)\n", - "Epoch 3997: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3997: accuracy appended (83.33%)\n", - "Epoch 3997: model set back to train mode\n", - "Epoch 3997: model parameters saved\n", - "Epoch 3998 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3998: avg_loss appended (2.7778)\n", - "Epoch 3998: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3998: accuracy appended (83.33%)\n", - "Epoch 3998: model set back to train mode\n", - "Epoch 3998: model parameters saved\n", - "Epoch 3999 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 3999: avg_loss appended (2.7778)\n", - "Epoch 3999: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 3999: accuracy appended (83.33%)\n", - "Epoch 3999: model set back to train mode\n", - "Epoch 3999: model parameters saved\n", - "Epoch 4000 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4000: avg_loss appended (2.7778)\n", - "Epoch 4000: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4000: accuracy appended (83.33%)\n", - "Epoch 4000: model set back to train mode\n", - "Epoch 4000: model parameters saved\n", - "Epoch 4000/10000, Loss: 2.7778, Accuracy: 83.33%\n", - "Epoch 4000: checkpoint saved\n", - "Epoch 4001 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4001: avg_loss appended (2.7778)\n", - "Epoch 4001: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4001: accuracy appended (83.33%)\n", - "Epoch 4001: model set back to train mode\n", - "Epoch 4001: model parameters saved\n", - "Epoch 4002 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4002: avg_loss appended (2.7778)\n", - "Epoch 4002: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4002: accuracy appended (83.33%)\n", - "Epoch 4002: model set back to train mode\n", - "Epoch 4002: model parameters saved\n", - "Epoch 4003 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4003: avg_loss appended (2.7778)\n", - "Epoch 4003: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4003: accuracy appended (83.33%)\n", - "Epoch 4003: model set back to train mode\n", - "Epoch 4003: model parameters saved\n", - "Epoch 4004 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4004: avg_loss appended (2.7778)\n", - "Epoch 4004: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4004: accuracy appended (83.33%)\n", - "Epoch 4004: model set back to train mode\n", - "Epoch 4004: model parameters saved\n", - "Epoch 4005 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4005: avg_loss appended (2.7778)\n", - "Epoch 4005: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4005: accuracy appended (83.33%)\n", - "Epoch 4005: model set back to train mode\n", - "Epoch 4005: model parameters saved\n", - "Epoch 4006 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4006: avg_loss appended (2.7778)\n", - "Epoch 4006: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4006: accuracy appended (83.33%)\n", - "Epoch 4006: model set back to train mode\n", - "Epoch 4006: model parameters saved\n", - "Epoch 4007 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4007: avg_loss appended (2.7778)\n", - "Epoch 4007: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4007: accuracy appended (83.33%)\n", - "Epoch 4007: model set back to train mode\n", - "Epoch 4007: model parameters saved\n", - "Epoch 4008 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4008: avg_loss appended (2.7778)\n", - "Epoch 4008: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4008: accuracy appended (83.33%)\n", - "Epoch 4008: model set back to train mode\n", - "Epoch 4008: model parameters saved\n", - "Epoch 4009 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4009: avg_loss appended (2.7778)\n", - "Epoch 4009: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4009: accuracy appended (83.33%)\n", - "Epoch 4009: model set back to train mode\n", - "Epoch 4009: model parameters saved\n", - "Epoch 4010 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4010: avg_loss appended (2.7778)\n", - "Epoch 4010: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4010: accuracy appended (83.33%)\n", - "Epoch 4010: model set back to train mode\n", - "Epoch 4010: model parameters saved\n", - "Epoch 4011 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4011: avg_loss appended (2.7778)\n", - "Epoch 4011: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4011: accuracy appended (83.33%)\n", - "Epoch 4011: model set back to train mode\n", - "Epoch 4011: model parameters saved\n", - "Epoch 4012 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4012: avg_loss appended (2.7778)\n", - "Epoch 4012: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4012: accuracy appended (83.33%)\n", - "Epoch 4012: model set back to train mode\n", - "Epoch 4012: model parameters saved\n", - "Epoch 4013 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4013: avg_loss appended (2.7778)\n", - "Epoch 4013: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4013: accuracy appended (83.33%)\n", - "Epoch 4013: model set back to train mode\n", - "Epoch 4013: model parameters saved\n", - "Epoch 4014 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4014: avg_loss appended (2.7778)\n", - "Epoch 4014: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4014: accuracy appended (83.33%)\n", - "Epoch 4014: model set back to train mode\n", - "Epoch 4014: model parameters saved\n", - "Epoch 4015 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4015: avg_loss appended (2.7778)\n", - "Epoch 4015: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4015: accuracy appended (83.33%)\n", - "Epoch 4015: model set back to train mode\n", - "Epoch 4015: model parameters saved\n", - "Epoch 4016 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4016: avg_loss appended (2.7778)\n", - "Epoch 4016: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4016: accuracy appended (83.33%)\n", - "Epoch 4016: model set back to train mode\n", - "Epoch 4016: model parameters saved\n", - "Epoch 4017 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4017: avg_loss appended (2.7778)\n", - "Epoch 4017: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4017: accuracy appended (83.33%)\n", - "Epoch 4017: model set back to train mode\n", - "Epoch 4017: model parameters saved\n", - "Epoch 4018 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4018: avg_loss appended (2.7778)\n", - "Epoch 4018: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4018: accuracy appended (83.33%)\n", - "Epoch 4018: model set back to train mode\n", - "Epoch 4018: model parameters saved\n", - "Epoch 4019 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4019: avg_loss appended (2.7778)\n", - "Epoch 4019: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4019: accuracy appended (83.33%)\n", - "Epoch 4019: model set back to train mode\n", - "Epoch 4019: model parameters saved\n", - "Epoch 4020 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4020: avg_loss appended (2.7778)\n", - "Epoch 4020: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4020: accuracy appended (83.33%)\n", - "Epoch 4020: model set back to train mode\n", - "Epoch 4020: model parameters saved\n", - "Epoch 4021 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4021: avg_loss appended (2.7778)\n", - "Epoch 4021: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4021: accuracy appended (83.33%)\n", - "Epoch 4021: model set back to train mode\n", - "Epoch 4021: model parameters saved\n", - "Epoch 4022 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4022: avg_loss appended (2.7778)\n", - "Epoch 4022: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4022: accuracy appended (83.33%)\n", - "Epoch 4022: model set back to train mode\n", - "Epoch 4022: model parameters saved\n", - "Epoch 4023 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4023: avg_loss appended (2.7778)\n", - "Epoch 4023: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4023: accuracy appended (83.33%)\n", - "Epoch 4023: model set back to train mode\n", - "Epoch 4023: model parameters saved\n", - "Epoch 4024 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4024: avg_loss appended (2.7778)\n", - "Epoch 4024: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4024: accuracy appended (83.33%)\n", - "Epoch 4024: model set back to train mode\n", - "Epoch 4024: model parameters saved\n", - "Epoch 4025 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4025: avg_loss appended (2.7778)\n", - "Epoch 4025: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4025: accuracy appended (83.33%)\n", - "Epoch 4025: model set back to train mode\n", - "Epoch 4025: model parameters saved\n", - "Epoch 4026 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4026: avg_loss appended (2.7778)\n", - "Epoch 4026: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4026: accuracy appended (83.33%)\n", - "Epoch 4026: model set back to train mode\n", - "Epoch 4026: model parameters saved\n", - "Epoch 4027 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4027: avg_loss appended (2.7778)\n", - "Epoch 4027: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4027: accuracy appended (83.33%)\n", - "Epoch 4027: model set back to train mode\n", - "Epoch 4027: model parameters saved\n", - "Epoch 4028 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4028: avg_loss appended (2.7778)\n", - "Epoch 4028: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4028: accuracy appended (83.33%)\n", - "Epoch 4028: model set back to train mode\n", - "Epoch 4028: model parameters saved\n", - "Epoch 4029 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4029: avg_loss appended (2.7778)\n", - "Epoch 4029: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4029: accuracy appended (83.33%)\n", - "Epoch 4029: model set back to train mode\n", - "Epoch 4029: model parameters saved\n", - "Epoch 4030 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4030: avg_loss appended (2.7778)\n", - "Epoch 4030: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4030: accuracy appended (83.33%)\n", - "Epoch 4030: model set back to train mode\n", - "Epoch 4030: model parameters saved\n", - "Epoch 4031 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4031: avg_loss appended (2.7778)\n", - "Epoch 4031: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4031: accuracy appended (83.33%)\n", - "Epoch 4031: model set back to train mode\n", - "Epoch 4031: model parameters saved\n", - "Epoch 4032 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4032: avg_loss appended (2.7778)\n", - "Epoch 4032: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4032: accuracy appended (83.33%)\n", - "Epoch 4032: model set back to train mode\n", - "Epoch 4032: model parameters saved\n", - "Epoch 4033 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4033: avg_loss appended (2.7778)\n", - "Epoch 4033: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4033: accuracy appended (83.33%)\n", - "Epoch 4033: model set back to train mode\n", - "Epoch 4033: model parameters saved\n", - "Epoch 4034 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4034: avg_loss appended (2.7778)\n", - "Epoch 4034: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4034: accuracy appended (83.33%)\n", - "Epoch 4034: model set back to train mode\n", - "Epoch 4034: model parameters saved\n", - "Epoch 4035 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4035: avg_loss appended (2.7778)\n", - "Epoch 4035: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4035: accuracy appended (83.33%)\n", - "Epoch 4035: model set back to train mode\n", - "Epoch 4035: model parameters saved\n", - "Epoch 4036 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4036: avg_loss appended (2.7778)\n", - "Epoch 4036: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4036: accuracy appended (83.33%)\n", - "Epoch 4036: model set back to train mode\n", - "Epoch 4036: model parameters saved\n", - "Epoch 4037 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4037: avg_loss appended (2.7778)\n", - "Epoch 4037: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4037: accuracy appended (83.33%)\n", - "Epoch 4037: model set back to train mode\n", - "Epoch 4037: model parameters saved\n", - "Epoch 4038 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4038: avg_loss appended (2.7778)\n", - "Epoch 4038: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4038: accuracy appended (83.33%)\n", - "Epoch 4038: model set back to train mode\n", - "Epoch 4038: model parameters saved\n", - "Epoch 4039 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4039: avg_loss appended (2.7778)\n", - "Epoch 4039: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4039: accuracy appended (83.33%)\n", - "Epoch 4039: model set back to train mode\n", - "Epoch 4039: model parameters saved\n", - "Epoch 4040 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4040: avg_loss appended (2.7778)\n", - "Epoch 4040: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4040: accuracy appended (83.33%)\n", - "Epoch 4040: model set back to train mode\n", - "Epoch 4040: model parameters saved\n", - "Epoch 4041 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4041: avg_loss appended (2.7778)\n", - "Epoch 4041: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4041: accuracy appended (83.33%)\n", - "Epoch 4041: model set back to train mode\n", - "Epoch 4041: model parameters saved\n", - "Epoch 4042 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4042: avg_loss appended (2.7778)\n", - "Epoch 4042: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4042: accuracy appended (83.33%)\n", - "Epoch 4042: model set back to train mode\n", - "Epoch 4042: model parameters saved\n", - "Epoch 4043 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4043: avg_loss appended (2.7778)\n", - "Epoch 4043: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4043: accuracy appended (83.33%)\n", - "Epoch 4043: model set back to train mode\n", - "Epoch 4043: model parameters saved\n", - "Epoch 4044 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4044: avg_loss appended (2.7778)\n", - "Epoch 4044: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4044: accuracy appended (83.33%)\n", - "Epoch 4044: model set back to train mode\n", - "Epoch 4044: model parameters saved\n", - "Epoch 4045 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4045: avg_loss appended (2.7778)\n", - "Epoch 4045: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4045: accuracy appended (83.33%)\n", - "Epoch 4045: model set back to train mode\n", - "Epoch 4045: model parameters saved\n", - "Epoch 4046 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4046: avg_loss appended (2.7778)\n", - "Epoch 4046: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4046: accuracy appended (83.33%)\n", - "Epoch 4046: model set back to train mode\n", - "Epoch 4046: model parameters saved\n", - "Epoch 4047 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4047: avg_loss appended (2.7778)\n", - "Epoch 4047: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4047: accuracy appended (83.33%)\n", - "Epoch 4047: model set back to train mode\n", - "Epoch 4047: model parameters saved\n", - "Epoch 4048 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4048: avg_loss appended (2.7778)\n", - "Epoch 4048: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4048: accuracy appended (83.33%)\n", - "Epoch 4048: model set back to train mode\n", - "Epoch 4048: model parameters saved\n", - "Epoch 4049 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4049: avg_loss appended (2.7778)\n", - "Epoch 4049: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4049: accuracy appended (83.33%)\n", - "Epoch 4049: model set back to train mode\n", - "Epoch 4049: model parameters saved\n", - "Epoch 4050 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4050: avg_loss appended (2.7778)\n", - "Epoch 4050: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4050: accuracy appended (83.33%)\n", - "Epoch 4050: model set back to train mode\n", - "Epoch 4050: model parameters saved\n", - "Epoch 4051 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4051: avg_loss appended (2.7778)\n", - "Epoch 4051: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4051: accuracy appended (83.33%)\n", - "Epoch 4051: model set back to train mode\n", - "Epoch 4051: model parameters saved\n", - "Epoch 4052 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4052: avg_loss appended (2.7778)\n", - "Epoch 4052: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4052: accuracy appended (83.33%)\n", - "Epoch 4052: model set back to train mode\n", - "Epoch 4052: model parameters saved\n", - "Epoch 4053 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4053: avg_loss appended (2.7778)\n", - "Epoch 4053: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4053: accuracy appended (83.33%)\n", - "Epoch 4053: model set back to train mode\n", - "Epoch 4053: model parameters saved\n", - "Epoch 4054 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4054: avg_loss appended (2.7778)\n", - "Epoch 4054: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4054: accuracy appended (83.33%)\n", - "Epoch 4054: model set back to train mode\n", - "Epoch 4054: model parameters saved\n", - "Epoch 4055 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4055: avg_loss appended (2.7778)\n", - "Epoch 4055: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4055: accuracy appended (83.33%)\n", - "Epoch 4055: model set back to train mode\n", - "Epoch 4055: model parameters saved\n", - "Epoch 4056 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4056: avg_loss appended (2.7778)\n", - "Epoch 4056: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4056: accuracy appended (83.33%)\n", - "Epoch 4056: model set back to train mode\n", - "Epoch 4056: model parameters saved\n", - "Epoch 4057 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4057: avg_loss appended (2.7778)\n", - "Epoch 4057: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4057: accuracy appended (83.33%)\n", - "Epoch 4057: model set back to train mode\n", - "Epoch 4057: model parameters saved\n", - "Epoch 4058 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4058: avg_loss appended (2.7778)\n", - "Epoch 4058: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4058: accuracy appended (83.33%)\n", - "Epoch 4058: model set back to train mode\n", - "Epoch 4058: model parameters saved\n", - "Epoch 4059 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4059: avg_loss appended (2.7778)\n", - "Epoch 4059: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4059: accuracy appended (83.33%)\n", - "Epoch 4059: model set back to train mode\n", - "Epoch 4059: model parameters saved\n", - "Epoch 4060 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4060: avg_loss appended (2.7778)\n", - "Epoch 4060: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4060: accuracy appended (83.33%)\n", - "Epoch 4060: model set back to train mode\n", - "Epoch 4060: model parameters saved\n", - "Epoch 4061 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4061: avg_loss appended (2.7778)\n", - "Epoch 4061: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4061: accuracy appended (83.33%)\n", - "Epoch 4061: model set back to train mode\n", - "Epoch 4061: model parameters saved\n", - "Epoch 4062 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4062: avg_loss appended (2.7778)\n", - "Epoch 4062: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4062: accuracy appended (83.33%)\n", - "Epoch 4062: model set back to train mode\n", - "Epoch 4062: model parameters saved\n", - "Epoch 4063 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4063: avg_loss appended (2.7778)\n", - "Epoch 4063: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4063: accuracy appended (83.33%)\n", - "Epoch 4063: model set back to train mode\n", - "Epoch 4063: model parameters saved\n", - "Epoch 4064 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4064: avg_loss appended (2.7778)\n", - "Epoch 4064: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4064: accuracy appended (83.33%)\n", - "Epoch 4064: model set back to train mode\n", - "Epoch 4064: model parameters saved\n", - "Epoch 4065 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4065: avg_loss appended (2.7778)\n", - "Epoch 4065: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4065: accuracy appended (83.33%)\n", - "Epoch 4065: model set back to train mode\n", - "Epoch 4065: model parameters saved\n", - "Epoch 4066 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4066: avg_loss appended (2.7778)\n", - "Epoch 4066: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4066: accuracy appended (83.33%)\n", - "Epoch 4066: model set back to train mode\n", - "Epoch 4066: model parameters saved\n", - "Epoch 4067 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4067: avg_loss appended (2.7778)\n", - "Epoch 4067: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4067: accuracy appended (83.33%)\n", - "Epoch 4067: model set back to train mode\n", - "Epoch 4067: model parameters saved\n", - "Epoch 4068 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4068: avg_loss appended (2.7778)\n", - "Epoch 4068: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4068: accuracy appended (83.33%)\n", - "Epoch 4068: model set back to train mode\n", - "Epoch 4068: model parameters saved\n", - "Epoch 4069 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4069: avg_loss appended (2.7778)\n", - "Epoch 4069: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4069: accuracy appended (83.33%)\n", - "Epoch 4069: model set back to train mode\n", - "Epoch 4069: model parameters saved\n", - "Epoch 4070 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4070: avg_loss appended (2.7778)\n", - "Epoch 4070: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4070: accuracy appended (83.33%)\n", - "Epoch 4070: model set back to train mode\n", - "Epoch 4070: model parameters saved\n", - "Epoch 4071 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4071: avg_loss appended (2.7778)\n", - "Epoch 4071: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4071: accuracy appended (83.33%)\n", - "Epoch 4071: model set back to train mode\n", - "Epoch 4071: model parameters saved\n", - "Epoch 4072 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4072: avg_loss appended (2.7778)\n", - "Epoch 4072: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4072: accuracy appended (83.33%)\n", - "Epoch 4072: model set back to train mode\n", - "Epoch 4072: model parameters saved\n", - "Epoch 4073 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4073: avg_loss appended (2.7778)\n", - "Epoch 4073: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4073: accuracy appended (83.33%)\n", - "Epoch 4073: model set back to train mode\n", - "Epoch 4073: model parameters saved\n", - "Epoch 4074 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4074: avg_loss appended (2.7778)\n", - "Epoch 4074: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4074: accuracy appended (83.33%)\n", - "Epoch 4074: model set back to train mode\n", - "Epoch 4074: model parameters saved\n", - "Epoch 4075 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4075: avg_loss appended (2.7778)\n", - "Epoch 4075: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4075: accuracy appended (83.33%)\n", - "Epoch 4075: model set back to train mode\n", - "Epoch 4075: model parameters saved\n", - "Epoch 4076 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4076: avg_loss appended (2.7778)\n", - "Epoch 4076: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4076: accuracy appended (83.33%)\n", - "Epoch 4076: model set back to train mode\n", - "Epoch 4076: model parameters saved\n", - "Epoch 4077 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4077: avg_loss appended (2.7778)\n", - "Epoch 4077: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4077: accuracy appended (83.33%)\n", - "Epoch 4077: model set back to train mode\n", - "Epoch 4077: model parameters saved\n", - "Epoch 4078 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4078: avg_loss appended (2.7778)\n", - "Epoch 4078: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4078: accuracy appended (83.33%)\n", - "Epoch 4078: model set back to train mode\n", - "Epoch 4078: model parameters saved\n", - "Epoch 4079 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4079: avg_loss appended (2.7778)\n", - "Epoch 4079: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4079: accuracy appended (83.33%)\n", - "Epoch 4079: model set back to train mode\n", - "Epoch 4079: model parameters saved\n", - "Epoch 4080 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4080: avg_loss appended (2.7778)\n", - "Epoch 4080: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4080: accuracy appended (83.33%)\n", - "Epoch 4080: model set back to train mode\n", - "Epoch 4080: model parameters saved\n", - "Epoch 4081 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4081: avg_loss appended (2.7778)\n", - "Epoch 4081: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4081: accuracy appended (83.33%)\n", - "Epoch 4081: model set back to train mode\n", - "Epoch 4081: model parameters saved\n", - "Epoch 4082 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4082: avg_loss appended (2.7778)\n", - "Epoch 4082: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4082: accuracy appended (83.33%)\n", - "Epoch 4082: model set back to train mode\n", - "Epoch 4082: model parameters saved\n", - "Epoch 4083 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4083: avg_loss appended (2.7778)\n", - "Epoch 4083: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4083: accuracy appended (83.33%)\n", - "Epoch 4083: model set back to train mode\n", - "Epoch 4083: model parameters saved\n", - "Epoch 4084 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4084: avg_loss appended (2.7778)\n", - "Epoch 4084: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4084: accuracy appended (83.33%)\n", - "Epoch 4084: model set back to train mode\n", - "Epoch 4084: model parameters saved\n", - "Epoch 4085 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4085: avg_loss appended (2.7778)\n", - "Epoch 4085: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4085: accuracy appended (83.33%)\n", - "Epoch 4085: model set back to train mode\n", - "Epoch 4085: model parameters saved\n", - "Epoch 4086 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4086: avg_loss appended (2.7778)\n", - "Epoch 4086: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4086: accuracy appended (83.33%)\n", - "Epoch 4086: model set back to train mode\n", - "Epoch 4086: model parameters saved\n", - "Epoch 4087 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4087: avg_loss appended (2.7778)\n", - "Epoch 4087: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4087: accuracy appended (83.33%)\n", - "Epoch 4087: model set back to train mode\n", - "Epoch 4087: model parameters saved\n", - "Epoch 4088 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4088: avg_loss appended (2.7778)\n", - "Epoch 4088: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4088: accuracy appended (83.33%)\n", - "Epoch 4088: model set back to train mode\n", - "Epoch 4088: model parameters saved\n", - "Epoch 4089 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4089: avg_loss appended (2.7778)\n", - "Epoch 4089: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4089: accuracy appended (83.33%)\n", - "Epoch 4089: model set back to train mode\n", - "Epoch 4089: model parameters saved\n", - "Epoch 4090 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4090: avg_loss appended (2.7778)\n", - "Epoch 4090: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4090: accuracy appended (83.33%)\n", - "Epoch 4090: model set back to train mode\n", - "Epoch 4090: model parameters saved\n", - "Epoch 4091 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4091: avg_loss appended (2.7778)\n", - "Epoch 4091: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4091: accuracy appended (83.33%)\n", - "Epoch 4091: model set back to train mode\n", - "Epoch 4091: model parameters saved\n", - "Epoch 4092 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4092: avg_loss appended (2.7778)\n", - "Epoch 4092: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4092: accuracy appended (83.33%)\n", - "Epoch 4092: model set back to train mode\n", - "Epoch 4092: model parameters saved\n", - "Epoch 4093 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4093: avg_loss appended (2.7778)\n", - "Epoch 4093: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4093: accuracy appended (83.33%)\n", - "Epoch 4093: model set back to train mode\n", - "Epoch 4093: model parameters saved\n", - "Epoch 4094 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4094: avg_loss appended (2.7778)\n", - "Epoch 4094: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4094: accuracy appended (83.33%)\n", - "Epoch 4094: model set back to train mode\n", - "Epoch 4094: model parameters saved\n", - "Epoch 4095 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4095: avg_loss appended (2.7778)\n", - "Epoch 4095: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4095: accuracy appended (83.33%)\n", - "Epoch 4095: model set back to train mode\n", - "Epoch 4095: model parameters saved\n", - "Epoch 4096 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4096: avg_loss appended (2.7778)\n", - "Epoch 4096: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4096: accuracy appended (83.33%)\n", - "Epoch 4096: model set back to train mode\n", - "Epoch 4096: model parameters saved\n", - "Epoch 4097 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4097: avg_loss appended (2.7778)\n", - "Epoch 4097: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4097: accuracy appended (83.33%)\n", - "Epoch 4097: model set back to train mode\n", - "Epoch 4097: model parameters saved\n", - "Epoch 4098 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4098: avg_loss appended (2.7778)\n", - "Epoch 4098: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4098: accuracy appended (83.33%)\n", - "Epoch 4098: model set back to train mode\n", - "Epoch 4098: model parameters saved\n", - "Epoch 4099 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4099: avg_loss appended (2.7778)\n", - "Epoch 4099: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4099: accuracy appended (83.33%)\n", - "Epoch 4099: model set back to train mode\n", - "Epoch 4099: model parameters saved\n", - "Epoch 4100 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4100: avg_loss appended (2.7778)\n", - "Epoch 4100: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4100: accuracy appended (83.33%)\n", - "Epoch 4100: model set back to train mode\n", - "Epoch 4100: model parameters saved\n", - "Epoch 4100/10000, Loss: 2.7778, Accuracy: 83.33%\n", - "Epoch 4101 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4101: avg_loss appended (2.7778)\n", - "Epoch 4101: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4101: accuracy appended (83.33%)\n", - "Epoch 4101: model set back to train mode\n", - "Epoch 4101: model parameters saved\n", - "Epoch 4102 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4102: avg_loss appended (2.7778)\n", - "Epoch 4102: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4102: accuracy appended (83.33%)\n", - "Epoch 4102: model set back to train mode\n", - "Epoch 4102: model parameters saved\n", - "Epoch 4103 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4103: avg_loss appended (2.7778)\n", - "Epoch 4103: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4103: accuracy appended (83.33%)\n", - "Epoch 4103: model set back to train mode\n", - "Epoch 4103: model parameters saved\n", - "Epoch 4104 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4104: avg_loss appended (2.7778)\n", - "Epoch 4104: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4104: accuracy appended (83.33%)\n", - "Epoch 4104: model set back to train mode\n", - "Epoch 4104: model parameters saved\n", - "Epoch 4105 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4105: avg_loss appended (2.7778)\n", - "Epoch 4105: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4105: accuracy appended (83.33%)\n", - "Epoch 4105: model set back to train mode\n", - "Epoch 4105: model parameters saved\n", - "Epoch 4106 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4106: avg_loss appended (2.7778)\n", - "Epoch 4106: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4106: accuracy appended (83.33%)\n", - "Epoch 4106: model set back to train mode\n", - "Epoch 4106: model parameters saved\n", - "Epoch 4107 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4107: avg_loss appended (2.7778)\n", - "Epoch 4107: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4107: accuracy appended (83.33%)\n", - "Epoch 4107: model set back to train mode\n", - "Epoch 4107: model parameters saved\n", - "Epoch 4108 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4108: avg_loss appended (2.7778)\n", - "Epoch 4108: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4108: accuracy appended (83.33%)\n", - "Epoch 4108: model set back to train mode\n", - "Epoch 4108: model parameters saved\n", - "Epoch 4109 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4109: avg_loss appended (2.7778)\n", - "Epoch 4109: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4109: accuracy appended (83.33%)\n", - "Epoch 4109: model set back to train mode\n", - "Epoch 4109: model parameters saved\n", - "Epoch 4110 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4110: avg_loss appended (2.7778)\n", - "Epoch 4110: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4110: accuracy appended (83.33%)\n", - "Epoch 4110: model set back to train mode\n", - "Epoch 4110: model parameters saved\n", - "Epoch 4111 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4111: avg_loss appended (2.7778)\n", - "Epoch 4111: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4111: accuracy appended (83.33%)\n", - "Epoch 4111: model set back to train mode\n", - "Epoch 4111: model parameters saved\n", - "Epoch 4112 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4112: avg_loss appended (2.7778)\n", - "Epoch 4112: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4112: accuracy appended (83.33%)\n", - "Epoch 4112: model set back to train mode\n", - "Epoch 4112: model parameters saved\n", - "Epoch 4113 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4113: avg_loss appended (2.7778)\n", - "Epoch 4113: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4113: accuracy appended (83.33%)\n", - "Epoch 4113: model set back to train mode\n", - "Epoch 4113: model parameters saved\n", - "Epoch 4114 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4114: avg_loss appended (2.7778)\n", - "Epoch 4114: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4114: accuracy appended (83.33%)\n", - "Epoch 4114: model set back to train mode\n", - "Epoch 4114: model parameters saved\n", - "Epoch 4115 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4115: avg_loss appended (2.7778)\n", - "Epoch 4115: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4115: accuracy appended (83.33%)\n", - "Epoch 4115: model set back to train mode\n", - "Epoch 4115: model parameters saved\n", - "Epoch 4116 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4116: avg_loss appended (2.7778)\n", - "Epoch 4116: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4116: accuracy appended (83.33%)\n", - "Epoch 4116: model set back to train mode\n", - "Epoch 4116: model parameters saved\n", - "Epoch 4117 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4117: avg_loss appended (2.7778)\n", - "Epoch 4117: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4117: accuracy appended (83.33%)\n", - "Epoch 4117: model set back to train mode\n", - "Epoch 4117: model parameters saved\n", - "Epoch 4118 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4118: avg_loss appended (2.7778)\n", - "Epoch 4118: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4118: accuracy appended (83.33%)\n", - "Epoch 4118: model set back to train mode\n", - "Epoch 4118: model parameters saved\n", - "Epoch 4119 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4119: avg_loss appended (2.7778)\n", - "Epoch 4119: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4119: accuracy appended (83.33%)\n", - "Epoch 4119: model set back to train mode\n", - "Epoch 4119: model parameters saved\n", - "Epoch 4120 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4120: avg_loss appended (2.7778)\n", - "Epoch 4120: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4120: accuracy appended (83.33%)\n", - "Epoch 4120: model set back to train mode\n", - "Epoch 4120: model parameters saved\n", - "Epoch 4121 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4121: avg_loss appended (2.7778)\n", - "Epoch 4121: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4121: accuracy appended (83.33%)\n", - "Epoch 4121: model set back to train mode\n", - "Epoch 4121: model parameters saved\n", - "Epoch 4122 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4122: avg_loss appended (2.7778)\n", - "Epoch 4122: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4122: accuracy appended (83.33%)\n", - "Epoch 4122: model set back to train mode\n", - "Epoch 4122: model parameters saved\n", - "Epoch 4123 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4123: avg_loss appended (2.7778)\n", - "Epoch 4123: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4123: accuracy appended (83.33%)\n", - "Epoch 4123: model set back to train mode\n", - "Epoch 4123: model parameters saved\n", - "Epoch 4124 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4124: avg_loss appended (2.7778)\n", - "Epoch 4124: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4124: accuracy appended (83.33%)\n", - "Epoch 4124: model set back to train mode\n", - "Epoch 4124: model parameters saved\n", - "Epoch 4125 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4125: avg_loss appended (2.7778)\n", - "Epoch 4125: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4125: accuracy appended (83.33%)\n", - "Epoch 4125: model set back to train mode\n", - "Epoch 4125: model parameters saved\n", - "Epoch 4126 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4126: avg_loss appended (2.7778)\n", - "Epoch 4126: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4126: accuracy appended (83.33%)\n", - "Epoch 4126: model set back to train mode\n", - "Epoch 4126: model parameters saved\n", - "Epoch 4127 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4127: avg_loss appended (2.7778)\n", - "Epoch 4127: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4127: accuracy appended (83.33%)\n", - "Epoch 4127: model set back to train mode\n", - "Epoch 4127: model parameters saved\n", - "Epoch 4128 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4128: avg_loss appended (2.7778)\n", - "Epoch 4128: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4128: accuracy appended (83.33%)\n", - "Epoch 4128: model set back to train mode\n", - "Epoch 4128: model parameters saved\n", - "Epoch 4129 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4129: avg_loss appended (2.7778)\n", - "Epoch 4129: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4129: accuracy appended (83.33%)\n", - "Epoch 4129: model set back to train mode\n", - "Epoch 4129: model parameters saved\n", - "Epoch 4130 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4130: avg_loss appended (2.7778)\n", - "Epoch 4130: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4130: accuracy appended (83.33%)\n", - "Epoch 4130: model set back to train mode\n", - "Epoch 4130: model parameters saved\n", - "Epoch 4131 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4131: avg_loss appended (2.7778)\n", - "Epoch 4131: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4131: accuracy appended (83.33%)\n", - "Epoch 4131: model set back to train mode\n", - "Epoch 4131: model parameters saved\n", - "Epoch 4132 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4132: avg_loss appended (2.7778)\n", - "Epoch 4132: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4132: accuracy appended (83.33%)\n", - "Epoch 4132: model set back to train mode\n", - "Epoch 4132: model parameters saved\n", - "Epoch 4133 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4133: avg_loss appended (2.7778)\n", - "Epoch 4133: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4133: accuracy appended (83.33%)\n", - "Epoch 4133: model set back to train mode\n", - "Epoch 4133: model parameters saved\n", - "Epoch 4134 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4134: avg_loss appended (2.7778)\n", - "Epoch 4134: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4134: accuracy appended (83.33%)\n", - "Epoch 4134: model set back to train mode\n", - "Epoch 4134: model parameters saved\n", - "Epoch 4135 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4135: avg_loss appended (2.7778)\n", - "Epoch 4135: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4135: accuracy appended (83.33%)\n", - "Epoch 4135: model set back to train mode\n", - "Epoch 4135: model parameters saved\n", - "Epoch 4136 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4136: avg_loss appended (2.7778)\n", - "Epoch 4136: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4136: accuracy appended (83.33%)\n", - "Epoch 4136: model set back to train mode\n", - "Epoch 4136: model parameters saved\n", - "Epoch 4137 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4137: avg_loss appended (2.7778)\n", - "Epoch 4137: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4137: accuracy appended (83.33%)\n", - "Epoch 4137: model set back to train mode\n", - "Epoch 4137: model parameters saved\n", - "Epoch 4138 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4138: avg_loss appended (2.7778)\n", - "Epoch 4138: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4138: accuracy appended (83.33%)\n", - "Epoch 4138: model set back to train mode\n", - "Epoch 4138: model parameters saved\n", - "Epoch 4139 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4139: avg_loss appended (2.7778)\n", - "Epoch 4139: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4139: accuracy appended (83.33%)\n", - "Epoch 4139: model set back to train mode\n", - "Epoch 4139: model parameters saved\n", - "Epoch 4140 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4140: avg_loss appended (2.7778)\n", - "Epoch 4140: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4140: accuracy appended (83.33%)\n", - "Epoch 4140: model set back to train mode\n", - "Epoch 4140: model parameters saved\n", - "Epoch 4141 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4141: avg_loss appended (2.7778)\n", - "Epoch 4141: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4141: accuracy appended (83.33%)\n", - "Epoch 4141: model set back to train mode\n", - "Epoch 4141: model parameters saved\n", - "Epoch 4142 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4142: avg_loss appended (2.7778)\n", - "Epoch 4142: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4142: accuracy appended (83.33%)\n", - "Epoch 4142: model set back to train mode\n", - "Epoch 4142: model parameters saved\n", - "Epoch 4143 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4143: avg_loss appended (2.7778)\n", - "Epoch 4143: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4143: accuracy appended (83.33%)\n", - "Epoch 4143: model set back to train mode\n", - "Epoch 4143: model parameters saved\n", - "Epoch 4144 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4144: avg_loss appended (2.7778)\n", - "Epoch 4144: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4144: accuracy appended (83.33%)\n", - "Epoch 4144: model set back to train mode\n", - "Epoch 4144: model parameters saved\n", - "Epoch 4145 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4145: avg_loss appended (2.7778)\n", - "Epoch 4145: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4145: accuracy appended (83.33%)\n", - "Epoch 4145: model set back to train mode\n", - "Epoch 4145: model parameters saved\n", - "Epoch 4146 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4146: avg_loss appended (2.7778)\n", - "Epoch 4146: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4146: accuracy appended (83.33%)\n", - "Epoch 4146: model set back to train mode\n", - "Epoch 4146: model parameters saved\n", - "Epoch 4147 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4147: avg_loss appended (2.7778)\n", - "Epoch 4147: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4147: accuracy appended (83.33%)\n", - "Epoch 4147: model set back to train mode\n", - "Epoch 4147: model parameters saved\n", - "Epoch 4148 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4148: avg_loss appended (2.7778)\n", - "Epoch 4148: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4148: accuracy appended (83.33%)\n", - "Epoch 4148: model set back to train mode\n", - "Epoch 4148: model parameters saved\n", - "Epoch 4149 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4149: avg_loss appended (2.7778)\n", - "Epoch 4149: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4149: accuracy appended (83.33%)\n", - "Epoch 4149: model set back to train mode\n", - "Epoch 4149: model parameters saved\n", - "Epoch 4150 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4150: avg_loss appended (2.7778)\n", - "Epoch 4150: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4150: accuracy appended (83.33%)\n", - "Epoch 4150: model set back to train mode\n", - "Epoch 4150: model parameters saved\n", - "Epoch 4151 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4151: avg_loss appended (2.7778)\n", - "Epoch 4151: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4151: accuracy appended (83.33%)\n", - "Epoch 4151: model set back to train mode\n", - "Epoch 4151: model parameters saved\n", - "Epoch 4152 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4152: avg_loss appended (2.7778)\n", - "Epoch 4152: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4152: accuracy appended (83.33%)\n", - "Epoch 4152: model set back to train mode\n", - "Epoch 4152: model parameters saved\n", - "Epoch 4153 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4153: avg_loss appended (2.7778)\n", - "Epoch 4153: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4153: accuracy appended (83.33%)\n", - "Epoch 4153: model set back to train mode\n", - "Epoch 4153: model parameters saved\n", - "Epoch 4154 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4154: avg_loss appended (2.7778)\n", - "Epoch 4154: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4154: accuracy appended (83.33%)\n", - "Epoch 4154: model set back to train mode\n", - "Epoch 4154: model parameters saved\n", - "Epoch 4155 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4155: avg_loss appended (2.7778)\n", - "Epoch 4155: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4155: accuracy appended (83.33%)\n", - "Epoch 4155: model set back to train mode\n", - "Epoch 4155: model parameters saved\n", - "Epoch 4156 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4156: avg_loss appended (2.7778)\n", - "Epoch 4156: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4156: accuracy appended (83.33%)\n", - "Epoch 4156: model set back to train mode\n", - "Epoch 4156: model parameters saved\n", - "Epoch 4157 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4157: avg_loss appended (2.7778)\n", - "Epoch 4157: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4157: accuracy appended (83.33%)\n", - "Epoch 4157: model set back to train mode\n", - "Epoch 4157: model parameters saved\n", - "Epoch 4158 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4158: avg_loss appended (2.7778)\n", - "Epoch 4158: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4158: accuracy appended (83.33%)\n", - "Epoch 4158: model set back to train mode\n", - "Epoch 4158: model parameters saved\n", - "Epoch 4159 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4159: avg_loss appended (2.7778)\n", - "Epoch 4159: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4159: accuracy appended (83.33%)\n", - "Epoch 4159: model set back to train mode\n", - "Epoch 4159: model parameters saved\n", - "Epoch 4160 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4160: avg_loss appended (2.7778)\n", - "Epoch 4160: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4160: accuracy appended (83.33%)\n", - "Epoch 4160: model set back to train mode\n", - "Epoch 4160: model parameters saved\n", - "Epoch 4161 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4161: avg_loss appended (2.7778)\n", - "Epoch 4161: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4161: accuracy appended (83.33%)\n", - "Epoch 4161: model set back to train mode\n", - "Epoch 4161: model parameters saved\n", - "Epoch 4162 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4162: avg_loss appended (2.7778)\n", - "Epoch 4162: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4162: accuracy appended (83.33%)\n", - "Epoch 4162: model set back to train mode\n", - "Epoch 4162: model parameters saved\n", - "Epoch 4163 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4163: avg_loss appended (2.7778)\n", - "Epoch 4163: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4163: accuracy appended (83.33%)\n", - "Epoch 4163: model set back to train mode\n", - "Epoch 4163: model parameters saved\n", - "Epoch 4164 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4164: avg_loss appended (2.7778)\n", - "Epoch 4164: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4164: accuracy appended (83.33%)\n", - "Epoch 4164: model set back to train mode\n", - "Epoch 4164: model parameters saved\n", - "Epoch 4165 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4165: avg_loss appended (2.7778)\n", - "Epoch 4165: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4165: accuracy appended (83.33%)\n", - "Epoch 4165: model set back to train mode\n", - "Epoch 4165: model parameters saved\n", - "Epoch 4166 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4166: avg_loss appended (2.7778)\n", - "Epoch 4166: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4166: accuracy appended (83.33%)\n", - "Epoch 4166: model set back to train mode\n", - "Epoch 4166: model parameters saved\n", - "Epoch 4167 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4167: avg_loss appended (2.7778)\n", - "Epoch 4167: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4167: accuracy appended (83.33%)\n", - "Epoch 4167: model set back to train mode\n", - "Epoch 4167: model parameters saved\n", - "Epoch 4168 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4168: avg_loss appended (2.7778)\n", - "Epoch 4168: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4168: accuracy appended (83.33%)\n", - "Epoch 4168: model set back to train mode\n", - "Epoch 4168: model parameters saved\n", - "Epoch 4169 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4169: avg_loss appended (2.7778)\n", - "Epoch 4169: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4169: accuracy appended (83.33%)\n", - "Epoch 4169: model set back to train mode\n", - "Epoch 4169: model parameters saved\n", - "Epoch 4170 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4170: avg_loss appended (2.7778)\n", - "Epoch 4170: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4170: accuracy appended (83.33%)\n", - "Epoch 4170: model set back to train mode\n", - "Epoch 4170: model parameters saved\n", - "Epoch 4171 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4171: avg_loss appended (2.7778)\n", - "Epoch 4171: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4171: accuracy appended (83.33%)\n", - "Epoch 4171: model set back to train mode\n", - "Epoch 4171: model parameters saved\n", - "Epoch 4172 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4172: avg_loss appended (2.7778)\n", - "Epoch 4172: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4172: accuracy appended (83.33%)\n", - "Epoch 4172: model set back to train mode\n", - "Epoch 4172: model parameters saved\n", - "Epoch 4173 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4173: avg_loss appended (2.7778)\n", - "Epoch 4173: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4173: accuracy appended (83.33%)\n", - "Epoch 4173: model set back to train mode\n", - "Epoch 4173: model parameters saved\n", - "Epoch 4174 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4174: avg_loss appended (2.7778)\n", - "Epoch 4174: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4174: accuracy appended (83.33%)\n", - "Epoch 4174: model set back to train mode\n", - "Epoch 4174: model parameters saved\n", - "Epoch 4175 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4175: avg_loss appended (2.7778)\n", - "Epoch 4175: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4175: accuracy appended (83.33%)\n", - "Epoch 4175: model set back to train mode\n", - "Epoch 4175: model parameters saved\n", - "Epoch 4176 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4176: avg_loss appended (2.7778)\n", - "Epoch 4176: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4176: accuracy appended (83.33%)\n", - "Epoch 4176: model set back to train mode\n", - "Epoch 4176: model parameters saved\n", - "Epoch 4177 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4177: avg_loss appended (2.7778)\n", - "Epoch 4177: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4177: accuracy appended (83.33%)\n", - "Epoch 4177: model set back to train mode\n", - "Epoch 4177: model parameters saved\n", - "Epoch 4178 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4178: avg_loss appended (2.7778)\n", - "Epoch 4178: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4178: accuracy appended (83.33%)\n", - "Epoch 4178: model set back to train mode\n", - "Epoch 4178: model parameters saved\n", - "Epoch 4179 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4179: avg_loss appended (2.7778)\n", - "Epoch 4179: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4179: accuracy appended (83.33%)\n", - "Epoch 4179: model set back to train mode\n", - "Epoch 4179: model parameters saved\n", - "Epoch 4180 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4180: avg_loss appended (2.7778)\n", - "Epoch 4180: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4180: accuracy appended (83.33%)\n", - "Epoch 4180: model set back to train mode\n", - "Epoch 4180: model parameters saved\n", - "Epoch 4181 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4181: avg_loss appended (2.7778)\n", - "Epoch 4181: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4181: accuracy appended (83.33%)\n", - "Epoch 4181: model set back to train mode\n", - "Epoch 4181: model parameters saved\n", - "Epoch 4182 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4182: avg_loss appended (2.7778)\n", - "Epoch 4182: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4182: accuracy appended (83.33%)\n", - "Epoch 4182: model set back to train mode\n", - "Epoch 4182: model parameters saved\n", - "Epoch 4183 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4183: avg_loss appended (2.7778)\n", - "Epoch 4183: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4183: accuracy appended (83.33%)\n", - "Epoch 4183: model set back to train mode\n", - "Epoch 4183: model parameters saved\n", - "Epoch 4184 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4184: avg_loss appended (2.7778)\n", - "Epoch 4184: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4184: accuracy appended (83.33%)\n", - "Epoch 4184: model set back to train mode\n", - "Epoch 4184: model parameters saved\n", - "Epoch 4185 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4185: avg_loss appended (2.7778)\n", - "Epoch 4185: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4185: accuracy appended (83.33%)\n", - "Epoch 4185: model set back to train mode\n", - "Epoch 4185: model parameters saved\n", - "Epoch 4186 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4186: avg_loss appended (2.7778)\n", - "Epoch 4186: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4186: accuracy appended (83.33%)\n", - "Epoch 4186: model set back to train mode\n", - "Epoch 4186: model parameters saved\n", - "Epoch 4187 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4187: avg_loss appended (2.7778)\n", - "Epoch 4187: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4187: accuracy appended (83.33%)\n", - "Epoch 4187: model set back to train mode\n", - "Epoch 4187: model parameters saved\n", - "Epoch 4188 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4188: avg_loss appended (2.7778)\n", - "Epoch 4188: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4188: accuracy appended (83.33%)\n", - "Epoch 4188: model set back to train mode\n", - "Epoch 4188: model parameters saved\n", - "Epoch 4189 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4189: avg_loss appended (2.7778)\n", - "Epoch 4189: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4189: accuracy appended (83.33%)\n", - "Epoch 4189: model set back to train mode\n", - "Epoch 4189: model parameters saved\n", - "Epoch 4190 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4190: avg_loss appended (2.7778)\n", - "Epoch 4190: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4190: accuracy appended (83.33%)\n", - "Epoch 4190: model set back to train mode\n", - "Epoch 4190: model parameters saved\n", - "Epoch 4191 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4191: avg_loss appended (2.7778)\n", - "Epoch 4191: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4191: accuracy appended (83.33%)\n", - "Epoch 4191: model set back to train mode\n", - "Epoch 4191: model parameters saved\n", - "Epoch 4192 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4192: avg_loss appended (2.7778)\n", - "Epoch 4192: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4192: accuracy appended (83.33%)\n", - "Epoch 4192: model set back to train mode\n", - "Epoch 4192: model parameters saved\n", - "Epoch 4193 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4193: avg_loss appended (2.7778)\n", - "Epoch 4193: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4193: accuracy appended (83.33%)\n", - "Epoch 4193: model set back to train mode\n", - "Epoch 4193: model parameters saved\n", - "Epoch 4194 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4194: avg_loss appended (2.7778)\n", - "Epoch 4194: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4194: accuracy appended (83.33%)\n", - "Epoch 4194: model set back to train mode\n", - "Epoch 4194: model parameters saved\n", - "Epoch 4195 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4195: avg_loss appended (2.7778)\n", - "Epoch 4195: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4195: accuracy appended (83.33%)\n", - "Epoch 4195: model set back to train mode\n", - "Epoch 4195: model parameters saved\n", - "Epoch 4196 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4196: avg_loss appended (2.7778)\n", - "Epoch 4196: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4196: accuracy appended (83.33%)\n", - "Epoch 4196: model set back to train mode\n", - "Epoch 4196: model parameters saved\n", - "Epoch 4197 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4197: avg_loss appended (2.7778)\n", - "Epoch 4197: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4197: accuracy appended (83.33%)\n", - "Epoch 4197: model set back to train mode\n", - "Epoch 4197: model parameters saved\n", - "Epoch 4198 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4198: avg_loss appended (2.7778)\n", - "Epoch 4198: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4198: accuracy appended (83.33%)\n", - "Epoch 4198: model set back to train mode\n", - "Epoch 4198: model parameters saved\n", - "Epoch 4199 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4199: avg_loss appended (2.7778)\n", - "Epoch 4199: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4199: accuracy appended (83.33%)\n", - "Epoch 4199: model set back to train mode\n", - "Epoch 4199: model parameters saved\n", - "Epoch 4200 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4200: avg_loss appended (2.7778)\n", - "Epoch 4200: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4200: accuracy appended (83.33%)\n", - "Epoch 4200: model set back to train mode\n", - "Epoch 4200: model parameters saved\n", - "Epoch 4200/10000, Loss: 2.7778, Accuracy: 83.33%\n", - "Epoch 4201 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4201: avg_loss appended (2.7778)\n", - "Epoch 4201: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4201: accuracy appended (83.33%)\n", - "Epoch 4201: model set back to train mode\n", - "Epoch 4201: model parameters saved\n", - "Epoch 4202 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4202: avg_loss appended (2.7778)\n", - "Epoch 4202: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4202: accuracy appended (83.33%)\n", - "Epoch 4202: model set back to train mode\n", - "Epoch 4202: model parameters saved\n", - "Epoch 4203 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4203: avg_loss appended (2.7778)\n", - "Epoch 4203: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4203: accuracy appended (83.33%)\n", - "Epoch 4203: model set back to train mode\n", - "Epoch 4203: model parameters saved\n", - "Epoch 4204 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4204: avg_loss appended (2.7778)\n", - "Epoch 4204: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4204: accuracy appended (83.33%)\n", - "Epoch 4204: model set back to train mode\n", - "Epoch 4204: model parameters saved\n", - "Epoch 4205 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4205: avg_loss appended (2.7778)\n", - "Epoch 4205: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4205: accuracy appended (83.33%)\n", - "Epoch 4205: model set back to train mode\n", - "Epoch 4205: model parameters saved\n", - "Epoch 4206 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4206: avg_loss appended (2.7778)\n", - "Epoch 4206: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4206: accuracy appended (83.33%)\n", - "Epoch 4206: model set back to train mode\n", - "Epoch 4206: model parameters saved\n", - "Epoch 4207 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4207: avg_loss appended (2.7778)\n", - "Epoch 4207: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4207: accuracy appended (83.33%)\n", - "Epoch 4207: model set back to train mode\n", - "Epoch 4207: model parameters saved\n", - "Epoch 4208 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4208: avg_loss appended (2.7778)\n", - "Epoch 4208: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4208: accuracy appended (83.33%)\n", - "Epoch 4208: model set back to train mode\n", - "Epoch 4208: model parameters saved\n", - "Epoch 4209 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4209: avg_loss appended (2.7778)\n", - "Epoch 4209: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4209: accuracy appended (83.33%)\n", - "Epoch 4209: model set back to train mode\n", - "Epoch 4209: model parameters saved\n", - "Epoch 4210 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4210: avg_loss appended (2.7778)\n", - "Epoch 4210: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4210: accuracy appended (83.33%)\n", - "Epoch 4210: model set back to train mode\n", - "Epoch 4210: model parameters saved\n", - "Epoch 4211 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4211: avg_loss appended (2.7778)\n", - "Epoch 4211: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4211: accuracy appended (83.33%)\n", - "Epoch 4211: model set back to train mode\n", - "Epoch 4211: model parameters saved\n", - "Epoch 4212 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4212: avg_loss appended (2.7778)\n", - "Epoch 4212: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4212: accuracy appended (83.33%)\n", - "Epoch 4212: model set back to train mode\n", - "Epoch 4212: model parameters saved\n", - "Epoch 4213 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4213: avg_loss appended (2.7778)\n", - "Epoch 4213: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4213: accuracy appended (83.33%)\n", - "Epoch 4213: model set back to train mode\n", - "Epoch 4213: model parameters saved\n", - "Epoch 4214 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4214: avg_loss appended (2.7778)\n", - "Epoch 4214: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4214: accuracy appended (83.33%)\n", - "Epoch 4214: model set back to train mode\n", - "Epoch 4214: model parameters saved\n", - "Epoch 4215 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4215: avg_loss appended (2.7778)\n", - "Epoch 4215: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4215: accuracy appended (83.33%)\n", - "Epoch 4215: model set back to train mode\n", - "Epoch 4215: model parameters saved\n", - "Epoch 4216 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4216: avg_loss appended (2.7778)\n", - "Epoch 4216: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4216: accuracy appended (83.33%)\n", - "Epoch 4216: model set back to train mode\n", - "Epoch 4216: model parameters saved\n", - "Epoch 4217 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4217: avg_loss appended (2.7778)\n", - "Epoch 4217: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4217: accuracy appended (83.33%)\n", - "Epoch 4217: model set back to train mode\n", - "Epoch 4217: model parameters saved\n", - "Epoch 4218 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4218: avg_loss appended (2.7778)\n", - "Epoch 4218: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4218: accuracy appended (83.33%)\n", - "Epoch 4218: model set back to train mode\n", - "Epoch 4218: model parameters saved\n", - "Epoch 4219 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4219: avg_loss appended (2.7778)\n", - "Epoch 4219: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4219: accuracy appended (83.33%)\n", - "Epoch 4219: model set back to train mode\n", - "Epoch 4219: model parameters saved\n", - "Epoch 4220 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4220: avg_loss appended (2.7778)\n", - "Epoch 4220: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4220: accuracy appended (83.33%)\n", - "Epoch 4220: model set back to train mode\n", - "Epoch 4220: model parameters saved\n", - "Epoch 4221 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4221: avg_loss appended (2.7778)\n", - "Epoch 4221: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4221: accuracy appended (83.33%)\n", - "Epoch 4221: model set back to train mode\n", - "Epoch 4221: model parameters saved\n", - "Epoch 4222 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4222: avg_loss appended (2.7778)\n", - "Epoch 4222: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4222: accuracy appended (83.33%)\n", - "Epoch 4222: model set back to train mode\n", - "Epoch 4222: model parameters saved\n", - "Epoch 4223 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4223: avg_loss appended (2.7778)\n", - "Epoch 4223: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4223: accuracy appended (83.33%)\n", - "Epoch 4223: model set back to train mode\n", - "Epoch 4223: model parameters saved\n", - "Epoch 4224 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4224: avg_loss appended (2.7778)\n", - "Epoch 4224: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4224: accuracy appended (83.33%)\n", - "Epoch 4224: model set back to train mode\n", - "Epoch 4224: model parameters saved\n", - "Epoch 4225 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4225: avg_loss appended (2.7778)\n", - "Epoch 4225: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4225: accuracy appended (83.33%)\n", - "Epoch 4225: model set back to train mode\n", - "Epoch 4225: model parameters saved\n", - "Epoch 4226 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4226: avg_loss appended (2.7778)\n", - "Epoch 4226: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4226: accuracy appended (83.33%)\n", - "Epoch 4226: model set back to train mode\n", - "Epoch 4226: model parameters saved\n", - "Epoch 4227 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4227: avg_loss appended (2.7778)\n", - "Epoch 4227: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4227: accuracy appended (83.33%)\n", - "Epoch 4227: model set back to train mode\n", - "Epoch 4227: model parameters saved\n", - "Epoch 4228 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4228: avg_loss appended (2.7778)\n", - "Epoch 4228: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4228: accuracy appended (83.33%)\n", - "Epoch 4228: model set back to train mode\n", - "Epoch 4228: model parameters saved\n", - "Epoch 4229 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4229: avg_loss appended (2.7778)\n", - "Epoch 4229: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4229: accuracy appended (83.33%)\n", - "Epoch 4229: model set back to train mode\n", - "Epoch 4229: model parameters saved\n", - "Epoch 4230 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4230: avg_loss appended (2.7778)\n", - "Epoch 4230: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4230: accuracy appended (83.33%)\n", - "Epoch 4230: model set back to train mode\n", - "Epoch 4230: model parameters saved\n", - "Epoch 4231 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4231: avg_loss appended (2.7778)\n", - "Epoch 4231: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4231: accuracy appended (83.33%)\n", - "Epoch 4231: model set back to train mode\n", - "Epoch 4231: model parameters saved\n", - "Epoch 4232 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4232: avg_loss appended (2.7778)\n", - "Epoch 4232: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4232: accuracy appended (83.33%)\n", - "Epoch 4232: model set back to train mode\n", - "Epoch 4232: model parameters saved\n", - "Epoch 4233 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4233: avg_loss appended (2.7778)\n", - "Epoch 4233: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4233: accuracy appended (83.33%)\n", - "Epoch 4233: model set back to train mode\n", - "Epoch 4233: model parameters saved\n", - "Epoch 4234 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4234: avg_loss appended (2.7778)\n", - "Epoch 4234: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4234: accuracy appended (83.33%)\n", - "Epoch 4234: model set back to train mode\n", - "Epoch 4234: model parameters saved\n", - "Epoch 4235 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4235: avg_loss appended (2.7778)\n", - "Epoch 4235: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4235: accuracy appended (83.33%)\n", - "Epoch 4235: model set back to train mode\n", - "Epoch 4235: model parameters saved\n", - "Epoch 4236 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4236: avg_loss appended (2.7778)\n", - "Epoch 4236: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4236: accuracy appended (83.33%)\n", - "Epoch 4236: model set back to train mode\n", - "Epoch 4236: model parameters saved\n", - "Epoch 4237 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4237: avg_loss appended (2.7778)\n", - "Epoch 4237: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4237: accuracy appended (83.33%)\n", - "Epoch 4237: model set back to train mode\n", - "Epoch 4237: model parameters saved\n", - "Epoch 4238 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4238: avg_loss appended (2.7778)\n", - "Epoch 4238: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4238: accuracy appended (83.33%)\n", - "Epoch 4238: model set back to train mode\n", - "Epoch 4238: model parameters saved\n", - "Epoch 4239 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4239: avg_loss appended (2.7778)\n", - "Epoch 4239: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4239: accuracy appended (83.33%)\n", - "Epoch 4239: model set back to train mode\n", - "Epoch 4239: model parameters saved\n", - "Epoch 4240 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4240: avg_loss appended (2.7778)\n", - "Epoch 4240: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4240: accuracy appended (83.33%)\n", - "Epoch 4240: model set back to train mode\n", - "Epoch 4240: model parameters saved\n", - "Epoch 4241 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4241: avg_loss appended (2.7778)\n", - "Epoch 4241: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4241: accuracy appended (83.33%)\n", - "Epoch 4241: model set back to train mode\n", - "Epoch 4241: model parameters saved\n", - "Epoch 4242 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4242: avg_loss appended (2.7778)\n", - "Epoch 4242: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4242: accuracy appended (83.33%)\n", - "Epoch 4242: model set back to train mode\n", - "Epoch 4242: model parameters saved\n", - "Epoch 4243 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4243: avg_loss appended (2.7778)\n", - "Epoch 4243: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4243: accuracy appended (83.33%)\n", - "Epoch 4243: model set back to train mode\n", - "Epoch 4243: model parameters saved\n", - "Epoch 4244 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4244: avg_loss appended (2.7778)\n", - "Epoch 4244: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4244: accuracy appended (83.33%)\n", - "Epoch 4244: model set back to train mode\n", - "Epoch 4244: model parameters saved\n", - "Epoch 4245 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4245: avg_loss appended (2.7778)\n", - "Epoch 4245: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4245: accuracy appended (83.33%)\n", - "Epoch 4245: model set back to train mode\n", - "Epoch 4245: model parameters saved\n", - "Epoch 4246 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4246: avg_loss appended (2.7778)\n", - "Epoch 4246: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4246: accuracy appended (83.33%)\n", - "Epoch 4246: model set back to train mode\n", - "Epoch 4246: model parameters saved\n", - "Epoch 4247 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4247: avg_loss appended (2.7778)\n", - "Epoch 4247: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4247: accuracy appended (83.33%)\n", - "Epoch 4247: model set back to train mode\n", - "Epoch 4247: model parameters saved\n", - "Epoch 4248 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4248: avg_loss appended (2.7778)\n", - "Epoch 4248: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4248: accuracy appended (83.33%)\n", - "Epoch 4248: model set back to train mode\n", - "Epoch 4248: model parameters saved\n", - "Epoch 4249 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4249: avg_loss appended (2.7778)\n", - "Epoch 4249: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4249: accuracy appended (83.33%)\n", - "Epoch 4249: model set back to train mode\n", - "Epoch 4249: model parameters saved\n", - "Epoch 4250 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4250: avg_loss appended (2.7778)\n", - "Epoch 4250: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4250: accuracy appended (83.33%)\n", - "Epoch 4250: model set back to train mode\n", - "Epoch 4250: model parameters saved\n", - "Epoch 4251 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4251: avg_loss appended (2.7778)\n", - "Epoch 4251: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4251: accuracy appended (83.33%)\n", - "Epoch 4251: model set back to train mode\n", - "Epoch 4251: model parameters saved\n", - "Epoch 4252 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4252: avg_loss appended (2.7778)\n", - "Epoch 4252: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4252: accuracy appended (83.33%)\n", - "Epoch 4252: model set back to train mode\n", - "Epoch 4252: model parameters saved\n", - "Epoch 4253 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4253: avg_loss appended (2.7778)\n", - "Epoch 4253: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4253: accuracy appended (83.33%)\n", - "Epoch 4253: model set back to train mode\n", - "Epoch 4253: model parameters saved\n", - "Epoch 4254 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4254: avg_loss appended (2.7778)\n", - "Epoch 4254: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4254: accuracy appended (83.33%)\n", - "Epoch 4254: model set back to train mode\n", - "Epoch 4254: model parameters saved\n", - "Epoch 4255 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4255: avg_loss appended (2.7778)\n", - "Epoch 4255: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4255: accuracy appended (83.33%)\n", - "Epoch 4255: model set back to train mode\n", - "Epoch 4255: model parameters saved\n", - "Epoch 4256 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4256: avg_loss appended (2.7778)\n", - "Epoch 4256: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4256: accuracy appended (83.33%)\n", - "Epoch 4256: model set back to train mode\n", - "Epoch 4256: model parameters saved\n", - "Epoch 4257 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4257: avg_loss appended (2.7778)\n", - "Epoch 4257: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4257: accuracy appended (83.33%)\n", - "Epoch 4257: model set back to train mode\n", - "Epoch 4257: model parameters saved\n", - "Epoch 4258 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4258: avg_loss appended (2.7778)\n", - "Epoch 4258: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4258: accuracy appended (83.33%)\n", - "Epoch 4258: model set back to train mode\n", - "Epoch 4258: model parameters saved\n", - "Epoch 4259 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4259: avg_loss appended (2.7778)\n", - "Epoch 4259: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4259: accuracy appended (83.33%)\n", - "Epoch 4259: model set back to train mode\n", - "Epoch 4259: model parameters saved\n", - "Epoch 4260 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4260: avg_loss appended (2.7778)\n", - "Epoch 4260: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4260: accuracy appended (83.33%)\n", - "Epoch 4260: model set back to train mode\n", - "Epoch 4260: model parameters saved\n", - "Epoch 4261 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4261: avg_loss appended (2.7778)\n", - "Epoch 4261: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4261: accuracy appended (83.33%)\n", - "Epoch 4261: model set back to train mode\n", - "Epoch 4261: model parameters saved\n", - "Epoch 4262 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4262: avg_loss appended (2.7778)\n", - "Epoch 4262: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4262: accuracy appended (83.33%)\n", - "Epoch 4262: model set back to train mode\n", - "Epoch 4262: model parameters saved\n", - "Epoch 4263 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4263: avg_loss appended (2.7778)\n", - "Epoch 4263: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4263: accuracy appended (83.33%)\n", - "Epoch 4263: model set back to train mode\n", - "Epoch 4263: model parameters saved\n", - "Epoch 4264 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4264: avg_loss appended (2.7778)\n", - "Epoch 4264: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4264: accuracy appended (83.33%)\n", - "Epoch 4264: model set back to train mode\n", - "Epoch 4264: model parameters saved\n", - "Epoch 4265 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4265: avg_loss appended (2.7778)\n", - "Epoch 4265: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4265: accuracy appended (83.33%)\n", - "Epoch 4265: model set back to train mode\n", - "Epoch 4265: model parameters saved\n", - "Epoch 4266 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4266: avg_loss appended (2.7778)\n", - "Epoch 4266: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4266: accuracy appended (83.33%)\n", - "Epoch 4266: model set back to train mode\n", - "Epoch 4266: model parameters saved\n", - "Epoch 4267 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4267: avg_loss appended (2.7778)\n", - "Epoch 4267: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4267: accuracy appended (83.33%)\n", - "Epoch 4267: model set back to train mode\n", - "Epoch 4267: model parameters saved\n", - "Epoch 4268 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4268: avg_loss appended (2.7778)\n", - "Epoch 4268: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4268: accuracy appended (83.33%)\n", - "Epoch 4268: model set back to train mode\n", - "Epoch 4268: model parameters saved\n", - "Epoch 4269 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4269: avg_loss appended (2.7778)\n", - "Epoch 4269: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4269: accuracy appended (83.33%)\n", - "Epoch 4269: model set back to train mode\n", - "Epoch 4269: model parameters saved\n", - "Epoch 4270 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4270: avg_loss appended (2.7778)\n", - "Epoch 4270: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4270: accuracy appended (83.33%)\n", - "Epoch 4270: model set back to train mode\n", - "Epoch 4270: model parameters saved\n", - "Epoch 4271 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4271: avg_loss appended (2.7778)\n", - "Epoch 4271: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4271: accuracy appended (83.33%)\n", - "Epoch 4271: model set back to train mode\n", - "Epoch 4271: model parameters saved\n", - "Epoch 4272 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4272: avg_loss appended (2.7778)\n", - "Epoch 4272: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4272: accuracy appended (83.33%)\n", - "Epoch 4272: model set back to train mode\n", - "Epoch 4272: model parameters saved\n", - "Epoch 4273 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4273: avg_loss appended (2.7778)\n", - "Epoch 4273: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4273: accuracy appended (83.33%)\n", - "Epoch 4273: model set back to train mode\n", - "Epoch 4273: model parameters saved\n", - "Epoch 4274 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4274: avg_loss appended (2.7778)\n", - "Epoch 4274: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4274: accuracy appended (83.33%)\n", - "Epoch 4274: model set back to train mode\n", - "Epoch 4274: model parameters saved\n", - "Epoch 4275 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4275: avg_loss appended (2.7778)\n", - "Epoch 4275: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4275: accuracy appended (83.33%)\n", - "Epoch 4275: model set back to train mode\n", - "Epoch 4275: model parameters saved\n", - "Epoch 4276 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4276: avg_loss appended (2.7778)\n", - "Epoch 4276: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4276: accuracy appended (83.33%)\n", - "Epoch 4276: model set back to train mode\n", - "Epoch 4276: model parameters saved\n", - "Epoch 4277 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4277: avg_loss appended (2.7778)\n", - "Epoch 4277: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4277: accuracy appended (83.33%)\n", - "Epoch 4277: model set back to train mode\n", - "Epoch 4277: model parameters saved\n", - "Epoch 4278 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4278: avg_loss appended (2.7778)\n", - "Epoch 4278: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4278: accuracy appended (83.33%)\n", - "Epoch 4278: model set back to train mode\n", - "Epoch 4278: model parameters saved\n", - "Epoch 4279 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4279: avg_loss appended (2.7778)\n", - "Epoch 4279: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4279: accuracy appended (83.33%)\n", - "Epoch 4279: model set back to train mode\n", - "Epoch 4279: model parameters saved\n", - "Epoch 4280 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4280: avg_loss appended (2.7778)\n", - "Epoch 4280: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4280: accuracy appended (83.33%)\n", - "Epoch 4280: model set back to train mode\n", - "Epoch 4280: model parameters saved\n", - "Epoch 4281 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4281: avg_loss appended (2.7778)\n", - "Epoch 4281: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4281: accuracy appended (83.33%)\n", - "Epoch 4281: model set back to train mode\n", - "Epoch 4281: model parameters saved\n", - "Epoch 4282 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4282: avg_loss appended (2.7778)\n", - "Epoch 4282: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4282: accuracy appended (83.33%)\n", - "Epoch 4282: model set back to train mode\n", - "Epoch 4282: model parameters saved\n", - "Epoch 4283 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4283: avg_loss appended (2.7778)\n", - "Epoch 4283: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4283: accuracy appended (83.33%)\n", - "Epoch 4283: model set back to train mode\n", - "Epoch 4283: model parameters saved\n", - "Epoch 4284 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4284: avg_loss appended (2.7778)\n", - "Epoch 4284: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4284: accuracy appended (83.33%)\n", - "Epoch 4284: model set back to train mode\n", - "Epoch 4284: model parameters saved\n", - "Epoch 4285 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4285: avg_loss appended (2.7778)\n", - "Epoch 4285: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4285: accuracy appended (83.33%)\n", - "Epoch 4285: model set back to train mode\n", - "Epoch 4285: model parameters saved\n", - "Epoch 4286 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4286: avg_loss appended (2.7778)\n", - "Epoch 4286: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4286: accuracy appended (83.33%)\n", - "Epoch 4286: model set back to train mode\n", - "Epoch 4286: model parameters saved\n", - "Epoch 4287 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4287: avg_loss appended (2.7778)\n", - "Epoch 4287: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4287: accuracy appended (83.33%)\n", - "Epoch 4287: model set back to train mode\n", - "Epoch 4287: model parameters saved\n", - "Epoch 4288 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4288: avg_loss appended (2.7778)\n", - "Epoch 4288: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4288: accuracy appended (83.33%)\n", - "Epoch 4288: model set back to train mode\n", - "Epoch 4288: model parameters saved\n", - "Epoch 4289 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4289: avg_loss appended (2.7778)\n", - "Epoch 4289: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4289: accuracy appended (83.33%)\n", - "Epoch 4289: model set back to train mode\n", - "Epoch 4289: model parameters saved\n", - "Epoch 4290 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4290: avg_loss appended (2.7778)\n", - "Epoch 4290: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4290: accuracy appended (83.33%)\n", - "Epoch 4290: model set back to train mode\n", - "Epoch 4290: model parameters saved\n", - "Epoch 4291 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4291: avg_loss appended (2.7778)\n", - "Epoch 4291: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4291: accuracy appended (83.33%)\n", - "Epoch 4291: model set back to train mode\n", - "Epoch 4291: model parameters saved\n", - "Epoch 4292 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4292: avg_loss appended (2.7778)\n", - "Epoch 4292: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4292: accuracy appended (83.33%)\n", - "Epoch 4292: model set back to train mode\n", - "Epoch 4292: model parameters saved\n", - "Epoch 4293 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4293: avg_loss appended (2.7778)\n", - "Epoch 4293: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4293: accuracy appended (83.33%)\n", - "Epoch 4293: model set back to train mode\n", - "Epoch 4293: model parameters saved\n", - "Epoch 4294 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4294: avg_loss appended (2.7778)\n", - "Epoch 4294: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4294: accuracy appended (83.33%)\n", - "Epoch 4294: model set back to train mode\n", - "Epoch 4294: model parameters saved\n", - "Epoch 4295 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4295: avg_loss appended (2.7778)\n", - "Epoch 4295: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4295: accuracy appended (83.33%)\n", - "Epoch 4295: model set back to train mode\n", - "Epoch 4295: model parameters saved\n", - "Epoch 4296 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4296: avg_loss appended (2.7778)\n", - "Epoch 4296: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4296: accuracy appended (83.33%)\n", - "Epoch 4296: model set back to train mode\n", - "Epoch 4296: model parameters saved\n", - "Epoch 4297 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4297: avg_loss appended (2.7778)\n", - "Epoch 4297: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4297: accuracy appended (83.33%)\n", - "Epoch 4297: model set back to train mode\n", - "Epoch 4297: model parameters saved\n", - "Epoch 4298 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4298: avg_loss appended (2.7778)\n", - "Epoch 4298: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4298: accuracy appended (83.33%)\n", - "Epoch 4298: model set back to train mode\n", - "Epoch 4298: model parameters saved\n", - "Epoch 4299 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4299: avg_loss appended (2.7778)\n", - "Epoch 4299: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4299: accuracy appended (83.33%)\n", - "Epoch 4299: model set back to train mode\n", - "Epoch 4299: model parameters saved\n", - "Epoch 4300 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4300: avg_loss appended (2.7778)\n", - "Epoch 4300: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4300: accuracy appended (83.33%)\n", - "Epoch 4300: model set back to train mode\n", - "Epoch 4300: model parameters saved\n", - "Epoch 4300/10000, Loss: 2.7778, Accuracy: 83.33%\n", - "Epoch 4301 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4301: avg_loss appended (2.7778)\n", - "Epoch 4301: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4301: accuracy appended (83.33%)\n", - "Epoch 4301: model set back to train mode\n", - "Epoch 4301: model parameters saved\n", - "Epoch 4302 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4302: avg_loss appended (2.7778)\n", - "Epoch 4302: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4302: accuracy appended (83.33%)\n", - "Epoch 4302: model set back to train mode\n", - "Epoch 4302: model parameters saved\n", - "Epoch 4303 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4303: avg_loss appended (2.7778)\n", - "Epoch 4303: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4303: accuracy appended (83.33%)\n", - "Epoch 4303: model set back to train mode\n", - "Epoch 4303: model parameters saved\n", - "Epoch 4304 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4304: avg_loss appended (2.7778)\n", - "Epoch 4304: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4304: accuracy appended (83.33%)\n", - "Epoch 4304: model set back to train mode\n", - "Epoch 4304: model parameters saved\n", - "Epoch 4305 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4305: avg_loss appended (2.7778)\n", - "Epoch 4305: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4305: accuracy appended (83.33%)\n", - "Epoch 4305: model set back to train mode\n", - "Epoch 4305: model parameters saved\n", - "Epoch 4306 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4306: avg_loss appended (2.7778)\n", - "Epoch 4306: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4306: accuracy appended (83.33%)\n", - "Epoch 4306: model set back to train mode\n", - "Epoch 4306: model parameters saved\n", - "Epoch 4307 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4307: avg_loss appended (2.7778)\n", - "Epoch 4307: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4307: accuracy appended (83.33%)\n", - "Epoch 4307: model set back to train mode\n", - "Epoch 4307: model parameters saved\n", - "Epoch 4308 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4308: avg_loss appended (2.7778)\n", - "Epoch 4308: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4308: accuracy appended (83.33%)\n", - "Epoch 4308: model set back to train mode\n", - "Epoch 4308: model parameters saved\n", - "Epoch 4309 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4309: avg_loss appended (2.7778)\n", - "Epoch 4309: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4309: accuracy appended (83.33%)\n", - "Epoch 4309: model set back to train mode\n", - "Epoch 4309: model parameters saved\n", - "Epoch 4310 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4310: avg_loss appended (2.7778)\n", - "Epoch 4310: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4310: accuracy appended (83.33%)\n", - "Epoch 4310: model set back to train mode\n", - "Epoch 4310: model parameters saved\n", - "Epoch 4311 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4311: avg_loss appended (2.7778)\n", - "Epoch 4311: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4311: accuracy appended (83.33%)\n", - "Epoch 4311: model set back to train mode\n", - "Epoch 4311: model parameters saved\n", - "Epoch 4312 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4312: avg_loss appended (2.7778)\n", - "Epoch 4312: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4312: accuracy appended (83.33%)\n", - "Epoch 4312: model set back to train mode\n", - "Epoch 4312: model parameters saved\n", - "Epoch 4313 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4313: avg_loss appended (2.7778)\n", - "Epoch 4313: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4313: accuracy appended (83.33%)\n", - "Epoch 4313: model set back to train mode\n", - "Epoch 4313: model parameters saved\n", - "Epoch 4314 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4314: avg_loss appended (2.7778)\n", - "Epoch 4314: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4314: accuracy appended (83.33%)\n", - "Epoch 4314: model set back to train mode\n", - "Epoch 4314: model parameters saved\n", - "Epoch 4315 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4315: avg_loss appended (2.7778)\n", - "Epoch 4315: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4315: accuracy appended (83.33%)\n", - "Epoch 4315: model set back to train mode\n", - "Epoch 4315: model parameters saved\n", - "Epoch 4316 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4316: avg_loss appended (2.7778)\n", - "Epoch 4316: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4316: accuracy appended (83.33%)\n", - "Epoch 4316: model set back to train mode\n", - "Epoch 4316: model parameters saved\n", - "Epoch 4317 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4317: avg_loss appended (2.7778)\n", - "Epoch 4317: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4317: accuracy appended (83.33%)\n", - "Epoch 4317: model set back to train mode\n", - "Epoch 4317: model parameters saved\n", - "Epoch 4318 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4318: avg_loss appended (2.7778)\n", - "Epoch 4318: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4318: accuracy appended (83.33%)\n", - "Epoch 4318: model set back to train mode\n", - "Epoch 4318: model parameters saved\n", - "Epoch 4319 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4319: avg_loss appended (2.7778)\n", - "Epoch 4319: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4319: accuracy appended (83.33%)\n", - "Epoch 4319: model set back to train mode\n", - "Epoch 4319: model parameters saved\n", - "Epoch 4320 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4320: avg_loss appended (2.7778)\n", - "Epoch 4320: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4320: accuracy appended (83.33%)\n", - "Epoch 4320: model set back to train mode\n", - "Epoch 4320: model parameters saved\n", - "Epoch 4321 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4321: avg_loss appended (2.7778)\n", - "Epoch 4321: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4321: accuracy appended (83.33%)\n", - "Epoch 4321: model set back to train mode\n", - "Epoch 4321: model parameters saved\n", - "Epoch 4322 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4322: avg_loss appended (2.7778)\n", - "Epoch 4322: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4322: accuracy appended (83.33%)\n", - "Epoch 4322: model set back to train mode\n", - "Epoch 4322: model parameters saved\n", - "Epoch 4323 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4323: avg_loss appended (2.7778)\n", - "Epoch 4323: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4323: accuracy appended (83.33%)\n", - "Epoch 4323: model set back to train mode\n", - "Epoch 4323: model parameters saved\n", - "Epoch 4324 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4324: avg_loss appended (2.7778)\n", - "Epoch 4324: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4324: accuracy appended (83.33%)\n", - "Epoch 4324: model set back to train mode\n", - "Epoch 4324: model parameters saved\n", - "Epoch 4325 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4325: avg_loss appended (2.7778)\n", - "Epoch 4325: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4325: accuracy appended (83.33%)\n", - "Epoch 4325: model set back to train mode\n", - "Epoch 4325: model parameters saved\n", - "Epoch 4326 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4326: avg_loss appended (2.7778)\n", - "Epoch 4326: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4326: accuracy appended (83.33%)\n", - "Epoch 4326: model set back to train mode\n", - "Epoch 4326: model parameters saved\n", - "Epoch 4327 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4327: avg_loss appended (2.7778)\n", - "Epoch 4327: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4327: accuracy appended (83.33%)\n", - "Epoch 4327: model set back to train mode\n", - "Epoch 4327: model parameters saved\n", - "Epoch 4328 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4328: avg_loss appended (2.7778)\n", - "Epoch 4328: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4328: accuracy appended (83.33%)\n", - "Epoch 4328: model set back to train mode\n", - "Epoch 4328: model parameters saved\n", - "Epoch 4329 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4329: avg_loss appended (2.7778)\n", - "Epoch 4329: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4329: accuracy appended (83.33%)\n", - "Epoch 4329: model set back to train mode\n", - "Epoch 4329: model parameters saved\n", - "Epoch 4330 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4330: avg_loss appended (2.7778)\n", - "Epoch 4330: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4330: accuracy appended (83.33%)\n", - "Epoch 4330: model set back to train mode\n", - "Epoch 4330: model parameters saved\n", - "Epoch 4331 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4331: avg_loss appended (2.7778)\n", - "Epoch 4331: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4331: accuracy appended (83.33%)\n", - "Epoch 4331: model set back to train mode\n", - "Epoch 4331: model parameters saved\n", - "Epoch 4332 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4332: avg_loss appended (2.7778)\n", - "Epoch 4332: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4332: accuracy appended (83.33%)\n", - "Epoch 4332: model set back to train mode\n", - "Epoch 4332: model parameters saved\n", - "Epoch 4333 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4333: avg_loss appended (2.7778)\n", - "Epoch 4333: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4333: accuracy appended (83.33%)\n", - "Epoch 4333: model set back to train mode\n", - "Epoch 4333: model parameters saved\n", - "Epoch 4334 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4334: avg_loss appended (2.7778)\n", - "Epoch 4334: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4334: accuracy appended (83.33%)\n", - "Epoch 4334: model set back to train mode\n", - "Epoch 4334: model parameters saved\n", - "Epoch 4335 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4335: avg_loss appended (2.7778)\n", - "Epoch 4335: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4335: accuracy appended (83.33%)\n", - "Epoch 4335: model set back to train mode\n", - "Epoch 4335: model parameters saved\n", - "Epoch 4336 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4336: avg_loss appended (2.7778)\n", - "Epoch 4336: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4336: accuracy appended (83.33%)\n", - "Epoch 4336: model set back to train mode\n", - "Epoch 4336: model parameters saved\n", - "Epoch 4337 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4337: avg_loss appended (2.7778)\n", - "Epoch 4337: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4337: accuracy appended (83.33%)\n", - "Epoch 4337: model set back to train mode\n", - "Epoch 4337: model parameters saved\n", - "Epoch 4338 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4338: avg_loss appended (2.7778)\n", - "Epoch 4338: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4338: accuracy appended (83.33%)\n", - "Epoch 4338: model set back to train mode\n", - "Epoch 4338: model parameters saved\n", - "Epoch 4339 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4339: avg_loss appended (2.7778)\n", - "Epoch 4339: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4339: accuracy appended (83.33%)\n", - "Epoch 4339: model set back to train mode\n", - "Epoch 4339: model parameters saved\n", - "Epoch 4340 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4340: avg_loss appended (2.7778)\n", - "Epoch 4340: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4340: accuracy appended (83.33%)\n", - "Epoch 4340: model set back to train mode\n", - "Epoch 4340: model parameters saved\n", - "Epoch 4341 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4341: avg_loss appended (2.7778)\n", - "Epoch 4341: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4341: accuracy appended (83.33%)\n", - "Epoch 4341: model set back to train mode\n", - "Epoch 4341: model parameters saved\n", - "Epoch 4342 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4342: avg_loss appended (2.7778)\n", - "Epoch 4342: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4342: accuracy appended (83.33%)\n", - "Epoch 4342: model set back to train mode\n", - "Epoch 4342: model parameters saved\n", - "Epoch 4343 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4343: avg_loss appended (2.7778)\n", - "Epoch 4343: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4343: accuracy appended (83.33%)\n", - "Epoch 4343: model set back to train mode\n", - "Epoch 4343: model parameters saved\n", - "Epoch 4344 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4344: avg_loss appended (2.7778)\n", - "Epoch 4344: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4344: accuracy appended (83.33%)\n", - "Epoch 4344: model set back to train mode\n", - "Epoch 4344: model parameters saved\n", - "Epoch 4345 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4345: avg_loss appended (2.7778)\n", - "Epoch 4345: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4345: accuracy appended (83.33%)\n", - "Epoch 4345: model set back to train mode\n", - "Epoch 4345: model parameters saved\n", - "Epoch 4346 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4346: avg_loss appended (2.7778)\n", - "Epoch 4346: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4346: accuracy appended (83.33%)\n", - "Epoch 4346: model set back to train mode\n", - "Epoch 4346: model parameters saved\n", - "Epoch 4347 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4347: avg_loss appended (2.7778)\n", - "Epoch 4347: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4347: accuracy appended (83.33%)\n", - "Epoch 4347: model set back to train mode\n", - "Epoch 4347: model parameters saved\n", - "Epoch 4348 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4348: avg_loss appended (2.7778)\n", - "Epoch 4348: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4348: accuracy appended (83.33%)\n", - "Epoch 4348: model set back to train mode\n", - "Epoch 4348: model parameters saved\n", - "Epoch 4349 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4349: avg_loss appended (2.7778)\n", - "Epoch 4349: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4349: accuracy appended (83.33%)\n", - "Epoch 4349: model set back to train mode\n", - "Epoch 4349: model parameters saved\n", - "Epoch 4350 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4350: avg_loss appended (2.7778)\n", - "Epoch 4350: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4350: accuracy appended (83.33%)\n", - "Epoch 4350: model set back to train mode\n", - "Epoch 4350: model parameters saved\n", - "Epoch 4351 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4351: avg_loss appended (2.7778)\n", - "Epoch 4351: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4351: accuracy appended (83.33%)\n", - "Epoch 4351: model set back to train mode\n", - "Epoch 4351: model parameters saved\n", - "Epoch 4352 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4352: avg_loss appended (2.7778)\n", - "Epoch 4352: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4352: accuracy appended (83.33%)\n", - "Epoch 4352: model set back to train mode\n", - "Epoch 4352: model parameters saved\n", - "Epoch 4353 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4353: avg_loss appended (2.7778)\n", - "Epoch 4353: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4353: accuracy appended (83.33%)\n", - "Epoch 4353: model set back to train mode\n", - "Epoch 4353: model parameters saved\n", - "Epoch 4354 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4354: avg_loss appended (2.7778)\n", - "Epoch 4354: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4354: accuracy appended (83.33%)\n", - "Epoch 4354: model set back to train mode\n", - "Epoch 4354: model parameters saved\n", - "Epoch 4355 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4355: avg_loss appended (2.7778)\n", - "Epoch 4355: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4355: accuracy appended (83.33%)\n", - "Epoch 4355: model set back to train mode\n", - "Epoch 4355: model parameters saved\n", - "Epoch 4356 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4356: avg_loss appended (2.7778)\n", - "Epoch 4356: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4356: accuracy appended (83.33%)\n", - "Epoch 4356: model set back to train mode\n", - "Epoch 4356: model parameters saved\n", - "Epoch 4357 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4357: avg_loss appended (2.7778)\n", - "Epoch 4357: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4357: accuracy appended (83.33%)\n", - "Epoch 4357: model set back to train mode\n", - "Epoch 4357: model parameters saved\n", - "Epoch 4358 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4358: avg_loss appended (2.7778)\n", - "Epoch 4358: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4358: accuracy appended (83.33%)\n", - "Epoch 4358: model set back to train mode\n", - "Epoch 4358: model parameters saved\n", - "Epoch 4359 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4359: avg_loss appended (2.7778)\n", - "Epoch 4359: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4359: accuracy appended (83.33%)\n", - "Epoch 4359: model set back to train mode\n", - "Epoch 4359: model parameters saved\n", - "Epoch 4360 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4360: avg_loss appended (2.7778)\n", - "Epoch 4360: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4360: accuracy appended (83.33%)\n", - "Epoch 4360: model set back to train mode\n", - "Epoch 4360: model parameters saved\n", - "Epoch 4361 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4361: avg_loss appended (2.7778)\n", - "Epoch 4361: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4361: accuracy appended (83.33%)\n", - "Epoch 4361: model set back to train mode\n", - "Epoch 4361: model parameters saved\n", - "Epoch 4362 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4362: avg_loss appended (2.7778)\n", - "Epoch 4362: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4362: accuracy appended (83.33%)\n", - "Epoch 4362: model set back to train mode\n", - "Epoch 4362: model parameters saved\n", - "Epoch 4363 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4363: avg_loss appended (2.7778)\n", - "Epoch 4363: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4363: accuracy appended (83.33%)\n", - "Epoch 4363: model set back to train mode\n", - "Epoch 4363: model parameters saved\n", - "Epoch 4364 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4364: avg_loss appended (2.7778)\n", - "Epoch 4364: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4364: accuracy appended (83.33%)\n", - "Epoch 4364: model set back to train mode\n", - "Epoch 4364: model parameters saved\n", - "Epoch 4365 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4365: avg_loss appended (2.7778)\n", - "Epoch 4365: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4365: accuracy appended (83.33%)\n", - "Epoch 4365: model set back to train mode\n", - "Epoch 4365: model parameters saved\n", - "Epoch 4366 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4366: avg_loss appended (2.7778)\n", - "Epoch 4366: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4366: accuracy appended (83.33%)\n", - "Epoch 4366: model set back to train mode\n", - "Epoch 4366: model parameters saved\n", - "Epoch 4367 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4367: avg_loss appended (2.7778)\n", - "Epoch 4367: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4367: accuracy appended (83.33%)\n", - "Epoch 4367: model set back to train mode\n", - "Epoch 4367: model parameters saved\n", - "Epoch 4368 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4368: avg_loss appended (2.7778)\n", - "Epoch 4368: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4368: accuracy appended (83.33%)\n", - "Epoch 4368: model set back to train mode\n", - "Epoch 4368: model parameters saved\n", - "Epoch 4369 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4369: avg_loss appended (2.7778)\n", - "Epoch 4369: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4369: accuracy appended (83.33%)\n", - "Epoch 4369: model set back to train mode\n", - "Epoch 4369: model parameters saved\n", - "Epoch 4370 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4370: avg_loss appended (2.7778)\n", - "Epoch 4370: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4370: accuracy appended (83.33%)\n", - "Epoch 4370: model set back to train mode\n", - "Epoch 4370: model parameters saved\n", - "Epoch 4371 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4371: avg_loss appended (2.7778)\n", - "Epoch 4371: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4371: accuracy appended (83.33%)\n", - "Epoch 4371: model set back to train mode\n", - "Epoch 4371: model parameters saved\n", - "Epoch 4372 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4372: avg_loss appended (2.7778)\n", - "Epoch 4372: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4372: accuracy appended (83.33%)\n", - "Epoch 4372: model set back to train mode\n", - "Epoch 4372: model parameters saved\n", - "Epoch 4373 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4373: avg_loss appended (2.7778)\n", - "Epoch 4373: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4373: accuracy appended (83.33%)\n", - "Epoch 4373: model set back to train mode\n", - "Epoch 4373: model parameters saved\n", - "Epoch 4374 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4374: avg_loss appended (2.7778)\n", - "Epoch 4374: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4374: accuracy appended (83.33%)\n", - "Epoch 4374: model set back to train mode\n", - "Epoch 4374: model parameters saved\n", - "Epoch 4375 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4375: avg_loss appended (2.7778)\n", - "Epoch 4375: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4375: accuracy appended (83.33%)\n", - "Epoch 4375: model set back to train mode\n", - "Epoch 4375: model parameters saved\n", - "Epoch 4376 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4376: avg_loss appended (2.7778)\n", - "Epoch 4376: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4376: accuracy appended (83.33%)\n", - "Epoch 4376: model set back to train mode\n", - "Epoch 4376: model parameters saved\n", - "Epoch 4377 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4377: avg_loss appended (2.7778)\n", - "Epoch 4377: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4377: accuracy appended (83.33%)\n", - "Epoch 4377: model set back to train mode\n", - "Epoch 4377: model parameters saved\n", - "Epoch 4378 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4378: avg_loss appended (2.7778)\n", - "Epoch 4378: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4378: accuracy appended (83.33%)\n", - "Epoch 4378: model set back to train mode\n", - "Epoch 4378: model parameters saved\n", - "Epoch 4379 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4379: avg_loss appended (2.7778)\n", - "Epoch 4379: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4379: accuracy appended (83.33%)\n", - "Epoch 4379: model set back to train mode\n", - "Epoch 4379: model parameters saved\n", - "Epoch 4380 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4380: avg_loss appended (2.7778)\n", - "Epoch 4380: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4380: accuracy appended (83.33%)\n", - "Epoch 4380: model set back to train mode\n", - "Epoch 4380: model parameters saved\n", - "Epoch 4381 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4381: avg_loss appended (2.7778)\n", - "Epoch 4381: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4381: accuracy appended (83.33%)\n", - "Epoch 4381: model set back to train mode\n", - "Epoch 4381: model parameters saved\n", - "Epoch 4382 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4382: avg_loss appended (2.7778)\n", - "Epoch 4382: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4382: accuracy appended (83.33%)\n", - "Epoch 4382: model set back to train mode\n", - "Epoch 4382: model parameters saved\n", - "Epoch 4383 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4383: avg_loss appended (2.7778)\n", - "Epoch 4383: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4383: accuracy appended (83.33%)\n", - "Epoch 4383: model set back to train mode\n", - "Epoch 4383: model parameters saved\n", - "Epoch 4384 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4384: avg_loss appended (2.7778)\n", - "Epoch 4384: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4384: accuracy appended (83.33%)\n", - "Epoch 4384: model set back to train mode\n", - "Epoch 4384: model parameters saved\n", - "Epoch 4385 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4385: avg_loss appended (2.7778)\n", - "Epoch 4385: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4385: accuracy appended (83.33%)\n", - "Epoch 4385: model set back to train mode\n", - "Epoch 4385: model parameters saved\n", - "Epoch 4386 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4386: avg_loss appended (2.7778)\n", - "Epoch 4386: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4386: accuracy appended (83.33%)\n", - "Epoch 4386: model set back to train mode\n", - "Epoch 4386: model parameters saved\n", - "Epoch 4387 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4387: avg_loss appended (2.7778)\n", - "Epoch 4387: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4387: accuracy appended (83.33%)\n", - "Epoch 4387: model set back to train mode\n", - "Epoch 4387: model parameters saved\n", - "Epoch 4388 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4388: avg_loss appended (2.7778)\n", - "Epoch 4388: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4388: accuracy appended (83.33%)\n", - "Epoch 4388: model set back to train mode\n", - "Epoch 4388: model parameters saved\n", - "Epoch 4389 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4389: avg_loss appended (2.7778)\n", - "Epoch 4389: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4389: accuracy appended (83.33%)\n", - "Epoch 4389: model set back to train mode\n", - "Epoch 4389: model parameters saved\n", - "Epoch 4390 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4390: avg_loss appended (2.7778)\n", - "Epoch 4390: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4390: accuracy appended (83.33%)\n", - "Epoch 4390: model set back to train mode\n", - "Epoch 4390: model parameters saved\n", - "Epoch 4391 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4391: avg_loss appended (2.7778)\n", - "Epoch 4391: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4391: accuracy appended (83.33%)\n", - "Epoch 4391: model set back to train mode\n", - "Epoch 4391: model parameters saved\n", - "Epoch 4392 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4392: avg_loss appended (2.7778)\n", - "Epoch 4392: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4392: accuracy appended (83.33%)\n", - "Epoch 4392: model set back to train mode\n", - "Epoch 4392: model parameters saved\n", - "Epoch 4393 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4393: avg_loss appended (2.7778)\n", - "Epoch 4393: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4393: accuracy appended (83.33%)\n", - "Epoch 4393: model set back to train mode\n", - "Epoch 4393: model parameters saved\n", - "Epoch 4394 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4394: avg_loss appended (2.7778)\n", - "Epoch 4394: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4394: accuracy appended (83.33%)\n", - "Epoch 4394: model set back to train mode\n", - "Epoch 4394: model parameters saved\n", - "Epoch 4395 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4395: avg_loss appended (2.7778)\n", - "Epoch 4395: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4395: accuracy appended (83.33%)\n", - "Epoch 4395: model set back to train mode\n", - "Epoch 4395: model parameters saved\n", - "Epoch 4396 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4396: avg_loss appended (2.7778)\n", - "Epoch 4396: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4396: accuracy appended (83.33%)\n", - "Epoch 4396: model set back to train mode\n", - "Epoch 4396: model parameters saved\n", - "Epoch 4397 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4397: avg_loss appended (2.7778)\n", - "Epoch 4397: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4397: accuracy appended (83.33%)\n", - "Epoch 4397: model set back to train mode\n", - "Epoch 4397: model parameters saved\n", - "Epoch 4398 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4398: avg_loss appended (2.7778)\n", - "Epoch 4398: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4398: accuracy appended (83.33%)\n", - "Epoch 4398: model set back to train mode\n", - "Epoch 4398: model parameters saved\n", - "Epoch 4399 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4399: avg_loss appended (2.7778)\n", - "Epoch 4399: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4399: accuracy appended (83.33%)\n", - "Epoch 4399: model set back to train mode\n", - "Epoch 4399: model parameters saved\n", - "Epoch 4400 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4400: avg_loss appended (2.7778)\n", - "Epoch 4400: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4400: accuracy appended (83.33%)\n", - "Epoch 4400: model set back to train mode\n", - "Epoch 4400: model parameters saved\n", - "Epoch 4400/10000, Loss: 2.7778, Accuracy: 83.33%\n", - "Epoch 4401 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4401: avg_loss appended (2.7778)\n", - "Epoch 4401: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4401: accuracy appended (83.33%)\n", - "Epoch 4401: model set back to train mode\n", - "Epoch 4401: model parameters saved\n", - "Epoch 4402 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4402: avg_loss appended (2.7778)\n", - "Epoch 4402: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4402: accuracy appended (83.33%)\n", - "Epoch 4402: model set back to train mode\n", - "Epoch 4402: model parameters saved\n", - "Epoch 4403 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4403: avg_loss appended (2.7778)\n", - "Epoch 4403: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4403: accuracy appended (83.33%)\n", - "Epoch 4403: model set back to train mode\n", - "Epoch 4403: model parameters saved\n", - "Epoch 4404 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4404: avg_loss appended (2.7778)\n", - "Epoch 4404: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4404: accuracy appended (83.33%)\n", - "Epoch 4404: model set back to train mode\n", - "Epoch 4404: model parameters saved\n", - "Epoch 4405 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4405: avg_loss appended (2.7778)\n", - "Epoch 4405: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4405: accuracy appended (83.33%)\n", - "Epoch 4405: model set back to train mode\n", - "Epoch 4405: model parameters saved\n", - "Epoch 4406 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4406: avg_loss appended (2.7778)\n", - "Epoch 4406: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4406: accuracy appended (83.33%)\n", - "Epoch 4406: model set back to train mode\n", - "Epoch 4406: model parameters saved\n", - "Epoch 4407 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4407: avg_loss appended (2.7778)\n", - "Epoch 4407: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4407: accuracy appended (83.33%)\n", - "Epoch 4407: model set back to train mode\n", - "Epoch 4407: model parameters saved\n", - "Epoch 4408 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4408: avg_loss appended (2.7778)\n", - "Epoch 4408: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4408: accuracy appended (83.33%)\n", - "Epoch 4408: model set back to train mode\n", - "Epoch 4408: model parameters saved\n", - "Epoch 4409 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4409: avg_loss appended (2.7778)\n", - "Epoch 4409: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4409: accuracy appended (83.33%)\n", - "Epoch 4409: model set back to train mode\n", - "Epoch 4409: model parameters saved\n", - "Epoch 4410 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4410: avg_loss appended (2.7778)\n", - "Epoch 4410: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4410: accuracy appended (83.33%)\n", - "Epoch 4410: model set back to train mode\n", - "Epoch 4410: model parameters saved\n", - "Epoch 4411 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4411: avg_loss appended (2.7778)\n", - "Epoch 4411: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4411: accuracy appended (83.33%)\n", - "Epoch 4411: model set back to train mode\n", - "Epoch 4411: model parameters saved\n", - "Epoch 4412 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4412: avg_loss appended (2.7778)\n", - "Epoch 4412: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4412: accuracy appended (83.33%)\n", - "Epoch 4412: model set back to train mode\n", - "Epoch 4412: model parameters saved\n", - "Epoch 4413 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4413: avg_loss appended (2.7778)\n", - "Epoch 4413: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4413: accuracy appended (83.33%)\n", - "Epoch 4413: model set back to train mode\n", - "Epoch 4413: model parameters saved\n", - "Epoch 4414 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4414: avg_loss appended (2.7778)\n", - "Epoch 4414: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4414: accuracy appended (83.33%)\n", - "Epoch 4414: model set back to train mode\n", - "Epoch 4414: model parameters saved\n", - "Epoch 4415 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4415: avg_loss appended (2.7778)\n", - "Epoch 4415: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4415: accuracy appended (83.33%)\n", - "Epoch 4415: model set back to train mode\n", - "Epoch 4415: model parameters saved\n", - "Epoch 4416 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4416: avg_loss appended (2.7778)\n", - "Epoch 4416: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4416: accuracy appended (83.33%)\n", - "Epoch 4416: model set back to train mode\n", - "Epoch 4416: model parameters saved\n", - "Epoch 4417 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4417: avg_loss appended (2.7778)\n", - "Epoch 4417: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4417: accuracy appended (83.33%)\n", - "Epoch 4417: model set back to train mode\n", - "Epoch 4417: model parameters saved\n", - "Epoch 4418 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4418: avg_loss appended (2.7778)\n", - "Epoch 4418: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4418: accuracy appended (83.33%)\n", - "Epoch 4418: model set back to train mode\n", - "Epoch 4418: model parameters saved\n", - "Epoch 4419 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4419: avg_loss appended (2.7778)\n", - "Epoch 4419: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4419: accuracy appended (83.33%)\n", - "Epoch 4419: model set back to train mode\n", - "Epoch 4419: model parameters saved\n", - "Epoch 4420 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4420: avg_loss appended (2.7778)\n", - "Epoch 4420: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4420: accuracy appended (83.33%)\n", - "Epoch 4420: model set back to train mode\n", - "Epoch 4420: model parameters saved\n", - "Epoch 4421 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4421: avg_loss appended (2.7778)\n", - "Epoch 4421: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4421: accuracy appended (83.33%)\n", - "Epoch 4421: model set back to train mode\n", - "Epoch 4421: model parameters saved\n", - "Epoch 4422 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4422: avg_loss appended (2.7778)\n", - "Epoch 4422: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4422: accuracy appended (83.33%)\n", - "Epoch 4422: model set back to train mode\n", - "Epoch 4422: model parameters saved\n", - "Epoch 4423 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4423: avg_loss appended (2.7778)\n", - "Epoch 4423: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4423: accuracy appended (83.33%)\n", - "Epoch 4423: model set back to train mode\n", - "Epoch 4423: model parameters saved\n", - "Epoch 4424 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4424: avg_loss appended (2.7778)\n", - "Epoch 4424: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4424: accuracy appended (83.33%)\n", - "Epoch 4424: model set back to train mode\n", - "Epoch 4424: model parameters saved\n", - "Epoch 4425 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4425: avg_loss appended (2.7778)\n", - "Epoch 4425: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4425: accuracy appended (83.33%)\n", - "Epoch 4425: model set back to train mode\n", - "Epoch 4425: model parameters saved\n", - "Epoch 4426 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4426: avg_loss appended (2.7778)\n", - "Epoch 4426: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4426: accuracy appended (83.33%)\n", - "Epoch 4426: model set back to train mode\n", - "Epoch 4426: model parameters saved\n", - "Epoch 4427 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4427: avg_loss appended (2.7778)\n", - "Epoch 4427: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4427: accuracy appended (83.33%)\n", - "Epoch 4427: model set back to train mode\n", - "Epoch 4427: model parameters saved\n", - "Epoch 4428 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4428: avg_loss appended (2.7778)\n", - "Epoch 4428: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4428: accuracy appended (83.33%)\n", - "Epoch 4428: model set back to train mode\n", - "Epoch 4428: model parameters saved\n", - "Epoch 4429 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4429: avg_loss appended (2.7778)\n", - "Epoch 4429: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4429: accuracy appended (83.33%)\n", - "Epoch 4429: model set back to train mode\n", - "Epoch 4429: model parameters saved\n", - "Epoch 4430 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4430: avg_loss appended (2.7778)\n", - "Epoch 4430: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4430: accuracy appended (83.33%)\n", - "Epoch 4430: model set back to train mode\n", - "Epoch 4430: model parameters saved\n", - "Epoch 4431 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4431: avg_loss appended (2.7778)\n", - "Epoch 4431: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4431: accuracy appended (83.33%)\n", - "Epoch 4431: model set back to train mode\n", - "Epoch 4431: model parameters saved\n", - "Epoch 4432 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4432: avg_loss appended (2.7778)\n", - "Epoch 4432: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4432: accuracy appended (83.33%)\n", - "Epoch 4432: model set back to train mode\n", - "Epoch 4432: model parameters saved\n", - "Epoch 4433 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4433: avg_loss appended (2.7778)\n", - "Epoch 4433: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4433: accuracy appended (83.33%)\n", - "Epoch 4433: model set back to train mode\n", - "Epoch 4433: model parameters saved\n", - "Epoch 4434 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4434: avg_loss appended (2.7778)\n", - "Epoch 4434: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4434: accuracy appended (83.33%)\n", - "Epoch 4434: model set back to train mode\n", - "Epoch 4434: model parameters saved\n", - "Epoch 4435 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4435: avg_loss appended (2.7778)\n", - "Epoch 4435: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4435: accuracy appended (83.33%)\n", - "Epoch 4435: model set back to train mode\n", - "Epoch 4435: model parameters saved\n", - "Epoch 4436 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4436: avg_loss appended (2.7778)\n", - "Epoch 4436: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4436: accuracy appended (83.33%)\n", - "Epoch 4436: model set back to train mode\n", - "Epoch 4436: model parameters saved\n", - "Epoch 4437 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4437: avg_loss appended (2.7778)\n", - "Epoch 4437: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4437: accuracy appended (83.33%)\n", - "Epoch 4437: model set back to train mode\n", - "Epoch 4437: model parameters saved\n", - "Epoch 4438 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4438: avg_loss appended (2.7778)\n", - "Epoch 4438: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4438: accuracy appended (83.33%)\n", - "Epoch 4438: model set back to train mode\n", - "Epoch 4438: model parameters saved\n", - "Epoch 4439 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4439: avg_loss appended (2.7778)\n", - "Epoch 4439: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4439: accuracy appended (83.33%)\n", - "Epoch 4439: model set back to train mode\n", - "Epoch 4439: model parameters saved\n", - "Epoch 4440 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4440: avg_loss appended (2.7778)\n", - "Epoch 4440: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4440: accuracy appended (83.33%)\n", - "Epoch 4440: model set back to train mode\n", - "Epoch 4440: model parameters saved\n", - "Epoch 4441 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4441: avg_loss appended (2.7778)\n", - "Epoch 4441: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4441: accuracy appended (83.33%)\n", - "Epoch 4441: model set back to train mode\n", - "Epoch 4441: model parameters saved\n", - "Epoch 4442 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4442: avg_loss appended (2.7778)\n", - "Epoch 4442: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4442: accuracy appended (83.33%)\n", - "Epoch 4442: model set back to train mode\n", - "Epoch 4442: model parameters saved\n", - "Epoch 4443 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4443: avg_loss appended (2.7778)\n", - "Epoch 4443: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4443: accuracy appended (83.33%)\n", - "Epoch 4443: model set back to train mode\n", - "Epoch 4443: model parameters saved\n", - "Epoch 4444 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4444: avg_loss appended (2.7778)\n", - "Epoch 4444: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4444: accuracy appended (83.33%)\n", - "Epoch 4444: model set back to train mode\n", - "Epoch 4444: model parameters saved\n", - "Epoch 4445 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4445: avg_loss appended (2.7778)\n", - "Epoch 4445: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4445: accuracy appended (83.33%)\n", - "Epoch 4445: model set back to train mode\n", - "Epoch 4445: model parameters saved\n", - "Epoch 4446 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4446: avg_loss appended (2.7778)\n", - "Epoch 4446: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4446: accuracy appended (83.33%)\n", - "Epoch 4446: model set back to train mode\n", - "Epoch 4446: model parameters saved\n", - "Epoch 4447 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4447: avg_loss appended (2.7778)\n", - "Epoch 4447: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4447: accuracy appended (83.33%)\n", - "Epoch 4447: model set back to train mode\n", - "Epoch 4447: model parameters saved\n", - "Epoch 4448 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4448: avg_loss appended (2.7778)\n", - "Epoch 4448: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4448: accuracy appended (83.33%)\n", - "Epoch 4448: model set back to train mode\n", - "Epoch 4448: model parameters saved\n", - "Epoch 4449 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4449: avg_loss appended (2.7778)\n", - "Epoch 4449: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4449: accuracy appended (83.33%)\n", - "Epoch 4449: model set back to train mode\n", - "Epoch 4449: model parameters saved\n", - "Epoch 4450 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4450: avg_loss appended (2.7778)\n", - "Epoch 4450: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4450: accuracy appended (83.33%)\n", - "Epoch 4450: model set back to train mode\n", - "Epoch 4450: model parameters saved\n", - "Epoch 4451 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4451: avg_loss appended (2.7778)\n", - "Epoch 4451: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4451: accuracy appended (83.33%)\n", - "Epoch 4451: model set back to train mode\n", - "Epoch 4451: model parameters saved\n", - "Epoch 4452 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4452: avg_loss appended (2.7778)\n", - "Epoch 4452: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4452: accuracy appended (83.33%)\n", - "Epoch 4452: model set back to train mode\n", - "Epoch 4452: model parameters saved\n", - "Epoch 4453 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4453: avg_loss appended (2.7778)\n", - "Epoch 4453: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4453: accuracy appended (83.33%)\n", - "Epoch 4453: model set back to train mode\n", - "Epoch 4453: model parameters saved\n", - "Epoch 4454 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4454: avg_loss appended (2.7778)\n", - "Epoch 4454: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4454: accuracy appended (83.33%)\n", - "Epoch 4454: model set back to train mode\n", - "Epoch 4454: model parameters saved\n", - "Epoch 4455 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4455: avg_loss appended (2.7778)\n", - "Epoch 4455: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4455: accuracy appended (83.33%)\n", - "Epoch 4455: model set back to train mode\n", - "Epoch 4455: model parameters saved\n", - "Epoch 4456 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4456: avg_loss appended (2.7778)\n", - "Epoch 4456: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4456: accuracy appended (83.33%)\n", - "Epoch 4456: model set back to train mode\n", - "Epoch 4456: model parameters saved\n", - "Epoch 4457 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4457: avg_loss appended (2.7778)\n", - "Epoch 4457: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4457: accuracy appended (83.33%)\n", - "Epoch 4457: model set back to train mode\n", - "Epoch 4457: model parameters saved\n", - "Epoch 4458 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4458: avg_loss appended (2.7778)\n", - "Epoch 4458: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4458: accuracy appended (83.33%)\n", - "Epoch 4458: model set back to train mode\n", - "Epoch 4458: model parameters saved\n", - "Epoch 4459 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4459: avg_loss appended (2.7778)\n", - "Epoch 4459: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4459: accuracy appended (83.33%)\n", - "Epoch 4459: model set back to train mode\n", - "Epoch 4459: model parameters saved\n", - "Epoch 4460 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4460: avg_loss appended (2.7778)\n", - "Epoch 4460: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4460: accuracy appended (83.33%)\n", - "Epoch 4460: model set back to train mode\n", - "Epoch 4460: model parameters saved\n", - "Epoch 4461 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4461: avg_loss appended (2.7778)\n", - "Epoch 4461: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4461: accuracy appended (83.33%)\n", - "Epoch 4461: model set back to train mode\n", - "Epoch 4461: model parameters saved\n", - "Epoch 4462 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4462: avg_loss appended (2.7778)\n", - "Epoch 4462: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4462: accuracy appended (83.33%)\n", - "Epoch 4462: model set back to train mode\n", - "Epoch 4462: model parameters saved\n", - "Epoch 4463 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4463: avg_loss appended (2.7778)\n", - "Epoch 4463: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4463: accuracy appended (83.33%)\n", - "Epoch 4463: model set back to train mode\n", - "Epoch 4463: model parameters saved\n", - "Epoch 4464 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4464: avg_loss appended (2.7778)\n", - "Epoch 4464: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4464: accuracy appended (83.33%)\n", - "Epoch 4464: model set back to train mode\n", - "Epoch 4464: model parameters saved\n", - "Epoch 4465 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4465: avg_loss appended (2.7778)\n", - "Epoch 4465: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4465: accuracy appended (83.33%)\n", - "Epoch 4465: model set back to train mode\n", - "Epoch 4465: model parameters saved\n", - "Epoch 4466 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4466: avg_loss appended (2.7778)\n", - "Epoch 4466: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4466: accuracy appended (83.33%)\n", - "Epoch 4466: model set back to train mode\n", - "Epoch 4466: model parameters saved\n", - "Epoch 4467 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4467: avg_loss appended (2.7778)\n", - "Epoch 4467: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4467: accuracy appended (83.33%)\n", - "Epoch 4467: model set back to train mode\n", - "Epoch 4467: model parameters saved\n", - "Epoch 4468 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4468: avg_loss appended (2.7778)\n", - "Epoch 4468: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4468: accuracy appended (83.33%)\n", - "Epoch 4468: model set back to train mode\n", - "Epoch 4468: model parameters saved\n", - "Epoch 4469 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4469: avg_loss appended (2.7778)\n", - "Epoch 4469: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4469: accuracy appended (83.33%)\n", - "Epoch 4469: model set back to train mode\n", - "Epoch 4469: model parameters saved\n", - "Epoch 4470 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4470: avg_loss appended (2.7778)\n", - "Epoch 4470: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4470: accuracy appended (83.33%)\n", - "Epoch 4470: model set back to train mode\n", - "Epoch 4470: model parameters saved\n", - "Epoch 4471 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4471: avg_loss appended (2.7778)\n", - "Epoch 4471: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4471: accuracy appended (83.33%)\n", - "Epoch 4471: model set back to train mode\n", - "Epoch 4471: model parameters saved\n", - "Epoch 4472 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4472: avg_loss appended (2.7778)\n", - "Epoch 4472: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4472: accuracy appended (83.33%)\n", - "Epoch 4472: model set back to train mode\n", - "Epoch 4472: model parameters saved\n", - "Epoch 4473 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4473: avg_loss appended (2.7778)\n", - "Epoch 4473: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4473: accuracy appended (83.33%)\n", - "Epoch 4473: model set back to train mode\n", - "Epoch 4473: model parameters saved\n", - "Epoch 4474 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4474: avg_loss appended (2.7778)\n", - "Epoch 4474: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4474: accuracy appended (83.33%)\n", - "Epoch 4474: model set back to train mode\n", - "Epoch 4474: model parameters saved\n", - "Epoch 4475 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4475: avg_loss appended (2.7778)\n", - "Epoch 4475: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4475: accuracy appended (83.33%)\n", - "Epoch 4475: model set back to train mode\n", - "Epoch 4475: model parameters saved\n", - "Epoch 4476 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4476: avg_loss appended (2.7778)\n", - "Epoch 4476: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4476: accuracy appended (83.33%)\n", - "Epoch 4476: model set back to train mode\n", - "Epoch 4476: model parameters saved\n", - "Epoch 4477 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4477: avg_loss appended (2.7778)\n", - "Epoch 4477: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4477: accuracy appended (83.33%)\n", - "Epoch 4477: model set back to train mode\n", - "Epoch 4477: model parameters saved\n", - "Epoch 4478 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4478: avg_loss appended (2.7778)\n", - "Epoch 4478: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4478: accuracy appended (83.33%)\n", - "Epoch 4478: model set back to train mode\n", - "Epoch 4478: model parameters saved\n", - "Epoch 4479 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4479: avg_loss appended (2.7778)\n", - "Epoch 4479: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4479: accuracy appended (83.33%)\n", - "Epoch 4479: model set back to train mode\n", - "Epoch 4479: model parameters saved\n", - "Epoch 4480 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4480: avg_loss appended (2.7778)\n", - "Epoch 4480: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4480: accuracy appended (83.33%)\n", - "Epoch 4480: model set back to train mode\n", - "Epoch 4480: model parameters saved\n", - "Epoch 4481 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4481: avg_loss appended (2.7778)\n", - "Epoch 4481: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4481: accuracy appended (83.33%)\n", - "Epoch 4481: model set back to train mode\n", - "Epoch 4481: model parameters saved\n", - "Epoch 4482 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4482: avg_loss appended (2.7778)\n", - "Epoch 4482: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4482: accuracy appended (83.33%)\n", - "Epoch 4482: model set back to train mode\n", - "Epoch 4482: model parameters saved\n", - "Epoch 4483 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4483: avg_loss appended (2.7778)\n", - "Epoch 4483: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4483: accuracy appended (83.33%)\n", - "Epoch 4483: model set back to train mode\n", - "Epoch 4483: model parameters saved\n", - "Epoch 4484 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4484: avg_loss appended (2.7778)\n", - "Epoch 4484: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4484: accuracy appended (83.33%)\n", - "Epoch 4484: model set back to train mode\n", - "Epoch 4484: model parameters saved\n", - "Epoch 4485 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4485: avg_loss appended (2.7778)\n", - "Epoch 4485: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4485: accuracy appended (83.33%)\n", - "Epoch 4485: model set back to train mode\n", - "Epoch 4485: model parameters saved\n", - "Epoch 4486 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4486: avg_loss appended (2.7778)\n", - "Epoch 4486: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4486: accuracy appended (83.33%)\n", - "Epoch 4486: model set back to train mode\n", - "Epoch 4486: model parameters saved\n", - "Epoch 4487 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4487: avg_loss appended (2.7778)\n", - "Epoch 4487: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4487: accuracy appended (83.33%)\n", - "Epoch 4487: model set back to train mode\n", - "Epoch 4487: model parameters saved\n", - "Epoch 4488 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4488: avg_loss appended (2.7778)\n", - "Epoch 4488: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4488: accuracy appended (83.33%)\n", - "Epoch 4488: model set back to train mode\n", - "Epoch 4488: model parameters saved\n", - "Epoch 4489 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4489: avg_loss appended (2.7778)\n", - "Epoch 4489: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4489: accuracy appended (83.33%)\n", - "Epoch 4489: model set back to train mode\n", - "Epoch 4489: model parameters saved\n", - "Epoch 4490 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4490: avg_loss appended (2.7778)\n", - "Epoch 4490: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4490: accuracy appended (83.33%)\n", - "Epoch 4490: model set back to train mode\n", - "Epoch 4490: model parameters saved\n", - "Epoch 4491 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4491: avg_loss appended (2.7778)\n", - "Epoch 4491: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4491: accuracy appended (83.33%)\n", - "Epoch 4491: model set back to train mode\n", - "Epoch 4491: model parameters saved\n", - "Epoch 4492 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4492: avg_loss appended (2.7778)\n", - "Epoch 4492: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4492: accuracy appended (83.33%)\n", - "Epoch 4492: model set back to train mode\n", - "Epoch 4492: model parameters saved\n", - "Epoch 4493 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4493: avg_loss appended (2.7778)\n", - "Epoch 4493: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4493: accuracy appended (83.33%)\n", - "Epoch 4493: model set back to train mode\n", - "Epoch 4493: model parameters saved\n", - "Epoch 4494 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4494: avg_loss appended (2.7778)\n", - "Epoch 4494: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4494: accuracy appended (83.33%)\n", - "Epoch 4494: model set back to train mode\n", - "Epoch 4494: model parameters saved\n", - "Epoch 4495 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4495: avg_loss appended (2.7778)\n", - "Epoch 4495: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4495: accuracy appended (83.33%)\n", - "Epoch 4495: model set back to train mode\n", - "Epoch 4495: model parameters saved\n", - "Epoch 4496 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4496: avg_loss appended (2.7778)\n", - "Epoch 4496: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4496: accuracy appended (83.33%)\n", - "Epoch 4496: model set back to train mode\n", - "Epoch 4496: model parameters saved\n", - "Epoch 4497 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4497: avg_loss appended (2.7778)\n", - "Epoch 4497: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4497: accuracy appended (83.33%)\n", - "Epoch 4497: model set back to train mode\n", - "Epoch 4497: model parameters saved\n", - "Epoch 4498 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4498: avg_loss appended (2.7778)\n", - "Epoch 4498: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4498: accuracy appended (83.33%)\n", - "Epoch 4498: model set back to train mode\n", - "Epoch 4498: model parameters saved\n", - "Epoch 4499 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4499: avg_loss appended (2.7778)\n", - "Epoch 4499: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4499: accuracy appended (83.33%)\n", - "Epoch 4499: model set back to train mode\n", - "Epoch 4499: model parameters saved\n", - "Epoch 4500 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4500: avg_loss appended (2.7778)\n", - "Epoch 4500: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4500: accuracy appended (83.33%)\n", - "Epoch 4500: model set back to train mode\n", - "Epoch 4500: model parameters saved\n", - "Epoch 4500/10000, Loss: 2.7778, Accuracy: 83.33%\n", - "Epoch 4501 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4501: avg_loss appended (2.7778)\n", - "Epoch 4501: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4501: accuracy appended (83.33%)\n", - "Epoch 4501: model set back to train mode\n", - "Epoch 4501: model parameters saved\n", - "Epoch 4502 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4502: avg_loss appended (2.7778)\n", - "Epoch 4502: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4502: accuracy appended (83.33%)\n", - "Epoch 4502: model set back to train mode\n", - "Epoch 4502: model parameters saved\n", - "Epoch 4503 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4503: avg_loss appended (2.7778)\n", - "Epoch 4503: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4503: accuracy appended (83.33%)\n", - "Epoch 4503: model set back to train mode\n", - "Epoch 4503: model parameters saved\n", - "Epoch 4504 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4504: avg_loss appended (2.7778)\n", - "Epoch 4504: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4504: accuracy appended (83.33%)\n", - "Epoch 4504: model set back to train mode\n", - "Epoch 4504: model parameters saved\n", - "Epoch 4505 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4505: avg_loss appended (2.7778)\n", - "Epoch 4505: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4505: accuracy appended (83.33%)\n", - "Epoch 4505: model set back to train mode\n", - "Epoch 4505: model parameters saved\n", - "Epoch 4506 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4506: avg_loss appended (2.7778)\n", - "Epoch 4506: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4506: accuracy appended (83.33%)\n", - "Epoch 4506: model set back to train mode\n", - "Epoch 4506: model parameters saved\n", - "Epoch 4507 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4507: avg_loss appended (2.7778)\n", - "Epoch 4507: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4507: accuracy appended (83.33%)\n", - "Epoch 4507: model set back to train mode\n", - "Epoch 4507: model parameters saved\n", - "Epoch 4508 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4508: avg_loss appended (2.7778)\n", - "Epoch 4508: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4508: accuracy appended (83.33%)\n", - "Epoch 4508: model set back to train mode\n", - "Epoch 4508: model parameters saved\n", - "Epoch 4509 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4509: avg_loss appended (2.7778)\n", - "Epoch 4509: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4509: accuracy appended (83.33%)\n", - "Epoch 4509: model set back to train mode\n", - "Epoch 4509: model parameters saved\n", - "Epoch 4510 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4510: avg_loss appended (2.7778)\n", - "Epoch 4510: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4510: accuracy appended (83.33%)\n", - "Epoch 4510: model set back to train mode\n", - "Epoch 4510: model parameters saved\n", - "Epoch 4511 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4511: avg_loss appended (2.7778)\n", - "Epoch 4511: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4511: accuracy appended (83.33%)\n", - "Epoch 4511: model set back to train mode\n", - "Epoch 4511: model parameters saved\n", - "Epoch 4512 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4512: avg_loss appended (2.7778)\n", - "Epoch 4512: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4512: accuracy appended (83.33%)\n", - "Epoch 4512: model set back to train mode\n", - "Epoch 4512: model parameters saved\n", - "Epoch 4513 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4513: avg_loss appended (2.7778)\n", - "Epoch 4513: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4513: accuracy appended (83.33%)\n", - "Epoch 4513: model set back to train mode\n", - "Epoch 4513: model parameters saved\n", - "Epoch 4514 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4514: avg_loss appended (2.7778)\n", - "Epoch 4514: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4514: accuracy appended (83.33%)\n", - "Epoch 4514: model set back to train mode\n", - "Epoch 4514: model parameters saved\n", - "Epoch 4515 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4515: avg_loss appended (2.7778)\n", - "Epoch 4515: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4515: accuracy appended (83.33%)\n", - "Epoch 4515: model set back to train mode\n", - "Epoch 4515: model parameters saved\n", - "Epoch 4516 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4516: avg_loss appended (2.7778)\n", - "Epoch 4516: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4516: accuracy appended (83.33%)\n", - "Epoch 4516: model set back to train mode\n", - "Epoch 4516: model parameters saved\n", - "Epoch 4517 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4517: avg_loss appended (2.7778)\n", - "Epoch 4517: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4517: accuracy appended (83.33%)\n", - "Epoch 4517: model set back to train mode\n", - "Epoch 4517: model parameters saved\n", - "Epoch 4518 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4518: avg_loss appended (2.7778)\n", - "Epoch 4518: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4518: accuracy appended (83.33%)\n", - "Epoch 4518: model set back to train mode\n", - "Epoch 4518: model parameters saved\n", - "Epoch 4519 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4519: avg_loss appended (2.7778)\n", - "Epoch 4519: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4519: accuracy appended (83.33%)\n", - "Epoch 4519: model set back to train mode\n", - "Epoch 4519: model parameters saved\n", - "Epoch 4520 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4520: avg_loss appended (2.7778)\n", - "Epoch 4520: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4520: accuracy appended (83.33%)\n", - "Epoch 4520: model set back to train mode\n", - "Epoch 4520: model parameters saved\n", - "Epoch 4521 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4521: avg_loss appended (2.7778)\n", - "Epoch 4521: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4521: accuracy appended (83.33%)\n", - "Epoch 4521: model set back to train mode\n", - "Epoch 4521: model parameters saved\n", - "Epoch 4522 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4522: avg_loss appended (2.7778)\n", - "Epoch 4522: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4522: accuracy appended (83.33%)\n", - "Epoch 4522: model set back to train mode\n", - "Epoch 4522: model parameters saved\n", - "Epoch 4523 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4523: avg_loss appended (2.7778)\n", - "Epoch 4523: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4523: accuracy appended (83.33%)\n", - "Epoch 4523: model set back to train mode\n", - "Epoch 4523: model parameters saved\n", - "Epoch 4524 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4524: avg_loss appended (2.7778)\n", - "Epoch 4524: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4524: accuracy appended (83.33%)\n", - "Epoch 4524: model set back to train mode\n", - "Epoch 4524: model parameters saved\n", - "Epoch 4525 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4525: avg_loss appended (2.7778)\n", - "Epoch 4525: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4525: accuracy appended (83.33%)\n", - "Epoch 4525: model set back to train mode\n", - "Epoch 4525: model parameters saved\n", - "Epoch 4526 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4526: avg_loss appended (2.7778)\n", - "Epoch 4526: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4526: accuracy appended (83.33%)\n", - "Epoch 4526: model set back to train mode\n", - "Epoch 4526: model parameters saved\n", - "Epoch 4527 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4527: avg_loss appended (2.7778)\n", - "Epoch 4527: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4527: accuracy appended (83.33%)\n", - "Epoch 4527: model set back to train mode\n", - "Epoch 4527: model parameters saved\n", - "Epoch 4528 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4528: avg_loss appended (2.7778)\n", - "Epoch 4528: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4528: accuracy appended (83.33%)\n", - "Epoch 4528: model set back to train mode\n", - "Epoch 4528: model parameters saved\n", - "Epoch 4529 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4529: avg_loss appended (2.7778)\n", - "Epoch 4529: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4529: accuracy appended (83.33%)\n", - "Epoch 4529: model set back to train mode\n", - "Epoch 4529: model parameters saved\n", - "Epoch 4530 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4530: avg_loss appended (2.7778)\n", - "Epoch 4530: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4530: accuracy appended (83.33%)\n", - "Epoch 4530: model set back to train mode\n", - "Epoch 4530: model parameters saved\n", - "Epoch 4531 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4531: avg_loss appended (2.7778)\n", - "Epoch 4531: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4531: accuracy appended (83.33%)\n", - "Epoch 4531: model set back to train mode\n", - "Epoch 4531: model parameters saved\n", - "Epoch 4532 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4532: avg_loss appended (2.7778)\n", - "Epoch 4532: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4532: accuracy appended (83.33%)\n", - "Epoch 4532: model set back to train mode\n", - "Epoch 4532: model parameters saved\n", - "Epoch 4533 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4533: avg_loss appended (2.7778)\n", - "Epoch 4533: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4533: accuracy appended (83.33%)\n", - "Epoch 4533: model set back to train mode\n", - "Epoch 4533: model parameters saved\n", - "Epoch 4534 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4534: avg_loss appended (2.7778)\n", - "Epoch 4534: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4534: accuracy appended (83.33%)\n", - "Epoch 4534: model set back to train mode\n", - "Epoch 4534: model parameters saved\n", - "Epoch 4535 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4535: avg_loss appended (2.7778)\n", - "Epoch 4535: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4535: accuracy appended (83.33%)\n", - "Epoch 4535: model set back to train mode\n", - "Epoch 4535: model parameters saved\n", - "Epoch 4536 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4536: avg_loss appended (2.7778)\n", - "Epoch 4536: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4536: accuracy appended (83.33%)\n", - "Epoch 4536: model set back to train mode\n", - "Epoch 4536: model parameters saved\n", - "Epoch 4537 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4537: avg_loss appended (2.7778)\n", - "Epoch 4537: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4537: accuracy appended (83.33%)\n", - "Epoch 4537: model set back to train mode\n", - "Epoch 4537: model parameters saved\n", - "Epoch 4538 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4538: avg_loss appended (2.7778)\n", - "Epoch 4538: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4538: accuracy appended (83.33%)\n", - "Epoch 4538: model set back to train mode\n", - "Epoch 4538: model parameters saved\n", - "Epoch 4539 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4539: avg_loss appended (2.7778)\n", - "Epoch 4539: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4539: accuracy appended (83.33%)\n", - "Epoch 4539: model set back to train mode\n", - "Epoch 4539: model parameters saved\n", - "Epoch 4540 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4540: avg_loss appended (2.7778)\n", - "Epoch 4540: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4540: accuracy appended (83.33%)\n", - "Epoch 4540: model set back to train mode\n", - "Epoch 4540: model parameters saved\n", - "Epoch 4541 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4541: avg_loss appended (2.7778)\n", - "Epoch 4541: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4541: accuracy appended (83.33%)\n", - "Epoch 4541: model set back to train mode\n", - "Epoch 4541: model parameters saved\n", - "Epoch 4542 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4542: avg_loss appended (2.7778)\n", - "Epoch 4542: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4542: accuracy appended (83.33%)\n", - "Epoch 4542: model set back to train mode\n", - "Epoch 4542: model parameters saved\n", - "Epoch 4543 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4543: avg_loss appended (2.7778)\n", - "Epoch 4543: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4543: accuracy appended (83.33%)\n", - "Epoch 4543: model set back to train mode\n", - "Epoch 4543: model parameters saved\n", - "Epoch 4544 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4544: avg_loss appended (2.7778)\n", - "Epoch 4544: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4544: accuracy appended (83.33%)\n", - "Epoch 4544: model set back to train mode\n", - "Epoch 4544: model parameters saved\n", - "Epoch 4545 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4545: avg_loss appended (2.7778)\n", - "Epoch 4545: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4545: accuracy appended (83.33%)\n", - "Epoch 4545: model set back to train mode\n", - "Epoch 4545: model parameters saved\n", - "Epoch 4546 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4546: avg_loss appended (2.7778)\n", - "Epoch 4546: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4546: accuracy appended (83.33%)\n", - "Epoch 4546: model set back to train mode\n", - "Epoch 4546: model parameters saved\n", - "Epoch 4547 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4547: avg_loss appended (2.7778)\n", - "Epoch 4547: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4547: accuracy appended (83.33%)\n", - "Epoch 4547: model set back to train mode\n", - "Epoch 4547: model parameters saved\n", - "Epoch 4548 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4548: avg_loss appended (2.7778)\n", - "Epoch 4548: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4548: accuracy appended (83.33%)\n", - "Epoch 4548: model set back to train mode\n", - "Epoch 4548: model parameters saved\n", - "Epoch 4549 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4549: avg_loss appended (2.7778)\n", - "Epoch 4549: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4549: accuracy appended (83.33%)\n", - "Epoch 4549: model set back to train mode\n", - "Epoch 4549: model parameters saved\n", - "Epoch 4550 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4550: avg_loss appended (2.7778)\n", - "Epoch 4550: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4550: accuracy appended (83.33%)\n", - "Epoch 4550: model set back to train mode\n", - "Epoch 4550: model parameters saved\n", - "Epoch 4551 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4551: avg_loss appended (2.7778)\n", - "Epoch 4551: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4551: accuracy appended (83.33%)\n", - "Epoch 4551: model set back to train mode\n", - "Epoch 4551: model parameters saved\n", - "Epoch 4552 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4552: avg_loss appended (2.7778)\n", - "Epoch 4552: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4552: accuracy appended (83.33%)\n", - "Epoch 4552: model set back to train mode\n", - "Epoch 4552: model parameters saved\n", - "Epoch 4553 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4553: avg_loss appended (2.7778)\n", - "Epoch 4553: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4553: accuracy appended (83.33%)\n", - "Epoch 4553: model set back to train mode\n", - "Epoch 4553: model parameters saved\n", - "Epoch 4554 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4554: avg_loss appended (2.7778)\n", - "Epoch 4554: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4554: accuracy appended (83.33%)\n", - "Epoch 4554: model set back to train mode\n", - "Epoch 4554: model parameters saved\n", - "Epoch 4555 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4555: avg_loss appended (2.7778)\n", - "Epoch 4555: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4555: accuracy appended (83.33%)\n", - "Epoch 4555: model set back to train mode\n", - "Epoch 4555: model parameters saved\n", - "Epoch 4556 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4556: avg_loss appended (2.7778)\n", - "Epoch 4556: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4556: accuracy appended (83.33%)\n", - "Epoch 4556: model set back to train mode\n", - "Epoch 4556: model parameters saved\n", - "Epoch 4557 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4557: avg_loss appended (2.7778)\n", - "Epoch 4557: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4557: accuracy appended (83.33%)\n", - "Epoch 4557: model set back to train mode\n", - "Epoch 4557: model parameters saved\n", - "Epoch 4558 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4558: avg_loss appended (2.7778)\n", - "Epoch 4558: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4558: accuracy appended (83.33%)\n", - "Epoch 4558: model set back to train mode\n", - "Epoch 4558: model parameters saved\n", - "Epoch 4559 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4559: avg_loss appended (2.7778)\n", - "Epoch 4559: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4559: accuracy appended (83.33%)\n", - "Epoch 4559: model set back to train mode\n", - "Epoch 4559: model parameters saved\n", - "Epoch 4560 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4560: avg_loss appended (2.7778)\n", - "Epoch 4560: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4560: accuracy appended (83.33%)\n", - "Epoch 4560: model set back to train mode\n", - "Epoch 4560: model parameters saved\n", - "Epoch 4561 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4561: avg_loss appended (2.7778)\n", - "Epoch 4561: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4561: accuracy appended (83.33%)\n", - "Epoch 4561: model set back to train mode\n", - "Epoch 4561: model parameters saved\n", - "Epoch 4562 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4562: avg_loss appended (2.7778)\n", - "Epoch 4562: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4562: accuracy appended (83.33%)\n", - "Epoch 4562: model set back to train mode\n", - "Epoch 4562: model parameters saved\n", - "Epoch 4563 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4563: avg_loss appended (2.7778)\n", - "Epoch 4563: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4563: accuracy appended (83.33%)\n", - "Epoch 4563: model set back to train mode\n", - "Epoch 4563: model parameters saved\n", - "Epoch 4564 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4564: avg_loss appended (2.7778)\n", - "Epoch 4564: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4564: accuracy appended (83.33%)\n", - "Epoch 4564: model set back to train mode\n", - "Epoch 4564: model parameters saved\n", - "Epoch 4565 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4565: avg_loss appended (2.7778)\n", - "Epoch 4565: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4565: accuracy appended (83.33%)\n", - "Epoch 4565: model set back to train mode\n", - "Epoch 4565: model parameters saved\n", - "Epoch 4566 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4566: avg_loss appended (2.7778)\n", - "Epoch 4566: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4566: accuracy appended (83.33%)\n", - "Epoch 4566: model set back to train mode\n", - "Epoch 4566: model parameters saved\n", - "Epoch 4567 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4567: avg_loss appended (2.7778)\n", - "Epoch 4567: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4567: accuracy appended (83.33%)\n", - "Epoch 4567: model set back to train mode\n", - "Epoch 4567: model parameters saved\n", - "Epoch 4568 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4568: avg_loss appended (2.7778)\n", - "Epoch 4568: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4568: accuracy appended (83.33%)\n", - "Epoch 4568: model set back to train mode\n", - "Epoch 4568: model parameters saved\n", - "Epoch 4569 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4569: avg_loss appended (2.7778)\n", - "Epoch 4569: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4569: accuracy appended (83.33%)\n", - "Epoch 4569: model set back to train mode\n", - "Epoch 4569: model parameters saved\n", - "Epoch 4570 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4570: avg_loss appended (2.7778)\n", - "Epoch 4570: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4570: accuracy appended (83.33%)\n", - "Epoch 4570: model set back to train mode\n", - "Epoch 4570: model parameters saved\n", - "Epoch 4571 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4571: avg_loss appended (2.7778)\n", - "Epoch 4571: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4571: accuracy appended (83.33%)\n", - "Epoch 4571: model set back to train mode\n", - "Epoch 4571: model parameters saved\n", - "Epoch 4572 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4572: avg_loss appended (2.7778)\n", - "Epoch 4572: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4572: accuracy appended (83.33%)\n", - "Epoch 4572: model set back to train mode\n", - "Epoch 4572: model parameters saved\n", - "Epoch 4573 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4573: avg_loss appended (2.7778)\n", - "Epoch 4573: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4573: accuracy appended (83.33%)\n", - "Epoch 4573: model set back to train mode\n", - "Epoch 4573: model parameters saved\n", - "Epoch 4574 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4574: avg_loss appended (2.7778)\n", - "Epoch 4574: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4574: accuracy appended (83.33%)\n", - "Epoch 4574: model set back to train mode\n", - "Epoch 4574: model parameters saved\n", - "Epoch 4575 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4575: avg_loss appended (2.7778)\n", - "Epoch 4575: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4575: accuracy appended (83.33%)\n", - "Epoch 4575: model set back to train mode\n", - "Epoch 4575: model parameters saved\n", - "Epoch 4576 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4576: avg_loss appended (2.7778)\n", - "Epoch 4576: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4576: accuracy appended (83.33%)\n", - "Epoch 4576: model set back to train mode\n", - "Epoch 4576: model parameters saved\n", - "Epoch 4577 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4577: avg_loss appended (2.7778)\n", - "Epoch 4577: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4577: accuracy appended (83.33%)\n", - "Epoch 4577: model set back to train mode\n", - "Epoch 4577: model parameters saved\n", - "Epoch 4578 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4578: avg_loss appended (2.7778)\n", - "Epoch 4578: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4578: accuracy appended (83.33%)\n", - "Epoch 4578: model set back to train mode\n", - "Epoch 4578: model parameters saved\n", - "Epoch 4579 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4579: avg_loss appended (2.7778)\n", - "Epoch 4579: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4579: accuracy appended (83.33%)\n", - "Epoch 4579: model set back to train mode\n", - "Epoch 4579: model parameters saved\n", - "Epoch 4580 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4580: avg_loss appended (2.7778)\n", - "Epoch 4580: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4580: accuracy appended (83.33%)\n", - "Epoch 4580: model set back to train mode\n", - "Epoch 4580: model parameters saved\n", - "Epoch 4581 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4581: avg_loss appended (2.7778)\n", - "Epoch 4581: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4581: accuracy appended (83.33%)\n", - "Epoch 4581: model set back to train mode\n", - "Epoch 4581: model parameters saved\n", - "Epoch 4582 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4582: avg_loss appended (2.7778)\n", - "Epoch 4582: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4582: accuracy appended (83.33%)\n", - "Epoch 4582: model set back to train mode\n", - "Epoch 4582: model parameters saved\n", - "Epoch 4583 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4583: avg_loss appended (2.7778)\n", - "Epoch 4583: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4583: accuracy appended (83.33%)\n", - "Epoch 4583: model set back to train mode\n", - "Epoch 4583: model parameters saved\n", - "Epoch 4584 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4584: avg_loss appended (2.7778)\n", - "Epoch 4584: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4584: accuracy appended (83.33%)\n", - "Epoch 4584: model set back to train mode\n", - "Epoch 4584: model parameters saved\n", - "Epoch 4585 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4585: avg_loss appended (2.7778)\n", - "Epoch 4585: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4585: accuracy appended (83.33%)\n", - "Epoch 4585: model set back to train mode\n", - "Epoch 4585: model parameters saved\n", - "Epoch 4586 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4586: avg_loss appended (2.7778)\n", - "Epoch 4586: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4586: accuracy appended (83.33%)\n", - "Epoch 4586: model set back to train mode\n", - "Epoch 4586: model parameters saved\n", - "Epoch 4587 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4587: avg_loss appended (2.7778)\n", - "Epoch 4587: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4587: accuracy appended (83.33%)\n", - "Epoch 4587: model set back to train mode\n", - "Epoch 4587: model parameters saved\n", - "Epoch 4588 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4588: avg_loss appended (2.7778)\n", - "Epoch 4588: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4588: accuracy appended (83.33%)\n", - "Epoch 4588: model set back to train mode\n", - "Epoch 4588: model parameters saved\n", - "Epoch 4589 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4589: avg_loss appended (2.7778)\n", - "Epoch 4589: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4589: accuracy appended (83.33%)\n", - "Epoch 4589: model set back to train mode\n", - "Epoch 4589: model parameters saved\n", - "Epoch 4590 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4590: avg_loss appended (2.7778)\n", - "Epoch 4590: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4590: accuracy appended (83.33%)\n", - "Epoch 4590: model set back to train mode\n", - "Epoch 4590: model parameters saved\n", - "Epoch 4591 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4591: avg_loss appended (2.7778)\n", - "Epoch 4591: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4591: accuracy appended (83.33%)\n", - "Epoch 4591: model set back to train mode\n", - "Epoch 4591: model parameters saved\n", - "Epoch 4592 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4592: avg_loss appended (2.7778)\n", - "Epoch 4592: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4592: accuracy appended (83.33%)\n", - "Epoch 4592: model set back to train mode\n", - "Epoch 4592: model parameters saved\n", - "Epoch 4593 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4593: avg_loss appended (2.7778)\n", - "Epoch 4593: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4593: accuracy appended (83.33%)\n", - "Epoch 4593: model set back to train mode\n", - "Epoch 4593: model parameters saved\n", - "Epoch 4594 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4594: avg_loss appended (2.7778)\n", - "Epoch 4594: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4594: accuracy appended (83.33%)\n", - "Epoch 4594: model set back to train mode\n", - "Epoch 4594: model parameters saved\n", - "Epoch 4595 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4595: avg_loss appended (2.7778)\n", - "Epoch 4595: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4595: accuracy appended (83.33%)\n", - "Epoch 4595: model set back to train mode\n", - "Epoch 4595: model parameters saved\n", - "Epoch 4596 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4596: avg_loss appended (2.7778)\n", - "Epoch 4596: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4596: accuracy appended (83.33%)\n", - "Epoch 4596: model set back to train mode\n", - "Epoch 4596: model parameters saved\n", - "Epoch 4597 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4597: avg_loss appended (2.7778)\n", - "Epoch 4597: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4597: accuracy appended (83.33%)\n", - "Epoch 4597: model set back to train mode\n", - "Epoch 4597: model parameters saved\n", - "Epoch 4598 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4598: avg_loss appended (2.7778)\n", - "Epoch 4598: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4598: accuracy appended (83.33%)\n", - "Epoch 4598: model set back to train mode\n", - "Epoch 4598: model parameters saved\n", - "Epoch 4599 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4599: avg_loss appended (2.7778)\n", - "Epoch 4599: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4599: accuracy appended (83.33%)\n", - "Epoch 4599: model set back to train mode\n", - "Epoch 4599: model parameters saved\n", - "Epoch 4600 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4600: avg_loss appended (2.7778)\n", - "Epoch 4600: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4600: accuracy appended (83.33%)\n", - "Epoch 4600: model set back to train mode\n", - "Epoch 4600: model parameters saved\n", - "Epoch 4600/10000, Loss: 2.7778, Accuracy: 83.33%\n", - "Epoch 4601 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4601: avg_loss appended (2.7778)\n", - "Epoch 4601: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4601: accuracy appended (83.33%)\n", - "Epoch 4601: model set back to train mode\n", - "Epoch 4601: model parameters saved\n", - "Epoch 4602 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4602: avg_loss appended (2.7778)\n", - "Epoch 4602: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4602: accuracy appended (83.33%)\n", - "Epoch 4602: model set back to train mode\n", - "Epoch 4602: model parameters saved\n", - "Epoch 4603 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4603: avg_loss appended (2.7778)\n", - "Epoch 4603: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4603: accuracy appended (83.33%)\n", - "Epoch 4603: model set back to train mode\n", - "Epoch 4603: model parameters saved\n", - "Epoch 4604 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4604: avg_loss appended (2.7778)\n", - "Epoch 4604: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4604: accuracy appended (83.33%)\n", - "Epoch 4604: model set back to train mode\n", - "Epoch 4604: model parameters saved\n", - "Epoch 4605 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4605: avg_loss appended (2.7778)\n", - "Epoch 4605: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4605: accuracy appended (83.33%)\n", - "Epoch 4605: model set back to train mode\n", - "Epoch 4605: model parameters saved\n", - "Epoch 4606 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4606: avg_loss appended (2.7778)\n", - "Epoch 4606: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4606: accuracy appended (83.33%)\n", - "Epoch 4606: model set back to train mode\n", - "Epoch 4606: model parameters saved\n", - "Epoch 4607 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4607: avg_loss appended (2.7778)\n", - "Epoch 4607: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4607: accuracy appended (83.33%)\n", - "Epoch 4607: model set back to train mode\n", - "Epoch 4607: model parameters saved\n", - "Epoch 4608 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4608: avg_loss appended (2.7778)\n", - "Epoch 4608: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4608: accuracy appended (83.33%)\n", - "Epoch 4608: model set back to train mode\n", - "Epoch 4608: model parameters saved\n", - "Epoch 4609 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4609: avg_loss appended (2.7778)\n", - "Epoch 4609: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4609: accuracy appended (83.33%)\n", - "Epoch 4609: model set back to train mode\n", - "Epoch 4609: model parameters saved\n", - "Epoch 4610 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4610: avg_loss appended (2.7778)\n", - "Epoch 4610: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4610: accuracy appended (83.33%)\n", - "Epoch 4610: model set back to train mode\n", - "Epoch 4610: model parameters saved\n", - "Epoch 4611 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4611: avg_loss appended (2.7778)\n", - "Epoch 4611: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4611: accuracy appended (83.33%)\n", - "Epoch 4611: model set back to train mode\n", - "Epoch 4611: model parameters saved\n", - "Epoch 4612 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4612: avg_loss appended (2.7778)\n", - "Epoch 4612: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4612: accuracy appended (83.33%)\n", - "Epoch 4612: model set back to train mode\n", - "Epoch 4612: model parameters saved\n", - "Epoch 4613 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4613: avg_loss appended (2.7778)\n", - "Epoch 4613: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4613: accuracy appended (83.33%)\n", - "Epoch 4613: model set back to train mode\n", - "Epoch 4613: model parameters saved\n", - "Epoch 4614 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4614: avg_loss appended (2.7778)\n", - "Epoch 4614: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4614: accuracy appended (83.33%)\n", - "Epoch 4614: model set back to train mode\n", - "Epoch 4614: model parameters saved\n", - "Epoch 4615 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4615: avg_loss appended (2.7778)\n", - "Epoch 4615: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4615: accuracy appended (83.33%)\n", - "Epoch 4615: model set back to train mode\n", - "Epoch 4615: model parameters saved\n", - "Epoch 4616 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4616: avg_loss appended (2.7778)\n", - "Epoch 4616: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4616: accuracy appended (83.33%)\n", - "Epoch 4616: model set back to train mode\n", - "Epoch 4616: model parameters saved\n", - "Epoch 4617 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4617: avg_loss appended (2.7778)\n", - "Epoch 4617: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4617: accuracy appended (83.33%)\n", - "Epoch 4617: model set back to train mode\n", - "Epoch 4617: model parameters saved\n", - "Epoch 4618 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4618: avg_loss appended (2.7778)\n", - "Epoch 4618: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4618: accuracy appended (83.33%)\n", - "Epoch 4618: model set back to train mode\n", - "Epoch 4618: model parameters saved\n", - "Epoch 4619 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4619: avg_loss appended (2.7778)\n", - "Epoch 4619: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4619: accuracy appended (83.33%)\n", - "Epoch 4619: model set back to train mode\n", - "Epoch 4619: model parameters saved\n", - "Epoch 4620 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4620: avg_loss appended (2.7778)\n", - "Epoch 4620: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4620: accuracy appended (83.33%)\n", - "Epoch 4620: model set back to train mode\n", - "Epoch 4620: model parameters saved\n", - "Epoch 4621 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4621: avg_loss appended (2.7778)\n", - "Epoch 4621: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4621: accuracy appended (83.33%)\n", - "Epoch 4621: model set back to train mode\n", - "Epoch 4621: model parameters saved\n", - "Epoch 4622 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4622: avg_loss appended (2.7778)\n", - "Epoch 4622: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4622: accuracy appended (83.33%)\n", - "Epoch 4622: model set back to train mode\n", - "Epoch 4622: model parameters saved\n", - "Epoch 4623 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4623: avg_loss appended (2.7778)\n", - "Epoch 4623: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4623: accuracy appended (83.33%)\n", - "Epoch 4623: model set back to train mode\n", - "Epoch 4623: model parameters saved\n", - "Epoch 4624 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4624: avg_loss appended (2.7778)\n", - "Epoch 4624: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4624: accuracy appended (83.33%)\n", - "Epoch 4624: model set back to train mode\n", - "Epoch 4624: model parameters saved\n", - "Epoch 4625 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4625: avg_loss appended (2.7778)\n", - "Epoch 4625: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4625: accuracy appended (83.33%)\n", - "Epoch 4625: model set back to train mode\n", - "Epoch 4625: model parameters saved\n", - "Epoch 4626 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4626: avg_loss appended (2.7778)\n", - "Epoch 4626: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4626: accuracy appended (83.33%)\n", - "Epoch 4626: model set back to train mode\n", - "Epoch 4626: model parameters saved\n", - "Epoch 4627 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4627: avg_loss appended (2.7778)\n", - "Epoch 4627: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4627: accuracy appended (83.33%)\n", - "Epoch 4627: model set back to train mode\n", - "Epoch 4627: model parameters saved\n", - "Epoch 4628 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4628: avg_loss appended (2.7778)\n", - "Epoch 4628: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4628: accuracy appended (83.33%)\n", - "Epoch 4628: model set back to train mode\n", - "Epoch 4628: model parameters saved\n", - "Epoch 4629 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4629: avg_loss appended (2.7778)\n", - "Epoch 4629: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4629: accuracy appended (83.33%)\n", - "Epoch 4629: model set back to train mode\n", - "Epoch 4629: model parameters saved\n", - "Epoch 4630 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4630: avg_loss appended (2.7778)\n", - "Epoch 4630: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4630: accuracy appended (83.33%)\n", - "Epoch 4630: model set back to train mode\n", - "Epoch 4630: model parameters saved\n", - "Epoch 4631 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4631: avg_loss appended (2.7778)\n", - "Epoch 4631: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4631: accuracy appended (83.33%)\n", - "Epoch 4631: model set back to train mode\n", - "Epoch 4631: model parameters saved\n", - "Epoch 4632 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4632: avg_loss appended (2.7778)\n", - "Epoch 4632: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4632: accuracy appended (83.33%)\n", - "Epoch 4632: model set back to train mode\n", - "Epoch 4632: model parameters saved\n", - "Epoch 4633 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4633: avg_loss appended (2.7778)\n", - "Epoch 4633: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4633: accuracy appended (83.33%)\n", - "Epoch 4633: model set back to train mode\n", - "Epoch 4633: model parameters saved\n", - "Epoch 4634 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4634: avg_loss appended (2.7778)\n", - "Epoch 4634: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4634: accuracy appended (83.33%)\n", - "Epoch 4634: model set back to train mode\n", - "Epoch 4634: model parameters saved\n", - "Epoch 4635 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4635: avg_loss appended (2.7778)\n", - "Epoch 4635: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4635: accuracy appended (83.33%)\n", - "Epoch 4635: model set back to train mode\n", - "Epoch 4635: model parameters saved\n", - "Epoch 4636 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4636: avg_loss appended (2.7778)\n", - "Epoch 4636: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4636: accuracy appended (83.33%)\n", - "Epoch 4636: model set back to train mode\n", - "Epoch 4636: model parameters saved\n", - "Epoch 4637 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4637: avg_loss appended (2.7778)\n", - "Epoch 4637: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4637: accuracy appended (83.33%)\n", - "Epoch 4637: model set back to train mode\n", - "Epoch 4637: model parameters saved\n", - "Epoch 4638 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4638: avg_loss appended (2.7778)\n", - "Epoch 4638: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4638: accuracy appended (83.33%)\n", - "Epoch 4638: model set back to train mode\n", - "Epoch 4638: model parameters saved\n", - "Epoch 4639 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4639: avg_loss appended (2.7778)\n", - "Epoch 4639: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4639: accuracy appended (83.33%)\n", - "Epoch 4639: model set back to train mode\n", - "Epoch 4639: model parameters saved\n", - "Epoch 4640 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4640: avg_loss appended (2.7778)\n", - "Epoch 4640: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4640: accuracy appended (83.33%)\n", - "Epoch 4640: model set back to train mode\n", - "Epoch 4640: model parameters saved\n", - "Epoch 4641 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4641: avg_loss appended (2.7778)\n", - "Epoch 4641: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4641: accuracy appended (83.33%)\n", - "Epoch 4641: model set back to train mode\n", - "Epoch 4641: model parameters saved\n", - "Epoch 4642 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4642: avg_loss appended (2.7778)\n", - "Epoch 4642: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4642: accuracy appended (83.33%)\n", - "Epoch 4642: model set back to train mode\n", - "Epoch 4642: model parameters saved\n", - "Epoch 4643 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4643: avg_loss appended (2.7778)\n", - "Epoch 4643: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4643: accuracy appended (83.33%)\n", - "Epoch 4643: model set back to train mode\n", - "Epoch 4643: model parameters saved\n", - "Epoch 4644 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4644: avg_loss appended (2.7778)\n", - "Epoch 4644: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4644: accuracy appended (83.33%)\n", - "Epoch 4644: model set back to train mode\n", - "Epoch 4644: model parameters saved\n", - "Epoch 4645 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4645: avg_loss appended (2.7778)\n", - "Epoch 4645: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4645: accuracy appended (83.33%)\n", - "Epoch 4645: model set back to train mode\n", - "Epoch 4645: model parameters saved\n", - "Epoch 4646 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4646: avg_loss appended (2.7778)\n", - "Epoch 4646: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4646: accuracy appended (83.33%)\n", - "Epoch 4646: model set back to train mode\n", - "Epoch 4646: model parameters saved\n", - "Epoch 4647 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4647: avg_loss appended (2.7778)\n", - "Epoch 4647: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4647: accuracy appended (83.33%)\n", - "Epoch 4647: model set back to train mode\n", - "Epoch 4647: model parameters saved\n", - "Epoch 4648 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4648: avg_loss appended (2.7778)\n", - "Epoch 4648: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4648: accuracy appended (83.33%)\n", - "Epoch 4648: model set back to train mode\n", - "Epoch 4648: model parameters saved\n", - "Epoch 4649 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4649: avg_loss appended (2.7778)\n", - "Epoch 4649: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4649: accuracy appended (83.33%)\n", - "Epoch 4649: model set back to train mode\n", - "Epoch 4649: model parameters saved\n", - "Epoch 4650 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4650: avg_loss appended (2.7778)\n", - "Epoch 4650: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4650: accuracy appended (83.33%)\n", - "Epoch 4650: model set back to train mode\n", - "Epoch 4650: model parameters saved\n", - "Epoch 4651 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4651: avg_loss appended (2.7778)\n", - "Epoch 4651: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4651: accuracy appended (83.33%)\n", - "Epoch 4651: model set back to train mode\n", - "Epoch 4651: model parameters saved\n", - "Epoch 4652 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4652: avg_loss appended (2.7778)\n", - "Epoch 4652: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4652: accuracy appended (83.33%)\n", - "Epoch 4652: model set back to train mode\n", - "Epoch 4652: model parameters saved\n", - "Epoch 4653 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4653: avg_loss appended (2.7778)\n", - "Epoch 4653: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4653: accuracy appended (83.33%)\n", - "Epoch 4653: model set back to train mode\n", - "Epoch 4653: model parameters saved\n", - "Epoch 4654 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4654: avg_loss appended (2.7778)\n", - "Epoch 4654: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4654: accuracy appended (83.33%)\n", - "Epoch 4654: model set back to train mode\n", - "Epoch 4654: model parameters saved\n", - "Epoch 4655 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4655: avg_loss appended (2.7778)\n", - "Epoch 4655: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4655: accuracy appended (83.33%)\n", - "Epoch 4655: model set back to train mode\n", - "Epoch 4655: model parameters saved\n", - "Epoch 4656 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4656: avg_loss appended (2.7778)\n", - "Epoch 4656: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4656: accuracy appended (83.33%)\n", - "Epoch 4656: model set back to train mode\n", - "Epoch 4656: model parameters saved\n", - "Epoch 4657 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4657: avg_loss appended (2.7778)\n", - "Epoch 4657: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4657: accuracy appended (83.33%)\n", - "Epoch 4657: model set back to train mode\n", - "Epoch 4657: model parameters saved\n", - "Epoch 4658 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4658: avg_loss appended (2.7778)\n", - "Epoch 4658: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4658: accuracy appended (83.33%)\n", - "Epoch 4658: model set back to train mode\n", - "Epoch 4658: model parameters saved\n", - "Epoch 4659 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4659: avg_loss appended (2.7778)\n", - "Epoch 4659: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4659: accuracy appended (83.33%)\n", - "Epoch 4659: model set back to train mode\n", - "Epoch 4659: model parameters saved\n", - "Epoch 4660 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4660: avg_loss appended (2.7778)\n", - "Epoch 4660: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4660: accuracy appended (83.33%)\n", - "Epoch 4660: model set back to train mode\n", - "Epoch 4660: model parameters saved\n", - "Epoch 4661 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4661: avg_loss appended (2.7778)\n", - "Epoch 4661: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4661: accuracy appended (83.33%)\n", - "Epoch 4661: model set back to train mode\n", - "Epoch 4661: model parameters saved\n", - "Epoch 4662 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4662: avg_loss appended (2.7778)\n", - "Epoch 4662: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4662: accuracy appended (83.33%)\n", - "Epoch 4662: model set back to train mode\n", - "Epoch 4662: model parameters saved\n", - "Epoch 4663 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4663: avg_loss appended (2.7778)\n", - "Epoch 4663: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4663: accuracy appended (83.33%)\n", - "Epoch 4663: model set back to train mode\n", - "Epoch 4663: model parameters saved\n", - "Epoch 4664 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4664: avg_loss appended (2.7778)\n", - "Epoch 4664: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4664: accuracy appended (83.33%)\n", - "Epoch 4664: model set back to train mode\n", - "Epoch 4664: model parameters saved\n", - "Epoch 4665 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4665: avg_loss appended (2.7778)\n", - "Epoch 4665: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4665: accuracy appended (83.33%)\n", - "Epoch 4665: model set back to train mode\n", - "Epoch 4665: model parameters saved\n", - "Epoch 4666 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4666: avg_loss appended (2.7778)\n", - "Epoch 4666: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4666: accuracy appended (83.33%)\n", - "Epoch 4666: model set back to train mode\n", - "Epoch 4666: model parameters saved\n", - "Epoch 4667 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4667: avg_loss appended (2.7778)\n", - "Epoch 4667: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4667: accuracy appended (83.33%)\n", - "Epoch 4667: model set back to train mode\n", - "Epoch 4667: model parameters saved\n", - "Epoch 4668 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4668: avg_loss appended (2.7778)\n", - "Epoch 4668: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4668: accuracy appended (83.33%)\n", - "Epoch 4668: model set back to train mode\n", - "Epoch 4668: model parameters saved\n", - "Epoch 4669 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4669: avg_loss appended (2.7778)\n", - "Epoch 4669: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4669: accuracy appended (83.33%)\n", - "Epoch 4669: model set back to train mode\n", - "Epoch 4669: model parameters saved\n", - "Epoch 4670 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4670: avg_loss appended (2.7778)\n", - "Epoch 4670: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4670: accuracy appended (83.33%)\n", - "Epoch 4670: model set back to train mode\n", - "Epoch 4670: model parameters saved\n", - "Epoch 4671 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4671: avg_loss appended (2.7778)\n", - "Epoch 4671: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4671: accuracy appended (83.33%)\n", - "Epoch 4671: model set back to train mode\n", - "Epoch 4671: model parameters saved\n", - "Epoch 4672 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4672: avg_loss appended (2.7778)\n", - "Epoch 4672: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4672: accuracy appended (83.33%)\n", - "Epoch 4672: model set back to train mode\n", - "Epoch 4672: model parameters saved\n", - "Epoch 4673 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4673: avg_loss appended (2.7778)\n", - "Epoch 4673: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4673: accuracy appended (83.33%)\n", - "Epoch 4673: model set back to train mode\n", - "Epoch 4673: model parameters saved\n", - "Epoch 4674 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4674: avg_loss appended (2.7778)\n", - "Epoch 4674: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4674: accuracy appended (83.33%)\n", - "Epoch 4674: model set back to train mode\n", - "Epoch 4674: model parameters saved\n", - "Epoch 4675 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4675: avg_loss appended (2.7778)\n", - "Epoch 4675: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4675: accuracy appended (83.33%)\n", - "Epoch 4675: model set back to train mode\n", - "Epoch 4675: model parameters saved\n", - "Epoch 4676 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4676: avg_loss appended (2.7778)\n", - "Epoch 4676: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4676: accuracy appended (83.33%)\n", - "Epoch 4676: model set back to train mode\n", - "Epoch 4676: model parameters saved\n", - "Epoch 4677 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4677: avg_loss appended (2.7778)\n", - "Epoch 4677: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4677: accuracy appended (83.33%)\n", - "Epoch 4677: model set back to train mode\n", - "Epoch 4677: model parameters saved\n", - "Epoch 4678 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4678: avg_loss appended (2.7778)\n", - "Epoch 4678: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4678: accuracy appended (83.33%)\n", - "Epoch 4678: model set back to train mode\n", - "Epoch 4678: model parameters saved\n", - "Epoch 4679 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4679: avg_loss appended (2.7778)\n", - "Epoch 4679: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4679: accuracy appended (83.33%)\n", - "Epoch 4679: model set back to train mode\n", - "Epoch 4679: model parameters saved\n", - "Epoch 4680 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4680: avg_loss appended (2.7778)\n", - "Epoch 4680: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4680: accuracy appended (83.33%)\n", - "Epoch 4680: model set back to train mode\n", - "Epoch 4680: model parameters saved\n", - "Epoch 4681 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4681: avg_loss appended (2.7778)\n", - "Epoch 4681: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4681: accuracy appended (83.33%)\n", - "Epoch 4681: model set back to train mode\n", - "Epoch 4681: model parameters saved\n", - "Epoch 4682 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4682: avg_loss appended (2.7778)\n", - "Epoch 4682: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4682: accuracy appended (83.33%)\n", - "Epoch 4682: model set back to train mode\n", - "Epoch 4682: model parameters saved\n", - "Epoch 4683 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4683: avg_loss appended (2.7778)\n", - "Epoch 4683: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4683: accuracy appended (83.33%)\n", - "Epoch 4683: model set back to train mode\n", - "Epoch 4683: model parameters saved\n", - "Epoch 4684 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4684: avg_loss appended (2.7778)\n", - "Epoch 4684: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4684: accuracy appended (83.33%)\n", - "Epoch 4684: model set back to train mode\n", - "Epoch 4684: model parameters saved\n", - "Epoch 4685 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4685: avg_loss appended (2.7778)\n", - "Epoch 4685: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4685: accuracy appended (83.33%)\n", - "Epoch 4685: model set back to train mode\n", - "Epoch 4685: model parameters saved\n", - "Epoch 4686 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4686: avg_loss appended (2.7778)\n", - "Epoch 4686: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4686: accuracy appended (83.33%)\n", - "Epoch 4686: model set back to train mode\n", - "Epoch 4686: model parameters saved\n", - "Epoch 4687 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4687: avg_loss appended (2.7778)\n", - "Epoch 4687: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4687: accuracy appended (83.33%)\n", - "Epoch 4687: model set back to train mode\n", - "Epoch 4687: model parameters saved\n", - "Epoch 4688 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4688: avg_loss appended (2.7778)\n", - "Epoch 4688: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4688: accuracy appended (83.33%)\n", - "Epoch 4688: model set back to train mode\n", - "Epoch 4688: model parameters saved\n", - "Epoch 4689 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4689: avg_loss appended (2.7778)\n", - "Epoch 4689: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4689: accuracy appended (83.33%)\n", - "Epoch 4689: model set back to train mode\n", - "Epoch 4689: model parameters saved\n", - "Epoch 4690 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4690: avg_loss appended (2.7778)\n", - "Epoch 4690: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4690: accuracy appended (83.33%)\n", - "Epoch 4690: model set back to train mode\n", - "Epoch 4690: model parameters saved\n", - "Epoch 4691 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4691: avg_loss appended (2.7778)\n", - "Epoch 4691: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4691: accuracy appended (83.33%)\n", - "Epoch 4691: model set back to train mode\n", - "Epoch 4691: model parameters saved\n", - "Epoch 4692 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4692: avg_loss appended (2.7778)\n", - "Epoch 4692: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4692: accuracy appended (83.33%)\n", - "Epoch 4692: model set back to train mode\n", - "Epoch 4692: model parameters saved\n", - "Epoch 4693 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4693: avg_loss appended (2.7778)\n", - "Epoch 4693: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4693: accuracy appended (83.33%)\n", - "Epoch 4693: model set back to train mode\n", - "Epoch 4693: model parameters saved\n", - "Epoch 4694 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4694: avg_loss appended (2.7778)\n", - "Epoch 4694: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4694: accuracy appended (83.33%)\n", - "Epoch 4694: model set back to train mode\n", - "Epoch 4694: model parameters saved\n", - "Epoch 4695 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4695: avg_loss appended (2.7778)\n", - "Epoch 4695: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4695: accuracy appended (83.33%)\n", - "Epoch 4695: model set back to train mode\n", - "Epoch 4695: model parameters saved\n", - "Epoch 4696 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4696: avg_loss appended (2.7778)\n", - "Epoch 4696: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4696: accuracy appended (83.33%)\n", - "Epoch 4696: model set back to train mode\n", - "Epoch 4696: model parameters saved\n", - "Epoch 4697 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4697: avg_loss appended (2.7778)\n", - "Epoch 4697: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4697: accuracy appended (83.33%)\n", - "Epoch 4697: model set back to train mode\n", - "Epoch 4697: model parameters saved\n", - "Epoch 4698 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4698: avg_loss appended (2.7778)\n", - "Epoch 4698: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4698: accuracy appended (83.33%)\n", - "Epoch 4698: model set back to train mode\n", - "Epoch 4698: model parameters saved\n", - "Epoch 4699 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4699: avg_loss appended (2.7778)\n", - "Epoch 4699: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4699: accuracy appended (83.33%)\n", - "Epoch 4699: model set back to train mode\n", - "Epoch 4699: model parameters saved\n", - "Epoch 4700 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4700: avg_loss appended (2.7778)\n", - "Epoch 4700: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4700: accuracy appended (83.33%)\n", - "Epoch 4700: model set back to train mode\n", - "Epoch 4700: model parameters saved\n", - "Epoch 4700/10000, Loss: 2.7778, Accuracy: 83.33%\n", - "Epoch 4701 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4701: avg_loss appended (2.7778)\n", - "Epoch 4701: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4701: accuracy appended (83.33%)\n", - "Epoch 4701: model set back to train mode\n", - "Epoch 4701: model parameters saved\n", - "Epoch 4702 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4702: avg_loss appended (2.7778)\n", - "Epoch 4702: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4702: accuracy appended (83.33%)\n", - "Epoch 4702: model set back to train mode\n", - "Epoch 4702: model parameters saved\n", - "Epoch 4703 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4703: avg_loss appended (2.7778)\n", - "Epoch 4703: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4703: accuracy appended (83.33%)\n", - "Epoch 4703: model set back to train mode\n", - "Epoch 4703: model parameters saved\n", - "Epoch 4704 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4704: avg_loss appended (2.7778)\n", - "Epoch 4704: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4704: accuracy appended (83.33%)\n", - "Epoch 4704: model set back to train mode\n", - "Epoch 4704: model parameters saved\n", - "Epoch 4705 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4705: avg_loss appended (2.7778)\n", - "Epoch 4705: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4705: accuracy appended (83.33%)\n", - "Epoch 4705: model set back to train mode\n", - "Epoch 4705: model parameters saved\n", - "Epoch 4706 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4706: avg_loss appended (2.7778)\n", - "Epoch 4706: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4706: accuracy appended (83.33%)\n", - "Epoch 4706: model set back to train mode\n", - "Epoch 4706: model parameters saved\n", - "Epoch 4707 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4707: avg_loss appended (2.7778)\n", - "Epoch 4707: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4707: accuracy appended (83.33%)\n", - "Epoch 4707: model set back to train mode\n", - "Epoch 4707: model parameters saved\n", - "Epoch 4708 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4708: avg_loss appended (2.7778)\n", - "Epoch 4708: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4708: accuracy appended (83.33%)\n", - "Epoch 4708: model set back to train mode\n", - "Epoch 4708: model parameters saved\n", - "Epoch 4709 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4709: avg_loss appended (2.7778)\n", - "Epoch 4709: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4709: accuracy appended (83.33%)\n", - "Epoch 4709: model set back to train mode\n", - "Epoch 4709: model parameters saved\n", - "Epoch 4710 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4710: avg_loss appended (2.7778)\n", - "Epoch 4710: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4710: accuracy appended (83.33%)\n", - "Epoch 4710: model set back to train mode\n", - "Epoch 4710: model parameters saved\n", - "Epoch 4711 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4711: avg_loss appended (2.7778)\n", - "Epoch 4711: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4711: accuracy appended (83.33%)\n", - "Epoch 4711: model set back to train mode\n", - "Epoch 4711: model parameters saved\n", - "Epoch 4712 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4712: avg_loss appended (2.7778)\n", - "Epoch 4712: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4712: accuracy appended (83.33%)\n", - "Epoch 4712: model set back to train mode\n", - "Epoch 4712: model parameters saved\n", - "Epoch 4713 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4713: avg_loss appended (2.7778)\n", - "Epoch 4713: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4713: accuracy appended (83.33%)\n", - "Epoch 4713: model set back to train mode\n", - "Epoch 4713: model parameters saved\n", - "Epoch 4714 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4714: avg_loss appended (2.7778)\n", - "Epoch 4714: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4714: accuracy appended (83.33%)\n", - "Epoch 4714: model set back to train mode\n", - "Epoch 4714: model parameters saved\n", - "Epoch 4715 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4715: avg_loss appended (2.7778)\n", - "Epoch 4715: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4715: accuracy appended (83.33%)\n", - "Epoch 4715: model set back to train mode\n", - "Epoch 4715: model parameters saved\n", - "Epoch 4716 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4716: avg_loss appended (2.7778)\n", - "Epoch 4716: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4716: accuracy appended (83.33%)\n", - "Epoch 4716: model set back to train mode\n", - "Epoch 4716: model parameters saved\n", - "Epoch 4717 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4717: avg_loss appended (2.7778)\n", - "Epoch 4717: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4717: accuracy appended (83.33%)\n", - "Epoch 4717: model set back to train mode\n", - "Epoch 4717: model parameters saved\n", - "Epoch 4718 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4718: avg_loss appended (2.7778)\n", - "Epoch 4718: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4718: accuracy appended (83.33%)\n", - "Epoch 4718: model set back to train mode\n", - "Epoch 4718: model parameters saved\n", - "Epoch 4719 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4719: avg_loss appended (2.7778)\n", - "Epoch 4719: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4719: accuracy appended (83.33%)\n", - "Epoch 4719: model set back to train mode\n", - "Epoch 4719: model parameters saved\n", - "Epoch 4720 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4720: avg_loss appended (2.7778)\n", - "Epoch 4720: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4720: accuracy appended (83.33%)\n", - "Epoch 4720: model set back to train mode\n", - "Epoch 4720: model parameters saved\n", - "Epoch 4721 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4721: avg_loss appended (2.7778)\n", - "Epoch 4721: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4721: accuracy appended (83.33%)\n", - "Epoch 4721: model set back to train mode\n", - "Epoch 4721: model parameters saved\n", - "Epoch 4722 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4722: avg_loss appended (2.7778)\n", - "Epoch 4722: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4722: accuracy appended (83.33%)\n", - "Epoch 4722: model set back to train mode\n", - "Epoch 4722: model parameters saved\n", - "Epoch 4723 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4723: avg_loss appended (2.7778)\n", - "Epoch 4723: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4723: accuracy appended (83.33%)\n", - "Epoch 4723: model set back to train mode\n", - "Epoch 4723: model parameters saved\n", - "Epoch 4724 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4724: avg_loss appended (2.7778)\n", - "Epoch 4724: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4724: accuracy appended (83.33%)\n", - "Epoch 4724: model set back to train mode\n", - "Epoch 4724: model parameters saved\n", - "Epoch 4725 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4725: avg_loss appended (2.7778)\n", - "Epoch 4725: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4725: accuracy appended (83.33%)\n", - "Epoch 4725: model set back to train mode\n", - "Epoch 4725: model parameters saved\n", - "Epoch 4726 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4726: avg_loss appended (2.7778)\n", - "Epoch 4726: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4726: accuracy appended (83.33%)\n", - "Epoch 4726: model set back to train mode\n", - "Epoch 4726: model parameters saved\n", - "Epoch 4727 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4727: avg_loss appended (2.7778)\n", - "Epoch 4727: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4727: accuracy appended (83.33%)\n", - "Epoch 4727: model set back to train mode\n", - "Epoch 4727: model parameters saved\n", - "Epoch 4728 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4728: avg_loss appended (2.7778)\n", - "Epoch 4728: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4728: accuracy appended (83.33%)\n", - "Epoch 4728: model set back to train mode\n", - "Epoch 4728: model parameters saved\n", - "Epoch 4729 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4729: avg_loss appended (2.7778)\n", - "Epoch 4729: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4729: accuracy appended (83.33%)\n", - "Epoch 4729: model set back to train mode\n", - "Epoch 4729: model parameters saved\n", - "Epoch 4730 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4730: avg_loss appended (2.7778)\n", - "Epoch 4730: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4730: accuracy appended (83.33%)\n", - "Epoch 4730: model set back to train mode\n", - "Epoch 4730: model parameters saved\n", - "Epoch 4731 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4731: avg_loss appended (2.7778)\n", - "Epoch 4731: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4731: accuracy appended (83.33%)\n", - "Epoch 4731: model set back to train mode\n", - "Epoch 4731: model parameters saved\n", - "Epoch 4732 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4732: avg_loss appended (2.7778)\n", - "Epoch 4732: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4732: accuracy appended (83.33%)\n", - "Epoch 4732: model set back to train mode\n", - "Epoch 4732: model parameters saved\n", - "Epoch 4733 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4733: avg_loss appended (2.7778)\n", - "Epoch 4733: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4733: accuracy appended (83.33%)\n", - "Epoch 4733: model set back to train mode\n", - "Epoch 4733: model parameters saved\n", - "Epoch 4734 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4734: avg_loss appended (2.7778)\n", - "Epoch 4734: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4734: accuracy appended (83.33%)\n", - "Epoch 4734: model set back to train mode\n", - "Epoch 4734: model parameters saved\n", - "Epoch 4735 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4735: avg_loss appended (2.7778)\n", - "Epoch 4735: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4735: accuracy appended (83.33%)\n", - "Epoch 4735: model set back to train mode\n", - "Epoch 4735: model parameters saved\n", - "Epoch 4736 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4736: avg_loss appended (2.7778)\n", - "Epoch 4736: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4736: accuracy appended (83.33%)\n", - "Epoch 4736: model set back to train mode\n", - "Epoch 4736: model parameters saved\n", - "Epoch 4737 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4737: avg_loss appended (2.7778)\n", - "Epoch 4737: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4737: accuracy appended (83.33%)\n", - "Epoch 4737: model set back to train mode\n", - "Epoch 4737: model parameters saved\n", - "Epoch 4738 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4738: avg_loss appended (2.7778)\n", - "Epoch 4738: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4738: accuracy appended (83.33%)\n", - "Epoch 4738: model set back to train mode\n", - "Epoch 4738: model parameters saved\n", - "Epoch 4739 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4739: avg_loss appended (2.7778)\n", - "Epoch 4739: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4739: accuracy appended (83.33%)\n", - "Epoch 4739: model set back to train mode\n", - "Epoch 4739: model parameters saved\n", - "Epoch 4740 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4740: avg_loss appended (2.7778)\n", - "Epoch 4740: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4740: accuracy appended (83.33%)\n", - "Epoch 4740: model set back to train mode\n", - "Epoch 4740: model parameters saved\n", - "Epoch 4741 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4741: avg_loss appended (2.7778)\n", - "Epoch 4741: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4741: accuracy appended (83.33%)\n", - "Epoch 4741: model set back to train mode\n", - "Epoch 4741: model parameters saved\n", - "Epoch 4742 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4742: avg_loss appended (2.7778)\n", - "Epoch 4742: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4742: accuracy appended (83.33%)\n", - "Epoch 4742: model set back to train mode\n", - "Epoch 4742: model parameters saved\n", - "Epoch 4743 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4743: avg_loss appended (2.7778)\n", - "Epoch 4743: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4743: accuracy appended (83.33%)\n", - "Epoch 4743: model set back to train mode\n", - "Epoch 4743: model parameters saved\n", - "Epoch 4744 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4744: avg_loss appended (2.7778)\n", - "Epoch 4744: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4744: accuracy appended (83.33%)\n", - "Epoch 4744: model set back to train mode\n", - "Epoch 4744: model parameters saved\n", - "Epoch 4745 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4745: avg_loss appended (2.7778)\n", - "Epoch 4745: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4745: accuracy appended (83.33%)\n", - "Epoch 4745: model set back to train mode\n", - "Epoch 4745: model parameters saved\n", - "Epoch 4746 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4746: avg_loss appended (2.7778)\n", - "Epoch 4746: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4746: accuracy appended (83.33%)\n", - "Epoch 4746: model set back to train mode\n", - "Epoch 4746: model parameters saved\n", - "Epoch 4747 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4747: avg_loss appended (2.7778)\n", - "Epoch 4747: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4747: accuracy appended (83.33%)\n", - "Epoch 4747: model set back to train mode\n", - "Epoch 4747: model parameters saved\n", - "Epoch 4748 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4748: avg_loss appended (2.7778)\n", - "Epoch 4748: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4748: accuracy appended (83.33%)\n", - "Epoch 4748: model set back to train mode\n", - "Epoch 4748: model parameters saved\n", - "Epoch 4749 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4749: avg_loss appended (2.7778)\n", - "Epoch 4749: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4749: accuracy appended (83.33%)\n", - "Epoch 4749: model set back to train mode\n", - "Epoch 4749: model parameters saved\n", - "Epoch 4750 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4750: avg_loss appended (2.7778)\n", - "Epoch 4750: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4750: accuracy appended (83.33%)\n", - "Epoch 4750: model set back to train mode\n", - "Epoch 4750: model parameters saved\n", - "Epoch 4751 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4751: avg_loss appended (2.7778)\n", - "Epoch 4751: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4751: accuracy appended (83.33%)\n", - "Epoch 4751: model set back to train mode\n", - "Epoch 4751: model parameters saved\n", - "Epoch 4752 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4752: avg_loss appended (2.7778)\n", - "Epoch 4752: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4752: accuracy appended (83.33%)\n", - "Epoch 4752: model set back to train mode\n", - "Epoch 4752: model parameters saved\n", - "Epoch 4753 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4753: avg_loss appended (2.7778)\n", - "Epoch 4753: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4753: accuracy appended (83.33%)\n", - "Epoch 4753: model set back to train mode\n", - "Epoch 4753: model parameters saved\n", - "Epoch 4754 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4754: avg_loss appended (2.7778)\n", - "Epoch 4754: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4754: accuracy appended (83.33%)\n", - "Epoch 4754: model set back to train mode\n", - "Epoch 4754: model parameters saved\n", - "Epoch 4755 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4755: avg_loss appended (2.7778)\n", - "Epoch 4755: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4755: accuracy appended (83.33%)\n", - "Epoch 4755: model set back to train mode\n", - "Epoch 4755: model parameters saved\n", - "Epoch 4756 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4756: avg_loss appended (2.7778)\n", - "Epoch 4756: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4756: accuracy appended (83.33%)\n", - "Epoch 4756: model set back to train mode\n", - "Epoch 4756: model parameters saved\n", - "Epoch 4757 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4757: avg_loss appended (2.7778)\n", - "Epoch 4757: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4757: accuracy appended (83.33%)\n", - "Epoch 4757: model set back to train mode\n", - "Epoch 4757: model parameters saved\n", - "Epoch 4758 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4758: avg_loss appended (2.7778)\n", - "Epoch 4758: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4758: accuracy appended (83.33%)\n", - "Epoch 4758: model set back to train mode\n", - "Epoch 4758: model parameters saved\n", - "Epoch 4759 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4759: avg_loss appended (2.7778)\n", - "Epoch 4759: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4759: accuracy appended (83.33%)\n", - "Epoch 4759: model set back to train mode\n", - "Epoch 4759: model parameters saved\n", - "Epoch 4760 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4760: avg_loss appended (2.7778)\n", - "Epoch 4760: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4760: accuracy appended (83.33%)\n", - "Epoch 4760: model set back to train mode\n", - "Epoch 4760: model parameters saved\n", - "Epoch 4761 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4761: avg_loss appended (2.7778)\n", - "Epoch 4761: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4761: accuracy appended (83.33%)\n", - "Epoch 4761: model set back to train mode\n", - "Epoch 4761: model parameters saved\n", - "Epoch 4762 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4762: avg_loss appended (2.7778)\n", - "Epoch 4762: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4762: accuracy appended (83.33%)\n", - "Epoch 4762: model set back to train mode\n", - "Epoch 4762: model parameters saved\n", - "Epoch 4763 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4763: avg_loss appended (2.7778)\n", - "Epoch 4763: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4763: accuracy appended (83.33%)\n", - "Epoch 4763: model set back to train mode\n", - "Epoch 4763: model parameters saved\n", - "Epoch 4764 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4764: avg_loss appended (2.7778)\n", - "Epoch 4764: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4764: accuracy appended (83.33%)\n", - "Epoch 4764: model set back to train mode\n", - "Epoch 4764: model parameters saved\n", - "Epoch 4765 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4765: avg_loss appended (2.7778)\n", - "Epoch 4765: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4765: accuracy appended (83.33%)\n", - "Epoch 4765: model set back to train mode\n", - "Epoch 4765: model parameters saved\n", - "Epoch 4766 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4766: avg_loss appended (2.7778)\n", - "Epoch 4766: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4766: accuracy appended (83.33%)\n", - "Epoch 4766: model set back to train mode\n", - "Epoch 4766: model parameters saved\n", - "Epoch 4767 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4767: avg_loss appended (2.7778)\n", - "Epoch 4767: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4767: accuracy appended (83.33%)\n", - "Epoch 4767: model set back to train mode\n", - "Epoch 4767: model parameters saved\n", - "Epoch 4768 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4768: avg_loss appended (2.7778)\n", - "Epoch 4768: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4768: accuracy appended (83.33%)\n", - "Epoch 4768: model set back to train mode\n", - "Epoch 4768: model parameters saved\n", - "Epoch 4769 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4769: avg_loss appended (2.7778)\n", - "Epoch 4769: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4769: accuracy appended (83.33%)\n", - "Epoch 4769: model set back to train mode\n", - "Epoch 4769: model parameters saved\n", - "Epoch 4770 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4770: avg_loss appended (2.7778)\n", - "Epoch 4770: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4770: accuracy appended (83.33%)\n", - "Epoch 4770: model set back to train mode\n", - "Epoch 4770: model parameters saved\n", - "Epoch 4771 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4771: avg_loss appended (2.7778)\n", - "Epoch 4771: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4771: accuracy appended (83.33%)\n", - "Epoch 4771: model set back to train mode\n", - "Epoch 4771: model parameters saved\n", - "Epoch 4772 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4772: avg_loss appended (2.7778)\n", - "Epoch 4772: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4772: accuracy appended (83.33%)\n", - "Epoch 4772: model set back to train mode\n", - "Epoch 4772: model parameters saved\n", - "Epoch 4773 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4773: avg_loss appended (2.7778)\n", - "Epoch 4773: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4773: accuracy appended (83.33%)\n", - "Epoch 4773: model set back to train mode\n", - "Epoch 4773: model parameters saved\n", - "Epoch 4774 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4774: avg_loss appended (2.7778)\n", - "Epoch 4774: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4774: accuracy appended (83.33%)\n", - "Epoch 4774: model set back to train mode\n", - "Epoch 4774: model parameters saved\n", - "Epoch 4775 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4775: avg_loss appended (2.7778)\n", - "Epoch 4775: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4775: accuracy appended (83.33%)\n", - "Epoch 4775: model set back to train mode\n", - "Epoch 4775: model parameters saved\n", - "Epoch 4776 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4776: avg_loss appended (2.7778)\n", - "Epoch 4776: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4776: accuracy appended (83.33%)\n", - "Epoch 4776: model set back to train mode\n", - "Epoch 4776: model parameters saved\n", - "Epoch 4777 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4777: avg_loss appended (2.7778)\n", - "Epoch 4777: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4777: accuracy appended (83.33%)\n", - "Epoch 4777: model set back to train mode\n", - "Epoch 4777: model parameters saved\n", - "Epoch 4778 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4778: avg_loss appended (2.7778)\n", - "Epoch 4778: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4778: accuracy appended (83.33%)\n", - "Epoch 4778: model set back to train mode\n", - "Epoch 4778: model parameters saved\n", - "Epoch 4779 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4779: avg_loss appended (2.7778)\n", - "Epoch 4779: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4779: accuracy appended (83.33%)\n", - "Epoch 4779: model set back to train mode\n", - "Epoch 4779: model parameters saved\n", - "Epoch 4780 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4780: avg_loss appended (2.7778)\n", - "Epoch 4780: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4780: accuracy appended (83.33%)\n", - "Epoch 4780: model set back to train mode\n", - "Epoch 4780: model parameters saved\n", - "Epoch 4781 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4781: avg_loss appended (2.7778)\n", - "Epoch 4781: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4781: accuracy appended (83.33%)\n", - "Epoch 4781: model set back to train mode\n", - "Epoch 4781: model parameters saved\n", - "Epoch 4782 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4782: avg_loss appended (2.7778)\n", - "Epoch 4782: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4782: accuracy appended (83.33%)\n", - "Epoch 4782: model set back to train mode\n", - "Epoch 4782: model parameters saved\n", - "Epoch 4783 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4783: avg_loss appended (2.7778)\n", - "Epoch 4783: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4783: accuracy appended (83.33%)\n", - "Epoch 4783: model set back to train mode\n", - "Epoch 4783: model parameters saved\n", - "Epoch 4784 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4784: avg_loss appended (2.7778)\n", - "Epoch 4784: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4784: accuracy appended (83.33%)\n", - "Epoch 4784: model set back to train mode\n", - "Epoch 4784: model parameters saved\n", - "Epoch 4785 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4785: avg_loss appended (2.7778)\n", - "Epoch 4785: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4785: accuracy appended (83.33%)\n", - "Epoch 4785: model set back to train mode\n", - "Epoch 4785: model parameters saved\n", - "Epoch 4786 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4786: avg_loss appended (2.7778)\n", - "Epoch 4786: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4786: accuracy appended (83.33%)\n", - "Epoch 4786: model set back to train mode\n", - "Epoch 4786: model parameters saved\n", - "Epoch 4787 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4787: avg_loss appended (2.7778)\n", - "Epoch 4787: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4787: accuracy appended (83.33%)\n", - "Epoch 4787: model set back to train mode\n", - "Epoch 4787: model parameters saved\n", - "Epoch 4788 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4788: avg_loss appended (2.7778)\n", - "Epoch 4788: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4788: accuracy appended (83.33%)\n", - "Epoch 4788: model set back to train mode\n", - "Epoch 4788: model parameters saved\n", - "Epoch 4789 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4789: avg_loss appended (2.7778)\n", - "Epoch 4789: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4789: accuracy appended (83.33%)\n", - "Epoch 4789: model set back to train mode\n", - "Epoch 4789: model parameters saved\n", - "Epoch 4790 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4790: avg_loss appended (2.7778)\n", - "Epoch 4790: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4790: accuracy appended (83.33%)\n", - "Epoch 4790: model set back to train mode\n", - "Epoch 4790: model parameters saved\n", - "Epoch 4791 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4791: avg_loss appended (2.7778)\n", - "Epoch 4791: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4791: accuracy appended (83.33%)\n", - "Epoch 4791: model set back to train mode\n", - "Epoch 4791: model parameters saved\n", - "Epoch 4792 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4792: avg_loss appended (2.7778)\n", - "Epoch 4792: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4792: accuracy appended (83.33%)\n", - "Epoch 4792: model set back to train mode\n", - "Epoch 4792: model parameters saved\n", - "Epoch 4793 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4793: avg_loss appended (2.7778)\n", - "Epoch 4793: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4793: accuracy appended (83.33%)\n", - "Epoch 4793: model set back to train mode\n", - "Epoch 4793: model parameters saved\n", - "Epoch 4794 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4794: avg_loss appended (2.7778)\n", - "Epoch 4794: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4794: accuracy appended (83.33%)\n", - "Epoch 4794: model set back to train mode\n", - "Epoch 4794: model parameters saved\n", - "Epoch 4795 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4795: avg_loss appended (2.7778)\n", - "Epoch 4795: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4795: accuracy appended (83.33%)\n", - "Epoch 4795: model set back to train mode\n", - "Epoch 4795: model parameters saved\n", - "Epoch 4796 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4796: avg_loss appended (2.7778)\n", - "Epoch 4796: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4796: accuracy appended (83.33%)\n", - "Epoch 4796: model set back to train mode\n", - "Epoch 4796: model parameters saved\n", - "Epoch 4797 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4797: avg_loss appended (2.7778)\n", - "Epoch 4797: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4797: accuracy appended (83.33%)\n", - "Epoch 4797: model set back to train mode\n", - "Epoch 4797: model parameters saved\n", - "Epoch 4798 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4798: avg_loss appended (2.7778)\n", - "Epoch 4798: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4798: accuracy appended (83.33%)\n", - "Epoch 4798: model set back to train mode\n", - "Epoch 4798: model parameters saved\n", - "Epoch 4799 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4799: avg_loss appended (2.7778)\n", - "Epoch 4799: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4799: accuracy appended (83.33%)\n", - "Epoch 4799: model set back to train mode\n", - "Epoch 4799: model parameters saved\n", - "Epoch 4800 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4800: avg_loss appended (2.7778)\n", - "Epoch 4800: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4800: accuracy appended (83.33%)\n", - "Epoch 4800: model set back to train mode\n", - "Epoch 4800: model parameters saved\n", - "Epoch 4800/10000, Loss: 2.7778, Accuracy: 83.33%\n", - "Epoch 4801 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4801: avg_loss appended (2.7778)\n", - "Epoch 4801: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4801: accuracy appended (83.33%)\n", - "Epoch 4801: model set back to train mode\n", - "Epoch 4801: model parameters saved\n", - "Epoch 4802 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4802: avg_loss appended (2.7778)\n", - "Epoch 4802: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4802: accuracy appended (83.33%)\n", - "Epoch 4802: model set back to train mode\n", - "Epoch 4802: model parameters saved\n", - "Epoch 4803 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4803: avg_loss appended (2.7778)\n", - "Epoch 4803: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4803: accuracy appended (83.33%)\n", - "Epoch 4803: model set back to train mode\n", - "Epoch 4803: model parameters saved\n", - "Epoch 4804 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4804: avg_loss appended (2.7778)\n", - "Epoch 4804: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4804: accuracy appended (83.33%)\n", - "Epoch 4804: model set back to train mode\n", - "Epoch 4804: model parameters saved\n", - "Epoch 4805 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4805: avg_loss appended (2.7778)\n", - "Epoch 4805: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4805: accuracy appended (83.33%)\n", - "Epoch 4805: model set back to train mode\n", - "Epoch 4805: model parameters saved\n", - "Epoch 4806 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4806: avg_loss appended (2.7778)\n", - "Epoch 4806: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4806: accuracy appended (83.33%)\n", - "Epoch 4806: model set back to train mode\n", - "Epoch 4806: model parameters saved\n", - "Epoch 4807 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4807: avg_loss appended (2.7778)\n", - "Epoch 4807: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4807: accuracy appended (83.33%)\n", - "Epoch 4807: model set back to train mode\n", - "Epoch 4807: model parameters saved\n", - "Epoch 4808 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4808: avg_loss appended (2.7778)\n", - "Epoch 4808: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4808: accuracy appended (83.33%)\n", - "Epoch 4808: model set back to train mode\n", - "Epoch 4808: model parameters saved\n", - "Epoch 4809 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4809: avg_loss appended (2.7778)\n", - "Epoch 4809: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4809: accuracy appended (83.33%)\n", - "Epoch 4809: model set back to train mode\n", - "Epoch 4809: model parameters saved\n", - "Epoch 4810 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4810: avg_loss appended (2.7778)\n", - "Epoch 4810: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4810: accuracy appended (83.33%)\n", - "Epoch 4810: model set back to train mode\n", - "Epoch 4810: model parameters saved\n", - "Epoch 4811 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4811: avg_loss appended (2.7778)\n", - "Epoch 4811: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4811: accuracy appended (83.33%)\n", - "Epoch 4811: model set back to train mode\n", - "Epoch 4811: model parameters saved\n", - "Epoch 4812 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4812: avg_loss appended (2.7778)\n", - "Epoch 4812: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4812: accuracy appended (83.33%)\n", - "Epoch 4812: model set back to train mode\n", - "Epoch 4812: model parameters saved\n", - "Epoch 4813 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4813: avg_loss appended (2.7778)\n", - "Epoch 4813: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4813: accuracy appended (83.33%)\n", - "Epoch 4813: model set back to train mode\n", - "Epoch 4813: model parameters saved\n", - "Epoch 4814 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4814: avg_loss appended (2.7778)\n", - "Epoch 4814: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4814: accuracy appended (83.33%)\n", - "Epoch 4814: model set back to train mode\n", - "Epoch 4814: model parameters saved\n", - "Epoch 4815 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4815: avg_loss appended (2.7778)\n", - "Epoch 4815: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4815: accuracy appended (83.33%)\n", - "Epoch 4815: model set back to train mode\n", - "Epoch 4815: model parameters saved\n", - "Epoch 4816 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4816: avg_loss appended (2.7778)\n", - "Epoch 4816: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4816: accuracy appended (83.33%)\n", - "Epoch 4816: model set back to train mode\n", - "Epoch 4816: model parameters saved\n", - "Epoch 4817 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4817: avg_loss appended (2.7778)\n", - "Epoch 4817: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4817: accuracy appended (83.33%)\n", - "Epoch 4817: model set back to train mode\n", - "Epoch 4817: model parameters saved\n", - "Epoch 4818 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4818: avg_loss appended (2.7778)\n", - "Epoch 4818: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4818: accuracy appended (83.33%)\n", - "Epoch 4818: model set back to train mode\n", - "Epoch 4818: model parameters saved\n", - "Epoch 4819 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4819: avg_loss appended (2.7778)\n", - "Epoch 4819: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4819: accuracy appended (83.33%)\n", - "Epoch 4819: model set back to train mode\n", - "Epoch 4819: model parameters saved\n", - "Epoch 4820 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4820: avg_loss appended (2.7778)\n", - "Epoch 4820: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4820: accuracy appended (83.33%)\n", - "Epoch 4820: model set back to train mode\n", - "Epoch 4820: model parameters saved\n", - "Epoch 4821 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4821: avg_loss appended (2.7778)\n", - "Epoch 4821: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4821: accuracy appended (83.33%)\n", - "Epoch 4821: model set back to train mode\n", - "Epoch 4821: model parameters saved\n", - "Epoch 4822 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4822: avg_loss appended (2.7778)\n", - "Epoch 4822: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4822: accuracy appended (83.33%)\n", - "Epoch 4822: model set back to train mode\n", - "Epoch 4822: model parameters saved\n", - "Epoch 4823 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4823: avg_loss appended (2.7778)\n", - "Epoch 4823: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4823: accuracy appended (83.33%)\n", - "Epoch 4823: model set back to train mode\n", - "Epoch 4823: model parameters saved\n", - "Epoch 4824 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4824: avg_loss appended (2.7778)\n", - "Epoch 4824: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4824: accuracy appended (83.33%)\n", - "Epoch 4824: model set back to train mode\n", - "Epoch 4824: model parameters saved\n", - "Epoch 4825 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4825: avg_loss appended (2.7778)\n", - "Epoch 4825: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4825: accuracy appended (83.33%)\n", - "Epoch 4825: model set back to train mode\n", - "Epoch 4825: model parameters saved\n", - "Epoch 4826 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4826: avg_loss appended (2.7778)\n", - "Epoch 4826: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4826: accuracy appended (83.33%)\n", - "Epoch 4826: model set back to train mode\n", - "Epoch 4826: model parameters saved\n", - "Epoch 4827 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4827: avg_loss appended (2.7778)\n", - "Epoch 4827: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4827: accuracy appended (83.33%)\n", - "Epoch 4827: model set back to train mode\n", - "Epoch 4827: model parameters saved\n", - "Epoch 4828 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4828: avg_loss appended (2.7778)\n", - "Epoch 4828: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4828: accuracy appended (83.33%)\n", - "Epoch 4828: model set back to train mode\n", - "Epoch 4828: model parameters saved\n", - "Epoch 4829 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4829: avg_loss appended (2.7778)\n", - "Epoch 4829: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4829: accuracy appended (83.33%)\n", - "Epoch 4829: model set back to train mode\n", - "Epoch 4829: model parameters saved\n", - "Epoch 4830 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4830: avg_loss appended (2.7778)\n", - "Epoch 4830: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4830: accuracy appended (83.33%)\n", - "Epoch 4830: model set back to train mode\n", - "Epoch 4830: model parameters saved\n", - "Epoch 4831 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4831: avg_loss appended (2.7778)\n", - "Epoch 4831: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4831: accuracy appended (83.33%)\n", - "Epoch 4831: model set back to train mode\n", - "Epoch 4831: model parameters saved\n", - "Epoch 4832 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4832: avg_loss appended (2.7778)\n", - "Epoch 4832: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4832: accuracy appended (83.33%)\n", - "Epoch 4832: model set back to train mode\n", - "Epoch 4832: model parameters saved\n", - "Epoch 4833 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4833: avg_loss appended (2.7778)\n", - "Epoch 4833: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4833: accuracy appended (83.33%)\n", - "Epoch 4833: model set back to train mode\n", - "Epoch 4833: model parameters saved\n", - "Epoch 4834 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4834: avg_loss appended (2.7778)\n", - "Epoch 4834: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4834: accuracy appended (83.33%)\n", - "Epoch 4834: model set back to train mode\n", - "Epoch 4834: model parameters saved\n", - "Epoch 4835 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4835: avg_loss appended (2.7778)\n", - "Epoch 4835: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4835: accuracy appended (83.33%)\n", - "Epoch 4835: model set back to train mode\n", - "Epoch 4835: model parameters saved\n", - "Epoch 4836 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4836: avg_loss appended (2.7778)\n", - "Epoch 4836: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4836: accuracy appended (83.33%)\n", - "Epoch 4836: model set back to train mode\n", - "Epoch 4836: model parameters saved\n", - "Epoch 4837 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4837: avg_loss appended (2.7778)\n", - "Epoch 4837: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4837: accuracy appended (83.33%)\n", - "Epoch 4837: model set back to train mode\n", - "Epoch 4837: model parameters saved\n", - "Epoch 4838 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4838: avg_loss appended (2.7778)\n", - "Epoch 4838: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4838: accuracy appended (83.33%)\n", - "Epoch 4838: model set back to train mode\n", - "Epoch 4838: model parameters saved\n", - "Epoch 4839 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4839: avg_loss appended (2.7778)\n", - "Epoch 4839: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4839: accuracy appended (83.33%)\n", - "Epoch 4839: model set back to train mode\n", - "Epoch 4839: model parameters saved\n", - "Epoch 4840 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4840: avg_loss appended (2.7778)\n", - "Epoch 4840: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4840: accuracy appended (83.33%)\n", - "Epoch 4840: model set back to train mode\n", - "Epoch 4840: model parameters saved\n", - "Epoch 4841 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4841: avg_loss appended (2.7778)\n", - "Epoch 4841: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4841: accuracy appended (83.33%)\n", - "Epoch 4841: model set back to train mode\n", - "Epoch 4841: model parameters saved\n", - "Epoch 4842 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4842: avg_loss appended (2.7778)\n", - "Epoch 4842: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4842: accuracy appended (83.33%)\n", - "Epoch 4842: model set back to train mode\n", - "Epoch 4842: model parameters saved\n", - "Epoch 4843 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4843: avg_loss appended (2.7778)\n", - "Epoch 4843: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4843: accuracy appended (83.33%)\n", - "Epoch 4843: model set back to train mode\n", - "Epoch 4843: model parameters saved\n", - "Epoch 4844 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4844: avg_loss appended (2.7778)\n", - "Epoch 4844: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4844: accuracy appended (83.33%)\n", - "Epoch 4844: model set back to train mode\n", - "Epoch 4844: model parameters saved\n", - "Epoch 4845 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4845: avg_loss appended (2.7778)\n", - "Epoch 4845: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4845: accuracy appended (83.33%)\n", - "Epoch 4845: model set back to train mode\n", - "Epoch 4845: model parameters saved\n", - "Epoch 4846 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4846: avg_loss appended (2.7778)\n", - "Epoch 4846: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4846: accuracy appended (83.33%)\n", - "Epoch 4846: model set back to train mode\n", - "Epoch 4846: model parameters saved\n", - "Epoch 4847 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4847: avg_loss appended (2.7778)\n", - "Epoch 4847: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4847: accuracy appended (83.33%)\n", - "Epoch 4847: model set back to train mode\n", - "Epoch 4847: model parameters saved\n", - "Epoch 4848 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4848: avg_loss appended (2.7778)\n", - "Epoch 4848: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4848: accuracy appended (83.33%)\n", - "Epoch 4848: model set back to train mode\n", - "Epoch 4848: model parameters saved\n", - "Epoch 4849 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4849: avg_loss appended (2.7778)\n", - "Epoch 4849: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4849: accuracy appended (83.33%)\n", - "Epoch 4849: model set back to train mode\n", - "Epoch 4849: model parameters saved\n", - "Epoch 4850 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4850: avg_loss appended (2.7778)\n", - "Epoch 4850: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4850: accuracy appended (83.33%)\n", - "Epoch 4850: model set back to train mode\n", - "Epoch 4850: model parameters saved\n", - "Epoch 4851 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4851: avg_loss appended (2.7778)\n", - "Epoch 4851: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4851: accuracy appended (83.33%)\n", - "Epoch 4851: model set back to train mode\n", - "Epoch 4851: model parameters saved\n", - "Epoch 4852 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4852: avg_loss appended (2.7778)\n", - "Epoch 4852: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4852: accuracy appended (83.33%)\n", - "Epoch 4852: model set back to train mode\n", - "Epoch 4852: model parameters saved\n", - "Epoch 4853 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4853: avg_loss appended (2.7778)\n", - "Epoch 4853: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4853: accuracy appended (83.33%)\n", - "Epoch 4853: model set back to train mode\n", - "Epoch 4853: model parameters saved\n", - "Epoch 4854 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4854: avg_loss appended (2.7778)\n", - "Epoch 4854: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4854: accuracy appended (83.33%)\n", - "Epoch 4854: model set back to train mode\n", - "Epoch 4854: model parameters saved\n", - "Epoch 4855 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4855: avg_loss appended (2.7778)\n", - "Epoch 4855: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4855: accuracy appended (83.33%)\n", - "Epoch 4855: model set back to train mode\n", - "Epoch 4855: model parameters saved\n", - "Epoch 4856 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4856: avg_loss appended (2.7778)\n", - "Epoch 4856: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4856: accuracy appended (83.33%)\n", - "Epoch 4856: model set back to train mode\n", - "Epoch 4856: model parameters saved\n", - "Epoch 4857 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4857: avg_loss appended (2.7778)\n", - "Epoch 4857: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4857: accuracy appended (83.33%)\n", - "Epoch 4857: model set back to train mode\n", - "Epoch 4857: model parameters saved\n", - "Epoch 4858 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4858: avg_loss appended (2.7778)\n", - "Epoch 4858: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4858: accuracy appended (83.33%)\n", - "Epoch 4858: model set back to train mode\n", - "Epoch 4858: model parameters saved\n", - "Epoch 4859 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4859: avg_loss appended (2.7778)\n", - "Epoch 4859: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4859: accuracy appended (83.33%)\n", - "Epoch 4859: model set back to train mode\n", - "Epoch 4859: model parameters saved\n", - "Epoch 4860 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4860: avg_loss appended (2.7778)\n", - "Epoch 4860: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4860: accuracy appended (83.33%)\n", - "Epoch 4860: model set back to train mode\n", - "Epoch 4860: model parameters saved\n", - "Epoch 4861 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4861: avg_loss appended (2.7778)\n", - "Epoch 4861: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4861: accuracy appended (83.33%)\n", - "Epoch 4861: model set back to train mode\n", - "Epoch 4861: model parameters saved\n", - "Epoch 4862 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4862: avg_loss appended (2.7778)\n", - "Epoch 4862: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4862: accuracy appended (83.33%)\n", - "Epoch 4862: model set back to train mode\n", - "Epoch 4862: model parameters saved\n", - "Epoch 4863 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4863: avg_loss appended (2.7778)\n", - "Epoch 4863: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4863: accuracy appended (83.33%)\n", - "Epoch 4863: model set back to train mode\n", - "Epoch 4863: model parameters saved\n", - "Epoch 4864 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4864: avg_loss appended (2.7778)\n", - "Epoch 4864: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4864: accuracy appended (83.33%)\n", - "Epoch 4864: model set back to train mode\n", - "Epoch 4864: model parameters saved\n", - "Epoch 4865 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4865: avg_loss appended (2.7778)\n", - "Epoch 4865: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4865: accuracy appended (83.33%)\n", - "Epoch 4865: model set back to train mode\n", - "Epoch 4865: model parameters saved\n", - "Epoch 4866 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4866: avg_loss appended (2.7778)\n", - "Epoch 4866: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4866: accuracy appended (83.33%)\n", - "Epoch 4866: model set back to train mode\n", - "Epoch 4866: model parameters saved\n", - "Epoch 4867 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4867: avg_loss appended (2.7778)\n", - "Epoch 4867: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4867: accuracy appended (83.33%)\n", - "Epoch 4867: model set back to train mode\n", - "Epoch 4867: model parameters saved\n", - "Epoch 4868 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4868: avg_loss appended (2.7778)\n", - "Epoch 4868: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4868: accuracy appended (83.33%)\n", - "Epoch 4868: model set back to train mode\n", - "Epoch 4868: model parameters saved\n", - "Epoch 4869 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4869: avg_loss appended (2.7778)\n", - "Epoch 4869: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4869: accuracy appended (83.33%)\n", - "Epoch 4869: model set back to train mode\n", - "Epoch 4869: model parameters saved\n", - "Epoch 4870 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4870: avg_loss appended (2.7778)\n", - "Epoch 4870: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4870: accuracy appended (83.33%)\n", - "Epoch 4870: model set back to train mode\n", - "Epoch 4870: model parameters saved\n", - "Epoch 4871 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4871: avg_loss appended (2.7778)\n", - "Epoch 4871: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4871: accuracy appended (83.33%)\n", - "Epoch 4871: model set back to train mode\n", - "Epoch 4871: model parameters saved\n", - "Epoch 4872 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4872: avg_loss appended (2.7778)\n", - "Epoch 4872: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4872: accuracy appended (83.33%)\n", - "Epoch 4872: model set back to train mode\n", - "Epoch 4872: model parameters saved\n", - "Epoch 4873 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4873: avg_loss appended (2.7778)\n", - "Epoch 4873: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4873: accuracy appended (83.33%)\n", - "Epoch 4873: model set back to train mode\n", - "Epoch 4873: model parameters saved\n", - "Epoch 4874 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4874: avg_loss appended (2.7778)\n", - "Epoch 4874: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4874: accuracy appended (83.33%)\n", - "Epoch 4874: model set back to train mode\n", - "Epoch 4874: model parameters saved\n", - "Epoch 4875 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4875: avg_loss appended (2.7778)\n", - "Epoch 4875: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4875: accuracy appended (83.33%)\n", - "Epoch 4875: model set back to train mode\n", - "Epoch 4875: model parameters saved\n", - "Epoch 4876 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4876: avg_loss appended (2.7778)\n", - "Epoch 4876: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4876: accuracy appended (83.33%)\n", - "Epoch 4876: model set back to train mode\n", - "Epoch 4876: model parameters saved\n", - "Epoch 4877 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4877: avg_loss appended (2.7778)\n", - "Epoch 4877: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4877: accuracy appended (83.33%)\n", - "Epoch 4877: model set back to train mode\n", - "Epoch 4877: model parameters saved\n", - "Epoch 4878 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4878: avg_loss appended (2.7778)\n", - "Epoch 4878: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4878: accuracy appended (83.33%)\n", - "Epoch 4878: model set back to train mode\n", - "Epoch 4878: model parameters saved\n", - "Epoch 4879 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4879: avg_loss appended (2.7778)\n", - "Epoch 4879: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4879: accuracy appended (83.33%)\n", - "Epoch 4879: model set back to train mode\n", - "Epoch 4879: model parameters saved\n", - "Epoch 4880 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4880: avg_loss appended (2.7778)\n", - "Epoch 4880: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4880: accuracy appended (83.33%)\n", - "Epoch 4880: model set back to train mode\n", - "Epoch 4880: model parameters saved\n", - "Epoch 4881 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4881: avg_loss appended (2.7778)\n", - "Epoch 4881: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4881: accuracy appended (83.33%)\n", - "Epoch 4881: model set back to train mode\n", - "Epoch 4881: model parameters saved\n", - "Epoch 4882 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4882: avg_loss appended (2.7778)\n", - "Epoch 4882: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4882: accuracy appended (83.33%)\n", - "Epoch 4882: model set back to train mode\n", - "Epoch 4882: model parameters saved\n", - "Epoch 4883 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4883: avg_loss appended (2.7778)\n", - "Epoch 4883: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4883: accuracy appended (83.33%)\n", - "Epoch 4883: model set back to train mode\n", - "Epoch 4883: model parameters saved\n", - "Epoch 4884 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4884: avg_loss appended (2.7778)\n", - "Epoch 4884: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4884: accuracy appended (83.33%)\n", - "Epoch 4884: model set back to train mode\n", - "Epoch 4884: model parameters saved\n", - "Epoch 4885 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4885: avg_loss appended (2.7778)\n", - "Epoch 4885: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4885: accuracy appended (83.33%)\n", - "Epoch 4885: model set back to train mode\n", - "Epoch 4885: model parameters saved\n", - "Epoch 4886 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4886: avg_loss appended (2.7778)\n", - "Epoch 4886: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4886: accuracy appended (83.33%)\n", - "Epoch 4886: model set back to train mode\n", - "Epoch 4886: model parameters saved\n", - "Epoch 4887 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4887: avg_loss appended (2.7778)\n", - "Epoch 4887: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4887: accuracy appended (83.33%)\n", - "Epoch 4887: model set back to train mode\n", - "Epoch 4887: model parameters saved\n", - "Epoch 4888 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4888: avg_loss appended (2.7778)\n", - "Epoch 4888: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4888: accuracy appended (83.33%)\n", - "Epoch 4888: model set back to train mode\n", - "Epoch 4888: model parameters saved\n", - "Epoch 4889 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4889: avg_loss appended (2.7778)\n", - "Epoch 4889: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4889: accuracy appended (83.33%)\n", - "Epoch 4889: model set back to train mode\n", - "Epoch 4889: model parameters saved\n", - "Epoch 4890 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4890: avg_loss appended (2.7778)\n", - "Epoch 4890: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4890: accuracy appended (83.33%)\n", - "Epoch 4890: model set back to train mode\n", - "Epoch 4890: model parameters saved\n", - "Epoch 4891 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4891: avg_loss appended (2.7778)\n", - "Epoch 4891: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4891: accuracy appended (83.33%)\n", - "Epoch 4891: model set back to train mode\n", - "Epoch 4891: model parameters saved\n", - "Epoch 4892 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4892: avg_loss appended (2.7778)\n", - "Epoch 4892: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4892: accuracy appended (83.33%)\n", - "Epoch 4892: model set back to train mode\n", - "Epoch 4892: model parameters saved\n", - "Epoch 4893 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4893: avg_loss appended (2.7778)\n", - "Epoch 4893: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4893: accuracy appended (83.33%)\n", - "Epoch 4893: model set back to train mode\n", - "Epoch 4893: model parameters saved\n", - "Epoch 4894 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4894: avg_loss appended (2.7778)\n", - "Epoch 4894: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4894: accuracy appended (83.33%)\n", - "Epoch 4894: model set back to train mode\n", - "Epoch 4894: model parameters saved\n", - "Epoch 4895 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4895: avg_loss appended (2.7778)\n", - "Epoch 4895: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4895: accuracy appended (83.33%)\n", - "Epoch 4895: model set back to train mode\n", - "Epoch 4895: model parameters saved\n", - "Epoch 4896 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4896: avg_loss appended (2.7778)\n", - "Epoch 4896: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4896: accuracy appended (83.33%)\n", - "Epoch 4896: model set back to train mode\n", - "Epoch 4896: model parameters saved\n", - "Epoch 4897 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4897: avg_loss appended (2.7778)\n", - "Epoch 4897: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4897: accuracy appended (83.33%)\n", - "Epoch 4897: model set back to train mode\n", - "Epoch 4897: model parameters saved\n", - "Epoch 4898 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4898: avg_loss appended (2.7778)\n", - "Epoch 4898: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4898: accuracy appended (83.33%)\n", - "Epoch 4898: model set back to train mode\n", - "Epoch 4898: model parameters saved\n", - "Epoch 4899 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4899: avg_loss appended (2.7778)\n", - "Epoch 4899: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4899: accuracy appended (83.33%)\n", - "Epoch 4899: model set back to train mode\n", - "Epoch 4899: model parameters saved\n", - "Epoch 4900 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4900: avg_loss appended (2.7778)\n", - "Epoch 4900: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4900: accuracy appended (83.33%)\n", - "Epoch 4900: model set back to train mode\n", - "Epoch 4900: model parameters saved\n", - "Epoch 4900/10000, Loss: 2.7778, Accuracy: 83.33%\n", - "Epoch 4901 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4901: avg_loss appended (2.7778)\n", - "Epoch 4901: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4901: accuracy appended (83.33%)\n", - "Epoch 4901: model set back to train mode\n", - "Epoch 4901: model parameters saved\n", - "Epoch 4902 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4902: avg_loss appended (2.7778)\n", - "Epoch 4902: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4902: accuracy appended (83.33%)\n", - "Epoch 4902: model set back to train mode\n", - "Epoch 4902: model parameters saved\n", - "Epoch 4903 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4903: avg_loss appended (2.7778)\n", - "Epoch 4903: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4903: accuracy appended (83.33%)\n", - "Epoch 4903: model set back to train mode\n", - "Epoch 4903: model parameters saved\n", - "Epoch 4904 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4904: avg_loss appended (2.7778)\n", - "Epoch 4904: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4904: accuracy appended (83.33%)\n", - "Epoch 4904: model set back to train mode\n", - "Epoch 4904: model parameters saved\n", - "Epoch 4905 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4905: avg_loss appended (2.7778)\n", - "Epoch 4905: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4905: accuracy appended (83.33%)\n", - "Epoch 4905: model set back to train mode\n", - "Epoch 4905: model parameters saved\n", - "Epoch 4906 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4906: avg_loss appended (2.7778)\n", - "Epoch 4906: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4906: accuracy appended (83.33%)\n", - "Epoch 4906: model set back to train mode\n", - "Epoch 4906: model parameters saved\n", - "Epoch 4907 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4907: avg_loss appended (2.7778)\n", - "Epoch 4907: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4907: accuracy appended (83.33%)\n", - "Epoch 4907: model set back to train mode\n", - "Epoch 4907: model parameters saved\n", - "Epoch 4908 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4908: avg_loss appended (2.7778)\n", - "Epoch 4908: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4908: accuracy appended (83.33%)\n", - "Epoch 4908: model set back to train mode\n", - "Epoch 4908: model parameters saved\n", - "Epoch 4909 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4909: avg_loss appended (2.7778)\n", - "Epoch 4909: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4909: accuracy appended (83.33%)\n", - "Epoch 4909: model set back to train mode\n", - "Epoch 4909: model parameters saved\n", - "Epoch 4910 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4910: avg_loss appended (2.7778)\n", - "Epoch 4910: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4910: accuracy appended (83.33%)\n", - "Epoch 4910: model set back to train mode\n", - "Epoch 4910: model parameters saved\n", - "Epoch 4911 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4911: avg_loss appended (2.7778)\n", - "Epoch 4911: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4911: accuracy appended (83.33%)\n", - "Epoch 4911: model set back to train mode\n", - "Epoch 4911: model parameters saved\n", - "Epoch 4912 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4912: avg_loss appended (2.7778)\n", - "Epoch 4912: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4912: accuracy appended (83.33%)\n", - "Epoch 4912: model set back to train mode\n", - "Epoch 4912: model parameters saved\n", - "Epoch 4913 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4913: avg_loss appended (2.7778)\n", - "Epoch 4913: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4913: accuracy appended (83.33%)\n", - "Epoch 4913: model set back to train mode\n", - "Epoch 4913: model parameters saved\n", - "Epoch 4914 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4914: avg_loss appended (2.7778)\n", - "Epoch 4914: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4914: accuracy appended (83.33%)\n", - "Epoch 4914: model set back to train mode\n", - "Epoch 4914: model parameters saved\n", - "Epoch 4915 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4915: avg_loss appended (2.7778)\n", - "Epoch 4915: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4915: accuracy appended (83.33%)\n", - "Epoch 4915: model set back to train mode\n", - "Epoch 4915: model parameters saved\n", - "Epoch 4916 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4916: avg_loss appended (2.7778)\n", - "Epoch 4916: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4916: accuracy appended (83.33%)\n", - "Epoch 4916: model set back to train mode\n", - "Epoch 4916: model parameters saved\n", - "Epoch 4917 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4917: avg_loss appended (2.7778)\n", - "Epoch 4917: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4917: accuracy appended (83.33%)\n", - "Epoch 4917: model set back to train mode\n", - "Epoch 4917: model parameters saved\n", - "Epoch 4918 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4918: avg_loss appended (2.7778)\n", - "Epoch 4918: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4918: accuracy appended (83.33%)\n", - "Epoch 4918: model set back to train mode\n", - "Epoch 4918: model parameters saved\n", - "Epoch 4919 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4919: avg_loss appended (2.7778)\n", - "Epoch 4919: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4919: accuracy appended (83.33%)\n", - "Epoch 4919: model set back to train mode\n", - "Epoch 4919: model parameters saved\n", - "Epoch 4920 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4920: avg_loss appended (2.7778)\n", - "Epoch 4920: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4920: accuracy appended (83.33%)\n", - "Epoch 4920: model set back to train mode\n", - "Epoch 4920: model parameters saved\n", - "Epoch 4921 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4921: avg_loss appended (2.7778)\n", - "Epoch 4921: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4921: accuracy appended (83.33%)\n", - "Epoch 4921: model set back to train mode\n", - "Epoch 4921: model parameters saved\n", - "Epoch 4922 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4922: avg_loss appended (2.7778)\n", - "Epoch 4922: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4922: accuracy appended (83.33%)\n", - "Epoch 4922: model set back to train mode\n", - "Epoch 4922: model parameters saved\n", - "Epoch 4923 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4923: avg_loss appended (2.7778)\n", - "Epoch 4923: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4923: accuracy appended (83.33%)\n", - "Epoch 4923: model set back to train mode\n", - "Epoch 4923: model parameters saved\n", - "Epoch 4924 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4924: avg_loss appended (2.7778)\n", - "Epoch 4924: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4924: accuracy appended (83.33%)\n", - "Epoch 4924: model set back to train mode\n", - "Epoch 4924: model parameters saved\n", - "Epoch 4925 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4925: avg_loss appended (2.7778)\n", - "Epoch 4925: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4925: accuracy appended (83.33%)\n", - "Epoch 4925: model set back to train mode\n", - "Epoch 4925: model parameters saved\n", - "Epoch 4926 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4926: avg_loss appended (2.7778)\n", - "Epoch 4926: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4926: accuracy appended (83.33%)\n", - "Epoch 4926: model set back to train mode\n", - "Epoch 4926: model parameters saved\n", - "Epoch 4927 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4927: avg_loss appended (2.7778)\n", - "Epoch 4927: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4927: accuracy appended (83.33%)\n", - "Epoch 4927: model set back to train mode\n", - "Epoch 4927: model parameters saved\n", - "Epoch 4928 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4928: avg_loss appended (2.7778)\n", - "Epoch 4928: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4928: accuracy appended (83.33%)\n", - "Epoch 4928: model set back to train mode\n", - "Epoch 4928: model parameters saved\n", - "Epoch 4929 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4929: avg_loss appended (2.7778)\n", - "Epoch 4929: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4929: accuracy appended (83.33%)\n", - "Epoch 4929: model set back to train mode\n", - "Epoch 4929: model parameters saved\n", - "Epoch 4930 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4930: avg_loss appended (2.7778)\n", - "Epoch 4930: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4930: accuracy appended (83.33%)\n", - "Epoch 4930: model set back to train mode\n", - "Epoch 4930: model parameters saved\n", - "Epoch 4931 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4931: avg_loss appended (2.7778)\n", - "Epoch 4931: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4931: accuracy appended (83.33%)\n", - "Epoch 4931: model set back to train mode\n", - "Epoch 4931: model parameters saved\n", - "Epoch 4932 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4932: avg_loss appended (2.7778)\n", - "Epoch 4932: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4932: accuracy appended (83.33%)\n", - "Epoch 4932: model set back to train mode\n", - "Epoch 4932: model parameters saved\n", - "Epoch 4933 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4933: avg_loss appended (2.7778)\n", - "Epoch 4933: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4933: accuracy appended (83.33%)\n", - "Epoch 4933: model set back to train mode\n", - "Epoch 4933: model parameters saved\n", - "Epoch 4934 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4934: avg_loss appended (2.7778)\n", - "Epoch 4934: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4934: accuracy appended (83.33%)\n", - "Epoch 4934: model set back to train mode\n", - "Epoch 4934: model parameters saved\n", - "Epoch 4935 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4935: avg_loss appended (2.7778)\n", - "Epoch 4935: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4935: accuracy appended (83.33%)\n", - "Epoch 4935: model set back to train mode\n", - "Epoch 4935: model parameters saved\n", - "Epoch 4936 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4936: avg_loss appended (2.7778)\n", - "Epoch 4936: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4936: accuracy appended (83.33%)\n", - "Epoch 4936: model set back to train mode\n", - "Epoch 4936: model parameters saved\n", - "Epoch 4937 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4937: avg_loss appended (2.7778)\n", - "Epoch 4937: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4937: accuracy appended (83.33%)\n", - "Epoch 4937: model set back to train mode\n", - "Epoch 4937: model parameters saved\n", - "Epoch 4938 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4938: avg_loss appended (2.7778)\n", - "Epoch 4938: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4938: accuracy appended (83.33%)\n", - "Epoch 4938: model set back to train mode\n", - "Epoch 4938: model parameters saved\n", - "Epoch 4939 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4939: avg_loss appended (2.7778)\n", - "Epoch 4939: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4939: accuracy appended (83.33%)\n", - "Epoch 4939: model set back to train mode\n", - "Epoch 4939: model parameters saved\n", - "Epoch 4940 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4940: avg_loss appended (2.7778)\n", - "Epoch 4940: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4940: accuracy appended (83.33%)\n", - "Epoch 4940: model set back to train mode\n", - "Epoch 4940: model parameters saved\n", - "Epoch 4941 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4941: avg_loss appended (2.7778)\n", - "Epoch 4941: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4941: accuracy appended (83.33%)\n", - "Epoch 4941: model set back to train mode\n", - "Epoch 4941: model parameters saved\n", - "Epoch 4942 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4942: avg_loss appended (2.7778)\n", - "Epoch 4942: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4942: accuracy appended (83.33%)\n", - "Epoch 4942: model set back to train mode\n", - "Epoch 4942: model parameters saved\n", - "Epoch 4943 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4943: avg_loss appended (2.7778)\n", - "Epoch 4943: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4943: accuracy appended (83.33%)\n", - "Epoch 4943: model set back to train mode\n", - "Epoch 4943: model parameters saved\n", - "Epoch 4944 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4944: avg_loss appended (2.7778)\n", - "Epoch 4944: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4944: accuracy appended (83.33%)\n", - "Epoch 4944: model set back to train mode\n", - "Epoch 4944: model parameters saved\n", - "Epoch 4945 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4945: avg_loss appended (2.7778)\n", - "Epoch 4945: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4945: accuracy appended (83.33%)\n", - "Epoch 4945: model set back to train mode\n", - "Epoch 4945: model parameters saved\n", - "Epoch 4946 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4946: avg_loss appended (2.7778)\n", - "Epoch 4946: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4946: accuracy appended (83.33%)\n", - "Epoch 4946: model set back to train mode\n", - "Epoch 4946: model parameters saved\n", - "Epoch 4947 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4947: avg_loss appended (2.7778)\n", - "Epoch 4947: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4947: accuracy appended (83.33%)\n", - "Epoch 4947: model set back to train mode\n", - "Epoch 4947: model parameters saved\n", - "Epoch 4948 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4948: avg_loss appended (2.7778)\n", - "Epoch 4948: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4948: accuracy appended (83.33%)\n", - "Epoch 4948: model set back to train mode\n", - "Epoch 4948: model parameters saved\n", - "Epoch 4949 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4949: avg_loss appended (2.7778)\n", - "Epoch 4949: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4949: accuracy appended (83.33%)\n", - "Epoch 4949: model set back to train mode\n", - "Epoch 4949: model parameters saved\n", - "Epoch 4950 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4950: avg_loss appended (2.7778)\n", - "Epoch 4950: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4950: accuracy appended (83.33%)\n", - "Epoch 4950: model set back to train mode\n", - "Epoch 4950: model parameters saved\n", - "Epoch 4951 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4951: avg_loss appended (2.7778)\n", - "Epoch 4951: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4951: accuracy appended (83.33%)\n", - "Epoch 4951: model set back to train mode\n", - "Epoch 4951: model parameters saved\n", - "Epoch 4952 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4952: avg_loss appended (2.7778)\n", - "Epoch 4952: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4952: accuracy appended (83.33%)\n", - "Epoch 4952: model set back to train mode\n", - "Epoch 4952: model parameters saved\n", - "Epoch 4953 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4953: avg_loss appended (2.7778)\n", - "Epoch 4953: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4953: accuracy appended (83.33%)\n", - "Epoch 4953: model set back to train mode\n", - "Epoch 4953: model parameters saved\n", - "Epoch 4954 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4954: avg_loss appended (2.7778)\n", - "Epoch 4954: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4954: accuracy appended (83.33%)\n", - "Epoch 4954: model set back to train mode\n", - "Epoch 4954: model parameters saved\n", - "Epoch 4955 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4955: avg_loss appended (2.7778)\n", - "Epoch 4955: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4955: accuracy appended (83.33%)\n", - "Epoch 4955: model set back to train mode\n", - "Epoch 4955: model parameters saved\n", - "Epoch 4956 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4956: avg_loss appended (2.7778)\n", - "Epoch 4956: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4956: accuracy appended (83.33%)\n", - "Epoch 4956: model set back to train mode\n", - "Epoch 4956: model parameters saved\n", - "Epoch 4957 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4957: avg_loss appended (2.7778)\n", - "Epoch 4957: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4957: accuracy appended (83.33%)\n", - "Epoch 4957: model set back to train mode\n", - "Epoch 4957: model parameters saved\n", - "Epoch 4958 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4958: avg_loss appended (2.7778)\n", - "Epoch 4958: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4958: accuracy appended (83.33%)\n", - "Epoch 4958: model set back to train mode\n", - "Epoch 4958: model parameters saved\n", - "Epoch 4959 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4959: avg_loss appended (2.7778)\n", - "Epoch 4959: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4959: accuracy appended (83.33%)\n", - "Epoch 4959: model set back to train mode\n", - "Epoch 4959: model parameters saved\n", - "Epoch 4960 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4960: avg_loss appended (2.7778)\n", - "Epoch 4960: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4960: accuracy appended (83.33%)\n", - "Epoch 4960: model set back to train mode\n", - "Epoch 4960: model parameters saved\n", - "Epoch 4961 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4961: avg_loss appended (2.7778)\n", - "Epoch 4961: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4961: accuracy appended (83.33%)\n", - "Epoch 4961: model set back to train mode\n", - "Epoch 4961: model parameters saved\n", - "Epoch 4962 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4962: avg_loss appended (2.7778)\n", - "Epoch 4962: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4962: accuracy appended (83.33%)\n", - "Epoch 4962: model set back to train mode\n", - "Epoch 4962: model parameters saved\n", - "Epoch 4963 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4963: avg_loss appended (2.7778)\n", - "Epoch 4963: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4963: accuracy appended (83.33%)\n", - "Epoch 4963: model set back to train mode\n", - "Epoch 4963: model parameters saved\n", - "Epoch 4964 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4964: avg_loss appended (2.7778)\n", - "Epoch 4964: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4964: accuracy appended (83.33%)\n", - "Epoch 4964: model set back to train mode\n", - "Epoch 4964: model parameters saved\n", - "Epoch 4965 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4965: avg_loss appended (2.7778)\n", - "Epoch 4965: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4965: accuracy appended (83.33%)\n", - "Epoch 4965: model set back to train mode\n", - "Epoch 4965: model parameters saved\n", - "Epoch 4966 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4966: avg_loss appended (2.7778)\n", - "Epoch 4966: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4966: accuracy appended (83.33%)\n", - "Epoch 4966: model set back to train mode\n", - "Epoch 4966: model parameters saved\n", - "Epoch 4967 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4967: avg_loss appended (2.7778)\n", - "Epoch 4967: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4967: accuracy appended (83.33%)\n", - "Epoch 4967: model set back to train mode\n", - "Epoch 4967: model parameters saved\n", - "Epoch 4968 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4968: avg_loss appended (2.7778)\n", - "Epoch 4968: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4968: accuracy appended (83.33%)\n", - "Epoch 4968: model set back to train mode\n", - "Epoch 4968: model parameters saved\n", - "Epoch 4969 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4969: avg_loss appended (2.7778)\n", - "Epoch 4969: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4969: accuracy appended (83.33%)\n", - "Epoch 4969: model set back to train mode\n", - "Epoch 4969: model parameters saved\n", - "Epoch 4970 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4970: avg_loss appended (2.7778)\n", - "Epoch 4970: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4970: accuracy appended (83.33%)\n", - "Epoch 4970: model set back to train mode\n", - "Epoch 4970: model parameters saved\n", - "Epoch 4971 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4971: avg_loss appended (2.7778)\n", - "Epoch 4971: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4971: accuracy appended (83.33%)\n", - "Epoch 4971: model set back to train mode\n", - "Epoch 4971: model parameters saved\n", - "Epoch 4972 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4972: avg_loss appended (2.7778)\n", - "Epoch 4972: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4972: accuracy appended (83.33%)\n", - "Epoch 4972: model set back to train mode\n", - "Epoch 4972: model parameters saved\n", - "Epoch 4973 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4973: avg_loss appended (2.7778)\n", - "Epoch 4973: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4973: accuracy appended (83.33%)\n", - "Epoch 4973: model set back to train mode\n", - "Epoch 4973: model parameters saved\n", - "Epoch 4974 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4974: avg_loss appended (2.7778)\n", - "Epoch 4974: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4974: accuracy appended (83.33%)\n", - "Epoch 4974: model set back to train mode\n", - "Epoch 4974: model parameters saved\n", - "Epoch 4975 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4975: avg_loss appended (2.7778)\n", - "Epoch 4975: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4975: accuracy appended (83.33%)\n", - "Epoch 4975: model set back to train mode\n", - "Epoch 4975: model parameters saved\n", - "Epoch 4976 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4976: avg_loss appended (2.7778)\n", - "Epoch 4976: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4976: accuracy appended (83.33%)\n", - "Epoch 4976: model set back to train mode\n", - "Epoch 4976: model parameters saved\n", - "Epoch 4977 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4977: avg_loss appended (2.7778)\n", - "Epoch 4977: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4977: accuracy appended (83.33%)\n", - "Epoch 4977: model set back to train mode\n", - "Epoch 4977: model parameters saved\n", - "Epoch 4978 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4978: avg_loss appended (2.7778)\n", - "Epoch 4978: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4978: accuracy appended (83.33%)\n", - "Epoch 4978: model set back to train mode\n", - "Epoch 4978: model parameters saved\n", - "Epoch 4979 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4979: avg_loss appended (2.7778)\n", - "Epoch 4979: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4979: accuracy appended (83.33%)\n", - "Epoch 4979: model set back to train mode\n", - "Epoch 4979: model parameters saved\n", - "Epoch 4980 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4980: avg_loss appended (2.7778)\n", - "Epoch 4980: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4980: accuracy appended (83.33%)\n", - "Epoch 4980: model set back to train mode\n", - "Epoch 4980: model parameters saved\n", - "Epoch 4981 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4981: avg_loss appended (2.7778)\n", - "Epoch 4981: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4981: accuracy appended (83.33%)\n", - "Epoch 4981: model set back to train mode\n", - "Epoch 4981: model parameters saved\n", - "Epoch 4982 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4982: avg_loss appended (2.7778)\n", - "Epoch 4982: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4982: accuracy appended (83.33%)\n", - "Epoch 4982: model set back to train mode\n", - "Epoch 4982: model parameters saved\n", - "Epoch 4983 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4983: avg_loss appended (2.7778)\n", - "Epoch 4983: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4983: accuracy appended (83.33%)\n", - "Epoch 4983: model set back to train mode\n", - "Epoch 4983: model parameters saved\n", - "Epoch 4984 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4984: avg_loss appended (2.7778)\n", - "Epoch 4984: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4984: accuracy appended (83.33%)\n", - "Epoch 4984: model set back to train mode\n", - "Epoch 4984: model parameters saved\n", - "Epoch 4985 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4985: avg_loss appended (2.7778)\n", - "Epoch 4985: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4985: accuracy appended (83.33%)\n", - "Epoch 4985: model set back to train mode\n", - "Epoch 4985: model parameters saved\n", - "Epoch 4986 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4986: avg_loss appended (2.7778)\n", - "Epoch 4986: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4986: accuracy appended (83.33%)\n", - "Epoch 4986: model set back to train mode\n", - "Epoch 4986: model parameters saved\n", - "Epoch 4987 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4987: avg_loss appended (2.7778)\n", - "Epoch 4987: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4987: accuracy appended (83.33%)\n", - "Epoch 4987: model set back to train mode\n", - "Epoch 4987: model parameters saved\n", - "Epoch 4988 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4988: avg_loss appended (2.7778)\n", - "Epoch 4988: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4988: accuracy appended (83.33%)\n", - "Epoch 4988: model set back to train mode\n", - "Epoch 4988: model parameters saved\n", - "Epoch 4989 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4989: avg_loss appended (2.7778)\n", - "Epoch 4989: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4989: accuracy appended (83.33%)\n", - "Epoch 4989: model set back to train mode\n", - "Epoch 4989: model parameters saved\n", - "Epoch 4990 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4990: avg_loss appended (2.7778)\n", - "Epoch 4990: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4990: accuracy appended (83.33%)\n", - "Epoch 4990: model set back to train mode\n", - "Epoch 4990: model parameters saved\n", - "Epoch 4991 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4991: avg_loss appended (2.7778)\n", - "Epoch 4991: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4991: accuracy appended (83.33%)\n", - "Epoch 4991: model set back to train mode\n", - "Epoch 4991: model parameters saved\n", - "Epoch 4992 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4992: avg_loss appended (2.7778)\n", - "Epoch 4992: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4992: accuracy appended (83.33%)\n", - "Epoch 4992: model set back to train mode\n", - "Epoch 4992: model parameters saved\n", - "Epoch 4993 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4993: avg_loss appended (2.7778)\n", - "Epoch 4993: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4993: accuracy appended (83.33%)\n", - "Epoch 4993: model set back to train mode\n", - "Epoch 4993: model parameters saved\n", - "Epoch 4994 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4994: avg_loss appended (2.7778)\n", - "Epoch 4994: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4994: accuracy appended (83.33%)\n", - "Epoch 4994: model set back to train mode\n", - "Epoch 4994: model parameters saved\n", - "Epoch 4995 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4995: avg_loss appended (2.7778)\n", - "Epoch 4995: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4995: accuracy appended (83.33%)\n", - "Epoch 4995: model set back to train mode\n", - "Epoch 4995: model parameters saved\n", - "Epoch 4996 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4996: avg_loss appended (2.7778)\n", - "Epoch 4996: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4996: accuracy appended (83.33%)\n", - "Epoch 4996: model set back to train mode\n", - "Epoch 4996: model parameters saved\n", - "Epoch 4997 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4997: avg_loss appended (2.7778)\n", - "Epoch 4997: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4997: accuracy appended (83.33%)\n", - "Epoch 4997: model set back to train mode\n", - "Epoch 4997: model parameters saved\n", - "Epoch 4998 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4998: avg_loss appended (2.7778)\n", - "Epoch 4998: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4998: accuracy appended (83.33%)\n", - "Epoch 4998: model set back to train mode\n", - "Epoch 4998: model parameters saved\n", - "Epoch 4999 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 4999: avg_loss appended (2.7778)\n", - "Epoch 4999: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 4999: accuracy appended (83.33%)\n", - "Epoch 4999: model set back to train mode\n", - "Epoch 4999: model parameters saved\n", - "Epoch 5000 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5000: avg_loss appended (2.7778)\n", - "Epoch 5000: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5000: accuracy appended (83.33%)\n", - "Epoch 5000: model set back to train mode\n", - "Epoch 5000: model parameters saved\n", - "Epoch 5000/10000, Loss: 2.7778, Accuracy: 83.33%\n", - "Epoch 5000: checkpoint saved\n", - "Epoch 5001 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5001: avg_loss appended (2.7778)\n", - "Epoch 5001: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5001: accuracy appended (83.33%)\n", - "Epoch 5001: model set back to train mode\n", - "Epoch 5001: model parameters saved\n", - "Epoch 5002 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5002: avg_loss appended (2.7778)\n", - "Epoch 5002: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5002: accuracy appended (83.33%)\n", - "Epoch 5002: model set back to train mode\n", - "Epoch 5002: model parameters saved\n", - "Epoch 5003 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5003: avg_loss appended (2.7778)\n", - "Epoch 5003: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5003: accuracy appended (83.33%)\n", - "Epoch 5003: model set back to train mode\n", - "Epoch 5003: model parameters saved\n", - "Epoch 5004 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5004: avg_loss appended (2.7778)\n", - "Epoch 5004: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5004: accuracy appended (83.33%)\n", - "Epoch 5004: model set back to train mode\n", - "Epoch 5004: model parameters saved\n", - "Epoch 5005 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5005: avg_loss appended (2.7778)\n", - "Epoch 5005: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5005: accuracy appended (83.33%)\n", - "Epoch 5005: model set back to train mode\n", - "Epoch 5005: model parameters saved\n", - "Epoch 5006 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5006: avg_loss appended (2.7778)\n", - "Epoch 5006: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5006: accuracy appended (83.33%)\n", - "Epoch 5006: model set back to train mode\n", - "Epoch 5006: model parameters saved\n", - "Epoch 5007 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5007: avg_loss appended (2.7778)\n", - "Epoch 5007: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5007: accuracy appended (83.33%)\n", - "Epoch 5007: model set back to train mode\n", - "Epoch 5007: model parameters saved\n", - "Epoch 5008 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5008: avg_loss appended (2.7778)\n", - "Epoch 5008: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5008: accuracy appended (83.33%)\n", - "Epoch 5008: model set back to train mode\n", - "Epoch 5008: model parameters saved\n", - "Epoch 5009 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5009: avg_loss appended (2.7778)\n", - "Epoch 5009: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5009: accuracy appended (83.33%)\n", - "Epoch 5009: model set back to train mode\n", - "Epoch 5009: model parameters saved\n", - "Epoch 5010 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5010: avg_loss appended (2.7778)\n", - "Epoch 5010: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5010: accuracy appended (83.33%)\n", - "Epoch 5010: model set back to train mode\n", - "Epoch 5010: model parameters saved\n", - "Epoch 5011 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5011: avg_loss appended (2.7778)\n", - "Epoch 5011: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5011: accuracy appended (83.33%)\n", - "Epoch 5011: model set back to train mode\n", - "Epoch 5011: model parameters saved\n", - "Epoch 5012 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5012: avg_loss appended (2.7778)\n", - "Epoch 5012: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5012: accuracy appended (83.33%)\n", - "Epoch 5012: model set back to train mode\n", - "Epoch 5012: model parameters saved\n", - "Epoch 5013 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5013: avg_loss appended (2.7778)\n", - "Epoch 5013: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5013: accuracy appended (83.33%)\n", - "Epoch 5013: model set back to train mode\n", - "Epoch 5013: model parameters saved\n", - "Epoch 5014 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5014: avg_loss appended (2.7778)\n", - "Epoch 5014: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5014: accuracy appended (83.33%)\n", - "Epoch 5014: model set back to train mode\n", - "Epoch 5014: model parameters saved\n", - "Epoch 5015 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5015: avg_loss appended (2.7778)\n", - "Epoch 5015: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5015: accuracy appended (83.33%)\n", - "Epoch 5015: model set back to train mode\n", - "Epoch 5015: model parameters saved\n", - "Epoch 5016 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5016: avg_loss appended (2.7778)\n", - "Epoch 5016: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5016: accuracy appended (83.33%)\n", - "Epoch 5016: model set back to train mode\n", - "Epoch 5016: model parameters saved\n", - "Epoch 5017 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5017: avg_loss appended (2.7778)\n", - "Epoch 5017: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5017: accuracy appended (83.33%)\n", - "Epoch 5017: model set back to train mode\n", - "Epoch 5017: model parameters saved\n", - "Epoch 5018 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5018: avg_loss appended (2.7778)\n", - "Epoch 5018: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5018: accuracy appended (83.33%)\n", - "Epoch 5018: model set back to train mode\n", - "Epoch 5018: model parameters saved\n", - "Epoch 5019 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5019: avg_loss appended (2.7778)\n", - "Epoch 5019: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5019: accuracy appended (83.33%)\n", - "Epoch 5019: model set back to train mode\n", - "Epoch 5019: model parameters saved\n", - "Epoch 5020 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5020: avg_loss appended (2.7778)\n", - "Epoch 5020: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5020: accuracy appended (83.33%)\n", - "Epoch 5020: model set back to train mode\n", - "Epoch 5020: model parameters saved\n", - "Epoch 5021 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5021: avg_loss appended (2.7778)\n", - "Epoch 5021: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5021: accuracy appended (83.33%)\n", - "Epoch 5021: model set back to train mode\n", - "Epoch 5021: model parameters saved\n", - "Epoch 5022 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5022: avg_loss appended (2.7778)\n", - "Epoch 5022: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5022: accuracy appended (83.33%)\n", - "Epoch 5022: model set back to train mode\n", - "Epoch 5022: model parameters saved\n", - "Epoch 5023 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5023: avg_loss appended (2.7778)\n", - "Epoch 5023: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5023: accuracy appended (83.33%)\n", - "Epoch 5023: model set back to train mode\n", - "Epoch 5023: model parameters saved\n", - "Epoch 5024 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5024: avg_loss appended (2.7778)\n", - "Epoch 5024: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5024: accuracy appended (83.33%)\n", - "Epoch 5024: model set back to train mode\n", - "Epoch 5024: model parameters saved\n", - "Epoch 5025 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5025: avg_loss appended (2.7778)\n", - "Epoch 5025: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5025: accuracy appended (83.33%)\n", - "Epoch 5025: model set back to train mode\n", - "Epoch 5025: model parameters saved\n", - "Epoch 5026 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5026: avg_loss appended (2.7778)\n", - "Epoch 5026: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5026: accuracy appended (83.33%)\n", - "Epoch 5026: model set back to train mode\n", - "Epoch 5026: model parameters saved\n", - "Epoch 5027 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5027: avg_loss appended (2.7778)\n", - "Epoch 5027: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5027: accuracy appended (83.33%)\n", - "Epoch 5027: model set back to train mode\n", - "Epoch 5027: model parameters saved\n", - "Epoch 5028 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5028: avg_loss appended (2.7778)\n", - "Epoch 5028: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5028: accuracy appended (83.33%)\n", - "Epoch 5028: model set back to train mode\n", - "Epoch 5028: model parameters saved\n", - "Epoch 5029 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5029: avg_loss appended (2.7778)\n", - "Epoch 5029: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5029: accuracy appended (83.33%)\n", - "Epoch 5029: model set back to train mode\n", - "Epoch 5029: model parameters saved\n", - "Epoch 5030 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5030: avg_loss appended (2.7778)\n", - "Epoch 5030: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5030: accuracy appended (83.33%)\n", - "Epoch 5030: model set back to train mode\n", - "Epoch 5030: model parameters saved\n", - "Epoch 5031 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5031: avg_loss appended (2.7778)\n", - "Epoch 5031: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5031: accuracy appended (83.33%)\n", - "Epoch 5031: model set back to train mode\n", - "Epoch 5031: model parameters saved\n", - "Epoch 5032 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5032: avg_loss appended (2.7778)\n", - "Epoch 5032: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5032: accuracy appended (83.33%)\n", - "Epoch 5032: model set back to train mode\n", - "Epoch 5032: model parameters saved\n", - "Epoch 5033 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5033: avg_loss appended (2.7778)\n", - "Epoch 5033: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5033: accuracy appended (83.33%)\n", - "Epoch 5033: model set back to train mode\n", - "Epoch 5033: model parameters saved\n", - "Epoch 5034 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5034: avg_loss appended (2.7778)\n", - "Epoch 5034: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5034: accuracy appended (83.33%)\n", - "Epoch 5034: model set back to train mode\n", - "Epoch 5034: model parameters saved\n", - "Epoch 5035 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5035: avg_loss appended (2.7778)\n", - "Epoch 5035: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5035: accuracy appended (83.33%)\n", - "Epoch 5035: model set back to train mode\n", - "Epoch 5035: model parameters saved\n", - "Epoch 5036 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5036: avg_loss appended (2.7778)\n", - "Epoch 5036: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5036: accuracy appended (83.33%)\n", - "Epoch 5036: model set back to train mode\n", - "Epoch 5036: model parameters saved\n", - "Epoch 5037 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5037: avg_loss appended (2.7778)\n", - "Epoch 5037: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5037: accuracy appended (83.33%)\n", - "Epoch 5037: model set back to train mode\n", - "Epoch 5037: model parameters saved\n", - "Epoch 5038 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5038: avg_loss appended (2.7778)\n", - "Epoch 5038: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5038: accuracy appended (83.33%)\n", - "Epoch 5038: model set back to train mode\n", - "Epoch 5038: model parameters saved\n", - "Epoch 5039 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5039: avg_loss appended (2.7778)\n", - "Epoch 5039: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5039: accuracy appended (83.33%)\n", - "Epoch 5039: model set back to train mode\n", - "Epoch 5039: model parameters saved\n", - "Epoch 5040 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5040: avg_loss appended (2.7778)\n", - "Epoch 5040: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5040: accuracy appended (83.33%)\n", - "Epoch 5040: model set back to train mode\n", - "Epoch 5040: model parameters saved\n", - "Epoch 5041 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5041: avg_loss appended (2.7778)\n", - "Epoch 5041: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5041: accuracy appended (83.33%)\n", - "Epoch 5041: model set back to train mode\n", - "Epoch 5041: model parameters saved\n", - "Epoch 5042 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5042: avg_loss appended (2.7778)\n", - "Epoch 5042: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5042: accuracy appended (83.33%)\n", - "Epoch 5042: model set back to train mode\n", - "Epoch 5042: model parameters saved\n", - "Epoch 5043 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5043: avg_loss appended (2.7778)\n", - "Epoch 5043: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5043: accuracy appended (83.33%)\n", - "Epoch 5043: model set back to train mode\n", - "Epoch 5043: model parameters saved\n", - "Epoch 5044 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5044: avg_loss appended (2.7778)\n", - "Epoch 5044: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5044: accuracy appended (83.33%)\n", - "Epoch 5044: model set back to train mode\n", - "Epoch 5044: model parameters saved\n", - "Epoch 5045 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5045: avg_loss appended (2.7778)\n", - "Epoch 5045: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5045: accuracy appended (83.33%)\n", - "Epoch 5045: model set back to train mode\n", - "Epoch 5045: model parameters saved\n", - "Epoch 5046 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5046: avg_loss appended (2.7778)\n", - "Epoch 5046: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5046: accuracy appended (83.33%)\n", - "Epoch 5046: model set back to train mode\n", - "Epoch 5046: model parameters saved\n", - "Epoch 5047 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5047: avg_loss appended (2.7778)\n", - "Epoch 5047: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5047: accuracy appended (83.33%)\n", - "Epoch 5047: model set back to train mode\n", - "Epoch 5047: model parameters saved\n", - "Epoch 5048 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5048: avg_loss appended (2.7778)\n", - "Epoch 5048: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5048: accuracy appended (83.33%)\n", - "Epoch 5048: model set back to train mode\n", - "Epoch 5048: model parameters saved\n", - "Epoch 5049 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5049: avg_loss appended (2.7778)\n", - "Epoch 5049: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5049: accuracy appended (83.33%)\n", - "Epoch 5049: model set back to train mode\n", - "Epoch 5049: model parameters saved\n", - "Epoch 5050 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5050: avg_loss appended (2.7778)\n", - "Epoch 5050: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5050: accuracy appended (83.33%)\n", - "Epoch 5050: model set back to train mode\n", - "Epoch 5050: model parameters saved\n", - "Epoch 5051 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5051: avg_loss appended (2.7778)\n", - "Epoch 5051: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5051: accuracy appended (83.33%)\n", - "Epoch 5051: model set back to train mode\n", - "Epoch 5051: model parameters saved\n", - "Epoch 5052 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5052: avg_loss appended (2.7778)\n", - "Epoch 5052: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5052: accuracy appended (83.33%)\n", - "Epoch 5052: model set back to train mode\n", - "Epoch 5052: model parameters saved\n", - "Epoch 5053 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5053: avg_loss appended (2.7778)\n", - "Epoch 5053: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5053: accuracy appended (83.33%)\n", - "Epoch 5053: model set back to train mode\n", - "Epoch 5053: model parameters saved\n", - "Epoch 5054 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5054: avg_loss appended (2.7778)\n", - "Epoch 5054: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5054: accuracy appended (83.33%)\n", - "Epoch 5054: model set back to train mode\n", - "Epoch 5054: model parameters saved\n", - "Epoch 5055 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5055: avg_loss appended (2.7778)\n", - "Epoch 5055: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5055: accuracy appended (83.33%)\n", - "Epoch 5055: model set back to train mode\n", - "Epoch 5055: model parameters saved\n", - "Epoch 5056 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5056: avg_loss appended (2.7778)\n", - "Epoch 5056: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5056: accuracy appended (83.33%)\n", - "Epoch 5056: model set back to train mode\n", - "Epoch 5056: model parameters saved\n", - "Epoch 5057 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5057: avg_loss appended (2.7778)\n", - "Epoch 5057: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5057: accuracy appended (83.33%)\n", - "Epoch 5057: model set back to train mode\n", - "Epoch 5057: model parameters saved\n", - "Epoch 5058 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5058: avg_loss appended (2.7778)\n", - "Epoch 5058: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5058: accuracy appended (83.33%)\n", - "Epoch 5058: model set back to train mode\n", - "Epoch 5058: model parameters saved\n", - "Epoch 5059 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5059: avg_loss appended (2.7778)\n", - "Epoch 5059: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5059: accuracy appended (83.33%)\n", - "Epoch 5059: model set back to train mode\n", - "Epoch 5059: model parameters saved\n", - "Epoch 5060 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5060: avg_loss appended (2.7778)\n", - "Epoch 5060: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5060: accuracy appended (83.33%)\n", - "Epoch 5060: model set back to train mode\n", - "Epoch 5060: model parameters saved\n", - "Epoch 5061 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5061: avg_loss appended (2.7778)\n", - "Epoch 5061: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5061: accuracy appended (83.33%)\n", - "Epoch 5061: model set back to train mode\n", - "Epoch 5061: model parameters saved\n", - "Epoch 5062 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5062: avg_loss appended (2.7778)\n", - "Epoch 5062: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5062: accuracy appended (83.33%)\n", - "Epoch 5062: model set back to train mode\n", - "Epoch 5062: model parameters saved\n", - "Epoch 5063 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5063: avg_loss appended (2.7778)\n", - "Epoch 5063: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5063: accuracy appended (83.33%)\n", - "Epoch 5063: model set back to train mode\n", - "Epoch 5063: model parameters saved\n", - "Epoch 5064 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5064: avg_loss appended (2.7778)\n", - "Epoch 5064: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5064: accuracy appended (83.33%)\n", - "Epoch 5064: model set back to train mode\n", - "Epoch 5064: model parameters saved\n", - "Epoch 5065 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5065: avg_loss appended (2.7778)\n", - "Epoch 5065: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5065: accuracy appended (83.33%)\n", - "Epoch 5065: model set back to train mode\n", - "Epoch 5065: model parameters saved\n", - "Epoch 5066 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5066: avg_loss appended (2.7778)\n", - "Epoch 5066: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5066: accuracy appended (83.33%)\n", - "Epoch 5066: model set back to train mode\n", - "Epoch 5066: model parameters saved\n", - "Epoch 5067 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5067: avg_loss appended (2.7778)\n", - "Epoch 5067: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5067: accuracy appended (83.33%)\n", - "Epoch 5067: model set back to train mode\n", - "Epoch 5067: model parameters saved\n", - "Epoch 5068 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5068: avg_loss appended (2.7778)\n", - "Epoch 5068: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5068: accuracy appended (83.33%)\n", - "Epoch 5068: model set back to train mode\n", - "Epoch 5068: model parameters saved\n", - "Epoch 5069 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5069: avg_loss appended (2.7778)\n", - "Epoch 5069: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5069: accuracy appended (83.33%)\n", - "Epoch 5069: model set back to train mode\n", - "Epoch 5069: model parameters saved\n", - "Epoch 5070 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5070: avg_loss appended (2.7778)\n", - "Epoch 5070: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5070: accuracy appended (83.33%)\n", - "Epoch 5070: model set back to train mode\n", - "Epoch 5070: model parameters saved\n", - "Epoch 5071 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5071: avg_loss appended (2.7778)\n", - "Epoch 5071: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5071: accuracy appended (83.33%)\n", - "Epoch 5071: model set back to train mode\n", - "Epoch 5071: model parameters saved\n", - "Epoch 5072 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5072: avg_loss appended (2.7778)\n", - "Epoch 5072: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5072: accuracy appended (83.33%)\n", - "Epoch 5072: model set back to train mode\n", - "Epoch 5072: model parameters saved\n", - "Epoch 5073 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5073: avg_loss appended (2.7778)\n", - "Epoch 5073: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5073: accuracy appended (83.33%)\n", - "Epoch 5073: model set back to train mode\n", - "Epoch 5073: model parameters saved\n", - "Epoch 5074 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5074: avg_loss appended (2.7778)\n", - "Epoch 5074: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5074: accuracy appended (83.33%)\n", - "Epoch 5074: model set back to train mode\n", - "Epoch 5074: model parameters saved\n", - "Epoch 5075 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5075: avg_loss appended (2.7778)\n", - "Epoch 5075: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5075: accuracy appended (83.33%)\n", - "Epoch 5075: model set back to train mode\n", - "Epoch 5075: model parameters saved\n", - "Epoch 5076 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5076: avg_loss appended (2.7778)\n", - "Epoch 5076: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5076: accuracy appended (83.33%)\n", - "Epoch 5076: model set back to train mode\n", - "Epoch 5076: model parameters saved\n", - "Epoch 5077 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5077: avg_loss appended (2.7778)\n", - "Epoch 5077: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5077: accuracy appended (83.33%)\n", - "Epoch 5077: model set back to train mode\n", - "Epoch 5077: model parameters saved\n", - "Epoch 5078 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5078: avg_loss appended (2.7778)\n", - "Epoch 5078: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5078: accuracy appended (83.33%)\n", - "Epoch 5078: model set back to train mode\n", - "Epoch 5078: model parameters saved\n", - "Epoch 5079 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5079: avg_loss appended (2.7778)\n", - "Epoch 5079: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5079: accuracy appended (83.33%)\n", - "Epoch 5079: model set back to train mode\n", - "Epoch 5079: model parameters saved\n", - "Epoch 5080 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5080: avg_loss appended (2.7778)\n", - "Epoch 5080: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5080: accuracy appended (83.33%)\n", - "Epoch 5080: model set back to train mode\n", - "Epoch 5080: model parameters saved\n", - "Epoch 5081 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5081: avg_loss appended (2.7778)\n", - "Epoch 5081: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5081: accuracy appended (83.33%)\n", - "Epoch 5081: model set back to train mode\n", - "Epoch 5081: model parameters saved\n", - "Epoch 5082 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5082: avg_loss appended (2.7778)\n", - "Epoch 5082: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5082: accuracy appended (83.33%)\n", - "Epoch 5082: model set back to train mode\n", - "Epoch 5082: model parameters saved\n", - "Epoch 5083 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5083: avg_loss appended (2.7778)\n", - "Epoch 5083: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5083: accuracy appended (83.33%)\n", - "Epoch 5083: model set back to train mode\n", - "Epoch 5083: model parameters saved\n", - "Epoch 5084 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5084: avg_loss appended (2.7778)\n", - "Epoch 5084: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5084: accuracy appended (83.33%)\n", - "Epoch 5084: model set back to train mode\n", - "Epoch 5084: model parameters saved\n", - "Epoch 5085 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5085: avg_loss appended (2.7778)\n", - "Epoch 5085: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5085: accuracy appended (83.33%)\n", - "Epoch 5085: model set back to train mode\n", - "Epoch 5085: model parameters saved\n", - "Epoch 5086 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5086: avg_loss appended (2.7778)\n", - "Epoch 5086: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5086: accuracy appended (83.33%)\n", - "Epoch 5086: model set back to train mode\n", - "Epoch 5086: model parameters saved\n", - "Epoch 5087 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5087: avg_loss appended (2.7778)\n", - "Epoch 5087: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5087: accuracy appended (83.33%)\n", - "Epoch 5087: model set back to train mode\n", - "Epoch 5087: model parameters saved\n", - "Epoch 5088 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5088: avg_loss appended (2.7778)\n", - "Epoch 5088: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5088: accuracy appended (83.33%)\n", - "Epoch 5088: model set back to train mode\n", - "Epoch 5088: model parameters saved\n", - "Epoch 5089 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5089: avg_loss appended (2.7778)\n", - "Epoch 5089: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5089: accuracy appended (83.33%)\n", - "Epoch 5089: model set back to train mode\n", - "Epoch 5089: model parameters saved\n", - "Epoch 5090 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5090: avg_loss appended (2.7778)\n", - "Epoch 5090: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5090: accuracy appended (83.33%)\n", - "Epoch 5090: model set back to train mode\n", - "Epoch 5090: model parameters saved\n", - "Epoch 5091 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5091: avg_loss appended (2.7778)\n", - "Epoch 5091: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5091: accuracy appended (83.33%)\n", - "Epoch 5091: model set back to train mode\n", - "Epoch 5091: model parameters saved\n", - "Epoch 5092 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5092: avg_loss appended (2.7778)\n", - "Epoch 5092: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5092: accuracy appended (83.33%)\n", - "Epoch 5092: model set back to train mode\n", - "Epoch 5092: model parameters saved\n", - "Epoch 5093 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5093: avg_loss appended (2.7778)\n", - "Epoch 5093: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5093: accuracy appended (83.33%)\n", - "Epoch 5093: model set back to train mode\n", - "Epoch 5093: model parameters saved\n", - "Epoch 5094 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5094: avg_loss appended (2.7778)\n", - "Epoch 5094: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5094: accuracy appended (83.33%)\n", - "Epoch 5094: model set back to train mode\n", - "Epoch 5094: model parameters saved\n", - "Epoch 5095 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5095: avg_loss appended (2.7778)\n", - "Epoch 5095: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5095: accuracy appended (83.33%)\n", - "Epoch 5095: model set back to train mode\n", - "Epoch 5095: model parameters saved\n", - "Epoch 5096 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5096: avg_loss appended (2.7778)\n", - "Epoch 5096: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5096: accuracy appended (83.33%)\n", - "Epoch 5096: model set back to train mode\n", - "Epoch 5096: model parameters saved\n", - "Epoch 5097 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5097: avg_loss appended (2.7778)\n", - "Epoch 5097: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5097: accuracy appended (83.33%)\n", - "Epoch 5097: model set back to train mode\n", - "Epoch 5097: model parameters saved\n", - "Epoch 5098 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5098: avg_loss appended (2.7778)\n", - "Epoch 5098: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5098: accuracy appended (83.33%)\n", - "Epoch 5098: model set back to train mode\n", - "Epoch 5098: model parameters saved\n", - "Epoch 5099 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5099: avg_loss appended (2.7778)\n", - "Epoch 5099: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5099: accuracy appended (83.33%)\n", - "Epoch 5099: model set back to train mode\n", - "Epoch 5099: model parameters saved\n", - "Epoch 5100 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5100: avg_loss appended (2.7778)\n", - "Epoch 5100: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5100: accuracy appended (83.33%)\n", - "Epoch 5100: model set back to train mode\n", - "Epoch 5100: model parameters saved\n", - "Epoch 5100/10000, Loss: 2.7778, Accuracy: 83.33%\n", - "Epoch 5101 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5101: avg_loss appended (2.7778)\n", - "Epoch 5101: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5101: accuracy appended (83.33%)\n", - "Epoch 5101: model set back to train mode\n", - "Epoch 5101: model parameters saved\n", - "Epoch 5102 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5102: avg_loss appended (2.7778)\n", - "Epoch 5102: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5102: accuracy appended (83.33%)\n", - "Epoch 5102: model set back to train mode\n", - "Epoch 5102: model parameters saved\n", - "Epoch 5103 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5103: avg_loss appended (2.7778)\n", - "Epoch 5103: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5103: accuracy appended (83.33%)\n", - "Epoch 5103: model set back to train mode\n", - "Epoch 5103: model parameters saved\n", - "Epoch 5104 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5104: avg_loss appended (2.7778)\n", - "Epoch 5104: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5104: accuracy appended (83.33%)\n", - "Epoch 5104: model set back to train mode\n", - "Epoch 5104: model parameters saved\n", - "Epoch 5105 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5105: avg_loss appended (2.7778)\n", - "Epoch 5105: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5105: accuracy appended (83.33%)\n", - "Epoch 5105: model set back to train mode\n", - "Epoch 5105: model parameters saved\n", - "Epoch 5106 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5106: avg_loss appended (2.7778)\n", - "Epoch 5106: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5106: accuracy appended (83.33%)\n", - "Epoch 5106: model set back to train mode\n", - "Epoch 5106: model parameters saved\n", - "Epoch 5107 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5107: avg_loss appended (2.7778)\n", - "Epoch 5107: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5107: accuracy appended (83.33%)\n", - "Epoch 5107: model set back to train mode\n", - "Epoch 5107: model parameters saved\n", - "Epoch 5108 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5108: avg_loss appended (2.7778)\n", - "Epoch 5108: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5108: accuracy appended (83.33%)\n", - "Epoch 5108: model set back to train mode\n", - "Epoch 5108: model parameters saved\n", - "Epoch 5109 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5109: avg_loss appended (2.7778)\n", - "Epoch 5109: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5109: accuracy appended (83.33%)\n", - "Epoch 5109: model set back to train mode\n", - "Epoch 5109: model parameters saved\n", - "Epoch 5110 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5110: avg_loss appended (2.7778)\n", - "Epoch 5110: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5110: accuracy appended (83.33%)\n", - "Epoch 5110: model set back to train mode\n", - "Epoch 5110: model parameters saved\n", - "Epoch 5111 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5111: avg_loss appended (2.7778)\n", - "Epoch 5111: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5111: accuracy appended (83.33%)\n", - "Epoch 5111: model set back to train mode\n", - "Epoch 5111: model parameters saved\n", - "Epoch 5112 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5112: avg_loss appended (2.7778)\n", - "Epoch 5112: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5112: accuracy appended (83.33%)\n", - "Epoch 5112: model set back to train mode\n", - "Epoch 5112: model parameters saved\n", - "Epoch 5113 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5113: avg_loss appended (2.7778)\n", - "Epoch 5113: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5113: accuracy appended (83.33%)\n", - "Epoch 5113: model set back to train mode\n", - "Epoch 5113: model parameters saved\n", - "Epoch 5114 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5114: avg_loss appended (2.7778)\n", - "Epoch 5114: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5114: accuracy appended (83.33%)\n", - "Epoch 5114: model set back to train mode\n", - "Epoch 5114: model parameters saved\n", - "Epoch 5115 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5115: avg_loss appended (2.7778)\n", - "Epoch 5115: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5115: accuracy appended (83.33%)\n", - "Epoch 5115: model set back to train mode\n", - "Epoch 5115: model parameters saved\n", - "Epoch 5116 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5116: avg_loss appended (2.7778)\n", - "Epoch 5116: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5116: accuracy appended (83.33%)\n", - "Epoch 5116: model set back to train mode\n", - "Epoch 5116: model parameters saved\n", - "Epoch 5117 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5117: avg_loss appended (2.7778)\n", - "Epoch 5117: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5117: accuracy appended (83.33%)\n", - "Epoch 5117: model set back to train mode\n", - "Epoch 5117: model parameters saved\n", - "Epoch 5118 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5118: avg_loss appended (2.7778)\n", - "Epoch 5118: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5118: accuracy appended (83.33%)\n", - "Epoch 5118: model set back to train mode\n", - "Epoch 5118: model parameters saved\n", - "Epoch 5119 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5119: avg_loss appended (2.7778)\n", - "Epoch 5119: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5119: accuracy appended (83.33%)\n", - "Epoch 5119: model set back to train mode\n", - "Epoch 5119: model parameters saved\n", - "Epoch 5120 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5120: avg_loss appended (2.7778)\n", - "Epoch 5120: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5120: accuracy appended (83.33%)\n", - "Epoch 5120: model set back to train mode\n", - "Epoch 5120: model parameters saved\n", - "Epoch 5121 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5121: avg_loss appended (2.7778)\n", - "Epoch 5121: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5121: accuracy appended (83.33%)\n", - "Epoch 5121: model set back to train mode\n", - "Epoch 5121: model parameters saved\n", - "Epoch 5122 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5122: avg_loss appended (2.7778)\n", - "Epoch 5122: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5122: accuracy appended (83.33%)\n", - "Epoch 5122: model set back to train mode\n", - "Epoch 5122: model parameters saved\n", - "Epoch 5123 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5123: avg_loss appended (2.7778)\n", - "Epoch 5123: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5123: accuracy appended (83.33%)\n", - "Epoch 5123: model set back to train mode\n", - "Epoch 5123: model parameters saved\n", - "Epoch 5124 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5124: avg_loss appended (2.7778)\n", - "Epoch 5124: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5124: accuracy appended (83.33%)\n", - "Epoch 5124: model set back to train mode\n", - "Epoch 5124: model parameters saved\n", - "Epoch 5125 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5125: avg_loss appended (2.7778)\n", - "Epoch 5125: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5125: accuracy appended (83.33%)\n", - "Epoch 5125: model set back to train mode\n", - "Epoch 5125: model parameters saved\n", - "Epoch 5126 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5126: avg_loss appended (2.7778)\n", - "Epoch 5126: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5126: accuracy appended (83.33%)\n", - "Epoch 5126: model set back to train mode\n", - "Epoch 5126: model parameters saved\n", - "Epoch 5127 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5127: avg_loss appended (2.7778)\n", - "Epoch 5127: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5127: accuracy appended (83.33%)\n", - "Epoch 5127: model set back to train mode\n", - "Epoch 5127: model parameters saved\n", - "Epoch 5128 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5128: avg_loss appended (2.7778)\n", - "Epoch 5128: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5128: accuracy appended (83.33%)\n", - "Epoch 5128: model set back to train mode\n", - "Epoch 5128: model parameters saved\n", - "Epoch 5129 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5129: avg_loss appended (2.7778)\n", - "Epoch 5129: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5129: accuracy appended (83.33%)\n", - "Epoch 5129: model set back to train mode\n", - "Epoch 5129: model parameters saved\n", - "Epoch 5130 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5130: avg_loss appended (2.7778)\n", - "Epoch 5130: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5130: accuracy appended (83.33%)\n", - "Epoch 5130: model set back to train mode\n", - "Epoch 5130: model parameters saved\n", - "Epoch 5131 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5131: avg_loss appended (2.7778)\n", - "Epoch 5131: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5131: accuracy appended (83.33%)\n", - "Epoch 5131: model set back to train mode\n", - "Epoch 5131: model parameters saved\n", - "Epoch 5132 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5132: avg_loss appended (2.7778)\n", - "Epoch 5132: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5132: accuracy appended (83.33%)\n", - "Epoch 5132: model set back to train mode\n", - "Epoch 5132: model parameters saved\n", - "Epoch 5133 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5133: avg_loss appended (2.7778)\n", - "Epoch 5133: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5133: accuracy appended (83.33%)\n", - "Epoch 5133: model set back to train mode\n", - "Epoch 5133: model parameters saved\n", - "Epoch 5134 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5134: avg_loss appended (2.7778)\n", - "Epoch 5134: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5134: accuracy appended (83.33%)\n", - "Epoch 5134: model set back to train mode\n", - "Epoch 5134: model parameters saved\n", - "Epoch 5135 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5135: avg_loss appended (2.7778)\n", - "Epoch 5135: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5135: accuracy appended (83.33%)\n", - "Epoch 5135: model set back to train mode\n", - "Epoch 5135: model parameters saved\n", - "Epoch 5136 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5136: avg_loss appended (2.7778)\n", - "Epoch 5136: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5136: accuracy appended (83.33%)\n", - "Epoch 5136: model set back to train mode\n", - "Epoch 5136: model parameters saved\n", - "Epoch 5137 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5137: avg_loss appended (2.7778)\n", - "Epoch 5137: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5137: accuracy appended (83.33%)\n", - "Epoch 5137: model set back to train mode\n", - "Epoch 5137: model parameters saved\n", - "Epoch 5138 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5138: avg_loss appended (2.7778)\n", - "Epoch 5138: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5138: accuracy appended (83.33%)\n", - "Epoch 5138: model set back to train mode\n", - "Epoch 5138: model parameters saved\n", - "Epoch 5139 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5139: avg_loss appended (2.7778)\n", - "Epoch 5139: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5139: accuracy appended (83.33%)\n", - "Epoch 5139: model set back to train mode\n", - "Epoch 5139: model parameters saved\n", - "Epoch 5140 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5140: avg_loss appended (2.7778)\n", - "Epoch 5140: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5140: accuracy appended (83.33%)\n", - "Epoch 5140: model set back to train mode\n", - "Epoch 5140: model parameters saved\n", - "Epoch 5141 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5141: avg_loss appended (2.7778)\n", - "Epoch 5141: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5141: accuracy appended (83.33%)\n", - "Epoch 5141: model set back to train mode\n", - "Epoch 5141: model parameters saved\n", - "Epoch 5142 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5142: avg_loss appended (2.7778)\n", - "Epoch 5142: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5142: accuracy appended (83.33%)\n", - "Epoch 5142: model set back to train mode\n", - "Epoch 5142: model parameters saved\n", - "Epoch 5143 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5143: avg_loss appended (2.7778)\n", - "Epoch 5143: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5143: accuracy appended (83.33%)\n", - "Epoch 5143: model set back to train mode\n", - "Epoch 5143: model parameters saved\n", - "Epoch 5144 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5144: avg_loss appended (2.7778)\n", - "Epoch 5144: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5144: accuracy appended (83.33%)\n", - "Epoch 5144: model set back to train mode\n", - "Epoch 5144: model parameters saved\n", - "Epoch 5145 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5145: avg_loss appended (2.7778)\n", - "Epoch 5145: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5145: accuracy appended (83.33%)\n", - "Epoch 5145: model set back to train mode\n", - "Epoch 5145: model parameters saved\n", - "Epoch 5146 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5146: avg_loss appended (2.7778)\n", - "Epoch 5146: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5146: accuracy appended (83.33%)\n", - "Epoch 5146: model set back to train mode\n", - "Epoch 5146: model parameters saved\n", - "Epoch 5147 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5147: avg_loss appended (2.7778)\n", - "Epoch 5147: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5147: accuracy appended (83.33%)\n", - "Epoch 5147: model set back to train mode\n", - "Epoch 5147: model parameters saved\n", - "Epoch 5148 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5148: avg_loss appended (2.7778)\n", - "Epoch 5148: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5148: accuracy appended (83.33%)\n", - "Epoch 5148: model set back to train mode\n", - "Epoch 5148: model parameters saved\n", - "Epoch 5149 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5149: avg_loss appended (2.7778)\n", - "Epoch 5149: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5149: accuracy appended (83.33%)\n", - "Epoch 5149: model set back to train mode\n", - "Epoch 5149: model parameters saved\n", - "Epoch 5150 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5150: avg_loss appended (2.7778)\n", - "Epoch 5150: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5150: accuracy appended (83.33%)\n", - "Epoch 5150: model set back to train mode\n", - "Epoch 5150: model parameters saved\n", - "Epoch 5151 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5151: avg_loss appended (2.7778)\n", - "Epoch 5151: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5151: accuracy appended (83.33%)\n", - "Epoch 5151: model set back to train mode\n", - "Epoch 5151: model parameters saved\n", - "Epoch 5152 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5152: avg_loss appended (2.7778)\n", - "Epoch 5152: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5152: accuracy appended (83.33%)\n", - "Epoch 5152: model set back to train mode\n", - "Epoch 5152: model parameters saved\n", - "Epoch 5153 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5153: avg_loss appended (2.7778)\n", - "Epoch 5153: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5153: accuracy appended (83.33%)\n", - "Epoch 5153: model set back to train mode\n", - "Epoch 5153: model parameters saved\n", - "Epoch 5154 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5154: avg_loss appended (2.7778)\n", - "Epoch 5154: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5154: accuracy appended (83.33%)\n", - "Epoch 5154: model set back to train mode\n", - "Epoch 5154: model parameters saved\n", - "Epoch 5155 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5155: avg_loss appended (2.7778)\n", - "Epoch 5155: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5155: accuracy appended (83.33%)\n", - "Epoch 5155: model set back to train mode\n", - "Epoch 5155: model parameters saved\n", - "Epoch 5156 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5156: avg_loss appended (2.7778)\n", - "Epoch 5156: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5156: accuracy appended (83.33%)\n", - "Epoch 5156: model set back to train mode\n", - "Epoch 5156: model parameters saved\n", - "Epoch 5157 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5157: avg_loss appended (2.7778)\n", - "Epoch 5157: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5157: accuracy appended (83.33%)\n", - "Epoch 5157: model set back to train mode\n", - "Epoch 5157: model parameters saved\n", - "Epoch 5158 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5158: avg_loss appended (2.7778)\n", - "Epoch 5158: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5158: accuracy appended (83.33%)\n", - "Epoch 5158: model set back to train mode\n", - "Epoch 5158: model parameters saved\n", - "Epoch 5159 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5159: avg_loss appended (2.7778)\n", - "Epoch 5159: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5159: accuracy appended (83.33%)\n", - "Epoch 5159: model set back to train mode\n", - "Epoch 5159: model parameters saved\n", - "Epoch 5160 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5160: avg_loss appended (2.7778)\n", - "Epoch 5160: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5160: accuracy appended (83.33%)\n", - "Epoch 5160: model set back to train mode\n", - "Epoch 5160: model parameters saved\n", - "Epoch 5161 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5161: avg_loss appended (2.7778)\n", - "Epoch 5161: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5161: accuracy appended (83.33%)\n", - "Epoch 5161: model set back to train mode\n", - "Epoch 5161: model parameters saved\n", - "Epoch 5162 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5162: avg_loss appended (2.7778)\n", - "Epoch 5162: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5162: accuracy appended (83.33%)\n", - "Epoch 5162: model set back to train mode\n", - "Epoch 5162: model parameters saved\n", - "Epoch 5163 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5163: avg_loss appended (2.7778)\n", - "Epoch 5163: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5163: accuracy appended (83.33%)\n", - "Epoch 5163: model set back to train mode\n", - "Epoch 5163: model parameters saved\n", - "Epoch 5164 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5164: avg_loss appended (2.7778)\n", - "Epoch 5164: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5164: accuracy appended (83.33%)\n", - "Epoch 5164: model set back to train mode\n", - "Epoch 5164: model parameters saved\n", - "Epoch 5165 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5165: avg_loss appended (2.7778)\n", - "Epoch 5165: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5165: accuracy appended (83.33%)\n", - "Epoch 5165: model set back to train mode\n", - "Epoch 5165: model parameters saved\n", - "Epoch 5166 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5166: avg_loss appended (2.7778)\n", - "Epoch 5166: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5166: accuracy appended (83.33%)\n", - "Epoch 5166: model set back to train mode\n", - "Epoch 5166: model parameters saved\n", - "Epoch 5167 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5167: avg_loss appended (2.7778)\n", - "Epoch 5167: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5167: accuracy appended (83.33%)\n", - "Epoch 5167: model set back to train mode\n", - "Epoch 5167: model parameters saved\n", - "Epoch 5168 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5168: avg_loss appended (2.7778)\n", - "Epoch 5168: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5168: accuracy appended (83.33%)\n", - "Epoch 5168: model set back to train mode\n", - "Epoch 5168: model parameters saved\n", - "Epoch 5169 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5169: avg_loss appended (2.7778)\n", - "Epoch 5169: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5169: accuracy appended (83.33%)\n", - "Epoch 5169: model set back to train mode\n", - "Epoch 5169: model parameters saved\n", - "Epoch 5170 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5170: avg_loss appended (2.7778)\n", - "Epoch 5170: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5170: accuracy appended (83.33%)\n", - "Epoch 5170: model set back to train mode\n", - "Epoch 5170: model parameters saved\n", - "Epoch 5171 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5171: avg_loss appended (2.7778)\n", - "Epoch 5171: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5171: accuracy appended (83.33%)\n", - "Epoch 5171: model set back to train mode\n", - "Epoch 5171: model parameters saved\n", - "Epoch 5172 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5172: avg_loss appended (2.7778)\n", - "Epoch 5172: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5172: accuracy appended (83.33%)\n", - "Epoch 5172: model set back to train mode\n", - "Epoch 5172: model parameters saved\n", - "Epoch 5173 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5173: avg_loss appended (2.7778)\n", - "Epoch 5173: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5173: accuracy appended (83.33%)\n", - "Epoch 5173: model set back to train mode\n", - "Epoch 5173: model parameters saved\n", - "Epoch 5174 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5174: avg_loss appended (2.7778)\n", - "Epoch 5174: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5174: accuracy appended (83.33%)\n", - "Epoch 5174: model set back to train mode\n", - "Epoch 5174: model parameters saved\n", - "Epoch 5175 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5175: avg_loss appended (2.7778)\n", - "Epoch 5175: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5175: accuracy appended (83.33%)\n", - "Epoch 5175: model set back to train mode\n", - "Epoch 5175: model parameters saved\n", - "Epoch 5176 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5176: avg_loss appended (2.7778)\n", - "Epoch 5176: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5176: accuracy appended (83.33%)\n", - "Epoch 5176: model set back to train mode\n", - "Epoch 5176: model parameters saved\n", - "Epoch 5177 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5177: avg_loss appended (2.7778)\n", - "Epoch 5177: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5177: accuracy appended (83.33%)\n", - "Epoch 5177: model set back to train mode\n", - "Epoch 5177: model parameters saved\n", - "Epoch 5178 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5178: avg_loss appended (2.7778)\n", - "Epoch 5178: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5178: accuracy appended (83.33%)\n", - "Epoch 5178: model set back to train mode\n", - "Epoch 5178: model parameters saved\n", - "Epoch 5179 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5179: avg_loss appended (2.7778)\n", - "Epoch 5179: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5179: accuracy appended (83.33%)\n", - "Epoch 5179: model set back to train mode\n", - "Epoch 5179: model parameters saved\n", - "Epoch 5180 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5180: avg_loss appended (2.7778)\n", - "Epoch 5180: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5180: accuracy appended (83.33%)\n", - "Epoch 5180: model set back to train mode\n", - "Epoch 5180: model parameters saved\n", - "Epoch 5181 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5181: avg_loss appended (2.7778)\n", - "Epoch 5181: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5181: accuracy appended (83.33%)\n", - "Epoch 5181: model set back to train mode\n", - "Epoch 5181: model parameters saved\n", - "Epoch 5182 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5182: avg_loss appended (2.7778)\n", - "Epoch 5182: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5182: accuracy appended (83.33%)\n", - "Epoch 5182: model set back to train mode\n", - "Epoch 5182: model parameters saved\n", - "Epoch 5183 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5183: avg_loss appended (2.7778)\n", - "Epoch 5183: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5183: accuracy appended (83.33%)\n", - "Epoch 5183: model set back to train mode\n", - "Epoch 5183: model parameters saved\n", - "Epoch 5184 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5184: avg_loss appended (2.7778)\n", - "Epoch 5184: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5184: accuracy appended (83.33%)\n", - "Epoch 5184: model set back to train mode\n", - "Epoch 5184: model parameters saved\n", - "Epoch 5185 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5185: avg_loss appended (2.7778)\n", - "Epoch 5185: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5185: accuracy appended (83.33%)\n", - "Epoch 5185: model set back to train mode\n", - "Epoch 5185: model parameters saved\n", - "Epoch 5186 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5186: avg_loss appended (2.7778)\n", - "Epoch 5186: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5186: accuracy appended (83.33%)\n", - "Epoch 5186: model set back to train mode\n", - "Epoch 5186: model parameters saved\n", - "Epoch 5187 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5187: avg_loss appended (2.7778)\n", - "Epoch 5187: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5187: accuracy appended (83.33%)\n", - "Epoch 5187: model set back to train mode\n", - "Epoch 5187: model parameters saved\n", - "Epoch 5188 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5188: avg_loss appended (2.7778)\n", - "Epoch 5188: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5188: accuracy appended (83.33%)\n", - "Epoch 5188: model set back to train mode\n", - "Epoch 5188: model parameters saved\n", - "Epoch 5189 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5189: avg_loss appended (2.7778)\n", - "Epoch 5189: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5189: accuracy appended (83.33%)\n", - "Epoch 5189: model set back to train mode\n", - "Epoch 5189: model parameters saved\n", - "Epoch 5190 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5190: avg_loss appended (2.7778)\n", - "Epoch 5190: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5190: accuracy appended (83.33%)\n", - "Epoch 5190: model set back to train mode\n", - "Epoch 5190: model parameters saved\n", - "Epoch 5191 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5191: avg_loss appended (2.7778)\n", - "Epoch 5191: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5191: accuracy appended (83.33%)\n", - "Epoch 5191: model set back to train mode\n", - "Epoch 5191: model parameters saved\n", - "Epoch 5192 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5192: avg_loss appended (2.7778)\n", - "Epoch 5192: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5192: accuracy appended (83.33%)\n", - "Epoch 5192: model set back to train mode\n", - "Epoch 5192: model parameters saved\n", - "Epoch 5193 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5193: avg_loss appended (2.7778)\n", - "Epoch 5193: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5193: accuracy appended (83.33%)\n", - "Epoch 5193: model set back to train mode\n", - "Epoch 5193: model parameters saved\n", - "Epoch 5194 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5194: avg_loss appended (2.7778)\n", - "Epoch 5194: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5194: accuracy appended (83.33%)\n", - "Epoch 5194: model set back to train mode\n", - "Epoch 5194: model parameters saved\n", - "Epoch 5195 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5195: avg_loss appended (2.7778)\n", - "Epoch 5195: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5195: accuracy appended (83.33%)\n", - "Epoch 5195: model set back to train mode\n", - "Epoch 5195: model parameters saved\n", - "Epoch 5196 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5196: avg_loss appended (2.7778)\n", - "Epoch 5196: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5196: accuracy appended (83.33%)\n", - "Epoch 5196: model set back to train mode\n", - "Epoch 5196: model parameters saved\n", - "Epoch 5197 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5197: avg_loss appended (2.7778)\n", - "Epoch 5197: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5197: accuracy appended (83.33%)\n", - "Epoch 5197: model set back to train mode\n", - "Epoch 5197: model parameters saved\n", - "Epoch 5198 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5198: avg_loss appended (2.7778)\n", - "Epoch 5198: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5198: accuracy appended (83.33%)\n", - "Epoch 5198: model set back to train mode\n", - "Epoch 5198: model parameters saved\n", - "Epoch 5199 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5199: avg_loss appended (2.7778)\n", - "Epoch 5199: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5199: accuracy appended (83.33%)\n", - "Epoch 5199: model set back to train mode\n", - "Epoch 5199: model parameters saved\n", - "Epoch 5200 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5200: avg_loss appended (2.7778)\n", - "Epoch 5200: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5200: accuracy appended (83.33%)\n", - "Epoch 5200: model set back to train mode\n", - "Epoch 5200: model parameters saved\n", - "Epoch 5200/10000, Loss: 2.7778, Accuracy: 83.33%\n", - "Epoch 5201 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5201: avg_loss appended (2.7778)\n", - "Epoch 5201: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5201: accuracy appended (83.33%)\n", - "Epoch 5201: model set back to train mode\n", - "Epoch 5201: model parameters saved\n", - "Epoch 5202 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5202: avg_loss appended (2.7778)\n", - "Epoch 5202: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5202: accuracy appended (83.33%)\n", - "Epoch 5202: model set back to train mode\n", - "Epoch 5202: model parameters saved\n", - "Epoch 5203 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5203: avg_loss appended (2.7778)\n", - "Epoch 5203: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5203: accuracy appended (83.33%)\n", - "Epoch 5203: model set back to train mode\n", - "Epoch 5203: model parameters saved\n", - "Epoch 5204 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5204: avg_loss appended (2.7778)\n", - "Epoch 5204: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5204: accuracy appended (83.33%)\n", - "Epoch 5204: model set back to train mode\n", - "Epoch 5204: model parameters saved\n", - "Epoch 5205 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5205: avg_loss appended (2.7778)\n", - "Epoch 5205: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5205: accuracy appended (83.33%)\n", - "Epoch 5205: model set back to train mode\n", - "Epoch 5205: model parameters saved\n", - "Epoch 5206 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5206: avg_loss appended (2.7778)\n", - "Epoch 5206: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5206: accuracy appended (83.33%)\n", - "Epoch 5206: model set back to train mode\n", - "Epoch 5206: model parameters saved\n", - "Epoch 5207 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5207: avg_loss appended (2.7778)\n", - "Epoch 5207: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5207: accuracy appended (83.33%)\n", - "Epoch 5207: model set back to train mode\n", - "Epoch 5207: model parameters saved\n", - "Epoch 5208 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5208: avg_loss appended (2.7778)\n", - "Epoch 5208: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5208: accuracy appended (83.33%)\n", - "Epoch 5208: model set back to train mode\n", - "Epoch 5208: model parameters saved\n", - "Epoch 5209 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5209: avg_loss appended (2.7778)\n", - "Epoch 5209: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5209: accuracy appended (83.33%)\n", - "Epoch 5209: model set back to train mode\n", - "Epoch 5209: model parameters saved\n", - "Epoch 5210 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5210: avg_loss appended (2.7778)\n", - "Epoch 5210: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5210: accuracy appended (83.33%)\n", - "Epoch 5210: model set back to train mode\n", - "Epoch 5210: model parameters saved\n", - "Epoch 5211 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5211: avg_loss appended (2.7778)\n", - "Epoch 5211: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5211: accuracy appended (83.33%)\n", - "Epoch 5211: model set back to train mode\n", - "Epoch 5211: model parameters saved\n", - "Epoch 5212 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5212: avg_loss appended (2.7778)\n", - "Epoch 5212: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5212: accuracy appended (83.33%)\n", - "Epoch 5212: model set back to train mode\n", - "Epoch 5212: model parameters saved\n", - "Epoch 5213 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5213: avg_loss appended (2.7778)\n", - "Epoch 5213: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5213: accuracy appended (83.33%)\n", - "Epoch 5213: model set back to train mode\n", - "Epoch 5213: model parameters saved\n", - "Epoch 5214 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5214: avg_loss appended (2.7778)\n", - "Epoch 5214: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5214: accuracy appended (83.33%)\n", - "Epoch 5214: model set back to train mode\n", - "Epoch 5214: model parameters saved\n", - "Epoch 5215 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5215: avg_loss appended (2.7778)\n", - "Epoch 5215: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5215: accuracy appended (83.33%)\n", - "Epoch 5215: model set back to train mode\n", - "Epoch 5215: model parameters saved\n", - "Epoch 5216 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5216: avg_loss appended (2.7778)\n", - "Epoch 5216: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5216: accuracy appended (83.33%)\n", - "Epoch 5216: model set back to train mode\n", - "Epoch 5216: model parameters saved\n", - "Epoch 5217 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5217: avg_loss appended (2.7778)\n", - "Epoch 5217: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5217: accuracy appended (83.33%)\n", - "Epoch 5217: model set back to train mode\n", - "Epoch 5217: model parameters saved\n", - "Epoch 5218 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5218: avg_loss appended (2.7778)\n", - "Epoch 5218: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5218: accuracy appended (83.33%)\n", - "Epoch 5218: model set back to train mode\n", - "Epoch 5218: model parameters saved\n", - "Epoch 5219 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5219: avg_loss appended (2.7778)\n", - "Epoch 5219: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5219: accuracy appended (83.33%)\n", - "Epoch 5219: model set back to train mode\n", - "Epoch 5219: model parameters saved\n", - "Epoch 5220 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5220: avg_loss appended (2.7778)\n", - "Epoch 5220: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5220: accuracy appended (83.33%)\n", - "Epoch 5220: model set back to train mode\n", - "Epoch 5220: model parameters saved\n", - "Epoch 5221 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5221: avg_loss appended (2.7778)\n", - "Epoch 5221: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5221: accuracy appended (83.33%)\n", - "Epoch 5221: model set back to train mode\n", - "Epoch 5221: model parameters saved\n", - "Epoch 5222 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5222: avg_loss appended (2.7778)\n", - "Epoch 5222: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5222: accuracy appended (83.33%)\n", - "Epoch 5222: model set back to train mode\n", - "Epoch 5222: model parameters saved\n", - "Epoch 5223 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5223: avg_loss appended (2.7778)\n", - "Epoch 5223: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5223: accuracy appended (83.33%)\n", - "Epoch 5223: model set back to train mode\n", - "Epoch 5223: model parameters saved\n", - "Epoch 5224 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5224: avg_loss appended (2.7778)\n", - "Epoch 5224: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5224: accuracy appended (83.33%)\n", - "Epoch 5224: model set back to train mode\n", - "Epoch 5224: model parameters saved\n", - "Epoch 5225 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5225: avg_loss appended (2.7778)\n", - "Epoch 5225: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5225: accuracy appended (83.33%)\n", - "Epoch 5225: model set back to train mode\n", - "Epoch 5225: model parameters saved\n", - "Epoch 5226 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5226: avg_loss appended (2.7778)\n", - "Epoch 5226: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5226: accuracy appended (83.33%)\n", - "Epoch 5226: model set back to train mode\n", - "Epoch 5226: model parameters saved\n", - "Epoch 5227 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5227: avg_loss appended (2.7778)\n", - "Epoch 5227: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5227: accuracy appended (83.33%)\n", - "Epoch 5227: model set back to train mode\n", - "Epoch 5227: model parameters saved\n", - "Epoch 5228 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5228: avg_loss appended (2.7778)\n", - "Epoch 5228: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5228: accuracy appended (83.33%)\n", - "Epoch 5228: model set back to train mode\n", - "Epoch 5228: model parameters saved\n", - "Epoch 5229 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5229: avg_loss appended (2.7778)\n", - "Epoch 5229: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5229: accuracy appended (83.33%)\n", - "Epoch 5229: model set back to train mode\n", - "Epoch 5229: model parameters saved\n", - "Epoch 5230 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5230: avg_loss appended (2.7778)\n", - "Epoch 5230: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5230: accuracy appended (83.33%)\n", - "Epoch 5230: model set back to train mode\n", - "Epoch 5230: model parameters saved\n", - "Epoch 5231 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5231: avg_loss appended (2.7778)\n", - "Epoch 5231: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5231: accuracy appended (83.33%)\n", - "Epoch 5231: model set back to train mode\n", - "Epoch 5231: model parameters saved\n", - "Epoch 5232 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5232: avg_loss appended (2.7778)\n", - "Epoch 5232: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5232: accuracy appended (83.33%)\n", - "Epoch 5232: model set back to train mode\n", - "Epoch 5232: model parameters saved\n", - "Epoch 5233 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5233: avg_loss appended (2.7778)\n", - "Epoch 5233: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5233: accuracy appended (83.33%)\n", - "Epoch 5233: model set back to train mode\n", - "Epoch 5233: model parameters saved\n", - "Epoch 5234 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5234: avg_loss appended (2.7778)\n", - "Epoch 5234: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5234: accuracy appended (83.33%)\n", - "Epoch 5234: model set back to train mode\n", - "Epoch 5234: model parameters saved\n", - "Epoch 5235 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5235: avg_loss appended (2.7778)\n", - "Epoch 5235: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5235: accuracy appended (83.33%)\n", - "Epoch 5235: model set back to train mode\n", - "Epoch 5235: model parameters saved\n", - "Epoch 5236 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5236: avg_loss appended (2.7778)\n", - "Epoch 5236: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5236: accuracy appended (83.33%)\n", - "Epoch 5236: model set back to train mode\n", - "Epoch 5236: model parameters saved\n", - "Epoch 5237 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5237: avg_loss appended (2.7778)\n", - "Epoch 5237: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5237: accuracy appended (83.33%)\n", - "Epoch 5237: model set back to train mode\n", - "Epoch 5237: model parameters saved\n", - "Epoch 5238 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5238: avg_loss appended (2.7778)\n", - "Epoch 5238: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5238: accuracy appended (83.33%)\n", - "Epoch 5238: model set back to train mode\n", - "Epoch 5238: model parameters saved\n", - "Epoch 5239 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5239: avg_loss appended (2.7778)\n", - "Epoch 5239: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5239: accuracy appended (83.33%)\n", - "Epoch 5239: model set back to train mode\n", - "Epoch 5239: model parameters saved\n", - "Epoch 5240 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5240: avg_loss appended (2.7778)\n", - "Epoch 5240: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5240: accuracy appended (83.33%)\n", - "Epoch 5240: model set back to train mode\n", - "Epoch 5240: model parameters saved\n", - "Epoch 5241 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5241: avg_loss appended (2.7778)\n", - "Epoch 5241: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5241: accuracy appended (83.33%)\n", - "Epoch 5241: model set back to train mode\n", - "Epoch 5241: model parameters saved\n", - "Epoch 5242 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5242: avg_loss appended (2.7778)\n", - "Epoch 5242: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5242: accuracy appended (83.33%)\n", - "Epoch 5242: model set back to train mode\n", - "Epoch 5242: model parameters saved\n", - "Epoch 5243 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5243: avg_loss appended (2.7778)\n", - "Epoch 5243: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5243: accuracy appended (83.33%)\n", - "Epoch 5243: model set back to train mode\n", - "Epoch 5243: model parameters saved\n", - "Epoch 5244 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5244: avg_loss appended (2.7778)\n", - "Epoch 5244: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5244: accuracy appended (83.33%)\n", - "Epoch 5244: model set back to train mode\n", - "Epoch 5244: model parameters saved\n", - "Epoch 5245 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5245: avg_loss appended (2.7778)\n", - "Epoch 5245: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5245: accuracy appended (83.33%)\n", - "Epoch 5245: model set back to train mode\n", - "Epoch 5245: model parameters saved\n", - "Epoch 5246 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5246: avg_loss appended (2.7778)\n", - "Epoch 5246: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5246: accuracy appended (83.33%)\n", - "Epoch 5246: model set back to train mode\n", - "Epoch 5246: model parameters saved\n", - "Epoch 5247 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5247: avg_loss appended (2.7778)\n", - "Epoch 5247: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5247: accuracy appended (83.33%)\n", - "Epoch 5247: model set back to train mode\n", - "Epoch 5247: model parameters saved\n", - "Epoch 5248 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5248: avg_loss appended (2.7778)\n", - "Epoch 5248: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5248: accuracy appended (83.33%)\n", - "Epoch 5248: model set back to train mode\n", - "Epoch 5248: model parameters saved\n", - "Epoch 5249 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5249: avg_loss appended (2.7778)\n", - "Epoch 5249: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5249: accuracy appended (83.33%)\n", - "Epoch 5249: model set back to train mode\n", - "Epoch 5249: model parameters saved\n", - "Epoch 5250 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5250: avg_loss appended (2.7778)\n", - "Epoch 5250: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5250: accuracy appended (83.33%)\n", - "Epoch 5250: model set back to train mode\n", - "Epoch 5250: model parameters saved\n", - "Epoch 5251 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5251: avg_loss appended (2.7778)\n", - "Epoch 5251: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5251: accuracy appended (83.33%)\n", - "Epoch 5251: model set back to train mode\n", - "Epoch 5251: model parameters saved\n", - "Epoch 5252 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5252: avg_loss appended (2.7778)\n", - "Epoch 5252: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5252: accuracy appended (83.33%)\n", - "Epoch 5252: model set back to train mode\n", - "Epoch 5252: model parameters saved\n", - "Epoch 5253 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5253: avg_loss appended (2.7778)\n", - "Epoch 5253: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5253: accuracy appended (83.33%)\n", - "Epoch 5253: model set back to train mode\n", - "Epoch 5253: model parameters saved\n", - "Epoch 5254 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5254: avg_loss appended (2.7778)\n", - "Epoch 5254: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5254: accuracy appended (83.33%)\n", - "Epoch 5254: model set back to train mode\n", - "Epoch 5254: model parameters saved\n", - "Epoch 5255 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5255: avg_loss appended (2.7778)\n", - "Epoch 5255: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5255: accuracy appended (83.33%)\n", - "Epoch 5255: model set back to train mode\n", - "Epoch 5255: model parameters saved\n", - "Epoch 5256 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5256: avg_loss appended (2.7778)\n", - "Epoch 5256: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5256: accuracy appended (83.33%)\n", - "Epoch 5256: model set back to train mode\n", - "Epoch 5256: model parameters saved\n", - "Epoch 5257 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5257: avg_loss appended (2.7778)\n", - "Epoch 5257: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5257: accuracy appended (83.33%)\n", - "Epoch 5257: model set back to train mode\n", - "Epoch 5257: model parameters saved\n", - "Epoch 5258 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5258: avg_loss appended (2.7778)\n", - "Epoch 5258: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5258: accuracy appended (83.33%)\n", - "Epoch 5258: model set back to train mode\n", - "Epoch 5258: model parameters saved\n", - "Epoch 5259 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5259: avg_loss appended (2.7778)\n", - "Epoch 5259: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5259: accuracy appended (83.33%)\n", - "Epoch 5259: model set back to train mode\n", - "Epoch 5259: model parameters saved\n", - "Epoch 5260 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5260: avg_loss appended (2.7778)\n", - "Epoch 5260: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5260: accuracy appended (83.33%)\n", - "Epoch 5260: model set back to train mode\n", - "Epoch 5260: model parameters saved\n", - "Epoch 5261 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5261: avg_loss appended (2.7778)\n", - "Epoch 5261: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5261: accuracy appended (83.33%)\n", - "Epoch 5261: model set back to train mode\n", - "Epoch 5261: model parameters saved\n", - "Epoch 5262 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5262: avg_loss appended (2.7778)\n", - "Epoch 5262: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5262: accuracy appended (83.33%)\n", - "Epoch 5262: model set back to train mode\n", - "Epoch 5262: model parameters saved\n", - "Epoch 5263 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5263: avg_loss appended (2.7778)\n", - "Epoch 5263: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5263: accuracy appended (83.33%)\n", - "Epoch 5263: model set back to train mode\n", - "Epoch 5263: model parameters saved\n", - "Epoch 5264 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5264: avg_loss appended (2.7778)\n", - "Epoch 5264: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5264: accuracy appended (83.33%)\n", - "Epoch 5264: model set back to train mode\n", - "Epoch 5264: model parameters saved\n", - "Epoch 5265 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5265: avg_loss appended (2.7778)\n", - "Epoch 5265: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5265: accuracy appended (83.33%)\n", - "Epoch 5265: model set back to train mode\n", - "Epoch 5265: model parameters saved\n", - "Epoch 5266 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5266: avg_loss appended (2.7778)\n", - "Epoch 5266: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5266: accuracy appended (83.33%)\n", - "Epoch 5266: model set back to train mode\n", - "Epoch 5266: model parameters saved\n", - "Epoch 5267 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5267: avg_loss appended (2.7778)\n", - "Epoch 5267: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5267: accuracy appended (83.33%)\n", - "Epoch 5267: model set back to train mode\n", - "Epoch 5267: model parameters saved\n", - "Epoch 5268 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5268: avg_loss appended (2.7778)\n", - "Epoch 5268: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5268: accuracy appended (83.33%)\n", - "Epoch 5268: model set back to train mode\n", - "Epoch 5268: model parameters saved\n", - "Epoch 5269 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5269: avg_loss appended (2.7778)\n", - "Epoch 5269: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5269: accuracy appended (83.33%)\n", - "Epoch 5269: model set back to train mode\n", - "Epoch 5269: model parameters saved\n", - "Epoch 5270 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5270: avg_loss appended (2.7778)\n", - "Epoch 5270: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5270: accuracy appended (83.33%)\n", - "Epoch 5270: model set back to train mode\n", - "Epoch 5270: model parameters saved\n", - "Epoch 5271 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5271: avg_loss appended (2.7778)\n", - "Epoch 5271: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5271: accuracy appended (83.33%)\n", - "Epoch 5271: model set back to train mode\n", - "Epoch 5271: model parameters saved\n", - "Epoch 5272 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5272: avg_loss appended (2.7778)\n", - "Epoch 5272: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5272: accuracy appended (83.33%)\n", - "Epoch 5272: model set back to train mode\n", - "Epoch 5272: model parameters saved\n", - "Epoch 5273 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5273: avg_loss appended (2.7778)\n", - "Epoch 5273: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5273: accuracy appended (83.33%)\n", - "Epoch 5273: model set back to train mode\n", - "Epoch 5273: model parameters saved\n", - "Epoch 5274 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5274: avg_loss appended (2.7778)\n", - "Epoch 5274: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5274: accuracy appended (83.33%)\n", - "Epoch 5274: model set back to train mode\n", - "Epoch 5274: model parameters saved\n", - "Epoch 5275 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5275: avg_loss appended (2.7778)\n", - "Epoch 5275: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5275: accuracy appended (83.33%)\n", - "Epoch 5275: model set back to train mode\n", - "Epoch 5275: model parameters saved\n", - "Epoch 5276 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5276: avg_loss appended (2.7778)\n", - "Epoch 5276: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5276: accuracy appended (83.33%)\n", - "Epoch 5276: model set back to train mode\n", - "Epoch 5276: model parameters saved\n", - "Epoch 5277 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5277: avg_loss appended (2.7778)\n", - "Epoch 5277: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5277: accuracy appended (83.33%)\n", - "Epoch 5277: model set back to train mode\n", - "Epoch 5277: model parameters saved\n", - "Epoch 5278 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5278: avg_loss appended (2.7778)\n", - "Epoch 5278: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5278: accuracy appended (83.33%)\n", - "Epoch 5278: model set back to train mode\n", - "Epoch 5278: model parameters saved\n", - "Epoch 5279 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5279: avg_loss appended (2.7778)\n", - "Epoch 5279: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5279: accuracy appended (83.33%)\n", - "Epoch 5279: model set back to train mode\n", - "Epoch 5279: model parameters saved\n", - "Epoch 5280 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5280: avg_loss appended (2.7778)\n", - "Epoch 5280: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5280: accuracy appended (83.33%)\n", - "Epoch 5280: model set back to train mode\n", - "Epoch 5280: model parameters saved\n", - "Epoch 5281 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5281: avg_loss appended (2.7778)\n", - "Epoch 5281: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5281: accuracy appended (83.33%)\n", - "Epoch 5281: model set back to train mode\n", - "Epoch 5281: model parameters saved\n", - "Epoch 5282 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5282: avg_loss appended (2.7778)\n", - "Epoch 5282: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5282: accuracy appended (83.33%)\n", - "Epoch 5282: model set back to train mode\n", - "Epoch 5282: model parameters saved\n", - "Epoch 5283 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5283: avg_loss appended (2.7778)\n", - "Epoch 5283: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5283: accuracy appended (83.33%)\n", - "Epoch 5283: model set back to train mode\n", - "Epoch 5283: model parameters saved\n", - "Epoch 5284 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5284: avg_loss appended (2.7778)\n", - "Epoch 5284: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5284: accuracy appended (83.33%)\n", - "Epoch 5284: model set back to train mode\n", - "Epoch 5284: model parameters saved\n", - "Epoch 5285 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5285: avg_loss appended (2.7778)\n", - "Epoch 5285: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5285: accuracy appended (83.33%)\n", - "Epoch 5285: model set back to train mode\n", - "Epoch 5285: model parameters saved\n", - "Epoch 5286 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5286: avg_loss appended (2.7778)\n", - "Epoch 5286: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5286: accuracy appended (83.33%)\n", - "Epoch 5286: model set back to train mode\n", - "Epoch 5286: model parameters saved\n", - "Epoch 5287 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5287: avg_loss appended (2.7778)\n", - "Epoch 5287: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5287: accuracy appended (83.33%)\n", - "Epoch 5287: model set back to train mode\n", - "Epoch 5287: model parameters saved\n", - "Epoch 5288 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5288: avg_loss appended (2.7778)\n", - "Epoch 5288: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5288: accuracy appended (83.33%)\n", - "Epoch 5288: model set back to train mode\n", - "Epoch 5288: model parameters saved\n", - "Epoch 5289 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5289: avg_loss appended (2.7778)\n", - "Epoch 5289: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5289: accuracy appended (83.33%)\n", - "Epoch 5289: model set back to train mode\n", - "Epoch 5289: model parameters saved\n", - "Epoch 5290 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5290: avg_loss appended (2.7778)\n", - "Epoch 5290: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5290: accuracy appended (83.33%)\n", - "Epoch 5290: model set back to train mode\n", - "Epoch 5290: model parameters saved\n", - "Epoch 5291 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5291: avg_loss appended (2.7778)\n", - "Epoch 5291: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5291: accuracy appended (83.33%)\n", - "Epoch 5291: model set back to train mode\n", - "Epoch 5291: model parameters saved\n", - "Epoch 5292 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5292: avg_loss appended (2.7778)\n", - "Epoch 5292: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5292: accuracy appended (83.33%)\n", - "Epoch 5292: model set back to train mode\n", - "Epoch 5292: model parameters saved\n", - "Epoch 5293 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5293: avg_loss appended (2.7778)\n", - "Epoch 5293: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5293: accuracy appended (83.33%)\n", - "Epoch 5293: model set back to train mode\n", - "Epoch 5293: model parameters saved\n", - "Epoch 5294 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5294: avg_loss appended (2.7778)\n", - "Epoch 5294: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5294: accuracy appended (83.33%)\n", - "Epoch 5294: model set back to train mode\n", - "Epoch 5294: model parameters saved\n", - "Epoch 5295 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5295: avg_loss appended (2.7778)\n", - "Epoch 5295: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5295: accuracy appended (83.33%)\n", - "Epoch 5295: model set back to train mode\n", - "Epoch 5295: model parameters saved\n", - "Epoch 5296 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5296: avg_loss appended (2.7778)\n", - "Epoch 5296: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5296: accuracy appended (83.33%)\n", - "Epoch 5296: model set back to train mode\n", - "Epoch 5296: model parameters saved\n", - "Epoch 5297 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5297: avg_loss appended (2.7778)\n", - "Epoch 5297: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5297: accuracy appended (83.33%)\n", - "Epoch 5297: model set back to train mode\n", - "Epoch 5297: model parameters saved\n", - "Epoch 5298 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5298: avg_loss appended (2.7778)\n", - "Epoch 5298: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5298: accuracy appended (83.33%)\n", - "Epoch 5298: model set back to train mode\n", - "Epoch 5298: model parameters saved\n", - "Epoch 5299 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5299: avg_loss appended (2.7778)\n", - "Epoch 5299: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5299: accuracy appended (83.33%)\n", - "Epoch 5299: model set back to train mode\n", - "Epoch 5299: model parameters saved\n", - "Epoch 5300 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5300: avg_loss appended (2.7778)\n", - "Epoch 5300: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5300: accuracy appended (83.33%)\n", - "Epoch 5300: model set back to train mode\n", - "Epoch 5300: model parameters saved\n", - "Epoch 5300/10000, Loss: 2.7778, Accuracy: 83.33%\n", - "Epoch 5301 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5301: avg_loss appended (2.7778)\n", - "Epoch 5301: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5301: accuracy appended (83.33%)\n", - "Epoch 5301: model set back to train mode\n", - "Epoch 5301: model parameters saved\n", - "Epoch 5302 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5302: avg_loss appended (2.7778)\n", - "Epoch 5302: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5302: accuracy appended (83.33%)\n", - "Epoch 5302: model set back to train mode\n", - "Epoch 5302: model parameters saved\n", - "Epoch 5303 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5303: avg_loss appended (2.7778)\n", - "Epoch 5303: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5303: accuracy appended (83.33%)\n", - "Epoch 5303: model set back to train mode\n", - "Epoch 5303: model parameters saved\n", - "Epoch 5304 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5304: avg_loss appended (2.7778)\n", - "Epoch 5304: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5304: accuracy appended (83.33%)\n", - "Epoch 5304: model set back to train mode\n", - "Epoch 5304: model parameters saved\n", - "Epoch 5305 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5305: avg_loss appended (2.7778)\n", - "Epoch 5305: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5305: accuracy appended (83.33%)\n", - "Epoch 5305: model set back to train mode\n", - "Epoch 5305: model parameters saved\n", - "Epoch 5306 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5306: avg_loss appended (2.7778)\n", - "Epoch 5306: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5306: accuracy appended (83.33%)\n", - "Epoch 5306: model set back to train mode\n", - "Epoch 5306: model parameters saved\n", - "Epoch 5307 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5307: avg_loss appended (2.7778)\n", - "Epoch 5307: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5307: accuracy appended (83.33%)\n", - "Epoch 5307: model set back to train mode\n", - "Epoch 5307: model parameters saved\n", - "Epoch 5308 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5308: avg_loss appended (2.7778)\n", - "Epoch 5308: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5308: accuracy appended (83.33%)\n", - "Epoch 5308: model set back to train mode\n", - "Epoch 5308: model parameters saved\n", - "Epoch 5309 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5309: avg_loss appended (2.7778)\n", - "Epoch 5309: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5309: accuracy appended (83.33%)\n", - "Epoch 5309: model set back to train mode\n", - "Epoch 5309: model parameters saved\n", - "Epoch 5310 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5310: avg_loss appended (2.7778)\n", - "Epoch 5310: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5310: accuracy appended (83.33%)\n", - "Epoch 5310: model set back to train mode\n", - "Epoch 5310: model parameters saved\n", - "Epoch 5311 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5311: avg_loss appended (2.7778)\n", - "Epoch 5311: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5311: accuracy appended (83.33%)\n", - "Epoch 5311: model set back to train mode\n", - "Epoch 5311: model parameters saved\n", - "Epoch 5312 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5312: avg_loss appended (2.7778)\n", - "Epoch 5312: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5312: accuracy appended (83.33%)\n", - "Epoch 5312: model set back to train mode\n", - "Epoch 5312: model parameters saved\n", - "Epoch 5313 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5313: avg_loss appended (2.7778)\n", - "Epoch 5313: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5313: accuracy appended (83.33%)\n", - "Epoch 5313: model set back to train mode\n", - "Epoch 5313: model parameters saved\n", - "Epoch 5314 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5314: avg_loss appended (2.7778)\n", - "Epoch 5314: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5314: accuracy appended (83.33%)\n", - "Epoch 5314: model set back to train mode\n", - "Epoch 5314: model parameters saved\n", - "Epoch 5315 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5315: avg_loss appended (2.7778)\n", - "Epoch 5315: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5315: accuracy appended (83.33%)\n", - "Epoch 5315: model set back to train mode\n", - "Epoch 5315: model parameters saved\n", - "Epoch 5316 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5316: avg_loss appended (2.7778)\n", - "Epoch 5316: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5316: accuracy appended (83.33%)\n", - "Epoch 5316: model set back to train mode\n", - "Epoch 5316: model parameters saved\n", - "Epoch 5317 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5317: avg_loss appended (2.7778)\n", - "Epoch 5317: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5317: accuracy appended (83.33%)\n", - "Epoch 5317: model set back to train mode\n", - "Epoch 5317: model parameters saved\n", - "Epoch 5318 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5318: avg_loss appended (2.7778)\n", - "Epoch 5318: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5318: accuracy appended (83.33%)\n", - "Epoch 5318: model set back to train mode\n", - "Epoch 5318: model parameters saved\n", - "Epoch 5319 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5319: avg_loss appended (2.7778)\n", - "Epoch 5319: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5319: accuracy appended (83.33%)\n", - "Epoch 5319: model set back to train mode\n", - "Epoch 5319: model parameters saved\n", - "Epoch 5320 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5320: avg_loss appended (2.7778)\n", - "Epoch 5320: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5320: accuracy appended (83.33%)\n", - "Epoch 5320: model set back to train mode\n", - "Epoch 5320: model parameters saved\n", - "Epoch 5321 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5321: avg_loss appended (2.7778)\n", - "Epoch 5321: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5321: accuracy appended (83.33%)\n", - "Epoch 5321: model set back to train mode\n", - "Epoch 5321: model parameters saved\n", - "Epoch 5322 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5322: avg_loss appended (2.7778)\n", - "Epoch 5322: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5322: accuracy appended (83.33%)\n", - "Epoch 5322: model set back to train mode\n", - "Epoch 5322: model parameters saved\n", - "Epoch 5323 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5323: avg_loss appended (2.7778)\n", - "Epoch 5323: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5323: accuracy appended (83.33%)\n", - "Epoch 5323: model set back to train mode\n", - "Epoch 5323: model parameters saved\n", - "Epoch 5324 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5324: avg_loss appended (2.7778)\n", - "Epoch 5324: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5324: accuracy appended (83.33%)\n", - "Epoch 5324: model set back to train mode\n", - "Epoch 5324: model parameters saved\n", - "Epoch 5325 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5325: avg_loss appended (2.7778)\n", - "Epoch 5325: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5325: accuracy appended (83.33%)\n", - "Epoch 5325: model set back to train mode\n", - "Epoch 5325: model parameters saved\n", - "Epoch 5326 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5326: avg_loss appended (2.7778)\n", - "Epoch 5326: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5326: accuracy appended (83.33%)\n", - "Epoch 5326: model set back to train mode\n", - "Epoch 5326: model parameters saved\n", - "Epoch 5327 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5327: avg_loss appended (2.7778)\n", - "Epoch 5327: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5327: accuracy appended (83.33%)\n", - "Epoch 5327: model set back to train mode\n", - "Epoch 5327: model parameters saved\n", - "Epoch 5328 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5328: avg_loss appended (2.7778)\n", - "Epoch 5328: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5328: accuracy appended (83.33%)\n", - "Epoch 5328: model set back to train mode\n", - "Epoch 5328: model parameters saved\n", - "Epoch 5329 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5329: avg_loss appended (2.7778)\n", - "Epoch 5329: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5329: accuracy appended (83.33%)\n", - "Epoch 5329: model set back to train mode\n", - "Epoch 5329: model parameters saved\n", - "Epoch 5330 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5330: avg_loss appended (2.7778)\n", - "Epoch 5330: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5330: accuracy appended (83.33%)\n", - "Epoch 5330: model set back to train mode\n", - "Epoch 5330: model parameters saved\n", - "Epoch 5331 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5331: avg_loss appended (2.7778)\n", - "Epoch 5331: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5331: accuracy appended (83.33%)\n", - "Epoch 5331: model set back to train mode\n", - "Epoch 5331: model parameters saved\n", - "Epoch 5332 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5332: avg_loss appended (2.7778)\n", - "Epoch 5332: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5332: accuracy appended (83.33%)\n", - "Epoch 5332: model set back to train mode\n", - "Epoch 5332: model parameters saved\n", - "Epoch 5333 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5333: avg_loss appended (2.7778)\n", - "Epoch 5333: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5333: accuracy appended (83.33%)\n", - "Epoch 5333: model set back to train mode\n", - "Epoch 5333: model parameters saved\n", - "Epoch 5334 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5334: avg_loss appended (2.7778)\n", - "Epoch 5334: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5334: accuracy appended (83.33%)\n", - "Epoch 5334: model set back to train mode\n", - "Epoch 5334: model parameters saved\n", - "Epoch 5335 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5335: avg_loss appended (2.7778)\n", - "Epoch 5335: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5335: accuracy appended (83.33%)\n", - "Epoch 5335: model set back to train mode\n", - "Epoch 5335: model parameters saved\n", - "Epoch 5336 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5336: avg_loss appended (2.7778)\n", - "Epoch 5336: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5336: accuracy appended (83.33%)\n", - "Epoch 5336: model set back to train mode\n", - "Epoch 5336: model parameters saved\n", - "Epoch 5337 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5337: avg_loss appended (2.7778)\n", - "Epoch 5337: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5337: accuracy appended (83.33%)\n", - "Epoch 5337: model set back to train mode\n", - "Epoch 5337: model parameters saved\n", - "Epoch 5338 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5338: avg_loss appended (2.7778)\n", - "Epoch 5338: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5338: accuracy appended (83.33%)\n", - "Epoch 5338: model set back to train mode\n", - "Epoch 5338: model parameters saved\n", - "Epoch 5339 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5339: avg_loss appended (2.7778)\n", - "Epoch 5339: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5339: accuracy appended (83.33%)\n", - "Epoch 5339: model set back to train mode\n", - "Epoch 5339: model parameters saved\n", - "Epoch 5340 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5340: avg_loss appended (2.7778)\n", - "Epoch 5340: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5340: accuracy appended (83.33%)\n", - "Epoch 5340: model set back to train mode\n", - "Epoch 5340: model parameters saved\n", - "Epoch 5341 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5341: avg_loss appended (2.7778)\n", - "Epoch 5341: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5341: accuracy appended (83.33%)\n", - "Epoch 5341: model set back to train mode\n", - "Epoch 5341: model parameters saved\n", - "Epoch 5342 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5342: avg_loss appended (2.7778)\n", - "Epoch 5342: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5342: accuracy appended (83.33%)\n", - "Epoch 5342: model set back to train mode\n", - "Epoch 5342: model parameters saved\n", - "Epoch 5343 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5343: avg_loss appended (2.7778)\n", - "Epoch 5343: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5343: accuracy appended (83.33%)\n", - "Epoch 5343: model set back to train mode\n", - "Epoch 5343: model parameters saved\n", - "Epoch 5344 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5344: avg_loss appended (2.7778)\n", - "Epoch 5344: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5344: accuracy appended (83.33%)\n", - "Epoch 5344: model set back to train mode\n", - "Epoch 5344: model parameters saved\n", - "Epoch 5345 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5345: avg_loss appended (2.7778)\n", - "Epoch 5345: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5345: accuracy appended (83.33%)\n", - "Epoch 5345: model set back to train mode\n", - "Epoch 5345: model parameters saved\n", - "Epoch 5346 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5346: avg_loss appended (2.7778)\n", - "Epoch 5346: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5346: accuracy appended (83.33%)\n", - "Epoch 5346: model set back to train mode\n", - "Epoch 5346: model parameters saved\n", - "Epoch 5347 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5347: avg_loss appended (2.7778)\n", - "Epoch 5347: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5347: accuracy appended (83.33%)\n", - "Epoch 5347: model set back to train mode\n", - "Epoch 5347: model parameters saved\n", - "Epoch 5348 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5348: avg_loss appended (2.7778)\n", - "Epoch 5348: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5348: accuracy appended (83.33%)\n", - "Epoch 5348: model set back to train mode\n", - "Epoch 5348: model parameters saved\n", - "Epoch 5349 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5349: avg_loss appended (2.7778)\n", - "Epoch 5349: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5349: accuracy appended (83.33%)\n", - "Epoch 5349: model set back to train mode\n", - "Epoch 5349: model parameters saved\n", - "Epoch 5350 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5350: avg_loss appended (2.7778)\n", - "Epoch 5350: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5350: accuracy appended (83.33%)\n", - "Epoch 5350: model set back to train mode\n", - "Epoch 5350: model parameters saved\n", - "Epoch 5351 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5351: avg_loss appended (2.7778)\n", - "Epoch 5351: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5351: accuracy appended (83.33%)\n", - "Epoch 5351: model set back to train mode\n", - "Epoch 5351: model parameters saved\n", - "Epoch 5352 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5352: avg_loss appended (2.7778)\n", - "Epoch 5352: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5352: accuracy appended (83.33%)\n", - "Epoch 5352: model set back to train mode\n", - "Epoch 5352: model parameters saved\n", - "Epoch 5353 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5353: avg_loss appended (2.7778)\n", - "Epoch 5353: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5353: accuracy appended (83.33%)\n", - "Epoch 5353: model set back to train mode\n", - "Epoch 5353: model parameters saved\n", - "Epoch 5354 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5354: avg_loss appended (2.7778)\n", - "Epoch 5354: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5354: accuracy appended (83.33%)\n", - "Epoch 5354: model set back to train mode\n", - "Epoch 5354: model parameters saved\n", - "Epoch 5355 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5355: avg_loss appended (2.7778)\n", - "Epoch 5355: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5355: accuracy appended (83.33%)\n", - "Epoch 5355: model set back to train mode\n", - "Epoch 5355: model parameters saved\n", - "Epoch 5356 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5356: avg_loss appended (2.7778)\n", - "Epoch 5356: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5356: accuracy appended (83.33%)\n", - "Epoch 5356: model set back to train mode\n", - "Epoch 5356: model parameters saved\n", - "Epoch 5357 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5357: avg_loss appended (2.7778)\n", - "Epoch 5357: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5357: accuracy appended (83.33%)\n", - "Epoch 5357: model set back to train mode\n", - "Epoch 5357: model parameters saved\n", - "Epoch 5358 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5358: avg_loss appended (2.7778)\n", - "Epoch 5358: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5358: accuracy appended (83.33%)\n", - "Epoch 5358: model set back to train mode\n", - "Epoch 5358: model parameters saved\n", - "Epoch 5359 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5359: avg_loss appended (2.7778)\n", - "Epoch 5359: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5359: accuracy appended (83.33%)\n", - "Epoch 5359: model set back to train mode\n", - "Epoch 5359: model parameters saved\n", - "Epoch 5360 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5360: avg_loss appended (2.7778)\n", - "Epoch 5360: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5360: accuracy appended (83.33%)\n", - "Epoch 5360: model set back to train mode\n", - "Epoch 5360: model parameters saved\n", - "Epoch 5361 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5361: avg_loss appended (2.7778)\n", - "Epoch 5361: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5361: accuracy appended (83.33%)\n", - "Epoch 5361: model set back to train mode\n", - "Epoch 5361: model parameters saved\n", - "Epoch 5362 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5362: avg_loss appended (2.7778)\n", - "Epoch 5362: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5362: accuracy appended (83.33%)\n", - "Epoch 5362: model set back to train mode\n", - "Epoch 5362: model parameters saved\n", - "Epoch 5363 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5363: avg_loss appended (2.7778)\n", - "Epoch 5363: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5363: accuracy appended (83.33%)\n", - "Epoch 5363: model set back to train mode\n", - "Epoch 5363: model parameters saved\n", - "Epoch 5364 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5364: avg_loss appended (2.7778)\n", - "Epoch 5364: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5364: accuracy appended (83.33%)\n", - "Epoch 5364: model set back to train mode\n", - "Epoch 5364: model parameters saved\n", - "Epoch 5365 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5365: avg_loss appended (2.7778)\n", - "Epoch 5365: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5365: accuracy appended (83.33%)\n", - "Epoch 5365: model set back to train mode\n", - "Epoch 5365: model parameters saved\n", - "Epoch 5366 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5366: avg_loss appended (2.7778)\n", - "Epoch 5366: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5366: accuracy appended (83.33%)\n", - "Epoch 5366: model set back to train mode\n", - "Epoch 5366: model parameters saved\n", - "Epoch 5367 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5367: avg_loss appended (2.7778)\n", - "Epoch 5367: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5367: accuracy appended (83.33%)\n", - "Epoch 5367: model set back to train mode\n", - "Epoch 5367: model parameters saved\n", - "Epoch 5368 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5368: avg_loss appended (2.7778)\n", - "Epoch 5368: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5368: accuracy appended (83.33%)\n", - "Epoch 5368: model set back to train mode\n", - "Epoch 5368: model parameters saved\n", - "Epoch 5369 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5369: avg_loss appended (2.7778)\n", - "Epoch 5369: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5369: accuracy appended (83.33%)\n", - "Epoch 5369: model set back to train mode\n", - "Epoch 5369: model parameters saved\n", - "Epoch 5370 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5370: avg_loss appended (2.7778)\n", - "Epoch 5370: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5370: accuracy appended (83.33%)\n", - "Epoch 5370: model set back to train mode\n", - "Epoch 5370: model parameters saved\n", - "Epoch 5371 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5371: avg_loss appended (2.7778)\n", - "Epoch 5371: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5371: accuracy appended (83.33%)\n", - "Epoch 5371: model set back to train mode\n", - "Epoch 5371: model parameters saved\n", - "Epoch 5372 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5372: avg_loss appended (2.7778)\n", - "Epoch 5372: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5372: accuracy appended (83.33%)\n", - "Epoch 5372: model set back to train mode\n", - "Epoch 5372: model parameters saved\n", - "Epoch 5373 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5373: avg_loss appended (2.7778)\n", - "Epoch 5373: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5373: accuracy appended (83.33%)\n", - "Epoch 5373: model set back to train mode\n", - "Epoch 5373: model parameters saved\n", - "Epoch 5374 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5374: avg_loss appended (2.7778)\n", - "Epoch 5374: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5374: accuracy appended (83.33%)\n", - "Epoch 5374: model set back to train mode\n", - "Epoch 5374: model parameters saved\n", - "Epoch 5375 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5375: avg_loss appended (2.7778)\n", - "Epoch 5375: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5375: accuracy appended (83.33%)\n", - "Epoch 5375: model set back to train mode\n", - "Epoch 5375: model parameters saved\n", - "Epoch 5376 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5376: avg_loss appended (2.7778)\n", - "Epoch 5376: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5376: accuracy appended (83.33%)\n", - "Epoch 5376: model set back to train mode\n", - "Epoch 5376: model parameters saved\n", - "Epoch 5377 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5377: avg_loss appended (2.7778)\n", - "Epoch 5377: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5377: accuracy appended (83.33%)\n", - "Epoch 5377: model set back to train mode\n", - "Epoch 5377: model parameters saved\n", - "Epoch 5378 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5378: avg_loss appended (2.7778)\n", - "Epoch 5378: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5378: accuracy appended (83.33%)\n", - "Epoch 5378: model set back to train mode\n", - "Epoch 5378: model parameters saved\n", - "Epoch 5379 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5379: avg_loss appended (2.7778)\n", - "Epoch 5379: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5379: accuracy appended (83.33%)\n", - "Epoch 5379: model set back to train mode\n", - "Epoch 5379: model parameters saved\n", - "Epoch 5380 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5380: avg_loss appended (2.7778)\n", - "Epoch 5380: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5380: accuracy appended (83.33%)\n", - "Epoch 5380: model set back to train mode\n", - "Epoch 5380: model parameters saved\n", - "Epoch 5381 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5381: avg_loss appended (2.7778)\n", - "Epoch 5381: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5381: accuracy appended (83.33%)\n", - "Epoch 5381: model set back to train mode\n", - "Epoch 5381: model parameters saved\n", - "Epoch 5382 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5382: avg_loss appended (2.7778)\n", - "Epoch 5382: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5382: accuracy appended (83.33%)\n", - "Epoch 5382: model set back to train mode\n", - "Epoch 5382: model parameters saved\n", - "Epoch 5383 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5383: avg_loss appended (2.7778)\n", - "Epoch 5383: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5383: accuracy appended (83.33%)\n", - "Epoch 5383: model set back to train mode\n", - "Epoch 5383: model parameters saved\n", - "Epoch 5384 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5384: avg_loss appended (2.7778)\n", - "Epoch 5384: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5384: accuracy appended (83.33%)\n", - "Epoch 5384: model set back to train mode\n", - "Epoch 5384: model parameters saved\n", - "Epoch 5385 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5385: avg_loss appended (2.7778)\n", - "Epoch 5385: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5385: accuracy appended (83.33%)\n", - "Epoch 5385: model set back to train mode\n", - "Epoch 5385: model parameters saved\n", - "Epoch 5386 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5386: avg_loss appended (2.7778)\n", - "Epoch 5386: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5386: accuracy appended (83.33%)\n", - "Epoch 5386: model set back to train mode\n", - "Epoch 5386: model parameters saved\n", - "Epoch 5387 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5387: avg_loss appended (2.7778)\n", - "Epoch 5387: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5387: accuracy appended (83.33%)\n", - "Epoch 5387: model set back to train mode\n", - "Epoch 5387: model parameters saved\n", - "Epoch 5388 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5388: avg_loss appended (2.7778)\n", - "Epoch 5388: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5388: accuracy appended (83.33%)\n", - "Epoch 5388: model set back to train mode\n", - "Epoch 5388: model parameters saved\n", - "Epoch 5389 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5389: avg_loss appended (2.7778)\n", - "Epoch 5389: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5389: accuracy appended (83.33%)\n", - "Epoch 5389: model set back to train mode\n", - "Epoch 5389: model parameters saved\n", - "Epoch 5390 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5390: avg_loss appended (2.7778)\n", - "Epoch 5390: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5390: accuracy appended (83.33%)\n", - "Epoch 5390: model set back to train mode\n", - "Epoch 5390: model parameters saved\n", - "Epoch 5391 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5391: avg_loss appended (2.7778)\n", - "Epoch 5391: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5391: accuracy appended (83.33%)\n", - "Epoch 5391: model set back to train mode\n", - "Epoch 5391: model parameters saved\n", - "Epoch 5392 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5392: avg_loss appended (2.7778)\n", - "Epoch 5392: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5392: accuracy appended (83.33%)\n", - "Epoch 5392: model set back to train mode\n", - "Epoch 5392: model parameters saved\n", - "Epoch 5393 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5393: avg_loss appended (2.7778)\n", - "Epoch 5393: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5393: accuracy appended (83.33%)\n", - "Epoch 5393: model set back to train mode\n", - "Epoch 5393: model parameters saved\n", - "Epoch 5394 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5394: avg_loss appended (2.7778)\n", - "Epoch 5394: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5394: accuracy appended (83.33%)\n", - "Epoch 5394: model set back to train mode\n", - "Epoch 5394: model parameters saved\n", - "Epoch 5395 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5395: avg_loss appended (2.7778)\n", - "Epoch 5395: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5395: accuracy appended (83.33%)\n", - "Epoch 5395: model set back to train mode\n", - "Epoch 5395: model parameters saved\n", - "Epoch 5396 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5396: avg_loss appended (2.7778)\n", - "Epoch 5396: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5396: accuracy appended (83.33%)\n", - "Epoch 5396: model set back to train mode\n", - "Epoch 5396: model parameters saved\n", - "Epoch 5397 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5397: avg_loss appended (2.7778)\n", - "Epoch 5397: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5397: accuracy appended (83.33%)\n", - "Epoch 5397: model set back to train mode\n", - "Epoch 5397: model parameters saved\n", - "Epoch 5398 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5398: avg_loss appended (2.7778)\n", - "Epoch 5398: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5398: accuracy appended (83.33%)\n", - "Epoch 5398: model set back to train mode\n", - "Epoch 5398: model parameters saved\n", - "Epoch 5399 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5399: avg_loss appended (2.7778)\n", - "Epoch 5399: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5399: accuracy appended (83.33%)\n", - "Epoch 5399: model set back to train mode\n", - "Epoch 5399: model parameters saved\n", - "Epoch 5400 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5400: avg_loss appended (2.7778)\n", - "Epoch 5400: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5400: accuracy appended (83.33%)\n", - "Epoch 5400: model set back to train mode\n", - "Epoch 5400: model parameters saved\n", - "Epoch 5400/10000, Loss: 2.7778, Accuracy: 83.33%\n", - "Epoch 5401 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5401: avg_loss appended (2.7778)\n", - "Epoch 5401: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5401: accuracy appended (83.33%)\n", - "Epoch 5401: model set back to train mode\n", - "Epoch 5401: model parameters saved\n", - "Epoch 5402 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5402: avg_loss appended (2.7778)\n", - "Epoch 5402: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5402: accuracy appended (83.33%)\n", - "Epoch 5402: model set back to train mode\n", - "Epoch 5402: model parameters saved\n", - "Epoch 5403 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5403: avg_loss appended (2.7778)\n", - "Epoch 5403: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5403: accuracy appended (83.33%)\n", - "Epoch 5403: model set back to train mode\n", - "Epoch 5403: model parameters saved\n", - "Epoch 5404 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5404: avg_loss appended (2.7778)\n", - "Epoch 5404: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5404: accuracy appended (83.33%)\n", - "Epoch 5404: model set back to train mode\n", - "Epoch 5404: model parameters saved\n", - "Epoch 5405 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5405: avg_loss appended (2.7778)\n", - "Epoch 5405: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5405: accuracy appended (83.33%)\n", - "Epoch 5405: model set back to train mode\n", - "Epoch 5405: model parameters saved\n", - "Epoch 5406 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5406: avg_loss appended (2.7778)\n", - "Epoch 5406: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5406: accuracy appended (83.33%)\n", - "Epoch 5406: model set back to train mode\n", - "Epoch 5406: model parameters saved\n", - "Epoch 5407 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5407: avg_loss appended (2.7778)\n", - "Epoch 5407: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5407: accuracy appended (83.33%)\n", - "Epoch 5407: model set back to train mode\n", - "Epoch 5407: model parameters saved\n", - "Epoch 5408 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5408: avg_loss appended (2.7778)\n", - "Epoch 5408: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5408: accuracy appended (83.33%)\n", - "Epoch 5408: model set back to train mode\n", - "Epoch 5408: model parameters saved\n", - "Epoch 5409 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5409: avg_loss appended (2.7778)\n", - "Epoch 5409: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5409: accuracy appended (83.33%)\n", - "Epoch 5409: model set back to train mode\n", - "Epoch 5409: model parameters saved\n", - "Epoch 5410 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5410: avg_loss appended (2.7778)\n", - "Epoch 5410: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5410: accuracy appended (83.33%)\n", - "Epoch 5410: model set back to train mode\n", - "Epoch 5410: model parameters saved\n", - "Epoch 5411 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5411: avg_loss appended (2.7778)\n", - "Epoch 5411: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5411: accuracy appended (83.33%)\n", - "Epoch 5411: model set back to train mode\n", - "Epoch 5411: model parameters saved\n", - "Epoch 5412 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5412: avg_loss appended (2.7778)\n", - "Epoch 5412: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5412: accuracy appended (83.33%)\n", - "Epoch 5412: model set back to train mode\n", - "Epoch 5412: model parameters saved\n", - "Epoch 5413 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5413: avg_loss appended (2.7778)\n", - "Epoch 5413: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5413: accuracy appended (83.33%)\n", - "Epoch 5413: model set back to train mode\n", - "Epoch 5413: model parameters saved\n", - "Epoch 5414 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5414: avg_loss appended (2.7778)\n", - "Epoch 5414: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5414: accuracy appended (83.33%)\n", - "Epoch 5414: model set back to train mode\n", - "Epoch 5414: model parameters saved\n", - "Epoch 5415 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5415: avg_loss appended (2.7778)\n", - "Epoch 5415: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5415: accuracy appended (83.33%)\n", - "Epoch 5415: model set back to train mode\n", - "Epoch 5415: model parameters saved\n", - "Epoch 5416 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5416: avg_loss appended (2.7778)\n", - "Epoch 5416: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5416: accuracy appended (83.33%)\n", - "Epoch 5416: model set back to train mode\n", - "Epoch 5416: model parameters saved\n", - "Epoch 5417 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5417: avg_loss appended (2.7778)\n", - "Epoch 5417: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5417: accuracy appended (83.33%)\n", - "Epoch 5417: model set back to train mode\n", - "Epoch 5417: model parameters saved\n", - "Epoch 5418 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5418: avg_loss appended (2.7778)\n", - "Epoch 5418: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5418: accuracy appended (83.33%)\n", - "Epoch 5418: model set back to train mode\n", - "Epoch 5418: model parameters saved\n", - "Epoch 5419 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5419: avg_loss appended (2.7778)\n", - "Epoch 5419: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5419: accuracy appended (83.33%)\n", - "Epoch 5419: model set back to train mode\n", - "Epoch 5419: model parameters saved\n", - "Epoch 5420 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5420: avg_loss appended (2.7778)\n", - "Epoch 5420: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5420: accuracy appended (83.33%)\n", - "Epoch 5420: model set back to train mode\n", - "Epoch 5420: model parameters saved\n", - "Epoch 5421 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5421: avg_loss appended (2.7778)\n", - "Epoch 5421: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5421: accuracy appended (83.33%)\n", - "Epoch 5421: model set back to train mode\n", - "Epoch 5421: model parameters saved\n", - "Epoch 5422 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5422: avg_loss appended (2.7778)\n", - "Epoch 5422: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5422: accuracy appended (83.33%)\n", - "Epoch 5422: model set back to train mode\n", - "Epoch 5422: model parameters saved\n", - "Epoch 5423 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5423: avg_loss appended (2.7778)\n", - "Epoch 5423: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5423: accuracy appended (83.33%)\n", - "Epoch 5423: model set back to train mode\n", - "Epoch 5423: model parameters saved\n", - "Epoch 5424 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5424: avg_loss appended (2.7778)\n", - "Epoch 5424: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5424: accuracy appended (83.33%)\n", - "Epoch 5424: model set back to train mode\n", - "Epoch 5424: model parameters saved\n", - "Epoch 5425 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5425: avg_loss appended (2.7778)\n", - "Epoch 5425: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5425: accuracy appended (83.33%)\n", - "Epoch 5425: model set back to train mode\n", - "Epoch 5425: model parameters saved\n", - "Epoch 5426 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5426: avg_loss appended (2.7778)\n", - "Epoch 5426: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5426: accuracy appended (83.33%)\n", - "Epoch 5426: model set back to train mode\n", - "Epoch 5426: model parameters saved\n", - "Epoch 5427 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5427: avg_loss appended (2.7778)\n", - "Epoch 5427: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5427: accuracy appended (83.33%)\n", - "Epoch 5427: model set back to train mode\n", - "Epoch 5427: model parameters saved\n", - "Epoch 5428 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5428: avg_loss appended (2.7778)\n", - "Epoch 5428: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5428: accuracy appended (83.33%)\n", - "Epoch 5428: model set back to train mode\n", - "Epoch 5428: model parameters saved\n", - "Epoch 5429 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5429: avg_loss appended (2.7778)\n", - "Epoch 5429: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5429: accuracy appended (83.33%)\n", - "Epoch 5429: model set back to train mode\n", - "Epoch 5429: model parameters saved\n", - "Epoch 5430 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5430: avg_loss appended (2.7778)\n", - "Epoch 5430: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5430: accuracy appended (83.33%)\n", - "Epoch 5430: model set back to train mode\n", - "Epoch 5430: model parameters saved\n", - "Epoch 5431 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5431: avg_loss appended (2.7778)\n", - "Epoch 5431: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5431: accuracy appended (83.33%)\n", - "Epoch 5431: model set back to train mode\n", - "Epoch 5431: model parameters saved\n", - "Epoch 5432 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5432: avg_loss appended (2.7778)\n", - "Epoch 5432: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5432: accuracy appended (83.33%)\n", - "Epoch 5432: model set back to train mode\n", - "Epoch 5432: model parameters saved\n", - "Epoch 5433 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5433: avg_loss appended (2.7778)\n", - "Epoch 5433: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5433: accuracy appended (83.33%)\n", - "Epoch 5433: model set back to train mode\n", - "Epoch 5433: model parameters saved\n", - "Epoch 5434 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5434: avg_loss appended (2.7778)\n", - "Epoch 5434: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5434: accuracy appended (83.33%)\n", - "Epoch 5434: model set back to train mode\n", - "Epoch 5434: model parameters saved\n", - "Epoch 5435 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5435: avg_loss appended (2.7778)\n", - "Epoch 5435: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5435: accuracy appended (83.33%)\n", - "Epoch 5435: model set back to train mode\n", - "Epoch 5435: model parameters saved\n", - "Epoch 5436 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5436: avg_loss appended (2.7778)\n", - "Epoch 5436: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5436: accuracy appended (83.33%)\n", - "Epoch 5436: model set back to train mode\n", - "Epoch 5436: model parameters saved\n", - "Epoch 5437 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5437: avg_loss appended (2.7778)\n", - "Epoch 5437: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5437: accuracy appended (83.33%)\n", - "Epoch 5437: model set back to train mode\n", - "Epoch 5437: model parameters saved\n", - "Epoch 5438 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5438: avg_loss appended (2.7778)\n", - "Epoch 5438: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5438: accuracy appended (83.33%)\n", - "Epoch 5438: model set back to train mode\n", - "Epoch 5438: model parameters saved\n", - "Epoch 5439 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5439: avg_loss appended (2.7778)\n", - "Epoch 5439: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5439: accuracy appended (83.33%)\n", - "Epoch 5439: model set back to train mode\n", - "Epoch 5439: model parameters saved\n", - "Epoch 5440 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5440: avg_loss appended (2.7778)\n", - "Epoch 5440: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5440: accuracy appended (83.33%)\n", - "Epoch 5440: model set back to train mode\n", - "Epoch 5440: model parameters saved\n", - "Epoch 5441 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5441: avg_loss appended (2.7778)\n", - "Epoch 5441: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5441: accuracy appended (83.33%)\n", - "Epoch 5441: model set back to train mode\n", - "Epoch 5441: model parameters saved\n", - "Epoch 5442 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5442: avg_loss appended (2.7778)\n", - "Epoch 5442: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5442: accuracy appended (83.33%)\n", - "Epoch 5442: model set back to train mode\n", - "Epoch 5442: model parameters saved\n", - "Epoch 5443 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5443: avg_loss appended (2.7778)\n", - "Epoch 5443: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5443: accuracy appended (83.33%)\n", - "Epoch 5443: model set back to train mode\n", - "Epoch 5443: model parameters saved\n", - "Epoch 5444 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5444: avg_loss appended (2.7778)\n", - "Epoch 5444: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5444: accuracy appended (83.33%)\n", - "Epoch 5444: model set back to train mode\n", - "Epoch 5444: model parameters saved\n", - "Epoch 5445 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5445: avg_loss appended (2.7778)\n", - "Epoch 5445: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5445: accuracy appended (83.33%)\n", - "Epoch 5445: model set back to train mode\n", - "Epoch 5445: model parameters saved\n", - "Epoch 5446 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5446: avg_loss appended (2.7778)\n", - "Epoch 5446: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5446: accuracy appended (83.33%)\n", - "Epoch 5446: model set back to train mode\n", - "Epoch 5446: model parameters saved\n", - "Epoch 5447 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5447: avg_loss appended (2.7778)\n", - "Epoch 5447: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5447: accuracy appended (83.33%)\n", - "Epoch 5447: model set back to train mode\n", - "Epoch 5447: model parameters saved\n", - "Epoch 5448 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5448: avg_loss appended (2.7778)\n", - "Epoch 5448: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5448: accuracy appended (83.33%)\n", - "Epoch 5448: model set back to train mode\n", - "Epoch 5448: model parameters saved\n", - "Epoch 5449 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5449: avg_loss appended (2.7778)\n", - "Epoch 5449: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5449: accuracy appended (83.33%)\n", - "Epoch 5449: model set back to train mode\n", - "Epoch 5449: model parameters saved\n", - "Epoch 5450 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5450: avg_loss appended (2.7778)\n", - "Epoch 5450: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5450: accuracy appended (83.33%)\n", - "Epoch 5450: model set back to train mode\n", - "Epoch 5450: model parameters saved\n", - "Epoch 5451 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5451: avg_loss appended (2.7778)\n", - "Epoch 5451: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5451: accuracy appended (83.33%)\n", - "Epoch 5451: model set back to train mode\n", - "Epoch 5451: model parameters saved\n", - "Epoch 5452 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5452: avg_loss appended (2.7778)\n", - "Epoch 5452: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5452: accuracy appended (83.33%)\n", - "Epoch 5452: model set back to train mode\n", - "Epoch 5452: model parameters saved\n", - "Epoch 5453 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5453: avg_loss appended (2.7778)\n", - "Epoch 5453: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5453: accuracy appended (83.33%)\n", - "Epoch 5453: model set back to train mode\n", - "Epoch 5453: model parameters saved\n", - "Epoch 5454 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5454: avg_loss appended (2.7778)\n", - "Epoch 5454: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5454: accuracy appended (83.33%)\n", - "Epoch 5454: model set back to train mode\n", - "Epoch 5454: model parameters saved\n", - "Epoch 5455 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5455: avg_loss appended (2.7778)\n", - "Epoch 5455: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5455: accuracy appended (83.33%)\n", - "Epoch 5455: model set back to train mode\n", - "Epoch 5455: model parameters saved\n", - "Epoch 5456 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5456: avg_loss appended (2.7778)\n", - "Epoch 5456: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5456: accuracy appended (83.33%)\n", - "Epoch 5456: model set back to train mode\n", - "Epoch 5456: model parameters saved\n", - "Epoch 5457 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5457: avg_loss appended (2.7778)\n", - "Epoch 5457: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5457: accuracy appended (83.33%)\n", - "Epoch 5457: model set back to train mode\n", - "Epoch 5457: model parameters saved\n", - "Epoch 5458 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5458: avg_loss appended (2.7778)\n", - "Epoch 5458: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5458: accuracy appended (83.33%)\n", - "Epoch 5458: model set back to train mode\n", - "Epoch 5458: model parameters saved\n", - "Epoch 5459 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5459: avg_loss appended (2.7778)\n", - "Epoch 5459: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5459: accuracy appended (83.33%)\n", - "Epoch 5459: model set back to train mode\n", - "Epoch 5459: model parameters saved\n", - "Epoch 5460 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5460: avg_loss appended (2.7778)\n", - "Epoch 5460: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5460: accuracy appended (83.33%)\n", - "Epoch 5460: model set back to train mode\n", - "Epoch 5460: model parameters saved\n", - "Epoch 5461 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5461: avg_loss appended (2.7778)\n", - "Epoch 5461: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5461: accuracy appended (83.33%)\n", - "Epoch 5461: model set back to train mode\n", - "Epoch 5461: model parameters saved\n", - "Epoch 5462 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5462: avg_loss appended (2.7778)\n", - "Epoch 5462: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5462: accuracy appended (83.33%)\n", - "Epoch 5462: model set back to train mode\n", - "Epoch 5462: model parameters saved\n", - "Epoch 5463 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5463: avg_loss appended (2.7778)\n", - "Epoch 5463: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5463: accuracy appended (83.33%)\n", - "Epoch 5463: model set back to train mode\n", - "Epoch 5463: model parameters saved\n", - "Epoch 5464 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5464: avg_loss appended (2.7778)\n", - "Epoch 5464: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5464: accuracy appended (83.33%)\n", - "Epoch 5464: model set back to train mode\n", - "Epoch 5464: model parameters saved\n", - "Epoch 5465 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5465: avg_loss appended (2.7778)\n", - "Epoch 5465: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5465: accuracy appended (83.33%)\n", - "Epoch 5465: model set back to train mode\n", - "Epoch 5465: model parameters saved\n", - "Epoch 5466 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5466: avg_loss appended (2.7778)\n", - "Epoch 5466: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5466: accuracy appended (83.33%)\n", - "Epoch 5466: model set back to train mode\n", - "Epoch 5466: model parameters saved\n", - "Epoch 5467 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5467: avg_loss appended (2.7778)\n", - "Epoch 5467: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5467: accuracy appended (83.33%)\n", - "Epoch 5467: model set back to train mode\n", - "Epoch 5467: model parameters saved\n", - "Epoch 5468 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5468: avg_loss appended (2.7778)\n", - "Epoch 5468: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5468: accuracy appended (83.33%)\n", - "Epoch 5468: model set back to train mode\n", - "Epoch 5468: model parameters saved\n", - "Epoch 5469 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5469: avg_loss appended (2.7778)\n", - "Epoch 5469: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5469: accuracy appended (83.33%)\n", - "Epoch 5469: model set back to train mode\n", - "Epoch 5469: model parameters saved\n", - "Epoch 5470 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5470: avg_loss appended (2.7778)\n", - "Epoch 5470: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5470: accuracy appended (83.33%)\n", - "Epoch 5470: model set back to train mode\n", - "Epoch 5470: model parameters saved\n", - "Epoch 5471 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5471: avg_loss appended (2.7778)\n", - "Epoch 5471: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5471: accuracy appended (83.33%)\n", - "Epoch 5471: model set back to train mode\n", - "Epoch 5471: model parameters saved\n", - "Epoch 5472 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5472: avg_loss appended (2.7778)\n", - "Epoch 5472: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5472: accuracy appended (83.33%)\n", - "Epoch 5472: model set back to train mode\n", - "Epoch 5472: model parameters saved\n", - "Epoch 5473 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5473: avg_loss appended (2.7778)\n", - "Epoch 5473: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5473: accuracy appended (83.33%)\n", - "Epoch 5473: model set back to train mode\n", - "Epoch 5473: model parameters saved\n", - "Epoch 5474 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5474: avg_loss appended (2.7778)\n", - "Epoch 5474: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5474: accuracy appended (83.33%)\n", - "Epoch 5474: model set back to train mode\n", - "Epoch 5474: model parameters saved\n", - "Epoch 5475 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5475: avg_loss appended (2.7778)\n", - "Epoch 5475: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5475: accuracy appended (83.33%)\n", - "Epoch 5475: model set back to train mode\n", - "Epoch 5475: model parameters saved\n", - "Epoch 5476 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5476: avg_loss appended (2.7778)\n", - "Epoch 5476: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5476: accuracy appended (83.33%)\n", - "Epoch 5476: model set back to train mode\n", - "Epoch 5476: model parameters saved\n", - "Epoch 5477 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5477: avg_loss appended (2.7778)\n", - "Epoch 5477: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5477: accuracy appended (83.33%)\n", - "Epoch 5477: model set back to train mode\n", - "Epoch 5477: model parameters saved\n", - "Epoch 5478 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5478: avg_loss appended (2.7778)\n", - "Epoch 5478: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5478: accuracy appended (83.33%)\n", - "Epoch 5478: model set back to train mode\n", - "Epoch 5478: model parameters saved\n", - "Epoch 5479 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5479: avg_loss appended (2.7778)\n", - "Epoch 5479: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5479: accuracy appended (83.33%)\n", - "Epoch 5479: model set back to train mode\n", - "Epoch 5479: model parameters saved\n", - "Epoch 5480 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5480: avg_loss appended (2.7778)\n", - "Epoch 5480: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5480: accuracy appended (83.33%)\n", - "Epoch 5480: model set back to train mode\n", - "Epoch 5480: model parameters saved\n", - "Epoch 5481 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5481: avg_loss appended (2.7778)\n", - "Epoch 5481: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5481: accuracy appended (83.33%)\n", - "Epoch 5481: model set back to train mode\n", - "Epoch 5481: model parameters saved\n", - "Epoch 5482 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5482: avg_loss appended (2.7778)\n", - "Epoch 5482: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5482: accuracy appended (83.33%)\n", - "Epoch 5482: model set back to train mode\n", - "Epoch 5482: model parameters saved\n", - "Epoch 5483 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5483: avg_loss appended (2.7778)\n", - "Epoch 5483: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5483: accuracy appended (83.33%)\n", - "Epoch 5483: model set back to train mode\n", - "Epoch 5483: model parameters saved\n", - "Epoch 5484 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5484: avg_loss appended (2.7778)\n", - "Epoch 5484: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5484: accuracy appended (83.33%)\n", - "Epoch 5484: model set back to train mode\n", - "Epoch 5484: model parameters saved\n", - "Epoch 5485 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5485: avg_loss appended (2.7778)\n", - "Epoch 5485: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5485: accuracy appended (83.33%)\n", - "Epoch 5485: model set back to train mode\n", - "Epoch 5485: model parameters saved\n", - "Epoch 5486 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5486: avg_loss appended (2.7778)\n", - "Epoch 5486: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5486: accuracy appended (83.33%)\n", - "Epoch 5486: model set back to train mode\n", - "Epoch 5486: model parameters saved\n", - "Epoch 5487 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5487: avg_loss appended (2.7778)\n", - "Epoch 5487: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5487: accuracy appended (83.33%)\n", - "Epoch 5487: model set back to train mode\n", - "Epoch 5487: model parameters saved\n", - "Epoch 5488 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5488: avg_loss appended (2.7778)\n", - "Epoch 5488: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5488: accuracy appended (83.33%)\n", - "Epoch 5488: model set back to train mode\n", - "Epoch 5488: model parameters saved\n", - "Epoch 5489 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5489: avg_loss appended (2.7778)\n", - "Epoch 5489: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5489: accuracy appended (83.33%)\n", - "Epoch 5489: model set back to train mode\n", - "Epoch 5489: model parameters saved\n", - "Epoch 5490 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5490: avg_loss appended (2.7778)\n", - "Epoch 5490: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5490: accuracy appended (83.33%)\n", - "Epoch 5490: model set back to train mode\n", - "Epoch 5490: model parameters saved\n", - "Epoch 5491 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5491: avg_loss appended (2.7778)\n", - "Epoch 5491: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5491: accuracy appended (83.33%)\n", - "Epoch 5491: model set back to train mode\n", - "Epoch 5491: model parameters saved\n", - "Epoch 5492 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5492: avg_loss appended (2.7778)\n", - "Epoch 5492: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5492: accuracy appended (83.33%)\n", - "Epoch 5492: model set back to train mode\n", - "Epoch 5492: model parameters saved\n", - "Epoch 5493 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5493: avg_loss appended (2.7778)\n", - "Epoch 5493: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5493: accuracy appended (83.33%)\n", - "Epoch 5493: model set back to train mode\n", - "Epoch 5493: model parameters saved\n", - "Epoch 5494 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5494: avg_loss appended (2.7778)\n", - "Epoch 5494: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5494: accuracy appended (83.33%)\n", - "Epoch 5494: model set back to train mode\n", - "Epoch 5494: model parameters saved\n", - "Epoch 5495 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5495: avg_loss appended (2.7778)\n", - "Epoch 5495: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5495: accuracy appended (83.33%)\n", - "Epoch 5495: model set back to train mode\n", - "Epoch 5495: model parameters saved\n", - "Epoch 5496 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5496: avg_loss appended (2.7778)\n", - "Epoch 5496: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5496: accuracy appended (83.33%)\n", - "Epoch 5496: model set back to train mode\n", - "Epoch 5496: model parameters saved\n", - "Epoch 5497 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5497: avg_loss appended (2.7778)\n", - "Epoch 5497: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5497: accuracy appended (83.33%)\n", - "Epoch 5497: model set back to train mode\n", - "Epoch 5497: model parameters saved\n", - "Epoch 5498 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5498: avg_loss appended (2.7778)\n", - "Epoch 5498: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5498: accuracy appended (83.33%)\n", - "Epoch 5498: model set back to train mode\n", - "Epoch 5498: model parameters saved\n", - "Epoch 5499 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5499: avg_loss appended (2.7778)\n", - "Epoch 5499: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5499: accuracy appended (83.33%)\n", - "Epoch 5499: model set back to train mode\n", - "Epoch 5499: model parameters saved\n", - "Epoch 5500 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5500: avg_loss appended (2.7778)\n", - "Epoch 5500: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5500: accuracy appended (83.33%)\n", - "Epoch 5500: model set back to train mode\n", - "Epoch 5500: model parameters saved\n", - "Epoch 5500/10000, Loss: 2.7778, Accuracy: 83.33%\n", - "Epoch 5501 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5501: avg_loss appended (2.7778)\n", - "Epoch 5501: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5501: accuracy appended (83.33%)\n", - "Epoch 5501: model set back to train mode\n", - "Epoch 5501: model parameters saved\n", - "Epoch 5502 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5502: avg_loss appended (2.7778)\n", - "Epoch 5502: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5502: accuracy appended (83.33%)\n", - "Epoch 5502: model set back to train mode\n", - "Epoch 5502: model parameters saved\n", - "Epoch 5503 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5503: avg_loss appended (2.7778)\n", - "Epoch 5503: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5503: accuracy appended (83.33%)\n", - "Epoch 5503: model set back to train mode\n", - "Epoch 5503: model parameters saved\n", - "Epoch 5504 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5504: avg_loss appended (2.7778)\n", - "Epoch 5504: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5504: accuracy appended (83.33%)\n", - "Epoch 5504: model set back to train mode\n", - "Epoch 5504: model parameters saved\n", - "Epoch 5505 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5505: avg_loss appended (2.7778)\n", - "Epoch 5505: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5505: accuracy appended (83.33%)\n", - "Epoch 5505: model set back to train mode\n", - "Epoch 5505: model parameters saved\n", - "Epoch 5506 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5506: avg_loss appended (2.7778)\n", - "Epoch 5506: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5506: accuracy appended (83.33%)\n", - "Epoch 5506: model set back to train mode\n", - "Epoch 5506: model parameters saved\n", - "Epoch 5507 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5507: avg_loss appended (2.7778)\n", - "Epoch 5507: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5507: accuracy appended (83.33%)\n", - "Epoch 5507: model set back to train mode\n", - "Epoch 5507: model parameters saved\n", - "Epoch 5508 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5508: avg_loss appended (2.7778)\n", - "Epoch 5508: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5508: accuracy appended (83.33%)\n", - "Epoch 5508: model set back to train mode\n", - "Epoch 5508: model parameters saved\n", - "Epoch 5509 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5509: avg_loss appended (2.7778)\n", - "Epoch 5509: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5509: accuracy appended (83.33%)\n", - "Epoch 5509: model set back to train mode\n", - "Epoch 5509: model parameters saved\n", - "Epoch 5510 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5510: avg_loss appended (2.7778)\n", - "Epoch 5510: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5510: accuracy appended (83.33%)\n", - "Epoch 5510: model set back to train mode\n", - "Epoch 5510: model parameters saved\n", - "Epoch 5511 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5511: avg_loss appended (2.7778)\n", - "Epoch 5511: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5511: accuracy appended (83.33%)\n", - "Epoch 5511: model set back to train mode\n", - "Epoch 5511: model parameters saved\n", - "Epoch 5512 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5512: avg_loss appended (2.7778)\n", - "Epoch 5512: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5512: accuracy appended (83.33%)\n", - "Epoch 5512: model set back to train mode\n", - "Epoch 5512: model parameters saved\n", - "Epoch 5513 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5513: avg_loss appended (2.7778)\n", - "Epoch 5513: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5513: accuracy appended (83.33%)\n", - "Epoch 5513: model set back to train mode\n", - "Epoch 5513: model parameters saved\n", - "Epoch 5514 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5514: avg_loss appended (2.7778)\n", - "Epoch 5514: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5514: accuracy appended (83.33%)\n", - "Epoch 5514: model set back to train mode\n", - "Epoch 5514: model parameters saved\n", - "Epoch 5515 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5515: avg_loss appended (2.7778)\n", - "Epoch 5515: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5515: accuracy appended (83.33%)\n", - "Epoch 5515: model set back to train mode\n", - "Epoch 5515: model parameters saved\n", - "Epoch 5516 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5516: avg_loss appended (2.7778)\n", - "Epoch 5516: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5516: accuracy appended (83.33%)\n", - "Epoch 5516: model set back to train mode\n", - "Epoch 5516: model parameters saved\n", - "Epoch 5517 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5517: avg_loss appended (2.7778)\n", - "Epoch 5517: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5517: accuracy appended (83.33%)\n", - "Epoch 5517: model set back to train mode\n", - "Epoch 5517: model parameters saved\n", - "Epoch 5518 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5518: avg_loss appended (2.7778)\n", - "Epoch 5518: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5518: accuracy appended (83.33%)\n", - "Epoch 5518: model set back to train mode\n", - "Epoch 5518: model parameters saved\n", - "Epoch 5519 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5519: avg_loss appended (2.7778)\n", - "Epoch 5519: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5519: accuracy appended (83.33%)\n", - "Epoch 5519: model set back to train mode\n", - "Epoch 5519: model parameters saved\n", - "Epoch 5520 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5520: avg_loss appended (2.7778)\n", - "Epoch 5520: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5520: accuracy appended (83.33%)\n", - "Epoch 5520: model set back to train mode\n", - "Epoch 5520: model parameters saved\n", - "Epoch 5521 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5521: avg_loss appended (2.7778)\n", - "Epoch 5521: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5521: accuracy appended (83.33%)\n", - "Epoch 5521: model set back to train mode\n", - "Epoch 5521: model parameters saved\n", - "Epoch 5522 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5522: avg_loss appended (2.7778)\n", - "Epoch 5522: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5522: accuracy appended (83.33%)\n", - "Epoch 5522: model set back to train mode\n", - "Epoch 5522: model parameters saved\n", - "Epoch 5523 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5523: avg_loss appended (2.7778)\n", - "Epoch 5523: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5523: accuracy appended (83.33%)\n", - "Epoch 5523: model set back to train mode\n", - "Epoch 5523: model parameters saved\n", - "Epoch 5524 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5524: avg_loss appended (2.7778)\n", - "Epoch 5524: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5524: accuracy appended (83.33%)\n", - "Epoch 5524: model set back to train mode\n", - "Epoch 5524: model parameters saved\n", - "Epoch 5525 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5525: avg_loss appended (2.7778)\n", - "Epoch 5525: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5525: accuracy appended (83.33%)\n", - "Epoch 5525: model set back to train mode\n", - "Epoch 5525: model parameters saved\n", - "Epoch 5526 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5526: avg_loss appended (2.7778)\n", - "Epoch 5526: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5526: accuracy appended (83.33%)\n", - "Epoch 5526: model set back to train mode\n", - "Epoch 5526: model parameters saved\n", - "Epoch 5527 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5527: avg_loss appended (2.7778)\n", - "Epoch 5527: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5527: accuracy appended (83.33%)\n", - "Epoch 5527: model set back to train mode\n", - "Epoch 5527: model parameters saved\n", - "Epoch 5528 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5528: avg_loss appended (2.7778)\n", - "Epoch 5528: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5528: accuracy appended (83.33%)\n", - "Epoch 5528: model set back to train mode\n", - "Epoch 5528: model parameters saved\n", - "Epoch 5529 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5529: avg_loss appended (2.7778)\n", - "Epoch 5529: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5529: accuracy appended (83.33%)\n", - "Epoch 5529: model set back to train mode\n", - "Epoch 5529: model parameters saved\n", - "Epoch 5530 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5530: avg_loss appended (2.7778)\n", - "Epoch 5530: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5530: accuracy appended (83.33%)\n", - "Epoch 5530: model set back to train mode\n", - "Epoch 5530: model parameters saved\n", - "Epoch 5531 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5531: avg_loss appended (2.7778)\n", - "Epoch 5531: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5531: accuracy appended (83.33%)\n", - "Epoch 5531: model set back to train mode\n", - "Epoch 5531: model parameters saved\n", - "Epoch 5532 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5532: avg_loss appended (2.7778)\n", - "Epoch 5532: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5532: accuracy appended (83.33%)\n", - "Epoch 5532: model set back to train mode\n", - "Epoch 5532: model parameters saved\n", - "Epoch 5533 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5533: avg_loss appended (2.7778)\n", - "Epoch 5533: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5533: accuracy appended (83.33%)\n", - "Epoch 5533: model set back to train mode\n", - "Epoch 5533: model parameters saved\n", - "Epoch 5534 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5534: avg_loss appended (2.7778)\n", - "Epoch 5534: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5534: accuracy appended (83.33%)\n", - "Epoch 5534: model set back to train mode\n", - "Epoch 5534: model parameters saved\n", - "Epoch 5535 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5535: avg_loss appended (2.7778)\n", - "Epoch 5535: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5535: accuracy appended (83.33%)\n", - "Epoch 5535: model set back to train mode\n", - "Epoch 5535: model parameters saved\n", - "Epoch 5536 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5536: avg_loss appended (2.7778)\n", - "Epoch 5536: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5536: accuracy appended (83.33%)\n", - "Epoch 5536: model set back to train mode\n", - "Epoch 5536: model parameters saved\n", - "Epoch 5537 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5537: avg_loss appended (2.7778)\n", - "Epoch 5537: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5537: accuracy appended (83.33%)\n", - "Epoch 5537: model set back to train mode\n", - "Epoch 5537: model parameters saved\n", - "Epoch 5538 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5538: avg_loss appended (2.7778)\n", - "Epoch 5538: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5538: accuracy appended (83.33%)\n", - "Epoch 5538: model set back to train mode\n", - "Epoch 5538: model parameters saved\n", - "Epoch 5539 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5539: avg_loss appended (2.7778)\n", - "Epoch 5539: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5539: accuracy appended (83.33%)\n", - "Epoch 5539: model set back to train mode\n", - "Epoch 5539: model parameters saved\n", - "Epoch 5540 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5540: avg_loss appended (2.7778)\n", - "Epoch 5540: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5540: accuracy appended (83.33%)\n", - "Epoch 5540: model set back to train mode\n", - "Epoch 5540: model parameters saved\n", - "Epoch 5541 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5541: avg_loss appended (2.7778)\n", - "Epoch 5541: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5541: accuracy appended (83.33%)\n", - "Epoch 5541: model set back to train mode\n", - "Epoch 5541: model parameters saved\n", - "Epoch 5542 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5542: avg_loss appended (2.7778)\n", - "Epoch 5542: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5542: accuracy appended (83.33%)\n", - "Epoch 5542: model set back to train mode\n", - "Epoch 5542: model parameters saved\n", - "Epoch 5543 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5543: avg_loss appended (2.7778)\n", - "Epoch 5543: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5543: accuracy appended (83.33%)\n", - "Epoch 5543: model set back to train mode\n", - "Epoch 5543: model parameters saved\n", - "Epoch 5544 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5544: avg_loss appended (2.7778)\n", - "Epoch 5544: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5544: accuracy appended (83.33%)\n", - "Epoch 5544: model set back to train mode\n", - "Epoch 5544: model parameters saved\n", - "Epoch 5545 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5545: avg_loss appended (2.7778)\n", - "Epoch 5545: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5545: accuracy appended (83.33%)\n", - "Epoch 5545: model set back to train mode\n", - "Epoch 5545: model parameters saved\n", - "Epoch 5546 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5546: avg_loss appended (2.7778)\n", - "Epoch 5546: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5546: accuracy appended (83.33%)\n", - "Epoch 5546: model set back to train mode\n", - "Epoch 5546: model parameters saved\n", - "Epoch 5547 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5547: avg_loss appended (2.7778)\n", - "Epoch 5547: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5547: accuracy appended (83.33%)\n", - "Epoch 5547: model set back to train mode\n", - "Epoch 5547: model parameters saved\n", - "Epoch 5548 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5548: avg_loss appended (2.7778)\n", - "Epoch 5548: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5548: accuracy appended (83.33%)\n", - "Epoch 5548: model set back to train mode\n", - "Epoch 5548: model parameters saved\n", - "Epoch 5549 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5549: avg_loss appended (2.7778)\n", - "Epoch 5549: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5549: accuracy appended (83.33%)\n", - "Epoch 5549: model set back to train mode\n", - "Epoch 5549: model parameters saved\n", - "Epoch 5550 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5550: avg_loss appended (2.7778)\n", - "Epoch 5550: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5550: accuracy appended (83.33%)\n", - "Epoch 5550: model set back to train mode\n", - "Epoch 5550: model parameters saved\n", - "Epoch 5551 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5551: avg_loss appended (2.7778)\n", - "Epoch 5551: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5551: accuracy appended (83.33%)\n", - "Epoch 5551: model set back to train mode\n", - "Epoch 5551: model parameters saved\n", - "Epoch 5552 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5552: avg_loss appended (2.7778)\n", - "Epoch 5552: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5552: accuracy appended (83.33%)\n", - "Epoch 5552: model set back to train mode\n", - "Epoch 5552: model parameters saved\n", - "Epoch 5553 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5553: avg_loss appended (2.7778)\n", - "Epoch 5553: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5553: accuracy appended (83.33%)\n", - "Epoch 5553: model set back to train mode\n", - "Epoch 5553: model parameters saved\n", - "Epoch 5554 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5554: avg_loss appended (2.7778)\n", - "Epoch 5554: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5554: accuracy appended (83.33%)\n", - "Epoch 5554: model set back to train mode\n", - "Epoch 5554: model parameters saved\n", - "Epoch 5555 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5555: avg_loss appended (2.7778)\n", - "Epoch 5555: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5555: accuracy appended (83.33%)\n", - "Epoch 5555: model set back to train mode\n", - "Epoch 5555: model parameters saved\n", - "Epoch 5556 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5556: avg_loss appended (2.7778)\n", - "Epoch 5556: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5556: accuracy appended (83.33%)\n", - "Epoch 5556: model set back to train mode\n", - "Epoch 5556: model parameters saved\n", - "Epoch 5557 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5557: avg_loss appended (2.7778)\n", - "Epoch 5557: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5557: accuracy appended (83.33%)\n", - "Epoch 5557: model set back to train mode\n", - "Epoch 5557: model parameters saved\n", - "Epoch 5558 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5558: avg_loss appended (2.7778)\n", - "Epoch 5558: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5558: accuracy appended (83.33%)\n", - "Epoch 5558: model set back to train mode\n", - "Epoch 5558: model parameters saved\n", - "Epoch 5559 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5559: avg_loss appended (2.7778)\n", - "Epoch 5559: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5559: accuracy appended (83.33%)\n", - "Epoch 5559: model set back to train mode\n", - "Epoch 5559: model parameters saved\n", - "Epoch 5560 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5560: avg_loss appended (2.7778)\n", - "Epoch 5560: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5560: accuracy appended (83.33%)\n", - "Epoch 5560: model set back to train mode\n", - "Epoch 5560: model parameters saved\n", - "Epoch 5561 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5561: avg_loss appended (2.7778)\n", - "Epoch 5561: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5561: accuracy appended (83.33%)\n", - "Epoch 5561: model set back to train mode\n", - "Epoch 5561: model parameters saved\n", - "Epoch 5562 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5562: avg_loss appended (2.7778)\n", - "Epoch 5562: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5562: accuracy appended (83.33%)\n", - "Epoch 5562: model set back to train mode\n", - "Epoch 5562: model parameters saved\n", - "Epoch 5563 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5563: avg_loss appended (2.7778)\n", - "Epoch 5563: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5563: accuracy appended (83.33%)\n", - "Epoch 5563: model set back to train mode\n", - "Epoch 5563: model parameters saved\n", - "Epoch 5564 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5564: avg_loss appended (2.7778)\n", - "Epoch 5564: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5564: accuracy appended (83.33%)\n", - "Epoch 5564: model set back to train mode\n", - "Epoch 5564: model parameters saved\n", - "Epoch 5565 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5565: avg_loss appended (2.7778)\n", - "Epoch 5565: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5565: accuracy appended (83.33%)\n", - "Epoch 5565: model set back to train mode\n", - "Epoch 5565: model parameters saved\n", - "Epoch 5566 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5566: avg_loss appended (2.7778)\n", - "Epoch 5566: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5566: accuracy appended (83.33%)\n", - "Epoch 5566: model set back to train mode\n", - "Epoch 5566: model parameters saved\n", - "Epoch 5567 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5567: avg_loss appended (2.7778)\n", - "Epoch 5567: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5567: accuracy appended (83.33%)\n", - "Epoch 5567: model set back to train mode\n", - "Epoch 5567: model parameters saved\n", - "Epoch 5568 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5568: avg_loss appended (2.7778)\n", - "Epoch 5568: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5568: accuracy appended (83.33%)\n", - "Epoch 5568: model set back to train mode\n", - "Epoch 5568: model parameters saved\n", - "Epoch 5569 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5569: avg_loss appended (2.7778)\n", - "Epoch 5569: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5569: accuracy appended (83.33%)\n", - "Epoch 5569: model set back to train mode\n", - "Epoch 5569: model parameters saved\n", - "Epoch 5570 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5570: avg_loss appended (2.7778)\n", - "Epoch 5570: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5570: accuracy appended (83.33%)\n", - "Epoch 5570: model set back to train mode\n", - "Epoch 5570: model parameters saved\n", - "Epoch 5571 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5571: avg_loss appended (2.7778)\n", - "Epoch 5571: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5571: accuracy appended (83.33%)\n", - "Epoch 5571: model set back to train mode\n", - "Epoch 5571: model parameters saved\n", - "Epoch 5572 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5572: avg_loss appended (2.7778)\n", - "Epoch 5572: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5572: accuracy appended (83.33%)\n", - "Epoch 5572: model set back to train mode\n", - "Epoch 5572: model parameters saved\n", - "Epoch 5573 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5573: avg_loss appended (2.7778)\n", - "Epoch 5573: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5573: accuracy appended (83.33%)\n", - "Epoch 5573: model set back to train mode\n", - "Epoch 5573: model parameters saved\n", - "Epoch 5574 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5574: avg_loss appended (2.7778)\n", - "Epoch 5574: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5574: accuracy appended (83.33%)\n", - "Epoch 5574: model set back to train mode\n", - "Epoch 5574: model parameters saved\n", - "Epoch 5575 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5575: avg_loss appended (2.7778)\n", - "Epoch 5575: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5575: accuracy appended (83.33%)\n", - "Epoch 5575: model set back to train mode\n", - "Epoch 5575: model parameters saved\n", - "Epoch 5576 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5576: avg_loss appended (2.7778)\n", - "Epoch 5576: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5576: accuracy appended (83.33%)\n", - "Epoch 5576: model set back to train mode\n", - "Epoch 5576: model parameters saved\n", - "Epoch 5577 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5577: avg_loss appended (2.7778)\n", - "Epoch 5577: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5577: accuracy appended (83.33%)\n", - "Epoch 5577: model set back to train mode\n", - "Epoch 5577: model parameters saved\n", - "Epoch 5578 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5578: avg_loss appended (2.7778)\n", - "Epoch 5578: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5578: accuracy appended (83.33%)\n", - "Epoch 5578: model set back to train mode\n", - "Epoch 5578: model parameters saved\n", - "Epoch 5579 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5579: avg_loss appended (2.7778)\n", - "Epoch 5579: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5579: accuracy appended (83.33%)\n", - "Epoch 5579: model set back to train mode\n", - "Epoch 5579: model parameters saved\n", - "Epoch 5580 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5580: avg_loss appended (2.7778)\n", - "Epoch 5580: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5580: accuracy appended (83.33%)\n", - "Epoch 5580: model set back to train mode\n", - "Epoch 5580: model parameters saved\n", - "Epoch 5581 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5581: avg_loss appended (2.7778)\n", - "Epoch 5581: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5581: accuracy appended (83.33%)\n", - "Epoch 5581: model set back to train mode\n", - "Epoch 5581: model parameters saved\n", - "Epoch 5582 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5582: avg_loss appended (2.7778)\n", - "Epoch 5582: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5582: accuracy appended (83.33%)\n", - "Epoch 5582: model set back to train mode\n", - "Epoch 5582: model parameters saved\n", - "Epoch 5583 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5583: avg_loss appended (2.7778)\n", - "Epoch 5583: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5583: accuracy appended (83.33%)\n", - "Epoch 5583: model set back to train mode\n", - "Epoch 5583: model parameters saved\n", - "Epoch 5584 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5584: avg_loss appended (2.7778)\n", - "Epoch 5584: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5584: accuracy appended (83.33%)\n", - "Epoch 5584: model set back to train mode\n", - "Epoch 5584: model parameters saved\n", - "Epoch 5585 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5585: avg_loss appended (2.7778)\n", - "Epoch 5585: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5585: accuracy appended (83.33%)\n", - "Epoch 5585: model set back to train mode\n", - "Epoch 5585: model parameters saved\n", - "Epoch 5586 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5586: avg_loss appended (2.7778)\n", - "Epoch 5586: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5586: accuracy appended (83.33%)\n", - "Epoch 5586: model set back to train mode\n", - "Epoch 5586: model parameters saved\n", - "Epoch 5587 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5587: avg_loss appended (2.7778)\n", - "Epoch 5587: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5587: accuracy appended (83.33%)\n", - "Epoch 5587: model set back to train mode\n", - "Epoch 5587: model parameters saved\n", - "Epoch 5588 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5588: avg_loss appended (2.7778)\n", - "Epoch 5588: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5588: accuracy appended (83.33%)\n", - "Epoch 5588: model set back to train mode\n", - "Epoch 5588: model parameters saved\n", - "Epoch 5589 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5589: avg_loss appended (2.7778)\n", - "Epoch 5589: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5589: accuracy appended (83.33%)\n", - "Epoch 5589: model set back to train mode\n", - "Epoch 5589: model parameters saved\n", - "Epoch 5590 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5590: avg_loss appended (2.7778)\n", - "Epoch 5590: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5590: accuracy appended (83.33%)\n", - "Epoch 5590: model set back to train mode\n", - "Epoch 5590: model parameters saved\n", - "Epoch 5591 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5591: avg_loss appended (2.7778)\n", - "Epoch 5591: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5591: accuracy appended (83.33%)\n", - "Epoch 5591: model set back to train mode\n", - "Epoch 5591: model parameters saved\n", - "Epoch 5592 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5592: avg_loss appended (2.7778)\n", - "Epoch 5592: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5592: accuracy appended (83.33%)\n", - "Epoch 5592: model set back to train mode\n", - "Epoch 5592: model parameters saved\n", - "Epoch 5593 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5593: avg_loss appended (2.7778)\n", - "Epoch 5593: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5593: accuracy appended (83.33%)\n", - "Epoch 5593: model set back to train mode\n", - "Epoch 5593: model parameters saved\n", - "Epoch 5594 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5594: avg_loss appended (2.7778)\n", - "Epoch 5594: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5594: accuracy appended (83.33%)\n", - "Epoch 5594: model set back to train mode\n", - "Epoch 5594: model parameters saved\n", - "Epoch 5595 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5595: avg_loss appended (2.7778)\n", - "Epoch 5595: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5595: accuracy appended (83.33%)\n", - "Epoch 5595: model set back to train mode\n", - "Epoch 5595: model parameters saved\n", - "Epoch 5596 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5596: avg_loss appended (2.7778)\n", - "Epoch 5596: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5596: accuracy appended (83.33%)\n", - "Epoch 5596: model set back to train mode\n", - "Epoch 5596: model parameters saved\n", - "Epoch 5597 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5597: avg_loss appended (2.7778)\n", - "Epoch 5597: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5597: accuracy appended (83.33%)\n", - "Epoch 5597: model set back to train mode\n", - "Epoch 5597: model parameters saved\n", - "Epoch 5598 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5598: avg_loss appended (2.7778)\n", - "Epoch 5598: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5598: accuracy appended (83.33%)\n", - "Epoch 5598: model set back to train mode\n", - "Epoch 5598: model parameters saved\n", - "Epoch 5599 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5599: avg_loss appended (2.7778)\n", - "Epoch 5599: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5599: accuracy appended (83.33%)\n", - "Epoch 5599: model set back to train mode\n", - "Epoch 5599: model parameters saved\n", - "Epoch 5600 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5600: avg_loss appended (2.7778)\n", - "Epoch 5600: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5600: accuracy appended (83.33%)\n", - "Epoch 5600: model set back to train mode\n", - "Epoch 5600: model parameters saved\n", - "Epoch 5600/10000, Loss: 2.7778, Accuracy: 83.33%\n", - "Epoch 5601 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5601: avg_loss appended (2.7778)\n", - "Epoch 5601: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5601: accuracy appended (83.33%)\n", - "Epoch 5601: model set back to train mode\n", - "Epoch 5601: model parameters saved\n", - "Epoch 5602 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5602: avg_loss appended (2.7778)\n", - "Epoch 5602: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5602: accuracy appended (83.33%)\n", - "Epoch 5602: model set back to train mode\n", - "Epoch 5602: model parameters saved\n", - "Epoch 5603 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5603: avg_loss appended (2.7778)\n", - "Epoch 5603: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5603: accuracy appended (83.33%)\n", - "Epoch 5603: model set back to train mode\n", - "Epoch 5603: model parameters saved\n", - "Epoch 5604 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5604: avg_loss appended (2.7778)\n", - "Epoch 5604: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5604: accuracy appended (83.33%)\n", - "Epoch 5604: model set back to train mode\n", - "Epoch 5604: model parameters saved\n", - "Epoch 5605 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5605: avg_loss appended (2.7778)\n", - "Epoch 5605: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5605: accuracy appended (83.33%)\n", - "Epoch 5605: model set back to train mode\n", - "Epoch 5605: model parameters saved\n", - "Epoch 5606 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5606: avg_loss appended (2.7778)\n", - "Epoch 5606: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5606: accuracy appended (83.33%)\n", - "Epoch 5606: model set back to train mode\n", - "Epoch 5606: model parameters saved\n", - "Epoch 5607 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5607: avg_loss appended (2.7778)\n", - "Epoch 5607: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5607: accuracy appended (83.33%)\n", - "Epoch 5607: model set back to train mode\n", - "Epoch 5607: model parameters saved\n", - "Epoch 5608 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5608: avg_loss appended (2.7778)\n", - "Epoch 5608: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5608: accuracy appended (83.33%)\n", - "Epoch 5608: model set back to train mode\n", - "Epoch 5608: model parameters saved\n", - "Epoch 5609 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5609: avg_loss appended (2.7778)\n", - "Epoch 5609: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5609: accuracy appended (83.33%)\n", - "Epoch 5609: model set back to train mode\n", - "Epoch 5609: model parameters saved\n", - "Epoch 5610 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5610: avg_loss appended (2.7778)\n", - "Epoch 5610: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5610: accuracy appended (83.33%)\n", - "Epoch 5610: model set back to train mode\n", - "Epoch 5610: model parameters saved\n", - "Epoch 5611 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5611: avg_loss appended (2.7778)\n", - "Epoch 5611: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5611: accuracy appended (83.33%)\n", - "Epoch 5611: model set back to train mode\n", - "Epoch 5611: model parameters saved\n", - "Epoch 5612 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5612: avg_loss appended (2.7778)\n", - "Epoch 5612: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5612: accuracy appended (83.33%)\n", - "Epoch 5612: model set back to train mode\n", - "Epoch 5612: model parameters saved\n", - "Epoch 5613 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5613: avg_loss appended (2.7778)\n", - "Epoch 5613: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5613: accuracy appended (83.33%)\n", - "Epoch 5613: model set back to train mode\n", - "Epoch 5613: model parameters saved\n", - "Epoch 5614 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5614: avg_loss appended (2.7778)\n", - "Epoch 5614: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5614: accuracy appended (83.33%)\n", - "Epoch 5614: model set back to train mode\n", - "Epoch 5614: model parameters saved\n", - "Epoch 5615 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5615: avg_loss appended (2.7778)\n", - "Epoch 5615: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5615: accuracy appended (83.33%)\n", - "Epoch 5615: model set back to train mode\n", - "Epoch 5615: model parameters saved\n", - "Epoch 5616 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5616: avg_loss appended (2.7778)\n", - "Epoch 5616: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5616: accuracy appended (83.33%)\n", - "Epoch 5616: model set back to train mode\n", - "Epoch 5616: model parameters saved\n", - "Epoch 5617 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5617: avg_loss appended (2.7778)\n", - "Epoch 5617: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5617: accuracy appended (83.33%)\n", - "Epoch 5617: model set back to train mode\n", - "Epoch 5617: model parameters saved\n", - "Epoch 5618 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5618: avg_loss appended (2.7778)\n", - "Epoch 5618: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5618: accuracy appended (83.33%)\n", - "Epoch 5618: model set back to train mode\n", - "Epoch 5618: model parameters saved\n", - "Epoch 5619 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5619: avg_loss appended (2.7778)\n", - "Epoch 5619: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5619: accuracy appended (83.33%)\n", - "Epoch 5619: model set back to train mode\n", - "Epoch 5619: model parameters saved\n", - "Epoch 5620 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5620: avg_loss appended (2.7778)\n", - "Epoch 5620: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5620: accuracy appended (83.33%)\n", - "Epoch 5620: model set back to train mode\n", - "Epoch 5620: model parameters saved\n", - "Epoch 5621 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5621: avg_loss appended (2.7778)\n", - "Epoch 5621: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5621: accuracy appended (83.33%)\n", - "Epoch 5621: model set back to train mode\n", - "Epoch 5621: model parameters saved\n", - "Epoch 5622 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5622: avg_loss appended (2.7778)\n", - "Epoch 5622: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5622: accuracy appended (83.33%)\n", - "Epoch 5622: model set back to train mode\n", - "Epoch 5622: model parameters saved\n", - "Epoch 5623 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5623: avg_loss appended (2.7778)\n", - "Epoch 5623: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5623: accuracy appended (83.33%)\n", - "Epoch 5623: model set back to train mode\n", - "Epoch 5623: model parameters saved\n", - "Epoch 5624 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5624: avg_loss appended (2.7778)\n", - "Epoch 5624: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5624: accuracy appended (83.33%)\n", - "Epoch 5624: model set back to train mode\n", - "Epoch 5624: model parameters saved\n", - "Epoch 5625 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5625: avg_loss appended (2.7778)\n", - "Epoch 5625: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5625: accuracy appended (83.33%)\n", - "Epoch 5625: model set back to train mode\n", - "Epoch 5625: model parameters saved\n", - "Epoch 5626 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5626: avg_loss appended (2.7778)\n", - "Epoch 5626: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5626: accuracy appended (83.33%)\n", - "Epoch 5626: model set back to train mode\n", - "Epoch 5626: model parameters saved\n", - "Epoch 5627 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5627: avg_loss appended (2.7778)\n", - "Epoch 5627: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5627: accuracy appended (83.33%)\n", - "Epoch 5627: model set back to train mode\n", - "Epoch 5627: model parameters saved\n", - "Epoch 5628 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5628: avg_loss appended (2.7778)\n", - "Epoch 5628: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5628: accuracy appended (83.33%)\n", - "Epoch 5628: model set back to train mode\n", - "Epoch 5628: model parameters saved\n", - "Epoch 5629 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5629: avg_loss appended (2.7778)\n", - "Epoch 5629: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5629: accuracy appended (83.33%)\n", - "Epoch 5629: model set back to train mode\n", - "Epoch 5629: model parameters saved\n", - "Epoch 5630 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5630: avg_loss appended (2.7778)\n", - "Epoch 5630: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5630: accuracy appended (83.33%)\n", - "Epoch 5630: model set back to train mode\n", - "Epoch 5630: model parameters saved\n", - "Epoch 5631 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5631: avg_loss appended (2.7778)\n", - "Epoch 5631: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5631: accuracy appended (83.33%)\n", - "Epoch 5631: model set back to train mode\n", - "Epoch 5631: model parameters saved\n", - "Epoch 5632 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5632: avg_loss appended (2.7778)\n", - "Epoch 5632: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5632: accuracy appended (83.33%)\n", - "Epoch 5632: model set back to train mode\n", - "Epoch 5632: model parameters saved\n", - "Epoch 5633 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5633: avg_loss appended (2.7778)\n", - "Epoch 5633: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5633: accuracy appended (83.33%)\n", - "Epoch 5633: model set back to train mode\n", - "Epoch 5633: model parameters saved\n", - "Epoch 5634 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5634: avg_loss appended (2.7778)\n", - "Epoch 5634: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5634: accuracy appended (83.33%)\n", - "Epoch 5634: model set back to train mode\n", - "Epoch 5634: model parameters saved\n", - "Epoch 5635 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5635: avg_loss appended (2.7778)\n", - "Epoch 5635: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5635: accuracy appended (83.33%)\n", - "Epoch 5635: model set back to train mode\n", - "Epoch 5635: model parameters saved\n", - "Epoch 5636 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5636: avg_loss appended (2.7778)\n", - "Epoch 5636: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5636: accuracy appended (83.33%)\n", - "Epoch 5636: model set back to train mode\n", - "Epoch 5636: model parameters saved\n", - "Epoch 5637 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5637: avg_loss appended (2.7778)\n", - "Epoch 5637: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5637: accuracy appended (83.33%)\n", - "Epoch 5637: model set back to train mode\n", - "Epoch 5637: model parameters saved\n", - "Epoch 5638 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5638: avg_loss appended (2.7778)\n", - "Epoch 5638: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5638: accuracy appended (83.33%)\n", - "Epoch 5638: model set back to train mode\n", - "Epoch 5638: model parameters saved\n", - "Epoch 5639 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5639: avg_loss appended (2.7778)\n", - "Epoch 5639: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5639: accuracy appended (83.33%)\n", - "Epoch 5639: model set back to train mode\n", - "Epoch 5639: model parameters saved\n", - "Epoch 5640 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5640: avg_loss appended (2.7778)\n", - "Epoch 5640: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5640: accuracy appended (83.33%)\n", - "Epoch 5640: model set back to train mode\n", - "Epoch 5640: model parameters saved\n", - "Epoch 5641 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5641: avg_loss appended (2.7778)\n", - "Epoch 5641: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5641: accuracy appended (83.33%)\n", - "Epoch 5641: model set back to train mode\n", - "Epoch 5641: model parameters saved\n", - "Epoch 5642 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5642: avg_loss appended (2.7778)\n", - "Epoch 5642: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5642: accuracy appended (83.33%)\n", - "Epoch 5642: model set back to train mode\n", - "Epoch 5642: model parameters saved\n", - "Epoch 5643 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5643: avg_loss appended (2.7778)\n", - "Epoch 5643: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5643: accuracy appended (83.33%)\n", - "Epoch 5643: model set back to train mode\n", - "Epoch 5643: model parameters saved\n", - "Epoch 5644 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5644: avg_loss appended (2.7778)\n", - "Epoch 5644: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5644: accuracy appended (83.33%)\n", - "Epoch 5644: model set back to train mode\n", - "Epoch 5644: model parameters saved\n", - "Epoch 5645 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5645: avg_loss appended (2.7778)\n", - "Epoch 5645: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5645: accuracy appended (83.33%)\n", - "Epoch 5645: model set back to train mode\n", - "Epoch 5645: model parameters saved\n", - "Epoch 5646 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5646: avg_loss appended (2.7778)\n", - "Epoch 5646: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5646: accuracy appended (83.33%)\n", - "Epoch 5646: model set back to train mode\n", - "Epoch 5646: model parameters saved\n", - "Epoch 5647 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5647: avg_loss appended (2.7778)\n", - "Epoch 5647: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5647: accuracy appended (83.33%)\n", - "Epoch 5647: model set back to train mode\n", - "Epoch 5647: model parameters saved\n", - "Epoch 5648 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5648: avg_loss appended (2.7778)\n", - "Epoch 5648: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5648: accuracy appended (83.33%)\n", - "Epoch 5648: model set back to train mode\n", - "Epoch 5648: model parameters saved\n", - "Epoch 5649 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5649: avg_loss appended (2.7778)\n", - "Epoch 5649: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5649: accuracy appended (83.33%)\n", - "Epoch 5649: model set back to train mode\n", - "Epoch 5649: model parameters saved\n", - "Epoch 5650 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5650: avg_loss appended (2.7778)\n", - "Epoch 5650: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5650: accuracy appended (83.33%)\n", - "Epoch 5650: model set back to train mode\n", - "Epoch 5650: model parameters saved\n", - "Epoch 5651 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5651: avg_loss appended (2.7778)\n", - "Epoch 5651: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5651: accuracy appended (83.33%)\n", - "Epoch 5651: model set back to train mode\n", - "Epoch 5651: model parameters saved\n", - "Epoch 5652 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5652: avg_loss appended (2.7778)\n", - "Epoch 5652: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5652: accuracy appended (83.33%)\n", - "Epoch 5652: model set back to train mode\n", - "Epoch 5652: model parameters saved\n", - "Epoch 5653 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5653: avg_loss appended (2.7778)\n", - "Epoch 5653: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5653: accuracy appended (83.33%)\n", - "Epoch 5653: model set back to train mode\n", - "Epoch 5653: model parameters saved\n", - "Epoch 5654 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5654: avg_loss appended (2.7778)\n", - "Epoch 5654: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5654: accuracy appended (83.33%)\n", - "Epoch 5654: model set back to train mode\n", - "Epoch 5654: model parameters saved\n", - "Epoch 5655 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5655: avg_loss appended (2.7778)\n", - "Epoch 5655: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5655: accuracy appended (83.33%)\n", - "Epoch 5655: model set back to train mode\n", - "Epoch 5655: model parameters saved\n", - "Epoch 5656 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5656: avg_loss appended (2.7778)\n", - "Epoch 5656: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5656: accuracy appended (83.33%)\n", - "Epoch 5656: model set back to train mode\n", - "Epoch 5656: model parameters saved\n", - "Epoch 5657 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5657: avg_loss appended (2.7778)\n", - "Epoch 5657: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5657: accuracy appended (83.33%)\n", - "Epoch 5657: model set back to train mode\n", - "Epoch 5657: model parameters saved\n", - "Epoch 5658 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5658: avg_loss appended (2.7778)\n", - "Epoch 5658: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5658: accuracy appended (83.33%)\n", - "Epoch 5658: model set back to train mode\n", - "Epoch 5658: model parameters saved\n", - "Epoch 5659 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5659: avg_loss appended (2.7778)\n", - "Epoch 5659: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5659: accuracy appended (83.33%)\n", - "Epoch 5659: model set back to train mode\n", - "Epoch 5659: model parameters saved\n", - "Epoch 5660 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5660: avg_loss appended (2.7778)\n", - "Epoch 5660: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5660: accuracy appended (83.33%)\n", - "Epoch 5660: model set back to train mode\n", - "Epoch 5660: model parameters saved\n", - "Epoch 5661 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5661: avg_loss appended (2.7778)\n", - "Epoch 5661: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5661: accuracy appended (83.33%)\n", - "Epoch 5661: model set back to train mode\n", - "Epoch 5661: model parameters saved\n", - "Epoch 5662 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5662: avg_loss appended (2.7778)\n", - "Epoch 5662: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5662: accuracy appended (83.33%)\n", - "Epoch 5662: model set back to train mode\n", - "Epoch 5662: model parameters saved\n", - "Epoch 5663 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5663: avg_loss appended (2.7778)\n", - "Epoch 5663: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5663: accuracy appended (83.33%)\n", - "Epoch 5663: model set back to train mode\n", - "Epoch 5663: model parameters saved\n", - "Epoch 5664 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5664: avg_loss appended (2.7778)\n", - "Epoch 5664: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5664: accuracy appended (83.33%)\n", - "Epoch 5664: model set back to train mode\n", - "Epoch 5664: model parameters saved\n", - "Epoch 5665 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5665: avg_loss appended (2.7778)\n", - "Epoch 5665: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5665: accuracy appended (83.33%)\n", - "Epoch 5665: model set back to train mode\n", - "Epoch 5665: model parameters saved\n", - "Epoch 5666 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5666: avg_loss appended (2.7778)\n", - "Epoch 5666: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5666: accuracy appended (83.33%)\n", - "Epoch 5666: model set back to train mode\n", - "Epoch 5666: model parameters saved\n", - "Epoch 5667 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5667: avg_loss appended (2.7778)\n", - "Epoch 5667: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5667: accuracy appended (83.33%)\n", - "Epoch 5667: model set back to train mode\n", - "Epoch 5667: model parameters saved\n", - "Epoch 5668 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5668: avg_loss appended (2.7778)\n", - "Epoch 5668: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5668: accuracy appended (83.33%)\n", - "Epoch 5668: model set back to train mode\n", - "Epoch 5668: model parameters saved\n", - "Epoch 5669 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5669: avg_loss appended (2.7778)\n", - "Epoch 5669: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5669: accuracy appended (83.33%)\n", - "Epoch 5669: model set back to train mode\n", - "Epoch 5669: model parameters saved\n", - "Epoch 5670 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5670: avg_loss appended (2.7778)\n", - "Epoch 5670: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5670: accuracy appended (83.33%)\n", - "Epoch 5670: model set back to train mode\n", - "Epoch 5670: model parameters saved\n", - "Epoch 5671 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5671: avg_loss appended (2.7778)\n", - "Epoch 5671: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5671: accuracy appended (83.33%)\n", - "Epoch 5671: model set back to train mode\n", - "Epoch 5671: model parameters saved\n", - "Epoch 5672 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5672: avg_loss appended (2.7778)\n", - "Epoch 5672: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5672: accuracy appended (83.33%)\n", - "Epoch 5672: model set back to train mode\n", - "Epoch 5672: model parameters saved\n", - "Epoch 5673 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5673: avg_loss appended (2.7778)\n", - "Epoch 5673: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5673: accuracy appended (83.33%)\n", - "Epoch 5673: model set back to train mode\n", - "Epoch 5673: model parameters saved\n", - "Epoch 5674 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5674: avg_loss appended (2.7778)\n", - "Epoch 5674: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5674: accuracy appended (83.33%)\n", - "Epoch 5674: model set back to train mode\n", - "Epoch 5674: model parameters saved\n", - "Epoch 5675 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5675: avg_loss appended (2.7778)\n", - "Epoch 5675: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5675: accuracy appended (83.33%)\n", - "Epoch 5675: model set back to train mode\n", - "Epoch 5675: model parameters saved\n", - "Epoch 5676 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5676: avg_loss appended (2.7778)\n", - "Epoch 5676: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5676: accuracy appended (83.33%)\n", - "Epoch 5676: model set back to train mode\n", - "Epoch 5676: model parameters saved\n", - "Epoch 5677 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5677: avg_loss appended (2.7778)\n", - "Epoch 5677: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5677: accuracy appended (83.33%)\n", - "Epoch 5677: model set back to train mode\n", - "Epoch 5677: model parameters saved\n", - "Epoch 5678 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5678: avg_loss appended (2.7778)\n", - "Epoch 5678: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5678: accuracy appended (83.33%)\n", - "Epoch 5678: model set back to train mode\n", - "Epoch 5678: model parameters saved\n", - "Epoch 5679 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5679: avg_loss appended (2.7778)\n", - "Epoch 5679: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5679: accuracy appended (83.33%)\n", - "Epoch 5679: model set back to train mode\n", - "Epoch 5679: model parameters saved\n", - "Epoch 5680 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5680: avg_loss appended (2.7778)\n", - "Epoch 5680: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5680: accuracy appended (83.33%)\n", - "Epoch 5680: model set back to train mode\n", - "Epoch 5680: model parameters saved\n", - "Epoch 5681 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5681: avg_loss appended (2.7778)\n", - "Epoch 5681: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5681: accuracy appended (83.33%)\n", - "Epoch 5681: model set back to train mode\n", - "Epoch 5681: model parameters saved\n", - "Epoch 5682 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5682: avg_loss appended (2.7778)\n", - "Epoch 5682: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5682: accuracy appended (83.33%)\n", - "Epoch 5682: model set back to train mode\n", - "Epoch 5682: model parameters saved\n", - "Epoch 5683 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5683: avg_loss appended (2.7778)\n", - "Epoch 5683: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5683: accuracy appended (83.33%)\n", - "Epoch 5683: model set back to train mode\n", - "Epoch 5683: model parameters saved\n", - "Epoch 5684 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5684: avg_loss appended (2.7778)\n", - "Epoch 5684: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5684: accuracy appended (83.33%)\n", - "Epoch 5684: model set back to train mode\n", - "Epoch 5684: model parameters saved\n", - "Epoch 5685 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5685: avg_loss appended (2.7778)\n", - "Epoch 5685: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5685: accuracy appended (83.33%)\n", - "Epoch 5685: model set back to train mode\n", - "Epoch 5685: model parameters saved\n", - "Epoch 5686 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5686: avg_loss appended (2.7778)\n", - "Epoch 5686: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5686: accuracy appended (83.33%)\n", - "Epoch 5686: model set back to train mode\n", - "Epoch 5686: model parameters saved\n", - "Epoch 5687 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5687: avg_loss appended (2.7778)\n", - "Epoch 5687: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5687: accuracy appended (83.33%)\n", - "Epoch 5687: model set back to train mode\n", - "Epoch 5687: model parameters saved\n", - "Epoch 5688 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5688: avg_loss appended (2.7778)\n", - "Epoch 5688: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5688: accuracy appended (83.33%)\n", - "Epoch 5688: model set back to train mode\n", - "Epoch 5688: model parameters saved\n", - "Epoch 5689 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5689: avg_loss appended (2.7778)\n", - "Epoch 5689: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5689: accuracy appended (83.33%)\n", - "Epoch 5689: model set back to train mode\n", - "Epoch 5689: model parameters saved\n", - "Epoch 5690 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5690: avg_loss appended (2.7778)\n", - "Epoch 5690: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5690: accuracy appended (83.33%)\n", - "Epoch 5690: model set back to train mode\n", - "Epoch 5690: model parameters saved\n", - "Epoch 5691 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5691: avg_loss appended (2.7778)\n", - "Epoch 5691: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5691: accuracy appended (83.33%)\n", - "Epoch 5691: model set back to train mode\n", - "Epoch 5691: model parameters saved\n", - "Epoch 5692 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5692: avg_loss appended (2.7778)\n", - "Epoch 5692: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5692: accuracy appended (83.33%)\n", - "Epoch 5692: model set back to train mode\n", - "Epoch 5692: model parameters saved\n", - "Epoch 5693 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5693: avg_loss appended (2.7778)\n", - "Epoch 5693: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5693: accuracy appended (83.33%)\n", - "Epoch 5693: model set back to train mode\n", - "Epoch 5693: model parameters saved\n", - "Epoch 5694 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5694: avg_loss appended (2.7778)\n", - "Epoch 5694: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5694: accuracy appended (83.33%)\n", - "Epoch 5694: model set back to train mode\n", - "Epoch 5694: model parameters saved\n", - "Epoch 5695 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5695: avg_loss appended (2.7778)\n", - "Epoch 5695: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5695: accuracy appended (83.33%)\n", - "Epoch 5695: model set back to train mode\n", - "Epoch 5695: model parameters saved\n", - "Epoch 5696 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5696: avg_loss appended (2.7778)\n", - "Epoch 5696: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5696: accuracy appended (83.33%)\n", - "Epoch 5696: model set back to train mode\n", - "Epoch 5696: model parameters saved\n", - "Epoch 5697 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5697: avg_loss appended (2.7778)\n", - "Epoch 5697: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5697: accuracy appended (83.33%)\n", - "Epoch 5697: model set back to train mode\n", - "Epoch 5697: model parameters saved\n", - "Epoch 5698 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5698: avg_loss appended (2.7778)\n", - "Epoch 5698: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5698: accuracy appended (83.33%)\n", - "Epoch 5698: model set back to train mode\n", - "Epoch 5698: model parameters saved\n", - "Epoch 5699 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5699: avg_loss appended (2.7778)\n", - "Epoch 5699: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5699: accuracy appended (83.33%)\n", - "Epoch 5699: model set back to train mode\n", - "Epoch 5699: model parameters saved\n", - "Epoch 5700 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5700: avg_loss appended (2.7778)\n", - "Epoch 5700: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5700: accuracy appended (83.33%)\n", - "Epoch 5700: model set back to train mode\n", - "Epoch 5700: model parameters saved\n", - "Epoch 5700/10000, Loss: 2.7778, Accuracy: 83.33%\n", - "Epoch 5701 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5701: avg_loss appended (2.7778)\n", - "Epoch 5701: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5701: accuracy appended (83.33%)\n", - "Epoch 5701: model set back to train mode\n", - "Epoch 5701: model parameters saved\n", - "Epoch 5702 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5702: avg_loss appended (2.7778)\n", - "Epoch 5702: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5702: accuracy appended (83.33%)\n", - "Epoch 5702: model set back to train mode\n", - "Epoch 5702: model parameters saved\n", - "Epoch 5703 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5703: avg_loss appended (2.7778)\n", - "Epoch 5703: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5703: accuracy appended (83.33%)\n", - "Epoch 5703: model set back to train mode\n", - "Epoch 5703: model parameters saved\n", - "Epoch 5704 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5704: avg_loss appended (2.7778)\n", - "Epoch 5704: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5704: accuracy appended (83.33%)\n", - "Epoch 5704: model set back to train mode\n", - "Epoch 5704: model parameters saved\n", - "Epoch 5705 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5705: avg_loss appended (2.7778)\n", - "Epoch 5705: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5705: accuracy appended (83.33%)\n", - "Epoch 5705: model set back to train mode\n", - "Epoch 5705: model parameters saved\n", - "Epoch 5706 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5706: avg_loss appended (2.7778)\n", - "Epoch 5706: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5706: accuracy appended (83.33%)\n", - "Epoch 5706: model set back to train mode\n", - "Epoch 5706: model parameters saved\n", - "Epoch 5707 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5707: avg_loss appended (2.7778)\n", - "Epoch 5707: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5707: accuracy appended (83.33%)\n", - "Epoch 5707: model set back to train mode\n", - "Epoch 5707: model parameters saved\n", - "Epoch 5708 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5708: avg_loss appended (2.7778)\n", - "Epoch 5708: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5708: accuracy appended (83.33%)\n", - "Epoch 5708: model set back to train mode\n", - "Epoch 5708: model parameters saved\n", - "Epoch 5709 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5709: avg_loss appended (2.7778)\n", - "Epoch 5709: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5709: accuracy appended (83.33%)\n", - "Epoch 5709: model set back to train mode\n", - "Epoch 5709: model parameters saved\n", - "Epoch 5710 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5710: avg_loss appended (2.7778)\n", - "Epoch 5710: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5710: accuracy appended (83.33%)\n", - "Epoch 5710: model set back to train mode\n", - "Epoch 5710: model parameters saved\n", - "Epoch 5711 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5711: avg_loss appended (2.7778)\n", - "Epoch 5711: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5711: accuracy appended (83.33%)\n", - "Epoch 5711: model set back to train mode\n", - "Epoch 5711: model parameters saved\n", - "Epoch 5712 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5712: avg_loss appended (2.7778)\n", - "Epoch 5712: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5712: accuracy appended (83.33%)\n", - "Epoch 5712: model set back to train mode\n", - "Epoch 5712: model parameters saved\n", - "Epoch 5713 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5713: avg_loss appended (2.7778)\n", - "Epoch 5713: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5713: accuracy appended (83.33%)\n", - "Epoch 5713: model set back to train mode\n", - "Epoch 5713: model parameters saved\n", - "Epoch 5714 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5714: avg_loss appended (2.7778)\n", - "Epoch 5714: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5714: accuracy appended (83.33%)\n", - "Epoch 5714: model set back to train mode\n", - "Epoch 5714: model parameters saved\n", - "Epoch 5715 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5715: avg_loss appended (2.7778)\n", - "Epoch 5715: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5715: accuracy appended (83.33%)\n", - "Epoch 5715: model set back to train mode\n", - "Epoch 5715: model parameters saved\n", - "Epoch 5716 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5716: avg_loss appended (2.7778)\n", - "Epoch 5716: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5716: accuracy appended (83.33%)\n", - "Epoch 5716: model set back to train mode\n", - "Epoch 5716: model parameters saved\n", - "Epoch 5717 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5717: avg_loss appended (2.7778)\n", - "Epoch 5717: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5717: accuracy appended (83.33%)\n", - "Epoch 5717: model set back to train mode\n", - "Epoch 5717: model parameters saved\n", - "Epoch 5718 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5718: avg_loss appended (2.7778)\n", - "Epoch 5718: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5718: accuracy appended (83.33%)\n", - "Epoch 5718: model set back to train mode\n", - "Epoch 5718: model parameters saved\n", - "Epoch 5719 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5719: avg_loss appended (2.7778)\n", - "Epoch 5719: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5719: accuracy appended (83.33%)\n", - "Epoch 5719: model set back to train mode\n", - "Epoch 5719: model parameters saved\n", - "Epoch 5720 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5720: avg_loss appended (2.7778)\n", - "Epoch 5720: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5720: accuracy appended (83.33%)\n", - "Epoch 5720: model set back to train mode\n", - "Epoch 5720: model parameters saved\n", - "Epoch 5721 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5721: avg_loss appended (2.7778)\n", - "Epoch 5721: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5721: accuracy appended (83.33%)\n", - "Epoch 5721: model set back to train mode\n", - "Epoch 5721: model parameters saved\n", - "Epoch 5722 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5722: avg_loss appended (2.7778)\n", - "Epoch 5722: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5722: accuracy appended (83.33%)\n", - "Epoch 5722: model set back to train mode\n", - "Epoch 5722: model parameters saved\n", - "Epoch 5723 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5723: avg_loss appended (2.7778)\n", - "Epoch 5723: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5723: accuracy appended (83.33%)\n", - "Epoch 5723: model set back to train mode\n", - "Epoch 5723: model parameters saved\n", - "Epoch 5724 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5724: avg_loss appended (2.7778)\n", - "Epoch 5724: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5724: accuracy appended (83.33%)\n", - "Epoch 5724: model set back to train mode\n", - "Epoch 5724: model parameters saved\n", - "Epoch 5725 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5725: avg_loss appended (2.7778)\n", - "Epoch 5725: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5725: accuracy appended (83.33%)\n", - "Epoch 5725: model set back to train mode\n", - "Epoch 5725: model parameters saved\n", - "Epoch 5726 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5726: avg_loss appended (2.7778)\n", - "Epoch 5726: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5726: accuracy appended (83.33%)\n", - "Epoch 5726: model set back to train mode\n", - "Epoch 5726: model parameters saved\n", - "Epoch 5727 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5727: avg_loss appended (2.7778)\n", - "Epoch 5727: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5727: accuracy appended (83.33%)\n", - "Epoch 5727: model set back to train mode\n", - "Epoch 5727: model parameters saved\n", - "Epoch 5728 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5728: avg_loss appended (2.7778)\n", - "Epoch 5728: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5728: accuracy appended (83.33%)\n", - "Epoch 5728: model set back to train mode\n", - "Epoch 5728: model parameters saved\n", - "Epoch 5729 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5729: avg_loss appended (2.7778)\n", - "Epoch 5729: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5729: accuracy appended (83.33%)\n", - "Epoch 5729: model set back to train mode\n", - "Epoch 5729: model parameters saved\n", - "Epoch 5730 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5730: avg_loss appended (2.7778)\n", - "Epoch 5730: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5730: accuracy appended (83.33%)\n", - "Epoch 5730: model set back to train mode\n", - "Epoch 5730: model parameters saved\n", - "Epoch 5731 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5731: avg_loss appended (2.7778)\n", - "Epoch 5731: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5731: accuracy appended (83.33%)\n", - "Epoch 5731: model set back to train mode\n", - "Epoch 5731: model parameters saved\n", - "Epoch 5732 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5732: avg_loss appended (2.7778)\n", - "Epoch 5732: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5732: accuracy appended (83.33%)\n", - "Epoch 5732: model set back to train mode\n", - "Epoch 5732: model parameters saved\n", - "Epoch 5733 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5733: avg_loss appended (2.7778)\n", - "Epoch 5733: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5733: accuracy appended (83.33%)\n", - "Epoch 5733: model set back to train mode\n", - "Epoch 5733: model parameters saved\n", - "Epoch 5734 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5734: avg_loss appended (2.7778)\n", - "Epoch 5734: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5734: accuracy appended (83.33%)\n", - "Epoch 5734: model set back to train mode\n", - "Epoch 5734: model parameters saved\n", - "Epoch 5735 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5735: avg_loss appended (2.7778)\n", - "Epoch 5735: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5735: accuracy appended (83.33%)\n", - "Epoch 5735: model set back to train mode\n", - "Epoch 5735: model parameters saved\n", - "Epoch 5736 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5736: avg_loss appended (2.7778)\n", - "Epoch 5736: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5736: accuracy appended (83.33%)\n", - "Epoch 5736: model set back to train mode\n", - "Epoch 5736: model parameters saved\n", - "Epoch 5737 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5737: avg_loss appended (2.7778)\n", - "Epoch 5737: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5737: accuracy appended (83.33%)\n", - "Epoch 5737: model set back to train mode\n", - "Epoch 5737: model parameters saved\n", - "Epoch 5738 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5738: avg_loss appended (2.7778)\n", - "Epoch 5738: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5738: accuracy appended (83.33%)\n", - "Epoch 5738: model set back to train mode\n", - "Epoch 5738: model parameters saved\n", - "Epoch 5739 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5739: avg_loss appended (2.7778)\n", - "Epoch 5739: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5739: accuracy appended (83.33%)\n", - "Epoch 5739: model set back to train mode\n", - "Epoch 5739: model parameters saved\n", - "Epoch 5740 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5740: avg_loss appended (2.7778)\n", - "Epoch 5740: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5740: accuracy appended (83.33%)\n", - "Epoch 5740: model set back to train mode\n", - "Epoch 5740: model parameters saved\n", - "Epoch 5741 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5741: avg_loss appended (2.7778)\n", - "Epoch 5741: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5741: accuracy appended (83.33%)\n", - "Epoch 5741: model set back to train mode\n", - "Epoch 5741: model parameters saved\n", - "Epoch 5742 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5742: avg_loss appended (2.7778)\n", - "Epoch 5742: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5742: accuracy appended (83.33%)\n", - "Epoch 5742: model set back to train mode\n", - "Epoch 5742: model parameters saved\n", - "Epoch 5743 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5743: avg_loss appended (2.7778)\n", - "Epoch 5743: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5743: accuracy appended (83.33%)\n", - "Epoch 5743: model set back to train mode\n", - "Epoch 5743: model parameters saved\n", - "Epoch 5744 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5744: avg_loss appended (2.7778)\n", - "Epoch 5744: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5744: accuracy appended (83.33%)\n", - "Epoch 5744: model set back to train mode\n", - "Epoch 5744: model parameters saved\n", - "Epoch 5745 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5745: avg_loss appended (2.7778)\n", - "Epoch 5745: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5745: accuracy appended (83.33%)\n", - "Epoch 5745: model set back to train mode\n", - "Epoch 5745: model parameters saved\n", - "Epoch 5746 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5746: avg_loss appended (2.7778)\n", - "Epoch 5746: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5746: accuracy appended (83.33%)\n", - "Epoch 5746: model set back to train mode\n", - "Epoch 5746: model parameters saved\n", - "Epoch 5747 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5747: avg_loss appended (2.7778)\n", - "Epoch 5747: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5747: accuracy appended (83.33%)\n", - "Epoch 5747: model set back to train mode\n", - "Epoch 5747: model parameters saved\n", - "Epoch 5748 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5748: avg_loss appended (2.7778)\n", - "Epoch 5748: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5748: accuracy appended (83.33%)\n", - "Epoch 5748: model set back to train mode\n", - "Epoch 5748: model parameters saved\n", - "Epoch 5749 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5749: avg_loss appended (2.7778)\n", - "Epoch 5749: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5749: accuracy appended (83.33%)\n", - "Epoch 5749: model set back to train mode\n", - "Epoch 5749: model parameters saved\n", - "Epoch 5750 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5750: avg_loss appended (2.7778)\n", - "Epoch 5750: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5750: accuracy appended (83.33%)\n", - "Epoch 5750: model set back to train mode\n", - "Epoch 5750: model parameters saved\n", - "Epoch 5751 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5751: avg_loss appended (2.7778)\n", - "Epoch 5751: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5751: accuracy appended (83.33%)\n", - "Epoch 5751: model set back to train mode\n", - "Epoch 5751: model parameters saved\n", - "Epoch 5752 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5752: avg_loss appended (2.7778)\n", - "Epoch 5752: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5752: accuracy appended (83.33%)\n", - "Epoch 5752: model set back to train mode\n", - "Epoch 5752: model parameters saved\n", - "Epoch 5753 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5753: avg_loss appended (2.7778)\n", - "Epoch 5753: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5753: accuracy appended (83.33%)\n", - "Epoch 5753: model set back to train mode\n", - "Epoch 5753: model parameters saved\n", - "Epoch 5754 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5754: avg_loss appended (2.7778)\n", - "Epoch 5754: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5754: accuracy appended (83.33%)\n", - "Epoch 5754: model set back to train mode\n", - "Epoch 5754: model parameters saved\n", - "Epoch 5755 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5755: avg_loss appended (2.7778)\n", - "Epoch 5755: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5755: accuracy appended (83.33%)\n", - "Epoch 5755: model set back to train mode\n", - "Epoch 5755: model parameters saved\n", - "Epoch 5756 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5756: avg_loss appended (2.7778)\n", - "Epoch 5756: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5756: accuracy appended (83.33%)\n", - "Epoch 5756: model set back to train mode\n", - "Epoch 5756: model parameters saved\n", - "Epoch 5757 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5757: avg_loss appended (2.7778)\n", - "Epoch 5757: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5757: accuracy appended (83.33%)\n", - "Epoch 5757: model set back to train mode\n", - "Epoch 5757: model parameters saved\n", - "Epoch 5758 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5758: avg_loss appended (2.7778)\n", - "Epoch 5758: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5758: accuracy appended (83.33%)\n", - "Epoch 5758: model set back to train mode\n", - "Epoch 5758: model parameters saved\n", - "Epoch 5759 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5759: avg_loss appended (2.7778)\n", - "Epoch 5759: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5759: accuracy appended (83.33%)\n", - "Epoch 5759: model set back to train mode\n", - "Epoch 5759: model parameters saved\n", - "Epoch 5760 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5760: avg_loss appended (2.7778)\n", - "Epoch 5760: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5760: accuracy appended (83.33%)\n", - "Epoch 5760: model set back to train mode\n", - "Epoch 5760: model parameters saved\n", - "Epoch 5761 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5761: avg_loss appended (2.7778)\n", - "Epoch 5761: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5761: accuracy appended (83.33%)\n", - "Epoch 5761: model set back to train mode\n", - "Epoch 5761: model parameters saved\n", - "Epoch 5762 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5762: avg_loss appended (2.7778)\n", - "Epoch 5762: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5762: accuracy appended (83.33%)\n", - "Epoch 5762: model set back to train mode\n", - "Epoch 5762: model parameters saved\n", - "Epoch 5763 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5763: avg_loss appended (2.7778)\n", - "Epoch 5763: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5763: accuracy appended (83.33%)\n", - "Epoch 5763: model set back to train mode\n", - "Epoch 5763: model parameters saved\n", - "Epoch 5764 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5764: avg_loss appended (2.7778)\n", - "Epoch 5764: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5764: accuracy appended (83.33%)\n", - "Epoch 5764: model set back to train mode\n", - "Epoch 5764: model parameters saved\n", - "Epoch 5765 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5765: avg_loss appended (2.7778)\n", - "Epoch 5765: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5765: accuracy appended (83.33%)\n", - "Epoch 5765: model set back to train mode\n", - "Epoch 5765: model parameters saved\n", - "Epoch 5766 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5766: avg_loss appended (2.7778)\n", - "Epoch 5766: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5766: accuracy appended (83.33%)\n", - "Epoch 5766: model set back to train mode\n", - "Epoch 5766: model parameters saved\n", - "Epoch 5767 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5767: avg_loss appended (2.7778)\n", - "Epoch 5767: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5767: accuracy appended (83.33%)\n", - "Epoch 5767: model set back to train mode\n", - "Epoch 5767: model parameters saved\n", - "Epoch 5768 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5768: avg_loss appended (2.7778)\n", - "Epoch 5768: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5768: accuracy appended (83.33%)\n", - "Epoch 5768: model set back to train mode\n", - "Epoch 5768: model parameters saved\n", - "Epoch 5769 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5769: avg_loss appended (2.7778)\n", - "Epoch 5769: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5769: accuracy appended (83.33%)\n", - "Epoch 5769: model set back to train mode\n", - "Epoch 5769: model parameters saved\n", - "Epoch 5770 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5770: avg_loss appended (2.7778)\n", - "Epoch 5770: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5770: accuracy appended (83.33%)\n", - "Epoch 5770: model set back to train mode\n", - "Epoch 5770: model parameters saved\n", - "Epoch 5771 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5771: avg_loss appended (2.7778)\n", - "Epoch 5771: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5771: accuracy appended (83.33%)\n", - "Epoch 5771: model set back to train mode\n", - "Epoch 5771: model parameters saved\n", - "Epoch 5772 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5772: avg_loss appended (2.7778)\n", - "Epoch 5772: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5772: accuracy appended (83.33%)\n", - "Epoch 5772: model set back to train mode\n", - "Epoch 5772: model parameters saved\n", - "Epoch 5773 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5773: avg_loss appended (2.7778)\n", - "Epoch 5773: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5773: accuracy appended (83.33%)\n", - "Epoch 5773: model set back to train mode\n", - "Epoch 5773: model parameters saved\n", - "Epoch 5774 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5774: avg_loss appended (2.7778)\n", - "Epoch 5774: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5774: accuracy appended (83.33%)\n", - "Epoch 5774: model set back to train mode\n", - "Epoch 5774: model parameters saved\n", - "Epoch 5775 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5775: avg_loss appended (2.7778)\n", - "Epoch 5775: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5775: accuracy appended (83.33%)\n", - "Epoch 5775: model set back to train mode\n", - "Epoch 5775: model parameters saved\n", - "Epoch 5776 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5776: avg_loss appended (2.7778)\n", - "Epoch 5776: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5776: accuracy appended (83.33%)\n", - "Epoch 5776: model set back to train mode\n", - "Epoch 5776: model parameters saved\n", - "Epoch 5777 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5777: avg_loss appended (2.7778)\n", - "Epoch 5777: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5777: accuracy appended (83.33%)\n", - "Epoch 5777: model set back to train mode\n", - "Epoch 5777: model parameters saved\n", - "Epoch 5778 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5778: avg_loss appended (2.7778)\n", - "Epoch 5778: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5778: accuracy appended (83.33%)\n", - "Epoch 5778: model set back to train mode\n", - "Epoch 5778: model parameters saved\n", - "Epoch 5779 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5779: avg_loss appended (2.7778)\n", - "Epoch 5779: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5779: accuracy appended (83.33%)\n", - "Epoch 5779: model set back to train mode\n", - "Epoch 5779: model parameters saved\n", - "Epoch 5780 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5780: avg_loss appended (2.7778)\n", - "Epoch 5780: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5780: accuracy appended (83.33%)\n", - "Epoch 5780: model set back to train mode\n", - "Epoch 5780: model parameters saved\n", - "Epoch 5781 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5781: avg_loss appended (2.7778)\n", - "Epoch 5781: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5781: accuracy appended (83.33%)\n", - "Epoch 5781: model set back to train mode\n", - "Epoch 5781: model parameters saved\n", - "Epoch 5782 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5782: avg_loss appended (2.7778)\n", - "Epoch 5782: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5782: accuracy appended (83.33%)\n", - "Epoch 5782: model set back to train mode\n", - "Epoch 5782: model parameters saved\n", - "Epoch 5783 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5783: avg_loss appended (2.7778)\n", - "Epoch 5783: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5783: accuracy appended (83.33%)\n", - "Epoch 5783: model set back to train mode\n", - "Epoch 5783: model parameters saved\n", - "Epoch 5784 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5784: avg_loss appended (2.7778)\n", - "Epoch 5784: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5784: accuracy appended (83.33%)\n", - "Epoch 5784: model set back to train mode\n", - "Epoch 5784: model parameters saved\n", - "Epoch 5785 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5785: avg_loss appended (2.7778)\n", - "Epoch 5785: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5785: accuracy appended (83.33%)\n", - "Epoch 5785: model set back to train mode\n", - "Epoch 5785: model parameters saved\n", - "Epoch 5786 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5786: avg_loss appended (2.7778)\n", - "Epoch 5786: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5786: accuracy appended (83.33%)\n", - "Epoch 5786: model set back to train mode\n", - "Epoch 5786: model parameters saved\n", - "Epoch 5787 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5787: avg_loss appended (2.7778)\n", - "Epoch 5787: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5787: accuracy appended (83.33%)\n", - "Epoch 5787: model set back to train mode\n", - "Epoch 5787: model parameters saved\n", - "Epoch 5788 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5788: avg_loss appended (2.7778)\n", - "Epoch 5788: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5788: accuracy appended (83.33%)\n", - "Epoch 5788: model set back to train mode\n", - "Epoch 5788: model parameters saved\n", - "Epoch 5789 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5789: avg_loss appended (2.7778)\n", - "Epoch 5789: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5789: accuracy appended (83.33%)\n", - "Epoch 5789: model set back to train mode\n", - "Epoch 5789: model parameters saved\n", - "Epoch 5790 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5790: avg_loss appended (2.7778)\n", - "Epoch 5790: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5790: accuracy appended (83.33%)\n", - "Epoch 5790: model set back to train mode\n", - "Epoch 5790: model parameters saved\n", - "Epoch 5791 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5791: avg_loss appended (2.7778)\n", - "Epoch 5791: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5791: accuracy appended (83.33%)\n", - "Epoch 5791: model set back to train mode\n", - "Epoch 5791: model parameters saved\n", - "Epoch 5792 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5792: avg_loss appended (2.7778)\n", - "Epoch 5792: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5792: accuracy appended (83.33%)\n", - "Epoch 5792: model set back to train mode\n", - "Epoch 5792: model parameters saved\n", - "Epoch 5793 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5793: avg_loss appended (2.7778)\n", - "Epoch 5793: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5793: accuracy appended (83.33%)\n", - "Epoch 5793: model set back to train mode\n", - "Epoch 5793: model parameters saved\n", - "Epoch 5794 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5794: avg_loss appended (2.7778)\n", - "Epoch 5794: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5794: accuracy appended (83.33%)\n", - "Epoch 5794: model set back to train mode\n", - "Epoch 5794: model parameters saved\n", - "Epoch 5795 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5795: avg_loss appended (2.7778)\n", - "Epoch 5795: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5795: accuracy appended (83.33%)\n", - "Epoch 5795: model set back to train mode\n", - "Epoch 5795: model parameters saved\n", - "Epoch 5796 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5796: avg_loss appended (2.7778)\n", - "Epoch 5796: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5796: accuracy appended (83.33%)\n", - "Epoch 5796: model set back to train mode\n", - "Epoch 5796: model parameters saved\n", - "Epoch 5797 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5797: avg_loss appended (2.7778)\n", - "Epoch 5797: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5797: accuracy appended (83.33%)\n", - "Epoch 5797: model set back to train mode\n", - "Epoch 5797: model parameters saved\n", - "Epoch 5798 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5798: avg_loss appended (2.7778)\n", - "Epoch 5798: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5798: accuracy appended (83.33%)\n", - "Epoch 5798: model set back to train mode\n", - "Epoch 5798: model parameters saved\n", - "Epoch 5799 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5799: avg_loss appended (2.7778)\n", - "Epoch 5799: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5799: accuracy appended (83.33%)\n", - "Epoch 5799: model set back to train mode\n", - "Epoch 5799: model parameters saved\n", - "Epoch 5800 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5800: avg_loss appended (2.7778)\n", - "Epoch 5800: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5800: accuracy appended (83.33%)\n", - "Epoch 5800: model set back to train mode\n", - "Epoch 5800: model parameters saved\n", - "Epoch 5800/10000, Loss: 2.7778, Accuracy: 83.33%\n", - "Epoch 5801 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5801: avg_loss appended (2.7778)\n", - "Epoch 5801: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5801: accuracy appended (83.33%)\n", - "Epoch 5801: model set back to train mode\n", - "Epoch 5801: model parameters saved\n", - "Epoch 5802 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5802: avg_loss appended (2.7778)\n", - "Epoch 5802: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5802: accuracy appended (83.33%)\n", - "Epoch 5802: model set back to train mode\n", - "Epoch 5802: model parameters saved\n", - "Epoch 5803 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5803: avg_loss appended (2.7778)\n", - "Epoch 5803: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5803: accuracy appended (83.33%)\n", - "Epoch 5803: model set back to train mode\n", - "Epoch 5803: model parameters saved\n", - "Epoch 5804 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5804: avg_loss appended (2.7778)\n", - "Epoch 5804: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5804: accuracy appended (83.33%)\n", - "Epoch 5804: model set back to train mode\n", - "Epoch 5804: model parameters saved\n", - "Epoch 5805 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5805: avg_loss appended (2.7778)\n", - "Epoch 5805: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5805: accuracy appended (83.33%)\n", - "Epoch 5805: model set back to train mode\n", - "Epoch 5805: model parameters saved\n", - "Epoch 5806 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5806: avg_loss appended (2.7778)\n", - "Epoch 5806: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5806: accuracy appended (83.33%)\n", - "Epoch 5806: model set back to train mode\n", - "Epoch 5806: model parameters saved\n", - "Epoch 5807 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5807: avg_loss appended (2.7778)\n", - "Epoch 5807: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5807: accuracy appended (83.33%)\n", - "Epoch 5807: model set back to train mode\n", - "Epoch 5807: model parameters saved\n", - "Epoch 5808 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5808: avg_loss appended (2.7778)\n", - "Epoch 5808: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5808: accuracy appended (83.33%)\n", - "Epoch 5808: model set back to train mode\n", - "Epoch 5808: model parameters saved\n", - "Epoch 5809 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5809: avg_loss appended (2.7778)\n", - "Epoch 5809: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5809: accuracy appended (83.33%)\n", - "Epoch 5809: model set back to train mode\n", - "Epoch 5809: model parameters saved\n", - "Epoch 5810 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5810: avg_loss appended (2.7778)\n", - "Epoch 5810: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5810: accuracy appended (83.33%)\n", - "Epoch 5810: model set back to train mode\n", - "Epoch 5810: model parameters saved\n", - "Epoch 5811 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5811: avg_loss appended (2.7778)\n", - "Epoch 5811: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5811: accuracy appended (83.33%)\n", - "Epoch 5811: model set back to train mode\n", - "Epoch 5811: model parameters saved\n", - "Epoch 5812 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5812: avg_loss appended (2.7778)\n", - "Epoch 5812: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5812: accuracy appended (83.33%)\n", - "Epoch 5812: model set back to train mode\n", - "Epoch 5812: model parameters saved\n", - "Epoch 5813 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5813: avg_loss appended (2.7778)\n", - "Epoch 5813: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5813: accuracy appended (83.33%)\n", - "Epoch 5813: model set back to train mode\n", - "Epoch 5813: model parameters saved\n", - "Epoch 5814 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5814: avg_loss appended (2.7778)\n", - "Epoch 5814: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5814: accuracy appended (83.33%)\n", - "Epoch 5814: model set back to train mode\n", - "Epoch 5814: model parameters saved\n", - "Epoch 5815 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5815: avg_loss appended (2.7778)\n", - "Epoch 5815: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5815: accuracy appended (83.33%)\n", - "Epoch 5815: model set back to train mode\n", - "Epoch 5815: model parameters saved\n", - "Epoch 5816 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5816: avg_loss appended (2.7778)\n", - "Epoch 5816: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5816: accuracy appended (83.33%)\n", - "Epoch 5816: model set back to train mode\n", - "Epoch 5816: model parameters saved\n", - "Epoch 5817 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5817: avg_loss appended (2.7778)\n", - "Epoch 5817: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5817: accuracy appended (83.33%)\n", - "Epoch 5817: model set back to train mode\n", - "Epoch 5817: model parameters saved\n", - "Epoch 5818 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5818: avg_loss appended (2.7778)\n", - "Epoch 5818: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5818: accuracy appended (83.33%)\n", - "Epoch 5818: model set back to train mode\n", - "Epoch 5818: model parameters saved\n", - "Epoch 5819 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5819: avg_loss appended (2.7778)\n", - "Epoch 5819: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5819: accuracy appended (83.33%)\n", - "Epoch 5819: model set back to train mode\n", - "Epoch 5819: model parameters saved\n", - "Epoch 5820 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5820: avg_loss appended (2.7778)\n", - "Epoch 5820: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5820: accuracy appended (83.33%)\n", - "Epoch 5820: model set back to train mode\n", - "Epoch 5820: model parameters saved\n", - "Epoch 5821 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5821: avg_loss appended (2.7778)\n", - "Epoch 5821: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5821: accuracy appended (83.33%)\n", - "Epoch 5821: model set back to train mode\n", - "Epoch 5821: model parameters saved\n", - "Epoch 5822 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5822: avg_loss appended (2.7778)\n", - "Epoch 5822: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5822: accuracy appended (83.33%)\n", - "Epoch 5822: model set back to train mode\n", - "Epoch 5822: model parameters saved\n", - "Epoch 5823 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5823: avg_loss appended (2.7778)\n", - "Epoch 5823: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5823: accuracy appended (83.33%)\n", - "Epoch 5823: model set back to train mode\n", - "Epoch 5823: model parameters saved\n", - "Epoch 5824 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5824: avg_loss appended (2.7778)\n", - "Epoch 5824: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5824: accuracy appended (83.33%)\n", - "Epoch 5824: model set back to train mode\n", - "Epoch 5824: model parameters saved\n", - "Epoch 5825 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5825: avg_loss appended (2.7778)\n", - "Epoch 5825: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5825: accuracy appended (83.33%)\n", - "Epoch 5825: model set back to train mode\n", - "Epoch 5825: model parameters saved\n", - "Epoch 5826 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5826: avg_loss appended (2.7778)\n", - "Epoch 5826: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5826: accuracy appended (83.33%)\n", - "Epoch 5826: model set back to train mode\n", - "Epoch 5826: model parameters saved\n", - "Epoch 5827 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5827: avg_loss appended (2.7778)\n", - "Epoch 5827: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5827: accuracy appended (83.33%)\n", - "Epoch 5827: model set back to train mode\n", - "Epoch 5827: model parameters saved\n", - "Epoch 5828 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5828: avg_loss appended (2.7778)\n", - "Epoch 5828: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5828: accuracy appended (83.33%)\n", - "Epoch 5828: model set back to train mode\n", - "Epoch 5828: model parameters saved\n", - "Epoch 5829 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5829: avg_loss appended (2.7778)\n", - "Epoch 5829: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5829: accuracy appended (83.33%)\n", - "Epoch 5829: model set back to train mode\n", - "Epoch 5829: model parameters saved\n", - "Epoch 5830 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5830: avg_loss appended (2.7778)\n", - "Epoch 5830: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5830: accuracy appended (83.33%)\n", - "Epoch 5830: model set back to train mode\n", - "Epoch 5830: model parameters saved\n", - "Epoch 5831 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5831: avg_loss appended (2.7778)\n", - "Epoch 5831: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5831: accuracy appended (83.33%)\n", - "Epoch 5831: model set back to train mode\n", - "Epoch 5831: model parameters saved\n", - "Epoch 5832 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5832: avg_loss appended (2.7778)\n", - "Epoch 5832: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5832: accuracy appended (83.33%)\n", - "Epoch 5832: model set back to train mode\n", - "Epoch 5832: model parameters saved\n", - "Epoch 5833 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5833: avg_loss appended (2.7778)\n", - "Epoch 5833: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5833: accuracy appended (83.33%)\n", - "Epoch 5833: model set back to train mode\n", - "Epoch 5833: model parameters saved\n", - "Epoch 5834 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5834: avg_loss appended (2.7778)\n", - "Epoch 5834: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5834: accuracy appended (83.33%)\n", - "Epoch 5834: model set back to train mode\n", - "Epoch 5834: model parameters saved\n", - "Epoch 5835 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5835: avg_loss appended (2.7778)\n", - "Epoch 5835: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5835: accuracy appended (83.33%)\n", - "Epoch 5835: model set back to train mode\n", - "Epoch 5835: model parameters saved\n", - "Epoch 5836 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5836: avg_loss appended (2.7778)\n", - "Epoch 5836: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5836: accuracy appended (83.33%)\n", - "Epoch 5836: model set back to train mode\n", - "Epoch 5836: model parameters saved\n", - "Epoch 5837 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5837: avg_loss appended (2.7778)\n", - "Epoch 5837: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5837: accuracy appended (83.33%)\n", - "Epoch 5837: model set back to train mode\n", - "Epoch 5837: model parameters saved\n", - "Epoch 5838 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5838: avg_loss appended (2.7778)\n", - "Epoch 5838: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5838: accuracy appended (83.33%)\n", - "Epoch 5838: model set back to train mode\n", - "Epoch 5838: model parameters saved\n", - "Epoch 5839 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5839: avg_loss appended (2.7778)\n", - "Epoch 5839: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5839: accuracy appended (83.33%)\n", - "Epoch 5839: model set back to train mode\n", - "Epoch 5839: model parameters saved\n", - "Epoch 5840 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5840: avg_loss appended (2.7778)\n", - "Epoch 5840: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5840: accuracy appended (83.33%)\n", - "Epoch 5840: model set back to train mode\n", - "Epoch 5840: model parameters saved\n", - "Epoch 5841 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5841: avg_loss appended (2.7778)\n", - "Epoch 5841: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5841: accuracy appended (83.33%)\n", - "Epoch 5841: model set back to train mode\n", - "Epoch 5841: model parameters saved\n", - "Epoch 5842 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5842: avg_loss appended (2.7778)\n", - "Epoch 5842: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5842: accuracy appended (83.33%)\n", - "Epoch 5842: model set back to train mode\n", - "Epoch 5842: model parameters saved\n", - "Epoch 5843 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5843: avg_loss appended (2.7778)\n", - "Epoch 5843: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5843: accuracy appended (83.33%)\n", - "Epoch 5843: model set back to train mode\n", - "Epoch 5843: model parameters saved\n", - "Epoch 5844 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5844: avg_loss appended (2.7778)\n", - "Epoch 5844: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5844: accuracy appended (83.33%)\n", - "Epoch 5844: model set back to train mode\n", - "Epoch 5844: model parameters saved\n", - "Epoch 5845 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5845: avg_loss appended (2.7778)\n", - "Epoch 5845: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5845: accuracy appended (83.33%)\n", - "Epoch 5845: model set back to train mode\n", - "Epoch 5845: model parameters saved\n", - "Epoch 5846 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5846: avg_loss appended (2.7778)\n", - "Epoch 5846: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5846: accuracy appended (83.33%)\n", - "Epoch 5846: model set back to train mode\n", - "Epoch 5846: model parameters saved\n", - "Epoch 5847 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5847: avg_loss appended (2.7778)\n", - "Epoch 5847: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5847: accuracy appended (83.33%)\n", - "Epoch 5847: model set back to train mode\n", - "Epoch 5847: model parameters saved\n", - "Epoch 5848 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5848: avg_loss appended (2.7778)\n", - "Epoch 5848: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5848: accuracy appended (83.33%)\n", - "Epoch 5848: model set back to train mode\n", - "Epoch 5848: model parameters saved\n", - "Epoch 5849 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5849: avg_loss appended (2.7778)\n", - "Epoch 5849: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5849: accuracy appended (83.33%)\n", - "Epoch 5849: model set back to train mode\n", - "Epoch 5849: model parameters saved\n", - "Epoch 5850 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5850: avg_loss appended (2.7778)\n", - "Epoch 5850: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5850: accuracy appended (83.33%)\n", - "Epoch 5850: model set back to train mode\n", - "Epoch 5850: model parameters saved\n", - "Epoch 5851 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5851: avg_loss appended (2.7778)\n", - "Epoch 5851: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5851: accuracy appended (83.33%)\n", - "Epoch 5851: model set back to train mode\n", - "Epoch 5851: model parameters saved\n", - "Epoch 5852 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5852: avg_loss appended (2.7778)\n", - "Epoch 5852: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5852: accuracy appended (83.33%)\n", - "Epoch 5852: model set back to train mode\n", - "Epoch 5852: model parameters saved\n", - "Epoch 5853 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5853: avg_loss appended (2.7778)\n", - "Epoch 5853: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5853: accuracy appended (83.33%)\n", - "Epoch 5853: model set back to train mode\n", - "Epoch 5853: model parameters saved\n", - "Epoch 5854 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5854: avg_loss appended (2.7778)\n", - "Epoch 5854: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5854: accuracy appended (83.33%)\n", - "Epoch 5854: model set back to train mode\n", - "Epoch 5854: model parameters saved\n", - "Epoch 5855 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5855: avg_loss appended (2.7778)\n", - "Epoch 5855: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5855: accuracy appended (83.33%)\n", - "Epoch 5855: model set back to train mode\n", - "Epoch 5855: model parameters saved\n", - "Epoch 5856 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5856: avg_loss appended (2.7778)\n", - "Epoch 5856: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5856: accuracy appended (83.33%)\n", - "Epoch 5856: model set back to train mode\n", - "Epoch 5856: model parameters saved\n", - "Epoch 5857 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5857: avg_loss appended (2.7778)\n", - "Epoch 5857: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5857: accuracy appended (83.33%)\n", - "Epoch 5857: model set back to train mode\n", - "Epoch 5857: model parameters saved\n", - "Epoch 5858 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5858: avg_loss appended (2.7778)\n", - "Epoch 5858: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5858: accuracy appended (83.33%)\n", - "Epoch 5858: model set back to train mode\n", - "Epoch 5858: model parameters saved\n", - "Epoch 5859 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5859: avg_loss appended (2.7778)\n", - "Epoch 5859: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5859: accuracy appended (83.33%)\n", - "Epoch 5859: model set back to train mode\n", - "Epoch 5859: model parameters saved\n", - "Epoch 5860 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5860: avg_loss appended (2.7778)\n", - "Epoch 5860: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5860: accuracy appended (83.33%)\n", - "Epoch 5860: model set back to train mode\n", - "Epoch 5860: model parameters saved\n", - "Epoch 5861 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5861: avg_loss appended (2.7778)\n", - "Epoch 5861: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5861: accuracy appended (83.33%)\n", - "Epoch 5861: model set back to train mode\n", - "Epoch 5861: model parameters saved\n", - "Epoch 5862 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5862: avg_loss appended (2.7778)\n", - "Epoch 5862: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5862: accuracy appended (83.33%)\n", - "Epoch 5862: model set back to train mode\n", - "Epoch 5862: model parameters saved\n", - "Epoch 5863 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5863: avg_loss appended (2.7778)\n", - "Epoch 5863: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5863: accuracy appended (83.33%)\n", - "Epoch 5863: model set back to train mode\n", - "Epoch 5863: model parameters saved\n", - "Epoch 5864 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5864: avg_loss appended (2.7778)\n", - "Epoch 5864: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5864: accuracy appended (83.33%)\n", - "Epoch 5864: model set back to train mode\n", - "Epoch 5864: model parameters saved\n", - "Epoch 5865 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5865: avg_loss appended (2.7778)\n", - "Epoch 5865: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5865: accuracy appended (83.33%)\n", - "Epoch 5865: model set back to train mode\n", - "Epoch 5865: model parameters saved\n", - "Epoch 5866 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5866: avg_loss appended (2.7778)\n", - "Epoch 5866: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5866: accuracy appended (83.33%)\n", - "Epoch 5866: model set back to train mode\n", - "Epoch 5866: model parameters saved\n", - "Epoch 5867 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5867: avg_loss appended (2.7778)\n", - "Epoch 5867: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5867: accuracy appended (83.33%)\n", - "Epoch 5867: model set back to train mode\n", - "Epoch 5867: model parameters saved\n", - "Epoch 5868 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5868: avg_loss appended (2.7778)\n", - "Epoch 5868: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5868: accuracy appended (83.33%)\n", - "Epoch 5868: model set back to train mode\n", - "Epoch 5868: model parameters saved\n", - "Epoch 5869 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5869: avg_loss appended (2.7778)\n", - "Epoch 5869: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5869: accuracy appended (83.33%)\n", - "Epoch 5869: model set back to train mode\n", - "Epoch 5869: model parameters saved\n", - "Epoch 5870 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5870: avg_loss appended (2.7778)\n", - "Epoch 5870: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5870: accuracy appended (83.33%)\n", - "Epoch 5870: model set back to train mode\n", - "Epoch 5870: model parameters saved\n", - "Epoch 5871 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5871: avg_loss appended (2.7778)\n", - "Epoch 5871: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5871: accuracy appended (83.33%)\n", - "Epoch 5871: model set back to train mode\n", - "Epoch 5871: model parameters saved\n", - "Epoch 5872 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5872: avg_loss appended (2.7778)\n", - "Epoch 5872: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5872: accuracy appended (83.33%)\n", - "Epoch 5872: model set back to train mode\n", - "Epoch 5872: model parameters saved\n", - "Epoch 5873 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5873: avg_loss appended (2.7778)\n", - "Epoch 5873: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5873: accuracy appended (83.33%)\n", - "Epoch 5873: model set back to train mode\n", - "Epoch 5873: model parameters saved\n", - "Epoch 5874 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5874: avg_loss appended (2.7778)\n", - "Epoch 5874: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5874: accuracy appended (83.33%)\n", - "Epoch 5874: model set back to train mode\n", - "Epoch 5874: model parameters saved\n", - "Epoch 5875 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5875: avg_loss appended (2.7778)\n", - "Epoch 5875: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5875: accuracy appended (83.33%)\n", - "Epoch 5875: model set back to train mode\n", - "Epoch 5875: model parameters saved\n", - "Epoch 5876 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5876: avg_loss appended (2.7778)\n", - "Epoch 5876: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5876: accuracy appended (83.33%)\n", - "Epoch 5876: model set back to train mode\n", - "Epoch 5876: model parameters saved\n", - "Epoch 5877 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5877: avg_loss appended (2.7778)\n", - "Epoch 5877: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5877: accuracy appended (83.33%)\n", - "Epoch 5877: model set back to train mode\n", - "Epoch 5877: model parameters saved\n", - "Epoch 5878 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5878: avg_loss appended (2.7778)\n", - "Epoch 5878: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5878: accuracy appended (83.33%)\n", - "Epoch 5878: model set back to train mode\n", - "Epoch 5878: model parameters saved\n", - "Epoch 5879 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5879: avg_loss appended (2.7778)\n", - "Epoch 5879: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5879: accuracy appended (83.33%)\n", - "Epoch 5879: model set back to train mode\n", - "Epoch 5879: model parameters saved\n", - "Epoch 5880 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5880: avg_loss appended (2.7778)\n", - "Epoch 5880: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5880: accuracy appended (83.33%)\n", - "Epoch 5880: model set back to train mode\n", - "Epoch 5880: model parameters saved\n", - "Epoch 5881 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5881: avg_loss appended (2.7778)\n", - "Epoch 5881: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5881: accuracy appended (83.33%)\n", - "Epoch 5881: model set back to train mode\n", - "Epoch 5881: model parameters saved\n", - "Epoch 5882 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5882: avg_loss appended (2.7778)\n", - "Epoch 5882: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5882: accuracy appended (83.33%)\n", - "Epoch 5882: model set back to train mode\n", - "Epoch 5882: model parameters saved\n", - "Epoch 5883 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5883: avg_loss appended (2.7778)\n", - "Epoch 5883: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5883: accuracy appended (83.33%)\n", - "Epoch 5883: model set back to train mode\n", - "Epoch 5883: model parameters saved\n", - "Epoch 5884 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5884: avg_loss appended (2.7778)\n", - "Epoch 5884: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5884: accuracy appended (83.33%)\n", - "Epoch 5884: model set back to train mode\n", - "Epoch 5884: model parameters saved\n", - "Epoch 5885 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5885: avg_loss appended (2.7778)\n", - "Epoch 5885: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5885: accuracy appended (83.33%)\n", - "Epoch 5885: model set back to train mode\n", - "Epoch 5885: model parameters saved\n", - "Epoch 5886 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5886: avg_loss appended (2.7778)\n", - "Epoch 5886: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5886: accuracy appended (83.33%)\n", - "Epoch 5886: model set back to train mode\n", - "Epoch 5886: model parameters saved\n", - "Epoch 5887 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5887: avg_loss appended (2.7778)\n", - "Epoch 5887: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5887: accuracy appended (83.33%)\n", - "Epoch 5887: model set back to train mode\n", - "Epoch 5887: model parameters saved\n", - "Epoch 5888 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5888: avg_loss appended (2.7778)\n", - "Epoch 5888: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5888: accuracy appended (83.33%)\n", - "Epoch 5888: model set back to train mode\n", - "Epoch 5888: model parameters saved\n", - "Epoch 5889 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5889: avg_loss appended (2.7778)\n", - "Epoch 5889: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5889: accuracy appended (83.33%)\n", - "Epoch 5889: model set back to train mode\n", - "Epoch 5889: model parameters saved\n", - "Epoch 5890 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5890: avg_loss appended (2.7778)\n", - "Epoch 5890: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5890: accuracy appended (83.33%)\n", - "Epoch 5890: model set back to train mode\n", - "Epoch 5890: model parameters saved\n", - "Epoch 5891 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5891: avg_loss appended (2.7778)\n", - "Epoch 5891: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5891: accuracy appended (83.33%)\n", - "Epoch 5891: model set back to train mode\n", - "Epoch 5891: model parameters saved\n", - "Epoch 5892 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5892: avg_loss appended (2.7778)\n", - "Epoch 5892: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5892: accuracy appended (83.33%)\n", - "Epoch 5892: model set back to train mode\n", - "Epoch 5892: model parameters saved\n", - "Epoch 5893 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5893: avg_loss appended (2.7778)\n", - "Epoch 5893: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5893: accuracy appended (83.33%)\n", - "Epoch 5893: model set back to train mode\n", - "Epoch 5893: model parameters saved\n", - "Epoch 5894 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5894: avg_loss appended (2.7778)\n", - "Epoch 5894: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5894: accuracy appended (83.33%)\n", - "Epoch 5894: model set back to train mode\n", - "Epoch 5894: model parameters saved\n", - "Epoch 5895 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5895: avg_loss appended (2.7778)\n", - "Epoch 5895: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5895: accuracy appended (83.33%)\n", - "Epoch 5895: model set back to train mode\n", - "Epoch 5895: model parameters saved\n", - "Epoch 5896 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5896: avg_loss appended (2.7778)\n", - "Epoch 5896: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5896: accuracy appended (83.33%)\n", - "Epoch 5896: model set back to train mode\n", - "Epoch 5896: model parameters saved\n", - "Epoch 5897 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5897: avg_loss appended (2.7778)\n", - "Epoch 5897: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5897: accuracy appended (83.33%)\n", - "Epoch 5897: model set back to train mode\n", - "Epoch 5897: model parameters saved\n", - "Epoch 5898 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5898: avg_loss appended (2.7778)\n", - "Epoch 5898: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5898: accuracy appended (83.33%)\n", - "Epoch 5898: model set back to train mode\n", - "Epoch 5898: model parameters saved\n", - "Epoch 5899 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5899: avg_loss appended (2.7778)\n", - "Epoch 5899: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5899: accuracy appended (83.33%)\n", - "Epoch 5899: model set back to train mode\n", - "Epoch 5899: model parameters saved\n", - "Epoch 5900 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5900: avg_loss appended (2.7778)\n", - "Epoch 5900: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5900: accuracy appended (83.33%)\n", - "Epoch 5900: model set back to train mode\n", - "Epoch 5900: model parameters saved\n", - "Epoch 5900/10000, Loss: 2.7778, Accuracy: 83.33%\n", - "Epoch 5901 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5901: avg_loss appended (2.7778)\n", - "Epoch 5901: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5901: accuracy appended (83.33%)\n", - "Epoch 5901: model set back to train mode\n", - "Epoch 5901: model parameters saved\n", - "Epoch 5902 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5902: avg_loss appended (2.7778)\n", - "Epoch 5902: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5902: accuracy appended (83.33%)\n", - "Epoch 5902: model set back to train mode\n", - "Epoch 5902: model parameters saved\n", - "Epoch 5903 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5903: avg_loss appended (2.7778)\n", - "Epoch 5903: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5903: accuracy appended (83.33%)\n", - "Epoch 5903: model set back to train mode\n", - "Epoch 5903: model parameters saved\n", - "Epoch 5904 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5904: avg_loss appended (2.7778)\n", - "Epoch 5904: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5904: accuracy appended (83.33%)\n", - "Epoch 5904: model set back to train mode\n", - "Epoch 5904: model parameters saved\n", - "Epoch 5905 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5905: avg_loss appended (2.7778)\n", - "Epoch 5905: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5905: accuracy appended (83.33%)\n", - "Epoch 5905: model set back to train mode\n", - "Epoch 5905: model parameters saved\n", - "Epoch 5906 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5906: avg_loss appended (2.7778)\n", - "Epoch 5906: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5906: accuracy appended (83.33%)\n", - "Epoch 5906: model set back to train mode\n", - "Epoch 5906: model parameters saved\n", - "Epoch 5907 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5907: avg_loss appended (2.7778)\n", - "Epoch 5907: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5907: accuracy appended (83.33%)\n", - "Epoch 5907: model set back to train mode\n", - "Epoch 5907: model parameters saved\n", - "Epoch 5908 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5908: avg_loss appended (2.7778)\n", - "Epoch 5908: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5908: accuracy appended (83.33%)\n", - "Epoch 5908: model set back to train mode\n", - "Epoch 5908: model parameters saved\n", - "Epoch 5909 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5909: avg_loss appended (2.7778)\n", - "Epoch 5909: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5909: accuracy appended (83.33%)\n", - "Epoch 5909: model set back to train mode\n", - "Epoch 5909: model parameters saved\n", - "Epoch 5910 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5910: avg_loss appended (2.7778)\n", - "Epoch 5910: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5910: accuracy appended (83.33%)\n", - "Epoch 5910: model set back to train mode\n", - "Epoch 5910: model parameters saved\n", - "Epoch 5911 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5911: avg_loss appended (2.7778)\n", - "Epoch 5911: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5911: accuracy appended (83.33%)\n", - "Epoch 5911: model set back to train mode\n", - "Epoch 5911: model parameters saved\n", - "Epoch 5912 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5912: avg_loss appended (2.7778)\n", - "Epoch 5912: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5912: accuracy appended (83.33%)\n", - "Epoch 5912: model set back to train mode\n", - "Epoch 5912: model parameters saved\n", - "Epoch 5913 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5913: avg_loss appended (2.7778)\n", - "Epoch 5913: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5913: accuracy appended (83.33%)\n", - "Epoch 5913: model set back to train mode\n", - "Epoch 5913: model parameters saved\n", - "Epoch 5914 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5914: avg_loss appended (2.7778)\n", - "Epoch 5914: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5914: accuracy appended (83.33%)\n", - "Epoch 5914: model set back to train mode\n", - "Epoch 5914: model parameters saved\n", - "Epoch 5915 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5915: avg_loss appended (2.7778)\n", - "Epoch 5915: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5915: accuracy appended (83.33%)\n", - "Epoch 5915: model set back to train mode\n", - "Epoch 5915: model parameters saved\n", - "Epoch 5916 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5916: avg_loss appended (2.7778)\n", - "Epoch 5916: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5916: accuracy appended (83.33%)\n", - "Epoch 5916: model set back to train mode\n", - "Epoch 5916: model parameters saved\n", - "Epoch 5917 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5917: avg_loss appended (2.7778)\n", - "Epoch 5917: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5917: accuracy appended (83.33%)\n", - "Epoch 5917: model set back to train mode\n", - "Epoch 5917: model parameters saved\n", - "Epoch 5918 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5918: avg_loss appended (2.7778)\n", - "Epoch 5918: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5918: accuracy appended (83.33%)\n", - "Epoch 5918: model set back to train mode\n", - "Epoch 5918: model parameters saved\n", - "Epoch 5919 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5919: avg_loss appended (2.7778)\n", - "Epoch 5919: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5919: accuracy appended (83.33%)\n", - "Epoch 5919: model set back to train mode\n", - "Epoch 5919: model parameters saved\n", - "Epoch 5920 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5920: avg_loss appended (2.7778)\n", - "Epoch 5920: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5920: accuracy appended (83.33%)\n", - "Epoch 5920: model set back to train mode\n", - "Epoch 5920: model parameters saved\n", - "Epoch 5921 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5921: avg_loss appended (2.7778)\n", - "Epoch 5921: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5921: accuracy appended (83.33%)\n", - "Epoch 5921: model set back to train mode\n", - "Epoch 5921: model parameters saved\n", - "Epoch 5922 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5922: avg_loss appended (2.7778)\n", - "Epoch 5922: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5922: accuracy appended (83.33%)\n", - "Epoch 5922: model set back to train mode\n", - "Epoch 5922: model parameters saved\n", - "Epoch 5923 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5923: avg_loss appended (2.7778)\n", - "Epoch 5923: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5923: accuracy appended (83.33%)\n", - "Epoch 5923: model set back to train mode\n", - "Epoch 5923: model parameters saved\n", - "Epoch 5924 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5924: avg_loss appended (2.7778)\n", - "Epoch 5924: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5924: accuracy appended (83.33%)\n", - "Epoch 5924: model set back to train mode\n", - "Epoch 5924: model parameters saved\n", - "Epoch 5925 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5925: avg_loss appended (2.7778)\n", - "Epoch 5925: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5925: accuracy appended (83.33%)\n", - "Epoch 5925: model set back to train mode\n", - "Epoch 5925: model parameters saved\n", - "Epoch 5926 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5926: avg_loss appended (2.7778)\n", - "Epoch 5926: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5926: accuracy appended (83.33%)\n", - "Epoch 5926: model set back to train mode\n", - "Epoch 5926: model parameters saved\n", - "Epoch 5927 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5927: avg_loss appended (2.7778)\n", - "Epoch 5927: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5927: accuracy appended (83.33%)\n", - "Epoch 5927: model set back to train mode\n", - "Epoch 5927: model parameters saved\n", - "Epoch 5928 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5928: avg_loss appended (2.7778)\n", - "Epoch 5928: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5928: accuracy appended (83.33%)\n", - "Epoch 5928: model set back to train mode\n", - "Epoch 5928: model parameters saved\n", - "Epoch 5929 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5929: avg_loss appended (2.7778)\n", - "Epoch 5929: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5929: accuracy appended (83.33%)\n", - "Epoch 5929: model set back to train mode\n", - "Epoch 5929: model parameters saved\n", - "Epoch 5930 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5930: avg_loss appended (2.7778)\n", - "Epoch 5930: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5930: accuracy appended (83.33%)\n", - "Epoch 5930: model set back to train mode\n", - "Epoch 5930: model parameters saved\n", - "Epoch 5931 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5931: avg_loss appended (2.7778)\n", - "Epoch 5931: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5931: accuracy appended (83.33%)\n", - "Epoch 5931: model set back to train mode\n", - "Epoch 5931: model parameters saved\n", - "Epoch 5932 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5932: avg_loss appended (2.7778)\n", - "Epoch 5932: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5932: accuracy appended (83.33%)\n", - "Epoch 5932: model set back to train mode\n", - "Epoch 5932: model parameters saved\n", - "Epoch 5933 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5933: avg_loss appended (2.7778)\n", - "Epoch 5933: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5933: accuracy appended (83.33%)\n", - "Epoch 5933: model set back to train mode\n", - "Epoch 5933: model parameters saved\n", - "Epoch 5934 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5934: avg_loss appended (2.7778)\n", - "Epoch 5934: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5934: accuracy appended (83.33%)\n", - "Epoch 5934: model set back to train mode\n", - "Epoch 5934: model parameters saved\n", - "Epoch 5935 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5935: avg_loss appended (2.7778)\n", - "Epoch 5935: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5935: accuracy appended (83.33%)\n", - "Epoch 5935: model set back to train mode\n", - "Epoch 5935: model parameters saved\n", - "Epoch 5936 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5936: avg_loss appended (2.7778)\n", - "Epoch 5936: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5936: accuracy appended (83.33%)\n", - "Epoch 5936: model set back to train mode\n", - "Epoch 5936: model parameters saved\n", - "Epoch 5937 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5937: avg_loss appended (2.7778)\n", - "Epoch 5937: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5937: accuracy appended (83.33%)\n", - "Epoch 5937: model set back to train mode\n", - "Epoch 5937: model parameters saved\n", - "Epoch 5938 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5938: avg_loss appended (2.7778)\n", - "Epoch 5938: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5938: accuracy appended (83.33%)\n", - "Epoch 5938: model set back to train mode\n", - "Epoch 5938: model parameters saved\n", - "Epoch 5939 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5939: avg_loss appended (2.7778)\n", - "Epoch 5939: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5939: accuracy appended (83.33%)\n", - "Epoch 5939: model set back to train mode\n", - "Epoch 5939: model parameters saved\n", - "Epoch 5940 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5940: avg_loss appended (2.7778)\n", - "Epoch 5940: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5940: accuracy appended (83.33%)\n", - "Epoch 5940: model set back to train mode\n", - "Epoch 5940: model parameters saved\n", - "Epoch 5941 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5941: avg_loss appended (2.7778)\n", - "Epoch 5941: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5941: accuracy appended (83.33%)\n", - "Epoch 5941: model set back to train mode\n", - "Epoch 5941: model parameters saved\n", - "Epoch 5942 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5942: avg_loss appended (2.7778)\n", - "Epoch 5942: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5942: accuracy appended (83.33%)\n", - "Epoch 5942: model set back to train mode\n", - "Epoch 5942: model parameters saved\n", - "Epoch 5943 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5943: avg_loss appended (2.7778)\n", - "Epoch 5943: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5943: accuracy appended (83.33%)\n", - "Epoch 5943: model set back to train mode\n", - "Epoch 5943: model parameters saved\n", - "Epoch 5944 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5944: avg_loss appended (2.7778)\n", - "Epoch 5944: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5944: accuracy appended (83.33%)\n", - "Epoch 5944: model set back to train mode\n", - "Epoch 5944: model parameters saved\n", - "Epoch 5945 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5945: avg_loss appended (2.7778)\n", - "Epoch 5945: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5945: accuracy appended (83.33%)\n", - "Epoch 5945: model set back to train mode\n", - "Epoch 5945: model parameters saved\n", - "Epoch 5946 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5946: avg_loss appended (2.7778)\n", - "Epoch 5946: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5946: accuracy appended (83.33%)\n", - "Epoch 5946: model set back to train mode\n", - "Epoch 5946: model parameters saved\n", - "Epoch 5947 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5947: avg_loss appended (2.7778)\n", - "Epoch 5947: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5947: accuracy appended (83.33%)\n", - "Epoch 5947: model set back to train mode\n", - "Epoch 5947: model parameters saved\n", - "Epoch 5948 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5948: avg_loss appended (2.7778)\n", - "Epoch 5948: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5948: accuracy appended (83.33%)\n", - "Epoch 5948: model set back to train mode\n", - "Epoch 5948: model parameters saved\n", - "Epoch 5949 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5949: avg_loss appended (2.7778)\n", - "Epoch 5949: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5949: accuracy appended (83.33%)\n", - "Epoch 5949: model set back to train mode\n", - "Epoch 5949: model parameters saved\n", - "Epoch 5950 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5950: avg_loss appended (2.7778)\n", - "Epoch 5950: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5950: accuracy appended (83.33%)\n", - "Epoch 5950: model set back to train mode\n", - "Epoch 5950: model parameters saved\n", - "Epoch 5951 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5951: avg_loss appended (2.7778)\n", - "Epoch 5951: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5951: accuracy appended (83.33%)\n", - "Epoch 5951: model set back to train mode\n", - "Epoch 5951: model parameters saved\n", - "Epoch 5952 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5952: avg_loss appended (2.7778)\n", - "Epoch 5952: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5952: accuracy appended (83.33%)\n", - "Epoch 5952: model set back to train mode\n", - "Epoch 5952: model parameters saved\n", - "Epoch 5953 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5953: avg_loss appended (2.7778)\n", - "Epoch 5953: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5953: accuracy appended (83.33%)\n", - "Epoch 5953: model set back to train mode\n", - "Epoch 5953: model parameters saved\n", - "Epoch 5954 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5954: avg_loss appended (2.7778)\n", - "Epoch 5954: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5954: accuracy appended (83.33%)\n", - "Epoch 5954: model set back to train mode\n", - "Epoch 5954: model parameters saved\n", - "Epoch 5955 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5955: avg_loss appended (2.7778)\n", - "Epoch 5955: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5955: accuracy appended (83.33%)\n", - "Epoch 5955: model set back to train mode\n", - "Epoch 5955: model parameters saved\n", - "Epoch 5956 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5956: avg_loss appended (2.7778)\n", - "Epoch 5956: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5956: accuracy appended (83.33%)\n", - "Epoch 5956: model set back to train mode\n", - "Epoch 5956: model parameters saved\n", - "Epoch 5957 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5957: avg_loss appended (2.7778)\n", - "Epoch 5957: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5957: accuracy appended (83.33%)\n", - "Epoch 5957: model set back to train mode\n", - "Epoch 5957: model parameters saved\n", - "Epoch 5958 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5958: avg_loss appended (2.7778)\n", - "Epoch 5958: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5958: accuracy appended (83.33%)\n", - "Epoch 5958: model set back to train mode\n", - "Epoch 5958: model parameters saved\n", - "Epoch 5959 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5959: avg_loss appended (2.7778)\n", - "Epoch 5959: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5959: accuracy appended (83.33%)\n", - "Epoch 5959: model set back to train mode\n", - "Epoch 5959: model parameters saved\n", - "Epoch 5960 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5960: avg_loss appended (2.7778)\n", - "Epoch 5960: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5960: accuracy appended (83.33%)\n", - "Epoch 5960: model set back to train mode\n", - "Epoch 5960: model parameters saved\n", - "Epoch 5961 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5961: avg_loss appended (2.7778)\n", - "Epoch 5961: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5961: accuracy appended (83.33%)\n", - "Epoch 5961: model set back to train mode\n", - "Epoch 5961: model parameters saved\n", - "Epoch 5962 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5962: avg_loss appended (2.7778)\n", - "Epoch 5962: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5962: accuracy appended (83.33%)\n", - "Epoch 5962: model set back to train mode\n", - "Epoch 5962: model parameters saved\n", - "Epoch 5963 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5963: avg_loss appended (2.7778)\n", - "Epoch 5963: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5963: accuracy appended (83.33%)\n", - "Epoch 5963: model set back to train mode\n", - "Epoch 5963: model parameters saved\n", - "Epoch 5964 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5964: avg_loss appended (2.7778)\n", - "Epoch 5964: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5964: accuracy appended (83.33%)\n", - "Epoch 5964: model set back to train mode\n", - "Epoch 5964: model parameters saved\n", - "Epoch 5965 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5965: avg_loss appended (2.7778)\n", - "Epoch 5965: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5965: accuracy appended (83.33%)\n", - "Epoch 5965: model set back to train mode\n", - "Epoch 5965: model parameters saved\n", - "Epoch 5966 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5966: avg_loss appended (2.7778)\n", - "Epoch 5966: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5966: accuracy appended (83.33%)\n", - "Epoch 5966: model set back to train mode\n", - "Epoch 5966: model parameters saved\n", - "Epoch 5967 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5967: avg_loss appended (2.7778)\n", - "Epoch 5967: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5967: accuracy appended (83.33%)\n", - "Epoch 5967: model set back to train mode\n", - "Epoch 5967: model parameters saved\n", - "Epoch 5968 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5968: avg_loss appended (2.7778)\n", - "Epoch 5968: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5968: accuracy appended (83.33%)\n", - "Epoch 5968: model set back to train mode\n", - "Epoch 5968: model parameters saved\n", - "Epoch 5969 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5969: avg_loss appended (2.7778)\n", - "Epoch 5969: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5969: accuracy appended (83.33%)\n", - "Epoch 5969: model set back to train mode\n", - "Epoch 5969: model parameters saved\n", - "Epoch 5970 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5970: avg_loss appended (2.7778)\n", - "Epoch 5970: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5970: accuracy appended (83.33%)\n", - "Epoch 5970: model set back to train mode\n", - "Epoch 5970: model parameters saved\n", - "Epoch 5971 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5971: avg_loss appended (2.7778)\n", - "Epoch 5971: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5971: accuracy appended (83.33%)\n", - "Epoch 5971: model set back to train mode\n", - "Epoch 5971: model parameters saved\n", - "Epoch 5972 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5972: avg_loss appended (2.7778)\n", - "Epoch 5972: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5972: accuracy appended (83.33%)\n", - "Epoch 5972: model set back to train mode\n", - "Epoch 5972: model parameters saved\n", - "Epoch 5973 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5973: avg_loss appended (2.7778)\n", - "Epoch 5973: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5973: accuracy appended (83.33%)\n", - "Epoch 5973: model set back to train mode\n", - "Epoch 5973: model parameters saved\n", - "Epoch 5974 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5974: avg_loss appended (2.7778)\n", - "Epoch 5974: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5974: accuracy appended (83.33%)\n", - "Epoch 5974: model set back to train mode\n", - "Epoch 5974: model parameters saved\n", - "Epoch 5975 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5975: avg_loss appended (2.7778)\n", - "Epoch 5975: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5975: accuracy appended (83.33%)\n", - "Epoch 5975: model set back to train mode\n", - "Epoch 5975: model parameters saved\n", - "Epoch 5976 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5976: avg_loss appended (2.7778)\n", - "Epoch 5976: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5976: accuracy appended (83.33%)\n", - "Epoch 5976: model set back to train mode\n", - "Epoch 5976: model parameters saved\n", - "Epoch 5977 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5977: avg_loss appended (2.7778)\n", - "Epoch 5977: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5977: accuracy appended (83.33%)\n", - "Epoch 5977: model set back to train mode\n", - "Epoch 5977: model parameters saved\n", - "Epoch 5978 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5978: avg_loss appended (2.7778)\n", - "Epoch 5978: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5978: accuracy appended (83.33%)\n", - "Epoch 5978: model set back to train mode\n", - "Epoch 5978: model parameters saved\n", - "Epoch 5979 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5979: avg_loss appended (2.7778)\n", - "Epoch 5979: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5979: accuracy appended (83.33%)\n", - "Epoch 5979: model set back to train mode\n", - "Epoch 5979: model parameters saved\n", - "Epoch 5980 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5980: avg_loss appended (2.7778)\n", - "Epoch 5980: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5980: accuracy appended (83.33%)\n", - "Epoch 5980: model set back to train mode\n", - "Epoch 5980: model parameters saved\n", - "Epoch 5981 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5981: avg_loss appended (2.7778)\n", - "Epoch 5981: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5981: accuracy appended (83.33%)\n", - "Epoch 5981: model set back to train mode\n", - "Epoch 5981: model parameters saved\n", - "Epoch 5982 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5982: avg_loss appended (2.7778)\n", - "Epoch 5982: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5982: accuracy appended (83.33%)\n", - "Epoch 5982: model set back to train mode\n", - "Epoch 5982: model parameters saved\n", - "Epoch 5983 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5983: avg_loss appended (2.7778)\n", - "Epoch 5983: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5983: accuracy appended (83.33%)\n", - "Epoch 5983: model set back to train mode\n", - "Epoch 5983: model parameters saved\n", - "Epoch 5984 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5984: avg_loss appended (2.7778)\n", - "Epoch 5984: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5984: accuracy appended (83.33%)\n", - "Epoch 5984: model set back to train mode\n", - "Epoch 5984: model parameters saved\n", - "Epoch 5985 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5985: avg_loss appended (2.7778)\n", - "Epoch 5985: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5985: accuracy appended (83.33%)\n", - "Epoch 5985: model set back to train mode\n", - "Epoch 5985: model parameters saved\n", - "Epoch 5986 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5986: avg_loss appended (2.7778)\n", - "Epoch 5986: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5986: accuracy appended (83.33%)\n", - "Epoch 5986: model set back to train mode\n", - "Epoch 5986: model parameters saved\n", - "Epoch 5987 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5987: avg_loss appended (2.7778)\n", - "Epoch 5987: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5987: accuracy appended (83.33%)\n", - "Epoch 5987: model set back to train mode\n", - "Epoch 5987: model parameters saved\n", - "Epoch 5988 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5988: avg_loss appended (2.7778)\n", - "Epoch 5988: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5988: accuracy appended (83.33%)\n", - "Epoch 5988: model set back to train mode\n", - "Epoch 5988: model parameters saved\n", - "Epoch 5989 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5989: avg_loss appended (2.7778)\n", - "Epoch 5989: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5989: accuracy appended (83.33%)\n", - "Epoch 5989: model set back to train mode\n", - "Epoch 5989: model parameters saved\n", - "Epoch 5990 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5990: avg_loss appended (2.7778)\n", - "Epoch 5990: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5990: accuracy appended (83.33%)\n", - "Epoch 5990: model set back to train mode\n", - "Epoch 5990: model parameters saved\n", - "Epoch 5991 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5991: avg_loss appended (2.7778)\n", - "Epoch 5991: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5991: accuracy appended (83.33%)\n", - "Epoch 5991: model set back to train mode\n", - "Epoch 5991: model parameters saved\n", - "Epoch 5992 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5992: avg_loss appended (2.7778)\n", - "Epoch 5992: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5992: accuracy appended (83.33%)\n", - "Epoch 5992: model set back to train mode\n", - "Epoch 5992: model parameters saved\n", - "Epoch 5993 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5993: avg_loss appended (2.7778)\n", - "Epoch 5993: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5993: accuracy appended (83.33%)\n", - "Epoch 5993: model set back to train mode\n", - "Epoch 5993: model parameters saved\n", - "Epoch 5994 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5994: avg_loss appended (2.7778)\n", - "Epoch 5994: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5994: accuracy appended (83.33%)\n", - "Epoch 5994: model set back to train mode\n", - "Epoch 5994: model parameters saved\n", - "Epoch 5995 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5995: avg_loss appended (2.7778)\n", - "Epoch 5995: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5995: accuracy appended (83.33%)\n", - "Epoch 5995: model set back to train mode\n", - "Epoch 5995: model parameters saved\n", - "Epoch 5996 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5996: avg_loss appended (2.7778)\n", - "Epoch 5996: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5996: accuracy appended (83.33%)\n", - "Epoch 5996: model set back to train mode\n", - "Epoch 5996: model parameters saved\n", - "Epoch 5997 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5997: avg_loss appended (2.7778)\n", - "Epoch 5997: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5997: accuracy appended (83.33%)\n", - "Epoch 5997: model set back to train mode\n", - "Epoch 5997: model parameters saved\n", - "Epoch 5998 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5998: avg_loss appended (2.7778)\n", - "Epoch 5998: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5998: accuracy appended (83.33%)\n", - "Epoch 5998: model set back to train mode\n", - "Epoch 5998: model parameters saved\n", - "Epoch 5999 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 5999: avg_loss appended (2.7778)\n", - "Epoch 5999: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 5999: accuracy appended (83.33%)\n", - "Epoch 5999: model set back to train mode\n", - "Epoch 5999: model parameters saved\n", - "Epoch 6000 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6000: avg_loss appended (2.7778)\n", - "Epoch 6000: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6000: accuracy appended (83.33%)\n", - "Epoch 6000: model set back to train mode\n", - "Epoch 6000: model parameters saved\n", - "Epoch 6000/10000, Loss: 2.7778, Accuracy: 83.33%\n", - "Epoch 6000: checkpoint saved\n", - "Epoch 6001 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6001: avg_loss appended (2.7778)\n", - "Epoch 6001: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6001: accuracy appended (83.33%)\n", - "Epoch 6001: model set back to train mode\n", - "Epoch 6001: model parameters saved\n", - "Epoch 6002 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6002: avg_loss appended (2.7778)\n", - "Epoch 6002: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6002: accuracy appended (83.33%)\n", - "Epoch 6002: model set back to train mode\n", - "Epoch 6002: model parameters saved\n", - "Epoch 6003 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6003: avg_loss appended (2.7778)\n", - "Epoch 6003: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6003: accuracy appended (83.33%)\n", - "Epoch 6003: model set back to train mode\n", - "Epoch 6003: model parameters saved\n", - "Epoch 6004 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6004: avg_loss appended (2.7778)\n", - "Epoch 6004: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6004: accuracy appended (83.33%)\n", - "Epoch 6004: model set back to train mode\n", - "Epoch 6004: model parameters saved\n", - "Epoch 6005 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6005: avg_loss appended (2.7778)\n", - "Epoch 6005: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6005: accuracy appended (83.33%)\n", - "Epoch 6005: model set back to train mode\n", - "Epoch 6005: model parameters saved\n", - "Epoch 6006 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6006: avg_loss appended (2.7778)\n", - "Epoch 6006: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6006: accuracy appended (83.33%)\n", - "Epoch 6006: model set back to train mode\n", - "Epoch 6006: model parameters saved\n", - "Epoch 6007 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6007: avg_loss appended (2.7778)\n", - "Epoch 6007: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6007: accuracy appended (83.33%)\n", - "Epoch 6007: model set back to train mode\n", - "Epoch 6007: model parameters saved\n", - "Epoch 6008 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6008: avg_loss appended (2.7778)\n", - "Epoch 6008: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6008: accuracy appended (83.33%)\n", - "Epoch 6008: model set back to train mode\n", - "Epoch 6008: model parameters saved\n", - "Epoch 6009 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6009: avg_loss appended (2.7778)\n", - "Epoch 6009: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6009: accuracy appended (83.33%)\n", - "Epoch 6009: model set back to train mode\n", - "Epoch 6009: model parameters saved\n", - "Epoch 6010 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6010: avg_loss appended (2.7778)\n", - "Epoch 6010: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6010: accuracy appended (83.33%)\n", - "Epoch 6010: model set back to train mode\n", - "Epoch 6010: model parameters saved\n", - "Epoch 6011 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6011: avg_loss appended (2.7778)\n", - "Epoch 6011: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6011: accuracy appended (83.33%)\n", - "Epoch 6011: model set back to train mode\n", - "Epoch 6011: model parameters saved\n", - "Epoch 6012 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6012: avg_loss appended (2.7778)\n", - "Epoch 6012: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6012: accuracy appended (83.33%)\n", - "Epoch 6012: model set back to train mode\n", - "Epoch 6012: model parameters saved\n", - "Epoch 6013 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6013: avg_loss appended (2.7778)\n", - "Epoch 6013: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6013: accuracy appended (83.33%)\n", - "Epoch 6013: model set back to train mode\n", - "Epoch 6013: model parameters saved\n", - "Epoch 6014 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6014: avg_loss appended (2.7778)\n", - "Epoch 6014: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6014: accuracy appended (83.33%)\n", - "Epoch 6014: model set back to train mode\n", - "Epoch 6014: model parameters saved\n", - "Epoch 6015 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6015: avg_loss appended (2.7778)\n", - "Epoch 6015: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6015: accuracy appended (83.33%)\n", - "Epoch 6015: model set back to train mode\n", - "Epoch 6015: model parameters saved\n", - "Epoch 6016 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6016: avg_loss appended (2.7778)\n", - "Epoch 6016: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6016: accuracy appended (83.33%)\n", - "Epoch 6016: model set back to train mode\n", - "Epoch 6016: model parameters saved\n", - "Epoch 6017 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6017: avg_loss appended (2.7778)\n", - "Epoch 6017: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6017: accuracy appended (83.33%)\n", - "Epoch 6017: model set back to train mode\n", - "Epoch 6017: model parameters saved\n", - "Epoch 6018 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6018: avg_loss appended (2.7778)\n", - "Epoch 6018: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6018: accuracy appended (83.33%)\n", - "Epoch 6018: model set back to train mode\n", - "Epoch 6018: model parameters saved\n", - "Epoch 6019 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6019: avg_loss appended (2.7778)\n", - "Epoch 6019: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6019: accuracy appended (83.33%)\n", - "Epoch 6019: model set back to train mode\n", - "Epoch 6019: model parameters saved\n", - "Epoch 6020 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6020: avg_loss appended (2.7778)\n", - "Epoch 6020: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6020: accuracy appended (83.33%)\n", - "Epoch 6020: model set back to train mode\n", - "Epoch 6020: model parameters saved\n", - "Epoch 6021 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6021: avg_loss appended (2.7778)\n", - "Epoch 6021: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6021: accuracy appended (83.33%)\n", - "Epoch 6021: model set back to train mode\n", - "Epoch 6021: model parameters saved\n", - "Epoch 6022 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6022: avg_loss appended (2.7778)\n", - "Epoch 6022: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6022: accuracy appended (83.33%)\n", - "Epoch 6022: model set back to train mode\n", - "Epoch 6022: model parameters saved\n", - "Epoch 6023 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6023: avg_loss appended (2.7778)\n", - "Epoch 6023: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6023: accuracy appended (83.33%)\n", - "Epoch 6023: model set back to train mode\n", - "Epoch 6023: model parameters saved\n", - "Epoch 6024 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6024: avg_loss appended (2.7778)\n", - "Epoch 6024: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6024: accuracy appended (83.33%)\n", - "Epoch 6024: model set back to train mode\n", - "Epoch 6024: model parameters saved\n", - "Epoch 6025 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6025: avg_loss appended (2.7778)\n", - "Epoch 6025: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6025: accuracy appended (83.33%)\n", - "Epoch 6025: model set back to train mode\n", - "Epoch 6025: model parameters saved\n", - "Epoch 6026 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6026: avg_loss appended (2.7778)\n", - "Epoch 6026: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6026: accuracy appended (83.33%)\n", - "Epoch 6026: model set back to train mode\n", - "Epoch 6026: model parameters saved\n", - "Epoch 6027 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6027: avg_loss appended (2.7778)\n", - "Epoch 6027: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6027: accuracy appended (83.33%)\n", - "Epoch 6027: model set back to train mode\n", - "Epoch 6027: model parameters saved\n", - "Epoch 6028 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6028: avg_loss appended (2.7778)\n", - "Epoch 6028: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6028: accuracy appended (83.33%)\n", - "Epoch 6028: model set back to train mode\n", - "Epoch 6028: model parameters saved\n", - "Epoch 6029 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6029: avg_loss appended (2.7778)\n", - "Epoch 6029: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6029: accuracy appended (83.33%)\n", - "Epoch 6029: model set back to train mode\n", - "Epoch 6029: model parameters saved\n", - "Epoch 6030 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6030: avg_loss appended (2.7778)\n", - "Epoch 6030: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6030: accuracy appended (83.33%)\n", - "Epoch 6030: model set back to train mode\n", - "Epoch 6030: model parameters saved\n", - "Epoch 6031 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6031: avg_loss appended (2.7778)\n", - "Epoch 6031: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6031: accuracy appended (83.33%)\n", - "Epoch 6031: model set back to train mode\n", - "Epoch 6031: model parameters saved\n", - "Epoch 6032 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6032: avg_loss appended (2.7778)\n", - "Epoch 6032: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6032: accuracy appended (83.33%)\n", - "Epoch 6032: model set back to train mode\n", - "Epoch 6032: model parameters saved\n", - "Epoch 6033 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6033: avg_loss appended (2.7778)\n", - "Epoch 6033: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6033: accuracy appended (83.33%)\n", - "Epoch 6033: model set back to train mode\n", - "Epoch 6033: model parameters saved\n", - "Epoch 6034 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6034: avg_loss appended (2.7778)\n", - "Epoch 6034: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6034: accuracy appended (83.33%)\n", - "Epoch 6034: model set back to train mode\n", - "Epoch 6034: model parameters saved\n", - "Epoch 6035 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6035: avg_loss appended (2.7778)\n", - "Epoch 6035: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6035: accuracy appended (83.33%)\n", - "Epoch 6035: model set back to train mode\n", - "Epoch 6035: model parameters saved\n", - "Epoch 6036 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6036: avg_loss appended (2.7778)\n", - "Epoch 6036: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6036: accuracy appended (83.33%)\n", - "Epoch 6036: model set back to train mode\n", - "Epoch 6036: model parameters saved\n", - "Epoch 6037 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6037: avg_loss appended (2.7778)\n", - "Epoch 6037: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6037: accuracy appended (83.33%)\n", - "Epoch 6037: model set back to train mode\n", - "Epoch 6037: model parameters saved\n", - "Epoch 6038 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6038: avg_loss appended (2.7778)\n", - "Epoch 6038: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6038: accuracy appended (83.33%)\n", - "Epoch 6038: model set back to train mode\n", - "Epoch 6038: model parameters saved\n", - "Epoch 6039 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6039: avg_loss appended (2.7778)\n", - "Epoch 6039: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6039: accuracy appended (83.33%)\n", - "Epoch 6039: model set back to train mode\n", - "Epoch 6039: model parameters saved\n", - "Epoch 6040 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6040: avg_loss appended (2.7778)\n", - "Epoch 6040: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6040: accuracy appended (83.33%)\n", - "Epoch 6040: model set back to train mode\n", - "Epoch 6040: model parameters saved\n", - "Epoch 6041 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6041: avg_loss appended (2.7778)\n", - "Epoch 6041: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6041: accuracy appended (83.33%)\n", - "Epoch 6041: model set back to train mode\n", - "Epoch 6041: model parameters saved\n", - "Epoch 6042 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6042: avg_loss appended (2.7778)\n", - "Epoch 6042: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6042: accuracy appended (83.33%)\n", - "Epoch 6042: model set back to train mode\n", - "Epoch 6042: model parameters saved\n", - "Epoch 6043 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6043: avg_loss appended (2.7778)\n", - "Epoch 6043: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6043: accuracy appended (83.33%)\n", - "Epoch 6043: model set back to train mode\n", - "Epoch 6043: model parameters saved\n", - "Epoch 6044 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6044: avg_loss appended (2.7778)\n", - "Epoch 6044: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6044: accuracy appended (83.33%)\n", - "Epoch 6044: model set back to train mode\n", - "Epoch 6044: model parameters saved\n", - "Epoch 6045 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6045: avg_loss appended (2.7778)\n", - "Epoch 6045: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6045: accuracy appended (83.33%)\n", - "Epoch 6045: model set back to train mode\n", - "Epoch 6045: model parameters saved\n", - "Epoch 6046 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6046: avg_loss appended (2.7778)\n", - "Epoch 6046: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6046: accuracy appended (83.33%)\n", - "Epoch 6046: model set back to train mode\n", - "Epoch 6046: model parameters saved\n", - "Epoch 6047 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6047: avg_loss appended (2.7778)\n", - "Epoch 6047: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6047: accuracy appended (83.33%)\n", - "Epoch 6047: model set back to train mode\n", - "Epoch 6047: model parameters saved\n", - "Epoch 6048 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6048: avg_loss appended (2.7778)\n", - "Epoch 6048: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6048: accuracy appended (83.33%)\n", - "Epoch 6048: model set back to train mode\n", - "Epoch 6048: model parameters saved\n", - "Epoch 6049 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6049: avg_loss appended (2.7778)\n", - "Epoch 6049: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6049: accuracy appended (83.33%)\n", - "Epoch 6049: model set back to train mode\n", - "Epoch 6049: model parameters saved\n", - "Epoch 6050 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6050: avg_loss appended (2.7778)\n", - "Epoch 6050: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6050: accuracy appended (83.33%)\n", - "Epoch 6050: model set back to train mode\n", - "Epoch 6050: model parameters saved\n", - "Epoch 6051 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6051: avg_loss appended (2.7778)\n", - "Epoch 6051: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6051: accuracy appended (83.33%)\n", - "Epoch 6051: model set back to train mode\n", - "Epoch 6051: model parameters saved\n", - "Epoch 6052 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6052: avg_loss appended (2.7778)\n", - "Epoch 6052: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6052: accuracy appended (83.33%)\n", - "Epoch 6052: model set back to train mode\n", - "Epoch 6052: model parameters saved\n", - "Epoch 6053 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6053: avg_loss appended (2.7778)\n", - "Epoch 6053: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6053: accuracy appended (83.33%)\n", - "Epoch 6053: model set back to train mode\n", - "Epoch 6053: model parameters saved\n", - "Epoch 6054 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6054: avg_loss appended (2.7778)\n", - "Epoch 6054: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6054: accuracy appended (83.33%)\n", - "Epoch 6054: model set back to train mode\n", - "Epoch 6054: model parameters saved\n", - "Epoch 6055 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6055: avg_loss appended (2.7778)\n", - "Epoch 6055: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6055: accuracy appended (83.33%)\n", - "Epoch 6055: model set back to train mode\n", - "Epoch 6055: model parameters saved\n", - "Epoch 6056 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6056: avg_loss appended (2.7778)\n", - "Epoch 6056: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6056: accuracy appended (83.33%)\n", - "Epoch 6056: model set back to train mode\n", - "Epoch 6056: model parameters saved\n", - "Epoch 6057 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6057: avg_loss appended (2.7778)\n", - "Epoch 6057: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6057: accuracy appended (83.33%)\n", - "Epoch 6057: model set back to train mode\n", - "Epoch 6057: model parameters saved\n", - "Epoch 6058 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6058: avg_loss appended (2.7778)\n", - "Epoch 6058: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6058: accuracy appended (83.33%)\n", - "Epoch 6058: model set back to train mode\n", - "Epoch 6058: model parameters saved\n", - "Epoch 6059 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6059: avg_loss appended (2.7778)\n", - "Epoch 6059: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6059: accuracy appended (83.33%)\n", - "Epoch 6059: model set back to train mode\n", - "Epoch 6059: model parameters saved\n", - "Epoch 6060 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6060: avg_loss appended (2.7778)\n", - "Epoch 6060: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6060: accuracy appended (83.33%)\n", - "Epoch 6060: model set back to train mode\n", - "Epoch 6060: model parameters saved\n", - "Epoch 6061 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6061: avg_loss appended (2.7778)\n", - "Epoch 6061: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6061: accuracy appended (83.33%)\n", - "Epoch 6061: model set back to train mode\n", - "Epoch 6061: model parameters saved\n", - "Epoch 6062 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6062: avg_loss appended (2.7778)\n", - "Epoch 6062: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6062: accuracy appended (83.33%)\n", - "Epoch 6062: model set back to train mode\n", - "Epoch 6062: model parameters saved\n", - "Epoch 6063 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6063: avg_loss appended (2.7778)\n", - "Epoch 6063: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6063: accuracy appended (83.33%)\n", - "Epoch 6063: model set back to train mode\n", - "Epoch 6063: model parameters saved\n", - "Epoch 6064 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6064: avg_loss appended (2.7778)\n", - "Epoch 6064: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6064: accuracy appended (83.33%)\n", - "Epoch 6064: model set back to train mode\n", - "Epoch 6064: model parameters saved\n", - "Epoch 6065 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6065: avg_loss appended (2.7778)\n", - "Epoch 6065: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6065: accuracy appended (83.33%)\n", - "Epoch 6065: model set back to train mode\n", - "Epoch 6065: model parameters saved\n", - "Epoch 6066 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6066: avg_loss appended (2.7778)\n", - "Epoch 6066: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6066: accuracy appended (83.33%)\n", - "Epoch 6066: model set back to train mode\n", - "Epoch 6066: model parameters saved\n", - "Epoch 6067 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6067: avg_loss appended (2.7778)\n", - "Epoch 6067: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6067: accuracy appended (83.33%)\n", - "Epoch 6067: model set back to train mode\n", - "Epoch 6067: model parameters saved\n", - "Epoch 6068 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6068: avg_loss appended (2.7778)\n", - "Epoch 6068: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6068: accuracy appended (83.33%)\n", - "Epoch 6068: model set back to train mode\n", - "Epoch 6068: model parameters saved\n", - "Epoch 6069 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6069: avg_loss appended (2.7778)\n", - "Epoch 6069: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6069: accuracy appended (83.33%)\n", - "Epoch 6069: model set back to train mode\n", - "Epoch 6069: model parameters saved\n", - "Epoch 6070 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6070: avg_loss appended (2.7778)\n", - "Epoch 6070: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6070: accuracy appended (83.33%)\n", - "Epoch 6070: model set back to train mode\n", - "Epoch 6070: model parameters saved\n", - "Epoch 6071 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6071: avg_loss appended (2.7778)\n", - "Epoch 6071: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6071: accuracy appended (83.33%)\n", - "Epoch 6071: model set back to train mode\n", - "Epoch 6071: model parameters saved\n", - "Epoch 6072 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6072: avg_loss appended (2.7778)\n", - "Epoch 6072: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6072: accuracy appended (83.33%)\n", - "Epoch 6072: model set back to train mode\n", - "Epoch 6072: model parameters saved\n", - "Epoch 6073 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6073: avg_loss appended (2.7778)\n", - "Epoch 6073: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6073: accuracy appended (83.33%)\n", - "Epoch 6073: model set back to train mode\n", - "Epoch 6073: model parameters saved\n", - "Epoch 6074 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6074: avg_loss appended (2.7778)\n", - "Epoch 6074: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6074: accuracy appended (83.33%)\n", - "Epoch 6074: model set back to train mode\n", - "Epoch 6074: model parameters saved\n", - "Epoch 6075 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6075: avg_loss appended (2.7778)\n", - "Epoch 6075: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6075: accuracy appended (83.33%)\n", - "Epoch 6075: model set back to train mode\n", - "Epoch 6075: model parameters saved\n", - "Epoch 6076 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6076: avg_loss appended (2.7778)\n", - "Epoch 6076: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6076: accuracy appended (83.33%)\n", - "Epoch 6076: model set back to train mode\n", - "Epoch 6076: model parameters saved\n", - "Epoch 6077 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6077: avg_loss appended (2.7778)\n", - "Epoch 6077: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6077: accuracy appended (83.33%)\n", - "Epoch 6077: model set back to train mode\n", - "Epoch 6077: model parameters saved\n", - "Epoch 6078 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6078: avg_loss appended (2.7778)\n", - "Epoch 6078: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6078: accuracy appended (83.33%)\n", - "Epoch 6078: model set back to train mode\n", - "Epoch 6078: model parameters saved\n", - "Epoch 6079 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6079: avg_loss appended (2.7778)\n", - "Epoch 6079: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6079: accuracy appended (83.33%)\n", - "Epoch 6079: model set back to train mode\n", - "Epoch 6079: model parameters saved\n", - "Epoch 6080 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6080: avg_loss appended (2.7778)\n", - "Epoch 6080: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6080: accuracy appended (83.33%)\n", - "Epoch 6080: model set back to train mode\n", - "Epoch 6080: model parameters saved\n", - "Epoch 6081 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6081: avg_loss appended (2.7778)\n", - "Epoch 6081: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6081: accuracy appended (83.33%)\n", - "Epoch 6081: model set back to train mode\n", - "Epoch 6081: model parameters saved\n", - "Epoch 6082 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6082: avg_loss appended (2.7778)\n", - "Epoch 6082: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6082: accuracy appended (83.33%)\n", - "Epoch 6082: model set back to train mode\n", - "Epoch 6082: model parameters saved\n", - "Epoch 6083 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6083: avg_loss appended (2.7778)\n", - "Epoch 6083: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6083: accuracy appended (83.33%)\n", - "Epoch 6083: model set back to train mode\n", - "Epoch 6083: model parameters saved\n", - "Epoch 6084 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6084: avg_loss appended (2.7778)\n", - "Epoch 6084: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6084: accuracy appended (83.33%)\n", - "Epoch 6084: model set back to train mode\n", - "Epoch 6084: model parameters saved\n", - "Epoch 6085 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6085: avg_loss appended (2.7778)\n", - "Epoch 6085: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6085: accuracy appended (83.33%)\n", - "Epoch 6085: model set back to train mode\n", - "Epoch 6085: model parameters saved\n", - "Epoch 6086 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6086: avg_loss appended (2.7778)\n", - "Epoch 6086: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6086: accuracy appended (83.33%)\n", - "Epoch 6086: model set back to train mode\n", - "Epoch 6086: model parameters saved\n", - "Epoch 6087 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6087: avg_loss appended (2.7778)\n", - "Epoch 6087: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6087: accuracy appended (83.33%)\n", - "Epoch 6087: model set back to train mode\n", - "Epoch 6087: model parameters saved\n", - "Epoch 6088 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6088: avg_loss appended (2.7778)\n", - "Epoch 6088: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6088: accuracy appended (83.33%)\n", - "Epoch 6088: model set back to train mode\n", - "Epoch 6088: model parameters saved\n", - "Epoch 6089 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6089: avg_loss appended (2.7778)\n", - "Epoch 6089: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6089: accuracy appended (83.33%)\n", - "Epoch 6089: model set back to train mode\n", - "Epoch 6089: model parameters saved\n", - "Epoch 6090 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6090: avg_loss appended (2.7778)\n", - "Epoch 6090: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6090: accuracy appended (83.33%)\n", - "Epoch 6090: model set back to train mode\n", - "Epoch 6090: model parameters saved\n", - "Epoch 6091 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6091: avg_loss appended (2.7778)\n", - "Epoch 6091: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6091: accuracy appended (83.33%)\n", - "Epoch 6091: model set back to train mode\n", - "Epoch 6091: model parameters saved\n", - "Epoch 6092 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6092: avg_loss appended (2.7778)\n", - "Epoch 6092: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6092: accuracy appended (83.33%)\n", - "Epoch 6092: model set back to train mode\n", - "Epoch 6092: model parameters saved\n", - "Epoch 6093 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6093: avg_loss appended (2.7778)\n", - "Epoch 6093: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6093: accuracy appended (83.33%)\n", - "Epoch 6093: model set back to train mode\n", - "Epoch 6093: model parameters saved\n", - "Epoch 6094 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6094: avg_loss appended (2.7778)\n", - "Epoch 6094: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6094: accuracy appended (83.33%)\n", - "Epoch 6094: model set back to train mode\n", - "Epoch 6094: model parameters saved\n", - "Epoch 6095 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6095: avg_loss appended (2.7778)\n", - "Epoch 6095: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6095: accuracy appended (83.33%)\n", - "Epoch 6095: model set back to train mode\n", - "Epoch 6095: model parameters saved\n", - "Epoch 6096 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6096: avg_loss appended (2.7778)\n", - "Epoch 6096: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6096: accuracy appended (83.33%)\n", - "Epoch 6096: model set back to train mode\n", - "Epoch 6096: model parameters saved\n", - "Epoch 6097 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6097: avg_loss appended (2.7778)\n", - "Epoch 6097: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6097: accuracy appended (83.33%)\n", - "Epoch 6097: model set back to train mode\n", - "Epoch 6097: model parameters saved\n", - "Epoch 6098 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6098: avg_loss appended (2.7778)\n", - "Epoch 6098: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6098: accuracy appended (83.33%)\n", - "Epoch 6098: model set back to train mode\n", - "Epoch 6098: model parameters saved\n", - "Epoch 6099 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6099: avg_loss appended (2.7778)\n", - "Epoch 6099: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6099: accuracy appended (83.33%)\n", - "Epoch 6099: model set back to train mode\n", - "Epoch 6099: model parameters saved\n", - "Epoch 6100 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6100: avg_loss appended (2.7778)\n", - "Epoch 6100: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6100: accuracy appended (83.33%)\n", - "Epoch 6100: model set back to train mode\n", - "Epoch 6100: model parameters saved\n", - "Epoch 6100/10000, Loss: 2.7778, Accuracy: 83.33%\n", - "Epoch 6101 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6101: avg_loss appended (2.7778)\n", - "Epoch 6101: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6101: accuracy appended (83.33%)\n", - "Epoch 6101: model set back to train mode\n", - "Epoch 6101: model parameters saved\n", - "Epoch 6102 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6102: avg_loss appended (2.7778)\n", - "Epoch 6102: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6102: accuracy appended (83.33%)\n", - "Epoch 6102: model set back to train mode\n", - "Epoch 6102: model parameters saved\n", - "Epoch 6103 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6103: avg_loss appended (2.7778)\n", - "Epoch 6103: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6103: accuracy appended (83.33%)\n", - "Epoch 6103: model set back to train mode\n", - "Epoch 6103: model parameters saved\n", - "Epoch 6104 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6104: avg_loss appended (2.7778)\n", - "Epoch 6104: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6104: accuracy appended (83.33%)\n", - "Epoch 6104: model set back to train mode\n", - "Epoch 6104: model parameters saved\n", - "Epoch 6105 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6105: avg_loss appended (2.7778)\n", - "Epoch 6105: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6105: accuracy appended (83.33%)\n", - "Epoch 6105: model set back to train mode\n", - "Epoch 6105: model parameters saved\n", - "Epoch 6106 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6106: avg_loss appended (2.7778)\n", - "Epoch 6106: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6106: accuracy appended (83.33%)\n", - "Epoch 6106: model set back to train mode\n", - "Epoch 6106: model parameters saved\n", - "Epoch 6107 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6107: avg_loss appended (2.7778)\n", - "Epoch 6107: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6107: accuracy appended (83.33%)\n", - "Epoch 6107: model set back to train mode\n", - "Epoch 6107: model parameters saved\n", - "Epoch 6108 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6108: avg_loss appended (2.7778)\n", - "Epoch 6108: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6108: accuracy appended (83.33%)\n", - "Epoch 6108: model set back to train mode\n", - "Epoch 6108: model parameters saved\n", - "Epoch 6109 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6109: avg_loss appended (2.7778)\n", - "Epoch 6109: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6109: accuracy appended (83.33%)\n", - "Epoch 6109: model set back to train mode\n", - "Epoch 6109: model parameters saved\n", - "Epoch 6110 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6110: avg_loss appended (2.7778)\n", - "Epoch 6110: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6110: accuracy appended (83.33%)\n", - "Epoch 6110: model set back to train mode\n", - "Epoch 6110: model parameters saved\n", - "Epoch 6111 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6111: avg_loss appended (2.7778)\n", - "Epoch 6111: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6111: accuracy appended (83.33%)\n", - "Epoch 6111: model set back to train mode\n", - "Epoch 6111: model parameters saved\n", - "Epoch 6112 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6112: avg_loss appended (2.7778)\n", - "Epoch 6112: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6112: accuracy appended (83.33%)\n", - "Epoch 6112: model set back to train mode\n", - "Epoch 6112: model parameters saved\n", - "Epoch 6113 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6113: avg_loss appended (2.7778)\n", - "Epoch 6113: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6113: accuracy appended (83.33%)\n", - "Epoch 6113: model set back to train mode\n", - "Epoch 6113: model parameters saved\n", - "Epoch 6114 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6114: avg_loss appended (2.7778)\n", - "Epoch 6114: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6114: accuracy appended (83.33%)\n", - "Epoch 6114: model set back to train mode\n", - "Epoch 6114: model parameters saved\n", - "Epoch 6115 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6115: avg_loss appended (2.7778)\n", - "Epoch 6115: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6115: accuracy appended (83.33%)\n", - "Epoch 6115: model set back to train mode\n", - "Epoch 6115: model parameters saved\n", - "Epoch 6116 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6116: avg_loss appended (2.7778)\n", - "Epoch 6116: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6116: accuracy appended (83.33%)\n", - "Epoch 6116: model set back to train mode\n", - "Epoch 6116: model parameters saved\n", - "Epoch 6117 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6117: avg_loss appended (2.7778)\n", - "Epoch 6117: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6117: accuracy appended (83.33%)\n", - "Epoch 6117: model set back to train mode\n", - "Epoch 6117: model parameters saved\n", - "Epoch 6118 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6118: avg_loss appended (2.7778)\n", - "Epoch 6118: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6118: accuracy appended (83.33%)\n", - "Epoch 6118: model set back to train mode\n", - "Epoch 6118: model parameters saved\n", - "Epoch 6119 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6119: avg_loss appended (2.7778)\n", - "Epoch 6119: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6119: accuracy appended (83.33%)\n", - "Epoch 6119: model set back to train mode\n", - "Epoch 6119: model parameters saved\n", - "Epoch 6120 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6120: avg_loss appended (2.7778)\n", - "Epoch 6120: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6120: accuracy appended (83.33%)\n", - "Epoch 6120: model set back to train mode\n", - "Epoch 6120: model parameters saved\n", - "Epoch 6121 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6121: avg_loss appended (2.7778)\n", - "Epoch 6121: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6121: accuracy appended (83.33%)\n", - "Epoch 6121: model set back to train mode\n", - "Epoch 6121: model parameters saved\n", - "Epoch 6122 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6122: avg_loss appended (2.7778)\n", - "Epoch 6122: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6122: accuracy appended (83.33%)\n", - "Epoch 6122: model set back to train mode\n", - "Epoch 6122: model parameters saved\n", - "Epoch 6123 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6123: avg_loss appended (2.7778)\n", - "Epoch 6123: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6123: accuracy appended (83.33%)\n", - "Epoch 6123: model set back to train mode\n", - "Epoch 6123: model parameters saved\n", - "Epoch 6124 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6124: avg_loss appended (2.7778)\n", - "Epoch 6124: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6124: accuracy appended (83.33%)\n", - "Epoch 6124: model set back to train mode\n", - "Epoch 6124: model parameters saved\n", - "Epoch 6125 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6125: avg_loss appended (2.7778)\n", - "Epoch 6125: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6125: accuracy appended (83.33%)\n", - "Epoch 6125: model set back to train mode\n", - "Epoch 6125: model parameters saved\n", - "Epoch 6126 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6126: avg_loss appended (2.7778)\n", - "Epoch 6126: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6126: accuracy appended (83.33%)\n", - "Epoch 6126: model set back to train mode\n", - "Epoch 6126: model parameters saved\n", - "Epoch 6127 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6127: avg_loss appended (2.7778)\n", - "Epoch 6127: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6127: accuracy appended (83.33%)\n", - "Epoch 6127: model set back to train mode\n", - "Epoch 6127: model parameters saved\n", - "Epoch 6128 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6128: avg_loss appended (2.7778)\n", - "Epoch 6128: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6128: accuracy appended (83.33%)\n", - "Epoch 6128: model set back to train mode\n", - "Epoch 6128: model parameters saved\n", - "Epoch 6129 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6129: avg_loss appended (2.7778)\n", - "Epoch 6129: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6129: accuracy appended (83.33%)\n", - "Epoch 6129: model set back to train mode\n", - "Epoch 6129: model parameters saved\n", - "Epoch 6130 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6130: avg_loss appended (2.7778)\n", - "Epoch 6130: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6130: accuracy appended (83.33%)\n", - "Epoch 6130: model set back to train mode\n", - "Epoch 6130: model parameters saved\n", - "Epoch 6131 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6131: avg_loss appended (2.7778)\n", - "Epoch 6131: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6131: accuracy appended (83.33%)\n", - "Epoch 6131: model set back to train mode\n", - "Epoch 6131: model parameters saved\n", - "Epoch 6132 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6132: avg_loss appended (2.7778)\n", - "Epoch 6132: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6132: accuracy appended (83.33%)\n", - "Epoch 6132: model set back to train mode\n", - "Epoch 6132: model parameters saved\n", - "Epoch 6133 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6133: avg_loss appended (2.7778)\n", - "Epoch 6133: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6133: accuracy appended (83.33%)\n", - "Epoch 6133: model set back to train mode\n", - "Epoch 6133: model parameters saved\n", - "Epoch 6134 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6134: avg_loss appended (2.7778)\n", - "Epoch 6134: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6134: accuracy appended (83.33%)\n", - "Epoch 6134: model set back to train mode\n", - "Epoch 6134: model parameters saved\n", - "Epoch 6135 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6135: avg_loss appended (2.7778)\n", - "Epoch 6135: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6135: accuracy appended (83.33%)\n", - "Epoch 6135: model set back to train mode\n", - "Epoch 6135: model parameters saved\n", - "Epoch 6136 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6136: avg_loss appended (2.7778)\n", - "Epoch 6136: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6136: accuracy appended (83.33%)\n", - "Epoch 6136: model set back to train mode\n", - "Epoch 6136: model parameters saved\n", - "Epoch 6137 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6137: avg_loss appended (2.7778)\n", - "Epoch 6137: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6137: accuracy appended (83.33%)\n", - "Epoch 6137: model set back to train mode\n", - "Epoch 6137: model parameters saved\n", - "Epoch 6138 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6138: avg_loss appended (2.7778)\n", - "Epoch 6138: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6138: accuracy appended (83.33%)\n", - "Epoch 6138: model set back to train mode\n", - "Epoch 6138: model parameters saved\n", - "Epoch 6139 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6139: avg_loss appended (2.7778)\n", - "Epoch 6139: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6139: accuracy appended (83.33%)\n", - "Epoch 6139: model set back to train mode\n", - "Epoch 6139: model parameters saved\n", - "Epoch 6140 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6140: avg_loss appended (2.7778)\n", - "Epoch 6140: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6140: accuracy appended (83.33%)\n", - "Epoch 6140: model set back to train mode\n", - "Epoch 6140: model parameters saved\n", - "Epoch 6141 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6141: avg_loss appended (2.7778)\n", - "Epoch 6141: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6141: accuracy appended (83.33%)\n", - "Epoch 6141: model set back to train mode\n", - "Epoch 6141: model parameters saved\n", - "Epoch 6142 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6142: avg_loss appended (2.7778)\n", - "Epoch 6142: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6142: accuracy appended (83.33%)\n", - "Epoch 6142: model set back to train mode\n", - "Epoch 6142: model parameters saved\n", - "Epoch 6143 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6143: avg_loss appended (2.7778)\n", - "Epoch 6143: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6143: accuracy appended (83.33%)\n", - "Epoch 6143: model set back to train mode\n", - "Epoch 6143: model parameters saved\n", - "Epoch 6144 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6144: avg_loss appended (2.7778)\n", - "Epoch 6144: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6144: accuracy appended (83.33%)\n", - "Epoch 6144: model set back to train mode\n", - "Epoch 6144: model parameters saved\n", - "Epoch 6145 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6145: avg_loss appended (2.7778)\n", - "Epoch 6145: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6145: accuracy appended (83.33%)\n", - "Epoch 6145: model set back to train mode\n", - "Epoch 6145: model parameters saved\n", - "Epoch 6146 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6146: avg_loss appended (2.7778)\n", - "Epoch 6146: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6146: accuracy appended (83.33%)\n", - "Epoch 6146: model set back to train mode\n", - "Epoch 6146: model parameters saved\n", - "Epoch 6147 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6147: avg_loss appended (2.7778)\n", - "Epoch 6147: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6147: accuracy appended (83.33%)\n", - "Epoch 6147: model set back to train mode\n", - "Epoch 6147: model parameters saved\n", - "Epoch 6148 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6148: avg_loss appended (2.7778)\n", - "Epoch 6148: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6148: accuracy appended (83.33%)\n", - "Epoch 6148: model set back to train mode\n", - "Epoch 6148: model parameters saved\n", - "Epoch 6149 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6149: avg_loss appended (2.7778)\n", - "Epoch 6149: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6149: accuracy appended (83.33%)\n", - "Epoch 6149: model set back to train mode\n", - "Epoch 6149: model parameters saved\n", - "Epoch 6150 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6150: avg_loss appended (2.7778)\n", - "Epoch 6150: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6150: accuracy appended (83.33%)\n", - "Epoch 6150: model set back to train mode\n", - "Epoch 6150: model parameters saved\n", - "Epoch 6151 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6151: avg_loss appended (2.7778)\n", - "Epoch 6151: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6151: accuracy appended (83.33%)\n", - "Epoch 6151: model set back to train mode\n", - "Epoch 6151: model parameters saved\n", - "Epoch 6152 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6152: avg_loss appended (2.7778)\n", - "Epoch 6152: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6152: accuracy appended (83.33%)\n", - "Epoch 6152: model set back to train mode\n", - "Epoch 6152: model parameters saved\n", - "Epoch 6153 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6153: avg_loss appended (2.7778)\n", - "Epoch 6153: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6153: accuracy appended (83.33%)\n", - "Epoch 6153: model set back to train mode\n", - "Epoch 6153: model parameters saved\n", - "Epoch 6154 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6154: avg_loss appended (2.7778)\n", - "Epoch 6154: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6154: accuracy appended (83.33%)\n", - "Epoch 6154: model set back to train mode\n", - "Epoch 6154: model parameters saved\n", - "Epoch 6155 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6155: avg_loss appended (2.7778)\n", - "Epoch 6155: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6155: accuracy appended (83.33%)\n", - "Epoch 6155: model set back to train mode\n", - "Epoch 6155: model parameters saved\n", - "Epoch 6156 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6156: avg_loss appended (2.7778)\n", - "Epoch 6156: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6156: accuracy appended (83.33%)\n", - "Epoch 6156: model set back to train mode\n", - "Epoch 6156: model parameters saved\n", - "Epoch 6157 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6157: avg_loss appended (2.7778)\n", - "Epoch 6157: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6157: accuracy appended (83.33%)\n", - "Epoch 6157: model set back to train mode\n", - "Epoch 6157: model parameters saved\n", - "Epoch 6158 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6158: avg_loss appended (2.7778)\n", - "Epoch 6158: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6158: accuracy appended (83.33%)\n", - "Epoch 6158: model set back to train mode\n", - "Epoch 6158: model parameters saved\n", - "Epoch 6159 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6159: avg_loss appended (2.7778)\n", - "Epoch 6159: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6159: accuracy appended (83.33%)\n", - "Epoch 6159: model set back to train mode\n", - "Epoch 6159: model parameters saved\n", - "Epoch 6160 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6160: avg_loss appended (2.7778)\n", - "Epoch 6160: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6160: accuracy appended (83.33%)\n", - "Epoch 6160: model set back to train mode\n", - "Epoch 6160: model parameters saved\n", - "Epoch 6161 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6161: avg_loss appended (2.7778)\n", - "Epoch 6161: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6161: accuracy appended (83.33%)\n", - "Epoch 6161: model set back to train mode\n", - "Epoch 6161: model parameters saved\n", - "Epoch 6162 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6162: avg_loss appended (2.7778)\n", - "Epoch 6162: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6162: accuracy appended (83.33%)\n", - "Epoch 6162: model set back to train mode\n", - "Epoch 6162: model parameters saved\n", - "Epoch 6163 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6163: avg_loss appended (2.7778)\n", - "Epoch 6163: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6163: accuracy appended (83.33%)\n", - "Epoch 6163: model set back to train mode\n", - "Epoch 6163: model parameters saved\n", - "Epoch 6164 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6164: avg_loss appended (2.7778)\n", - "Epoch 6164: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6164: accuracy appended (83.33%)\n", - "Epoch 6164: model set back to train mode\n", - "Epoch 6164: model parameters saved\n", - "Epoch 6165 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6165: avg_loss appended (2.7778)\n", - "Epoch 6165: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6165: accuracy appended (83.33%)\n", - "Epoch 6165: model set back to train mode\n", - "Epoch 6165: model parameters saved\n", - "Epoch 6166 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6166: avg_loss appended (2.7778)\n", - "Epoch 6166: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6166: accuracy appended (83.33%)\n", - "Epoch 6166: model set back to train mode\n", - "Epoch 6166: model parameters saved\n", - "Epoch 6167 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6167: avg_loss appended (2.7778)\n", - "Epoch 6167: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6167: accuracy appended (83.33%)\n", - "Epoch 6167: model set back to train mode\n", - "Epoch 6167: model parameters saved\n", - "Epoch 6168 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6168: avg_loss appended (2.7778)\n", - "Epoch 6168: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6168: accuracy appended (83.33%)\n", - "Epoch 6168: model set back to train mode\n", - "Epoch 6168: model parameters saved\n", - "Epoch 6169 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6169: avg_loss appended (2.7778)\n", - "Epoch 6169: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6169: accuracy appended (83.33%)\n", - "Epoch 6169: model set back to train mode\n", - "Epoch 6169: model parameters saved\n", - "Epoch 6170 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6170: avg_loss appended (2.7778)\n", - "Epoch 6170: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6170: accuracy appended (83.33%)\n", - "Epoch 6170: model set back to train mode\n", - "Epoch 6170: model parameters saved\n", - "Epoch 6171 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6171: avg_loss appended (2.7778)\n", - "Epoch 6171: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6171: accuracy appended (83.33%)\n", - "Epoch 6171: model set back to train mode\n", - "Epoch 6171: model parameters saved\n", - "Epoch 6172 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6172: avg_loss appended (2.7778)\n", - "Epoch 6172: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6172: accuracy appended (83.33%)\n", - "Epoch 6172: model set back to train mode\n", - "Epoch 6172: model parameters saved\n", - "Epoch 6173 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6173: avg_loss appended (2.7778)\n", - "Epoch 6173: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6173: accuracy appended (83.33%)\n", - "Epoch 6173: model set back to train mode\n", - "Epoch 6173: model parameters saved\n", - "Epoch 6174 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6174: avg_loss appended (2.7778)\n", - "Epoch 6174: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6174: accuracy appended (83.33%)\n", - "Epoch 6174: model set back to train mode\n", - "Epoch 6174: model parameters saved\n", - "Epoch 6175 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6175: avg_loss appended (2.7778)\n", - "Epoch 6175: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6175: accuracy appended (83.33%)\n", - "Epoch 6175: model set back to train mode\n", - "Epoch 6175: model parameters saved\n", - "Epoch 6176 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6176: avg_loss appended (2.7778)\n", - "Epoch 6176: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6176: accuracy appended (83.33%)\n", - "Epoch 6176: model set back to train mode\n", - "Epoch 6176: model parameters saved\n", - "Epoch 6177 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6177: avg_loss appended (2.7778)\n", - "Epoch 6177: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6177: accuracy appended (83.33%)\n", - "Epoch 6177: model set back to train mode\n", - "Epoch 6177: model parameters saved\n", - "Epoch 6178 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6178: avg_loss appended (2.7778)\n", - "Epoch 6178: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6178: accuracy appended (83.33%)\n", - "Epoch 6178: model set back to train mode\n", - "Epoch 6178: model parameters saved\n", - "Epoch 6179 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6179: avg_loss appended (2.7778)\n", - "Epoch 6179: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6179: accuracy appended (83.33%)\n", - "Epoch 6179: model set back to train mode\n", - "Epoch 6179: model parameters saved\n", - "Epoch 6180 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6180: avg_loss appended (2.7778)\n", - "Epoch 6180: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6180: accuracy appended (83.33%)\n", - "Epoch 6180: model set back to train mode\n", - "Epoch 6180: model parameters saved\n", - "Epoch 6181 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6181: avg_loss appended (2.7778)\n", - "Epoch 6181: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6181: accuracy appended (83.33%)\n", - "Epoch 6181: model set back to train mode\n", - "Epoch 6181: model parameters saved\n", - "Epoch 6182 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6182: avg_loss appended (2.7778)\n", - "Epoch 6182: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6182: accuracy appended (83.33%)\n", - "Epoch 6182: model set back to train mode\n", - "Epoch 6182: model parameters saved\n", - "Epoch 6183 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6183: avg_loss appended (2.7778)\n", - "Epoch 6183: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6183: accuracy appended (83.33%)\n", - "Epoch 6183: model set back to train mode\n", - "Epoch 6183: model parameters saved\n", - "Epoch 6184 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6184: avg_loss appended (2.7778)\n", - "Epoch 6184: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6184: accuracy appended (83.33%)\n", - "Epoch 6184: model set back to train mode\n", - "Epoch 6184: model parameters saved\n", - "Epoch 6185 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6185: avg_loss appended (2.7778)\n", - "Epoch 6185: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6185: accuracy appended (83.33%)\n", - "Epoch 6185: model set back to train mode\n", - "Epoch 6185: model parameters saved\n", - "Epoch 6186 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6186: avg_loss appended (2.7778)\n", - "Epoch 6186: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6186: accuracy appended (83.33%)\n", - "Epoch 6186: model set back to train mode\n", - "Epoch 6186: model parameters saved\n", - "Epoch 6187 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6187: avg_loss appended (2.7778)\n", - "Epoch 6187: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6187: accuracy appended (83.33%)\n", - "Epoch 6187: model set back to train mode\n", - "Epoch 6187: model parameters saved\n", - "Epoch 6188 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6188: avg_loss appended (2.7778)\n", - "Epoch 6188: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6188: accuracy appended (83.33%)\n", - "Epoch 6188: model set back to train mode\n", - "Epoch 6188: model parameters saved\n", - "Epoch 6189 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6189: avg_loss appended (2.7778)\n", - "Epoch 6189: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6189: accuracy appended (83.33%)\n", - "Epoch 6189: model set back to train mode\n", - "Epoch 6189: model parameters saved\n", - "Epoch 6190 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6190: avg_loss appended (2.7778)\n", - "Epoch 6190: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6190: accuracy appended (83.33%)\n", - "Epoch 6190: model set back to train mode\n", - "Epoch 6190: model parameters saved\n", - "Epoch 6191 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6191: avg_loss appended (2.7778)\n", - "Epoch 6191: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6191: accuracy appended (83.33%)\n", - "Epoch 6191: model set back to train mode\n", - "Epoch 6191: model parameters saved\n", - "Epoch 6192 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6192: avg_loss appended (2.7778)\n", - "Epoch 6192: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6192: accuracy appended (83.33%)\n", - "Epoch 6192: model set back to train mode\n", - "Epoch 6192: model parameters saved\n", - "Epoch 6193 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6193: avg_loss appended (2.7778)\n", - "Epoch 6193: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6193: accuracy appended (83.33%)\n", - "Epoch 6193: model set back to train mode\n", - "Epoch 6193: model parameters saved\n", - "Epoch 6194 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6194: avg_loss appended (2.7778)\n", - "Epoch 6194: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6194: accuracy appended (83.33%)\n", - "Epoch 6194: model set back to train mode\n", - "Epoch 6194: model parameters saved\n", - "Epoch 6195 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6195: avg_loss appended (2.7778)\n", - "Epoch 6195: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6195: accuracy appended (83.33%)\n", - "Epoch 6195: model set back to train mode\n", - "Epoch 6195: model parameters saved\n", - "Epoch 6196 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6196: avg_loss appended (2.7778)\n", - "Epoch 6196: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6196: accuracy appended (83.33%)\n", - "Epoch 6196: model set back to train mode\n", - "Epoch 6196: model parameters saved\n", - "Epoch 6197 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6197: avg_loss appended (2.7778)\n", - "Epoch 6197: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6197: accuracy appended (83.33%)\n", - "Epoch 6197: model set back to train mode\n", - "Epoch 6197: model parameters saved\n", - "Epoch 6198 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6198: avg_loss appended (2.7778)\n", - "Epoch 6198: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6198: accuracy appended (83.33%)\n", - "Epoch 6198: model set back to train mode\n", - "Epoch 6198: model parameters saved\n", - "Epoch 6199 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6199: avg_loss appended (2.7778)\n", - "Epoch 6199: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6199: accuracy appended (83.33%)\n", - "Epoch 6199: model set back to train mode\n", - "Epoch 6199: model parameters saved\n", - "Epoch 6200 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6200: avg_loss appended (2.7778)\n", - "Epoch 6200: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6200: accuracy appended (83.33%)\n", - "Epoch 6200: model set back to train mode\n", - "Epoch 6200: model parameters saved\n", - "Epoch 6200/10000, Loss: 2.7778, Accuracy: 83.33%\n", - "Epoch 6201 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6201: avg_loss appended (2.7778)\n", - "Epoch 6201: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6201: accuracy appended (83.33%)\n", - "Epoch 6201: model set back to train mode\n", - "Epoch 6201: model parameters saved\n", - "Epoch 6202 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6202: avg_loss appended (2.7778)\n", - "Epoch 6202: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6202: accuracy appended (83.33%)\n", - "Epoch 6202: model set back to train mode\n", - "Epoch 6202: model parameters saved\n", - "Epoch 6203 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6203: avg_loss appended (2.7778)\n", - "Epoch 6203: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6203: accuracy appended (83.33%)\n", - "Epoch 6203: model set back to train mode\n", - "Epoch 6203: model parameters saved\n", - "Epoch 6204 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6204: avg_loss appended (2.7778)\n", - "Epoch 6204: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6204: accuracy appended (83.33%)\n", - "Epoch 6204: model set back to train mode\n", - "Epoch 6204: model parameters saved\n", - "Epoch 6205 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6205: avg_loss appended (2.7778)\n", - "Epoch 6205: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6205: accuracy appended (83.33%)\n", - "Epoch 6205: model set back to train mode\n", - "Epoch 6205: model parameters saved\n", - "Epoch 6206 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6206: avg_loss appended (2.7778)\n", - "Epoch 6206: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6206: accuracy appended (83.33%)\n", - "Epoch 6206: model set back to train mode\n", - "Epoch 6206: model parameters saved\n", - "Epoch 6207 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6207: avg_loss appended (2.7778)\n", - "Epoch 6207: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6207: accuracy appended (83.33%)\n", - "Epoch 6207: model set back to train mode\n", - "Epoch 6207: model parameters saved\n", - "Epoch 6208 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6208: avg_loss appended (2.7778)\n", - "Epoch 6208: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6208: accuracy appended (83.33%)\n", - "Epoch 6208: model set back to train mode\n", - "Epoch 6208: model parameters saved\n", - "Epoch 6209 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6209: avg_loss appended (2.7778)\n", - "Epoch 6209: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6209: accuracy appended (83.33%)\n", - "Epoch 6209: model set back to train mode\n", - "Epoch 6209: model parameters saved\n", - "Epoch 6210 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6210: avg_loss appended (2.7778)\n", - "Epoch 6210: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6210: accuracy appended (83.33%)\n", - "Epoch 6210: model set back to train mode\n", - "Epoch 6210: model parameters saved\n", - "Epoch 6211 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6211: avg_loss appended (2.7778)\n", - "Epoch 6211: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6211: accuracy appended (83.33%)\n", - "Epoch 6211: model set back to train mode\n", - "Epoch 6211: model parameters saved\n", - "Epoch 6212 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6212: avg_loss appended (2.7778)\n", - "Epoch 6212: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6212: accuracy appended (83.33%)\n", - "Epoch 6212: model set back to train mode\n", - "Epoch 6212: model parameters saved\n", - "Epoch 6213 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6213: avg_loss appended (2.7778)\n", - "Epoch 6213: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6213: accuracy appended (83.33%)\n", - "Epoch 6213: model set back to train mode\n", - "Epoch 6213: model parameters saved\n", - "Epoch 6214 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6214: avg_loss appended (2.7778)\n", - "Epoch 6214: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6214: accuracy appended (83.33%)\n", - "Epoch 6214: model set back to train mode\n", - "Epoch 6214: model parameters saved\n", - "Epoch 6215 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6215: avg_loss appended (2.7778)\n", - "Epoch 6215: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6215: accuracy appended (83.33%)\n", - "Epoch 6215: model set back to train mode\n", - "Epoch 6215: model parameters saved\n", - "Epoch 6216 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6216: avg_loss appended (2.7778)\n", - "Epoch 6216: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6216: accuracy appended (83.33%)\n", - "Epoch 6216: model set back to train mode\n", - "Epoch 6216: model parameters saved\n", - "Epoch 6217 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6217: avg_loss appended (2.7778)\n", - "Epoch 6217: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6217: accuracy appended (83.33%)\n", - "Epoch 6217: model set back to train mode\n", - "Epoch 6217: model parameters saved\n", - "Epoch 6218 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6218: avg_loss appended (2.7778)\n", - "Epoch 6218: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6218: accuracy appended (83.33%)\n", - "Epoch 6218: model set back to train mode\n", - "Epoch 6218: model parameters saved\n", - "Epoch 6219 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6219: avg_loss appended (2.7778)\n", - "Epoch 6219: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6219: accuracy appended (83.33%)\n", - "Epoch 6219: model set back to train mode\n", - "Epoch 6219: model parameters saved\n", - "Epoch 6220 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6220: avg_loss appended (2.7778)\n", - "Epoch 6220: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6220: accuracy appended (83.33%)\n", - "Epoch 6220: model set back to train mode\n", - "Epoch 6220: model parameters saved\n", - "Epoch 6221 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6221: avg_loss appended (2.7778)\n", - "Epoch 6221: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6221: accuracy appended (83.33%)\n", - "Epoch 6221: model set back to train mode\n", - "Epoch 6221: model parameters saved\n", - "Epoch 6222 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6222: avg_loss appended (2.7778)\n", - "Epoch 6222: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6222: accuracy appended (83.33%)\n", - "Epoch 6222: model set back to train mode\n", - "Epoch 6222: model parameters saved\n", - "Epoch 6223 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6223: avg_loss appended (2.7778)\n", - "Epoch 6223: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6223: accuracy appended (83.33%)\n", - "Epoch 6223: model set back to train mode\n", - "Epoch 6223: model parameters saved\n", - "Epoch 6224 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6224: avg_loss appended (2.7778)\n", - "Epoch 6224: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6224: accuracy appended (83.33%)\n", - "Epoch 6224: model set back to train mode\n", - "Epoch 6224: model parameters saved\n", - "Epoch 6225 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6225: avg_loss appended (2.7778)\n", - "Epoch 6225: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6225: accuracy appended (83.33%)\n", - "Epoch 6225: model set back to train mode\n", - "Epoch 6225: model parameters saved\n", - "Epoch 6226 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6226: avg_loss appended (2.7778)\n", - "Epoch 6226: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6226: accuracy appended (83.33%)\n", - "Epoch 6226: model set back to train mode\n", - "Epoch 6226: model parameters saved\n", - "Epoch 6227 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6227: avg_loss appended (2.7778)\n", - "Epoch 6227: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6227: accuracy appended (83.33%)\n", - "Epoch 6227: model set back to train mode\n", - "Epoch 6227: model parameters saved\n", - "Epoch 6228 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6228: avg_loss appended (2.7778)\n", - "Epoch 6228: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6228: accuracy appended (83.33%)\n", - "Epoch 6228: model set back to train mode\n", - "Epoch 6228: model parameters saved\n", - "Epoch 6229 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6229: avg_loss appended (2.7778)\n", - "Epoch 6229: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6229: accuracy appended (83.33%)\n", - "Epoch 6229: model set back to train mode\n", - "Epoch 6229: model parameters saved\n", - "Epoch 6230 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6230: avg_loss appended (2.7778)\n", - "Epoch 6230: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6230: accuracy appended (83.33%)\n", - "Epoch 6230: model set back to train mode\n", - "Epoch 6230: model parameters saved\n", - "Epoch 6231 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6231: avg_loss appended (2.7778)\n", - "Epoch 6231: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6231: accuracy appended (83.33%)\n", - "Epoch 6231: model set back to train mode\n", - "Epoch 6231: model parameters saved\n", - "Epoch 6232 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6232: avg_loss appended (2.7778)\n", - "Epoch 6232: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6232: accuracy appended (83.33%)\n", - "Epoch 6232: model set back to train mode\n", - "Epoch 6232: model parameters saved\n", - "Epoch 6233 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6233: avg_loss appended (2.7778)\n", - "Epoch 6233: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6233: accuracy appended (83.33%)\n", - "Epoch 6233: model set back to train mode\n", - "Epoch 6233: model parameters saved\n", - "Epoch 6234 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6234: avg_loss appended (2.7778)\n", - "Epoch 6234: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6234: accuracy appended (83.33%)\n", - "Epoch 6234: model set back to train mode\n", - "Epoch 6234: model parameters saved\n", - "Epoch 6235 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6235: avg_loss appended (2.7778)\n", - "Epoch 6235: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6235: accuracy appended (83.33%)\n", - "Epoch 6235: model set back to train mode\n", - "Epoch 6235: model parameters saved\n", - "Epoch 6236 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6236: avg_loss appended (2.7778)\n", - "Epoch 6236: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6236: accuracy appended (83.33%)\n", - "Epoch 6236: model set back to train mode\n", - "Epoch 6236: model parameters saved\n", - "Epoch 6237 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6237: avg_loss appended (2.7778)\n", - "Epoch 6237: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6237: accuracy appended (83.33%)\n", - "Epoch 6237: model set back to train mode\n", - "Epoch 6237: model parameters saved\n", - "Epoch 6238 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6238: avg_loss appended (2.7778)\n", - "Epoch 6238: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6238: accuracy appended (83.33%)\n", - "Epoch 6238: model set back to train mode\n", - "Epoch 6238: model parameters saved\n", - "Epoch 6239 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6239: avg_loss appended (2.7778)\n", - "Epoch 6239: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6239: accuracy appended (83.33%)\n", - "Epoch 6239: model set back to train mode\n", - "Epoch 6239: model parameters saved\n", - "Epoch 6240 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6240: avg_loss appended (2.7778)\n", - "Epoch 6240: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6240: accuracy appended (80.56%)\n", - "Epoch 6240: model set back to train mode\n", - "Epoch 6240: model parameters saved\n", - "Epoch 6241 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6241: avg_loss appended (2.7778)\n", - "Epoch 6241: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6241: accuracy appended (83.33%)\n", - "Epoch 6241: model set back to train mode\n", - "Epoch 6241: model parameters saved\n", - "Epoch 6242 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6242: avg_loss appended (2.7778)\n", - "Epoch 6242: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6242: accuracy appended (83.33%)\n", - "Epoch 6242: model set back to train mode\n", - "Epoch 6242: model parameters saved\n", - "Epoch 6243 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6243: avg_loss appended (2.7778)\n", - "Epoch 6243: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6243: accuracy appended (83.33%)\n", - "Epoch 6243: model set back to train mode\n", - "Epoch 6243: model parameters saved\n", - "Epoch 6244 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6244: avg_loss appended (2.7778)\n", - "Epoch 6244: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6244: accuracy appended (83.33%)\n", - "Epoch 6244: model set back to train mode\n", - "Epoch 6244: model parameters saved\n", - "Epoch 6245 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6245: avg_loss appended (2.7778)\n", - "Epoch 6245: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6245: accuracy appended (83.33%)\n", - "Epoch 6245: model set back to train mode\n", - "Epoch 6245: model parameters saved\n", - "Epoch 6246 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6246: avg_loss appended (2.7778)\n", - "Epoch 6246: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6246: accuracy appended (83.33%)\n", - "Epoch 6246: model set back to train mode\n", - "Epoch 6246: model parameters saved\n", - "Epoch 6247 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6247: avg_loss appended (2.7778)\n", - "Epoch 6247: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6247: accuracy appended (83.33%)\n", - "Epoch 6247: model set back to train mode\n", - "Epoch 6247: model parameters saved\n", - "Epoch 6248 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6248: avg_loss appended (2.7778)\n", - "Epoch 6248: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6248: accuracy appended (83.33%)\n", - "Epoch 6248: model set back to train mode\n", - "Epoch 6248: model parameters saved\n", - "Epoch 6249 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6249: avg_loss appended (2.7778)\n", - "Epoch 6249: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6249: accuracy appended (83.33%)\n", - "Epoch 6249: model set back to train mode\n", - "Epoch 6249: model parameters saved\n", - "Epoch 6250 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6250: avg_loss appended (2.7778)\n", - "Epoch 6250: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6250: accuracy appended (83.33%)\n", - "Epoch 6250: model set back to train mode\n", - "Epoch 6250: model parameters saved\n", - "Epoch 6251 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6251: avg_loss appended (2.7778)\n", - "Epoch 6251: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6251: accuracy appended (83.33%)\n", - "Epoch 6251: model set back to train mode\n", - "Epoch 6251: model parameters saved\n", - "Epoch 6252 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6252: avg_loss appended (2.7778)\n", - "Epoch 6252: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6252: accuracy appended (83.33%)\n", - "Epoch 6252: model set back to train mode\n", - "Epoch 6252: model parameters saved\n", - "Epoch 6253 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6253: avg_loss appended (2.7778)\n", - "Epoch 6253: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6253: accuracy appended (83.33%)\n", - "Epoch 6253: model set back to train mode\n", - "Epoch 6253: model parameters saved\n", - "Epoch 6254 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6254: avg_loss appended (2.7778)\n", - "Epoch 6254: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6254: accuracy appended (83.33%)\n", - "Epoch 6254: model set back to train mode\n", - "Epoch 6254: model parameters saved\n", - "Epoch 6255 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6255: avg_loss appended (2.7778)\n", - "Epoch 6255: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6255: accuracy appended (83.33%)\n", - "Epoch 6255: model set back to train mode\n", - "Epoch 6255: model parameters saved\n", - "Epoch 6256 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6256: avg_loss appended (2.7778)\n", - "Epoch 6256: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6256: accuracy appended (83.33%)\n", - "Epoch 6256: model set back to train mode\n", - "Epoch 6256: model parameters saved\n", - "Epoch 6257 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6257: avg_loss appended (2.7778)\n", - "Epoch 6257: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6257: accuracy appended (83.33%)\n", - "Epoch 6257: model set back to train mode\n", - "Epoch 6257: model parameters saved\n", - "Epoch 6258 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6258: avg_loss appended (2.7778)\n", - "Epoch 6258: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6258: accuracy appended (83.33%)\n", - "Epoch 6258: model set back to train mode\n", - "Epoch 6258: model parameters saved\n", - "Epoch 6259 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6259: avg_loss appended (2.7778)\n", - "Epoch 6259: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6259: accuracy appended (83.33%)\n", - "Epoch 6259: model set back to train mode\n", - "Epoch 6259: model parameters saved\n", - "Epoch 6260 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6260: avg_loss appended (2.7778)\n", - "Epoch 6260: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6260: accuracy appended (80.56%)\n", - "Epoch 6260: model set back to train mode\n", - "Epoch 6260: model parameters saved\n", - "Epoch 6261 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6261: avg_loss appended (2.7778)\n", - "Epoch 6261: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6261: accuracy appended (80.56%)\n", - "Epoch 6261: model set back to train mode\n", - "Epoch 6261: model parameters saved\n", - "Epoch 6262 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6262: avg_loss appended (2.7778)\n", - "Epoch 6262: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6262: accuracy appended (83.33%)\n", - "Epoch 6262: model set back to train mode\n", - "Epoch 6262: model parameters saved\n", - "Epoch 6263 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6263: avg_loss appended (2.7778)\n", - "Epoch 6263: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6263: accuracy appended (83.33%)\n", - "Epoch 6263: model set back to train mode\n", - "Epoch 6263: model parameters saved\n", - "Epoch 6264 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6264: avg_loss appended (2.7778)\n", - "Epoch 6264: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6264: accuracy appended (83.33%)\n", - "Epoch 6264: model set back to train mode\n", - "Epoch 6264: model parameters saved\n", - "Epoch 6265 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6265: avg_loss appended (2.7778)\n", - "Epoch 6265: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6265: accuracy appended (83.33%)\n", - "Epoch 6265: model set back to train mode\n", - "Epoch 6265: model parameters saved\n", - "Epoch 6266 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6266: avg_loss appended (2.7778)\n", - "Epoch 6266: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6266: accuracy appended (83.33%)\n", - "Epoch 6266: model set back to train mode\n", - "Epoch 6266: model parameters saved\n", - "Epoch 6267 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6267: avg_loss appended (2.7778)\n", - "Epoch 6267: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6267: accuracy appended (83.33%)\n", - "Epoch 6267: model set back to train mode\n", - "Epoch 6267: model parameters saved\n", - "Epoch 6268 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6268: avg_loss appended (2.7778)\n", - "Epoch 6268: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6268: accuracy appended (83.33%)\n", - "Epoch 6268: model set back to train mode\n", - "Epoch 6268: model parameters saved\n", - "Epoch 6269 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6269: avg_loss appended (2.7778)\n", - "Epoch 6269: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6269: accuracy appended (83.33%)\n", - "Epoch 6269: model set back to train mode\n", - "Epoch 6269: model parameters saved\n", - "Epoch 6270 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6270: avg_loss appended (2.7778)\n", - "Epoch 6270: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6270: accuracy appended (83.33%)\n", - "Epoch 6270: model set back to train mode\n", - "Epoch 6270: model parameters saved\n", - "Epoch 6271 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6271: avg_loss appended (2.7778)\n", - "Epoch 6271: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6271: accuracy appended (83.33%)\n", - "Epoch 6271: model set back to train mode\n", - "Epoch 6271: model parameters saved\n", - "Epoch 6272 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6272: avg_loss appended (2.7778)\n", - "Epoch 6272: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6272: accuracy appended (83.33%)\n", - "Epoch 6272: model set back to train mode\n", - "Epoch 6272: model parameters saved\n", - "Epoch 6273 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6273: avg_loss appended (2.7778)\n", - "Epoch 6273: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6273: accuracy appended (83.33%)\n", - "Epoch 6273: model set back to train mode\n", - "Epoch 6273: model parameters saved\n", - "Epoch 6274 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6274: avg_loss appended (2.7778)\n", - "Epoch 6274: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6274: accuracy appended (83.33%)\n", - "Epoch 6274: model set back to train mode\n", - "Epoch 6274: model parameters saved\n", - "Epoch 6275 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6275: avg_loss appended (2.7778)\n", - "Epoch 6275: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6275: accuracy appended (83.33%)\n", - "Epoch 6275: model set back to train mode\n", - "Epoch 6275: model parameters saved\n", - "Epoch 6276 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6276: avg_loss appended (2.7778)\n", - "Epoch 6276: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6276: accuracy appended (83.33%)\n", - "Epoch 6276: model set back to train mode\n", - "Epoch 6276: model parameters saved\n", - "Epoch 6277 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6277: avg_loss appended (2.7778)\n", - "Epoch 6277: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6277: accuracy appended (83.33%)\n", - "Epoch 6277: model set back to train mode\n", - "Epoch 6277: model parameters saved\n", - "Epoch 6278 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6278: avg_loss appended (2.7778)\n", - "Epoch 6278: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6278: accuracy appended (83.33%)\n", - "Epoch 6278: model set back to train mode\n", - "Epoch 6278: model parameters saved\n", - "Epoch 6279 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6279: avg_loss appended (2.7778)\n", - "Epoch 6279: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6279: accuracy appended (80.56%)\n", - "Epoch 6279: model set back to train mode\n", - "Epoch 6279: model parameters saved\n", - "Epoch 6280 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6280: avg_loss appended (2.7778)\n", - "Epoch 6280: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6280: accuracy appended (83.33%)\n", - "Epoch 6280: model set back to train mode\n", - "Epoch 6280: model parameters saved\n", - "Epoch 6281 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6281: avg_loss appended (2.7778)\n", - "Epoch 6281: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6281: accuracy appended (83.33%)\n", - "Epoch 6281: model set back to train mode\n", - "Epoch 6281: model parameters saved\n", - "Epoch 6282 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6282: avg_loss appended (2.7778)\n", - "Epoch 6282: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6282: accuracy appended (83.33%)\n", - "Epoch 6282: model set back to train mode\n", - "Epoch 6282: model parameters saved\n", - "Epoch 6283 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6283: avg_loss appended (2.7778)\n", - "Epoch 6283: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6283: accuracy appended (83.33%)\n", - "Epoch 6283: model set back to train mode\n", - "Epoch 6283: model parameters saved\n", - "Epoch 6284 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6284: avg_loss appended (2.7778)\n", - "Epoch 6284: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6284: accuracy appended (83.33%)\n", - "Epoch 6284: model set back to train mode\n", - "Epoch 6284: model parameters saved\n", - "Epoch 6285 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6285: avg_loss appended (2.7778)\n", - "Epoch 6285: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6285: accuracy appended (83.33%)\n", - "Epoch 6285: model set back to train mode\n", - "Epoch 6285: model parameters saved\n", - "Epoch 6286 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6286: avg_loss appended (2.7778)\n", - "Epoch 6286: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6286: accuracy appended (83.33%)\n", - "Epoch 6286: model set back to train mode\n", - "Epoch 6286: model parameters saved\n", - "Epoch 6287 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6287: avg_loss appended (2.7778)\n", - "Epoch 6287: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6287: accuracy appended (83.33%)\n", - "Epoch 6287: model set back to train mode\n", - "Epoch 6287: model parameters saved\n", - "Epoch 6288 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6288: avg_loss appended (2.7778)\n", - "Epoch 6288: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6288: accuracy appended (83.33%)\n", - "Epoch 6288: model set back to train mode\n", - "Epoch 6288: model parameters saved\n", - "Epoch 6289 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6289: avg_loss appended (2.7778)\n", - "Epoch 6289: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6289: accuracy appended (83.33%)\n", - "Epoch 6289: model set back to train mode\n", - "Epoch 6289: model parameters saved\n", - "Epoch 6290 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6290: avg_loss appended (2.7778)\n", - "Epoch 6290: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6290: accuracy appended (83.33%)\n", - "Epoch 6290: model set back to train mode\n", - "Epoch 6290: model parameters saved\n", - "Epoch 6291 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6291: avg_loss appended (2.7778)\n", - "Epoch 6291: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6291: accuracy appended (83.33%)\n", - "Epoch 6291: model set back to train mode\n", - "Epoch 6291: model parameters saved\n", - "Epoch 6292 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6292: avg_loss appended (2.7778)\n", - "Epoch 6292: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6292: accuracy appended (83.33%)\n", - "Epoch 6292: model set back to train mode\n", - "Epoch 6292: model parameters saved\n", - "Epoch 6293 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6293: avg_loss appended (2.7778)\n", - "Epoch 6293: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6293: accuracy appended (83.33%)\n", - "Epoch 6293: model set back to train mode\n", - "Epoch 6293: model parameters saved\n", - "Epoch 6294 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6294: avg_loss appended (2.7778)\n", - "Epoch 6294: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6294: accuracy appended (83.33%)\n", - "Epoch 6294: model set back to train mode\n", - "Epoch 6294: model parameters saved\n", - "Epoch 6295 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6295: avg_loss appended (2.7778)\n", - "Epoch 6295: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6295: accuracy appended (83.33%)\n", - "Epoch 6295: model set back to train mode\n", - "Epoch 6295: model parameters saved\n", - "Epoch 6296 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6296: avg_loss appended (2.7778)\n", - "Epoch 6296: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6296: accuracy appended (83.33%)\n", - "Epoch 6296: model set back to train mode\n", - "Epoch 6296: model parameters saved\n", - "Epoch 6297 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6297: avg_loss appended (2.7778)\n", - "Epoch 6297: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6297: accuracy appended (83.33%)\n", - "Epoch 6297: model set back to train mode\n", - "Epoch 6297: model parameters saved\n", - "Epoch 6298 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6298: avg_loss appended (2.7778)\n", - "Epoch 6298: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6298: accuracy appended (83.33%)\n", - "Epoch 6298: model set back to train mode\n", - "Epoch 6298: model parameters saved\n", - "Epoch 6299 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6299: avg_loss appended (2.7778)\n", - "Epoch 6299: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6299: accuracy appended (83.33%)\n", - "Epoch 6299: model set back to train mode\n", - "Epoch 6299: model parameters saved\n", - "Epoch 6300 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6300: avg_loss appended (2.7778)\n", - "Epoch 6300: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6300: accuracy appended (83.33%)\n", - "Epoch 6300: model set back to train mode\n", - "Epoch 6300: model parameters saved\n", - "Epoch 6300/10000, Loss: 2.7778, Accuracy: 83.33%\n", - "Epoch 6301 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6301: avg_loss appended (2.7778)\n", - "Epoch 6301: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6301: accuracy appended (83.33%)\n", - "Epoch 6301: model set back to train mode\n", - "Epoch 6301: model parameters saved\n", - "Epoch 6302 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6302: avg_loss appended (2.7778)\n", - "Epoch 6302: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6302: accuracy appended (83.33%)\n", - "Epoch 6302: model set back to train mode\n", - "Epoch 6302: model parameters saved\n", - "Epoch 6303 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6303: avg_loss appended (2.7778)\n", - "Epoch 6303: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6303: accuracy appended (80.56%)\n", - "Epoch 6303: model set back to train mode\n", - "Epoch 6303: model parameters saved\n", - "Epoch 6304 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6304: avg_loss appended (2.7778)\n", - "Epoch 6304: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6304: accuracy appended (83.33%)\n", - "Epoch 6304: model set back to train mode\n", - "Epoch 6304: model parameters saved\n", - "Epoch 6305 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6305: avg_loss appended (2.7778)\n", - "Epoch 6305: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6305: accuracy appended (83.33%)\n", - "Epoch 6305: model set back to train mode\n", - "Epoch 6305: model parameters saved\n", - "Epoch 6306 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6306: avg_loss appended (2.7778)\n", - "Epoch 6306: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6306: accuracy appended (83.33%)\n", - "Epoch 6306: model set back to train mode\n", - "Epoch 6306: model parameters saved\n", - "Epoch 6307 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6307: avg_loss appended (2.7778)\n", - "Epoch 6307: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6307: accuracy appended (83.33%)\n", - "Epoch 6307: model set back to train mode\n", - "Epoch 6307: model parameters saved\n", - "Epoch 6308 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6308: avg_loss appended (2.7778)\n", - "Epoch 6308: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6308: accuracy appended (83.33%)\n", - "Epoch 6308: model set back to train mode\n", - "Epoch 6308: model parameters saved\n", - "Epoch 6309 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6309: avg_loss appended (2.7778)\n", - "Epoch 6309: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6309: accuracy appended (83.33%)\n", - "Epoch 6309: model set back to train mode\n", - "Epoch 6309: model parameters saved\n", - "Epoch 6310 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6310: avg_loss appended (2.7778)\n", - "Epoch 6310: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6310: accuracy appended (83.33%)\n", - "Epoch 6310: model set back to train mode\n", - "Epoch 6310: model parameters saved\n", - "Epoch 6311 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6311: avg_loss appended (2.7778)\n", - "Epoch 6311: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6311: accuracy appended (83.33%)\n", - "Epoch 6311: model set back to train mode\n", - "Epoch 6311: model parameters saved\n", - "Epoch 6312 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6312: avg_loss appended (2.7778)\n", - "Epoch 6312: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6312: accuracy appended (83.33%)\n", - "Epoch 6312: model set back to train mode\n", - "Epoch 6312: model parameters saved\n", - "Epoch 6313 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6313: avg_loss appended (2.7778)\n", - "Epoch 6313: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6313: accuracy appended (83.33%)\n", - "Epoch 6313: model set back to train mode\n", - "Epoch 6313: model parameters saved\n", - "Epoch 6314 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6314: avg_loss appended (2.7778)\n", - "Epoch 6314: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6314: accuracy appended (83.33%)\n", - "Epoch 6314: model set back to train mode\n", - "Epoch 6314: model parameters saved\n", - "Epoch 6315 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6315: avg_loss appended (2.7778)\n", - "Epoch 6315: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6315: accuracy appended (83.33%)\n", - "Epoch 6315: model set back to train mode\n", - "Epoch 6315: model parameters saved\n", - "Epoch 6316 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6316: avg_loss appended (2.7778)\n", - "Epoch 6316: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6316: accuracy appended (83.33%)\n", - "Epoch 6316: model set back to train mode\n", - "Epoch 6316: model parameters saved\n", - "Epoch 6317 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6317: avg_loss appended (2.7778)\n", - "Epoch 6317: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6317: accuracy appended (83.33%)\n", - "Epoch 6317: model set back to train mode\n", - "Epoch 6317: model parameters saved\n", - "Epoch 6318 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6318: avg_loss appended (2.7778)\n", - "Epoch 6318: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6318: accuracy appended (80.56%)\n", - "Epoch 6318: model set back to train mode\n", - "Epoch 6318: model parameters saved\n", - "Epoch 6319 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6319: avg_loss appended (2.7778)\n", - "Epoch 6319: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6319: accuracy appended (80.56%)\n", - "Epoch 6319: model set back to train mode\n", - "Epoch 6319: model parameters saved\n", - "Epoch 6320 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6320: avg_loss appended (2.7778)\n", - "Epoch 6320: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6320: accuracy appended (83.33%)\n", - "Epoch 6320: model set back to train mode\n", - "Epoch 6320: model parameters saved\n", - "Epoch 6321 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6321: avg_loss appended (2.7778)\n", - "Epoch 6321: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6321: accuracy appended (80.56%)\n", - "Epoch 6321: model set back to train mode\n", - "Epoch 6321: model parameters saved\n", - "Epoch 6322 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6322: avg_loss appended (2.7778)\n", - "Epoch 6322: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6322: accuracy appended (83.33%)\n", - "Epoch 6322: model set back to train mode\n", - "Epoch 6322: model parameters saved\n", - "Epoch 6323 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6323: avg_loss appended (2.7778)\n", - "Epoch 6323: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6323: accuracy appended (83.33%)\n", - "Epoch 6323: model set back to train mode\n", - "Epoch 6323: model parameters saved\n", - "Epoch 6324 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6324: avg_loss appended (2.7778)\n", - "Epoch 6324: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6324: accuracy appended (83.33%)\n", - "Epoch 6324: model set back to train mode\n", - "Epoch 6324: model parameters saved\n", - "Epoch 6325 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6325: avg_loss appended (2.7778)\n", - "Epoch 6325: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6325: accuracy appended (83.33%)\n", - "Epoch 6325: model set back to train mode\n", - "Epoch 6325: model parameters saved\n", - "Epoch 6326 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6326: avg_loss appended (2.7778)\n", - "Epoch 6326: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6326: accuracy appended (83.33%)\n", - "Epoch 6326: model set back to train mode\n", - "Epoch 6326: model parameters saved\n", - "Epoch 6327 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6327: avg_loss appended (2.7778)\n", - "Epoch 6327: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6327: accuracy appended (83.33%)\n", - "Epoch 6327: model set back to train mode\n", - "Epoch 6327: model parameters saved\n", - "Epoch 6328 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6328: avg_loss appended (2.7778)\n", - "Epoch 6328: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6328: accuracy appended (83.33%)\n", - "Epoch 6328: model set back to train mode\n", - "Epoch 6328: model parameters saved\n", - "Epoch 6329 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6329: avg_loss appended (2.7778)\n", - "Epoch 6329: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6329: accuracy appended (83.33%)\n", - "Epoch 6329: model set back to train mode\n", - "Epoch 6329: model parameters saved\n", - "Epoch 6330 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6330: avg_loss appended (2.7778)\n", - "Epoch 6330: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6330: accuracy appended (83.33%)\n", - "Epoch 6330: model set back to train mode\n", - "Epoch 6330: model parameters saved\n", - "Epoch 6331 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6331: avg_loss appended (2.7778)\n", - "Epoch 6331: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6331: accuracy appended (83.33%)\n", - "Epoch 6331: model set back to train mode\n", - "Epoch 6331: model parameters saved\n", - "Epoch 6332 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6332: avg_loss appended (2.7778)\n", - "Epoch 6332: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6332: accuracy appended (83.33%)\n", - "Epoch 6332: model set back to train mode\n", - "Epoch 6332: model parameters saved\n", - "Epoch 6333 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6333: avg_loss appended (2.7778)\n", - "Epoch 6333: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6333: accuracy appended (83.33%)\n", - "Epoch 6333: model set back to train mode\n", - "Epoch 6333: model parameters saved\n", - "Epoch 6334 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6334: avg_loss appended (2.7778)\n", - "Epoch 6334: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6334: accuracy appended (83.33%)\n", - "Epoch 6334: model set back to train mode\n", - "Epoch 6334: model parameters saved\n", - "Epoch 6335 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6335: avg_loss appended (2.7778)\n", - "Epoch 6335: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6335: accuracy appended (83.33%)\n", - "Epoch 6335: model set back to train mode\n", - "Epoch 6335: model parameters saved\n", - "Epoch 6336 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6336: avg_loss appended (2.7778)\n", - "Epoch 6336: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6336: accuracy appended (83.33%)\n", - "Epoch 6336: model set back to train mode\n", - "Epoch 6336: model parameters saved\n", - "Epoch 6337 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6337: avg_loss appended (2.7778)\n", - "Epoch 6337: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6337: accuracy appended (83.33%)\n", - "Epoch 6337: model set back to train mode\n", - "Epoch 6337: model parameters saved\n", - "Epoch 6338 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6338: avg_loss appended (2.7778)\n", - "Epoch 6338: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6338: accuracy appended (80.56%)\n", - "Epoch 6338: model set back to train mode\n", - "Epoch 6338: model parameters saved\n", - "Epoch 6339 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6339: avg_loss appended (2.7778)\n", - "Epoch 6339: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6339: accuracy appended (83.33%)\n", - "Epoch 6339: model set back to train mode\n", - "Epoch 6339: model parameters saved\n", - "Epoch 6340 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6340: avg_loss appended (2.7778)\n", - "Epoch 6340: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6340: accuracy appended (83.33%)\n", - "Epoch 6340: model set back to train mode\n", - "Epoch 6340: model parameters saved\n", - "Epoch 6341 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6341: avg_loss appended (2.7778)\n", - "Epoch 6341: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6341: accuracy appended (83.33%)\n", - "Epoch 6341: model set back to train mode\n", - "Epoch 6341: model parameters saved\n", - "Epoch 6342 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6342: avg_loss appended (2.7778)\n", - "Epoch 6342: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6342: accuracy appended (83.33%)\n", - "Epoch 6342: model set back to train mode\n", - "Epoch 6342: model parameters saved\n", - "Epoch 6343 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6343: avg_loss appended (2.7778)\n", - "Epoch 6343: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6343: accuracy appended (83.33%)\n", - "Epoch 6343: model set back to train mode\n", - "Epoch 6343: model parameters saved\n", - "Epoch 6344 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6344: avg_loss appended (2.7778)\n", - "Epoch 6344: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6344: accuracy appended (83.33%)\n", - "Epoch 6344: model set back to train mode\n", - "Epoch 6344: model parameters saved\n", - "Epoch 6345 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6345: avg_loss appended (2.7778)\n", - "Epoch 6345: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6345: accuracy appended (83.33%)\n", - "Epoch 6345: model set back to train mode\n", - "Epoch 6345: model parameters saved\n", - "Epoch 6346 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6346: avg_loss appended (2.7778)\n", - "Epoch 6346: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6346: accuracy appended (83.33%)\n", - "Epoch 6346: model set back to train mode\n", - "Epoch 6346: model parameters saved\n", - "Epoch 6347 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6347: avg_loss appended (2.7778)\n", - "Epoch 6347: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6347: accuracy appended (83.33%)\n", - "Epoch 6347: model set back to train mode\n", - "Epoch 6347: model parameters saved\n", - "Epoch 6348 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6348: avg_loss appended (2.7778)\n", - "Epoch 6348: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6348: accuracy appended (83.33%)\n", - "Epoch 6348: model set back to train mode\n", - "Epoch 6348: model parameters saved\n", - "Epoch 6349 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6349: avg_loss appended (2.7778)\n", - "Epoch 6349: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6349: accuracy appended (83.33%)\n", - "Epoch 6349: model set back to train mode\n", - "Epoch 6349: model parameters saved\n", - "Epoch 6350 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6350: avg_loss appended (2.7778)\n", - "Epoch 6350: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6350: accuracy appended (83.33%)\n", - "Epoch 6350: model set back to train mode\n", - "Epoch 6350: model parameters saved\n", - "Epoch 6351 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6351: avg_loss appended (2.7778)\n", - "Epoch 6351: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6351: accuracy appended (80.56%)\n", - "Epoch 6351: model set back to train mode\n", - "Epoch 6351: model parameters saved\n", - "Epoch 6352 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6352: avg_loss appended (2.7778)\n", - "Epoch 6352: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6352: accuracy appended (83.33%)\n", - "Epoch 6352: model set back to train mode\n", - "Epoch 6352: model parameters saved\n", - "Epoch 6353 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6353: avg_loss appended (2.7778)\n", - "Epoch 6353: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6353: accuracy appended (83.33%)\n", - "Epoch 6353: model set back to train mode\n", - "Epoch 6353: model parameters saved\n", - "Epoch 6354 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6354: avg_loss appended (2.7778)\n", - "Epoch 6354: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6354: accuracy appended (83.33%)\n", - "Epoch 6354: model set back to train mode\n", - "Epoch 6354: model parameters saved\n", - "Epoch 6355 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6355: avg_loss appended (2.7778)\n", - "Epoch 6355: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6355: accuracy appended (83.33%)\n", - "Epoch 6355: model set back to train mode\n", - "Epoch 6355: model parameters saved\n", - "Epoch 6356 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6356: avg_loss appended (2.7778)\n", - "Epoch 6356: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6356: accuracy appended (83.33%)\n", - "Epoch 6356: model set back to train mode\n", - "Epoch 6356: model parameters saved\n", - "Epoch 6357 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6357: avg_loss appended (2.7778)\n", - "Epoch 6357: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6357: accuracy appended (83.33%)\n", - "Epoch 6357: model set back to train mode\n", - "Epoch 6357: model parameters saved\n", - "Epoch 6358 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6358: avg_loss appended (2.7778)\n", - "Epoch 6358: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6358: accuracy appended (83.33%)\n", - "Epoch 6358: model set back to train mode\n", - "Epoch 6358: model parameters saved\n", - "Epoch 6359 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6359: avg_loss appended (2.7778)\n", - "Epoch 6359: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6359: accuracy appended (83.33%)\n", - "Epoch 6359: model set back to train mode\n", - "Epoch 6359: model parameters saved\n", - "Epoch 6360 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6360: avg_loss appended (2.7778)\n", - "Epoch 6360: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6360: accuracy appended (83.33%)\n", - "Epoch 6360: model set back to train mode\n", - "Epoch 6360: model parameters saved\n", - "Epoch 6361 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6361: avg_loss appended (2.7778)\n", - "Epoch 6361: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6361: accuracy appended (83.33%)\n", - "Epoch 6361: model set back to train mode\n", - "Epoch 6361: model parameters saved\n", - "Epoch 6362 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6362: avg_loss appended (2.7778)\n", - "Epoch 6362: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6362: accuracy appended (83.33%)\n", - "Epoch 6362: model set back to train mode\n", - "Epoch 6362: model parameters saved\n", - "Epoch 6363 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6363: avg_loss appended (2.7778)\n", - "Epoch 6363: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6363: accuracy appended (83.33%)\n", - "Epoch 6363: model set back to train mode\n", - "Epoch 6363: model parameters saved\n", - "Epoch 6364 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6364: avg_loss appended (2.7778)\n", - "Epoch 6364: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6364: accuracy appended (80.56%)\n", - "Epoch 6364: model set back to train mode\n", - "Epoch 6364: model parameters saved\n", - "Epoch 6365 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6365: avg_loss appended (2.7778)\n", - "Epoch 6365: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6365: accuracy appended (80.56%)\n", - "Epoch 6365: model set back to train mode\n", - "Epoch 6365: model parameters saved\n", - "Epoch 6366 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6366: avg_loss appended (2.7778)\n", - "Epoch 6366: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6366: accuracy appended (83.33%)\n", - "Epoch 6366: model set back to train mode\n", - "Epoch 6366: model parameters saved\n", - "Epoch 6367 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6367: avg_loss appended (2.7778)\n", - "Epoch 6367: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6367: accuracy appended (83.33%)\n", - "Epoch 6367: model set back to train mode\n", - "Epoch 6367: model parameters saved\n", - "Epoch 6368 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6368: avg_loss appended (2.7778)\n", - "Epoch 6368: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6368: accuracy appended (83.33%)\n", - "Epoch 6368: model set back to train mode\n", - "Epoch 6368: model parameters saved\n", - "Epoch 6369 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6369: avg_loss appended (2.7778)\n", - "Epoch 6369: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6369: accuracy appended (83.33%)\n", - "Epoch 6369: model set back to train mode\n", - "Epoch 6369: model parameters saved\n", - "Epoch 6370 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6370: avg_loss appended (2.7778)\n", - "Epoch 6370: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6370: accuracy appended (80.56%)\n", - "Epoch 6370: model set back to train mode\n", - "Epoch 6370: model parameters saved\n", - "Epoch 6371 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6371: avg_loss appended (2.7778)\n", - "Epoch 6371: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6371: accuracy appended (80.56%)\n", - "Epoch 6371: model set back to train mode\n", - "Epoch 6371: model parameters saved\n", - "Epoch 6372 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6372: avg_loss appended (2.7778)\n", - "Epoch 6372: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6372: accuracy appended (80.56%)\n", - "Epoch 6372: model set back to train mode\n", - "Epoch 6372: model parameters saved\n", - "Epoch 6373 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6373: avg_loss appended (2.7778)\n", - "Epoch 6373: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6373: accuracy appended (83.33%)\n", - "Epoch 6373: model set back to train mode\n", - "Epoch 6373: model parameters saved\n", - "Epoch 6374 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6374: avg_loss appended (2.7778)\n", - "Epoch 6374: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6374: accuracy appended (83.33%)\n", - "Epoch 6374: model set back to train mode\n", - "Epoch 6374: model parameters saved\n", - "Epoch 6375 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6375: avg_loss appended (2.7778)\n", - "Epoch 6375: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6375: accuracy appended (83.33%)\n", - "Epoch 6375: model set back to train mode\n", - "Epoch 6375: model parameters saved\n", - "Epoch 6376 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6376: avg_loss appended (2.7778)\n", - "Epoch 6376: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6376: accuracy appended (83.33%)\n", - "Epoch 6376: model set back to train mode\n", - "Epoch 6376: model parameters saved\n", - "Epoch 6377 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6377: avg_loss appended (2.7778)\n", - "Epoch 6377: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6377: accuracy appended (80.56%)\n", - "Epoch 6377: model set back to train mode\n", - "Epoch 6377: model parameters saved\n", - "Epoch 6378 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6378: avg_loss appended (2.7778)\n", - "Epoch 6378: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6378: accuracy appended (83.33%)\n", - "Epoch 6378: model set back to train mode\n", - "Epoch 6378: model parameters saved\n", - "Epoch 6379 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6379: avg_loss appended (2.7778)\n", - "Epoch 6379: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6379: accuracy appended (83.33%)\n", - "Epoch 6379: model set back to train mode\n", - "Epoch 6379: model parameters saved\n", - "Epoch 6380 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6380: avg_loss appended (2.7778)\n", - "Epoch 6380: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6380: accuracy appended (83.33%)\n", - "Epoch 6380: model set back to train mode\n", - "Epoch 6380: model parameters saved\n", - "Epoch 6381 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6381: avg_loss appended (2.7778)\n", - "Epoch 6381: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6381: accuracy appended (83.33%)\n", - "Epoch 6381: model set back to train mode\n", - "Epoch 6381: model parameters saved\n", - "Epoch 6382 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6382: avg_loss appended (2.7778)\n", - "Epoch 6382: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6382: accuracy appended (80.56%)\n", - "Epoch 6382: model set back to train mode\n", - "Epoch 6382: model parameters saved\n", - "Epoch 6383 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6383: avg_loss appended (2.7778)\n", - "Epoch 6383: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6383: accuracy appended (83.33%)\n", - "Epoch 6383: model set back to train mode\n", - "Epoch 6383: model parameters saved\n", - "Epoch 6384 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6384: avg_loss appended (2.7778)\n", - "Epoch 6384: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6384: accuracy appended (83.33%)\n", - "Epoch 6384: model set back to train mode\n", - "Epoch 6384: model parameters saved\n", - "Epoch 6385 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6385: avg_loss appended (2.7778)\n", - "Epoch 6385: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6385: accuracy appended (83.33%)\n", - "Epoch 6385: model set back to train mode\n", - "Epoch 6385: model parameters saved\n", - "Epoch 6386 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6386: avg_loss appended (2.7778)\n", - "Epoch 6386: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6386: accuracy appended (83.33%)\n", - "Epoch 6386: model set back to train mode\n", - "Epoch 6386: model parameters saved\n", - "Epoch 6387 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6387: avg_loss appended (2.7778)\n", - "Epoch 6387: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6387: accuracy appended (83.33%)\n", - "Epoch 6387: model set back to train mode\n", - "Epoch 6387: model parameters saved\n", - "Epoch 6388 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6388: avg_loss appended (2.7778)\n", - "Epoch 6388: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6388: accuracy appended (83.33%)\n", - "Epoch 6388: model set back to train mode\n", - "Epoch 6388: model parameters saved\n", - "Epoch 6389 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6389: avg_loss appended (2.7778)\n", - "Epoch 6389: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6389: accuracy appended (83.33%)\n", - "Epoch 6389: model set back to train mode\n", - "Epoch 6389: model parameters saved\n", - "Epoch 6390 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6390: avg_loss appended (2.7778)\n", - "Epoch 6390: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6390: accuracy appended (83.33%)\n", - "Epoch 6390: model set back to train mode\n", - "Epoch 6390: model parameters saved\n", - "Epoch 6391 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6391: avg_loss appended (2.7778)\n", - "Epoch 6391: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6391: accuracy appended (83.33%)\n", - "Epoch 6391: model set back to train mode\n", - "Epoch 6391: model parameters saved\n", - "Epoch 6392 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6392: avg_loss appended (2.7778)\n", - "Epoch 6392: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6392: accuracy appended (83.33%)\n", - "Epoch 6392: model set back to train mode\n", - "Epoch 6392: model parameters saved\n", - "Epoch 6393 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6393: avg_loss appended (2.7778)\n", - "Epoch 6393: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6393: accuracy appended (80.56%)\n", - "Epoch 6393: model set back to train mode\n", - "Epoch 6393: model parameters saved\n", - "Epoch 6394 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6394: avg_loss appended (2.7778)\n", - "Epoch 6394: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6394: accuracy appended (80.56%)\n", - "Epoch 6394: model set back to train mode\n", - "Epoch 6394: model parameters saved\n", - "Epoch 6395 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6395: avg_loss appended (2.7778)\n", - "Epoch 6395: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6395: accuracy appended (83.33%)\n", - "Epoch 6395: model set back to train mode\n", - "Epoch 6395: model parameters saved\n", - "Epoch 6396 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6396: avg_loss appended (2.7778)\n", - "Epoch 6396: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6396: accuracy appended (83.33%)\n", - "Epoch 6396: model set back to train mode\n", - "Epoch 6396: model parameters saved\n", - "Epoch 6397 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6397: avg_loss appended (2.7778)\n", - "Epoch 6397: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6397: accuracy appended (83.33%)\n", - "Epoch 6397: model set back to train mode\n", - "Epoch 6397: model parameters saved\n", - "Epoch 6398 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6398: avg_loss appended (2.7778)\n", - "Epoch 6398: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6398: accuracy appended (80.56%)\n", - "Epoch 6398: model set back to train mode\n", - "Epoch 6398: model parameters saved\n", - "Epoch 6399 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6399: avg_loss appended (2.7778)\n", - "Epoch 6399: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6399: accuracy appended (80.56%)\n", - "Epoch 6399: model set back to train mode\n", - "Epoch 6399: model parameters saved\n", - "Epoch 6400 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6400: avg_loss appended (2.7778)\n", - "Epoch 6400: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6400: accuracy appended (80.56%)\n", - "Epoch 6400: model set back to train mode\n", - "Epoch 6400: model parameters saved\n", - "Epoch 6400/10000, Loss: 2.7778, Accuracy: 80.56%\n", - "Epoch 6401 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6401: avg_loss appended (2.7778)\n", - "Epoch 6401: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6401: accuracy appended (83.33%)\n", - "Epoch 6401: model set back to train mode\n", - "Epoch 6401: model parameters saved\n", - "Epoch 6402 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6402: avg_loss appended (2.7778)\n", - "Epoch 6402: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6402: accuracy appended (83.33%)\n", - "Epoch 6402: model set back to train mode\n", - "Epoch 6402: model parameters saved\n", - "Epoch 6403 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6403: avg_loss appended (2.7778)\n", - "Epoch 6403: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6403: accuracy appended (83.33%)\n", - "Epoch 6403: model set back to train mode\n", - "Epoch 6403: model parameters saved\n", - "Epoch 6404 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6404: avg_loss appended (2.7778)\n", - "Epoch 6404: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6404: accuracy appended (83.33%)\n", - "Epoch 6404: model set back to train mode\n", - "Epoch 6404: model parameters saved\n", - "Epoch 6405 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6405: avg_loss appended (2.7778)\n", - "Epoch 6405: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6405: accuracy appended (83.33%)\n", - "Epoch 6405: model set back to train mode\n", - "Epoch 6405: model parameters saved\n", - "Epoch 6406 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6406: avg_loss appended (2.7778)\n", - "Epoch 6406: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6406: accuracy appended (83.33%)\n", - "Epoch 6406: model set back to train mode\n", - "Epoch 6406: model parameters saved\n", - "Epoch 6407 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6407: avg_loss appended (2.7778)\n", - "Epoch 6407: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6407: accuracy appended (83.33%)\n", - "Epoch 6407: model set back to train mode\n", - "Epoch 6407: model parameters saved\n", - "Epoch 6408 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6408: avg_loss appended (2.7778)\n", - "Epoch 6408: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6408: accuracy appended (83.33%)\n", - "Epoch 6408: model set back to train mode\n", - "Epoch 6408: model parameters saved\n", - "Epoch 6409 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6409: avg_loss appended (2.7778)\n", - "Epoch 6409: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6409: accuracy appended (83.33%)\n", - "Epoch 6409: model set back to train mode\n", - "Epoch 6409: model parameters saved\n", - "Epoch 6410 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6410: avg_loss appended (2.7778)\n", - "Epoch 6410: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6410: accuracy appended (83.33%)\n", - "Epoch 6410: model set back to train mode\n", - "Epoch 6410: model parameters saved\n", - "Epoch 6411 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6411: avg_loss appended (2.7778)\n", - "Epoch 6411: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6411: accuracy appended (83.33%)\n", - "Epoch 6411: model set back to train mode\n", - "Epoch 6411: model parameters saved\n", - "Epoch 6412 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6412: avg_loss appended (2.7778)\n", - "Epoch 6412: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6412: accuracy appended (83.33%)\n", - "Epoch 6412: model set back to train mode\n", - "Epoch 6412: model parameters saved\n", - "Epoch 6413 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6413: avg_loss appended (2.7778)\n", - "Epoch 6413: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6413: accuracy appended (80.56%)\n", - "Epoch 6413: model set back to train mode\n", - "Epoch 6413: model parameters saved\n", - "Epoch 6414 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6414: avg_loss appended (2.7778)\n", - "Epoch 6414: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6414: accuracy appended (83.33%)\n", - "Epoch 6414: model set back to train mode\n", - "Epoch 6414: model parameters saved\n", - "Epoch 6415 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6415: avg_loss appended (2.7778)\n", - "Epoch 6415: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6415: accuracy appended (83.33%)\n", - "Epoch 6415: model set back to train mode\n", - "Epoch 6415: model parameters saved\n", - "Epoch 6416 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6416: avg_loss appended (2.7778)\n", - "Epoch 6416: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6416: accuracy appended (83.33%)\n", - "Epoch 6416: model set back to train mode\n", - "Epoch 6416: model parameters saved\n", - "Epoch 6417 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6417: avg_loss appended (2.7778)\n", - "Epoch 6417: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6417: accuracy appended (83.33%)\n", - "Epoch 6417: model set back to train mode\n", - "Epoch 6417: model parameters saved\n", - "Epoch 6418 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6418: avg_loss appended (2.7778)\n", - "Epoch 6418: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6418: accuracy appended (80.56%)\n", - "Epoch 6418: model set back to train mode\n", - "Epoch 6418: model parameters saved\n", - "Epoch 6419 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6419: avg_loss appended (2.7778)\n", - "Epoch 6419: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6419: accuracy appended (83.33%)\n", - "Epoch 6419: model set back to train mode\n", - "Epoch 6419: model parameters saved\n", - "Epoch 6420 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6420: avg_loss appended (2.7778)\n", - "Epoch 6420: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6420: accuracy appended (83.33%)\n", - "Epoch 6420: model set back to train mode\n", - "Epoch 6420: model parameters saved\n", - "Epoch 6421 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6421: avg_loss appended (2.7778)\n", - "Epoch 6421: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6421: accuracy appended (80.56%)\n", - "Epoch 6421: model set back to train mode\n", - "Epoch 6421: model parameters saved\n", - "Epoch 6422 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6422: avg_loss appended (2.7778)\n", - "Epoch 6422: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6422: accuracy appended (80.56%)\n", - "Epoch 6422: model set back to train mode\n", - "Epoch 6422: model parameters saved\n", - "Epoch 6423 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6423: avg_loss appended (2.7778)\n", - "Epoch 6423: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6423: accuracy appended (80.56%)\n", - "Epoch 6423: model set back to train mode\n", - "Epoch 6423: model parameters saved\n", - "Epoch 6424 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6424: avg_loss appended (2.7778)\n", - "Epoch 6424: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6424: accuracy appended (83.33%)\n", - "Epoch 6424: model set back to train mode\n", - "Epoch 6424: model parameters saved\n", - "Epoch 6425 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6425: avg_loss appended (2.7778)\n", - "Epoch 6425: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6425: accuracy appended (83.33%)\n", - "Epoch 6425: model set back to train mode\n", - "Epoch 6425: model parameters saved\n", - "Epoch 6426 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6426: avg_loss appended (2.7778)\n", - "Epoch 6426: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6426: accuracy appended (83.33%)\n", - "Epoch 6426: model set back to train mode\n", - "Epoch 6426: model parameters saved\n", - "Epoch 6427 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6427: avg_loss appended (2.7778)\n", - "Epoch 6427: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6427: accuracy appended (83.33%)\n", - "Epoch 6427: model set back to train mode\n", - "Epoch 6427: model parameters saved\n", - "Epoch 6428 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6428: avg_loss appended (2.7778)\n", - "Epoch 6428: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6428: accuracy appended (83.33%)\n", - "Epoch 6428: model set back to train mode\n", - "Epoch 6428: model parameters saved\n", - "Epoch 6429 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6429: avg_loss appended (2.7778)\n", - "Epoch 6429: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6429: accuracy appended (83.33%)\n", - "Epoch 6429: model set back to train mode\n", - "Epoch 6429: model parameters saved\n", - "Epoch 6430 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6430: avg_loss appended (2.7778)\n", - "Epoch 6430: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6430: accuracy appended (83.33%)\n", - "Epoch 6430: model set back to train mode\n", - "Epoch 6430: model parameters saved\n", - "Epoch 6431 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6431: avg_loss appended (2.7778)\n", - "Epoch 6431: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6431: accuracy appended (83.33%)\n", - "Epoch 6431: model set back to train mode\n", - "Epoch 6431: model parameters saved\n", - "Epoch 6432 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6432: avg_loss appended (2.7778)\n", - "Epoch 6432: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6432: accuracy appended (83.33%)\n", - "Epoch 6432: model set back to train mode\n", - "Epoch 6432: model parameters saved\n", - "Epoch 6433 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6433: avg_loss appended (2.7778)\n", - "Epoch 6433: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6433: accuracy appended (80.56%)\n", - "Epoch 6433: model set back to train mode\n", - "Epoch 6433: model parameters saved\n", - "Epoch 6434 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6434: avg_loss appended (2.7778)\n", - "Epoch 6434: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6434: accuracy appended (83.33%)\n", - "Epoch 6434: model set back to train mode\n", - "Epoch 6434: model parameters saved\n", - "Epoch 6435 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6435: avg_loss appended (2.7778)\n", - "Epoch 6435: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6435: accuracy appended (80.56%)\n", - "Epoch 6435: model set back to train mode\n", - "Epoch 6435: model parameters saved\n", - "Epoch 6436 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6436: avg_loss appended (2.7778)\n", - "Epoch 6436: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6436: accuracy appended (83.33%)\n", - "Epoch 6436: model set back to train mode\n", - "Epoch 6436: model parameters saved\n", - "Epoch 6437 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6437: avg_loss appended (2.7778)\n", - "Epoch 6437: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6437: accuracy appended (83.33%)\n", - "Epoch 6437: model set back to train mode\n", - "Epoch 6437: model parameters saved\n", - "Epoch 6438 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6438: avg_loss appended (2.7778)\n", - "Epoch 6438: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6438: accuracy appended (80.56%)\n", - "Epoch 6438: model set back to train mode\n", - "Epoch 6438: model parameters saved\n", - "Epoch 6439 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6439: avg_loss appended (2.7778)\n", - "Epoch 6439: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6439: accuracy appended (80.56%)\n", - "Epoch 6439: model set back to train mode\n", - "Epoch 6439: model parameters saved\n", - "Epoch 6440 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6440: avg_loss appended (2.7778)\n", - "Epoch 6440: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6440: accuracy appended (83.33%)\n", - "Epoch 6440: model set back to train mode\n", - "Epoch 6440: model parameters saved\n", - "Epoch 6441 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6441: avg_loss appended (2.7778)\n", - "Epoch 6441: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6441: accuracy appended (83.33%)\n", - "Epoch 6441: model set back to train mode\n", - "Epoch 6441: model parameters saved\n", - "Epoch 6442 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6442: avg_loss appended (2.7778)\n", - "Epoch 6442: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6442: accuracy appended (83.33%)\n", - "Epoch 6442: model set back to train mode\n", - "Epoch 6442: model parameters saved\n", - "Epoch 6443 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6443: avg_loss appended (2.7778)\n", - "Epoch 6443: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6443: accuracy appended (80.56%)\n", - "Epoch 6443: model set back to train mode\n", - "Epoch 6443: model parameters saved\n", - "Epoch 6444 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6444: avg_loss appended (2.7778)\n", - "Epoch 6444: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6444: accuracy appended (83.33%)\n", - "Epoch 6444: model set back to train mode\n", - "Epoch 6444: model parameters saved\n", - "Epoch 6445 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6445: avg_loss appended (2.7778)\n", - "Epoch 6445: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6445: accuracy appended (83.33%)\n", - "Epoch 6445: model set back to train mode\n", - "Epoch 6445: model parameters saved\n", - "Epoch 6446 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6446: avg_loss appended (2.7778)\n", - "Epoch 6446: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6446: accuracy appended (83.33%)\n", - "Epoch 6446: model set back to train mode\n", - "Epoch 6446: model parameters saved\n", - "Epoch 6447 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6447: avg_loss appended (2.7778)\n", - "Epoch 6447: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6447: accuracy appended (83.33%)\n", - "Epoch 6447: model set back to train mode\n", - "Epoch 6447: model parameters saved\n", - "Epoch 6448 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6448: avg_loss appended (2.7778)\n", - "Epoch 6448: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6448: accuracy appended (83.33%)\n", - "Epoch 6448: model set back to train mode\n", - "Epoch 6448: model parameters saved\n", - "Epoch 6449 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6449: avg_loss appended (2.7778)\n", - "Epoch 6449: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6449: accuracy appended (83.33%)\n", - "Epoch 6449: model set back to train mode\n", - "Epoch 6449: model parameters saved\n", - "Epoch 6450 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6450: avg_loss appended (2.7778)\n", - "Epoch 6450: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6450: accuracy appended (80.56%)\n", - "Epoch 6450: model set back to train mode\n", - "Epoch 6450: model parameters saved\n", - "Epoch 6451 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6451: avg_loss appended (2.7778)\n", - "Epoch 6451: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6451: accuracy appended (83.33%)\n", - "Epoch 6451: model set back to train mode\n", - "Epoch 6451: model parameters saved\n", - "Epoch 6452 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6452: avg_loss appended (2.7778)\n", - "Epoch 6452: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6452: accuracy appended (80.56%)\n", - "Epoch 6452: model set back to train mode\n", - "Epoch 6452: model parameters saved\n", - "Epoch 6453 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6453: avg_loss appended (2.7778)\n", - "Epoch 6453: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6453: accuracy appended (80.56%)\n", - "Epoch 6453: model set back to train mode\n", - "Epoch 6453: model parameters saved\n", - "Epoch 6454 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6454: avg_loss appended (2.7778)\n", - "Epoch 6454: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6454: accuracy appended (80.56%)\n", - "Epoch 6454: model set back to train mode\n", - "Epoch 6454: model parameters saved\n", - "Epoch 6455 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6455: avg_loss appended (2.7778)\n", - "Epoch 6455: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6455: accuracy appended (83.33%)\n", - "Epoch 6455: model set back to train mode\n", - "Epoch 6455: model parameters saved\n", - "Epoch 6456 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6456: avg_loss appended (2.7778)\n", - "Epoch 6456: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6456: accuracy appended (83.33%)\n", - "Epoch 6456: model set back to train mode\n", - "Epoch 6456: model parameters saved\n", - "Epoch 6457 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6457: avg_loss appended (2.7778)\n", - "Epoch 6457: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6457: accuracy appended (83.33%)\n", - "Epoch 6457: model set back to train mode\n", - "Epoch 6457: model parameters saved\n", - "Epoch 6458 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6458: avg_loss appended (2.7778)\n", - "Epoch 6458: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6458: accuracy appended (83.33%)\n", - "Epoch 6458: model set back to train mode\n", - "Epoch 6458: model parameters saved\n", - "Epoch 6459 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6459: avg_loss appended (2.7778)\n", - "Epoch 6459: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6459: accuracy appended (83.33%)\n", - "Epoch 6459: model set back to train mode\n", - "Epoch 6459: model parameters saved\n", - "Epoch 6460 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6460: avg_loss appended (2.7778)\n", - "Epoch 6460: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6460: accuracy appended (83.33%)\n", - "Epoch 6460: model set back to train mode\n", - "Epoch 6460: model parameters saved\n", - "Epoch 6461 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6461: avg_loss appended (2.7778)\n", - "Epoch 6461: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6461: accuracy appended (80.56%)\n", - "Epoch 6461: model set back to train mode\n", - "Epoch 6461: model parameters saved\n", - "Epoch 6462 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6462: avg_loss appended (2.7778)\n", - "Epoch 6462: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6462: accuracy appended (83.33%)\n", - "Epoch 6462: model set back to train mode\n", - "Epoch 6462: model parameters saved\n", - "Epoch 6463 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6463: avg_loss appended (2.7778)\n", - "Epoch 6463: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6463: accuracy appended (80.56%)\n", - "Epoch 6463: model set back to train mode\n", - "Epoch 6463: model parameters saved\n", - "Epoch 6464 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6464: avg_loss appended (2.7778)\n", - "Epoch 6464: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6464: accuracy appended (83.33%)\n", - "Epoch 6464: model set back to train mode\n", - "Epoch 6464: model parameters saved\n", - "Epoch 6465 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6465: avg_loss appended (2.7778)\n", - "Epoch 6465: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6465: accuracy appended (80.56%)\n", - "Epoch 6465: model set back to train mode\n", - "Epoch 6465: model parameters saved\n", - "Epoch 6466 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6466: avg_loss appended (2.7778)\n", - "Epoch 6466: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6466: accuracy appended (80.56%)\n", - "Epoch 6466: model set back to train mode\n", - "Epoch 6466: model parameters saved\n", - "Epoch 6467 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6467: avg_loss appended (2.7778)\n", - "Epoch 6467: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6467: accuracy appended (83.33%)\n", - "Epoch 6467: model set back to train mode\n", - "Epoch 6467: model parameters saved\n", - "Epoch 6468 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6468: avg_loss appended (2.7778)\n", - "Epoch 6468: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6468: accuracy appended (80.56%)\n", - "Epoch 6468: model set back to train mode\n", - "Epoch 6468: model parameters saved\n", - "Epoch 6469 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6469: avg_loss appended (2.7778)\n", - "Epoch 6469: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6469: accuracy appended (80.56%)\n", - "Epoch 6469: model set back to train mode\n", - "Epoch 6469: model parameters saved\n", - "Epoch 6470 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6470: avg_loss appended (2.7778)\n", - "Epoch 6470: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6470: accuracy appended (80.56%)\n", - "Epoch 6470: model set back to train mode\n", - "Epoch 6470: model parameters saved\n", - "Epoch 6471 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6471: avg_loss appended (2.7778)\n", - "Epoch 6471: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6471: accuracy appended (80.56%)\n", - "Epoch 6471: model set back to train mode\n", - "Epoch 6471: model parameters saved\n", - "Epoch 6472 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6472: avg_loss appended (2.7778)\n", - "Epoch 6472: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6472: accuracy appended (80.56%)\n", - "Epoch 6472: model set back to train mode\n", - "Epoch 6472: model parameters saved\n", - "Epoch 6473 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6473: avg_loss appended (2.7778)\n", - "Epoch 6473: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6473: accuracy appended (80.56%)\n", - "Epoch 6473: model set back to train mode\n", - "Epoch 6473: model parameters saved\n", - "Epoch 6474 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6474: avg_loss appended (2.7778)\n", - "Epoch 6474: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6474: accuracy appended (80.56%)\n", - "Epoch 6474: model set back to train mode\n", - "Epoch 6474: model parameters saved\n", - "Epoch 6475 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6475: avg_loss appended (2.7778)\n", - "Epoch 6475: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6475: accuracy appended (80.56%)\n", - "Epoch 6475: model set back to train mode\n", - "Epoch 6475: model parameters saved\n", - "Epoch 6476 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6476: avg_loss appended (2.7778)\n", - "Epoch 6476: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6476: accuracy appended (80.56%)\n", - "Epoch 6476: model set back to train mode\n", - "Epoch 6476: model parameters saved\n", - "Epoch 6477 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6477: avg_loss appended (2.7778)\n", - "Epoch 6477: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6477: accuracy appended (83.33%)\n", - "Epoch 6477: model set back to train mode\n", - "Epoch 6477: model parameters saved\n", - "Epoch 6478 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6478: avg_loss appended (2.7778)\n", - "Epoch 6478: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6478: accuracy appended (83.33%)\n", - "Epoch 6478: model set back to train mode\n", - "Epoch 6478: model parameters saved\n", - "Epoch 6479 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6479: avg_loss appended (2.7778)\n", - "Epoch 6479: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6479: accuracy appended (80.56%)\n", - "Epoch 6479: model set back to train mode\n", - "Epoch 6479: model parameters saved\n", - "Epoch 6480 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6480: avg_loss appended (2.7778)\n", - "Epoch 6480: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6480: accuracy appended (83.33%)\n", - "Epoch 6480: model set back to train mode\n", - "Epoch 6480: model parameters saved\n", - "Epoch 6481 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6481: avg_loss appended (2.7778)\n", - "Epoch 6481: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6481: accuracy appended (80.56%)\n", - "Epoch 6481: model set back to train mode\n", - "Epoch 6481: model parameters saved\n", - "Epoch 6482 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6482: avg_loss appended (2.7778)\n", - "Epoch 6482: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6482: accuracy appended (80.56%)\n", - "Epoch 6482: model set back to train mode\n", - "Epoch 6482: model parameters saved\n", - "Epoch 6483 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6483: avg_loss appended (2.7778)\n", - "Epoch 6483: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6483: accuracy appended (83.33%)\n", - "Epoch 6483: model set back to train mode\n", - "Epoch 6483: model parameters saved\n", - "Epoch 6484 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6484: avg_loss appended (2.7778)\n", - "Epoch 6484: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6484: accuracy appended (83.33%)\n", - "Epoch 6484: model set back to train mode\n", - "Epoch 6484: model parameters saved\n", - "Epoch 6485 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6485: avg_loss appended (2.7778)\n", - "Epoch 6485: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6485: accuracy appended (83.33%)\n", - "Epoch 6485: model set back to train mode\n", - "Epoch 6485: model parameters saved\n", - "Epoch 6486 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6486: avg_loss appended (2.7778)\n", - "Epoch 6486: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6486: accuracy appended (83.33%)\n", - "Epoch 6486: model set back to train mode\n", - "Epoch 6486: model parameters saved\n", - "Epoch 6487 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6487: avg_loss appended (2.7778)\n", - "Epoch 6487: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6487: accuracy appended (80.56%)\n", - "Epoch 6487: model set back to train mode\n", - "Epoch 6487: model parameters saved\n", - "Epoch 6488 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6488: avg_loss appended (2.7778)\n", - "Epoch 6488: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6488: accuracy appended (80.56%)\n", - "Epoch 6488: model set back to train mode\n", - "Epoch 6488: model parameters saved\n", - "Epoch 6489 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6489: avg_loss appended (2.7778)\n", - "Epoch 6489: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6489: accuracy appended (80.56%)\n", - "Epoch 6489: model set back to train mode\n", - "Epoch 6489: model parameters saved\n", - "Epoch 6490 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6490: avg_loss appended (2.7778)\n", - "Epoch 6490: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6490: accuracy appended (80.56%)\n", - "Epoch 6490: model set back to train mode\n", - "Epoch 6490: model parameters saved\n", - "Epoch 6491 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6491: avg_loss appended (2.7778)\n", - "Epoch 6491: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6491: accuracy appended (80.56%)\n", - "Epoch 6491: model set back to train mode\n", - "Epoch 6491: model parameters saved\n", - "Epoch 6492 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6492: avg_loss appended (2.7778)\n", - "Epoch 6492: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6492: accuracy appended (80.56%)\n", - "Epoch 6492: model set back to train mode\n", - "Epoch 6492: model parameters saved\n", - "Epoch 6493 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6493: avg_loss appended (2.7778)\n", - "Epoch 6493: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6493: accuracy appended (83.33%)\n", - "Epoch 6493: model set back to train mode\n", - "Epoch 6493: model parameters saved\n", - "Epoch 6494 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6494: avg_loss appended (2.7778)\n", - "Epoch 6494: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6494: accuracy appended (83.33%)\n", - "Epoch 6494: model set back to train mode\n", - "Epoch 6494: model parameters saved\n", - "Epoch 6495 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6495: avg_loss appended (2.7778)\n", - "Epoch 6495: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6495: accuracy appended (83.33%)\n", - "Epoch 6495: model set back to train mode\n", - "Epoch 6495: model parameters saved\n", - "Epoch 6496 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6496: avg_loss appended (2.7778)\n", - "Epoch 6496: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6496: accuracy appended (80.56%)\n", - "Epoch 6496: model set back to train mode\n", - "Epoch 6496: model parameters saved\n", - "Epoch 6497 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6497: avg_loss appended (2.7778)\n", - "Epoch 6497: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6497: accuracy appended (80.56%)\n", - "Epoch 6497: model set back to train mode\n", - "Epoch 6497: model parameters saved\n", - "Epoch 6498 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6498: avg_loss appended (2.7778)\n", - "Epoch 6498: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6498: accuracy appended (80.56%)\n", - "Epoch 6498: model set back to train mode\n", - "Epoch 6498: model parameters saved\n", - "Epoch 6499 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6499: avg_loss appended (2.7778)\n", - "Epoch 6499: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6499: accuracy appended (80.56%)\n", - "Epoch 6499: model set back to train mode\n", - "Epoch 6499: model parameters saved\n", - "Epoch 6500 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6500: avg_loss appended (2.7778)\n", - "Epoch 6500: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6500: accuracy appended (80.56%)\n", - "Epoch 6500: model set back to train mode\n", - "Epoch 6500: model parameters saved\n", - "Epoch 6500/10000, Loss: 2.7778, Accuracy: 80.56%\n", - "Epoch 6501 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6501: avg_loss appended (2.7778)\n", - "Epoch 6501: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6501: accuracy appended (80.56%)\n", - "Epoch 6501: model set back to train mode\n", - "Epoch 6501: model parameters saved\n", - "Epoch 6502 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6502: avg_loss appended (2.7778)\n", - "Epoch 6502: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6502: accuracy appended (80.56%)\n", - "Epoch 6502: model set back to train mode\n", - "Epoch 6502: model parameters saved\n", - "Epoch 6503 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6503: avg_loss appended (2.7778)\n", - "Epoch 6503: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6503: accuracy appended (83.33%)\n", - "Epoch 6503: model set back to train mode\n", - "Epoch 6503: model parameters saved\n", - "Epoch 6504 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6504: avg_loss appended (2.7778)\n", - "Epoch 6504: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6504: accuracy appended (80.56%)\n", - "Epoch 6504: model set back to train mode\n", - "Epoch 6504: model parameters saved\n", - "Epoch 6505 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6505: avg_loss appended (2.7778)\n", - "Epoch 6505: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6505: accuracy appended (80.56%)\n", - "Epoch 6505: model set back to train mode\n", - "Epoch 6505: model parameters saved\n", - "Epoch 6506 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6506: avg_loss appended (2.7778)\n", - "Epoch 6506: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6506: accuracy appended (80.56%)\n", - "Epoch 6506: model set back to train mode\n", - "Epoch 6506: model parameters saved\n", - "Epoch 6507 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6507: avg_loss appended (2.7778)\n", - "Epoch 6507: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6507: accuracy appended (80.56%)\n", - "Epoch 6507: model set back to train mode\n", - "Epoch 6507: model parameters saved\n", - "Epoch 6508 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6508: avg_loss appended (2.7778)\n", - "Epoch 6508: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6508: accuracy appended (80.56%)\n", - "Epoch 6508: model set back to train mode\n", - "Epoch 6508: model parameters saved\n", - "Epoch 6509 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6509: avg_loss appended (2.7778)\n", - "Epoch 6509: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6509: accuracy appended (83.33%)\n", - "Epoch 6509: model set back to train mode\n", - "Epoch 6509: model parameters saved\n", - "Epoch 6510 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6510: avg_loss appended (2.7778)\n", - "Epoch 6510: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6510: accuracy appended (80.56%)\n", - "Epoch 6510: model set back to train mode\n", - "Epoch 6510: model parameters saved\n", - "Epoch 6511 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6511: avg_loss appended (2.7778)\n", - "Epoch 6511: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6511: accuracy appended (80.56%)\n", - "Epoch 6511: model set back to train mode\n", - "Epoch 6511: model parameters saved\n", - "Epoch 6512 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6512: avg_loss appended (2.7778)\n", - "Epoch 6512: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6512: accuracy appended (80.56%)\n", - "Epoch 6512: model set back to train mode\n", - "Epoch 6512: model parameters saved\n", - "Epoch 6513 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6513: avg_loss appended (2.7778)\n", - "Epoch 6513: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6513: accuracy appended (80.56%)\n", - "Epoch 6513: model set back to train mode\n", - "Epoch 6513: model parameters saved\n", - "Epoch 6514 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6514: avg_loss appended (2.7778)\n", - "Epoch 6514: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6514: accuracy appended (83.33%)\n", - "Epoch 6514: model set back to train mode\n", - "Epoch 6514: model parameters saved\n", - "Epoch 6515 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6515: avg_loss appended (2.7778)\n", - "Epoch 6515: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6515: accuracy appended (83.33%)\n", - "Epoch 6515: model set back to train mode\n", - "Epoch 6515: model parameters saved\n", - "Epoch 6516 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6516: avg_loss appended (2.7778)\n", - "Epoch 6516: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6516: accuracy appended (80.56%)\n", - "Epoch 6516: model set back to train mode\n", - "Epoch 6516: model parameters saved\n", - "Epoch 6517 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6517: avg_loss appended (2.7778)\n", - "Epoch 6517: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6517: accuracy appended (80.56%)\n", - "Epoch 6517: model set back to train mode\n", - "Epoch 6517: model parameters saved\n", - "Epoch 6518 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6518: avg_loss appended (2.7778)\n", - "Epoch 6518: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6518: accuracy appended (80.56%)\n", - "Epoch 6518: model set back to train mode\n", - "Epoch 6518: model parameters saved\n", - "Epoch 6519 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6519: avg_loss appended (2.7778)\n", - "Epoch 6519: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6519: accuracy appended (80.56%)\n", - "Epoch 6519: model set back to train mode\n", - "Epoch 6519: model parameters saved\n", - "Epoch 6520 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6520: avg_loss appended (2.7778)\n", - "Epoch 6520: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6520: accuracy appended (83.33%)\n", - "Epoch 6520: model set back to train mode\n", - "Epoch 6520: model parameters saved\n", - "Epoch 6521 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6521: avg_loss appended (2.7778)\n", - "Epoch 6521: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6521: accuracy appended (83.33%)\n", - "Epoch 6521: model set back to train mode\n", - "Epoch 6521: model parameters saved\n", - "Epoch 6522 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6522: avg_loss appended (2.7778)\n", - "Epoch 6522: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6522: accuracy appended (80.56%)\n", - "Epoch 6522: model set back to train mode\n", - "Epoch 6522: model parameters saved\n", - "Epoch 6523 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6523: avg_loss appended (2.7778)\n", - "Epoch 6523: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6523: accuracy appended (80.56%)\n", - "Epoch 6523: model set back to train mode\n", - "Epoch 6523: model parameters saved\n", - "Epoch 6524 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6524: avg_loss appended (2.7778)\n", - "Epoch 6524: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6524: accuracy appended (80.56%)\n", - "Epoch 6524: model set back to train mode\n", - "Epoch 6524: model parameters saved\n", - "Epoch 6525 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6525: avg_loss appended (2.7778)\n", - "Epoch 6525: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6525: accuracy appended (80.56%)\n", - "Epoch 6525: model set back to train mode\n", - "Epoch 6525: model parameters saved\n", - "Epoch 6526 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6526: avg_loss appended (2.7778)\n", - "Epoch 6526: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6526: accuracy appended (80.56%)\n", - "Epoch 6526: model set back to train mode\n", - "Epoch 6526: model parameters saved\n", - "Epoch 6527 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6527: avg_loss appended (2.7778)\n", - "Epoch 6527: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6527: accuracy appended (80.56%)\n", - "Epoch 6527: model set back to train mode\n", - "Epoch 6527: model parameters saved\n", - "Epoch 6528 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6528: avg_loss appended (2.7778)\n", - "Epoch 6528: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6528: accuracy appended (80.56%)\n", - "Epoch 6528: model set back to train mode\n", - "Epoch 6528: model parameters saved\n", - "Epoch 6529 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6529: avg_loss appended (2.7778)\n", - "Epoch 6529: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6529: accuracy appended (80.56%)\n", - "Epoch 6529: model set back to train mode\n", - "Epoch 6529: model parameters saved\n", - "Epoch 6530 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6530: avg_loss appended (2.7778)\n", - "Epoch 6530: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6530: accuracy appended (80.56%)\n", - "Epoch 6530: model set back to train mode\n", - "Epoch 6530: model parameters saved\n", - "Epoch 6531 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6531: avg_loss appended (2.7778)\n", - "Epoch 6531: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6531: accuracy appended (80.56%)\n", - "Epoch 6531: model set back to train mode\n", - "Epoch 6531: model parameters saved\n", - "Epoch 6532 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6532: avg_loss appended (2.7778)\n", - "Epoch 6532: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6532: accuracy appended (80.56%)\n", - "Epoch 6532: model set back to train mode\n", - "Epoch 6532: model parameters saved\n", - "Epoch 6533 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6533: avg_loss appended (2.7778)\n", - "Epoch 6533: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6533: accuracy appended (80.56%)\n", - "Epoch 6533: model set back to train mode\n", - "Epoch 6533: model parameters saved\n", - "Epoch 6534 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6534: avg_loss appended (2.7778)\n", - "Epoch 6534: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6534: accuracy appended (80.56%)\n", - "Epoch 6534: model set back to train mode\n", - "Epoch 6534: model parameters saved\n", - "Epoch 6535 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6535: avg_loss appended (2.7778)\n", - "Epoch 6535: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6535: accuracy appended (80.56%)\n", - "Epoch 6535: model set back to train mode\n", - "Epoch 6535: model parameters saved\n", - "Epoch 6536 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6536: avg_loss appended (2.7778)\n", - "Epoch 6536: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6536: accuracy appended (80.56%)\n", - "Epoch 6536: model set back to train mode\n", - "Epoch 6536: model parameters saved\n", - "Epoch 6537 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6537: avg_loss appended (2.7778)\n", - "Epoch 6537: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6537: accuracy appended (80.56%)\n", - "Epoch 6537: model set back to train mode\n", - "Epoch 6537: model parameters saved\n", - "Epoch 6538 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6538: avg_loss appended (2.7778)\n", - "Epoch 6538: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6538: accuracy appended (80.56%)\n", - "Epoch 6538: model set back to train mode\n", - "Epoch 6538: model parameters saved\n", - "Epoch 6539 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6539: avg_loss appended (2.7778)\n", - "Epoch 6539: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6539: accuracy appended (83.33%)\n", - "Epoch 6539: model set back to train mode\n", - "Epoch 6539: model parameters saved\n", - "Epoch 6540 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6540: avg_loss appended (2.7778)\n", - "Epoch 6540: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6540: accuracy appended (80.56%)\n", - "Epoch 6540: model set back to train mode\n", - "Epoch 6540: model parameters saved\n", - "Epoch 6541 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6541: avg_loss appended (2.7778)\n", - "Epoch 6541: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6541: accuracy appended (80.56%)\n", - "Epoch 6541: model set back to train mode\n", - "Epoch 6541: model parameters saved\n", - "Epoch 6542 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6542: avg_loss appended (2.7778)\n", - "Epoch 6542: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6542: accuracy appended (80.56%)\n", - "Epoch 6542: model set back to train mode\n", - "Epoch 6542: model parameters saved\n", - "Epoch 6543 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6543: avg_loss appended (2.7778)\n", - "Epoch 6543: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6543: accuracy appended (80.56%)\n", - "Epoch 6543: model set back to train mode\n", - "Epoch 6543: model parameters saved\n", - "Epoch 6544 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6544: avg_loss appended (2.7778)\n", - "Epoch 6544: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6544: accuracy appended (83.33%)\n", - "Epoch 6544: model set back to train mode\n", - "Epoch 6544: model parameters saved\n", - "Epoch 6545 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6545: avg_loss appended (2.7778)\n", - "Epoch 6545: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6545: accuracy appended (83.33%)\n", - "Epoch 6545: model set back to train mode\n", - "Epoch 6545: model parameters saved\n", - "Epoch 6546 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6546: avg_loss appended (2.7778)\n", - "Epoch 6546: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6546: accuracy appended (83.33%)\n", - "Epoch 6546: model set back to train mode\n", - "Epoch 6546: model parameters saved\n", - "Epoch 6547 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6547: avg_loss appended (2.7778)\n", - "Epoch 6547: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6547: accuracy appended (80.56%)\n", - "Epoch 6547: model set back to train mode\n", - "Epoch 6547: model parameters saved\n", - "Epoch 6548 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6548: avg_loss appended (2.7778)\n", - "Epoch 6548: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6548: accuracy appended (80.56%)\n", - "Epoch 6548: model set back to train mode\n", - "Epoch 6548: model parameters saved\n", - "Epoch 6549 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6549: avg_loss appended (2.7778)\n", - "Epoch 6549: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6549: accuracy appended (80.56%)\n", - "Epoch 6549: model set back to train mode\n", - "Epoch 6549: model parameters saved\n", - "Epoch 6550 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6550: avg_loss appended (2.7778)\n", - "Epoch 6550: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6550: accuracy appended (80.56%)\n", - "Epoch 6550: model set back to train mode\n", - "Epoch 6550: model parameters saved\n", - "Epoch 6551 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6551: avg_loss appended (2.7778)\n", - "Epoch 6551: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6551: accuracy appended (80.56%)\n", - "Epoch 6551: model set back to train mode\n", - "Epoch 6551: model parameters saved\n", - "Epoch 6552 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6552: avg_loss appended (2.7778)\n", - "Epoch 6552: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6552: accuracy appended (80.56%)\n", - "Epoch 6552: model set back to train mode\n", - "Epoch 6552: model parameters saved\n", - "Epoch 6553 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6553: avg_loss appended (2.7778)\n", - "Epoch 6553: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6553: accuracy appended (80.56%)\n", - "Epoch 6553: model set back to train mode\n", - "Epoch 6553: model parameters saved\n", - "Epoch 6554 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6554: avg_loss appended (2.7778)\n", - "Epoch 6554: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6554: accuracy appended (83.33%)\n", - "Epoch 6554: model set back to train mode\n", - "Epoch 6554: model parameters saved\n", - "Epoch 6555 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6555: avg_loss appended (2.7778)\n", - "Epoch 6555: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6555: accuracy appended (83.33%)\n", - "Epoch 6555: model set back to train mode\n", - "Epoch 6555: model parameters saved\n", - "Epoch 6556 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6556: avg_loss appended (2.7778)\n", - "Epoch 6556: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6556: accuracy appended (80.56%)\n", - "Epoch 6556: model set back to train mode\n", - "Epoch 6556: model parameters saved\n", - "Epoch 6557 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6557: avg_loss appended (2.7778)\n", - "Epoch 6557: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6557: accuracy appended (80.56%)\n", - "Epoch 6557: model set back to train mode\n", - "Epoch 6557: model parameters saved\n", - "Epoch 6558 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6558: avg_loss appended (2.7778)\n", - "Epoch 6558: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6558: accuracy appended (83.33%)\n", - "Epoch 6558: model set back to train mode\n", - "Epoch 6558: model parameters saved\n", - "Epoch 6559 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6559: avg_loss appended (2.7778)\n", - "Epoch 6559: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6559: accuracy appended (80.56%)\n", - "Epoch 6559: model set back to train mode\n", - "Epoch 6559: model parameters saved\n", - "Epoch 6560 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6560: avg_loss appended (2.7778)\n", - "Epoch 6560: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6560: accuracy appended (80.56%)\n", - "Epoch 6560: model set back to train mode\n", - "Epoch 6560: model parameters saved\n", - "Epoch 6561 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6561: avg_loss appended (2.7778)\n", - "Epoch 6561: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6561: accuracy appended (83.33%)\n", - "Epoch 6561: model set back to train mode\n", - "Epoch 6561: model parameters saved\n", - "Epoch 6562 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6562: avg_loss appended (2.7778)\n", - "Epoch 6562: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6562: accuracy appended (83.33%)\n", - "Epoch 6562: model set back to train mode\n", - "Epoch 6562: model parameters saved\n", - "Epoch 6563 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6563: avg_loss appended (2.7778)\n", - "Epoch 6563: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6563: accuracy appended (80.56%)\n", - "Epoch 6563: model set back to train mode\n", - "Epoch 6563: model parameters saved\n", - "Epoch 6564 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6564: avg_loss appended (2.7778)\n", - "Epoch 6564: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6564: accuracy appended (80.56%)\n", - "Epoch 6564: model set back to train mode\n", - "Epoch 6564: model parameters saved\n", - "Epoch 6565 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6565: avg_loss appended (2.7778)\n", - "Epoch 6565: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6565: accuracy appended (80.56%)\n", - "Epoch 6565: model set back to train mode\n", - "Epoch 6565: model parameters saved\n", - "Epoch 6566 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6566: avg_loss appended (2.7778)\n", - "Epoch 6566: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6566: accuracy appended (80.56%)\n", - "Epoch 6566: model set back to train mode\n", - "Epoch 6566: model parameters saved\n", - "Epoch 6567 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6567: avg_loss appended (2.7778)\n", - "Epoch 6567: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6567: accuracy appended (80.56%)\n", - "Epoch 6567: model set back to train mode\n", - "Epoch 6567: model parameters saved\n", - "Epoch 6568 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6568: avg_loss appended (2.7778)\n", - "Epoch 6568: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6568: accuracy appended (80.56%)\n", - "Epoch 6568: model set back to train mode\n", - "Epoch 6568: model parameters saved\n", - "Epoch 6569 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6569: avg_loss appended (2.7778)\n", - "Epoch 6569: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6569: accuracy appended (80.56%)\n", - "Epoch 6569: model set back to train mode\n", - "Epoch 6569: model parameters saved\n", - "Epoch 6570 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6570: avg_loss appended (2.7778)\n", - "Epoch 6570: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6570: accuracy appended (83.33%)\n", - "Epoch 6570: model set back to train mode\n", - "Epoch 6570: model parameters saved\n", - "Epoch 6571 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6571: avg_loss appended (2.7778)\n", - "Epoch 6571: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6571: accuracy appended (83.33%)\n", - "Epoch 6571: model set back to train mode\n", - "Epoch 6571: model parameters saved\n", - "Epoch 6572 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6572: avg_loss appended (2.7778)\n", - "Epoch 6572: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6572: accuracy appended (83.33%)\n", - "Epoch 6572: model set back to train mode\n", - "Epoch 6572: model parameters saved\n", - "Epoch 6573 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6573: avg_loss appended (2.7778)\n", - "Epoch 6573: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6573: accuracy appended (80.56%)\n", - "Epoch 6573: model set back to train mode\n", - "Epoch 6573: model parameters saved\n", - "Epoch 6574 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6574: avg_loss appended (2.7778)\n", - "Epoch 6574: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6574: accuracy appended (80.56%)\n", - "Epoch 6574: model set back to train mode\n", - "Epoch 6574: model parameters saved\n", - "Epoch 6575 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6575: avg_loss appended (2.7778)\n", - "Epoch 6575: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6575: accuracy appended (80.56%)\n", - "Epoch 6575: model set back to train mode\n", - "Epoch 6575: model parameters saved\n", - "Epoch 6576 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6576: avg_loss appended (2.7778)\n", - "Epoch 6576: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6576: accuracy appended (80.56%)\n", - "Epoch 6576: model set back to train mode\n", - "Epoch 6576: model parameters saved\n", - "Epoch 6577 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6577: avg_loss appended (2.7778)\n", - "Epoch 6577: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6577: accuracy appended (80.56%)\n", - "Epoch 6577: model set back to train mode\n", - "Epoch 6577: model parameters saved\n", - "Epoch 6578 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6578: avg_loss appended (2.7778)\n", - "Epoch 6578: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6578: accuracy appended (80.56%)\n", - "Epoch 6578: model set back to train mode\n", - "Epoch 6578: model parameters saved\n", - "Epoch 6579 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6579: avg_loss appended (2.7778)\n", - "Epoch 6579: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6579: accuracy appended (80.56%)\n", - "Epoch 6579: model set back to train mode\n", - "Epoch 6579: model parameters saved\n", - "Epoch 6580 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6580: avg_loss appended (2.7778)\n", - "Epoch 6580: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6580: accuracy appended (80.56%)\n", - "Epoch 6580: model set back to train mode\n", - "Epoch 6580: model parameters saved\n", - "Epoch 6581 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6581: avg_loss appended (2.7778)\n", - "Epoch 6581: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6581: accuracy appended (80.56%)\n", - "Epoch 6581: model set back to train mode\n", - "Epoch 6581: model parameters saved\n", - "Epoch 6582 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6582: avg_loss appended (2.7778)\n", - "Epoch 6582: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6582: accuracy appended (80.56%)\n", - "Epoch 6582: model set back to train mode\n", - "Epoch 6582: model parameters saved\n", - "Epoch 6583 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6583: avg_loss appended (2.7778)\n", - "Epoch 6583: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6583: accuracy appended (80.56%)\n", - "Epoch 6583: model set back to train mode\n", - "Epoch 6583: model parameters saved\n", - "Epoch 6584 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6584: avg_loss appended (2.7778)\n", - "Epoch 6584: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6584: accuracy appended (80.56%)\n", - "Epoch 6584: model set back to train mode\n", - "Epoch 6584: model parameters saved\n", - "Epoch 6585 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6585: avg_loss appended (2.7778)\n", - "Epoch 6585: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6585: accuracy appended (80.56%)\n", - "Epoch 6585: model set back to train mode\n", - "Epoch 6585: model parameters saved\n", - "Epoch 6586 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6586: avg_loss appended (2.7778)\n", - "Epoch 6586: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6586: accuracy appended (80.56%)\n", - "Epoch 6586: model set back to train mode\n", - "Epoch 6586: model parameters saved\n", - "Epoch 6587 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6587: avg_loss appended (2.7778)\n", - "Epoch 6587: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6587: accuracy appended (83.33%)\n", - "Epoch 6587: model set back to train mode\n", - "Epoch 6587: model parameters saved\n", - "Epoch 6588 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6588: avg_loss appended (2.7778)\n", - "Epoch 6588: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6588: accuracy appended (83.33%)\n", - "Epoch 6588: model set back to train mode\n", - "Epoch 6588: model parameters saved\n", - "Epoch 6589 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6589: avg_loss appended (2.7778)\n", - "Epoch 6589: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6589: accuracy appended (80.56%)\n", - "Epoch 6589: model set back to train mode\n", - "Epoch 6589: model parameters saved\n", - "Epoch 6590 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6590: avg_loss appended (2.7778)\n", - "Epoch 6590: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6590: accuracy appended (80.56%)\n", - "Epoch 6590: model set back to train mode\n", - "Epoch 6590: model parameters saved\n", - "Epoch 6591 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6591: avg_loss appended (2.7778)\n", - "Epoch 6591: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6591: accuracy appended (80.56%)\n", - "Epoch 6591: model set back to train mode\n", - "Epoch 6591: model parameters saved\n", - "Epoch 6592 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6592: avg_loss appended (2.7778)\n", - "Epoch 6592: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6592: accuracy appended (80.56%)\n", - "Epoch 6592: model set back to train mode\n", - "Epoch 6592: model parameters saved\n", - "Epoch 6593 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6593: avg_loss appended (2.7778)\n", - "Epoch 6593: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6593: accuracy appended (83.33%)\n", - "Epoch 6593: model set back to train mode\n", - "Epoch 6593: model parameters saved\n", - "Epoch 6594 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6594: avg_loss appended (2.7778)\n", - "Epoch 6594: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6594: accuracy appended (83.33%)\n", - "Epoch 6594: model set back to train mode\n", - "Epoch 6594: model parameters saved\n", - "Epoch 6595 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6595: avg_loss appended (2.7778)\n", - "Epoch 6595: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6595: accuracy appended (83.33%)\n", - "Epoch 6595: model set back to train mode\n", - "Epoch 6595: model parameters saved\n", - "Epoch 6596 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6596: avg_loss appended (2.7778)\n", - "Epoch 6596: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6596: accuracy appended (80.56%)\n", - "Epoch 6596: model set back to train mode\n", - "Epoch 6596: model parameters saved\n", - "Epoch 6597 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6597: avg_loss appended (2.7778)\n", - "Epoch 6597: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6597: accuracy appended (80.56%)\n", - "Epoch 6597: model set back to train mode\n", - "Epoch 6597: model parameters saved\n", - "Epoch 6598 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6598: avg_loss appended (2.7778)\n", - "Epoch 6598: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6598: accuracy appended (80.56%)\n", - "Epoch 6598: model set back to train mode\n", - "Epoch 6598: model parameters saved\n", - "Epoch 6599 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6599: avg_loss appended (2.7778)\n", - "Epoch 6599: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6599: accuracy appended (80.56%)\n", - "Epoch 6599: model set back to train mode\n", - "Epoch 6599: model parameters saved\n", - "Epoch 6600 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6600: avg_loss appended (2.7778)\n", - "Epoch 6600: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6600: accuracy appended (80.56%)\n", - "Epoch 6600: model set back to train mode\n", - "Epoch 6600: model parameters saved\n", - "Epoch 6600/10000, Loss: 2.7778, Accuracy: 80.56%\n", - "Epoch 6601 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6601: avg_loss appended (2.7778)\n", - "Epoch 6601: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6601: accuracy appended (80.56%)\n", - "Epoch 6601: model set back to train mode\n", - "Epoch 6601: model parameters saved\n", - "Epoch 6602 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6602: avg_loss appended (2.7778)\n", - "Epoch 6602: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6602: accuracy appended (80.56%)\n", - "Epoch 6602: model set back to train mode\n", - "Epoch 6602: model parameters saved\n", - "Epoch 6603 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6603: avg_loss appended (2.7778)\n", - "Epoch 6603: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6603: accuracy appended (80.56%)\n", - "Epoch 6603: model set back to train mode\n", - "Epoch 6603: model parameters saved\n", - "Epoch 6604 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6604: avg_loss appended (2.7778)\n", - "Epoch 6604: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6604: accuracy appended (83.33%)\n", - "Epoch 6604: model set back to train mode\n", - "Epoch 6604: model parameters saved\n", - "Epoch 6605 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6605: avg_loss appended (2.7778)\n", - "Epoch 6605: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6605: accuracy appended (80.56%)\n", - "Epoch 6605: model set back to train mode\n", - "Epoch 6605: model parameters saved\n", - "Epoch 6606 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6606: avg_loss appended (2.7778)\n", - "Epoch 6606: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6606: accuracy appended (80.56%)\n", - "Epoch 6606: model set back to train mode\n", - "Epoch 6606: model parameters saved\n", - "Epoch 6607 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6607: avg_loss appended (2.7778)\n", - "Epoch 6607: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6607: accuracy appended (80.56%)\n", - "Epoch 6607: model set back to train mode\n", - "Epoch 6607: model parameters saved\n", - "Epoch 6608 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6608: avg_loss appended (2.7778)\n", - "Epoch 6608: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6608: accuracy appended (80.56%)\n", - "Epoch 6608: model set back to train mode\n", - "Epoch 6608: model parameters saved\n", - "Epoch 6609 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6609: avg_loss appended (2.7778)\n", - "Epoch 6609: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6609: accuracy appended (80.56%)\n", - "Epoch 6609: model set back to train mode\n", - "Epoch 6609: model parameters saved\n", - "Epoch 6610 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6610: avg_loss appended (2.7778)\n", - "Epoch 6610: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6610: accuracy appended (80.56%)\n", - "Epoch 6610: model set back to train mode\n", - "Epoch 6610: model parameters saved\n", - "Epoch 6611 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6611: avg_loss appended (2.7778)\n", - "Epoch 6611: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6611: accuracy appended (80.56%)\n", - "Epoch 6611: model set back to train mode\n", - "Epoch 6611: model parameters saved\n", - "Epoch 6612 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6612: avg_loss appended (2.7778)\n", - "Epoch 6612: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6612: accuracy appended (80.56%)\n", - "Epoch 6612: model set back to train mode\n", - "Epoch 6612: model parameters saved\n", - "Epoch 6613 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6613: avg_loss appended (2.7778)\n", - "Epoch 6613: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6613: accuracy appended (80.56%)\n", - "Epoch 6613: model set back to train mode\n", - "Epoch 6613: model parameters saved\n", - "Epoch 6614 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6614: avg_loss appended (2.7778)\n", - "Epoch 6614: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6614: accuracy appended (80.56%)\n", - "Epoch 6614: model set back to train mode\n", - "Epoch 6614: model parameters saved\n", - "Epoch 6615 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6615: avg_loss appended (2.7778)\n", - "Epoch 6615: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6615: accuracy appended (80.56%)\n", - "Epoch 6615: model set back to train mode\n", - "Epoch 6615: model parameters saved\n", - "Epoch 6616 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6616: avg_loss appended (2.7778)\n", - "Epoch 6616: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6616: accuracy appended (83.33%)\n", - "Epoch 6616: model set back to train mode\n", - "Epoch 6616: model parameters saved\n", - "Epoch 6617 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6617: avg_loss appended (2.7778)\n", - "Epoch 6617: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6617: accuracy appended (80.56%)\n", - "Epoch 6617: model set back to train mode\n", - "Epoch 6617: model parameters saved\n", - "Epoch 6618 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6618: avg_loss appended (2.7778)\n", - "Epoch 6618: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6618: accuracy appended (80.56%)\n", - "Epoch 6618: model set back to train mode\n", - "Epoch 6618: model parameters saved\n", - "Epoch 6619 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6619: avg_loss appended (2.7778)\n", - "Epoch 6619: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6619: accuracy appended (80.56%)\n", - "Epoch 6619: model set back to train mode\n", - "Epoch 6619: model parameters saved\n", - "Epoch 6620 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6620: avg_loss appended (2.7778)\n", - "Epoch 6620: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6620: accuracy appended (80.56%)\n", - "Epoch 6620: model set back to train mode\n", - "Epoch 6620: model parameters saved\n", - "Epoch 6621 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6621: avg_loss appended (2.7778)\n", - "Epoch 6621: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6621: accuracy appended (80.56%)\n", - "Epoch 6621: model set back to train mode\n", - "Epoch 6621: model parameters saved\n", - "Epoch 6622 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6622: avg_loss appended (2.7778)\n", - "Epoch 6622: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6622: accuracy appended (80.56%)\n", - "Epoch 6622: model set back to train mode\n", - "Epoch 6622: model parameters saved\n", - "Epoch 6623 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6623: avg_loss appended (2.7778)\n", - "Epoch 6623: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6623: accuracy appended (80.56%)\n", - "Epoch 6623: model set back to train mode\n", - "Epoch 6623: model parameters saved\n", - "Epoch 6624 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6624: avg_loss appended (2.7778)\n", - "Epoch 6624: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6624: accuracy appended (80.56%)\n", - "Epoch 6624: model set back to train mode\n", - "Epoch 6624: model parameters saved\n", - "Epoch 6625 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6625: avg_loss appended (2.7778)\n", - "Epoch 6625: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6625: accuracy appended (80.56%)\n", - "Epoch 6625: model set back to train mode\n", - "Epoch 6625: model parameters saved\n", - "Epoch 6626 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6626: avg_loss appended (2.7778)\n", - "Epoch 6626: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6626: accuracy appended (80.56%)\n", - "Epoch 6626: model set back to train mode\n", - "Epoch 6626: model parameters saved\n", - "Epoch 6627 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6627: avg_loss appended (2.7778)\n", - "Epoch 6627: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6627: accuracy appended (80.56%)\n", - "Epoch 6627: model set back to train mode\n", - "Epoch 6627: model parameters saved\n", - "Epoch 6628 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6628: avg_loss appended (2.7778)\n", - "Epoch 6628: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6628: accuracy appended (80.56%)\n", - "Epoch 6628: model set back to train mode\n", - "Epoch 6628: model parameters saved\n", - "Epoch 6629 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6629: avg_loss appended (2.7778)\n", - "Epoch 6629: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6629: accuracy appended (80.56%)\n", - "Epoch 6629: model set back to train mode\n", - "Epoch 6629: model parameters saved\n", - "Epoch 6630 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6630: avg_loss appended (2.7778)\n", - "Epoch 6630: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6630: accuracy appended (80.56%)\n", - "Epoch 6630: model set back to train mode\n", - "Epoch 6630: model parameters saved\n", - "Epoch 6631 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6631: avg_loss appended (2.7778)\n", - "Epoch 6631: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6631: accuracy appended (80.56%)\n", - "Epoch 6631: model set back to train mode\n", - "Epoch 6631: model parameters saved\n", - "Epoch 6632 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6632: avg_loss appended (2.7778)\n", - "Epoch 6632: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6632: accuracy appended (80.56%)\n", - "Epoch 6632: model set back to train mode\n", - "Epoch 6632: model parameters saved\n", - "Epoch 6633 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6633: avg_loss appended (2.7778)\n", - "Epoch 6633: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6633: accuracy appended (80.56%)\n", - "Epoch 6633: model set back to train mode\n", - "Epoch 6633: model parameters saved\n", - "Epoch 6634 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6634: avg_loss appended (2.7778)\n", - "Epoch 6634: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6634: accuracy appended (80.56%)\n", - "Epoch 6634: model set back to train mode\n", - "Epoch 6634: model parameters saved\n", - "Epoch 6635 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6635: avg_loss appended (2.7778)\n", - "Epoch 6635: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6635: accuracy appended (80.56%)\n", - "Epoch 6635: model set back to train mode\n", - "Epoch 6635: model parameters saved\n", - "Epoch 6636 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6636: avg_loss appended (2.7778)\n", - "Epoch 6636: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6636: accuracy appended (80.56%)\n", - "Epoch 6636: model set back to train mode\n", - "Epoch 6636: model parameters saved\n", - "Epoch 6637 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6637: avg_loss appended (2.7778)\n", - "Epoch 6637: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6637: accuracy appended (80.56%)\n", - "Epoch 6637: model set back to train mode\n", - "Epoch 6637: model parameters saved\n", - "Epoch 6638 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6638: avg_loss appended (2.7778)\n", - "Epoch 6638: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6638: accuracy appended (80.56%)\n", - "Epoch 6638: model set back to train mode\n", - "Epoch 6638: model parameters saved\n", - "Epoch 6639 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6639: avg_loss appended (2.7778)\n", - "Epoch 6639: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6639: accuracy appended (80.56%)\n", - "Epoch 6639: model set back to train mode\n", - "Epoch 6639: model parameters saved\n", - "Epoch 6640 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6640: avg_loss appended (2.7778)\n", - "Epoch 6640: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6640: accuracy appended (80.56%)\n", - "Epoch 6640: model set back to train mode\n", - "Epoch 6640: model parameters saved\n", - "Epoch 6641 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6641: avg_loss appended (2.7778)\n", - "Epoch 6641: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6641: accuracy appended (80.56%)\n", - "Epoch 6641: model set back to train mode\n", - "Epoch 6641: model parameters saved\n", - "Epoch 6642 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6642: avg_loss appended (2.7778)\n", - "Epoch 6642: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6642: accuracy appended (80.56%)\n", - "Epoch 6642: model set back to train mode\n", - "Epoch 6642: model parameters saved\n", - "Epoch 6643 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6643: avg_loss appended (2.7778)\n", - "Epoch 6643: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6643: accuracy appended (80.56%)\n", - "Epoch 6643: model set back to train mode\n", - "Epoch 6643: model parameters saved\n", - "Epoch 6644 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6644: avg_loss appended (2.7778)\n", - "Epoch 6644: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6644: accuracy appended (80.56%)\n", - "Epoch 6644: model set back to train mode\n", - "Epoch 6644: model parameters saved\n", - "Epoch 6645 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6645: avg_loss appended (2.7778)\n", - "Epoch 6645: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6645: accuracy appended (80.56%)\n", - "Epoch 6645: model set back to train mode\n", - "Epoch 6645: model parameters saved\n", - "Epoch 6646 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6646: avg_loss appended (2.7778)\n", - "Epoch 6646: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6646: accuracy appended (80.56%)\n", - "Epoch 6646: model set back to train mode\n", - "Epoch 6646: model parameters saved\n", - "Epoch 6647 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6647: avg_loss appended (2.7778)\n", - "Epoch 6647: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6647: accuracy appended (80.56%)\n", - "Epoch 6647: model set back to train mode\n", - "Epoch 6647: model parameters saved\n", - "Epoch 6648 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6648: avg_loss appended (2.7778)\n", - "Epoch 6648: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6648: accuracy appended (80.56%)\n", - "Epoch 6648: model set back to train mode\n", - "Epoch 6648: model parameters saved\n", - "Epoch 6649 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6649: avg_loss appended (2.7778)\n", - "Epoch 6649: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6649: accuracy appended (80.56%)\n", - "Epoch 6649: model set back to train mode\n", - "Epoch 6649: model parameters saved\n", - "Epoch 6650 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6650: avg_loss appended (2.7778)\n", - "Epoch 6650: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6650: accuracy appended (80.56%)\n", - "Epoch 6650: model set back to train mode\n", - "Epoch 6650: model parameters saved\n", - "Epoch 6651 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6651: avg_loss appended (2.7778)\n", - "Epoch 6651: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6651: accuracy appended (80.56%)\n", - "Epoch 6651: model set back to train mode\n", - "Epoch 6651: model parameters saved\n", - "Epoch 6652 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6652: avg_loss appended (2.7778)\n", - "Epoch 6652: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6652: accuracy appended (80.56%)\n", - "Epoch 6652: model set back to train mode\n", - "Epoch 6652: model parameters saved\n", - "Epoch 6653 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6653: avg_loss appended (2.7778)\n", - "Epoch 6653: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6653: accuracy appended (80.56%)\n", - "Epoch 6653: model set back to train mode\n", - "Epoch 6653: model parameters saved\n", - "Epoch 6654 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6654: avg_loss appended (2.7778)\n", - "Epoch 6654: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6654: accuracy appended (80.56%)\n", - "Epoch 6654: model set back to train mode\n", - "Epoch 6654: model parameters saved\n", - "Epoch 6655 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6655: avg_loss appended (2.7778)\n", - "Epoch 6655: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6655: accuracy appended (80.56%)\n", - "Epoch 6655: model set back to train mode\n", - "Epoch 6655: model parameters saved\n", - "Epoch 6656 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6656: avg_loss appended (2.7778)\n", - "Epoch 6656: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6656: accuracy appended (80.56%)\n", - "Epoch 6656: model set back to train mode\n", - "Epoch 6656: model parameters saved\n", - "Epoch 6657 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6657: avg_loss appended (2.7778)\n", - "Epoch 6657: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6657: accuracy appended (80.56%)\n", - "Epoch 6657: model set back to train mode\n", - "Epoch 6657: model parameters saved\n", - "Epoch 6658 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6658: avg_loss appended (2.7778)\n", - "Epoch 6658: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6658: accuracy appended (80.56%)\n", - "Epoch 6658: model set back to train mode\n", - "Epoch 6658: model parameters saved\n", - "Epoch 6659 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6659: avg_loss appended (2.7778)\n", - "Epoch 6659: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6659: accuracy appended (80.56%)\n", - "Epoch 6659: model set back to train mode\n", - "Epoch 6659: model parameters saved\n", - "Epoch 6660 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6660: avg_loss appended (2.7778)\n", - "Epoch 6660: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6660: accuracy appended (80.56%)\n", - "Epoch 6660: model set back to train mode\n", - "Epoch 6660: model parameters saved\n", - "Epoch 6661 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6661: avg_loss appended (2.7778)\n", - "Epoch 6661: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6661: accuracy appended (80.56%)\n", - "Epoch 6661: model set back to train mode\n", - "Epoch 6661: model parameters saved\n", - "Epoch 6662 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6662: avg_loss appended (2.7778)\n", - "Epoch 6662: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6662: accuracy appended (83.33%)\n", - "Epoch 6662: model set back to train mode\n", - "Epoch 6662: model parameters saved\n", - "Epoch 6663 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6663: avg_loss appended (2.7778)\n", - "Epoch 6663: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6663: accuracy appended (80.56%)\n", - "Epoch 6663: model set back to train mode\n", - "Epoch 6663: model parameters saved\n", - "Epoch 6664 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6664: avg_loss appended (2.7778)\n", - "Epoch 6664: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6664: accuracy appended (80.56%)\n", - "Epoch 6664: model set back to train mode\n", - "Epoch 6664: model parameters saved\n", - "Epoch 6665 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6665: avg_loss appended (2.7778)\n", - "Epoch 6665: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6665: accuracy appended (80.56%)\n", - "Epoch 6665: model set back to train mode\n", - "Epoch 6665: model parameters saved\n", - "Epoch 6666 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6666: avg_loss appended (2.7778)\n", - "Epoch 6666: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6666: accuracy appended (80.56%)\n", - "Epoch 6666: model set back to train mode\n", - "Epoch 6666: model parameters saved\n", - "Epoch 6667 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6667: avg_loss appended (2.7778)\n", - "Epoch 6667: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6667: accuracy appended (80.56%)\n", - "Epoch 6667: model set back to train mode\n", - "Epoch 6667: model parameters saved\n", - "Epoch 6668 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6668: avg_loss appended (2.7778)\n", - "Epoch 6668: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6668: accuracy appended (80.56%)\n", - "Epoch 6668: model set back to train mode\n", - "Epoch 6668: model parameters saved\n", - "Epoch 6669 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6669: avg_loss appended (2.7778)\n", - "Epoch 6669: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6669: accuracy appended (80.56%)\n", - "Epoch 6669: model set back to train mode\n", - "Epoch 6669: model parameters saved\n", - "Epoch 6670 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6670: avg_loss appended (2.7778)\n", - "Epoch 6670: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6670: accuracy appended (80.56%)\n", - "Epoch 6670: model set back to train mode\n", - "Epoch 6670: model parameters saved\n", - "Epoch 6671 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6671: avg_loss appended (2.7778)\n", - "Epoch 6671: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6671: accuracy appended (80.56%)\n", - "Epoch 6671: model set back to train mode\n", - "Epoch 6671: model parameters saved\n", - "Epoch 6672 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6672: avg_loss appended (2.7778)\n", - "Epoch 6672: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6672: accuracy appended (83.33%)\n", - "Epoch 6672: model set back to train mode\n", - "Epoch 6672: model parameters saved\n", - "Epoch 6673 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6673: avg_loss appended (2.7778)\n", - "Epoch 6673: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6673: accuracy appended (80.56%)\n", - "Epoch 6673: model set back to train mode\n", - "Epoch 6673: model parameters saved\n", - "Epoch 6674 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6674: avg_loss appended (2.7778)\n", - "Epoch 6674: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6674: accuracy appended (80.56%)\n", - "Epoch 6674: model set back to train mode\n", - "Epoch 6674: model parameters saved\n", - "Epoch 6675 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6675: avg_loss appended (2.7778)\n", - "Epoch 6675: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6675: accuracy appended (80.56%)\n", - "Epoch 6675: model set back to train mode\n", - "Epoch 6675: model parameters saved\n", - "Epoch 6676 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6676: avg_loss appended (2.7778)\n", - "Epoch 6676: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6676: accuracy appended (80.56%)\n", - "Epoch 6676: model set back to train mode\n", - "Epoch 6676: model parameters saved\n", - "Epoch 6677 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6677: avg_loss appended (2.7778)\n", - "Epoch 6677: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6677: accuracy appended (80.56%)\n", - "Epoch 6677: model set back to train mode\n", - "Epoch 6677: model parameters saved\n", - "Epoch 6678 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6678: avg_loss appended (2.7778)\n", - "Epoch 6678: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6678: accuracy appended (80.56%)\n", - "Epoch 6678: model set back to train mode\n", - "Epoch 6678: model parameters saved\n", - "Epoch 6679 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6679: avg_loss appended (2.7778)\n", - "Epoch 6679: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6679: accuracy appended (80.56%)\n", - "Epoch 6679: model set back to train mode\n", - "Epoch 6679: model parameters saved\n", - "Epoch 6680 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6680: avg_loss appended (2.7778)\n", - "Epoch 6680: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6680: accuracy appended (80.56%)\n", - "Epoch 6680: model set back to train mode\n", - "Epoch 6680: model parameters saved\n", - "Epoch 6681 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6681: avg_loss appended (2.7778)\n", - "Epoch 6681: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6681: accuracy appended (80.56%)\n", - "Epoch 6681: model set back to train mode\n", - "Epoch 6681: model parameters saved\n", - "Epoch 6682 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6682: avg_loss appended (2.7778)\n", - "Epoch 6682: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6682: accuracy appended (80.56%)\n", - "Epoch 6682: model set back to train mode\n", - "Epoch 6682: model parameters saved\n", - "Epoch 6683 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6683: avg_loss appended (2.7778)\n", - "Epoch 6683: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6683: accuracy appended (80.56%)\n", - "Epoch 6683: model set back to train mode\n", - "Epoch 6683: model parameters saved\n", - "Epoch 6684 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6684: avg_loss appended (2.7778)\n", - "Epoch 6684: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6684: accuracy appended (80.56%)\n", - "Epoch 6684: model set back to train mode\n", - "Epoch 6684: model parameters saved\n", - "Epoch 6685 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6685: avg_loss appended (2.7778)\n", - "Epoch 6685: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6685: accuracy appended (80.56%)\n", - "Epoch 6685: model set back to train mode\n", - "Epoch 6685: model parameters saved\n", - "Epoch 6686 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6686: avg_loss appended (2.7778)\n", - "Epoch 6686: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6686: accuracy appended (80.56%)\n", - "Epoch 6686: model set back to train mode\n", - "Epoch 6686: model parameters saved\n", - "Epoch 6687 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6687: avg_loss appended (2.7778)\n", - "Epoch 6687: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6687: accuracy appended (80.56%)\n", - "Epoch 6687: model set back to train mode\n", - "Epoch 6687: model parameters saved\n", - "Epoch 6688 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6688: avg_loss appended (2.7778)\n", - "Epoch 6688: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6688: accuracy appended (80.56%)\n", - "Epoch 6688: model set back to train mode\n", - "Epoch 6688: model parameters saved\n", - "Epoch 6689 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6689: avg_loss appended (2.7778)\n", - "Epoch 6689: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6689: accuracy appended (80.56%)\n", - "Epoch 6689: model set back to train mode\n", - "Epoch 6689: model parameters saved\n", - "Epoch 6690 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6690: avg_loss appended (2.7778)\n", - "Epoch 6690: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6690: accuracy appended (80.56%)\n", - "Epoch 6690: model set back to train mode\n", - "Epoch 6690: model parameters saved\n", - "Epoch 6691 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6691: avg_loss appended (2.7778)\n", - "Epoch 6691: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6691: accuracy appended (80.56%)\n", - "Epoch 6691: model set back to train mode\n", - "Epoch 6691: model parameters saved\n", - "Epoch 6692 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6692: avg_loss appended (2.7778)\n", - "Epoch 6692: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6692: accuracy appended (80.56%)\n", - "Epoch 6692: model set back to train mode\n", - "Epoch 6692: model parameters saved\n", - "Epoch 6693 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6693: avg_loss appended (2.7778)\n", - "Epoch 6693: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6693: accuracy appended (80.56%)\n", - "Epoch 6693: model set back to train mode\n", - "Epoch 6693: model parameters saved\n", - "Epoch 6694 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6694: avg_loss appended (2.7778)\n", - "Epoch 6694: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6694: accuracy appended (80.56%)\n", - "Epoch 6694: model set back to train mode\n", - "Epoch 6694: model parameters saved\n", - "Epoch 6695 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6695: avg_loss appended (2.7778)\n", - "Epoch 6695: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6695: accuracy appended (80.56%)\n", - "Epoch 6695: model set back to train mode\n", - "Epoch 6695: model parameters saved\n", - "Epoch 6696 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6696: avg_loss appended (2.7778)\n", - "Epoch 6696: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6696: accuracy appended (80.56%)\n", - "Epoch 6696: model set back to train mode\n", - "Epoch 6696: model parameters saved\n", - "Epoch 6697 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6697: avg_loss appended (2.7778)\n", - "Epoch 6697: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6697: accuracy appended (80.56%)\n", - "Epoch 6697: model set back to train mode\n", - "Epoch 6697: model parameters saved\n", - "Epoch 6698 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6698: avg_loss appended (2.7778)\n", - "Epoch 6698: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6698: accuracy appended (80.56%)\n", - "Epoch 6698: model set back to train mode\n", - "Epoch 6698: model parameters saved\n", - "Epoch 6699 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6699: avg_loss appended (2.7778)\n", - "Epoch 6699: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6699: accuracy appended (80.56%)\n", - "Epoch 6699: model set back to train mode\n", - "Epoch 6699: model parameters saved\n", - "Epoch 6700 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6700: avg_loss appended (2.7778)\n", - "Epoch 6700: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6700: accuracy appended (80.56%)\n", - "Epoch 6700: model set back to train mode\n", - "Epoch 6700: model parameters saved\n", - "Epoch 6700/10000, Loss: 2.7778, Accuracy: 80.56%\n", - "Epoch 6701 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6701: avg_loss appended (2.7778)\n", - "Epoch 6701: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6701: accuracy appended (80.56%)\n", - "Epoch 6701: model set back to train mode\n", - "Epoch 6701: model parameters saved\n", - "Epoch 6702 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6702: avg_loss appended (2.7778)\n", - "Epoch 6702: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6702: accuracy appended (80.56%)\n", - "Epoch 6702: model set back to train mode\n", - "Epoch 6702: model parameters saved\n", - "Epoch 6703 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6703: avg_loss appended (2.7778)\n", - "Epoch 6703: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6703: accuracy appended (80.56%)\n", - "Epoch 6703: model set back to train mode\n", - "Epoch 6703: model parameters saved\n", - "Epoch 6704 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6704: avg_loss appended (2.7778)\n", - "Epoch 6704: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6704: accuracy appended (80.56%)\n", - "Epoch 6704: model set back to train mode\n", - "Epoch 6704: model parameters saved\n", - "Epoch 6705 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6705: avg_loss appended (2.7778)\n", - "Epoch 6705: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6705: accuracy appended (80.56%)\n", - "Epoch 6705: model set back to train mode\n", - "Epoch 6705: model parameters saved\n", - "Epoch 6706 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6706: avg_loss appended (2.7778)\n", - "Epoch 6706: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6706: accuracy appended (80.56%)\n", - "Epoch 6706: model set back to train mode\n", - "Epoch 6706: model parameters saved\n", - "Epoch 6707 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6707: avg_loss appended (2.7778)\n", - "Epoch 6707: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6707: accuracy appended (80.56%)\n", - "Epoch 6707: model set back to train mode\n", - "Epoch 6707: model parameters saved\n", - "Epoch 6708 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6708: avg_loss appended (2.7778)\n", - "Epoch 6708: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6708: accuracy appended (80.56%)\n", - "Epoch 6708: model set back to train mode\n", - "Epoch 6708: model parameters saved\n", - "Epoch 6709 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6709: avg_loss appended (2.7778)\n", - "Epoch 6709: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6709: accuracy appended (80.56%)\n", - "Epoch 6709: model set back to train mode\n", - "Epoch 6709: model parameters saved\n", - "Epoch 6710 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6710: avg_loss appended (2.7778)\n", - "Epoch 6710: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6710: accuracy appended (80.56%)\n", - "Epoch 6710: model set back to train mode\n", - "Epoch 6710: model parameters saved\n", - "Epoch 6711 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6711: avg_loss appended (2.7778)\n", - "Epoch 6711: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6711: accuracy appended (80.56%)\n", - "Epoch 6711: model set back to train mode\n", - "Epoch 6711: model parameters saved\n", - "Epoch 6712 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6712: avg_loss appended (2.7778)\n", - "Epoch 6712: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6712: accuracy appended (80.56%)\n", - "Epoch 6712: model set back to train mode\n", - "Epoch 6712: model parameters saved\n", - "Epoch 6713 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6713: avg_loss appended (2.7778)\n", - "Epoch 6713: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6713: accuracy appended (80.56%)\n", - "Epoch 6713: model set back to train mode\n", - "Epoch 6713: model parameters saved\n", - "Epoch 6714 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6714: avg_loss appended (2.7778)\n", - "Epoch 6714: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6714: accuracy appended (80.56%)\n", - "Epoch 6714: model set back to train mode\n", - "Epoch 6714: model parameters saved\n", - "Epoch 6715 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6715: avg_loss appended (2.7778)\n", - "Epoch 6715: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6715: accuracy appended (80.56%)\n", - "Epoch 6715: model set back to train mode\n", - "Epoch 6715: model parameters saved\n", - "Epoch 6716 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6716: avg_loss appended (2.7778)\n", - "Epoch 6716: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6716: accuracy appended (80.56%)\n", - "Epoch 6716: model set back to train mode\n", - "Epoch 6716: model parameters saved\n", - "Epoch 6717 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6717: avg_loss appended (2.7778)\n", - "Epoch 6717: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6717: accuracy appended (80.56%)\n", - "Epoch 6717: model set back to train mode\n", - "Epoch 6717: model parameters saved\n", - "Epoch 6718 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6718: avg_loss appended (2.7778)\n", - "Epoch 6718: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6718: accuracy appended (80.56%)\n", - "Epoch 6718: model set back to train mode\n", - "Epoch 6718: model parameters saved\n", - "Epoch 6719 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6719: avg_loss appended (2.7778)\n", - "Epoch 6719: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6719: accuracy appended (80.56%)\n", - "Epoch 6719: model set back to train mode\n", - "Epoch 6719: model parameters saved\n", - "Epoch 6720 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6720: avg_loss appended (2.7778)\n", - "Epoch 6720: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6720: accuracy appended (80.56%)\n", - "Epoch 6720: model set back to train mode\n", - "Epoch 6720: model parameters saved\n", - "Epoch 6721 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6721: avg_loss appended (2.7778)\n", - "Epoch 6721: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6721: accuracy appended (80.56%)\n", - "Epoch 6721: model set back to train mode\n", - "Epoch 6721: model parameters saved\n", - "Epoch 6722 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6722: avg_loss appended (2.7778)\n", - "Epoch 6722: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6722: accuracy appended (80.56%)\n", - "Epoch 6722: model set back to train mode\n", - "Epoch 6722: model parameters saved\n", - "Epoch 6723 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6723: avg_loss appended (2.7778)\n", - "Epoch 6723: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6723: accuracy appended (80.56%)\n", - "Epoch 6723: model set back to train mode\n", - "Epoch 6723: model parameters saved\n", - "Epoch 6724 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6724: avg_loss appended (2.7778)\n", - "Epoch 6724: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6724: accuracy appended (80.56%)\n", - "Epoch 6724: model set back to train mode\n", - "Epoch 6724: model parameters saved\n", - "Epoch 6725 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6725: avg_loss appended (2.7778)\n", - "Epoch 6725: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6725: accuracy appended (80.56%)\n", - "Epoch 6725: model set back to train mode\n", - "Epoch 6725: model parameters saved\n", - "Epoch 6726 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6726: avg_loss appended (2.7778)\n", - "Epoch 6726: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6726: accuracy appended (80.56%)\n", - "Epoch 6726: model set back to train mode\n", - "Epoch 6726: model parameters saved\n", - "Epoch 6727 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6727: avg_loss appended (2.7778)\n", - "Epoch 6727: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6727: accuracy appended (80.56%)\n", - "Epoch 6727: model set back to train mode\n", - "Epoch 6727: model parameters saved\n", - "Epoch 6728 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6728: avg_loss appended (2.7778)\n", - "Epoch 6728: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6728: accuracy appended (80.56%)\n", - "Epoch 6728: model set back to train mode\n", - "Epoch 6728: model parameters saved\n", - "Epoch 6729 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6729: avg_loss appended (2.7778)\n", - "Epoch 6729: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6729: accuracy appended (80.56%)\n", - "Epoch 6729: model set back to train mode\n", - "Epoch 6729: model parameters saved\n", - "Epoch 6730 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6730: avg_loss appended (2.7778)\n", - "Epoch 6730: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6730: accuracy appended (80.56%)\n", - "Epoch 6730: model set back to train mode\n", - "Epoch 6730: model parameters saved\n", - "Epoch 6731 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6731: avg_loss appended (2.7778)\n", - "Epoch 6731: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6731: accuracy appended (80.56%)\n", - "Epoch 6731: model set back to train mode\n", - "Epoch 6731: model parameters saved\n", - "Epoch 6732 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6732: avg_loss appended (2.7778)\n", - "Epoch 6732: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6732: accuracy appended (80.56%)\n", - "Epoch 6732: model set back to train mode\n", - "Epoch 6732: model parameters saved\n", - "Epoch 6733 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6733: avg_loss appended (2.7778)\n", - "Epoch 6733: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6733: accuracy appended (80.56%)\n", - "Epoch 6733: model set back to train mode\n", - "Epoch 6733: model parameters saved\n", - "Epoch 6734 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6734: avg_loss appended (2.7778)\n", - "Epoch 6734: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6734: accuracy appended (80.56%)\n", - "Epoch 6734: model set back to train mode\n", - "Epoch 6734: model parameters saved\n", - "Epoch 6735 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6735: avg_loss appended (2.7778)\n", - "Epoch 6735: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6735: accuracy appended (80.56%)\n", - "Epoch 6735: model set back to train mode\n", - "Epoch 6735: model parameters saved\n", - "Epoch 6736 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6736: avg_loss appended (2.7778)\n", - "Epoch 6736: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6736: accuracy appended (83.33%)\n", - "Epoch 6736: model set back to train mode\n", - "Epoch 6736: model parameters saved\n", - "Epoch 6737 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6737: avg_loss appended (2.7778)\n", - "Epoch 6737: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6737: accuracy appended (80.56%)\n", - "Epoch 6737: model set back to train mode\n", - "Epoch 6737: model parameters saved\n", - "Epoch 6738 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6738: avg_loss appended (2.7778)\n", - "Epoch 6738: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6738: accuracy appended (80.56%)\n", - "Epoch 6738: model set back to train mode\n", - "Epoch 6738: model parameters saved\n", - "Epoch 6739 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6739: avg_loss appended (2.7778)\n", - "Epoch 6739: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6739: accuracy appended (80.56%)\n", - "Epoch 6739: model set back to train mode\n", - "Epoch 6739: model parameters saved\n", - "Epoch 6740 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6740: avg_loss appended (2.7778)\n", - "Epoch 6740: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6740: accuracy appended (80.56%)\n", - "Epoch 6740: model set back to train mode\n", - "Epoch 6740: model parameters saved\n", - "Epoch 6741 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6741: avg_loss appended (2.7778)\n", - "Epoch 6741: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6741: accuracy appended (80.56%)\n", - "Epoch 6741: model set back to train mode\n", - "Epoch 6741: model parameters saved\n", - "Epoch 6742 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6742: avg_loss appended (2.7778)\n", - "Epoch 6742: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6742: accuracy appended (80.56%)\n", - "Epoch 6742: model set back to train mode\n", - "Epoch 6742: model parameters saved\n", - "Epoch 6743 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6743: avg_loss appended (2.7778)\n", - "Epoch 6743: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6743: accuracy appended (80.56%)\n", - "Epoch 6743: model set back to train mode\n", - "Epoch 6743: model parameters saved\n", - "Epoch 6744 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6744: avg_loss appended (2.7778)\n", - "Epoch 6744: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6744: accuracy appended (80.56%)\n", - "Epoch 6744: model set back to train mode\n", - "Epoch 6744: model parameters saved\n", - "Epoch 6745 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6745: avg_loss appended (2.7778)\n", - "Epoch 6745: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6745: accuracy appended (80.56%)\n", - "Epoch 6745: model set back to train mode\n", - "Epoch 6745: model parameters saved\n", - "Epoch 6746 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6746: avg_loss appended (2.7778)\n", - "Epoch 6746: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6746: accuracy appended (80.56%)\n", - "Epoch 6746: model set back to train mode\n", - "Epoch 6746: model parameters saved\n", - "Epoch 6747 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6747: avg_loss appended (2.7778)\n", - "Epoch 6747: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6747: accuracy appended (80.56%)\n", - "Epoch 6747: model set back to train mode\n", - "Epoch 6747: model parameters saved\n", - "Epoch 6748 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6748: avg_loss appended (2.7778)\n", - "Epoch 6748: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6748: accuracy appended (80.56%)\n", - "Epoch 6748: model set back to train mode\n", - "Epoch 6748: model parameters saved\n", - "Epoch 6749 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6749: avg_loss appended (2.7778)\n", - "Epoch 6749: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6749: accuracy appended (80.56%)\n", - "Epoch 6749: model set back to train mode\n", - "Epoch 6749: model parameters saved\n", - "Epoch 6750 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6750: avg_loss appended (2.7778)\n", - "Epoch 6750: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6750: accuracy appended (80.56%)\n", - "Epoch 6750: model set back to train mode\n", - "Epoch 6750: model parameters saved\n", - "Epoch 6751 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6751: avg_loss appended (2.7778)\n", - "Epoch 6751: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6751: accuracy appended (80.56%)\n", - "Epoch 6751: model set back to train mode\n", - "Epoch 6751: model parameters saved\n", - "Epoch 6752 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6752: avg_loss appended (2.7778)\n", - "Epoch 6752: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6752: accuracy appended (80.56%)\n", - "Epoch 6752: model set back to train mode\n", - "Epoch 6752: model parameters saved\n", - "Epoch 6753 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6753: avg_loss appended (2.7778)\n", - "Epoch 6753: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6753: accuracy appended (83.33%)\n", - "Epoch 6753: model set back to train mode\n", - "Epoch 6753: model parameters saved\n", - "Epoch 6754 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6754: avg_loss appended (2.7778)\n", - "Epoch 6754: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6754: accuracy appended (83.33%)\n", - "Epoch 6754: model set back to train mode\n", - "Epoch 6754: model parameters saved\n", - "Epoch 6755 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6755: avg_loss appended (2.7778)\n", - "Epoch 6755: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6755: accuracy appended (80.56%)\n", - "Epoch 6755: model set back to train mode\n", - "Epoch 6755: model parameters saved\n", - "Epoch 6756 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6756: avg_loss appended (2.7778)\n", - "Epoch 6756: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6756: accuracy appended (80.56%)\n", - "Epoch 6756: model set back to train mode\n", - "Epoch 6756: model parameters saved\n", - "Epoch 6757 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6757: avg_loss appended (2.7778)\n", - "Epoch 6757: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6757: accuracy appended (80.56%)\n", - "Epoch 6757: model set back to train mode\n", - "Epoch 6757: model parameters saved\n", - "Epoch 6758 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6758: avg_loss appended (2.7778)\n", - "Epoch 6758: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6758: accuracy appended (80.56%)\n", - "Epoch 6758: model set back to train mode\n", - "Epoch 6758: model parameters saved\n", - "Epoch 6759 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6759: avg_loss appended (2.7778)\n", - "Epoch 6759: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6759: accuracy appended (80.56%)\n", - "Epoch 6759: model set back to train mode\n", - "Epoch 6759: model parameters saved\n", - "Epoch 6760 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6760: avg_loss appended (2.7778)\n", - "Epoch 6760: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6760: accuracy appended (80.56%)\n", - "Epoch 6760: model set back to train mode\n", - "Epoch 6760: model parameters saved\n", - "Epoch 6761 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6761: avg_loss appended (2.7778)\n", - "Epoch 6761: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6761: accuracy appended (80.56%)\n", - "Epoch 6761: model set back to train mode\n", - "Epoch 6761: model parameters saved\n", - "Epoch 6762 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6762: avg_loss appended (2.7778)\n", - "Epoch 6762: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6762: accuracy appended (80.56%)\n", - "Epoch 6762: model set back to train mode\n", - "Epoch 6762: model parameters saved\n", - "Epoch 6763 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6763: avg_loss appended (2.7778)\n", - "Epoch 6763: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6763: accuracy appended (80.56%)\n", - "Epoch 6763: model set back to train mode\n", - "Epoch 6763: model parameters saved\n", - "Epoch 6764 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6764: avg_loss appended (2.7778)\n", - "Epoch 6764: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6764: accuracy appended (80.56%)\n", - "Epoch 6764: model set back to train mode\n", - "Epoch 6764: model parameters saved\n", - "Epoch 6765 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6765: avg_loss appended (2.7778)\n", - "Epoch 6765: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6765: accuracy appended (80.56%)\n", - "Epoch 6765: model set back to train mode\n", - "Epoch 6765: model parameters saved\n", - "Epoch 6766 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6766: avg_loss appended (2.7778)\n", - "Epoch 6766: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6766: accuracy appended (80.56%)\n", - "Epoch 6766: model set back to train mode\n", - "Epoch 6766: model parameters saved\n", - "Epoch 6767 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6767: avg_loss appended (2.7778)\n", - "Epoch 6767: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6767: accuracy appended (80.56%)\n", - "Epoch 6767: model set back to train mode\n", - "Epoch 6767: model parameters saved\n", - "Epoch 6768 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6768: avg_loss appended (2.7778)\n", - "Epoch 6768: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6768: accuracy appended (80.56%)\n", - "Epoch 6768: model set back to train mode\n", - "Epoch 6768: model parameters saved\n", - "Epoch 6769 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6769: avg_loss appended (2.7778)\n", - "Epoch 6769: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6769: accuracy appended (80.56%)\n", - "Epoch 6769: model set back to train mode\n", - "Epoch 6769: model parameters saved\n", - "Epoch 6770 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6770: avg_loss appended (2.7778)\n", - "Epoch 6770: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6770: accuracy appended (83.33%)\n", - "Epoch 6770: model set back to train mode\n", - "Epoch 6770: model parameters saved\n", - "Epoch 6771 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6771: avg_loss appended (2.7778)\n", - "Epoch 6771: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6771: accuracy appended (80.56%)\n", - "Epoch 6771: model set back to train mode\n", - "Epoch 6771: model parameters saved\n", - "Epoch 6772 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6772: avg_loss appended (2.7778)\n", - "Epoch 6772: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6772: accuracy appended (80.56%)\n", - "Epoch 6772: model set back to train mode\n", - "Epoch 6772: model parameters saved\n", - "Epoch 6773 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6773: avg_loss appended (2.7778)\n", - "Epoch 6773: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6773: accuracy appended (80.56%)\n", - "Epoch 6773: model set back to train mode\n", - "Epoch 6773: model parameters saved\n", - "Epoch 6774 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6774: avg_loss appended (2.7778)\n", - "Epoch 6774: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6774: accuracy appended (80.56%)\n", - "Epoch 6774: model set back to train mode\n", - "Epoch 6774: model parameters saved\n", - "Epoch 6775 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6775: avg_loss appended (2.7778)\n", - "Epoch 6775: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6775: accuracy appended (80.56%)\n", - "Epoch 6775: model set back to train mode\n", - "Epoch 6775: model parameters saved\n", - "Epoch 6776 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6776: avg_loss appended (2.7778)\n", - "Epoch 6776: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6776: accuracy appended (80.56%)\n", - "Epoch 6776: model set back to train mode\n", - "Epoch 6776: model parameters saved\n", - "Epoch 6777 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6777: avg_loss appended (2.7778)\n", - "Epoch 6777: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6777: accuracy appended (80.56%)\n", - "Epoch 6777: model set back to train mode\n", - "Epoch 6777: model parameters saved\n", - "Epoch 6778 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6778: avg_loss appended (2.7778)\n", - "Epoch 6778: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6778: accuracy appended (80.56%)\n", - "Epoch 6778: model set back to train mode\n", - "Epoch 6778: model parameters saved\n", - "Epoch 6779 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6779: avg_loss appended (2.7778)\n", - "Epoch 6779: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6779: accuracy appended (80.56%)\n", - "Epoch 6779: model set back to train mode\n", - "Epoch 6779: model parameters saved\n", - "Epoch 6780 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6780: avg_loss appended (2.7778)\n", - "Epoch 6780: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6780: accuracy appended (80.56%)\n", - "Epoch 6780: model set back to train mode\n", - "Epoch 6780: model parameters saved\n", - "Epoch 6781 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6781: avg_loss appended (2.7778)\n", - "Epoch 6781: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6781: accuracy appended (80.56%)\n", - "Epoch 6781: model set back to train mode\n", - "Epoch 6781: model parameters saved\n", - "Epoch 6782 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6782: avg_loss appended (2.7778)\n", - "Epoch 6782: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6782: accuracy appended (80.56%)\n", - "Epoch 6782: model set back to train mode\n", - "Epoch 6782: model parameters saved\n", - "Epoch 6783 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6783: avg_loss appended (2.7778)\n", - "Epoch 6783: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6783: accuracy appended (80.56%)\n", - "Epoch 6783: model set back to train mode\n", - "Epoch 6783: model parameters saved\n", - "Epoch 6784 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6784: avg_loss appended (2.7778)\n", - "Epoch 6784: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6784: accuracy appended (80.56%)\n", - "Epoch 6784: model set back to train mode\n", - "Epoch 6784: model parameters saved\n", - "Epoch 6785 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6785: avg_loss appended (2.7778)\n", - "Epoch 6785: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6785: accuracy appended (80.56%)\n", - "Epoch 6785: model set back to train mode\n", - "Epoch 6785: model parameters saved\n", - "Epoch 6786 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6786: avg_loss appended (2.7778)\n", - "Epoch 6786: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6786: accuracy appended (80.56%)\n", - "Epoch 6786: model set back to train mode\n", - "Epoch 6786: model parameters saved\n", - "Epoch 6787 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6787: avg_loss appended (2.7778)\n", - "Epoch 6787: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6787: accuracy appended (80.56%)\n", - "Epoch 6787: model set back to train mode\n", - "Epoch 6787: model parameters saved\n", - "Epoch 6788 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6788: avg_loss appended (2.7778)\n", - "Epoch 6788: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6788: accuracy appended (80.56%)\n", - "Epoch 6788: model set back to train mode\n", - "Epoch 6788: model parameters saved\n", - "Epoch 6789 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6789: avg_loss appended (2.7778)\n", - "Epoch 6789: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6789: accuracy appended (80.56%)\n", - "Epoch 6789: model set back to train mode\n", - "Epoch 6789: model parameters saved\n", - "Epoch 6790 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6790: avg_loss appended (2.7778)\n", - "Epoch 6790: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6790: accuracy appended (80.56%)\n", - "Epoch 6790: model set back to train mode\n", - "Epoch 6790: model parameters saved\n", - "Epoch 6791 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6791: avg_loss appended (2.7778)\n", - "Epoch 6791: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6791: accuracy appended (80.56%)\n", - "Epoch 6791: model set back to train mode\n", - "Epoch 6791: model parameters saved\n", - "Epoch 6792 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6792: avg_loss appended (2.7778)\n", - "Epoch 6792: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6792: accuracy appended (80.56%)\n", - "Epoch 6792: model set back to train mode\n", - "Epoch 6792: model parameters saved\n", - "Epoch 6793 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6793: avg_loss appended (2.7778)\n", - "Epoch 6793: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6793: accuracy appended (80.56%)\n", - "Epoch 6793: model set back to train mode\n", - "Epoch 6793: model parameters saved\n", - "Epoch 6794 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6794: avg_loss appended (2.7778)\n", - "Epoch 6794: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6794: accuracy appended (80.56%)\n", - "Epoch 6794: model set back to train mode\n", - "Epoch 6794: model parameters saved\n", - "Epoch 6795 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6795: avg_loss appended (2.7778)\n", - "Epoch 6795: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6795: accuracy appended (80.56%)\n", - "Epoch 6795: model set back to train mode\n", - "Epoch 6795: model parameters saved\n", - "Epoch 6796 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6796: avg_loss appended (2.7778)\n", - "Epoch 6796: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6796: accuracy appended (80.56%)\n", - "Epoch 6796: model set back to train mode\n", - "Epoch 6796: model parameters saved\n", - "Epoch 6797 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6797: avg_loss appended (2.7778)\n", - "Epoch 6797: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6797: accuracy appended (80.56%)\n", - "Epoch 6797: model set back to train mode\n", - "Epoch 6797: model parameters saved\n", - "Epoch 6798 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6798: avg_loss appended (2.7778)\n", - "Epoch 6798: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6798: accuracy appended (80.56%)\n", - "Epoch 6798: model set back to train mode\n", - "Epoch 6798: model parameters saved\n", - "Epoch 6799 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6799: avg_loss appended (2.7778)\n", - "Epoch 6799: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6799: accuracy appended (80.56%)\n", - "Epoch 6799: model set back to train mode\n", - "Epoch 6799: model parameters saved\n", - "Epoch 6800 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6800: avg_loss appended (2.7778)\n", - "Epoch 6800: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6800: accuracy appended (80.56%)\n", - "Epoch 6800: model set back to train mode\n", - "Epoch 6800: model parameters saved\n", - "Epoch 6800/10000, Loss: 2.7778, Accuracy: 80.56%\n", - "Epoch 6801 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6801: avg_loss appended (2.7778)\n", - "Epoch 6801: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6801: accuracy appended (80.56%)\n", - "Epoch 6801: model set back to train mode\n", - "Epoch 6801: model parameters saved\n", - "Epoch 6802 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6802: avg_loss appended (2.7778)\n", - "Epoch 6802: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6802: accuracy appended (80.56%)\n", - "Epoch 6802: model set back to train mode\n", - "Epoch 6802: model parameters saved\n", - "Epoch 6803 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6803: avg_loss appended (2.7778)\n", - "Epoch 6803: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6803: accuracy appended (80.56%)\n", - "Epoch 6803: model set back to train mode\n", - "Epoch 6803: model parameters saved\n", - "Epoch 6804 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6804: avg_loss appended (2.7778)\n", - "Epoch 6804: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6804: accuracy appended (80.56%)\n", - "Epoch 6804: model set back to train mode\n", - "Epoch 6804: model parameters saved\n", - "Epoch 6805 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6805: avg_loss appended (2.7778)\n", - "Epoch 6805: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6805: accuracy appended (80.56%)\n", - "Epoch 6805: model set back to train mode\n", - "Epoch 6805: model parameters saved\n", - "Epoch 6806 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6806: avg_loss appended (2.7778)\n", - "Epoch 6806: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6806: accuracy appended (80.56%)\n", - "Epoch 6806: model set back to train mode\n", - "Epoch 6806: model parameters saved\n", - "Epoch 6807 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6807: avg_loss appended (2.7778)\n", - "Epoch 6807: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6807: accuracy appended (80.56%)\n", - "Epoch 6807: model set back to train mode\n", - "Epoch 6807: model parameters saved\n", - "Epoch 6808 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6808: avg_loss appended (2.7778)\n", - "Epoch 6808: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6808: accuracy appended (80.56%)\n", - "Epoch 6808: model set back to train mode\n", - "Epoch 6808: model parameters saved\n", - "Epoch 6809 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6809: avg_loss appended (2.7778)\n", - "Epoch 6809: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6809: accuracy appended (80.56%)\n", - "Epoch 6809: model set back to train mode\n", - "Epoch 6809: model parameters saved\n", - "Epoch 6810 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6810: avg_loss appended (2.7778)\n", - "Epoch 6810: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6810: accuracy appended (80.56%)\n", - "Epoch 6810: model set back to train mode\n", - "Epoch 6810: model parameters saved\n", - "Epoch 6811 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6811: avg_loss appended (2.7778)\n", - "Epoch 6811: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6811: accuracy appended (80.56%)\n", - "Epoch 6811: model set back to train mode\n", - "Epoch 6811: model parameters saved\n", - "Epoch 6812 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6812: avg_loss appended (2.7778)\n", - "Epoch 6812: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6812: accuracy appended (80.56%)\n", - "Epoch 6812: model set back to train mode\n", - "Epoch 6812: model parameters saved\n", - "Epoch 6813 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6813: avg_loss appended (2.7778)\n", - "Epoch 6813: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6813: accuracy appended (80.56%)\n", - "Epoch 6813: model set back to train mode\n", - "Epoch 6813: model parameters saved\n", - "Epoch 6814 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6814: avg_loss appended (2.7778)\n", - "Epoch 6814: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6814: accuracy appended (80.56%)\n", - "Epoch 6814: model set back to train mode\n", - "Epoch 6814: model parameters saved\n", - "Epoch 6815 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6815: avg_loss appended (2.7778)\n", - "Epoch 6815: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6815: accuracy appended (80.56%)\n", - "Epoch 6815: model set back to train mode\n", - "Epoch 6815: model parameters saved\n", - "Epoch 6816 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6816: avg_loss appended (2.7778)\n", - "Epoch 6816: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6816: accuracy appended (80.56%)\n", - "Epoch 6816: model set back to train mode\n", - "Epoch 6816: model parameters saved\n", - "Epoch 6817 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6817: avg_loss appended (2.7778)\n", - "Epoch 6817: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6817: accuracy appended (80.56%)\n", - "Epoch 6817: model set back to train mode\n", - "Epoch 6817: model parameters saved\n", - "Epoch 6818 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6818: avg_loss appended (2.7778)\n", - "Epoch 6818: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6818: accuracy appended (80.56%)\n", - "Epoch 6818: model set back to train mode\n", - "Epoch 6818: model parameters saved\n", - "Epoch 6819 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6819: avg_loss appended (2.7778)\n", - "Epoch 6819: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6819: accuracy appended (80.56%)\n", - "Epoch 6819: model set back to train mode\n", - "Epoch 6819: model parameters saved\n", - "Epoch 6820 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6820: avg_loss appended (2.7778)\n", - "Epoch 6820: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6820: accuracy appended (80.56%)\n", - "Epoch 6820: model set back to train mode\n", - "Epoch 6820: model parameters saved\n", - "Epoch 6821 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6821: avg_loss appended (2.7778)\n", - "Epoch 6821: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6821: accuracy appended (80.56%)\n", - "Epoch 6821: model set back to train mode\n", - "Epoch 6821: model parameters saved\n", - "Epoch 6822 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6822: avg_loss appended (2.7778)\n", - "Epoch 6822: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6822: accuracy appended (80.56%)\n", - "Epoch 6822: model set back to train mode\n", - "Epoch 6822: model parameters saved\n", - "Epoch 6823 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6823: avg_loss appended (2.7778)\n", - "Epoch 6823: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6823: accuracy appended (80.56%)\n", - "Epoch 6823: model set back to train mode\n", - "Epoch 6823: model parameters saved\n", - "Epoch 6824 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6824: avg_loss appended (2.7778)\n", - "Epoch 6824: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6824: accuracy appended (80.56%)\n", - "Epoch 6824: model set back to train mode\n", - "Epoch 6824: model parameters saved\n", - "Epoch 6825 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6825: avg_loss appended (2.7778)\n", - "Epoch 6825: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6825: accuracy appended (80.56%)\n", - "Epoch 6825: model set back to train mode\n", - "Epoch 6825: model parameters saved\n", - "Epoch 6826 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6826: avg_loss appended (2.7778)\n", - "Epoch 6826: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6826: accuracy appended (80.56%)\n", - "Epoch 6826: model set back to train mode\n", - "Epoch 6826: model parameters saved\n", - "Epoch 6827 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6827: avg_loss appended (2.7778)\n", - "Epoch 6827: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6827: accuracy appended (80.56%)\n", - "Epoch 6827: model set back to train mode\n", - "Epoch 6827: model parameters saved\n", - "Epoch 6828 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6828: avg_loss appended (2.7778)\n", - "Epoch 6828: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6828: accuracy appended (80.56%)\n", - "Epoch 6828: model set back to train mode\n", - "Epoch 6828: model parameters saved\n", - "Epoch 6829 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6829: avg_loss appended (2.7778)\n", - "Epoch 6829: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6829: accuracy appended (80.56%)\n", - "Epoch 6829: model set back to train mode\n", - "Epoch 6829: model parameters saved\n", - "Epoch 6830 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6830: avg_loss appended (2.7778)\n", - "Epoch 6830: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6830: accuracy appended (80.56%)\n", - "Epoch 6830: model set back to train mode\n", - "Epoch 6830: model parameters saved\n", - "Epoch 6831 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6831: avg_loss appended (2.7778)\n", - "Epoch 6831: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6831: accuracy appended (80.56%)\n", - "Epoch 6831: model set back to train mode\n", - "Epoch 6831: model parameters saved\n", - "Epoch 6832 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6832: avg_loss appended (2.7778)\n", - "Epoch 6832: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6832: accuracy appended (80.56%)\n", - "Epoch 6832: model set back to train mode\n", - "Epoch 6832: model parameters saved\n", - "Epoch 6833 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6833: avg_loss appended (2.7778)\n", - "Epoch 6833: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6833: accuracy appended (80.56%)\n", - "Epoch 6833: model set back to train mode\n", - "Epoch 6833: model parameters saved\n", - "Epoch 6834 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6834: avg_loss appended (2.7778)\n", - "Epoch 6834: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6834: accuracy appended (80.56%)\n", - "Epoch 6834: model set back to train mode\n", - "Epoch 6834: model parameters saved\n", - "Epoch 6835 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6835: avg_loss appended (2.7778)\n", - "Epoch 6835: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6835: accuracy appended (80.56%)\n", - "Epoch 6835: model set back to train mode\n", - "Epoch 6835: model parameters saved\n", - "Epoch 6836 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6836: avg_loss appended (2.7778)\n", - "Epoch 6836: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6836: accuracy appended (80.56%)\n", - "Epoch 6836: model set back to train mode\n", - "Epoch 6836: model parameters saved\n", - "Epoch 6837 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6837: avg_loss appended (2.7778)\n", - "Epoch 6837: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6837: accuracy appended (80.56%)\n", - "Epoch 6837: model set back to train mode\n", - "Epoch 6837: model parameters saved\n", - "Epoch 6838 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6838: avg_loss appended (2.7778)\n", - "Epoch 6838: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6838: accuracy appended (80.56%)\n", - "Epoch 6838: model set back to train mode\n", - "Epoch 6838: model parameters saved\n", - "Epoch 6839 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6839: avg_loss appended (2.7778)\n", - "Epoch 6839: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6839: accuracy appended (80.56%)\n", - "Epoch 6839: model set back to train mode\n", - "Epoch 6839: model parameters saved\n", - "Epoch 6840 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6840: avg_loss appended (2.7778)\n", - "Epoch 6840: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6840: accuracy appended (80.56%)\n", - "Epoch 6840: model set back to train mode\n", - "Epoch 6840: model parameters saved\n", - "Epoch 6841 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6841: avg_loss appended (2.7778)\n", - "Epoch 6841: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6841: accuracy appended (80.56%)\n", - "Epoch 6841: model set back to train mode\n", - "Epoch 6841: model parameters saved\n", - "Epoch 6842 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6842: avg_loss appended (2.7778)\n", - "Epoch 6842: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6842: accuracy appended (80.56%)\n", - "Epoch 6842: model set back to train mode\n", - "Epoch 6842: model parameters saved\n", - "Epoch 6843 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6843: avg_loss appended (2.7778)\n", - "Epoch 6843: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6843: accuracy appended (80.56%)\n", - "Epoch 6843: model set back to train mode\n", - "Epoch 6843: model parameters saved\n", - "Epoch 6844 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6844: avg_loss appended (2.7778)\n", - "Epoch 6844: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6844: accuracy appended (80.56%)\n", - "Epoch 6844: model set back to train mode\n", - "Epoch 6844: model parameters saved\n", - "Epoch 6845 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6845: avg_loss appended (2.7778)\n", - "Epoch 6845: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6845: accuracy appended (80.56%)\n", - "Epoch 6845: model set back to train mode\n", - "Epoch 6845: model parameters saved\n", - "Epoch 6846 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6846: avg_loss appended (2.7778)\n", - "Epoch 6846: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6846: accuracy appended (80.56%)\n", - "Epoch 6846: model set back to train mode\n", - "Epoch 6846: model parameters saved\n", - "Epoch 6847 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6847: avg_loss appended (2.7778)\n", - "Epoch 6847: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6847: accuracy appended (80.56%)\n", - "Epoch 6847: model set back to train mode\n", - "Epoch 6847: model parameters saved\n", - "Epoch 6848 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6848: avg_loss appended (2.7778)\n", - "Epoch 6848: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6848: accuracy appended (80.56%)\n", - "Epoch 6848: model set back to train mode\n", - "Epoch 6848: model parameters saved\n", - "Epoch 6849 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6849: avg_loss appended (2.7778)\n", - "Epoch 6849: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6849: accuracy appended (80.56%)\n", - "Epoch 6849: model set back to train mode\n", - "Epoch 6849: model parameters saved\n", - "Epoch 6850 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6850: avg_loss appended (2.7778)\n", - "Epoch 6850: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6850: accuracy appended (80.56%)\n", - "Epoch 6850: model set back to train mode\n", - "Epoch 6850: model parameters saved\n", - "Epoch 6851 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6851: avg_loss appended (2.7778)\n", - "Epoch 6851: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6851: accuracy appended (80.56%)\n", - "Epoch 6851: model set back to train mode\n", - "Epoch 6851: model parameters saved\n", - "Epoch 6852 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6852: avg_loss appended (2.7778)\n", - "Epoch 6852: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6852: accuracy appended (80.56%)\n", - "Epoch 6852: model set back to train mode\n", - "Epoch 6852: model parameters saved\n", - "Epoch 6853 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6853: avg_loss appended (2.7778)\n", - "Epoch 6853: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6853: accuracy appended (80.56%)\n", - "Epoch 6853: model set back to train mode\n", - "Epoch 6853: model parameters saved\n", - "Epoch 6854 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6854: avg_loss appended (2.7778)\n", - "Epoch 6854: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6854: accuracy appended (80.56%)\n", - "Epoch 6854: model set back to train mode\n", - "Epoch 6854: model parameters saved\n", - "Epoch 6855 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6855: avg_loss appended (2.7778)\n", - "Epoch 6855: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6855: accuracy appended (80.56%)\n", - "Epoch 6855: model set back to train mode\n", - "Epoch 6855: model parameters saved\n", - "Epoch 6856 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6856: avg_loss appended (2.7778)\n", - "Epoch 6856: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6856: accuracy appended (80.56%)\n", - "Epoch 6856: model set back to train mode\n", - "Epoch 6856: model parameters saved\n", - "Epoch 6857 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6857: avg_loss appended (2.7778)\n", - "Epoch 6857: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 6857: accuracy appended (83.33%)\n", - "Epoch 6857: model set back to train mode\n", - "Epoch 6857: model parameters saved\n", - "Epoch 6858 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6858: avg_loss appended (2.7778)\n", - "Epoch 6858: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6858: accuracy appended (80.56%)\n", - "Epoch 6858: model set back to train mode\n", - "Epoch 6858: model parameters saved\n", - "Epoch 6859 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6859: avg_loss appended (2.7778)\n", - "Epoch 6859: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6859: accuracy appended (80.56%)\n", - "Epoch 6859: model set back to train mode\n", - "Epoch 6859: model parameters saved\n", - "Epoch 6860 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6860: avg_loss appended (2.7778)\n", - "Epoch 6860: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6860: accuracy appended (80.56%)\n", - "Epoch 6860: model set back to train mode\n", - "Epoch 6860: model parameters saved\n", - "Epoch 6861 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6861: avg_loss appended (2.7778)\n", - "Epoch 6861: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6861: accuracy appended (80.56%)\n", - "Epoch 6861: model set back to train mode\n", - "Epoch 6861: model parameters saved\n", - "Epoch 6862 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6862: avg_loss appended (2.7778)\n", - "Epoch 6862: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6862: accuracy appended (80.56%)\n", - "Epoch 6862: model set back to train mode\n", - "Epoch 6862: model parameters saved\n", - "Epoch 6863 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6863: avg_loss appended (2.7778)\n", - "Epoch 6863: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6863: accuracy appended (80.56%)\n", - "Epoch 6863: model set back to train mode\n", - "Epoch 6863: model parameters saved\n", - "Epoch 6864 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6864: avg_loss appended (2.7778)\n", - "Epoch 6864: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6864: accuracy appended (80.56%)\n", - "Epoch 6864: model set back to train mode\n", - "Epoch 6864: model parameters saved\n", - "Epoch 6865 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6865: avg_loss appended (2.7778)\n", - "Epoch 6865: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6865: accuracy appended (80.56%)\n", - "Epoch 6865: model set back to train mode\n", - "Epoch 6865: model parameters saved\n", - "Epoch 6866 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6866: avg_loss appended (2.7778)\n", - "Epoch 6866: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6866: accuracy appended (80.56%)\n", - "Epoch 6866: model set back to train mode\n", - "Epoch 6866: model parameters saved\n", - "Epoch 6867 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6867: avg_loss appended (2.7778)\n", - "Epoch 6867: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6867: accuracy appended (80.56%)\n", - "Epoch 6867: model set back to train mode\n", - "Epoch 6867: model parameters saved\n", - "Epoch 6868 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6868: avg_loss appended (2.7778)\n", - "Epoch 6868: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6868: accuracy appended (80.56%)\n", - "Epoch 6868: model set back to train mode\n", - "Epoch 6868: model parameters saved\n", - "Epoch 6869 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6869: avg_loss appended (2.7778)\n", - "Epoch 6869: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6869: accuracy appended (80.56%)\n", - "Epoch 6869: model set back to train mode\n", - "Epoch 6869: model parameters saved\n", - "Epoch 6870 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6870: avg_loss appended (2.7778)\n", - "Epoch 6870: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6870: accuracy appended (80.56%)\n", - "Epoch 6870: model set back to train mode\n", - "Epoch 6870: model parameters saved\n", - "Epoch 6871 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6871: avg_loss appended (2.7778)\n", - "Epoch 6871: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6871: accuracy appended (80.56%)\n", - "Epoch 6871: model set back to train mode\n", - "Epoch 6871: model parameters saved\n", - "Epoch 6872 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6872: avg_loss appended (2.7778)\n", - "Epoch 6872: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6872: accuracy appended (80.56%)\n", - "Epoch 6872: model set back to train mode\n", - "Epoch 6872: model parameters saved\n", - "Epoch 6873 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6873: avg_loss appended (2.7778)\n", - "Epoch 6873: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6873: accuracy appended (80.56%)\n", - "Epoch 6873: model set back to train mode\n", - "Epoch 6873: model parameters saved\n", - "Epoch 6874 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6874: avg_loss appended (2.7778)\n", - "Epoch 6874: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6874: accuracy appended (80.56%)\n", - "Epoch 6874: model set back to train mode\n", - "Epoch 6874: model parameters saved\n", - "Epoch 6875 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6875: avg_loss appended (2.7778)\n", - "Epoch 6875: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6875: accuracy appended (80.56%)\n", - "Epoch 6875: model set back to train mode\n", - "Epoch 6875: model parameters saved\n", - "Epoch 6876 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6876: avg_loss appended (2.7778)\n", - "Epoch 6876: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6876: accuracy appended (80.56%)\n", - "Epoch 6876: model set back to train mode\n", - "Epoch 6876: model parameters saved\n", - "Epoch 6877 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6877: avg_loss appended (2.7778)\n", - "Epoch 6877: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6877: accuracy appended (80.56%)\n", - "Epoch 6877: model set back to train mode\n", - "Epoch 6877: model parameters saved\n", - "Epoch 6878 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6878: avg_loss appended (2.7778)\n", - "Epoch 6878: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6878: accuracy appended (80.56%)\n", - "Epoch 6878: model set back to train mode\n", - "Epoch 6878: model parameters saved\n", - "Epoch 6879 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6879: avg_loss appended (2.7778)\n", - "Epoch 6879: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6879: accuracy appended (80.56%)\n", - "Epoch 6879: model set back to train mode\n", - "Epoch 6879: model parameters saved\n", - "Epoch 6880 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6880: avg_loss appended (2.7778)\n", - "Epoch 6880: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6880: accuracy appended (80.56%)\n", - "Epoch 6880: model set back to train mode\n", - "Epoch 6880: model parameters saved\n", - "Epoch 6881 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6881: avg_loss appended (2.7778)\n", - "Epoch 6881: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6881: accuracy appended (80.56%)\n", - "Epoch 6881: model set back to train mode\n", - "Epoch 6881: model parameters saved\n", - "Epoch 6882 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6882: avg_loss appended (2.7778)\n", - "Epoch 6882: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6882: accuracy appended (80.56%)\n", - "Epoch 6882: model set back to train mode\n", - "Epoch 6882: model parameters saved\n", - "Epoch 6883 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6883: avg_loss appended (2.7778)\n", - "Epoch 6883: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6883: accuracy appended (80.56%)\n", - "Epoch 6883: model set back to train mode\n", - "Epoch 6883: model parameters saved\n", - "Epoch 6884 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6884: avg_loss appended (2.7778)\n", - "Epoch 6884: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6884: accuracy appended (80.56%)\n", - "Epoch 6884: model set back to train mode\n", - "Epoch 6884: model parameters saved\n", - "Epoch 6885 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6885: avg_loss appended (2.7778)\n", - "Epoch 6885: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6885: accuracy appended (80.56%)\n", - "Epoch 6885: model set back to train mode\n", - "Epoch 6885: model parameters saved\n", - "Epoch 6886 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6886: avg_loss appended (2.7778)\n", - "Epoch 6886: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6886: accuracy appended (80.56%)\n", - "Epoch 6886: model set back to train mode\n", - "Epoch 6886: model parameters saved\n", - "Epoch 6887 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6887: avg_loss appended (2.7778)\n", - "Epoch 6887: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6887: accuracy appended (80.56%)\n", - "Epoch 6887: model set back to train mode\n", - "Epoch 6887: model parameters saved\n", - "Epoch 6888 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6888: avg_loss appended (2.7778)\n", - "Epoch 6888: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6888: accuracy appended (80.56%)\n", - "Epoch 6888: model set back to train mode\n", - "Epoch 6888: model parameters saved\n", - "Epoch 6889 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6889: avg_loss appended (2.7778)\n", - "Epoch 6889: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6889: accuracy appended (80.56%)\n", - "Epoch 6889: model set back to train mode\n", - "Epoch 6889: model parameters saved\n", - "Epoch 6890 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6890: avg_loss appended (2.7778)\n", - "Epoch 6890: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6890: accuracy appended (80.56%)\n", - "Epoch 6890: model set back to train mode\n", - "Epoch 6890: model parameters saved\n", - "Epoch 6891 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6891: avg_loss appended (2.7778)\n", - "Epoch 6891: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6891: accuracy appended (80.56%)\n", - "Epoch 6891: model set back to train mode\n", - "Epoch 6891: model parameters saved\n", - "Epoch 6892 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6892: avg_loss appended (2.7778)\n", - "Epoch 6892: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6892: accuracy appended (80.56%)\n", - "Epoch 6892: model set back to train mode\n", - "Epoch 6892: model parameters saved\n", - "Epoch 6893 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6893: avg_loss appended (2.7778)\n", - "Epoch 6893: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6893: accuracy appended (80.56%)\n", - "Epoch 6893: model set back to train mode\n", - "Epoch 6893: model parameters saved\n", - "Epoch 6894 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6894: avg_loss appended (2.7778)\n", - "Epoch 6894: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6894: accuracy appended (80.56%)\n", - "Epoch 6894: model set back to train mode\n", - "Epoch 6894: model parameters saved\n", - "Epoch 6895 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6895: avg_loss appended (2.7778)\n", - "Epoch 6895: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6895: accuracy appended (80.56%)\n", - "Epoch 6895: model set back to train mode\n", - "Epoch 6895: model parameters saved\n", - "Epoch 6896 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6896: avg_loss appended (2.7778)\n", - "Epoch 6896: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6896: accuracy appended (80.56%)\n", - "Epoch 6896: model set back to train mode\n", - "Epoch 6896: model parameters saved\n", - "Epoch 6897 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6897: avg_loss appended (2.7778)\n", - "Epoch 6897: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6897: accuracy appended (80.56%)\n", - "Epoch 6897: model set back to train mode\n", - "Epoch 6897: model parameters saved\n", - "Epoch 6898 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6898: avg_loss appended (2.7778)\n", - "Epoch 6898: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6898: accuracy appended (80.56%)\n", - "Epoch 6898: model set back to train mode\n", - "Epoch 6898: model parameters saved\n", - "Epoch 6899 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6899: avg_loss appended (2.7778)\n", - "Epoch 6899: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6899: accuracy appended (80.56%)\n", - "Epoch 6899: model set back to train mode\n", - "Epoch 6899: model parameters saved\n", - "Epoch 6900 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6900: avg_loss appended (2.7778)\n", - "Epoch 6900: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6900: accuracy appended (80.56%)\n", - "Epoch 6900: model set back to train mode\n", - "Epoch 6900: model parameters saved\n", - "Epoch 6900/10000, Loss: 2.7778, Accuracy: 80.56%\n", - "Epoch 6901 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6901: avg_loss appended (2.7778)\n", - "Epoch 6901: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6901: accuracy appended (80.56%)\n", - "Epoch 6901: model set back to train mode\n", - "Epoch 6901: model parameters saved\n", - "Epoch 6902 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6902: avg_loss appended (2.7778)\n", - "Epoch 6902: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6902: accuracy appended (80.56%)\n", - "Epoch 6902: model set back to train mode\n", - "Epoch 6902: model parameters saved\n", - "Epoch 6903 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6903: avg_loss appended (2.7778)\n", - "Epoch 6903: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6903: accuracy appended (80.56%)\n", - "Epoch 6903: model set back to train mode\n", - "Epoch 6903: model parameters saved\n", - "Epoch 6904 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6904: avg_loss appended (2.7778)\n", - "Epoch 6904: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6904: accuracy appended (80.56%)\n", - "Epoch 6904: model set back to train mode\n", - "Epoch 6904: model parameters saved\n", - "Epoch 6905 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6905: avg_loss appended (2.7778)\n", - "Epoch 6905: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6905: accuracy appended (80.56%)\n", - "Epoch 6905: model set back to train mode\n", - "Epoch 6905: model parameters saved\n", - "Epoch 6906 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6906: avg_loss appended (2.7778)\n", - "Epoch 6906: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6906: accuracy appended (80.56%)\n", - "Epoch 6906: model set back to train mode\n", - "Epoch 6906: model parameters saved\n", - "Epoch 6907 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6907: avg_loss appended (2.7778)\n", - "Epoch 6907: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6907: accuracy appended (80.56%)\n", - "Epoch 6907: model set back to train mode\n", - "Epoch 6907: model parameters saved\n", - "Epoch 6908 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6908: avg_loss appended (2.7778)\n", - "Epoch 6908: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6908: accuracy appended (80.56%)\n", - "Epoch 6908: model set back to train mode\n", - "Epoch 6908: model parameters saved\n", - "Epoch 6909 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6909: avg_loss appended (2.7778)\n", - "Epoch 6909: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6909: accuracy appended (80.56%)\n", - "Epoch 6909: model set back to train mode\n", - "Epoch 6909: model parameters saved\n", - "Epoch 6910 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6910: avg_loss appended (2.7778)\n", - "Epoch 6910: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6910: accuracy appended (80.56%)\n", - "Epoch 6910: model set back to train mode\n", - "Epoch 6910: model parameters saved\n", - "Epoch 6911 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6911: avg_loss appended (2.7778)\n", - "Epoch 6911: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6911: accuracy appended (80.56%)\n", - "Epoch 6911: model set back to train mode\n", - "Epoch 6911: model parameters saved\n", - "Epoch 6912 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6912: avg_loss appended (2.7778)\n", - "Epoch 6912: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6912: accuracy appended (80.56%)\n", - "Epoch 6912: model set back to train mode\n", - "Epoch 6912: model parameters saved\n", - "Epoch 6913 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6913: avg_loss appended (2.7778)\n", - "Epoch 6913: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6913: accuracy appended (80.56%)\n", - "Epoch 6913: model set back to train mode\n", - "Epoch 6913: model parameters saved\n", - "Epoch 6914 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6914: avg_loss appended (2.7778)\n", - "Epoch 6914: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6914: accuracy appended (80.56%)\n", - "Epoch 6914: model set back to train mode\n", - "Epoch 6914: model parameters saved\n", - "Epoch 6915 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6915: avg_loss appended (2.7778)\n", - "Epoch 6915: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6915: accuracy appended (80.56%)\n", - "Epoch 6915: model set back to train mode\n", - "Epoch 6915: model parameters saved\n", - "Epoch 6916 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6916: avg_loss appended (2.7778)\n", - "Epoch 6916: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6916: accuracy appended (80.56%)\n", - "Epoch 6916: model set back to train mode\n", - "Epoch 6916: model parameters saved\n", - "Epoch 6917 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6917: avg_loss appended (2.7778)\n", - "Epoch 6917: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6917: accuracy appended (80.56%)\n", - "Epoch 6917: model set back to train mode\n", - "Epoch 6917: model parameters saved\n", - "Epoch 6918 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6918: avg_loss appended (2.7778)\n", - "Epoch 6918: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6918: accuracy appended (80.56%)\n", - "Epoch 6918: model set back to train mode\n", - "Epoch 6918: model parameters saved\n", - "Epoch 6919 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6919: avg_loss appended (2.7778)\n", - "Epoch 6919: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6919: accuracy appended (80.56%)\n", - "Epoch 6919: model set back to train mode\n", - "Epoch 6919: model parameters saved\n", - "Epoch 6920 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6920: avg_loss appended (2.7778)\n", - "Epoch 6920: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6920: accuracy appended (80.56%)\n", - "Epoch 6920: model set back to train mode\n", - "Epoch 6920: model parameters saved\n", - "Epoch 6921 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6921: avg_loss appended (2.7778)\n", - "Epoch 6921: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6921: accuracy appended (80.56%)\n", - "Epoch 6921: model set back to train mode\n", - "Epoch 6921: model parameters saved\n", - "Epoch 6922 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6922: avg_loss appended (2.7778)\n", - "Epoch 6922: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6922: accuracy appended (80.56%)\n", - "Epoch 6922: model set back to train mode\n", - "Epoch 6922: model parameters saved\n", - "Epoch 6923 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6923: avg_loss appended (2.7778)\n", - "Epoch 6923: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6923: accuracy appended (80.56%)\n", - "Epoch 6923: model set back to train mode\n", - "Epoch 6923: model parameters saved\n", - "Epoch 6924 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6924: avg_loss appended (2.7778)\n", - "Epoch 6924: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6924: accuracy appended (80.56%)\n", - "Epoch 6924: model set back to train mode\n", - "Epoch 6924: model parameters saved\n", - "Epoch 6925 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6925: avg_loss appended (2.7778)\n", - "Epoch 6925: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6925: accuracy appended (80.56%)\n", - "Epoch 6925: model set back to train mode\n", - "Epoch 6925: model parameters saved\n", - "Epoch 6926 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6926: avg_loss appended (2.7778)\n", - "Epoch 6926: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6926: accuracy appended (80.56%)\n", - "Epoch 6926: model set back to train mode\n", - "Epoch 6926: model parameters saved\n", - "Epoch 6927 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6927: avg_loss appended (2.7778)\n", - "Epoch 6927: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6927: accuracy appended (80.56%)\n", - "Epoch 6927: model set back to train mode\n", - "Epoch 6927: model parameters saved\n", - "Epoch 6928 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6928: avg_loss appended (2.7778)\n", - "Epoch 6928: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6928: accuracy appended (80.56%)\n", - "Epoch 6928: model set back to train mode\n", - "Epoch 6928: model parameters saved\n", - "Epoch 6929 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6929: avg_loss appended (2.7778)\n", - "Epoch 6929: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6929: accuracy appended (80.56%)\n", - "Epoch 6929: model set back to train mode\n", - "Epoch 6929: model parameters saved\n", - "Epoch 6930 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6930: avg_loss appended (2.7778)\n", - "Epoch 6930: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6930: accuracy appended (80.56%)\n", - "Epoch 6930: model set back to train mode\n", - "Epoch 6930: model parameters saved\n", - "Epoch 6931 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6931: avg_loss appended (2.7778)\n", - "Epoch 6931: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6931: accuracy appended (80.56%)\n", - "Epoch 6931: model set back to train mode\n", - "Epoch 6931: model parameters saved\n", - "Epoch 6932 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6932: avg_loss appended (2.7778)\n", - "Epoch 6932: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6932: accuracy appended (80.56%)\n", - "Epoch 6932: model set back to train mode\n", - "Epoch 6932: model parameters saved\n", - "Epoch 6933 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6933: avg_loss appended (2.7778)\n", - "Epoch 6933: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6933: accuracy appended (80.56%)\n", - "Epoch 6933: model set back to train mode\n", - "Epoch 6933: model parameters saved\n", - "Epoch 6934 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6934: avg_loss appended (2.7778)\n", - "Epoch 6934: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6934: accuracy appended (80.56%)\n", - "Epoch 6934: model set back to train mode\n", - "Epoch 6934: model parameters saved\n", - "Epoch 6935 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6935: avg_loss appended (2.7778)\n", - "Epoch 6935: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6935: accuracy appended (80.56%)\n", - "Epoch 6935: model set back to train mode\n", - "Epoch 6935: model parameters saved\n", - "Epoch 6936 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6936: avg_loss appended (2.7778)\n", - "Epoch 6936: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6936: accuracy appended (80.56%)\n", - "Epoch 6936: model set back to train mode\n", - "Epoch 6936: model parameters saved\n", - "Epoch 6937 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6937: avg_loss appended (2.7778)\n", - "Epoch 6937: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6937: accuracy appended (80.56%)\n", - "Epoch 6937: model set back to train mode\n", - "Epoch 6937: model parameters saved\n", - "Epoch 6938 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6938: avg_loss appended (2.7778)\n", - "Epoch 6938: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6938: accuracy appended (80.56%)\n", - "Epoch 6938: model set back to train mode\n", - "Epoch 6938: model parameters saved\n", - "Epoch 6939 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6939: avg_loss appended (2.7778)\n", - "Epoch 6939: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6939: accuracy appended (80.56%)\n", - "Epoch 6939: model set back to train mode\n", - "Epoch 6939: model parameters saved\n", - "Epoch 6940 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6940: avg_loss appended (2.7778)\n", - "Epoch 6940: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6940: accuracy appended (80.56%)\n", - "Epoch 6940: model set back to train mode\n", - "Epoch 6940: model parameters saved\n", - "Epoch 6941 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6941: avg_loss appended (2.7778)\n", - "Epoch 6941: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6941: accuracy appended (80.56%)\n", - "Epoch 6941: model set back to train mode\n", - "Epoch 6941: model parameters saved\n", - "Epoch 6942 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6942: avg_loss appended (2.7778)\n", - "Epoch 6942: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6942: accuracy appended (80.56%)\n", - "Epoch 6942: model set back to train mode\n", - "Epoch 6942: model parameters saved\n", - "Epoch 6943 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6943: avg_loss appended (2.7778)\n", - "Epoch 6943: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6943: accuracy appended (80.56%)\n", - "Epoch 6943: model set back to train mode\n", - "Epoch 6943: model parameters saved\n", - "Epoch 6944 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6944: avg_loss appended (2.7778)\n", - "Epoch 6944: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6944: accuracy appended (80.56%)\n", - "Epoch 6944: model set back to train mode\n", - "Epoch 6944: model parameters saved\n", - "Epoch 6945 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6945: avg_loss appended (2.7778)\n", - "Epoch 6945: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6945: accuracy appended (80.56%)\n", - "Epoch 6945: model set back to train mode\n", - "Epoch 6945: model parameters saved\n", - "Epoch 6946 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6946: avg_loss appended (2.7778)\n", - "Epoch 6946: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6946: accuracy appended (80.56%)\n", - "Epoch 6946: model set back to train mode\n", - "Epoch 6946: model parameters saved\n", - "Epoch 6947 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6947: avg_loss appended (2.7778)\n", - "Epoch 6947: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6947: accuracy appended (80.56%)\n", - "Epoch 6947: model set back to train mode\n", - "Epoch 6947: model parameters saved\n", - "Epoch 6948 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6948: avg_loss appended (2.7778)\n", - "Epoch 6948: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6948: accuracy appended (80.56%)\n", - "Epoch 6948: model set back to train mode\n", - "Epoch 6948: model parameters saved\n", - "Epoch 6949 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6949: avg_loss appended (2.7778)\n", - "Epoch 6949: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6949: accuracy appended (80.56%)\n", - "Epoch 6949: model set back to train mode\n", - "Epoch 6949: model parameters saved\n", - "Epoch 6950 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6950: avg_loss appended (2.7778)\n", - "Epoch 6950: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6950: accuracy appended (80.56%)\n", - "Epoch 6950: model set back to train mode\n", - "Epoch 6950: model parameters saved\n", - "Epoch 6951 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6951: avg_loss appended (2.7778)\n", - "Epoch 6951: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6951: accuracy appended (80.56%)\n", - "Epoch 6951: model set back to train mode\n", - "Epoch 6951: model parameters saved\n", - "Epoch 6952 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6952: avg_loss appended (2.7778)\n", - "Epoch 6952: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6952: accuracy appended (80.56%)\n", - "Epoch 6952: model set back to train mode\n", - "Epoch 6952: model parameters saved\n", - "Epoch 6953 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6953: avg_loss appended (2.7778)\n", - "Epoch 6953: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6953: accuracy appended (80.56%)\n", - "Epoch 6953: model set back to train mode\n", - "Epoch 6953: model parameters saved\n", - "Epoch 6954 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6954: avg_loss appended (2.7778)\n", - "Epoch 6954: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6954: accuracy appended (80.56%)\n", - "Epoch 6954: model set back to train mode\n", - "Epoch 6954: model parameters saved\n", - "Epoch 6955 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6955: avg_loss appended (2.7778)\n", - "Epoch 6955: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6955: accuracy appended (80.56%)\n", - "Epoch 6955: model set back to train mode\n", - "Epoch 6955: model parameters saved\n", - "Epoch 6956 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6956: avg_loss appended (2.7778)\n", - "Epoch 6956: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6956: accuracy appended (80.56%)\n", - "Epoch 6956: model set back to train mode\n", - "Epoch 6956: model parameters saved\n", - "Epoch 6957 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6957: avg_loss appended (2.7778)\n", - "Epoch 6957: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6957: accuracy appended (80.56%)\n", - "Epoch 6957: model set back to train mode\n", - "Epoch 6957: model parameters saved\n", - "Epoch 6958 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6958: avg_loss appended (2.7778)\n", - "Epoch 6958: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6958: accuracy appended (80.56%)\n", - "Epoch 6958: model set back to train mode\n", - "Epoch 6958: model parameters saved\n", - "Epoch 6959 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6959: avg_loss appended (2.7778)\n", - "Epoch 6959: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6959: accuracy appended (80.56%)\n", - "Epoch 6959: model set back to train mode\n", - "Epoch 6959: model parameters saved\n", - "Epoch 6960 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6960: avg_loss appended (2.7778)\n", - "Epoch 6960: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6960: accuracy appended (80.56%)\n", - "Epoch 6960: model set back to train mode\n", - "Epoch 6960: model parameters saved\n", - "Epoch 6961 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6961: avg_loss appended (2.7778)\n", - "Epoch 6961: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6961: accuracy appended (80.56%)\n", - "Epoch 6961: model set back to train mode\n", - "Epoch 6961: model parameters saved\n", - "Epoch 6962 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6962: avg_loss appended (2.7778)\n", - "Epoch 6962: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6962: accuracy appended (80.56%)\n", - "Epoch 6962: model set back to train mode\n", - "Epoch 6962: model parameters saved\n", - "Epoch 6963 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6963: avg_loss appended (2.7778)\n", - "Epoch 6963: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6963: accuracy appended (80.56%)\n", - "Epoch 6963: model set back to train mode\n", - "Epoch 6963: model parameters saved\n", - "Epoch 6964 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6964: avg_loss appended (2.7778)\n", - "Epoch 6964: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6964: accuracy appended (80.56%)\n", - "Epoch 6964: model set back to train mode\n", - "Epoch 6964: model parameters saved\n", - "Epoch 6965 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6965: avg_loss appended (2.7778)\n", - "Epoch 6965: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6965: accuracy appended (80.56%)\n", - "Epoch 6965: model set back to train mode\n", - "Epoch 6965: model parameters saved\n", - "Epoch 6966 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6966: avg_loss appended (2.7778)\n", - "Epoch 6966: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6966: accuracy appended (80.56%)\n", - "Epoch 6966: model set back to train mode\n", - "Epoch 6966: model parameters saved\n", - "Epoch 6967 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6967: avg_loss appended (2.7778)\n", - "Epoch 6967: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6967: accuracy appended (80.56%)\n", - "Epoch 6967: model set back to train mode\n", - "Epoch 6967: model parameters saved\n", - "Epoch 6968 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6968: avg_loss appended (2.7778)\n", - "Epoch 6968: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6968: accuracy appended (80.56%)\n", - "Epoch 6968: model set back to train mode\n", - "Epoch 6968: model parameters saved\n", - "Epoch 6969 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6969: avg_loss appended (2.7778)\n", - "Epoch 6969: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6969: accuracy appended (80.56%)\n", - "Epoch 6969: model set back to train mode\n", - "Epoch 6969: model parameters saved\n", - "Epoch 6970 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6970: avg_loss appended (2.7778)\n", - "Epoch 6970: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6970: accuracy appended (80.56%)\n", - "Epoch 6970: model set back to train mode\n", - "Epoch 6970: model parameters saved\n", - "Epoch 6971 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6971: avg_loss appended (2.7778)\n", - "Epoch 6971: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6971: accuracy appended (80.56%)\n", - "Epoch 6971: model set back to train mode\n", - "Epoch 6971: model parameters saved\n", - "Epoch 6972 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6972: avg_loss appended (2.7778)\n", - "Epoch 6972: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6972: accuracy appended (80.56%)\n", - "Epoch 6972: model set back to train mode\n", - "Epoch 6972: model parameters saved\n", - "Epoch 6973 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6973: avg_loss appended (2.7778)\n", - "Epoch 6973: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6973: accuracy appended (80.56%)\n", - "Epoch 6973: model set back to train mode\n", - "Epoch 6973: model parameters saved\n", - "Epoch 6974 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6974: avg_loss appended (2.7778)\n", - "Epoch 6974: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6974: accuracy appended (80.56%)\n", - "Epoch 6974: model set back to train mode\n", - "Epoch 6974: model parameters saved\n", - "Epoch 6975 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6975: avg_loss appended (2.7778)\n", - "Epoch 6975: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6975: accuracy appended (80.56%)\n", - "Epoch 6975: model set back to train mode\n", - "Epoch 6975: model parameters saved\n", - "Epoch 6976 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6976: avg_loss appended (2.7778)\n", - "Epoch 6976: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6976: accuracy appended (80.56%)\n", - "Epoch 6976: model set back to train mode\n", - "Epoch 6976: model parameters saved\n", - "Epoch 6977 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6977: avg_loss appended (2.7778)\n", - "Epoch 6977: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6977: accuracy appended (80.56%)\n", - "Epoch 6977: model set back to train mode\n", - "Epoch 6977: model parameters saved\n", - "Epoch 6978 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6978: avg_loss appended (2.7778)\n", - "Epoch 6978: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6978: accuracy appended (80.56%)\n", - "Epoch 6978: model set back to train mode\n", - "Epoch 6978: model parameters saved\n", - "Epoch 6979 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6979: avg_loss appended (2.7778)\n", - "Epoch 6979: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6979: accuracy appended (80.56%)\n", - "Epoch 6979: model set back to train mode\n", - "Epoch 6979: model parameters saved\n", - "Epoch 6980 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6980: avg_loss appended (2.7778)\n", - "Epoch 6980: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6980: accuracy appended (80.56%)\n", - "Epoch 6980: model set back to train mode\n", - "Epoch 6980: model parameters saved\n", - "Epoch 6981 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6981: avg_loss appended (2.7778)\n", - "Epoch 6981: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6981: accuracy appended (80.56%)\n", - "Epoch 6981: model set back to train mode\n", - "Epoch 6981: model parameters saved\n", - "Epoch 6982 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6982: avg_loss appended (2.7778)\n", - "Epoch 6982: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6982: accuracy appended (80.56%)\n", - "Epoch 6982: model set back to train mode\n", - "Epoch 6982: model parameters saved\n", - "Epoch 6983 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6983: avg_loss appended (2.7778)\n", - "Epoch 6983: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6983: accuracy appended (80.56%)\n", - "Epoch 6983: model set back to train mode\n", - "Epoch 6983: model parameters saved\n", - "Epoch 6984 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6984: avg_loss appended (2.7778)\n", - "Epoch 6984: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6984: accuracy appended (80.56%)\n", - "Epoch 6984: model set back to train mode\n", - "Epoch 6984: model parameters saved\n", - "Epoch 6985 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6985: avg_loss appended (2.7778)\n", - "Epoch 6985: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6985: accuracy appended (80.56%)\n", - "Epoch 6985: model set back to train mode\n", - "Epoch 6985: model parameters saved\n", - "Epoch 6986 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6986: avg_loss appended (2.7778)\n", - "Epoch 6986: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6986: accuracy appended (80.56%)\n", - "Epoch 6986: model set back to train mode\n", - "Epoch 6986: model parameters saved\n", - "Epoch 6987 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6987: avg_loss appended (2.7778)\n", - "Epoch 6987: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6987: accuracy appended (80.56%)\n", - "Epoch 6987: model set back to train mode\n", - "Epoch 6987: model parameters saved\n", - "Epoch 6988 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6988: avg_loss appended (2.7778)\n", - "Epoch 6988: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6988: accuracy appended (80.56%)\n", - "Epoch 6988: model set back to train mode\n", - "Epoch 6988: model parameters saved\n", - "Epoch 6989 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6989: avg_loss appended (2.7778)\n", - "Epoch 6989: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6989: accuracy appended (80.56%)\n", - "Epoch 6989: model set back to train mode\n", - "Epoch 6989: model parameters saved\n", - "Epoch 6990 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6990: avg_loss appended (2.7778)\n", - "Epoch 6990: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6990: accuracy appended (80.56%)\n", - "Epoch 6990: model set back to train mode\n", - "Epoch 6990: model parameters saved\n", - "Epoch 6991 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6991: avg_loss appended (2.7778)\n", - "Epoch 6991: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6991: accuracy appended (80.56%)\n", - "Epoch 6991: model set back to train mode\n", - "Epoch 6991: model parameters saved\n", - "Epoch 6992 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6992: avg_loss appended (2.7778)\n", - "Epoch 6992: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6992: accuracy appended (80.56%)\n", - "Epoch 6992: model set back to train mode\n", - "Epoch 6992: model parameters saved\n", - "Epoch 6993 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6993: avg_loss appended (2.7778)\n", - "Epoch 6993: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6993: accuracy appended (80.56%)\n", - "Epoch 6993: model set back to train mode\n", - "Epoch 6993: model parameters saved\n", - "Epoch 6994 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6994: avg_loss appended (2.7778)\n", - "Epoch 6994: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6994: accuracy appended (80.56%)\n", - "Epoch 6994: model set back to train mode\n", - "Epoch 6994: model parameters saved\n", - "Epoch 6995 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6995: avg_loss appended (2.7778)\n", - "Epoch 6995: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6995: accuracy appended (80.56%)\n", - "Epoch 6995: model set back to train mode\n", - "Epoch 6995: model parameters saved\n", - "Epoch 6996 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6996: avg_loss appended (2.7778)\n", - "Epoch 6996: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6996: accuracy appended (80.56%)\n", - "Epoch 6996: model set back to train mode\n", - "Epoch 6996: model parameters saved\n", - "Epoch 6997 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6997: avg_loss appended (2.7778)\n", - "Epoch 6997: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6997: accuracy appended (80.56%)\n", - "Epoch 6997: model set back to train mode\n", - "Epoch 6997: model parameters saved\n", - "Epoch 6998 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6998: avg_loss appended (2.7778)\n", - "Epoch 6998: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6998: accuracy appended (80.56%)\n", - "Epoch 6998: model set back to train mode\n", - "Epoch 6998: model parameters saved\n", - "Epoch 6999 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 6999: avg_loss appended (2.7778)\n", - "Epoch 6999: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 6999: accuracy appended (80.56%)\n", - "Epoch 6999: model set back to train mode\n", - "Epoch 6999: model parameters saved\n", - "Epoch 7000 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7000: avg_loss appended (2.7778)\n", - "Epoch 7000: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7000: accuracy appended (80.56%)\n", - "Epoch 7000: model set back to train mode\n", - "Epoch 7000: model parameters saved\n", - "Epoch 7000/10000, Loss: 2.7778, Accuracy: 80.56%\n", - "Epoch 7000: checkpoint saved\n", - "Epoch 7001 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7001: avg_loss appended (2.7778)\n", - "Epoch 7001: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7001: accuracy appended (80.56%)\n", - "Epoch 7001: model set back to train mode\n", - "Epoch 7001: model parameters saved\n", - "Epoch 7002 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7002: avg_loss appended (2.7778)\n", - "Epoch 7002: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7002: accuracy appended (80.56%)\n", - "Epoch 7002: model set back to train mode\n", - "Epoch 7002: model parameters saved\n", - "Epoch 7003 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7003: avg_loss appended (2.7778)\n", - "Epoch 7003: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7003: accuracy appended (80.56%)\n", - "Epoch 7003: model set back to train mode\n", - "Epoch 7003: model parameters saved\n", - "Epoch 7004 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7004: avg_loss appended (2.7778)\n", - "Epoch 7004: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7004: accuracy appended (80.56%)\n", - "Epoch 7004: model set back to train mode\n", - "Epoch 7004: model parameters saved\n", - "Epoch 7005 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7005: avg_loss appended (2.7778)\n", - "Epoch 7005: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7005: accuracy appended (80.56%)\n", - "Epoch 7005: model set back to train mode\n", - "Epoch 7005: model parameters saved\n", - "Epoch 7006 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7006: avg_loss appended (2.7778)\n", - "Epoch 7006: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7006: accuracy appended (80.56%)\n", - "Epoch 7006: model set back to train mode\n", - "Epoch 7006: model parameters saved\n", - "Epoch 7007 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7007: avg_loss appended (2.7778)\n", - "Epoch 7007: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7007: accuracy appended (80.56%)\n", - "Epoch 7007: model set back to train mode\n", - "Epoch 7007: model parameters saved\n", - "Epoch 7008 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7008: avg_loss appended (2.7778)\n", - "Epoch 7008: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7008: accuracy appended (80.56%)\n", - "Epoch 7008: model set back to train mode\n", - "Epoch 7008: model parameters saved\n", - "Epoch 7009 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7009: avg_loss appended (2.7778)\n", - "Epoch 7009: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7009: accuracy appended (80.56%)\n", - "Epoch 7009: model set back to train mode\n", - "Epoch 7009: model parameters saved\n", - "Epoch 7010 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7010: avg_loss appended (2.7778)\n", - "Epoch 7010: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7010: accuracy appended (80.56%)\n", - "Epoch 7010: model set back to train mode\n", - "Epoch 7010: model parameters saved\n", - "Epoch 7011 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7011: avg_loss appended (2.7778)\n", - "Epoch 7011: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7011: accuracy appended (80.56%)\n", - "Epoch 7011: model set back to train mode\n", - "Epoch 7011: model parameters saved\n", - "Epoch 7012 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7012: avg_loss appended (2.7778)\n", - "Epoch 7012: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7012: accuracy appended (80.56%)\n", - "Epoch 7012: model set back to train mode\n", - "Epoch 7012: model parameters saved\n", - "Epoch 7013 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7013: avg_loss appended (2.7778)\n", - "Epoch 7013: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7013: accuracy appended (80.56%)\n", - "Epoch 7013: model set back to train mode\n", - "Epoch 7013: model parameters saved\n", - "Epoch 7014 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7014: avg_loss appended (2.7778)\n", - "Epoch 7014: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7014: accuracy appended (80.56%)\n", - "Epoch 7014: model set back to train mode\n", - "Epoch 7014: model parameters saved\n", - "Epoch 7015 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7015: avg_loss appended (2.7778)\n", - "Epoch 7015: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7015: accuracy appended (80.56%)\n", - "Epoch 7015: model set back to train mode\n", - "Epoch 7015: model parameters saved\n", - "Epoch 7016 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7016: avg_loss appended (2.7778)\n", - "Epoch 7016: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7016: accuracy appended (80.56%)\n", - "Epoch 7016: model set back to train mode\n", - "Epoch 7016: model parameters saved\n", - "Epoch 7017 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7017: avg_loss appended (2.7778)\n", - "Epoch 7017: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7017: accuracy appended (80.56%)\n", - "Epoch 7017: model set back to train mode\n", - "Epoch 7017: model parameters saved\n", - "Epoch 7018 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7018: avg_loss appended (2.7778)\n", - "Epoch 7018: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7018: accuracy appended (80.56%)\n", - "Epoch 7018: model set back to train mode\n", - "Epoch 7018: model parameters saved\n", - "Epoch 7019 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7019: avg_loss appended (2.7778)\n", - "Epoch 7019: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7019: accuracy appended (80.56%)\n", - "Epoch 7019: model set back to train mode\n", - "Epoch 7019: model parameters saved\n", - "Epoch 7020 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7020: avg_loss appended (2.7778)\n", - "Epoch 7020: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7020: accuracy appended (80.56%)\n", - "Epoch 7020: model set back to train mode\n", - "Epoch 7020: model parameters saved\n", - "Epoch 7021 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7021: avg_loss appended (2.7778)\n", - "Epoch 7021: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7021: accuracy appended (80.56%)\n", - "Epoch 7021: model set back to train mode\n", - "Epoch 7021: model parameters saved\n", - "Epoch 7022 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7022: avg_loss appended (2.7778)\n", - "Epoch 7022: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7022: accuracy appended (80.56%)\n", - "Epoch 7022: model set back to train mode\n", - "Epoch 7022: model parameters saved\n", - "Epoch 7023 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7023: avg_loss appended (2.7778)\n", - "Epoch 7023: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7023: accuracy appended (80.56%)\n", - "Epoch 7023: model set back to train mode\n", - "Epoch 7023: model parameters saved\n", - "Epoch 7024 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7024: avg_loss appended (2.7778)\n", - "Epoch 7024: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7024: accuracy appended (80.56%)\n", - "Epoch 7024: model set back to train mode\n", - "Epoch 7024: model parameters saved\n", - "Epoch 7025 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7025: avg_loss appended (2.7778)\n", - "Epoch 7025: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7025: accuracy appended (80.56%)\n", - "Epoch 7025: model set back to train mode\n", - "Epoch 7025: model parameters saved\n", - "Epoch 7026 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7026: avg_loss appended (2.7778)\n", - "Epoch 7026: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7026: accuracy appended (80.56%)\n", - "Epoch 7026: model set back to train mode\n", - "Epoch 7026: model parameters saved\n", - "Epoch 7027 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7027: avg_loss appended (2.7778)\n", - "Epoch 7027: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7027: accuracy appended (80.56%)\n", - "Epoch 7027: model set back to train mode\n", - "Epoch 7027: model parameters saved\n", - "Epoch 7028 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7028: avg_loss appended (2.7778)\n", - "Epoch 7028: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7028: accuracy appended (80.56%)\n", - "Epoch 7028: model set back to train mode\n", - "Epoch 7028: model parameters saved\n", - "Epoch 7029 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7029: avg_loss appended (2.7778)\n", - "Epoch 7029: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7029: accuracy appended (80.56%)\n", - "Epoch 7029: model set back to train mode\n", - "Epoch 7029: model parameters saved\n", - "Epoch 7030 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7030: avg_loss appended (2.7778)\n", - "Epoch 7030: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7030: accuracy appended (80.56%)\n", - "Epoch 7030: model set back to train mode\n", - "Epoch 7030: model parameters saved\n", - "Epoch 7031 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7031: avg_loss appended (2.7778)\n", - "Epoch 7031: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7031: accuracy appended (80.56%)\n", - "Epoch 7031: model set back to train mode\n", - "Epoch 7031: model parameters saved\n", - "Epoch 7032 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7032: avg_loss appended (2.7778)\n", - "Epoch 7032: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7032: accuracy appended (80.56%)\n", - "Epoch 7032: model set back to train mode\n", - "Epoch 7032: model parameters saved\n", - "Epoch 7033 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7033: avg_loss appended (2.7778)\n", - "Epoch 7033: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7033: accuracy appended (80.56%)\n", - "Epoch 7033: model set back to train mode\n", - "Epoch 7033: model parameters saved\n", - "Epoch 7034 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7034: avg_loss appended (2.7778)\n", - "Epoch 7034: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7034: accuracy appended (80.56%)\n", - "Epoch 7034: model set back to train mode\n", - "Epoch 7034: model parameters saved\n", - "Epoch 7035 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7035: avg_loss appended (2.7778)\n", - "Epoch 7035: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7035: accuracy appended (80.56%)\n", - "Epoch 7035: model set back to train mode\n", - "Epoch 7035: model parameters saved\n", - "Epoch 7036 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7036: avg_loss appended (2.7778)\n", - "Epoch 7036: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7036: accuracy appended (80.56%)\n", - "Epoch 7036: model set back to train mode\n", - "Epoch 7036: model parameters saved\n", - "Epoch 7037 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7037: avg_loss appended (2.7778)\n", - "Epoch 7037: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7037: accuracy appended (80.56%)\n", - "Epoch 7037: model set back to train mode\n", - "Epoch 7037: model parameters saved\n", - "Epoch 7038 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7038: avg_loss appended (2.7778)\n", - "Epoch 7038: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7038: accuracy appended (80.56%)\n", - "Epoch 7038: model set back to train mode\n", - "Epoch 7038: model parameters saved\n", - "Epoch 7039 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7039: avg_loss appended (2.7778)\n", - "Epoch 7039: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7039: accuracy appended (80.56%)\n", - "Epoch 7039: model set back to train mode\n", - "Epoch 7039: model parameters saved\n", - "Epoch 7040 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7040: avg_loss appended (2.7778)\n", - "Epoch 7040: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7040: accuracy appended (80.56%)\n", - "Epoch 7040: model set back to train mode\n", - "Epoch 7040: model parameters saved\n", - "Epoch 7041 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7041: avg_loss appended (2.7778)\n", - "Epoch 7041: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7041: accuracy appended (80.56%)\n", - "Epoch 7041: model set back to train mode\n", - "Epoch 7041: model parameters saved\n", - "Epoch 7042 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7042: avg_loss appended (2.7778)\n", - "Epoch 7042: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7042: accuracy appended (80.56%)\n", - "Epoch 7042: model set back to train mode\n", - "Epoch 7042: model parameters saved\n", - "Epoch 7043 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7043: avg_loss appended (2.7778)\n", - "Epoch 7043: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7043: accuracy appended (80.56%)\n", - "Epoch 7043: model set back to train mode\n", - "Epoch 7043: model parameters saved\n", - "Epoch 7044 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7044: avg_loss appended (2.7778)\n", - "Epoch 7044: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7044: accuracy appended (80.56%)\n", - "Epoch 7044: model set back to train mode\n", - "Epoch 7044: model parameters saved\n", - "Epoch 7045 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7045: avg_loss appended (2.7778)\n", - "Epoch 7045: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7045: accuracy appended (80.56%)\n", - "Epoch 7045: model set back to train mode\n", - "Epoch 7045: model parameters saved\n", - "Epoch 7046 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7046: avg_loss appended (2.7778)\n", - "Epoch 7046: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7046: accuracy appended (80.56%)\n", - "Epoch 7046: model set back to train mode\n", - "Epoch 7046: model parameters saved\n", - "Epoch 7047 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7047: avg_loss appended (2.7778)\n", - "Epoch 7047: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7047: accuracy appended (80.56%)\n", - "Epoch 7047: model set back to train mode\n", - "Epoch 7047: model parameters saved\n", - "Epoch 7048 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7048: avg_loss appended (2.7778)\n", - "Epoch 7048: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7048: accuracy appended (80.56%)\n", - "Epoch 7048: model set back to train mode\n", - "Epoch 7048: model parameters saved\n", - "Epoch 7049 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7049: avg_loss appended (2.7778)\n", - "Epoch 7049: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7049: accuracy appended (80.56%)\n", - "Epoch 7049: model set back to train mode\n", - "Epoch 7049: model parameters saved\n", - "Epoch 7050 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7050: avg_loss appended (2.7778)\n", - "Epoch 7050: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7050: accuracy appended (80.56%)\n", - "Epoch 7050: model set back to train mode\n", - "Epoch 7050: model parameters saved\n", - "Epoch 7051 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7051: avg_loss appended (2.7778)\n", - "Epoch 7051: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7051: accuracy appended (80.56%)\n", - "Epoch 7051: model set back to train mode\n", - "Epoch 7051: model parameters saved\n", - "Epoch 7052 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7052: avg_loss appended (2.7778)\n", - "Epoch 7052: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7052: accuracy appended (80.56%)\n", - "Epoch 7052: model set back to train mode\n", - "Epoch 7052: model parameters saved\n", - "Epoch 7053 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7053: avg_loss appended (2.7778)\n", - "Epoch 7053: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7053: accuracy appended (80.56%)\n", - "Epoch 7053: model set back to train mode\n", - "Epoch 7053: model parameters saved\n", - "Epoch 7054 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7054: avg_loss appended (2.7778)\n", - "Epoch 7054: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7054: accuracy appended (80.56%)\n", - "Epoch 7054: model set back to train mode\n", - "Epoch 7054: model parameters saved\n", - "Epoch 7055 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7055: avg_loss appended (2.7778)\n", - "Epoch 7055: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7055: accuracy appended (80.56%)\n", - "Epoch 7055: model set back to train mode\n", - "Epoch 7055: model parameters saved\n", - "Epoch 7056 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7056: avg_loss appended (2.7778)\n", - "Epoch 7056: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7056: accuracy appended (80.56%)\n", - "Epoch 7056: model set back to train mode\n", - "Epoch 7056: model parameters saved\n", - "Epoch 7057 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7057: avg_loss appended (2.7778)\n", - "Epoch 7057: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7057: accuracy appended (80.56%)\n", - "Epoch 7057: model set back to train mode\n", - "Epoch 7057: model parameters saved\n", - "Epoch 7058 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7058: avg_loss appended (2.7778)\n", - "Epoch 7058: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7058: accuracy appended (80.56%)\n", - "Epoch 7058: model set back to train mode\n", - "Epoch 7058: model parameters saved\n", - "Epoch 7059 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7059: avg_loss appended (2.7778)\n", - "Epoch 7059: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7059: accuracy appended (80.56%)\n", - "Epoch 7059: model set back to train mode\n", - "Epoch 7059: model parameters saved\n", - "Epoch 7060 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7060: avg_loss appended (2.7778)\n", - "Epoch 7060: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7060: accuracy appended (80.56%)\n", - "Epoch 7060: model set back to train mode\n", - "Epoch 7060: model parameters saved\n", - "Epoch 7061 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7061: avg_loss appended (2.7778)\n", - "Epoch 7061: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7061: accuracy appended (80.56%)\n", - "Epoch 7061: model set back to train mode\n", - "Epoch 7061: model parameters saved\n", - "Epoch 7062 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7062: avg_loss appended (2.7778)\n", - "Epoch 7062: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7062: accuracy appended (80.56%)\n", - "Epoch 7062: model set back to train mode\n", - "Epoch 7062: model parameters saved\n", - "Epoch 7063 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7063: avg_loss appended (2.7778)\n", - "Epoch 7063: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7063: accuracy appended (80.56%)\n", - "Epoch 7063: model set back to train mode\n", - "Epoch 7063: model parameters saved\n", - "Epoch 7064 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7064: avg_loss appended (2.7778)\n", - "Epoch 7064: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7064: accuracy appended (80.56%)\n", - "Epoch 7064: model set back to train mode\n", - "Epoch 7064: model parameters saved\n", - "Epoch 7065 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7065: avg_loss appended (2.7778)\n", - "Epoch 7065: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7065: accuracy appended (80.56%)\n", - "Epoch 7065: model set back to train mode\n", - "Epoch 7065: model parameters saved\n", - "Epoch 7066 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7066: avg_loss appended (2.7778)\n", - "Epoch 7066: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7066: accuracy appended (80.56%)\n", - "Epoch 7066: model set back to train mode\n", - "Epoch 7066: model parameters saved\n", - "Epoch 7067 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7067: avg_loss appended (2.7778)\n", - "Epoch 7067: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7067: accuracy appended (80.56%)\n", - "Epoch 7067: model set back to train mode\n", - "Epoch 7067: model parameters saved\n", - "Epoch 7068 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7068: avg_loss appended (2.7778)\n", - "Epoch 7068: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7068: accuracy appended (80.56%)\n", - "Epoch 7068: model set back to train mode\n", - "Epoch 7068: model parameters saved\n", - "Epoch 7069 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7069: avg_loss appended (2.7778)\n", - "Epoch 7069: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7069: accuracy appended (80.56%)\n", - "Epoch 7069: model set back to train mode\n", - "Epoch 7069: model parameters saved\n", - "Epoch 7070 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7070: avg_loss appended (2.7778)\n", - "Epoch 7070: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7070: accuracy appended (80.56%)\n", - "Epoch 7070: model set back to train mode\n", - "Epoch 7070: model parameters saved\n", - "Epoch 7071 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7071: avg_loss appended (2.7778)\n", - "Epoch 7071: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7071: accuracy appended (80.56%)\n", - "Epoch 7071: model set back to train mode\n", - "Epoch 7071: model parameters saved\n", - "Epoch 7072 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7072: avg_loss appended (2.7778)\n", - "Epoch 7072: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7072: accuracy appended (80.56%)\n", - "Epoch 7072: model set back to train mode\n", - "Epoch 7072: model parameters saved\n", - "Epoch 7073 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7073: avg_loss appended (2.7778)\n", - "Epoch 7073: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7073: accuracy appended (80.56%)\n", - "Epoch 7073: model set back to train mode\n", - "Epoch 7073: model parameters saved\n", - "Epoch 7074 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7074: avg_loss appended (2.7778)\n", - "Epoch 7074: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7074: accuracy appended (80.56%)\n", - "Epoch 7074: model set back to train mode\n", - "Epoch 7074: model parameters saved\n", - "Epoch 7075 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7075: avg_loss appended (2.7778)\n", - "Epoch 7075: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7075: accuracy appended (80.56%)\n", - "Epoch 7075: model set back to train mode\n", - "Epoch 7075: model parameters saved\n", - "Epoch 7076 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7076: avg_loss appended (2.7778)\n", - "Epoch 7076: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7076: accuracy appended (80.56%)\n", - "Epoch 7076: model set back to train mode\n", - "Epoch 7076: model parameters saved\n", - "Epoch 7077 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7077: avg_loss appended (2.7778)\n", - "Epoch 7077: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7077: accuracy appended (80.56%)\n", - "Epoch 7077: model set back to train mode\n", - "Epoch 7077: model parameters saved\n", - "Epoch 7078 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7078: avg_loss appended (2.7778)\n", - "Epoch 7078: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7078: accuracy appended (80.56%)\n", - "Epoch 7078: model set back to train mode\n", - "Epoch 7078: model parameters saved\n", - "Epoch 7079 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7079: avg_loss appended (2.7778)\n", - "Epoch 7079: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7079: accuracy appended (80.56%)\n", - "Epoch 7079: model set back to train mode\n", - "Epoch 7079: model parameters saved\n", - "Epoch 7080 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7080: avg_loss appended (2.7778)\n", - "Epoch 7080: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7080: accuracy appended (80.56%)\n", - "Epoch 7080: model set back to train mode\n", - "Epoch 7080: model parameters saved\n", - "Epoch 7081 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7081: avg_loss appended (2.7778)\n", - "Epoch 7081: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7081: accuracy appended (80.56%)\n", - "Epoch 7081: model set back to train mode\n", - "Epoch 7081: model parameters saved\n", - "Epoch 7082 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7082: avg_loss appended (2.7778)\n", - "Epoch 7082: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7082: accuracy appended (80.56%)\n", - "Epoch 7082: model set back to train mode\n", - "Epoch 7082: model parameters saved\n", - "Epoch 7083 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7083: avg_loss appended (2.7778)\n", - "Epoch 7083: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7083: accuracy appended (80.56%)\n", - "Epoch 7083: model set back to train mode\n", - "Epoch 7083: model parameters saved\n", - "Epoch 7084 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7084: avg_loss appended (2.7778)\n", - "Epoch 7084: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7084: accuracy appended (80.56%)\n", - "Epoch 7084: model set back to train mode\n", - "Epoch 7084: model parameters saved\n", - "Epoch 7085 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7085: avg_loss appended (2.7778)\n", - "Epoch 7085: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7085: accuracy appended (80.56%)\n", - "Epoch 7085: model set back to train mode\n", - "Epoch 7085: model parameters saved\n", - "Epoch 7086 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7086: avg_loss appended (2.7778)\n", - "Epoch 7086: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7086: accuracy appended (80.56%)\n", - "Epoch 7086: model set back to train mode\n", - "Epoch 7086: model parameters saved\n", - "Epoch 7087 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7087: avg_loss appended (2.7778)\n", - "Epoch 7087: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7087: accuracy appended (80.56%)\n", - "Epoch 7087: model set back to train mode\n", - "Epoch 7087: model parameters saved\n", - "Epoch 7088 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7088: avg_loss appended (2.7778)\n", - "Epoch 7088: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7088: accuracy appended (80.56%)\n", - "Epoch 7088: model set back to train mode\n", - "Epoch 7088: model parameters saved\n", - "Epoch 7089 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7089: avg_loss appended (2.7778)\n", - "Epoch 7089: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7089: accuracy appended (80.56%)\n", - "Epoch 7089: model set back to train mode\n", - "Epoch 7089: model parameters saved\n", - "Epoch 7090 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7090: avg_loss appended (2.7778)\n", - "Epoch 7090: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7090: accuracy appended (80.56%)\n", - "Epoch 7090: model set back to train mode\n", - "Epoch 7090: model parameters saved\n", - "Epoch 7091 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7091: avg_loss appended (2.7778)\n", - "Epoch 7091: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7091: accuracy appended (80.56%)\n", - "Epoch 7091: model set back to train mode\n", - "Epoch 7091: model parameters saved\n", - "Epoch 7092 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7092: avg_loss appended (2.7778)\n", - "Epoch 7092: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7092: accuracy appended (80.56%)\n", - "Epoch 7092: model set back to train mode\n", - "Epoch 7092: model parameters saved\n", - "Epoch 7093 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7093: avg_loss appended (2.7778)\n", - "Epoch 7093: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7093: accuracy appended (80.56%)\n", - "Epoch 7093: model set back to train mode\n", - "Epoch 7093: model parameters saved\n", - "Epoch 7094 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7094: avg_loss appended (2.7778)\n", - "Epoch 7094: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7094: accuracy appended (80.56%)\n", - "Epoch 7094: model set back to train mode\n", - "Epoch 7094: model parameters saved\n", - "Epoch 7095 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7095: avg_loss appended (2.7778)\n", - "Epoch 7095: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7095: accuracy appended (80.56%)\n", - "Epoch 7095: model set back to train mode\n", - "Epoch 7095: model parameters saved\n", - "Epoch 7096 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7096: avg_loss appended (2.7778)\n", - "Epoch 7096: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7096: accuracy appended (80.56%)\n", - "Epoch 7096: model set back to train mode\n", - "Epoch 7096: model parameters saved\n", - "Epoch 7097 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7097: avg_loss appended (2.7778)\n", - "Epoch 7097: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7097: accuracy appended (80.56%)\n", - "Epoch 7097: model set back to train mode\n", - "Epoch 7097: model parameters saved\n", - "Epoch 7098 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7098: avg_loss appended (2.7778)\n", - "Epoch 7098: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7098: accuracy appended (80.56%)\n", - "Epoch 7098: model set back to train mode\n", - "Epoch 7098: model parameters saved\n", - "Epoch 7099 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7099: avg_loss appended (2.7778)\n", - "Epoch 7099: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7099: accuracy appended (80.56%)\n", - "Epoch 7099: model set back to train mode\n", - "Epoch 7099: model parameters saved\n", - "Epoch 7100 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7100: avg_loss appended (2.7778)\n", - "Epoch 7100: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7100: accuracy appended (80.56%)\n", - "Epoch 7100: model set back to train mode\n", - "Epoch 7100: model parameters saved\n", - "Epoch 7100/10000, Loss: 2.7778, Accuracy: 80.56%\n", - "Epoch 7101 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7101: avg_loss appended (2.7778)\n", - "Epoch 7101: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7101: accuracy appended (80.56%)\n", - "Epoch 7101: model set back to train mode\n", - "Epoch 7101: model parameters saved\n", - "Epoch 7102 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7102: avg_loss appended (2.7778)\n", - "Epoch 7102: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7102: accuracy appended (80.56%)\n", - "Epoch 7102: model set back to train mode\n", - "Epoch 7102: model parameters saved\n", - "Epoch 7103 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7103: avg_loss appended (2.7778)\n", - "Epoch 7103: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7103: accuracy appended (80.56%)\n", - "Epoch 7103: model set back to train mode\n", - "Epoch 7103: model parameters saved\n", - "Epoch 7104 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7104: avg_loss appended (2.7778)\n", - "Epoch 7104: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7104: accuracy appended (80.56%)\n", - "Epoch 7104: model set back to train mode\n", - "Epoch 7104: model parameters saved\n", - "Epoch 7105 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7105: avg_loss appended (2.7778)\n", - "Epoch 7105: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7105: accuracy appended (80.56%)\n", - "Epoch 7105: model set back to train mode\n", - "Epoch 7105: model parameters saved\n", - "Epoch 7106 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7106: avg_loss appended (2.7778)\n", - "Epoch 7106: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7106: accuracy appended (80.56%)\n", - "Epoch 7106: model set back to train mode\n", - "Epoch 7106: model parameters saved\n", - "Epoch 7107 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7107: avg_loss appended (2.7778)\n", - "Epoch 7107: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7107: accuracy appended (80.56%)\n", - "Epoch 7107: model set back to train mode\n", - "Epoch 7107: model parameters saved\n", - "Epoch 7108 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7108: avg_loss appended (2.7778)\n", - "Epoch 7108: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7108: accuracy appended (80.56%)\n", - "Epoch 7108: model set back to train mode\n", - "Epoch 7108: model parameters saved\n", - "Epoch 7109 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7109: avg_loss appended (2.7778)\n", - "Epoch 7109: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7109: accuracy appended (80.56%)\n", - "Epoch 7109: model set back to train mode\n", - "Epoch 7109: model parameters saved\n", - "Epoch 7110 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7110: avg_loss appended (2.7778)\n", - "Epoch 7110: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7110: accuracy appended (80.56%)\n", - "Epoch 7110: model set back to train mode\n", - "Epoch 7110: model parameters saved\n", - "Epoch 7111 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7111: avg_loss appended (2.7778)\n", - "Epoch 7111: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7111: accuracy appended (80.56%)\n", - "Epoch 7111: model set back to train mode\n", - "Epoch 7111: model parameters saved\n", - "Epoch 7112 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7112: avg_loss appended (2.7778)\n", - "Epoch 7112: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7112: accuracy appended (80.56%)\n", - "Epoch 7112: model set back to train mode\n", - "Epoch 7112: model parameters saved\n", - "Epoch 7113 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7113: avg_loss appended (2.7778)\n", - "Epoch 7113: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7113: accuracy appended (80.56%)\n", - "Epoch 7113: model set back to train mode\n", - "Epoch 7113: model parameters saved\n", - "Epoch 7114 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7114: avg_loss appended (2.7778)\n", - "Epoch 7114: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7114: accuracy appended (80.56%)\n", - "Epoch 7114: model set back to train mode\n", - "Epoch 7114: model parameters saved\n", - "Epoch 7115 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7115: avg_loss appended (2.7778)\n", - "Epoch 7115: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7115: accuracy appended (80.56%)\n", - "Epoch 7115: model set back to train mode\n", - "Epoch 7115: model parameters saved\n", - "Epoch 7116 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7116: avg_loss appended (2.7778)\n", - "Epoch 7116: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7116: accuracy appended (80.56%)\n", - "Epoch 7116: model set back to train mode\n", - "Epoch 7116: model parameters saved\n", - "Epoch 7117 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7117: avg_loss appended (2.7778)\n", - "Epoch 7117: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7117: accuracy appended (80.56%)\n", - "Epoch 7117: model set back to train mode\n", - "Epoch 7117: model parameters saved\n", - "Epoch 7118 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7118: avg_loss appended (2.7778)\n", - "Epoch 7118: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7118: accuracy appended (80.56%)\n", - "Epoch 7118: model set back to train mode\n", - "Epoch 7118: model parameters saved\n", - "Epoch 7119 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7119: avg_loss appended (2.7778)\n", - "Epoch 7119: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7119: accuracy appended (80.56%)\n", - "Epoch 7119: model set back to train mode\n", - "Epoch 7119: model parameters saved\n", - "Epoch 7120 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7120: avg_loss appended (2.7778)\n", - "Epoch 7120: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7120: accuracy appended (80.56%)\n", - "Epoch 7120: model set back to train mode\n", - "Epoch 7120: model parameters saved\n", - "Epoch 7121 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7121: avg_loss appended (2.7778)\n", - "Epoch 7121: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7121: accuracy appended (80.56%)\n", - "Epoch 7121: model set back to train mode\n", - "Epoch 7121: model parameters saved\n", - "Epoch 7122 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7122: avg_loss appended (2.7778)\n", - "Epoch 7122: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7122: accuracy appended (80.56%)\n", - "Epoch 7122: model set back to train mode\n", - "Epoch 7122: model parameters saved\n", - "Epoch 7123 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7123: avg_loss appended (2.7778)\n", - "Epoch 7123: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7123: accuracy appended (80.56%)\n", - "Epoch 7123: model set back to train mode\n", - "Epoch 7123: model parameters saved\n", - "Epoch 7124 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7124: avg_loss appended (2.7778)\n", - "Epoch 7124: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7124: accuracy appended (80.56%)\n", - "Epoch 7124: model set back to train mode\n", - "Epoch 7124: model parameters saved\n", - "Epoch 7125 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7125: avg_loss appended (2.7778)\n", - "Epoch 7125: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7125: accuracy appended (80.56%)\n", - "Epoch 7125: model set back to train mode\n", - "Epoch 7125: model parameters saved\n", - "Epoch 7126 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7126: avg_loss appended (2.7778)\n", - "Epoch 7126: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7126: accuracy appended (80.56%)\n", - "Epoch 7126: model set back to train mode\n", - "Epoch 7126: model parameters saved\n", - "Epoch 7127 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7127: avg_loss appended (2.7778)\n", - "Epoch 7127: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7127: accuracy appended (80.56%)\n", - "Epoch 7127: model set back to train mode\n", - "Epoch 7127: model parameters saved\n", - "Epoch 7128 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7128: avg_loss appended (2.7778)\n", - "Epoch 7128: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7128: accuracy appended (80.56%)\n", - "Epoch 7128: model set back to train mode\n", - "Epoch 7128: model parameters saved\n", - "Epoch 7129 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7129: avg_loss appended (2.7778)\n", - "Epoch 7129: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7129: accuracy appended (80.56%)\n", - "Epoch 7129: model set back to train mode\n", - "Epoch 7129: model parameters saved\n", - "Epoch 7130 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7130: avg_loss appended (2.7778)\n", - "Epoch 7130: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7130: accuracy appended (80.56%)\n", - "Epoch 7130: model set back to train mode\n", - "Epoch 7130: model parameters saved\n", - "Epoch 7131 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7131: avg_loss appended (2.7778)\n", - "Epoch 7131: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7131: accuracy appended (80.56%)\n", - "Epoch 7131: model set back to train mode\n", - "Epoch 7131: model parameters saved\n", - "Epoch 7132 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7132: avg_loss appended (2.7778)\n", - "Epoch 7132: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7132: accuracy appended (80.56%)\n", - "Epoch 7132: model set back to train mode\n", - "Epoch 7132: model parameters saved\n", - "Epoch 7133 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7133: avg_loss appended (2.7778)\n", - "Epoch 7133: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7133: accuracy appended (80.56%)\n", - "Epoch 7133: model set back to train mode\n", - "Epoch 7133: model parameters saved\n", - "Epoch 7134 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7134: avg_loss appended (2.7778)\n", - "Epoch 7134: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7134: accuracy appended (80.56%)\n", - "Epoch 7134: model set back to train mode\n", - "Epoch 7134: model parameters saved\n", - "Epoch 7135 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7135: avg_loss appended (2.7778)\n", - "Epoch 7135: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7135: accuracy appended (80.56%)\n", - "Epoch 7135: model set back to train mode\n", - "Epoch 7135: model parameters saved\n", - "Epoch 7136 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7136: avg_loss appended (2.7778)\n", - "Epoch 7136: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7136: accuracy appended (80.56%)\n", - "Epoch 7136: model set back to train mode\n", - "Epoch 7136: model parameters saved\n", - "Epoch 7137 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7137: avg_loss appended (2.7778)\n", - "Epoch 7137: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7137: accuracy appended (80.56%)\n", - "Epoch 7137: model set back to train mode\n", - "Epoch 7137: model parameters saved\n", - "Epoch 7138 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7138: avg_loss appended (2.7778)\n", - "Epoch 7138: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7138: accuracy appended (80.56%)\n", - "Epoch 7138: model set back to train mode\n", - "Epoch 7138: model parameters saved\n", - "Epoch 7139 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7139: avg_loss appended (2.7778)\n", - "Epoch 7139: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7139: accuracy appended (80.56%)\n", - "Epoch 7139: model set back to train mode\n", - "Epoch 7139: model parameters saved\n", - "Epoch 7140 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7140: avg_loss appended (2.7778)\n", - "Epoch 7140: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7140: accuracy appended (80.56%)\n", - "Epoch 7140: model set back to train mode\n", - "Epoch 7140: model parameters saved\n", - "Epoch 7141 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7141: avg_loss appended (2.7778)\n", - "Epoch 7141: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7141: accuracy appended (80.56%)\n", - "Epoch 7141: model set back to train mode\n", - "Epoch 7141: model parameters saved\n", - "Epoch 7142 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7142: avg_loss appended (2.7778)\n", - "Epoch 7142: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7142: accuracy appended (80.56%)\n", - "Epoch 7142: model set back to train mode\n", - "Epoch 7142: model parameters saved\n", - "Epoch 7143 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7143: avg_loss appended (2.7778)\n", - "Epoch 7143: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7143: accuracy appended (80.56%)\n", - "Epoch 7143: model set back to train mode\n", - "Epoch 7143: model parameters saved\n", - "Epoch 7144 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7144: avg_loss appended (2.7778)\n", - "Epoch 7144: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7144: accuracy appended (80.56%)\n", - "Epoch 7144: model set back to train mode\n", - "Epoch 7144: model parameters saved\n", - "Epoch 7145 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7145: avg_loss appended (2.7778)\n", - "Epoch 7145: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7145: accuracy appended (80.56%)\n", - "Epoch 7145: model set back to train mode\n", - "Epoch 7145: model parameters saved\n", - "Epoch 7146 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7146: avg_loss appended (2.7778)\n", - "Epoch 7146: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7146: accuracy appended (80.56%)\n", - "Epoch 7146: model set back to train mode\n", - "Epoch 7146: model parameters saved\n", - "Epoch 7147 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7147: avg_loss appended (2.7778)\n", - "Epoch 7147: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7147: accuracy appended (80.56%)\n", - "Epoch 7147: model set back to train mode\n", - "Epoch 7147: model parameters saved\n", - "Epoch 7148 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7148: avg_loss appended (2.7778)\n", - "Epoch 7148: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7148: accuracy appended (80.56%)\n", - "Epoch 7148: model set back to train mode\n", - "Epoch 7148: model parameters saved\n", - "Epoch 7149 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7149: avg_loss appended (2.7778)\n", - "Epoch 7149: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7149: accuracy appended (80.56%)\n", - "Epoch 7149: model set back to train mode\n", - "Epoch 7149: model parameters saved\n", - "Epoch 7150 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7150: avg_loss appended (2.7778)\n", - "Epoch 7150: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7150: accuracy appended (80.56%)\n", - "Epoch 7150: model set back to train mode\n", - "Epoch 7150: model parameters saved\n", - "Epoch 7151 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7151: avg_loss appended (2.7778)\n", - "Epoch 7151: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7151: accuracy appended (80.56%)\n", - "Epoch 7151: model set back to train mode\n", - "Epoch 7151: model parameters saved\n", - "Epoch 7152 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7152: avg_loss appended (2.7778)\n", - "Epoch 7152: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7152: accuracy appended (80.56%)\n", - "Epoch 7152: model set back to train mode\n", - "Epoch 7152: model parameters saved\n", - "Epoch 7153 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7153: avg_loss appended (2.7778)\n", - "Epoch 7153: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7153: accuracy appended (80.56%)\n", - "Epoch 7153: model set back to train mode\n", - "Epoch 7153: model parameters saved\n", - "Epoch 7154 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7154: avg_loss appended (2.7778)\n", - "Epoch 7154: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7154: accuracy appended (80.56%)\n", - "Epoch 7154: model set back to train mode\n", - "Epoch 7154: model parameters saved\n", - "Epoch 7155 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7155: avg_loss appended (2.7778)\n", - "Epoch 7155: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7155: accuracy appended (80.56%)\n", - "Epoch 7155: model set back to train mode\n", - "Epoch 7155: model parameters saved\n", - "Epoch 7156 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7156: avg_loss appended (2.7778)\n", - "Epoch 7156: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7156: accuracy appended (80.56%)\n", - "Epoch 7156: model set back to train mode\n", - "Epoch 7156: model parameters saved\n", - "Epoch 7157 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7157: avg_loss appended (2.7778)\n", - "Epoch 7157: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7157: accuracy appended (80.56%)\n", - "Epoch 7157: model set back to train mode\n", - "Epoch 7157: model parameters saved\n", - "Epoch 7158 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7158: avg_loss appended (2.7778)\n", - "Epoch 7158: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7158: accuracy appended (80.56%)\n", - "Epoch 7158: model set back to train mode\n", - "Epoch 7158: model parameters saved\n", - "Epoch 7159 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7159: avg_loss appended (2.7778)\n", - "Epoch 7159: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7159: accuracy appended (80.56%)\n", - "Epoch 7159: model set back to train mode\n", - "Epoch 7159: model parameters saved\n", - "Epoch 7160 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7160: avg_loss appended (2.7778)\n", - "Epoch 7160: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7160: accuracy appended (80.56%)\n", - "Epoch 7160: model set back to train mode\n", - "Epoch 7160: model parameters saved\n", - "Epoch 7161 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7161: avg_loss appended (2.7778)\n", - "Epoch 7161: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7161: accuracy appended (80.56%)\n", - "Epoch 7161: model set back to train mode\n", - "Epoch 7161: model parameters saved\n", - "Epoch 7162 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7162: avg_loss appended (2.7778)\n", - "Epoch 7162: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7162: accuracy appended (80.56%)\n", - "Epoch 7162: model set back to train mode\n", - "Epoch 7162: model parameters saved\n", - "Epoch 7163 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7163: avg_loss appended (2.7778)\n", - "Epoch 7163: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7163: accuracy appended (80.56%)\n", - "Epoch 7163: model set back to train mode\n", - "Epoch 7163: model parameters saved\n", - "Epoch 7164 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7164: avg_loss appended (2.7778)\n", - "Epoch 7164: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7164: accuracy appended (80.56%)\n", - "Epoch 7164: model set back to train mode\n", - "Epoch 7164: model parameters saved\n", - "Epoch 7165 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7165: avg_loss appended (2.7778)\n", - "Epoch 7165: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7165: accuracy appended (80.56%)\n", - "Epoch 7165: model set back to train mode\n", - "Epoch 7165: model parameters saved\n", - "Epoch 7166 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7166: avg_loss appended (2.7778)\n", - "Epoch 7166: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7166: accuracy appended (80.56%)\n", - "Epoch 7166: model set back to train mode\n", - "Epoch 7166: model parameters saved\n", - "Epoch 7167 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7167: avg_loss appended (2.7778)\n", - "Epoch 7167: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7167: accuracy appended (80.56%)\n", - "Epoch 7167: model set back to train mode\n", - "Epoch 7167: model parameters saved\n", - "Epoch 7168 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7168: avg_loss appended (2.7778)\n", - "Epoch 7168: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7168: accuracy appended (80.56%)\n", - "Epoch 7168: model set back to train mode\n", - "Epoch 7168: model parameters saved\n", - "Epoch 7169 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7169: avg_loss appended (2.7778)\n", - "Epoch 7169: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7169: accuracy appended (80.56%)\n", - "Epoch 7169: model set back to train mode\n", - "Epoch 7169: model parameters saved\n", - "Epoch 7170 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7170: avg_loss appended (2.7778)\n", - "Epoch 7170: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7170: accuracy appended (80.56%)\n", - "Epoch 7170: model set back to train mode\n", - "Epoch 7170: model parameters saved\n", - "Epoch 7171 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7171: avg_loss appended (2.7778)\n", - "Epoch 7171: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7171: accuracy appended (80.56%)\n", - "Epoch 7171: model set back to train mode\n", - "Epoch 7171: model parameters saved\n", - "Epoch 7172 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7172: avg_loss appended (2.7778)\n", - "Epoch 7172: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7172: accuracy appended (80.56%)\n", - "Epoch 7172: model set back to train mode\n", - "Epoch 7172: model parameters saved\n", - "Epoch 7173 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7173: avg_loss appended (2.7778)\n", - "Epoch 7173: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7173: accuracy appended (80.56%)\n", - "Epoch 7173: model set back to train mode\n", - "Epoch 7173: model parameters saved\n", - "Epoch 7174 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7174: avg_loss appended (2.7778)\n", - "Epoch 7174: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7174: accuracy appended (80.56%)\n", - "Epoch 7174: model set back to train mode\n", - "Epoch 7174: model parameters saved\n", - "Epoch 7175 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7175: avg_loss appended (2.7778)\n", - "Epoch 7175: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7175: accuracy appended (80.56%)\n", - "Epoch 7175: model set back to train mode\n", - "Epoch 7175: model parameters saved\n", - "Epoch 7176 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7176: avg_loss appended (2.7778)\n", - "Epoch 7176: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7176: accuracy appended (80.56%)\n", - "Epoch 7176: model set back to train mode\n", - "Epoch 7176: model parameters saved\n", - "Epoch 7177 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7177: avg_loss appended (2.7778)\n", - "Epoch 7177: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7177: accuracy appended (80.56%)\n", - "Epoch 7177: model set back to train mode\n", - "Epoch 7177: model parameters saved\n", - "Epoch 7178 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7178: avg_loss appended (2.7778)\n", - "Epoch 7178: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7178: accuracy appended (80.56%)\n", - "Epoch 7178: model set back to train mode\n", - "Epoch 7178: model parameters saved\n", - "Epoch 7179 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7179: avg_loss appended (2.7778)\n", - "Epoch 7179: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7179: accuracy appended (80.56%)\n", - "Epoch 7179: model set back to train mode\n", - "Epoch 7179: model parameters saved\n", - "Epoch 7180 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7180: avg_loss appended (2.7778)\n", - "Epoch 7180: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7180: accuracy appended (80.56%)\n", - "Epoch 7180: model set back to train mode\n", - "Epoch 7180: model parameters saved\n", - "Epoch 7181 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7181: avg_loss appended (2.7778)\n", - "Epoch 7181: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7181: accuracy appended (80.56%)\n", - "Epoch 7181: model set back to train mode\n", - "Epoch 7181: model parameters saved\n", - "Epoch 7182 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7182: avg_loss appended (2.7778)\n", - "Epoch 7182: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7182: accuracy appended (80.56%)\n", - "Epoch 7182: model set back to train mode\n", - "Epoch 7182: model parameters saved\n", - "Epoch 7183 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7183: avg_loss appended (2.7778)\n", - "Epoch 7183: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7183: accuracy appended (80.56%)\n", - "Epoch 7183: model set back to train mode\n", - "Epoch 7183: model parameters saved\n", - "Epoch 7184 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7184: avg_loss appended (2.7778)\n", - "Epoch 7184: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7184: accuracy appended (80.56%)\n", - "Epoch 7184: model set back to train mode\n", - "Epoch 7184: model parameters saved\n", - "Epoch 7185 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7185: avg_loss appended (2.7778)\n", - "Epoch 7185: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7185: accuracy appended (80.56%)\n", - "Epoch 7185: model set back to train mode\n", - "Epoch 7185: model parameters saved\n", - "Epoch 7186 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7186: avg_loss appended (2.7778)\n", - "Epoch 7186: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7186: accuracy appended (80.56%)\n", - "Epoch 7186: model set back to train mode\n", - "Epoch 7186: model parameters saved\n", - "Epoch 7187 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7187: avg_loss appended (2.7778)\n", - "Epoch 7187: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7187: accuracy appended (80.56%)\n", - "Epoch 7187: model set back to train mode\n", - "Epoch 7187: model parameters saved\n", - "Epoch 7188 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7188: avg_loss appended (2.7778)\n", - "Epoch 7188: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7188: accuracy appended (80.56%)\n", - "Epoch 7188: model set back to train mode\n", - "Epoch 7188: model parameters saved\n", - "Epoch 7189 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7189: avg_loss appended (2.7778)\n", - "Epoch 7189: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7189: accuracy appended (80.56%)\n", - "Epoch 7189: model set back to train mode\n", - "Epoch 7189: model parameters saved\n", - "Epoch 7190 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7190: avg_loss appended (2.7778)\n", - "Epoch 7190: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7190: accuracy appended (80.56%)\n", - "Epoch 7190: model set back to train mode\n", - "Epoch 7190: model parameters saved\n", - "Epoch 7191 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7191: avg_loss appended (2.7778)\n", - "Epoch 7191: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7191: accuracy appended (80.56%)\n", - "Epoch 7191: model set back to train mode\n", - "Epoch 7191: model parameters saved\n", - "Epoch 7192 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7192: avg_loss appended (2.7778)\n", - "Epoch 7192: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7192: accuracy appended (80.56%)\n", - "Epoch 7192: model set back to train mode\n", - "Epoch 7192: model parameters saved\n", - "Epoch 7193 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7193: avg_loss appended (2.7778)\n", - "Epoch 7193: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7193: accuracy appended (80.56%)\n", - "Epoch 7193: model set back to train mode\n", - "Epoch 7193: model parameters saved\n", - "Epoch 7194 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7194: avg_loss appended (2.7778)\n", - "Epoch 7194: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7194: accuracy appended (80.56%)\n", - "Epoch 7194: model set back to train mode\n", - "Epoch 7194: model parameters saved\n", - "Epoch 7195 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7195: avg_loss appended (2.7778)\n", - "Epoch 7195: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7195: accuracy appended (80.56%)\n", - "Epoch 7195: model set back to train mode\n", - "Epoch 7195: model parameters saved\n", - "Epoch 7196 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7196: avg_loss appended (2.7778)\n", - "Epoch 7196: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7196: accuracy appended (80.56%)\n", - "Epoch 7196: model set back to train mode\n", - "Epoch 7196: model parameters saved\n", - "Epoch 7197 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7197: avg_loss appended (2.7778)\n", - "Epoch 7197: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7197: accuracy appended (80.56%)\n", - "Epoch 7197: model set back to train mode\n", - "Epoch 7197: model parameters saved\n", - "Epoch 7198 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7198: avg_loss appended (2.7778)\n", - "Epoch 7198: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7198: accuracy appended (80.56%)\n", - "Epoch 7198: model set back to train mode\n", - "Epoch 7198: model parameters saved\n", - "Epoch 7199 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7199: avg_loss appended (2.7778)\n", - "Epoch 7199: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7199: accuracy appended (80.56%)\n", - "Epoch 7199: model set back to train mode\n", - "Epoch 7199: model parameters saved\n", - "Epoch 7200 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7200: avg_loss appended (2.7778)\n", - "Epoch 7200: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7200: accuracy appended (80.56%)\n", - "Epoch 7200: model set back to train mode\n", - "Epoch 7200: model parameters saved\n", - "Epoch 7200/10000, Loss: 2.7778, Accuracy: 80.56%\n", - "Epoch 7201 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7201: avg_loss appended (2.7778)\n", - "Epoch 7201: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7201: accuracy appended (80.56%)\n", - "Epoch 7201: model set back to train mode\n", - "Epoch 7201: model parameters saved\n", - "Epoch 7202 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7202: avg_loss appended (2.7778)\n", - "Epoch 7202: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7202: accuracy appended (80.56%)\n", - "Epoch 7202: model set back to train mode\n", - "Epoch 7202: model parameters saved\n", - "Epoch 7203 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7203: avg_loss appended (2.7778)\n", - "Epoch 7203: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7203: accuracy appended (80.56%)\n", - "Epoch 7203: model set back to train mode\n", - "Epoch 7203: model parameters saved\n", - "Epoch 7204 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7204: avg_loss appended (2.7778)\n", - "Epoch 7204: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7204: accuracy appended (80.56%)\n", - "Epoch 7204: model set back to train mode\n", - "Epoch 7204: model parameters saved\n", - "Epoch 7205 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7205: avg_loss appended (2.7778)\n", - "Epoch 7205: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7205: accuracy appended (80.56%)\n", - "Epoch 7205: model set back to train mode\n", - "Epoch 7205: model parameters saved\n", - "Epoch 7206 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7206: avg_loss appended (2.7778)\n", - "Epoch 7206: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7206: accuracy appended (80.56%)\n", - "Epoch 7206: model set back to train mode\n", - "Epoch 7206: model parameters saved\n", - "Epoch 7207 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7207: avg_loss appended (2.7778)\n", - "Epoch 7207: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7207: accuracy appended (80.56%)\n", - "Epoch 7207: model set back to train mode\n", - "Epoch 7207: model parameters saved\n", - "Epoch 7208 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7208: avg_loss appended (2.7778)\n", - "Epoch 7208: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7208: accuracy appended (80.56%)\n", - "Epoch 7208: model set back to train mode\n", - "Epoch 7208: model parameters saved\n", - "Epoch 7209 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7209: avg_loss appended (2.7778)\n", - "Epoch 7209: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7209: accuracy appended (80.56%)\n", - "Epoch 7209: model set back to train mode\n", - "Epoch 7209: model parameters saved\n", - "Epoch 7210 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7210: avg_loss appended (2.7778)\n", - "Epoch 7210: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7210: accuracy appended (80.56%)\n", - "Epoch 7210: model set back to train mode\n", - "Epoch 7210: model parameters saved\n", - "Epoch 7211 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7211: avg_loss appended (2.7778)\n", - "Epoch 7211: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7211: accuracy appended (80.56%)\n", - "Epoch 7211: model set back to train mode\n", - "Epoch 7211: model parameters saved\n", - "Epoch 7212 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7212: avg_loss appended (2.7778)\n", - "Epoch 7212: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7212: accuracy appended (80.56%)\n", - "Epoch 7212: model set back to train mode\n", - "Epoch 7212: model parameters saved\n", - "Epoch 7213 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7213: avg_loss appended (2.7778)\n", - "Epoch 7213: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7213: accuracy appended (80.56%)\n", - "Epoch 7213: model set back to train mode\n", - "Epoch 7213: model parameters saved\n", - "Epoch 7214 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7214: avg_loss appended (2.7778)\n", - "Epoch 7214: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7214: accuracy appended (80.56%)\n", - "Epoch 7214: model set back to train mode\n", - "Epoch 7214: model parameters saved\n", - "Epoch 7215 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7215: avg_loss appended (2.7778)\n", - "Epoch 7215: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7215: accuracy appended (80.56%)\n", - "Epoch 7215: model set back to train mode\n", - "Epoch 7215: model parameters saved\n", - "Epoch 7216 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7216: avg_loss appended (2.7778)\n", - "Epoch 7216: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7216: accuracy appended (80.56%)\n", - "Epoch 7216: model set back to train mode\n", - "Epoch 7216: model parameters saved\n", - "Epoch 7217 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7217: avg_loss appended (2.7778)\n", - "Epoch 7217: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7217: accuracy appended (80.56%)\n", - "Epoch 7217: model set back to train mode\n", - "Epoch 7217: model parameters saved\n", - "Epoch 7218 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7218: avg_loss appended (2.7778)\n", - "Epoch 7218: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7218: accuracy appended (80.56%)\n", - "Epoch 7218: model set back to train mode\n", - "Epoch 7218: model parameters saved\n", - "Epoch 7219 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7219: avg_loss appended (2.7778)\n", - "Epoch 7219: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7219: accuracy appended (80.56%)\n", - "Epoch 7219: model set back to train mode\n", - "Epoch 7219: model parameters saved\n", - "Epoch 7220 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7220: avg_loss appended (2.7778)\n", - "Epoch 7220: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7220: accuracy appended (80.56%)\n", - "Epoch 7220: model set back to train mode\n", - "Epoch 7220: model parameters saved\n", - "Epoch 7221 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7221: avg_loss appended (2.7778)\n", - "Epoch 7221: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7221: accuracy appended (80.56%)\n", - "Epoch 7221: model set back to train mode\n", - "Epoch 7221: model parameters saved\n", - "Epoch 7222 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7222: avg_loss appended (2.7778)\n", - "Epoch 7222: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7222: accuracy appended (80.56%)\n", - "Epoch 7222: model set back to train mode\n", - "Epoch 7222: model parameters saved\n", - "Epoch 7223 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7223: avg_loss appended (2.7778)\n", - "Epoch 7223: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7223: accuracy appended (80.56%)\n", - "Epoch 7223: model set back to train mode\n", - "Epoch 7223: model parameters saved\n", - "Epoch 7224 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7224: avg_loss appended (2.7778)\n", - "Epoch 7224: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7224: accuracy appended (80.56%)\n", - "Epoch 7224: model set back to train mode\n", - "Epoch 7224: model parameters saved\n", - "Epoch 7225 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7225: avg_loss appended (2.7778)\n", - "Epoch 7225: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7225: accuracy appended (80.56%)\n", - "Epoch 7225: model set back to train mode\n", - "Epoch 7225: model parameters saved\n", - "Epoch 7226 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7226: avg_loss appended (2.7778)\n", - "Epoch 7226: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7226: accuracy appended (80.56%)\n", - "Epoch 7226: model set back to train mode\n", - "Epoch 7226: model parameters saved\n", - "Epoch 7227 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7227: avg_loss appended (2.7778)\n", - "Epoch 7227: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7227: accuracy appended (80.56%)\n", - "Epoch 7227: model set back to train mode\n", - "Epoch 7227: model parameters saved\n", - "Epoch 7228 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7228: avg_loss appended (2.7778)\n", - "Epoch 7228: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7228: accuracy appended (80.56%)\n", - "Epoch 7228: model set back to train mode\n", - "Epoch 7228: model parameters saved\n", - "Epoch 7229 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7229: avg_loss appended (2.7778)\n", - "Epoch 7229: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7229: accuracy appended (80.56%)\n", - "Epoch 7229: model set back to train mode\n", - "Epoch 7229: model parameters saved\n", - "Epoch 7230 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7230: avg_loss appended (2.7778)\n", - "Epoch 7230: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7230: accuracy appended (80.56%)\n", - "Epoch 7230: model set back to train mode\n", - "Epoch 7230: model parameters saved\n", - "Epoch 7231 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7231: avg_loss appended (2.7778)\n", - "Epoch 7231: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7231: accuracy appended (80.56%)\n", - "Epoch 7231: model set back to train mode\n", - "Epoch 7231: model parameters saved\n", - "Epoch 7232 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7232: avg_loss appended (2.7778)\n", - "Epoch 7232: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7232: accuracy appended (80.56%)\n", - "Epoch 7232: model set back to train mode\n", - "Epoch 7232: model parameters saved\n", - "Epoch 7233 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7233: avg_loss appended (2.7778)\n", - "Epoch 7233: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7233: accuracy appended (80.56%)\n", - "Epoch 7233: model set back to train mode\n", - "Epoch 7233: model parameters saved\n", - "Epoch 7234 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7234: avg_loss appended (2.7778)\n", - "Epoch 7234: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7234: accuracy appended (80.56%)\n", - "Epoch 7234: model set back to train mode\n", - "Epoch 7234: model parameters saved\n", - "Epoch 7235 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7235: avg_loss appended (2.7778)\n", - "Epoch 7235: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7235: accuracy appended (80.56%)\n", - "Epoch 7235: model set back to train mode\n", - "Epoch 7235: model parameters saved\n", - "Epoch 7236 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7236: avg_loss appended (2.7778)\n", - "Epoch 7236: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7236: accuracy appended (80.56%)\n", - "Epoch 7236: model set back to train mode\n", - "Epoch 7236: model parameters saved\n", - "Epoch 7237 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7237: avg_loss appended (2.7778)\n", - "Epoch 7237: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7237: accuracy appended (80.56%)\n", - "Epoch 7237: model set back to train mode\n", - "Epoch 7237: model parameters saved\n", - "Epoch 7238 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7238: avg_loss appended (2.7778)\n", - "Epoch 7238: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7238: accuracy appended (80.56%)\n", - "Epoch 7238: model set back to train mode\n", - "Epoch 7238: model parameters saved\n", - "Epoch 7239 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7239: avg_loss appended (2.7778)\n", - "Epoch 7239: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7239: accuracy appended (80.56%)\n", - "Epoch 7239: model set back to train mode\n", - "Epoch 7239: model parameters saved\n", - "Epoch 7240 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7240: avg_loss appended (2.7778)\n", - "Epoch 7240: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7240: accuracy appended (80.56%)\n", - "Epoch 7240: model set back to train mode\n", - "Epoch 7240: model parameters saved\n", - "Epoch 7241 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7241: avg_loss appended (2.7778)\n", - "Epoch 7241: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7241: accuracy appended (80.56%)\n", - "Epoch 7241: model set back to train mode\n", - "Epoch 7241: model parameters saved\n", - "Epoch 7242 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7242: avg_loss appended (2.7778)\n", - "Epoch 7242: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7242: accuracy appended (80.56%)\n", - "Epoch 7242: model set back to train mode\n", - "Epoch 7242: model parameters saved\n", - "Epoch 7243 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7243: avg_loss appended (2.7778)\n", - "Epoch 7243: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7243: accuracy appended (80.56%)\n", - "Epoch 7243: model set back to train mode\n", - "Epoch 7243: model parameters saved\n", - "Epoch 7244 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7244: avg_loss appended (2.7778)\n", - "Epoch 7244: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7244: accuracy appended (80.56%)\n", - "Epoch 7244: model set back to train mode\n", - "Epoch 7244: model parameters saved\n", - "Epoch 7245 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7245: avg_loss appended (2.7778)\n", - "Epoch 7245: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7245: accuracy appended (80.56%)\n", - "Epoch 7245: model set back to train mode\n", - "Epoch 7245: model parameters saved\n", - "Epoch 7246 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7246: avg_loss appended (2.7778)\n", - "Epoch 7246: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7246: accuracy appended (80.56%)\n", - "Epoch 7246: model set back to train mode\n", - "Epoch 7246: model parameters saved\n", - "Epoch 7247 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7247: avg_loss appended (2.7778)\n", - "Epoch 7247: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7247: accuracy appended (80.56%)\n", - "Epoch 7247: model set back to train mode\n", - "Epoch 7247: model parameters saved\n", - "Epoch 7248 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7248: avg_loss appended (2.7778)\n", - "Epoch 7248: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7248: accuracy appended (80.56%)\n", - "Epoch 7248: model set back to train mode\n", - "Epoch 7248: model parameters saved\n", - "Epoch 7249 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7249: avg_loss appended (2.7778)\n", - "Epoch 7249: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7249: accuracy appended (80.56%)\n", - "Epoch 7249: model set back to train mode\n", - "Epoch 7249: model parameters saved\n", - "Epoch 7250 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7250: avg_loss appended (2.7778)\n", - "Epoch 7250: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7250: accuracy appended (80.56%)\n", - "Epoch 7250: model set back to train mode\n", - "Epoch 7250: model parameters saved\n", - "Epoch 7251 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7251: avg_loss appended (2.7778)\n", - "Epoch 7251: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7251: accuracy appended (80.56%)\n", - "Epoch 7251: model set back to train mode\n", - "Epoch 7251: model parameters saved\n", - "Epoch 7252 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7252: avg_loss appended (2.7778)\n", - "Epoch 7252: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7252: accuracy appended (80.56%)\n", - "Epoch 7252: model set back to train mode\n", - "Epoch 7252: model parameters saved\n", - "Epoch 7253 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7253: avg_loss appended (2.7778)\n", - "Epoch 7253: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7253: accuracy appended (80.56%)\n", - "Epoch 7253: model set back to train mode\n", - "Epoch 7253: model parameters saved\n", - "Epoch 7254 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7254: avg_loss appended (2.7778)\n", - "Epoch 7254: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7254: accuracy appended (80.56%)\n", - "Epoch 7254: model set back to train mode\n", - "Epoch 7254: model parameters saved\n", - "Epoch 7255 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7255: avg_loss appended (2.7778)\n", - "Epoch 7255: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7255: accuracy appended (80.56%)\n", - "Epoch 7255: model set back to train mode\n", - "Epoch 7255: model parameters saved\n", - "Epoch 7256 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7256: avg_loss appended (2.7778)\n", - "Epoch 7256: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7256: accuracy appended (80.56%)\n", - "Epoch 7256: model set back to train mode\n", - "Epoch 7256: model parameters saved\n", - "Epoch 7257 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7257: avg_loss appended (2.7778)\n", - "Epoch 7257: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7257: accuracy appended (80.56%)\n", - "Epoch 7257: model set back to train mode\n", - "Epoch 7257: model parameters saved\n", - "Epoch 7258 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7258: avg_loss appended (2.7778)\n", - "Epoch 7258: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7258: accuracy appended (80.56%)\n", - "Epoch 7258: model set back to train mode\n", - "Epoch 7258: model parameters saved\n", - "Epoch 7259 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7259: avg_loss appended (2.7778)\n", - "Epoch 7259: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7259: accuracy appended (80.56%)\n", - "Epoch 7259: model set back to train mode\n", - "Epoch 7259: model parameters saved\n", - "Epoch 7260 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7260: avg_loss appended (2.7778)\n", - "Epoch 7260: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7260: accuracy appended (80.56%)\n", - "Epoch 7260: model set back to train mode\n", - "Epoch 7260: model parameters saved\n", - "Epoch 7261 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7261: avg_loss appended (2.7778)\n", - "Epoch 7261: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7261: accuracy appended (80.56%)\n", - "Epoch 7261: model set back to train mode\n", - "Epoch 7261: model parameters saved\n", - "Epoch 7262 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7262: avg_loss appended (2.7778)\n", - "Epoch 7262: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7262: accuracy appended (80.56%)\n", - "Epoch 7262: model set back to train mode\n", - "Epoch 7262: model parameters saved\n", - "Epoch 7263 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7263: avg_loss appended (2.7778)\n", - "Epoch 7263: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7263: accuracy appended (80.56%)\n", - "Epoch 7263: model set back to train mode\n", - "Epoch 7263: model parameters saved\n", - "Epoch 7264 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7264: avg_loss appended (2.7778)\n", - "Epoch 7264: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7264: accuracy appended (80.56%)\n", - "Epoch 7264: model set back to train mode\n", - "Epoch 7264: model parameters saved\n", - "Epoch 7265 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7265: avg_loss appended (2.7778)\n", - "Epoch 7265: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7265: accuracy appended (80.56%)\n", - "Epoch 7265: model set back to train mode\n", - "Epoch 7265: model parameters saved\n", - "Epoch 7266 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7266: avg_loss appended (2.7778)\n", - "Epoch 7266: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7266: accuracy appended (80.56%)\n", - "Epoch 7266: model set back to train mode\n", - "Epoch 7266: model parameters saved\n", - "Epoch 7267 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7267: avg_loss appended (2.7778)\n", - "Epoch 7267: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7267: accuracy appended (80.56%)\n", - "Epoch 7267: model set back to train mode\n", - "Epoch 7267: model parameters saved\n", - "Epoch 7268 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7268: avg_loss appended (2.7778)\n", - "Epoch 7268: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7268: accuracy appended (80.56%)\n", - "Epoch 7268: model set back to train mode\n", - "Epoch 7268: model parameters saved\n", - "Epoch 7269 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7269: avg_loss appended (2.7778)\n", - "Epoch 7269: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7269: accuracy appended (80.56%)\n", - "Epoch 7269: model set back to train mode\n", - "Epoch 7269: model parameters saved\n", - "Epoch 7270 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7270: avg_loss appended (2.7778)\n", - "Epoch 7270: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7270: accuracy appended (80.56%)\n", - "Epoch 7270: model set back to train mode\n", - "Epoch 7270: model parameters saved\n", - "Epoch 7271 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7271: avg_loss appended (2.7778)\n", - "Epoch 7271: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7271: accuracy appended (80.56%)\n", - "Epoch 7271: model set back to train mode\n", - "Epoch 7271: model parameters saved\n", - "Epoch 7272 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7272: avg_loss appended (2.7778)\n", - "Epoch 7272: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7272: accuracy appended (80.56%)\n", - "Epoch 7272: model set back to train mode\n", - "Epoch 7272: model parameters saved\n", - "Epoch 7273 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7273: avg_loss appended (2.7778)\n", - "Epoch 7273: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7273: accuracy appended (80.56%)\n", - "Epoch 7273: model set back to train mode\n", - "Epoch 7273: model parameters saved\n", - "Epoch 7274 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7274: avg_loss appended (2.7778)\n", - "Epoch 7274: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7274: accuracy appended (80.56%)\n", - "Epoch 7274: model set back to train mode\n", - "Epoch 7274: model parameters saved\n", - "Epoch 7275 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7275: avg_loss appended (2.7778)\n", - "Epoch 7275: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7275: accuracy appended (80.56%)\n", - "Epoch 7275: model set back to train mode\n", - "Epoch 7275: model parameters saved\n", - "Epoch 7276 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7276: avg_loss appended (2.7778)\n", - "Epoch 7276: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7276: accuracy appended (80.56%)\n", - "Epoch 7276: model set back to train mode\n", - "Epoch 7276: model parameters saved\n", - "Epoch 7277 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7277: avg_loss appended (2.7778)\n", - "Epoch 7277: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7277: accuracy appended (80.56%)\n", - "Epoch 7277: model set back to train mode\n", - "Epoch 7277: model parameters saved\n", - "Epoch 7278 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7278: avg_loss appended (2.7778)\n", - "Epoch 7278: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7278: accuracy appended (80.56%)\n", - "Epoch 7278: model set back to train mode\n", - "Epoch 7278: model parameters saved\n", - "Epoch 7279 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7279: avg_loss appended (2.7778)\n", - "Epoch 7279: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7279: accuracy appended (80.56%)\n", - "Epoch 7279: model set back to train mode\n", - "Epoch 7279: model parameters saved\n", - "Epoch 7280 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7280: avg_loss appended (2.7778)\n", - "Epoch 7280: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7280: accuracy appended (80.56%)\n", - "Epoch 7280: model set back to train mode\n", - "Epoch 7280: model parameters saved\n", - "Epoch 7281 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7281: avg_loss appended (2.7778)\n", - "Epoch 7281: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7281: accuracy appended (80.56%)\n", - "Epoch 7281: model set back to train mode\n", - "Epoch 7281: model parameters saved\n", - "Epoch 7282 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7282: avg_loss appended (2.7778)\n", - "Epoch 7282: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7282: accuracy appended (80.56%)\n", - "Epoch 7282: model set back to train mode\n", - "Epoch 7282: model parameters saved\n", - "Epoch 7283 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7283: avg_loss appended (2.7778)\n", - "Epoch 7283: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7283: accuracy appended (80.56%)\n", - "Epoch 7283: model set back to train mode\n", - "Epoch 7283: model parameters saved\n", - "Epoch 7284 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7284: avg_loss appended (2.7778)\n", - "Epoch 7284: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7284: accuracy appended (80.56%)\n", - "Epoch 7284: model set back to train mode\n", - "Epoch 7284: model parameters saved\n", - "Epoch 7285 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7285: avg_loss appended (2.7778)\n", - "Epoch 7285: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7285: accuracy appended (80.56%)\n", - "Epoch 7285: model set back to train mode\n", - "Epoch 7285: model parameters saved\n", - "Epoch 7286 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7286: avg_loss appended (2.7778)\n", - "Epoch 7286: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7286: accuracy appended (80.56%)\n", - "Epoch 7286: model set back to train mode\n", - "Epoch 7286: model parameters saved\n", - "Epoch 7287 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7287: avg_loss appended (2.7778)\n", - "Epoch 7287: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7287: accuracy appended (80.56%)\n", - "Epoch 7287: model set back to train mode\n", - "Epoch 7287: model parameters saved\n", - "Epoch 7288 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7288: avg_loss appended (2.7778)\n", - "Epoch 7288: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7288: accuracy appended (80.56%)\n", - "Epoch 7288: model set back to train mode\n", - "Epoch 7288: model parameters saved\n", - "Epoch 7289 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7289: avg_loss appended (2.7778)\n", - "Epoch 7289: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7289: accuracy appended (80.56%)\n", - "Epoch 7289: model set back to train mode\n", - "Epoch 7289: model parameters saved\n", - "Epoch 7290 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7290: avg_loss appended (2.7778)\n", - "Epoch 7290: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7290: accuracy appended (80.56%)\n", - "Epoch 7290: model set back to train mode\n", - "Epoch 7290: model parameters saved\n", - "Epoch 7291 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7291: avg_loss appended (2.7778)\n", - "Epoch 7291: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7291: accuracy appended (80.56%)\n", - "Epoch 7291: model set back to train mode\n", - "Epoch 7291: model parameters saved\n", - "Epoch 7292 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7292: avg_loss appended (2.7778)\n", - "Epoch 7292: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7292: accuracy appended (80.56%)\n", - "Epoch 7292: model set back to train mode\n", - "Epoch 7292: model parameters saved\n", - "Epoch 7293 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7293: avg_loss appended (2.7778)\n", - "Epoch 7293: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7293: accuracy appended (80.56%)\n", - "Epoch 7293: model set back to train mode\n", - "Epoch 7293: model parameters saved\n", - "Epoch 7294 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7294: avg_loss appended (2.7778)\n", - "Epoch 7294: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7294: accuracy appended (80.56%)\n", - "Epoch 7294: model set back to train mode\n", - "Epoch 7294: model parameters saved\n", - "Epoch 7295 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7295: avg_loss appended (2.7778)\n", - "Epoch 7295: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7295: accuracy appended (80.56%)\n", - "Epoch 7295: model set back to train mode\n", - "Epoch 7295: model parameters saved\n", - "Epoch 7296 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7296: avg_loss appended (2.7778)\n", - "Epoch 7296: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7296: accuracy appended (80.56%)\n", - "Epoch 7296: model set back to train mode\n", - "Epoch 7296: model parameters saved\n", - "Epoch 7297 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7297: avg_loss appended (2.7778)\n", - "Epoch 7297: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7297: accuracy appended (80.56%)\n", - "Epoch 7297: model set back to train mode\n", - "Epoch 7297: model parameters saved\n", - "Epoch 7298 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7298: avg_loss appended (2.7778)\n", - "Epoch 7298: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7298: accuracy appended (80.56%)\n", - "Epoch 7298: model set back to train mode\n", - "Epoch 7298: model parameters saved\n", - "Epoch 7299 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7299: avg_loss appended (2.7778)\n", - "Epoch 7299: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7299: accuracy appended (80.56%)\n", - "Epoch 7299: model set back to train mode\n", - "Epoch 7299: model parameters saved\n", - "Epoch 7300 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7300: avg_loss appended (2.7778)\n", - "Epoch 7300: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7300: accuracy appended (80.56%)\n", - "Epoch 7300: model set back to train mode\n", - "Epoch 7300: model parameters saved\n", - "Epoch 7300/10000, Loss: 2.7778, Accuracy: 80.56%\n", - "Epoch 7301 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7301: avg_loss appended (2.7778)\n", - "Epoch 7301: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7301: accuracy appended (80.56%)\n", - "Epoch 7301: model set back to train mode\n", - "Epoch 7301: model parameters saved\n", - "Epoch 7302 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7302: avg_loss appended (2.7778)\n", - "Epoch 7302: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7302: accuracy appended (80.56%)\n", - "Epoch 7302: model set back to train mode\n", - "Epoch 7302: model parameters saved\n", - "Epoch 7303 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7303: avg_loss appended (2.7778)\n", - "Epoch 7303: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7303: accuracy appended (80.56%)\n", - "Epoch 7303: model set back to train mode\n", - "Epoch 7303: model parameters saved\n", - "Epoch 7304 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7304: avg_loss appended (2.7778)\n", - "Epoch 7304: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7304: accuracy appended (80.56%)\n", - "Epoch 7304: model set back to train mode\n", - "Epoch 7304: model parameters saved\n", - "Epoch 7305 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7305: avg_loss appended (2.7778)\n", - "Epoch 7305: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7305: accuracy appended (80.56%)\n", - "Epoch 7305: model set back to train mode\n", - "Epoch 7305: model parameters saved\n", - "Epoch 7306 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7306: avg_loss appended (2.7778)\n", - "Epoch 7306: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7306: accuracy appended (80.56%)\n", - "Epoch 7306: model set back to train mode\n", - "Epoch 7306: model parameters saved\n", - "Epoch 7307 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7307: avg_loss appended (2.7778)\n", - "Epoch 7307: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7307: accuracy appended (80.56%)\n", - "Epoch 7307: model set back to train mode\n", - "Epoch 7307: model parameters saved\n", - "Epoch 7308 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7308: avg_loss appended (2.7778)\n", - "Epoch 7308: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7308: accuracy appended (80.56%)\n", - "Epoch 7308: model set back to train mode\n", - "Epoch 7308: model parameters saved\n", - "Epoch 7309 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7309: avg_loss appended (2.7778)\n", - "Epoch 7309: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7309: accuracy appended (80.56%)\n", - "Epoch 7309: model set back to train mode\n", - "Epoch 7309: model parameters saved\n", - "Epoch 7310 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7310: avg_loss appended (2.7778)\n", - "Epoch 7310: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7310: accuracy appended (80.56%)\n", - "Epoch 7310: model set back to train mode\n", - "Epoch 7310: model parameters saved\n", - "Epoch 7311 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7311: avg_loss appended (2.7778)\n", - "Epoch 7311: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7311: accuracy appended (80.56%)\n", - "Epoch 7311: model set back to train mode\n", - "Epoch 7311: model parameters saved\n", - "Epoch 7312 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7312: avg_loss appended (2.7778)\n", - "Epoch 7312: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7312: accuracy appended (80.56%)\n", - "Epoch 7312: model set back to train mode\n", - "Epoch 7312: model parameters saved\n", - "Epoch 7313 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7313: avg_loss appended (2.7778)\n", - "Epoch 7313: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7313: accuracy appended (80.56%)\n", - "Epoch 7313: model set back to train mode\n", - "Epoch 7313: model parameters saved\n", - "Epoch 7314 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7314: avg_loss appended (2.7778)\n", - "Epoch 7314: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7314: accuracy appended (80.56%)\n", - "Epoch 7314: model set back to train mode\n", - "Epoch 7314: model parameters saved\n", - "Epoch 7315 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7315: avg_loss appended (2.7778)\n", - "Epoch 7315: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7315: accuracy appended (80.56%)\n", - "Epoch 7315: model set back to train mode\n", - "Epoch 7315: model parameters saved\n", - "Epoch 7316 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7316: avg_loss appended (2.7778)\n", - "Epoch 7316: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7316: accuracy appended (80.56%)\n", - "Epoch 7316: model set back to train mode\n", - "Epoch 7316: model parameters saved\n", - "Epoch 7317 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7317: avg_loss appended (2.7778)\n", - "Epoch 7317: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7317: accuracy appended (80.56%)\n", - "Epoch 7317: model set back to train mode\n", - "Epoch 7317: model parameters saved\n", - "Epoch 7318 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7318: avg_loss appended (2.7778)\n", - "Epoch 7318: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7318: accuracy appended (80.56%)\n", - "Epoch 7318: model set back to train mode\n", - "Epoch 7318: model parameters saved\n", - "Epoch 7319 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7319: avg_loss appended (2.7778)\n", - "Epoch 7319: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7319: accuracy appended (80.56%)\n", - "Epoch 7319: model set back to train mode\n", - "Epoch 7319: model parameters saved\n", - "Epoch 7320 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7320: avg_loss appended (2.7778)\n", - "Epoch 7320: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7320: accuracy appended (80.56%)\n", - "Epoch 7320: model set back to train mode\n", - "Epoch 7320: model parameters saved\n", - "Epoch 7321 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7321: avg_loss appended (2.7778)\n", - "Epoch 7321: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7321: accuracy appended (80.56%)\n", - "Epoch 7321: model set back to train mode\n", - "Epoch 7321: model parameters saved\n", - "Epoch 7322 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7322: avg_loss appended (2.7778)\n", - "Epoch 7322: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7322: accuracy appended (80.56%)\n", - "Epoch 7322: model set back to train mode\n", - "Epoch 7322: model parameters saved\n", - "Epoch 7323 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7323: avg_loss appended (2.7778)\n", - "Epoch 7323: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7323: accuracy appended (80.56%)\n", - "Epoch 7323: model set back to train mode\n", - "Epoch 7323: model parameters saved\n", - "Epoch 7324 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7324: avg_loss appended (2.7778)\n", - "Epoch 7324: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7324: accuracy appended (80.56%)\n", - "Epoch 7324: model set back to train mode\n", - "Epoch 7324: model parameters saved\n", - "Epoch 7325 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7325: avg_loss appended (2.7778)\n", - "Epoch 7325: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7325: accuracy appended (80.56%)\n", - "Epoch 7325: model set back to train mode\n", - "Epoch 7325: model parameters saved\n", - "Epoch 7326 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7326: avg_loss appended (2.7778)\n", - "Epoch 7326: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7326: accuracy appended (80.56%)\n", - "Epoch 7326: model set back to train mode\n", - "Epoch 7326: model parameters saved\n", - "Epoch 7327 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7327: avg_loss appended (2.7778)\n", - "Epoch 7327: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7327: accuracy appended (80.56%)\n", - "Epoch 7327: model set back to train mode\n", - "Epoch 7327: model parameters saved\n", - "Epoch 7328 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7328: avg_loss appended (2.7778)\n", - "Epoch 7328: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7328: accuracy appended (80.56%)\n", - "Epoch 7328: model set back to train mode\n", - "Epoch 7328: model parameters saved\n", - "Epoch 7329 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7329: avg_loss appended (2.7778)\n", - "Epoch 7329: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7329: accuracy appended (80.56%)\n", - "Epoch 7329: model set back to train mode\n", - "Epoch 7329: model parameters saved\n", - "Epoch 7330 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7330: avg_loss appended (2.7778)\n", - "Epoch 7330: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7330: accuracy appended (80.56%)\n", - "Epoch 7330: model set back to train mode\n", - "Epoch 7330: model parameters saved\n", - "Epoch 7331 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7331: avg_loss appended (2.7778)\n", - "Epoch 7331: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7331: accuracy appended (80.56%)\n", - "Epoch 7331: model set back to train mode\n", - "Epoch 7331: model parameters saved\n", - "Epoch 7332 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7332: avg_loss appended (2.7778)\n", - "Epoch 7332: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7332: accuracy appended (80.56%)\n", - "Epoch 7332: model set back to train mode\n", - "Epoch 7332: model parameters saved\n", - "Epoch 7333 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7333: avg_loss appended (2.7778)\n", - "Epoch 7333: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7333: accuracy appended (80.56%)\n", - "Epoch 7333: model set back to train mode\n", - "Epoch 7333: model parameters saved\n", - "Epoch 7334 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7334: avg_loss appended (2.7778)\n", - "Epoch 7334: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7334: accuracy appended (80.56%)\n", - "Epoch 7334: model set back to train mode\n", - "Epoch 7334: model parameters saved\n", - "Epoch 7335 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7335: avg_loss appended (2.7778)\n", - "Epoch 7335: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7335: accuracy appended (80.56%)\n", - "Epoch 7335: model set back to train mode\n", - "Epoch 7335: model parameters saved\n", - "Epoch 7336 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7336: avg_loss appended (2.7778)\n", - "Epoch 7336: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7336: accuracy appended (80.56%)\n", - "Epoch 7336: model set back to train mode\n", - "Epoch 7336: model parameters saved\n", - "Epoch 7337 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7337: avg_loss appended (2.7778)\n", - "Epoch 7337: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7337: accuracy appended (80.56%)\n", - "Epoch 7337: model set back to train mode\n", - "Epoch 7337: model parameters saved\n", - "Epoch 7338 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7338: avg_loss appended (2.7778)\n", - "Epoch 7338: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7338: accuracy appended (80.56%)\n", - "Epoch 7338: model set back to train mode\n", - "Epoch 7338: model parameters saved\n", - "Epoch 7339 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7339: avg_loss appended (2.7778)\n", - "Epoch 7339: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7339: accuracy appended (80.56%)\n", - "Epoch 7339: model set back to train mode\n", - "Epoch 7339: model parameters saved\n", - "Epoch 7340 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7340: avg_loss appended (2.7778)\n", - "Epoch 7340: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7340: accuracy appended (80.56%)\n", - "Epoch 7340: model set back to train mode\n", - "Epoch 7340: model parameters saved\n", - "Epoch 7341 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7341: avg_loss appended (2.7778)\n", - "Epoch 7341: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7341: accuracy appended (80.56%)\n", - "Epoch 7341: model set back to train mode\n", - "Epoch 7341: model parameters saved\n", - "Epoch 7342 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7342: avg_loss appended (2.7778)\n", - "Epoch 7342: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7342: accuracy appended (80.56%)\n", - "Epoch 7342: model set back to train mode\n", - "Epoch 7342: model parameters saved\n", - "Epoch 7343 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7343: avg_loss appended (2.7778)\n", - "Epoch 7343: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7343: accuracy appended (80.56%)\n", - "Epoch 7343: model set back to train mode\n", - "Epoch 7343: model parameters saved\n", - "Epoch 7344 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7344: avg_loss appended (2.7778)\n", - "Epoch 7344: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7344: accuracy appended (80.56%)\n", - "Epoch 7344: model set back to train mode\n", - "Epoch 7344: model parameters saved\n", - "Epoch 7345 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7345: avg_loss appended (2.7778)\n", - "Epoch 7345: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7345: accuracy appended (80.56%)\n", - "Epoch 7345: model set back to train mode\n", - "Epoch 7345: model parameters saved\n", - "Epoch 7346 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7346: avg_loss appended (2.7778)\n", - "Epoch 7346: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7346: accuracy appended (80.56%)\n", - "Epoch 7346: model set back to train mode\n", - "Epoch 7346: model parameters saved\n", - "Epoch 7347 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7347: avg_loss appended (2.7778)\n", - "Epoch 7347: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7347: accuracy appended (80.56%)\n", - "Epoch 7347: model set back to train mode\n", - "Epoch 7347: model parameters saved\n", - "Epoch 7348 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7348: avg_loss appended (2.7778)\n", - "Epoch 7348: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7348: accuracy appended (80.56%)\n", - "Epoch 7348: model set back to train mode\n", - "Epoch 7348: model parameters saved\n", - "Epoch 7349 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7349: avg_loss appended (2.7778)\n", - "Epoch 7349: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7349: accuracy appended (80.56%)\n", - "Epoch 7349: model set back to train mode\n", - "Epoch 7349: model parameters saved\n", - "Epoch 7350 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7350: avg_loss appended (2.7778)\n", - "Epoch 7350: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7350: accuracy appended (80.56%)\n", - "Epoch 7350: model set back to train mode\n", - "Epoch 7350: model parameters saved\n", - "Epoch 7351 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7351: avg_loss appended (2.7778)\n", - "Epoch 7351: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7351: accuracy appended (80.56%)\n", - "Epoch 7351: model set back to train mode\n", - "Epoch 7351: model parameters saved\n", - "Epoch 7352 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7352: avg_loss appended (2.7778)\n", - "Epoch 7352: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7352: accuracy appended (80.56%)\n", - "Epoch 7352: model set back to train mode\n", - "Epoch 7352: model parameters saved\n", - "Epoch 7353 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7353: avg_loss appended (2.7778)\n", - "Epoch 7353: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7353: accuracy appended (80.56%)\n", - "Epoch 7353: model set back to train mode\n", - "Epoch 7353: model parameters saved\n", - "Epoch 7354 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7354: avg_loss appended (2.7778)\n", - "Epoch 7354: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7354: accuracy appended (80.56%)\n", - "Epoch 7354: model set back to train mode\n", - "Epoch 7354: model parameters saved\n", - "Epoch 7355 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7355: avg_loss appended (2.7778)\n", - "Epoch 7355: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7355: accuracy appended (80.56%)\n", - "Epoch 7355: model set back to train mode\n", - "Epoch 7355: model parameters saved\n", - "Epoch 7356 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7356: avg_loss appended (2.7778)\n", - "Epoch 7356: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7356: accuracy appended (80.56%)\n", - "Epoch 7356: model set back to train mode\n", - "Epoch 7356: model parameters saved\n", - "Epoch 7357 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7357: avg_loss appended (2.7778)\n", - "Epoch 7357: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7357: accuracy appended (80.56%)\n", - "Epoch 7357: model set back to train mode\n", - "Epoch 7357: model parameters saved\n", - "Epoch 7358 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7358: avg_loss appended (2.7778)\n", - "Epoch 7358: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7358: accuracy appended (80.56%)\n", - "Epoch 7358: model set back to train mode\n", - "Epoch 7358: model parameters saved\n", - "Epoch 7359 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7359: avg_loss appended (2.7778)\n", - "Epoch 7359: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7359: accuracy appended (80.56%)\n", - "Epoch 7359: model set back to train mode\n", - "Epoch 7359: model parameters saved\n", - "Epoch 7360 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7360: avg_loss appended (2.7778)\n", - "Epoch 7360: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7360: accuracy appended (80.56%)\n", - "Epoch 7360: model set back to train mode\n", - "Epoch 7360: model parameters saved\n", - "Epoch 7361 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7361: avg_loss appended (2.7778)\n", - "Epoch 7361: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7361: accuracy appended (80.56%)\n", - "Epoch 7361: model set back to train mode\n", - "Epoch 7361: model parameters saved\n", - "Epoch 7362 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7362: avg_loss appended (2.7778)\n", - "Epoch 7362: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7362: accuracy appended (80.56%)\n", - "Epoch 7362: model set back to train mode\n", - "Epoch 7362: model parameters saved\n", - "Epoch 7363 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7363: avg_loss appended (2.7778)\n", - "Epoch 7363: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7363: accuracy appended (80.56%)\n", - "Epoch 7363: model set back to train mode\n", - "Epoch 7363: model parameters saved\n", - "Epoch 7364 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7364: avg_loss appended (2.7778)\n", - "Epoch 7364: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7364: accuracy appended (80.56%)\n", - "Epoch 7364: model set back to train mode\n", - "Epoch 7364: model parameters saved\n", - "Epoch 7365 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7365: avg_loss appended (2.7778)\n", - "Epoch 7365: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7365: accuracy appended (80.56%)\n", - "Epoch 7365: model set back to train mode\n", - "Epoch 7365: model parameters saved\n", - "Epoch 7366 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7366: avg_loss appended (2.7778)\n", - "Epoch 7366: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7366: accuracy appended (80.56%)\n", - "Epoch 7366: model set back to train mode\n", - "Epoch 7366: model parameters saved\n", - "Epoch 7367 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7367: avg_loss appended (2.7778)\n", - "Epoch 7367: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7367: accuracy appended (80.56%)\n", - "Epoch 7367: model set back to train mode\n", - "Epoch 7367: model parameters saved\n", - "Epoch 7368 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7368: avg_loss appended (2.7778)\n", - "Epoch 7368: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7368: accuracy appended (80.56%)\n", - "Epoch 7368: model set back to train mode\n", - "Epoch 7368: model parameters saved\n", - "Epoch 7369 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7369: avg_loss appended (2.7778)\n", - "Epoch 7369: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7369: accuracy appended (80.56%)\n", - "Epoch 7369: model set back to train mode\n", - "Epoch 7369: model parameters saved\n", - "Epoch 7370 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7370: avg_loss appended (2.7778)\n", - "Epoch 7370: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7370: accuracy appended (80.56%)\n", - "Epoch 7370: model set back to train mode\n", - "Epoch 7370: model parameters saved\n", - "Epoch 7371 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7371: avg_loss appended (2.7778)\n", - "Epoch 7371: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7371: accuracy appended (80.56%)\n", - "Epoch 7371: model set back to train mode\n", - "Epoch 7371: model parameters saved\n", - "Epoch 7372 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7372: avg_loss appended (2.7778)\n", - "Epoch 7372: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7372: accuracy appended (80.56%)\n", - "Epoch 7372: model set back to train mode\n", - "Epoch 7372: model parameters saved\n", - "Epoch 7373 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7373: avg_loss appended (2.7778)\n", - "Epoch 7373: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7373: accuracy appended (80.56%)\n", - "Epoch 7373: model set back to train mode\n", - "Epoch 7373: model parameters saved\n", - "Epoch 7374 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7374: avg_loss appended (2.7778)\n", - "Epoch 7374: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7374: accuracy appended (80.56%)\n", - "Epoch 7374: model set back to train mode\n", - "Epoch 7374: model parameters saved\n", - "Epoch 7375 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7375: avg_loss appended (2.7778)\n", - "Epoch 7375: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7375: accuracy appended (80.56%)\n", - "Epoch 7375: model set back to train mode\n", - "Epoch 7375: model parameters saved\n", - "Epoch 7376 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7376: avg_loss appended (2.7778)\n", - "Epoch 7376: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7376: accuracy appended (80.56%)\n", - "Epoch 7376: model set back to train mode\n", - "Epoch 7376: model parameters saved\n", - "Epoch 7377 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7377: avg_loss appended (2.7778)\n", - "Epoch 7377: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7377: accuracy appended (80.56%)\n", - "Epoch 7377: model set back to train mode\n", - "Epoch 7377: model parameters saved\n", - "Epoch 7378 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7378: avg_loss appended (2.7778)\n", - "Epoch 7378: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7378: accuracy appended (80.56%)\n", - "Epoch 7378: model set back to train mode\n", - "Epoch 7378: model parameters saved\n", - "Epoch 7379 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7379: avg_loss appended (2.7778)\n", - "Epoch 7379: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7379: accuracy appended (80.56%)\n", - "Epoch 7379: model set back to train mode\n", - "Epoch 7379: model parameters saved\n", - "Epoch 7380 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7380: avg_loss appended (2.7778)\n", - "Epoch 7380: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7380: accuracy appended (80.56%)\n", - "Epoch 7380: model set back to train mode\n", - "Epoch 7380: model parameters saved\n", - "Epoch 7381 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7381: avg_loss appended (2.7778)\n", - "Epoch 7381: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7381: accuracy appended (80.56%)\n", - "Epoch 7381: model set back to train mode\n", - "Epoch 7381: model parameters saved\n", - "Epoch 7382 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7382: avg_loss appended (2.7778)\n", - "Epoch 7382: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7382: accuracy appended (80.56%)\n", - "Epoch 7382: model set back to train mode\n", - "Epoch 7382: model parameters saved\n", - "Epoch 7383 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7383: avg_loss appended (2.7778)\n", - "Epoch 7383: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7383: accuracy appended (80.56%)\n", - "Epoch 7383: model set back to train mode\n", - "Epoch 7383: model parameters saved\n", - "Epoch 7384 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7384: avg_loss appended (2.7778)\n", - "Epoch 7384: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7384: accuracy appended (80.56%)\n", - "Epoch 7384: model set back to train mode\n", - "Epoch 7384: model parameters saved\n", - "Epoch 7385 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7385: avg_loss appended (2.7778)\n", - "Epoch 7385: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7385: accuracy appended (80.56%)\n", - "Epoch 7385: model set back to train mode\n", - "Epoch 7385: model parameters saved\n", - "Epoch 7386 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7386: avg_loss appended (2.7778)\n", - "Epoch 7386: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7386: accuracy appended (80.56%)\n", - "Epoch 7386: model set back to train mode\n", - "Epoch 7386: model parameters saved\n", - "Epoch 7387 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7387: avg_loss appended (2.7778)\n", - "Epoch 7387: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7387: accuracy appended (80.56%)\n", - "Epoch 7387: model set back to train mode\n", - "Epoch 7387: model parameters saved\n", - "Epoch 7388 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7388: avg_loss appended (2.7778)\n", - "Epoch 7388: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7388: accuracy appended (80.56%)\n", - "Epoch 7388: model set back to train mode\n", - "Epoch 7388: model parameters saved\n", - "Epoch 7389 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7389: avg_loss appended (2.7778)\n", - "Epoch 7389: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7389: accuracy appended (80.56%)\n", - "Epoch 7389: model set back to train mode\n", - "Epoch 7389: model parameters saved\n", - "Epoch 7390 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7390: avg_loss appended (2.7778)\n", - "Epoch 7390: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7390: accuracy appended (80.56%)\n", - "Epoch 7390: model set back to train mode\n", - "Epoch 7390: model parameters saved\n", - "Epoch 7391 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7391: avg_loss appended (2.7778)\n", - "Epoch 7391: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7391: accuracy appended (80.56%)\n", - "Epoch 7391: model set back to train mode\n", - "Epoch 7391: model parameters saved\n", - "Epoch 7392 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7392: avg_loss appended (2.7778)\n", - "Epoch 7392: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7392: accuracy appended (80.56%)\n", - "Epoch 7392: model set back to train mode\n", - "Epoch 7392: model parameters saved\n", - "Epoch 7393 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7393: avg_loss appended (2.7778)\n", - "Epoch 7393: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7393: accuracy appended (80.56%)\n", - "Epoch 7393: model set back to train mode\n", - "Epoch 7393: model parameters saved\n", - "Epoch 7394 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7394: avg_loss appended (2.7778)\n", - "Epoch 7394: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7394: accuracy appended (80.56%)\n", - "Epoch 7394: model set back to train mode\n", - "Epoch 7394: model parameters saved\n", - "Epoch 7395 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7395: avg_loss appended (2.7778)\n", - "Epoch 7395: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7395: accuracy appended (80.56%)\n", - "Epoch 7395: model set back to train mode\n", - "Epoch 7395: model parameters saved\n", - "Epoch 7396 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7396: avg_loss appended (2.7778)\n", - "Epoch 7396: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7396: accuracy appended (80.56%)\n", - "Epoch 7396: model set back to train mode\n", - "Epoch 7396: model parameters saved\n", - "Epoch 7397 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7397: avg_loss appended (2.7778)\n", - "Epoch 7397: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7397: accuracy appended (80.56%)\n", - "Epoch 7397: model set back to train mode\n", - "Epoch 7397: model parameters saved\n", - "Epoch 7398 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7398: avg_loss appended (2.7778)\n", - "Epoch 7398: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7398: accuracy appended (80.56%)\n", - "Epoch 7398: model set back to train mode\n", - "Epoch 7398: model parameters saved\n", - "Epoch 7399 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7399: avg_loss appended (2.7778)\n", - "Epoch 7399: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7399: accuracy appended (80.56%)\n", - "Epoch 7399: model set back to train mode\n", - "Epoch 7399: model parameters saved\n", - "Epoch 7400 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7400: avg_loss appended (2.7778)\n", - "Epoch 7400: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7400: accuracy appended (80.56%)\n", - "Epoch 7400: model set back to train mode\n", - "Epoch 7400: model parameters saved\n", - "Epoch 7400/10000, Loss: 2.7778, Accuracy: 80.56%\n", - "Epoch 7401 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7401: avg_loss appended (2.7778)\n", - "Epoch 7401: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7401: accuracy appended (80.56%)\n", - "Epoch 7401: model set back to train mode\n", - "Epoch 7401: model parameters saved\n", - "Epoch 7402 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7402: avg_loss appended (2.7778)\n", - "Epoch 7402: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7402: accuracy appended (80.56%)\n", - "Epoch 7402: model set back to train mode\n", - "Epoch 7402: model parameters saved\n", - "Epoch 7403 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7403: avg_loss appended (2.7778)\n", - "Epoch 7403: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7403: accuracy appended (80.56%)\n", - "Epoch 7403: model set back to train mode\n", - "Epoch 7403: model parameters saved\n", - "Epoch 7404 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7404: avg_loss appended (2.7778)\n", - "Epoch 7404: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7404: accuracy appended (80.56%)\n", - "Epoch 7404: model set back to train mode\n", - "Epoch 7404: model parameters saved\n", - "Epoch 7405 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7405: avg_loss appended (2.7778)\n", - "Epoch 7405: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7405: accuracy appended (80.56%)\n", - "Epoch 7405: model set back to train mode\n", - "Epoch 7405: model parameters saved\n", - "Epoch 7406 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7406: avg_loss appended (2.7778)\n", - "Epoch 7406: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7406: accuracy appended (80.56%)\n", - "Epoch 7406: model set back to train mode\n", - "Epoch 7406: model parameters saved\n", - "Epoch 7407 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7407: avg_loss appended (2.7778)\n", - "Epoch 7407: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7407: accuracy appended (80.56%)\n", - "Epoch 7407: model set back to train mode\n", - "Epoch 7407: model parameters saved\n", - "Epoch 7408 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7408: avg_loss appended (2.7778)\n", - "Epoch 7408: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7408: accuracy appended (80.56%)\n", - "Epoch 7408: model set back to train mode\n", - "Epoch 7408: model parameters saved\n", - "Epoch 7409 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7409: avg_loss appended (2.7778)\n", - "Epoch 7409: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7409: accuracy appended (80.56%)\n", - "Epoch 7409: model set back to train mode\n", - "Epoch 7409: model parameters saved\n", - "Epoch 7410 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7410: avg_loss appended (2.7778)\n", - "Epoch 7410: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7410: accuracy appended (80.56%)\n", - "Epoch 7410: model set back to train mode\n", - "Epoch 7410: model parameters saved\n", - "Epoch 7411 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7411: avg_loss appended (2.7778)\n", - "Epoch 7411: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7411: accuracy appended (80.56%)\n", - "Epoch 7411: model set back to train mode\n", - "Epoch 7411: model parameters saved\n", - "Epoch 7412 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7412: avg_loss appended (2.7778)\n", - "Epoch 7412: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7412: accuracy appended (80.56%)\n", - "Epoch 7412: model set back to train mode\n", - "Epoch 7412: model parameters saved\n", - "Epoch 7413 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7413: avg_loss appended (2.7778)\n", - "Epoch 7413: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7413: accuracy appended (80.56%)\n", - "Epoch 7413: model set back to train mode\n", - "Epoch 7413: model parameters saved\n", - "Epoch 7414 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7414: avg_loss appended (2.7778)\n", - "Epoch 7414: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7414: accuracy appended (80.56%)\n", - "Epoch 7414: model set back to train mode\n", - "Epoch 7414: model parameters saved\n", - "Epoch 7415 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7415: avg_loss appended (2.7778)\n", - "Epoch 7415: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7415: accuracy appended (80.56%)\n", - "Epoch 7415: model set back to train mode\n", - "Epoch 7415: model parameters saved\n", - "Epoch 7416 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7416: avg_loss appended (2.7778)\n", - "Epoch 7416: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7416: accuracy appended (80.56%)\n", - "Epoch 7416: model set back to train mode\n", - "Epoch 7416: model parameters saved\n", - "Epoch 7417 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7417: avg_loss appended (2.7778)\n", - "Epoch 7417: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7417: accuracy appended (80.56%)\n", - "Epoch 7417: model set back to train mode\n", - "Epoch 7417: model parameters saved\n", - "Epoch 7418 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7418: avg_loss appended (2.7778)\n", - "Epoch 7418: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7418: accuracy appended (80.56%)\n", - "Epoch 7418: model set back to train mode\n", - "Epoch 7418: model parameters saved\n", - "Epoch 7419 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7419: avg_loss appended (2.7778)\n", - "Epoch 7419: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7419: accuracy appended (80.56%)\n", - "Epoch 7419: model set back to train mode\n", - "Epoch 7419: model parameters saved\n", - "Epoch 7420 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7420: avg_loss appended (2.7778)\n", - "Epoch 7420: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7420: accuracy appended (80.56%)\n", - "Epoch 7420: model set back to train mode\n", - "Epoch 7420: model parameters saved\n", - "Epoch 7421 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7421: avg_loss appended (2.7778)\n", - "Epoch 7421: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7421: accuracy appended (80.56%)\n", - "Epoch 7421: model set back to train mode\n", - "Epoch 7421: model parameters saved\n", - "Epoch 7422 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7422: avg_loss appended (2.7778)\n", - "Epoch 7422: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7422: accuracy appended (80.56%)\n", - "Epoch 7422: model set back to train mode\n", - "Epoch 7422: model parameters saved\n", - "Epoch 7423 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7423: avg_loss appended (2.7778)\n", - "Epoch 7423: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7423: accuracy appended (80.56%)\n", - "Epoch 7423: model set back to train mode\n", - "Epoch 7423: model parameters saved\n", - "Epoch 7424 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7424: avg_loss appended (2.7778)\n", - "Epoch 7424: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7424: accuracy appended (80.56%)\n", - "Epoch 7424: model set back to train mode\n", - "Epoch 7424: model parameters saved\n", - "Epoch 7425 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7425: avg_loss appended (2.7778)\n", - "Epoch 7425: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7425: accuracy appended (80.56%)\n", - "Epoch 7425: model set back to train mode\n", - "Epoch 7425: model parameters saved\n", - "Epoch 7426 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7426: avg_loss appended (2.7778)\n", - "Epoch 7426: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7426: accuracy appended (80.56%)\n", - "Epoch 7426: model set back to train mode\n", - "Epoch 7426: model parameters saved\n", - "Epoch 7427 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7427: avg_loss appended (2.7778)\n", - "Epoch 7427: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7427: accuracy appended (80.56%)\n", - "Epoch 7427: model set back to train mode\n", - "Epoch 7427: model parameters saved\n", - "Epoch 7428 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7428: avg_loss appended (2.7778)\n", - "Epoch 7428: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7428: accuracy appended (80.56%)\n", - "Epoch 7428: model set back to train mode\n", - "Epoch 7428: model parameters saved\n", - "Epoch 7429 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7429: avg_loss appended (2.7778)\n", - "Epoch 7429: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7429: accuracy appended (80.56%)\n", - "Epoch 7429: model set back to train mode\n", - "Epoch 7429: model parameters saved\n", - "Epoch 7430 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7430: avg_loss appended (2.7778)\n", - "Epoch 7430: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7430: accuracy appended (80.56%)\n", - "Epoch 7430: model set back to train mode\n", - "Epoch 7430: model parameters saved\n", - "Epoch 7431 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7431: avg_loss appended (2.7778)\n", - "Epoch 7431: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7431: accuracy appended (80.56%)\n", - "Epoch 7431: model set back to train mode\n", - "Epoch 7431: model parameters saved\n", - "Epoch 7432 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7432: avg_loss appended (2.7778)\n", - "Epoch 7432: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7432: accuracy appended (80.56%)\n", - "Epoch 7432: model set back to train mode\n", - "Epoch 7432: model parameters saved\n", - "Epoch 7433 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7433: avg_loss appended (2.7778)\n", - "Epoch 7433: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7433: accuracy appended (80.56%)\n", - "Epoch 7433: model set back to train mode\n", - "Epoch 7433: model parameters saved\n", - "Epoch 7434 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7434: avg_loss appended (2.7778)\n", - "Epoch 7434: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7434: accuracy appended (80.56%)\n", - "Epoch 7434: model set back to train mode\n", - "Epoch 7434: model parameters saved\n", - "Epoch 7435 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7435: avg_loss appended (2.7778)\n", - "Epoch 7435: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7435: accuracy appended (80.56%)\n", - "Epoch 7435: model set back to train mode\n", - "Epoch 7435: model parameters saved\n", - "Epoch 7436 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7436: avg_loss appended (2.7778)\n", - "Epoch 7436: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7436: accuracy appended (80.56%)\n", - "Epoch 7436: model set back to train mode\n", - "Epoch 7436: model parameters saved\n", - "Epoch 7437 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7437: avg_loss appended (2.7778)\n", - "Epoch 7437: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7437: accuracy appended (80.56%)\n", - "Epoch 7437: model set back to train mode\n", - "Epoch 7437: model parameters saved\n", - "Epoch 7438 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7438: avg_loss appended (2.7778)\n", - "Epoch 7438: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7438: accuracy appended (80.56%)\n", - "Epoch 7438: model set back to train mode\n", - "Epoch 7438: model parameters saved\n", - "Epoch 7439 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7439: avg_loss appended (2.7778)\n", - "Epoch 7439: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7439: accuracy appended (80.56%)\n", - "Epoch 7439: model set back to train mode\n", - "Epoch 7439: model parameters saved\n", - "Epoch 7440 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7440: avg_loss appended (2.7778)\n", - "Epoch 7440: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7440: accuracy appended (80.56%)\n", - "Epoch 7440: model set back to train mode\n", - "Epoch 7440: model parameters saved\n", - "Epoch 7441 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7441: avg_loss appended (2.7778)\n", - "Epoch 7441: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7441: accuracy appended (80.56%)\n", - "Epoch 7441: model set back to train mode\n", - "Epoch 7441: model parameters saved\n", - "Epoch 7442 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7442: avg_loss appended (2.7778)\n", - "Epoch 7442: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7442: accuracy appended (80.56%)\n", - "Epoch 7442: model set back to train mode\n", - "Epoch 7442: model parameters saved\n", - "Epoch 7443 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7443: avg_loss appended (2.7778)\n", - "Epoch 7443: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7443: accuracy appended (80.56%)\n", - "Epoch 7443: model set back to train mode\n", - "Epoch 7443: model parameters saved\n", - "Epoch 7444 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7444: avg_loss appended (2.7778)\n", - "Epoch 7444: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7444: accuracy appended (80.56%)\n", - "Epoch 7444: model set back to train mode\n", - "Epoch 7444: model parameters saved\n", - "Epoch 7445 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7445: avg_loss appended (2.7778)\n", - "Epoch 7445: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7445: accuracy appended (80.56%)\n", - "Epoch 7445: model set back to train mode\n", - "Epoch 7445: model parameters saved\n", - "Epoch 7446 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7446: avg_loss appended (2.7778)\n", - "Epoch 7446: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7446: accuracy appended (80.56%)\n", - "Epoch 7446: model set back to train mode\n", - "Epoch 7446: model parameters saved\n", - "Epoch 7447 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7447: avg_loss appended (2.7778)\n", - "Epoch 7447: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7447: accuracy appended (80.56%)\n", - "Epoch 7447: model set back to train mode\n", - "Epoch 7447: model parameters saved\n", - "Epoch 7448 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7448: avg_loss appended (2.7778)\n", - "Epoch 7448: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7448: accuracy appended (80.56%)\n", - "Epoch 7448: model set back to train mode\n", - "Epoch 7448: model parameters saved\n", - "Epoch 7449 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7449: avg_loss appended (2.7778)\n", - "Epoch 7449: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7449: accuracy appended (80.56%)\n", - "Epoch 7449: model set back to train mode\n", - "Epoch 7449: model parameters saved\n", - "Epoch 7450 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7450: avg_loss appended (2.7778)\n", - "Epoch 7450: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7450: accuracy appended (80.56%)\n", - "Epoch 7450: model set back to train mode\n", - "Epoch 7450: model parameters saved\n", - "Epoch 7451 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7451: avg_loss appended (2.7778)\n", - "Epoch 7451: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7451: accuracy appended (80.56%)\n", - "Epoch 7451: model set back to train mode\n", - "Epoch 7451: model parameters saved\n", - "Epoch 7452 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7452: avg_loss appended (2.7778)\n", - "Epoch 7452: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7452: accuracy appended (80.56%)\n", - "Epoch 7452: model set back to train mode\n", - "Epoch 7452: model parameters saved\n", - "Epoch 7453 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7453: avg_loss appended (2.7778)\n", - "Epoch 7453: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7453: accuracy appended (80.56%)\n", - "Epoch 7453: model set back to train mode\n", - "Epoch 7453: model parameters saved\n", - "Epoch 7454 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7454: avg_loss appended (2.7778)\n", - "Epoch 7454: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7454: accuracy appended (80.56%)\n", - "Epoch 7454: model set back to train mode\n", - "Epoch 7454: model parameters saved\n", - "Epoch 7455 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7455: avg_loss appended (2.7778)\n", - "Epoch 7455: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7455: accuracy appended (80.56%)\n", - "Epoch 7455: model set back to train mode\n", - "Epoch 7455: model parameters saved\n", - "Epoch 7456 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7456: avg_loss appended (2.7778)\n", - "Epoch 7456: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7456: accuracy appended (80.56%)\n", - "Epoch 7456: model set back to train mode\n", - "Epoch 7456: model parameters saved\n", - "Epoch 7457 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7457: avg_loss appended (2.7778)\n", - "Epoch 7457: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7457: accuracy appended (80.56%)\n", - "Epoch 7457: model set back to train mode\n", - "Epoch 7457: model parameters saved\n", - "Epoch 7458 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7458: avg_loss appended (2.7778)\n", - "Epoch 7458: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7458: accuracy appended (80.56%)\n", - "Epoch 7458: model set back to train mode\n", - "Epoch 7458: model parameters saved\n", - "Epoch 7459 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7459: avg_loss appended (2.7778)\n", - "Epoch 7459: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7459: accuracy appended (80.56%)\n", - "Epoch 7459: model set back to train mode\n", - "Epoch 7459: model parameters saved\n", - "Epoch 7460 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7460: avg_loss appended (2.7778)\n", - "Epoch 7460: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7460: accuracy appended (80.56%)\n", - "Epoch 7460: model set back to train mode\n", - "Epoch 7460: model parameters saved\n", - "Epoch 7461 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7461: avg_loss appended (2.7778)\n", - "Epoch 7461: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7461: accuracy appended (80.56%)\n", - "Epoch 7461: model set back to train mode\n", - "Epoch 7461: model parameters saved\n", - "Epoch 7462 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7462: avg_loss appended (2.7778)\n", - "Epoch 7462: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7462: accuracy appended (80.56%)\n", - "Epoch 7462: model set back to train mode\n", - "Epoch 7462: model parameters saved\n", - "Epoch 7463 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7463: avg_loss appended (2.7778)\n", - "Epoch 7463: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7463: accuracy appended (80.56%)\n", - "Epoch 7463: model set back to train mode\n", - "Epoch 7463: model parameters saved\n", - "Epoch 7464 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7464: avg_loss appended (2.7778)\n", - "Epoch 7464: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7464: accuracy appended (80.56%)\n", - "Epoch 7464: model set back to train mode\n", - "Epoch 7464: model parameters saved\n", - "Epoch 7465 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7465: avg_loss appended (2.7778)\n", - "Epoch 7465: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7465: accuracy appended (80.56%)\n", - "Epoch 7465: model set back to train mode\n", - "Epoch 7465: model parameters saved\n", - "Epoch 7466 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7466: avg_loss appended (2.7778)\n", - "Epoch 7466: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7466: accuracy appended (80.56%)\n", - "Epoch 7466: model set back to train mode\n", - "Epoch 7466: model parameters saved\n", - "Epoch 7467 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7467: avg_loss appended (2.7778)\n", - "Epoch 7467: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7467: accuracy appended (80.56%)\n", - "Epoch 7467: model set back to train mode\n", - "Epoch 7467: model parameters saved\n", - "Epoch 7468 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7468: avg_loss appended (2.7778)\n", - "Epoch 7468: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7468: accuracy appended (80.56%)\n", - "Epoch 7468: model set back to train mode\n", - "Epoch 7468: model parameters saved\n", - "Epoch 7469 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7469: avg_loss appended (2.7778)\n", - "Epoch 7469: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7469: accuracy appended (80.56%)\n", - "Epoch 7469: model set back to train mode\n", - "Epoch 7469: model parameters saved\n", - "Epoch 7470 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7470: avg_loss appended (2.7778)\n", - "Epoch 7470: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7470: accuracy appended (80.56%)\n", - "Epoch 7470: model set back to train mode\n", - "Epoch 7470: model parameters saved\n", - "Epoch 7471 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7471: avg_loss appended (2.7778)\n", - "Epoch 7471: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7471: accuracy appended (80.56%)\n", - "Epoch 7471: model set back to train mode\n", - "Epoch 7471: model parameters saved\n", - "Epoch 7472 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7472: avg_loss appended (2.7778)\n", - "Epoch 7472: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7472: accuracy appended (80.56%)\n", - "Epoch 7472: model set back to train mode\n", - "Epoch 7472: model parameters saved\n", - "Epoch 7473 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7473: avg_loss appended (2.7778)\n", - "Epoch 7473: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7473: accuracy appended (80.56%)\n", - "Epoch 7473: model set back to train mode\n", - "Epoch 7473: model parameters saved\n", - "Epoch 7474 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7474: avg_loss appended (2.7778)\n", - "Epoch 7474: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7474: accuracy appended (80.56%)\n", - "Epoch 7474: model set back to train mode\n", - "Epoch 7474: model parameters saved\n", - "Epoch 7475 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7475: avg_loss appended (2.7778)\n", - "Epoch 7475: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7475: accuracy appended (80.56%)\n", - "Epoch 7475: model set back to train mode\n", - "Epoch 7475: model parameters saved\n", - "Epoch 7476 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7476: avg_loss appended (2.7778)\n", - "Epoch 7476: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7476: accuracy appended (80.56%)\n", - "Epoch 7476: model set back to train mode\n", - "Epoch 7476: model parameters saved\n", - "Epoch 7477 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7477: avg_loss appended (2.7778)\n", - "Epoch 7477: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7477: accuracy appended (80.56%)\n", - "Epoch 7477: model set back to train mode\n", - "Epoch 7477: model parameters saved\n", - "Epoch 7478 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7478: avg_loss appended (2.7778)\n", - "Epoch 7478: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7478: accuracy appended (80.56%)\n", - "Epoch 7478: model set back to train mode\n", - "Epoch 7478: model parameters saved\n", - "Epoch 7479 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7479: avg_loss appended (2.7778)\n", - "Epoch 7479: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7479: accuracy appended (80.56%)\n", - "Epoch 7479: model set back to train mode\n", - "Epoch 7479: model parameters saved\n", - "Epoch 7480 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7480: avg_loss appended (2.7778)\n", - "Epoch 7480: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7480: accuracy appended (80.56%)\n", - "Epoch 7480: model set back to train mode\n", - "Epoch 7480: model parameters saved\n", - "Epoch 7481 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7481: avg_loss appended (2.7778)\n", - "Epoch 7481: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7481: accuracy appended (80.56%)\n", - "Epoch 7481: model set back to train mode\n", - "Epoch 7481: model parameters saved\n", - "Epoch 7482 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7482: avg_loss appended (2.7778)\n", - "Epoch 7482: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7482: accuracy appended (80.56%)\n", - "Epoch 7482: model set back to train mode\n", - "Epoch 7482: model parameters saved\n", - "Epoch 7483 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7483: avg_loss appended (2.7778)\n", - "Epoch 7483: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7483: accuracy appended (80.56%)\n", - "Epoch 7483: model set back to train mode\n", - "Epoch 7483: model parameters saved\n", - "Epoch 7484 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7484: avg_loss appended (2.7778)\n", - "Epoch 7484: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7484: accuracy appended (80.56%)\n", - "Epoch 7484: model set back to train mode\n", - "Epoch 7484: model parameters saved\n", - "Epoch 7485 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7485: avg_loss appended (2.7778)\n", - "Epoch 7485: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7485: accuracy appended (80.56%)\n", - "Epoch 7485: model set back to train mode\n", - "Epoch 7485: model parameters saved\n", - "Epoch 7486 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7486: avg_loss appended (2.7778)\n", - "Epoch 7486: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7486: accuracy appended (80.56%)\n", - "Epoch 7486: model set back to train mode\n", - "Epoch 7486: model parameters saved\n", - "Epoch 7487 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7487: avg_loss appended (2.7778)\n", - "Epoch 7487: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7487: accuracy appended (80.56%)\n", - "Epoch 7487: model set back to train mode\n", - "Epoch 7487: model parameters saved\n", - "Epoch 7488 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7488: avg_loss appended (2.7778)\n", - "Epoch 7488: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7488: accuracy appended (80.56%)\n", - "Epoch 7488: model set back to train mode\n", - "Epoch 7488: model parameters saved\n", - "Epoch 7489 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7489: avg_loss appended (2.7778)\n", - "Epoch 7489: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7489: accuracy appended (80.56%)\n", - "Epoch 7489: model set back to train mode\n", - "Epoch 7489: model parameters saved\n", - "Epoch 7490 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7490: avg_loss appended (2.7778)\n", - "Epoch 7490: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7490: accuracy appended (80.56%)\n", - "Epoch 7490: model set back to train mode\n", - "Epoch 7490: model parameters saved\n", - "Epoch 7491 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7491: avg_loss appended (2.7778)\n", - "Epoch 7491: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7491: accuracy appended (80.56%)\n", - "Epoch 7491: model set back to train mode\n", - "Epoch 7491: model parameters saved\n", - "Epoch 7492 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7492: avg_loss appended (2.7778)\n", - "Epoch 7492: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7492: accuracy appended (80.56%)\n", - "Epoch 7492: model set back to train mode\n", - "Epoch 7492: model parameters saved\n", - "Epoch 7493 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7493: avg_loss appended (2.7778)\n", - "Epoch 7493: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7493: accuracy appended (80.56%)\n", - "Epoch 7493: model set back to train mode\n", - "Epoch 7493: model parameters saved\n", - "Epoch 7494 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7494: avg_loss appended (2.7778)\n", - "Epoch 7494: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7494: accuracy appended (80.56%)\n", - "Epoch 7494: model set back to train mode\n", - "Epoch 7494: model parameters saved\n", - "Epoch 7495 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7495: avg_loss appended (2.7778)\n", - "Epoch 7495: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7495: accuracy appended (80.56%)\n", - "Epoch 7495: model set back to train mode\n", - "Epoch 7495: model parameters saved\n", - "Epoch 7496 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7496: avg_loss appended (2.7778)\n", - "Epoch 7496: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7496: accuracy appended (80.56%)\n", - "Epoch 7496: model set back to train mode\n", - "Epoch 7496: model parameters saved\n", - "Epoch 7497 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7497: avg_loss appended (2.7778)\n", - "Epoch 7497: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7497: accuracy appended (80.56%)\n", - "Epoch 7497: model set back to train mode\n", - "Epoch 7497: model parameters saved\n", - "Epoch 7498 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7498: avg_loss appended (2.7778)\n", - "Epoch 7498: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7498: accuracy appended (80.56%)\n", - "Epoch 7498: model set back to train mode\n", - "Epoch 7498: model parameters saved\n", - "Epoch 7499 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7499: avg_loss appended (2.7778)\n", - "Epoch 7499: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7499: accuracy appended (80.56%)\n", - "Epoch 7499: model set back to train mode\n", - "Epoch 7499: model parameters saved\n", - "Epoch 7500 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7500: avg_loss appended (2.7778)\n", - "Epoch 7500: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7500: accuracy appended (80.56%)\n", - "Epoch 7500: model set back to train mode\n", - "Epoch 7500: model parameters saved\n", - "Epoch 7500/10000, Loss: 2.7778, Accuracy: 80.56%\n", - "Epoch 7501 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7501: avg_loss appended (2.7778)\n", - "Epoch 7501: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7501: accuracy appended (80.56%)\n", - "Epoch 7501: model set back to train mode\n", - "Epoch 7501: model parameters saved\n", - "Epoch 7502 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7502: avg_loss appended (2.7778)\n", - "Epoch 7502: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7502: accuracy appended (80.56%)\n", - "Epoch 7502: model set back to train mode\n", - "Epoch 7502: model parameters saved\n", - "Epoch 7503 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7503: avg_loss appended (2.7778)\n", - "Epoch 7503: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7503: accuracy appended (80.56%)\n", - "Epoch 7503: model set back to train mode\n", - "Epoch 7503: model parameters saved\n", - "Epoch 7504 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7504: avg_loss appended (2.7778)\n", - "Epoch 7504: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7504: accuracy appended (80.56%)\n", - "Epoch 7504: model set back to train mode\n", - "Epoch 7504: model parameters saved\n", - "Epoch 7505 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7505: avg_loss appended (2.7778)\n", - "Epoch 7505: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7505: accuracy appended (80.56%)\n", - "Epoch 7505: model set back to train mode\n", - "Epoch 7505: model parameters saved\n", - "Epoch 7506 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7506: avg_loss appended (2.7778)\n", - "Epoch 7506: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7506: accuracy appended (80.56%)\n", - "Epoch 7506: model set back to train mode\n", - "Epoch 7506: model parameters saved\n", - "Epoch 7507 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7507: avg_loss appended (2.7778)\n", - "Epoch 7507: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7507: accuracy appended (80.56%)\n", - "Epoch 7507: model set back to train mode\n", - "Epoch 7507: model parameters saved\n", - "Epoch 7508 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7508: avg_loss appended (2.7778)\n", - "Epoch 7508: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7508: accuracy appended (80.56%)\n", - "Epoch 7508: model set back to train mode\n", - "Epoch 7508: model parameters saved\n", - "Epoch 7509 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7509: avg_loss appended (2.7778)\n", - "Epoch 7509: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7509: accuracy appended (80.56%)\n", - "Epoch 7509: model set back to train mode\n", - "Epoch 7509: model parameters saved\n", - "Epoch 7510 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7510: avg_loss appended (2.7778)\n", - "Epoch 7510: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7510: accuracy appended (80.56%)\n", - "Epoch 7510: model set back to train mode\n", - "Epoch 7510: model parameters saved\n", - "Epoch 7511 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7511: avg_loss appended (2.7778)\n", - "Epoch 7511: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7511: accuracy appended (80.56%)\n", - "Epoch 7511: model set back to train mode\n", - "Epoch 7511: model parameters saved\n", - "Epoch 7512 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7512: avg_loss appended (2.7778)\n", - "Epoch 7512: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7512: accuracy appended (80.56%)\n", - "Epoch 7512: model set back to train mode\n", - "Epoch 7512: model parameters saved\n", - "Epoch 7513 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7513: avg_loss appended (2.7778)\n", - "Epoch 7513: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7513: accuracy appended (80.56%)\n", - "Epoch 7513: model set back to train mode\n", - "Epoch 7513: model parameters saved\n", - "Epoch 7514 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7514: avg_loss appended (2.7778)\n", - "Epoch 7514: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7514: accuracy appended (80.56%)\n", - "Epoch 7514: model set back to train mode\n", - "Epoch 7514: model parameters saved\n", - "Epoch 7515 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7515: avg_loss appended (2.7778)\n", - "Epoch 7515: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7515: accuracy appended (80.56%)\n", - "Epoch 7515: model set back to train mode\n", - "Epoch 7515: model parameters saved\n", - "Epoch 7516 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7516: avg_loss appended (2.7778)\n", - "Epoch 7516: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7516: accuracy appended (80.56%)\n", - "Epoch 7516: model set back to train mode\n", - "Epoch 7516: model parameters saved\n", - "Epoch 7517 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7517: avg_loss appended (2.7778)\n", - "Epoch 7517: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7517: accuracy appended (80.56%)\n", - "Epoch 7517: model set back to train mode\n", - "Epoch 7517: model parameters saved\n", - "Epoch 7518 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7518: avg_loss appended (2.7778)\n", - "Epoch 7518: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7518: accuracy appended (80.56%)\n", - "Epoch 7518: model set back to train mode\n", - "Epoch 7518: model parameters saved\n", - "Epoch 7519 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7519: avg_loss appended (2.7778)\n", - "Epoch 7519: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7519: accuracy appended (80.56%)\n", - "Epoch 7519: model set back to train mode\n", - "Epoch 7519: model parameters saved\n", - "Epoch 7520 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7520: avg_loss appended (2.7778)\n", - "Epoch 7520: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7520: accuracy appended (80.56%)\n", - "Epoch 7520: model set back to train mode\n", - "Epoch 7520: model parameters saved\n", - "Epoch 7521 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7521: avg_loss appended (2.7778)\n", - "Epoch 7521: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7521: accuracy appended (80.56%)\n", - "Epoch 7521: model set back to train mode\n", - "Epoch 7521: model parameters saved\n", - "Epoch 7522 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7522: avg_loss appended (2.7778)\n", - "Epoch 7522: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7522: accuracy appended (80.56%)\n", - "Epoch 7522: model set back to train mode\n", - "Epoch 7522: model parameters saved\n", - "Epoch 7523 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7523: avg_loss appended (2.7778)\n", - "Epoch 7523: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7523: accuracy appended (80.56%)\n", - "Epoch 7523: model set back to train mode\n", - "Epoch 7523: model parameters saved\n", - "Epoch 7524 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7524: avg_loss appended (2.7778)\n", - "Epoch 7524: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7524: accuracy appended (80.56%)\n", - "Epoch 7524: model set back to train mode\n", - "Epoch 7524: model parameters saved\n", - "Epoch 7525 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7525: avg_loss appended (2.7778)\n", - "Epoch 7525: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7525: accuracy appended (80.56%)\n", - "Epoch 7525: model set back to train mode\n", - "Epoch 7525: model parameters saved\n", - "Epoch 7526 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7526: avg_loss appended (2.7778)\n", - "Epoch 7526: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7526: accuracy appended (80.56%)\n", - "Epoch 7526: model set back to train mode\n", - "Epoch 7526: model parameters saved\n", - "Epoch 7527 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7527: avg_loss appended (2.7778)\n", - "Epoch 7527: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7527: accuracy appended (80.56%)\n", - "Epoch 7527: model set back to train mode\n", - "Epoch 7527: model parameters saved\n", - "Epoch 7528 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7528: avg_loss appended (2.7778)\n", - "Epoch 7528: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7528: accuracy appended (80.56%)\n", - "Epoch 7528: model set back to train mode\n", - "Epoch 7528: model parameters saved\n", - "Epoch 7529 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7529: avg_loss appended (2.7778)\n", - "Epoch 7529: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7529: accuracy appended (80.56%)\n", - "Epoch 7529: model set back to train mode\n", - "Epoch 7529: model parameters saved\n", - "Epoch 7530 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7530: avg_loss appended (2.7778)\n", - "Epoch 7530: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7530: accuracy appended (80.56%)\n", - "Epoch 7530: model set back to train mode\n", - "Epoch 7530: model parameters saved\n", - "Epoch 7531 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7531: avg_loss appended (2.7778)\n", - "Epoch 7531: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7531: accuracy appended (80.56%)\n", - "Epoch 7531: model set back to train mode\n", - "Epoch 7531: model parameters saved\n", - "Epoch 7532 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7532: avg_loss appended (2.7778)\n", - "Epoch 7532: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7532: accuracy appended (80.56%)\n", - "Epoch 7532: model set back to train mode\n", - "Epoch 7532: model parameters saved\n", - "Epoch 7533 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7533: avg_loss appended (2.7778)\n", - "Epoch 7533: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7533: accuracy appended (80.56%)\n", - "Epoch 7533: model set back to train mode\n", - "Epoch 7533: model parameters saved\n", - "Epoch 7534 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7534: avg_loss appended (2.7778)\n", - "Epoch 7534: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7534: accuracy appended (80.56%)\n", - "Epoch 7534: model set back to train mode\n", - "Epoch 7534: model parameters saved\n", - "Epoch 7535 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7535: avg_loss appended (2.7778)\n", - "Epoch 7535: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7535: accuracy appended (80.56%)\n", - "Epoch 7535: model set back to train mode\n", - "Epoch 7535: model parameters saved\n", - "Epoch 7536 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7536: avg_loss appended (2.7778)\n", - "Epoch 7536: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7536: accuracy appended (80.56%)\n", - "Epoch 7536: model set back to train mode\n", - "Epoch 7536: model parameters saved\n", - "Epoch 7537 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7537: avg_loss appended (2.7778)\n", - "Epoch 7537: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7537: accuracy appended (80.56%)\n", - "Epoch 7537: model set back to train mode\n", - "Epoch 7537: model parameters saved\n", - "Epoch 7538 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7538: avg_loss appended (2.7778)\n", - "Epoch 7538: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7538: accuracy appended (80.56%)\n", - "Epoch 7538: model set back to train mode\n", - "Epoch 7538: model parameters saved\n", - "Epoch 7539 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7539: avg_loss appended (2.7778)\n", - "Epoch 7539: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7539: accuracy appended (80.56%)\n", - "Epoch 7539: model set back to train mode\n", - "Epoch 7539: model parameters saved\n", - "Epoch 7540 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7540: avg_loss appended (2.7778)\n", - "Epoch 7540: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7540: accuracy appended (80.56%)\n", - "Epoch 7540: model set back to train mode\n", - "Epoch 7540: model parameters saved\n", - "Epoch 7541 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7541: avg_loss appended (2.7778)\n", - "Epoch 7541: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7541: accuracy appended (80.56%)\n", - "Epoch 7541: model set back to train mode\n", - "Epoch 7541: model parameters saved\n", - "Epoch 7542 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7542: avg_loss appended (2.7778)\n", - "Epoch 7542: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7542: accuracy appended (80.56%)\n", - "Epoch 7542: model set back to train mode\n", - "Epoch 7542: model parameters saved\n", - "Epoch 7543 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7543: avg_loss appended (2.7778)\n", - "Epoch 7543: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7543: accuracy appended (80.56%)\n", - "Epoch 7543: model set back to train mode\n", - "Epoch 7543: model parameters saved\n", - "Epoch 7544 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7544: avg_loss appended (2.7778)\n", - "Epoch 7544: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7544: accuracy appended (80.56%)\n", - "Epoch 7544: model set back to train mode\n", - "Epoch 7544: model parameters saved\n", - "Epoch 7545 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7545: avg_loss appended (2.7778)\n", - "Epoch 7545: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7545: accuracy appended (80.56%)\n", - "Epoch 7545: model set back to train mode\n", - "Epoch 7545: model parameters saved\n", - "Epoch 7546 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7546: avg_loss appended (2.7778)\n", - "Epoch 7546: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7546: accuracy appended (80.56%)\n", - "Epoch 7546: model set back to train mode\n", - "Epoch 7546: model parameters saved\n", - "Epoch 7547 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7547: avg_loss appended (2.7778)\n", - "Epoch 7547: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7547: accuracy appended (80.56%)\n", - "Epoch 7547: model set back to train mode\n", - "Epoch 7547: model parameters saved\n", - "Epoch 7548 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7548: avg_loss appended (2.7778)\n", - "Epoch 7548: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7548: accuracy appended (80.56%)\n", - "Epoch 7548: model set back to train mode\n", - "Epoch 7548: model parameters saved\n", - "Epoch 7549 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7549: avg_loss appended (2.7778)\n", - "Epoch 7549: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7549: accuracy appended (80.56%)\n", - "Epoch 7549: model set back to train mode\n", - "Epoch 7549: model parameters saved\n", - "Epoch 7550 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7550: avg_loss appended (2.7778)\n", - "Epoch 7550: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7550: accuracy appended (80.56%)\n", - "Epoch 7550: model set back to train mode\n", - "Epoch 7550: model parameters saved\n", - "Epoch 7551 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7551: avg_loss appended (2.7778)\n", - "Epoch 7551: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7551: accuracy appended (80.56%)\n", - "Epoch 7551: model set back to train mode\n", - "Epoch 7551: model parameters saved\n", - "Epoch 7552 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7552: avg_loss appended (2.7778)\n", - "Epoch 7552: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7552: accuracy appended (80.56%)\n", - "Epoch 7552: model set back to train mode\n", - "Epoch 7552: model parameters saved\n", - "Epoch 7553 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7553: avg_loss appended (2.7778)\n", - "Epoch 7553: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7553: accuracy appended (80.56%)\n", - "Epoch 7553: model set back to train mode\n", - "Epoch 7553: model parameters saved\n", - "Epoch 7554 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7554: avg_loss appended (2.7778)\n", - "Epoch 7554: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7554: accuracy appended (80.56%)\n", - "Epoch 7554: model set back to train mode\n", - "Epoch 7554: model parameters saved\n", - "Epoch 7555 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7555: avg_loss appended (2.7778)\n", - "Epoch 7555: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7555: accuracy appended (80.56%)\n", - "Epoch 7555: model set back to train mode\n", - "Epoch 7555: model parameters saved\n", - "Epoch 7556 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7556: avg_loss appended (2.7778)\n", - "Epoch 7556: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7556: accuracy appended (80.56%)\n", - "Epoch 7556: model set back to train mode\n", - "Epoch 7556: model parameters saved\n", - "Epoch 7557 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7557: avg_loss appended (2.7778)\n", - "Epoch 7557: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7557: accuracy appended (80.56%)\n", - "Epoch 7557: model set back to train mode\n", - "Epoch 7557: model parameters saved\n", - "Epoch 7558 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7558: avg_loss appended (2.7778)\n", - "Epoch 7558: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7558: accuracy appended (80.56%)\n", - "Epoch 7558: model set back to train mode\n", - "Epoch 7558: model parameters saved\n", - "Epoch 7559 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7559: avg_loss appended (2.7778)\n", - "Epoch 7559: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7559: accuracy appended (80.56%)\n", - "Epoch 7559: model set back to train mode\n", - "Epoch 7559: model parameters saved\n", - "Epoch 7560 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7560: avg_loss appended (2.7778)\n", - "Epoch 7560: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7560: accuracy appended (80.56%)\n", - "Epoch 7560: model set back to train mode\n", - "Epoch 7560: model parameters saved\n", - "Epoch 7561 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7561: avg_loss appended (2.7778)\n", - "Epoch 7561: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7561: accuracy appended (80.56%)\n", - "Epoch 7561: model set back to train mode\n", - "Epoch 7561: model parameters saved\n", - "Epoch 7562 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7562: avg_loss appended (2.7778)\n", - "Epoch 7562: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7562: accuracy appended (80.56%)\n", - "Epoch 7562: model set back to train mode\n", - "Epoch 7562: model parameters saved\n", - "Epoch 7563 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7563: avg_loss appended (2.7778)\n", - "Epoch 7563: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7563: accuracy appended (80.56%)\n", - "Epoch 7563: model set back to train mode\n", - "Epoch 7563: model parameters saved\n", - "Epoch 7564 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7564: avg_loss appended (2.7778)\n", - "Epoch 7564: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7564: accuracy appended (80.56%)\n", - "Epoch 7564: model set back to train mode\n", - "Epoch 7564: model parameters saved\n", - "Epoch 7565 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7565: avg_loss appended (2.7778)\n", - "Epoch 7565: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7565: accuracy appended (80.56%)\n", - "Epoch 7565: model set back to train mode\n", - "Epoch 7565: model parameters saved\n", - "Epoch 7566 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7566: avg_loss appended (2.7778)\n", - "Epoch 7566: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7566: accuracy appended (80.56%)\n", - "Epoch 7566: model set back to train mode\n", - "Epoch 7566: model parameters saved\n", - "Epoch 7567 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7567: avg_loss appended (2.7778)\n", - "Epoch 7567: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7567: accuracy appended (80.56%)\n", - "Epoch 7567: model set back to train mode\n", - "Epoch 7567: model parameters saved\n", - "Epoch 7568 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7568: avg_loss appended (2.7778)\n", - "Epoch 7568: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7568: accuracy appended (80.56%)\n", - "Epoch 7568: model set back to train mode\n", - "Epoch 7568: model parameters saved\n", - "Epoch 7569 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7569: avg_loss appended (2.7778)\n", - "Epoch 7569: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7569: accuracy appended (80.56%)\n", - "Epoch 7569: model set back to train mode\n", - "Epoch 7569: model parameters saved\n", - "Epoch 7570 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7570: avg_loss appended (2.7778)\n", - "Epoch 7570: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7570: accuracy appended (80.56%)\n", - "Epoch 7570: model set back to train mode\n", - "Epoch 7570: model parameters saved\n", - "Epoch 7571 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7571: avg_loss appended (2.7778)\n", - "Epoch 7571: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7571: accuracy appended (80.56%)\n", - "Epoch 7571: model set back to train mode\n", - "Epoch 7571: model parameters saved\n", - "Epoch 7572 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7572: avg_loss appended (2.7778)\n", - "Epoch 7572: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7572: accuracy appended (80.56%)\n", - "Epoch 7572: model set back to train mode\n", - "Epoch 7572: model parameters saved\n", - "Epoch 7573 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7573: avg_loss appended (2.7778)\n", - "Epoch 7573: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7573: accuracy appended (80.56%)\n", - "Epoch 7573: model set back to train mode\n", - "Epoch 7573: model parameters saved\n", - "Epoch 7574 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7574: avg_loss appended (2.7778)\n", - "Epoch 7574: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7574: accuracy appended (80.56%)\n", - "Epoch 7574: model set back to train mode\n", - "Epoch 7574: model parameters saved\n", - "Epoch 7575 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7575: avg_loss appended (2.7778)\n", - "Epoch 7575: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7575: accuracy appended (80.56%)\n", - "Epoch 7575: model set back to train mode\n", - "Epoch 7575: model parameters saved\n", - "Epoch 7576 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7576: avg_loss appended (2.7778)\n", - "Epoch 7576: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7576: accuracy appended (80.56%)\n", - "Epoch 7576: model set back to train mode\n", - "Epoch 7576: model parameters saved\n", - "Epoch 7577 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7577: avg_loss appended (2.7778)\n", - "Epoch 7577: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7577: accuracy appended (80.56%)\n", - "Epoch 7577: model set back to train mode\n", - "Epoch 7577: model parameters saved\n", - "Epoch 7578 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7578: avg_loss appended (2.7778)\n", - "Epoch 7578: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7578: accuracy appended (80.56%)\n", - "Epoch 7578: model set back to train mode\n", - "Epoch 7578: model parameters saved\n", - "Epoch 7579 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7579: avg_loss appended (2.7778)\n", - "Epoch 7579: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7579: accuracy appended (80.56%)\n", - "Epoch 7579: model set back to train mode\n", - "Epoch 7579: model parameters saved\n", - "Epoch 7580 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7580: avg_loss appended (2.7778)\n", - "Epoch 7580: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7580: accuracy appended (80.56%)\n", - "Epoch 7580: model set back to train mode\n", - "Epoch 7580: model parameters saved\n", - "Epoch 7581 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7581: avg_loss appended (2.7778)\n", - "Epoch 7581: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7581: accuracy appended (80.56%)\n", - "Epoch 7581: model set back to train mode\n", - "Epoch 7581: model parameters saved\n", - "Epoch 7582 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7582: avg_loss appended (2.7778)\n", - "Epoch 7582: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7582: accuracy appended (80.56%)\n", - "Epoch 7582: model set back to train mode\n", - "Epoch 7582: model parameters saved\n", - "Epoch 7583 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7583: avg_loss appended (2.7778)\n", - "Epoch 7583: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7583: accuracy appended (80.56%)\n", - "Epoch 7583: model set back to train mode\n", - "Epoch 7583: model parameters saved\n", - "Epoch 7584 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7584: avg_loss appended (2.7778)\n", - "Epoch 7584: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7584: accuracy appended (80.56%)\n", - "Epoch 7584: model set back to train mode\n", - "Epoch 7584: model parameters saved\n", - "Epoch 7585 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7585: avg_loss appended (2.7778)\n", - "Epoch 7585: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7585: accuracy appended (80.56%)\n", - "Epoch 7585: model set back to train mode\n", - "Epoch 7585: model parameters saved\n", - "Epoch 7586 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7586: avg_loss appended (2.7778)\n", - "Epoch 7586: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7586: accuracy appended (80.56%)\n", - "Epoch 7586: model set back to train mode\n", - "Epoch 7586: model parameters saved\n", - "Epoch 7587 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7587: avg_loss appended (2.7778)\n", - "Epoch 7587: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7587: accuracy appended (80.56%)\n", - "Epoch 7587: model set back to train mode\n", - "Epoch 7587: model parameters saved\n", - "Epoch 7588 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7588: avg_loss appended (2.7778)\n", - "Epoch 7588: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7588: accuracy appended (80.56%)\n", - "Epoch 7588: model set back to train mode\n", - "Epoch 7588: model parameters saved\n", - "Epoch 7589 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7589: avg_loss appended (2.7778)\n", - "Epoch 7589: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7589: accuracy appended (80.56%)\n", - "Epoch 7589: model set back to train mode\n", - "Epoch 7589: model parameters saved\n", - "Epoch 7590 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7590: avg_loss appended (2.7778)\n", - "Epoch 7590: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7590: accuracy appended (80.56%)\n", - "Epoch 7590: model set back to train mode\n", - "Epoch 7590: model parameters saved\n", - "Epoch 7591 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7591: avg_loss appended (2.7778)\n", - "Epoch 7591: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7591: accuracy appended (80.56%)\n", - "Epoch 7591: model set back to train mode\n", - "Epoch 7591: model parameters saved\n", - "Epoch 7592 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7592: avg_loss appended (2.7778)\n", - "Epoch 7592: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7592: accuracy appended (80.56%)\n", - "Epoch 7592: model set back to train mode\n", - "Epoch 7592: model parameters saved\n", - "Epoch 7593 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7593: avg_loss appended (2.7778)\n", - "Epoch 7593: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7593: accuracy appended (80.56%)\n", - "Epoch 7593: model set back to train mode\n", - "Epoch 7593: model parameters saved\n", - "Epoch 7594 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7594: avg_loss appended (2.7778)\n", - "Epoch 7594: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7594: accuracy appended (80.56%)\n", - "Epoch 7594: model set back to train mode\n", - "Epoch 7594: model parameters saved\n", - "Epoch 7595 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7595: avg_loss appended (2.7778)\n", - "Epoch 7595: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7595: accuracy appended (80.56%)\n", - "Epoch 7595: model set back to train mode\n", - "Epoch 7595: model parameters saved\n", - "Epoch 7596 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7596: avg_loss appended (2.7778)\n", - "Epoch 7596: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7596: accuracy appended (80.56%)\n", - "Epoch 7596: model set back to train mode\n", - "Epoch 7596: model parameters saved\n", - "Epoch 7597 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7597: avg_loss appended (2.7778)\n", - "Epoch 7597: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7597: accuracy appended (80.56%)\n", - "Epoch 7597: model set back to train mode\n", - "Epoch 7597: model parameters saved\n", - "Epoch 7598 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7598: avg_loss appended (2.7778)\n", - "Epoch 7598: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7598: accuracy appended (80.56%)\n", - "Epoch 7598: model set back to train mode\n", - "Epoch 7598: model parameters saved\n", - "Epoch 7599 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7599: avg_loss appended (2.7778)\n", - "Epoch 7599: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7599: accuracy appended (80.56%)\n", - "Epoch 7599: model set back to train mode\n", - "Epoch 7599: model parameters saved\n", - "Epoch 7600 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7600: avg_loss appended (2.7778)\n", - "Epoch 7600: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7600: accuracy appended (80.56%)\n", - "Epoch 7600: model set back to train mode\n", - "Epoch 7600: model parameters saved\n", - "Epoch 7600/10000, Loss: 2.7778, Accuracy: 80.56%\n", - "Epoch 7601 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7601: avg_loss appended (2.7778)\n", - "Epoch 7601: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7601: accuracy appended (80.56%)\n", - "Epoch 7601: model set back to train mode\n", - "Epoch 7601: model parameters saved\n", - "Epoch 7602 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7602: avg_loss appended (2.7778)\n", - "Epoch 7602: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7602: accuracy appended (80.56%)\n", - "Epoch 7602: model set back to train mode\n", - "Epoch 7602: model parameters saved\n", - "Epoch 7603 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7603: avg_loss appended (2.7778)\n", - "Epoch 7603: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7603: accuracy appended (80.56%)\n", - "Epoch 7603: model set back to train mode\n", - "Epoch 7603: model parameters saved\n", - "Epoch 7604 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7604: avg_loss appended (2.7778)\n", - "Epoch 7604: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7604: accuracy appended (80.56%)\n", - "Epoch 7604: model set back to train mode\n", - "Epoch 7604: model parameters saved\n", - "Epoch 7605 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7605: avg_loss appended (2.7778)\n", - "Epoch 7605: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7605: accuracy appended (80.56%)\n", - "Epoch 7605: model set back to train mode\n", - "Epoch 7605: model parameters saved\n", - "Epoch 7606 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7606: avg_loss appended (2.7778)\n", - "Epoch 7606: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7606: accuracy appended (80.56%)\n", - "Epoch 7606: model set back to train mode\n", - "Epoch 7606: model parameters saved\n", - "Epoch 7607 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7607: avg_loss appended (2.7778)\n", - "Epoch 7607: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7607: accuracy appended (80.56%)\n", - "Epoch 7607: model set back to train mode\n", - "Epoch 7607: model parameters saved\n", - "Epoch 7608 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7608: avg_loss appended (2.7778)\n", - "Epoch 7608: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7608: accuracy appended (80.56%)\n", - "Epoch 7608: model set back to train mode\n", - "Epoch 7608: model parameters saved\n", - "Epoch 7609 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7609: avg_loss appended (2.7778)\n", - "Epoch 7609: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7609: accuracy appended (80.56%)\n", - "Epoch 7609: model set back to train mode\n", - "Epoch 7609: model parameters saved\n", - "Epoch 7610 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7610: avg_loss appended (2.7778)\n", - "Epoch 7610: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7610: accuracy appended (80.56%)\n", - "Epoch 7610: model set back to train mode\n", - "Epoch 7610: model parameters saved\n", - "Epoch 7611 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7611: avg_loss appended (2.7778)\n", - "Epoch 7611: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7611: accuracy appended (80.56%)\n", - "Epoch 7611: model set back to train mode\n", - "Epoch 7611: model parameters saved\n", - "Epoch 7612 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7612: avg_loss appended (2.7778)\n", - "Epoch 7612: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7612: accuracy appended (80.56%)\n", - "Epoch 7612: model set back to train mode\n", - "Epoch 7612: model parameters saved\n", - "Epoch 7613 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7613: avg_loss appended (2.7778)\n", - "Epoch 7613: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7613: accuracy appended (80.56%)\n", - "Epoch 7613: model set back to train mode\n", - "Epoch 7613: model parameters saved\n", - "Epoch 7614 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7614: avg_loss appended (2.7778)\n", - "Epoch 7614: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7614: accuracy appended (80.56%)\n", - "Epoch 7614: model set back to train mode\n", - "Epoch 7614: model parameters saved\n", - "Epoch 7615 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7615: avg_loss appended (2.7778)\n", - "Epoch 7615: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7615: accuracy appended (80.56%)\n", - "Epoch 7615: model set back to train mode\n", - "Epoch 7615: model parameters saved\n", - "Epoch 7616 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7616: avg_loss appended (2.7778)\n", - "Epoch 7616: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7616: accuracy appended (80.56%)\n", - "Epoch 7616: model set back to train mode\n", - "Epoch 7616: model parameters saved\n", - "Epoch 7617 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7617: avg_loss appended (2.7778)\n", - "Epoch 7617: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7617: accuracy appended (80.56%)\n", - "Epoch 7617: model set back to train mode\n", - "Epoch 7617: model parameters saved\n", - "Epoch 7618 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7618: avg_loss appended (2.7778)\n", - "Epoch 7618: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7618: accuracy appended (80.56%)\n", - "Epoch 7618: model set back to train mode\n", - "Epoch 7618: model parameters saved\n", - "Epoch 7619 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7619: avg_loss appended (2.7778)\n", - "Epoch 7619: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7619: accuracy appended (80.56%)\n", - "Epoch 7619: model set back to train mode\n", - "Epoch 7619: model parameters saved\n", - "Epoch 7620 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7620: avg_loss appended (2.7778)\n", - "Epoch 7620: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7620: accuracy appended (80.56%)\n", - "Epoch 7620: model set back to train mode\n", - "Epoch 7620: model parameters saved\n", - "Epoch 7621 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7621: avg_loss appended (2.7778)\n", - "Epoch 7621: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7621: accuracy appended (80.56%)\n", - "Epoch 7621: model set back to train mode\n", - "Epoch 7621: model parameters saved\n", - "Epoch 7622 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7622: avg_loss appended (2.7778)\n", - "Epoch 7622: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7622: accuracy appended (80.56%)\n", - "Epoch 7622: model set back to train mode\n", - "Epoch 7622: model parameters saved\n", - "Epoch 7623 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7623: avg_loss appended (2.7778)\n", - "Epoch 7623: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7623: accuracy appended (80.56%)\n", - "Epoch 7623: model set back to train mode\n", - "Epoch 7623: model parameters saved\n", - "Epoch 7624 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7624: avg_loss appended (2.7778)\n", - "Epoch 7624: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7624: accuracy appended (80.56%)\n", - "Epoch 7624: model set back to train mode\n", - "Epoch 7624: model parameters saved\n", - "Epoch 7625 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7625: avg_loss appended (2.7778)\n", - "Epoch 7625: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7625: accuracy appended (80.56%)\n", - "Epoch 7625: model set back to train mode\n", - "Epoch 7625: model parameters saved\n", - "Epoch 7626 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7626: avg_loss appended (2.7778)\n", - "Epoch 7626: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7626: accuracy appended (80.56%)\n", - "Epoch 7626: model set back to train mode\n", - "Epoch 7626: model parameters saved\n", - "Epoch 7627 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7627: avg_loss appended (2.7778)\n", - "Epoch 7627: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7627: accuracy appended (80.56%)\n", - "Epoch 7627: model set back to train mode\n", - "Epoch 7627: model parameters saved\n", - "Epoch 7628 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7628: avg_loss appended (2.7778)\n", - "Epoch 7628: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7628: accuracy appended (80.56%)\n", - "Epoch 7628: model set back to train mode\n", - "Epoch 7628: model parameters saved\n", - "Epoch 7629 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7629: avg_loss appended (2.7778)\n", - "Epoch 7629: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7629: accuracy appended (80.56%)\n", - "Epoch 7629: model set back to train mode\n", - "Epoch 7629: model parameters saved\n", - "Epoch 7630 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7630: avg_loss appended (2.7778)\n", - "Epoch 7630: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7630: accuracy appended (80.56%)\n", - "Epoch 7630: model set back to train mode\n", - "Epoch 7630: model parameters saved\n", - "Epoch 7631 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7631: avg_loss appended (2.7778)\n", - "Epoch 7631: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 7631: accuracy appended (83.33%)\n", - "Epoch 7631: model set back to train mode\n", - "Epoch 7631: model parameters saved\n", - "Epoch 7632 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7632: avg_loss appended (2.7778)\n", - "Epoch 7632: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7632: accuracy appended (80.56%)\n", - "Epoch 7632: model set back to train mode\n", - "Epoch 7632: model parameters saved\n", - "Epoch 7633 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7633: avg_loss appended (2.7778)\n", - "Epoch 7633: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7633: accuracy appended (80.56%)\n", - "Epoch 7633: model set back to train mode\n", - "Epoch 7633: model parameters saved\n", - "Epoch 7634 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7634: avg_loss appended (2.7778)\n", - "Epoch 7634: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7634: accuracy appended (80.56%)\n", - "Epoch 7634: model set back to train mode\n", - "Epoch 7634: model parameters saved\n", - "Epoch 7635 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7635: avg_loss appended (2.7778)\n", - "Epoch 7635: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7635: accuracy appended (80.56%)\n", - "Epoch 7635: model set back to train mode\n", - "Epoch 7635: model parameters saved\n", - "Epoch 7636 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7636: avg_loss appended (2.7778)\n", - "Epoch 7636: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7636: accuracy appended (80.56%)\n", - "Epoch 7636: model set back to train mode\n", - "Epoch 7636: model parameters saved\n", - "Epoch 7637 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7637: avg_loss appended (2.7778)\n", - "Epoch 7637: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7637: accuracy appended (80.56%)\n", - "Epoch 7637: model set back to train mode\n", - "Epoch 7637: model parameters saved\n", - "Epoch 7638 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7638: avg_loss appended (2.7778)\n", - "Epoch 7638: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7638: accuracy appended (80.56%)\n", - "Epoch 7638: model set back to train mode\n", - "Epoch 7638: model parameters saved\n", - "Epoch 7639 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7639: avg_loss appended (2.7778)\n", - "Epoch 7639: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7639: accuracy appended (80.56%)\n", - "Epoch 7639: model set back to train mode\n", - "Epoch 7639: model parameters saved\n", - "Epoch 7640 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7640: avg_loss appended (2.7778)\n", - "Epoch 7640: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7640: accuracy appended (80.56%)\n", - "Epoch 7640: model set back to train mode\n", - "Epoch 7640: model parameters saved\n", - "Epoch 7641 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7641: avg_loss appended (2.7778)\n", - "Epoch 7641: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7641: accuracy appended (80.56%)\n", - "Epoch 7641: model set back to train mode\n", - "Epoch 7641: model parameters saved\n", - "Epoch 7642 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7642: avg_loss appended (2.7778)\n", - "Epoch 7642: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7642: accuracy appended (80.56%)\n", - "Epoch 7642: model set back to train mode\n", - "Epoch 7642: model parameters saved\n", - "Epoch 7643 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7643: avg_loss appended (2.7778)\n", - "Epoch 7643: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7643: accuracy appended (80.56%)\n", - "Epoch 7643: model set back to train mode\n", - "Epoch 7643: model parameters saved\n", - "Epoch 7644 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7644: avg_loss appended (2.7778)\n", - "Epoch 7644: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7644: accuracy appended (80.56%)\n", - "Epoch 7644: model set back to train mode\n", - "Epoch 7644: model parameters saved\n", - "Epoch 7645 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7645: avg_loss appended (2.7778)\n", - "Epoch 7645: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7645: accuracy appended (80.56%)\n", - "Epoch 7645: model set back to train mode\n", - "Epoch 7645: model parameters saved\n", - "Epoch 7646 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7646: avg_loss appended (2.7778)\n", - "Epoch 7646: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7646: accuracy appended (80.56%)\n", - "Epoch 7646: model set back to train mode\n", - "Epoch 7646: model parameters saved\n", - "Epoch 7647 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7647: avg_loss appended (2.7778)\n", - "Epoch 7647: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7647: accuracy appended (80.56%)\n", - "Epoch 7647: model set back to train mode\n", - "Epoch 7647: model parameters saved\n", - "Epoch 7648 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7648: avg_loss appended (2.7778)\n", - "Epoch 7648: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7648: accuracy appended (80.56%)\n", - "Epoch 7648: model set back to train mode\n", - "Epoch 7648: model parameters saved\n", - "Epoch 7649 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7649: avg_loss appended (2.7778)\n", - "Epoch 7649: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7649: accuracy appended (80.56%)\n", - "Epoch 7649: model set back to train mode\n", - "Epoch 7649: model parameters saved\n", - "Epoch 7650 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7650: avg_loss appended (2.7778)\n", - "Epoch 7650: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7650: accuracy appended (80.56%)\n", - "Epoch 7650: model set back to train mode\n", - "Epoch 7650: model parameters saved\n", - "Epoch 7651 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7651: avg_loss appended (2.7778)\n", - "Epoch 7651: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7651: accuracy appended (80.56%)\n", - "Epoch 7651: model set back to train mode\n", - "Epoch 7651: model parameters saved\n", - "Epoch 7652 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7652: avg_loss appended (2.7778)\n", - "Epoch 7652: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7652: accuracy appended (80.56%)\n", - "Epoch 7652: model set back to train mode\n", - "Epoch 7652: model parameters saved\n", - "Epoch 7653 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7653: avg_loss appended (2.7778)\n", - "Epoch 7653: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7653: accuracy appended (80.56%)\n", - "Epoch 7653: model set back to train mode\n", - "Epoch 7653: model parameters saved\n", - "Epoch 7654 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7654: avg_loss appended (2.7778)\n", - "Epoch 7654: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7654: accuracy appended (80.56%)\n", - "Epoch 7654: model set back to train mode\n", - "Epoch 7654: model parameters saved\n", - "Epoch 7655 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7655: avg_loss appended (2.7778)\n", - "Epoch 7655: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7655: accuracy appended (80.56%)\n", - "Epoch 7655: model set back to train mode\n", - "Epoch 7655: model parameters saved\n", - "Epoch 7656 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7656: avg_loss appended (2.7778)\n", - "Epoch 7656: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7656: accuracy appended (80.56%)\n", - "Epoch 7656: model set back to train mode\n", - "Epoch 7656: model parameters saved\n", - "Epoch 7657 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7657: avg_loss appended (2.7778)\n", - "Epoch 7657: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7657: accuracy appended (80.56%)\n", - "Epoch 7657: model set back to train mode\n", - "Epoch 7657: model parameters saved\n", - "Epoch 7658 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7658: avg_loss appended (2.7778)\n", - "Epoch 7658: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7658: accuracy appended (80.56%)\n", - "Epoch 7658: model set back to train mode\n", - "Epoch 7658: model parameters saved\n", - "Epoch 7659 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7659: avg_loss appended (2.7778)\n", - "Epoch 7659: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7659: accuracy appended (80.56%)\n", - "Epoch 7659: model set back to train mode\n", - "Epoch 7659: model parameters saved\n", - "Epoch 7660 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7660: avg_loss appended (2.7778)\n", - "Epoch 7660: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7660: accuracy appended (80.56%)\n", - "Epoch 7660: model set back to train mode\n", - "Epoch 7660: model parameters saved\n", - "Epoch 7661 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7661: avg_loss appended (2.7778)\n", - "Epoch 7661: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7661: accuracy appended (80.56%)\n", - "Epoch 7661: model set back to train mode\n", - "Epoch 7661: model parameters saved\n", - "Epoch 7662 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7662: avg_loss appended (2.7778)\n", - "Epoch 7662: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7662: accuracy appended (80.56%)\n", - "Epoch 7662: model set back to train mode\n", - "Epoch 7662: model parameters saved\n", - "Epoch 7663 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7663: avg_loss appended (2.7778)\n", - "Epoch 7663: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7663: accuracy appended (80.56%)\n", - "Epoch 7663: model set back to train mode\n", - "Epoch 7663: model parameters saved\n", - "Epoch 7664 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7664: avg_loss appended (2.7778)\n", - "Epoch 7664: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7664: accuracy appended (80.56%)\n", - "Epoch 7664: model set back to train mode\n", - "Epoch 7664: model parameters saved\n", - "Epoch 7665 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7665: avg_loss appended (2.7778)\n", - "Epoch 7665: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7665: accuracy appended (80.56%)\n", - "Epoch 7665: model set back to train mode\n", - "Epoch 7665: model parameters saved\n", - "Epoch 7666 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7666: avg_loss appended (2.7778)\n", - "Epoch 7666: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7666: accuracy appended (80.56%)\n", - "Epoch 7666: model set back to train mode\n", - "Epoch 7666: model parameters saved\n", - "Epoch 7667 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7667: avg_loss appended (2.7778)\n", - "Epoch 7667: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7667: accuracy appended (80.56%)\n", - "Epoch 7667: model set back to train mode\n", - "Epoch 7667: model parameters saved\n", - "Epoch 7668 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7668: avg_loss appended (2.7778)\n", - "Epoch 7668: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7668: accuracy appended (80.56%)\n", - "Epoch 7668: model set back to train mode\n", - "Epoch 7668: model parameters saved\n", - "Epoch 7669 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7669: avg_loss appended (2.7778)\n", - "Epoch 7669: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7669: accuracy appended (80.56%)\n", - "Epoch 7669: model set back to train mode\n", - "Epoch 7669: model parameters saved\n", - "Epoch 7670 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7670: avg_loss appended (2.7778)\n", - "Epoch 7670: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7670: accuracy appended (80.56%)\n", - "Epoch 7670: model set back to train mode\n", - "Epoch 7670: model parameters saved\n", - "Epoch 7671 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7671: avg_loss appended (2.7778)\n", - "Epoch 7671: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7671: accuracy appended (80.56%)\n", - "Epoch 7671: model set back to train mode\n", - "Epoch 7671: model parameters saved\n", - "Epoch 7672 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7672: avg_loss appended (2.7778)\n", - "Epoch 7672: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7672: accuracy appended (80.56%)\n", - "Epoch 7672: model set back to train mode\n", - "Epoch 7672: model parameters saved\n", - "Epoch 7673 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7673: avg_loss appended (2.7778)\n", - "Epoch 7673: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7673: accuracy appended (80.56%)\n", - "Epoch 7673: model set back to train mode\n", - "Epoch 7673: model parameters saved\n", - "Epoch 7674 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7674: avg_loss appended (2.7778)\n", - "Epoch 7674: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7674: accuracy appended (80.56%)\n", - "Epoch 7674: model set back to train mode\n", - "Epoch 7674: model parameters saved\n", - "Epoch 7675 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7675: avg_loss appended (2.7778)\n", - "Epoch 7675: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7675: accuracy appended (80.56%)\n", - "Epoch 7675: model set back to train mode\n", - "Epoch 7675: model parameters saved\n", - "Epoch 7676 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7676: avg_loss appended (2.7778)\n", - "Epoch 7676: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7676: accuracy appended (80.56%)\n", - "Epoch 7676: model set back to train mode\n", - "Epoch 7676: model parameters saved\n", - "Epoch 7677 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7677: avg_loss appended (2.7778)\n", - "Epoch 7677: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7677: accuracy appended (80.56%)\n", - "Epoch 7677: model set back to train mode\n", - "Epoch 7677: model parameters saved\n", - "Epoch 7678 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7678: avg_loss appended (2.7778)\n", - "Epoch 7678: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7678: accuracy appended (80.56%)\n", - "Epoch 7678: model set back to train mode\n", - "Epoch 7678: model parameters saved\n", - "Epoch 7679 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7679: avg_loss appended (2.7778)\n", - "Epoch 7679: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7679: accuracy appended (80.56%)\n", - "Epoch 7679: model set back to train mode\n", - "Epoch 7679: model parameters saved\n", - "Epoch 7680 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7680: avg_loss appended (2.7778)\n", - "Epoch 7680: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7680: accuracy appended (80.56%)\n", - "Epoch 7680: model set back to train mode\n", - "Epoch 7680: model parameters saved\n", - "Epoch 7681 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7681: avg_loss appended (2.7778)\n", - "Epoch 7681: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7681: accuracy appended (80.56%)\n", - "Epoch 7681: model set back to train mode\n", - "Epoch 7681: model parameters saved\n", - "Epoch 7682 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7682: avg_loss appended (2.7778)\n", - "Epoch 7682: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7682: accuracy appended (80.56%)\n", - "Epoch 7682: model set back to train mode\n", - "Epoch 7682: model parameters saved\n", - "Epoch 7683 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7683: avg_loss appended (2.7778)\n", - "Epoch 7683: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7683: accuracy appended (80.56%)\n", - "Epoch 7683: model set back to train mode\n", - "Epoch 7683: model parameters saved\n", - "Epoch 7684 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7684: avg_loss appended (2.7778)\n", - "Epoch 7684: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7684: accuracy appended (80.56%)\n", - "Epoch 7684: model set back to train mode\n", - "Epoch 7684: model parameters saved\n", - "Epoch 7685 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7685: avg_loss appended (2.7778)\n", - "Epoch 7685: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7685: accuracy appended (80.56%)\n", - "Epoch 7685: model set back to train mode\n", - "Epoch 7685: model parameters saved\n", - "Epoch 7686 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7686: avg_loss appended (2.7778)\n", - "Epoch 7686: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7686: accuracy appended (80.56%)\n", - "Epoch 7686: model set back to train mode\n", - "Epoch 7686: model parameters saved\n", - "Epoch 7687 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7687: avg_loss appended (2.7778)\n", - "Epoch 7687: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7687: accuracy appended (80.56%)\n", - "Epoch 7687: model set back to train mode\n", - "Epoch 7687: model parameters saved\n", - "Epoch 7688 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7688: avg_loss appended (2.7778)\n", - "Epoch 7688: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7688: accuracy appended (80.56%)\n", - "Epoch 7688: model set back to train mode\n", - "Epoch 7688: model parameters saved\n", - "Epoch 7689 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7689: avg_loss appended (2.7778)\n", - "Epoch 7689: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7689: accuracy appended (80.56%)\n", - "Epoch 7689: model set back to train mode\n", - "Epoch 7689: model parameters saved\n", - "Epoch 7690 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7690: avg_loss appended (2.7778)\n", - "Epoch 7690: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7690: accuracy appended (80.56%)\n", - "Epoch 7690: model set back to train mode\n", - "Epoch 7690: model parameters saved\n", - "Epoch 7691 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7691: avg_loss appended (2.7778)\n", - "Epoch 7691: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7691: accuracy appended (80.56%)\n", - "Epoch 7691: model set back to train mode\n", - "Epoch 7691: model parameters saved\n", - "Epoch 7692 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7692: avg_loss appended (2.7778)\n", - "Epoch 7692: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7692: accuracy appended (80.56%)\n", - "Epoch 7692: model set back to train mode\n", - "Epoch 7692: model parameters saved\n", - "Epoch 7693 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7693: avg_loss appended (2.7778)\n", - "Epoch 7693: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7693: accuracy appended (80.56%)\n", - "Epoch 7693: model set back to train mode\n", - "Epoch 7693: model parameters saved\n", - "Epoch 7694 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7694: avg_loss appended (2.7778)\n", - "Epoch 7694: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7694: accuracy appended (80.56%)\n", - "Epoch 7694: model set back to train mode\n", - "Epoch 7694: model parameters saved\n", - "Epoch 7695 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7695: avg_loss appended (2.7778)\n", - "Epoch 7695: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7695: accuracy appended (80.56%)\n", - "Epoch 7695: model set back to train mode\n", - "Epoch 7695: model parameters saved\n", - "Epoch 7696 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7696: avg_loss appended (2.7778)\n", - "Epoch 7696: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7696: accuracy appended (80.56%)\n", - "Epoch 7696: model set back to train mode\n", - "Epoch 7696: model parameters saved\n", - "Epoch 7697 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7697: avg_loss appended (2.7778)\n", - "Epoch 7697: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7697: accuracy appended (80.56%)\n", - "Epoch 7697: model set back to train mode\n", - "Epoch 7697: model parameters saved\n", - "Epoch 7698 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7698: avg_loss appended (2.7778)\n", - "Epoch 7698: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7698: accuracy appended (80.56%)\n", - "Epoch 7698: model set back to train mode\n", - "Epoch 7698: model parameters saved\n", - "Epoch 7699 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7699: avg_loss appended (2.7778)\n", - "Epoch 7699: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7699: accuracy appended (80.56%)\n", - "Epoch 7699: model set back to train mode\n", - "Epoch 7699: model parameters saved\n", - "Epoch 7700 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7700: avg_loss appended (2.7778)\n", - "Epoch 7700: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7700: accuracy appended (80.56%)\n", - "Epoch 7700: model set back to train mode\n", - "Epoch 7700: model parameters saved\n", - "Epoch 7700/10000, Loss: 2.7778, Accuracy: 80.56%\n", - "Epoch 7701 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7701: avg_loss appended (2.7778)\n", - "Epoch 7701: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7701: accuracy appended (80.56%)\n", - "Epoch 7701: model set back to train mode\n", - "Epoch 7701: model parameters saved\n", - "Epoch 7702 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7702: avg_loss appended (2.7778)\n", - "Epoch 7702: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7702: accuracy appended (80.56%)\n", - "Epoch 7702: model set back to train mode\n", - "Epoch 7702: model parameters saved\n", - "Epoch 7703 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7703: avg_loss appended (2.7778)\n", - "Epoch 7703: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7703: accuracy appended (80.56%)\n", - "Epoch 7703: model set back to train mode\n", - "Epoch 7703: model parameters saved\n", - "Epoch 7704 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7704: avg_loss appended (2.7778)\n", - "Epoch 7704: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7704: accuracy appended (80.56%)\n", - "Epoch 7704: model set back to train mode\n", - "Epoch 7704: model parameters saved\n", - "Epoch 7705 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7705: avg_loss appended (2.7778)\n", - "Epoch 7705: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7705: accuracy appended (80.56%)\n", - "Epoch 7705: model set back to train mode\n", - "Epoch 7705: model parameters saved\n", - "Epoch 7706 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7706: avg_loss appended (2.7778)\n", - "Epoch 7706: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7706: accuracy appended (80.56%)\n", - "Epoch 7706: model set back to train mode\n", - "Epoch 7706: model parameters saved\n", - "Epoch 7707 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7707: avg_loss appended (2.7778)\n", - "Epoch 7707: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7707: accuracy appended (80.56%)\n", - "Epoch 7707: model set back to train mode\n", - "Epoch 7707: model parameters saved\n", - "Epoch 7708 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7708: avg_loss appended (2.7778)\n", - "Epoch 7708: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7708: accuracy appended (80.56%)\n", - "Epoch 7708: model set back to train mode\n", - "Epoch 7708: model parameters saved\n", - "Epoch 7709 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7709: avg_loss appended (2.7778)\n", - "Epoch 7709: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7709: accuracy appended (80.56%)\n", - "Epoch 7709: model set back to train mode\n", - "Epoch 7709: model parameters saved\n", - "Epoch 7710 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7710: avg_loss appended (2.7778)\n", - "Epoch 7710: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7710: accuracy appended (80.56%)\n", - "Epoch 7710: model set back to train mode\n", - "Epoch 7710: model parameters saved\n", - "Epoch 7711 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7711: avg_loss appended (2.7778)\n", - "Epoch 7711: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7711: accuracy appended (80.56%)\n", - "Epoch 7711: model set back to train mode\n", - "Epoch 7711: model parameters saved\n", - "Epoch 7712 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7712: avg_loss appended (2.7778)\n", - "Epoch 7712: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7712: accuracy appended (80.56%)\n", - "Epoch 7712: model set back to train mode\n", - "Epoch 7712: model parameters saved\n", - "Epoch 7713 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7713: avg_loss appended (2.7778)\n", - "Epoch 7713: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7713: accuracy appended (80.56%)\n", - "Epoch 7713: model set back to train mode\n", - "Epoch 7713: model parameters saved\n", - "Epoch 7714 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7714: avg_loss appended (2.7778)\n", - "Epoch 7714: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7714: accuracy appended (80.56%)\n", - "Epoch 7714: model set back to train mode\n", - "Epoch 7714: model parameters saved\n", - "Epoch 7715 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7715: avg_loss appended (2.7778)\n", - "Epoch 7715: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7715: accuracy appended (80.56%)\n", - "Epoch 7715: model set back to train mode\n", - "Epoch 7715: model parameters saved\n", - "Epoch 7716 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7716: avg_loss appended (2.7778)\n", - "Epoch 7716: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7716: accuracy appended (80.56%)\n", - "Epoch 7716: model set back to train mode\n", - "Epoch 7716: model parameters saved\n", - "Epoch 7717 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7717: avg_loss appended (2.7778)\n", - "Epoch 7717: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7717: accuracy appended (80.56%)\n", - "Epoch 7717: model set back to train mode\n", - "Epoch 7717: model parameters saved\n", - "Epoch 7718 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7718: avg_loss appended (2.7778)\n", - "Epoch 7718: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7718: accuracy appended (80.56%)\n", - "Epoch 7718: model set back to train mode\n", - "Epoch 7718: model parameters saved\n", - "Epoch 7719 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7719: avg_loss appended (2.7778)\n", - "Epoch 7719: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7719: accuracy appended (80.56%)\n", - "Epoch 7719: model set back to train mode\n", - "Epoch 7719: model parameters saved\n", - "Epoch 7720 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7720: avg_loss appended (2.7778)\n", - "Epoch 7720: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7720: accuracy appended (80.56%)\n", - "Epoch 7720: model set back to train mode\n", - "Epoch 7720: model parameters saved\n", - "Epoch 7721 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7721: avg_loss appended (2.7778)\n", - "Epoch 7721: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7721: accuracy appended (80.56%)\n", - "Epoch 7721: model set back to train mode\n", - "Epoch 7721: model parameters saved\n", - "Epoch 7722 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7722: avg_loss appended (2.7778)\n", - "Epoch 7722: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7722: accuracy appended (80.56%)\n", - "Epoch 7722: model set back to train mode\n", - "Epoch 7722: model parameters saved\n", - "Epoch 7723 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7723: avg_loss appended (2.7778)\n", - "Epoch 7723: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7723: accuracy appended (80.56%)\n", - "Epoch 7723: model set back to train mode\n", - "Epoch 7723: model parameters saved\n", - "Epoch 7724 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7724: avg_loss appended (2.7778)\n", - "Epoch 7724: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7724: accuracy appended (80.56%)\n", - "Epoch 7724: model set back to train mode\n", - "Epoch 7724: model parameters saved\n", - "Epoch 7725 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7725: avg_loss appended (2.7778)\n", - "Epoch 7725: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7725: accuracy appended (80.56%)\n", - "Epoch 7725: model set back to train mode\n", - "Epoch 7725: model parameters saved\n", - "Epoch 7726 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7726: avg_loss appended (2.7778)\n", - "Epoch 7726: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7726: accuracy appended (80.56%)\n", - "Epoch 7726: model set back to train mode\n", - "Epoch 7726: model parameters saved\n", - "Epoch 7727 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7727: avg_loss appended (2.7778)\n", - "Epoch 7727: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7727: accuracy appended (80.56%)\n", - "Epoch 7727: model set back to train mode\n", - "Epoch 7727: model parameters saved\n", - "Epoch 7728 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7728: avg_loss appended (2.7778)\n", - "Epoch 7728: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7728: accuracy appended (80.56%)\n", - "Epoch 7728: model set back to train mode\n", - "Epoch 7728: model parameters saved\n", - "Epoch 7729 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7729: avg_loss appended (2.7778)\n", - "Epoch 7729: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7729: accuracy appended (80.56%)\n", - "Epoch 7729: model set back to train mode\n", - "Epoch 7729: model parameters saved\n", - "Epoch 7730 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7730: avg_loss appended (2.7778)\n", - "Epoch 7730: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7730: accuracy appended (80.56%)\n", - "Epoch 7730: model set back to train mode\n", - "Epoch 7730: model parameters saved\n", - "Epoch 7731 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7731: avg_loss appended (2.7778)\n", - "Epoch 7731: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7731: accuracy appended (80.56%)\n", - "Epoch 7731: model set back to train mode\n", - "Epoch 7731: model parameters saved\n", - "Epoch 7732 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7732: avg_loss appended (2.7778)\n", - "Epoch 7732: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7732: accuracy appended (80.56%)\n", - "Epoch 7732: model set back to train mode\n", - "Epoch 7732: model parameters saved\n", - "Epoch 7733 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7733: avg_loss appended (2.7778)\n", - "Epoch 7733: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7733: accuracy appended (80.56%)\n", - "Epoch 7733: model set back to train mode\n", - "Epoch 7733: model parameters saved\n", - "Epoch 7734 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7734: avg_loss appended (2.7778)\n", - "Epoch 7734: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7734: accuracy appended (80.56%)\n", - "Epoch 7734: model set back to train mode\n", - "Epoch 7734: model parameters saved\n", - "Epoch 7735 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7735: avg_loss appended (2.7778)\n", - "Epoch 7735: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7735: accuracy appended (80.56%)\n", - "Epoch 7735: model set back to train mode\n", - "Epoch 7735: model parameters saved\n", - "Epoch 7736 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7736: avg_loss appended (2.7778)\n", - "Epoch 7736: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7736: accuracy appended (80.56%)\n", - "Epoch 7736: model set back to train mode\n", - "Epoch 7736: model parameters saved\n", - "Epoch 7737 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7737: avg_loss appended (2.7778)\n", - "Epoch 7737: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7737: accuracy appended (80.56%)\n", - "Epoch 7737: model set back to train mode\n", - "Epoch 7737: model parameters saved\n", - "Epoch 7738 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7738: avg_loss appended (2.7778)\n", - "Epoch 7738: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7738: accuracy appended (80.56%)\n", - "Epoch 7738: model set back to train mode\n", - "Epoch 7738: model parameters saved\n", - "Epoch 7739 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7739: avg_loss appended (2.7778)\n", - "Epoch 7739: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7739: accuracy appended (80.56%)\n", - "Epoch 7739: model set back to train mode\n", - "Epoch 7739: model parameters saved\n", - "Epoch 7740 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7740: avg_loss appended (2.7778)\n", - "Epoch 7740: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7740: accuracy appended (80.56%)\n", - "Epoch 7740: model set back to train mode\n", - "Epoch 7740: model parameters saved\n", - "Epoch 7741 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7741: avg_loss appended (2.7778)\n", - "Epoch 7741: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7741: accuracy appended (80.56%)\n", - "Epoch 7741: model set back to train mode\n", - "Epoch 7741: model parameters saved\n", - "Epoch 7742 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7742: avg_loss appended (2.7778)\n", - "Epoch 7742: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7742: accuracy appended (80.56%)\n", - "Epoch 7742: model set back to train mode\n", - "Epoch 7742: model parameters saved\n", - "Epoch 7743 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7743: avg_loss appended (2.7778)\n", - "Epoch 7743: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7743: accuracy appended (80.56%)\n", - "Epoch 7743: model set back to train mode\n", - "Epoch 7743: model parameters saved\n", - "Epoch 7744 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7744: avg_loss appended (2.7778)\n", - "Epoch 7744: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7744: accuracy appended (80.56%)\n", - "Epoch 7744: model set back to train mode\n", - "Epoch 7744: model parameters saved\n", - "Epoch 7745 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7745: avg_loss appended (2.7778)\n", - "Epoch 7745: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7745: accuracy appended (80.56%)\n", - "Epoch 7745: model set back to train mode\n", - "Epoch 7745: model parameters saved\n", - "Epoch 7746 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7746: avg_loss appended (2.7778)\n", - "Epoch 7746: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7746: accuracy appended (80.56%)\n", - "Epoch 7746: model set back to train mode\n", - "Epoch 7746: model parameters saved\n", - "Epoch 7747 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7747: avg_loss appended (2.7778)\n", - "Epoch 7747: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7747: accuracy appended (80.56%)\n", - "Epoch 7747: model set back to train mode\n", - "Epoch 7747: model parameters saved\n", - "Epoch 7748 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7748: avg_loss appended (2.7778)\n", - "Epoch 7748: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7748: accuracy appended (80.56%)\n", - "Epoch 7748: model set back to train mode\n", - "Epoch 7748: model parameters saved\n", - "Epoch 7749 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7749: avg_loss appended (2.7778)\n", - "Epoch 7749: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7749: accuracy appended (80.56%)\n", - "Epoch 7749: model set back to train mode\n", - "Epoch 7749: model parameters saved\n", - "Epoch 7750 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7750: avg_loss appended (2.7778)\n", - "Epoch 7750: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7750: accuracy appended (80.56%)\n", - "Epoch 7750: model set back to train mode\n", - "Epoch 7750: model parameters saved\n", - "Epoch 7751 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7751: avg_loss appended (2.7778)\n", - "Epoch 7751: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7751: accuracy appended (80.56%)\n", - "Epoch 7751: model set back to train mode\n", - "Epoch 7751: model parameters saved\n", - "Epoch 7752 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7752: avg_loss appended (2.7778)\n", - "Epoch 7752: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7752: accuracy appended (80.56%)\n", - "Epoch 7752: model set back to train mode\n", - "Epoch 7752: model parameters saved\n", - "Epoch 7753 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7753: avg_loss appended (2.7778)\n", - "Epoch 7753: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7753: accuracy appended (80.56%)\n", - "Epoch 7753: model set back to train mode\n", - "Epoch 7753: model parameters saved\n", - "Epoch 7754 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7754: avg_loss appended (2.7778)\n", - "Epoch 7754: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7754: accuracy appended (80.56%)\n", - "Epoch 7754: model set back to train mode\n", - "Epoch 7754: model parameters saved\n", - "Epoch 7755 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7755: avg_loss appended (2.7778)\n", - "Epoch 7755: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7755: accuracy appended (80.56%)\n", - "Epoch 7755: model set back to train mode\n", - "Epoch 7755: model parameters saved\n", - "Epoch 7756 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7756: avg_loss appended (2.7778)\n", - "Epoch 7756: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7756: accuracy appended (80.56%)\n", - "Epoch 7756: model set back to train mode\n", - "Epoch 7756: model parameters saved\n", - "Epoch 7757 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7757: avg_loss appended (2.7778)\n", - "Epoch 7757: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7757: accuracy appended (80.56%)\n", - "Epoch 7757: model set back to train mode\n", - "Epoch 7757: model parameters saved\n", - "Epoch 7758 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7758: avg_loss appended (2.7778)\n", - "Epoch 7758: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7758: accuracy appended (80.56%)\n", - "Epoch 7758: model set back to train mode\n", - "Epoch 7758: model parameters saved\n", - "Epoch 7759 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7759: avg_loss appended (2.7778)\n", - "Epoch 7759: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7759: accuracy appended (80.56%)\n", - "Epoch 7759: model set back to train mode\n", - "Epoch 7759: model parameters saved\n", - "Epoch 7760 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7760: avg_loss appended (2.7778)\n", - "Epoch 7760: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7760: accuracy appended (80.56%)\n", - "Epoch 7760: model set back to train mode\n", - "Epoch 7760: model parameters saved\n", - "Epoch 7761 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7761: avg_loss appended (2.7778)\n", - "Epoch 7761: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7761: accuracy appended (80.56%)\n", - "Epoch 7761: model set back to train mode\n", - "Epoch 7761: model parameters saved\n", - "Epoch 7762 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7762: avg_loss appended (2.7778)\n", - "Epoch 7762: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7762: accuracy appended (80.56%)\n", - "Epoch 7762: model set back to train mode\n", - "Epoch 7762: model parameters saved\n", - "Epoch 7763 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7763: avg_loss appended (2.7778)\n", - "Epoch 7763: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7763: accuracy appended (80.56%)\n", - "Epoch 7763: model set back to train mode\n", - "Epoch 7763: model parameters saved\n", - "Epoch 7764 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7764: avg_loss appended (2.7778)\n", - "Epoch 7764: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7764: accuracy appended (80.56%)\n", - "Epoch 7764: model set back to train mode\n", - "Epoch 7764: model parameters saved\n", - "Epoch 7765 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7765: avg_loss appended (2.7778)\n", - "Epoch 7765: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7765: accuracy appended (80.56%)\n", - "Epoch 7765: model set back to train mode\n", - "Epoch 7765: model parameters saved\n", - "Epoch 7766 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7766: avg_loss appended (2.7778)\n", - "Epoch 7766: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7766: accuracy appended (80.56%)\n", - "Epoch 7766: model set back to train mode\n", - "Epoch 7766: model parameters saved\n", - "Epoch 7767 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7767: avg_loss appended (2.7778)\n", - "Epoch 7767: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7767: accuracy appended (80.56%)\n", - "Epoch 7767: model set back to train mode\n", - "Epoch 7767: model parameters saved\n", - "Epoch 7768 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7768: avg_loss appended (2.7778)\n", - "Epoch 7768: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7768: accuracy appended (80.56%)\n", - "Epoch 7768: model set back to train mode\n", - "Epoch 7768: model parameters saved\n", - "Epoch 7769 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7769: avg_loss appended (2.7778)\n", - "Epoch 7769: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7769: accuracy appended (80.56%)\n", - "Epoch 7769: model set back to train mode\n", - "Epoch 7769: model parameters saved\n", - "Epoch 7770 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7770: avg_loss appended (2.7778)\n", - "Epoch 7770: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7770: accuracy appended (80.56%)\n", - "Epoch 7770: model set back to train mode\n", - "Epoch 7770: model parameters saved\n", - "Epoch 7771 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7771: avg_loss appended (2.7778)\n", - "Epoch 7771: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7771: accuracy appended (80.56%)\n", - "Epoch 7771: model set back to train mode\n", - "Epoch 7771: model parameters saved\n", - "Epoch 7772 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7772: avg_loss appended (2.7778)\n", - "Epoch 7772: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7772: accuracy appended (80.56%)\n", - "Epoch 7772: model set back to train mode\n", - "Epoch 7772: model parameters saved\n", - "Epoch 7773 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7773: avg_loss appended (2.7778)\n", - "Epoch 7773: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7773: accuracy appended (80.56%)\n", - "Epoch 7773: model set back to train mode\n", - "Epoch 7773: model parameters saved\n", - "Epoch 7774 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7774: avg_loss appended (2.7778)\n", - "Epoch 7774: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7774: accuracy appended (80.56%)\n", - "Epoch 7774: model set back to train mode\n", - "Epoch 7774: model parameters saved\n", - "Epoch 7775 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7775: avg_loss appended (2.7778)\n", - "Epoch 7775: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7775: accuracy appended (80.56%)\n", - "Epoch 7775: model set back to train mode\n", - "Epoch 7775: model parameters saved\n", - "Epoch 7776 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7776: avg_loss appended (2.7778)\n", - "Epoch 7776: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7776: accuracy appended (80.56%)\n", - "Epoch 7776: model set back to train mode\n", - "Epoch 7776: model parameters saved\n", - "Epoch 7777 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7777: avg_loss appended (2.7778)\n", - "Epoch 7777: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7777: accuracy appended (80.56%)\n", - "Epoch 7777: model set back to train mode\n", - "Epoch 7777: model parameters saved\n", - "Epoch 7778 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7778: avg_loss appended (2.7778)\n", - "Epoch 7778: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7778: accuracy appended (80.56%)\n", - "Epoch 7778: model set back to train mode\n", - "Epoch 7778: model parameters saved\n", - "Epoch 7779 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7779: avg_loss appended (2.7778)\n", - "Epoch 7779: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7779: accuracy appended (80.56%)\n", - "Epoch 7779: model set back to train mode\n", - "Epoch 7779: model parameters saved\n", - "Epoch 7780 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7780: avg_loss appended (2.7778)\n", - "Epoch 7780: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7780: accuracy appended (80.56%)\n", - "Epoch 7780: model set back to train mode\n", - "Epoch 7780: model parameters saved\n", - "Epoch 7781 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7781: avg_loss appended (2.7778)\n", - "Epoch 7781: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7781: accuracy appended (80.56%)\n", - "Epoch 7781: model set back to train mode\n", - "Epoch 7781: model parameters saved\n", - "Epoch 7782 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7782: avg_loss appended (2.7778)\n", - "Epoch 7782: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7782: accuracy appended (80.56%)\n", - "Epoch 7782: model set back to train mode\n", - "Epoch 7782: model parameters saved\n", - "Epoch 7783 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7783: avg_loss appended (2.7778)\n", - "Epoch 7783: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7783: accuracy appended (80.56%)\n", - "Epoch 7783: model set back to train mode\n", - "Epoch 7783: model parameters saved\n", - "Epoch 7784 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7784: avg_loss appended (2.7778)\n", - "Epoch 7784: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7784: accuracy appended (80.56%)\n", - "Epoch 7784: model set back to train mode\n", - "Epoch 7784: model parameters saved\n", - "Epoch 7785 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7785: avg_loss appended (2.7778)\n", - "Epoch 7785: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7785: accuracy appended (80.56%)\n", - "Epoch 7785: model set back to train mode\n", - "Epoch 7785: model parameters saved\n", - "Epoch 7786 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7786: avg_loss appended (2.7778)\n", - "Epoch 7786: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7786: accuracy appended (80.56%)\n", - "Epoch 7786: model set back to train mode\n", - "Epoch 7786: model parameters saved\n", - "Epoch 7787 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7787: avg_loss appended (2.7778)\n", - "Epoch 7787: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7787: accuracy appended (80.56%)\n", - "Epoch 7787: model set back to train mode\n", - "Epoch 7787: model parameters saved\n", - "Epoch 7788 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7788: avg_loss appended (2.7778)\n", - "Epoch 7788: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7788: accuracy appended (80.56%)\n", - "Epoch 7788: model set back to train mode\n", - "Epoch 7788: model parameters saved\n", - "Epoch 7789 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7789: avg_loss appended (2.7778)\n", - "Epoch 7789: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7789: accuracy appended (80.56%)\n", - "Epoch 7789: model set back to train mode\n", - "Epoch 7789: model parameters saved\n", - "Epoch 7790 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7790: avg_loss appended (2.7778)\n", - "Epoch 7790: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7790: accuracy appended (80.56%)\n", - "Epoch 7790: model set back to train mode\n", - "Epoch 7790: model parameters saved\n", - "Epoch 7791 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7791: avg_loss appended (2.7778)\n", - "Epoch 7791: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7791: accuracy appended (80.56%)\n", - "Epoch 7791: model set back to train mode\n", - "Epoch 7791: model parameters saved\n", - "Epoch 7792 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7792: avg_loss appended (2.7778)\n", - "Epoch 7792: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7792: accuracy appended (80.56%)\n", - "Epoch 7792: model set back to train mode\n", - "Epoch 7792: model parameters saved\n", - "Epoch 7793 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7793: avg_loss appended (2.7778)\n", - "Epoch 7793: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7793: accuracy appended (80.56%)\n", - "Epoch 7793: model set back to train mode\n", - "Epoch 7793: model parameters saved\n", - "Epoch 7794 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7794: avg_loss appended (2.7778)\n", - "Epoch 7794: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7794: accuracy appended (80.56%)\n", - "Epoch 7794: model set back to train mode\n", - "Epoch 7794: model parameters saved\n", - "Epoch 7795 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7795: avg_loss appended (2.7778)\n", - "Epoch 7795: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7795: accuracy appended (80.56%)\n", - "Epoch 7795: model set back to train mode\n", - "Epoch 7795: model parameters saved\n", - "Epoch 7796 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7796: avg_loss appended (2.7778)\n", - "Epoch 7796: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7796: accuracy appended (80.56%)\n", - "Epoch 7796: model set back to train mode\n", - "Epoch 7796: model parameters saved\n", - "Epoch 7797 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7797: avg_loss appended (2.7778)\n", - "Epoch 7797: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7797: accuracy appended (80.56%)\n", - "Epoch 7797: model set back to train mode\n", - "Epoch 7797: model parameters saved\n", - "Epoch 7798 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7798: avg_loss appended (2.7778)\n", - "Epoch 7798: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7798: accuracy appended (80.56%)\n", - "Epoch 7798: model set back to train mode\n", - "Epoch 7798: model parameters saved\n", - "Epoch 7799 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7799: avg_loss appended (2.7778)\n", - "Epoch 7799: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7799: accuracy appended (80.56%)\n", - "Epoch 7799: model set back to train mode\n", - "Epoch 7799: model parameters saved\n", - "Epoch 7800 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7800: avg_loss appended (2.7778)\n", - "Epoch 7800: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7800: accuracy appended (80.56%)\n", - "Epoch 7800: model set back to train mode\n", - "Epoch 7800: model parameters saved\n", - "Epoch 7800/10000, Loss: 2.7778, Accuracy: 80.56%\n", - "Epoch 7801 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7801: avg_loss appended (2.7778)\n", - "Epoch 7801: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7801: accuracy appended (80.56%)\n", - "Epoch 7801: model set back to train mode\n", - "Epoch 7801: model parameters saved\n", - "Epoch 7802 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7802: avg_loss appended (2.7778)\n", - "Epoch 7802: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7802: accuracy appended (80.56%)\n", - "Epoch 7802: model set back to train mode\n", - "Epoch 7802: model parameters saved\n", - "Epoch 7803 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7803: avg_loss appended (2.7778)\n", - "Epoch 7803: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7803: accuracy appended (80.56%)\n", - "Epoch 7803: model set back to train mode\n", - "Epoch 7803: model parameters saved\n", - "Epoch 7804 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7804: avg_loss appended (2.7778)\n", - "Epoch 7804: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7804: accuracy appended (80.56%)\n", - "Epoch 7804: model set back to train mode\n", - "Epoch 7804: model parameters saved\n", - "Epoch 7805 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7805: avg_loss appended (2.7778)\n", - "Epoch 7805: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7805: accuracy appended (80.56%)\n", - "Epoch 7805: model set back to train mode\n", - "Epoch 7805: model parameters saved\n", - "Epoch 7806 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7806: avg_loss appended (2.7778)\n", - "Epoch 7806: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7806: accuracy appended (80.56%)\n", - "Epoch 7806: model set back to train mode\n", - "Epoch 7806: model parameters saved\n", - "Epoch 7807 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7807: avg_loss appended (2.7778)\n", - "Epoch 7807: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7807: accuracy appended (80.56%)\n", - "Epoch 7807: model set back to train mode\n", - "Epoch 7807: model parameters saved\n", - "Epoch 7808 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7808: avg_loss appended (2.7778)\n", - "Epoch 7808: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7808: accuracy appended (80.56%)\n", - "Epoch 7808: model set back to train mode\n", - "Epoch 7808: model parameters saved\n", - "Epoch 7809 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7809: avg_loss appended (2.7778)\n", - "Epoch 7809: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7809: accuracy appended (80.56%)\n", - "Epoch 7809: model set back to train mode\n", - "Epoch 7809: model parameters saved\n", - "Epoch 7810 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7810: avg_loss appended (2.7778)\n", - "Epoch 7810: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7810: accuracy appended (80.56%)\n", - "Epoch 7810: model set back to train mode\n", - "Epoch 7810: model parameters saved\n", - "Epoch 7811 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7811: avg_loss appended (2.7778)\n", - "Epoch 7811: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7811: accuracy appended (80.56%)\n", - "Epoch 7811: model set back to train mode\n", - "Epoch 7811: model parameters saved\n", - "Epoch 7812 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7812: avg_loss appended (2.7778)\n", - "Epoch 7812: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7812: accuracy appended (80.56%)\n", - "Epoch 7812: model set back to train mode\n", - "Epoch 7812: model parameters saved\n", - "Epoch 7813 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7813: avg_loss appended (2.7778)\n", - "Epoch 7813: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7813: accuracy appended (80.56%)\n", - "Epoch 7813: model set back to train mode\n", - "Epoch 7813: model parameters saved\n", - "Epoch 7814 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7814: avg_loss appended (2.7778)\n", - "Epoch 7814: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7814: accuracy appended (80.56%)\n", - "Epoch 7814: model set back to train mode\n", - "Epoch 7814: model parameters saved\n", - "Epoch 7815 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7815: avg_loss appended (2.7778)\n", - "Epoch 7815: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7815: accuracy appended (80.56%)\n", - "Epoch 7815: model set back to train mode\n", - "Epoch 7815: model parameters saved\n", - "Epoch 7816 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7816: avg_loss appended (2.7778)\n", - "Epoch 7816: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7816: accuracy appended (80.56%)\n", - "Epoch 7816: model set back to train mode\n", - "Epoch 7816: model parameters saved\n", - "Epoch 7817 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7817: avg_loss appended (2.7778)\n", - "Epoch 7817: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7817: accuracy appended (80.56%)\n", - "Epoch 7817: model set back to train mode\n", - "Epoch 7817: model parameters saved\n", - "Epoch 7818 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7818: avg_loss appended (2.7778)\n", - "Epoch 7818: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7818: accuracy appended (80.56%)\n", - "Epoch 7818: model set back to train mode\n", - "Epoch 7818: model parameters saved\n", - "Epoch 7819 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7819: avg_loss appended (2.7778)\n", - "Epoch 7819: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7819: accuracy appended (80.56%)\n", - "Epoch 7819: model set back to train mode\n", - "Epoch 7819: model parameters saved\n", - "Epoch 7820 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7820: avg_loss appended (2.7778)\n", - "Epoch 7820: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7820: accuracy appended (80.56%)\n", - "Epoch 7820: model set back to train mode\n", - "Epoch 7820: model parameters saved\n", - "Epoch 7821 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7821: avg_loss appended (2.7778)\n", - "Epoch 7821: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7821: accuracy appended (80.56%)\n", - "Epoch 7821: model set back to train mode\n", - "Epoch 7821: model parameters saved\n", - "Epoch 7822 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7822: avg_loss appended (2.7778)\n", - "Epoch 7822: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7822: accuracy appended (80.56%)\n", - "Epoch 7822: model set back to train mode\n", - "Epoch 7822: model parameters saved\n", - "Epoch 7823 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7823: avg_loss appended (2.7778)\n", - "Epoch 7823: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7823: accuracy appended (80.56%)\n", - "Epoch 7823: model set back to train mode\n", - "Epoch 7823: model parameters saved\n", - "Epoch 7824 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7824: avg_loss appended (2.7778)\n", - "Epoch 7824: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7824: accuracy appended (80.56%)\n", - "Epoch 7824: model set back to train mode\n", - "Epoch 7824: model parameters saved\n", - "Epoch 7825 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7825: avg_loss appended (2.7778)\n", - "Epoch 7825: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7825: accuracy appended (80.56%)\n", - "Epoch 7825: model set back to train mode\n", - "Epoch 7825: model parameters saved\n", - "Epoch 7826 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7826: avg_loss appended (2.7778)\n", - "Epoch 7826: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7826: accuracy appended (80.56%)\n", - "Epoch 7826: model set back to train mode\n", - "Epoch 7826: model parameters saved\n", - "Epoch 7827 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7827: avg_loss appended (2.7778)\n", - "Epoch 7827: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7827: accuracy appended (80.56%)\n", - "Epoch 7827: model set back to train mode\n", - "Epoch 7827: model parameters saved\n", - "Epoch 7828 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7828: avg_loss appended (2.7778)\n", - "Epoch 7828: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7828: accuracy appended (80.56%)\n", - "Epoch 7828: model set back to train mode\n", - "Epoch 7828: model parameters saved\n", - "Epoch 7829 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7829: avg_loss appended (2.7778)\n", - "Epoch 7829: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7829: accuracy appended (80.56%)\n", - "Epoch 7829: model set back to train mode\n", - "Epoch 7829: model parameters saved\n", - "Epoch 7830 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7830: avg_loss appended (2.7778)\n", - "Epoch 7830: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7830: accuracy appended (80.56%)\n", - "Epoch 7830: model set back to train mode\n", - "Epoch 7830: model parameters saved\n", - "Epoch 7831 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7831: avg_loss appended (2.7778)\n", - "Epoch 7831: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7831: accuracy appended (80.56%)\n", - "Epoch 7831: model set back to train mode\n", - "Epoch 7831: model parameters saved\n", - "Epoch 7832 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7832: avg_loss appended (2.7778)\n", - "Epoch 7832: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7832: accuracy appended (80.56%)\n", - "Epoch 7832: model set back to train mode\n", - "Epoch 7832: model parameters saved\n", - "Epoch 7833 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7833: avg_loss appended (2.7778)\n", - "Epoch 7833: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7833: accuracy appended (80.56%)\n", - "Epoch 7833: model set back to train mode\n", - "Epoch 7833: model parameters saved\n", - "Epoch 7834 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7834: avg_loss appended (2.7778)\n", - "Epoch 7834: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7834: accuracy appended (80.56%)\n", - "Epoch 7834: model set back to train mode\n", - "Epoch 7834: model parameters saved\n", - "Epoch 7835 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7835: avg_loss appended (2.7778)\n", - "Epoch 7835: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7835: accuracy appended (80.56%)\n", - "Epoch 7835: model set back to train mode\n", - "Epoch 7835: model parameters saved\n", - "Epoch 7836 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7836: avg_loss appended (2.7778)\n", - "Epoch 7836: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7836: accuracy appended (80.56%)\n", - "Epoch 7836: model set back to train mode\n", - "Epoch 7836: model parameters saved\n", - "Epoch 7837 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7837: avg_loss appended (2.7778)\n", - "Epoch 7837: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7837: accuracy appended (80.56%)\n", - "Epoch 7837: model set back to train mode\n", - "Epoch 7837: model parameters saved\n", - "Epoch 7838 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7838: avg_loss appended (2.7778)\n", - "Epoch 7838: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7838: accuracy appended (80.56%)\n", - "Epoch 7838: model set back to train mode\n", - "Epoch 7838: model parameters saved\n", - "Epoch 7839 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7839: avg_loss appended (2.7778)\n", - "Epoch 7839: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7839: accuracy appended (80.56%)\n", - "Epoch 7839: model set back to train mode\n", - "Epoch 7839: model parameters saved\n", - "Epoch 7840 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7840: avg_loss appended (2.7778)\n", - "Epoch 7840: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7840: accuracy appended (80.56%)\n", - "Epoch 7840: model set back to train mode\n", - "Epoch 7840: model parameters saved\n", - "Epoch 7841 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7841: avg_loss appended (2.7778)\n", - "Epoch 7841: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7841: accuracy appended (80.56%)\n", - "Epoch 7841: model set back to train mode\n", - "Epoch 7841: model parameters saved\n", - "Epoch 7842 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7842: avg_loss appended (2.7778)\n", - "Epoch 7842: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7842: accuracy appended (80.56%)\n", - "Epoch 7842: model set back to train mode\n", - "Epoch 7842: model parameters saved\n", - "Epoch 7843 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7843: avg_loss appended (2.7778)\n", - "Epoch 7843: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7843: accuracy appended (80.56%)\n", - "Epoch 7843: model set back to train mode\n", - "Epoch 7843: model parameters saved\n", - "Epoch 7844 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7844: avg_loss appended (2.7778)\n", - "Epoch 7844: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7844: accuracy appended (80.56%)\n", - "Epoch 7844: model set back to train mode\n", - "Epoch 7844: model parameters saved\n", - "Epoch 7845 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7845: avg_loss appended (2.7778)\n", - "Epoch 7845: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7845: accuracy appended (80.56%)\n", - "Epoch 7845: model set back to train mode\n", - "Epoch 7845: model parameters saved\n", - "Epoch 7846 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7846: avg_loss appended (2.7778)\n", - "Epoch 7846: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7846: accuracy appended (80.56%)\n", - "Epoch 7846: model set back to train mode\n", - "Epoch 7846: model parameters saved\n", - "Epoch 7847 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7847: avg_loss appended (2.7778)\n", - "Epoch 7847: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7847: accuracy appended (80.56%)\n", - "Epoch 7847: model set back to train mode\n", - "Epoch 7847: model parameters saved\n", - "Epoch 7848 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7848: avg_loss appended (2.7778)\n", - "Epoch 7848: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7848: accuracy appended (80.56%)\n", - "Epoch 7848: model set back to train mode\n", - "Epoch 7848: model parameters saved\n", - "Epoch 7849 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7849: avg_loss appended (2.7778)\n", - "Epoch 7849: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7849: accuracy appended (80.56%)\n", - "Epoch 7849: model set back to train mode\n", - "Epoch 7849: model parameters saved\n", - "Epoch 7850 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7850: avg_loss appended (2.7778)\n", - "Epoch 7850: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7850: accuracy appended (80.56%)\n", - "Epoch 7850: model set back to train mode\n", - "Epoch 7850: model parameters saved\n", - "Epoch 7851 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7851: avg_loss appended (2.7778)\n", - "Epoch 7851: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7851: accuracy appended (80.56%)\n", - "Epoch 7851: model set back to train mode\n", - "Epoch 7851: model parameters saved\n", - "Epoch 7852 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7852: avg_loss appended (2.7778)\n", - "Epoch 7852: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7852: accuracy appended (80.56%)\n", - "Epoch 7852: model set back to train mode\n", - "Epoch 7852: model parameters saved\n", - "Epoch 7853 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7853: avg_loss appended (2.7778)\n", - "Epoch 7853: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7853: accuracy appended (80.56%)\n", - "Epoch 7853: model set back to train mode\n", - "Epoch 7853: model parameters saved\n", - "Epoch 7854 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7854: avg_loss appended (2.7778)\n", - "Epoch 7854: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7854: accuracy appended (80.56%)\n", - "Epoch 7854: model set back to train mode\n", - "Epoch 7854: model parameters saved\n", - "Epoch 7855 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7855: avg_loss appended (2.7778)\n", - "Epoch 7855: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7855: accuracy appended (80.56%)\n", - "Epoch 7855: model set back to train mode\n", - "Epoch 7855: model parameters saved\n", - "Epoch 7856 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7856: avg_loss appended (2.7778)\n", - "Epoch 7856: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7856: accuracy appended (80.56%)\n", - "Epoch 7856: model set back to train mode\n", - "Epoch 7856: model parameters saved\n", - "Epoch 7857 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7857: avg_loss appended (2.7778)\n", - "Epoch 7857: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7857: accuracy appended (80.56%)\n", - "Epoch 7857: model set back to train mode\n", - "Epoch 7857: model parameters saved\n", - "Epoch 7858 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7858: avg_loss appended (2.7778)\n", - "Epoch 7858: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7858: accuracy appended (80.56%)\n", - "Epoch 7858: model set back to train mode\n", - "Epoch 7858: model parameters saved\n", - "Epoch 7859 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7859: avg_loss appended (2.7778)\n", - "Epoch 7859: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7859: accuracy appended (80.56%)\n", - "Epoch 7859: model set back to train mode\n", - "Epoch 7859: model parameters saved\n", - "Epoch 7860 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7860: avg_loss appended (2.7778)\n", - "Epoch 7860: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7860: accuracy appended (80.56%)\n", - "Epoch 7860: model set back to train mode\n", - "Epoch 7860: model parameters saved\n", - "Epoch 7861 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7861: avg_loss appended (2.7778)\n", - "Epoch 7861: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7861: accuracy appended (80.56%)\n", - "Epoch 7861: model set back to train mode\n", - "Epoch 7861: model parameters saved\n", - "Epoch 7862 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7862: avg_loss appended (2.7778)\n", - "Epoch 7862: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7862: accuracy appended (80.56%)\n", - "Epoch 7862: model set back to train mode\n", - "Epoch 7862: model parameters saved\n", - "Epoch 7863 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7863: avg_loss appended (2.7778)\n", - "Epoch 7863: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7863: accuracy appended (80.56%)\n", - "Epoch 7863: model set back to train mode\n", - "Epoch 7863: model parameters saved\n", - "Epoch 7864 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7864: avg_loss appended (2.7778)\n", - "Epoch 7864: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7864: accuracy appended (80.56%)\n", - "Epoch 7864: model set back to train mode\n", - "Epoch 7864: model parameters saved\n", - "Epoch 7865 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7865: avg_loss appended (2.7778)\n", - "Epoch 7865: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7865: accuracy appended (80.56%)\n", - "Epoch 7865: model set back to train mode\n", - "Epoch 7865: model parameters saved\n", - "Epoch 7866 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7866: avg_loss appended (2.7778)\n", - "Epoch 7866: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7866: accuracy appended (80.56%)\n", - "Epoch 7866: model set back to train mode\n", - "Epoch 7866: model parameters saved\n", - "Epoch 7867 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7867: avg_loss appended (2.7778)\n", - "Epoch 7867: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7867: accuracy appended (80.56%)\n", - "Epoch 7867: model set back to train mode\n", - "Epoch 7867: model parameters saved\n", - "Epoch 7868 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7868: avg_loss appended (2.7778)\n", - "Epoch 7868: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7868: accuracy appended (80.56%)\n", - "Epoch 7868: model set back to train mode\n", - "Epoch 7868: model parameters saved\n", - "Epoch 7869 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7869: avg_loss appended (2.7778)\n", - "Epoch 7869: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7869: accuracy appended (80.56%)\n", - "Epoch 7869: model set back to train mode\n", - "Epoch 7869: model parameters saved\n", - "Epoch 7870 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7870: avg_loss appended (2.7778)\n", - "Epoch 7870: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7870: accuracy appended (80.56%)\n", - "Epoch 7870: model set back to train mode\n", - "Epoch 7870: model parameters saved\n", - "Epoch 7871 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7871: avg_loss appended (2.7778)\n", - "Epoch 7871: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7871: accuracy appended (80.56%)\n", - "Epoch 7871: model set back to train mode\n", - "Epoch 7871: model parameters saved\n", - "Epoch 7872 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7872: avg_loss appended (2.7778)\n", - "Epoch 7872: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7872: accuracy appended (80.56%)\n", - "Epoch 7872: model set back to train mode\n", - "Epoch 7872: model parameters saved\n", - "Epoch 7873 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7873: avg_loss appended (2.7778)\n", - "Epoch 7873: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7873: accuracy appended (80.56%)\n", - "Epoch 7873: model set back to train mode\n", - "Epoch 7873: model parameters saved\n", - "Epoch 7874 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7874: avg_loss appended (2.7778)\n", - "Epoch 7874: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7874: accuracy appended (80.56%)\n", - "Epoch 7874: model set back to train mode\n", - "Epoch 7874: model parameters saved\n", - "Epoch 7875 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7875: avg_loss appended (2.7778)\n", - "Epoch 7875: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7875: accuracy appended (80.56%)\n", - "Epoch 7875: model set back to train mode\n", - "Epoch 7875: model parameters saved\n", - "Epoch 7876 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7876: avg_loss appended (2.7778)\n", - "Epoch 7876: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7876: accuracy appended (80.56%)\n", - "Epoch 7876: model set back to train mode\n", - "Epoch 7876: model parameters saved\n", - "Epoch 7877 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7877: avg_loss appended (2.7778)\n", - "Epoch 7877: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7877: accuracy appended (80.56%)\n", - "Epoch 7877: model set back to train mode\n", - "Epoch 7877: model parameters saved\n", - "Epoch 7878 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7878: avg_loss appended (2.7778)\n", - "Epoch 7878: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7878: accuracy appended (80.56%)\n", - "Epoch 7878: model set back to train mode\n", - "Epoch 7878: model parameters saved\n", - "Epoch 7879 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7879: avg_loss appended (2.7778)\n", - "Epoch 7879: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7879: accuracy appended (80.56%)\n", - "Epoch 7879: model set back to train mode\n", - "Epoch 7879: model parameters saved\n", - "Epoch 7880 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7880: avg_loss appended (2.7778)\n", - "Epoch 7880: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7880: accuracy appended (80.56%)\n", - "Epoch 7880: model set back to train mode\n", - "Epoch 7880: model parameters saved\n", - "Epoch 7881 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7881: avg_loss appended (2.7778)\n", - "Epoch 7881: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7881: accuracy appended (80.56%)\n", - "Epoch 7881: model set back to train mode\n", - "Epoch 7881: model parameters saved\n", - "Epoch 7882 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7882: avg_loss appended (2.7778)\n", - "Epoch 7882: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7882: accuracy appended (80.56%)\n", - "Epoch 7882: model set back to train mode\n", - "Epoch 7882: model parameters saved\n", - "Epoch 7883 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7883: avg_loss appended (2.7778)\n", - "Epoch 7883: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7883: accuracy appended (80.56%)\n", - "Epoch 7883: model set back to train mode\n", - "Epoch 7883: model parameters saved\n", - "Epoch 7884 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7884: avg_loss appended (2.7778)\n", - "Epoch 7884: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7884: accuracy appended (80.56%)\n", - "Epoch 7884: model set back to train mode\n", - "Epoch 7884: model parameters saved\n", - "Epoch 7885 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7885: avg_loss appended (2.7778)\n", - "Epoch 7885: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7885: accuracy appended (80.56%)\n", - "Epoch 7885: model set back to train mode\n", - "Epoch 7885: model parameters saved\n", - "Epoch 7886 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7886: avg_loss appended (2.7778)\n", - "Epoch 7886: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7886: accuracy appended (80.56%)\n", - "Epoch 7886: model set back to train mode\n", - "Epoch 7886: model parameters saved\n", - "Epoch 7887 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7887: avg_loss appended (2.7778)\n", - "Epoch 7887: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7887: accuracy appended (80.56%)\n", - "Epoch 7887: model set back to train mode\n", - "Epoch 7887: model parameters saved\n", - "Epoch 7888 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7888: avg_loss appended (2.7778)\n", - "Epoch 7888: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7888: accuracy appended (80.56%)\n", - "Epoch 7888: model set back to train mode\n", - "Epoch 7888: model parameters saved\n", - "Epoch 7889 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7889: avg_loss appended (2.7778)\n", - "Epoch 7889: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7889: accuracy appended (80.56%)\n", - "Epoch 7889: model set back to train mode\n", - "Epoch 7889: model parameters saved\n", - "Epoch 7890 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7890: avg_loss appended (2.7778)\n", - "Epoch 7890: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7890: accuracy appended (80.56%)\n", - "Epoch 7890: model set back to train mode\n", - "Epoch 7890: model parameters saved\n", - "Epoch 7891 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7891: avg_loss appended (2.7778)\n", - "Epoch 7891: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7891: accuracy appended (80.56%)\n", - "Epoch 7891: model set back to train mode\n", - "Epoch 7891: model parameters saved\n", - "Epoch 7892 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7892: avg_loss appended (2.7778)\n", - "Epoch 7892: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7892: accuracy appended (80.56%)\n", - "Epoch 7892: model set back to train mode\n", - "Epoch 7892: model parameters saved\n", - "Epoch 7893 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7893: avg_loss appended (2.7778)\n", - "Epoch 7893: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7893: accuracy appended (80.56%)\n", - "Epoch 7893: model set back to train mode\n", - "Epoch 7893: model parameters saved\n", - "Epoch 7894 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7894: avg_loss appended (2.7778)\n", - "Epoch 7894: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7894: accuracy appended (80.56%)\n", - "Epoch 7894: model set back to train mode\n", - "Epoch 7894: model parameters saved\n", - "Epoch 7895 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7895: avg_loss appended (2.7778)\n", - "Epoch 7895: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7895: accuracy appended (80.56%)\n", - "Epoch 7895: model set back to train mode\n", - "Epoch 7895: model parameters saved\n", - "Epoch 7896 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7896: avg_loss appended (2.7778)\n", - "Epoch 7896: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7896: accuracy appended (80.56%)\n", - "Epoch 7896: model set back to train mode\n", - "Epoch 7896: model parameters saved\n", - "Epoch 7897 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7897: avg_loss appended (2.7778)\n", - "Epoch 7897: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7897: accuracy appended (80.56%)\n", - "Epoch 7897: model set back to train mode\n", - "Epoch 7897: model parameters saved\n", - "Epoch 7898 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7898: avg_loss appended (2.7778)\n", - "Epoch 7898: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7898: accuracy appended (80.56%)\n", - "Epoch 7898: model set back to train mode\n", - "Epoch 7898: model parameters saved\n", - "Epoch 7899 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7899: avg_loss appended (2.7778)\n", - "Epoch 7899: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7899: accuracy appended (80.56%)\n", - "Epoch 7899: model set back to train mode\n", - "Epoch 7899: model parameters saved\n", - "Epoch 7900 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7900: avg_loss appended (2.7778)\n", - "Epoch 7900: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7900: accuracy appended (80.56%)\n", - "Epoch 7900: model set back to train mode\n", - "Epoch 7900: model parameters saved\n", - "Epoch 7900/10000, Loss: 2.7778, Accuracy: 80.56%\n", - "Epoch 7901 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7901: avg_loss appended (2.7778)\n", - "Epoch 7901: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7901: accuracy appended (80.56%)\n", - "Epoch 7901: model set back to train mode\n", - "Epoch 7901: model parameters saved\n", - "Epoch 7902 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7902: avg_loss appended (2.7778)\n", - "Epoch 7902: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7902: accuracy appended (80.56%)\n", - "Epoch 7902: model set back to train mode\n", - "Epoch 7902: model parameters saved\n", - "Epoch 7903 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7903: avg_loss appended (2.7778)\n", - "Epoch 7903: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7903: accuracy appended (80.56%)\n", - "Epoch 7903: model set back to train mode\n", - "Epoch 7903: model parameters saved\n", - "Epoch 7904 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7904: avg_loss appended (2.7778)\n", - "Epoch 7904: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7904: accuracy appended (80.56%)\n", - "Epoch 7904: model set back to train mode\n", - "Epoch 7904: model parameters saved\n", - "Epoch 7905 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7905: avg_loss appended (2.7778)\n", - "Epoch 7905: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7905: accuracy appended (80.56%)\n", - "Epoch 7905: model set back to train mode\n", - "Epoch 7905: model parameters saved\n", - "Epoch 7906 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7906: avg_loss appended (2.7778)\n", - "Epoch 7906: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7906: accuracy appended (80.56%)\n", - "Epoch 7906: model set back to train mode\n", - "Epoch 7906: model parameters saved\n", - "Epoch 7907 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7907: avg_loss appended (2.7778)\n", - "Epoch 7907: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7907: accuracy appended (80.56%)\n", - "Epoch 7907: model set back to train mode\n", - "Epoch 7907: model parameters saved\n", - "Epoch 7908 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7908: avg_loss appended (2.7778)\n", - "Epoch 7908: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7908: accuracy appended (80.56%)\n", - "Epoch 7908: model set back to train mode\n", - "Epoch 7908: model parameters saved\n", - "Epoch 7909 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7909: avg_loss appended (2.7778)\n", - "Epoch 7909: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7909: accuracy appended (80.56%)\n", - "Epoch 7909: model set back to train mode\n", - "Epoch 7909: model parameters saved\n", - "Epoch 7910 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7910: avg_loss appended (2.7778)\n", - "Epoch 7910: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7910: accuracy appended (80.56%)\n", - "Epoch 7910: model set back to train mode\n", - "Epoch 7910: model parameters saved\n", - "Epoch 7911 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7911: avg_loss appended (2.7778)\n", - "Epoch 7911: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7911: accuracy appended (80.56%)\n", - "Epoch 7911: model set back to train mode\n", - "Epoch 7911: model parameters saved\n", - "Epoch 7912 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7912: avg_loss appended (2.7778)\n", - "Epoch 7912: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7912: accuracy appended (80.56%)\n", - "Epoch 7912: model set back to train mode\n", - "Epoch 7912: model parameters saved\n", - "Epoch 7913 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7913: avg_loss appended (2.7778)\n", - "Epoch 7913: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7913: accuracy appended (80.56%)\n", - "Epoch 7913: model set back to train mode\n", - "Epoch 7913: model parameters saved\n", - "Epoch 7914 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7914: avg_loss appended (2.7778)\n", - "Epoch 7914: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7914: accuracy appended (80.56%)\n", - "Epoch 7914: model set back to train mode\n", - "Epoch 7914: model parameters saved\n", - "Epoch 7915 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7915: avg_loss appended (2.7778)\n", - "Epoch 7915: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7915: accuracy appended (80.56%)\n", - "Epoch 7915: model set back to train mode\n", - "Epoch 7915: model parameters saved\n", - "Epoch 7916 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7916: avg_loss appended (2.7778)\n", - "Epoch 7916: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7916: accuracy appended (80.56%)\n", - "Epoch 7916: model set back to train mode\n", - "Epoch 7916: model parameters saved\n", - "Epoch 7917 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7917: avg_loss appended (2.7778)\n", - "Epoch 7917: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7917: accuracy appended (80.56%)\n", - "Epoch 7917: model set back to train mode\n", - "Epoch 7917: model parameters saved\n", - "Epoch 7918 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7918: avg_loss appended (2.7778)\n", - "Epoch 7918: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7918: accuracy appended (80.56%)\n", - "Epoch 7918: model set back to train mode\n", - "Epoch 7918: model parameters saved\n", - "Epoch 7919 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7919: avg_loss appended (2.7778)\n", - "Epoch 7919: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7919: accuracy appended (80.56%)\n", - "Epoch 7919: model set back to train mode\n", - "Epoch 7919: model parameters saved\n", - "Epoch 7920 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7920: avg_loss appended (2.7778)\n", - "Epoch 7920: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7920: accuracy appended (80.56%)\n", - "Epoch 7920: model set back to train mode\n", - "Epoch 7920: model parameters saved\n", - "Epoch 7921 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7921: avg_loss appended (2.7778)\n", - "Epoch 7921: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7921: accuracy appended (80.56%)\n", - "Epoch 7921: model set back to train mode\n", - "Epoch 7921: model parameters saved\n", - "Epoch 7922 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7922: avg_loss appended (2.7778)\n", - "Epoch 7922: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7922: accuracy appended (80.56%)\n", - "Epoch 7922: model set back to train mode\n", - "Epoch 7922: model parameters saved\n", - "Epoch 7923 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7923: avg_loss appended (2.7778)\n", - "Epoch 7923: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7923: accuracy appended (80.56%)\n", - "Epoch 7923: model set back to train mode\n", - "Epoch 7923: model parameters saved\n", - "Epoch 7924 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7924: avg_loss appended (2.7778)\n", - "Epoch 7924: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7924: accuracy appended (80.56%)\n", - "Epoch 7924: model set back to train mode\n", - "Epoch 7924: model parameters saved\n", - "Epoch 7925 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7925: avg_loss appended (2.7778)\n", - "Epoch 7925: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7925: accuracy appended (80.56%)\n", - "Epoch 7925: model set back to train mode\n", - "Epoch 7925: model parameters saved\n", - "Epoch 7926 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7926: avg_loss appended (2.7778)\n", - "Epoch 7926: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7926: accuracy appended (80.56%)\n", - "Epoch 7926: model set back to train mode\n", - "Epoch 7926: model parameters saved\n", - "Epoch 7927 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7927: avg_loss appended (2.7778)\n", - "Epoch 7927: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7927: accuracy appended (80.56%)\n", - "Epoch 7927: model set back to train mode\n", - "Epoch 7927: model parameters saved\n", - "Epoch 7928 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7928: avg_loss appended (2.7778)\n", - "Epoch 7928: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7928: accuracy appended (80.56%)\n", - "Epoch 7928: model set back to train mode\n", - "Epoch 7928: model parameters saved\n", - "Epoch 7929 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7929: avg_loss appended (2.7778)\n", - "Epoch 7929: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7929: accuracy appended (80.56%)\n", - "Epoch 7929: model set back to train mode\n", - "Epoch 7929: model parameters saved\n", - "Epoch 7930 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7930: avg_loss appended (2.7778)\n", - "Epoch 7930: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7930: accuracy appended (80.56%)\n", - "Epoch 7930: model set back to train mode\n", - "Epoch 7930: model parameters saved\n", - "Epoch 7931 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7931: avg_loss appended (2.7778)\n", - "Epoch 7931: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7931: accuracy appended (80.56%)\n", - "Epoch 7931: model set back to train mode\n", - "Epoch 7931: model parameters saved\n", - "Epoch 7932 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7932: avg_loss appended (2.7778)\n", - "Epoch 7932: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7932: accuracy appended (80.56%)\n", - "Epoch 7932: model set back to train mode\n", - "Epoch 7932: model parameters saved\n", - "Epoch 7933 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7933: avg_loss appended (2.7778)\n", - "Epoch 7933: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7933: accuracy appended (80.56%)\n", - "Epoch 7933: model set back to train mode\n", - "Epoch 7933: model parameters saved\n", - "Epoch 7934 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7934: avg_loss appended (2.7778)\n", - "Epoch 7934: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7934: accuracy appended (80.56%)\n", - "Epoch 7934: model set back to train mode\n", - "Epoch 7934: model parameters saved\n", - "Epoch 7935 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7935: avg_loss appended (2.7778)\n", - "Epoch 7935: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7935: accuracy appended (80.56%)\n", - "Epoch 7935: model set back to train mode\n", - "Epoch 7935: model parameters saved\n", - "Epoch 7936 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7936: avg_loss appended (2.7778)\n", - "Epoch 7936: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7936: accuracy appended (80.56%)\n", - "Epoch 7936: model set back to train mode\n", - "Epoch 7936: model parameters saved\n", - "Epoch 7937 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7937: avg_loss appended (2.7778)\n", - "Epoch 7937: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7937: accuracy appended (80.56%)\n", - "Epoch 7937: model set back to train mode\n", - "Epoch 7937: model parameters saved\n", - "Epoch 7938 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7938: avg_loss appended (2.7778)\n", - "Epoch 7938: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7938: accuracy appended (80.56%)\n", - "Epoch 7938: model set back to train mode\n", - "Epoch 7938: model parameters saved\n", - "Epoch 7939 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7939: avg_loss appended (2.7778)\n", - "Epoch 7939: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7939: accuracy appended (80.56%)\n", - "Epoch 7939: model set back to train mode\n", - "Epoch 7939: model parameters saved\n", - "Epoch 7940 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7940: avg_loss appended (2.7778)\n", - "Epoch 7940: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7940: accuracy appended (80.56%)\n", - "Epoch 7940: model set back to train mode\n", - "Epoch 7940: model parameters saved\n", - "Epoch 7941 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7941: avg_loss appended (2.7778)\n", - "Epoch 7941: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7941: accuracy appended (80.56%)\n", - "Epoch 7941: model set back to train mode\n", - "Epoch 7941: model parameters saved\n", - "Epoch 7942 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7942: avg_loss appended (2.7778)\n", - "Epoch 7942: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7942: accuracy appended (80.56%)\n", - "Epoch 7942: model set back to train mode\n", - "Epoch 7942: model parameters saved\n", - "Epoch 7943 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7943: avg_loss appended (2.7778)\n", - "Epoch 7943: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7943: accuracy appended (80.56%)\n", - "Epoch 7943: model set back to train mode\n", - "Epoch 7943: model parameters saved\n", - "Epoch 7944 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7944: avg_loss appended (2.7778)\n", - "Epoch 7944: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7944: accuracy appended (80.56%)\n", - "Epoch 7944: model set back to train mode\n", - "Epoch 7944: model parameters saved\n", - "Epoch 7945 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7945: avg_loss appended (2.7778)\n", - "Epoch 7945: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7945: accuracy appended (80.56%)\n", - "Epoch 7945: model set back to train mode\n", - "Epoch 7945: model parameters saved\n", - "Epoch 7946 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7946: avg_loss appended (2.7778)\n", - "Epoch 7946: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7946: accuracy appended (80.56%)\n", - "Epoch 7946: model set back to train mode\n", - "Epoch 7946: model parameters saved\n", - "Epoch 7947 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7947: avg_loss appended (2.7778)\n", - "Epoch 7947: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7947: accuracy appended (80.56%)\n", - "Epoch 7947: model set back to train mode\n", - "Epoch 7947: model parameters saved\n", - "Epoch 7948 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7948: avg_loss appended (2.7778)\n", - "Epoch 7948: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7948: accuracy appended (80.56%)\n", - "Epoch 7948: model set back to train mode\n", - "Epoch 7948: model parameters saved\n", - "Epoch 7949 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7949: avg_loss appended (2.7778)\n", - "Epoch 7949: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7949: accuracy appended (80.56%)\n", - "Epoch 7949: model set back to train mode\n", - "Epoch 7949: model parameters saved\n", - "Epoch 7950 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7950: avg_loss appended (2.7778)\n", - "Epoch 7950: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7950: accuracy appended (80.56%)\n", - "Epoch 7950: model set back to train mode\n", - "Epoch 7950: model parameters saved\n", - "Epoch 7951 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7951: avg_loss appended (2.7778)\n", - "Epoch 7951: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7951: accuracy appended (80.56%)\n", - "Epoch 7951: model set back to train mode\n", - "Epoch 7951: model parameters saved\n", - "Epoch 7952 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7952: avg_loss appended (2.7778)\n", - "Epoch 7952: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7952: accuracy appended (80.56%)\n", - "Epoch 7952: model set back to train mode\n", - "Epoch 7952: model parameters saved\n", - "Epoch 7953 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7953: avg_loss appended (2.7778)\n", - "Epoch 7953: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7953: accuracy appended (80.56%)\n", - "Epoch 7953: model set back to train mode\n", - "Epoch 7953: model parameters saved\n", - "Epoch 7954 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7954: avg_loss appended (2.7778)\n", - "Epoch 7954: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7954: accuracy appended (80.56%)\n", - "Epoch 7954: model set back to train mode\n", - "Epoch 7954: model parameters saved\n", - "Epoch 7955 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7955: avg_loss appended (2.7778)\n", - "Epoch 7955: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7955: accuracy appended (80.56%)\n", - "Epoch 7955: model set back to train mode\n", - "Epoch 7955: model parameters saved\n", - "Epoch 7956 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7956: avg_loss appended (2.7778)\n", - "Epoch 7956: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7956: accuracy appended (80.56%)\n", - "Epoch 7956: model set back to train mode\n", - "Epoch 7956: model parameters saved\n", - "Epoch 7957 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7957: avg_loss appended (2.7778)\n", - "Epoch 7957: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7957: accuracy appended (80.56%)\n", - "Epoch 7957: model set back to train mode\n", - "Epoch 7957: model parameters saved\n", - "Epoch 7958 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7958: avg_loss appended (2.7778)\n", - "Epoch 7958: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7958: accuracy appended (80.56%)\n", - "Epoch 7958: model set back to train mode\n", - "Epoch 7958: model parameters saved\n", - "Epoch 7959 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7959: avg_loss appended (2.7778)\n", - "Epoch 7959: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7959: accuracy appended (80.56%)\n", - "Epoch 7959: model set back to train mode\n", - "Epoch 7959: model parameters saved\n", - "Epoch 7960 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7960: avg_loss appended (2.7778)\n", - "Epoch 7960: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7960: accuracy appended (80.56%)\n", - "Epoch 7960: model set back to train mode\n", - "Epoch 7960: model parameters saved\n", - "Epoch 7961 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7961: avg_loss appended (2.7778)\n", - "Epoch 7961: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7961: accuracy appended (80.56%)\n", - "Epoch 7961: model set back to train mode\n", - "Epoch 7961: model parameters saved\n", - "Epoch 7962 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7962: avg_loss appended (2.7778)\n", - "Epoch 7962: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7962: accuracy appended (80.56%)\n", - "Epoch 7962: model set back to train mode\n", - "Epoch 7962: model parameters saved\n", - "Epoch 7963 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7963: avg_loss appended (2.7778)\n", - "Epoch 7963: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7963: accuracy appended (80.56%)\n", - "Epoch 7963: model set back to train mode\n", - "Epoch 7963: model parameters saved\n", - "Epoch 7964 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7964: avg_loss appended (2.7778)\n", - "Epoch 7964: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7964: accuracy appended (80.56%)\n", - "Epoch 7964: model set back to train mode\n", - "Epoch 7964: model parameters saved\n", - "Epoch 7965 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7965: avg_loss appended (2.7778)\n", - "Epoch 7965: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7965: accuracy appended (80.56%)\n", - "Epoch 7965: model set back to train mode\n", - "Epoch 7965: model parameters saved\n", - "Epoch 7966 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7966: avg_loss appended (2.7778)\n", - "Epoch 7966: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7966: accuracy appended (80.56%)\n", - "Epoch 7966: model set back to train mode\n", - "Epoch 7966: model parameters saved\n", - "Epoch 7967 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7967: avg_loss appended (2.7778)\n", - "Epoch 7967: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7967: accuracy appended (80.56%)\n", - "Epoch 7967: model set back to train mode\n", - "Epoch 7967: model parameters saved\n", - "Epoch 7968 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7968: avg_loss appended (2.7778)\n", - "Epoch 7968: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7968: accuracy appended (80.56%)\n", - "Epoch 7968: model set back to train mode\n", - "Epoch 7968: model parameters saved\n", - "Epoch 7969 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7969: avg_loss appended (2.7778)\n", - "Epoch 7969: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7969: accuracy appended (80.56%)\n", - "Epoch 7969: model set back to train mode\n", - "Epoch 7969: model parameters saved\n", - "Epoch 7970 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7970: avg_loss appended (2.7778)\n", - "Epoch 7970: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7970: accuracy appended (80.56%)\n", - "Epoch 7970: model set back to train mode\n", - "Epoch 7970: model parameters saved\n", - "Epoch 7971 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7971: avg_loss appended (2.7778)\n", - "Epoch 7971: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7971: accuracy appended (80.56%)\n", - "Epoch 7971: model set back to train mode\n", - "Epoch 7971: model parameters saved\n", - "Epoch 7972 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7972: avg_loss appended (2.7778)\n", - "Epoch 7972: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7972: accuracy appended (80.56%)\n", - "Epoch 7972: model set back to train mode\n", - "Epoch 7972: model parameters saved\n", - "Epoch 7973 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7973: avg_loss appended (2.7778)\n", - "Epoch 7973: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7973: accuracy appended (80.56%)\n", - "Epoch 7973: model set back to train mode\n", - "Epoch 7973: model parameters saved\n", - "Epoch 7974 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7974: avg_loss appended (2.7778)\n", - "Epoch 7974: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7974: accuracy appended (80.56%)\n", - "Epoch 7974: model set back to train mode\n", - "Epoch 7974: model parameters saved\n", - "Epoch 7975 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7975: avg_loss appended (2.7778)\n", - "Epoch 7975: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7975: accuracy appended (80.56%)\n", - "Epoch 7975: model set back to train mode\n", - "Epoch 7975: model parameters saved\n", - "Epoch 7976 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7976: avg_loss appended (2.7778)\n", - "Epoch 7976: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7976: accuracy appended (80.56%)\n", - "Epoch 7976: model set back to train mode\n", - "Epoch 7976: model parameters saved\n", - "Epoch 7977 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7977: avg_loss appended (2.7778)\n", - "Epoch 7977: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7977: accuracy appended (80.56%)\n", - "Epoch 7977: model set back to train mode\n", - "Epoch 7977: model parameters saved\n", - "Epoch 7978 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7978: avg_loss appended (2.7778)\n", - "Epoch 7978: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7978: accuracy appended (80.56%)\n", - "Epoch 7978: model set back to train mode\n", - "Epoch 7978: model parameters saved\n", - "Epoch 7979 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7979: avg_loss appended (2.7778)\n", - "Epoch 7979: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7979: accuracy appended (80.56%)\n", - "Epoch 7979: model set back to train mode\n", - "Epoch 7979: model parameters saved\n", - "Epoch 7980 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7980: avg_loss appended (2.7778)\n", - "Epoch 7980: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7980: accuracy appended (80.56%)\n", - "Epoch 7980: model set back to train mode\n", - "Epoch 7980: model parameters saved\n", - "Epoch 7981 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7981: avg_loss appended (2.7778)\n", - "Epoch 7981: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7981: accuracy appended (80.56%)\n", - "Epoch 7981: model set back to train mode\n", - "Epoch 7981: model parameters saved\n", - "Epoch 7982 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7982: avg_loss appended (2.7778)\n", - "Epoch 7982: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7982: accuracy appended (80.56%)\n", - "Epoch 7982: model set back to train mode\n", - "Epoch 7982: model parameters saved\n", - "Epoch 7983 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7983: avg_loss appended (2.7778)\n", - "Epoch 7983: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7983: accuracy appended (80.56%)\n", - "Epoch 7983: model set back to train mode\n", - "Epoch 7983: model parameters saved\n", - "Epoch 7984 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7984: avg_loss appended (2.7778)\n", - "Epoch 7984: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7984: accuracy appended (80.56%)\n", - "Epoch 7984: model set back to train mode\n", - "Epoch 7984: model parameters saved\n", - "Epoch 7985 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7985: avg_loss appended (2.7778)\n", - "Epoch 7985: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7985: accuracy appended (80.56%)\n", - "Epoch 7985: model set back to train mode\n", - "Epoch 7985: model parameters saved\n", - "Epoch 7986 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7986: avg_loss appended (2.7778)\n", - "Epoch 7986: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7986: accuracy appended (80.56%)\n", - "Epoch 7986: model set back to train mode\n", - "Epoch 7986: model parameters saved\n", - "Epoch 7987 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7987: avg_loss appended (2.7778)\n", - "Epoch 7987: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7987: accuracy appended (80.56%)\n", - "Epoch 7987: model set back to train mode\n", - "Epoch 7987: model parameters saved\n", - "Epoch 7988 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7988: avg_loss appended (2.7778)\n", - "Epoch 7988: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7988: accuracy appended (80.56%)\n", - "Epoch 7988: model set back to train mode\n", - "Epoch 7988: model parameters saved\n", - "Epoch 7989 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7989: avg_loss appended (2.7778)\n", - "Epoch 7989: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7989: accuracy appended (80.56%)\n", - "Epoch 7989: model set back to train mode\n", - "Epoch 7989: model parameters saved\n", - "Epoch 7990 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7990: avg_loss appended (2.7778)\n", - "Epoch 7990: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7990: accuracy appended (80.56%)\n", - "Epoch 7990: model set back to train mode\n", - "Epoch 7990: model parameters saved\n", - "Epoch 7991 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7991: avg_loss appended (2.7778)\n", - "Epoch 7991: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7991: accuracy appended (80.56%)\n", - "Epoch 7991: model set back to train mode\n", - "Epoch 7991: model parameters saved\n", - "Epoch 7992 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7992: avg_loss appended (2.7778)\n", - "Epoch 7992: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7992: accuracy appended (80.56%)\n", - "Epoch 7992: model set back to train mode\n", - "Epoch 7992: model parameters saved\n", - "Epoch 7993 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7993: avg_loss appended (2.7778)\n", - "Epoch 7993: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7993: accuracy appended (80.56%)\n", - "Epoch 7993: model set back to train mode\n", - "Epoch 7993: model parameters saved\n", - "Epoch 7994 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7994: avg_loss appended (2.7778)\n", - "Epoch 7994: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7994: accuracy appended (80.56%)\n", - "Epoch 7994: model set back to train mode\n", - "Epoch 7994: model parameters saved\n", - "Epoch 7995 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7995: avg_loss appended (2.7778)\n", - "Epoch 7995: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7995: accuracy appended (80.56%)\n", - "Epoch 7995: model set back to train mode\n", - "Epoch 7995: model parameters saved\n", - "Epoch 7996 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7996: avg_loss appended (2.7778)\n", - "Epoch 7996: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7996: accuracy appended (80.56%)\n", - "Epoch 7996: model set back to train mode\n", - "Epoch 7996: model parameters saved\n", - "Epoch 7997 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7997: avg_loss appended (2.7778)\n", - "Epoch 7997: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7997: accuracy appended (80.56%)\n", - "Epoch 7997: model set back to train mode\n", - "Epoch 7997: model parameters saved\n", - "Epoch 7998 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7998: avg_loss appended (2.7778)\n", - "Epoch 7998: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7998: accuracy appended (80.56%)\n", - "Epoch 7998: model set back to train mode\n", - "Epoch 7998: model parameters saved\n", - "Epoch 7999 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 7999: avg_loss appended (2.7778)\n", - "Epoch 7999: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 7999: accuracy appended (80.56%)\n", - "Epoch 7999: model set back to train mode\n", - "Epoch 7999: model parameters saved\n", - "Epoch 8000 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8000: avg_loss appended (2.7778)\n", - "Epoch 8000: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8000: accuracy appended (80.56%)\n", - "Epoch 8000: model set back to train mode\n", - "Epoch 8000: model parameters saved\n", - "Epoch 8000/10000, Loss: 2.7778, Accuracy: 80.56%\n", - "Epoch 8000: checkpoint saved\n", - "Epoch 8001 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8001: avg_loss appended (2.7778)\n", - "Epoch 8001: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8001: accuracy appended (80.56%)\n", - "Epoch 8001: model set back to train mode\n", - "Epoch 8001: model parameters saved\n", - "Epoch 8002 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8002: avg_loss appended (2.7778)\n", - "Epoch 8002: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8002: accuracy appended (80.56%)\n", - "Epoch 8002: model set back to train mode\n", - "Epoch 8002: model parameters saved\n", - "Epoch 8003 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8003: avg_loss appended (2.7778)\n", - "Epoch 8003: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8003: accuracy appended (80.56%)\n", - "Epoch 8003: model set back to train mode\n", - "Epoch 8003: model parameters saved\n", - "Epoch 8004 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8004: avg_loss appended (2.7778)\n", - "Epoch 8004: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8004: accuracy appended (80.56%)\n", - "Epoch 8004: model set back to train mode\n", - "Epoch 8004: model parameters saved\n", - "Epoch 8005 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8005: avg_loss appended (2.7778)\n", - "Epoch 8005: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8005: accuracy appended (80.56%)\n", - "Epoch 8005: model set back to train mode\n", - "Epoch 8005: model parameters saved\n", - "Epoch 8006 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8006: avg_loss appended (2.7778)\n", - "Epoch 8006: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8006: accuracy appended (80.56%)\n", - "Epoch 8006: model set back to train mode\n", - "Epoch 8006: model parameters saved\n", - "Epoch 8007 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8007: avg_loss appended (2.7778)\n", - "Epoch 8007: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8007: accuracy appended (80.56%)\n", - "Epoch 8007: model set back to train mode\n", - "Epoch 8007: model parameters saved\n", - "Epoch 8008 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8008: avg_loss appended (2.7778)\n", - "Epoch 8008: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8008: accuracy appended (80.56%)\n", - "Epoch 8008: model set back to train mode\n", - "Epoch 8008: model parameters saved\n", - "Epoch 8009 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8009: avg_loss appended (2.7778)\n", - "Epoch 8009: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8009: accuracy appended (80.56%)\n", - "Epoch 8009: model set back to train mode\n", - "Epoch 8009: model parameters saved\n", - "Epoch 8010 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8010: avg_loss appended (2.7778)\n", - "Epoch 8010: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8010: accuracy appended (80.56%)\n", - "Epoch 8010: model set back to train mode\n", - "Epoch 8010: model parameters saved\n", - "Epoch 8011 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8011: avg_loss appended (2.7778)\n", - "Epoch 8011: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8011: accuracy appended (80.56%)\n", - "Epoch 8011: model set back to train mode\n", - "Epoch 8011: model parameters saved\n", - "Epoch 8012 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8012: avg_loss appended (2.7778)\n", - "Epoch 8012: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8012: accuracy appended (80.56%)\n", - "Epoch 8012: model set back to train mode\n", - "Epoch 8012: model parameters saved\n", - "Epoch 8013 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8013: avg_loss appended (2.7778)\n", - "Epoch 8013: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8013: accuracy appended (80.56%)\n", - "Epoch 8013: model set back to train mode\n", - "Epoch 8013: model parameters saved\n", - "Epoch 8014 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8014: avg_loss appended (2.7778)\n", - "Epoch 8014: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8014: accuracy appended (80.56%)\n", - "Epoch 8014: model set back to train mode\n", - "Epoch 8014: model parameters saved\n", - "Epoch 8015 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8015: avg_loss appended (2.7778)\n", - "Epoch 8015: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8015: accuracy appended (83.33%)\n", - "Epoch 8015: model set back to train mode\n", - "Epoch 8015: model parameters saved\n", - "Epoch 8016 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8016: avg_loss appended (2.7778)\n", - "Epoch 8016: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8016: accuracy appended (83.33%)\n", - "Epoch 8016: model set back to train mode\n", - "Epoch 8016: model parameters saved\n", - "Epoch 8017 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8017: avg_loss appended (2.7778)\n", - "Epoch 8017: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8017: accuracy appended (80.56%)\n", - "Epoch 8017: model set back to train mode\n", - "Epoch 8017: model parameters saved\n", - "Epoch 8018 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8018: avg_loss appended (2.7778)\n", - "Epoch 8018: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8018: accuracy appended (80.56%)\n", - "Epoch 8018: model set back to train mode\n", - "Epoch 8018: model parameters saved\n", - "Epoch 8019 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8019: avg_loss appended (2.7778)\n", - "Epoch 8019: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8019: accuracy appended (80.56%)\n", - "Epoch 8019: model set back to train mode\n", - "Epoch 8019: model parameters saved\n", - "Epoch 8020 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8020: avg_loss appended (2.7778)\n", - "Epoch 8020: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8020: accuracy appended (80.56%)\n", - "Epoch 8020: model set back to train mode\n", - "Epoch 8020: model parameters saved\n", - "Epoch 8021 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8021: avg_loss appended (2.7778)\n", - "Epoch 8021: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8021: accuracy appended (80.56%)\n", - "Epoch 8021: model set back to train mode\n", - "Epoch 8021: model parameters saved\n", - "Epoch 8022 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8022: avg_loss appended (2.7778)\n", - "Epoch 8022: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8022: accuracy appended (80.56%)\n", - "Epoch 8022: model set back to train mode\n", - "Epoch 8022: model parameters saved\n", - "Epoch 8023 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8023: avg_loss appended (2.7778)\n", - "Epoch 8023: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8023: accuracy appended (80.56%)\n", - "Epoch 8023: model set back to train mode\n", - "Epoch 8023: model parameters saved\n", - "Epoch 8024 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8024: avg_loss appended (2.7778)\n", - "Epoch 8024: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8024: accuracy appended (80.56%)\n", - "Epoch 8024: model set back to train mode\n", - "Epoch 8024: model parameters saved\n", - "Epoch 8025 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8025: avg_loss appended (2.7778)\n", - "Epoch 8025: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8025: accuracy appended (80.56%)\n", - "Epoch 8025: model set back to train mode\n", - "Epoch 8025: model parameters saved\n", - "Epoch 8026 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8026: avg_loss appended (2.7778)\n", - "Epoch 8026: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8026: accuracy appended (80.56%)\n", - "Epoch 8026: model set back to train mode\n", - "Epoch 8026: model parameters saved\n", - "Epoch 8027 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8027: avg_loss appended (2.7778)\n", - "Epoch 8027: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8027: accuracy appended (80.56%)\n", - "Epoch 8027: model set back to train mode\n", - "Epoch 8027: model parameters saved\n", - "Epoch 8028 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8028: avg_loss appended (2.7778)\n", - "Epoch 8028: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8028: accuracy appended (80.56%)\n", - "Epoch 8028: model set back to train mode\n", - "Epoch 8028: model parameters saved\n", - "Epoch 8029 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8029: avg_loss appended (2.7778)\n", - "Epoch 8029: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8029: accuracy appended (80.56%)\n", - "Epoch 8029: model set back to train mode\n", - "Epoch 8029: model parameters saved\n", - "Epoch 8030 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8030: avg_loss appended (2.7778)\n", - "Epoch 8030: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8030: accuracy appended (80.56%)\n", - "Epoch 8030: model set back to train mode\n", - "Epoch 8030: model parameters saved\n", - "Epoch 8031 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8031: avg_loss appended (2.7778)\n", - "Epoch 8031: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8031: accuracy appended (80.56%)\n", - "Epoch 8031: model set back to train mode\n", - "Epoch 8031: model parameters saved\n", - "Epoch 8032 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8032: avg_loss appended (2.7778)\n", - "Epoch 8032: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8032: accuracy appended (80.56%)\n", - "Epoch 8032: model set back to train mode\n", - "Epoch 8032: model parameters saved\n", - "Epoch 8033 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8033: avg_loss appended (2.7778)\n", - "Epoch 8033: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8033: accuracy appended (80.56%)\n", - "Epoch 8033: model set back to train mode\n", - "Epoch 8033: model parameters saved\n", - "Epoch 8034 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8034: avg_loss appended (2.7778)\n", - "Epoch 8034: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8034: accuracy appended (80.56%)\n", - "Epoch 8034: model set back to train mode\n", - "Epoch 8034: model parameters saved\n", - "Epoch 8035 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8035: avg_loss appended (2.7778)\n", - "Epoch 8035: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8035: accuracy appended (80.56%)\n", - "Epoch 8035: model set back to train mode\n", - "Epoch 8035: model parameters saved\n", - "Epoch 8036 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8036: avg_loss appended (2.7778)\n", - "Epoch 8036: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8036: accuracy appended (80.56%)\n", - "Epoch 8036: model set back to train mode\n", - "Epoch 8036: model parameters saved\n", - "Epoch 8037 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8037: avg_loss appended (2.7778)\n", - "Epoch 8037: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8037: accuracy appended (80.56%)\n", - "Epoch 8037: model set back to train mode\n", - "Epoch 8037: model parameters saved\n", - "Epoch 8038 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8038: avg_loss appended (2.7778)\n", - "Epoch 8038: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8038: accuracy appended (80.56%)\n", - "Epoch 8038: model set back to train mode\n", - "Epoch 8038: model parameters saved\n", - "Epoch 8039 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8039: avg_loss appended (2.7778)\n", - "Epoch 8039: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8039: accuracy appended (80.56%)\n", - "Epoch 8039: model set back to train mode\n", - "Epoch 8039: model parameters saved\n", - "Epoch 8040 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8040: avg_loss appended (2.7778)\n", - "Epoch 8040: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8040: accuracy appended (80.56%)\n", - "Epoch 8040: model set back to train mode\n", - "Epoch 8040: model parameters saved\n", - "Epoch 8041 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8041: avg_loss appended (2.7778)\n", - "Epoch 8041: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8041: accuracy appended (80.56%)\n", - "Epoch 8041: model set back to train mode\n", - "Epoch 8041: model parameters saved\n", - "Epoch 8042 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8042: avg_loss appended (2.7778)\n", - "Epoch 8042: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8042: accuracy appended (80.56%)\n", - "Epoch 8042: model set back to train mode\n", - "Epoch 8042: model parameters saved\n", - "Epoch 8043 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8043: avg_loss appended (2.7778)\n", - "Epoch 8043: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8043: accuracy appended (80.56%)\n", - "Epoch 8043: model set back to train mode\n", - "Epoch 8043: model parameters saved\n", - "Epoch 8044 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8044: avg_loss appended (2.7778)\n", - "Epoch 8044: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8044: accuracy appended (80.56%)\n", - "Epoch 8044: model set back to train mode\n", - "Epoch 8044: model parameters saved\n", - "Epoch 8045 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8045: avg_loss appended (2.7778)\n", - "Epoch 8045: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8045: accuracy appended (80.56%)\n", - "Epoch 8045: model set back to train mode\n", - "Epoch 8045: model parameters saved\n", - "Epoch 8046 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8046: avg_loss appended (2.7778)\n", - "Epoch 8046: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8046: accuracy appended (80.56%)\n", - "Epoch 8046: model set back to train mode\n", - "Epoch 8046: model parameters saved\n", - "Epoch 8047 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8047: avg_loss appended (2.7778)\n", - "Epoch 8047: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8047: accuracy appended (80.56%)\n", - "Epoch 8047: model set back to train mode\n", - "Epoch 8047: model parameters saved\n", - "Epoch 8048 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8048: avg_loss appended (2.7778)\n", - "Epoch 8048: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8048: accuracy appended (80.56%)\n", - "Epoch 8048: model set back to train mode\n", - "Epoch 8048: model parameters saved\n", - "Epoch 8049 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8049: avg_loss appended (2.7778)\n", - "Epoch 8049: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8049: accuracy appended (80.56%)\n", - "Epoch 8049: model set back to train mode\n", - "Epoch 8049: model parameters saved\n", - "Epoch 8050 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8050: avg_loss appended (2.7778)\n", - "Epoch 8050: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8050: accuracy appended (80.56%)\n", - "Epoch 8050: model set back to train mode\n", - "Epoch 8050: model parameters saved\n", - "Epoch 8051 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8051: avg_loss appended (2.7778)\n", - "Epoch 8051: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8051: accuracy appended (80.56%)\n", - "Epoch 8051: model set back to train mode\n", - "Epoch 8051: model parameters saved\n", - "Epoch 8052 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8052: avg_loss appended (2.7778)\n", - "Epoch 8052: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8052: accuracy appended (80.56%)\n", - "Epoch 8052: model set back to train mode\n", - "Epoch 8052: model parameters saved\n", - "Epoch 8053 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8053: avg_loss appended (2.7778)\n", - "Epoch 8053: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8053: accuracy appended (80.56%)\n", - "Epoch 8053: model set back to train mode\n", - "Epoch 8053: model parameters saved\n", - "Epoch 8054 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8054: avg_loss appended (2.7778)\n", - "Epoch 8054: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8054: accuracy appended (80.56%)\n", - "Epoch 8054: model set back to train mode\n", - "Epoch 8054: model parameters saved\n", - "Epoch 8055 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8055: avg_loss appended (2.7778)\n", - "Epoch 8055: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8055: accuracy appended (80.56%)\n", - "Epoch 8055: model set back to train mode\n", - "Epoch 8055: model parameters saved\n", - "Epoch 8056 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8056: avg_loss appended (2.7778)\n", - "Epoch 8056: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8056: accuracy appended (80.56%)\n", - "Epoch 8056: model set back to train mode\n", - "Epoch 8056: model parameters saved\n", - "Epoch 8057 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8057: avg_loss appended (2.7778)\n", - "Epoch 8057: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8057: accuracy appended (80.56%)\n", - "Epoch 8057: model set back to train mode\n", - "Epoch 8057: model parameters saved\n", - "Epoch 8058 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8058: avg_loss appended (2.7778)\n", - "Epoch 8058: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8058: accuracy appended (80.56%)\n", - "Epoch 8058: model set back to train mode\n", - "Epoch 8058: model parameters saved\n", - "Epoch 8059 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8059: avg_loss appended (2.7778)\n", - "Epoch 8059: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8059: accuracy appended (80.56%)\n", - "Epoch 8059: model set back to train mode\n", - "Epoch 8059: model parameters saved\n", - "Epoch 8060 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8060: avg_loss appended (2.7778)\n", - "Epoch 8060: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8060: accuracy appended (80.56%)\n", - "Epoch 8060: model set back to train mode\n", - "Epoch 8060: model parameters saved\n", - "Epoch 8061 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8061: avg_loss appended (2.7778)\n", - "Epoch 8061: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8061: accuracy appended (80.56%)\n", - "Epoch 8061: model set back to train mode\n", - "Epoch 8061: model parameters saved\n", - "Epoch 8062 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8062: avg_loss appended (2.7778)\n", - "Epoch 8062: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8062: accuracy appended (80.56%)\n", - "Epoch 8062: model set back to train mode\n", - "Epoch 8062: model parameters saved\n", - "Epoch 8063 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8063: avg_loss appended (2.7778)\n", - "Epoch 8063: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8063: accuracy appended (80.56%)\n", - "Epoch 8063: model set back to train mode\n", - "Epoch 8063: model parameters saved\n", - "Epoch 8064 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8064: avg_loss appended (2.7778)\n", - "Epoch 8064: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8064: accuracy appended (80.56%)\n", - "Epoch 8064: model set back to train mode\n", - "Epoch 8064: model parameters saved\n", - "Epoch 8065 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8065: avg_loss appended (2.7778)\n", - "Epoch 8065: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8065: accuracy appended (80.56%)\n", - "Epoch 8065: model set back to train mode\n", - "Epoch 8065: model parameters saved\n", - "Epoch 8066 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8066: avg_loss appended (2.7778)\n", - "Epoch 8066: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8066: accuracy appended (80.56%)\n", - "Epoch 8066: model set back to train mode\n", - "Epoch 8066: model parameters saved\n", - "Epoch 8067 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8067: avg_loss appended (2.7778)\n", - "Epoch 8067: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8067: accuracy appended (80.56%)\n", - "Epoch 8067: model set back to train mode\n", - "Epoch 8067: model parameters saved\n", - "Epoch 8068 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8068: avg_loss appended (2.7778)\n", - "Epoch 8068: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8068: accuracy appended (80.56%)\n", - "Epoch 8068: model set back to train mode\n", - "Epoch 8068: model parameters saved\n", - "Epoch 8069 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8069: avg_loss appended (2.7778)\n", - "Epoch 8069: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8069: accuracy appended (80.56%)\n", - "Epoch 8069: model set back to train mode\n", - "Epoch 8069: model parameters saved\n", - "Epoch 8070 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8070: avg_loss appended (2.7778)\n", - "Epoch 8070: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8070: accuracy appended (80.56%)\n", - "Epoch 8070: model set back to train mode\n", - "Epoch 8070: model parameters saved\n", - "Epoch 8071 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8071: avg_loss appended (2.7778)\n", - "Epoch 8071: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8071: accuracy appended (80.56%)\n", - "Epoch 8071: model set back to train mode\n", - "Epoch 8071: model parameters saved\n", - "Epoch 8072 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8072: avg_loss appended (2.7778)\n", - "Epoch 8072: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8072: accuracy appended (80.56%)\n", - "Epoch 8072: model set back to train mode\n", - "Epoch 8072: model parameters saved\n", - "Epoch 8073 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8073: avg_loss appended (2.7778)\n", - "Epoch 8073: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8073: accuracy appended (80.56%)\n", - "Epoch 8073: model set back to train mode\n", - "Epoch 8073: model parameters saved\n", - "Epoch 8074 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8074: avg_loss appended (2.7778)\n", - "Epoch 8074: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8074: accuracy appended (80.56%)\n", - "Epoch 8074: model set back to train mode\n", - "Epoch 8074: model parameters saved\n", - "Epoch 8075 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8075: avg_loss appended (2.7778)\n", - "Epoch 8075: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8075: accuracy appended (80.56%)\n", - "Epoch 8075: model set back to train mode\n", - "Epoch 8075: model parameters saved\n", - "Epoch 8076 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8076: avg_loss appended (2.7778)\n", - "Epoch 8076: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8076: accuracy appended (80.56%)\n", - "Epoch 8076: model set back to train mode\n", - "Epoch 8076: model parameters saved\n", - "Epoch 8077 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8077: avg_loss appended (2.7778)\n", - "Epoch 8077: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8077: accuracy appended (80.56%)\n", - "Epoch 8077: model set back to train mode\n", - "Epoch 8077: model parameters saved\n", - "Epoch 8078 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8078: avg_loss appended (2.7778)\n", - "Epoch 8078: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8078: accuracy appended (80.56%)\n", - "Epoch 8078: model set back to train mode\n", - "Epoch 8078: model parameters saved\n", - "Epoch 8079 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8079: avg_loss appended (2.7778)\n", - "Epoch 8079: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8079: accuracy appended (80.56%)\n", - "Epoch 8079: model set back to train mode\n", - "Epoch 8079: model parameters saved\n", - "Epoch 8080 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8080: avg_loss appended (2.7778)\n", - "Epoch 8080: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8080: accuracy appended (80.56%)\n", - "Epoch 8080: model set back to train mode\n", - "Epoch 8080: model parameters saved\n", - "Epoch 8081 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8081: avg_loss appended (2.7778)\n", - "Epoch 8081: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8081: accuracy appended (80.56%)\n", - "Epoch 8081: model set back to train mode\n", - "Epoch 8081: model parameters saved\n", - "Epoch 8082 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8082: avg_loss appended (2.7778)\n", - "Epoch 8082: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8082: accuracy appended (80.56%)\n", - "Epoch 8082: model set back to train mode\n", - "Epoch 8082: model parameters saved\n", - "Epoch 8083 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8083: avg_loss appended (2.7778)\n", - "Epoch 8083: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8083: accuracy appended (80.56%)\n", - "Epoch 8083: model set back to train mode\n", - "Epoch 8083: model parameters saved\n", - "Epoch 8084 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8084: avg_loss appended (2.7778)\n", - "Epoch 8084: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8084: accuracy appended (80.56%)\n", - "Epoch 8084: model set back to train mode\n", - "Epoch 8084: model parameters saved\n", - "Epoch 8085 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8085: avg_loss appended (2.7778)\n", - "Epoch 8085: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8085: accuracy appended (80.56%)\n", - "Epoch 8085: model set back to train mode\n", - "Epoch 8085: model parameters saved\n", - "Epoch 8086 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8086: avg_loss appended (2.7778)\n", - "Epoch 8086: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8086: accuracy appended (80.56%)\n", - "Epoch 8086: model set back to train mode\n", - "Epoch 8086: model parameters saved\n", - "Epoch 8087 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8087: avg_loss appended (2.7778)\n", - "Epoch 8087: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8087: accuracy appended (80.56%)\n", - "Epoch 8087: model set back to train mode\n", - "Epoch 8087: model parameters saved\n", - "Epoch 8088 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8088: avg_loss appended (2.7778)\n", - "Epoch 8088: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8088: accuracy appended (80.56%)\n", - "Epoch 8088: model set back to train mode\n", - "Epoch 8088: model parameters saved\n", - "Epoch 8089 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8089: avg_loss appended (2.7778)\n", - "Epoch 8089: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8089: accuracy appended (80.56%)\n", - "Epoch 8089: model set back to train mode\n", - "Epoch 8089: model parameters saved\n", - "Epoch 8090 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8090: avg_loss appended (2.7778)\n", - "Epoch 8090: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8090: accuracy appended (80.56%)\n", - "Epoch 8090: model set back to train mode\n", - "Epoch 8090: model parameters saved\n", - "Epoch 8091 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8091: avg_loss appended (2.7778)\n", - "Epoch 8091: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8091: accuracy appended (80.56%)\n", - "Epoch 8091: model set back to train mode\n", - "Epoch 8091: model parameters saved\n", - "Epoch 8092 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8092: avg_loss appended (2.7778)\n", - "Epoch 8092: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8092: accuracy appended (80.56%)\n", - "Epoch 8092: model set back to train mode\n", - "Epoch 8092: model parameters saved\n", - "Epoch 8093 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8093: avg_loss appended (2.7778)\n", - "Epoch 8093: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8093: accuracy appended (80.56%)\n", - "Epoch 8093: model set back to train mode\n", - "Epoch 8093: model parameters saved\n", - "Epoch 8094 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8094: avg_loss appended (2.7778)\n", - "Epoch 8094: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8094: accuracy appended (80.56%)\n", - "Epoch 8094: model set back to train mode\n", - "Epoch 8094: model parameters saved\n", - "Epoch 8095 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8095: avg_loss appended (2.7778)\n", - "Epoch 8095: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8095: accuracy appended (80.56%)\n", - "Epoch 8095: model set back to train mode\n", - "Epoch 8095: model parameters saved\n", - "Epoch 8096 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8096: avg_loss appended (2.7778)\n", - "Epoch 8096: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8096: accuracy appended (80.56%)\n", - "Epoch 8096: model set back to train mode\n", - "Epoch 8096: model parameters saved\n", - "Epoch 8097 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8097: avg_loss appended (2.7778)\n", - "Epoch 8097: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8097: accuracy appended (80.56%)\n", - "Epoch 8097: model set back to train mode\n", - "Epoch 8097: model parameters saved\n", - "Epoch 8098 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8098: avg_loss appended (2.7778)\n", - "Epoch 8098: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8098: accuracy appended (80.56%)\n", - "Epoch 8098: model set back to train mode\n", - "Epoch 8098: model parameters saved\n", - "Epoch 8099 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8099: avg_loss appended (2.7778)\n", - "Epoch 8099: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8099: accuracy appended (80.56%)\n", - "Epoch 8099: model set back to train mode\n", - "Epoch 8099: model parameters saved\n", - "Epoch 8100 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8100: avg_loss appended (2.7778)\n", - "Epoch 8100: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8100: accuracy appended (80.56%)\n", - "Epoch 8100: model set back to train mode\n", - "Epoch 8100: model parameters saved\n", - "Epoch 8100/10000, Loss: 2.7778, Accuracy: 80.56%\n", - "Epoch 8101 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8101: avg_loss appended (2.7778)\n", - "Epoch 8101: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8101: accuracy appended (80.56%)\n", - "Epoch 8101: model set back to train mode\n", - "Epoch 8101: model parameters saved\n", - "Epoch 8102 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8102: avg_loss appended (2.7778)\n", - "Epoch 8102: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8102: accuracy appended (80.56%)\n", - "Epoch 8102: model set back to train mode\n", - "Epoch 8102: model parameters saved\n", - "Epoch 8103 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8103: avg_loss appended (2.7778)\n", - "Epoch 8103: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8103: accuracy appended (80.56%)\n", - "Epoch 8103: model set back to train mode\n", - "Epoch 8103: model parameters saved\n", - "Epoch 8104 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8104: avg_loss appended (2.7778)\n", - "Epoch 8104: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8104: accuracy appended (80.56%)\n", - "Epoch 8104: model set back to train mode\n", - "Epoch 8104: model parameters saved\n", - "Epoch 8105 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8105: avg_loss appended (2.7778)\n", - "Epoch 8105: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8105: accuracy appended (80.56%)\n", - "Epoch 8105: model set back to train mode\n", - "Epoch 8105: model parameters saved\n", - "Epoch 8106 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8106: avg_loss appended (2.7778)\n", - "Epoch 8106: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8106: accuracy appended (80.56%)\n", - "Epoch 8106: model set back to train mode\n", - "Epoch 8106: model parameters saved\n", - "Epoch 8107 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8107: avg_loss appended (2.7778)\n", - "Epoch 8107: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8107: accuracy appended (80.56%)\n", - "Epoch 8107: model set back to train mode\n", - "Epoch 8107: model parameters saved\n", - "Epoch 8108 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8108: avg_loss appended (2.7778)\n", - "Epoch 8108: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8108: accuracy appended (80.56%)\n", - "Epoch 8108: model set back to train mode\n", - "Epoch 8108: model parameters saved\n", - "Epoch 8109 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8109: avg_loss appended (2.7778)\n", - "Epoch 8109: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8109: accuracy appended (80.56%)\n", - "Epoch 8109: model set back to train mode\n", - "Epoch 8109: model parameters saved\n", - "Epoch 8110 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8110: avg_loss appended (2.7778)\n", - "Epoch 8110: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8110: accuracy appended (80.56%)\n", - "Epoch 8110: model set back to train mode\n", - "Epoch 8110: model parameters saved\n", - "Epoch 8111 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8111: avg_loss appended (2.7778)\n", - "Epoch 8111: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8111: accuracy appended (80.56%)\n", - "Epoch 8111: model set back to train mode\n", - "Epoch 8111: model parameters saved\n", - "Epoch 8112 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8112: avg_loss appended (2.7778)\n", - "Epoch 8112: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8112: accuracy appended (80.56%)\n", - "Epoch 8112: model set back to train mode\n", - "Epoch 8112: model parameters saved\n", - "Epoch 8113 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8113: avg_loss appended (2.7778)\n", - "Epoch 8113: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8113: accuracy appended (80.56%)\n", - "Epoch 8113: model set back to train mode\n", - "Epoch 8113: model parameters saved\n", - "Epoch 8114 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8114: avg_loss appended (2.7778)\n", - "Epoch 8114: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8114: accuracy appended (80.56%)\n", - "Epoch 8114: model set back to train mode\n", - "Epoch 8114: model parameters saved\n", - "Epoch 8115 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8115: avg_loss appended (2.7778)\n", - "Epoch 8115: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8115: accuracy appended (80.56%)\n", - "Epoch 8115: model set back to train mode\n", - "Epoch 8115: model parameters saved\n", - "Epoch 8116 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8116: avg_loss appended (2.7778)\n", - "Epoch 8116: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8116: accuracy appended (80.56%)\n", - "Epoch 8116: model set back to train mode\n", - "Epoch 8116: model parameters saved\n", - "Epoch 8117 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8117: avg_loss appended (2.7778)\n", - "Epoch 8117: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8117: accuracy appended (80.56%)\n", - "Epoch 8117: model set back to train mode\n", - "Epoch 8117: model parameters saved\n", - "Epoch 8118 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8118: avg_loss appended (2.7778)\n", - "Epoch 8118: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8118: accuracy appended (80.56%)\n", - "Epoch 8118: model set back to train mode\n", - "Epoch 8118: model parameters saved\n", - "Epoch 8119 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8119: avg_loss appended (2.7778)\n", - "Epoch 8119: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8119: accuracy appended (80.56%)\n", - "Epoch 8119: model set back to train mode\n", - "Epoch 8119: model parameters saved\n", - "Epoch 8120 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8120: avg_loss appended (2.7778)\n", - "Epoch 8120: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8120: accuracy appended (80.56%)\n", - "Epoch 8120: model set back to train mode\n", - "Epoch 8120: model parameters saved\n", - "Epoch 8121 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8121: avg_loss appended (2.7778)\n", - "Epoch 8121: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8121: accuracy appended (80.56%)\n", - "Epoch 8121: model set back to train mode\n", - "Epoch 8121: model parameters saved\n", - "Epoch 8122 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8122: avg_loss appended (2.7778)\n", - "Epoch 8122: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8122: accuracy appended (80.56%)\n", - "Epoch 8122: model set back to train mode\n", - "Epoch 8122: model parameters saved\n", - "Epoch 8123 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8123: avg_loss appended (2.7778)\n", - "Epoch 8123: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8123: accuracy appended (80.56%)\n", - "Epoch 8123: model set back to train mode\n", - "Epoch 8123: model parameters saved\n", - "Epoch 8124 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8124: avg_loss appended (2.7778)\n", - "Epoch 8124: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8124: accuracy appended (80.56%)\n", - "Epoch 8124: model set back to train mode\n", - "Epoch 8124: model parameters saved\n", - "Epoch 8125 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8125: avg_loss appended (2.7778)\n", - "Epoch 8125: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8125: accuracy appended (80.56%)\n", - "Epoch 8125: model set back to train mode\n", - "Epoch 8125: model parameters saved\n", - "Epoch 8126 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8126: avg_loss appended (2.7778)\n", - "Epoch 8126: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8126: accuracy appended (80.56%)\n", - "Epoch 8126: model set back to train mode\n", - "Epoch 8126: model parameters saved\n", - "Epoch 8127 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8127: avg_loss appended (2.7778)\n", - "Epoch 8127: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8127: accuracy appended (80.56%)\n", - "Epoch 8127: model set back to train mode\n", - "Epoch 8127: model parameters saved\n", - "Epoch 8128 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8128: avg_loss appended (2.7778)\n", - "Epoch 8128: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8128: accuracy appended (80.56%)\n", - "Epoch 8128: model set back to train mode\n", - "Epoch 8128: model parameters saved\n", - "Epoch 8129 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8129: avg_loss appended (2.7778)\n", - "Epoch 8129: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8129: accuracy appended (80.56%)\n", - "Epoch 8129: model set back to train mode\n", - "Epoch 8129: model parameters saved\n", - "Epoch 8130 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8130: avg_loss appended (2.7778)\n", - "Epoch 8130: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8130: accuracy appended (80.56%)\n", - "Epoch 8130: model set back to train mode\n", - "Epoch 8130: model parameters saved\n", - "Epoch 8131 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8131: avg_loss appended (2.7778)\n", - "Epoch 8131: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8131: accuracy appended (80.56%)\n", - "Epoch 8131: model set back to train mode\n", - "Epoch 8131: model parameters saved\n", - "Epoch 8132 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8132: avg_loss appended (2.7778)\n", - "Epoch 8132: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8132: accuracy appended (80.56%)\n", - "Epoch 8132: model set back to train mode\n", - "Epoch 8132: model parameters saved\n", - "Epoch 8133 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8133: avg_loss appended (2.7778)\n", - "Epoch 8133: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8133: accuracy appended (80.56%)\n", - "Epoch 8133: model set back to train mode\n", - "Epoch 8133: model parameters saved\n", - "Epoch 8134 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8134: avg_loss appended (2.7778)\n", - "Epoch 8134: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8134: accuracy appended (80.56%)\n", - "Epoch 8134: model set back to train mode\n", - "Epoch 8134: model parameters saved\n", - "Epoch 8135 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8135: avg_loss appended (2.7778)\n", - "Epoch 8135: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8135: accuracy appended (80.56%)\n", - "Epoch 8135: model set back to train mode\n", - "Epoch 8135: model parameters saved\n", - "Epoch 8136 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8136: avg_loss appended (2.7778)\n", - "Epoch 8136: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8136: accuracy appended (80.56%)\n", - "Epoch 8136: model set back to train mode\n", - "Epoch 8136: model parameters saved\n", - "Epoch 8137 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8137: avg_loss appended (2.7778)\n", - "Epoch 8137: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8137: accuracy appended (80.56%)\n", - "Epoch 8137: model set back to train mode\n", - "Epoch 8137: model parameters saved\n", - "Epoch 8138 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8138: avg_loss appended (2.7778)\n", - "Epoch 8138: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8138: accuracy appended (80.56%)\n", - "Epoch 8138: model set back to train mode\n", - "Epoch 8138: model parameters saved\n", - "Epoch 8139 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8139: avg_loss appended (2.7778)\n", - "Epoch 8139: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8139: accuracy appended (80.56%)\n", - "Epoch 8139: model set back to train mode\n", - "Epoch 8139: model parameters saved\n", - "Epoch 8140 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8140: avg_loss appended (2.7778)\n", - "Epoch 8140: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8140: accuracy appended (80.56%)\n", - "Epoch 8140: model set back to train mode\n", - "Epoch 8140: model parameters saved\n", - "Epoch 8141 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8141: avg_loss appended (2.7778)\n", - "Epoch 8141: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8141: accuracy appended (80.56%)\n", - "Epoch 8141: model set back to train mode\n", - "Epoch 8141: model parameters saved\n", - "Epoch 8142 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8142: avg_loss appended (2.7778)\n", - "Epoch 8142: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8142: accuracy appended (80.56%)\n", - "Epoch 8142: model set back to train mode\n", - "Epoch 8142: model parameters saved\n", - "Epoch 8143 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8143: avg_loss appended (2.7778)\n", - "Epoch 8143: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8143: accuracy appended (80.56%)\n", - "Epoch 8143: model set back to train mode\n", - "Epoch 8143: model parameters saved\n", - "Epoch 8144 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8144: avg_loss appended (2.7778)\n", - "Epoch 8144: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8144: accuracy appended (80.56%)\n", - "Epoch 8144: model set back to train mode\n", - "Epoch 8144: model parameters saved\n", - "Epoch 8145 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8145: avg_loss appended (2.7778)\n", - "Epoch 8145: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8145: accuracy appended (80.56%)\n", - "Epoch 8145: model set back to train mode\n", - "Epoch 8145: model parameters saved\n", - "Epoch 8146 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8146: avg_loss appended (2.7778)\n", - "Epoch 8146: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8146: accuracy appended (80.56%)\n", - "Epoch 8146: model set back to train mode\n", - "Epoch 8146: model parameters saved\n", - "Epoch 8147 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8147: avg_loss appended (2.7778)\n", - "Epoch 8147: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8147: accuracy appended (80.56%)\n", - "Epoch 8147: model set back to train mode\n", - "Epoch 8147: model parameters saved\n", - "Epoch 8148 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8148: avg_loss appended (2.7778)\n", - "Epoch 8148: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8148: accuracy appended (80.56%)\n", - "Epoch 8148: model set back to train mode\n", - "Epoch 8148: model parameters saved\n", - "Epoch 8149 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8149: avg_loss appended (2.7778)\n", - "Epoch 8149: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8149: accuracy appended (80.56%)\n", - "Epoch 8149: model set back to train mode\n", - "Epoch 8149: model parameters saved\n", - "Epoch 8150 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8150: avg_loss appended (2.7778)\n", - "Epoch 8150: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8150: accuracy appended (80.56%)\n", - "Epoch 8150: model set back to train mode\n", - "Epoch 8150: model parameters saved\n", - "Epoch 8151 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8151: avg_loss appended (2.7778)\n", - "Epoch 8151: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8151: accuracy appended (80.56%)\n", - "Epoch 8151: model set back to train mode\n", - "Epoch 8151: model parameters saved\n", - "Epoch 8152 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8152: avg_loss appended (2.7778)\n", - "Epoch 8152: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8152: accuracy appended (80.56%)\n", - "Epoch 8152: model set back to train mode\n", - "Epoch 8152: model parameters saved\n", - "Epoch 8153 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8153: avg_loss appended (2.7778)\n", - "Epoch 8153: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8153: accuracy appended (80.56%)\n", - "Epoch 8153: model set back to train mode\n", - "Epoch 8153: model parameters saved\n", - "Epoch 8154 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8154: avg_loss appended (2.7778)\n", - "Epoch 8154: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8154: accuracy appended (80.56%)\n", - "Epoch 8154: model set back to train mode\n", - "Epoch 8154: model parameters saved\n", - "Epoch 8155 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8155: avg_loss appended (2.7778)\n", - "Epoch 8155: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8155: accuracy appended (80.56%)\n", - "Epoch 8155: model set back to train mode\n", - "Epoch 8155: model parameters saved\n", - "Epoch 8156 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8156: avg_loss appended (2.7778)\n", - "Epoch 8156: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8156: accuracy appended (80.56%)\n", - "Epoch 8156: model set back to train mode\n", - "Epoch 8156: model parameters saved\n", - "Epoch 8157 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8157: avg_loss appended (2.7778)\n", - "Epoch 8157: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8157: accuracy appended (80.56%)\n", - "Epoch 8157: model set back to train mode\n", - "Epoch 8157: model parameters saved\n", - "Epoch 8158 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8158: avg_loss appended (2.7778)\n", - "Epoch 8158: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8158: accuracy appended (80.56%)\n", - "Epoch 8158: model set back to train mode\n", - "Epoch 8158: model parameters saved\n", - "Epoch 8159 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8159: avg_loss appended (2.7778)\n", - "Epoch 8159: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8159: accuracy appended (80.56%)\n", - "Epoch 8159: model set back to train mode\n", - "Epoch 8159: model parameters saved\n", - "Epoch 8160 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8160: avg_loss appended (2.7778)\n", - "Epoch 8160: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8160: accuracy appended (80.56%)\n", - "Epoch 8160: model set back to train mode\n", - "Epoch 8160: model parameters saved\n", - "Epoch 8161 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8161: avg_loss appended (2.7778)\n", - "Epoch 8161: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8161: accuracy appended (80.56%)\n", - "Epoch 8161: model set back to train mode\n", - "Epoch 8161: model parameters saved\n", - "Epoch 8162 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8162: avg_loss appended (2.7778)\n", - "Epoch 8162: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8162: accuracy appended (80.56%)\n", - "Epoch 8162: model set back to train mode\n", - "Epoch 8162: model parameters saved\n", - "Epoch 8163 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8163: avg_loss appended (2.7778)\n", - "Epoch 8163: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8163: accuracy appended (80.56%)\n", - "Epoch 8163: model set back to train mode\n", - "Epoch 8163: model parameters saved\n", - "Epoch 8164 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8164: avg_loss appended (2.7778)\n", - "Epoch 8164: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8164: accuracy appended (80.56%)\n", - "Epoch 8164: model set back to train mode\n", - "Epoch 8164: model parameters saved\n", - "Epoch 8165 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8165: avg_loss appended (2.7778)\n", - "Epoch 8165: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8165: accuracy appended (80.56%)\n", - "Epoch 8165: model set back to train mode\n", - "Epoch 8165: model parameters saved\n", - "Epoch 8166 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8166: avg_loss appended (2.7778)\n", - "Epoch 8166: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8166: accuracy appended (80.56%)\n", - "Epoch 8166: model set back to train mode\n", - "Epoch 8166: model parameters saved\n", - "Epoch 8167 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8167: avg_loss appended (2.7778)\n", - "Epoch 8167: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8167: accuracy appended (80.56%)\n", - "Epoch 8167: model set back to train mode\n", - "Epoch 8167: model parameters saved\n", - "Epoch 8168 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8168: avg_loss appended (2.7778)\n", - "Epoch 8168: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8168: accuracy appended (80.56%)\n", - "Epoch 8168: model set back to train mode\n", - "Epoch 8168: model parameters saved\n", - "Epoch 8169 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8169: avg_loss appended (2.7778)\n", - "Epoch 8169: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8169: accuracy appended (80.56%)\n", - "Epoch 8169: model set back to train mode\n", - "Epoch 8169: model parameters saved\n", - "Epoch 8170 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8170: avg_loss appended (2.7778)\n", - "Epoch 8170: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8170: accuracy appended (80.56%)\n", - "Epoch 8170: model set back to train mode\n", - "Epoch 8170: model parameters saved\n", - "Epoch 8171 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8171: avg_loss appended (2.7778)\n", - "Epoch 8171: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8171: accuracy appended (80.56%)\n", - "Epoch 8171: model set back to train mode\n", - "Epoch 8171: model parameters saved\n", - "Epoch 8172 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8172: avg_loss appended (2.7778)\n", - "Epoch 8172: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8172: accuracy appended (80.56%)\n", - "Epoch 8172: model set back to train mode\n", - "Epoch 8172: model parameters saved\n", - "Epoch 8173 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8173: avg_loss appended (2.7778)\n", - "Epoch 8173: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8173: accuracy appended (80.56%)\n", - "Epoch 8173: model set back to train mode\n", - "Epoch 8173: model parameters saved\n", - "Epoch 8174 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8174: avg_loss appended (2.7778)\n", - "Epoch 8174: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8174: accuracy appended (80.56%)\n", - "Epoch 8174: model set back to train mode\n", - "Epoch 8174: model parameters saved\n", - "Epoch 8175 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8175: avg_loss appended (2.7778)\n", - "Epoch 8175: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8175: accuracy appended (80.56%)\n", - "Epoch 8175: model set back to train mode\n", - "Epoch 8175: model parameters saved\n", - "Epoch 8176 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8176: avg_loss appended (2.7778)\n", - "Epoch 8176: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8176: accuracy appended (80.56%)\n", - "Epoch 8176: model set back to train mode\n", - "Epoch 8176: model parameters saved\n", - "Epoch 8177 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8177: avg_loss appended (2.7778)\n", - "Epoch 8177: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8177: accuracy appended (80.56%)\n", - "Epoch 8177: model set back to train mode\n", - "Epoch 8177: model parameters saved\n", - "Epoch 8178 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8178: avg_loss appended (2.7778)\n", - "Epoch 8178: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8178: accuracy appended (80.56%)\n", - "Epoch 8178: model set back to train mode\n", - "Epoch 8178: model parameters saved\n", - "Epoch 8179 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8179: avg_loss appended (2.7778)\n", - "Epoch 8179: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8179: accuracy appended (80.56%)\n", - "Epoch 8179: model set back to train mode\n", - "Epoch 8179: model parameters saved\n", - "Epoch 8180 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8180: avg_loss appended (2.7778)\n", - "Epoch 8180: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8180: accuracy appended (80.56%)\n", - "Epoch 8180: model set back to train mode\n", - "Epoch 8180: model parameters saved\n", - "Epoch 8181 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8181: avg_loss appended (2.7778)\n", - "Epoch 8181: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8181: accuracy appended (80.56%)\n", - "Epoch 8181: model set back to train mode\n", - "Epoch 8181: model parameters saved\n", - "Epoch 8182 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8182: avg_loss appended (2.7778)\n", - "Epoch 8182: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8182: accuracy appended (80.56%)\n", - "Epoch 8182: model set back to train mode\n", - "Epoch 8182: model parameters saved\n", - "Epoch 8183 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8183: avg_loss appended (2.7778)\n", - "Epoch 8183: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8183: accuracy appended (80.56%)\n", - "Epoch 8183: model set back to train mode\n", - "Epoch 8183: model parameters saved\n", - "Epoch 8184 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8184: avg_loss appended (2.7778)\n", - "Epoch 8184: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8184: accuracy appended (80.56%)\n", - "Epoch 8184: model set back to train mode\n", - "Epoch 8184: model parameters saved\n", - "Epoch 8185 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8185: avg_loss appended (2.7778)\n", - "Epoch 8185: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8185: accuracy appended (80.56%)\n", - "Epoch 8185: model set back to train mode\n", - "Epoch 8185: model parameters saved\n", - "Epoch 8186 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8186: avg_loss appended (2.7778)\n", - "Epoch 8186: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8186: accuracy appended (80.56%)\n", - "Epoch 8186: model set back to train mode\n", - "Epoch 8186: model parameters saved\n", - "Epoch 8187 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8187: avg_loss appended (2.7778)\n", - "Epoch 8187: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8187: accuracy appended (80.56%)\n", - "Epoch 8187: model set back to train mode\n", - "Epoch 8187: model parameters saved\n", - "Epoch 8188 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8188: avg_loss appended (2.7778)\n", - "Epoch 8188: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8188: accuracy appended (80.56%)\n", - "Epoch 8188: model set back to train mode\n", - "Epoch 8188: model parameters saved\n", - "Epoch 8189 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8189: avg_loss appended (2.7778)\n", - "Epoch 8189: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8189: accuracy appended (80.56%)\n", - "Epoch 8189: model set back to train mode\n", - "Epoch 8189: model parameters saved\n", - "Epoch 8190 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8190: avg_loss appended (2.7778)\n", - "Epoch 8190: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8190: accuracy appended (80.56%)\n", - "Epoch 8190: model set back to train mode\n", - "Epoch 8190: model parameters saved\n", - "Epoch 8191 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8191: avg_loss appended (2.7778)\n", - "Epoch 8191: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8191: accuracy appended (80.56%)\n", - "Epoch 8191: model set back to train mode\n", - "Epoch 8191: model parameters saved\n", - "Epoch 8192 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8192: avg_loss appended (2.7778)\n", - "Epoch 8192: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8192: accuracy appended (80.56%)\n", - "Epoch 8192: model set back to train mode\n", - "Epoch 8192: model parameters saved\n", - "Epoch 8193 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8193: avg_loss appended (2.7778)\n", - "Epoch 8193: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8193: accuracy appended (80.56%)\n", - "Epoch 8193: model set back to train mode\n", - "Epoch 8193: model parameters saved\n", - "Epoch 8194 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8194: avg_loss appended (2.7778)\n", - "Epoch 8194: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8194: accuracy appended (80.56%)\n", - "Epoch 8194: model set back to train mode\n", - "Epoch 8194: model parameters saved\n", - "Epoch 8195 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8195: avg_loss appended (2.7778)\n", - "Epoch 8195: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8195: accuracy appended (80.56%)\n", - "Epoch 8195: model set back to train mode\n", - "Epoch 8195: model parameters saved\n", - "Epoch 8196 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8196: avg_loss appended (2.7778)\n", - "Epoch 8196: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8196: accuracy appended (80.56%)\n", - "Epoch 8196: model set back to train mode\n", - "Epoch 8196: model parameters saved\n", - "Epoch 8197 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8197: avg_loss appended (2.7778)\n", - "Epoch 8197: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8197: accuracy appended (80.56%)\n", - "Epoch 8197: model set back to train mode\n", - "Epoch 8197: model parameters saved\n", - "Epoch 8198 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8198: avg_loss appended (2.7778)\n", - "Epoch 8198: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8198: accuracy appended (80.56%)\n", - "Epoch 8198: model set back to train mode\n", - "Epoch 8198: model parameters saved\n", - "Epoch 8199 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8199: avg_loss appended (2.7778)\n", - "Epoch 8199: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8199: accuracy appended (80.56%)\n", - "Epoch 8199: model set back to train mode\n", - "Epoch 8199: model parameters saved\n", - "Epoch 8200 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8200: avg_loss appended (2.7778)\n", - "Epoch 8200: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8200: accuracy appended (80.56%)\n", - "Epoch 8200: model set back to train mode\n", - "Epoch 8200: model parameters saved\n", - "Epoch 8200/10000, Loss: 2.7778, Accuracy: 80.56%\n", - "Epoch 8201 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8201: avg_loss appended (2.7778)\n", - "Epoch 8201: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8201: accuracy appended (83.33%)\n", - "Epoch 8201: model set back to train mode\n", - "Epoch 8201: model parameters saved\n", - "Epoch 8202 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8202: avg_loss appended (2.7778)\n", - "Epoch 8202: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8202: accuracy appended (83.33%)\n", - "Epoch 8202: model set back to train mode\n", - "Epoch 8202: model parameters saved\n", - "Epoch 8203 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8203: avg_loss appended (2.7778)\n", - "Epoch 8203: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8203: accuracy appended (80.56%)\n", - "Epoch 8203: model set back to train mode\n", - "Epoch 8203: model parameters saved\n", - "Epoch 8204 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8204: avg_loss appended (2.7778)\n", - "Epoch 8204: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8204: accuracy appended (80.56%)\n", - "Epoch 8204: model set back to train mode\n", - "Epoch 8204: model parameters saved\n", - "Epoch 8205 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8205: avg_loss appended (2.7778)\n", - "Epoch 8205: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8205: accuracy appended (80.56%)\n", - "Epoch 8205: model set back to train mode\n", - "Epoch 8205: model parameters saved\n", - "Epoch 8206 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8206: avg_loss appended (2.7778)\n", - "Epoch 8206: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8206: accuracy appended (83.33%)\n", - "Epoch 8206: model set back to train mode\n", - "Epoch 8206: model parameters saved\n", - "Epoch 8207 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8207: avg_loss appended (2.7778)\n", - "Epoch 8207: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8207: accuracy appended (80.56%)\n", - "Epoch 8207: model set back to train mode\n", - "Epoch 8207: model parameters saved\n", - "Epoch 8208 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8208: avg_loss appended (2.7778)\n", - "Epoch 8208: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8208: accuracy appended (80.56%)\n", - "Epoch 8208: model set back to train mode\n", - "Epoch 8208: model parameters saved\n", - "Epoch 8209 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8209: avg_loss appended (2.7778)\n", - "Epoch 8209: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8209: accuracy appended (80.56%)\n", - "Epoch 8209: model set back to train mode\n", - "Epoch 8209: model parameters saved\n", - "Epoch 8210 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8210: avg_loss appended (2.7778)\n", - "Epoch 8210: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8210: accuracy appended (80.56%)\n", - "Epoch 8210: model set back to train mode\n", - "Epoch 8210: model parameters saved\n", - "Epoch 8211 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8211: avg_loss appended (2.7778)\n", - "Epoch 8211: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8211: accuracy appended (80.56%)\n", - "Epoch 8211: model set back to train mode\n", - "Epoch 8211: model parameters saved\n", - "Epoch 8212 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8212: avg_loss appended (2.7778)\n", - "Epoch 8212: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8212: accuracy appended (80.56%)\n", - "Epoch 8212: model set back to train mode\n", - "Epoch 8212: model parameters saved\n", - "Epoch 8213 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8213: avg_loss appended (2.7778)\n", - "Epoch 8213: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8213: accuracy appended (80.56%)\n", - "Epoch 8213: model set back to train mode\n", - "Epoch 8213: model parameters saved\n", - "Epoch 8214 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8214: avg_loss appended (2.7778)\n", - "Epoch 8214: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8214: accuracy appended (80.56%)\n", - "Epoch 8214: model set back to train mode\n", - "Epoch 8214: model parameters saved\n", - "Epoch 8215 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8215: avg_loss appended (2.7778)\n", - "Epoch 8215: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8215: accuracy appended (80.56%)\n", - "Epoch 8215: model set back to train mode\n", - "Epoch 8215: model parameters saved\n", - "Epoch 8216 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8216: avg_loss appended (2.7778)\n", - "Epoch 8216: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8216: accuracy appended (80.56%)\n", - "Epoch 8216: model set back to train mode\n", - "Epoch 8216: model parameters saved\n", - "Epoch 8217 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8217: avg_loss appended (2.7778)\n", - "Epoch 8217: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8217: accuracy appended (83.33%)\n", - "Epoch 8217: model set back to train mode\n", - "Epoch 8217: model parameters saved\n", - "Epoch 8218 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8218: avg_loss appended (2.7778)\n", - "Epoch 8218: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8218: accuracy appended (80.56%)\n", - "Epoch 8218: model set back to train mode\n", - "Epoch 8218: model parameters saved\n", - "Epoch 8219 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8219: avg_loss appended (2.7778)\n", - "Epoch 8219: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8219: accuracy appended (80.56%)\n", - "Epoch 8219: model set back to train mode\n", - "Epoch 8219: model parameters saved\n", - "Epoch 8220 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8220: avg_loss appended (2.7778)\n", - "Epoch 8220: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8220: accuracy appended (80.56%)\n", - "Epoch 8220: model set back to train mode\n", - "Epoch 8220: model parameters saved\n", - "Epoch 8221 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8221: avg_loss appended (2.7778)\n", - "Epoch 8221: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8221: accuracy appended (83.33%)\n", - "Epoch 8221: model set back to train mode\n", - "Epoch 8221: model parameters saved\n", - "Epoch 8222 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8222: avg_loss appended (2.7778)\n", - "Epoch 8222: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8222: accuracy appended (80.56%)\n", - "Epoch 8222: model set back to train mode\n", - "Epoch 8222: model parameters saved\n", - "Epoch 8223 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8223: avg_loss appended (2.7778)\n", - "Epoch 8223: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8223: accuracy appended (80.56%)\n", - "Epoch 8223: model set back to train mode\n", - "Epoch 8223: model parameters saved\n", - "Epoch 8224 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8224: avg_loss appended (2.7778)\n", - "Epoch 8224: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8224: accuracy appended (80.56%)\n", - "Epoch 8224: model set back to train mode\n", - "Epoch 8224: model parameters saved\n", - "Epoch 8225 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8225: avg_loss appended (2.7778)\n", - "Epoch 8225: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8225: accuracy appended (80.56%)\n", - "Epoch 8225: model set back to train mode\n", - "Epoch 8225: model parameters saved\n", - "Epoch 8226 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8226: avg_loss appended (2.7778)\n", - "Epoch 8226: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8226: accuracy appended (83.33%)\n", - "Epoch 8226: model set back to train mode\n", - "Epoch 8226: model parameters saved\n", - "Epoch 8227 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8227: avg_loss appended (2.7778)\n", - "Epoch 8227: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8227: accuracy appended (80.56%)\n", - "Epoch 8227: model set back to train mode\n", - "Epoch 8227: model parameters saved\n", - "Epoch 8228 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8228: avg_loss appended (2.7778)\n", - "Epoch 8228: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8228: accuracy appended (83.33%)\n", - "Epoch 8228: model set back to train mode\n", - "Epoch 8228: model parameters saved\n", - "Epoch 8229 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8229: avg_loss appended (2.7778)\n", - "Epoch 8229: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8229: accuracy appended (80.56%)\n", - "Epoch 8229: model set back to train mode\n", - "Epoch 8229: model parameters saved\n", - "Epoch 8230 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8230: avg_loss appended (2.7778)\n", - "Epoch 8230: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8230: accuracy appended (80.56%)\n", - "Epoch 8230: model set back to train mode\n", - "Epoch 8230: model parameters saved\n", - "Epoch 8231 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8231: avg_loss appended (2.7778)\n", - "Epoch 8231: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8231: accuracy appended (80.56%)\n", - "Epoch 8231: model set back to train mode\n", - "Epoch 8231: model parameters saved\n", - "Epoch 8232 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8232: avg_loss appended (2.7778)\n", - "Epoch 8232: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8232: accuracy appended (80.56%)\n", - "Epoch 8232: model set back to train mode\n", - "Epoch 8232: model parameters saved\n", - "Epoch 8233 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8233: avg_loss appended (2.7778)\n", - "Epoch 8233: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8233: accuracy appended (80.56%)\n", - "Epoch 8233: model set back to train mode\n", - "Epoch 8233: model parameters saved\n", - "Epoch 8234 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8234: avg_loss appended (2.7778)\n", - "Epoch 8234: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8234: accuracy appended (83.33%)\n", - "Epoch 8234: model set back to train mode\n", - "Epoch 8234: model parameters saved\n", - "Epoch 8235 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8235: avg_loss appended (2.7778)\n", - "Epoch 8235: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8235: accuracy appended (80.56%)\n", - "Epoch 8235: model set back to train mode\n", - "Epoch 8235: model parameters saved\n", - "Epoch 8236 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8236: avg_loss appended (2.7778)\n", - "Epoch 8236: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8236: accuracy appended (80.56%)\n", - "Epoch 8236: model set back to train mode\n", - "Epoch 8236: model parameters saved\n", - "Epoch 8237 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8237: avg_loss appended (2.7778)\n", - "Epoch 8237: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8237: accuracy appended (80.56%)\n", - "Epoch 8237: model set back to train mode\n", - "Epoch 8237: model parameters saved\n", - "Epoch 8238 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8238: avg_loss appended (2.7778)\n", - "Epoch 8238: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8238: accuracy appended (80.56%)\n", - "Epoch 8238: model set back to train mode\n", - "Epoch 8238: model parameters saved\n", - "Epoch 8239 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8239: avg_loss appended (2.7778)\n", - "Epoch 8239: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8239: accuracy appended (80.56%)\n", - "Epoch 8239: model set back to train mode\n", - "Epoch 8239: model parameters saved\n", - "Epoch 8240 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8240: avg_loss appended (2.7778)\n", - "Epoch 8240: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8240: accuracy appended (80.56%)\n", - "Epoch 8240: model set back to train mode\n", - "Epoch 8240: model parameters saved\n", - "Epoch 8241 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8241: avg_loss appended (2.7778)\n", - "Epoch 8241: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8241: accuracy appended (80.56%)\n", - "Epoch 8241: model set back to train mode\n", - "Epoch 8241: model parameters saved\n", - "Epoch 8242 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8242: avg_loss appended (2.7778)\n", - "Epoch 8242: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8242: accuracy appended (80.56%)\n", - "Epoch 8242: model set back to train mode\n", - "Epoch 8242: model parameters saved\n", - "Epoch 8243 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8243: avg_loss appended (2.7778)\n", - "Epoch 8243: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8243: accuracy appended (83.33%)\n", - "Epoch 8243: model set back to train mode\n", - "Epoch 8243: model parameters saved\n", - "Epoch 8244 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8244: avg_loss appended (2.7778)\n", - "Epoch 8244: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8244: accuracy appended (86.11%)\n", - "Epoch 8244: model set back to train mode\n", - "Epoch 8244: model parameters saved\n", - "Epoch 8245 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8245: avg_loss appended (2.7778)\n", - "Epoch 8245: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8245: accuracy appended (80.56%)\n", - "Epoch 8245: model set back to train mode\n", - "Epoch 8245: model parameters saved\n", - "Epoch 8246 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8246: avg_loss appended (2.7778)\n", - "Epoch 8246: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8246: accuracy appended (80.56%)\n", - "Epoch 8246: model set back to train mode\n", - "Epoch 8246: model parameters saved\n", - "Epoch 8247 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8247: avg_loss appended (2.7778)\n", - "Epoch 8247: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8247: accuracy appended (83.33%)\n", - "Epoch 8247: model set back to train mode\n", - "Epoch 8247: model parameters saved\n", - "Epoch 8248 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8248: avg_loss appended (2.7778)\n", - "Epoch 8248: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8248: accuracy appended (80.56%)\n", - "Epoch 8248: model set back to train mode\n", - "Epoch 8248: model parameters saved\n", - "Epoch 8249 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8249: avg_loss appended (2.7778)\n", - "Epoch 8249: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8249: accuracy appended (83.33%)\n", - "Epoch 8249: model set back to train mode\n", - "Epoch 8249: model parameters saved\n", - "Epoch 8250 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8250: avg_loss appended (2.7778)\n", - "Epoch 8250: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8250: accuracy appended (80.56%)\n", - "Epoch 8250: model set back to train mode\n", - "Epoch 8250: model parameters saved\n", - "Epoch 8251 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8251: avg_loss appended (2.7778)\n", - "Epoch 8251: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8251: accuracy appended (83.33%)\n", - "Epoch 8251: model set back to train mode\n", - "Epoch 8251: model parameters saved\n", - "Epoch 8252 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8252: avg_loss appended (2.7778)\n", - "Epoch 8252: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8252: accuracy appended (80.56%)\n", - "Epoch 8252: model set back to train mode\n", - "Epoch 8252: model parameters saved\n", - "Epoch 8253 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8253: avg_loss appended (2.7778)\n", - "Epoch 8253: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8253: accuracy appended (80.56%)\n", - "Epoch 8253: model set back to train mode\n", - "Epoch 8253: model parameters saved\n", - "Epoch 8254 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8254: avg_loss appended (2.7778)\n", - "Epoch 8254: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8254: accuracy appended (80.56%)\n", - "Epoch 8254: model set back to train mode\n", - "Epoch 8254: model parameters saved\n", - "Epoch 8255 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8255: avg_loss appended (2.7778)\n", - "Epoch 8255: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8255: accuracy appended (80.56%)\n", - "Epoch 8255: model set back to train mode\n", - "Epoch 8255: model parameters saved\n", - "Epoch 8256 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8256: avg_loss appended (2.7778)\n", - "Epoch 8256: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8256: accuracy appended (80.56%)\n", - "Epoch 8256: model set back to train mode\n", - "Epoch 8256: model parameters saved\n", - "Epoch 8257 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8257: avg_loss appended (2.7778)\n", - "Epoch 8257: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8257: accuracy appended (80.56%)\n", - "Epoch 8257: model set back to train mode\n", - "Epoch 8257: model parameters saved\n", - "Epoch 8258 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8258: avg_loss appended (2.7778)\n", - "Epoch 8258: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8258: accuracy appended (83.33%)\n", - "Epoch 8258: model set back to train mode\n", - "Epoch 8258: model parameters saved\n", - "Epoch 8259 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8259: avg_loss appended (2.7778)\n", - "Epoch 8259: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8259: accuracy appended (80.56%)\n", - "Epoch 8259: model set back to train mode\n", - "Epoch 8259: model parameters saved\n", - "Epoch 8260 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8260: avg_loss appended (2.7778)\n", - "Epoch 8260: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8260: accuracy appended (83.33%)\n", - "Epoch 8260: model set back to train mode\n", - "Epoch 8260: model parameters saved\n", - "Epoch 8261 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8261: avg_loss appended (2.7778)\n", - "Epoch 8261: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8261: accuracy appended (80.56%)\n", - "Epoch 8261: model set back to train mode\n", - "Epoch 8261: model parameters saved\n", - "Epoch 8262 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8262: avg_loss appended (2.7778)\n", - "Epoch 8262: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8262: accuracy appended (80.56%)\n", - "Epoch 8262: model set back to train mode\n", - "Epoch 8262: model parameters saved\n", - "Epoch 8263 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8263: avg_loss appended (2.7778)\n", - "Epoch 8263: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8263: accuracy appended (83.33%)\n", - "Epoch 8263: model set back to train mode\n", - "Epoch 8263: model parameters saved\n", - "Epoch 8264 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8264: avg_loss appended (2.7778)\n", - "Epoch 8264: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8264: accuracy appended (83.33%)\n", - "Epoch 8264: model set back to train mode\n", - "Epoch 8264: model parameters saved\n", - "Epoch 8265 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8265: avg_loss appended (2.7778)\n", - "Epoch 8265: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8265: accuracy appended (83.33%)\n", - "Epoch 8265: model set back to train mode\n", - "Epoch 8265: model parameters saved\n", - "Epoch 8266 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8266: avg_loss appended (2.7778)\n", - "Epoch 8266: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8266: accuracy appended (83.33%)\n", - "Epoch 8266: model set back to train mode\n", - "Epoch 8266: model parameters saved\n", - "Epoch 8267 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8267: avg_loss appended (2.7778)\n", - "Epoch 8267: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8267: accuracy appended (83.33%)\n", - "Epoch 8267: model set back to train mode\n", - "Epoch 8267: model parameters saved\n", - "Epoch 8268 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8268: avg_loss appended (2.7778)\n", - "Epoch 8268: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8268: accuracy appended (83.33%)\n", - "Epoch 8268: model set back to train mode\n", - "Epoch 8268: model parameters saved\n", - "Epoch 8269 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8269: avg_loss appended (2.7778)\n", - "Epoch 8269: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8269: accuracy appended (83.33%)\n", - "Epoch 8269: model set back to train mode\n", - "Epoch 8269: model parameters saved\n", - "Epoch 8270 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8270: avg_loss appended (2.7778)\n", - "Epoch 8270: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8270: accuracy appended (83.33%)\n", - "Epoch 8270: model set back to train mode\n", - "Epoch 8270: model parameters saved\n", - "Epoch 8271 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8271: avg_loss appended (2.7778)\n", - "Epoch 8271: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8271: accuracy appended (83.33%)\n", - "Epoch 8271: model set back to train mode\n", - "Epoch 8271: model parameters saved\n", - "Epoch 8272 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8272: avg_loss appended (2.7778)\n", - "Epoch 8272: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8272: accuracy appended (83.33%)\n", - "Epoch 8272: model set back to train mode\n", - "Epoch 8272: model parameters saved\n", - "Epoch 8273 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8273: avg_loss appended (2.7778)\n", - "Epoch 8273: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8273: accuracy appended (80.56%)\n", - "Epoch 8273: model set back to train mode\n", - "Epoch 8273: model parameters saved\n", - "Epoch 8274 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8274: avg_loss appended (2.7778)\n", - "Epoch 8274: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8274: accuracy appended (80.56%)\n", - "Epoch 8274: model set back to train mode\n", - "Epoch 8274: model parameters saved\n", - "Epoch 8275 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8275: avg_loss appended (2.7778)\n", - "Epoch 8275: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8275: accuracy appended (80.56%)\n", - "Epoch 8275: model set back to train mode\n", - "Epoch 8275: model parameters saved\n", - "Epoch 8276 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8276: avg_loss appended (2.7778)\n", - "Epoch 8276: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8276: accuracy appended (80.56%)\n", - "Epoch 8276: model set back to train mode\n", - "Epoch 8276: model parameters saved\n", - "Epoch 8277 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8277: avg_loss appended (2.7778)\n", - "Epoch 8277: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8277: accuracy appended (83.33%)\n", - "Epoch 8277: model set back to train mode\n", - "Epoch 8277: model parameters saved\n", - "Epoch 8278 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8278: avg_loss appended (2.7778)\n", - "Epoch 8278: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8278: accuracy appended (80.56%)\n", - "Epoch 8278: model set back to train mode\n", - "Epoch 8278: model parameters saved\n", - "Epoch 8279 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8279: avg_loss appended (2.7778)\n", - "Epoch 8279: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8279: accuracy appended (83.33%)\n", - "Epoch 8279: model set back to train mode\n", - "Epoch 8279: model parameters saved\n", - "Epoch 8280 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8280: avg_loss appended (2.7778)\n", - "Epoch 8280: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8280: accuracy appended (80.56%)\n", - "Epoch 8280: model set back to train mode\n", - "Epoch 8280: model parameters saved\n", - "Epoch 8281 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8281: avg_loss appended (2.7778)\n", - "Epoch 8281: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8281: accuracy appended (80.56%)\n", - "Epoch 8281: model set back to train mode\n", - "Epoch 8281: model parameters saved\n", - "Epoch 8282 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8282: avg_loss appended (2.7778)\n", - "Epoch 8282: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8282: accuracy appended (80.56%)\n", - "Epoch 8282: model set back to train mode\n", - "Epoch 8282: model parameters saved\n", - "Epoch 8283 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8283: avg_loss appended (2.7778)\n", - "Epoch 8283: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8283: accuracy appended (80.56%)\n", - "Epoch 8283: model set back to train mode\n", - "Epoch 8283: model parameters saved\n", - "Epoch 8284 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8284: avg_loss appended (2.7778)\n", - "Epoch 8284: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8284: accuracy appended (83.33%)\n", - "Epoch 8284: model set back to train mode\n", - "Epoch 8284: model parameters saved\n", - "Epoch 8285 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8285: avg_loss appended (2.7778)\n", - "Epoch 8285: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8285: accuracy appended (83.33%)\n", - "Epoch 8285: model set back to train mode\n", - "Epoch 8285: model parameters saved\n", - "Epoch 8286 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8286: avg_loss appended (2.7778)\n", - "Epoch 8286: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8286: accuracy appended (83.33%)\n", - "Epoch 8286: model set back to train mode\n", - "Epoch 8286: model parameters saved\n", - "Epoch 8287 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8287: avg_loss appended (2.7778)\n", - "Epoch 8287: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8287: accuracy appended (83.33%)\n", - "Epoch 8287: model set back to train mode\n", - "Epoch 8287: model parameters saved\n", - "Epoch 8288 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8288: avg_loss appended (2.7778)\n", - "Epoch 8288: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8288: accuracy appended (83.33%)\n", - "Epoch 8288: model set back to train mode\n", - "Epoch 8288: model parameters saved\n", - "Epoch 8289 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8289: avg_loss appended (2.7778)\n", - "Epoch 8289: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8289: accuracy appended (83.33%)\n", - "Epoch 8289: model set back to train mode\n", - "Epoch 8289: model parameters saved\n", - "Epoch 8290 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8290: avg_loss appended (2.7778)\n", - "Epoch 8290: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8290: accuracy appended (83.33%)\n", - "Epoch 8290: model set back to train mode\n", - "Epoch 8290: model parameters saved\n", - "Epoch 8291 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8291: avg_loss appended (2.7778)\n", - "Epoch 8291: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8291: accuracy appended (83.33%)\n", - "Epoch 8291: model set back to train mode\n", - "Epoch 8291: model parameters saved\n", - "Epoch 8292 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8292: avg_loss appended (2.7778)\n", - "Epoch 8292: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8292: accuracy appended (80.56%)\n", - "Epoch 8292: model set back to train mode\n", - "Epoch 8292: model parameters saved\n", - "Epoch 8293 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8293: avg_loss appended (2.7778)\n", - "Epoch 8293: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8293: accuracy appended (83.33%)\n", - "Epoch 8293: model set back to train mode\n", - "Epoch 8293: model parameters saved\n", - "Epoch 8294 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8294: avg_loss appended (2.7778)\n", - "Epoch 8294: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8294: accuracy appended (80.56%)\n", - "Epoch 8294: model set back to train mode\n", - "Epoch 8294: model parameters saved\n", - "Epoch 8295 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8295: avg_loss appended (2.7778)\n", - "Epoch 8295: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8295: accuracy appended (83.33%)\n", - "Epoch 8295: model set back to train mode\n", - "Epoch 8295: model parameters saved\n", - "Epoch 8296 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8296: avg_loss appended (2.7778)\n", - "Epoch 8296: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8296: accuracy appended (83.33%)\n", - "Epoch 8296: model set back to train mode\n", - "Epoch 8296: model parameters saved\n", - "Epoch 8297 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8297: avg_loss appended (2.7778)\n", - "Epoch 8297: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8297: accuracy appended (83.33%)\n", - "Epoch 8297: model set back to train mode\n", - "Epoch 8297: model parameters saved\n", - "Epoch 8298 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8298: avg_loss appended (2.7778)\n", - "Epoch 8298: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8298: accuracy appended (83.33%)\n", - "Epoch 8298: model set back to train mode\n", - "Epoch 8298: model parameters saved\n", - "Epoch 8299 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8299: avg_loss appended (2.7778)\n", - "Epoch 8299: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8299: accuracy appended (83.33%)\n", - "Epoch 8299: model set back to train mode\n", - "Epoch 8299: model parameters saved\n", - "Epoch 8300 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8300: avg_loss appended (2.7778)\n", - "Epoch 8300: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8300: accuracy appended (83.33%)\n", - "Epoch 8300: model set back to train mode\n", - "Epoch 8300: model parameters saved\n", - "Epoch 8300/10000, Loss: 2.7778, Accuracy: 83.33%\n", - "Epoch 8301 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8301: avg_loss appended (2.7778)\n", - "Epoch 8301: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8301: accuracy appended (83.33%)\n", - "Epoch 8301: model set back to train mode\n", - "Epoch 8301: model parameters saved\n", - "Epoch 8302 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8302: avg_loss appended (2.7778)\n", - "Epoch 8302: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8302: accuracy appended (83.33%)\n", - "Epoch 8302: model set back to train mode\n", - "Epoch 8302: model parameters saved\n", - "Epoch 8303 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8303: avg_loss appended (2.7778)\n", - "Epoch 8303: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8303: accuracy appended (83.33%)\n", - "Epoch 8303: model set back to train mode\n", - "Epoch 8303: model parameters saved\n", - "Epoch 8304 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8304: avg_loss appended (2.7778)\n", - "Epoch 8304: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8304: accuracy appended (80.56%)\n", - "Epoch 8304: model set back to train mode\n", - "Epoch 8304: model parameters saved\n", - "Epoch 8305 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8305: avg_loss appended (2.7778)\n", - "Epoch 8305: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8305: accuracy appended (83.33%)\n", - "Epoch 8305: model set back to train mode\n", - "Epoch 8305: model parameters saved\n", - "Epoch 8306 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8306: avg_loss appended (2.7778)\n", - "Epoch 8306: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 80.56%\n", - "Epoch 8306: accuracy appended (80.56%)\n", - "Epoch 8306: model set back to train mode\n", - "Epoch 8306: model parameters saved\n", - "Epoch 8307 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8307: avg_loss appended (2.7778)\n", - "Epoch 8307: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8307: accuracy appended (83.33%)\n", - "Epoch 8307: model set back to train mode\n", - "Epoch 8307: model parameters saved\n", - "Epoch 8308 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8308: avg_loss appended (2.7778)\n", - "Epoch 8308: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8308: accuracy appended (83.33%)\n", - "Epoch 8308: model set back to train mode\n", - "Epoch 8308: model parameters saved\n", - "Epoch 8309 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8309: avg_loss appended (2.7778)\n", - "Epoch 8309: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8309: accuracy appended (83.33%)\n", - "Epoch 8309: model set back to train mode\n", - "Epoch 8309: model parameters saved\n", - "Epoch 8310 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8310: avg_loss appended (2.7778)\n", - "Epoch 8310: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8310: accuracy appended (83.33%)\n", - "Epoch 8310: model set back to train mode\n", - "Epoch 8310: model parameters saved\n", - "Epoch 8311 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8311: avg_loss appended (2.7778)\n", - "Epoch 8311: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8311: accuracy appended (83.33%)\n", - "Epoch 8311: model set back to train mode\n", - "Epoch 8311: model parameters saved\n", - "Epoch 8312 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8312: avg_loss appended (2.7778)\n", - "Epoch 8312: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8312: accuracy appended (83.33%)\n", - "Epoch 8312: model set back to train mode\n", - "Epoch 8312: model parameters saved\n", - "Epoch 8313 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8313: avg_loss appended (2.7778)\n", - "Epoch 8313: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8313: accuracy appended (83.33%)\n", - "Epoch 8313: model set back to train mode\n", - "Epoch 8313: model parameters saved\n", - "Epoch 8314 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8314: avg_loss appended (2.7778)\n", - "Epoch 8314: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8314: accuracy appended (83.33%)\n", - "Epoch 8314: model set back to train mode\n", - "Epoch 8314: model parameters saved\n", - "Epoch 8315 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8315: avg_loss appended (2.7778)\n", - "Epoch 8315: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8315: accuracy appended (83.33%)\n", - "Epoch 8315: model set back to train mode\n", - "Epoch 8315: model parameters saved\n", - "Epoch 8316 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8316: avg_loss appended (2.7778)\n", - "Epoch 8316: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8316: accuracy appended (83.33%)\n", - "Epoch 8316: model set back to train mode\n", - "Epoch 8316: model parameters saved\n", - "Epoch 8317 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8317: avg_loss appended (2.7778)\n", - "Epoch 8317: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8317: accuracy appended (83.33%)\n", - "Epoch 8317: model set back to train mode\n", - "Epoch 8317: model parameters saved\n", - "Epoch 8318 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8318: avg_loss appended (2.7778)\n", - "Epoch 8318: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8318: accuracy appended (83.33%)\n", - "Epoch 8318: model set back to train mode\n", - "Epoch 8318: model parameters saved\n", - "Epoch 8319 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8319: avg_loss appended (2.7778)\n", - "Epoch 8319: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8319: accuracy appended (83.33%)\n", - "Epoch 8319: model set back to train mode\n", - "Epoch 8319: model parameters saved\n", - "Epoch 8320 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8320: avg_loss appended (2.7778)\n", - "Epoch 8320: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8320: accuracy appended (83.33%)\n", - "Epoch 8320: model set back to train mode\n", - "Epoch 8320: model parameters saved\n", - "Epoch 8321 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8321: avg_loss appended (2.7778)\n", - "Epoch 8321: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8321: accuracy appended (83.33%)\n", - "Epoch 8321: model set back to train mode\n", - "Epoch 8321: model parameters saved\n", - "Epoch 8322 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8322: avg_loss appended (2.7778)\n", - "Epoch 8322: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8322: accuracy appended (83.33%)\n", - "Epoch 8322: model set back to train mode\n", - "Epoch 8322: model parameters saved\n", - "Epoch 8323 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8323: avg_loss appended (2.7778)\n", - "Epoch 8323: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8323: accuracy appended (83.33%)\n", - "Epoch 8323: model set back to train mode\n", - "Epoch 8323: model parameters saved\n", - "Epoch 8324 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8324: avg_loss appended (2.7778)\n", - "Epoch 8324: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8324: accuracy appended (83.33%)\n", - "Epoch 8324: model set back to train mode\n", - "Epoch 8324: model parameters saved\n", - "Epoch 8325 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8325: avg_loss appended (2.7778)\n", - "Epoch 8325: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8325: accuracy appended (83.33%)\n", - "Epoch 8325: model set back to train mode\n", - "Epoch 8325: model parameters saved\n", - "Epoch 8326 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8326: avg_loss appended (2.7778)\n", - "Epoch 8326: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8326: accuracy appended (83.33%)\n", - "Epoch 8326: model set back to train mode\n", - "Epoch 8326: model parameters saved\n", - "Epoch 8327 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8327: avg_loss appended (2.7778)\n", - "Epoch 8327: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8327: accuracy appended (83.33%)\n", - "Epoch 8327: model set back to train mode\n", - "Epoch 8327: model parameters saved\n", - "Epoch 8328 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8328: avg_loss appended (2.7778)\n", - "Epoch 8328: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8328: accuracy appended (83.33%)\n", - "Epoch 8328: model set back to train mode\n", - "Epoch 8328: model parameters saved\n", - "Epoch 8329 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8329: avg_loss appended (2.7778)\n", - "Epoch 8329: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8329: accuracy appended (83.33%)\n", - "Epoch 8329: model set back to train mode\n", - "Epoch 8329: model parameters saved\n", - "Epoch 8330 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8330: avg_loss appended (2.7778)\n", - "Epoch 8330: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8330: accuracy appended (83.33%)\n", - "Epoch 8330: model set back to train mode\n", - "Epoch 8330: model parameters saved\n", - "Epoch 8331 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8331: avg_loss appended (2.7778)\n", - "Epoch 8331: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8331: accuracy appended (83.33%)\n", - "Epoch 8331: model set back to train mode\n", - "Epoch 8331: model parameters saved\n", - "Epoch 8332 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8332: avg_loss appended (2.7778)\n", - "Epoch 8332: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8332: accuracy appended (86.11%)\n", - "Epoch 8332: model set back to train mode\n", - "Epoch 8332: model parameters saved\n", - "Epoch 8333 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8333: avg_loss appended (2.7778)\n", - "Epoch 8333: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8333: accuracy appended (86.11%)\n", - "Epoch 8333: model set back to train mode\n", - "Epoch 8333: model parameters saved\n", - "Epoch 8334 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8334: avg_loss appended (2.7778)\n", - "Epoch 8334: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8334: accuracy appended (83.33%)\n", - "Epoch 8334: model set back to train mode\n", - "Epoch 8334: model parameters saved\n", - "Epoch 8335 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8335: avg_loss appended (2.7778)\n", - "Epoch 8335: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8335: accuracy appended (83.33%)\n", - "Epoch 8335: model set back to train mode\n", - "Epoch 8335: model parameters saved\n", - "Epoch 8336 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8336: avg_loss appended (2.7778)\n", - "Epoch 8336: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8336: accuracy appended (83.33%)\n", - "Epoch 8336: model set back to train mode\n", - "Epoch 8336: model parameters saved\n", - "Epoch 8337 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8337: avg_loss appended (2.7778)\n", - "Epoch 8337: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8337: accuracy appended (83.33%)\n", - "Epoch 8337: model set back to train mode\n", - "Epoch 8337: model parameters saved\n", - "Epoch 8338 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8338: avg_loss appended (2.7778)\n", - "Epoch 8338: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8338: accuracy appended (83.33%)\n", - "Epoch 8338: model set back to train mode\n", - "Epoch 8338: model parameters saved\n", - "Epoch 8339 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8339: avg_loss appended (2.7778)\n", - "Epoch 8339: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8339: accuracy appended (83.33%)\n", - "Epoch 8339: model set back to train mode\n", - "Epoch 8339: model parameters saved\n", - "Epoch 8340 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8340: avg_loss appended (2.7778)\n", - "Epoch 8340: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8340: accuracy appended (83.33%)\n", - "Epoch 8340: model set back to train mode\n", - "Epoch 8340: model parameters saved\n", - "Epoch 8341 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8341: avg_loss appended (2.7778)\n", - "Epoch 8341: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8341: accuracy appended (83.33%)\n", - "Epoch 8341: model set back to train mode\n", - "Epoch 8341: model parameters saved\n", - "Epoch 8342 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8342: avg_loss appended (2.7778)\n", - "Epoch 8342: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8342: accuracy appended (83.33%)\n", - "Epoch 8342: model set back to train mode\n", - "Epoch 8342: model parameters saved\n", - "Epoch 8343 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8343: avg_loss appended (2.7778)\n", - "Epoch 8343: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8343: accuracy appended (83.33%)\n", - "Epoch 8343: model set back to train mode\n", - "Epoch 8343: model parameters saved\n", - "Epoch 8344 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8344: avg_loss appended (2.7778)\n", - "Epoch 8344: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8344: accuracy appended (83.33%)\n", - "Epoch 8344: model set back to train mode\n", - "Epoch 8344: model parameters saved\n", - "Epoch 8345 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8345: avg_loss appended (2.7778)\n", - "Epoch 8345: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8345: accuracy appended (83.33%)\n", - "Epoch 8345: model set back to train mode\n", - "Epoch 8345: model parameters saved\n", - "Epoch 8346 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8346: avg_loss appended (2.7778)\n", - "Epoch 8346: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8346: accuracy appended (83.33%)\n", - "Epoch 8346: model set back to train mode\n", - "Epoch 8346: model parameters saved\n", - "Epoch 8347 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8347: avg_loss appended (2.7778)\n", - "Epoch 8347: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8347: accuracy appended (83.33%)\n", - "Epoch 8347: model set back to train mode\n", - "Epoch 8347: model parameters saved\n", - "Epoch 8348 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8348: avg_loss appended (2.7778)\n", - "Epoch 8348: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8348: accuracy appended (83.33%)\n", - "Epoch 8348: model set back to train mode\n", - "Epoch 8348: model parameters saved\n", - "Epoch 8349 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8349: avg_loss appended (2.7778)\n", - "Epoch 8349: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8349: accuracy appended (83.33%)\n", - "Epoch 8349: model set back to train mode\n", - "Epoch 8349: model parameters saved\n", - "Epoch 8350 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8350: avg_loss appended (2.7778)\n", - "Epoch 8350: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8350: accuracy appended (83.33%)\n", - "Epoch 8350: model set back to train mode\n", - "Epoch 8350: model parameters saved\n", - "Epoch 8351 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8351: avg_loss appended (2.7778)\n", - "Epoch 8351: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8351: accuracy appended (83.33%)\n", - "Epoch 8351: model set back to train mode\n", - "Epoch 8351: model parameters saved\n", - "Epoch 8352 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8352: avg_loss appended (2.7778)\n", - "Epoch 8352: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8352: accuracy appended (83.33%)\n", - "Epoch 8352: model set back to train mode\n", - "Epoch 8352: model parameters saved\n", - "Epoch 8353 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8353: avg_loss appended (2.7778)\n", - "Epoch 8353: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8353: accuracy appended (83.33%)\n", - "Epoch 8353: model set back to train mode\n", - "Epoch 8353: model parameters saved\n", - "Epoch 8354 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8354: avg_loss appended (2.7778)\n", - "Epoch 8354: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8354: accuracy appended (83.33%)\n", - "Epoch 8354: model set back to train mode\n", - "Epoch 8354: model parameters saved\n", - "Epoch 8355 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8355: avg_loss appended (2.7778)\n", - "Epoch 8355: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8355: accuracy appended (83.33%)\n", - "Epoch 8355: model set back to train mode\n", - "Epoch 8355: model parameters saved\n", - "Epoch 8356 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8356: avg_loss appended (2.7778)\n", - "Epoch 8356: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8356: accuracy appended (83.33%)\n", - "Epoch 8356: model set back to train mode\n", - "Epoch 8356: model parameters saved\n", - "Epoch 8357 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8357: avg_loss appended (2.7778)\n", - "Epoch 8357: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8357: accuracy appended (83.33%)\n", - "Epoch 8357: model set back to train mode\n", - "Epoch 8357: model parameters saved\n", - "Epoch 8358 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8358: avg_loss appended (2.7778)\n", - "Epoch 8358: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8358: accuracy appended (83.33%)\n", - "Epoch 8358: model set back to train mode\n", - "Epoch 8358: model parameters saved\n", - "Epoch 8359 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8359: avg_loss appended (2.7778)\n", - "Epoch 8359: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8359: accuracy appended (83.33%)\n", - "Epoch 8359: model set back to train mode\n", - "Epoch 8359: model parameters saved\n", - "Epoch 8360 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8360: avg_loss appended (2.7778)\n", - "Epoch 8360: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8360: accuracy appended (83.33%)\n", - "Epoch 8360: model set back to train mode\n", - "Epoch 8360: model parameters saved\n", - "Epoch 8361 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8361: avg_loss appended (2.7778)\n", - "Epoch 8361: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8361: accuracy appended (83.33%)\n", - "Epoch 8361: model set back to train mode\n", - "Epoch 8361: model parameters saved\n", - "Epoch 8362 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8362: avg_loss appended (2.7778)\n", - "Epoch 8362: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8362: accuracy appended (83.33%)\n", - "Epoch 8362: model set back to train mode\n", - "Epoch 8362: model parameters saved\n", - "Epoch 8363 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8363: avg_loss appended (2.7778)\n", - "Epoch 8363: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8363: accuracy appended (83.33%)\n", - "Epoch 8363: model set back to train mode\n", - "Epoch 8363: model parameters saved\n", - "Epoch 8364 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8364: avg_loss appended (2.7778)\n", - "Epoch 8364: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8364: accuracy appended (83.33%)\n", - "Epoch 8364: model set back to train mode\n", - "Epoch 8364: model parameters saved\n", - "Epoch 8365 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8365: avg_loss appended (2.7778)\n", - "Epoch 8365: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8365: accuracy appended (83.33%)\n", - "Epoch 8365: model set back to train mode\n", - "Epoch 8365: model parameters saved\n", - "Epoch 8366 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8366: avg_loss appended (2.7778)\n", - "Epoch 8366: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8366: accuracy appended (83.33%)\n", - "Epoch 8366: model set back to train mode\n", - "Epoch 8366: model parameters saved\n", - "Epoch 8367 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8367: avg_loss appended (2.7778)\n", - "Epoch 8367: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8367: accuracy appended (83.33%)\n", - "Epoch 8367: model set back to train mode\n", - "Epoch 8367: model parameters saved\n", - "Epoch 8368 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8368: avg_loss appended (2.7778)\n", - "Epoch 8368: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8368: accuracy appended (86.11%)\n", - "Epoch 8368: model set back to train mode\n", - "Epoch 8368: model parameters saved\n", - "Epoch 8369 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8369: avg_loss appended (2.7778)\n", - "Epoch 8369: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8369: accuracy appended (83.33%)\n", - "Epoch 8369: model set back to train mode\n", - "Epoch 8369: model parameters saved\n", - "Epoch 8370 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8370: avg_loss appended (2.7778)\n", - "Epoch 8370: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8370: accuracy appended (83.33%)\n", - "Epoch 8370: model set back to train mode\n", - "Epoch 8370: model parameters saved\n", - "Epoch 8371 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8371: avg_loss appended (2.7778)\n", - "Epoch 8371: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8371: accuracy appended (83.33%)\n", - "Epoch 8371: model set back to train mode\n", - "Epoch 8371: model parameters saved\n", - "Epoch 8372 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8372: avg_loss appended (2.7778)\n", - "Epoch 8372: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8372: accuracy appended (83.33%)\n", - "Epoch 8372: model set back to train mode\n", - "Epoch 8372: model parameters saved\n", - "Epoch 8373 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8373: avg_loss appended (2.7778)\n", - "Epoch 8373: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8373: accuracy appended (83.33%)\n", - "Epoch 8373: model set back to train mode\n", - "Epoch 8373: model parameters saved\n", - "Epoch 8374 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8374: avg_loss appended (2.7778)\n", - "Epoch 8374: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8374: accuracy appended (83.33%)\n", - "Epoch 8374: model set back to train mode\n", - "Epoch 8374: model parameters saved\n", - "Epoch 8375 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8375: avg_loss appended (2.7778)\n", - "Epoch 8375: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8375: accuracy appended (83.33%)\n", - "Epoch 8375: model set back to train mode\n", - "Epoch 8375: model parameters saved\n", - "Epoch 8376 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8376: avg_loss appended (2.7778)\n", - "Epoch 8376: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8376: accuracy appended (83.33%)\n", - "Epoch 8376: model set back to train mode\n", - "Epoch 8376: model parameters saved\n", - "Epoch 8377 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8377: avg_loss appended (2.7778)\n", - "Epoch 8377: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8377: accuracy appended (83.33%)\n", - "Epoch 8377: model set back to train mode\n", - "Epoch 8377: model parameters saved\n", - "Epoch 8378 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8378: avg_loss appended (2.7778)\n", - "Epoch 8378: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8378: accuracy appended (83.33%)\n", - "Epoch 8378: model set back to train mode\n", - "Epoch 8378: model parameters saved\n", - "Epoch 8379 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8379: avg_loss appended (2.7778)\n", - "Epoch 8379: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8379: accuracy appended (83.33%)\n", - "Epoch 8379: model set back to train mode\n", - "Epoch 8379: model parameters saved\n", - "Epoch 8380 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8380: avg_loss appended (2.7778)\n", - "Epoch 8380: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8380: accuracy appended (83.33%)\n", - "Epoch 8380: model set back to train mode\n", - "Epoch 8380: model parameters saved\n", - "Epoch 8381 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8381: avg_loss appended (2.7778)\n", - "Epoch 8381: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8381: accuracy appended (83.33%)\n", - "Epoch 8381: model set back to train mode\n", - "Epoch 8381: model parameters saved\n", - "Epoch 8382 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8382: avg_loss appended (2.7778)\n", - "Epoch 8382: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8382: accuracy appended (83.33%)\n", - "Epoch 8382: model set back to train mode\n", - "Epoch 8382: model parameters saved\n", - "Epoch 8383 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8383: avg_loss appended (2.7778)\n", - "Epoch 8383: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8383: accuracy appended (83.33%)\n", - "Epoch 8383: model set back to train mode\n", - "Epoch 8383: model parameters saved\n", - "Epoch 8384 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8384: avg_loss appended (2.7778)\n", - "Epoch 8384: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8384: accuracy appended (83.33%)\n", - "Epoch 8384: model set back to train mode\n", - "Epoch 8384: model parameters saved\n", - "Epoch 8385 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8385: avg_loss appended (2.7778)\n", - "Epoch 8385: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8385: accuracy appended (83.33%)\n", - "Epoch 8385: model set back to train mode\n", - "Epoch 8385: model parameters saved\n", - "Epoch 8386 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8386: avg_loss appended (2.7778)\n", - "Epoch 8386: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8386: accuracy appended (83.33%)\n", - "Epoch 8386: model set back to train mode\n", - "Epoch 8386: model parameters saved\n", - "Epoch 8387 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8387: avg_loss appended (2.7778)\n", - "Epoch 8387: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8387: accuracy appended (86.11%)\n", - "Epoch 8387: model set back to train mode\n", - "Epoch 8387: model parameters saved\n", - "Epoch 8388 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8388: avg_loss appended (2.7778)\n", - "Epoch 8388: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8388: accuracy appended (83.33%)\n", - "Epoch 8388: model set back to train mode\n", - "Epoch 8388: model parameters saved\n", - "Epoch 8389 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8389: avg_loss appended (2.7778)\n", - "Epoch 8389: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8389: accuracy appended (83.33%)\n", - "Epoch 8389: model set back to train mode\n", - "Epoch 8389: model parameters saved\n", - "Epoch 8390 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8390: avg_loss appended (2.7778)\n", - "Epoch 8390: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8390: accuracy appended (83.33%)\n", - "Epoch 8390: model set back to train mode\n", - "Epoch 8390: model parameters saved\n", - "Epoch 8391 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8391: avg_loss appended (2.7778)\n", - "Epoch 8391: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8391: accuracy appended (83.33%)\n", - "Epoch 8391: model set back to train mode\n", - "Epoch 8391: model parameters saved\n", - "Epoch 8392 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8392: avg_loss appended (2.7778)\n", - "Epoch 8392: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8392: accuracy appended (83.33%)\n", - "Epoch 8392: model set back to train mode\n", - "Epoch 8392: model parameters saved\n", - "Epoch 8393 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8393: avg_loss appended (2.7778)\n", - "Epoch 8393: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8393: accuracy appended (83.33%)\n", - "Epoch 8393: model set back to train mode\n", - "Epoch 8393: model parameters saved\n", - "Epoch 8394 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8394: avg_loss appended (2.7778)\n", - "Epoch 8394: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8394: accuracy appended (83.33%)\n", - "Epoch 8394: model set back to train mode\n", - "Epoch 8394: model parameters saved\n", - "Epoch 8395 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8395: avg_loss appended (2.7778)\n", - "Epoch 8395: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8395: accuracy appended (83.33%)\n", - "Epoch 8395: model set back to train mode\n", - "Epoch 8395: model parameters saved\n", - "Epoch 8396 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8396: avg_loss appended (2.7778)\n", - "Epoch 8396: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8396: accuracy appended (83.33%)\n", - "Epoch 8396: model set back to train mode\n", - "Epoch 8396: model parameters saved\n", - "Epoch 8397 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8397: avg_loss appended (2.7778)\n", - "Epoch 8397: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8397: accuracy appended (83.33%)\n", - "Epoch 8397: model set back to train mode\n", - "Epoch 8397: model parameters saved\n", - "Epoch 8398 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8398: avg_loss appended (2.7778)\n", - "Epoch 8398: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8398: accuracy appended (83.33%)\n", - "Epoch 8398: model set back to train mode\n", - "Epoch 8398: model parameters saved\n", - "Epoch 8399 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8399: avg_loss appended (2.7778)\n", - "Epoch 8399: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8399: accuracy appended (83.33%)\n", - "Epoch 8399: model set back to train mode\n", - "Epoch 8399: model parameters saved\n", - "Epoch 8400 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8400: avg_loss appended (2.7778)\n", - "Epoch 8400: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8400: accuracy appended (83.33%)\n", - "Epoch 8400: model set back to train mode\n", - "Epoch 8400: model parameters saved\n", - "Epoch 8400/10000, Loss: 2.7778, Accuracy: 83.33%\n", - "Epoch 8401 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8401: avg_loss appended (2.7778)\n", - "Epoch 8401: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8401: accuracy appended (83.33%)\n", - "Epoch 8401: model set back to train mode\n", - "Epoch 8401: model parameters saved\n", - "Epoch 8402 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8402: avg_loss appended (2.7778)\n", - "Epoch 8402: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8402: accuracy appended (83.33%)\n", - "Epoch 8402: model set back to train mode\n", - "Epoch 8402: model parameters saved\n", - "Epoch 8403 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8403: avg_loss appended (2.7778)\n", - "Epoch 8403: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8403: accuracy appended (83.33%)\n", - "Epoch 8403: model set back to train mode\n", - "Epoch 8403: model parameters saved\n", - "Epoch 8404 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8404: avg_loss appended (2.7778)\n", - "Epoch 8404: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8404: accuracy appended (83.33%)\n", - "Epoch 8404: model set back to train mode\n", - "Epoch 8404: model parameters saved\n", - "Epoch 8405 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8405: avg_loss appended (2.7778)\n", - "Epoch 8405: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8405: accuracy appended (83.33%)\n", - "Epoch 8405: model set back to train mode\n", - "Epoch 8405: model parameters saved\n", - "Epoch 8406 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8406: avg_loss appended (2.7778)\n", - "Epoch 8406: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8406: accuracy appended (83.33%)\n", - "Epoch 8406: model set back to train mode\n", - "Epoch 8406: model parameters saved\n", - "Epoch 8407 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8407: avg_loss appended (2.7778)\n", - "Epoch 8407: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8407: accuracy appended (83.33%)\n", - "Epoch 8407: model set back to train mode\n", - "Epoch 8407: model parameters saved\n", - "Epoch 8408 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8408: avg_loss appended (2.7778)\n", - "Epoch 8408: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8408: accuracy appended (83.33%)\n", - "Epoch 8408: model set back to train mode\n", - "Epoch 8408: model parameters saved\n", - "Epoch 8409 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8409: avg_loss appended (2.7778)\n", - "Epoch 8409: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8409: accuracy appended (83.33%)\n", - "Epoch 8409: model set back to train mode\n", - "Epoch 8409: model parameters saved\n", - "Epoch 8410 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8410: avg_loss appended (2.7778)\n", - "Epoch 8410: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8410: accuracy appended (83.33%)\n", - "Epoch 8410: model set back to train mode\n", - "Epoch 8410: model parameters saved\n", - "Epoch 8411 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8411: avg_loss appended (2.7778)\n", - "Epoch 8411: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8411: accuracy appended (83.33%)\n", - "Epoch 8411: model set back to train mode\n", - "Epoch 8411: model parameters saved\n", - "Epoch 8412 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8412: avg_loss appended (2.7778)\n", - "Epoch 8412: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8412: accuracy appended (83.33%)\n", - "Epoch 8412: model set back to train mode\n", - "Epoch 8412: model parameters saved\n", - "Epoch 8413 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8413: avg_loss appended (2.7778)\n", - "Epoch 8413: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8413: accuracy appended (83.33%)\n", - "Epoch 8413: model set back to train mode\n", - "Epoch 8413: model parameters saved\n", - "Epoch 8414 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8414: avg_loss appended (2.7778)\n", - "Epoch 8414: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8414: accuracy appended (83.33%)\n", - "Epoch 8414: model set back to train mode\n", - "Epoch 8414: model parameters saved\n", - "Epoch 8415 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8415: avg_loss appended (2.7778)\n", - "Epoch 8415: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8415: accuracy appended (86.11%)\n", - "Epoch 8415: model set back to train mode\n", - "Epoch 8415: model parameters saved\n", - "Epoch 8416 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8416: avg_loss appended (2.7778)\n", - "Epoch 8416: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8416: accuracy appended (83.33%)\n", - "Epoch 8416: model set back to train mode\n", - "Epoch 8416: model parameters saved\n", - "Epoch 8417 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8417: avg_loss appended (2.7778)\n", - "Epoch 8417: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8417: accuracy appended (83.33%)\n", - "Epoch 8417: model set back to train mode\n", - "Epoch 8417: model parameters saved\n", - "Epoch 8418 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8418: avg_loss appended (2.7778)\n", - "Epoch 8418: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8418: accuracy appended (83.33%)\n", - "Epoch 8418: model set back to train mode\n", - "Epoch 8418: model parameters saved\n", - "Epoch 8419 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8419: avg_loss appended (2.7778)\n", - "Epoch 8419: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8419: accuracy appended (83.33%)\n", - "Epoch 8419: model set back to train mode\n", - "Epoch 8419: model parameters saved\n", - "Epoch 8420 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8420: avg_loss appended (2.7778)\n", - "Epoch 8420: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8420: accuracy appended (83.33%)\n", - "Epoch 8420: model set back to train mode\n", - "Epoch 8420: model parameters saved\n", - "Epoch 8421 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8421: avg_loss appended (2.7778)\n", - "Epoch 8421: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8421: accuracy appended (83.33%)\n", - "Epoch 8421: model set back to train mode\n", - "Epoch 8421: model parameters saved\n", - "Epoch 8422 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8422: avg_loss appended (2.7778)\n", - "Epoch 8422: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8422: accuracy appended (83.33%)\n", - "Epoch 8422: model set back to train mode\n", - "Epoch 8422: model parameters saved\n", - "Epoch 8423 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8423: avg_loss appended (2.7778)\n", - "Epoch 8423: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8423: accuracy appended (86.11%)\n", - "Epoch 8423: model set back to train mode\n", - "Epoch 8423: model parameters saved\n", - "Epoch 8424 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8424: avg_loss appended (2.7778)\n", - "Epoch 8424: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8424: accuracy appended (83.33%)\n", - "Epoch 8424: model set back to train mode\n", - "Epoch 8424: model parameters saved\n", - "Epoch 8425 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8425: avg_loss appended (2.7778)\n", - "Epoch 8425: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8425: accuracy appended (83.33%)\n", - "Epoch 8425: model set back to train mode\n", - "Epoch 8425: model parameters saved\n", - "Epoch 8426 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8426: avg_loss appended (2.7778)\n", - "Epoch 8426: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8426: accuracy appended (83.33%)\n", - "Epoch 8426: model set back to train mode\n", - "Epoch 8426: model parameters saved\n", - "Epoch 8427 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8427: avg_loss appended (2.7778)\n", - "Epoch 8427: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8427: accuracy appended (83.33%)\n", - "Epoch 8427: model set back to train mode\n", - "Epoch 8427: model parameters saved\n", - "Epoch 8428 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8428: avg_loss appended (2.7778)\n", - "Epoch 8428: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8428: accuracy appended (83.33%)\n", - "Epoch 8428: model set back to train mode\n", - "Epoch 8428: model parameters saved\n", - "Epoch 8429 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8429: avg_loss appended (2.7778)\n", - "Epoch 8429: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8429: accuracy appended (83.33%)\n", - "Epoch 8429: model set back to train mode\n", - "Epoch 8429: model parameters saved\n", - "Epoch 8430 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8430: avg_loss appended (2.7778)\n", - "Epoch 8430: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8430: accuracy appended (83.33%)\n", - "Epoch 8430: model set back to train mode\n", - "Epoch 8430: model parameters saved\n", - "Epoch 8431 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8431: avg_loss appended (2.7778)\n", - "Epoch 8431: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8431: accuracy appended (83.33%)\n", - "Epoch 8431: model set back to train mode\n", - "Epoch 8431: model parameters saved\n", - "Epoch 8432 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8432: avg_loss appended (2.7778)\n", - "Epoch 8432: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8432: accuracy appended (83.33%)\n", - "Epoch 8432: model set back to train mode\n", - "Epoch 8432: model parameters saved\n", - "Epoch 8433 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8433: avg_loss appended (2.7778)\n", - "Epoch 8433: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8433: accuracy appended (83.33%)\n", - "Epoch 8433: model set back to train mode\n", - "Epoch 8433: model parameters saved\n", - "Epoch 8434 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8434: avg_loss appended (2.7778)\n", - "Epoch 8434: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8434: accuracy appended (83.33%)\n", - "Epoch 8434: model set back to train mode\n", - "Epoch 8434: model parameters saved\n", - "Epoch 8435 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8435: avg_loss appended (2.7778)\n", - "Epoch 8435: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8435: accuracy appended (83.33%)\n", - "Epoch 8435: model set back to train mode\n", - "Epoch 8435: model parameters saved\n", - "Epoch 8436 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8436: avg_loss appended (2.7778)\n", - "Epoch 8436: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8436: accuracy appended (83.33%)\n", - "Epoch 8436: model set back to train mode\n", - "Epoch 8436: model parameters saved\n", - "Epoch 8437 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8437: avg_loss appended (2.7778)\n", - "Epoch 8437: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8437: accuracy appended (83.33%)\n", - "Epoch 8437: model set back to train mode\n", - "Epoch 8437: model parameters saved\n", - "Epoch 8438 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8438: avg_loss appended (2.7778)\n", - "Epoch 8438: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8438: accuracy appended (83.33%)\n", - "Epoch 8438: model set back to train mode\n", - "Epoch 8438: model parameters saved\n", - "Epoch 8439 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8439: avg_loss appended (2.7778)\n", - "Epoch 8439: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8439: accuracy appended (83.33%)\n", - "Epoch 8439: model set back to train mode\n", - "Epoch 8439: model parameters saved\n", - "Epoch 8440 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8440: avg_loss appended (2.7778)\n", - "Epoch 8440: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8440: accuracy appended (83.33%)\n", - "Epoch 8440: model set back to train mode\n", - "Epoch 8440: model parameters saved\n", - "Epoch 8441 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8441: avg_loss appended (2.7778)\n", - "Epoch 8441: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8441: accuracy appended (83.33%)\n", - "Epoch 8441: model set back to train mode\n", - "Epoch 8441: model parameters saved\n", - "Epoch 8442 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8442: avg_loss appended (2.7778)\n", - "Epoch 8442: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8442: accuracy appended (83.33%)\n", - "Epoch 8442: model set back to train mode\n", - "Epoch 8442: model parameters saved\n", - "Epoch 8443 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8443: avg_loss appended (2.7778)\n", - "Epoch 8443: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8443: accuracy appended (83.33%)\n", - "Epoch 8443: model set back to train mode\n", - "Epoch 8443: model parameters saved\n", - "Epoch 8444 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8444: avg_loss appended (2.7778)\n", - "Epoch 8444: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8444: accuracy appended (86.11%)\n", - "Epoch 8444: model set back to train mode\n", - "Epoch 8444: model parameters saved\n", - "Epoch 8445 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8445: avg_loss appended (2.7778)\n", - "Epoch 8445: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8445: accuracy appended (83.33%)\n", - "Epoch 8445: model set back to train mode\n", - "Epoch 8445: model parameters saved\n", - "Epoch 8446 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8446: avg_loss appended (2.7778)\n", - "Epoch 8446: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8446: accuracy appended (83.33%)\n", - "Epoch 8446: model set back to train mode\n", - "Epoch 8446: model parameters saved\n", - "Epoch 8447 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8447: avg_loss appended (2.7778)\n", - "Epoch 8447: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8447: accuracy appended (83.33%)\n", - "Epoch 8447: model set back to train mode\n", - "Epoch 8447: model parameters saved\n", - "Epoch 8448 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8448: avg_loss appended (2.7778)\n", - "Epoch 8448: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8448: accuracy appended (83.33%)\n", - "Epoch 8448: model set back to train mode\n", - "Epoch 8448: model parameters saved\n", - "Epoch 8449 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8449: avg_loss appended (2.7778)\n", - "Epoch 8449: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8449: accuracy appended (83.33%)\n", - "Epoch 8449: model set back to train mode\n", - "Epoch 8449: model parameters saved\n", - "Epoch 8450 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8450: avg_loss appended (2.7778)\n", - "Epoch 8450: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8450: accuracy appended (86.11%)\n", - "Epoch 8450: model set back to train mode\n", - "Epoch 8450: model parameters saved\n", - "Epoch 8451 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8451: avg_loss appended (2.7778)\n", - "Epoch 8451: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8451: accuracy appended (83.33%)\n", - "Epoch 8451: model set back to train mode\n", - "Epoch 8451: model parameters saved\n", - "Epoch 8452 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8452: avg_loss appended (2.7778)\n", - "Epoch 8452: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8452: accuracy appended (83.33%)\n", - "Epoch 8452: model set back to train mode\n", - "Epoch 8452: model parameters saved\n", - "Epoch 8453 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8453: avg_loss appended (2.7778)\n", - "Epoch 8453: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8453: accuracy appended (83.33%)\n", - "Epoch 8453: model set back to train mode\n", - "Epoch 8453: model parameters saved\n", - "Epoch 8454 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8454: avg_loss appended (2.7778)\n", - "Epoch 8454: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8454: accuracy appended (83.33%)\n", - "Epoch 8454: model set back to train mode\n", - "Epoch 8454: model parameters saved\n", - "Epoch 8455 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8455: avg_loss appended (2.7778)\n", - "Epoch 8455: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8455: accuracy appended (83.33%)\n", - "Epoch 8455: model set back to train mode\n", - "Epoch 8455: model parameters saved\n", - "Epoch 8456 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8456: avg_loss appended (2.7778)\n", - "Epoch 8456: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8456: accuracy appended (83.33%)\n", - "Epoch 8456: model set back to train mode\n", - "Epoch 8456: model parameters saved\n", - "Epoch 8457 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8457: avg_loss appended (2.7778)\n", - "Epoch 8457: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8457: accuracy appended (83.33%)\n", - "Epoch 8457: model set back to train mode\n", - "Epoch 8457: model parameters saved\n", - "Epoch 8458 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8458: avg_loss appended (2.7778)\n", - "Epoch 8458: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8458: accuracy appended (83.33%)\n", - "Epoch 8458: model set back to train mode\n", - "Epoch 8458: model parameters saved\n", - "Epoch 8459 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8459: avg_loss appended (2.7778)\n", - "Epoch 8459: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8459: accuracy appended (83.33%)\n", - "Epoch 8459: model set back to train mode\n", - "Epoch 8459: model parameters saved\n", - "Epoch 8460 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8460: avg_loss appended (2.7778)\n", - "Epoch 8460: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8460: accuracy appended (86.11%)\n", - "Epoch 8460: model set back to train mode\n", - "Epoch 8460: model parameters saved\n", - "Epoch 8461 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8461: avg_loss appended (2.7778)\n", - "Epoch 8461: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8461: accuracy appended (83.33%)\n", - "Epoch 8461: model set back to train mode\n", - "Epoch 8461: model parameters saved\n", - "Epoch 8462 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8462: avg_loss appended (2.7778)\n", - "Epoch 8462: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8462: accuracy appended (83.33%)\n", - "Epoch 8462: model set back to train mode\n", - "Epoch 8462: model parameters saved\n", - "Epoch 8463 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8463: avg_loss appended (2.7778)\n", - "Epoch 8463: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8463: accuracy appended (83.33%)\n", - "Epoch 8463: model set back to train mode\n", - "Epoch 8463: model parameters saved\n", - "Epoch 8464 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8464: avg_loss appended (2.7778)\n", - "Epoch 8464: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8464: accuracy appended (83.33%)\n", - "Epoch 8464: model set back to train mode\n", - "Epoch 8464: model parameters saved\n", - "Epoch 8465 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8465: avg_loss appended (2.7778)\n", - "Epoch 8465: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8465: accuracy appended (83.33%)\n", - "Epoch 8465: model set back to train mode\n", - "Epoch 8465: model parameters saved\n", - "Epoch 8466 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8466: avg_loss appended (2.7778)\n", - "Epoch 8466: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8466: accuracy appended (83.33%)\n", - "Epoch 8466: model set back to train mode\n", - "Epoch 8466: model parameters saved\n", - "Epoch 8467 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8467: avg_loss appended (2.7778)\n", - "Epoch 8467: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8467: accuracy appended (83.33%)\n", - "Epoch 8467: model set back to train mode\n", - "Epoch 8467: model parameters saved\n", - "Epoch 8468 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8468: avg_loss appended (2.7778)\n", - "Epoch 8468: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8468: accuracy appended (83.33%)\n", - "Epoch 8468: model set back to train mode\n", - "Epoch 8468: model parameters saved\n", - "Epoch 8469 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8469: avg_loss appended (2.7778)\n", - "Epoch 8469: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8469: accuracy appended (83.33%)\n", - "Epoch 8469: model set back to train mode\n", - "Epoch 8469: model parameters saved\n", - "Epoch 8470 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8470: avg_loss appended (2.7778)\n", - "Epoch 8470: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8470: accuracy appended (83.33%)\n", - "Epoch 8470: model set back to train mode\n", - "Epoch 8470: model parameters saved\n", - "Epoch 8471 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8471: avg_loss appended (2.7778)\n", - "Epoch 8471: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8471: accuracy appended (83.33%)\n", - "Epoch 8471: model set back to train mode\n", - "Epoch 8471: model parameters saved\n", - "Epoch 8472 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8472: avg_loss appended (2.7778)\n", - "Epoch 8472: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8472: accuracy appended (83.33%)\n", - "Epoch 8472: model set back to train mode\n", - "Epoch 8472: model parameters saved\n", - "Epoch 8473 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8473: avg_loss appended (2.7778)\n", - "Epoch 8473: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8473: accuracy appended (83.33%)\n", - "Epoch 8473: model set back to train mode\n", - "Epoch 8473: model parameters saved\n", - "Epoch 8474 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8474: avg_loss appended (2.7778)\n", - "Epoch 8474: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8474: accuracy appended (83.33%)\n", - "Epoch 8474: model set back to train mode\n", - "Epoch 8474: model parameters saved\n", - "Epoch 8475 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8475: avg_loss appended (2.7778)\n", - "Epoch 8475: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8475: accuracy appended (83.33%)\n", - "Epoch 8475: model set back to train mode\n", - "Epoch 8475: model parameters saved\n", - "Epoch 8476 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8476: avg_loss appended (2.7778)\n", - "Epoch 8476: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8476: accuracy appended (83.33%)\n", - "Epoch 8476: model set back to train mode\n", - "Epoch 8476: model parameters saved\n", - "Epoch 8477 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8477: avg_loss appended (2.7778)\n", - "Epoch 8477: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8477: accuracy appended (86.11%)\n", - "Epoch 8477: model set back to train mode\n", - "Epoch 8477: model parameters saved\n", - "Epoch 8478 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8478: avg_loss appended (2.7778)\n", - "Epoch 8478: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8478: accuracy appended (83.33%)\n", - "Epoch 8478: model set back to train mode\n", - "Epoch 8478: model parameters saved\n", - "Epoch 8479 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8479: avg_loss appended (2.7778)\n", - "Epoch 8479: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8479: accuracy appended (83.33%)\n", - "Epoch 8479: model set back to train mode\n", - "Epoch 8479: model parameters saved\n", - "Epoch 8480 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8480: avg_loss appended (2.7778)\n", - "Epoch 8480: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8480: accuracy appended (83.33%)\n", - "Epoch 8480: model set back to train mode\n", - "Epoch 8480: model parameters saved\n", - "Epoch 8481 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8481: avg_loss appended (2.7778)\n", - "Epoch 8481: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8481: accuracy appended (83.33%)\n", - "Epoch 8481: model set back to train mode\n", - "Epoch 8481: model parameters saved\n", - "Epoch 8482 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8482: avg_loss appended (2.7778)\n", - "Epoch 8482: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8482: accuracy appended (83.33%)\n", - "Epoch 8482: model set back to train mode\n", - "Epoch 8482: model parameters saved\n", - "Epoch 8483 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8483: avg_loss appended (2.7778)\n", - "Epoch 8483: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8483: accuracy appended (83.33%)\n", - "Epoch 8483: model set back to train mode\n", - "Epoch 8483: model parameters saved\n", - "Epoch 8484 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8484: avg_loss appended (2.7778)\n", - "Epoch 8484: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8484: accuracy appended (86.11%)\n", - "Epoch 8484: model set back to train mode\n", - "Epoch 8484: model parameters saved\n", - "Epoch 8485 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8485: avg_loss appended (2.7778)\n", - "Epoch 8485: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8485: accuracy appended (83.33%)\n", - "Epoch 8485: model set back to train mode\n", - "Epoch 8485: model parameters saved\n", - "Epoch 8486 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8486: avg_loss appended (2.7778)\n", - "Epoch 8486: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8486: accuracy appended (83.33%)\n", - "Epoch 8486: model set back to train mode\n", - "Epoch 8486: model parameters saved\n", - "Epoch 8487 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8487: avg_loss appended (2.7778)\n", - "Epoch 8487: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8487: accuracy appended (83.33%)\n", - "Epoch 8487: model set back to train mode\n", - "Epoch 8487: model parameters saved\n", - "Epoch 8488 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8488: avg_loss appended (2.7778)\n", - "Epoch 8488: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8488: accuracy appended (83.33%)\n", - "Epoch 8488: model set back to train mode\n", - "Epoch 8488: model parameters saved\n", - "Epoch 8489 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8489: avg_loss appended (2.7778)\n", - "Epoch 8489: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8489: accuracy appended (83.33%)\n", - "Epoch 8489: model set back to train mode\n", - "Epoch 8489: model parameters saved\n", - "Epoch 8490 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8490: avg_loss appended (2.7778)\n", - "Epoch 8490: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8490: accuracy appended (83.33%)\n", - "Epoch 8490: model set back to train mode\n", - "Epoch 8490: model parameters saved\n", - "Epoch 8491 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8491: avg_loss appended (2.7778)\n", - "Epoch 8491: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8491: accuracy appended (83.33%)\n", - "Epoch 8491: model set back to train mode\n", - "Epoch 8491: model parameters saved\n", - "Epoch 8492 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8492: avg_loss appended (2.7778)\n", - "Epoch 8492: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8492: accuracy appended (83.33%)\n", - "Epoch 8492: model set back to train mode\n", - "Epoch 8492: model parameters saved\n", - "Epoch 8493 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8493: avg_loss appended (2.7778)\n", - "Epoch 8493: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8493: accuracy appended (83.33%)\n", - "Epoch 8493: model set back to train mode\n", - "Epoch 8493: model parameters saved\n", - "Epoch 8494 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8494: avg_loss appended (2.7778)\n", - "Epoch 8494: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8494: accuracy appended (86.11%)\n", - "Epoch 8494: model set back to train mode\n", - "Epoch 8494: model parameters saved\n", - "Epoch 8495 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8495: avg_loss appended (2.7778)\n", - "Epoch 8495: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8495: accuracy appended (86.11%)\n", - "Epoch 8495: model set back to train mode\n", - "Epoch 8495: model parameters saved\n", - "Epoch 8496 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8496: avg_loss appended (2.7778)\n", - "Epoch 8496: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8496: accuracy appended (83.33%)\n", - "Epoch 8496: model set back to train mode\n", - "Epoch 8496: model parameters saved\n", - "Epoch 8497 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8497: avg_loss appended (2.7778)\n", - "Epoch 8497: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8497: accuracy appended (83.33%)\n", - "Epoch 8497: model set back to train mode\n", - "Epoch 8497: model parameters saved\n", - "Epoch 8498 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8498: avg_loss appended (2.7778)\n", - "Epoch 8498: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8498: accuracy appended (83.33%)\n", - "Epoch 8498: model set back to train mode\n", - "Epoch 8498: model parameters saved\n", - "Epoch 8499 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8499: avg_loss appended (2.7778)\n", - "Epoch 8499: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8499: accuracy appended (83.33%)\n", - "Epoch 8499: model set back to train mode\n", - "Epoch 8499: model parameters saved\n", - "Epoch 8500 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8500: avg_loss appended (2.7778)\n", - "Epoch 8500: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8500: accuracy appended (83.33%)\n", - "Epoch 8500: model set back to train mode\n", - "Epoch 8500: model parameters saved\n", - "Epoch 8500/10000, Loss: 2.7778, Accuracy: 83.33%\n", - "Epoch 8501 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8501: avg_loss appended (2.7778)\n", - "Epoch 8501: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8501: accuracy appended (83.33%)\n", - "Epoch 8501: model set back to train mode\n", - "Epoch 8501: model parameters saved\n", - "Epoch 8502 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8502: avg_loss appended (2.7778)\n", - "Epoch 8502: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8502: accuracy appended (83.33%)\n", - "Epoch 8502: model set back to train mode\n", - "Epoch 8502: model parameters saved\n", - "Epoch 8503 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8503: avg_loss appended (2.7778)\n", - "Epoch 8503: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8503: accuracy appended (83.33%)\n", - "Epoch 8503: model set back to train mode\n", - "Epoch 8503: model parameters saved\n", - "Epoch 8504 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8504: avg_loss appended (2.7778)\n", - "Epoch 8504: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8504: accuracy appended (83.33%)\n", - "Epoch 8504: model set back to train mode\n", - "Epoch 8504: model parameters saved\n", - "Epoch 8505 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8505: avg_loss appended (2.7778)\n", - "Epoch 8505: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8505: accuracy appended (83.33%)\n", - "Epoch 8505: model set back to train mode\n", - "Epoch 8505: model parameters saved\n", - "Epoch 8506 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8506: avg_loss appended (2.7778)\n", - "Epoch 8506: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8506: accuracy appended (83.33%)\n", - "Epoch 8506: model set back to train mode\n", - "Epoch 8506: model parameters saved\n", - "Epoch 8507 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8507: avg_loss appended (2.7778)\n", - "Epoch 8507: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8507: accuracy appended (83.33%)\n", - "Epoch 8507: model set back to train mode\n", - "Epoch 8507: model parameters saved\n", - "Epoch 8508 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8508: avg_loss appended (2.7778)\n", - "Epoch 8508: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8508: accuracy appended (83.33%)\n", - "Epoch 8508: model set back to train mode\n", - "Epoch 8508: model parameters saved\n", - "Epoch 8509 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8509: avg_loss appended (2.7778)\n", - "Epoch 8509: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8509: accuracy appended (83.33%)\n", - "Epoch 8509: model set back to train mode\n", - "Epoch 8509: model parameters saved\n", - "Epoch 8510 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8510: avg_loss appended (2.7778)\n", - "Epoch 8510: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8510: accuracy appended (83.33%)\n", - "Epoch 8510: model set back to train mode\n", - "Epoch 8510: model parameters saved\n", - "Epoch 8511 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8511: avg_loss appended (2.7778)\n", - "Epoch 8511: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8511: accuracy appended (83.33%)\n", - "Epoch 8511: model set back to train mode\n", - "Epoch 8511: model parameters saved\n", - "Epoch 8512 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8512: avg_loss appended (2.7778)\n", - "Epoch 8512: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8512: accuracy appended (83.33%)\n", - "Epoch 8512: model set back to train mode\n", - "Epoch 8512: model parameters saved\n", - "Epoch 8513 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8513: avg_loss appended (2.7778)\n", - "Epoch 8513: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8513: accuracy appended (83.33%)\n", - "Epoch 8513: model set back to train mode\n", - "Epoch 8513: model parameters saved\n", - "Epoch 8514 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8514: avg_loss appended (2.7778)\n", - "Epoch 8514: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8514: accuracy appended (83.33%)\n", - "Epoch 8514: model set back to train mode\n", - "Epoch 8514: model parameters saved\n", - "Epoch 8515 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8515: avg_loss appended (2.7778)\n", - "Epoch 8515: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8515: accuracy appended (83.33%)\n", - "Epoch 8515: model set back to train mode\n", - "Epoch 8515: model parameters saved\n", - "Epoch 8516 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8516: avg_loss appended (2.7778)\n", - "Epoch 8516: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8516: accuracy appended (83.33%)\n", - "Epoch 8516: model set back to train mode\n", - "Epoch 8516: model parameters saved\n", - "Epoch 8517 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8517: avg_loss appended (2.7778)\n", - "Epoch 8517: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8517: accuracy appended (83.33%)\n", - "Epoch 8517: model set back to train mode\n", - "Epoch 8517: model parameters saved\n", - "Epoch 8518 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8518: avg_loss appended (2.7778)\n", - "Epoch 8518: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8518: accuracy appended (83.33%)\n", - "Epoch 8518: model set back to train mode\n", - "Epoch 8518: model parameters saved\n", - "Epoch 8519 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8519: avg_loss appended (2.7778)\n", - "Epoch 8519: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8519: accuracy appended (83.33%)\n", - "Epoch 8519: model set back to train mode\n", - "Epoch 8519: model parameters saved\n", - "Epoch 8520 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8520: avg_loss appended (2.7778)\n", - "Epoch 8520: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8520: accuracy appended (83.33%)\n", - "Epoch 8520: model set back to train mode\n", - "Epoch 8520: model parameters saved\n", - "Epoch 8521 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8521: avg_loss appended (2.7778)\n", - "Epoch 8521: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8521: accuracy appended (83.33%)\n", - "Epoch 8521: model set back to train mode\n", - "Epoch 8521: model parameters saved\n", - "Epoch 8522 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8522: avg_loss appended (2.7778)\n", - "Epoch 8522: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8522: accuracy appended (83.33%)\n", - "Epoch 8522: model set back to train mode\n", - "Epoch 8522: model parameters saved\n", - "Epoch 8523 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8523: avg_loss appended (2.7778)\n", - "Epoch 8523: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8523: accuracy appended (83.33%)\n", - "Epoch 8523: model set back to train mode\n", - "Epoch 8523: model parameters saved\n", - "Epoch 8524 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8524: avg_loss appended (2.7778)\n", - "Epoch 8524: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8524: accuracy appended (86.11%)\n", - "Epoch 8524: model set back to train mode\n", - "Epoch 8524: model parameters saved\n", - "Epoch 8525 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8525: avg_loss appended (2.7778)\n", - "Epoch 8525: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8525: accuracy appended (86.11%)\n", - "Epoch 8525: model set back to train mode\n", - "Epoch 8525: model parameters saved\n", - "Epoch 8526 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8526: avg_loss appended (2.7778)\n", - "Epoch 8526: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8526: accuracy appended (83.33%)\n", - "Epoch 8526: model set back to train mode\n", - "Epoch 8526: model parameters saved\n", - "Epoch 8527 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8527: avg_loss appended (2.7778)\n", - "Epoch 8527: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8527: accuracy appended (83.33%)\n", - "Epoch 8527: model set back to train mode\n", - "Epoch 8527: model parameters saved\n", - "Epoch 8528 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8528: avg_loss appended (2.7778)\n", - "Epoch 8528: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8528: accuracy appended (83.33%)\n", - "Epoch 8528: model set back to train mode\n", - "Epoch 8528: model parameters saved\n", - "Epoch 8529 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8529: avg_loss appended (2.7778)\n", - "Epoch 8529: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8529: accuracy appended (83.33%)\n", - "Epoch 8529: model set back to train mode\n", - "Epoch 8529: model parameters saved\n", - "Epoch 8530 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8530: avg_loss appended (2.7778)\n", - "Epoch 8530: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8530: accuracy appended (83.33%)\n", - "Epoch 8530: model set back to train mode\n", - "Epoch 8530: model parameters saved\n", - "Epoch 8531 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8531: avg_loss appended (2.7778)\n", - "Epoch 8531: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8531: accuracy appended (83.33%)\n", - "Epoch 8531: model set back to train mode\n", - "Epoch 8531: model parameters saved\n", - "Epoch 8532 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8532: avg_loss appended (2.7778)\n", - "Epoch 8532: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8532: accuracy appended (83.33%)\n", - "Epoch 8532: model set back to train mode\n", - "Epoch 8532: model parameters saved\n", - "Epoch 8533 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8533: avg_loss appended (2.7778)\n", - "Epoch 8533: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8533: accuracy appended (83.33%)\n", - "Epoch 8533: model set back to train mode\n", - "Epoch 8533: model parameters saved\n", - "Epoch 8534 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8534: avg_loss appended (2.7778)\n", - "Epoch 8534: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8534: accuracy appended (83.33%)\n", - "Epoch 8534: model set back to train mode\n", - "Epoch 8534: model parameters saved\n", - "Epoch 8535 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8535: avg_loss appended (2.7778)\n", - "Epoch 8535: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8535: accuracy appended (83.33%)\n", - "Epoch 8535: model set back to train mode\n", - "Epoch 8535: model parameters saved\n", - "Epoch 8536 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8536: avg_loss appended (2.7778)\n", - "Epoch 8536: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8536: accuracy appended (83.33%)\n", - "Epoch 8536: model set back to train mode\n", - "Epoch 8536: model parameters saved\n", - "Epoch 8537 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8537: avg_loss appended (2.7778)\n", - "Epoch 8537: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8537: accuracy appended (83.33%)\n", - "Epoch 8537: model set back to train mode\n", - "Epoch 8537: model parameters saved\n", - "Epoch 8538 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8538: avg_loss appended (2.7778)\n", - "Epoch 8538: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8538: accuracy appended (83.33%)\n", - "Epoch 8538: model set back to train mode\n", - "Epoch 8538: model parameters saved\n", - "Epoch 8539 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8539: avg_loss appended (2.7778)\n", - "Epoch 8539: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8539: accuracy appended (83.33%)\n", - "Epoch 8539: model set back to train mode\n", - "Epoch 8539: model parameters saved\n", - "Epoch 8540 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8540: avg_loss appended (2.7778)\n", - "Epoch 8540: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8540: accuracy appended (83.33%)\n", - "Epoch 8540: model set back to train mode\n", - "Epoch 8540: model parameters saved\n", - "Epoch 8541 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8541: avg_loss appended (2.7778)\n", - "Epoch 8541: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8541: accuracy appended (86.11%)\n", - "Epoch 8541: model set back to train mode\n", - "Epoch 8541: model parameters saved\n", - "Epoch 8542 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8542: avg_loss appended (2.7778)\n", - "Epoch 8542: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8542: accuracy appended (83.33%)\n", - "Epoch 8542: model set back to train mode\n", - "Epoch 8542: model parameters saved\n", - "Epoch 8543 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8543: avg_loss appended (2.7778)\n", - "Epoch 8543: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8543: accuracy appended (83.33%)\n", - "Epoch 8543: model set back to train mode\n", - "Epoch 8543: model parameters saved\n", - "Epoch 8544 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8544: avg_loss appended (2.7778)\n", - "Epoch 8544: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8544: accuracy appended (83.33%)\n", - "Epoch 8544: model set back to train mode\n", - "Epoch 8544: model parameters saved\n", - "Epoch 8545 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8545: avg_loss appended (2.7778)\n", - "Epoch 8545: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8545: accuracy appended (83.33%)\n", - "Epoch 8545: model set back to train mode\n", - "Epoch 8545: model parameters saved\n", - "Epoch 8546 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8546: avg_loss appended (2.7778)\n", - "Epoch 8546: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8546: accuracy appended (86.11%)\n", - "Epoch 8546: model set back to train mode\n", - "Epoch 8546: model parameters saved\n", - "Epoch 8547 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8547: avg_loss appended (2.7778)\n", - "Epoch 8547: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8547: accuracy appended (83.33%)\n", - "Epoch 8547: model set back to train mode\n", - "Epoch 8547: model parameters saved\n", - "Epoch 8548 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8548: avg_loss appended (2.7778)\n", - "Epoch 8548: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8548: accuracy appended (83.33%)\n", - "Epoch 8548: model set back to train mode\n", - "Epoch 8548: model parameters saved\n", - "Epoch 8549 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8549: avg_loss appended (2.7778)\n", - "Epoch 8549: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8549: accuracy appended (86.11%)\n", - "Epoch 8549: model set back to train mode\n", - "Epoch 8549: model parameters saved\n", - "Epoch 8550 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8550: avg_loss appended (2.7778)\n", - "Epoch 8550: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8550: accuracy appended (83.33%)\n", - "Epoch 8550: model set back to train mode\n", - "Epoch 8550: model parameters saved\n", - "Epoch 8551 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8551: avg_loss appended (2.7778)\n", - "Epoch 8551: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8551: accuracy appended (83.33%)\n", - "Epoch 8551: model set back to train mode\n", - "Epoch 8551: model parameters saved\n", - "Epoch 8552 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8552: avg_loss appended (2.7778)\n", - "Epoch 8552: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8552: accuracy appended (86.11%)\n", - "Epoch 8552: model set back to train mode\n", - "Epoch 8552: model parameters saved\n", - "Epoch 8553 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8553: avg_loss appended (2.7778)\n", - "Epoch 8553: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8553: accuracy appended (86.11%)\n", - "Epoch 8553: model set back to train mode\n", - "Epoch 8553: model parameters saved\n", - "Epoch 8554 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8554: avg_loss appended (2.7778)\n", - "Epoch 8554: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8554: accuracy appended (83.33%)\n", - "Epoch 8554: model set back to train mode\n", - "Epoch 8554: model parameters saved\n", - "Epoch 8555 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8555: avg_loss appended (2.7778)\n", - "Epoch 8555: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8555: accuracy appended (83.33%)\n", - "Epoch 8555: model set back to train mode\n", - "Epoch 8555: model parameters saved\n", - "Epoch 8556 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8556: avg_loss appended (2.7778)\n", - "Epoch 8556: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8556: accuracy appended (83.33%)\n", - "Epoch 8556: model set back to train mode\n", - "Epoch 8556: model parameters saved\n", - "Epoch 8557 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8557: avg_loss appended (2.7778)\n", - "Epoch 8557: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8557: accuracy appended (83.33%)\n", - "Epoch 8557: model set back to train mode\n", - "Epoch 8557: model parameters saved\n", - "Epoch 8558 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8558: avg_loss appended (2.7778)\n", - "Epoch 8558: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8558: accuracy appended (83.33%)\n", - "Epoch 8558: model set back to train mode\n", - "Epoch 8558: model parameters saved\n", - "Epoch 8559 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8559: avg_loss appended (2.7778)\n", - "Epoch 8559: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8559: accuracy appended (86.11%)\n", - "Epoch 8559: model set back to train mode\n", - "Epoch 8559: model parameters saved\n", - "Epoch 8560 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8560: avg_loss appended (2.7778)\n", - "Epoch 8560: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8560: accuracy appended (86.11%)\n", - "Epoch 8560: model set back to train mode\n", - "Epoch 8560: model parameters saved\n", - "Epoch 8561 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8561: avg_loss appended (2.7778)\n", - "Epoch 8561: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8561: accuracy appended (86.11%)\n", - "Epoch 8561: model set back to train mode\n", - "Epoch 8561: model parameters saved\n", - "Epoch 8562 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8562: avg_loss appended (2.7778)\n", - "Epoch 8562: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8562: accuracy appended (83.33%)\n", - "Epoch 8562: model set back to train mode\n", - "Epoch 8562: model parameters saved\n", - "Epoch 8563 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8563: avg_loss appended (2.7778)\n", - "Epoch 8563: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8563: accuracy appended (83.33%)\n", - "Epoch 8563: model set back to train mode\n", - "Epoch 8563: model parameters saved\n", - "Epoch 8564 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8564: avg_loss appended (2.7778)\n", - "Epoch 8564: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8564: accuracy appended (83.33%)\n", - "Epoch 8564: model set back to train mode\n", - "Epoch 8564: model parameters saved\n", - "Epoch 8565 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8565: avg_loss appended (2.7778)\n", - "Epoch 8565: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8565: accuracy appended (83.33%)\n", - "Epoch 8565: model set back to train mode\n", - "Epoch 8565: model parameters saved\n", - "Epoch 8566 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8566: avg_loss appended (2.7778)\n", - "Epoch 8566: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8566: accuracy appended (83.33%)\n", - "Epoch 8566: model set back to train mode\n", - "Epoch 8566: model parameters saved\n", - "Epoch 8567 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8567: avg_loss appended (2.7778)\n", - "Epoch 8567: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8567: accuracy appended (83.33%)\n", - "Epoch 8567: model set back to train mode\n", - "Epoch 8567: model parameters saved\n", - "Epoch 8568 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8568: avg_loss appended (2.7778)\n", - "Epoch 8568: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8568: accuracy appended (83.33%)\n", - "Epoch 8568: model set back to train mode\n", - "Epoch 8568: model parameters saved\n", - "Epoch 8569 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8569: avg_loss appended (2.7778)\n", - "Epoch 8569: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8569: accuracy appended (83.33%)\n", - "Epoch 8569: model set back to train mode\n", - "Epoch 8569: model parameters saved\n", - "Epoch 8570 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8570: avg_loss appended (2.7778)\n", - "Epoch 8570: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8570: accuracy appended (83.33%)\n", - "Epoch 8570: model set back to train mode\n", - "Epoch 8570: model parameters saved\n", - "Epoch 8571 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8571: avg_loss appended (2.7778)\n", - "Epoch 8571: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8571: accuracy appended (83.33%)\n", - "Epoch 8571: model set back to train mode\n", - "Epoch 8571: model parameters saved\n", - "Epoch 8572 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8572: avg_loss appended (2.7778)\n", - "Epoch 8572: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8572: accuracy appended (86.11%)\n", - "Epoch 8572: model set back to train mode\n", - "Epoch 8572: model parameters saved\n", - "Epoch 8573 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8573: avg_loss appended (2.7778)\n", - "Epoch 8573: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8573: accuracy appended (86.11%)\n", - "Epoch 8573: model set back to train mode\n", - "Epoch 8573: model parameters saved\n", - "Epoch 8574 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8574: avg_loss appended (2.7778)\n", - "Epoch 8574: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8574: accuracy appended (83.33%)\n", - "Epoch 8574: model set back to train mode\n", - "Epoch 8574: model parameters saved\n", - "Epoch 8575 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8575: avg_loss appended (2.7778)\n", - "Epoch 8575: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8575: accuracy appended (83.33%)\n", - "Epoch 8575: model set back to train mode\n", - "Epoch 8575: model parameters saved\n", - "Epoch 8576 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8576: avg_loss appended (2.7778)\n", - "Epoch 8576: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8576: accuracy appended (83.33%)\n", - "Epoch 8576: model set back to train mode\n", - "Epoch 8576: model parameters saved\n", - "Epoch 8577 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8577: avg_loss appended (2.7778)\n", - "Epoch 8577: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8577: accuracy appended (83.33%)\n", - "Epoch 8577: model set back to train mode\n", - "Epoch 8577: model parameters saved\n", - "Epoch 8578 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8578: avg_loss appended (2.7778)\n", - "Epoch 8578: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8578: accuracy appended (83.33%)\n", - "Epoch 8578: model set back to train mode\n", - "Epoch 8578: model parameters saved\n", - "Epoch 8579 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8579: avg_loss appended (2.7778)\n", - "Epoch 8579: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8579: accuracy appended (83.33%)\n", - "Epoch 8579: model set back to train mode\n", - "Epoch 8579: model parameters saved\n", - "Epoch 8580 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8580: avg_loss appended (2.7778)\n", - "Epoch 8580: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8580: accuracy appended (83.33%)\n", - "Epoch 8580: model set back to train mode\n", - "Epoch 8580: model parameters saved\n", - "Epoch 8581 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8581: avg_loss appended (2.7778)\n", - "Epoch 8581: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8581: accuracy appended (83.33%)\n", - "Epoch 8581: model set back to train mode\n", - "Epoch 8581: model parameters saved\n", - "Epoch 8582 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8582: avg_loss appended (2.7778)\n", - "Epoch 8582: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8582: accuracy appended (86.11%)\n", - "Epoch 8582: model set back to train mode\n", - "Epoch 8582: model parameters saved\n", - "Epoch 8583 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8583: avg_loss appended (2.7778)\n", - "Epoch 8583: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8583: accuracy appended (86.11%)\n", - "Epoch 8583: model set back to train mode\n", - "Epoch 8583: model parameters saved\n", - "Epoch 8584 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8584: avg_loss appended (2.7778)\n", - "Epoch 8584: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8584: accuracy appended (86.11%)\n", - "Epoch 8584: model set back to train mode\n", - "Epoch 8584: model parameters saved\n", - "Epoch 8585 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8585: avg_loss appended (2.7778)\n", - "Epoch 8585: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8585: accuracy appended (83.33%)\n", - "Epoch 8585: model set back to train mode\n", - "Epoch 8585: model parameters saved\n", - "Epoch 8586 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8586: avg_loss appended (2.7778)\n", - "Epoch 8586: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8586: accuracy appended (83.33%)\n", - "Epoch 8586: model set back to train mode\n", - "Epoch 8586: model parameters saved\n", - "Epoch 8587 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8587: avg_loss appended (2.7778)\n", - "Epoch 8587: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8587: accuracy appended (83.33%)\n", - "Epoch 8587: model set back to train mode\n", - "Epoch 8587: model parameters saved\n", - "Epoch 8588 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8588: avg_loss appended (2.7778)\n", - "Epoch 8588: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8588: accuracy appended (83.33%)\n", - "Epoch 8588: model set back to train mode\n", - "Epoch 8588: model parameters saved\n", - "Epoch 8589 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8589: avg_loss appended (2.7778)\n", - "Epoch 8589: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8589: accuracy appended (83.33%)\n", - "Epoch 8589: model set back to train mode\n", - "Epoch 8589: model parameters saved\n", - "Epoch 8590 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8590: avg_loss appended (2.7778)\n", - "Epoch 8590: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8590: accuracy appended (83.33%)\n", - "Epoch 8590: model set back to train mode\n", - "Epoch 8590: model parameters saved\n", - "Epoch 8591 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8591: avg_loss appended (2.7778)\n", - "Epoch 8591: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8591: accuracy appended (83.33%)\n", - "Epoch 8591: model set back to train mode\n", - "Epoch 8591: model parameters saved\n", - "Epoch 8592 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8592: avg_loss appended (2.7778)\n", - "Epoch 8592: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8592: accuracy appended (86.11%)\n", - "Epoch 8592: model set back to train mode\n", - "Epoch 8592: model parameters saved\n", - "Epoch 8593 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8593: avg_loss appended (2.7778)\n", - "Epoch 8593: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8593: accuracy appended (83.33%)\n", - "Epoch 8593: model set back to train mode\n", - "Epoch 8593: model parameters saved\n", - "Epoch 8594 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8594: avg_loss appended (2.7778)\n", - "Epoch 8594: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8594: accuracy appended (83.33%)\n", - "Epoch 8594: model set back to train mode\n", - "Epoch 8594: model parameters saved\n", - "Epoch 8595 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8595: avg_loss appended (2.7778)\n", - "Epoch 8595: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8595: accuracy appended (83.33%)\n", - "Epoch 8595: model set back to train mode\n", - "Epoch 8595: model parameters saved\n", - "Epoch 8596 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8596: avg_loss appended (2.7778)\n", - "Epoch 8596: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8596: accuracy appended (83.33%)\n", - "Epoch 8596: model set back to train mode\n", - "Epoch 8596: model parameters saved\n", - "Epoch 8597 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8597: avg_loss appended (2.7778)\n", - "Epoch 8597: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8597: accuracy appended (83.33%)\n", - "Epoch 8597: model set back to train mode\n", - "Epoch 8597: model parameters saved\n", - "Epoch 8598 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8598: avg_loss appended (2.7778)\n", - "Epoch 8598: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8598: accuracy appended (86.11%)\n", - "Epoch 8598: model set back to train mode\n", - "Epoch 8598: model parameters saved\n", - "Epoch 8599 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8599: avg_loss appended (2.7778)\n", - "Epoch 8599: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8599: accuracy appended (83.33%)\n", - "Epoch 8599: model set back to train mode\n", - "Epoch 8599: model parameters saved\n", - "Epoch 8600 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8600: avg_loss appended (2.7778)\n", - "Epoch 8600: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8600: accuracy appended (83.33%)\n", - "Epoch 8600: model set back to train mode\n", - "Epoch 8600: model parameters saved\n", - "Epoch 8600/10000, Loss: 2.7778, Accuracy: 83.33%\n", - "Epoch 8601 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8601: avg_loss appended (2.7778)\n", - "Epoch 8601: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8601: accuracy appended (86.11%)\n", - "Epoch 8601: model set back to train mode\n", - "Epoch 8601: model parameters saved\n", - "Epoch 8602 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8602: avg_loss appended (2.7778)\n", - "Epoch 8602: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8602: accuracy appended (86.11%)\n", - "Epoch 8602: model set back to train mode\n", - "Epoch 8602: model parameters saved\n", - "Epoch 8603 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8603: avg_loss appended (2.7778)\n", - "Epoch 8603: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8603: accuracy appended (86.11%)\n", - "Epoch 8603: model set back to train mode\n", - "Epoch 8603: model parameters saved\n", - "Epoch 8604 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8604: avg_loss appended (2.7778)\n", - "Epoch 8604: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8604: accuracy appended (86.11%)\n", - "Epoch 8604: model set back to train mode\n", - "Epoch 8604: model parameters saved\n", - "Epoch 8605 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8605: avg_loss appended (2.7778)\n", - "Epoch 8605: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8605: accuracy appended (83.33%)\n", - "Epoch 8605: model set back to train mode\n", - "Epoch 8605: model parameters saved\n", - "Epoch 8606 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8606: avg_loss appended (2.7778)\n", - "Epoch 8606: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8606: accuracy appended (83.33%)\n", - "Epoch 8606: model set back to train mode\n", - "Epoch 8606: model parameters saved\n", - "Epoch 8607 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8607: avg_loss appended (2.7778)\n", - "Epoch 8607: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8607: accuracy appended (83.33%)\n", - "Epoch 8607: model set back to train mode\n", - "Epoch 8607: model parameters saved\n", - "Epoch 8608 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8608: avg_loss appended (2.7778)\n", - "Epoch 8608: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8608: accuracy appended (83.33%)\n", - "Epoch 8608: model set back to train mode\n", - "Epoch 8608: model parameters saved\n", - "Epoch 8609 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8609: avg_loss appended (2.7778)\n", - "Epoch 8609: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8609: accuracy appended (83.33%)\n", - "Epoch 8609: model set back to train mode\n", - "Epoch 8609: model parameters saved\n", - "Epoch 8610 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8610: avg_loss appended (2.7778)\n", - "Epoch 8610: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8610: accuracy appended (83.33%)\n", - "Epoch 8610: model set back to train mode\n", - "Epoch 8610: model parameters saved\n", - "Epoch 8611 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8611: avg_loss appended (2.7778)\n", - "Epoch 8611: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8611: accuracy appended (83.33%)\n", - "Epoch 8611: model set back to train mode\n", - "Epoch 8611: model parameters saved\n", - "Epoch 8612 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8612: avg_loss appended (2.7778)\n", - "Epoch 8612: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8612: accuracy appended (86.11%)\n", - "Epoch 8612: model set back to train mode\n", - "Epoch 8612: model parameters saved\n", - "Epoch 8613 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8613: avg_loss appended (2.7778)\n", - "Epoch 8613: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8613: accuracy appended (83.33%)\n", - "Epoch 8613: model set back to train mode\n", - "Epoch 8613: model parameters saved\n", - "Epoch 8614 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8614: avg_loss appended (2.7778)\n", - "Epoch 8614: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8614: accuracy appended (83.33%)\n", - "Epoch 8614: model set back to train mode\n", - "Epoch 8614: model parameters saved\n", - "Epoch 8615 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8615: avg_loss appended (2.7778)\n", - "Epoch 8615: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8615: accuracy appended (83.33%)\n", - "Epoch 8615: model set back to train mode\n", - "Epoch 8615: model parameters saved\n", - "Epoch 8616 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8616: avg_loss appended (2.7778)\n", - "Epoch 8616: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8616: accuracy appended (83.33%)\n", - "Epoch 8616: model set back to train mode\n", - "Epoch 8616: model parameters saved\n", - "Epoch 8617 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8617: avg_loss appended (2.7778)\n", - "Epoch 8617: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8617: accuracy appended (83.33%)\n", - "Epoch 8617: model set back to train mode\n", - "Epoch 8617: model parameters saved\n", - "Epoch 8618 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8618: avg_loss appended (2.7778)\n", - "Epoch 8618: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8618: accuracy appended (83.33%)\n", - "Epoch 8618: model set back to train mode\n", - "Epoch 8618: model parameters saved\n", - "Epoch 8619 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8619: avg_loss appended (2.7778)\n", - "Epoch 8619: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8619: accuracy appended (86.11%)\n", - "Epoch 8619: model set back to train mode\n", - "Epoch 8619: model parameters saved\n", - "Epoch 8620 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8620: avg_loss appended (2.7778)\n", - "Epoch 8620: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8620: accuracy appended (83.33%)\n", - "Epoch 8620: model set back to train mode\n", - "Epoch 8620: model parameters saved\n", - "Epoch 8621 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8621: avg_loss appended (2.7778)\n", - "Epoch 8621: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8621: accuracy appended (83.33%)\n", - "Epoch 8621: model set back to train mode\n", - "Epoch 8621: model parameters saved\n", - "Epoch 8622 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8622: avg_loss appended (2.7778)\n", - "Epoch 8622: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8622: accuracy appended (86.11%)\n", - "Epoch 8622: model set back to train mode\n", - "Epoch 8622: model parameters saved\n", - "Epoch 8623 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8623: avg_loss appended (2.7778)\n", - "Epoch 8623: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8623: accuracy appended (86.11%)\n", - "Epoch 8623: model set back to train mode\n", - "Epoch 8623: model parameters saved\n", - "Epoch 8624 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8624: avg_loss appended (2.7778)\n", - "Epoch 8624: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8624: accuracy appended (86.11%)\n", - "Epoch 8624: model set back to train mode\n", - "Epoch 8624: model parameters saved\n", - "Epoch 8625 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8625: avg_loss appended (2.7778)\n", - "Epoch 8625: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8625: accuracy appended (86.11%)\n", - "Epoch 8625: model set back to train mode\n", - "Epoch 8625: model parameters saved\n", - "Epoch 8626 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8626: avg_loss appended (2.7778)\n", - "Epoch 8626: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8626: accuracy appended (83.33%)\n", - "Epoch 8626: model set back to train mode\n", - "Epoch 8626: model parameters saved\n", - "Epoch 8627 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8627: avg_loss appended (2.7778)\n", - "Epoch 8627: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8627: accuracy appended (83.33%)\n", - "Epoch 8627: model set back to train mode\n", - "Epoch 8627: model parameters saved\n", - "Epoch 8628 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8628: avg_loss appended (2.7778)\n", - "Epoch 8628: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8628: accuracy appended (83.33%)\n", - "Epoch 8628: model set back to train mode\n", - "Epoch 8628: model parameters saved\n", - "Epoch 8629 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8629: avg_loss appended (2.7778)\n", - "Epoch 8629: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8629: accuracy appended (83.33%)\n", - "Epoch 8629: model set back to train mode\n", - "Epoch 8629: model parameters saved\n", - "Epoch 8630 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8630: avg_loss appended (2.7778)\n", - "Epoch 8630: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8630: accuracy appended (83.33%)\n", - "Epoch 8630: model set back to train mode\n", - "Epoch 8630: model parameters saved\n", - "Epoch 8631 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8631: avg_loss appended (2.7778)\n", - "Epoch 8631: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8631: accuracy appended (83.33%)\n", - "Epoch 8631: model set back to train mode\n", - "Epoch 8631: model parameters saved\n", - "Epoch 8632 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8632: avg_loss appended (2.7778)\n", - "Epoch 8632: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8632: accuracy appended (83.33%)\n", - "Epoch 8632: model set back to train mode\n", - "Epoch 8632: model parameters saved\n", - "Epoch 8633 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8633: avg_loss appended (2.7778)\n", - "Epoch 8633: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8633: accuracy appended (86.11%)\n", - "Epoch 8633: model set back to train mode\n", - "Epoch 8633: model parameters saved\n", - "Epoch 8634 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8634: avg_loss appended (2.7778)\n", - "Epoch 8634: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8634: accuracy appended (83.33%)\n", - "Epoch 8634: model set back to train mode\n", - "Epoch 8634: model parameters saved\n", - "Epoch 8635 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8635: avg_loss appended (2.7778)\n", - "Epoch 8635: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8635: accuracy appended (83.33%)\n", - "Epoch 8635: model set back to train mode\n", - "Epoch 8635: model parameters saved\n", - "Epoch 8636 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8636: avg_loss appended (2.7778)\n", - "Epoch 8636: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8636: accuracy appended (83.33%)\n", - "Epoch 8636: model set back to train mode\n", - "Epoch 8636: model parameters saved\n", - "Epoch 8637 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8637: avg_loss appended (2.7778)\n", - "Epoch 8637: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8637: accuracy appended (83.33%)\n", - "Epoch 8637: model set back to train mode\n", - "Epoch 8637: model parameters saved\n", - "Epoch 8638 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8638: avg_loss appended (2.7778)\n", - "Epoch 8638: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8638: accuracy appended (83.33%)\n", - "Epoch 8638: model set back to train mode\n", - "Epoch 8638: model parameters saved\n", - "Epoch 8639 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8639: avg_loss appended (2.7778)\n", - "Epoch 8639: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8639: accuracy appended (86.11%)\n", - "Epoch 8639: model set back to train mode\n", - "Epoch 8639: model parameters saved\n", - "Epoch 8640 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8640: avg_loss appended (2.7778)\n", - "Epoch 8640: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8640: accuracy appended (86.11%)\n", - "Epoch 8640: model set back to train mode\n", - "Epoch 8640: model parameters saved\n", - "Epoch 8641 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8641: avg_loss appended (2.7778)\n", - "Epoch 8641: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8641: accuracy appended (86.11%)\n", - "Epoch 8641: model set back to train mode\n", - "Epoch 8641: model parameters saved\n", - "Epoch 8642 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8642: avg_loss appended (2.7778)\n", - "Epoch 8642: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8642: accuracy appended (86.11%)\n", - "Epoch 8642: model set back to train mode\n", - "Epoch 8642: model parameters saved\n", - "Epoch 8643 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8643: avg_loss appended (2.7778)\n", - "Epoch 8643: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8643: accuracy appended (86.11%)\n", - "Epoch 8643: model set back to train mode\n", - "Epoch 8643: model parameters saved\n", - "Epoch 8644 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8644: avg_loss appended (2.7778)\n", - "Epoch 8644: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8644: accuracy appended (83.33%)\n", - "Epoch 8644: model set back to train mode\n", - "Epoch 8644: model parameters saved\n", - "Epoch 8645 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8645: avg_loss appended (2.7778)\n", - "Epoch 8645: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8645: accuracy appended (83.33%)\n", - "Epoch 8645: model set back to train mode\n", - "Epoch 8645: model parameters saved\n", - "Epoch 8646 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8646: avg_loss appended (2.7778)\n", - "Epoch 8646: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8646: accuracy appended (83.33%)\n", - "Epoch 8646: model set back to train mode\n", - "Epoch 8646: model parameters saved\n", - "Epoch 8647 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8647: avg_loss appended (2.7778)\n", - "Epoch 8647: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8647: accuracy appended (83.33%)\n", - "Epoch 8647: model set back to train mode\n", - "Epoch 8647: model parameters saved\n", - "Epoch 8648 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8648: avg_loss appended (2.7778)\n", - "Epoch 8648: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8648: accuracy appended (86.11%)\n", - "Epoch 8648: model set back to train mode\n", - "Epoch 8648: model parameters saved\n", - "Epoch 8649 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8649: avg_loss appended (2.7778)\n", - "Epoch 8649: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8649: accuracy appended (86.11%)\n", - "Epoch 8649: model set back to train mode\n", - "Epoch 8649: model parameters saved\n", - "Epoch 8650 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8650: avg_loss appended (2.7778)\n", - "Epoch 8650: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8650: accuracy appended (83.33%)\n", - "Epoch 8650: model set back to train mode\n", - "Epoch 8650: model parameters saved\n", - "Epoch 8651 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8651: avg_loss appended (2.7778)\n", - "Epoch 8651: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8651: accuracy appended (83.33%)\n", - "Epoch 8651: model set back to train mode\n", - "Epoch 8651: model parameters saved\n", - "Epoch 8652 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8652: avg_loss appended (2.7778)\n", - "Epoch 8652: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8652: accuracy appended (83.33%)\n", - "Epoch 8652: model set back to train mode\n", - "Epoch 8652: model parameters saved\n", - "Epoch 8653 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8653: avg_loss appended (2.7778)\n", - "Epoch 8653: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8653: accuracy appended (86.11%)\n", - "Epoch 8653: model set back to train mode\n", - "Epoch 8653: model parameters saved\n", - "Epoch 8654 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8654: avg_loss appended (2.7778)\n", - "Epoch 8654: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8654: accuracy appended (86.11%)\n", - "Epoch 8654: model set back to train mode\n", - "Epoch 8654: model parameters saved\n", - "Epoch 8655 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8655: avg_loss appended (2.7778)\n", - "Epoch 8655: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8655: accuracy appended (86.11%)\n", - "Epoch 8655: model set back to train mode\n", - "Epoch 8655: model parameters saved\n", - "Epoch 8656 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8656: avg_loss appended (2.7778)\n", - "Epoch 8656: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8656: accuracy appended (83.33%)\n", - "Epoch 8656: model set back to train mode\n", - "Epoch 8656: model parameters saved\n", - "Epoch 8657 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8657: avg_loss appended (2.7778)\n", - "Epoch 8657: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8657: accuracy appended (83.33%)\n", - "Epoch 8657: model set back to train mode\n", - "Epoch 8657: model parameters saved\n", - "Epoch 8658 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8658: avg_loss appended (2.7778)\n", - "Epoch 8658: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8658: accuracy appended (83.33%)\n", - "Epoch 8658: model set back to train mode\n", - "Epoch 8658: model parameters saved\n", - "Epoch 8659 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8659: avg_loss appended (2.7778)\n", - "Epoch 8659: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8659: accuracy appended (83.33%)\n", - "Epoch 8659: model set back to train mode\n", - "Epoch 8659: model parameters saved\n", - "Epoch 8660 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8660: avg_loss appended (2.7778)\n", - "Epoch 8660: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8660: accuracy appended (86.11%)\n", - "Epoch 8660: model set back to train mode\n", - "Epoch 8660: model parameters saved\n", - "Epoch 8661 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8661: avg_loss appended (2.7778)\n", - "Epoch 8661: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8661: accuracy appended (83.33%)\n", - "Epoch 8661: model set back to train mode\n", - "Epoch 8661: model parameters saved\n", - "Epoch 8662 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8662: avg_loss appended (2.7778)\n", - "Epoch 8662: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8662: accuracy appended (86.11%)\n", - "Epoch 8662: model set back to train mode\n", - "Epoch 8662: model parameters saved\n", - "Epoch 8663 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8663: avg_loss appended (2.7778)\n", - "Epoch 8663: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8663: accuracy appended (86.11%)\n", - "Epoch 8663: model set back to train mode\n", - "Epoch 8663: model parameters saved\n", - "Epoch 8664 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8664: avg_loss appended (2.7778)\n", - "Epoch 8664: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8664: accuracy appended (83.33%)\n", - "Epoch 8664: model set back to train mode\n", - "Epoch 8664: model parameters saved\n", - "Epoch 8665 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8665: avg_loss appended (2.7778)\n", - "Epoch 8665: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8665: accuracy appended (83.33%)\n", - "Epoch 8665: model set back to train mode\n", - "Epoch 8665: model parameters saved\n", - "Epoch 8666 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8666: avg_loss appended (2.7778)\n", - "Epoch 8666: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8666: accuracy appended (83.33%)\n", - "Epoch 8666: model set back to train mode\n", - "Epoch 8666: model parameters saved\n", - "Epoch 8667 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8667: avg_loss appended (2.7778)\n", - "Epoch 8667: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8667: accuracy appended (86.11%)\n", - "Epoch 8667: model set back to train mode\n", - "Epoch 8667: model parameters saved\n", - "Epoch 8668 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8668: avg_loss appended (2.7778)\n", - "Epoch 8668: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8668: accuracy appended (83.33%)\n", - "Epoch 8668: model set back to train mode\n", - "Epoch 8668: model parameters saved\n", - "Epoch 8669 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8669: avg_loss appended (2.7778)\n", - "Epoch 8669: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8669: accuracy appended (86.11%)\n", - "Epoch 8669: model set back to train mode\n", - "Epoch 8669: model parameters saved\n", - "Epoch 8670 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8670: avg_loss appended (2.7778)\n", - "Epoch 8670: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8670: accuracy appended (86.11%)\n", - "Epoch 8670: model set back to train mode\n", - "Epoch 8670: model parameters saved\n", - "Epoch 8671 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8671: avg_loss appended (2.7778)\n", - "Epoch 8671: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8671: accuracy appended (86.11%)\n", - "Epoch 8671: model set back to train mode\n", - "Epoch 8671: model parameters saved\n", - "Epoch 8672 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8672: avg_loss appended (2.7778)\n", - "Epoch 8672: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8672: accuracy appended (86.11%)\n", - "Epoch 8672: model set back to train mode\n", - "Epoch 8672: model parameters saved\n", - "Epoch 8673 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8673: avg_loss appended (2.7778)\n", - "Epoch 8673: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8673: accuracy appended (86.11%)\n", - "Epoch 8673: model set back to train mode\n", - "Epoch 8673: model parameters saved\n", - "Epoch 8674 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8674: avg_loss appended (2.7778)\n", - "Epoch 8674: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8674: accuracy appended (86.11%)\n", - "Epoch 8674: model set back to train mode\n", - "Epoch 8674: model parameters saved\n", - "Epoch 8675 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8675: avg_loss appended (2.7778)\n", - "Epoch 8675: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8675: accuracy appended (86.11%)\n", - "Epoch 8675: model set back to train mode\n", - "Epoch 8675: model parameters saved\n", - "Epoch 8676 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8676: avg_loss appended (2.7778)\n", - "Epoch 8676: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8676: accuracy appended (83.33%)\n", - "Epoch 8676: model set back to train mode\n", - "Epoch 8676: model parameters saved\n", - "Epoch 8677 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8677: avg_loss appended (2.7778)\n", - "Epoch 8677: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8677: accuracy appended (83.33%)\n", - "Epoch 8677: model set back to train mode\n", - "Epoch 8677: model parameters saved\n", - "Epoch 8678 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8678: avg_loss appended (2.7778)\n", - "Epoch 8678: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8678: accuracy appended (83.33%)\n", - "Epoch 8678: model set back to train mode\n", - "Epoch 8678: model parameters saved\n", - "Epoch 8679 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8679: avg_loss appended (2.7778)\n", - "Epoch 8679: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8679: accuracy appended (86.11%)\n", - "Epoch 8679: model set back to train mode\n", - "Epoch 8679: model parameters saved\n", - "Epoch 8680 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8680: avg_loss appended (2.7778)\n", - "Epoch 8680: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8680: accuracy appended (86.11%)\n", - "Epoch 8680: model set back to train mode\n", - "Epoch 8680: model parameters saved\n", - "Epoch 8681 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8681: avg_loss appended (2.7778)\n", - "Epoch 8681: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8681: accuracy appended (86.11%)\n", - "Epoch 8681: model set back to train mode\n", - "Epoch 8681: model parameters saved\n", - "Epoch 8682 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8682: avg_loss appended (2.7778)\n", - "Epoch 8682: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8682: accuracy appended (83.33%)\n", - "Epoch 8682: model set back to train mode\n", - "Epoch 8682: model parameters saved\n", - "Epoch 8683 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8683: avg_loss appended (2.7778)\n", - "Epoch 8683: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8683: accuracy appended (83.33%)\n", - "Epoch 8683: model set back to train mode\n", - "Epoch 8683: model parameters saved\n", - "Epoch 8684 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8684: avg_loss appended (2.7778)\n", - "Epoch 8684: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8684: accuracy appended (86.11%)\n", - "Epoch 8684: model set back to train mode\n", - "Epoch 8684: model parameters saved\n", - "Epoch 8685 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8685: avg_loss appended (2.7778)\n", - "Epoch 8685: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8685: accuracy appended (83.33%)\n", - "Epoch 8685: model set back to train mode\n", - "Epoch 8685: model parameters saved\n", - "Epoch 8686 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8686: avg_loss appended (2.7778)\n", - "Epoch 8686: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8686: accuracy appended (83.33%)\n", - "Epoch 8686: model set back to train mode\n", - "Epoch 8686: model parameters saved\n", - "Epoch 8687 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8687: avg_loss appended (2.7778)\n", - "Epoch 8687: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8687: accuracy appended (83.33%)\n", - "Epoch 8687: model set back to train mode\n", - "Epoch 8687: model parameters saved\n", - "Epoch 8688 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8688: avg_loss appended (2.7778)\n", - "Epoch 8688: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8688: accuracy appended (86.11%)\n", - "Epoch 8688: model set back to train mode\n", - "Epoch 8688: model parameters saved\n", - "Epoch 8689 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8689: avg_loss appended (2.7778)\n", - "Epoch 8689: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8689: accuracy appended (86.11%)\n", - "Epoch 8689: model set back to train mode\n", - "Epoch 8689: model parameters saved\n", - "Epoch 8690 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8690: avg_loss appended (2.7778)\n", - "Epoch 8690: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8690: accuracy appended (86.11%)\n", - "Epoch 8690: model set back to train mode\n", - "Epoch 8690: model parameters saved\n", - "Epoch 8691 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8691: avg_loss appended (2.7778)\n", - "Epoch 8691: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8691: accuracy appended (86.11%)\n", - "Epoch 8691: model set back to train mode\n", - "Epoch 8691: model parameters saved\n", - "Epoch 8692 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8692: avg_loss appended (2.7778)\n", - "Epoch 8692: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8692: accuracy appended (86.11%)\n", - "Epoch 8692: model set back to train mode\n", - "Epoch 8692: model parameters saved\n", - "Epoch 8693 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8693: avg_loss appended (2.7778)\n", - "Epoch 8693: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8693: accuracy appended (86.11%)\n", - "Epoch 8693: model set back to train mode\n", - "Epoch 8693: model parameters saved\n", - "Epoch 8694 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8694: avg_loss appended (2.7778)\n", - "Epoch 8694: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8694: accuracy appended (86.11%)\n", - "Epoch 8694: model set back to train mode\n", - "Epoch 8694: model parameters saved\n", - "Epoch 8695 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8695: avg_loss appended (2.7778)\n", - "Epoch 8695: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8695: accuracy appended (86.11%)\n", - "Epoch 8695: model set back to train mode\n", - "Epoch 8695: model parameters saved\n", - "Epoch 8696 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8696: avg_loss appended (2.7778)\n", - "Epoch 8696: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8696: accuracy appended (86.11%)\n", - "Epoch 8696: model set back to train mode\n", - "Epoch 8696: model parameters saved\n", - "Epoch 8697 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8697: avg_loss appended (2.7778)\n", - "Epoch 8697: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8697: accuracy appended (83.33%)\n", - "Epoch 8697: model set back to train mode\n", - "Epoch 8697: model parameters saved\n", - "Epoch 8698 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8698: avg_loss appended (2.7778)\n", - "Epoch 8698: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8698: accuracy appended (86.11%)\n", - "Epoch 8698: model set back to train mode\n", - "Epoch 8698: model parameters saved\n", - "Epoch 8699 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8699: avg_loss appended (2.7778)\n", - "Epoch 8699: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8699: accuracy appended (86.11%)\n", - "Epoch 8699: model set back to train mode\n", - "Epoch 8699: model parameters saved\n", - "Epoch 8700 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8700: avg_loss appended (2.7778)\n", - "Epoch 8700: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8700: accuracy appended (86.11%)\n", - "Epoch 8700: model set back to train mode\n", - "Epoch 8700: model parameters saved\n", - "Epoch 8700/10000, Loss: 2.7778, Accuracy: 86.11%\n", - "Epoch 8701 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8701: avg_loss appended (2.7778)\n", - "Epoch 8701: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8701: accuracy appended (83.33%)\n", - "Epoch 8701: model set back to train mode\n", - "Epoch 8701: model parameters saved\n", - "Epoch 8702 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8702: avg_loss appended (2.7778)\n", - "Epoch 8702: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8702: accuracy appended (83.33%)\n", - "Epoch 8702: model set back to train mode\n", - "Epoch 8702: model parameters saved\n", - "Epoch 8703 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8703: avg_loss appended (2.7778)\n", - "Epoch 8703: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8703: accuracy appended (86.11%)\n", - "Epoch 8703: model set back to train mode\n", - "Epoch 8703: model parameters saved\n", - "Epoch 8704 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8704: avg_loss appended (2.7778)\n", - "Epoch 8704: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8704: accuracy appended (86.11%)\n", - "Epoch 8704: model set back to train mode\n", - "Epoch 8704: model parameters saved\n", - "Epoch 8705 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8705: avg_loss appended (2.7778)\n", - "Epoch 8705: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8705: accuracy appended (86.11%)\n", - "Epoch 8705: model set back to train mode\n", - "Epoch 8705: model parameters saved\n", - "Epoch 8706 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8706: avg_loss appended (2.7778)\n", - "Epoch 8706: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8706: accuracy appended (83.33%)\n", - "Epoch 8706: model set back to train mode\n", - "Epoch 8706: model parameters saved\n", - "Epoch 8707 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8707: avg_loss appended (2.7778)\n", - "Epoch 8707: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8707: accuracy appended (83.33%)\n", - "Epoch 8707: model set back to train mode\n", - "Epoch 8707: model parameters saved\n", - "Epoch 8708 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8708: avg_loss appended (2.7778)\n", - "Epoch 8708: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8708: accuracy appended (86.11%)\n", - "Epoch 8708: model set back to train mode\n", - "Epoch 8708: model parameters saved\n", - "Epoch 8709 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8709: avg_loss appended (2.7778)\n", - "Epoch 8709: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8709: accuracy appended (86.11%)\n", - "Epoch 8709: model set back to train mode\n", - "Epoch 8709: model parameters saved\n", - "Epoch 8710 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8710: avg_loss appended (2.7778)\n", - "Epoch 8710: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8710: accuracy appended (86.11%)\n", - "Epoch 8710: model set back to train mode\n", - "Epoch 8710: model parameters saved\n", - "Epoch 8711 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8711: avg_loss appended (2.7778)\n", - "Epoch 8711: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8711: accuracy appended (86.11%)\n", - "Epoch 8711: model set back to train mode\n", - "Epoch 8711: model parameters saved\n", - "Epoch 8712 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8712: avg_loss appended (2.7778)\n", - "Epoch 8712: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8712: accuracy appended (86.11%)\n", - "Epoch 8712: model set back to train mode\n", - "Epoch 8712: model parameters saved\n", - "Epoch 8713 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8713: avg_loss appended (2.7778)\n", - "Epoch 8713: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8713: accuracy appended (83.33%)\n", - "Epoch 8713: model set back to train mode\n", - "Epoch 8713: model parameters saved\n", - "Epoch 8714 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8714: avg_loss appended (2.7778)\n", - "Epoch 8714: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8714: accuracy appended (83.33%)\n", - "Epoch 8714: model set back to train mode\n", - "Epoch 8714: model parameters saved\n", - "Epoch 8715 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8715: avg_loss appended (2.7778)\n", - "Epoch 8715: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8715: accuracy appended (83.33%)\n", - "Epoch 8715: model set back to train mode\n", - "Epoch 8715: model parameters saved\n", - "Epoch 8716 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8716: avg_loss appended (2.7778)\n", - "Epoch 8716: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8716: accuracy appended (83.33%)\n", - "Epoch 8716: model set back to train mode\n", - "Epoch 8716: model parameters saved\n", - "Epoch 8717 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8717: avg_loss appended (2.7778)\n", - "Epoch 8717: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8717: accuracy appended (86.11%)\n", - "Epoch 8717: model set back to train mode\n", - "Epoch 8717: model parameters saved\n", - "Epoch 8718 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8718: avg_loss appended (2.7778)\n", - "Epoch 8718: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8718: accuracy appended (86.11%)\n", - "Epoch 8718: model set back to train mode\n", - "Epoch 8718: model parameters saved\n", - "Epoch 8719 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8719: avg_loss appended (2.7778)\n", - "Epoch 8719: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8719: accuracy appended (86.11%)\n", - "Epoch 8719: model set back to train mode\n", - "Epoch 8719: model parameters saved\n", - "Epoch 8720 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8720: avg_loss appended (2.7778)\n", - "Epoch 8720: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8720: accuracy appended (83.33%)\n", - "Epoch 8720: model set back to train mode\n", - "Epoch 8720: model parameters saved\n", - "Epoch 8721 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8721: avg_loss appended (2.7778)\n", - "Epoch 8721: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8721: accuracy appended (86.11%)\n", - "Epoch 8721: model set back to train mode\n", - "Epoch 8721: model parameters saved\n", - "Epoch 8722 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8722: avg_loss appended (2.7778)\n", - "Epoch 8722: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8722: accuracy appended (86.11%)\n", - "Epoch 8722: model set back to train mode\n", - "Epoch 8722: model parameters saved\n", - "Epoch 8723 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8723: avg_loss appended (2.7778)\n", - "Epoch 8723: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8723: accuracy appended (86.11%)\n", - "Epoch 8723: model set back to train mode\n", - "Epoch 8723: model parameters saved\n", - "Epoch 8724 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8724: avg_loss appended (2.7778)\n", - "Epoch 8724: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8724: accuracy appended (86.11%)\n", - "Epoch 8724: model set back to train mode\n", - "Epoch 8724: model parameters saved\n", - "Epoch 8725 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8725: avg_loss appended (2.7778)\n", - "Epoch 8725: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8725: accuracy appended (86.11%)\n", - "Epoch 8725: model set back to train mode\n", - "Epoch 8725: model parameters saved\n", - "Epoch 8726 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8726: avg_loss appended (2.7778)\n", - "Epoch 8726: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8726: accuracy appended (86.11%)\n", - "Epoch 8726: model set back to train mode\n", - "Epoch 8726: model parameters saved\n", - "Epoch 8727 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8727: avg_loss appended (2.7778)\n", - "Epoch 8727: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8727: accuracy appended (86.11%)\n", - "Epoch 8727: model set back to train mode\n", - "Epoch 8727: model parameters saved\n", - "Epoch 8728 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8728: avg_loss appended (2.7778)\n", - "Epoch 8728: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8728: accuracy appended (86.11%)\n", - "Epoch 8728: model set back to train mode\n", - "Epoch 8728: model parameters saved\n", - "Epoch 8729 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8729: avg_loss appended (2.7778)\n", - "Epoch 8729: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8729: accuracy appended (83.33%)\n", - "Epoch 8729: model set back to train mode\n", - "Epoch 8729: model parameters saved\n", - "Epoch 8730 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8730: avg_loss appended (2.7778)\n", - "Epoch 8730: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8730: accuracy appended (83.33%)\n", - "Epoch 8730: model set back to train mode\n", - "Epoch 8730: model parameters saved\n", - "Epoch 8731 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8731: avg_loss appended (2.7778)\n", - "Epoch 8731: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8731: accuracy appended (83.33%)\n", - "Epoch 8731: model set back to train mode\n", - "Epoch 8731: model parameters saved\n", - "Epoch 8732 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8732: avg_loss appended (2.7778)\n", - "Epoch 8732: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8732: accuracy appended (83.33%)\n", - "Epoch 8732: model set back to train mode\n", - "Epoch 8732: model parameters saved\n", - "Epoch 8733 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8733: avg_loss appended (2.7778)\n", - "Epoch 8733: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8733: accuracy appended (83.33%)\n", - "Epoch 8733: model set back to train mode\n", - "Epoch 8733: model parameters saved\n", - "Epoch 8734 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8734: avg_loss appended (2.7778)\n", - "Epoch 8734: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8734: accuracy appended (86.11%)\n", - "Epoch 8734: model set back to train mode\n", - "Epoch 8734: model parameters saved\n", - "Epoch 8735 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8735: avg_loss appended (2.7778)\n", - "Epoch 8735: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8735: accuracy appended (86.11%)\n", - "Epoch 8735: model set back to train mode\n", - "Epoch 8735: model parameters saved\n", - "Epoch 8736 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8736: avg_loss appended (2.7778)\n", - "Epoch 8736: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8736: accuracy appended (86.11%)\n", - "Epoch 8736: model set back to train mode\n", - "Epoch 8736: model parameters saved\n", - "Epoch 8737 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8737: avg_loss appended (2.7778)\n", - "Epoch 8737: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8737: accuracy appended (86.11%)\n", - "Epoch 8737: model set back to train mode\n", - "Epoch 8737: model parameters saved\n", - "Epoch 8738 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8738: avg_loss appended (2.7778)\n", - "Epoch 8738: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8738: accuracy appended (83.33%)\n", - "Epoch 8738: model set back to train mode\n", - "Epoch 8738: model parameters saved\n", - "Epoch 8739 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8739: avg_loss appended (2.7778)\n", - "Epoch 8739: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8739: accuracy appended (86.11%)\n", - "Epoch 8739: model set back to train mode\n", - "Epoch 8739: model parameters saved\n", - "Epoch 8740 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8740: avg_loss appended (2.7778)\n", - "Epoch 8740: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8740: accuracy appended (86.11%)\n", - "Epoch 8740: model set back to train mode\n", - "Epoch 8740: model parameters saved\n", - "Epoch 8741 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8741: avg_loss appended (2.7778)\n", - "Epoch 8741: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8741: accuracy appended (86.11%)\n", - "Epoch 8741: model set back to train mode\n", - "Epoch 8741: model parameters saved\n", - "Epoch 8742 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8742: avg_loss appended (2.7778)\n", - "Epoch 8742: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8742: accuracy appended (86.11%)\n", - "Epoch 8742: model set back to train mode\n", - "Epoch 8742: model parameters saved\n", - "Epoch 8743 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8743: avg_loss appended (2.7778)\n", - "Epoch 8743: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8743: accuracy appended (86.11%)\n", - "Epoch 8743: model set back to train mode\n", - "Epoch 8743: model parameters saved\n", - "Epoch 8744 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8744: avg_loss appended (2.7778)\n", - "Epoch 8744: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8744: accuracy appended (86.11%)\n", - "Epoch 8744: model set back to train mode\n", - "Epoch 8744: model parameters saved\n", - "Epoch 8745 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8745: avg_loss appended (2.7778)\n", - "Epoch 8745: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8745: accuracy appended (86.11%)\n", - "Epoch 8745: model set back to train mode\n", - "Epoch 8745: model parameters saved\n", - "Epoch 8746 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8746: avg_loss appended (2.7778)\n", - "Epoch 8746: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8746: accuracy appended (86.11%)\n", - "Epoch 8746: model set back to train mode\n", - "Epoch 8746: model parameters saved\n", - "Epoch 8747 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8747: avg_loss appended (2.7778)\n", - "Epoch 8747: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8747: accuracy appended (86.11%)\n", - "Epoch 8747: model set back to train mode\n", - "Epoch 8747: model parameters saved\n", - "Epoch 8748 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8748: avg_loss appended (2.7778)\n", - "Epoch 8748: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8748: accuracy appended (86.11%)\n", - "Epoch 8748: model set back to train mode\n", - "Epoch 8748: model parameters saved\n", - "Epoch 8749 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8749: avg_loss appended (2.7778)\n", - "Epoch 8749: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8749: accuracy appended (86.11%)\n", - "Epoch 8749: model set back to train mode\n", - "Epoch 8749: model parameters saved\n", - "Epoch 8750 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8750: avg_loss appended (2.7778)\n", - "Epoch 8750: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8750: accuracy appended (86.11%)\n", - "Epoch 8750: model set back to train mode\n", - "Epoch 8750: model parameters saved\n", - "Epoch 8751 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8751: avg_loss appended (2.7778)\n", - "Epoch 8751: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8751: accuracy appended (86.11%)\n", - "Epoch 8751: model set back to train mode\n", - "Epoch 8751: model parameters saved\n", - "Epoch 8752 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8752: avg_loss appended (2.7778)\n", - "Epoch 8752: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8752: accuracy appended (83.33%)\n", - "Epoch 8752: model set back to train mode\n", - "Epoch 8752: model parameters saved\n", - "Epoch 8753 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8753: avg_loss appended (2.7778)\n", - "Epoch 8753: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8753: accuracy appended (86.11%)\n", - "Epoch 8753: model set back to train mode\n", - "Epoch 8753: model parameters saved\n", - "Epoch 8754 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8754: avg_loss appended (2.7778)\n", - "Epoch 8754: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8754: accuracy appended (86.11%)\n", - "Epoch 8754: model set back to train mode\n", - "Epoch 8754: model parameters saved\n", - "Epoch 8755 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8755: avg_loss appended (2.7778)\n", - "Epoch 8755: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8755: accuracy appended (86.11%)\n", - "Epoch 8755: model set back to train mode\n", - "Epoch 8755: model parameters saved\n", - "Epoch 8756 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8756: avg_loss appended (2.7778)\n", - "Epoch 8756: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8756: accuracy appended (86.11%)\n", - "Epoch 8756: model set back to train mode\n", - "Epoch 8756: model parameters saved\n", - "Epoch 8757 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8757: avg_loss appended (2.7778)\n", - "Epoch 8757: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8757: accuracy appended (86.11%)\n", - "Epoch 8757: model set back to train mode\n", - "Epoch 8757: model parameters saved\n", - "Epoch 8758 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8758: avg_loss appended (2.7778)\n", - "Epoch 8758: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8758: accuracy appended (86.11%)\n", - "Epoch 8758: model set back to train mode\n", - "Epoch 8758: model parameters saved\n", - "Epoch 8759 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8759: avg_loss appended (2.7778)\n", - "Epoch 8759: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8759: accuracy appended (86.11%)\n", - "Epoch 8759: model set back to train mode\n", - "Epoch 8759: model parameters saved\n", - "Epoch 8760 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8760: avg_loss appended (2.7778)\n", - "Epoch 8760: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8760: accuracy appended (86.11%)\n", - "Epoch 8760: model set back to train mode\n", - "Epoch 8760: model parameters saved\n", - "Epoch 8761 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8761: avg_loss appended (2.7778)\n", - "Epoch 8761: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8761: accuracy appended (86.11%)\n", - "Epoch 8761: model set back to train mode\n", - "Epoch 8761: model parameters saved\n", - "Epoch 8762 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8762: avg_loss appended (2.7778)\n", - "Epoch 8762: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8762: accuracy appended (83.33%)\n", - "Epoch 8762: model set back to train mode\n", - "Epoch 8762: model parameters saved\n", - "Epoch 8763 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8763: avg_loss appended (2.7778)\n", - "Epoch 8763: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8763: accuracy appended (86.11%)\n", - "Epoch 8763: model set back to train mode\n", - "Epoch 8763: model parameters saved\n", - "Epoch 8764 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8764: avg_loss appended (2.7778)\n", - "Epoch 8764: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8764: accuracy appended (86.11%)\n", - "Epoch 8764: model set back to train mode\n", - "Epoch 8764: model parameters saved\n", - "Epoch 8765 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8765: avg_loss appended (2.7778)\n", - "Epoch 8765: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8765: accuracy appended (86.11%)\n", - "Epoch 8765: model set back to train mode\n", - "Epoch 8765: model parameters saved\n", - "Epoch 8766 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8766: avg_loss appended (2.7778)\n", - "Epoch 8766: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8766: accuracy appended (86.11%)\n", - "Epoch 8766: model set back to train mode\n", - "Epoch 8766: model parameters saved\n", - "Epoch 8767 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8767: avg_loss appended (2.7778)\n", - "Epoch 8767: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8767: accuracy appended (86.11%)\n", - "Epoch 8767: model set back to train mode\n", - "Epoch 8767: model parameters saved\n", - "Epoch 8768 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8768: avg_loss appended (2.7778)\n", - "Epoch 8768: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8768: accuracy appended (83.33%)\n", - "Epoch 8768: model set back to train mode\n", - "Epoch 8768: model parameters saved\n", - "Epoch 8769 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8769: avg_loss appended (2.7778)\n", - "Epoch 8769: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8769: accuracy appended (83.33%)\n", - "Epoch 8769: model set back to train mode\n", - "Epoch 8769: model parameters saved\n", - "Epoch 8770 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8770: avg_loss appended (2.7778)\n", - "Epoch 8770: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8770: accuracy appended (83.33%)\n", - "Epoch 8770: model set back to train mode\n", - "Epoch 8770: model parameters saved\n", - "Epoch 8771 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8771: avg_loss appended (2.7778)\n", - "Epoch 8771: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8771: accuracy appended (83.33%)\n", - "Epoch 8771: model set back to train mode\n", - "Epoch 8771: model parameters saved\n", - "Epoch 8772 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8772: avg_loss appended (2.7778)\n", - "Epoch 8772: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8772: accuracy appended (86.11%)\n", - "Epoch 8772: model set back to train mode\n", - "Epoch 8772: model parameters saved\n", - "Epoch 8773 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8773: avg_loss appended (2.7778)\n", - "Epoch 8773: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8773: accuracy appended (86.11%)\n", - "Epoch 8773: model set back to train mode\n", - "Epoch 8773: model parameters saved\n", - "Epoch 8774 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8774: avg_loss appended (2.7778)\n", - "Epoch 8774: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8774: accuracy appended (86.11%)\n", - "Epoch 8774: model set back to train mode\n", - "Epoch 8774: model parameters saved\n", - "Epoch 8775 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8775: avg_loss appended (2.7778)\n", - "Epoch 8775: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8775: accuracy appended (83.33%)\n", - "Epoch 8775: model set back to train mode\n", - "Epoch 8775: model parameters saved\n", - "Epoch 8776 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8776: avg_loss appended (2.7778)\n", - "Epoch 8776: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8776: accuracy appended (83.33%)\n", - "Epoch 8776: model set back to train mode\n", - "Epoch 8776: model parameters saved\n", - "Epoch 8777 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8777: avg_loss appended (2.7778)\n", - "Epoch 8777: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8777: accuracy appended (83.33%)\n", - "Epoch 8777: model set back to train mode\n", - "Epoch 8777: model parameters saved\n", - "Epoch 8778 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8778: avg_loss appended (2.7778)\n", - "Epoch 8778: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8778: accuracy appended (86.11%)\n", - "Epoch 8778: model set back to train mode\n", - "Epoch 8778: model parameters saved\n", - "Epoch 8779 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8779: avg_loss appended (2.7778)\n", - "Epoch 8779: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8779: accuracy appended (86.11%)\n", - "Epoch 8779: model set back to train mode\n", - "Epoch 8779: model parameters saved\n", - "Epoch 8780 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8780: avg_loss appended (2.7778)\n", - "Epoch 8780: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8780: accuracy appended (86.11%)\n", - "Epoch 8780: model set back to train mode\n", - "Epoch 8780: model parameters saved\n", - "Epoch 8781 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8781: avg_loss appended (2.7778)\n", - "Epoch 8781: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8781: accuracy appended (86.11%)\n", - "Epoch 8781: model set back to train mode\n", - "Epoch 8781: model parameters saved\n", - "Epoch 8782 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8782: avg_loss appended (2.7778)\n", - "Epoch 8782: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8782: accuracy appended (86.11%)\n", - "Epoch 8782: model set back to train mode\n", - "Epoch 8782: model parameters saved\n", - "Epoch 8783 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8783: avg_loss appended (2.7778)\n", - "Epoch 8783: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8783: accuracy appended (86.11%)\n", - "Epoch 8783: model set back to train mode\n", - "Epoch 8783: model parameters saved\n", - "Epoch 8784 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8784: avg_loss appended (2.7778)\n", - "Epoch 8784: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8784: accuracy appended (86.11%)\n", - "Epoch 8784: model set back to train mode\n", - "Epoch 8784: model parameters saved\n", - "Epoch 8785 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8785: avg_loss appended (2.7778)\n", - "Epoch 8785: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8785: accuracy appended (86.11%)\n", - "Epoch 8785: model set back to train mode\n", - "Epoch 8785: model parameters saved\n", - "Epoch 8786 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8786: avg_loss appended (2.7778)\n", - "Epoch 8786: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8786: accuracy appended (83.33%)\n", - "Epoch 8786: model set back to train mode\n", - "Epoch 8786: model parameters saved\n", - "Epoch 8787 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8787: avg_loss appended (2.7778)\n", - "Epoch 8787: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8787: accuracy appended (83.33%)\n", - "Epoch 8787: model set back to train mode\n", - "Epoch 8787: model parameters saved\n", - "Epoch 8788 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8788: avg_loss appended (2.7778)\n", - "Epoch 8788: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8788: accuracy appended (83.33%)\n", - "Epoch 8788: model set back to train mode\n", - "Epoch 8788: model parameters saved\n", - "Epoch 8789 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8789: avg_loss appended (2.7778)\n", - "Epoch 8789: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8789: accuracy appended (86.11%)\n", - "Epoch 8789: model set back to train mode\n", - "Epoch 8789: model parameters saved\n", - "Epoch 8790 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8790: avg_loss appended (2.7778)\n", - "Epoch 8790: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8790: accuracy appended (86.11%)\n", - "Epoch 8790: model set back to train mode\n", - "Epoch 8790: model parameters saved\n", - "Epoch 8791 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8791: avg_loss appended (2.7778)\n", - "Epoch 8791: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8791: accuracy appended (86.11%)\n", - "Epoch 8791: model set back to train mode\n", - "Epoch 8791: model parameters saved\n", - "Epoch 8792 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8792: avg_loss appended (2.7778)\n", - "Epoch 8792: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8792: accuracy appended (86.11%)\n", - "Epoch 8792: model set back to train mode\n", - "Epoch 8792: model parameters saved\n", - "Epoch 8793 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8793: avg_loss appended (2.7778)\n", - "Epoch 8793: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8793: accuracy appended (86.11%)\n", - "Epoch 8793: model set back to train mode\n", - "Epoch 8793: model parameters saved\n", - "Epoch 8794 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8794: avg_loss appended (2.7778)\n", - "Epoch 8794: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8794: accuracy appended (86.11%)\n", - "Epoch 8794: model set back to train mode\n", - "Epoch 8794: model parameters saved\n", - "Epoch 8795 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8795: avg_loss appended (2.7778)\n", - "Epoch 8795: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8795: accuracy appended (86.11%)\n", - "Epoch 8795: model set back to train mode\n", - "Epoch 8795: model parameters saved\n", - "Epoch 8796 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8796: avg_loss appended (2.7778)\n", - "Epoch 8796: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8796: accuracy appended (86.11%)\n", - "Epoch 8796: model set back to train mode\n", - "Epoch 8796: model parameters saved\n", - "Epoch 8797 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8797: avg_loss appended (2.7778)\n", - "Epoch 8797: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8797: accuracy appended (86.11%)\n", - "Epoch 8797: model set back to train mode\n", - "Epoch 8797: model parameters saved\n", - "Epoch 8798 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8798: avg_loss appended (2.7778)\n", - "Epoch 8798: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8798: accuracy appended (86.11%)\n", - "Epoch 8798: model set back to train mode\n", - "Epoch 8798: model parameters saved\n", - "Epoch 8799 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8799: avg_loss appended (2.7778)\n", - "Epoch 8799: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8799: accuracy appended (86.11%)\n", - "Epoch 8799: model set back to train mode\n", - "Epoch 8799: model parameters saved\n", - "Epoch 8800 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8800: avg_loss appended (2.7778)\n", - "Epoch 8800: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8800: accuracy appended (86.11%)\n", - "Epoch 8800: model set back to train mode\n", - "Epoch 8800: model parameters saved\n", - "Epoch 8800/10000, Loss: 2.7778, Accuracy: 86.11%\n", - "Epoch 8801 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8801: avg_loss appended (2.7778)\n", - "Epoch 8801: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8801: accuracy appended (86.11%)\n", - "Epoch 8801: model set back to train mode\n", - "Epoch 8801: model parameters saved\n", - "Epoch 8802 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8802: avg_loss appended (2.7778)\n", - "Epoch 8802: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8802: accuracy appended (83.33%)\n", - "Epoch 8802: model set back to train mode\n", - "Epoch 8802: model parameters saved\n", - "Epoch 8803 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8803: avg_loss appended (2.7778)\n", - "Epoch 8803: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8803: accuracy appended (86.11%)\n", - "Epoch 8803: model set back to train mode\n", - "Epoch 8803: model parameters saved\n", - "Epoch 8804 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8804: avg_loss appended (2.7778)\n", - "Epoch 8804: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8804: accuracy appended (86.11%)\n", - "Epoch 8804: model set back to train mode\n", - "Epoch 8804: model parameters saved\n", - "Epoch 8805 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8805: avg_loss appended (2.7778)\n", - "Epoch 8805: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8805: accuracy appended (86.11%)\n", - "Epoch 8805: model set back to train mode\n", - "Epoch 8805: model parameters saved\n", - "Epoch 8806 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8806: avg_loss appended (2.7778)\n", - "Epoch 8806: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8806: accuracy appended (86.11%)\n", - "Epoch 8806: model set back to train mode\n", - "Epoch 8806: model parameters saved\n", - "Epoch 8807 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8807: avg_loss appended (2.7778)\n", - "Epoch 8807: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8807: accuracy appended (86.11%)\n", - "Epoch 8807: model set back to train mode\n", - "Epoch 8807: model parameters saved\n", - "Epoch 8808 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8808: avg_loss appended (2.7778)\n", - "Epoch 8808: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8808: accuracy appended (86.11%)\n", - "Epoch 8808: model set back to train mode\n", - "Epoch 8808: model parameters saved\n", - "Epoch 8809 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8809: avg_loss appended (2.7778)\n", - "Epoch 8809: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8809: accuracy appended (86.11%)\n", - "Epoch 8809: model set back to train mode\n", - "Epoch 8809: model parameters saved\n", - "Epoch 8810 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8810: avg_loss appended (2.7778)\n", - "Epoch 8810: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8810: accuracy appended (86.11%)\n", - "Epoch 8810: model set back to train mode\n", - "Epoch 8810: model parameters saved\n", - "Epoch 8811 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8811: avg_loss appended (2.7778)\n", - "Epoch 8811: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8811: accuracy appended (86.11%)\n", - "Epoch 8811: model set back to train mode\n", - "Epoch 8811: model parameters saved\n", - "Epoch 8812 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8812: avg_loss appended (2.7778)\n", - "Epoch 8812: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8812: accuracy appended (86.11%)\n", - "Epoch 8812: model set back to train mode\n", - "Epoch 8812: model parameters saved\n", - "Epoch 8813 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8813: avg_loss appended (2.7778)\n", - "Epoch 8813: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8813: accuracy appended (86.11%)\n", - "Epoch 8813: model set back to train mode\n", - "Epoch 8813: model parameters saved\n", - "Epoch 8814 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8814: avg_loss appended (2.7778)\n", - "Epoch 8814: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8814: accuracy appended (86.11%)\n", - "Epoch 8814: model set back to train mode\n", - "Epoch 8814: model parameters saved\n", - "Epoch 8815 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8815: avg_loss appended (2.7778)\n", - "Epoch 8815: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8815: accuracy appended (86.11%)\n", - "Epoch 8815: model set back to train mode\n", - "Epoch 8815: model parameters saved\n", - "Epoch 8816 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8816: avg_loss appended (2.7778)\n", - "Epoch 8816: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8816: accuracy appended (86.11%)\n", - "Epoch 8816: model set back to train mode\n", - "Epoch 8816: model parameters saved\n", - "Epoch 8817 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8817: avg_loss appended (2.7778)\n", - "Epoch 8817: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8817: accuracy appended (83.33%)\n", - "Epoch 8817: model set back to train mode\n", - "Epoch 8817: model parameters saved\n", - "Epoch 8818 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8818: avg_loss appended (2.7778)\n", - "Epoch 8818: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8818: accuracy appended (83.33%)\n", - "Epoch 8818: model set back to train mode\n", - "Epoch 8818: model parameters saved\n", - "Epoch 8819 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8819: avg_loss appended (2.7778)\n", - "Epoch 8819: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8819: accuracy appended (83.33%)\n", - "Epoch 8819: model set back to train mode\n", - "Epoch 8819: model parameters saved\n", - "Epoch 8820 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8820: avg_loss appended (2.7778)\n", - "Epoch 8820: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8820: accuracy appended (83.33%)\n", - "Epoch 8820: model set back to train mode\n", - "Epoch 8820: model parameters saved\n", - "Epoch 8821 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8821: avg_loss appended (2.7778)\n", - "Epoch 8821: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8821: accuracy appended (86.11%)\n", - "Epoch 8821: model set back to train mode\n", - "Epoch 8821: model parameters saved\n", - "Epoch 8822 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8822: avg_loss appended (2.7778)\n", - "Epoch 8822: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8822: accuracy appended (86.11%)\n", - "Epoch 8822: model set back to train mode\n", - "Epoch 8822: model parameters saved\n", - "Epoch 8823 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8823: avg_loss appended (2.7778)\n", - "Epoch 8823: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8823: accuracy appended (86.11%)\n", - "Epoch 8823: model set back to train mode\n", - "Epoch 8823: model parameters saved\n", - "Epoch 8824 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8824: avg_loss appended (2.7778)\n", - "Epoch 8824: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8824: accuracy appended (86.11%)\n", - "Epoch 8824: model set back to train mode\n", - "Epoch 8824: model parameters saved\n", - "Epoch 8825 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8825: avg_loss appended (2.7778)\n", - "Epoch 8825: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8825: accuracy appended (86.11%)\n", - "Epoch 8825: model set back to train mode\n", - "Epoch 8825: model parameters saved\n", - "Epoch 8826 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8826: avg_loss appended (2.7778)\n", - "Epoch 8826: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8826: accuracy appended (86.11%)\n", - "Epoch 8826: model set back to train mode\n", - "Epoch 8826: model parameters saved\n", - "Epoch 8827 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8827: avg_loss appended (2.7778)\n", - "Epoch 8827: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8827: accuracy appended (86.11%)\n", - "Epoch 8827: model set back to train mode\n", - "Epoch 8827: model parameters saved\n", - "Epoch 8828 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8828: avg_loss appended (2.7778)\n", - "Epoch 8828: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8828: accuracy appended (83.33%)\n", - "Epoch 8828: model set back to train mode\n", - "Epoch 8828: model parameters saved\n", - "Epoch 8829 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8829: avg_loss appended (2.7778)\n", - "Epoch 8829: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8829: accuracy appended (83.33%)\n", - "Epoch 8829: model set back to train mode\n", - "Epoch 8829: model parameters saved\n", - "Epoch 8830 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8830: avg_loss appended (2.7778)\n", - "Epoch 8830: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8830: accuracy appended (86.11%)\n", - "Epoch 8830: model set back to train mode\n", - "Epoch 8830: model parameters saved\n", - "Epoch 8831 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8831: avg_loss appended (2.7778)\n", - "Epoch 8831: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8831: accuracy appended (86.11%)\n", - "Epoch 8831: model set back to train mode\n", - "Epoch 8831: model parameters saved\n", - "Epoch 8832 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8832: avg_loss appended (2.7778)\n", - "Epoch 8832: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8832: accuracy appended (86.11%)\n", - "Epoch 8832: model set back to train mode\n", - "Epoch 8832: model parameters saved\n", - "Epoch 8833 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8833: avg_loss appended (2.7778)\n", - "Epoch 8833: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8833: accuracy appended (86.11%)\n", - "Epoch 8833: model set back to train mode\n", - "Epoch 8833: model parameters saved\n", - "Epoch 8834 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8834: avg_loss appended (2.7778)\n", - "Epoch 8834: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8834: accuracy appended (86.11%)\n", - "Epoch 8834: model set back to train mode\n", - "Epoch 8834: model parameters saved\n", - "Epoch 8835 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8835: avg_loss appended (2.7778)\n", - "Epoch 8835: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8835: accuracy appended (83.33%)\n", - "Epoch 8835: model set back to train mode\n", - "Epoch 8835: model parameters saved\n", - "Epoch 8836 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8836: avg_loss appended (2.7778)\n", - "Epoch 8836: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8836: accuracy appended (83.33%)\n", - "Epoch 8836: model set back to train mode\n", - "Epoch 8836: model parameters saved\n", - "Epoch 8837 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8837: avg_loss appended (2.7778)\n", - "Epoch 8837: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8837: accuracy appended (86.11%)\n", - "Epoch 8837: model set back to train mode\n", - "Epoch 8837: model parameters saved\n", - "Epoch 8838 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8838: avg_loss appended (2.7778)\n", - "Epoch 8838: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8838: accuracy appended (86.11%)\n", - "Epoch 8838: model set back to train mode\n", - "Epoch 8838: model parameters saved\n", - "Epoch 8839 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8839: avg_loss appended (2.7778)\n", - "Epoch 8839: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8839: accuracy appended (86.11%)\n", - "Epoch 8839: model set back to train mode\n", - "Epoch 8839: model parameters saved\n", - "Epoch 8840 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8840: avg_loss appended (2.7778)\n", - "Epoch 8840: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8840: accuracy appended (86.11%)\n", - "Epoch 8840: model set back to train mode\n", - "Epoch 8840: model parameters saved\n", - "Epoch 8841 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8841: avg_loss appended (2.7778)\n", - "Epoch 8841: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8841: accuracy appended (86.11%)\n", - "Epoch 8841: model set back to train mode\n", - "Epoch 8841: model parameters saved\n", - "Epoch 8842 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8842: avg_loss appended (2.7778)\n", - "Epoch 8842: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8842: accuracy appended (86.11%)\n", - "Epoch 8842: model set back to train mode\n", - "Epoch 8842: model parameters saved\n", - "Epoch 8843 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8843: avg_loss appended (2.7778)\n", - "Epoch 8843: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8843: accuracy appended (86.11%)\n", - "Epoch 8843: model set back to train mode\n", - "Epoch 8843: model parameters saved\n", - "Epoch 8844 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8844: avg_loss appended (2.7778)\n", - "Epoch 8844: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8844: accuracy appended (83.33%)\n", - "Epoch 8844: model set back to train mode\n", - "Epoch 8844: model parameters saved\n", - "Epoch 8845 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8845: avg_loss appended (2.7778)\n", - "Epoch 8845: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8845: accuracy appended (83.33%)\n", - "Epoch 8845: model set back to train mode\n", - "Epoch 8845: model parameters saved\n", - "Epoch 8846 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8846: avg_loss appended (2.7778)\n", - "Epoch 8846: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8846: accuracy appended (86.11%)\n", - "Epoch 8846: model set back to train mode\n", - "Epoch 8846: model parameters saved\n", - "Epoch 8847 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8847: avg_loss appended (2.7778)\n", - "Epoch 8847: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8847: accuracy appended (86.11%)\n", - "Epoch 8847: model set back to train mode\n", - "Epoch 8847: model parameters saved\n", - "Epoch 8848 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8848: avg_loss appended (2.7778)\n", - "Epoch 8848: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8848: accuracy appended (86.11%)\n", - "Epoch 8848: model set back to train mode\n", - "Epoch 8848: model parameters saved\n", - "Epoch 8849 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8849: avg_loss appended (2.7778)\n", - "Epoch 8849: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8849: accuracy appended (86.11%)\n", - "Epoch 8849: model set back to train mode\n", - "Epoch 8849: model parameters saved\n", - "Epoch 8850 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8850: avg_loss appended (2.7778)\n", - "Epoch 8850: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8850: accuracy appended (86.11%)\n", - "Epoch 8850: model set back to train mode\n", - "Epoch 8850: model parameters saved\n", - "Epoch 8851 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8851: avg_loss appended (2.7778)\n", - "Epoch 8851: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8851: accuracy appended (86.11%)\n", - "Epoch 8851: model set back to train mode\n", - "Epoch 8851: model parameters saved\n", - "Epoch 8852 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8852: avg_loss appended (2.7778)\n", - "Epoch 8852: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8852: accuracy appended (86.11%)\n", - "Epoch 8852: model set back to train mode\n", - "Epoch 8852: model parameters saved\n", - "Epoch 8853 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8853: avg_loss appended (2.7778)\n", - "Epoch 8853: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8853: accuracy appended (86.11%)\n", - "Epoch 8853: model set back to train mode\n", - "Epoch 8853: model parameters saved\n", - "Epoch 8854 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8854: avg_loss appended (2.7778)\n", - "Epoch 8854: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8854: accuracy appended (86.11%)\n", - "Epoch 8854: model set back to train mode\n", - "Epoch 8854: model parameters saved\n", - "Epoch 8855 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8855: avg_loss appended (2.7778)\n", - "Epoch 8855: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8855: accuracy appended (86.11%)\n", - "Epoch 8855: model set back to train mode\n", - "Epoch 8855: model parameters saved\n", - "Epoch 8856 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8856: avg_loss appended (2.7778)\n", - "Epoch 8856: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8856: accuracy appended (86.11%)\n", - "Epoch 8856: model set back to train mode\n", - "Epoch 8856: model parameters saved\n", - "Epoch 8857 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8857: avg_loss appended (2.7778)\n", - "Epoch 8857: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8857: accuracy appended (86.11%)\n", - "Epoch 8857: model set back to train mode\n", - "Epoch 8857: model parameters saved\n", - "Epoch 8858 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8858: avg_loss appended (2.7778)\n", - "Epoch 8858: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8858: accuracy appended (86.11%)\n", - "Epoch 8858: model set back to train mode\n", - "Epoch 8858: model parameters saved\n", - "Epoch 8859 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8859: avg_loss appended (2.7778)\n", - "Epoch 8859: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8859: accuracy appended (83.33%)\n", - "Epoch 8859: model set back to train mode\n", - "Epoch 8859: model parameters saved\n", - "Epoch 8860 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8860: avg_loss appended (2.7778)\n", - "Epoch 8860: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8860: accuracy appended (83.33%)\n", - "Epoch 8860: model set back to train mode\n", - "Epoch 8860: model parameters saved\n", - "Epoch 8861 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8861: avg_loss appended (2.7778)\n", - "Epoch 8861: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8861: accuracy appended (83.33%)\n", - "Epoch 8861: model set back to train mode\n", - "Epoch 8861: model parameters saved\n", - "Epoch 8862 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8862: avg_loss appended (2.7778)\n", - "Epoch 8862: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8862: accuracy appended (86.11%)\n", - "Epoch 8862: model set back to train mode\n", - "Epoch 8862: model parameters saved\n", - "Epoch 8863 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8863: avg_loss appended (2.7778)\n", - "Epoch 8863: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8863: accuracy appended (86.11%)\n", - "Epoch 8863: model set back to train mode\n", - "Epoch 8863: model parameters saved\n", - "Epoch 8864 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8864: avg_loss appended (2.7778)\n", - "Epoch 8864: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8864: accuracy appended (86.11%)\n", - "Epoch 8864: model set back to train mode\n", - "Epoch 8864: model parameters saved\n", - "Epoch 8865 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8865: avg_loss appended (2.7778)\n", - "Epoch 8865: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8865: accuracy appended (83.33%)\n", - "Epoch 8865: model set back to train mode\n", - "Epoch 8865: model parameters saved\n", - "Epoch 8866 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8866: avg_loss appended (2.7778)\n", - "Epoch 8866: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8866: accuracy appended (83.33%)\n", - "Epoch 8866: model set back to train mode\n", - "Epoch 8866: model parameters saved\n", - "Epoch 8867 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8867: avg_loss appended (2.7778)\n", - "Epoch 8867: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8867: accuracy appended (83.33%)\n", - "Epoch 8867: model set back to train mode\n", - "Epoch 8867: model parameters saved\n", - "Epoch 8868 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8868: avg_loss appended (2.7778)\n", - "Epoch 8868: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8868: accuracy appended (83.33%)\n", - "Epoch 8868: model set back to train mode\n", - "Epoch 8868: model parameters saved\n", - "Epoch 8869 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8869: avg_loss appended (2.7778)\n", - "Epoch 8869: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8869: accuracy appended (86.11%)\n", - "Epoch 8869: model set back to train mode\n", - "Epoch 8869: model parameters saved\n", - "Epoch 8870 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8870: avg_loss appended (2.7778)\n", - "Epoch 8870: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8870: accuracy appended (86.11%)\n", - "Epoch 8870: model set back to train mode\n", - "Epoch 8870: model parameters saved\n", - "Epoch 8871 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8871: avg_loss appended (2.7778)\n", - "Epoch 8871: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8871: accuracy appended (86.11%)\n", - "Epoch 8871: model set back to train mode\n", - "Epoch 8871: model parameters saved\n", - "Epoch 8872 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8872: avg_loss appended (2.7778)\n", - "Epoch 8872: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8872: accuracy appended (86.11%)\n", - "Epoch 8872: model set back to train mode\n", - "Epoch 8872: model parameters saved\n", - "Epoch 8873 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8873: avg_loss appended (2.7778)\n", - "Epoch 8873: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8873: accuracy appended (86.11%)\n", - "Epoch 8873: model set back to train mode\n", - "Epoch 8873: model parameters saved\n", - "Epoch 8874 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8874: avg_loss appended (2.7778)\n", - "Epoch 8874: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8874: accuracy appended (86.11%)\n", - "Epoch 8874: model set back to train mode\n", - "Epoch 8874: model parameters saved\n", - "Epoch 8875 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8875: avg_loss appended (2.7778)\n", - "Epoch 8875: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8875: accuracy appended (86.11%)\n", - "Epoch 8875: model set back to train mode\n", - "Epoch 8875: model parameters saved\n", - "Epoch 8876 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8876: avg_loss appended (2.7778)\n", - "Epoch 8876: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8876: accuracy appended (86.11%)\n", - "Epoch 8876: model set back to train mode\n", - "Epoch 8876: model parameters saved\n", - "Epoch 8877 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8877: avg_loss appended (2.7778)\n", - "Epoch 8877: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8877: accuracy appended (86.11%)\n", - "Epoch 8877: model set back to train mode\n", - "Epoch 8877: model parameters saved\n", - "Epoch 8878 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8878: avg_loss appended (2.7778)\n", - "Epoch 8878: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8878: accuracy appended (86.11%)\n", - "Epoch 8878: model set back to train mode\n", - "Epoch 8878: model parameters saved\n", - "Epoch 8879 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8879: avg_loss appended (2.7778)\n", - "Epoch 8879: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8879: accuracy appended (86.11%)\n", - "Epoch 8879: model set back to train mode\n", - "Epoch 8879: model parameters saved\n", - "Epoch 8880 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8880: avg_loss appended (2.7778)\n", - "Epoch 8880: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8880: accuracy appended (86.11%)\n", - "Epoch 8880: model set back to train mode\n", - "Epoch 8880: model parameters saved\n", - "Epoch 8881 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8881: avg_loss appended (2.7778)\n", - "Epoch 8881: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8881: accuracy appended (86.11%)\n", - "Epoch 8881: model set back to train mode\n", - "Epoch 8881: model parameters saved\n", - "Epoch 8882 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8882: avg_loss appended (2.7778)\n", - "Epoch 8882: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8882: accuracy appended (86.11%)\n", - "Epoch 8882: model set back to train mode\n", - "Epoch 8882: model parameters saved\n", - "Epoch 8883 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8883: avg_loss appended (2.7778)\n", - "Epoch 8883: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8883: accuracy appended (86.11%)\n", - "Epoch 8883: model set back to train mode\n", - "Epoch 8883: model parameters saved\n", - "Epoch 8884 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8884: avg_loss appended (2.7778)\n", - "Epoch 8884: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8884: accuracy appended (86.11%)\n", - "Epoch 8884: model set back to train mode\n", - "Epoch 8884: model parameters saved\n", - "Epoch 8885 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8885: avg_loss appended (2.7778)\n", - "Epoch 8885: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8885: accuracy appended (86.11%)\n", - "Epoch 8885: model set back to train mode\n", - "Epoch 8885: model parameters saved\n", - "Epoch 8886 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8886: avg_loss appended (2.7778)\n", - "Epoch 8886: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8886: accuracy appended (86.11%)\n", - "Epoch 8886: model set back to train mode\n", - "Epoch 8886: model parameters saved\n", - "Epoch 8887 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8887: avg_loss appended (2.7778)\n", - "Epoch 8887: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 8887: accuracy appended (83.33%)\n", - "Epoch 8887: model set back to train mode\n", - "Epoch 8887: model parameters saved\n", - "Epoch 8888 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8888: avg_loss appended (2.7778)\n", - "Epoch 8888: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8888: accuracy appended (86.11%)\n", - "Epoch 8888: model set back to train mode\n", - "Epoch 8888: model parameters saved\n", - "Epoch 8889 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8889: avg_loss appended (2.7778)\n", - "Epoch 8889: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8889: accuracy appended (86.11%)\n", - "Epoch 8889: model set back to train mode\n", - "Epoch 8889: model parameters saved\n", - "Epoch 8890 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8890: avg_loss appended (2.7778)\n", - "Epoch 8890: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8890: accuracy appended (86.11%)\n", - "Epoch 8890: model set back to train mode\n", - "Epoch 8890: model parameters saved\n", - "Epoch 8891 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8891: avg_loss appended (2.7778)\n", - "Epoch 8891: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8891: accuracy appended (86.11%)\n", - "Epoch 8891: model set back to train mode\n", - "Epoch 8891: model parameters saved\n", - "Epoch 8892 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8892: avg_loss appended (2.7778)\n", - "Epoch 8892: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8892: accuracy appended (86.11%)\n", - "Epoch 8892: model set back to train mode\n", - "Epoch 8892: model parameters saved\n", - "Epoch 8893 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8893: avg_loss appended (2.7778)\n", - "Epoch 8893: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8893: accuracy appended (86.11%)\n", - "Epoch 8893: model set back to train mode\n", - "Epoch 8893: model parameters saved\n", - "Epoch 8894 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8894: avg_loss appended (2.7778)\n", - "Epoch 8894: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8894: accuracy appended (86.11%)\n", - "Epoch 8894: model set back to train mode\n", - "Epoch 8894: model parameters saved\n", - "Epoch 8895 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8895: avg_loss appended (2.7778)\n", - "Epoch 8895: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8895: accuracy appended (86.11%)\n", - "Epoch 8895: model set back to train mode\n", - "Epoch 8895: model parameters saved\n", - "Epoch 8896 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8896: avg_loss appended (2.7778)\n", - "Epoch 8896: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8896: accuracy appended (86.11%)\n", - "Epoch 8896: model set back to train mode\n", - "Epoch 8896: model parameters saved\n", - "Epoch 8897 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8897: avg_loss appended (2.7778)\n", - "Epoch 8897: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8897: accuracy appended (86.11%)\n", - "Epoch 8897: model set back to train mode\n", - "Epoch 8897: model parameters saved\n", - "Epoch 8898 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8898: avg_loss appended (2.7778)\n", - "Epoch 8898: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8898: accuracy appended (86.11%)\n", - "Epoch 8898: model set back to train mode\n", - "Epoch 8898: model parameters saved\n", - "Epoch 8899 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8899: avg_loss appended (2.7778)\n", - "Epoch 8899: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8899: accuracy appended (86.11%)\n", - "Epoch 8899: model set back to train mode\n", - "Epoch 8899: model parameters saved\n", - "Epoch 8900 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8900: avg_loss appended (2.7778)\n", - "Epoch 8900: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8900: accuracy appended (86.11%)\n", - "Epoch 8900: model set back to train mode\n", - "Epoch 8900: model parameters saved\n", - "Epoch 8900/10000, Loss: 2.7778, Accuracy: 86.11%\n", - "Epoch 8901 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8901: avg_loss appended (2.7778)\n", - "Epoch 8901: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8901: accuracy appended (86.11%)\n", - "Epoch 8901: model set back to train mode\n", - "Epoch 8901: model parameters saved\n", - "Epoch 8902 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8902: avg_loss appended (2.7778)\n", - "Epoch 8902: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8902: accuracy appended (86.11%)\n", - "Epoch 8902: model set back to train mode\n", - "Epoch 8902: model parameters saved\n", - "Epoch 8903 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8903: avg_loss appended (2.7778)\n", - "Epoch 8903: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8903: accuracy appended (86.11%)\n", - "Epoch 8903: model set back to train mode\n", - "Epoch 8903: model parameters saved\n", - "Epoch 8904 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8904: avg_loss appended (2.7778)\n", - "Epoch 8904: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8904: accuracy appended (86.11%)\n", - "Epoch 8904: model set back to train mode\n", - "Epoch 8904: model parameters saved\n", - "Epoch 8905 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8905: avg_loss appended (2.7778)\n", - "Epoch 8905: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8905: accuracy appended (86.11%)\n", - "Epoch 8905: model set back to train mode\n", - "Epoch 8905: model parameters saved\n", - "Epoch 8906 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8906: avg_loss appended (2.7778)\n", - "Epoch 8906: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8906: accuracy appended (86.11%)\n", - "Epoch 8906: model set back to train mode\n", - "Epoch 8906: model parameters saved\n", - "Epoch 8907 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8907: avg_loss appended (2.7778)\n", - "Epoch 8907: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8907: accuracy appended (86.11%)\n", - "Epoch 8907: model set back to train mode\n", - "Epoch 8907: model parameters saved\n", - "Epoch 8908 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8908: avg_loss appended (2.7778)\n", - "Epoch 8908: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8908: accuracy appended (86.11%)\n", - "Epoch 8908: model set back to train mode\n", - "Epoch 8908: model parameters saved\n", - "Epoch 8909 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8909: avg_loss appended (2.7778)\n", - "Epoch 8909: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8909: accuracy appended (86.11%)\n", - "Epoch 8909: model set back to train mode\n", - "Epoch 8909: model parameters saved\n", - "Epoch 8910 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8910: avg_loss appended (2.7778)\n", - "Epoch 8910: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8910: accuracy appended (86.11%)\n", - "Epoch 8910: model set back to train mode\n", - "Epoch 8910: model parameters saved\n", - "Epoch 8911 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8911: avg_loss appended (2.7778)\n", - "Epoch 8911: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8911: accuracy appended (86.11%)\n", - "Epoch 8911: model set back to train mode\n", - "Epoch 8911: model parameters saved\n", - "Epoch 8912 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8912: avg_loss appended (2.7778)\n", - "Epoch 8912: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8912: accuracy appended (86.11%)\n", - "Epoch 8912: model set back to train mode\n", - "Epoch 8912: model parameters saved\n", - "Epoch 8913 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8913: avg_loss appended (2.7778)\n", - "Epoch 8913: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8913: accuracy appended (86.11%)\n", - "Epoch 8913: model set back to train mode\n", - "Epoch 8913: model parameters saved\n", - "Epoch 8914 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8914: avg_loss appended (2.7778)\n", - "Epoch 8914: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8914: accuracy appended (86.11%)\n", - "Epoch 8914: model set back to train mode\n", - "Epoch 8914: model parameters saved\n", - "Epoch 8915 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8915: avg_loss appended (2.7778)\n", - "Epoch 8915: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8915: accuracy appended (86.11%)\n", - "Epoch 8915: model set back to train mode\n", - "Epoch 8915: model parameters saved\n", - "Epoch 8916 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8916: avg_loss appended (2.7778)\n", - "Epoch 8916: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8916: accuracy appended (86.11%)\n", - "Epoch 8916: model set back to train mode\n", - "Epoch 8916: model parameters saved\n", - "Epoch 8917 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8917: avg_loss appended (2.7778)\n", - "Epoch 8917: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8917: accuracy appended (86.11%)\n", - "Epoch 8917: model set back to train mode\n", - "Epoch 8917: model parameters saved\n", - "Epoch 8918 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8918: avg_loss appended (2.7778)\n", - "Epoch 8918: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8918: accuracy appended (86.11%)\n", - "Epoch 8918: model set back to train mode\n", - "Epoch 8918: model parameters saved\n", - "Epoch 8919 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8919: avg_loss appended (2.7778)\n", - "Epoch 8919: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8919: accuracy appended (86.11%)\n", - "Epoch 8919: model set back to train mode\n", - "Epoch 8919: model parameters saved\n", - "Epoch 8920 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8920: avg_loss appended (2.7778)\n", - "Epoch 8920: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8920: accuracy appended (86.11%)\n", - "Epoch 8920: model set back to train mode\n", - "Epoch 8920: model parameters saved\n", - "Epoch 8921 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8921: avg_loss appended (2.7778)\n", - "Epoch 8921: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8921: accuracy appended (86.11%)\n", - "Epoch 8921: model set back to train mode\n", - "Epoch 8921: model parameters saved\n", - "Epoch 8922 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8922: avg_loss appended (2.7778)\n", - "Epoch 8922: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8922: accuracy appended (86.11%)\n", - "Epoch 8922: model set back to train mode\n", - "Epoch 8922: model parameters saved\n", - "Epoch 8923 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8923: avg_loss appended (2.7778)\n", - "Epoch 8923: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8923: accuracy appended (86.11%)\n", - "Epoch 8923: model set back to train mode\n", - "Epoch 8923: model parameters saved\n", - "Epoch 8924 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8924: avg_loss appended (2.7778)\n", - "Epoch 8924: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8924: accuracy appended (86.11%)\n", - "Epoch 8924: model set back to train mode\n", - "Epoch 8924: model parameters saved\n", - "Epoch 8925 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8925: avg_loss appended (2.7778)\n", - "Epoch 8925: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8925: accuracy appended (86.11%)\n", - "Epoch 8925: model set back to train mode\n", - "Epoch 8925: model parameters saved\n", - "Epoch 8926 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8926: avg_loss appended (2.7778)\n", - "Epoch 8926: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8926: accuracy appended (86.11%)\n", - "Epoch 8926: model set back to train mode\n", - "Epoch 8926: model parameters saved\n", - "Epoch 8927 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8927: avg_loss appended (2.7778)\n", - "Epoch 8927: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8927: accuracy appended (86.11%)\n", - "Epoch 8927: model set back to train mode\n", - "Epoch 8927: model parameters saved\n", - "Epoch 8928 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8928: avg_loss appended (2.7778)\n", - "Epoch 8928: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8928: accuracy appended (86.11%)\n", - "Epoch 8928: model set back to train mode\n", - "Epoch 8928: model parameters saved\n", - "Epoch 8929 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8929: avg_loss appended (2.7778)\n", - "Epoch 8929: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8929: accuracy appended (86.11%)\n", - "Epoch 8929: model set back to train mode\n", - "Epoch 8929: model parameters saved\n", - "Epoch 8930 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8930: avg_loss appended (2.7778)\n", - "Epoch 8930: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8930: accuracy appended (86.11%)\n", - "Epoch 8930: model set back to train mode\n", - "Epoch 8930: model parameters saved\n", - "Epoch 8931 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8931: avg_loss appended (2.7778)\n", - "Epoch 8931: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8931: accuracy appended (86.11%)\n", - "Epoch 8931: model set back to train mode\n", - "Epoch 8931: model parameters saved\n", - "Epoch 8932 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8932: avg_loss appended (2.7778)\n", - "Epoch 8932: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8932: accuracy appended (86.11%)\n", - "Epoch 8932: model set back to train mode\n", - "Epoch 8932: model parameters saved\n", - "Epoch 8933 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8933: avg_loss appended (2.7778)\n", - "Epoch 8933: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8933: accuracy appended (86.11%)\n", - "Epoch 8933: model set back to train mode\n", - "Epoch 8933: model parameters saved\n", - "Epoch 8934 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8934: avg_loss appended (2.7778)\n", - "Epoch 8934: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8934: accuracy appended (86.11%)\n", - "Epoch 8934: model set back to train mode\n", - "Epoch 8934: model parameters saved\n", - "Epoch 8935 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8935: avg_loss appended (2.7778)\n", - "Epoch 8935: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8935: accuracy appended (86.11%)\n", - "Epoch 8935: model set back to train mode\n", - "Epoch 8935: model parameters saved\n", - "Epoch 8936 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8936: avg_loss appended (2.7778)\n", - "Epoch 8936: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8936: accuracy appended (86.11%)\n", - "Epoch 8936: model set back to train mode\n", - "Epoch 8936: model parameters saved\n", - "Epoch 8937 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8937: avg_loss appended (2.7778)\n", - "Epoch 8937: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8937: accuracy appended (86.11%)\n", - "Epoch 8937: model set back to train mode\n", - "Epoch 8937: model parameters saved\n", - "Epoch 8938 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8938: avg_loss appended (2.7778)\n", - "Epoch 8938: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8938: accuracy appended (86.11%)\n", - "Epoch 8938: model set back to train mode\n", - "Epoch 8938: model parameters saved\n", - "Epoch 8939 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8939: avg_loss appended (2.7778)\n", - "Epoch 8939: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8939: accuracy appended (86.11%)\n", - "Epoch 8939: model set back to train mode\n", - "Epoch 8939: model parameters saved\n", - "Epoch 8940 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8940: avg_loss appended (2.7778)\n", - "Epoch 8940: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8940: accuracy appended (86.11%)\n", - "Epoch 8940: model set back to train mode\n", - "Epoch 8940: model parameters saved\n", - "Epoch 8941 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8941: avg_loss appended (2.7778)\n", - "Epoch 8941: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8941: accuracy appended (86.11%)\n", - "Epoch 8941: model set back to train mode\n", - "Epoch 8941: model parameters saved\n", - "Epoch 8942 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8942: avg_loss appended (2.7778)\n", - "Epoch 8942: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8942: accuracy appended (86.11%)\n", - "Epoch 8942: model set back to train mode\n", - "Epoch 8942: model parameters saved\n", - "Epoch 8943 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8943: avg_loss appended (2.7778)\n", - "Epoch 8943: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8943: accuracy appended (86.11%)\n", - "Epoch 8943: model set back to train mode\n", - "Epoch 8943: model parameters saved\n", - "Epoch 8944 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8944: avg_loss appended (2.7778)\n", - "Epoch 8944: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8944: accuracy appended (86.11%)\n", - "Epoch 8944: model set back to train mode\n", - "Epoch 8944: model parameters saved\n", - "Epoch 8945 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8945: avg_loss appended (2.7778)\n", - "Epoch 8945: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8945: accuracy appended (86.11%)\n", - "Epoch 8945: model set back to train mode\n", - "Epoch 8945: model parameters saved\n", - "Epoch 8946 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8946: avg_loss appended (2.7778)\n", - "Epoch 8946: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8946: accuracy appended (86.11%)\n", - "Epoch 8946: model set back to train mode\n", - "Epoch 8946: model parameters saved\n", - "Epoch 8947 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8947: avg_loss appended (2.7778)\n", - "Epoch 8947: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8947: accuracy appended (86.11%)\n", - "Epoch 8947: model set back to train mode\n", - "Epoch 8947: model parameters saved\n", - "Epoch 8948 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8948: avg_loss appended (2.7778)\n", - "Epoch 8948: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8948: accuracy appended (86.11%)\n", - "Epoch 8948: model set back to train mode\n", - "Epoch 8948: model parameters saved\n", - "Epoch 8949 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8949: avg_loss appended (2.7778)\n", - "Epoch 8949: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8949: accuracy appended (86.11%)\n", - "Epoch 8949: model set back to train mode\n", - "Epoch 8949: model parameters saved\n", - "Epoch 8950 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8950: avg_loss appended (2.7778)\n", - "Epoch 8950: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8950: accuracy appended (86.11%)\n", - "Epoch 8950: model set back to train mode\n", - "Epoch 8950: model parameters saved\n", - "Epoch 8951 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8951: avg_loss appended (2.7778)\n", - "Epoch 8951: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8951: accuracy appended (86.11%)\n", - "Epoch 8951: model set back to train mode\n", - "Epoch 8951: model parameters saved\n", - "Epoch 8952 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8952: avg_loss appended (2.7778)\n", - "Epoch 8952: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8952: accuracy appended (86.11%)\n", - "Epoch 8952: model set back to train mode\n", - "Epoch 8952: model parameters saved\n", - "Epoch 8953 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8953: avg_loss appended (2.7778)\n", - "Epoch 8953: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8953: accuracy appended (86.11%)\n", - "Epoch 8953: model set back to train mode\n", - "Epoch 8953: model parameters saved\n", - "Epoch 8954 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8954: avg_loss appended (2.7778)\n", - "Epoch 8954: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8954: accuracy appended (86.11%)\n", - "Epoch 8954: model set back to train mode\n", - "Epoch 8954: model parameters saved\n", - "Epoch 8955 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8955: avg_loss appended (2.7778)\n", - "Epoch 8955: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8955: accuracy appended (86.11%)\n", - "Epoch 8955: model set back to train mode\n", - "Epoch 8955: model parameters saved\n", - "Epoch 8956 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8956: avg_loss appended (2.7778)\n", - "Epoch 8956: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8956: accuracy appended (86.11%)\n", - "Epoch 8956: model set back to train mode\n", - "Epoch 8956: model parameters saved\n", - "Epoch 8957 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8957: avg_loss appended (2.7778)\n", - "Epoch 8957: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8957: accuracy appended (86.11%)\n", - "Epoch 8957: model set back to train mode\n", - "Epoch 8957: model parameters saved\n", - "Epoch 8958 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8958: avg_loss appended (2.7778)\n", - "Epoch 8958: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8958: accuracy appended (86.11%)\n", - "Epoch 8958: model set back to train mode\n", - "Epoch 8958: model parameters saved\n", - "Epoch 8959 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8959: avg_loss appended (2.7778)\n", - "Epoch 8959: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8959: accuracy appended (86.11%)\n", - "Epoch 8959: model set back to train mode\n", - "Epoch 8959: model parameters saved\n", - "Epoch 8960 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8960: avg_loss appended (2.7778)\n", - "Epoch 8960: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8960: accuracy appended (86.11%)\n", - "Epoch 8960: model set back to train mode\n", - "Epoch 8960: model parameters saved\n", - "Epoch 8961 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8961: avg_loss appended (2.7778)\n", - "Epoch 8961: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8961: accuracy appended (86.11%)\n", - "Epoch 8961: model set back to train mode\n", - "Epoch 8961: model parameters saved\n", - "Epoch 8962 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8962: avg_loss appended (2.7778)\n", - "Epoch 8962: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8962: accuracy appended (86.11%)\n", - "Epoch 8962: model set back to train mode\n", - "Epoch 8962: model parameters saved\n", - "Epoch 8963 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8963: avg_loss appended (2.7778)\n", - "Epoch 8963: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8963: accuracy appended (86.11%)\n", - "Epoch 8963: model set back to train mode\n", - "Epoch 8963: model parameters saved\n", - "Epoch 8964 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8964: avg_loss appended (2.7778)\n", - "Epoch 8964: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8964: accuracy appended (86.11%)\n", - "Epoch 8964: model set back to train mode\n", - "Epoch 8964: model parameters saved\n", - "Epoch 8965 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8965: avg_loss appended (2.7778)\n", - "Epoch 8965: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8965: accuracy appended (86.11%)\n", - "Epoch 8965: model set back to train mode\n", - "Epoch 8965: model parameters saved\n", - "Epoch 8966 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8966: avg_loss appended (2.7778)\n", - "Epoch 8966: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8966: accuracy appended (86.11%)\n", - "Epoch 8966: model set back to train mode\n", - "Epoch 8966: model parameters saved\n", - "Epoch 8967 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8967: avg_loss appended (2.7778)\n", - "Epoch 8967: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8967: accuracy appended (86.11%)\n", - "Epoch 8967: model set back to train mode\n", - "Epoch 8967: model parameters saved\n", - "Epoch 8968 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8968: avg_loss appended (2.7778)\n", - "Epoch 8968: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8968: accuracy appended (86.11%)\n", - "Epoch 8968: model set back to train mode\n", - "Epoch 8968: model parameters saved\n", - "Epoch 8969 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8969: avg_loss appended (2.7778)\n", - "Epoch 8969: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8969: accuracy appended (86.11%)\n", - "Epoch 8969: model set back to train mode\n", - "Epoch 8969: model parameters saved\n", - "Epoch 8970 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8970: avg_loss appended (2.7778)\n", - "Epoch 8970: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8970: accuracy appended (86.11%)\n", - "Epoch 8970: model set back to train mode\n", - "Epoch 8970: model parameters saved\n", - "Epoch 8971 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8971: avg_loss appended (2.7778)\n", - "Epoch 8971: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8971: accuracy appended (86.11%)\n", - "Epoch 8971: model set back to train mode\n", - "Epoch 8971: model parameters saved\n", - "Epoch 8972 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8972: avg_loss appended (2.7778)\n", - "Epoch 8972: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8972: accuracy appended (86.11%)\n", - "Epoch 8972: model set back to train mode\n", - "Epoch 8972: model parameters saved\n", - "Epoch 8973 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8973: avg_loss appended (2.7778)\n", - "Epoch 8973: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8973: accuracy appended (86.11%)\n", - "Epoch 8973: model set back to train mode\n", - "Epoch 8973: model parameters saved\n", - "Epoch 8974 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8974: avg_loss appended (2.7778)\n", - "Epoch 8974: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8974: accuracy appended (86.11%)\n", - "Epoch 8974: model set back to train mode\n", - "Epoch 8974: model parameters saved\n", - "Epoch 8975 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8975: avg_loss appended (2.7778)\n", - "Epoch 8975: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8975: accuracy appended (86.11%)\n", - "Epoch 8975: model set back to train mode\n", - "Epoch 8975: model parameters saved\n", - "Epoch 8976 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8976: avg_loss appended (2.7778)\n", - "Epoch 8976: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8976: accuracy appended (86.11%)\n", - "Epoch 8976: model set back to train mode\n", - "Epoch 8976: model parameters saved\n", - "Epoch 8977 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8977: avg_loss appended (2.7778)\n", - "Epoch 8977: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8977: accuracy appended (86.11%)\n", - "Epoch 8977: model set back to train mode\n", - "Epoch 8977: model parameters saved\n", - "Epoch 8978 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8978: avg_loss appended (2.7778)\n", - "Epoch 8978: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8978: accuracy appended (86.11%)\n", - "Epoch 8978: model set back to train mode\n", - "Epoch 8978: model parameters saved\n", - "Epoch 8979 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8979: avg_loss appended (2.7778)\n", - "Epoch 8979: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8979: accuracy appended (86.11%)\n", - "Epoch 8979: model set back to train mode\n", - "Epoch 8979: model parameters saved\n", - "Epoch 8980 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8980: avg_loss appended (2.7778)\n", - "Epoch 8980: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8980: accuracy appended (86.11%)\n", - "Epoch 8980: model set back to train mode\n", - "Epoch 8980: model parameters saved\n", - "Epoch 8981 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8981: avg_loss appended (2.7778)\n", - "Epoch 8981: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8981: accuracy appended (86.11%)\n", - "Epoch 8981: model set back to train mode\n", - "Epoch 8981: model parameters saved\n", - "Epoch 8982 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8982: avg_loss appended (2.7778)\n", - "Epoch 8982: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8982: accuracy appended (86.11%)\n", - "Epoch 8982: model set back to train mode\n", - "Epoch 8982: model parameters saved\n", - "Epoch 8983 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8983: avg_loss appended (2.7778)\n", - "Epoch 8983: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8983: accuracy appended (86.11%)\n", - "Epoch 8983: model set back to train mode\n", - "Epoch 8983: model parameters saved\n", - "Epoch 8984 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8984: avg_loss appended (2.7778)\n", - "Epoch 8984: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8984: accuracy appended (86.11%)\n", - "Epoch 8984: model set back to train mode\n", - "Epoch 8984: model parameters saved\n", - "Epoch 8985 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8985: avg_loss appended (2.7778)\n", - "Epoch 8985: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8985: accuracy appended (86.11%)\n", - "Epoch 8985: model set back to train mode\n", - "Epoch 8985: model parameters saved\n", - "Epoch 8986 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8986: avg_loss appended (2.7778)\n", - "Epoch 8986: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8986: accuracy appended (86.11%)\n", - "Epoch 8986: model set back to train mode\n", - "Epoch 8986: model parameters saved\n", - "Epoch 8987 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8987: avg_loss appended (2.7778)\n", - "Epoch 8987: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8987: accuracy appended (86.11%)\n", - "Epoch 8987: model set back to train mode\n", - "Epoch 8987: model parameters saved\n", - "Epoch 8988 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8988: avg_loss appended (2.7778)\n", - "Epoch 8988: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8988: accuracy appended (86.11%)\n", - "Epoch 8988: model set back to train mode\n", - "Epoch 8988: model parameters saved\n", - "Epoch 8989 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8989: avg_loss appended (2.7778)\n", - "Epoch 8989: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8989: accuracy appended (86.11%)\n", - "Epoch 8989: model set back to train mode\n", - "Epoch 8989: model parameters saved\n", - "Epoch 8990 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8990: avg_loss appended (2.7778)\n", - "Epoch 8990: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8990: accuracy appended (86.11%)\n", - "Epoch 8990: model set back to train mode\n", - "Epoch 8990: model parameters saved\n", - "Epoch 8991 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8991: avg_loss appended (2.7778)\n", - "Epoch 8991: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8991: accuracy appended (86.11%)\n", - "Epoch 8991: model set back to train mode\n", - "Epoch 8991: model parameters saved\n", - "Epoch 8992 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8992: avg_loss appended (2.7778)\n", - "Epoch 8992: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8992: accuracy appended (86.11%)\n", - "Epoch 8992: model set back to train mode\n", - "Epoch 8992: model parameters saved\n", - "Epoch 8993 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8993: avg_loss appended (2.7778)\n", - "Epoch 8993: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8993: accuracy appended (86.11%)\n", - "Epoch 8993: model set back to train mode\n", - "Epoch 8993: model parameters saved\n", - "Epoch 8994 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8994: avg_loss appended (2.7778)\n", - "Epoch 8994: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8994: accuracy appended (86.11%)\n", - "Epoch 8994: model set back to train mode\n", - "Epoch 8994: model parameters saved\n", - "Epoch 8995 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8995: avg_loss appended (2.7778)\n", - "Epoch 8995: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8995: accuracy appended (86.11%)\n", - "Epoch 8995: model set back to train mode\n", - "Epoch 8995: model parameters saved\n", - "Epoch 8996 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8996: avg_loss appended (2.7778)\n", - "Epoch 8996: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8996: accuracy appended (86.11%)\n", - "Epoch 8996: model set back to train mode\n", - "Epoch 8996: model parameters saved\n", - "Epoch 8997 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8997: avg_loss appended (2.7778)\n", - "Epoch 8997: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8997: accuracy appended (86.11%)\n", - "Epoch 8997: model set back to train mode\n", - "Epoch 8997: model parameters saved\n", - "Epoch 8998 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8998: avg_loss appended (2.7778)\n", - "Epoch 8998: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8998: accuracy appended (86.11%)\n", - "Epoch 8998: model set back to train mode\n", - "Epoch 8998: model parameters saved\n", - "Epoch 8999 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 8999: avg_loss appended (2.7778)\n", - "Epoch 8999: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 8999: accuracy appended (86.11%)\n", - "Epoch 8999: model set back to train mode\n", - "Epoch 8999: model parameters saved\n", - "Epoch 9000 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9000: avg_loss appended (2.7778)\n", - "Epoch 9000: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9000: accuracy appended (86.11%)\n", - "Epoch 9000: model set back to train mode\n", - "Epoch 9000: model parameters saved\n", - "Epoch 9000/10000, Loss: 2.7778, Accuracy: 86.11%\n", - "Epoch 9000: checkpoint saved\n", - "Epoch 9001 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9001: avg_loss appended (2.7778)\n", - "Epoch 9001: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9001: accuracy appended (86.11%)\n", - "Epoch 9001: model set back to train mode\n", - "Epoch 9001: model parameters saved\n", - "Epoch 9002 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9002: avg_loss appended (2.7778)\n", - "Epoch 9002: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9002: accuracy appended (86.11%)\n", - "Epoch 9002: model set back to train mode\n", - "Epoch 9002: model parameters saved\n", - "Epoch 9003 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9003: avg_loss appended (2.7778)\n", - "Epoch 9003: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9003: accuracy appended (86.11%)\n", - "Epoch 9003: model set back to train mode\n", - "Epoch 9003: model parameters saved\n", - "Epoch 9004 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9004: avg_loss appended (2.7778)\n", - "Epoch 9004: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9004: accuracy appended (86.11%)\n", - "Epoch 9004: model set back to train mode\n", - "Epoch 9004: model parameters saved\n", - "Epoch 9005 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9005: avg_loss appended (2.7778)\n", - "Epoch 9005: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9005: accuracy appended (86.11%)\n", - "Epoch 9005: model set back to train mode\n", - "Epoch 9005: model parameters saved\n", - "Epoch 9006 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9006: avg_loss appended (2.7778)\n", - "Epoch 9006: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9006: accuracy appended (86.11%)\n", - "Epoch 9006: model set back to train mode\n", - "Epoch 9006: model parameters saved\n", - "Epoch 9007 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9007: avg_loss appended (2.7778)\n", - "Epoch 9007: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9007: accuracy appended (86.11%)\n", - "Epoch 9007: model set back to train mode\n", - "Epoch 9007: model parameters saved\n", - "Epoch 9008 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9008: avg_loss appended (2.7778)\n", - "Epoch 9008: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9008: accuracy appended (86.11%)\n", - "Epoch 9008: model set back to train mode\n", - "Epoch 9008: model parameters saved\n", - "Epoch 9009 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9009: avg_loss appended (2.7778)\n", - "Epoch 9009: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9009: accuracy appended (86.11%)\n", - "Epoch 9009: model set back to train mode\n", - "Epoch 9009: model parameters saved\n", - "Epoch 9010 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9010: avg_loss appended (2.7778)\n", - "Epoch 9010: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9010: accuracy appended (86.11%)\n", - "Epoch 9010: model set back to train mode\n", - "Epoch 9010: model parameters saved\n", - "Epoch 9011 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9011: avg_loss appended (2.7778)\n", - "Epoch 9011: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9011: accuracy appended (86.11%)\n", - "Epoch 9011: model set back to train mode\n", - "Epoch 9011: model parameters saved\n", - "Epoch 9012 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9012: avg_loss appended (2.7778)\n", - "Epoch 9012: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9012: accuracy appended (86.11%)\n", - "Epoch 9012: model set back to train mode\n", - "Epoch 9012: model parameters saved\n", - "Epoch 9013 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9013: avg_loss appended (2.7778)\n", - "Epoch 9013: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9013: accuracy appended (86.11%)\n", - "Epoch 9013: model set back to train mode\n", - "Epoch 9013: model parameters saved\n", - "Epoch 9014 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9014: avg_loss appended (2.7778)\n", - "Epoch 9014: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9014: accuracy appended (86.11%)\n", - "Epoch 9014: model set back to train mode\n", - "Epoch 9014: model parameters saved\n", - "Epoch 9015 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9015: avg_loss appended (2.7778)\n", - "Epoch 9015: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9015: accuracy appended (86.11%)\n", - "Epoch 9015: model set back to train mode\n", - "Epoch 9015: model parameters saved\n", - "Epoch 9016 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9016: avg_loss appended (2.7778)\n", - "Epoch 9016: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9016: accuracy appended (86.11%)\n", - "Epoch 9016: model set back to train mode\n", - "Epoch 9016: model parameters saved\n", - "Epoch 9017 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9017: avg_loss appended (2.7778)\n", - "Epoch 9017: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9017: accuracy appended (86.11%)\n", - "Epoch 9017: model set back to train mode\n", - "Epoch 9017: model parameters saved\n", - "Epoch 9018 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9018: avg_loss appended (2.7778)\n", - "Epoch 9018: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9018: accuracy appended (86.11%)\n", - "Epoch 9018: model set back to train mode\n", - "Epoch 9018: model parameters saved\n", - "Epoch 9019 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9019: avg_loss appended (2.7778)\n", - "Epoch 9019: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9019: accuracy appended (86.11%)\n", - "Epoch 9019: model set back to train mode\n", - "Epoch 9019: model parameters saved\n", - "Epoch 9020 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9020: avg_loss appended (2.7778)\n", - "Epoch 9020: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9020: accuracy appended (86.11%)\n", - "Epoch 9020: model set back to train mode\n", - "Epoch 9020: model parameters saved\n", - "Epoch 9021 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9021: avg_loss appended (2.7778)\n", - "Epoch 9021: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 83.33%\n", - "Epoch 9021: accuracy appended (83.33%)\n", - "Epoch 9021: model set back to train mode\n", - "Epoch 9021: model parameters saved\n", - "Epoch 9022 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9022: avg_loss appended (2.7778)\n", - "Epoch 9022: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9022: accuracy appended (86.11%)\n", - "Epoch 9022: model set back to train mode\n", - "Epoch 9022: model parameters saved\n", - "Epoch 9023 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9023: avg_loss appended (2.7778)\n", - "Epoch 9023: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9023: accuracy appended (86.11%)\n", - "Epoch 9023: model set back to train mode\n", - "Epoch 9023: model parameters saved\n", - "Epoch 9024 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9024: avg_loss appended (2.7778)\n", - "Epoch 9024: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9024: accuracy appended (86.11%)\n", - "Epoch 9024: model set back to train mode\n", - "Epoch 9024: model parameters saved\n", - "Epoch 9025 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9025: avg_loss appended (2.7778)\n", - "Epoch 9025: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9025: accuracy appended (86.11%)\n", - "Epoch 9025: model set back to train mode\n", - "Epoch 9025: model parameters saved\n", - "Epoch 9026 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9026: avg_loss appended (2.7778)\n", - "Epoch 9026: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9026: accuracy appended (86.11%)\n", - "Epoch 9026: model set back to train mode\n", - "Epoch 9026: model parameters saved\n", - "Epoch 9027 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9027: avg_loss appended (2.7778)\n", - "Epoch 9027: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9027: accuracy appended (86.11%)\n", - "Epoch 9027: model set back to train mode\n", - "Epoch 9027: model parameters saved\n", - "Epoch 9028 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9028: avg_loss appended (2.7778)\n", - "Epoch 9028: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9028: accuracy appended (86.11%)\n", - "Epoch 9028: model set back to train mode\n", - "Epoch 9028: model parameters saved\n", - "Epoch 9029 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9029: avg_loss appended (2.7778)\n", - "Epoch 9029: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9029: accuracy appended (86.11%)\n", - "Epoch 9029: model set back to train mode\n", - "Epoch 9029: model parameters saved\n", - "Epoch 9030 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9030: avg_loss appended (2.7778)\n", - "Epoch 9030: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9030: accuracy appended (86.11%)\n", - "Epoch 9030: model set back to train mode\n", - "Epoch 9030: model parameters saved\n", - "Epoch 9031 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9031: avg_loss appended (2.7778)\n", - "Epoch 9031: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9031: accuracy appended (86.11%)\n", - "Epoch 9031: model set back to train mode\n", - "Epoch 9031: model parameters saved\n", - "Epoch 9032 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9032: avg_loss appended (2.7778)\n", - "Epoch 9032: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9032: accuracy appended (86.11%)\n", - "Epoch 9032: model set back to train mode\n", - "Epoch 9032: model parameters saved\n", - "Epoch 9033 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9033: avg_loss appended (2.7778)\n", - "Epoch 9033: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9033: accuracy appended (86.11%)\n", - "Epoch 9033: model set back to train mode\n", - "Epoch 9033: model parameters saved\n", - "Epoch 9034 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9034: avg_loss appended (2.7778)\n", - "Epoch 9034: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9034: accuracy appended (86.11%)\n", - "Epoch 9034: model set back to train mode\n", - "Epoch 9034: model parameters saved\n", - "Epoch 9035 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9035: avg_loss appended (2.7778)\n", - "Epoch 9035: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9035: accuracy appended (86.11%)\n", - "Epoch 9035: model set back to train mode\n", - "Epoch 9035: model parameters saved\n", - "Epoch 9036 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9036: avg_loss appended (2.7778)\n", - "Epoch 9036: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9036: accuracy appended (86.11%)\n", - "Epoch 9036: model set back to train mode\n", - "Epoch 9036: model parameters saved\n", - "Epoch 9037 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9037: avg_loss appended (2.7778)\n", - "Epoch 9037: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9037: accuracy appended (86.11%)\n", - "Epoch 9037: model set back to train mode\n", - "Epoch 9037: model parameters saved\n", - "Epoch 9038 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9038: avg_loss appended (2.7778)\n", - "Epoch 9038: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9038: accuracy appended (86.11%)\n", - "Epoch 9038: model set back to train mode\n", - "Epoch 9038: model parameters saved\n", - "Epoch 9039 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9039: avg_loss appended (2.7778)\n", - "Epoch 9039: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9039: accuracy appended (86.11%)\n", - "Epoch 9039: model set back to train mode\n", - "Epoch 9039: model parameters saved\n", - "Epoch 9040 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9040: avg_loss appended (2.7778)\n", - "Epoch 9040: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9040: accuracy appended (86.11%)\n", - "Epoch 9040: model set back to train mode\n", - "Epoch 9040: model parameters saved\n", - "Epoch 9041 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9041: avg_loss appended (2.7778)\n", - "Epoch 9041: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9041: accuracy appended (86.11%)\n", - "Epoch 9041: model set back to train mode\n", - "Epoch 9041: model parameters saved\n", - "Epoch 9042 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9042: avg_loss appended (2.7778)\n", - "Epoch 9042: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9042: accuracy appended (86.11%)\n", - "Epoch 9042: model set back to train mode\n", - "Epoch 9042: model parameters saved\n", - "Epoch 9043 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9043: avg_loss appended (2.7778)\n", - "Epoch 9043: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9043: accuracy appended (86.11%)\n", - "Epoch 9043: model set back to train mode\n", - "Epoch 9043: model parameters saved\n", - "Epoch 9044 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9044: avg_loss appended (2.7778)\n", - "Epoch 9044: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9044: accuracy appended (86.11%)\n", - "Epoch 9044: model set back to train mode\n", - "Epoch 9044: model parameters saved\n", - "Epoch 9045 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9045: avg_loss appended (2.7778)\n", - "Epoch 9045: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9045: accuracy appended (86.11%)\n", - "Epoch 9045: model set back to train mode\n", - "Epoch 9045: model parameters saved\n", - "Epoch 9046 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9046: avg_loss appended (2.7778)\n", - "Epoch 9046: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9046: accuracy appended (86.11%)\n", - "Epoch 9046: model set back to train mode\n", - "Epoch 9046: model parameters saved\n", - "Epoch 9047 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9047: avg_loss appended (2.7778)\n", - "Epoch 9047: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9047: accuracy appended (86.11%)\n", - "Epoch 9047: model set back to train mode\n", - "Epoch 9047: model parameters saved\n", - "Epoch 9048 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9048: avg_loss appended (2.7778)\n", - "Epoch 9048: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9048: accuracy appended (86.11%)\n", - "Epoch 9048: model set back to train mode\n", - "Epoch 9048: model parameters saved\n", - "Epoch 9049 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9049: avg_loss appended (2.7778)\n", - "Epoch 9049: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9049: accuracy appended (86.11%)\n", - "Epoch 9049: model set back to train mode\n", - "Epoch 9049: model parameters saved\n", - "Epoch 9050 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9050: avg_loss appended (2.7778)\n", - "Epoch 9050: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9050: accuracy appended (86.11%)\n", - "Epoch 9050: model set back to train mode\n", - "Epoch 9050: model parameters saved\n", - "Epoch 9051 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9051: avg_loss appended (2.7778)\n", - "Epoch 9051: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9051: accuracy appended (86.11%)\n", - "Epoch 9051: model set back to train mode\n", - "Epoch 9051: model parameters saved\n", - "Epoch 9052 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9052: avg_loss appended (2.7778)\n", - "Epoch 9052: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9052: accuracy appended (86.11%)\n", - "Epoch 9052: model set back to train mode\n", - "Epoch 9052: model parameters saved\n", - "Epoch 9053 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9053: avg_loss appended (2.7778)\n", - "Epoch 9053: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9053: accuracy appended (86.11%)\n", - "Epoch 9053: model set back to train mode\n", - "Epoch 9053: model parameters saved\n", - "Epoch 9054 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9054: avg_loss appended (2.7778)\n", - "Epoch 9054: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9054: accuracy appended (86.11%)\n", - "Epoch 9054: model set back to train mode\n", - "Epoch 9054: model parameters saved\n", - "Epoch 9055 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9055: avg_loss appended (2.7778)\n", - "Epoch 9055: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9055: accuracy appended (86.11%)\n", - "Epoch 9055: model set back to train mode\n", - "Epoch 9055: model parameters saved\n", - "Epoch 9056 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9056: avg_loss appended (2.7778)\n", - "Epoch 9056: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9056: accuracy appended (86.11%)\n", - "Epoch 9056: model set back to train mode\n", - "Epoch 9056: model parameters saved\n", - "Epoch 9057 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9057: avg_loss appended (2.7778)\n", - "Epoch 9057: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9057: accuracy appended (86.11%)\n", - "Epoch 9057: model set back to train mode\n", - "Epoch 9057: model parameters saved\n", - "Epoch 9058 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9058: avg_loss appended (2.7778)\n", - "Epoch 9058: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9058: accuracy appended (86.11%)\n", - "Epoch 9058: model set back to train mode\n", - "Epoch 9058: model parameters saved\n", - "Epoch 9059 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9059: avg_loss appended (2.7778)\n", - "Epoch 9059: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9059: accuracy appended (86.11%)\n", - "Epoch 9059: model set back to train mode\n", - "Epoch 9059: model parameters saved\n", - "Epoch 9060 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9060: avg_loss appended (2.7778)\n", - "Epoch 9060: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9060: accuracy appended (86.11%)\n", - "Epoch 9060: model set back to train mode\n", - "Epoch 9060: model parameters saved\n", - "Epoch 9061 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9061: avg_loss appended (2.7778)\n", - "Epoch 9061: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9061: accuracy appended (86.11%)\n", - "Epoch 9061: model set back to train mode\n", - "Epoch 9061: model parameters saved\n", - "Epoch 9062 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9062: avg_loss appended (2.7778)\n", - "Epoch 9062: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9062: accuracy appended (86.11%)\n", - "Epoch 9062: model set back to train mode\n", - "Epoch 9062: model parameters saved\n", - "Epoch 9063 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9063: avg_loss appended (2.7778)\n", - "Epoch 9063: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9063: accuracy appended (86.11%)\n", - "Epoch 9063: model set back to train mode\n", - "Epoch 9063: model parameters saved\n", - "Epoch 9064 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9064: avg_loss appended (2.7778)\n", - "Epoch 9064: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9064: accuracy appended (86.11%)\n", - "Epoch 9064: model set back to train mode\n", - "Epoch 9064: model parameters saved\n", - "Epoch 9065 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9065: avg_loss appended (2.7778)\n", - "Epoch 9065: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9065: accuracy appended (86.11%)\n", - "Epoch 9065: model set back to train mode\n", - "Epoch 9065: model parameters saved\n", - "Epoch 9066 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9066: avg_loss appended (2.7778)\n", - "Epoch 9066: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9066: accuracy appended (86.11%)\n", - "Epoch 9066: model set back to train mode\n", - "Epoch 9066: model parameters saved\n", - "Epoch 9067 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9067: avg_loss appended (2.7778)\n", - "Epoch 9067: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9067: accuracy appended (86.11%)\n", - "Epoch 9067: model set back to train mode\n", - "Epoch 9067: model parameters saved\n", - "Epoch 9068 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9068: avg_loss appended (2.7778)\n", - "Epoch 9068: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9068: accuracy appended (86.11%)\n", - "Epoch 9068: model set back to train mode\n", - "Epoch 9068: model parameters saved\n", - "Epoch 9069 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9069: avg_loss appended (2.7778)\n", - "Epoch 9069: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9069: accuracy appended (86.11%)\n", - "Epoch 9069: model set back to train mode\n", - "Epoch 9069: model parameters saved\n", - "Epoch 9070 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9070: avg_loss appended (2.7778)\n", - "Epoch 9070: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9070: accuracy appended (86.11%)\n", - "Epoch 9070: model set back to train mode\n", - "Epoch 9070: model parameters saved\n", - "Epoch 9071 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9071: avg_loss appended (2.7778)\n", - "Epoch 9071: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9071: accuracy appended (86.11%)\n", - "Epoch 9071: model set back to train mode\n", - "Epoch 9071: model parameters saved\n", - "Epoch 9072 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9072: avg_loss appended (2.7778)\n", - "Epoch 9072: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9072: accuracy appended (86.11%)\n", - "Epoch 9072: model set back to train mode\n", - "Epoch 9072: model parameters saved\n", - "Epoch 9073 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9073: avg_loss appended (2.7778)\n", - "Epoch 9073: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9073: accuracy appended (86.11%)\n", - "Epoch 9073: model set back to train mode\n", - "Epoch 9073: model parameters saved\n", - "Epoch 9074 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9074: avg_loss appended (2.7778)\n", - "Epoch 9074: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9074: accuracy appended (86.11%)\n", - "Epoch 9074: model set back to train mode\n", - "Epoch 9074: model parameters saved\n", - "Epoch 9075 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9075: avg_loss appended (2.7778)\n", - "Epoch 9075: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9075: accuracy appended (86.11%)\n", - "Epoch 9075: model set back to train mode\n", - "Epoch 9075: model parameters saved\n", - "Epoch 9076 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9076: avg_loss appended (2.7778)\n", - "Epoch 9076: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9076: accuracy appended (86.11%)\n", - "Epoch 9076: model set back to train mode\n", - "Epoch 9076: model parameters saved\n", - "Epoch 9077 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9077: avg_loss appended (2.7778)\n", - "Epoch 9077: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9077: accuracy appended (86.11%)\n", - "Epoch 9077: model set back to train mode\n", - "Epoch 9077: model parameters saved\n", - "Epoch 9078 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9078: avg_loss appended (2.7778)\n", - "Epoch 9078: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9078: accuracy appended (86.11%)\n", - "Epoch 9078: model set back to train mode\n", - "Epoch 9078: model parameters saved\n", - "Epoch 9079 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9079: avg_loss appended (2.7778)\n", - "Epoch 9079: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9079: accuracy appended (86.11%)\n", - "Epoch 9079: model set back to train mode\n", - "Epoch 9079: model parameters saved\n", - "Epoch 9080 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9080: avg_loss appended (2.7778)\n", - "Epoch 9080: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9080: accuracy appended (86.11%)\n", - "Epoch 9080: model set back to train mode\n", - "Epoch 9080: model parameters saved\n", - "Epoch 9081 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9081: avg_loss appended (2.7778)\n", - "Epoch 9081: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9081: accuracy appended (86.11%)\n", - "Epoch 9081: model set back to train mode\n", - "Epoch 9081: model parameters saved\n", - "Epoch 9082 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9082: avg_loss appended (2.7778)\n", - "Epoch 9082: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9082: accuracy appended (86.11%)\n", - "Epoch 9082: model set back to train mode\n", - "Epoch 9082: model parameters saved\n", - "Epoch 9083 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9083: avg_loss appended (2.7778)\n", - "Epoch 9083: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9083: accuracy appended (86.11%)\n", - "Epoch 9083: model set back to train mode\n", - "Epoch 9083: model parameters saved\n", - "Epoch 9084 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9084: avg_loss appended (2.7778)\n", - "Epoch 9084: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9084: accuracy appended (86.11%)\n", - "Epoch 9084: model set back to train mode\n", - "Epoch 9084: model parameters saved\n", - "Epoch 9085 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9085: avg_loss appended (2.7778)\n", - "Epoch 9085: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9085: accuracy appended (86.11%)\n", - "Epoch 9085: model set back to train mode\n", - "Epoch 9085: model parameters saved\n", - "Epoch 9086 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9086: avg_loss appended (2.7778)\n", - "Epoch 9086: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9086: accuracy appended (86.11%)\n", - "Epoch 9086: model set back to train mode\n", - "Epoch 9086: model parameters saved\n", - "Epoch 9087 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9087: avg_loss appended (2.7778)\n", - "Epoch 9087: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9087: accuracy appended (86.11%)\n", - "Epoch 9087: model set back to train mode\n", - "Epoch 9087: model parameters saved\n", - "Epoch 9088 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9088: avg_loss appended (2.7778)\n", - "Epoch 9088: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9088: accuracy appended (86.11%)\n", - "Epoch 9088: model set back to train mode\n", - "Epoch 9088: model parameters saved\n", - "Epoch 9089 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9089: avg_loss appended (2.7778)\n", - "Epoch 9089: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9089: accuracy appended (86.11%)\n", - "Epoch 9089: model set back to train mode\n", - "Epoch 9089: model parameters saved\n", - "Epoch 9090 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9090: avg_loss appended (2.7778)\n", - "Epoch 9090: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9090: accuracy appended (86.11%)\n", - "Epoch 9090: model set back to train mode\n", - "Epoch 9090: model parameters saved\n", - "Epoch 9091 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9091: avg_loss appended (2.7778)\n", - "Epoch 9091: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9091: accuracy appended (86.11%)\n", - "Epoch 9091: model set back to train mode\n", - "Epoch 9091: model parameters saved\n", - "Epoch 9092 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9092: avg_loss appended (2.7778)\n", - "Epoch 9092: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9092: accuracy appended (86.11%)\n", - "Epoch 9092: model set back to train mode\n", - "Epoch 9092: model parameters saved\n", - "Epoch 9093 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9093: avg_loss appended (2.7778)\n", - "Epoch 9093: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9093: accuracy appended (86.11%)\n", - "Epoch 9093: model set back to train mode\n", - "Epoch 9093: model parameters saved\n", - "Epoch 9094 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9094: avg_loss appended (2.7778)\n", - "Epoch 9094: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9094: accuracy appended (86.11%)\n", - "Epoch 9094: model set back to train mode\n", - "Epoch 9094: model parameters saved\n", - "Epoch 9095 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9095: avg_loss appended (2.7778)\n", - "Epoch 9095: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9095: accuracy appended (86.11%)\n", - "Epoch 9095: model set back to train mode\n", - "Epoch 9095: model parameters saved\n", - "Epoch 9096 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9096: avg_loss appended (2.7778)\n", - "Epoch 9096: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9096: accuracy appended (86.11%)\n", - "Epoch 9096: model set back to train mode\n", - "Epoch 9096: model parameters saved\n", - "Epoch 9097 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9097: avg_loss appended (2.7778)\n", - "Epoch 9097: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9097: accuracy appended (86.11%)\n", - "Epoch 9097: model set back to train mode\n", - "Epoch 9097: model parameters saved\n", - "Epoch 9098 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9098: avg_loss appended (2.7778)\n", - "Epoch 9098: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9098: accuracy appended (86.11%)\n", - "Epoch 9098: model set back to train mode\n", - "Epoch 9098: model parameters saved\n", - "Epoch 9099 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9099: avg_loss appended (2.7778)\n", - "Epoch 9099: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9099: accuracy appended (86.11%)\n", - "Epoch 9099: model set back to train mode\n", - "Epoch 9099: model parameters saved\n", - "Epoch 9100 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9100: avg_loss appended (2.7778)\n", - "Epoch 9100: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9100: accuracy appended (86.11%)\n", - "Epoch 9100: model set back to train mode\n", - "Epoch 9100: model parameters saved\n", - "Epoch 9100/10000, Loss: 2.7778, Accuracy: 86.11%\n", - "Epoch 9101 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9101: avg_loss appended (2.7778)\n", - "Epoch 9101: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9101: accuracy appended (86.11%)\n", - "Epoch 9101: model set back to train mode\n", - "Epoch 9101: model parameters saved\n", - "Epoch 9102 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9102: avg_loss appended (2.7778)\n", - "Epoch 9102: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9102: accuracy appended (86.11%)\n", - "Epoch 9102: model set back to train mode\n", - "Epoch 9102: model parameters saved\n", - "Epoch 9103 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9103: avg_loss appended (2.7778)\n", - "Epoch 9103: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9103: accuracy appended (86.11%)\n", - "Epoch 9103: model set back to train mode\n", - "Epoch 9103: model parameters saved\n", - "Epoch 9104 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9104: avg_loss appended (2.7778)\n", - "Epoch 9104: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9104: accuracy appended (86.11%)\n", - "Epoch 9104: model set back to train mode\n", - "Epoch 9104: model parameters saved\n", - "Epoch 9105 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9105: avg_loss appended (2.7778)\n", - "Epoch 9105: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9105: accuracy appended (86.11%)\n", - "Epoch 9105: model set back to train mode\n", - "Epoch 9105: model parameters saved\n", - "Epoch 9106 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9106: avg_loss appended (2.7778)\n", - "Epoch 9106: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9106: accuracy appended (86.11%)\n", - "Epoch 9106: model set back to train mode\n", - "Epoch 9106: model parameters saved\n", - "Epoch 9107 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9107: avg_loss appended (2.7778)\n", - "Epoch 9107: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9107: accuracy appended (86.11%)\n", - "Epoch 9107: model set back to train mode\n", - "Epoch 9107: model parameters saved\n", - "Epoch 9108 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9108: avg_loss appended (2.7778)\n", - "Epoch 9108: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9108: accuracy appended (86.11%)\n", - "Epoch 9108: model set back to train mode\n", - "Epoch 9108: model parameters saved\n", - "Epoch 9109 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9109: avg_loss appended (2.7778)\n", - "Epoch 9109: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9109: accuracy appended (86.11%)\n", - "Epoch 9109: model set back to train mode\n", - "Epoch 9109: model parameters saved\n", - "Epoch 9110 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9110: avg_loss appended (2.7778)\n", - "Epoch 9110: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9110: accuracy appended (86.11%)\n", - "Epoch 9110: model set back to train mode\n", - "Epoch 9110: model parameters saved\n", - "Epoch 9111 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9111: avg_loss appended (2.7778)\n", - "Epoch 9111: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9111: accuracy appended (86.11%)\n", - "Epoch 9111: model set back to train mode\n", - "Epoch 9111: model parameters saved\n", - "Epoch 9112 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9112: avg_loss appended (2.7778)\n", - "Epoch 9112: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9112: accuracy appended (86.11%)\n", - "Epoch 9112: model set back to train mode\n", - "Epoch 9112: model parameters saved\n", - "Epoch 9113 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9113: avg_loss appended (2.7778)\n", - "Epoch 9113: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9113: accuracy appended (86.11%)\n", - "Epoch 9113: model set back to train mode\n", - "Epoch 9113: model parameters saved\n", - "Epoch 9114 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9114: avg_loss appended (2.7778)\n", - "Epoch 9114: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9114: accuracy appended (86.11%)\n", - "Epoch 9114: model set back to train mode\n", - "Epoch 9114: model parameters saved\n", - "Epoch 9115 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9115: avg_loss appended (2.7778)\n", - "Epoch 9115: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9115: accuracy appended (86.11%)\n", - "Epoch 9115: model set back to train mode\n", - "Epoch 9115: model parameters saved\n", - "Epoch 9116 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9116: avg_loss appended (2.7778)\n", - "Epoch 9116: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9116: accuracy appended (86.11%)\n", - "Epoch 9116: model set back to train mode\n", - "Epoch 9116: model parameters saved\n", - "Epoch 9117 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9117: avg_loss appended (2.7778)\n", - "Epoch 9117: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9117: accuracy appended (86.11%)\n", - "Epoch 9117: model set back to train mode\n", - "Epoch 9117: model parameters saved\n", - "Epoch 9118 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9118: avg_loss appended (2.7778)\n", - "Epoch 9118: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9118: accuracy appended (86.11%)\n", - "Epoch 9118: model set back to train mode\n", - "Epoch 9118: model parameters saved\n", - "Epoch 9119 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9119: avg_loss appended (2.7778)\n", - "Epoch 9119: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9119: accuracy appended (86.11%)\n", - "Epoch 9119: model set back to train mode\n", - "Epoch 9119: model parameters saved\n", - "Epoch 9120 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9120: avg_loss appended (2.7778)\n", - "Epoch 9120: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9120: accuracy appended (86.11%)\n", - "Epoch 9120: model set back to train mode\n", - "Epoch 9120: model parameters saved\n", - "Epoch 9121 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9121: avg_loss appended (2.7778)\n", - "Epoch 9121: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9121: accuracy appended (86.11%)\n", - "Epoch 9121: model set back to train mode\n", - "Epoch 9121: model parameters saved\n", - "Epoch 9122 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9122: avg_loss appended (2.7778)\n", - "Epoch 9122: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9122: accuracy appended (86.11%)\n", - "Epoch 9122: model set back to train mode\n", - "Epoch 9122: model parameters saved\n", - "Epoch 9123 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9123: avg_loss appended (2.7778)\n", - "Epoch 9123: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9123: accuracy appended (86.11%)\n", - "Epoch 9123: model set back to train mode\n", - "Epoch 9123: model parameters saved\n", - "Epoch 9124 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9124: avg_loss appended (2.7778)\n", - "Epoch 9124: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9124: accuracy appended (86.11%)\n", - "Epoch 9124: model set back to train mode\n", - "Epoch 9124: model parameters saved\n", - "Epoch 9125 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9125: avg_loss appended (2.7778)\n", - "Epoch 9125: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9125: accuracy appended (86.11%)\n", - "Epoch 9125: model set back to train mode\n", - "Epoch 9125: model parameters saved\n", - "Epoch 9126 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9126: avg_loss appended (2.7778)\n", - "Epoch 9126: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9126: accuracy appended (86.11%)\n", - "Epoch 9126: model set back to train mode\n", - "Epoch 9126: model parameters saved\n", - "Epoch 9127 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9127: avg_loss appended (2.7778)\n", - "Epoch 9127: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9127: accuracy appended (86.11%)\n", - "Epoch 9127: model set back to train mode\n", - "Epoch 9127: model parameters saved\n", - "Epoch 9128 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9128: avg_loss appended (2.7778)\n", - "Epoch 9128: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9128: accuracy appended (86.11%)\n", - "Epoch 9128: model set back to train mode\n", - "Epoch 9128: model parameters saved\n", - "Epoch 9129 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9129: avg_loss appended (2.7778)\n", - "Epoch 9129: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9129: accuracy appended (86.11%)\n", - "Epoch 9129: model set back to train mode\n", - "Epoch 9129: model parameters saved\n", - "Epoch 9130 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9130: avg_loss appended (2.7778)\n", - "Epoch 9130: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9130: accuracy appended (86.11%)\n", - "Epoch 9130: model set back to train mode\n", - "Epoch 9130: model parameters saved\n", - "Epoch 9131 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9131: avg_loss appended (2.7778)\n", - "Epoch 9131: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9131: accuracy appended (86.11%)\n", - "Epoch 9131: model set back to train mode\n", - "Epoch 9131: model parameters saved\n", - "Epoch 9132 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9132: avg_loss appended (2.7778)\n", - "Epoch 9132: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9132: accuracy appended (86.11%)\n", - "Epoch 9132: model set back to train mode\n", - "Epoch 9132: model parameters saved\n", - "Epoch 9133 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9133: avg_loss appended (2.7778)\n", - "Epoch 9133: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9133: accuracy appended (86.11%)\n", - "Epoch 9133: model set back to train mode\n", - "Epoch 9133: model parameters saved\n", - "Epoch 9134 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9134: avg_loss appended (2.7778)\n", - "Epoch 9134: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9134: accuracy appended (86.11%)\n", - "Epoch 9134: model set back to train mode\n", - "Epoch 9134: model parameters saved\n", - "Epoch 9135 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9135: avg_loss appended (2.7778)\n", - "Epoch 9135: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9135: accuracy appended (86.11%)\n", - "Epoch 9135: model set back to train mode\n", - "Epoch 9135: model parameters saved\n", - "Epoch 9136 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9136: avg_loss appended (2.7778)\n", - "Epoch 9136: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9136: accuracy appended (86.11%)\n", - "Epoch 9136: model set back to train mode\n", - "Epoch 9136: model parameters saved\n", - "Epoch 9137 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9137: avg_loss appended (2.7778)\n", - "Epoch 9137: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9137: accuracy appended (86.11%)\n", - "Epoch 9137: model set back to train mode\n", - "Epoch 9137: model parameters saved\n", - "Epoch 9138 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9138: avg_loss appended (2.7778)\n", - "Epoch 9138: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9138: accuracy appended (86.11%)\n", - "Epoch 9138: model set back to train mode\n", - "Epoch 9138: model parameters saved\n", - "Epoch 9139 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9139: avg_loss appended (2.7778)\n", - "Epoch 9139: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9139: accuracy appended (86.11%)\n", - "Epoch 9139: model set back to train mode\n", - "Epoch 9139: model parameters saved\n", - "Epoch 9140 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9140: avg_loss appended (2.7778)\n", - "Epoch 9140: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9140: accuracy appended (86.11%)\n", - "Epoch 9140: model set back to train mode\n", - "Epoch 9140: model parameters saved\n", - "Epoch 9141 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9141: avg_loss appended (2.7778)\n", - "Epoch 9141: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9141: accuracy appended (86.11%)\n", - "Epoch 9141: model set back to train mode\n", - "Epoch 9141: model parameters saved\n", - "Epoch 9142 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9142: avg_loss appended (2.7778)\n", - "Epoch 9142: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9142: accuracy appended (86.11%)\n", - "Epoch 9142: model set back to train mode\n", - "Epoch 9142: model parameters saved\n", - "Epoch 9143 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9143: avg_loss appended (2.7778)\n", - "Epoch 9143: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9143: accuracy appended (86.11%)\n", - "Epoch 9143: model set back to train mode\n", - "Epoch 9143: model parameters saved\n", - "Epoch 9144 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9144: avg_loss appended (2.7778)\n", - "Epoch 9144: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9144: accuracy appended (86.11%)\n", - "Epoch 9144: model set back to train mode\n", - "Epoch 9144: model parameters saved\n", - "Epoch 9145 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9145: avg_loss appended (2.7778)\n", - "Epoch 9145: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9145: accuracy appended (86.11%)\n", - "Epoch 9145: model set back to train mode\n", - "Epoch 9145: model parameters saved\n", - "Epoch 9146 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9146: avg_loss appended (2.7778)\n", - "Epoch 9146: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9146: accuracy appended (86.11%)\n", - "Epoch 9146: model set back to train mode\n", - "Epoch 9146: model parameters saved\n", - "Epoch 9147 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9147: avg_loss appended (2.7778)\n", - "Epoch 9147: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9147: accuracy appended (86.11%)\n", - "Epoch 9147: model set back to train mode\n", - "Epoch 9147: model parameters saved\n", - "Epoch 9148 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9148: avg_loss appended (2.7778)\n", - "Epoch 9148: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9148: accuracy appended (86.11%)\n", - "Epoch 9148: model set back to train mode\n", - "Epoch 9148: model parameters saved\n", - "Epoch 9149 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9149: avg_loss appended (2.7778)\n", - "Epoch 9149: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9149: accuracy appended (86.11%)\n", - "Epoch 9149: model set back to train mode\n", - "Epoch 9149: model parameters saved\n", - "Epoch 9150 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9150: avg_loss appended (2.7778)\n", - "Epoch 9150: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9150: accuracy appended (86.11%)\n", - "Epoch 9150: model set back to train mode\n", - "Epoch 9150: model parameters saved\n", - "Epoch 9151 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9151: avg_loss appended (2.7778)\n", - "Epoch 9151: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9151: accuracy appended (86.11%)\n", - "Epoch 9151: model set back to train mode\n", - "Epoch 9151: model parameters saved\n", - "Epoch 9152 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9152: avg_loss appended (2.7778)\n", - "Epoch 9152: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9152: accuracy appended (86.11%)\n", - "Epoch 9152: model set back to train mode\n", - "Epoch 9152: model parameters saved\n", - "Epoch 9153 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9153: avg_loss appended (2.7778)\n", - "Epoch 9153: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9153: accuracy appended (86.11%)\n", - "Epoch 9153: model set back to train mode\n", - "Epoch 9153: model parameters saved\n", - "Epoch 9154 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9154: avg_loss appended (2.7778)\n", - "Epoch 9154: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9154: accuracy appended (86.11%)\n", - "Epoch 9154: model set back to train mode\n", - "Epoch 9154: model parameters saved\n", - "Epoch 9155 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9155: avg_loss appended (2.7778)\n", - "Epoch 9155: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9155: accuracy appended (86.11%)\n", - "Epoch 9155: model set back to train mode\n", - "Epoch 9155: model parameters saved\n", - "Epoch 9156 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9156: avg_loss appended (2.7778)\n", - "Epoch 9156: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9156: accuracy appended (86.11%)\n", - "Epoch 9156: model set back to train mode\n", - "Epoch 9156: model parameters saved\n", - "Epoch 9157 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9157: avg_loss appended (2.7778)\n", - "Epoch 9157: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9157: accuracy appended (86.11%)\n", - "Epoch 9157: model set back to train mode\n", - "Epoch 9157: model parameters saved\n", - "Epoch 9158 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9158: avg_loss appended (2.7778)\n", - "Epoch 9158: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9158: accuracy appended (86.11%)\n", - "Epoch 9158: model set back to train mode\n", - "Epoch 9158: model parameters saved\n", - "Epoch 9159 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9159: avg_loss appended (2.7778)\n", - "Epoch 9159: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9159: accuracy appended (86.11%)\n", - "Epoch 9159: model set back to train mode\n", - "Epoch 9159: model parameters saved\n", - "Epoch 9160 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9160: avg_loss appended (2.7778)\n", - "Epoch 9160: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9160: accuracy appended (86.11%)\n", - "Epoch 9160: model set back to train mode\n", - "Epoch 9160: model parameters saved\n", - "Epoch 9161 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9161: avg_loss appended (2.7778)\n", - "Epoch 9161: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9161: accuracy appended (86.11%)\n", - "Epoch 9161: model set back to train mode\n", - "Epoch 9161: model parameters saved\n", - "Epoch 9162 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9162: avg_loss appended (2.7778)\n", - "Epoch 9162: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9162: accuracy appended (86.11%)\n", - "Epoch 9162: model set back to train mode\n", - "Epoch 9162: model parameters saved\n", - "Epoch 9163 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9163: avg_loss appended (2.7778)\n", - "Epoch 9163: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9163: accuracy appended (86.11%)\n", - "Epoch 9163: model set back to train mode\n", - "Epoch 9163: model parameters saved\n", - "Epoch 9164 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9164: avg_loss appended (2.7778)\n", - "Epoch 9164: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9164: accuracy appended (86.11%)\n", - "Epoch 9164: model set back to train mode\n", - "Epoch 9164: model parameters saved\n", - "Epoch 9165 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9165: avg_loss appended (2.7778)\n", - "Epoch 9165: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9165: accuracy appended (86.11%)\n", - "Epoch 9165: model set back to train mode\n", - "Epoch 9165: model parameters saved\n", - "Epoch 9166 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9166: avg_loss appended (2.7778)\n", - "Epoch 9166: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9166: accuracy appended (86.11%)\n", - "Epoch 9166: model set back to train mode\n", - "Epoch 9166: model parameters saved\n", - "Epoch 9167 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9167: avg_loss appended (2.7778)\n", - "Epoch 9167: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9167: accuracy appended (86.11%)\n", - "Epoch 9167: model set back to train mode\n", - "Epoch 9167: model parameters saved\n", - "Epoch 9168 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9168: avg_loss appended (2.7778)\n", - "Epoch 9168: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9168: accuracy appended (86.11%)\n", - "Epoch 9168: model set back to train mode\n", - "Epoch 9168: model parameters saved\n", - "Epoch 9169 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9169: avg_loss appended (2.7778)\n", - "Epoch 9169: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9169: accuracy appended (86.11%)\n", - "Epoch 9169: model set back to train mode\n", - "Epoch 9169: model parameters saved\n", - "Epoch 9170 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9170: avg_loss appended (2.7778)\n", - "Epoch 9170: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9170: accuracy appended (86.11%)\n", - "Epoch 9170: model set back to train mode\n", - "Epoch 9170: model parameters saved\n", - "Epoch 9171 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9171: avg_loss appended (2.7778)\n", - "Epoch 9171: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9171: accuracy appended (86.11%)\n", - "Epoch 9171: model set back to train mode\n", - "Epoch 9171: model parameters saved\n", - "Epoch 9172 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9172: avg_loss appended (2.7778)\n", - "Epoch 9172: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9172: accuracy appended (86.11%)\n", - "Epoch 9172: model set back to train mode\n", - "Epoch 9172: model parameters saved\n", - "Epoch 9173 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9173: avg_loss appended (2.7778)\n", - "Epoch 9173: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9173: accuracy appended (86.11%)\n", - "Epoch 9173: model set back to train mode\n", - "Epoch 9173: model parameters saved\n", - "Epoch 9174 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9174: avg_loss appended (2.7778)\n", - "Epoch 9174: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9174: accuracy appended (86.11%)\n", - "Epoch 9174: model set back to train mode\n", - "Epoch 9174: model parameters saved\n", - "Epoch 9175 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9175: avg_loss appended (2.7778)\n", - "Epoch 9175: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9175: accuracy appended (86.11%)\n", - "Epoch 9175: model set back to train mode\n", - "Epoch 9175: model parameters saved\n", - "Epoch 9176 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9176: avg_loss appended (2.7778)\n", - "Epoch 9176: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9176: accuracy appended (86.11%)\n", - "Epoch 9176: model set back to train mode\n", - "Epoch 9176: model parameters saved\n", - "Epoch 9177 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9177: avg_loss appended (2.7778)\n", - "Epoch 9177: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9177: accuracy appended (86.11%)\n", - "Epoch 9177: model set back to train mode\n", - "Epoch 9177: model parameters saved\n", - "Epoch 9178 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9178: avg_loss appended (2.7778)\n", - "Epoch 9178: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9178: accuracy appended (86.11%)\n", - "Epoch 9178: model set back to train mode\n", - "Epoch 9178: model parameters saved\n", - "Epoch 9179 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9179: avg_loss appended (2.7778)\n", - "Epoch 9179: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9179: accuracy appended (86.11%)\n", - "Epoch 9179: model set back to train mode\n", - "Epoch 9179: model parameters saved\n", - "Epoch 9180 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9180: avg_loss appended (2.7778)\n", - "Epoch 9180: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9180: accuracy appended (86.11%)\n", - "Epoch 9180: model set back to train mode\n", - "Epoch 9180: model parameters saved\n", - "Epoch 9181 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9181: avg_loss appended (2.7778)\n", - "Epoch 9181: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9181: accuracy appended (86.11%)\n", - "Epoch 9181: model set back to train mode\n", - "Epoch 9181: model parameters saved\n", - "Epoch 9182 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9182: avg_loss appended (2.7778)\n", - "Epoch 9182: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9182: accuracy appended (86.11%)\n", - "Epoch 9182: model set back to train mode\n", - "Epoch 9182: model parameters saved\n", - "Epoch 9183 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9183: avg_loss appended (2.7778)\n", - "Epoch 9183: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9183: accuracy appended (86.11%)\n", - "Epoch 9183: model set back to train mode\n", - "Epoch 9183: model parameters saved\n", - "Epoch 9184 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9184: avg_loss appended (2.7778)\n", - "Epoch 9184: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9184: accuracy appended (86.11%)\n", - "Epoch 9184: model set back to train mode\n", - "Epoch 9184: model parameters saved\n", - "Epoch 9185 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9185: avg_loss appended (2.7778)\n", - "Epoch 9185: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9185: accuracy appended (86.11%)\n", - "Epoch 9185: model set back to train mode\n", - "Epoch 9185: model parameters saved\n", - "Epoch 9186 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9186: avg_loss appended (2.7778)\n", - "Epoch 9186: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9186: accuracy appended (86.11%)\n", - "Epoch 9186: model set back to train mode\n", - "Epoch 9186: model parameters saved\n", - "Epoch 9187 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9187: avg_loss appended (2.7778)\n", - "Epoch 9187: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9187: accuracy appended (86.11%)\n", - "Epoch 9187: model set back to train mode\n", - "Epoch 9187: model parameters saved\n", - "Epoch 9188 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9188: avg_loss appended (2.7778)\n", - "Epoch 9188: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9188: accuracy appended (86.11%)\n", - "Epoch 9188: model set back to train mode\n", - "Epoch 9188: model parameters saved\n", - "Epoch 9189 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9189: avg_loss appended (2.7778)\n", - "Epoch 9189: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9189: accuracy appended (86.11%)\n", - "Epoch 9189: model set back to train mode\n", - "Epoch 9189: model parameters saved\n", - "Epoch 9190 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9190: avg_loss appended (2.7778)\n", - "Epoch 9190: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9190: accuracy appended (86.11%)\n", - "Epoch 9190: model set back to train mode\n", - "Epoch 9190: model parameters saved\n", - "Epoch 9191 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9191: avg_loss appended (2.7778)\n", - "Epoch 9191: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9191: accuracy appended (86.11%)\n", - "Epoch 9191: model set back to train mode\n", - "Epoch 9191: model parameters saved\n", - "Epoch 9192 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9192: avg_loss appended (2.7778)\n", - "Epoch 9192: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9192: accuracy appended (86.11%)\n", - "Epoch 9192: model set back to train mode\n", - "Epoch 9192: model parameters saved\n", - "Epoch 9193 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9193: avg_loss appended (2.7778)\n", - "Epoch 9193: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9193: accuracy appended (86.11%)\n", - "Epoch 9193: model set back to train mode\n", - "Epoch 9193: model parameters saved\n", - "Epoch 9194 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9194: avg_loss appended (2.7778)\n", - "Epoch 9194: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9194: accuracy appended (86.11%)\n", - "Epoch 9194: model set back to train mode\n", - "Epoch 9194: model parameters saved\n", - "Epoch 9195 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9195: avg_loss appended (2.7778)\n", - "Epoch 9195: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9195: accuracy appended (86.11%)\n", - "Epoch 9195: model set back to train mode\n", - "Epoch 9195: model parameters saved\n", - "Epoch 9196 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9196: avg_loss appended (2.7778)\n", - "Epoch 9196: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9196: accuracy appended (86.11%)\n", - "Epoch 9196: model set back to train mode\n", - "Epoch 9196: model parameters saved\n", - "Epoch 9197 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9197: avg_loss appended (2.7778)\n", - "Epoch 9197: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9197: accuracy appended (86.11%)\n", - "Epoch 9197: model set back to train mode\n", - "Epoch 9197: model parameters saved\n", - "Epoch 9198 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9198: avg_loss appended (2.7778)\n", - "Epoch 9198: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9198: accuracy appended (86.11%)\n", - "Epoch 9198: model set back to train mode\n", - "Epoch 9198: model parameters saved\n", - "Epoch 9199 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9199: avg_loss appended (2.7778)\n", - "Epoch 9199: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9199: accuracy appended (86.11%)\n", - "Epoch 9199: model set back to train mode\n", - "Epoch 9199: model parameters saved\n", - "Epoch 9200 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9200: avg_loss appended (2.7778)\n", - "Epoch 9200: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9200: accuracy appended (86.11%)\n", - "Epoch 9200: model set back to train mode\n", - "Epoch 9200: model parameters saved\n", - "Epoch 9200/10000, Loss: 2.7778, Accuracy: 86.11%\n", - "Epoch 9201 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9201: avg_loss appended (2.7778)\n", - "Epoch 9201: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9201: accuracy appended (86.11%)\n", - "Epoch 9201: model set back to train mode\n", - "Epoch 9201: model parameters saved\n", - "Epoch 9202 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9202: avg_loss appended (2.7778)\n", - "Epoch 9202: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9202: accuracy appended (86.11%)\n", - "Epoch 9202: model set back to train mode\n", - "Epoch 9202: model parameters saved\n", - "Epoch 9203 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9203: avg_loss appended (2.7778)\n", - "Epoch 9203: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9203: accuracy appended (86.11%)\n", - "Epoch 9203: model set back to train mode\n", - "Epoch 9203: model parameters saved\n", - "Epoch 9204 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9204: avg_loss appended (2.7778)\n", - "Epoch 9204: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9204: accuracy appended (86.11%)\n", - "Epoch 9204: model set back to train mode\n", - "Epoch 9204: model parameters saved\n", - "Epoch 9205 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9205: avg_loss appended (2.7778)\n", - "Epoch 9205: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9205: accuracy appended (86.11%)\n", - "Epoch 9205: model set back to train mode\n", - "Epoch 9205: model parameters saved\n", - "Epoch 9206 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9206: avg_loss appended (2.7778)\n", - "Epoch 9206: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9206: accuracy appended (86.11%)\n", - "Epoch 9206: model set back to train mode\n", - "Epoch 9206: model parameters saved\n", - "Epoch 9207 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9207: avg_loss appended (2.7778)\n", - "Epoch 9207: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9207: accuracy appended (86.11%)\n", - "Epoch 9207: model set back to train mode\n", - "Epoch 9207: model parameters saved\n", - "Epoch 9208 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9208: avg_loss appended (2.7778)\n", - "Epoch 9208: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9208: accuracy appended (86.11%)\n", - "Epoch 9208: model set back to train mode\n", - "Epoch 9208: model parameters saved\n", - "Epoch 9209 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9209: avg_loss appended (2.7778)\n", - "Epoch 9209: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9209: accuracy appended (86.11%)\n", - "Epoch 9209: model set back to train mode\n", - "Epoch 9209: model parameters saved\n", - "Epoch 9210 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9210: avg_loss appended (2.7778)\n", - "Epoch 9210: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9210: accuracy appended (86.11%)\n", - "Epoch 9210: model set back to train mode\n", - "Epoch 9210: model parameters saved\n", - "Epoch 9211 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9211: avg_loss appended (2.7778)\n", - "Epoch 9211: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9211: accuracy appended (86.11%)\n", - "Epoch 9211: model set back to train mode\n", - "Epoch 9211: model parameters saved\n", - "Epoch 9212 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9212: avg_loss appended (2.7778)\n", - "Epoch 9212: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9212: accuracy appended (86.11%)\n", - "Epoch 9212: model set back to train mode\n", - "Epoch 9212: model parameters saved\n", - "Epoch 9213 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9213: avg_loss appended (2.7778)\n", - "Epoch 9213: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9213: accuracy appended (86.11%)\n", - "Epoch 9213: model set back to train mode\n", - "Epoch 9213: model parameters saved\n", - "Epoch 9214 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9214: avg_loss appended (2.7778)\n", - "Epoch 9214: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9214: accuracy appended (86.11%)\n", - "Epoch 9214: model set back to train mode\n", - "Epoch 9214: model parameters saved\n", - "Epoch 9215 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9215: avg_loss appended (2.7778)\n", - "Epoch 9215: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9215: accuracy appended (86.11%)\n", - "Epoch 9215: model set back to train mode\n", - "Epoch 9215: model parameters saved\n", - "Epoch 9216 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9216: avg_loss appended (2.7778)\n", - "Epoch 9216: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9216: accuracy appended (86.11%)\n", - "Epoch 9216: model set back to train mode\n", - "Epoch 9216: model parameters saved\n", - "Epoch 9217 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9217: avg_loss appended (2.7778)\n", - "Epoch 9217: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9217: accuracy appended (86.11%)\n", - "Epoch 9217: model set back to train mode\n", - "Epoch 9217: model parameters saved\n", - "Epoch 9218 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9218: avg_loss appended (2.7778)\n", - "Epoch 9218: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9218: accuracy appended (86.11%)\n", - "Epoch 9218: model set back to train mode\n", - "Epoch 9218: model parameters saved\n", - "Epoch 9219 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9219: avg_loss appended (2.7778)\n", - "Epoch 9219: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9219: accuracy appended (86.11%)\n", - "Epoch 9219: model set back to train mode\n", - "Epoch 9219: model parameters saved\n", - "Epoch 9220 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9220: avg_loss appended (2.7778)\n", - "Epoch 9220: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9220: accuracy appended (86.11%)\n", - "Epoch 9220: model set back to train mode\n", - "Epoch 9220: model parameters saved\n", - "Epoch 9221 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9221: avg_loss appended (2.7778)\n", - "Epoch 9221: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9221: accuracy appended (86.11%)\n", - "Epoch 9221: model set back to train mode\n", - "Epoch 9221: model parameters saved\n", - "Epoch 9222 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9222: avg_loss appended (2.7778)\n", - "Epoch 9222: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9222: accuracy appended (86.11%)\n", - "Epoch 9222: model set back to train mode\n", - "Epoch 9222: model parameters saved\n", - "Epoch 9223 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9223: avg_loss appended (2.7778)\n", - "Epoch 9223: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9223: accuracy appended (86.11%)\n", - "Epoch 9223: model set back to train mode\n", - "Epoch 9223: model parameters saved\n", - "Epoch 9224 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9224: avg_loss appended (2.7778)\n", - "Epoch 9224: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9224: accuracy appended (86.11%)\n", - "Epoch 9224: model set back to train mode\n", - "Epoch 9224: model parameters saved\n", - "Epoch 9225 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9225: avg_loss appended (2.7778)\n", - "Epoch 9225: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9225: accuracy appended (86.11%)\n", - "Epoch 9225: model set back to train mode\n", - "Epoch 9225: model parameters saved\n", - "Epoch 9226 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9226: avg_loss appended (2.7778)\n", - "Epoch 9226: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9226: accuracy appended (86.11%)\n", - "Epoch 9226: model set back to train mode\n", - "Epoch 9226: model parameters saved\n", - "Epoch 9227 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9227: avg_loss appended (2.7778)\n", - "Epoch 9227: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9227: accuracy appended (86.11%)\n", - "Epoch 9227: model set back to train mode\n", - "Epoch 9227: model parameters saved\n", - "Epoch 9228 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9228: avg_loss appended (2.7778)\n", - "Epoch 9228: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9228: accuracy appended (86.11%)\n", - "Epoch 9228: model set back to train mode\n", - "Epoch 9228: model parameters saved\n", - "Epoch 9229 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9229: avg_loss appended (2.7778)\n", - "Epoch 9229: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9229: accuracy appended (86.11%)\n", - "Epoch 9229: model set back to train mode\n", - "Epoch 9229: model parameters saved\n", - "Epoch 9230 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9230: avg_loss appended (2.7778)\n", - "Epoch 9230: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9230: accuracy appended (86.11%)\n", - "Epoch 9230: model set back to train mode\n", - "Epoch 9230: model parameters saved\n", - "Epoch 9231 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9231: avg_loss appended (2.7778)\n", - "Epoch 9231: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9231: accuracy appended (86.11%)\n", - "Epoch 9231: model set back to train mode\n", - "Epoch 9231: model parameters saved\n", - "Epoch 9232 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9232: avg_loss appended (2.7778)\n", - "Epoch 9232: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9232: accuracy appended (86.11%)\n", - "Epoch 9232: model set back to train mode\n", - "Epoch 9232: model parameters saved\n", - "Epoch 9233 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9233: avg_loss appended (2.7778)\n", - "Epoch 9233: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9233: accuracy appended (86.11%)\n", - "Epoch 9233: model set back to train mode\n", - "Epoch 9233: model parameters saved\n", - "Epoch 9234 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9234: avg_loss appended (2.7778)\n", - "Epoch 9234: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9234: accuracy appended (86.11%)\n", - "Epoch 9234: model set back to train mode\n", - "Epoch 9234: model parameters saved\n", - "Epoch 9235 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9235: avg_loss appended (2.7778)\n", - "Epoch 9235: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9235: accuracy appended (86.11%)\n", - "Epoch 9235: model set back to train mode\n", - "Epoch 9235: model parameters saved\n", - "Epoch 9236 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9236: avg_loss appended (2.7778)\n", - "Epoch 9236: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9236: accuracy appended (86.11%)\n", - "Epoch 9236: model set back to train mode\n", - "Epoch 9236: model parameters saved\n", - "Epoch 9237 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9237: avg_loss appended (2.7778)\n", - "Epoch 9237: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9237: accuracy appended (86.11%)\n", - "Epoch 9237: model set back to train mode\n", - "Epoch 9237: model parameters saved\n", - "Epoch 9238 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9238: avg_loss appended (2.7778)\n", - "Epoch 9238: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9238: accuracy appended (86.11%)\n", - "Epoch 9238: model set back to train mode\n", - "Epoch 9238: model parameters saved\n", - "Epoch 9239 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9239: avg_loss appended (2.7778)\n", - "Epoch 9239: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9239: accuracy appended (86.11%)\n", - "Epoch 9239: model set back to train mode\n", - "Epoch 9239: model parameters saved\n", - "Epoch 9240 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9240: avg_loss appended (2.7778)\n", - "Epoch 9240: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9240: accuracy appended (86.11%)\n", - "Epoch 9240: model set back to train mode\n", - "Epoch 9240: model parameters saved\n", - "Epoch 9241 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9241: avg_loss appended (2.7778)\n", - "Epoch 9241: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9241: accuracy appended (86.11%)\n", - "Epoch 9241: model set back to train mode\n", - "Epoch 9241: model parameters saved\n", - "Epoch 9242 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9242: avg_loss appended (2.7778)\n", - "Epoch 9242: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9242: accuracy appended (86.11%)\n", - "Epoch 9242: model set back to train mode\n", - "Epoch 9242: model parameters saved\n", - "Epoch 9243 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9243: avg_loss appended (2.7778)\n", - "Epoch 9243: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9243: accuracy appended (86.11%)\n", - "Epoch 9243: model set back to train mode\n", - "Epoch 9243: model parameters saved\n", - "Epoch 9244 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9244: avg_loss appended (2.7778)\n", - "Epoch 9244: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9244: accuracy appended (86.11%)\n", - "Epoch 9244: model set back to train mode\n", - "Epoch 9244: model parameters saved\n", - "Epoch 9245 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9245: avg_loss appended (2.7778)\n", - "Epoch 9245: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9245: accuracy appended (86.11%)\n", - "Epoch 9245: model set back to train mode\n", - "Epoch 9245: model parameters saved\n", - "Epoch 9246 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9246: avg_loss appended (2.7778)\n", - "Epoch 9246: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9246: accuracy appended (86.11%)\n", - "Epoch 9246: model set back to train mode\n", - "Epoch 9246: model parameters saved\n", - "Epoch 9247 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9247: avg_loss appended (2.7778)\n", - "Epoch 9247: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9247: accuracy appended (86.11%)\n", - "Epoch 9247: model set back to train mode\n", - "Epoch 9247: model parameters saved\n", - "Epoch 9248 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9248: avg_loss appended (2.7778)\n", - "Epoch 9248: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9248: accuracy appended (86.11%)\n", - "Epoch 9248: model set back to train mode\n", - "Epoch 9248: model parameters saved\n", - "Epoch 9249 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9249: avg_loss appended (2.7778)\n", - "Epoch 9249: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9249: accuracy appended (86.11%)\n", - "Epoch 9249: model set back to train mode\n", - "Epoch 9249: model parameters saved\n", - "Epoch 9250 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9250: avg_loss appended (2.7778)\n", - "Epoch 9250: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9250: accuracy appended (86.11%)\n", - "Epoch 9250: model set back to train mode\n", - "Epoch 9250: model parameters saved\n", - "Epoch 9251 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9251: avg_loss appended (2.7778)\n", - "Epoch 9251: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9251: accuracy appended (86.11%)\n", - "Epoch 9251: model set back to train mode\n", - "Epoch 9251: model parameters saved\n", - "Epoch 9252 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9252: avg_loss appended (2.7778)\n", - "Epoch 9252: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9252: accuracy appended (86.11%)\n", - "Epoch 9252: model set back to train mode\n", - "Epoch 9252: model parameters saved\n", - "Epoch 9253 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9253: avg_loss appended (2.7778)\n", - "Epoch 9253: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9253: accuracy appended (86.11%)\n", - "Epoch 9253: model set back to train mode\n", - "Epoch 9253: model parameters saved\n", - "Epoch 9254 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9254: avg_loss appended (2.7778)\n", - "Epoch 9254: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9254: accuracy appended (86.11%)\n", - "Epoch 9254: model set back to train mode\n", - "Epoch 9254: model parameters saved\n", - "Epoch 9255 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9255: avg_loss appended (2.7778)\n", - "Epoch 9255: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9255: accuracy appended (86.11%)\n", - "Epoch 9255: model set back to train mode\n", - "Epoch 9255: model parameters saved\n", - "Epoch 9256 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9256: avg_loss appended (2.7778)\n", - "Epoch 9256: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9256: accuracy appended (86.11%)\n", - "Epoch 9256: model set back to train mode\n", - "Epoch 9256: model parameters saved\n", - "Epoch 9257 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9257: avg_loss appended (2.7778)\n", - "Epoch 9257: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9257: accuracy appended (86.11%)\n", - "Epoch 9257: model set back to train mode\n", - "Epoch 9257: model parameters saved\n", - "Epoch 9258 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9258: avg_loss appended (2.7778)\n", - "Epoch 9258: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9258: accuracy appended (86.11%)\n", - "Epoch 9258: model set back to train mode\n", - "Epoch 9258: model parameters saved\n", - "Epoch 9259 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9259: avg_loss appended (2.7778)\n", - "Epoch 9259: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9259: accuracy appended (86.11%)\n", - "Epoch 9259: model set back to train mode\n", - "Epoch 9259: model parameters saved\n", - "Epoch 9260 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9260: avg_loss appended (2.7778)\n", - "Epoch 9260: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9260: accuracy appended (86.11%)\n", - "Epoch 9260: model set back to train mode\n", - "Epoch 9260: model parameters saved\n", - "Epoch 9261 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9261: avg_loss appended (2.7778)\n", - "Epoch 9261: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9261: accuracy appended (86.11%)\n", - "Epoch 9261: model set back to train mode\n", - "Epoch 9261: model parameters saved\n", - "Epoch 9262 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9262: avg_loss appended (2.7778)\n", - "Epoch 9262: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9262: accuracy appended (86.11%)\n", - "Epoch 9262: model set back to train mode\n", - "Epoch 9262: model parameters saved\n", - "Epoch 9263 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9263: avg_loss appended (2.7778)\n", - "Epoch 9263: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9263: accuracy appended (86.11%)\n", - "Epoch 9263: model set back to train mode\n", - "Epoch 9263: model parameters saved\n", - "Epoch 9264 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9264: avg_loss appended (2.7778)\n", - "Epoch 9264: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9264: accuracy appended (86.11%)\n", - "Epoch 9264: model set back to train mode\n", - "Epoch 9264: model parameters saved\n", - "Epoch 9265 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9265: avg_loss appended (2.7778)\n", - "Epoch 9265: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9265: accuracy appended (86.11%)\n", - "Epoch 9265: model set back to train mode\n", - "Epoch 9265: model parameters saved\n", - "Epoch 9266 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9266: avg_loss appended (2.7778)\n", - "Epoch 9266: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9266: accuracy appended (86.11%)\n", - "Epoch 9266: model set back to train mode\n", - "Epoch 9266: model parameters saved\n", - "Epoch 9267 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9267: avg_loss appended (2.7778)\n", - "Epoch 9267: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9267: accuracy appended (86.11%)\n", - "Epoch 9267: model set back to train mode\n", - "Epoch 9267: model parameters saved\n", - "Epoch 9268 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9268: avg_loss appended (2.7778)\n", - "Epoch 9268: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9268: accuracy appended (86.11%)\n", - "Epoch 9268: model set back to train mode\n", - "Epoch 9268: model parameters saved\n", - "Epoch 9269 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9269: avg_loss appended (2.7778)\n", - "Epoch 9269: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9269: accuracy appended (86.11%)\n", - "Epoch 9269: model set back to train mode\n", - "Epoch 9269: model parameters saved\n", - "Epoch 9270 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9270: avg_loss appended (2.7778)\n", - "Epoch 9270: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9270: accuracy appended (86.11%)\n", - "Epoch 9270: model set back to train mode\n", - "Epoch 9270: model parameters saved\n", - "Epoch 9271 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9271: avg_loss appended (2.7778)\n", - "Epoch 9271: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9271: accuracy appended (86.11%)\n", - "Epoch 9271: model set back to train mode\n", - "Epoch 9271: model parameters saved\n", - "Epoch 9272 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9272: avg_loss appended (2.7778)\n", - "Epoch 9272: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9272: accuracy appended (86.11%)\n", - "Epoch 9272: model set back to train mode\n", - "Epoch 9272: model parameters saved\n", - "Epoch 9273 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9273: avg_loss appended (2.7778)\n", - "Epoch 9273: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9273: accuracy appended (86.11%)\n", - "Epoch 9273: model set back to train mode\n", - "Epoch 9273: model parameters saved\n", - "Epoch 9274 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9274: avg_loss appended (2.7778)\n", - "Epoch 9274: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9274: accuracy appended (86.11%)\n", - "Epoch 9274: model set back to train mode\n", - "Epoch 9274: model parameters saved\n", - "Epoch 9275 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9275: avg_loss appended (2.7778)\n", - "Epoch 9275: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9275: accuracy appended (86.11%)\n", - "Epoch 9275: model set back to train mode\n", - "Epoch 9275: model parameters saved\n", - "Epoch 9276 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9276: avg_loss appended (2.7778)\n", - "Epoch 9276: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9276: accuracy appended (86.11%)\n", - "Epoch 9276: model set back to train mode\n", - "Epoch 9276: model parameters saved\n", - "Epoch 9277 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9277: avg_loss appended (2.7778)\n", - "Epoch 9277: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9277: accuracy appended (86.11%)\n", - "Epoch 9277: model set back to train mode\n", - "Epoch 9277: model parameters saved\n", - "Epoch 9278 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9278: avg_loss appended (2.7778)\n", - "Epoch 9278: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9278: accuracy appended (86.11%)\n", - "Epoch 9278: model set back to train mode\n", - "Epoch 9278: model parameters saved\n", - "Epoch 9279 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9279: avg_loss appended (2.7778)\n", - "Epoch 9279: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9279: accuracy appended (86.11%)\n", - "Epoch 9279: model set back to train mode\n", - "Epoch 9279: model parameters saved\n", - "Epoch 9280 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9280: avg_loss appended (2.7778)\n", - "Epoch 9280: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9280: accuracy appended (86.11%)\n", - "Epoch 9280: model set back to train mode\n", - "Epoch 9280: model parameters saved\n", - "Epoch 9281 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9281: avg_loss appended (2.7778)\n", - "Epoch 9281: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9281: accuracy appended (86.11%)\n", - "Epoch 9281: model set back to train mode\n", - "Epoch 9281: model parameters saved\n", - "Epoch 9282 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9282: avg_loss appended (2.7778)\n", - "Epoch 9282: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9282: accuracy appended (86.11%)\n", - "Epoch 9282: model set back to train mode\n", - "Epoch 9282: model parameters saved\n", - "Epoch 9283 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9283: avg_loss appended (2.7778)\n", - "Epoch 9283: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9283: accuracy appended (86.11%)\n", - "Epoch 9283: model set back to train mode\n", - "Epoch 9283: model parameters saved\n", - "Epoch 9284 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9284: avg_loss appended (2.7778)\n", - "Epoch 9284: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9284: accuracy appended (86.11%)\n", - "Epoch 9284: model set back to train mode\n", - "Epoch 9284: model parameters saved\n", - "Epoch 9285 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9285: avg_loss appended (2.7778)\n", - "Epoch 9285: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9285: accuracy appended (86.11%)\n", - "Epoch 9285: model set back to train mode\n", - "Epoch 9285: model parameters saved\n", - "Epoch 9286 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9286: avg_loss appended (2.7778)\n", - "Epoch 9286: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9286: accuracy appended (86.11%)\n", - "Epoch 9286: model set back to train mode\n", - "Epoch 9286: model parameters saved\n", - "Epoch 9287 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9287: avg_loss appended (2.7778)\n", - "Epoch 9287: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9287: accuracy appended (86.11%)\n", - "Epoch 9287: model set back to train mode\n", - "Epoch 9287: model parameters saved\n", - "Epoch 9288 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9288: avg_loss appended (2.7778)\n", - "Epoch 9288: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9288: accuracy appended (86.11%)\n", - "Epoch 9288: model set back to train mode\n", - "Epoch 9288: model parameters saved\n", - "Epoch 9289 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9289: avg_loss appended (2.7778)\n", - "Epoch 9289: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9289: accuracy appended (86.11%)\n", - "Epoch 9289: model set back to train mode\n", - "Epoch 9289: model parameters saved\n", - "Epoch 9290 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9290: avg_loss appended (2.7778)\n", - "Epoch 9290: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9290: accuracy appended (86.11%)\n", - "Epoch 9290: model set back to train mode\n", - "Epoch 9290: model parameters saved\n", - "Epoch 9291 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9291: avg_loss appended (2.7778)\n", - "Epoch 9291: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9291: accuracy appended (86.11%)\n", - "Epoch 9291: model set back to train mode\n", - "Epoch 9291: model parameters saved\n", - "Epoch 9292 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9292: avg_loss appended (2.7778)\n", - "Epoch 9292: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9292: accuracy appended (86.11%)\n", - "Epoch 9292: model set back to train mode\n", - "Epoch 9292: model parameters saved\n", - "Epoch 9293 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9293: avg_loss appended (2.7778)\n", - "Epoch 9293: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9293: accuracy appended (86.11%)\n", - "Epoch 9293: model set back to train mode\n", - "Epoch 9293: model parameters saved\n", - "Epoch 9294 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9294: avg_loss appended (2.7778)\n", - "Epoch 9294: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9294: accuracy appended (86.11%)\n", - "Epoch 9294: model set back to train mode\n", - "Epoch 9294: model parameters saved\n", - "Epoch 9295 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9295: avg_loss appended (2.7778)\n", - "Epoch 9295: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9295: accuracy appended (86.11%)\n", - "Epoch 9295: model set back to train mode\n", - "Epoch 9295: model parameters saved\n", - "Epoch 9296 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9296: avg_loss appended (2.7778)\n", - "Epoch 9296: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9296: accuracy appended (86.11%)\n", - "Epoch 9296: model set back to train mode\n", - "Epoch 9296: model parameters saved\n", - "Epoch 9297 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9297: avg_loss appended (2.7778)\n", - "Epoch 9297: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9297: accuracy appended (86.11%)\n", - "Epoch 9297: model set back to train mode\n", - "Epoch 9297: model parameters saved\n", - "Epoch 9298 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9298: avg_loss appended (2.7778)\n", - "Epoch 9298: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9298: accuracy appended (86.11%)\n", - "Epoch 9298: model set back to train mode\n", - "Epoch 9298: model parameters saved\n", - "Epoch 9299 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9299: avg_loss appended (2.7778)\n", - "Epoch 9299: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9299: accuracy appended (86.11%)\n", - "Epoch 9299: model set back to train mode\n", - "Epoch 9299: model parameters saved\n", - "Epoch 9300 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9300: avg_loss appended (2.7778)\n", - "Epoch 9300: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9300: accuracy appended (86.11%)\n", - "Epoch 9300: model set back to train mode\n", - "Epoch 9300: model parameters saved\n", - "Epoch 9300/10000, Loss: 2.7778, Accuracy: 86.11%\n", - "Epoch 9301 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9301: avg_loss appended (2.7778)\n", - "Epoch 9301: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9301: accuracy appended (86.11%)\n", - "Epoch 9301: model set back to train mode\n", - "Epoch 9301: model parameters saved\n", - "Epoch 9302 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9302: avg_loss appended (2.7778)\n", - "Epoch 9302: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9302: accuracy appended (86.11%)\n", - "Epoch 9302: model set back to train mode\n", - "Epoch 9302: model parameters saved\n", - "Epoch 9303 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9303: avg_loss appended (2.7778)\n", - "Epoch 9303: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9303: accuracy appended (86.11%)\n", - "Epoch 9303: model set back to train mode\n", - "Epoch 9303: model parameters saved\n", - "Epoch 9304 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9304: avg_loss appended (2.7778)\n", - "Epoch 9304: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9304: accuracy appended (86.11%)\n", - "Epoch 9304: model set back to train mode\n", - "Epoch 9304: model parameters saved\n", - "Epoch 9305 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9305: avg_loss appended (2.7778)\n", - "Epoch 9305: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9305: accuracy appended (86.11%)\n", - "Epoch 9305: model set back to train mode\n", - "Epoch 9305: model parameters saved\n", - "Epoch 9306 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9306: avg_loss appended (2.7778)\n", - "Epoch 9306: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9306: accuracy appended (86.11%)\n", - "Epoch 9306: model set back to train mode\n", - "Epoch 9306: model parameters saved\n", - "Epoch 9307 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9307: avg_loss appended (2.7778)\n", - "Epoch 9307: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9307: accuracy appended (86.11%)\n", - "Epoch 9307: model set back to train mode\n", - "Epoch 9307: model parameters saved\n", - "Epoch 9308 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9308: avg_loss appended (2.7778)\n", - "Epoch 9308: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9308: accuracy appended (86.11%)\n", - "Epoch 9308: model set back to train mode\n", - "Epoch 9308: model parameters saved\n", - "Epoch 9309 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9309: avg_loss appended (2.7778)\n", - "Epoch 9309: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9309: accuracy appended (86.11%)\n", - "Epoch 9309: model set back to train mode\n", - "Epoch 9309: model parameters saved\n", - "Epoch 9310 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9310: avg_loss appended (2.7778)\n", - "Epoch 9310: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9310: accuracy appended (86.11%)\n", - "Epoch 9310: model set back to train mode\n", - "Epoch 9310: model parameters saved\n", - "Epoch 9311 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9311: avg_loss appended (2.7778)\n", - "Epoch 9311: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9311: accuracy appended (86.11%)\n", - "Epoch 9311: model set back to train mode\n", - "Epoch 9311: model parameters saved\n", - "Epoch 9312 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9312: avg_loss appended (2.7778)\n", - "Epoch 9312: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9312: accuracy appended (86.11%)\n", - "Epoch 9312: model set back to train mode\n", - "Epoch 9312: model parameters saved\n", - "Epoch 9313 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9313: avg_loss appended (2.7778)\n", - "Epoch 9313: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9313: accuracy appended (86.11%)\n", - "Epoch 9313: model set back to train mode\n", - "Epoch 9313: model parameters saved\n", - "Epoch 9314 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9314: avg_loss appended (2.7778)\n", - "Epoch 9314: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9314: accuracy appended (86.11%)\n", - "Epoch 9314: model set back to train mode\n", - "Epoch 9314: model parameters saved\n", - "Epoch 9315 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9315: avg_loss appended (2.7778)\n", - "Epoch 9315: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9315: accuracy appended (86.11%)\n", - "Epoch 9315: model set back to train mode\n", - "Epoch 9315: model parameters saved\n", - "Epoch 9316 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9316: avg_loss appended (2.7778)\n", - "Epoch 9316: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9316: accuracy appended (86.11%)\n", - "Epoch 9316: model set back to train mode\n", - "Epoch 9316: model parameters saved\n", - "Epoch 9317 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9317: avg_loss appended (2.7778)\n", - "Epoch 9317: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9317: accuracy appended (86.11%)\n", - "Epoch 9317: model set back to train mode\n", - "Epoch 9317: model parameters saved\n", - "Epoch 9318 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9318: avg_loss appended (2.7778)\n", - "Epoch 9318: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9318: accuracy appended (86.11%)\n", - "Epoch 9318: model set back to train mode\n", - "Epoch 9318: model parameters saved\n", - "Epoch 9319 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9319: avg_loss appended (2.7778)\n", - "Epoch 9319: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9319: accuracy appended (86.11%)\n", - "Epoch 9319: model set back to train mode\n", - "Epoch 9319: model parameters saved\n", - "Epoch 9320 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9320: avg_loss appended (2.7778)\n", - "Epoch 9320: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9320: accuracy appended (86.11%)\n", - "Epoch 9320: model set back to train mode\n", - "Epoch 9320: model parameters saved\n", - "Epoch 9321 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9321: avg_loss appended (2.7778)\n", - "Epoch 9321: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9321: accuracy appended (86.11%)\n", - "Epoch 9321: model set back to train mode\n", - "Epoch 9321: model parameters saved\n", - "Epoch 9322 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9322: avg_loss appended (2.7778)\n", - "Epoch 9322: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9322: accuracy appended (86.11%)\n", - "Epoch 9322: model set back to train mode\n", - "Epoch 9322: model parameters saved\n", - "Epoch 9323 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9323: avg_loss appended (2.7778)\n", - "Epoch 9323: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9323: accuracy appended (86.11%)\n", - "Epoch 9323: model set back to train mode\n", - "Epoch 9323: model parameters saved\n", - "Epoch 9324 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9324: avg_loss appended (2.7778)\n", - "Epoch 9324: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9324: accuracy appended (86.11%)\n", - "Epoch 9324: model set back to train mode\n", - "Epoch 9324: model parameters saved\n", - "Epoch 9325 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9325: avg_loss appended (2.7778)\n", - "Epoch 9325: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9325: accuracy appended (86.11%)\n", - "Epoch 9325: model set back to train mode\n", - "Epoch 9325: model parameters saved\n", - "Epoch 9326 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9326: avg_loss appended (2.7778)\n", - "Epoch 9326: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9326: accuracy appended (86.11%)\n", - "Epoch 9326: model set back to train mode\n", - "Epoch 9326: model parameters saved\n", - "Epoch 9327 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9327: avg_loss appended (2.7778)\n", - "Epoch 9327: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9327: accuracy appended (86.11%)\n", - "Epoch 9327: model set back to train mode\n", - "Epoch 9327: model parameters saved\n", - "Epoch 9328 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9328: avg_loss appended (2.7778)\n", - "Epoch 9328: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9328: accuracy appended (86.11%)\n", - "Epoch 9328: model set back to train mode\n", - "Epoch 9328: model parameters saved\n", - "Epoch 9329 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9329: avg_loss appended (2.7778)\n", - "Epoch 9329: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9329: accuracy appended (86.11%)\n", - "Epoch 9329: model set back to train mode\n", - "Epoch 9329: model parameters saved\n", - "Epoch 9330 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9330: avg_loss appended (2.7778)\n", - "Epoch 9330: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9330: accuracy appended (86.11%)\n", - "Epoch 9330: model set back to train mode\n", - "Epoch 9330: model parameters saved\n", - "Epoch 9331 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9331: avg_loss appended (2.7778)\n", - "Epoch 9331: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9331: accuracy appended (86.11%)\n", - "Epoch 9331: model set back to train mode\n", - "Epoch 9331: model parameters saved\n", - "Epoch 9332 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9332: avg_loss appended (2.7778)\n", - "Epoch 9332: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9332: accuracy appended (86.11%)\n", - "Epoch 9332: model set back to train mode\n", - "Epoch 9332: model parameters saved\n", - "Epoch 9333 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9333: avg_loss appended (2.7778)\n", - "Epoch 9333: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9333: accuracy appended (86.11%)\n", - "Epoch 9333: model set back to train mode\n", - "Epoch 9333: model parameters saved\n", - "Epoch 9334 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9334: avg_loss appended (2.7778)\n", - "Epoch 9334: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9334: accuracy appended (86.11%)\n", - "Epoch 9334: model set back to train mode\n", - "Epoch 9334: model parameters saved\n", - "Epoch 9335 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9335: avg_loss appended (2.7778)\n", - "Epoch 9335: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9335: accuracy appended (86.11%)\n", - "Epoch 9335: model set back to train mode\n", - "Epoch 9335: model parameters saved\n", - "Epoch 9336 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9336: avg_loss appended (2.7778)\n", - "Epoch 9336: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9336: accuracy appended (86.11%)\n", - "Epoch 9336: model set back to train mode\n", - "Epoch 9336: model parameters saved\n", - "Epoch 9337 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9337: avg_loss appended (2.7778)\n", - "Epoch 9337: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9337: accuracy appended (86.11%)\n", - "Epoch 9337: model set back to train mode\n", - "Epoch 9337: model parameters saved\n", - "Epoch 9338 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9338: avg_loss appended (2.7778)\n", - "Epoch 9338: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9338: accuracy appended (86.11%)\n", - "Epoch 9338: model set back to train mode\n", - "Epoch 9338: model parameters saved\n", - "Epoch 9339 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9339: avg_loss appended (2.7778)\n", - "Epoch 9339: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9339: accuracy appended (86.11%)\n", - "Epoch 9339: model set back to train mode\n", - "Epoch 9339: model parameters saved\n", - "Epoch 9340 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9340: avg_loss appended (2.7778)\n", - "Epoch 9340: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9340: accuracy appended (86.11%)\n", - "Epoch 9340: model set back to train mode\n", - "Epoch 9340: model parameters saved\n", - "Epoch 9341 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9341: avg_loss appended (2.7778)\n", - "Epoch 9341: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9341: accuracy appended (86.11%)\n", - "Epoch 9341: model set back to train mode\n", - "Epoch 9341: model parameters saved\n", - "Epoch 9342 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9342: avg_loss appended (2.7778)\n", - "Epoch 9342: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9342: accuracy appended (86.11%)\n", - "Epoch 9342: model set back to train mode\n", - "Epoch 9342: model parameters saved\n", - "Epoch 9343 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9343: avg_loss appended (2.7778)\n", - "Epoch 9343: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9343: accuracy appended (86.11%)\n", - "Epoch 9343: model set back to train mode\n", - "Epoch 9343: model parameters saved\n", - "Epoch 9344 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9344: avg_loss appended (2.7778)\n", - "Epoch 9344: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9344: accuracy appended (86.11%)\n", - "Epoch 9344: model set back to train mode\n", - "Epoch 9344: model parameters saved\n", - "Epoch 9345 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9345: avg_loss appended (2.7778)\n", - "Epoch 9345: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9345: accuracy appended (86.11%)\n", - "Epoch 9345: model set back to train mode\n", - "Epoch 9345: model parameters saved\n", - "Epoch 9346 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9346: avg_loss appended (2.7778)\n", - "Epoch 9346: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9346: accuracy appended (86.11%)\n", - "Epoch 9346: model set back to train mode\n", - "Epoch 9346: model parameters saved\n", - "Epoch 9347 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9347: avg_loss appended (2.7778)\n", - "Epoch 9347: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9347: accuracy appended (86.11%)\n", - "Epoch 9347: model set back to train mode\n", - "Epoch 9347: model parameters saved\n", - "Epoch 9348 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9348: avg_loss appended (2.7778)\n", - "Epoch 9348: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9348: accuracy appended (86.11%)\n", - "Epoch 9348: model set back to train mode\n", - "Epoch 9348: model parameters saved\n", - "Epoch 9349 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9349: avg_loss appended (2.7778)\n", - "Epoch 9349: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9349: accuracy appended (86.11%)\n", - "Epoch 9349: model set back to train mode\n", - "Epoch 9349: model parameters saved\n", - "Epoch 9350 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9350: avg_loss appended (2.7778)\n", - "Epoch 9350: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9350: accuracy appended (86.11%)\n", - "Epoch 9350: model set back to train mode\n", - "Epoch 9350: model parameters saved\n", - "Epoch 9351 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9351: avg_loss appended (2.7778)\n", - "Epoch 9351: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9351: accuracy appended (86.11%)\n", - "Epoch 9351: model set back to train mode\n", - "Epoch 9351: model parameters saved\n", - "Epoch 9352 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9352: avg_loss appended (2.7778)\n", - "Epoch 9352: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9352: accuracy appended (86.11%)\n", - "Epoch 9352: model set back to train mode\n", - "Epoch 9352: model parameters saved\n", - "Epoch 9353 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9353: avg_loss appended (2.7778)\n", - "Epoch 9353: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9353: accuracy appended (86.11%)\n", - "Epoch 9353: model set back to train mode\n", - "Epoch 9353: model parameters saved\n", - "Epoch 9354 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9354: avg_loss appended (2.7778)\n", - "Epoch 9354: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9354: accuracy appended (86.11%)\n", - "Epoch 9354: model set back to train mode\n", - "Epoch 9354: model parameters saved\n", - "Epoch 9355 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9355: avg_loss appended (2.7778)\n", - "Epoch 9355: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9355: accuracy appended (86.11%)\n", - "Epoch 9355: model set back to train mode\n", - "Epoch 9355: model parameters saved\n", - "Epoch 9356 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9356: avg_loss appended (2.7778)\n", - "Epoch 9356: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9356: accuracy appended (86.11%)\n", - "Epoch 9356: model set back to train mode\n", - "Epoch 9356: model parameters saved\n", - "Epoch 9357 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9357: avg_loss appended (2.7778)\n", - "Epoch 9357: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9357: accuracy appended (86.11%)\n", - "Epoch 9357: model set back to train mode\n", - "Epoch 9357: model parameters saved\n", - "Epoch 9358 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9358: avg_loss appended (2.7778)\n", - "Epoch 9358: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9358: accuracy appended (86.11%)\n", - "Epoch 9358: model set back to train mode\n", - "Epoch 9358: model parameters saved\n", - "Epoch 9359 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9359: avg_loss appended (2.7778)\n", - "Epoch 9359: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9359: accuracy appended (86.11%)\n", - "Epoch 9359: model set back to train mode\n", - "Epoch 9359: model parameters saved\n", - "Epoch 9360 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9360: avg_loss appended (2.7778)\n", - "Epoch 9360: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9360: accuracy appended (86.11%)\n", - "Epoch 9360: model set back to train mode\n", - "Epoch 9360: model parameters saved\n", - "Epoch 9361 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9361: avg_loss appended (2.7778)\n", - "Epoch 9361: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9361: accuracy appended (86.11%)\n", - "Epoch 9361: model set back to train mode\n", - "Epoch 9361: model parameters saved\n", - "Epoch 9362 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9362: avg_loss appended (2.7778)\n", - "Epoch 9362: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9362: accuracy appended (86.11%)\n", - "Epoch 9362: model set back to train mode\n", - "Epoch 9362: model parameters saved\n", - "Epoch 9363 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9363: avg_loss appended (2.7778)\n", - "Epoch 9363: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9363: accuracy appended (86.11%)\n", - "Epoch 9363: model set back to train mode\n", - "Epoch 9363: model parameters saved\n", - "Epoch 9364 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9364: avg_loss appended (2.7778)\n", - "Epoch 9364: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9364: accuracy appended (86.11%)\n", - "Epoch 9364: model set back to train mode\n", - "Epoch 9364: model parameters saved\n", - "Epoch 9365 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9365: avg_loss appended (2.7778)\n", - "Epoch 9365: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9365: accuracy appended (86.11%)\n", - "Epoch 9365: model set back to train mode\n", - "Epoch 9365: model parameters saved\n", - "Epoch 9366 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9366: avg_loss appended (2.7778)\n", - "Epoch 9366: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9366: accuracy appended (86.11%)\n", - "Epoch 9366: model set back to train mode\n", - "Epoch 9366: model parameters saved\n", - "Epoch 9367 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9367: avg_loss appended (2.7778)\n", - "Epoch 9367: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9367: accuracy appended (86.11%)\n", - "Epoch 9367: model set back to train mode\n", - "Epoch 9367: model parameters saved\n", - "Epoch 9368 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9368: avg_loss appended (2.7778)\n", - "Epoch 9368: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9368: accuracy appended (86.11%)\n", - "Epoch 9368: model set back to train mode\n", - "Epoch 9368: model parameters saved\n", - "Epoch 9369 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9369: avg_loss appended (2.7778)\n", - "Epoch 9369: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9369: accuracy appended (86.11%)\n", - "Epoch 9369: model set back to train mode\n", - "Epoch 9369: model parameters saved\n", - "Epoch 9370 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9370: avg_loss appended (2.7778)\n", - "Epoch 9370: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9370: accuracy appended (86.11%)\n", - "Epoch 9370: model set back to train mode\n", - "Epoch 9370: model parameters saved\n", - "Epoch 9371 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9371: avg_loss appended (2.7778)\n", - "Epoch 9371: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9371: accuracy appended (86.11%)\n", - "Epoch 9371: model set back to train mode\n", - "Epoch 9371: model parameters saved\n", - "Epoch 9372 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9372: avg_loss appended (2.7778)\n", - "Epoch 9372: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9372: accuracy appended (86.11%)\n", - "Epoch 9372: model set back to train mode\n", - "Epoch 9372: model parameters saved\n", - "Epoch 9373 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9373: avg_loss appended (2.7778)\n", - "Epoch 9373: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9373: accuracy appended (86.11%)\n", - "Epoch 9373: model set back to train mode\n", - "Epoch 9373: model parameters saved\n", - "Epoch 9374 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9374: avg_loss appended (2.7778)\n", - "Epoch 9374: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9374: accuracy appended (86.11%)\n", - "Epoch 9374: model set back to train mode\n", - "Epoch 9374: model parameters saved\n", - "Epoch 9375 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9375: avg_loss appended (2.7778)\n", - "Epoch 9375: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9375: accuracy appended (86.11%)\n", - "Epoch 9375: model set back to train mode\n", - "Epoch 9375: model parameters saved\n", - "Epoch 9376 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9376: avg_loss appended (2.7778)\n", - "Epoch 9376: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9376: accuracy appended (86.11%)\n", - "Epoch 9376: model set back to train mode\n", - "Epoch 9376: model parameters saved\n", - "Epoch 9377 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9377: avg_loss appended (2.7778)\n", - "Epoch 9377: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9377: accuracy appended (86.11%)\n", - "Epoch 9377: model set back to train mode\n", - "Epoch 9377: model parameters saved\n", - "Epoch 9378 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9378: avg_loss appended (2.7778)\n", - "Epoch 9378: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9378: accuracy appended (86.11%)\n", - "Epoch 9378: model set back to train mode\n", - "Epoch 9378: model parameters saved\n", - "Epoch 9379 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9379: avg_loss appended (2.7778)\n", - "Epoch 9379: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9379: accuracy appended (86.11%)\n", - "Epoch 9379: model set back to train mode\n", - "Epoch 9379: model parameters saved\n", - "Epoch 9380 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9380: avg_loss appended (2.7778)\n", - "Epoch 9380: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9380: accuracy appended (86.11%)\n", - "Epoch 9380: model set back to train mode\n", - "Epoch 9380: model parameters saved\n", - "Epoch 9381 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9381: avg_loss appended (2.7778)\n", - "Epoch 9381: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9381: accuracy appended (86.11%)\n", - "Epoch 9381: model set back to train mode\n", - "Epoch 9381: model parameters saved\n", - "Epoch 9382 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9382: avg_loss appended (2.7778)\n", - "Epoch 9382: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9382: accuracy appended (86.11%)\n", - "Epoch 9382: model set back to train mode\n", - "Epoch 9382: model parameters saved\n", - "Epoch 9383 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9383: avg_loss appended (2.7778)\n", - "Epoch 9383: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9383: accuracy appended (86.11%)\n", - "Epoch 9383: model set back to train mode\n", - "Epoch 9383: model parameters saved\n", - "Epoch 9384 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9384: avg_loss appended (2.7778)\n", - "Epoch 9384: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9384: accuracy appended (86.11%)\n", - "Epoch 9384: model set back to train mode\n", - "Epoch 9384: model parameters saved\n", - "Epoch 9385 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9385: avg_loss appended (2.7778)\n", - "Epoch 9385: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9385: accuracy appended (86.11%)\n", - "Epoch 9385: model set back to train mode\n", - "Epoch 9385: model parameters saved\n", - "Epoch 9386 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9386: avg_loss appended (2.7778)\n", - "Epoch 9386: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9386: accuracy appended (86.11%)\n", - "Epoch 9386: model set back to train mode\n", - "Epoch 9386: model parameters saved\n", - "Epoch 9387 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9387: avg_loss appended (2.7778)\n", - "Epoch 9387: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9387: accuracy appended (86.11%)\n", - "Epoch 9387: model set back to train mode\n", - "Epoch 9387: model parameters saved\n", - "Epoch 9388 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9388: avg_loss appended (2.7778)\n", - "Epoch 9388: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9388: accuracy appended (86.11%)\n", - "Epoch 9388: model set back to train mode\n", - "Epoch 9388: model parameters saved\n", - "Epoch 9389 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9389: avg_loss appended (2.7778)\n", - "Epoch 9389: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9389: accuracy appended (86.11%)\n", - "Epoch 9389: model set back to train mode\n", - "Epoch 9389: model parameters saved\n", - "Epoch 9390 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9390: avg_loss appended (2.7778)\n", - "Epoch 9390: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9390: accuracy appended (86.11%)\n", - "Epoch 9390: model set back to train mode\n", - "Epoch 9390: model parameters saved\n", - "Epoch 9391 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9391: avg_loss appended (2.7778)\n", - "Epoch 9391: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9391: accuracy appended (86.11%)\n", - "Epoch 9391: model set back to train mode\n", - "Epoch 9391: model parameters saved\n", - "Epoch 9392 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9392: avg_loss appended (2.7778)\n", - "Epoch 9392: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9392: accuracy appended (86.11%)\n", - "Epoch 9392: model set back to train mode\n", - "Epoch 9392: model parameters saved\n", - "Epoch 9393 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9393: avg_loss appended (2.7778)\n", - "Epoch 9393: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9393: accuracy appended (86.11%)\n", - "Epoch 9393: model set back to train mode\n", - "Epoch 9393: model parameters saved\n", - "Epoch 9394 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9394: avg_loss appended (2.7778)\n", - "Epoch 9394: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9394: accuracy appended (86.11%)\n", - "Epoch 9394: model set back to train mode\n", - "Epoch 9394: model parameters saved\n", - "Epoch 9395 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9395: avg_loss appended (2.7778)\n", - "Epoch 9395: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9395: accuracy appended (86.11%)\n", - "Epoch 9395: model set back to train mode\n", - "Epoch 9395: model parameters saved\n", - "Epoch 9396 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9396: avg_loss appended (2.7778)\n", - "Epoch 9396: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9396: accuracy appended (86.11%)\n", - "Epoch 9396: model set back to train mode\n", - "Epoch 9396: model parameters saved\n", - "Epoch 9397 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9397: avg_loss appended (2.7778)\n", - "Epoch 9397: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9397: accuracy appended (86.11%)\n", - "Epoch 9397: model set back to train mode\n", - "Epoch 9397: model parameters saved\n", - "Epoch 9398 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9398: avg_loss appended (2.7778)\n", - "Epoch 9398: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9398: accuracy appended (86.11%)\n", - "Epoch 9398: model set back to train mode\n", - "Epoch 9398: model parameters saved\n", - "Epoch 9399 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9399: avg_loss appended (2.7778)\n", - "Epoch 9399: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9399: accuracy appended (86.11%)\n", - "Epoch 9399: model set back to train mode\n", - "Epoch 9399: model parameters saved\n", - "Epoch 9400 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9400: avg_loss appended (2.7778)\n", - "Epoch 9400: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9400: accuracy appended (86.11%)\n", - "Epoch 9400: model set back to train mode\n", - "Epoch 9400: model parameters saved\n", - "Epoch 9400/10000, Loss: 2.7778, Accuracy: 86.11%\n", - "Epoch 9401 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9401: avg_loss appended (2.7778)\n", - "Epoch 9401: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9401: accuracy appended (86.11%)\n", - "Epoch 9401: model set back to train mode\n", - "Epoch 9401: model parameters saved\n", - "Epoch 9402 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9402: avg_loss appended (2.7778)\n", - "Epoch 9402: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9402: accuracy appended (86.11%)\n", - "Epoch 9402: model set back to train mode\n", - "Epoch 9402: model parameters saved\n", - "Epoch 9403 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9403: avg_loss appended (2.7778)\n", - "Epoch 9403: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9403: accuracy appended (86.11%)\n", - "Epoch 9403: model set back to train mode\n", - "Epoch 9403: model parameters saved\n", - "Epoch 9404 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9404: avg_loss appended (2.7778)\n", - "Epoch 9404: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9404: accuracy appended (86.11%)\n", - "Epoch 9404: model set back to train mode\n", - "Epoch 9404: model parameters saved\n", - "Epoch 9405 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9405: avg_loss appended (2.7778)\n", - "Epoch 9405: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9405: accuracy appended (86.11%)\n", - "Epoch 9405: model set back to train mode\n", - "Epoch 9405: model parameters saved\n", - "Epoch 9406 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9406: avg_loss appended (2.7778)\n", - "Epoch 9406: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9406: accuracy appended (86.11%)\n", - "Epoch 9406: model set back to train mode\n", - "Epoch 9406: model parameters saved\n", - "Epoch 9407 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9407: avg_loss appended (2.7778)\n", - "Epoch 9407: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9407: accuracy appended (86.11%)\n", - "Epoch 9407: model set back to train mode\n", - "Epoch 9407: model parameters saved\n", - "Epoch 9408 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9408: avg_loss appended (2.7778)\n", - "Epoch 9408: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9408: accuracy appended (86.11%)\n", - "Epoch 9408: model set back to train mode\n", - "Epoch 9408: model parameters saved\n", - "Epoch 9409 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9409: avg_loss appended (2.7778)\n", - "Epoch 9409: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9409: accuracy appended (86.11%)\n", - "Epoch 9409: model set back to train mode\n", - "Epoch 9409: model parameters saved\n", - "Epoch 9410 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9410: avg_loss appended (2.7778)\n", - "Epoch 9410: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9410: accuracy appended (86.11%)\n", - "Epoch 9410: model set back to train mode\n", - "Epoch 9410: model parameters saved\n", - "Epoch 9411 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9411: avg_loss appended (2.7778)\n", - "Epoch 9411: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9411: accuracy appended (86.11%)\n", - "Epoch 9411: model set back to train mode\n", - "Epoch 9411: model parameters saved\n", - "Epoch 9412 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9412: avg_loss appended (2.7778)\n", - "Epoch 9412: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9412: accuracy appended (86.11%)\n", - "Epoch 9412: model set back to train mode\n", - "Epoch 9412: model parameters saved\n", - "Epoch 9413 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9413: avg_loss appended (2.7778)\n", - "Epoch 9413: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9413: accuracy appended (86.11%)\n", - "Epoch 9413: model set back to train mode\n", - "Epoch 9413: model parameters saved\n", - "Epoch 9414 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9414: avg_loss appended (2.7778)\n", - "Epoch 9414: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9414: accuracy appended (86.11%)\n", - "Epoch 9414: model set back to train mode\n", - "Epoch 9414: model parameters saved\n", - "Epoch 9415 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9415: avg_loss appended (2.7778)\n", - "Epoch 9415: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9415: accuracy appended (86.11%)\n", - "Epoch 9415: model set back to train mode\n", - "Epoch 9415: model parameters saved\n", - "Epoch 9416 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9416: avg_loss appended (2.7778)\n", - "Epoch 9416: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9416: accuracy appended (86.11%)\n", - "Epoch 9416: model set back to train mode\n", - "Epoch 9416: model parameters saved\n", - "Epoch 9417 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9417: avg_loss appended (2.7778)\n", - "Epoch 9417: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9417: accuracy appended (86.11%)\n", - "Epoch 9417: model set back to train mode\n", - "Epoch 9417: model parameters saved\n", - "Epoch 9418 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9418: avg_loss appended (2.7778)\n", - "Epoch 9418: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9418: accuracy appended (86.11%)\n", - "Epoch 9418: model set back to train mode\n", - "Epoch 9418: model parameters saved\n", - "Epoch 9419 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9419: avg_loss appended (2.7778)\n", - "Epoch 9419: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9419: accuracy appended (86.11%)\n", - "Epoch 9419: model set back to train mode\n", - "Epoch 9419: model parameters saved\n", - "Epoch 9420 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9420: avg_loss appended (2.7778)\n", - "Epoch 9420: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9420: accuracy appended (86.11%)\n", - "Epoch 9420: model set back to train mode\n", - "Epoch 9420: model parameters saved\n", - "Epoch 9421 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9421: avg_loss appended (2.7778)\n", - "Epoch 9421: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9421: accuracy appended (86.11%)\n", - "Epoch 9421: model set back to train mode\n", - "Epoch 9421: model parameters saved\n", - "Epoch 9422 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9422: avg_loss appended (2.7778)\n", - "Epoch 9422: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9422: accuracy appended (86.11%)\n", - "Epoch 9422: model set back to train mode\n", - "Epoch 9422: model parameters saved\n", - "Epoch 9423 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9423: avg_loss appended (2.7778)\n", - "Epoch 9423: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9423: accuracy appended (86.11%)\n", - "Epoch 9423: model set back to train mode\n", - "Epoch 9423: model parameters saved\n", - "Epoch 9424 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9424: avg_loss appended (2.7778)\n", - "Epoch 9424: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9424: accuracy appended (86.11%)\n", - "Epoch 9424: model set back to train mode\n", - "Epoch 9424: model parameters saved\n", - "Epoch 9425 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9425: avg_loss appended (2.7778)\n", - "Epoch 9425: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9425: accuracy appended (86.11%)\n", - "Epoch 9425: model set back to train mode\n", - "Epoch 9425: model parameters saved\n", - "Epoch 9426 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9426: avg_loss appended (2.7778)\n", - "Epoch 9426: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9426: accuracy appended (86.11%)\n", - "Epoch 9426: model set back to train mode\n", - "Epoch 9426: model parameters saved\n", - "Epoch 9427 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9427: avg_loss appended (2.7778)\n", - "Epoch 9427: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9427: accuracy appended (86.11%)\n", - "Epoch 9427: model set back to train mode\n", - "Epoch 9427: model parameters saved\n", - "Epoch 9428 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9428: avg_loss appended (2.7778)\n", - "Epoch 9428: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9428: accuracy appended (86.11%)\n", - "Epoch 9428: model set back to train mode\n", - "Epoch 9428: model parameters saved\n", - "Epoch 9429 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9429: avg_loss appended (2.7778)\n", - "Epoch 9429: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9429: accuracy appended (86.11%)\n", - "Epoch 9429: model set back to train mode\n", - "Epoch 9429: model parameters saved\n", - "Epoch 9430 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9430: avg_loss appended (2.7778)\n", - "Epoch 9430: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9430: accuracy appended (86.11%)\n", - "Epoch 9430: model set back to train mode\n", - "Epoch 9430: model parameters saved\n", - "Epoch 9431 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9431: avg_loss appended (2.7778)\n", - "Epoch 9431: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9431: accuracy appended (86.11%)\n", - "Epoch 9431: model set back to train mode\n", - "Epoch 9431: model parameters saved\n", - "Epoch 9432 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9432: avg_loss appended (2.7778)\n", - "Epoch 9432: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9432: accuracy appended (86.11%)\n", - "Epoch 9432: model set back to train mode\n", - "Epoch 9432: model parameters saved\n", - "Epoch 9433 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9433: avg_loss appended (2.7778)\n", - "Epoch 9433: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9433: accuracy appended (86.11%)\n", - "Epoch 9433: model set back to train mode\n", - "Epoch 9433: model parameters saved\n", - "Epoch 9434 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9434: avg_loss appended (2.7778)\n", - "Epoch 9434: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9434: accuracy appended (86.11%)\n", - "Epoch 9434: model set back to train mode\n", - "Epoch 9434: model parameters saved\n", - "Epoch 9435 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9435: avg_loss appended (2.7778)\n", - "Epoch 9435: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9435: accuracy appended (86.11%)\n", - "Epoch 9435: model set back to train mode\n", - "Epoch 9435: model parameters saved\n", - "Epoch 9436 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9436: avg_loss appended (2.7778)\n", - "Epoch 9436: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9436: accuracy appended (86.11%)\n", - "Epoch 9436: model set back to train mode\n", - "Epoch 9436: model parameters saved\n", - "Epoch 9437 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9437: avg_loss appended (2.7778)\n", - "Epoch 9437: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9437: accuracy appended (86.11%)\n", - "Epoch 9437: model set back to train mode\n", - "Epoch 9437: model parameters saved\n", - "Epoch 9438 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9438: avg_loss appended (2.7778)\n", - "Epoch 9438: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9438: accuracy appended (86.11%)\n", - "Epoch 9438: model set back to train mode\n", - "Epoch 9438: model parameters saved\n", - "Epoch 9439 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9439: avg_loss appended (2.7778)\n", - "Epoch 9439: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9439: accuracy appended (86.11%)\n", - "Epoch 9439: model set back to train mode\n", - "Epoch 9439: model parameters saved\n", - "Epoch 9440 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9440: avg_loss appended (2.7778)\n", - "Epoch 9440: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9440: accuracy appended (86.11%)\n", - "Epoch 9440: model set back to train mode\n", - "Epoch 9440: model parameters saved\n", - "Epoch 9441 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9441: avg_loss appended (2.7778)\n", - "Epoch 9441: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9441: accuracy appended (86.11%)\n", - "Epoch 9441: model set back to train mode\n", - "Epoch 9441: model parameters saved\n", - "Epoch 9442 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9442: avg_loss appended (2.7778)\n", - "Epoch 9442: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9442: accuracy appended (86.11%)\n", - "Epoch 9442: model set back to train mode\n", - "Epoch 9442: model parameters saved\n", - "Epoch 9443 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9443: avg_loss appended (2.7778)\n", - "Epoch 9443: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9443: accuracy appended (86.11%)\n", - "Epoch 9443: model set back to train mode\n", - "Epoch 9443: model parameters saved\n", - "Epoch 9444 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9444: avg_loss appended (2.7778)\n", - "Epoch 9444: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9444: accuracy appended (86.11%)\n", - "Epoch 9444: model set back to train mode\n", - "Epoch 9444: model parameters saved\n", - "Epoch 9445 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9445: avg_loss appended (2.7778)\n", - "Epoch 9445: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9445: accuracy appended (86.11%)\n", - "Epoch 9445: model set back to train mode\n", - "Epoch 9445: model parameters saved\n", - "Epoch 9446 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9446: avg_loss appended (2.7778)\n", - "Epoch 9446: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9446: accuracy appended (86.11%)\n", - "Epoch 9446: model set back to train mode\n", - "Epoch 9446: model parameters saved\n", - "Epoch 9447 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9447: avg_loss appended (2.7778)\n", - "Epoch 9447: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9447: accuracy appended (86.11%)\n", - "Epoch 9447: model set back to train mode\n", - "Epoch 9447: model parameters saved\n", - "Epoch 9448 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9448: avg_loss appended (2.7778)\n", - "Epoch 9448: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9448: accuracy appended (86.11%)\n", - "Epoch 9448: model set back to train mode\n", - "Epoch 9448: model parameters saved\n", - "Epoch 9449 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9449: avg_loss appended (2.7778)\n", - "Epoch 9449: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9449: accuracy appended (86.11%)\n", - "Epoch 9449: model set back to train mode\n", - "Epoch 9449: model parameters saved\n", - "Epoch 9450 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9450: avg_loss appended (2.7778)\n", - "Epoch 9450: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9450: accuracy appended (86.11%)\n", - "Epoch 9450: model set back to train mode\n", - "Epoch 9450: model parameters saved\n", - "Epoch 9451 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9451: avg_loss appended (2.7778)\n", - "Epoch 9451: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9451: accuracy appended (86.11%)\n", - "Epoch 9451: model set back to train mode\n", - "Epoch 9451: model parameters saved\n", - "Epoch 9452 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9452: avg_loss appended (2.7778)\n", - "Epoch 9452: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9452: accuracy appended (86.11%)\n", - "Epoch 9452: model set back to train mode\n", - "Epoch 9452: model parameters saved\n", - "Epoch 9453 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9453: avg_loss appended (2.7778)\n", - "Epoch 9453: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9453: accuracy appended (86.11%)\n", - "Epoch 9453: model set back to train mode\n", - "Epoch 9453: model parameters saved\n", - "Epoch 9454 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9454: avg_loss appended (2.7778)\n", - "Epoch 9454: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9454: accuracy appended (86.11%)\n", - "Epoch 9454: model set back to train mode\n", - "Epoch 9454: model parameters saved\n", - "Epoch 9455 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9455: avg_loss appended (2.7778)\n", - "Epoch 9455: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9455: accuracy appended (86.11%)\n", - "Epoch 9455: model set back to train mode\n", - "Epoch 9455: model parameters saved\n", - "Epoch 9456 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9456: avg_loss appended (2.7778)\n", - "Epoch 9456: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9456: accuracy appended (86.11%)\n", - "Epoch 9456: model set back to train mode\n", - "Epoch 9456: model parameters saved\n", - "Epoch 9457 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9457: avg_loss appended (2.7778)\n", - "Epoch 9457: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9457: accuracy appended (86.11%)\n", - "Epoch 9457: model set back to train mode\n", - "Epoch 9457: model parameters saved\n", - "Epoch 9458 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9458: avg_loss appended (2.7778)\n", - "Epoch 9458: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9458: accuracy appended (86.11%)\n", - "Epoch 9458: model set back to train mode\n", - "Epoch 9458: model parameters saved\n", - "Epoch 9459 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9459: avg_loss appended (2.7778)\n", - "Epoch 9459: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9459: accuracy appended (86.11%)\n", - "Epoch 9459: model set back to train mode\n", - "Epoch 9459: model parameters saved\n", - "Epoch 9460 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9460: avg_loss appended (2.7778)\n", - "Epoch 9460: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9460: accuracy appended (86.11%)\n", - "Epoch 9460: model set back to train mode\n", - "Epoch 9460: model parameters saved\n", - "Epoch 9461 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9461: avg_loss appended (2.7778)\n", - "Epoch 9461: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9461: accuracy appended (86.11%)\n", - "Epoch 9461: model set back to train mode\n", - "Epoch 9461: model parameters saved\n", - "Epoch 9462 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9462: avg_loss appended (2.7778)\n", - "Epoch 9462: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9462: accuracy appended (86.11%)\n", - "Epoch 9462: model set back to train mode\n", - "Epoch 9462: model parameters saved\n", - "Epoch 9463 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9463: avg_loss appended (2.7778)\n", - "Epoch 9463: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9463: accuracy appended (86.11%)\n", - "Epoch 9463: model set back to train mode\n", - "Epoch 9463: model parameters saved\n", - "Epoch 9464 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9464: avg_loss appended (2.7778)\n", - "Epoch 9464: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9464: accuracy appended (86.11%)\n", - "Epoch 9464: model set back to train mode\n", - "Epoch 9464: model parameters saved\n", - "Epoch 9465 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9465: avg_loss appended (2.7778)\n", - "Epoch 9465: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9465: accuracy appended (86.11%)\n", - "Epoch 9465: model set back to train mode\n", - "Epoch 9465: model parameters saved\n", - "Epoch 9466 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9466: avg_loss appended (2.7778)\n", - "Epoch 9466: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9466: accuracy appended (86.11%)\n", - "Epoch 9466: model set back to train mode\n", - "Epoch 9466: model parameters saved\n", - "Epoch 9467 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9467: avg_loss appended (2.7778)\n", - "Epoch 9467: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9467: accuracy appended (86.11%)\n", - "Epoch 9467: model set back to train mode\n", - "Epoch 9467: model parameters saved\n", - "Epoch 9468 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9468: avg_loss appended (2.7778)\n", - "Epoch 9468: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9468: accuracy appended (86.11%)\n", - "Epoch 9468: model set back to train mode\n", - "Epoch 9468: model parameters saved\n", - "Epoch 9469 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9469: avg_loss appended (2.7778)\n", - "Epoch 9469: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9469: accuracy appended (86.11%)\n", - "Epoch 9469: model set back to train mode\n", - "Epoch 9469: model parameters saved\n", - "Epoch 9470 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9470: avg_loss appended (2.7778)\n", - "Epoch 9470: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9470: accuracy appended (86.11%)\n", - "Epoch 9470: model set back to train mode\n", - "Epoch 9470: model parameters saved\n", - "Epoch 9471 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9471: avg_loss appended (2.7778)\n", - "Epoch 9471: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9471: accuracy appended (86.11%)\n", - "Epoch 9471: model set back to train mode\n", - "Epoch 9471: model parameters saved\n", - "Epoch 9472 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9472: avg_loss appended (2.7778)\n", - "Epoch 9472: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9472: accuracy appended (86.11%)\n", - "Epoch 9472: model set back to train mode\n", - "Epoch 9472: model parameters saved\n", - "Epoch 9473 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9473: avg_loss appended (2.7778)\n", - "Epoch 9473: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9473: accuracy appended (86.11%)\n", - "Epoch 9473: model set back to train mode\n", - "Epoch 9473: model parameters saved\n", - "Epoch 9474 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9474: avg_loss appended (2.7778)\n", - "Epoch 9474: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9474: accuracy appended (86.11%)\n", - "Epoch 9474: model set back to train mode\n", - "Epoch 9474: model parameters saved\n", - "Epoch 9475 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9475: avg_loss appended (2.7778)\n", - "Epoch 9475: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9475: accuracy appended (86.11%)\n", - "Epoch 9475: model set back to train mode\n", - "Epoch 9475: model parameters saved\n", - "Epoch 9476 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9476: avg_loss appended (2.7778)\n", - "Epoch 9476: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9476: accuracy appended (86.11%)\n", - "Epoch 9476: model set back to train mode\n", - "Epoch 9476: model parameters saved\n", - "Epoch 9477 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9477: avg_loss appended (2.7778)\n", - "Epoch 9477: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9477: accuracy appended (86.11%)\n", - "Epoch 9477: model set back to train mode\n", - "Epoch 9477: model parameters saved\n", - "Epoch 9478 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9478: avg_loss appended (2.7778)\n", - "Epoch 9478: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9478: accuracy appended (86.11%)\n", - "Epoch 9478: model set back to train mode\n", - "Epoch 9478: model parameters saved\n", - "Epoch 9479 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9479: avg_loss appended (2.7778)\n", - "Epoch 9479: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9479: accuracy appended (86.11%)\n", - "Epoch 9479: model set back to train mode\n", - "Epoch 9479: model parameters saved\n", - "Epoch 9480 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9480: avg_loss appended (2.7778)\n", - "Epoch 9480: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9480: accuracy appended (86.11%)\n", - "Epoch 9480: model set back to train mode\n", - "Epoch 9480: model parameters saved\n", - "Epoch 9481 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9481: avg_loss appended (2.7778)\n", - "Epoch 9481: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9481: accuracy appended (86.11%)\n", - "Epoch 9481: model set back to train mode\n", - "Epoch 9481: model parameters saved\n", - "Epoch 9482 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9482: avg_loss appended (2.7778)\n", - "Epoch 9482: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9482: accuracy appended (86.11%)\n", - "Epoch 9482: model set back to train mode\n", - "Epoch 9482: model parameters saved\n", - "Epoch 9483 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9483: avg_loss appended (2.7778)\n", - "Epoch 9483: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9483: accuracy appended (86.11%)\n", - "Epoch 9483: model set back to train mode\n", - "Epoch 9483: model parameters saved\n", - "Epoch 9484 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9484: avg_loss appended (2.7778)\n", - "Epoch 9484: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9484: accuracy appended (86.11%)\n", - "Epoch 9484: model set back to train mode\n", - "Epoch 9484: model parameters saved\n", - "Epoch 9485 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9485: avg_loss appended (2.7778)\n", - "Epoch 9485: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9485: accuracy appended (86.11%)\n", - "Epoch 9485: model set back to train mode\n", - "Epoch 9485: model parameters saved\n", - "Epoch 9486 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9486: avg_loss appended (2.7778)\n", - "Epoch 9486: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9486: accuracy appended (86.11%)\n", - "Epoch 9486: model set back to train mode\n", - "Epoch 9486: model parameters saved\n", - "Epoch 9487 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9487: avg_loss appended (2.7778)\n", - "Epoch 9487: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9487: accuracy appended (86.11%)\n", - "Epoch 9487: model set back to train mode\n", - "Epoch 9487: model parameters saved\n", - "Epoch 9488 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9488: avg_loss appended (2.7778)\n", - "Epoch 9488: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9488: accuracy appended (86.11%)\n", - "Epoch 9488: model set back to train mode\n", - "Epoch 9488: model parameters saved\n", - "Epoch 9489 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9489: avg_loss appended (2.7778)\n", - "Epoch 9489: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9489: accuracy appended (86.11%)\n", - "Epoch 9489: model set back to train mode\n", - "Epoch 9489: model parameters saved\n", - "Epoch 9490 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9490: avg_loss appended (2.7778)\n", - "Epoch 9490: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9490: accuracy appended (86.11%)\n", - "Epoch 9490: model set back to train mode\n", - "Epoch 9490: model parameters saved\n", - "Epoch 9491 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9491: avg_loss appended (2.7778)\n", - "Epoch 9491: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9491: accuracy appended (86.11%)\n", - "Epoch 9491: model set back to train mode\n", - "Epoch 9491: model parameters saved\n", - "Epoch 9492 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9492: avg_loss appended (2.7778)\n", - "Epoch 9492: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9492: accuracy appended (86.11%)\n", - "Epoch 9492: model set back to train mode\n", - "Epoch 9492: model parameters saved\n", - "Epoch 9493 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9493: avg_loss appended (2.7778)\n", - "Epoch 9493: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9493: accuracy appended (86.11%)\n", - "Epoch 9493: model set back to train mode\n", - "Epoch 9493: model parameters saved\n", - "Epoch 9494 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9494: avg_loss appended (2.7778)\n", - "Epoch 9494: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9494: accuracy appended (86.11%)\n", - "Epoch 9494: model set back to train mode\n", - "Epoch 9494: model parameters saved\n", - "Epoch 9495 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9495: avg_loss appended (2.7778)\n", - "Epoch 9495: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9495: accuracy appended (86.11%)\n", - "Epoch 9495: model set back to train mode\n", - "Epoch 9495: model parameters saved\n", - "Epoch 9496 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9496: avg_loss appended (2.7778)\n", - "Epoch 9496: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9496: accuracy appended (86.11%)\n", - "Epoch 9496: model set back to train mode\n", - "Epoch 9496: model parameters saved\n", - "Epoch 9497 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9497: avg_loss appended (2.7778)\n", - "Epoch 9497: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9497: accuracy appended (86.11%)\n", - "Epoch 9497: model set back to train mode\n", - "Epoch 9497: model parameters saved\n", - "Epoch 9498 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9498: avg_loss appended (2.7778)\n", - "Epoch 9498: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9498: accuracy appended (86.11%)\n", - "Epoch 9498: model set back to train mode\n", - "Epoch 9498: model parameters saved\n", - "Epoch 9499 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9499: avg_loss appended (2.7778)\n", - "Epoch 9499: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9499: accuracy appended (86.11%)\n", - "Epoch 9499: model set back to train mode\n", - "Epoch 9499: model parameters saved\n", - "Epoch 9500 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9500: avg_loss appended (2.7778)\n", - "Epoch 9500: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9500: accuracy appended (86.11%)\n", - "Epoch 9500: model set back to train mode\n", - "Epoch 9500: model parameters saved\n", - "Epoch 9500/10000, Loss: 2.7778, Accuracy: 86.11%\n", - "Epoch 9501 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9501: avg_loss appended (2.7778)\n", - "Epoch 9501: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9501: accuracy appended (86.11%)\n", - "Epoch 9501: model set back to train mode\n", - "Epoch 9501: model parameters saved\n", - "Epoch 9502 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9502: avg_loss appended (2.7778)\n", - "Epoch 9502: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9502: accuracy appended (86.11%)\n", - "Epoch 9502: model set back to train mode\n", - "Epoch 9502: model parameters saved\n", - "Epoch 9503 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9503: avg_loss appended (2.7778)\n", - "Epoch 9503: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9503: accuracy appended (86.11%)\n", - "Epoch 9503: model set back to train mode\n", - "Epoch 9503: model parameters saved\n", - "Epoch 9504 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9504: avg_loss appended (2.7778)\n", - "Epoch 9504: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9504: accuracy appended (86.11%)\n", - "Epoch 9504: model set back to train mode\n", - "Epoch 9504: model parameters saved\n", - "Epoch 9505 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9505: avg_loss appended (2.7778)\n", - "Epoch 9505: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9505: accuracy appended (86.11%)\n", - "Epoch 9505: model set back to train mode\n", - "Epoch 9505: model parameters saved\n", - "Epoch 9506 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9506: avg_loss appended (2.7778)\n", - "Epoch 9506: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9506: accuracy appended (86.11%)\n", - "Epoch 9506: model set back to train mode\n", - "Epoch 9506: model parameters saved\n", - "Epoch 9507 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9507: avg_loss appended (2.7778)\n", - "Epoch 9507: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9507: accuracy appended (86.11%)\n", - "Epoch 9507: model set back to train mode\n", - "Epoch 9507: model parameters saved\n", - "Epoch 9508 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9508: avg_loss appended (2.7778)\n", - "Epoch 9508: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9508: accuracy appended (86.11%)\n", - "Epoch 9508: model set back to train mode\n", - "Epoch 9508: model parameters saved\n", - "Epoch 9509 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9509: avg_loss appended (2.7778)\n", - "Epoch 9509: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9509: accuracy appended (86.11%)\n", - "Epoch 9509: model set back to train mode\n", - "Epoch 9509: model parameters saved\n", - "Epoch 9510 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9510: avg_loss appended (2.7778)\n", - "Epoch 9510: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9510: accuracy appended (86.11%)\n", - "Epoch 9510: model set back to train mode\n", - "Epoch 9510: model parameters saved\n", - "Epoch 9511 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9511: avg_loss appended (2.7778)\n", - "Epoch 9511: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9511: accuracy appended (86.11%)\n", - "Epoch 9511: model set back to train mode\n", - "Epoch 9511: model parameters saved\n", - "Epoch 9512 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9512: avg_loss appended (2.7778)\n", - "Epoch 9512: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9512: accuracy appended (86.11%)\n", - "Epoch 9512: model set back to train mode\n", - "Epoch 9512: model parameters saved\n", - "Epoch 9513 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9513: avg_loss appended (2.7778)\n", - "Epoch 9513: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9513: accuracy appended (86.11%)\n", - "Epoch 9513: model set back to train mode\n", - "Epoch 9513: model parameters saved\n", - "Epoch 9514 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9514: avg_loss appended (2.7778)\n", - "Epoch 9514: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9514: accuracy appended (86.11%)\n", - "Epoch 9514: model set back to train mode\n", - "Epoch 9514: model parameters saved\n", - "Epoch 9515 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9515: avg_loss appended (2.7778)\n", - "Epoch 9515: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9515: accuracy appended (86.11%)\n", - "Epoch 9515: model set back to train mode\n", - "Epoch 9515: model parameters saved\n", - "Epoch 9516 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9516: avg_loss appended (2.7778)\n", - "Epoch 9516: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9516: accuracy appended (86.11%)\n", - "Epoch 9516: model set back to train mode\n", - "Epoch 9516: model parameters saved\n", - "Epoch 9517 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9517: avg_loss appended (2.7778)\n", - "Epoch 9517: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9517: accuracy appended (86.11%)\n", - "Epoch 9517: model set back to train mode\n", - "Epoch 9517: model parameters saved\n", - "Epoch 9518 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9518: avg_loss appended (2.7778)\n", - "Epoch 9518: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9518: accuracy appended (86.11%)\n", - "Epoch 9518: model set back to train mode\n", - "Epoch 9518: model parameters saved\n", - "Epoch 9519 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9519: avg_loss appended (2.7778)\n", - "Epoch 9519: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9519: accuracy appended (86.11%)\n", - "Epoch 9519: model set back to train mode\n", - "Epoch 9519: model parameters saved\n", - "Epoch 9520 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9520: avg_loss appended (2.7778)\n", - "Epoch 9520: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9520: accuracy appended (86.11%)\n", - "Epoch 9520: model set back to train mode\n", - "Epoch 9520: model parameters saved\n", - "Epoch 9521 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9521: avg_loss appended (2.7778)\n", - "Epoch 9521: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9521: accuracy appended (86.11%)\n", - "Epoch 9521: model set back to train mode\n", - "Epoch 9521: model parameters saved\n", - "Epoch 9522 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9522: avg_loss appended (2.7778)\n", - "Epoch 9522: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9522: accuracy appended (86.11%)\n", - "Epoch 9522: model set back to train mode\n", - "Epoch 9522: model parameters saved\n", - "Epoch 9523 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9523: avg_loss appended (2.7778)\n", - "Epoch 9523: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9523: accuracy appended (86.11%)\n", - "Epoch 9523: model set back to train mode\n", - "Epoch 9523: model parameters saved\n", - "Epoch 9524 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9524: avg_loss appended (2.7778)\n", - "Epoch 9524: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9524: accuracy appended (86.11%)\n", - "Epoch 9524: model set back to train mode\n", - "Epoch 9524: model parameters saved\n", - "Epoch 9525 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9525: avg_loss appended (2.7778)\n", - "Epoch 9525: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9525: accuracy appended (86.11%)\n", - "Epoch 9525: model set back to train mode\n", - "Epoch 9525: model parameters saved\n", - "Epoch 9526 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9526: avg_loss appended (2.7778)\n", - "Epoch 9526: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9526: accuracy appended (86.11%)\n", - "Epoch 9526: model set back to train mode\n", - "Epoch 9526: model parameters saved\n", - "Epoch 9527 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9527: avg_loss appended (2.7778)\n", - "Epoch 9527: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9527: accuracy appended (86.11%)\n", - "Epoch 9527: model set back to train mode\n", - "Epoch 9527: model parameters saved\n", - "Epoch 9528 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9528: avg_loss appended (2.7778)\n", - "Epoch 9528: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9528: accuracy appended (86.11%)\n", - "Epoch 9528: model set back to train mode\n", - "Epoch 9528: model parameters saved\n", - "Epoch 9529 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9529: avg_loss appended (2.7778)\n", - "Epoch 9529: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9529: accuracy appended (86.11%)\n", - "Epoch 9529: model set back to train mode\n", - "Epoch 9529: model parameters saved\n", - "Epoch 9530 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9530: avg_loss appended (2.7778)\n", - "Epoch 9530: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9530: accuracy appended (86.11%)\n", - "Epoch 9530: model set back to train mode\n", - "Epoch 9530: model parameters saved\n", - "Epoch 9531 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9531: avg_loss appended (2.7778)\n", - "Epoch 9531: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9531: accuracy appended (86.11%)\n", - "Epoch 9531: model set back to train mode\n", - "Epoch 9531: model parameters saved\n", - "Epoch 9532 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9532: avg_loss appended (2.7778)\n", - "Epoch 9532: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9532: accuracy appended (86.11%)\n", - "Epoch 9532: model set back to train mode\n", - "Epoch 9532: model parameters saved\n", - "Epoch 9533 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9533: avg_loss appended (2.7778)\n", - "Epoch 9533: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9533: accuracy appended (86.11%)\n", - "Epoch 9533: model set back to train mode\n", - "Epoch 9533: model parameters saved\n", - "Epoch 9534 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9534: avg_loss appended (2.7778)\n", - "Epoch 9534: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9534: accuracy appended (86.11%)\n", - "Epoch 9534: model set back to train mode\n", - "Epoch 9534: model parameters saved\n", - "Epoch 9535 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9535: avg_loss appended (2.7778)\n", - "Epoch 9535: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9535: accuracy appended (86.11%)\n", - "Epoch 9535: model set back to train mode\n", - "Epoch 9535: model parameters saved\n", - "Epoch 9536 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9536: avg_loss appended (2.7778)\n", - "Epoch 9536: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9536: accuracy appended (86.11%)\n", - "Epoch 9536: model set back to train mode\n", - "Epoch 9536: model parameters saved\n", - "Epoch 9537 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9537: avg_loss appended (2.7778)\n", - "Epoch 9537: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9537: accuracy appended (86.11%)\n", - "Epoch 9537: model set back to train mode\n", - "Epoch 9537: model parameters saved\n", - "Epoch 9538 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9538: avg_loss appended (2.7778)\n", - "Epoch 9538: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9538: accuracy appended (86.11%)\n", - "Epoch 9538: model set back to train mode\n", - "Epoch 9538: model parameters saved\n", - "Epoch 9539 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9539: avg_loss appended (2.7778)\n", - "Epoch 9539: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9539: accuracy appended (86.11%)\n", - "Epoch 9539: model set back to train mode\n", - "Epoch 9539: model parameters saved\n", - "Epoch 9540 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9540: avg_loss appended (2.7778)\n", - "Epoch 9540: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9540: accuracy appended (86.11%)\n", - "Epoch 9540: model set back to train mode\n", - "Epoch 9540: model parameters saved\n", - "Epoch 9541 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9541: avg_loss appended (2.7778)\n", - "Epoch 9541: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9541: accuracy appended (86.11%)\n", - "Epoch 9541: model set back to train mode\n", - "Epoch 9541: model parameters saved\n", - "Epoch 9542 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9542: avg_loss appended (2.7778)\n", - "Epoch 9542: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9542: accuracy appended (86.11%)\n", - "Epoch 9542: model set back to train mode\n", - "Epoch 9542: model parameters saved\n", - "Epoch 9543 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9543: avg_loss appended (2.7778)\n", - "Epoch 9543: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9543: accuracy appended (86.11%)\n", - "Epoch 9543: model set back to train mode\n", - "Epoch 9543: model parameters saved\n", - "Epoch 9544 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9544: avg_loss appended (2.7778)\n", - "Epoch 9544: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9544: accuracy appended (86.11%)\n", - "Epoch 9544: model set back to train mode\n", - "Epoch 9544: model parameters saved\n", - "Epoch 9545 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9545: avg_loss appended (2.7778)\n", - "Epoch 9545: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9545: accuracy appended (86.11%)\n", - "Epoch 9545: model set back to train mode\n", - "Epoch 9545: model parameters saved\n", - "Epoch 9546 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9546: avg_loss appended (2.7778)\n", - "Epoch 9546: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9546: accuracy appended (86.11%)\n", - "Epoch 9546: model set back to train mode\n", - "Epoch 9546: model parameters saved\n", - "Epoch 9547 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9547: avg_loss appended (2.7778)\n", - "Epoch 9547: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9547: accuracy appended (86.11%)\n", - "Epoch 9547: model set back to train mode\n", - "Epoch 9547: model parameters saved\n", - "Epoch 9548 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9548: avg_loss appended (2.7778)\n", - "Epoch 9548: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9548: accuracy appended (86.11%)\n", - "Epoch 9548: model set back to train mode\n", - "Epoch 9548: model parameters saved\n", - "Epoch 9549 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9549: avg_loss appended (2.7778)\n", - "Epoch 9549: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9549: accuracy appended (86.11%)\n", - "Epoch 9549: model set back to train mode\n", - "Epoch 9549: model parameters saved\n", - "Epoch 9550 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9550: avg_loss appended (2.7778)\n", - "Epoch 9550: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9550: accuracy appended (86.11%)\n", - "Epoch 9550: model set back to train mode\n", - "Epoch 9550: model parameters saved\n", - "Epoch 9551 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9551: avg_loss appended (2.7778)\n", - "Epoch 9551: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9551: accuracy appended (86.11%)\n", - "Epoch 9551: model set back to train mode\n", - "Epoch 9551: model parameters saved\n", - "Epoch 9552 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9552: avg_loss appended (2.7778)\n", - "Epoch 9552: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9552: accuracy appended (86.11%)\n", - "Epoch 9552: model set back to train mode\n", - "Epoch 9552: model parameters saved\n", - "Epoch 9553 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9553: avg_loss appended (2.7778)\n", - "Epoch 9553: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9553: accuracy appended (86.11%)\n", - "Epoch 9553: model set back to train mode\n", - "Epoch 9553: model parameters saved\n", - "Epoch 9554 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9554: avg_loss appended (2.7778)\n", - "Epoch 9554: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9554: accuracy appended (86.11%)\n", - "Epoch 9554: model set back to train mode\n", - "Epoch 9554: model parameters saved\n", - "Epoch 9555 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9555: avg_loss appended (2.7778)\n", - "Epoch 9555: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9555: accuracy appended (86.11%)\n", - "Epoch 9555: model set back to train mode\n", - "Epoch 9555: model parameters saved\n", - "Epoch 9556 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9556: avg_loss appended (2.7778)\n", - "Epoch 9556: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9556: accuracy appended (86.11%)\n", - "Epoch 9556: model set back to train mode\n", - "Epoch 9556: model parameters saved\n", - "Epoch 9557 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9557: avg_loss appended (2.7778)\n", - "Epoch 9557: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9557: accuracy appended (86.11%)\n", - "Epoch 9557: model set back to train mode\n", - "Epoch 9557: model parameters saved\n", - "Epoch 9558 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9558: avg_loss appended (2.7778)\n", - "Epoch 9558: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9558: accuracy appended (86.11%)\n", - "Epoch 9558: model set back to train mode\n", - "Epoch 9558: model parameters saved\n", - "Epoch 9559 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9559: avg_loss appended (2.7778)\n", - "Epoch 9559: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9559: accuracy appended (86.11%)\n", - "Epoch 9559: model set back to train mode\n", - "Epoch 9559: model parameters saved\n", - "Epoch 9560 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9560: avg_loss appended (2.7778)\n", - "Epoch 9560: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9560: accuracy appended (86.11%)\n", - "Epoch 9560: model set back to train mode\n", - "Epoch 9560: model parameters saved\n", - "Epoch 9561 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9561: avg_loss appended (2.7778)\n", - "Epoch 9561: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9561: accuracy appended (86.11%)\n", - "Epoch 9561: model set back to train mode\n", - "Epoch 9561: model parameters saved\n", - "Epoch 9562 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9562: avg_loss appended (2.7778)\n", - "Epoch 9562: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9562: accuracy appended (86.11%)\n", - "Epoch 9562: model set back to train mode\n", - "Epoch 9562: model parameters saved\n", - "Epoch 9563 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9563: avg_loss appended (2.7778)\n", - "Epoch 9563: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9563: accuracy appended (86.11%)\n", - "Epoch 9563: model set back to train mode\n", - "Epoch 9563: model parameters saved\n", - "Epoch 9564 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9564: avg_loss appended (2.7778)\n", - "Epoch 9564: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9564: accuracy appended (86.11%)\n", - "Epoch 9564: model set back to train mode\n", - "Epoch 9564: model parameters saved\n", - "Epoch 9565 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9565: avg_loss appended (2.7778)\n", - "Epoch 9565: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9565: accuracy appended (86.11%)\n", - "Epoch 9565: model set back to train mode\n", - "Epoch 9565: model parameters saved\n", - "Epoch 9566 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9566: avg_loss appended (2.7778)\n", - "Epoch 9566: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9566: accuracy appended (86.11%)\n", - "Epoch 9566: model set back to train mode\n", - "Epoch 9566: model parameters saved\n", - "Epoch 9567 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9567: avg_loss appended (2.7778)\n", - "Epoch 9567: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9567: accuracy appended (86.11%)\n", - "Epoch 9567: model set back to train mode\n", - "Epoch 9567: model parameters saved\n", - "Epoch 9568 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9568: avg_loss appended (2.7778)\n", - "Epoch 9568: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9568: accuracy appended (86.11%)\n", - "Epoch 9568: model set back to train mode\n", - "Epoch 9568: model parameters saved\n", - "Epoch 9569 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9569: avg_loss appended (2.7778)\n", - "Epoch 9569: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9569: accuracy appended (86.11%)\n", - "Epoch 9569: model set back to train mode\n", - "Epoch 9569: model parameters saved\n", - "Epoch 9570 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9570: avg_loss appended (2.7778)\n", - "Epoch 9570: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9570: accuracy appended (86.11%)\n", - "Epoch 9570: model set back to train mode\n", - "Epoch 9570: model parameters saved\n", - "Epoch 9571 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9571: avg_loss appended (2.7778)\n", - "Epoch 9571: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9571: accuracy appended (86.11%)\n", - "Epoch 9571: model set back to train mode\n", - "Epoch 9571: model parameters saved\n", - "Epoch 9572 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9572: avg_loss appended (2.7778)\n", - "Epoch 9572: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9572: accuracy appended (86.11%)\n", - "Epoch 9572: model set back to train mode\n", - "Epoch 9572: model parameters saved\n", - "Epoch 9573 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9573: avg_loss appended (2.7778)\n", - "Epoch 9573: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9573: accuracy appended (86.11%)\n", - "Epoch 9573: model set back to train mode\n", - "Epoch 9573: model parameters saved\n", - "Epoch 9574 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9574: avg_loss appended (2.7778)\n", - "Epoch 9574: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9574: accuracy appended (86.11%)\n", - "Epoch 9574: model set back to train mode\n", - "Epoch 9574: model parameters saved\n", - "Epoch 9575 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9575: avg_loss appended (2.7778)\n", - "Epoch 9575: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9575: accuracy appended (86.11%)\n", - "Epoch 9575: model set back to train mode\n", - "Epoch 9575: model parameters saved\n", - "Epoch 9576 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9576: avg_loss appended (2.7778)\n", - "Epoch 9576: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9576: accuracy appended (86.11%)\n", - "Epoch 9576: model set back to train mode\n", - "Epoch 9576: model parameters saved\n", - "Epoch 9577 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9577: avg_loss appended (2.7778)\n", - "Epoch 9577: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9577: accuracy appended (86.11%)\n", - "Epoch 9577: model set back to train mode\n", - "Epoch 9577: model parameters saved\n", - "Epoch 9578 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9578: avg_loss appended (2.7778)\n", - "Epoch 9578: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9578: accuracy appended (86.11%)\n", - "Epoch 9578: model set back to train mode\n", - "Epoch 9578: model parameters saved\n", - "Epoch 9579 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9579: avg_loss appended (2.7778)\n", - "Epoch 9579: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9579: accuracy appended (86.11%)\n", - "Epoch 9579: model set back to train mode\n", - "Epoch 9579: model parameters saved\n", - "Epoch 9580 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9580: avg_loss appended (2.7778)\n", - "Epoch 9580: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9580: accuracy appended (86.11%)\n", - "Epoch 9580: model set back to train mode\n", - "Epoch 9580: model parameters saved\n", - "Epoch 9581 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9581: avg_loss appended (2.7778)\n", - "Epoch 9581: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9581: accuracy appended (86.11%)\n", - "Epoch 9581: model set back to train mode\n", - "Epoch 9581: model parameters saved\n", - "Epoch 9582 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9582: avg_loss appended (2.7778)\n", - "Epoch 9582: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9582: accuracy appended (86.11%)\n", - "Epoch 9582: model set back to train mode\n", - "Epoch 9582: model parameters saved\n", - "Epoch 9583 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9583: avg_loss appended (2.7778)\n", - "Epoch 9583: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9583: accuracy appended (86.11%)\n", - "Epoch 9583: model set back to train mode\n", - "Epoch 9583: model parameters saved\n", - "Epoch 9584 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9584: avg_loss appended (2.7778)\n", - "Epoch 9584: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9584: accuracy appended (86.11%)\n", - "Epoch 9584: model set back to train mode\n", - "Epoch 9584: model parameters saved\n", - "Epoch 9585 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9585: avg_loss appended (2.7778)\n", - "Epoch 9585: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9585: accuracy appended (86.11%)\n", - "Epoch 9585: model set back to train mode\n", - "Epoch 9585: model parameters saved\n", - "Epoch 9586 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9586: avg_loss appended (2.7778)\n", - "Epoch 9586: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9586: accuracy appended (86.11%)\n", - "Epoch 9586: model set back to train mode\n", - "Epoch 9586: model parameters saved\n", - "Epoch 9587 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9587: avg_loss appended (2.7778)\n", - "Epoch 9587: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9587: accuracy appended (86.11%)\n", - "Epoch 9587: model set back to train mode\n", - "Epoch 9587: model parameters saved\n", - "Epoch 9588 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9588: avg_loss appended (2.7778)\n", - "Epoch 9588: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9588: accuracy appended (86.11%)\n", - "Epoch 9588: model set back to train mode\n", - "Epoch 9588: model parameters saved\n", - "Epoch 9589 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9589: avg_loss appended (2.7778)\n", - "Epoch 9589: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9589: accuracy appended (86.11%)\n", - "Epoch 9589: model set back to train mode\n", - "Epoch 9589: model parameters saved\n", - "Epoch 9590 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9590: avg_loss appended (2.7778)\n", - "Epoch 9590: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9590: accuracy appended (86.11%)\n", - "Epoch 9590: model set back to train mode\n", - "Epoch 9590: model parameters saved\n", - "Epoch 9591 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9591: avg_loss appended (2.7778)\n", - "Epoch 9591: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9591: accuracy appended (86.11%)\n", - "Epoch 9591: model set back to train mode\n", - "Epoch 9591: model parameters saved\n", - "Epoch 9592 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9592: avg_loss appended (2.7778)\n", - "Epoch 9592: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9592: accuracy appended (86.11%)\n", - "Epoch 9592: model set back to train mode\n", - "Epoch 9592: model parameters saved\n", - "Epoch 9593 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9593: avg_loss appended (2.7778)\n", - "Epoch 9593: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9593: accuracy appended (86.11%)\n", - "Epoch 9593: model set back to train mode\n", - "Epoch 9593: model parameters saved\n", - "Epoch 9594 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9594: avg_loss appended (2.7778)\n", - "Epoch 9594: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9594: accuracy appended (86.11%)\n", - "Epoch 9594: model set back to train mode\n", - "Epoch 9594: model parameters saved\n", - "Epoch 9595 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9595: avg_loss appended (2.7778)\n", - "Epoch 9595: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9595: accuracy appended (86.11%)\n", - "Epoch 9595: model set back to train mode\n", - "Epoch 9595: model parameters saved\n", - "Epoch 9596 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9596: avg_loss appended (2.7778)\n", - "Epoch 9596: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9596: accuracy appended (86.11%)\n", - "Epoch 9596: model set back to train mode\n", - "Epoch 9596: model parameters saved\n", - "Epoch 9597 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9597: avg_loss appended (2.7778)\n", - "Epoch 9597: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9597: accuracy appended (86.11%)\n", - "Epoch 9597: model set back to train mode\n", - "Epoch 9597: model parameters saved\n", - "Epoch 9598 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9598: avg_loss appended (2.7778)\n", - "Epoch 9598: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9598: accuracy appended (86.11%)\n", - "Epoch 9598: model set back to train mode\n", - "Epoch 9598: model parameters saved\n", - "Epoch 9599 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9599: avg_loss appended (2.7778)\n", - "Epoch 9599: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9599: accuracy appended (86.11%)\n", - "Epoch 9599: model set back to train mode\n", - "Epoch 9599: model parameters saved\n", - "Epoch 9600 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9600: avg_loss appended (2.7778)\n", - "Epoch 9600: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9600: accuracy appended (86.11%)\n", - "Epoch 9600: model set back to train mode\n", - "Epoch 9600: model parameters saved\n", - "Epoch 9600/10000, Loss: 2.7778, Accuracy: 86.11%\n", - "Epoch 9601 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9601: avg_loss appended (2.7778)\n", - "Epoch 9601: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9601: accuracy appended (86.11%)\n", - "Epoch 9601: model set back to train mode\n", - "Epoch 9601: model parameters saved\n", - "Epoch 9602 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9602: avg_loss appended (2.7778)\n", - "Epoch 9602: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9602: accuracy appended (86.11%)\n", - "Epoch 9602: model set back to train mode\n", - "Epoch 9602: model parameters saved\n", - "Epoch 9603 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9603: avg_loss appended (2.7778)\n", - "Epoch 9603: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9603: accuracy appended (86.11%)\n", - "Epoch 9603: model set back to train mode\n", - "Epoch 9603: model parameters saved\n", - "Epoch 9604 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9604: avg_loss appended (2.7778)\n", - "Epoch 9604: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9604: accuracy appended (86.11%)\n", - "Epoch 9604: model set back to train mode\n", - "Epoch 9604: model parameters saved\n", - "Epoch 9605 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9605: avg_loss appended (2.7778)\n", - "Epoch 9605: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9605: accuracy appended (86.11%)\n", - "Epoch 9605: model set back to train mode\n", - "Epoch 9605: model parameters saved\n", - "Epoch 9606 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9606: avg_loss appended (2.7778)\n", - "Epoch 9606: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9606: accuracy appended (86.11%)\n", - "Epoch 9606: model set back to train mode\n", - "Epoch 9606: model parameters saved\n", - "Epoch 9607 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9607: avg_loss appended (2.7778)\n", - "Epoch 9607: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9607: accuracy appended (86.11%)\n", - "Epoch 9607: model set back to train mode\n", - "Epoch 9607: model parameters saved\n", - "Epoch 9608 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9608: avg_loss appended (2.7778)\n", - "Epoch 9608: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9608: accuracy appended (86.11%)\n", - "Epoch 9608: model set back to train mode\n", - "Epoch 9608: model parameters saved\n", - "Epoch 9609 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9609: avg_loss appended (2.7778)\n", - "Epoch 9609: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9609: accuracy appended (86.11%)\n", - "Epoch 9609: model set back to train mode\n", - "Epoch 9609: model parameters saved\n", - "Epoch 9610 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9610: avg_loss appended (2.7778)\n", - "Epoch 9610: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9610: accuracy appended (86.11%)\n", - "Epoch 9610: model set back to train mode\n", - "Epoch 9610: model parameters saved\n", - "Epoch 9611 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9611: avg_loss appended (2.7778)\n", - "Epoch 9611: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9611: accuracy appended (86.11%)\n", - "Epoch 9611: model set back to train mode\n", - "Epoch 9611: model parameters saved\n", - "Epoch 9612 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9612: avg_loss appended (2.7778)\n", - "Epoch 9612: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9612: accuracy appended (86.11%)\n", - "Epoch 9612: model set back to train mode\n", - "Epoch 9612: model parameters saved\n", - "Epoch 9613 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9613: avg_loss appended (2.7778)\n", - "Epoch 9613: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9613: accuracy appended (86.11%)\n", - "Epoch 9613: model set back to train mode\n", - "Epoch 9613: model parameters saved\n", - "Epoch 9614 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9614: avg_loss appended (2.7778)\n", - "Epoch 9614: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9614: accuracy appended (86.11%)\n", - "Epoch 9614: model set back to train mode\n", - "Epoch 9614: model parameters saved\n", - "Epoch 9615 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9615: avg_loss appended (2.7778)\n", - "Epoch 9615: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9615: accuracy appended (86.11%)\n", - "Epoch 9615: model set back to train mode\n", - "Epoch 9615: model parameters saved\n", - "Epoch 9616 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9616: avg_loss appended (2.7778)\n", - "Epoch 9616: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9616: accuracy appended (86.11%)\n", - "Epoch 9616: model set back to train mode\n", - "Epoch 9616: model parameters saved\n", - "Epoch 9617 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9617: avg_loss appended (2.7778)\n", - "Epoch 9617: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9617: accuracy appended (86.11%)\n", - "Epoch 9617: model set back to train mode\n", - "Epoch 9617: model parameters saved\n", - "Epoch 9618 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9618: avg_loss appended (2.7778)\n", - "Epoch 9618: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9618: accuracy appended (86.11%)\n", - "Epoch 9618: model set back to train mode\n", - "Epoch 9618: model parameters saved\n", - "Epoch 9619 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9619: avg_loss appended (2.7778)\n", - "Epoch 9619: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9619: accuracy appended (86.11%)\n", - "Epoch 9619: model set back to train mode\n", - "Epoch 9619: model parameters saved\n", - "Epoch 9620 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9620: avg_loss appended (2.7778)\n", - "Epoch 9620: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9620: accuracy appended (86.11%)\n", - "Epoch 9620: model set back to train mode\n", - "Epoch 9620: model parameters saved\n", - "Epoch 9621 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9621: avg_loss appended (2.7778)\n", - "Epoch 9621: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9621: accuracy appended (86.11%)\n", - "Epoch 9621: model set back to train mode\n", - "Epoch 9621: model parameters saved\n", - "Epoch 9622 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9622: avg_loss appended (2.7778)\n", - "Epoch 9622: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9622: accuracy appended (86.11%)\n", - "Epoch 9622: model set back to train mode\n", - "Epoch 9622: model parameters saved\n", - "Epoch 9623 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9623: avg_loss appended (2.7778)\n", - "Epoch 9623: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9623: accuracy appended (86.11%)\n", - "Epoch 9623: model set back to train mode\n", - "Epoch 9623: model parameters saved\n", - "Epoch 9624 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9624: avg_loss appended (2.7778)\n", - "Epoch 9624: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9624: accuracy appended (86.11%)\n", - "Epoch 9624: model set back to train mode\n", - "Epoch 9624: model parameters saved\n", - "Epoch 9625 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9625: avg_loss appended (2.7778)\n", - "Epoch 9625: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9625: accuracy appended (86.11%)\n", - "Epoch 9625: model set back to train mode\n", - "Epoch 9625: model parameters saved\n", - "Epoch 9626 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9626: avg_loss appended (2.7778)\n", - "Epoch 9626: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9626: accuracy appended (86.11%)\n", - "Epoch 9626: model set back to train mode\n", - "Epoch 9626: model parameters saved\n", - "Epoch 9627 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9627: avg_loss appended (2.7778)\n", - "Epoch 9627: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9627: accuracy appended (86.11%)\n", - "Epoch 9627: model set back to train mode\n", - "Epoch 9627: model parameters saved\n", - "Epoch 9628 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9628: avg_loss appended (2.7778)\n", - "Epoch 9628: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9628: accuracy appended (86.11%)\n", - "Epoch 9628: model set back to train mode\n", - "Epoch 9628: model parameters saved\n", - "Epoch 9629 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9629: avg_loss appended (2.7778)\n", - "Epoch 9629: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9629: accuracy appended (86.11%)\n", - "Epoch 9629: model set back to train mode\n", - "Epoch 9629: model parameters saved\n", - "Epoch 9630 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9630: avg_loss appended (2.7778)\n", - "Epoch 9630: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9630: accuracy appended (86.11%)\n", - "Epoch 9630: model set back to train mode\n", - "Epoch 9630: model parameters saved\n", - "Epoch 9631 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9631: avg_loss appended (2.7778)\n", - "Epoch 9631: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9631: accuracy appended (86.11%)\n", - "Epoch 9631: model set back to train mode\n", - "Epoch 9631: model parameters saved\n", - "Epoch 9632 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9632: avg_loss appended (2.7778)\n", - "Epoch 9632: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9632: accuracy appended (86.11%)\n", - "Epoch 9632: model set back to train mode\n", - "Epoch 9632: model parameters saved\n", - "Epoch 9633 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9633: avg_loss appended (2.7778)\n", - "Epoch 9633: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9633: accuracy appended (86.11%)\n", - "Epoch 9633: model set back to train mode\n", - "Epoch 9633: model parameters saved\n", - "Epoch 9634 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9634: avg_loss appended (2.7778)\n", - "Epoch 9634: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9634: accuracy appended (86.11%)\n", - "Epoch 9634: model set back to train mode\n", - "Epoch 9634: model parameters saved\n", - "Epoch 9635 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9635: avg_loss appended (2.7778)\n", - "Epoch 9635: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9635: accuracy appended (86.11%)\n", - "Epoch 9635: model set back to train mode\n", - "Epoch 9635: model parameters saved\n", - "Epoch 9636 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9636: avg_loss appended (2.7778)\n", - "Epoch 9636: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9636: accuracy appended (86.11%)\n", - "Epoch 9636: model set back to train mode\n", - "Epoch 9636: model parameters saved\n", - "Epoch 9637 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9637: avg_loss appended (2.7778)\n", - "Epoch 9637: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9637: accuracy appended (86.11%)\n", - "Epoch 9637: model set back to train mode\n", - "Epoch 9637: model parameters saved\n", - "Epoch 9638 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9638: avg_loss appended (2.7778)\n", - "Epoch 9638: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9638: accuracy appended (86.11%)\n", - "Epoch 9638: model set back to train mode\n", - "Epoch 9638: model parameters saved\n", - "Epoch 9639 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9639: avg_loss appended (2.7778)\n", - "Epoch 9639: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9639: accuracy appended (86.11%)\n", - "Epoch 9639: model set back to train mode\n", - "Epoch 9639: model parameters saved\n", - "Epoch 9640 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9640: avg_loss appended (2.7778)\n", - "Epoch 9640: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9640: accuracy appended (86.11%)\n", - "Epoch 9640: model set back to train mode\n", - "Epoch 9640: model parameters saved\n", - "Epoch 9641 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9641: avg_loss appended (2.7778)\n", - "Epoch 9641: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9641: accuracy appended (86.11%)\n", - "Epoch 9641: model set back to train mode\n", - "Epoch 9641: model parameters saved\n", - "Epoch 9642 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9642: avg_loss appended (2.7778)\n", - "Epoch 9642: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9642: accuracy appended (86.11%)\n", - "Epoch 9642: model set back to train mode\n", - "Epoch 9642: model parameters saved\n", - "Epoch 9643 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9643: avg_loss appended (2.7778)\n", - "Epoch 9643: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9643: accuracy appended (86.11%)\n", - "Epoch 9643: model set back to train mode\n", - "Epoch 9643: model parameters saved\n", - "Epoch 9644 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9644: avg_loss appended (2.7778)\n", - "Epoch 9644: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9644: accuracy appended (86.11%)\n", - "Epoch 9644: model set back to train mode\n", - "Epoch 9644: model parameters saved\n", - "Epoch 9645 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9645: avg_loss appended (2.7778)\n", - "Epoch 9645: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9645: accuracy appended (86.11%)\n", - "Epoch 9645: model set back to train mode\n", - "Epoch 9645: model parameters saved\n", - "Epoch 9646 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9646: avg_loss appended (2.7778)\n", - "Epoch 9646: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9646: accuracy appended (86.11%)\n", - "Epoch 9646: model set back to train mode\n", - "Epoch 9646: model parameters saved\n", - "Epoch 9647 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9647: avg_loss appended (2.7778)\n", - "Epoch 9647: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9647: accuracy appended (86.11%)\n", - "Epoch 9647: model set back to train mode\n", - "Epoch 9647: model parameters saved\n", - "Epoch 9648 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9648: avg_loss appended (2.7778)\n", - "Epoch 9648: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9648: accuracy appended (86.11%)\n", - "Epoch 9648: model set back to train mode\n", - "Epoch 9648: model parameters saved\n", - "Epoch 9649 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9649: avg_loss appended (2.7778)\n", - "Epoch 9649: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9649: accuracy appended (86.11%)\n", - "Epoch 9649: model set back to train mode\n", - "Epoch 9649: model parameters saved\n", - "Epoch 9650 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9650: avg_loss appended (2.7778)\n", - "Epoch 9650: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9650: accuracy appended (86.11%)\n", - "Epoch 9650: model set back to train mode\n", - "Epoch 9650: model parameters saved\n", - "Epoch 9651 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9651: avg_loss appended (2.7778)\n", - "Epoch 9651: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9651: accuracy appended (86.11%)\n", - "Epoch 9651: model set back to train mode\n", - "Epoch 9651: model parameters saved\n", - "Epoch 9652 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9652: avg_loss appended (2.7778)\n", - "Epoch 9652: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9652: accuracy appended (86.11%)\n", - "Epoch 9652: model set back to train mode\n", - "Epoch 9652: model parameters saved\n", - "Epoch 9653 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9653: avg_loss appended (2.7778)\n", - "Epoch 9653: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9653: accuracy appended (86.11%)\n", - "Epoch 9653: model set back to train mode\n", - "Epoch 9653: model parameters saved\n", - "Epoch 9654 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9654: avg_loss appended (2.7778)\n", - "Epoch 9654: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9654: accuracy appended (86.11%)\n", - "Epoch 9654: model set back to train mode\n", - "Epoch 9654: model parameters saved\n", - "Epoch 9655 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9655: avg_loss appended (2.7778)\n", - "Epoch 9655: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9655: accuracy appended (86.11%)\n", - "Epoch 9655: model set back to train mode\n", - "Epoch 9655: model parameters saved\n", - "Epoch 9656 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9656: avg_loss appended (2.7778)\n", - "Epoch 9656: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9656: accuracy appended (86.11%)\n", - "Epoch 9656: model set back to train mode\n", - "Epoch 9656: model parameters saved\n", - "Epoch 9657 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9657: avg_loss appended (2.7778)\n", - "Epoch 9657: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9657: accuracy appended (86.11%)\n", - "Epoch 9657: model set back to train mode\n", - "Epoch 9657: model parameters saved\n", - "Epoch 9658 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9658: avg_loss appended (2.7778)\n", - "Epoch 9658: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9658: accuracy appended (86.11%)\n", - "Epoch 9658: model set back to train mode\n", - "Epoch 9658: model parameters saved\n", - "Epoch 9659 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9659: avg_loss appended (2.7778)\n", - "Epoch 9659: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9659: accuracy appended (86.11%)\n", - "Epoch 9659: model set back to train mode\n", - "Epoch 9659: model parameters saved\n", - "Epoch 9660 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9660: avg_loss appended (2.7778)\n", - "Epoch 9660: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9660: accuracy appended (86.11%)\n", - "Epoch 9660: model set back to train mode\n", - "Epoch 9660: model parameters saved\n", - "Epoch 9661 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9661: avg_loss appended (2.7778)\n", - "Epoch 9661: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9661: accuracy appended (86.11%)\n", - "Epoch 9661: model set back to train mode\n", - "Epoch 9661: model parameters saved\n", - "Epoch 9662 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9662: avg_loss appended (2.7778)\n", - "Epoch 9662: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9662: accuracy appended (86.11%)\n", - "Epoch 9662: model set back to train mode\n", - "Epoch 9662: model parameters saved\n", - "Epoch 9663 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9663: avg_loss appended (2.7778)\n", - "Epoch 9663: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9663: accuracy appended (86.11%)\n", - "Epoch 9663: model set back to train mode\n", - "Epoch 9663: model parameters saved\n", - "Epoch 9664 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9664: avg_loss appended (2.7778)\n", - "Epoch 9664: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9664: accuracy appended (86.11%)\n", - "Epoch 9664: model set back to train mode\n", - "Epoch 9664: model parameters saved\n", - "Epoch 9665 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9665: avg_loss appended (2.7778)\n", - "Epoch 9665: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9665: accuracy appended (86.11%)\n", - "Epoch 9665: model set back to train mode\n", - "Epoch 9665: model parameters saved\n", - "Epoch 9666 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9666: avg_loss appended (2.7778)\n", - "Epoch 9666: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9666: accuracy appended (86.11%)\n", - "Epoch 9666: model set back to train mode\n", - "Epoch 9666: model parameters saved\n", - "Epoch 9667 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9667: avg_loss appended (2.7778)\n", - "Epoch 9667: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9667: accuracy appended (86.11%)\n", - "Epoch 9667: model set back to train mode\n", - "Epoch 9667: model parameters saved\n", - "Epoch 9668 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9668: avg_loss appended (2.7778)\n", - "Epoch 9668: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9668: accuracy appended (86.11%)\n", - "Epoch 9668: model set back to train mode\n", - "Epoch 9668: model parameters saved\n", - "Epoch 9669 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9669: avg_loss appended (2.7778)\n", - "Epoch 9669: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9669: accuracy appended (86.11%)\n", - "Epoch 9669: model set back to train mode\n", - "Epoch 9669: model parameters saved\n", - "Epoch 9670 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9670: avg_loss appended (2.7778)\n", - "Epoch 9670: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9670: accuracy appended (86.11%)\n", - "Epoch 9670: model set back to train mode\n", - "Epoch 9670: model parameters saved\n", - "Epoch 9671 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9671: avg_loss appended (2.7778)\n", - "Epoch 9671: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9671: accuracy appended (86.11%)\n", - "Epoch 9671: model set back to train mode\n", - "Epoch 9671: model parameters saved\n", - "Epoch 9672 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9672: avg_loss appended (2.7778)\n", - "Epoch 9672: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9672: accuracy appended (86.11%)\n", - "Epoch 9672: model set back to train mode\n", - "Epoch 9672: model parameters saved\n", - "Epoch 9673 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9673: avg_loss appended (2.7778)\n", - "Epoch 9673: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9673: accuracy appended (86.11%)\n", - "Epoch 9673: model set back to train mode\n", - "Epoch 9673: model parameters saved\n", - "Epoch 9674 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9674: avg_loss appended (2.7778)\n", - "Epoch 9674: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9674: accuracy appended (86.11%)\n", - "Epoch 9674: model set back to train mode\n", - "Epoch 9674: model parameters saved\n", - "Epoch 9675 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9675: avg_loss appended (2.7778)\n", - "Epoch 9675: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9675: accuracy appended (86.11%)\n", - "Epoch 9675: model set back to train mode\n", - "Epoch 9675: model parameters saved\n", - "Epoch 9676 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9676: avg_loss appended (2.7778)\n", - "Epoch 9676: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9676: accuracy appended (86.11%)\n", - "Epoch 9676: model set back to train mode\n", - "Epoch 9676: model parameters saved\n", - "Epoch 9677 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9677: avg_loss appended (2.7778)\n", - "Epoch 9677: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9677: accuracy appended (86.11%)\n", - "Epoch 9677: model set back to train mode\n", - "Epoch 9677: model parameters saved\n", - "Epoch 9678 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9678: avg_loss appended (2.7778)\n", - "Epoch 9678: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9678: accuracy appended (86.11%)\n", - "Epoch 9678: model set back to train mode\n", - "Epoch 9678: model parameters saved\n", - "Epoch 9679 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9679: avg_loss appended (2.7778)\n", - "Epoch 9679: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9679: accuracy appended (86.11%)\n", - "Epoch 9679: model set back to train mode\n", - "Epoch 9679: model parameters saved\n", - "Epoch 9680 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9680: avg_loss appended (2.7778)\n", - "Epoch 9680: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9680: accuracy appended (86.11%)\n", - "Epoch 9680: model set back to train mode\n", - "Epoch 9680: model parameters saved\n", - "Epoch 9681 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9681: avg_loss appended (2.7778)\n", - "Epoch 9681: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9681: accuracy appended (86.11%)\n", - "Epoch 9681: model set back to train mode\n", - "Epoch 9681: model parameters saved\n", - "Epoch 9682 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9682: avg_loss appended (2.7778)\n", - "Epoch 9682: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9682: accuracy appended (86.11%)\n", - "Epoch 9682: model set back to train mode\n", - "Epoch 9682: model parameters saved\n", - "Epoch 9683 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9683: avg_loss appended (2.7778)\n", - "Epoch 9683: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9683: accuracy appended (86.11%)\n", - "Epoch 9683: model set back to train mode\n", - "Epoch 9683: model parameters saved\n", - "Epoch 9684 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9684: avg_loss appended (2.7778)\n", - "Epoch 9684: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9684: accuracy appended (86.11%)\n", - "Epoch 9684: model set back to train mode\n", - "Epoch 9684: model parameters saved\n", - "Epoch 9685 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9685: avg_loss appended (2.7778)\n", - "Epoch 9685: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9685: accuracy appended (86.11%)\n", - "Epoch 9685: model set back to train mode\n", - "Epoch 9685: model parameters saved\n", - "Epoch 9686 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9686: avg_loss appended (2.7778)\n", - "Epoch 9686: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9686: accuracy appended (86.11%)\n", - "Epoch 9686: model set back to train mode\n", - "Epoch 9686: model parameters saved\n", - "Epoch 9687 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9687: avg_loss appended (2.7778)\n", - "Epoch 9687: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9687: accuracy appended (86.11%)\n", - "Epoch 9687: model set back to train mode\n", - "Epoch 9687: model parameters saved\n", - "Epoch 9688 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9688: avg_loss appended (2.7778)\n", - "Epoch 9688: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9688: accuracy appended (86.11%)\n", - "Epoch 9688: model set back to train mode\n", - "Epoch 9688: model parameters saved\n", - "Epoch 9689 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9689: avg_loss appended (2.7778)\n", - "Epoch 9689: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9689: accuracy appended (86.11%)\n", - "Epoch 9689: model set back to train mode\n", - "Epoch 9689: model parameters saved\n", - "Epoch 9690 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9690: avg_loss appended (2.7778)\n", - "Epoch 9690: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9690: accuracy appended (86.11%)\n", - "Epoch 9690: model set back to train mode\n", - "Epoch 9690: model parameters saved\n", - "Epoch 9691 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9691: avg_loss appended (2.7778)\n", - "Epoch 9691: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9691: accuracy appended (86.11%)\n", - "Epoch 9691: model set back to train mode\n", - "Epoch 9691: model parameters saved\n", - "Epoch 9692 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9692: avg_loss appended (2.7778)\n", - "Epoch 9692: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9692: accuracy appended (86.11%)\n", - "Epoch 9692: model set back to train mode\n", - "Epoch 9692: model parameters saved\n", - "Epoch 9693 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9693: avg_loss appended (2.7778)\n", - "Epoch 9693: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9693: accuracy appended (86.11%)\n", - "Epoch 9693: model set back to train mode\n", - "Epoch 9693: model parameters saved\n", - "Epoch 9694 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9694: avg_loss appended (2.7778)\n", - "Epoch 9694: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9694: accuracy appended (86.11%)\n", - "Epoch 9694: model set back to train mode\n", - "Epoch 9694: model parameters saved\n", - "Epoch 9695 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9695: avg_loss appended (2.7778)\n", - "Epoch 9695: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9695: accuracy appended (86.11%)\n", - "Epoch 9695: model set back to train mode\n", - "Epoch 9695: model parameters saved\n", - "Epoch 9696 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9696: avg_loss appended (2.7778)\n", - "Epoch 9696: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9696: accuracy appended (86.11%)\n", - "Epoch 9696: model set back to train mode\n", - "Epoch 9696: model parameters saved\n", - "Epoch 9697 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9697: avg_loss appended (2.7778)\n", - "Epoch 9697: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9697: accuracy appended (86.11%)\n", - "Epoch 9697: model set back to train mode\n", - "Epoch 9697: model parameters saved\n", - "Epoch 9698 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9698: avg_loss appended (2.7778)\n", - "Epoch 9698: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9698: accuracy appended (86.11%)\n", - "Epoch 9698: model set back to train mode\n", - "Epoch 9698: model parameters saved\n", - "Epoch 9699 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9699: avg_loss appended (2.7778)\n", - "Epoch 9699: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9699: accuracy appended (86.11%)\n", - "Epoch 9699: model set back to train mode\n", - "Epoch 9699: model parameters saved\n", - "Epoch 9700 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9700: avg_loss appended (2.7778)\n", - "Epoch 9700: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9700: accuracy appended (86.11%)\n", - "Epoch 9700: model set back to train mode\n", - "Epoch 9700: model parameters saved\n", - "Epoch 9700/10000, Loss: 2.7778, Accuracy: 86.11%\n", - "Epoch 9701 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9701: avg_loss appended (2.7778)\n", - "Epoch 9701: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9701: accuracy appended (86.11%)\n", - "Epoch 9701: model set back to train mode\n", - "Epoch 9701: model parameters saved\n", - "Epoch 9702 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9702: avg_loss appended (2.7778)\n", - "Epoch 9702: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9702: accuracy appended (86.11%)\n", - "Epoch 9702: model set back to train mode\n", - "Epoch 9702: model parameters saved\n", - "Epoch 9703 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9703: avg_loss appended (2.7778)\n", - "Epoch 9703: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9703: accuracy appended (86.11%)\n", - "Epoch 9703: model set back to train mode\n", - "Epoch 9703: model parameters saved\n", - "Epoch 9704 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9704: avg_loss appended (2.7778)\n", - "Epoch 9704: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9704: accuracy appended (86.11%)\n", - "Epoch 9704: model set back to train mode\n", - "Epoch 9704: model parameters saved\n", - "Epoch 9705 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9705: avg_loss appended (2.7778)\n", - "Epoch 9705: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9705: accuracy appended (86.11%)\n", - "Epoch 9705: model set back to train mode\n", - "Epoch 9705: model parameters saved\n", - "Epoch 9706 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9706: avg_loss appended (2.7778)\n", - "Epoch 9706: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9706: accuracy appended (86.11%)\n", - "Epoch 9706: model set back to train mode\n", - "Epoch 9706: model parameters saved\n", - "Epoch 9707 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9707: avg_loss appended (2.7778)\n", - "Epoch 9707: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9707: accuracy appended (86.11%)\n", - "Epoch 9707: model set back to train mode\n", - "Epoch 9707: model parameters saved\n", - "Epoch 9708 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9708: avg_loss appended (2.7778)\n", - "Epoch 9708: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9708: accuracy appended (86.11%)\n", - "Epoch 9708: model set back to train mode\n", - "Epoch 9708: model parameters saved\n", - "Epoch 9709 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9709: avg_loss appended (2.7778)\n", - "Epoch 9709: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9709: accuracy appended (86.11%)\n", - "Epoch 9709: model set back to train mode\n", - "Epoch 9709: model parameters saved\n", - "Epoch 9710 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9710: avg_loss appended (2.7778)\n", - "Epoch 9710: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9710: accuracy appended (86.11%)\n", - "Epoch 9710: model set back to train mode\n", - "Epoch 9710: model parameters saved\n", - "Epoch 9711 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9711: avg_loss appended (2.7778)\n", - "Epoch 9711: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9711: accuracy appended (86.11%)\n", - "Epoch 9711: model set back to train mode\n", - "Epoch 9711: model parameters saved\n", - "Epoch 9712 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9712: avg_loss appended (2.7778)\n", - "Epoch 9712: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9712: accuracy appended (86.11%)\n", - "Epoch 9712: model set back to train mode\n", - "Epoch 9712: model parameters saved\n", - "Epoch 9713 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9713: avg_loss appended (2.7778)\n", - "Epoch 9713: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9713: accuracy appended (86.11%)\n", - "Epoch 9713: model set back to train mode\n", - "Epoch 9713: model parameters saved\n", - "Epoch 9714 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9714: avg_loss appended (2.7778)\n", - "Epoch 9714: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9714: accuracy appended (86.11%)\n", - "Epoch 9714: model set back to train mode\n", - "Epoch 9714: model parameters saved\n", - "Epoch 9715 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9715: avg_loss appended (2.7778)\n", - "Epoch 9715: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9715: accuracy appended (86.11%)\n", - "Epoch 9715: model set back to train mode\n", - "Epoch 9715: model parameters saved\n", - "Epoch 9716 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9716: avg_loss appended (2.7778)\n", - "Epoch 9716: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9716: accuracy appended (86.11%)\n", - "Epoch 9716: model set back to train mode\n", - "Epoch 9716: model parameters saved\n", - "Epoch 9717 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9717: avg_loss appended (2.7778)\n", - "Epoch 9717: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9717: accuracy appended (86.11%)\n", - "Epoch 9717: model set back to train mode\n", - "Epoch 9717: model parameters saved\n", - "Epoch 9718 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9718: avg_loss appended (2.7778)\n", - "Epoch 9718: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9718: accuracy appended (86.11%)\n", - "Epoch 9718: model set back to train mode\n", - "Epoch 9718: model parameters saved\n", - "Epoch 9719 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9719: avg_loss appended (2.7778)\n", - "Epoch 9719: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9719: accuracy appended (86.11%)\n", - "Epoch 9719: model set back to train mode\n", - "Epoch 9719: model parameters saved\n", - "Epoch 9720 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9720: avg_loss appended (2.7778)\n", - "Epoch 9720: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9720: accuracy appended (86.11%)\n", - "Epoch 9720: model set back to train mode\n", - "Epoch 9720: model parameters saved\n", - "Epoch 9721 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9721: avg_loss appended (2.7778)\n", - "Epoch 9721: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9721: accuracy appended (86.11%)\n", - "Epoch 9721: model set back to train mode\n", - "Epoch 9721: model parameters saved\n", - "Epoch 9722 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9722: avg_loss appended (2.7778)\n", - "Epoch 9722: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9722: accuracy appended (86.11%)\n", - "Epoch 9722: model set back to train mode\n", - "Epoch 9722: model parameters saved\n", - "Epoch 9723 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9723: avg_loss appended (2.7778)\n", - "Epoch 9723: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9723: accuracy appended (86.11%)\n", - "Epoch 9723: model set back to train mode\n", - "Epoch 9723: model parameters saved\n", - "Epoch 9724 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9724: avg_loss appended (2.7778)\n", - "Epoch 9724: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9724: accuracy appended (86.11%)\n", - "Epoch 9724: model set back to train mode\n", - "Epoch 9724: model parameters saved\n", - "Epoch 9725 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9725: avg_loss appended (2.7778)\n", - "Epoch 9725: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9725: accuracy appended (86.11%)\n", - "Epoch 9725: model set back to train mode\n", - "Epoch 9725: model parameters saved\n", - "Epoch 9726 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9726: avg_loss appended (2.7778)\n", - "Epoch 9726: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9726: accuracy appended (86.11%)\n", - "Epoch 9726: model set back to train mode\n", - "Epoch 9726: model parameters saved\n", - "Epoch 9727 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9727: avg_loss appended (2.7778)\n", - "Epoch 9727: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9727: accuracy appended (86.11%)\n", - "Epoch 9727: model set back to train mode\n", - "Epoch 9727: model parameters saved\n", - "Epoch 9728 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9728: avg_loss appended (2.7778)\n", - "Epoch 9728: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9728: accuracy appended (86.11%)\n", - "Epoch 9728: model set back to train mode\n", - "Epoch 9728: model parameters saved\n", - "Epoch 9729 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9729: avg_loss appended (2.7778)\n", - "Epoch 9729: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9729: accuracy appended (86.11%)\n", - "Epoch 9729: model set back to train mode\n", - "Epoch 9729: model parameters saved\n", - "Epoch 9730 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9730: avg_loss appended (2.7778)\n", - "Epoch 9730: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9730: accuracy appended (86.11%)\n", - "Epoch 9730: model set back to train mode\n", - "Epoch 9730: model parameters saved\n", - "Epoch 9731 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9731: avg_loss appended (2.7778)\n", - "Epoch 9731: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9731: accuracy appended (86.11%)\n", - "Epoch 9731: model set back to train mode\n", - "Epoch 9731: model parameters saved\n", - "Epoch 9732 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9732: avg_loss appended (2.7778)\n", - "Epoch 9732: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9732: accuracy appended (86.11%)\n", - "Epoch 9732: model set back to train mode\n", - "Epoch 9732: model parameters saved\n", - "Epoch 9733 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9733: avg_loss appended (2.7778)\n", - "Epoch 9733: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9733: accuracy appended (86.11%)\n", - "Epoch 9733: model set back to train mode\n", - "Epoch 9733: model parameters saved\n", - "Epoch 9734 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9734: avg_loss appended (2.7778)\n", - "Epoch 9734: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9734: accuracy appended (86.11%)\n", - "Epoch 9734: model set back to train mode\n", - "Epoch 9734: model parameters saved\n", - "Epoch 9735 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9735: avg_loss appended (2.7778)\n", - "Epoch 9735: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9735: accuracy appended (86.11%)\n", - "Epoch 9735: model set back to train mode\n", - "Epoch 9735: model parameters saved\n", - "Epoch 9736 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9736: avg_loss appended (2.7778)\n", - "Epoch 9736: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9736: accuracy appended (86.11%)\n", - "Epoch 9736: model set back to train mode\n", - "Epoch 9736: model parameters saved\n", - "Epoch 9737 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9737: avg_loss appended (2.7778)\n", - "Epoch 9737: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9737: accuracy appended (86.11%)\n", - "Epoch 9737: model set back to train mode\n", - "Epoch 9737: model parameters saved\n", - "Epoch 9738 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9738: avg_loss appended (2.7778)\n", - "Epoch 9738: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9738: accuracy appended (86.11%)\n", - "Epoch 9738: model set back to train mode\n", - "Epoch 9738: model parameters saved\n", - "Epoch 9739 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9739: avg_loss appended (2.7778)\n", - "Epoch 9739: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9739: accuracy appended (86.11%)\n", - "Epoch 9739: model set back to train mode\n", - "Epoch 9739: model parameters saved\n", - "Epoch 9740 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9740: avg_loss appended (2.7778)\n", - "Epoch 9740: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9740: accuracy appended (86.11%)\n", - "Epoch 9740: model set back to train mode\n", - "Epoch 9740: model parameters saved\n", - "Epoch 9741 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9741: avg_loss appended (2.7778)\n", - "Epoch 9741: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9741: accuracy appended (86.11%)\n", - "Epoch 9741: model set back to train mode\n", - "Epoch 9741: model parameters saved\n", - "Epoch 9742 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9742: avg_loss appended (2.7778)\n", - "Epoch 9742: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9742: accuracy appended (86.11%)\n", - "Epoch 9742: model set back to train mode\n", - "Epoch 9742: model parameters saved\n", - "Epoch 9743 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9743: avg_loss appended (2.7778)\n", - "Epoch 9743: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9743: accuracy appended (86.11%)\n", - "Epoch 9743: model set back to train mode\n", - "Epoch 9743: model parameters saved\n", - "Epoch 9744 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9744: avg_loss appended (2.7778)\n", - "Epoch 9744: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9744: accuracy appended (86.11%)\n", - "Epoch 9744: model set back to train mode\n", - "Epoch 9744: model parameters saved\n", - "Epoch 9745 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9745: avg_loss appended (2.7778)\n", - "Epoch 9745: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9745: accuracy appended (86.11%)\n", - "Epoch 9745: model set back to train mode\n", - "Epoch 9745: model parameters saved\n", - "Epoch 9746 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9746: avg_loss appended (2.7778)\n", - "Epoch 9746: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9746: accuracy appended (86.11%)\n", - "Epoch 9746: model set back to train mode\n", - "Epoch 9746: model parameters saved\n", - "Epoch 9747 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9747: avg_loss appended (2.7778)\n", - "Epoch 9747: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9747: accuracy appended (86.11%)\n", - "Epoch 9747: model set back to train mode\n", - "Epoch 9747: model parameters saved\n", - "Epoch 9748 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9748: avg_loss appended (2.7778)\n", - "Epoch 9748: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9748: accuracy appended (86.11%)\n", - "Epoch 9748: model set back to train mode\n", - "Epoch 9748: model parameters saved\n", - "Epoch 9749 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9749: avg_loss appended (2.7778)\n", - "Epoch 9749: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9749: accuracy appended (86.11%)\n", - "Epoch 9749: model set back to train mode\n", - "Epoch 9749: model parameters saved\n", - "Epoch 9750 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9750: avg_loss appended (2.7778)\n", - "Epoch 9750: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9750: accuracy appended (86.11%)\n", - "Epoch 9750: model set back to train mode\n", - "Epoch 9750: model parameters saved\n", - "Epoch 9751 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9751: avg_loss appended (2.7778)\n", - "Epoch 9751: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9751: accuracy appended (86.11%)\n", - "Epoch 9751: model set back to train mode\n", - "Epoch 9751: model parameters saved\n", - "Epoch 9752 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9752: avg_loss appended (2.7778)\n", - "Epoch 9752: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9752: accuracy appended (86.11%)\n", - "Epoch 9752: model set back to train mode\n", - "Epoch 9752: model parameters saved\n", - "Epoch 9753 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9753: avg_loss appended (2.7778)\n", - "Epoch 9753: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9753: accuracy appended (86.11%)\n", - "Epoch 9753: model set back to train mode\n", - "Epoch 9753: model parameters saved\n", - "Epoch 9754 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9754: avg_loss appended (2.7778)\n", - "Epoch 9754: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9754: accuracy appended (86.11%)\n", - "Epoch 9754: model set back to train mode\n", - "Epoch 9754: model parameters saved\n", - "Epoch 9755 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9755: avg_loss appended (2.7778)\n", - "Epoch 9755: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9755: accuracy appended (86.11%)\n", - "Epoch 9755: model set back to train mode\n", - "Epoch 9755: model parameters saved\n", - "Epoch 9756 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9756: avg_loss appended (2.7778)\n", - "Epoch 9756: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9756: accuracy appended (86.11%)\n", - "Epoch 9756: model set back to train mode\n", - "Epoch 9756: model parameters saved\n", - "Epoch 9757 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9757: avg_loss appended (2.7778)\n", - "Epoch 9757: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9757: accuracy appended (86.11%)\n", - "Epoch 9757: model set back to train mode\n", - "Epoch 9757: model parameters saved\n", - "Epoch 9758 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9758: avg_loss appended (2.7778)\n", - "Epoch 9758: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9758: accuracy appended (86.11%)\n", - "Epoch 9758: model set back to train mode\n", - "Epoch 9758: model parameters saved\n", - "Epoch 9759 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9759: avg_loss appended (2.7778)\n", - "Epoch 9759: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9759: accuracy appended (86.11%)\n", - "Epoch 9759: model set back to train mode\n", - "Epoch 9759: model parameters saved\n", - "Epoch 9760 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9760: avg_loss appended (2.7778)\n", - "Epoch 9760: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9760: accuracy appended (86.11%)\n", - "Epoch 9760: model set back to train mode\n", - "Epoch 9760: model parameters saved\n", - "Epoch 9761 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9761: avg_loss appended (2.7778)\n", - "Epoch 9761: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9761: accuracy appended (86.11%)\n", - "Epoch 9761: model set back to train mode\n", - "Epoch 9761: model parameters saved\n", - "Epoch 9762 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9762: avg_loss appended (2.7778)\n", - "Epoch 9762: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9762: accuracy appended (86.11%)\n", - "Epoch 9762: model set back to train mode\n", - "Epoch 9762: model parameters saved\n", - "Epoch 9763 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9763: avg_loss appended (2.7778)\n", - "Epoch 9763: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9763: accuracy appended (86.11%)\n", - "Epoch 9763: model set back to train mode\n", - "Epoch 9763: model parameters saved\n", - "Epoch 9764 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9764: avg_loss appended (2.7778)\n", - "Epoch 9764: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9764: accuracy appended (86.11%)\n", - "Epoch 9764: model set back to train mode\n", - "Epoch 9764: model parameters saved\n", - "Epoch 9765 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9765: avg_loss appended (2.7778)\n", - "Epoch 9765: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9765: accuracy appended (86.11%)\n", - "Epoch 9765: model set back to train mode\n", - "Epoch 9765: model parameters saved\n", - "Epoch 9766 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9766: avg_loss appended (2.7778)\n", - "Epoch 9766: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9766: accuracy appended (86.11%)\n", - "Epoch 9766: model set back to train mode\n", - "Epoch 9766: model parameters saved\n", - "Epoch 9767 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9767: avg_loss appended (2.7778)\n", - "Epoch 9767: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9767: accuracy appended (86.11%)\n", - "Epoch 9767: model set back to train mode\n", - "Epoch 9767: model parameters saved\n", - "Epoch 9768 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9768: avg_loss appended (2.7778)\n", - "Epoch 9768: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9768: accuracy appended (86.11%)\n", - "Epoch 9768: model set back to train mode\n", - "Epoch 9768: model parameters saved\n", - "Epoch 9769 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9769: avg_loss appended (2.7778)\n", - "Epoch 9769: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9769: accuracy appended (86.11%)\n", - "Epoch 9769: model set back to train mode\n", - "Epoch 9769: model parameters saved\n", - "Epoch 9770 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9770: avg_loss appended (2.7778)\n", - "Epoch 9770: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9770: accuracy appended (86.11%)\n", - "Epoch 9770: model set back to train mode\n", - "Epoch 9770: model parameters saved\n", - "Epoch 9771 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9771: avg_loss appended (2.7778)\n", - "Epoch 9771: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9771: accuracy appended (86.11%)\n", - "Epoch 9771: model set back to train mode\n", - "Epoch 9771: model parameters saved\n", - "Epoch 9772 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9772: avg_loss appended (2.7778)\n", - "Epoch 9772: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9772: accuracy appended (86.11%)\n", - "Epoch 9772: model set back to train mode\n", - "Epoch 9772: model parameters saved\n", - "Epoch 9773 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9773: avg_loss appended (2.7778)\n", - "Epoch 9773: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9773: accuracy appended (86.11%)\n", - "Epoch 9773: model set back to train mode\n", - "Epoch 9773: model parameters saved\n", - "Epoch 9774 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9774: avg_loss appended (2.7778)\n", - "Epoch 9774: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9774: accuracy appended (86.11%)\n", - "Epoch 9774: model set back to train mode\n", - "Epoch 9774: model parameters saved\n", - "Epoch 9775 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9775: avg_loss appended (2.7778)\n", - "Epoch 9775: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9775: accuracy appended (86.11%)\n", - "Epoch 9775: model set back to train mode\n", - "Epoch 9775: model parameters saved\n", - "Epoch 9776 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9776: avg_loss appended (2.7778)\n", - "Epoch 9776: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9776: accuracy appended (86.11%)\n", - "Epoch 9776: model set back to train mode\n", - "Epoch 9776: model parameters saved\n", - "Epoch 9777 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9777: avg_loss appended (2.7778)\n", - "Epoch 9777: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9777: accuracy appended (86.11%)\n", - "Epoch 9777: model set back to train mode\n", - "Epoch 9777: model parameters saved\n", - "Epoch 9778 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9778: avg_loss appended (2.7778)\n", - "Epoch 9778: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9778: accuracy appended (86.11%)\n", - "Epoch 9778: model set back to train mode\n", - "Epoch 9778: model parameters saved\n", - "Epoch 9779 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9779: avg_loss appended (2.7778)\n", - "Epoch 9779: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9779: accuracy appended (86.11%)\n", - "Epoch 9779: model set back to train mode\n", - "Epoch 9779: model parameters saved\n", - "Epoch 9780 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9780: avg_loss appended (2.7778)\n", - "Epoch 9780: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9780: accuracy appended (86.11%)\n", - "Epoch 9780: model set back to train mode\n", - "Epoch 9780: model parameters saved\n", - "Epoch 9781 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9781: avg_loss appended (2.7778)\n", - "Epoch 9781: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9781: accuracy appended (86.11%)\n", - "Epoch 9781: model set back to train mode\n", - "Epoch 9781: model parameters saved\n", - "Epoch 9782 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9782: avg_loss appended (2.7778)\n", - "Epoch 9782: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9782: accuracy appended (86.11%)\n", - "Epoch 9782: model set back to train mode\n", - "Epoch 9782: model parameters saved\n", - "Epoch 9783 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9783: avg_loss appended (2.7778)\n", - "Epoch 9783: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9783: accuracy appended (86.11%)\n", - "Epoch 9783: model set back to train mode\n", - "Epoch 9783: model parameters saved\n", - "Epoch 9784 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9784: avg_loss appended (2.7778)\n", - "Epoch 9784: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9784: accuracy appended (86.11%)\n", - "Epoch 9784: model set back to train mode\n", - "Epoch 9784: model parameters saved\n", - "Epoch 9785 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9785: avg_loss appended (2.7778)\n", - "Epoch 9785: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9785: accuracy appended (86.11%)\n", - "Epoch 9785: model set back to train mode\n", - "Epoch 9785: model parameters saved\n", - "Epoch 9786 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9786: avg_loss appended (2.7778)\n", - "Epoch 9786: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9786: accuracy appended (86.11%)\n", - "Epoch 9786: model set back to train mode\n", - "Epoch 9786: model parameters saved\n", - "Epoch 9787 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9787: avg_loss appended (2.7778)\n", - "Epoch 9787: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9787: accuracy appended (86.11%)\n", - "Epoch 9787: model set back to train mode\n", - "Epoch 9787: model parameters saved\n", - "Epoch 9788 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9788: avg_loss appended (2.7778)\n", - "Epoch 9788: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9788: accuracy appended (86.11%)\n", - "Epoch 9788: model set back to train mode\n", - "Epoch 9788: model parameters saved\n", - "Epoch 9789 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9789: avg_loss appended (2.7778)\n", - "Epoch 9789: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9789: accuracy appended (86.11%)\n", - "Epoch 9789: model set back to train mode\n", - "Epoch 9789: model parameters saved\n", - "Epoch 9790 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9790: avg_loss appended (2.7778)\n", - "Epoch 9790: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9790: accuracy appended (86.11%)\n", - "Epoch 9790: model set back to train mode\n", - "Epoch 9790: model parameters saved\n", - "Epoch 9791 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9791: avg_loss appended (2.7778)\n", - "Epoch 9791: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9791: accuracy appended (86.11%)\n", - "Epoch 9791: model set back to train mode\n", - "Epoch 9791: model parameters saved\n", - "Epoch 9792 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9792: avg_loss appended (2.7778)\n", - "Epoch 9792: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9792: accuracy appended (86.11%)\n", - "Epoch 9792: model set back to train mode\n", - "Epoch 9792: model parameters saved\n", - "Epoch 9793 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9793: avg_loss appended (2.7778)\n", - "Epoch 9793: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9793: accuracy appended (86.11%)\n", - "Epoch 9793: model set back to train mode\n", - "Epoch 9793: model parameters saved\n", - "Epoch 9794 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9794: avg_loss appended (2.7778)\n", - "Epoch 9794: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9794: accuracy appended (86.11%)\n", - "Epoch 9794: model set back to train mode\n", - "Epoch 9794: model parameters saved\n", - "Epoch 9795 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9795: avg_loss appended (2.7778)\n", - "Epoch 9795: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9795: accuracy appended (86.11%)\n", - "Epoch 9795: model set back to train mode\n", - "Epoch 9795: model parameters saved\n", - "Epoch 9796 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9796: avg_loss appended (2.7778)\n", - "Epoch 9796: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9796: accuracy appended (86.11%)\n", - "Epoch 9796: model set back to train mode\n", - "Epoch 9796: model parameters saved\n", - "Epoch 9797 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9797: avg_loss appended (2.7778)\n", - "Epoch 9797: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9797: accuracy appended (86.11%)\n", - "Epoch 9797: model set back to train mode\n", - "Epoch 9797: model parameters saved\n", - "Epoch 9798 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9798: avg_loss appended (2.7778)\n", - "Epoch 9798: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9798: accuracy appended (86.11%)\n", - "Epoch 9798: model set back to train mode\n", - "Epoch 9798: model parameters saved\n", - "Epoch 9799 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9799: avg_loss appended (2.7778)\n", - "Epoch 9799: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9799: accuracy appended (86.11%)\n", - "Epoch 9799: model set back to train mode\n", - "Epoch 9799: model parameters saved\n", - "Epoch 9800 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9800: avg_loss appended (2.7778)\n", - "Epoch 9800: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9800: accuracy appended (86.11%)\n", - "Epoch 9800: model set back to train mode\n", - "Epoch 9800: model parameters saved\n", - "Epoch 9800/10000, Loss: 2.7778, Accuracy: 86.11%\n", - "Epoch 9801 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9801: avg_loss appended (2.7778)\n", - "Epoch 9801: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9801: accuracy appended (86.11%)\n", - "Epoch 9801: model set back to train mode\n", - "Epoch 9801: model parameters saved\n", - "Epoch 9802 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9802: avg_loss appended (2.7778)\n", - "Epoch 9802: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9802: accuracy appended (86.11%)\n", - "Epoch 9802: model set back to train mode\n", - "Epoch 9802: model parameters saved\n", - "Epoch 9803 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9803: avg_loss appended (2.7778)\n", - "Epoch 9803: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9803: accuracy appended (86.11%)\n", - "Epoch 9803: model set back to train mode\n", - "Epoch 9803: model parameters saved\n", - "Epoch 9804 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9804: avg_loss appended (2.7778)\n", - "Epoch 9804: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9804: accuracy appended (86.11%)\n", - "Epoch 9804: model set back to train mode\n", - "Epoch 9804: model parameters saved\n", - "Epoch 9805 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9805: avg_loss appended (2.7778)\n", - "Epoch 9805: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9805: accuracy appended (86.11%)\n", - "Epoch 9805: model set back to train mode\n", - "Epoch 9805: model parameters saved\n", - "Epoch 9806 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9806: avg_loss appended (2.7778)\n", - "Epoch 9806: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9806: accuracy appended (86.11%)\n", - "Epoch 9806: model set back to train mode\n", - "Epoch 9806: model parameters saved\n", - "Epoch 9807 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9807: avg_loss appended (2.7778)\n", - "Epoch 9807: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9807: accuracy appended (86.11%)\n", - "Epoch 9807: model set back to train mode\n", - "Epoch 9807: model parameters saved\n", - "Epoch 9808 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9808: avg_loss appended (2.7778)\n", - "Epoch 9808: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9808: accuracy appended (86.11%)\n", - "Epoch 9808: model set back to train mode\n", - "Epoch 9808: model parameters saved\n", - "Epoch 9809 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9809: avg_loss appended (2.7778)\n", - "Epoch 9809: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9809: accuracy appended (86.11%)\n", - "Epoch 9809: model set back to train mode\n", - "Epoch 9809: model parameters saved\n", - "Epoch 9810 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9810: avg_loss appended (2.7778)\n", - "Epoch 9810: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9810: accuracy appended (86.11%)\n", - "Epoch 9810: model set back to train mode\n", - "Epoch 9810: model parameters saved\n", - "Epoch 9811 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9811: avg_loss appended (2.7778)\n", - "Epoch 9811: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9811: accuracy appended (86.11%)\n", - "Epoch 9811: model set back to train mode\n", - "Epoch 9811: model parameters saved\n", - "Epoch 9812 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9812: avg_loss appended (2.7778)\n", - "Epoch 9812: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9812: accuracy appended (86.11%)\n", - "Epoch 9812: model set back to train mode\n", - "Epoch 9812: model parameters saved\n", - "Epoch 9813 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9813: avg_loss appended (2.7778)\n", - "Epoch 9813: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9813: accuracy appended (86.11%)\n", - "Epoch 9813: model set back to train mode\n", - "Epoch 9813: model parameters saved\n", - "Epoch 9814 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9814: avg_loss appended (2.7778)\n", - "Epoch 9814: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9814: accuracy appended (86.11%)\n", - "Epoch 9814: model set back to train mode\n", - "Epoch 9814: model parameters saved\n", - "Epoch 9815 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9815: avg_loss appended (2.7778)\n", - "Epoch 9815: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9815: accuracy appended (86.11%)\n", - "Epoch 9815: model set back to train mode\n", - "Epoch 9815: model parameters saved\n", - "Epoch 9816 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9816: avg_loss appended (2.7778)\n", - "Epoch 9816: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9816: accuracy appended (86.11%)\n", - "Epoch 9816: model set back to train mode\n", - "Epoch 9816: model parameters saved\n", - "Epoch 9817 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9817: avg_loss appended (2.7778)\n", - "Epoch 9817: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9817: accuracy appended (86.11%)\n", - "Epoch 9817: model set back to train mode\n", - "Epoch 9817: model parameters saved\n", - "Epoch 9818 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9818: avg_loss appended (2.7778)\n", - "Epoch 9818: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9818: accuracy appended (86.11%)\n", - "Epoch 9818: model set back to train mode\n", - "Epoch 9818: model parameters saved\n", - "Epoch 9819 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9819: avg_loss appended (2.7778)\n", - "Epoch 9819: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9819: accuracy appended (86.11%)\n", - "Epoch 9819: model set back to train mode\n", - "Epoch 9819: model parameters saved\n", - "Epoch 9820 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9820: avg_loss appended (2.7778)\n", - "Epoch 9820: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9820: accuracy appended (86.11%)\n", - "Epoch 9820: model set back to train mode\n", - "Epoch 9820: model parameters saved\n", - "Epoch 9821 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9821: avg_loss appended (2.7778)\n", - "Epoch 9821: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9821: accuracy appended (86.11%)\n", - "Epoch 9821: model set back to train mode\n", - "Epoch 9821: model parameters saved\n", - "Epoch 9822 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9822: avg_loss appended (2.7778)\n", - "Epoch 9822: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9822: accuracy appended (86.11%)\n", - "Epoch 9822: model set back to train mode\n", - "Epoch 9822: model parameters saved\n", - "Epoch 9823 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9823: avg_loss appended (2.7778)\n", - "Epoch 9823: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9823: accuracy appended (86.11%)\n", - "Epoch 9823: model set back to train mode\n", - "Epoch 9823: model parameters saved\n", - "Epoch 9824 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9824: avg_loss appended (2.7778)\n", - "Epoch 9824: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9824: accuracy appended (86.11%)\n", - "Epoch 9824: model set back to train mode\n", - "Epoch 9824: model parameters saved\n", - "Epoch 9825 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9825: avg_loss appended (2.7778)\n", - "Epoch 9825: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9825: accuracy appended (86.11%)\n", - "Epoch 9825: model set back to train mode\n", - "Epoch 9825: model parameters saved\n", - "Epoch 9826 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9826: avg_loss appended (2.7778)\n", - "Epoch 9826: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9826: accuracy appended (86.11%)\n", - "Epoch 9826: model set back to train mode\n", - "Epoch 9826: model parameters saved\n", - "Epoch 9827 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9827: avg_loss appended (2.7778)\n", - "Epoch 9827: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9827: accuracy appended (86.11%)\n", - "Epoch 9827: model set back to train mode\n", - "Epoch 9827: model parameters saved\n", - "Epoch 9828 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9828: avg_loss appended (2.7778)\n", - "Epoch 9828: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9828: accuracy appended (86.11%)\n", - "Epoch 9828: model set back to train mode\n", - "Epoch 9828: model parameters saved\n", - "Epoch 9829 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9829: avg_loss appended (2.7778)\n", - "Epoch 9829: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9829: accuracy appended (86.11%)\n", - "Epoch 9829: model set back to train mode\n", - "Epoch 9829: model parameters saved\n", - "Epoch 9830 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9830: avg_loss appended (2.7778)\n", - "Epoch 9830: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9830: accuracy appended (86.11%)\n", - "Epoch 9830: model set back to train mode\n", - "Epoch 9830: model parameters saved\n", - "Epoch 9831 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9831: avg_loss appended (2.7778)\n", - "Epoch 9831: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9831: accuracy appended (86.11%)\n", - "Epoch 9831: model set back to train mode\n", - "Epoch 9831: model parameters saved\n", - "Epoch 9832 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9832: avg_loss appended (2.7778)\n", - "Epoch 9832: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9832: accuracy appended (86.11%)\n", - "Epoch 9832: model set back to train mode\n", - "Epoch 9832: model parameters saved\n", - "Epoch 9833 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9833: avg_loss appended (2.7778)\n", - "Epoch 9833: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9833: accuracy appended (86.11%)\n", - "Epoch 9833: model set back to train mode\n", - "Epoch 9833: model parameters saved\n", - "Epoch 9834 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9834: avg_loss appended (2.7778)\n", - "Epoch 9834: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9834: accuracy appended (86.11%)\n", - "Epoch 9834: model set back to train mode\n", - "Epoch 9834: model parameters saved\n", - "Epoch 9835 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9835: avg_loss appended (2.7778)\n", - "Epoch 9835: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9835: accuracy appended (86.11%)\n", - "Epoch 9835: model set back to train mode\n", - "Epoch 9835: model parameters saved\n", - "Epoch 9836 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9836: avg_loss appended (2.7778)\n", - "Epoch 9836: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9836: accuracy appended (86.11%)\n", - "Epoch 9836: model set back to train mode\n", - "Epoch 9836: model parameters saved\n", - "Epoch 9837 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9837: avg_loss appended (2.7778)\n", - "Epoch 9837: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9837: accuracy appended (86.11%)\n", - "Epoch 9837: model set back to train mode\n", - "Epoch 9837: model parameters saved\n", - "Epoch 9838 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9838: avg_loss appended (2.7778)\n", - "Epoch 9838: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9838: accuracy appended (86.11%)\n", - "Epoch 9838: model set back to train mode\n", - "Epoch 9838: model parameters saved\n", - "Epoch 9839 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9839: avg_loss appended (2.7778)\n", - "Epoch 9839: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9839: accuracy appended (86.11%)\n", - "Epoch 9839: model set back to train mode\n", - "Epoch 9839: model parameters saved\n", - "Epoch 9840 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9840: avg_loss appended (2.7778)\n", - "Epoch 9840: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9840: accuracy appended (86.11%)\n", - "Epoch 9840: model set back to train mode\n", - "Epoch 9840: model parameters saved\n", - "Epoch 9841 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9841: avg_loss appended (2.7778)\n", - "Epoch 9841: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9841: accuracy appended (86.11%)\n", - "Epoch 9841: model set back to train mode\n", - "Epoch 9841: model parameters saved\n", - "Epoch 9842 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9842: avg_loss appended (2.7778)\n", - "Epoch 9842: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9842: accuracy appended (86.11%)\n", - "Epoch 9842: model set back to train mode\n", - "Epoch 9842: model parameters saved\n", - "Epoch 9843 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9843: avg_loss appended (2.7778)\n", - "Epoch 9843: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9843: accuracy appended (86.11%)\n", - "Epoch 9843: model set back to train mode\n", - "Epoch 9843: model parameters saved\n", - "Epoch 9844 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9844: avg_loss appended (2.7778)\n", - "Epoch 9844: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9844: accuracy appended (86.11%)\n", - "Epoch 9844: model set back to train mode\n", - "Epoch 9844: model parameters saved\n", - "Epoch 9845 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9845: avg_loss appended (2.7778)\n", - "Epoch 9845: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9845: accuracy appended (86.11%)\n", - "Epoch 9845: model set back to train mode\n", - "Epoch 9845: model parameters saved\n", - "Epoch 9846 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9846: avg_loss appended (2.7778)\n", - "Epoch 9846: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9846: accuracy appended (86.11%)\n", - "Epoch 9846: model set back to train mode\n", - "Epoch 9846: model parameters saved\n", - "Epoch 9847 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9847: avg_loss appended (2.7778)\n", - "Epoch 9847: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9847: accuracy appended (86.11%)\n", - "Epoch 9847: model set back to train mode\n", - "Epoch 9847: model parameters saved\n", - "Epoch 9848 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9848: avg_loss appended (2.7778)\n", - "Epoch 9848: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9848: accuracy appended (86.11%)\n", - "Epoch 9848: model set back to train mode\n", - "Epoch 9848: model parameters saved\n", - "Epoch 9849 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9849: avg_loss appended (2.7778)\n", - "Epoch 9849: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9849: accuracy appended (86.11%)\n", - "Epoch 9849: model set back to train mode\n", - "Epoch 9849: model parameters saved\n", - "Epoch 9850 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9850: avg_loss appended (2.7778)\n", - "Epoch 9850: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9850: accuracy appended (86.11%)\n", - "Epoch 9850: model set back to train mode\n", - "Epoch 9850: model parameters saved\n", - "Epoch 9851 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9851: avg_loss appended (2.7778)\n", - "Epoch 9851: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9851: accuracy appended (86.11%)\n", - "Epoch 9851: model set back to train mode\n", - "Epoch 9851: model parameters saved\n", - "Epoch 9852 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9852: avg_loss appended (2.7778)\n", - "Epoch 9852: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9852: accuracy appended (86.11%)\n", - "Epoch 9852: model set back to train mode\n", - "Epoch 9852: model parameters saved\n", - "Epoch 9853 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9853: avg_loss appended (2.7778)\n", - "Epoch 9853: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9853: accuracy appended (86.11%)\n", - "Epoch 9853: model set back to train mode\n", - "Epoch 9853: model parameters saved\n", - "Epoch 9854 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9854: avg_loss appended (2.7778)\n", - "Epoch 9854: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9854: accuracy appended (86.11%)\n", - "Epoch 9854: model set back to train mode\n", - "Epoch 9854: model parameters saved\n", - "Epoch 9855 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9855: avg_loss appended (2.7778)\n", - "Epoch 9855: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9855: accuracy appended (86.11%)\n", - "Epoch 9855: model set back to train mode\n", - "Epoch 9855: model parameters saved\n", - "Epoch 9856 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9856: avg_loss appended (2.7778)\n", - "Epoch 9856: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9856: accuracy appended (86.11%)\n", - "Epoch 9856: model set back to train mode\n", - "Epoch 9856: model parameters saved\n", - "Epoch 9857 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9857: avg_loss appended (2.7778)\n", - "Epoch 9857: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9857: accuracy appended (86.11%)\n", - "Epoch 9857: model set back to train mode\n", - "Epoch 9857: model parameters saved\n", - "Epoch 9858 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9858: avg_loss appended (2.7778)\n", - "Epoch 9858: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9858: accuracy appended (86.11%)\n", - "Epoch 9858: model set back to train mode\n", - "Epoch 9858: model parameters saved\n", - "Epoch 9859 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9859: avg_loss appended (2.7778)\n", - "Epoch 9859: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9859: accuracy appended (86.11%)\n", - "Epoch 9859: model set back to train mode\n", - "Epoch 9859: model parameters saved\n", - "Epoch 9860 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9860: avg_loss appended (2.7778)\n", - "Epoch 9860: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9860: accuracy appended (86.11%)\n", - "Epoch 9860: model set back to train mode\n", - "Epoch 9860: model parameters saved\n", - "Epoch 9861 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9861: avg_loss appended (2.7778)\n", - "Epoch 9861: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9861: accuracy appended (86.11%)\n", - "Epoch 9861: model set back to train mode\n", - "Epoch 9861: model parameters saved\n", - "Epoch 9862 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9862: avg_loss appended (2.7778)\n", - "Epoch 9862: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9862: accuracy appended (86.11%)\n", - "Epoch 9862: model set back to train mode\n", - "Epoch 9862: model parameters saved\n", - "Epoch 9863 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9863: avg_loss appended (2.7778)\n", - "Epoch 9863: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9863: accuracy appended (86.11%)\n", - "Epoch 9863: model set back to train mode\n", - "Epoch 9863: model parameters saved\n", - "Epoch 9864 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9864: avg_loss appended (2.7778)\n", - "Epoch 9864: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9864: accuracy appended (86.11%)\n", - "Epoch 9864: model set back to train mode\n", - "Epoch 9864: model parameters saved\n", - "Epoch 9865 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9865: avg_loss appended (2.7778)\n", - "Epoch 9865: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9865: accuracy appended (86.11%)\n", - "Epoch 9865: model set back to train mode\n", - "Epoch 9865: model parameters saved\n", - "Epoch 9866 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9866: avg_loss appended (2.7778)\n", - "Epoch 9866: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9866: accuracy appended (86.11%)\n", - "Epoch 9866: model set back to train mode\n", - "Epoch 9866: model parameters saved\n", - "Epoch 9867 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9867: avg_loss appended (2.7778)\n", - "Epoch 9867: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9867: accuracy appended (86.11%)\n", - "Epoch 9867: model set back to train mode\n", - "Epoch 9867: model parameters saved\n", - "Epoch 9868 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9868: avg_loss appended (2.7778)\n", - "Epoch 9868: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9868: accuracy appended (86.11%)\n", - "Epoch 9868: model set back to train mode\n", - "Epoch 9868: model parameters saved\n", - "Epoch 9869 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9869: avg_loss appended (2.7778)\n", - "Epoch 9869: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9869: accuracy appended (86.11%)\n", - "Epoch 9869: model set back to train mode\n", - "Epoch 9869: model parameters saved\n", - "Epoch 9870 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9870: avg_loss appended (2.7778)\n", - "Epoch 9870: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9870: accuracy appended (86.11%)\n", - "Epoch 9870: model set back to train mode\n", - "Epoch 9870: model parameters saved\n", - "Epoch 9871 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9871: avg_loss appended (2.7778)\n", - "Epoch 9871: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9871: accuracy appended (86.11%)\n", - "Epoch 9871: model set back to train mode\n", - "Epoch 9871: model parameters saved\n", - "Epoch 9872 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9872: avg_loss appended (2.7778)\n", - "Epoch 9872: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9872: accuracy appended (86.11%)\n", - "Epoch 9872: model set back to train mode\n", - "Epoch 9872: model parameters saved\n", - "Epoch 9873 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9873: avg_loss appended (2.7778)\n", - "Epoch 9873: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9873: accuracy appended (86.11%)\n", - "Epoch 9873: model set back to train mode\n", - "Epoch 9873: model parameters saved\n", - "Epoch 9874 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9874: avg_loss appended (2.7778)\n", - "Epoch 9874: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9874: accuracy appended (86.11%)\n", - "Epoch 9874: model set back to train mode\n", - "Epoch 9874: model parameters saved\n", - "Epoch 9875 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9875: avg_loss appended (2.7778)\n", - "Epoch 9875: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9875: accuracy appended (86.11%)\n", - "Epoch 9875: model set back to train mode\n", - "Epoch 9875: model parameters saved\n", - "Epoch 9876 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9876: avg_loss appended (2.7778)\n", - "Epoch 9876: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9876: accuracy appended (86.11%)\n", - "Epoch 9876: model set back to train mode\n", - "Epoch 9876: model parameters saved\n", - "Epoch 9877 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9877: avg_loss appended (2.7778)\n", - "Epoch 9877: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9877: accuracy appended (86.11%)\n", - "Epoch 9877: model set back to train mode\n", - "Epoch 9877: model parameters saved\n", - "Epoch 9878 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9878: avg_loss appended (2.7778)\n", - "Epoch 9878: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9878: accuracy appended (86.11%)\n", - "Epoch 9878: model set back to train mode\n", - "Epoch 9878: model parameters saved\n", - "Epoch 9879 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9879: avg_loss appended (2.7778)\n", - "Epoch 9879: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9879: accuracy appended (86.11%)\n", - "Epoch 9879: model set back to train mode\n", - "Epoch 9879: model parameters saved\n", - "Epoch 9880 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9880: avg_loss appended (2.7778)\n", - "Epoch 9880: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9880: accuracy appended (86.11%)\n", - "Epoch 9880: model set back to train mode\n", - "Epoch 9880: model parameters saved\n", - "Epoch 9881 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9881: avg_loss appended (2.7778)\n", - "Epoch 9881: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9881: accuracy appended (86.11%)\n", - "Epoch 9881: model set back to train mode\n", - "Epoch 9881: model parameters saved\n", - "Epoch 9882 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9882: avg_loss appended (2.7778)\n", - "Epoch 9882: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9882: accuracy appended (86.11%)\n", - "Epoch 9882: model set back to train mode\n", - "Epoch 9882: model parameters saved\n", - "Epoch 9883 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9883: avg_loss appended (2.7778)\n", - "Epoch 9883: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9883: accuracy appended (86.11%)\n", - "Epoch 9883: model set back to train mode\n", - "Epoch 9883: model parameters saved\n", - "Epoch 9884 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9884: avg_loss appended (2.7778)\n", - "Epoch 9884: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9884: accuracy appended (86.11%)\n", - "Epoch 9884: model set back to train mode\n", - "Epoch 9884: model parameters saved\n", - "Epoch 9885 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9885: avg_loss appended (2.7778)\n", - "Epoch 9885: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9885: accuracy appended (86.11%)\n", - "Epoch 9885: model set back to train mode\n", - "Epoch 9885: model parameters saved\n", - "Epoch 9886 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9886: avg_loss appended (2.7778)\n", - "Epoch 9886: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9886: accuracy appended (86.11%)\n", - "Epoch 9886: model set back to train mode\n", - "Epoch 9886: model parameters saved\n", - "Epoch 9887 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9887: avg_loss appended (2.7778)\n", - "Epoch 9887: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9887: accuracy appended (86.11%)\n", - "Epoch 9887: model set back to train mode\n", - "Epoch 9887: model parameters saved\n", - "Epoch 9888 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9888: avg_loss appended (2.7778)\n", - "Epoch 9888: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9888: accuracy appended (86.11%)\n", - "Epoch 9888: model set back to train mode\n", - "Epoch 9888: model parameters saved\n", - "Epoch 9889 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9889: avg_loss appended (2.7778)\n", - "Epoch 9889: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9889: accuracy appended (86.11%)\n", - "Epoch 9889: model set back to train mode\n", - "Epoch 9889: model parameters saved\n", - "Epoch 9890 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9890: avg_loss appended (2.7778)\n", - "Epoch 9890: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9890: accuracy appended (86.11%)\n", - "Epoch 9890: model set back to train mode\n", - "Epoch 9890: model parameters saved\n", - "Epoch 9891 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9891: avg_loss appended (2.7778)\n", - "Epoch 9891: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9891: accuracy appended (86.11%)\n", - "Epoch 9891: model set back to train mode\n", - "Epoch 9891: model parameters saved\n", - "Epoch 9892 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9892: avg_loss appended (2.7778)\n", - "Epoch 9892: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9892: accuracy appended (86.11%)\n", - "Epoch 9892: model set back to train mode\n", - "Epoch 9892: model parameters saved\n", - "Epoch 9893 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9893: avg_loss appended (2.7778)\n", - "Epoch 9893: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9893: accuracy appended (86.11%)\n", - "Epoch 9893: model set back to train mode\n", - "Epoch 9893: model parameters saved\n", - "Epoch 9894 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9894: avg_loss appended (2.7778)\n", - "Epoch 9894: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9894: accuracy appended (86.11%)\n", - "Epoch 9894: model set back to train mode\n", - "Epoch 9894: model parameters saved\n", - "Epoch 9895 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9895: avg_loss appended (2.7778)\n", - "Epoch 9895: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9895: accuracy appended (86.11%)\n", - "Epoch 9895: model set back to train mode\n", - "Epoch 9895: model parameters saved\n", - "Epoch 9896 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9896: avg_loss appended (2.7778)\n", - "Epoch 9896: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9896: accuracy appended (86.11%)\n", - "Epoch 9896: model set back to train mode\n", - "Epoch 9896: model parameters saved\n", - "Epoch 9897 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9897: avg_loss appended (2.7778)\n", - "Epoch 9897: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9897: accuracy appended (86.11%)\n", - "Epoch 9897: model set back to train mode\n", - "Epoch 9897: model parameters saved\n", - "Epoch 9898 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9898: avg_loss appended (2.7778)\n", - "Epoch 9898: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9898: accuracy appended (86.11%)\n", - "Epoch 9898: model set back to train mode\n", - "Epoch 9898: model parameters saved\n", - "Epoch 9899 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9899: avg_loss appended (2.7778)\n", - "Epoch 9899: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9899: accuracy appended (86.11%)\n", - "Epoch 9899: model set back to train mode\n", - "Epoch 9899: model parameters saved\n", - "Epoch 9900 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9900: avg_loss appended (2.7778)\n", - "Epoch 9900: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9900: accuracy appended (86.11%)\n", - "Epoch 9900: model set back to train mode\n", - "Epoch 9900: model parameters saved\n", - "Epoch 9900/10000, Loss: 2.7778, Accuracy: 86.11%\n", - "Epoch 9901 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9901: avg_loss appended (2.7778)\n", - "Epoch 9901: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9901: accuracy appended (86.11%)\n", - "Epoch 9901: model set back to train mode\n", - "Epoch 9901: model parameters saved\n", - "Epoch 9902 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9902: avg_loss appended (2.7778)\n", - "Epoch 9902: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9902: accuracy appended (86.11%)\n", - "Epoch 9902: model set back to train mode\n", - "Epoch 9902: model parameters saved\n", - "Epoch 9903 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9903: avg_loss appended (2.7778)\n", - "Epoch 9903: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9903: accuracy appended (86.11%)\n", - "Epoch 9903: model set back to train mode\n", - "Epoch 9903: model parameters saved\n", - "Epoch 9904 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9904: avg_loss appended (2.7778)\n", - "Epoch 9904: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9904: accuracy appended (86.11%)\n", - "Epoch 9904: model set back to train mode\n", - "Epoch 9904: model parameters saved\n", - "Epoch 9905 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9905: avg_loss appended (2.7778)\n", - "Epoch 9905: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9905: accuracy appended (86.11%)\n", - "Epoch 9905: model set back to train mode\n", - "Epoch 9905: model parameters saved\n", - "Epoch 9906 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9906: avg_loss appended (2.7778)\n", - "Epoch 9906: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9906: accuracy appended (86.11%)\n", - "Epoch 9906: model set back to train mode\n", - "Epoch 9906: model parameters saved\n", - "Epoch 9907 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9907: avg_loss appended (2.7778)\n", - "Epoch 9907: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9907: accuracy appended (86.11%)\n", - "Epoch 9907: model set back to train mode\n", - "Epoch 9907: model parameters saved\n", - "Epoch 9908 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9908: avg_loss appended (2.7778)\n", - "Epoch 9908: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9908: accuracy appended (86.11%)\n", - "Epoch 9908: model set back to train mode\n", - "Epoch 9908: model parameters saved\n", - "Epoch 9909 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9909: avg_loss appended (2.7778)\n", - "Epoch 9909: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9909: accuracy appended (86.11%)\n", - "Epoch 9909: model set back to train mode\n", - "Epoch 9909: model parameters saved\n", - "Epoch 9910 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9910: avg_loss appended (2.7778)\n", - "Epoch 9910: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9910: accuracy appended (86.11%)\n", - "Epoch 9910: model set back to train mode\n", - "Epoch 9910: model parameters saved\n", - "Epoch 9911 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9911: avg_loss appended (2.7778)\n", - "Epoch 9911: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9911: accuracy appended (86.11%)\n", - "Epoch 9911: model set back to train mode\n", - "Epoch 9911: model parameters saved\n", - "Epoch 9912 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9912: avg_loss appended (2.7778)\n", - "Epoch 9912: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9912: accuracy appended (86.11%)\n", - "Epoch 9912: model set back to train mode\n", - "Epoch 9912: model parameters saved\n", - "Epoch 9913 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9913: avg_loss appended (2.7778)\n", - "Epoch 9913: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9913: accuracy appended (86.11%)\n", - "Epoch 9913: model set back to train mode\n", - "Epoch 9913: model parameters saved\n", - "Epoch 9914 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9914: avg_loss appended (2.7778)\n", - "Epoch 9914: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9914: accuracy appended (86.11%)\n", - "Epoch 9914: model set back to train mode\n", - "Epoch 9914: model parameters saved\n", - "Epoch 9915 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9915: avg_loss appended (2.7778)\n", - "Epoch 9915: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9915: accuracy appended (86.11%)\n", - "Epoch 9915: model set back to train mode\n", - "Epoch 9915: model parameters saved\n", - "Epoch 9916 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9916: avg_loss appended (2.7778)\n", - "Epoch 9916: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9916: accuracy appended (86.11%)\n", - "Epoch 9916: model set back to train mode\n", - "Epoch 9916: model parameters saved\n", - "Epoch 9917 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9917: avg_loss appended (2.7778)\n", - "Epoch 9917: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9917: accuracy appended (86.11%)\n", - "Epoch 9917: model set back to train mode\n", - "Epoch 9917: model parameters saved\n", - "Epoch 9918 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9918: avg_loss appended (2.7778)\n", - "Epoch 9918: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9918: accuracy appended (86.11%)\n", - "Epoch 9918: model set back to train mode\n", - "Epoch 9918: model parameters saved\n", - "Epoch 9919 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9919: avg_loss appended (2.7778)\n", - "Epoch 9919: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9919: accuracy appended (86.11%)\n", - "Epoch 9919: model set back to train mode\n", - "Epoch 9919: model parameters saved\n", - "Epoch 9920 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9920: avg_loss appended (2.7778)\n", - "Epoch 9920: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9920: accuracy appended (86.11%)\n", - "Epoch 9920: model set back to train mode\n", - "Epoch 9920: model parameters saved\n", - "Epoch 9921 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9921: avg_loss appended (2.7778)\n", - "Epoch 9921: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9921: accuracy appended (86.11%)\n", - "Epoch 9921: model set back to train mode\n", - "Epoch 9921: model parameters saved\n", - "Epoch 9922 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9922: avg_loss appended (2.7778)\n", - "Epoch 9922: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9922: accuracy appended (86.11%)\n", - "Epoch 9922: model set back to train mode\n", - "Epoch 9922: model parameters saved\n", - "Epoch 9923 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9923: avg_loss appended (2.7778)\n", - "Epoch 9923: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9923: accuracy appended (86.11%)\n", - "Epoch 9923: model set back to train mode\n", - "Epoch 9923: model parameters saved\n", - "Epoch 9924 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9924: avg_loss appended (2.7778)\n", - "Epoch 9924: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9924: accuracy appended (86.11%)\n", - "Epoch 9924: model set back to train mode\n", - "Epoch 9924: model parameters saved\n", - "Epoch 9925 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9925: avg_loss appended (2.7778)\n", - "Epoch 9925: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9925: accuracy appended (86.11%)\n", - "Epoch 9925: model set back to train mode\n", - "Epoch 9925: model parameters saved\n", - "Epoch 9926 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9926: avg_loss appended (2.7778)\n", - "Epoch 9926: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9926: accuracy appended (86.11%)\n", - "Epoch 9926: model set back to train mode\n", - "Epoch 9926: model parameters saved\n", - "Epoch 9927 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9927: avg_loss appended (2.7778)\n", - "Epoch 9927: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9927: accuracy appended (86.11%)\n", - "Epoch 9927: model set back to train mode\n", - "Epoch 9927: model parameters saved\n", - "Epoch 9928 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9928: avg_loss appended (2.7778)\n", - "Epoch 9928: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9928: accuracy appended (86.11%)\n", - "Epoch 9928: model set back to train mode\n", - "Epoch 9928: model parameters saved\n", - "Epoch 9929 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9929: avg_loss appended (2.7778)\n", - "Epoch 9929: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9929: accuracy appended (86.11%)\n", - "Epoch 9929: model set back to train mode\n", - "Epoch 9929: model parameters saved\n", - "Epoch 9930 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9930: avg_loss appended (2.7778)\n", - "Epoch 9930: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9930: accuracy appended (86.11%)\n", - "Epoch 9930: model set back to train mode\n", - "Epoch 9930: model parameters saved\n", - "Epoch 9931 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9931: avg_loss appended (2.7778)\n", - "Epoch 9931: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9931: accuracy appended (86.11%)\n", - "Epoch 9931: model set back to train mode\n", - "Epoch 9931: model parameters saved\n", - "Epoch 9932 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9932: avg_loss appended (2.7778)\n", - "Epoch 9932: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9932: accuracy appended (86.11%)\n", - "Epoch 9932: model set back to train mode\n", - "Epoch 9932: model parameters saved\n", - "Epoch 9933 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9933: avg_loss appended (2.7778)\n", - "Epoch 9933: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9933: accuracy appended (86.11%)\n", - "Epoch 9933: model set back to train mode\n", - "Epoch 9933: model parameters saved\n", - "Epoch 9934 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9934: avg_loss appended (2.7778)\n", - "Epoch 9934: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9934: accuracy appended (86.11%)\n", - "Epoch 9934: model set back to train mode\n", - "Epoch 9934: model parameters saved\n", - "Epoch 9935 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9935: avg_loss appended (2.7778)\n", - "Epoch 9935: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9935: accuracy appended (86.11%)\n", - "Epoch 9935: model set back to train mode\n", - "Epoch 9935: model parameters saved\n", - "Epoch 9936 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9936: avg_loss appended (2.7778)\n", - "Epoch 9936: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9936: accuracy appended (86.11%)\n", - "Epoch 9936: model set back to train mode\n", - "Epoch 9936: model parameters saved\n", - "Epoch 9937 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9937: avg_loss appended (2.7778)\n", - "Epoch 9937: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9937: accuracy appended (86.11%)\n", - "Epoch 9937: model set back to train mode\n", - "Epoch 9937: model parameters saved\n", - "Epoch 9938 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9938: avg_loss appended (2.7778)\n", - "Epoch 9938: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9938: accuracy appended (86.11%)\n", - "Epoch 9938: model set back to train mode\n", - "Epoch 9938: model parameters saved\n", - "Epoch 9939 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9939: avg_loss appended (2.7778)\n", - "Epoch 9939: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9939: accuracy appended (86.11%)\n", - "Epoch 9939: model set back to train mode\n", - "Epoch 9939: model parameters saved\n", - "Epoch 9940 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9940: avg_loss appended (2.7778)\n", - "Epoch 9940: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9940: accuracy appended (86.11%)\n", - "Epoch 9940: model set back to train mode\n", - "Epoch 9940: model parameters saved\n", - "Epoch 9941 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9941: avg_loss appended (2.7778)\n", - "Epoch 9941: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9941: accuracy appended (86.11%)\n", - "Epoch 9941: model set back to train mode\n", - "Epoch 9941: model parameters saved\n", - "Epoch 9942 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9942: avg_loss appended (2.7778)\n", - "Epoch 9942: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9942: accuracy appended (86.11%)\n", - "Epoch 9942: model set back to train mode\n", - "Epoch 9942: model parameters saved\n", - "Epoch 9943 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9943: avg_loss appended (2.7778)\n", - "Epoch 9943: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9943: accuracy appended (86.11%)\n", - "Epoch 9943: model set back to train mode\n", - "Epoch 9943: model parameters saved\n", - "Epoch 9944 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9944: avg_loss appended (2.7778)\n", - "Epoch 9944: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9944: accuracy appended (86.11%)\n", - "Epoch 9944: model set back to train mode\n", - "Epoch 9944: model parameters saved\n", - "Epoch 9945 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9945: avg_loss appended (2.7778)\n", - "Epoch 9945: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9945: accuracy appended (86.11%)\n", - "Epoch 9945: model set back to train mode\n", - "Epoch 9945: model parameters saved\n", - "Epoch 9946 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9946: avg_loss appended (2.7778)\n", - "Epoch 9946: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9946: accuracy appended (86.11%)\n", - "Epoch 9946: model set back to train mode\n", - "Epoch 9946: model parameters saved\n", - "Epoch 9947 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9947: avg_loss appended (2.7778)\n", - "Epoch 9947: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9947: accuracy appended (86.11%)\n", - "Epoch 9947: model set back to train mode\n", - "Epoch 9947: model parameters saved\n", - "Epoch 9948 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9948: avg_loss appended (2.7778)\n", - "Epoch 9948: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9948: accuracy appended (86.11%)\n", - "Epoch 9948: model set back to train mode\n", - "Epoch 9948: model parameters saved\n", - "Epoch 9949 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9949: avg_loss appended (2.7778)\n", - "Epoch 9949: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9949: accuracy appended (86.11%)\n", - "Epoch 9949: model set back to train mode\n", - "Epoch 9949: model parameters saved\n", - "Epoch 9950 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9950: avg_loss appended (2.7778)\n", - "Epoch 9950: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9950: accuracy appended (86.11%)\n", - "Epoch 9950: model set back to train mode\n", - "Epoch 9950: model parameters saved\n", - "Epoch 9951 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9951: avg_loss appended (2.7778)\n", - "Epoch 9951: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9951: accuracy appended (86.11%)\n", - "Epoch 9951: model set back to train mode\n", - "Epoch 9951: model parameters saved\n", - "Epoch 9952 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9952: avg_loss appended (2.7778)\n", - "Epoch 9952: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9952: accuracy appended (86.11%)\n", - "Epoch 9952: model set back to train mode\n", - "Epoch 9952: model parameters saved\n", - "Epoch 9953 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9953: avg_loss appended (2.7778)\n", - "Epoch 9953: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9953: accuracy appended (86.11%)\n", - "Epoch 9953: model set back to train mode\n", - "Epoch 9953: model parameters saved\n", - "Epoch 9954 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9954: avg_loss appended (2.7778)\n", - "Epoch 9954: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9954: accuracy appended (86.11%)\n", - "Epoch 9954: model set back to train mode\n", - "Epoch 9954: model parameters saved\n", - "Epoch 9955 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9955: avg_loss appended (2.7778)\n", - "Epoch 9955: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9955: accuracy appended (86.11%)\n", - "Epoch 9955: model set back to train mode\n", - "Epoch 9955: model parameters saved\n", - "Epoch 9956 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9956: avg_loss appended (2.7778)\n", - "Epoch 9956: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9956: accuracy appended (86.11%)\n", - "Epoch 9956: model set back to train mode\n", - "Epoch 9956: model parameters saved\n", - "Epoch 9957 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9957: avg_loss appended (2.7778)\n", - "Epoch 9957: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9957: accuracy appended (86.11%)\n", - "Epoch 9957: model set back to train mode\n", - "Epoch 9957: model parameters saved\n", - "Epoch 9958 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9958: avg_loss appended (2.7778)\n", - "Epoch 9958: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9958: accuracy appended (86.11%)\n", - "Epoch 9958: model set back to train mode\n", - "Epoch 9958: model parameters saved\n", - "Epoch 9959 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9959: avg_loss appended (2.7778)\n", - "Epoch 9959: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9959: accuracy appended (86.11%)\n", - "Epoch 9959: model set back to train mode\n", - "Epoch 9959: model parameters saved\n", - "Epoch 9960 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9960: avg_loss appended (2.7778)\n", - "Epoch 9960: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9960: accuracy appended (86.11%)\n", - "Epoch 9960: model set back to train mode\n", - "Epoch 9960: model parameters saved\n", - "Epoch 9961 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9961: avg_loss appended (2.7778)\n", - "Epoch 9961: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9961: accuracy appended (86.11%)\n", - "Epoch 9961: model set back to train mode\n", - "Epoch 9961: model parameters saved\n", - "Epoch 9962 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9962: avg_loss appended (2.7778)\n", - "Epoch 9962: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9962: accuracy appended (86.11%)\n", - "Epoch 9962: model set back to train mode\n", - "Epoch 9962: model parameters saved\n", - "Epoch 9963 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9963: avg_loss appended (2.7778)\n", - "Epoch 9963: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9963: accuracy appended (86.11%)\n", - "Epoch 9963: model set back to train mode\n", - "Epoch 9963: model parameters saved\n", - "Epoch 9964 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9964: avg_loss appended (2.7778)\n", - "Epoch 9964: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9964: accuracy appended (86.11%)\n", - "Epoch 9964: model set back to train mode\n", - "Epoch 9964: model parameters saved\n", - "Epoch 9965 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9965: avg_loss appended (2.7778)\n", - "Epoch 9965: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9965: accuracy appended (86.11%)\n", - "Epoch 9965: model set back to train mode\n", - "Epoch 9965: model parameters saved\n", - "Epoch 9966 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9966: avg_loss appended (2.7778)\n", - "Epoch 9966: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9966: accuracy appended (86.11%)\n", - "Epoch 9966: model set back to train mode\n", - "Epoch 9966: model parameters saved\n", - "Epoch 9967 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9967: avg_loss appended (2.7778)\n", - "Epoch 9967: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9967: accuracy appended (86.11%)\n", - "Epoch 9967: model set back to train mode\n", - "Epoch 9967: model parameters saved\n", - "Epoch 9968 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9968: avg_loss appended (2.7778)\n", - "Epoch 9968: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9968: accuracy appended (86.11%)\n", - "Epoch 9968: model set back to train mode\n", - "Epoch 9968: model parameters saved\n", - "Epoch 9969 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9969: avg_loss appended (2.7778)\n", - "Epoch 9969: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9969: accuracy appended (86.11%)\n", - "Epoch 9969: model set back to train mode\n", - "Epoch 9969: model parameters saved\n", - "Epoch 9970 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9970: avg_loss appended (2.7778)\n", - "Epoch 9970: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9970: accuracy appended (86.11%)\n", - "Epoch 9970: model set back to train mode\n", - "Epoch 9970: model parameters saved\n", - "Epoch 9971 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9971: avg_loss appended (2.7778)\n", - "Epoch 9971: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9971: accuracy appended (86.11%)\n", - "Epoch 9971: model set back to train mode\n", - "Epoch 9971: model parameters saved\n", - "Epoch 9972 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9972: avg_loss appended (2.7778)\n", - "Epoch 9972: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9972: accuracy appended (86.11%)\n", - "Epoch 9972: model set back to train mode\n", - "Epoch 9972: model parameters saved\n", - "Epoch 9973 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9973: avg_loss appended (2.7778)\n", - "Epoch 9973: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9973: accuracy appended (86.11%)\n", - "Epoch 9973: model set back to train mode\n", - "Epoch 9973: model parameters saved\n", - "Epoch 9974 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9974: avg_loss appended (2.7778)\n", - "Epoch 9974: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9974: accuracy appended (86.11%)\n", - "Epoch 9974: model set back to train mode\n", - "Epoch 9974: model parameters saved\n", - "Epoch 9975 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9975: avg_loss appended (2.7778)\n", - "Epoch 9975: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9975: accuracy appended (86.11%)\n", - "Epoch 9975: model set back to train mode\n", - "Epoch 9975: model parameters saved\n", - "Epoch 9976 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9976: avg_loss appended (2.7778)\n", - "Epoch 9976: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9976: accuracy appended (86.11%)\n", - "Epoch 9976: model set back to train mode\n", - "Epoch 9976: model parameters saved\n", - "Epoch 9977 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9977: avg_loss appended (2.7778)\n", - "Epoch 9977: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9977: accuracy appended (86.11%)\n", - "Epoch 9977: model set back to train mode\n", - "Epoch 9977: model parameters saved\n", - "Epoch 9978 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9978: avg_loss appended (2.7778)\n", - "Epoch 9978: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9978: accuracy appended (86.11%)\n", - "Epoch 9978: model set back to train mode\n", - "Epoch 9978: model parameters saved\n", - "Epoch 9979 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9979: avg_loss appended (2.7778)\n", - "Epoch 9979: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9979: accuracy appended (86.11%)\n", - "Epoch 9979: model set back to train mode\n", - "Epoch 9979: model parameters saved\n", - "Epoch 9980 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9980: avg_loss appended (2.7778)\n", - "Epoch 9980: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9980: accuracy appended (86.11%)\n", - "Epoch 9980: model set back to train mode\n", - "Epoch 9980: model parameters saved\n", - "Epoch 9981 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9981: avg_loss appended (2.7778)\n", - "Epoch 9981: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9981: accuracy appended (86.11%)\n", - "Epoch 9981: model set back to train mode\n", - "Epoch 9981: model parameters saved\n", - "Epoch 9982 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9982: avg_loss appended (2.7778)\n", - "Epoch 9982: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9982: accuracy appended (86.11%)\n", - "Epoch 9982: model set back to train mode\n", - "Epoch 9982: model parameters saved\n", - "Epoch 9983 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9983: avg_loss appended (2.7778)\n", - "Epoch 9983: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9983: accuracy appended (86.11%)\n", - "Epoch 9983: model set back to train mode\n", - "Epoch 9983: model parameters saved\n", - "Epoch 9984 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9984: avg_loss appended (2.7778)\n", - "Epoch 9984: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9984: accuracy appended (86.11%)\n", - "Epoch 9984: model set back to train mode\n", - "Epoch 9984: model parameters saved\n", - "Epoch 9985 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9985: avg_loss appended (2.7778)\n", - "Epoch 9985: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9985: accuracy appended (86.11%)\n", - "Epoch 9985: model set back to train mode\n", - "Epoch 9985: model parameters saved\n", - "Epoch 9986 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9986: avg_loss appended (2.7778)\n", - "Epoch 9986: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9986: accuracy appended (86.11%)\n", - "Epoch 9986: model set back to train mode\n", - "Epoch 9986: model parameters saved\n", - "Epoch 9987 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9987: avg_loss appended (2.7778)\n", - "Epoch 9987: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9987: accuracy appended (86.11%)\n", - "Epoch 9987: model set back to train mode\n", - "Epoch 9987: model parameters saved\n", - "Epoch 9988 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9988: avg_loss appended (2.7778)\n", - "Epoch 9988: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9988: accuracy appended (86.11%)\n", - "Epoch 9988: model set back to train mode\n", - "Epoch 9988: model parameters saved\n", - "Epoch 9989 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9989: avg_loss appended (2.7778)\n", - "Epoch 9989: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9989: accuracy appended (86.11%)\n", - "Epoch 9989: model set back to train mode\n", - "Epoch 9989: model parameters saved\n", - "Epoch 9990 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9990: avg_loss appended (2.7778)\n", - "Epoch 9990: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9990: accuracy appended (86.11%)\n", - "Epoch 9990: model set back to train mode\n", - "Epoch 9990: model parameters saved\n", - "Epoch 9991 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9991: avg_loss appended (2.7778)\n", - "Epoch 9991: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9991: accuracy appended (86.11%)\n", - "Epoch 9991: model set back to train mode\n", - "Epoch 9991: model parameters saved\n", - "Epoch 9992 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9992: avg_loss appended (2.7778)\n", - "Epoch 9992: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9992: accuracy appended (86.11%)\n", - "Epoch 9992: model set back to train mode\n", - "Epoch 9992: model parameters saved\n", - "Epoch 9993 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9993: avg_loss appended (2.7778)\n", - "Epoch 9993: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9993: accuracy appended (86.11%)\n", - "Epoch 9993: model set back to train mode\n", - "Epoch 9993: model parameters saved\n", - "Epoch 9994 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9994: avg_loss appended (2.7778)\n", - "Epoch 9994: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9994: accuracy appended (86.11%)\n", - "Epoch 9994: model set back to train mode\n", - "Epoch 9994: model parameters saved\n", - "Epoch 9995 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9995: avg_loss appended (2.7778)\n", - "Epoch 9995: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9995: accuracy appended (86.11%)\n", - "Epoch 9995: model set back to train mode\n", - "Epoch 9995: model parameters saved\n", - "Epoch 9996 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9996: avg_loss appended (2.7778)\n", - "Epoch 9996: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9996: accuracy appended (86.11%)\n", - "Epoch 9996: model set back to train mode\n", - "Epoch 9996: model parameters saved\n", - "Epoch 9997 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9997: avg_loss appended (2.7778)\n", - "Epoch 9997: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9997: accuracy appended (86.11%)\n", - "Epoch 9997: model set back to train mode\n", - "Epoch 9997: model parameters saved\n", - "Epoch 9998 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9998: avg_loss appended (2.7778)\n", - "Epoch 9998: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9998: accuracy appended (86.11%)\n", - "Epoch 9998: model set back to train mode\n", - "Epoch 9998: model parameters saved\n", - "Epoch 9999 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 9999: avg_loss appended (2.7778)\n", - "Epoch 9999: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 9999: accuracy appended (86.11%)\n", - "Epoch 9999: model set back to train mode\n", - "Epoch 9999: model parameters saved\n", - "Epoch 10000 started.\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Epoch 10000: avg_loss appended (2.7778)\n", - "Epoch 10000: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Final test accuracy: 86.11%\n", - "Epoch 10000: accuracy appended (86.11%)\n", - "Epoch 10000: model set back to train mode\n", - "Epoch 10000: model parameters saved\n", - "Epoch 10000/10000, Loss: 2.7778, Accuracy: 86.11%\n", - "Epoch 10000: checkpoint saved\n", - "Training loop finished.\n" - ] - } - ], - "source": [ - "seed = 0 # or any integer you like\n", - "random.seed(seed)\n", - "np.random.seed(seed)\n", - "torch.manual_seed(seed)\n", - "torch.cuda.manual_seed_all(seed) # if using GPU\n", - "\n", - "# Get base vector\n", - "template = generate_fixed_group_template(group)\n", - "# Mean center template\n", - "template -= np.mean(template)\n", - "\n", - "# Generate dataset using numpy\n", - "X, Y = group_dataset(group, template)\n", - "\n", - "# Convert to PyTorch tensors\n", - "# Flatten input (num_samples, 2*p)\n", - "X_tensor = torch.tensor(X, dtype=torch.float32).view(-1, 2 * group.order()) \n", - "# Targets (num_samples, p)\n", - "Y_tensor = torch.tensor(Y, dtype=torch.float32)\n", - "\n", - "# Create a TensorDataset and DataLoader\n", - "dataset = TensorDataset(X_tensor, Y_tensor)\n", - "dataloader = DataLoader(dataset, batch_size=len(dataset), shuffle=False)\n", - "# dataloader = DataLoader(dataset, batch_size=32, shuffle=False)\n", - "\n", - "# Initialize model\n", - "hidden_size = 6 * group.order() \n", - "# TODO :Find what is a good hidden size to use.# group.order()\n", - "model = TwoLayerNet(\n", - " group=group, \n", - " hidden_size=hidden_size, \n", - " nonlinearity='square', \n", - " init_scale=1e-2, \n", - " output_scale=1e0)\n", - "\n", - "# Create loss function\n", - "loss = nn.MSELoss()\n", - "\n", - "# Construct optimizer\n", - "lr, mom = 0.01, 0.9\n", - "optimizer = optim.SGD(model.parameters(), lr=lr, momentum=mom)\n", - "# optimizer = optim.Adam(model.parameters(), lr=0.001, betas=(0.9, 0.999))\n", - "\n", - "# Train the model\n", - "epochs = 10000 #1000001\n", - "loss_history, accuracy_history, param_history = train(\n", - " model, dataloader, loss, optimizer,\n", - " epochs=epochs, verbose_interval=epochs//100, checkpoint_interval=1000)\n" - ] - }, - { - "cell_type": "markdown", - "id": "0f48aebc-a439-405a-a057-3f5c24cca91a", - "metadata": {}, - "source": [ - "## Plot Loss" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "c304706b", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Initialized U with shape torch.Size([36, 6])\n", - "Initialized V with shape torch.Size([36, 6])\n", - "Initialized W with shape torch.Size([36, 6])\n" - ] - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Load the trained model\n", - "hidden_size = 6 * group.order() # TODO :Find what is a good hidden size to use.# group.order()\n", - "model = TwoLayerNet(group=group, hidden_size=hidden_size, nonlinearity='square', init_scale=1e-2, output_scale=1e0)\n", - "model.load_state_dict(torch.load('checkpoint_dihedral3_epoch_10000_date1027.pt'))\n" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "ff46febe-abb5-459a-bb06-a18a26afb967", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[D3|[irrep_0,0]:1, D3|[irrep_1,0]:1, D3|[irrep_1,1]:2]\n", - "loss_jump: 185.185185185185\n", - "loss_jump: 46.29629629629622\n", - "loss_jump: 7.375425514502093e-61\n" - ] - }, - { - "data": { - "image/png": "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XStXrnSOeh05ckQTJ07UsWPHAlpbSyQlJWnSpEnO1009AmXRokXOOao6derkfH5fsBCcAABoppqaGs2ePVsffPCBJCkmJkYLFizw+ZEqTTl69Kiys7Od1/hcfvnlWrFihdsLpDMyMrRy5UrnNUS5ubmaOHGiTpw4EdAaW+I//uM/nMuvvPKK81qxi5WVlemXv/yl8/WDDz4Y9OfuEZwAALjIK6+8IsMwnD95eXnONtM0df/992vhwoWSpKioKM2bN0/XX399QGs6fvy4Jk6c6Kxl8ODBWrlypdLS0jzu06VLF61evVr9+vWTVHeKb+LEiTp58mRAa22ub37zmxo7dqykulNxM2bM0M6dO122KSws1I033qhDhw5Jqhtteuyxx4JeKzOHAwBavenTpzuv96nX8Jb1zz//3Hm3WUMffPCBunXr1qxjvfDCC3r11Vedr/v06aN169Zp3bp1lvb/85//3Kzj1UtMTHROZjlw4ECtXLlS6enpTe7XtWtXrVq1ShMmTNChQ4eUlJTk8+NXAvF5v/HGGxoxYoROnjypvLw8DR06VOPHj1efPn1kt9u1YsUKlZWVSfp6hC8lJcWn99EiJgAArVxmZqYpqdk/ubm5bvubO3eux+0ef/zxFh2r/scXp06dMmfOnGmePHmy2fsePXrUnDlzpmm3232qwTT9/3nX27dvnzl06FCvfaSnp5vvv/++z++hpRhxAgCglejcubPefffdFu3bs2fPFu8bLAMGDNDmzZv11ltv6c0339SePXtUUFCglJQU9e7dW9/61rd07733ej09GWiGafr4tDsAAIA2govDAQAALCI4AQAAWERwAgAAsIjgBAAAYBHBCQAAwCKCEwAAgEUEJwAAAIsITgAAABYRnAAAACwiOAEAAFhEcAIAALCI4AQAAGARwQkAAMAighMAAIBFMaEuAEBwrVmzRgsWLNCWLVt05MgRFRUVKTo6Wu3bt9cll1yifv366eqrr9bYsWM1bNgwGYYR6pIBIGwYpmmaoS4CQODt27dP9913nzZt2mR5n8GDB2v37t2N1t9zzz169dVXJUlz587VPffc468yASCsMeIEtAHbt29Xdna2zp8/71zXuXNnDR8+XF26dJFhGCosLNTu3bt16NAh1f97quH2AACCExDxqqqqNHv2bGcI6tatm/7yl7/o+uuvV1RU48sc7Xa7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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from typing import Any\n", - "\n", - "\n", - "fig, ax = plt.subplots(1, 1, figsize=(6, 6))\n", - "ax.plot(list(loss_history), lw=4)\n", - "\n", - "irreps = group.irreps()\n", - "print(irreps)\n", - "powers = group_power_spectrum(group, template)\n", - "# Get irreps sorted by descending power\n", - "sorted_indices = np.argsort(powers)[::-1]\n", - "# irreps = irreps[sorted_indices]\n", - "powers = powers[sorted_indices]\n", - "n_freqs = 7\n", - "# irreps = irreps[:n_freqs]\n", - "powers = powers[:n_freqs]\n", - "# lossvals = [np.linalg.norm(template) ** 2 /2 - np.sum(template)**2/(2*group.order())]\n", - "lossvals = [0.66]\n", - "# for irrep, power in zip[tuple](irreps, powers):\n", - "for power in powers:\n", - " loss_jump = power **2 / group.order()\n", - " print(f\"loss_jump: {loss_jump}\")\n", - " lossval = lossvals[-1] - loss_jump\n", - " lossvals.append(lossval)\n", - "\n", - "for lossval in lossvals:\n", - " ax.axhline(lossval, alpha=0.3, ls=\":\", color=\"xkcd:slate\", zorder=-4, lw=2)\n", - "\n", - "ax.set_xscale(\"log\")\n", - "ax.set_yscale(\"log\")\n", - "# ax.set_xlim(7*1e3, 1e4)\n", - "# ax.set_ylim(4*1e-1, 7*1e-1)\n", - "ax.set_xlabel('Steps', fontsize=24)\n", - "ax.set_ylabel('Train Loss', fontsize=24)\n", - "\n", - "style_axes(ax)\n", - "plt.grid(False)\n", - "plt.tight_layout()\n", - "plt.savefig(\"loss-without-lines.pdf\", bbox_inches=\"tight\")\n", - "plt.show()\n", - "\n", - "# Note: jumps are way too big. TODO: Double check theory" - ] - }, - { - "cell_type": "markdown", - "id": "40b851e7-6256-43cd-b9f3-aca38db04917", - "metadata": {}, - "source": [ - "## Power Spectrum of output" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "68b25ca9-6339-49dd-9d45-577a51798a25", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "Input x shape: torch.Size([36, 12])\n", - "x1 (x @ U.T) shape: torch.Size([36, 36])\n", - "x2 (x @ V.T) shape: torch.Size([36, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([36, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([36, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([36, 6])\n", - "powers shape (84, 3)\n" - ] - }, - { - "data": { - "image/png": "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deGFFzqXv//+e6+Omz59ut59911Jjivo3nrrLV155ZV10kYAANB4BHVwkhz1TeUyMzOr3f+Pf/yjXn/9defyq6++qvHjx9dJ2wAAQOMS9MHpyJEjzsfNmzevct+HHnpIL774onP5hRde0C233FJXTQMAAI1MUAenzMxM/fDDD87lnj17VrrvU089paefftq5/MQTT+juu++uy+YBAIBGJqCC04kTJ7ze1263684771RxcbEkKSIiotI6pb///e96+OGHncv333+/Hnnkkdo1FgAANDkBFZzeeustnX/++XrrrbeUk5NT6X6bN2/W6NGj9f777zvX3XfffWrRooXbvm+++ab++Mc/Opd///vf69lnn/VvwwEAQJMQcPeq27Bhg26++WaFhoaqR48eOvPMM9WsWTNZLBZlZmZq8+bNzlm+y1177bWaPXu227m2bNmiW2+9VeVzhMbExMgwDN15551eteUPf/iDunXrVvsXBQAAGoWACk4RERHOx2VlZdq6dau2bt1a6f5xcXF67LHH9Ic//EFWq9Vte2Zmpux2u3M5Pz9fL7/8stftue666whOAAAEkIAKTjNmzNCIESP05Zdfau3atdq2bZsOHDigrKwsSY5borRp00b9+vXTyJEjde2119b6nnIAACB4BOW96po67lUHAEDDCKjicAAAgLpEcAIAAPASwQkAAMBLBCcAAAAvBdRVdQAAeFJaWiqbzdbQzUA9sVqtCgsLq5NzE5wAAAErJydHGRkZzttrIXhERESoZcuWio+P9+t5CU4AgICUk5OjQ4cOKTY2Vi1btlRYWJgsFktDNwt1zDAMlZaWKjs7W4cOHZIkv4YnghMAICBlZGQoNjZW7du3JzAFmaioKMXFxengwYPKyMjwa3CiOBwAEHBKS0tVXFyshIQEQlOQslgsSkhIUHFxsUpLS/12XoITACDglBeC11WBMJqG8s/fnxcGEJwAAAGL3qbgVhefP8EJAADASwQnAAAALxGcAAAAvERwAgAEtc6dO8tisVT59eKLLzZ0M9FIMI8TAACSBg0apDPOOMPjtl69etVza9BYEZwAAJB0yy23aPLkyQ3dDDRyDNUBAAB4ieAEAIAXymuh0tLStHjxYg0fPlzNmzeXxWLRypUrnfudPHlSs2fPVr9+/RQXF6fo6Gj16dNHTz75pAoKCjyeu6ysTC+++KL69OmjyMhItWrVStdee622bNmi+fPny2KxuPWGPfbYY7JYLHrsscc8nnPlypWyWCwaOnSox+2HDx/WPffco549eyo6OlpxcXE6//zzNXfuXJWVlbntP3nyZFksFs2fP1+pqam66aablJycrIiICHXt2lUPP/xwlTdT/vHHH3XzzTcrJSVFkZGRat68ufr27av77rtP+/fvlyTNmzdPFotFo0aNqvQ8hw8fVlhYmKKiopSZmVnpfnWF4AQAgA+ef/55jRkzRrm5ubrssss0ZMgQWa1WSdL27dvVt29fPfHEEzp+/LguuugijRw5Uunp6XrkkUc0aNAgZWdnm85nt9t1/fXX649//KN27dqlIUOGaMSIEdq4caMGDBig9evX+/01fPvtt+rdu7deeOEFFRUV6ZJLLtGgQYO0d+9ezZw5U1dccUWltynZtGmT+vXrp++++05DhgzRxRdfrCNHjuipp57SjTfe6PGYv/71rxowYIDeeusthYeH67e//a0uuugilZaWas6cOVqxYoUkacKECWrVqpWWL1+uXbt2eTzXq6++qrKyMo0fP14tWrTwzxviCwNNzvHjxw1Jpq/jx483dLMAoNEoLCw0tm/fbhQWFla7b6dOnQxJxrx587zaz2q1GosXL3bbXlBQYHTt2tWQZDz88MNGcXGxc1t+fr4xfvx4Q5IxZcoU03Fz5841JBlJSUnG9u3bnetLS0uNGTNmOH/P33zzzabjZs+ebUgyZs+e7bG9K1asMCQZQ4YMMa0/cuSI0aJFC8NisRgvv/yyYbPZnNsyMjKM4cOHG5KMxx9/3HTczTff7GzLQw89ZJSVlTm3bdmyxYiJiTEkGatXrzYdt3jxYkOSERkZaXzwwQdu7dy2bZvpdT/00EOGJOOuu+5y27ekpMRITk42JBk//vijx9ddkS/fB94iODVBBCcAqFpNglNlX+XBo3y/qVOnejzPP//5T0OSceWVV3rcnpuba7Ru3doIDQ01Tpw44Vx/xhlnGJKMf/7znx5fR3lQ8FdwmjVrliHJuPPOOz0ed/DgQSMsLMxo1aqVYbfbnevLg9O5555rWl9u+vTphiTjiSeeMK3v16+fIcl4/vnnPT6fq0OHDhlhYWFGQkKCkZeXZ9q2cOFCQ5IxcOBAr85VF8GJoToAAOSYjuDmm292+7rssstM+1133XUej1+yZIkkady4cR63x8bG6rzzzlNZWZlz+O3QoUPas2ePJGnixIlux0RGRuqGG26o8WuqSTvbtWunbt26KT09Xbt373bbfuWVV3q8B1zPnj0lOV5TuaNHj2rTpk0KCQnRtGnTvGpf27Ztdd111yk7O1tvv/22ads//vEPSdKdd97p1bnqAtMRAAAg76cj6Ny5s8f1+/btkyTddNNNuummm6o8R3p6uiTp4MGDkqSWLVsqNjbW474pKSnVtskX5e0cPHhwtfump6ere/fupnUdO3b0uG98fLwkqaioyLnuwIEDkqQ2bdooISHB6zbeddddWrhwof7xj39o+vTpkqTNmzdr1apVSkpKqjS81geCEwAAPoiKivK43m63S5Iuu+wyJSUlVXmOTp06+b1dlbWnsvXXXXedYmJiqjyHp+LrkJC6H6z6zW9+owEDBmjdunX65ptvNGTIEGdv02233abw8PA6b0NlCE4AAPhBhw4dtHPnTk2bNs3rHpF27dpJkjIyMpSXl+ex1yktLc3jseXhITc31+P28kv8PbVz9+7dmjVrls477zyv2llT5b1TR44cUXZ2ts+9ThMnTtTcuXPVt29fvfvuuwoNDXX2QDUUapwAAPCDyy+/XJL073//2+tj2rdvry5dukiS3nvvPbftxcXF+vDDDz0eWx66duzY4XF7eS2TP9pZU8nJyerbt6/sdrvefPNNn4694YYb1KZNG33yySd66qmnlJ+fr2uuuUZt27ato9Z6h+AEAIAf3HbbberUqZM+/PBDzZo1y2NP0NGjR/X666+b1t19992SHBNa7ty507neZrPpT3/6kw4fPuzx+YYPH66QkBD973//0zfffONcbxiGXnrpJX300Ucej7vvvvuUmJiov/3tb3r++edVUlLitk9qaqreeeedal+zN2bPni1Jeuihhzy2afv27R7DX1hYmGbMmKGysjLNmTNHUsMWhZcjOAEA4AcxMTFasmSJOnfurOeee04dO3bUkCFD9Lvf/U7XXHONzjrrLLVt21aPPPKI6bjf//73uuqqq3TkyBH17dtXl112mcaPH69u3brpjTfe0IwZMzw+X4cOHTRz5kzZ7XaNGDFCw4YN07XXXqtu3brpT3/6k/785z97PK59+/ZavHixmjVrpj/96U/q0KGDRowYoYkTJ+qqq67SGWecoS5dumju3Ll+eV+uueYaPfXUUyoqKtJ1112nnj176sYbb9Rvf/tbnXXWWTrrrLO0du1aj8fefvvtioiIkCSdffbZuvjii/3SptogOAEA4CdnnXWWNm/erOeee049e/bU5s2b9eGHH2rt2rWKiYnRn/70J3388cemY0JCQrRo0SI9//zzOuOMM7Ry5UotX75cZ599ttasWaMBAwZU+nwvvPCCnn/+eXXv3l2rV6/WypUr1atXL61Zs6bK25ZcfPHF2rZtmx555BG1b99e69ev14cffqhNmzYpKSlJs2fPdusZq40HH3xQq1ev1vjx45Wbm6tFixZp1apVCgsL0/3336/hw4d7PK5169bq16+fJEfAbAwshmEYDd0I+CY9PV2tW7c2rTt+/LhatWrVQC0CgMalqKhIqampzvuiNWXz58/XlClTdPPNN2v+/PkN3Zx6tWvXLvXo0UMJCQk6dOiQoqOjfTq+Lr4P6HECAACN0qOPPirDMDRjxgyfQ1NdYToCAADQaHz66adavHixtm3bprVr1yo5OVn3339/QzfLiR4nAADQaGzcuFFvvvmmtm/frpEjR2rZsmVKTExs6GY5UePUBFHjBABVC6QaJ9QcNU4AAAANiOAEAADgJYITAACAlwhOAAAAXiI4AQAAeIngBAAA4CWCEzyz26Xdy6W9KyRmrACAgDNx4kRZLBaPX126dGno5jVazBwOzz6+TdryoePxgNul0c81bHsAAH41ePBgZWVlacmSJbJarerXr5969eqlpKQk541168P69es1e/ZsrV69WqWlperTp4/uuece3XDDDfXWBl8QnOCu8KS09aPTyxsXSJc8IYUxiRwABIr09HQtXbpUd911lx588EElJSXVextWrFihUaNGKTIyUjfeeKPi4uL00Ucfady4cfr1119177331nubqsPM4U1Qnc8cfiJVeqmfed29u6S4+v+hAoCaYObwqq1fv14DBgzQn/70J/31r39tkDaUlZWpR48eOnjwoNasWePs5crOztaAAQOUlpamXbt2qVOnTjV+jrr4PqDHCe4Mu/u6kjxJBCcAgcluN3SyoKShm+G1ZtHhCgmx1Pj4zz//XJJ06623+qtJPvv666+1d+9eTZkyxTQ0mJCQoAcffFCTJ0/WggUL9OijjzZYGz0hOMGdvcx9XXFu/bcDAOrJyYISnfvklw3dDK/9+PBItYiNqPHx5YNNn332me65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z8bH9zA8xhGoXKfDcT2v22djqfr7sKr3sAp+vaoupELBbUJCgjMoDR06VP369auToORq/vz5mjJlipKSknT++ec7v/73v//p73//u6SaDdVdd911+ugjR1d5ly5d9OKLL+rKK690e02GYWjjxo367rvvdPfdd/vjJbmps6vqPpwibVt0evni+6ThD5v3OZEqvdTPvO7Bw6YflF8GXOCYPdxLZzw/RWHrnzq9whIiXfKEdGCNYyigONcxPHHeFEcXb/k3umE4ut+zDzr+wwiPc/zghsc4fsBCwhp/ETgAoEnx+1BdeZAoKipSTk6OcnJylJubq7KyMoWF1X2dymWXXab9+/erY8eOpvVr166t8TnfffddZ2jq2bOnVq5c6RZcylksFp177rk699xza/x8DaYmM4dLp66scwQno6TELTRZIiNlFHnoapZkCTUUuust88oeV0oXznR82cuviPMQui0WR/1EYofKXhEAAH7l1z/HO3bs6JzYsri4WN9++62eeOIJDRs2TImJiRoxYoSefPJJff/99yrzcC8zf0hOTnYLTbVRUlKie++9V5KjR+3tt9+uNDQ1ea41AR67lj3VZpyeksDTzX0jz6z8KqKIuFJZsl3uT1exgDIkxHNoAgCgAfg1OKWlpWnfvn168803NWnSJHXo0MEZpAoLC7Vy5UrNnj1bF198sRITE3XppZfqmWee0Zo1axrthJeLFi3SsWPHJEmXXnpp0+xJ8pZrj5Onm/xWVpx3SlmGS42S1arIzsmVPmV4nMtztukrdRxYXUsBAGgQfh+q69y5syZPnqzJkydLklJTU52zhH/zzTfO+9EVFBToq6++0ldffSVJiomJ0aBBgzRs2DANHTpUAwYMqOwp6tU777zjfHzttdc2YEvqgds8Tp4mwKy6x8l14srQ5s0VllD5EG14vEtwumAGPUwAgEarzudxSklJUUpKiqZMccyLkZqa6rzlyjfffKNff3UM0+Tl5WnZsmVatmyZLBZLnQ3l+Wr16tXOx+W9TV9++aVef/11rVmzRkePHlV8fLy6du2qyy67TDNmzFBSUlJDNbd23GqcKrkKxFXFHieXG/xaW7RQWHTln2VExeAU01rqPdarpgIA0BDqfebw8iA1depUGYahRYsWOW+5IqlRzR6+Z88e04SdycnJmjx5shYsWGDaLyMjQxkZGVq7dq3m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H1daWpoMw1BMTIz+9a9/0eNUBX9/LvAPf38upaWlev311/X6668rMTFRKSkpCgsLU2pqqtLT0yVJZ599thYvXqyQEPooAgnBCWii8vLynI9db8pbmYr7VTxekvr27av/9//+n1auXKktW7Zo3759ys/PV3x8vC644AKNHDlSt99+u9q3b++fFxCg/P25wD/8/bl07txZTz75pNasWaMdO3Zo7969KiwsVGJiokaOHKnrr79eN998syIiIvzzAtBoEJyAJqqoqMj5uPzqnepU/CVeWFho2tasWTPdeeeduvPOO/3TwCDl78+lKp07d5ZhGN43Loj5+3NJTEzUQw895J/GoUmh/xBooiIjI52PS0pKvDqm/Koiyfu/uuEbPpfGic8F/kJwApqo8jlmJO97KSruV/F4+A+fS+PE5wJ/ITgBTVSLFi2cj48dO+bVMUePHnU+bt68ud/bBD6XxorPBf5CcAKaqDPPPNP5eP/+/V4dc+DAAefjHj16+L1N4HNprPhc4C8EJ6CJ6tmzp/Pxli1bvLqX1saNGz0eD//hc2mc+FzgLwQnoIm68MILnVf95OfnV3v/uOLiYq1Zs8a5PHz48DptX7Dic2mc+FzgLwQnoImKjY3ViBEjnMvV3Wpj0aJFys3NleSo17j44ovrsnlBi8+lceJzgb8QnIAm7I477nA+nj9/vrZt2+Zxv4KCAj366KPO5dtuu82re3WhZvhcGic+F/gDwQlowq644goNHjxYkmNo4corr9TmzZtN+2RmZmrMmDHas2ePJMdfz7Nmzar3tgYTPpfGic8F/mAxmHYWqDejR4/W4cOHTeuOHj3qvDw6JiZGZ5xxhttxS5cuVdu2bT2e8+DBgxowYICOHDkiSbJYLBoyZIi6du2q9PR0ffnllyooKJAkhYaG6osvvjANWYDPpbHic0GjZACoN506dTIk+fyVmppa5Xl37Nhh9OvXr8pztGrVyvjss8/q54U2MXwujROfCxojBm2BANCjRw+tXbtW77//vhYuXKht27bp2LFjSkxMVJcuXTR27FhNmTJFLVu2bOimBhU+l8aJzwW1wVAdAACAlygOBwAA8BLBCQAAwEsEJwAAAC8RnAAAALxEcAIAAPASwQkAAMBLBCcAAAAvEZwAAAC8RHACAADwEsEJAADASwQnAAAALxGcAAAAvERwAgAA8BLBCQCasKFDh8pischisWjlypUN3Rwg4BGcADSoiv/x+/o1efLkhm4+gCBDcAIAAPBSaEM3AADKnX/++RowYIDX+//mN7+pw9YAgDuCE4BGY/To0XrssccauhkAUCmG6gAAALxEcAIAAPASwQlAQOncubPzqru0tDRJ0s6dO3X33XerV69eio+PV3x8vM4++2w9/PDDOnr0qE/nz8jI0F/+8hcNGTJEbdq0UUREhFq2bKn+/fvrvvvu0/bt231u87Fjx/Tcc8/pkksuUceOHRUVFaWoqCh17NhRl19+uZ577jnna/HGiRMn9Oyzz+r8889Xy5YtFRUVpS5dumjatGnaunWrV+coLS3VO++8o7Fjx6pLly6KjY1VaGio4uLidMYZZ2jUqFF69NFHtW7dOp9fL9CkGQDQgIYMGWJIMiQZs2fPrvX5OnXq5Dxfamqq8dprrxkRERHOda5fzZo1MxYvXuzVuf/1r38ZCQkJlZ5LkmG1Wo27777bKCsrq/Z8NpvNePzxx43o6OgqzynJCAkJMbZt2+Z2jorv34oVK4xVq1YZ7dq1q7J9r732WpXt+uWXX4yePXtW26byr927d3v1/gGBgOJwAAFr8eLFuvvuuyVJ7dq100UXXaTY2Fjt2rVL33//vex2u06ePKnrrrtO//3vfzVq1KhKzzVnzhzdd999zuWIiAgNGTJEHTt21MmTJ7VixQqdOHFCNptNL774og4cOKD//Oc/slgsHs9ns9l0/fXX6+OPP3auCw8P18CBA9W5c2eFhYXp6NGj+vHHH3XkyBHZ7XaVlJRU+Xq3bt2qBx54QHl5eWrdurUGDx6sFi1a6NChQ/r6669VWFgom82m6dOnq0+fPh6vSszNzdXIkSP166+/SpJCQkLUv39/9ezZU7GxsSooKNChQ4f0888/KyMjo8r2AAGpoZMbgOBWlz1O4eHhRkhIiPH8888bNpvNtN+2bduMs846y7lvcnKyceLECY/n/P777w2r1erc9/LLLzeOHj1q2qeoqMi47777TD0xzz//fKXtnDVrlmnfO++808jIyPC479q1a41JkyYZW7duddtW8f2LiIgwrFar8fzzzxulpaWm/Q4cOGD07t3bue+wYcM8PteLL77o3KdXr17Gzp07Pe5nt9uNdevWGTNmzDAOHDhQ6esEAo3FMAyjfqMaAJw2dOhQffPNN5J8n8fpiSeeUPPmzU3rOnfurP379zuX//KXv2jWrFkejz969Kj69Onj7Dl55JFH9MQTT7jtN2TIEH377beSpAsvvFArVqxQeHi4x3P+4Q9/0EsvvSRJio+P18GDBxUXF2faZ9euXerZs6fsdrsk6ZlnntGf//xnb16ym4rvnyS9+uqruu222zzuu3XrVp199tkyDEMWi0WHDh1SmzZtTPtcd911+uijjyRJy5cv18iRI2vULiBgNXBwAxDkKvaY+PqVmprqdr6KPU4pKSluPS+uXnrpJef+bdu2Nex2u2n79u3bTc+5cePGKs+Xl5dntGzZ0rn/K6+84rbP9OnTndt/85vfuD2nLyq+f3369Kl2/wEDBjj3//TTT922X3LJJc7tmzZtqnG7gEDFVXUAAtaECRMUGlp1KefEiRNltVolSYcPH9Yvv/xi2r5ixQrn4379+ql///5Vni8mJkbjx4/3eHy5L774wvn4zjvvrLQOylfXX399tftUbL+nK/U6dOjgfPzKK6/4pV1AICE4AWg0Zs+eLcMwvP7q3LlzlecbOHBgtc/ZrFkznXnmmc7ln376ybS94vKFF17o1esYNGiQ8/HGjRtN244dO2YKLMOGDfPqnN7o06dPtfu0aNHC+TgnJ8dt+w033OB8/Morr2jAgAH6xz/+oT179vinkUATR3ACELA6duzo837p6emmbRWXO3Xq5NX5KgY61yvPjh075nwcERGhtm3benVObyQkJFS7T1hYmPNxaWmp2/ZRo0Zp5syZzuX169frzjvvVLdu3ZScnKzrrrtOc+fO1cGDB/3TaKCJITgBCFjR0dFe7RcTE+N8nJuba9qWl5fncb+anq/icmxsrFfn85a/hvxeeuklLVq0yK1Q/9ixY/roo480c+ZMdezYUdddd50OHDjgl+cEmgqCE4CAVVBQ4NV++fn5zseuV8BVDDcV96vp+SouVwxljc0111yjtWvXav/+/VqwYIFuv/129erVy7ndMAx99NFHOuecc7Rr164GbClQvwhOAAKWt70h5ZM9SlLLli1N21q1auXz+SrWMLmeLykpyfm4uLhYR44c8eqcDaVjx46aNGmSXnnlFW3btk0HDhzQ448/7uzNy8zM1D333NPArQTqD8EJQMBas2ZNtftkZWVp586dzuVzzjnHtL3iVWirV6/26nkr7ud6vqSkJFMN1Ndff+3VORuLDh066NFHH9Vrr73mXLds2TIVFxc3YKuA+kNwAhCwFi5cKJvNVuU+7777rnOfNm3amK6wk6Thw4c7H//000/avHlzlecrKCjQ+++/7/H4cpdffrnz8T/+8Q8ZTXAe4quvvtr5uLS0VCdOnGjA1gD1h+AEIGDt3btXL7zwQqXbjx07ZpopfNq0aW4F1j169NDFF1/sXL7zzjs9Xo1W7uGHH9bx48clOWYOnzBhgts+d999t0JCHL9+f/jhBz377LPevaB64O395yoOb4aEhJimOQACGcEJQMAKDw/XrFmz9Pe//915e5NyO3bs0CWXXOIMOUlJSfrjH//o8TzPPPOMc5LM7777Ttdee63zuHIlJSV64IEHTEFt9uzZHq+c6969u+69917n8gMPPKCZM2dW2muzbt06TZ48Wdu2bfPiVdfOwIEDNWHCBH3++eeV3lR4165duvnmm53LI0aMqPQWNECgqXpKXQCoR0uXLvW6x0NyTDfw3HPPVbr9ueee09133627775bc+bM0UUXXaTY2Fjt2rVLq1atcoap0NBQvfnmm273vSt34YUX6i9/+Yvuu+8+SdJ///tfdezYUcOGDVOHDh108uRJrVixQpmZmc5jrrnmmkqDmCQ9/fTT2rlzp/773/9KkubOnavXXntNAwcOVEpKikJDQ3X06FH9+OOPzgLyu+++2+v3pqZKS0u1cOFCLVy4UFFRUTr77LPVpUsXxcfH6+TJk9q3b582bNjg3D8qKkpz5syp83YBjUaD3OgFAE6pzb3qEhIS3M5X8V51qampxj//+U8jPDy80nMkJiYaixYt8qqtb7zxhhEfH19lm6xWq/GHP/zBKCsrq/Z8NpvNePDBB42IiIhqX6vVajV27NhR5fu3YsWKap9z9uzZzv1nz57ttr13795ev/8pKSnG999/781bBwQMepwABLTp06dr8ODBeuWVV/Tll186Z7zu3LmzrrrqKs2cOVNt2rTx6lzTpk3Tb3/7W73++uv6/PPPtWvXLp04cUJxcXHq0KGDRo4cqalTp5rmO6pKSEiInnrqKU2fPl3z58/X8uXLtWfPHmVkZCg0NFStW7fWWWedpREjRmjcuHFq165djd8Hb23atElr1qzRihUrtG7dOv3yyy86fPiwCgoKFB0dreTkZPXr109XX321brjhBkVERNR5m4DGxGIYTfByDgCoROfOnbV//35JUmpqarX3swMAX1AcDgAA4CWCEwAAgJcITgAAAF4iOAEAAHiJ4AQAAOAlghMAAICXmI4AAADAS/Q4AQAAeIngBAAA4CWCEwAAgJcITgAAAF4iOAEAAHiJ4AQAAOAlghMAAICXCE4AAABe+v/sDjonV+Ue9AAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# === SETTINGS ===\n", - "group_order = Y_tensor.shape[1]\n", - "\n", - "# Compute template power spectrum\n", - "powers = group_power_spectrum(group, template)\n", - "irreps = np.array(group.irreps())\n", - "\n", - "# === Compute power spectrum of template ===\n", - "\n", - "sorted_idx = np.argsort(-powers)\n", - "irreps, powers = irreps[sorted_idx], powers[sorted_idx]\n", - "\n", - "# === Theory lines === \n", - "\n", - "# Compute output power over time (GD)\n", - "num_points = 100 # was 1000\n", - "steps = np.unique(np.logspace(0, np.log10(len(param_history) - 1), num_points, dtype=int))\n", - "powers_over_time = []\n", - "\n", - "for step in steps:\n", - " model.load_state_dict(param_history[step])\n", - " model.eval()\n", - " with torch.no_grad():\n", - " outputs = model(X_tensor)\n", - " outputs_powers = []\n", - " for output in outputs:\n", - " output_powers = group_power_spectrum(group, output.detach().cpu().numpy())\n", - " outputs_powers.append(output_powers)\n", - " outputs_powers = np.array(outputs_powers)\n", - " avg_power = np.mean(outputs_powers, axis=0)\n", - " powers_over_time.append(avg_power)\n", - "\n", - "powers_over_time = np.array(powers_over_time) # shape: (steps, freqs)\n", - "print('powers shape ', powers_over_time.shape)\n", - "num_freqs = powers_over_time.shape[1]\n", - "\n", - "# Color settings\n", - "cmap = plt.colormaps.get_cmap('tab20').resampled(num_freqs)\n", - "manual_colors = {\n", - " 0: 'tab:blue',\n", - " 1: 'tab:orange',\n", - " 2: 'tab:red',\n", - " 3: 'tab:green',\n", - " 4: 'tab:brown',\n", - " 5: 'tab:purple',\n", - "}\n", - "colors = [manual_colors.get(i, cmap(i)) for i in range(num_freqs)]\n", - "\n", - "# === PLOTTING ===\n", - "fig, ax = plt.subplots(figsize=(6, 7))\n", - "\n", - "for k in range(num_freqs):\n", - " color = colors[k]\n", - " label = fr\"$\\xi = {k}$\"\n", - " ax.plot(steps, powers_over_time[:, k], color=color, lw=3, label=label)\n", - " ax.axhline(powers[k], color=color, linestyle='dotted', linewidth=2, alpha=0.5, zorder=-10)\n", - "\n", - "# Labeling and formatting\n", - "ax.set_xscale('log')\n", - "ax.set_xlim(5e1, 2e6)\n", - "ax.set_xticks([1000, 10000, 100000, epochs-1])\n", - "ax.set_ylabel(\"Power\", fontsize=24)\n", - "ax.set_xlabel(\"Epochs\", fontsize=24)\n", - "ax.legend(fontsize=14, title=\"Frequency\", title_fontsize=16, loc='upper right', bbox_to_anchor=(1, 0.9), labelspacing=0.25)\n", - "\n", - "style_axes(ax)\n", - "ax.set_xticks([1000, 10000, 100000, epochs-1])\n", - "ax.grid(False)\n", - "plt.tight_layout()\n", - "plt.savefig(\"fourier_power_only.pdf\", bbox_inches=\"tight\")\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "5ef2c971-d9f1-41e6-b8eb-4e467496ccfd", - "metadata": {}, - "source": [ - "## Plot outputs" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "e333d1ab-1501-434f-86d2-82c10bb58f11", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Input x shape: torch.Size([1, 12])\n", - "x1 (x @ U.T) shape: torch.Size([1, 36])\n", - "x2 (x @ V.T) shape: torch.Size([1, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([1, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([1, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([1, 6])\n", - "Input x shape: torch.Size([1, 12])\n", - "x1 (x @ U.T) shape: torch.Size([1, 36])\n", - "x2 (x @ V.T) shape: torch.Size([1, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([1, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([1, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([1, 6])\n", - "Input x shape: torch.Size([1, 12])\n", - "x1 (x @ U.T) shape: torch.Size([1, 36])\n", - "x2 (x @ V.T) shape: torch.Size([1, 36])\n", - "x_combined (x1 + x2) shape: torch.Size([1, 36])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([1, 6])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([1, 6])\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "\n", - "# Choose time steps to visualize\n", - "#steps_to_show = [1000, 10000, 100000, epochs-1]\n", - "steps_to_show = [100, 1000, epochs-1]\n", - "num_samples = 1 # how many examples to plot per row\n", - "p = Y_tensor.shape[1]\n", - "x = np.arange(p)\n", - "\n", - "fig, axes = plt.subplots(len(steps_to_show), 1, figsize=(6, 6), sharex=True)\n", - "\n", - "for row, step in enumerate(steps_to_show):\n", - " # Load weights at this step\n", - " model.load_state_dict(param_history[step])\n", - " model.eval()\n", - "\n", - " indices = np.random.choice(len(Y_tensor), size=num_samples, replace=False)\n", - " with torch.no_grad():\n", - " preds = model(X_tensor[indices]).detach().cpu().numpy()\n", - " truths = Y_tensor[indices].detach().cpu().numpy()\n", - "\n", - " ax = axes[row]\n", - " for i, idx in enumerate(indices):\n", - " a = idx // p\n", - " b = idx % p\n", - " label_true = r\"$(a b) \\cdot x$\"\n", - " label_pred = r\"$f(a \\cdot x, b \\cdot x)$\"\n", - "\n", - " # Plot ground truth\n", - " interpolate(ax, truths[i], color=f\"C{i}\", alpha=0.9, continuous=True)\n", - " ax.scatter(x, truths[i], color=f\"C{i}\", s=30, alpha=0.9, label=label_true)\n", - "\n", - " # Plot prediction\n", - " interpolate(ax, preds[i], color='k', alpha=1.0, continuous=True)\n", - " ax.scatter(x, preds[i], color='k', s=30, alpha=0.7, label=label_pred)\n", - "\n", - " style_axes(ax, numyticks=3, labelsize=12)\n", - " ax.grid(False)\n", - " ax.set_ylabel(fr\"$t = 10^{{{int(np.log10(step))}}}$\", fontsize=20)\n", - "\n", - " # Only bottom row gets x-ticks\n", - " if row < len(steps_to_show) - 1:\n", - " ax.tick_params(labelbottom=False)\n", - "\n", - " # ax.legend(loc='best', fontsize=12, title=fr\"$a = {a}, b = {b}$\", handlelength=0, labelspacing=0.1, title_fontsize=14, frameon=False)\n", - " ax.legend(\n", - " loc='center left',\n", - " bbox_to_anchor=(0.95, 0.5), # X slightly beyond the right edge, Y centered\n", - " fontsize=8,\n", - " title=fr\"$a = {a}, b = {b}$\",\n", - " title_fontsize=10,\n", - " handlelength=0,\n", - " labelspacing=0.1,\n", - " frameon=False\n", - " )\n", - "\n", - "# axes[-1].set_xlabel(\"Output Index\", fontsize=20)\n", - "plt.tight_layout()\n", - "plt.savefig(\"predictions.pdf\", bbox_inches='tight')" - ] - }, - { - "cell_type": "markdown", - "id": "b267424b-a0e5-47e3-9e01-1dc41e05e026", - "metadata": {}, - "source": [ - "## Plot Weights" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "9de707bf-838e-4384-8150-3d8fe4586fc3", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/tmp/ipykernel_1581248/3566065924.py:96: UserWarning: There are no gridspecs with layoutgrids. Possibly did not call parent GridSpec with the \"figure\" keyword\n", - " plt.savefig(\"W-weights.pdf\", bbox_inches='tight')\n", - "/tmp/ipykernel_1581248/3566065924.py:96: UserWarning: There are no gridspecs with layoutgrids. Possibly did not call parent GridSpec with the \"figure\" keyword\n", - " plt.savefig(\"W-weights.pdf\", bbox_inches='tight')\n", - "/home/adele/anaconda3/envs/gagf/lib/python3.12/site-packages/IPython/core/pylabtools.py:170: UserWarning: There are no gridspecs with layoutgrids. Possibly did not call parent GridSpec with the \"figure\" keyword\n", - " fig.canvas.print_figure(bytes_io, **kw)\n" - ] - }, - { - "data": { - "image/png": "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rQZDywsgqJ6T+SqK9jBgx3eauOnyVLmXZGg9WBM3212shc0IBGcZ69ato3///syaNYuHH34YAJvNRrdu3YiNjWXVqlU19p05cyaPPvoo69ato29fzYttz549dOvWjUceeYQXX3wRAKvVSosWLbjgggv45ZfycMabbrqJH374gdTUVCIjI+t0v+r1WuAs40QhsTqEoCjwG5cDPr2yPGf4yUgeCDf/KMREQa1xHD/OwdFjwOk8dWODgba//4axuShi1hgcOHCA9u3bs337drp161Ztm//85z9MmzatUno0SZJITEzEbrfTpk0bJk2axG233earUOx0Orn88stZtGgRISEhfPPNN75oytqwY8cObrvtNlJSUnjwwQd54IEH6jVisri4mCeffJLvv/+erKwsevXqxeuvv+67flJVlaeffpoPPviAvLw8LrzwQt59913at2/vG2P16tXcfffdFBQU8OSTTzJx4sR6sxcgIyODxx9/nP/973+MHz+e11577aTeiDXhdrv5+uuvueWWW9i8eXOlis9Lly5l2LBh5OfnVxm7VatW2Gw2nE4nLVu25J///CcPPPBAJcF54sSJfPzxxxiNRj744ANuvPHGQHf3tBBi4lmCuIEQCM5AnFYtt9KmTyBnf/lySYLYLtqNRqsLIfH807/ZsBVBxnbN8zB9i+YlaSsqX9+sLXS9GrpcCSGxNQ4jEJwNPPLII8yePZu8vDzCwso9gl966SUef/xxUlJSaNGiRbV9+/XrB2iCZEVGjRrFwYMHOXDgAAALFixg7Nix/Prrr5WeZq9evZqBAwfy6aefctNNN9XpfolrgdpRGyHRixAUBX7zTLgfbQtP3UYg8KCUlrK3d59at++4cYPwTGwEFEXhiiuuoKCggBUrVlTbJicnh969e3PTTTfxwgsv+JZPnz6d4cOHExQUxMKFC3n66aeZOXMm999/f6X+WVlZREREBCQEKorCN998w7Rp03C73TzxxBNMnDixUnHaumL8+PHs2LGDuXPnkpiYyGeffcacOXPYtWsXzZs35+WXX+all17iww8/5NixY/z111/s3LmTXbt2YTZr0SldunRh+vTpJCQkMGHCBJYsWVLjNdrpUFRUxLPPPsv777/PgAEDePnll325HP1h+/btDBgwAJvNRkhICF988UUVr8aTiYmzZ8/m/PPPJyoqilWrVjFt2jRfwZeK5ObmEhQUVGMNj4bgnAtzFggEgiaDwQI9rofu12khz4eWwtEVkL1Pq2SbuRPWfaCFesZ2gZA4CI3XxL6QeO19SKyWU85erE2OkvJ5e5GWAzF9K+Qe0PKfVsQUqlVm73o1xPcQocyCc4bNmzfToUOHSkIilAuFW7ZsqfZCVVEUtm3bxu23315lXb9+/Vi4cCHFxcWEhoayebOWMqBPn8o3fr1790aWZTZv3hyQmHiyBOqNmVxdIBAIBPWLWhuPxNNoL6gbJk+ezI4dO2oUEouKihg7dixdunThmWeeqbTuySef9M336tWL0tJSZs2aVUVMPPHBoT/Issz111/P1VdfzYcffsi///1vXn/9daZPn87VV18d8LgnYrVa+fbbb/nxxx8ZMmQIAM888ww///wzc+fOZfr06bz22mv8+9//5oorrmDBggV89NFHJCUl8cMPP3DDDTcA2rXN+eefT2xsLJGRkRQXF9eZjaDl0J41axavv/46rVq14qeffmLYsGEBj9exY0e2bNlCYWEh33zzDbfccgt///13Jc/Ek/Hggw/65nv06IHRaOSuu+7ipZdeqlQsuGJancZCiIkCgUDQ2EgStOyvTTwKJVlaiNTRVXB0JZTmwPFNp7+d8CQtVUFCT+01ppNWcV0gOMdIT08nISGhynLvsrS0tGr75eXlYbfbT9m3Y8eOpKeno9PpqlzwG41GmjVrVuM2ToXIcXR6PPT5er/bi6Isglrz/YOnbnNi+6tnn7qdQAAcnfGy3+3bzHipnqwRVMe9997LL7/8wrJly0hKSqqyvri4mNGjRxMaGsr333+PwXDy6/D+/fszffp07HZ7JSGpLjAYDEyaNImbb76Z119/nVtvvZXnn3+eyZMnM2HChNOunuxyuXC73T4PQy8Wi4UVK1Zw+PBhMjIyKhWECQ8Pp3///qxevdonJj711FN07twZl8vF3XffXWtR7lTk5uYyZ84c5s2bR1BQEO+++y7XXHONL6Q8UIxGI+3atQO0B8jr16/n9ddf57333gtovP79++NyuThy5Mgpa3w0NEJMFAgEgqZGSCx0vUqbVBVy9kHeISjJhOJMKMnQBMfiDG2Z4gJjiOZpaAoBU5g2bwyB0DhI7AXx50GICHUUCEB7Wl7dRbn3gkwbzpsAAQAASURBVLemZNbe5bXpa7Vaaww/MpvNjZow+1zmz31Z9dpecI6z76cA2gsxUVA77Cek16jr9oLAUVWV++67j++//56lS5fSunXrKm2KiooYNWoUJpOJn376qYrIVh1btmwhMjKyzoXEigQHB/P4448zadIk3n//fZ566imeeuopbrrpJu677z6aB5h3MzQ0lAEDBjB9+nQ6d+5MXFwc//vf/1i9ejXt2rUjIyMDgLi4uEr94uLifOtAyw94ww034HA46iTX9Lp163jjjTf44Ycf6Nq1K6+88grjxo07bfG0JhRFwW63B9x/y5YtyLJ8Wt6o9YUQEwUCgaApI0kQ01GbqkNVtUkUShEIao3FYqn2ws5ms/nW19QPqFVfi8WCw+GodhybzRZwjpuSkpIa12VnZ1d7AyMoZ2SHWL7dXnuBcGSHpnfxLmjCdLgCtn7oX3uBoJaEXjaW4vc/8Ku9oGGYPHkyX3zxBT/++COhoaE+MSw8PByLxUJRURGXXHIJZWVlfPbZZxQVFVFUpOUuj4mJQafT8fPPP5OZmckFF1yA2Wzmzz//5MUXX/QViqtvoqKieOyxx3j44Yf5/vvvefPNN5k9ezbDhg3j//7v/7jyyiv9ztH46aefcvvtt9O8eXN0Oh3nn38+//jHP9i4caNf4wQHBxN8Gvk/8/LymDdvHh9//DF79+7l2muvZfHixb70NnXFtGnTGDNmDC1btqS4uJgvvviCpUuX8scffwBacZeMjAxffu3t27cTGhpKy5YtiYqKYvXq1axdu5Zhw4YRGhrK6tWreeCBB7jpppvqvGhfXSDuPgUCgeBMRpKEkCgQ+ElCQgLp6elVlnuXJSYmVtsvKioKk8lUq74JCQm43W6ysioLVw6Hg9zc3Bq3cSq8F9Q1TYKT42/IsghxFviFvyHLIsRZ4AdJD/oXRu9ve0HgzJ07l8LCQoYOHUpCQoJv+uqrrwDYtGkTa9euZfv27bRr165Sm9TUVEALO3777bcZMGAAPXv25L333mP27Nk8/fTTDbover2e6667jmXLlrFjxw569OjBPffcQ2xsLJdddhnvvfceubm5tRqrbdu2/P3335SUlJCamsq6detwOp20adOG+Ph4ADIzMyv1yczM9K07Hfbu3cuzzz7LgAEDiI+P58MPP2TixImkpaXx+eef17mQCFphnAkTJtCxY0dGjBjB+vXr+eOPPxg5ciQA7777Lr169eKOO+4AYMiQIfTq1YufftK82k0mE19++SUXXXQRXbt25YUXXuCBBx7g/fffr3Nb6wLhmSgQCAQCgeCcomfPnixZsoSioqJKRVjWrl3rW18dsizTvXt3NmzYUGXd2rVradOmDaGhoZXG2LBhQ6Uqfhs2bEBRlBq3IRAIBAKB4MxCPbHI4QkMHTr0lG1Gjx7N6NGj69Ks06ZDhw7MmjWLGTNmsHbtWn766Sdee+017r33Xnr37s2oUaMYN24cXbt2PWk1aO8Dz/z8fP744w9mzpxJ69atiY+PZ9GiRXTt2hXQQsHXrl3L3Xff7betdrud5cuX891337Fo0SIOHTrEwIEDuf766/n00099eQzrkw8/PLln+jPPPFOl6E5Fzj//fNasWVPHVtUfknqqs1pwRlCdgr9r1y6io6MbySKBQCAQCJomGzduZMyYMcyaNcsXPmS32+nWrRvNmjXzXcilpKRQVlZGp06dfH1ffvllHnvsMdavX++r1Lx37166du3Kww8/zIwZMwAtZ2JSUhIDBw7k559/9vW/+eab+e6770hNTSUqKqpO90tcC9Se86f/eco2m54c2QCWCM5KZrY5dZtHDtW/HYKzkn0DBp6yTYfVqxrAkjOfZs2anVQEE1TPoUOH+Pnnn/n+++9ZuXIlwcHBdOrUiW7dutG3b18GDRpEly5d+PPPP1FVlY4dO3LgwAGmTp2K2Wxm+fLlGAwGXn75ZWbMmMGHH35IamoqixYtYseOHezateukOSXtdjvr1q1j9erVbNy4kV27drFv3z7MZjOjR4/myiuvZMyYMU0yNPhsQoiJZwm7d++us8pGAoFAIBCc7VxxxRUsWLCABx54gHbt2vHxxx+zbt06Fi1axJAhQwDNk+Dvv/+u5E1QXFxMr169KC4u5uGHH8ZgMDB79mzcbjdbtmwhJqa80NE777zD5MmTGTduHKNGjWL58uV88sknvPDCCzz++ON1vk/iWkAgEAgEgtqTlZVV6f+2wH9sNhvbt29n48aNbNiwgfXr17Nr1y6CgoJo1qwZGRkZ2O12LBYL559/PnfeeSedO3cmMTERg8HArFmzmDdvHvn5+QwYMICZM2cSHx9PamoqqampHDt2jLS0NDIyMsjKyiI9PZ2DBw9iNBrp2bMnffv2pU+fPvTu3Zv27dsLcbgBEWLiWYK4gRAIBAKBoPakpKTwxhtv8Nlnn5Gfn0+PHj2YPn06o0aN8rWpTkwEOHbsGA888AALFy5EURSGDh3KnDlzqg2h+eCDD3j11Vc5fPgwLVq04N577+Vf//oXkiTV+T6JawGBQCAQCGqPEBPrB6/AuGvXLtLT00lLS+P48eOkpaWRnp5OZmamr3BdTYSHhxMXF0dCQgKJiYk0b97c99qzZ0/atWsnhMNGRoiJZwniBkIgEAgEgtpzNt5AiGsBgUAgEAhqz9l4LXAmoKoqZWVluFwuXC4XTqcTWZbR6/Xo9XpMJhMmk6mxzRScAlGARSAQCAQCgUAgEAgEAoFAUO9IkkRwcHBjmyE4TYRn4lmCy+Vi//79lZZFRUWdtutvaWkprVu3BuDw4cPiS9/EEJ9P00V8Nk0b8fk0bRri8zkbk67X17VAbThTv1PC7objTLQZhN0NyZloMwi7G5K6tvlsvBYQCBoKISYKTkppaSkhISEAlJSUnBH/ZM4lxOfTdBGfTdNGfD5NG/H5nHmcqZ+ZsLvhOBNtBmF3Q3Im2gzC7obkTLRZIDhbETK8QCAQCAQCgUAgEAgEAoFAIKgVQkwUCAQCgUAgEAgEAoFAIBAIBLVCiIkCgUAgEAgEAoFAIBAIBAKBoFYIMVEgEAgEAoFAIBAIBAKBQCAQ1AohJgoEAoFAIBAIBAKBQCAQCASCWiHERIFAIBAIBAKBQCAQCAQCgUBQKyRVVdXGNkIgEAgEAoFAIBAIBAKBQCAQNH30jW2AoG5QFIXc3NxKy5o1a4YsC+dTgUAgEAjOBcS1gEAgEAgEAoGgIRBi4llCbm4usbGxlZZlZWURExPTSBYJBAKBQCBoSMS1gEAgEAgEAoGgIRCPqgUCgUAgEAgEAoFAIBAIBAHx0ksv0bdvX0JDQ4mNjeWqq65i7969ABQXF7N48WIkSap2GjNmDPfddx8PPvggkyZNon379hiNRsLDw7nxxhs5ePAgdrvdt61nn32WpKQkLrzwQvbt29dYu3zOI3ImniVkZ2cLbwSBQCAQCM5hxLWAQCAQCASCxmD06NGMGTMGo9HIjh07+PXXXykqKsLhcFBaWorRaCQ6Oto3RUZGYjAYMBgMyLJMYWEhQUFBuN1urFYreXl5ZGdnk5WVRWFhIYqiEBkZSXR0NCUlJdx4440oisLmzZtZvHhxY+/+OYkIcxYIBAKBQCAQCASC+sDlAGcZGIJAb2xsawQCgaBOcLvdrFu3jr/++ot169axbds2Fi5cSMuWLencuTP/+Mc/6NWrF8nJySQnJxMbG1tjDmen08mCBQu49NJLMRgMVda7XC5SU1NJSUnh4MGDbNiwgTVr1rB7927y8vLo2LEjffr04YILLuDSSy+lbdu29b37AkSYs0AgEAgEAoFAIBDULVl74O9Z8OmV8Nk12uvfsyB7b2NbJhAI6oFly5Zx+eWXk5iYiCRJ/PDDD5XWP/PMM3Tq1Ing4GAiIyO5+OKLWbt2baU2rVq1qhICPGPGjEptPvjgA5KTk+nVq1eV/vVNaWkpP/zwA7fffjvx8fGMHj2aFStW0L17d+bOnUt2djZHjhzht99+46WXXuL666+nf//+xMfHn1YxOL1eT+vWrbnooou4/fbbeeedd1i+fDk5OTns37+fJ554gsjISD7//HM6depEp06dePTRR1m1ahVut7sOj8DpMWPGDCRJYsqUKb5lQ4cOrfKZT5o0qVK/n376iQ4dOtCxY0d++eWXBra6ZoRnokAgEAgEAoFAIBDUFfsWwrKZYM0HUyjoTOC0wrYvYf8fcNGj0H5kY1spEAjqkNLSUs477zxuv/12rrnmmirrO3TowFtvvUWbNm2wWq3MmTOHSy65hAMHDlRKR/Lcc89xxx13+N6Hhob65lNSUpg5cyZffvklx48f57bbbmPXrl31ul8FBQXMnz+f77//nsWLFxMfH8+wYcP48MMPGT16NEZj43pct23blrZt2zJhwgRAK0b37bff8vPPP/Pee++h1+sZO3Ys1113HaNHj0avbxwJbP369bz33nv06NGjyro77riD5557zvc+KCjIN2+325k8eTIfffQRqqpy++23c8kllzT6cQchJgoEAoFAIBAIBAJB3ZC1RxMSHWUQ1RYkqXxdcCwUHoO/X4aIlhDTsfHsFAgEdcqYMWMYM2ZMjev/+f/snXecFdX5/99n5tbtHXapS0eRKoJdVDRgiTWxxF6+tthrYknys6PGhtEYsRtj16ixAiq9SJXeBIEtsGy9dWbO748z9+5dtrC77LKA834x3HunnDkzd2b2zmee5/mcd16dz0888QQvvfQSixcv5rjjjouPT01NpXPnzg22UVlZSUZGBoMHD6Zz584Eg8G26fxOSCmZMWMGL7zwAu+++y69e/fmpJNO4oEHHmD48OHtss62Ijs7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yZ133sl7772HruvccsstXHDBBZjNzZ/pLsVEiUQikUgkEolEImkIcnYJIdFVAXFdQFFOzAtPguIjsOJZiOkgMxQlkjOICy+8kAsvvLDW+dddd12V5y+88ALvvPMOW7du5fzzzw9Mj4yMJDk5ucZ1lJSUEBMTQ//+/UlOTsZutzdM8LWg6zobN27k3XffZdGiRZSUlDBy5EhuueUWrr76alJSUhp1+/VBVVW6detGt27duOWWWwDIyMjg008/5d133+WPf/wjvXr14qqrruLmm2+mXbt2TR5jWVkZ119/fSCr9GTCwsJqfc+dTicGg4EBAwYAYDQacTqdLUJMlAYsEolEIpFIJBKJRNIQ7PxaZCRGt6sqJIJ4Ht1OzN/5TfPEJ5FImh2Xy8Vbb71FdHQ055xzTpV5zzzzDPHx8QwcOJB58+bh8XgC8/r27Uv//v2Jjo6mT58+NQpTDUFJSQmvvfYa55xzDuPGjSM3N5eXX36ZvLw8vvvuO/74xz+2CCGxNgYMGMDTTz/Nxo0bOXz4ML/73e9YsmQJnTt3ZurUqXz11Vd4vd4mi+fOO+/koosuYuLEiTXO//jjj0lISKBv377Mnj2bioqKwLyoqChuvvlmUlJSSE1N5Y477mgxJdwyM1EikUgkkoZG10HziJvXDboXVBMYrWCQf70SiURyRuJxiR6JlsjqQqIfRRHz938PI++WpiwSyVnEN998w7XXXktFRQUpKSksXbqUhISEwPx77rmHQYMGERcXx9q1a5k9ezbZ2dm88MILgWXeeecd5s6dS1hYGDabrUHj27t3L6+88grvvfceHTt25KabbuK2224jJiamQbfTlCQnJ3PPPfdwzz33BPbvtttuw2KxcM899zBz5sxG3b8FCxbw888/s2HDhhrnX3fddaSlpZGamsrWrVt56KGH2L17N59//nlgmccee4x7770XVVVbjJAIUkyUSCQSieT00TTh1qm5wesTEavhAGcpqEYwWX3Coq/JtMclBEfFIE8sJRKJpLXirhBmKwYLlB0Xv+2VMZohoo2Y73d5lr/5EslZw/jx48nIyCAvL4+3336bq6++mvT0dJKSkgC47777Asv2798fs9nM73//e+bMmYPFYgnMi4+Pb9C4du7cySOPPMJ///tfJk6cyJdffllrFl1rplu3bvzjH//g+eef57333uONN97g0Ucf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yWR4xzvewUc+8hF27doVB7LNpP/1v/4XSik++MEP8vGPf3yhh5woUaIjQdluWHSCcSCqwLSmaF+ZOBITJUo0Z2mtufzyy7Esi69//evIA1wvrVmzBpi5h6LneTzyyCOUSiXOP/98WlpaFmzsL0UJITjuuONobW3lscceY2xsjOOPP37KteFcQGKkrq4ubrvtNs4991xOOeUU3vGOdyzgEhxazTtM/NGPfkRfXx8nn3wyF110EQCFQoFPf/rT3HXXXTiOwxve8AauueYa0unkoifRESy3aKBh5GJL5WspzZkO404UVgISm5GdNs7O8rCBcKVBUwYtZ78rpn3fgEPXNY8DQENhSQMptQatDXCMJtGgAwWBQrvelOmEbSMcB5FKIerTvQLP7BeBO9VVKS2TrmulIT1q4KadMWXdTta4WqEGfoQwrzvZBAIdClULxj0KIcB+GdyFtWxTMueWDMBu6T3cI3rZ6fHHH+e4446jra1twvNnnnkmAE888cSsMHHnzp38/d//PV/72tfIZrMHPZ5isdjUa4kSJTpMEhKspBgsUaJEjeszn/kM999/Pw899BCZzNyCAmcCioVCgQceeICWlhbOP//8g04vbkSe5zEyMsLY2BiVSiV+VKtVgiBAhZVbES9Kp9NkMhkymQy5XI729nba2toOCFPnS0uXLuW8887jwQcfZGxsjNNOOw3bNuisEZAY6eSTT+bmm2/mbW97GyeeeCJnn332Ao7+0GneYKLv+1x22WX85Cc/QWuNEIIrr7ySf/qnf+LSSy/l3nvvjd977733cvvtt3PHHXccsh0iUaI5K/DMRXnkNLNSJunVqjvhJgDx4GWnTDBLeaiW9JydGmKjlUKVyuhK2cC/egkM8HNSCNsyTsPwIWY5txioqI2LMQhiSEkQoAMVPlyoukARIQXCsRG6ihA+IoJQQprlsNIGBtbDKcs2pfGBB7lO42DNtEHgg1cy7kUVmBJor2ymdbKmB+dL3S13JMqvTkxufjkdw6lWA0mVb26CvNTCZI5w9ff3s3Tp0inPR88dqAzmAx/4ABs2bOCtb33rvIwncREkSpQoUaJEL3899thjfOpTn+L2229nxYoVDU07GSjats19993HihUrOOmkk+ZWhXUQqlQq7N27l/379zMyMkKxWCSbzdLe3k42m6WlpYWenh4ymQyWZREEAQ888ACv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Zs+eXeu6Vq1ahZycHPfX1KlT3Zft3bsX//3vf7Fp0ybcfvvtmDt3boNxxcXFYffu3XjyySdx++234/bbb6+VwCT1O3bsGJKSkvD555/jhx9+wDvvvAOdTlfv/h07dsRLL72EgwcP4sCBAxg3bhymTJmC3377DQBQVVWFG264AU8//XSDt7tkyZIaj4F58+a5L8vKysIrr7yCtWvX4plnnsE999zTND+sD+jjflI/uZL1SKwsYAk+bRBbasbxrHpQpQeU9f8xeUSS2AmVo+rilFilFlDqrzwRlhBCyNWrFSQRXWbNmoUNGzZg/vz56NatG1avXo2bbroJP//8M0aOHFnvcRUVFRg7dizKysrw9NNPQ6FQ4I033sDo0aORlpaGkJCQZvwpyOU6P/XfGt//51g+/lO97dxLE1siJHI16DkJOLYOsBbXvsxRCZzfC4R2B3re3PyxkTZNstvhzM+vc/BKDYIAZ34+JLudEorN5Keffqrx/erVqxEWFoaDBw9i1KhR6NOnD/7zn/+4L4+Li8OLL76IO++8E06ns8YAD6PRiIiIiDpvp6SkBFFRUejbty+cTidWr159xdh4nsejjz6KiRMn4u6770bv3r2xdOlS3HXXXeDp/XadKisrsWTJErzzzju455578PLLLyMg4MrzGyZNmlTj+xdffBErVqzAvn370Lt3b8yfPx8A6w3ZEL1eX+9jwGw2w2g0om/fvoiIiIDFYvHoZ/IHevSQhqkNQGAnICgGCO4CBMWyakFJYsNZqoov9n/xlqO6B6O9kl2fXFU94CWQEomEEEJahdTUVKxduxbLly/Hq6++igceeAA7duxATEwMnnzyyQaPff/993Hq1Cls3rwZTz75JBYsWID//e9/yMnJwb/+9a9m+glIXS5PJHp7OSENKqx76aHHlxNSB9Fqhf3cOY/2tZ89C9Fq9W9ApF6u6r/g4OAG9zEYDLUmAc+ZMwehoaEYPHgwPv30U0jSxTYJ119/PaxWK7RaLW644QYsX77c45i6du2KX375BU8//TQef/xxDBgwAP/9L73WXcput+PVV19FXFwctmzZgh9//BHvvfeeR4nEywmCgLVr16KyshLDhg3z6tiXXnoJISEhSExMxKuvvgrnJT1S+/Tpg759+yIwMNCdGG4plLEhVyZXsr6FciVL8mmDq/socqzHYUU+UFnIGuU7rHVOFoMksaXR9iq2X2Uhm3InCmxJsyaIXa+MimUJIYS0Hhs2bIBMJsMDDzzg3qZWqzF79mwkJyfjjz/+aPDYpKQkJCUlubfFx8dj/PjxWLdunV/jJvXzNFFICUXik/eHeLbfe4P9Gwe56nAy2ZWrEl0Ege1Pmp0oipg/fz5GjBiBPn361LlPYWEh/u///q/GuQXAlreuW7cOW7duxa233oqHH34Y77zzjvtyhUKBn376CdnZ2cjLy8P48eO9io3neTz88MM4e/Yspk6dipkzZ2LUqFFITk72/ge9ioiiiJUrVyI+Ph4rVqzAm2++iUOHDmH06NFeX9exY8cQEBAAlUqFv//979i4cSN69erl8fGPPPII1q5di59//hkPPvggli1bVuvD65UrVyIvLw9FRUW44447vI6xqVDmhvhGqQNkSladKNhZolBwAKhil8sUF6dvCk5AdFxcxuzCcex6lAGtajkbIYQQ4nL48GF0794dBoOhxvbBg1kiIC0tDZ06dap1nCiKOHr0KO69995alw0ePBj/+9//UF5eDr1e71U8rv5L3l5GCGkGzvp72dW7P/VNJB6qOnrU6/0DvKyIIo03Z84cHD9+HHv27KnzcrPZjIkTJ6JXr154/vnna1y2ePFi9/8TExNRWVmJV199FY888kiN/cLCwhoVo16vx/PPP485c+Zg6dKlGDt2LK677josW7YMCQkJjbrutkQURXz77bd4/vnnkZubi+effx733XcflI1oD9CjRw+kpaWhrKwMGzZswN13341du3Z5nFB87LHH3P/v27cvlEolHnzwQSxfvhwq1cV5Eq2hVQ5VJhLfyRSALgQICGeVhUrtxambripEexVLNkoSSxjKVSyBqDECujDWd5ESiYQQQlqpnJwcREZG1tru2nahnqmaxcXFsNlsPh3bkICAgHq/YmNjvb6+9sbbISs0lIV4ZdM//Ls/addyv/zSr/uTxps7dy42b96Mn3/+GR07dqx1eXl5OW644Qbo9Xps3LgRCoWiwesbMmQI/vzzT9hsl0+IbxomkwlvvfUWTp48CaPRiIEDB2Ls2LHYuHEjxLpWG14lKisr8a9//Qs9e/bEvffei9tuuw1nzpzBww8/3KhEIgAolUp07doVAwcOxPLly9GvXz+89dZbPl/fkCFD4HQ6cc7DFgfNiZKJpPF4nk19VgcCAabq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6jxOFEUcPXoUgwYNqnXZ4MGDkZmZifLy8iaPl3hv7NixMBgM0Gq1mDx5Mk6dOtXSIV11KisrUVhYiMzMTLzxxhv48ccfMX78+AaPOXz4MAYMGFDrZH7w4MGoqqryqTcMqU0QBMybNw/33XcfEhISvD6+S5cuCAwMhF6vx5133llrshzxzbZt22AwGJCdnY0ePXogICAABoMBDz30EKxWa73H0WtP69RUz2dFRUXIz8/HgQMHcM899wDAFZ9LPYmtLZ7n+Br3pUpLS1FQUIBjx47hvvvug9lsbvTvsyGNiXn79u1ISkrC22+/DZPJBL1ej8jISLz77rt+i9fF17hdSfK6kkEajQaHDx/2+EOS1qCiogIVFRUIDQ1t6VCuqK2d244ZMwZmsxkPPvggTpw4gfPnz+ODDz7AN998g0WLFjVrLJIkIS8vr03czy7exFxeXo6FCxfi6aefpqm/hDQT6pnYTuXk5CAyMrLWdte2Cxcu1HlccXExbDbbFY/t0aNHE0ZLvKHVajFr1iz3CdfBgwfx+uuvY/jw4Th06BA6derU0iFeNf7xj3/gww8/BADwPI9bbrnlim+AcnJyMGrUqFrbL/378SX5RWr64IMPcP78eWzbts2r44KCgjB37lwMGzYMKpUKv/zyC9577z2kpqbiwIEDtd50Eu+cOnUKTqcTU6ZMwezZs7F8+XLs3LkT77zzDkpLS/HVV1/VeRy99rROTfV81qFDB3eCJiQkBG+//Tauu+66RsfWFs9zfI37UkOHDkV6ejoAICAgAP/85z8xe/bspg30Er7GXFJSgsLCQuzduxc7duzAc889h+joaKxatQrz5s2DQqHAgw8+2Ori7tatGziOw969e93Jb4D1misoKADAfra20sf1zTffhN1ux8yZM1s6lHq11XPb+++/H7/99hs+/PBDfPLJJwDYSpZ3330Xf//735s1li+++ALZ2dltqvecNzEvWbIEGo0GCxYsaIbICCEAJRPbLYvFUudEJFez2sunLl16HACfjiXNY8aMGZgxY4b7+6lTp+L666/HqFGj8OKLL+KDDz5oweiuLvPnz8f06dNx4cIFrFu3DoIgwG63N3iMr397xHNFRUV49tlnsXjxYphMJq+OffTRR2t8f+utt2Lw4MG444478P777+Opp55qylDbnYqKClRVVeHvf/+7e3rzLbfcArvd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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "import matplotlib.cm as cm\n", - "import matplotlib.gridspec as gridspec\n", - "\n", - "# Steps and corresponding highlighted frequencies\n", - "\n", - "#steps = [1000, 10000, 100000, epochs-1]\n", - "steps = [100, 1000, epochs-1]\n", - "highlight_freqs_list = [[], [1], [3], [5]]\n", - "\n", - "num_rows, num_cols = len(steps), 3\n", - "\n", - "# Use gridspec to control layout\n", - "fig = plt.figure(figsize=(24, 6), constrained_layout=True)\n", - "gs = gridspec.GridSpec(num_rows, num_cols, width_ratios=[1.1, 1.1, 2.0], wspace=0.1, hspace=0.1)\n", - "axes = np.empty((num_rows, num_cols), dtype=object)\n", - "\n", - "# Create axes\n", - "for row in range(num_rows):\n", - " for col in range(num_cols):\n", - " if col == 2: # TODO: what are the phases in our case? \n", - " ax = fig.add_subplot(gs[row, col], projection='polar')\n", - " else:\n", - " ax = fig.add_subplot(gs[row, col]) # ⬅ no sharex anymore\n", - " axes[row, col] = ax\n", - "\n", - "num_freqs = None\n", - "for row, index in enumerate(steps):\n", - " highlight_freqs = highlight_freqs_list[row]\n", - " params = param_history[index]\n", - " W = params['W'].numpy()\n", - " h, p = W.shape\n", - "\n", - " if num_freqs is None:\n", - " num_freqs = p // 2 + 1\n", - " cmap = plt.colormaps.get_cmap('tab20').resampled(num_freqs)\n", - " colors = [cmap(i) for i in range(num_freqs)]\n", - " manual_colors = {\n", - " 0: 'tab:blue',\n", - " 1: 'tab:orange',\n", - " 2: 'tab:red',\n", - " 3: 'tab:green',\n", - " 4: 'tab:brown',\n", - " 5: 'tab:purple',\n", - " }\n", - " freq_colors = [manual_colors.get(i, cmap(i)) for i in range(num_freqs)]\n", - "\n", - "\n", - " # === Column 1: Weights === # TODO UPDATE THEORY HERE\n", - " ax = axes[row, 0]\n", - " for i in range(h): # select one neuron, ie, one parameter vector of length group.order()\n", - " w = W[i, :]\n", - " power = group_power_spectrum(group, w) # TODO: do we need to square the power?\n", - " dom_idx = np.argmax(power)\n", - " color = freq_colors[dom_idx]\n", - " alpha = 0.9 if not highlight_freqs or dom_idx in highlight_freqs else 0.1\n", - " x = np.linspace(0, group.order() - 1, 500)\n", - " interpolate(ax, w, color=color, continuous=True, alpha=alpha)\n", - " ax.scatter(np.arange(group.order()), w, color=color, s=10, alpha=alpha)\n", - " if row == 0: ax.set_title(\"Weights\", fontsize=24)\n", - " ax.set_ylabel(fr\"$t = 10^{{{int(np.log10(index))}}}$\", fontsize=20)\n", - " style_axes(ax, numyticks=3, numxticks=5, labelsize=12)\n", - " ax.grid(False)\n", - " if row < num_rows - 1:\n", - " ax.tick_params(labelbottom=False)\n", - "\n", - " # === Column 2: Frequency Spectrum ===\n", - " ax = axes[row, 1]\n", - " for i in range(h):\n", - " w = W[i, :]\n", - " power = group_power_spectrum(group, w) # TODO: do we need to square the power?\n", - " for k in range(len(power)):\n", - " color = freq_colors[k]\n", - " ax.vlines(k, 0, power[k], linewidth=4, color=color, alpha=0.4)\n", - " ax.scatter(k, power[k], color=color, s=50, alpha=0.7)\n", - " # ax.axhline(0, color='gray', linewidth=1, linestyle='--', alpha=0.4)\n", - " ax.set_xlim(-0.5, len(power) - 0.5)\n", - " ax.set_xticks(np.arange(len(power)))\n", - " if row == 0: ax.set_title(\"Frequency\", fontsize=24)\n", - " style_axes(ax, numyticks=3, numxticks=11, labelsize=12)\n", - " ax.grid(False)\n", - " if row < num_rows - 1:\n", - " ax.tick_params(labelbottom=False)\n", - "\n", - " # === Column 3: Phase Polar Plot ===\n", - " ax = axes[row, 2]\n", - " # TODO: Keeping this one blank for now, since we're not sure what phase is in the matrix case.\n", - "\n", - "# Shift polar plots left to reduce whitespace\n", - "for row in range(num_rows):\n", - " ax = axes[row, 2]\n", - " pos = ax.get_position()\n", - " ax.set_position([pos.x0 - 0.155, pos.y0, pos.width, pos.height])\n", - "\n", - "plt.savefig(\"W-weights.pdf\", bbox_inches='tight')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "9f5f56f9-7055-4056-9a18-7d91b3be50f8", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "gagf", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.12" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/notebooks/loss-without-lines.svg b/notebooks/loss-without-lines.svg deleted file mode 100644 index d974e60..0000000 --- a/notebooks/loss-without-lines.svg +++ /dev/null @@ -1,1003 +0,0 @@ - - - - - - - - 2025-12-09T12:51:10.698301 - image/svg+xml - - - Matplotlib v3.10.7, https://matplotlib.org/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From ff00c151df54b195667bac2b477b389ee6332990 Mon Sep 17 00:00:00 2001 From: Nina Miolane Date: Thu, 5 Feb 2026 16:46:57 +0000 Subject: [PATCH 19/30] Refactor tests --- gagf/rnns/test/__init__.py | 1 - .../binary_action_learning/test/__init__.py | 1 - test/__init__.py | 1 + .../test_bal_datasets.py | 0 .../test_bal_group_fourier_transform.py | 18 -- .../test_models.py => test/test_bal_models.py | 0 .../test_power.py => test/test_bal_power.py | 0 .../test_bal_templates.py | 0 test/test_notebooks.py | 156 ++++++++++++++++++ .../test_rnns_datamodule.py | 0 .../test_model.py => test/test_rnns_model.py | 0 .../test_rnns_optimizers.py | 0 .../test_utils.py => test/test_rnns_utils.py | 0 13 files changed, 157 insertions(+), 20 deletions(-) delete mode 100644 gagf/rnns/test/__init__.py delete mode 100644 group_agf/binary_action_learning/test/__init__.py create mode 100644 test/__init__.py rename group_agf/binary_action_learning/test/test_datasets.py => test/test_bal_datasets.py (100%) rename group_agf/binary_action_learning/test/test_group_fourier_transform.py => test/test_bal_group_fourier_transform.py (78%) rename group_agf/binary_action_learning/test/test_models.py => test/test_bal_models.py (100%) rename group_agf/binary_action_learning/test/test_power.py => test/test_bal_power.py (100%) rename group_agf/binary_action_learning/test/test_templates.py => test/test_bal_templates.py (100%) create mode 100644 test/test_notebooks.py rename gagf/rnns/test/test_datamodule.py => test/test_rnns_datamodule.py (100%) rename gagf/rnns/test/test_model.py => test/test_rnns_model.py (100%) rename gagf/rnns/test/test_optimizers.py => test/test_rnns_optimizers.py (100%) rename gagf/rnns/test/test_utils.py => test/test_rnns_utils.py (100%) diff --git a/gagf/rnns/test/__init__.py b/gagf/rnns/test/__init__.py deleted file mode 100644 index da760c8..0000000 --- a/gagf/rnns/test/__init__.py +++ /dev/null @@ -1 +0,0 @@ -# Tests for gagf.rnns module diff --git a/group_agf/binary_action_learning/test/__init__.py b/group_agf/binary_action_learning/test/__init__.py deleted file mode 100644 index fd76427..0000000 --- a/group_agf/binary_action_learning/test/__init__.py +++ /dev/null @@ -1 +0,0 @@ -# Tests for group_agf.binary_action_learning module diff --git a/test/__init__.py b/test/__init__.py new file mode 100644 index 0000000..f7ffcb6 --- /dev/null +++ b/test/__init__.py @@ -0,0 +1 @@ +# Test package for group-agf diff --git a/group_agf/binary_action_learning/test/test_datasets.py b/test/test_bal_datasets.py similarity index 100% rename from group_agf/binary_action_learning/test/test_datasets.py rename to test/test_bal_datasets.py diff --git a/group_agf/binary_action_learning/test/test_group_fourier_transform.py b/test/test_bal_group_fourier_transform.py similarity index 78% rename from group_agf/binary_action_learning/test/test_group_fourier_transform.py rename to test/test_bal_group_fourier_transform.py index 4e46b65..aad839d 100644 --- a/group_agf/binary_action_learning/test/test_group_fourier_transform.py +++ b/test/test_bal_group_fourier_transform.py @@ -7,24 +7,6 @@ compute_group_fourier_transform, compute_group_inverse_fourier_transform) -# def test_fourier_transform_of_fixed_template(): -# group = Octahedral() -# seed = 42 - -# # Generate template with nontrivial spectrum -# template = generate_fixed_group_template( -# group, seed=seed, powers=[100.0, 20.0, 0.0, 0.0, 0.0] -# ) - -# # Forward Fourier transform -# fourier_transform = compute_group_fourier_transform(group, template) - -# for i, ft in enumerate(fourier_transform): -# print(f"Fourier transform element {i}:") -# print(ft) -# raise Exception("Stop here to check the Fourier transform.") - - def test_fourier_inverse_is_identity(): group = Octahedral() seed = 42 diff --git a/group_agf/binary_action_learning/test/test_models.py b/test/test_bal_models.py similarity index 100% rename from group_agf/binary_action_learning/test/test_models.py rename to test/test_bal_models.py diff --git a/group_agf/binary_action_learning/test/test_power.py b/test/test_bal_power.py similarity index 100% rename from group_agf/binary_action_learning/test/test_power.py rename to test/test_bal_power.py diff --git a/group_agf/binary_action_learning/test/test_templates.py b/test/test_bal_templates.py similarity index 100% rename from group_agf/binary_action_learning/test/test_templates.py rename to test/test_bal_templates.py diff --git a/test/test_notebooks.py b/test/test_notebooks.py new file mode 100644 index 0000000..e361a0a --- /dev/null +++ b/test/test_notebooks.py @@ -0,0 +1,156 @@ +""" +Tests for notebook execution in the group-agf repository. + +This module runs all Jupyter notebooks in the notebooks/ directory to verify +they execute without errors. When NOTEBOOK_TEST_MODE=1 environment variable +is set, notebooks run with reduced epochs (2 instead of full training) to +enable faster testing. + +Some notebooks are skipped by default because they: +- Have hardcoded paths to other users' filesystems +- Require external data files not included in the repository +- Have known issues that require separate debugging + +Expected runtime: + - With NOTEBOOK_TEST_MODE=1: ~1-2 minutes total (for non-skipped notebooks) + - Without TEST_MODE: Much longer (not recommended for automated testing) + +Usage: + NOTEBOOK_TEST_MODE=1 pytest test/test_notebooks.py -v +""" + +import os +import subprocess +import sys +from pathlib import Path + +import pytest + + +def get_repo_root(): + """Get the repository root directory.""" + return Path(__file__).parent.parent + + +def get_notebooks_dir(): + """Get the notebooks directory.""" + return get_repo_root() / "notebooks" + + +# Notebooks to skip (with reasons) +SKIP_NOTEBOOKS = { + # These notebooks have hardcoded paths to /home/facosta/... which don't exist + "seq_mlp_group_size": "Has hardcoded paths to another user's filesystem", + "rnn_gagf": "Has hardcoded paths to another user's filesystem", + # These notebooks require pre-trained model files or external data + "paper_figures": "Requires pre-trained model files not included in repo", + # These notebooks have import/code issues that need separate debugging + "2D": "Has import issues with missing functions (get_power_2d)", + # These notebooks also don't run +} + + +def get_notebook_files(): + """Get list of all notebook files in the notebooks directory.""" + notebooks_dir = get_notebooks_dir() + if not notebooks_dir.exists(): + return [] + return sorted(notebooks_dir.glob("*.ipynb")) + + +# Get list of notebooks for parametrization +NOTEBOOKS = get_notebook_files() +NOTEBOOK_IDS = [nb.stem for nb in NOTEBOOKS] + + +@pytest.fixture(scope="module") +def notebook_test_env(): + """Set up environment for notebook testing.""" + env = os.environ.copy() + # Ensure TEST_MODE is enabled for faster execution + env["NOTEBOOK_TEST_MODE"] = "1" + return env + + +def execute_notebook(notebook_path, env): + """ + Execute a Jupyter notebook using nbconvert. + + Args: + notebook_path: Path to the notebook file + env: Environment dictionary for the subprocess + + Returns: + tuple: (success: bool, error_message: str or None) + """ + try: + result = subprocess.run( + [ + sys.executable, + "-m", + "jupyter", + "nbconvert", + "--to", + "notebook", + "--execute", + "--ExecutePreprocessor.timeout=300", # 5 minute timeout per notebook + "--ExecutePreprocessor.kernel_name=python3", + "--output", + "/dev/null", + str(notebook_path), + ], + capture_output=True, + text=True, + env=env, + cwd=str(get_repo_root()), + timeout=360, # 6 minute overall timeout + ) + + if result.returncode != 0: + error_msg = f"STDOUT:\n{result.stdout}\n\nSTDERR:\n{result.stderr}" + return False, error_msg + return True, None + + except subprocess.TimeoutExpired: + return False, "Notebook execution timed out (>6 minutes)" + except Exception as e: + return False, f"Unexpected error: {str(e)}" + + +@pytest.mark.parametrize("notebook_path", NOTEBOOKS, ids=NOTEBOOK_IDS) +def test_notebook_execution(notebook_path, notebook_test_env): + """ + Test that a notebook executes without errors. + + This test runs each notebook with NOTEBOOK_TEST_MODE=1 to ensure + reduced epochs are used for faster execution. + """ + notebook_name = notebook_path.stem + + # Skip notebooks with known issues + if notebook_name in SKIP_NOTEBOOKS: + pytest.skip(f"Skipped: {SKIP_NOTEBOOKS[notebook_name]}") + + assert notebook_path.exists(), f"Notebook not found: {notebook_path}" + + success, error_msg = execute_notebook(notebook_path, notebook_test_env) + + if not success: + pytest.fail(f"Notebook {notebook_path.name} failed to execute:\n{error_msg}") + + +def test_notebooks_directory_exists(): + """Test that the notebooks directory exists.""" + notebooks_dir = get_notebooks_dir() + assert notebooks_dir.exists(), f"Notebooks directory not found: {notebooks_dir}" + + +def test_at_least_one_notebook_exists(): + """Test that there is at least one notebook to test.""" + notebooks = get_notebook_files() + assert len(notebooks) > 0, "No notebooks found in notebooks/ directory" + + +if __name__ == "__main__": + # Allow running tests directly + pytest.main([__file__, "-v"]) diff --git a/gagf/rnns/test/test_datamodule.py b/test/test_rnns_datamodule.py similarity index 100% rename from gagf/rnns/test/test_datamodule.py rename to test/test_rnns_datamodule.py diff --git a/gagf/rnns/test/test_model.py b/test/test_rnns_model.py similarity index 100% rename from gagf/rnns/test/test_model.py rename to test/test_rnns_model.py diff --git a/gagf/rnns/test/test_optimizers.py b/test/test_rnns_optimizers.py similarity index 100% rename from gagf/rnns/test/test_optimizers.py rename to test/test_rnns_optimizers.py diff --git a/gagf/rnns/test/test_utils.py b/test/test_rnns_utils.py similarity index 100% rename from gagf/rnns/test/test_utils.py rename to test/test_rnns_utils.py From a081eb490ac6e38f8061b1e66ab87363f502d684 Mon Sep 17 00:00:00 2001 From: Nina Miolane Date: Thu, 5 Feb 2026 16:59:40 +0000 Subject: [PATCH 20/30] Refactor notebooks --- gagf/rnns/rnn_gagf.ipynb | 2574 - gagf/rnns/seq_mlp.ipynb | 2442 - gagf/rnns/seq_mlp_group_size.ipynb | 1564 - notebooks/2D.ipynb | 836 +- notebooks/C_n.ipynb | 207 +- notebooks/dihedral.ipynb | 324648 +------------------------- notebooks/fourier_power_only.svg | 1054 + notebooks/loss-without-lines.svg | 778 + notebooks/modular_arithmetic.ipynb | 5112 +- notebooks/paper_figures.ipynb | 806 +- notebooks/rnn_gagf.ipynb | 2112 + notebooks/seq_mlp.ipynb | 2071 + notebooks/seq_mlp_group_size.ipynb | 1393 + notebooks/template_bar.pdf | Bin 0 -> 9599 bytes notebooks/template_fft_bar.pdf | Bin 0 -> 13204 bytes notebooks/znz_znz.ipynb | 254 +- setcwd.py | 42 +- test/test_notebooks.py | 17 +- 18 files changed, 7855 insertions(+), 338055 deletions(-) delete mode 100644 gagf/rnns/rnn_gagf.ipynb delete mode 100644 gagf/rnns/seq_mlp.ipynb delete mode 100644 gagf/rnns/seq_mlp_group_size.ipynb create mode 100644 notebooks/fourier_power_only.svg create mode 100644 notebooks/loss-without-lines.svg create mode 100644 notebooks/rnn_gagf.ipynb create mode 100644 notebooks/seq_mlp.ipynb create mode 100644 notebooks/seq_mlp_group_size.ipynb create mode 100644 notebooks/template_bar.pdf create mode 100644 notebooks/template_fft_bar.pdf diff --git a/gagf/rnns/rnn_gagf.ipynb b/gagf/rnns/rnn_gagf.ipynb deleted file mode 100644 index acdd687..0000000 --- a/gagf/rnns/rnn_gagf.ipynb +++ /dev/null @@ -1,2574 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "id": "af291059", - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "import yaml\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "from pathlib import Path\n", - "import seaborn as sns\n", - "\n", - "def load_sweep_results_grid(sweep_dir: str, k_values: list, hidden_dims: list):\n", - " \"\"\"\n", - " Load sweep results and organize into a grid for heatmap visualization.\n", - " \n", - " Args:\n", - " sweep_dir: Path to the sweep directory\n", - " k_values: List of k (sequence length) values\n", - " hidden_dims: List of hidden dimension values\n", - " \n", - " Returns:\n", - " grid: 2D numpy array with shape (len(hidden_dims), len(k_values))\n", - " containing mean final train losses\n", - " std_grid: 2D numpy array with standard deviations (if multiple seeds)\n", - " \"\"\"\n", - " sweep_path = Path(sweep_dir)\n", - " \n", - " # Initialize grids\n", - " grid = np.full((len(hidden_dims), len(k_values)), np.nan)\n", - " std_grid = np.full((len(hidden_dims), len(k_values)), np.nan)\n", - " \n", - " # Load results for each experiment\n", - " for i, h in enumerate(hidden_dims):\n", - " for j, k in enumerate(k_values):\n", - " exp_name = f\"k{k}_h{h}\"\n", - " exp_dir = sweep_path / exp_name\n", - " \n", - " if not exp_dir.exists():\n", - " print(f\"Warning: Experiment {exp_name} not found\")\n", - " continue\n", - " \n", - " # Load experiment summary\n", - " summary_file = exp_dir / \"experiment_summary.yaml\"\n", - " if summary_file.exists():\n", - " with open(summary_file, 'r') as f:\n", - " summary = yaml.safe_load(f)\n", - " \n", - " # Get mean train loss\n", - " if 'train_loss_stats' in summary:\n", - " grid[i, j] = summary['train_loss_stats']['mean']\n", - " std_grid[i, j] = summary['train_loss_stats']['std']\n", - " else:\n", - " print(f\"Warning: No train_loss_stats in {exp_name}\")\n", - " else:\n", - " print(f\"Warning: No summary file for {exp_name}\")\n", - " \n", - " return grid, std_grid\n" - ] - }, - { - "cell_type": "markdown", - "id": "c433cb4d", - "metadata": {}, - "source": [ - "## 1D Analysis Functions\n", - "\n", - "Analyze individual 1D experiments from the sweep with detailed power spectrum and neuron specialization plots.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "95df6861", - "metadata": {}, - "outputs": [], - "source": [ - "import torch\n", - "import numpy as np\n", - "from pathlib import Path\n", - "from gagf.rnns.utils import (\n", - " plot_prediction_power_spectrum_over_time_1d,\n", - " plot_wout_neuron_specialization_1d,\n", - " plot_model_predictions_over_time_1d,\n", - " topk_template_freqs_1d,\n", - ")\n", - "from gagf.rnns.model import SequentialMLP\n", - "\n", - "def analyze_1d_experiment(sweep_dir, exp_name, seed=0, num_freqs_to_track=10):\n", - " \"\"\"\n", - " Analyze a single 1D experiment from the sweep.\n", - " \n", - " Args:\n", - " sweep_dir: Path to sweep directory\n", - " exp_name: Experiment name (e.g., \"k3_h360\")\n", - " seed: Seed number to analyze\n", - " num_freqs_to_track: Number of top frequencies to track\n", - " \n", - " Returns:\n", - " Dictionary with analysis results\n", - " \"\"\"\n", - " # Setup paths\n", - " sweep_path = Path(sweep_dir)\n", - " exp_dir = sweep_path / exp_name / f\"seed_{seed}\"\n", - " \n", - " if not exp_dir.exists():\n", - " print(f\"Experiment directory not found: {exp_dir}\")\n", - " return None\n", - " \n", - " print(f\"Analyzing: {exp_name}, seed {seed}\")\n", - " print(f\"Directory: {exp_dir}\")\n", - " \n", - " # Load config\n", - " with open(exp_dir / \"config.yaml\", 'r') as f:\n", - " config = yaml.safe_load(f)\n", - " \n", - " # Load template\n", - " template = np.load(exp_dir / \"template.npy\")\n", - " p = len(template)\n", - " k = config['data']['k']\n", - " hidden_dim = config['model']['hidden_dim']\n", - " \n", - " print(f\" p={p}, k={k}, hidden_dim={hidden_dim}\")\n", - " \n", - " # Load training history\n", - " train_loss_hist = np.load(exp_dir / \"train_loss_history.npy\")\n", - " param_hist = torch.load(exp_dir / \"param_history.pt\", map_location='cpu')\n", - " \n", - " # Create model\n", - " device = 'cpu'\n", - " template_torch = torch.tensor(template, dtype=torch.float32, device=device)\n", - " model = SequentialMLP(\n", - " p=p,\n", - " d=hidden_dim,\n", - " template=template_torch,\n", - " k=k,\n", - " init_scale=config['model']['init_scale'],\n", - " return_all_outputs=config['model']['return_all_outputs'],\n", - " ).to(device)\n", - " \n", - " # Generate evaluation data\n", - " from gagf.rnns.datamodule import build_modular_addition_sequence_dataset_1d\n", - " X_data, Y_data, _ = build_modular_addition_sequence_dataset_1d(\n", - " p, template, k,\n", - " mode='sampled',\n", - " num_samples=1000,\n", - " return_all_outputs=config['model']['return_all_outputs'],\n", - " )\n", - " X_data_t = torch.tensor(X_data, dtype=torch.float32, device=device)\n", - " Y_data_t = torch.tensor(Y_data, dtype=torch.float32, device=device)\n", - " \n", - " # Get tracked frequencies\n", - " tracked_freqs = topk_template_freqs_1d(template, K=num_freqs_to_track)\n", - " colors = plt.cm.tab10(np.linspace(0, 1, len(tracked_freqs)))\n", - " \n", - " # Checkpoints to analyze\n", - " checkpoint_indices = [0, len(param_hist)//4, len(param_hist)//2, \n", - " 3*len(param_hist)//4, len(param_hist)-1]\n", - " \n", - " # Plot 1: Power spectrum over time\n", - " print(\"\\\\n Plotting power spectrum analysis...\")\n", - " fig1, _, _, _ = plot_prediction_power_spectrum_over_time_1d(\n", - " model, param_hist, X_data_t, Y_data_t, template, p,\n", - " loss_history=train_loss_hist,\n", - " num_freqs_to_track=num_freqs_to_track,\n", - " num_samples=100,\n", - " save_path=exp_dir / \"power_spectrum_analysis_1d.pdf\",\n", - " show=True\n", - " )\n", - " \n", - " # Plot 2: Model predictions over time\n", - " print(\" Plotting predictions over time...\")\n", - " fig2, _ = plot_model_predictions_over_time_1d(\n", - " model, param_hist, X_data_t, Y_data_t, p,\n", - " steps=checkpoint_indices,\n", - " save_path=exp_dir / \"predictions_over_time_1d.pdf\",\n", - " show=True\n", - " )\n", - " \n", - " # Plot 3: W_out neuron specialization\n", - " print(\" Plotting W_out neuron specialization...\")\n", - " figs3 = plot_wout_neuron_specialization_1d(\n", - " param_hist, tracked_freqs, colors, p,\n", - " steps=checkpoint_indices,\n", - " dead_thresh_l2=0.25,\n", - " save_dir=exp_dir,\n", - " show=True\n", - " )\n", - " \n", - " print(\"\\\\n ✓ Analysis complete!\")\n", - " \n", - " return {\n", - " 'config': config,\n", - " 'template': template,\n", - " 'train_loss': train_loss_hist,\n", - " 'tracked_freqs': tracked_freqs,\n", - " }\n", - "\n", - "# Example usage:\n", - "# sweep_dir = \"/home/facosta/group-agf/sweeps/sweep_mlp_scaling_20251202_XXXXXX\"\n", - "# result = analyze_1d_experiment(sweep_dir, \"k3_h360\", seed=0)\n" - ] - }, - { - "cell_type": "markdown", - "id": "7bc3db90", - "metadata": {}, - "source": [ - "# Analyze RNNs trained on GAGF sequential task" - ] - }, - { - "cell_type": "markdown", - "id": "11fb7c9b", - "metadata": {}, - "source": [ - "## Set up" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "43581ce4", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Working directory: /home/facosta/group-agf/gagf\n", - "Directory added to path: /home/facosta/group-agf\n", - "Directory added to path: /home/facosta/group-agf/gagf\n" - ] - } - ], - "source": [ - "# autoreload\n", - "%load_ext autoreload\n", - "%autoreload 2\n", - "# jupyter black formatter\n", - "%load_ext jupyter_black\n", - "\n", - "import subprocess\n", - "import os\n", - "import sys\n", - "\n", - "gitroot_path = subprocess.check_output(\n", - " [\"git\", \"rev-parse\", \"--show-toplevel\"], universal_newlines=True\n", - ")\n", - "\n", - "os.chdir(os.path.join(gitroot_path[:-1], \"gagf\"))\n", - "print(\"Working directory: \", os.getcwd())\n", - "\n", - "sys_dir = os.path.dirname(os.getcwd())\n", - "sys.path.append(sys_dir)\n", - "print(\"Directory added to path: \", sys_dir)\n", - "sys.path.append(os.getcwd())\n", - "print(\"Directory added to path: \", os.getcwd())" - ] - }, - { - "cell_type": "markdown", - "id": "f0407a17", - "metadata": {}, - "source": [ - "## Sequence-to-sequence sweep across different values of k (sequence length)" - ] - }, - { - "cell_type": "markdown", - "id": "070e8c55", - "metadata": {}, - "source": [ - "### Loss curves" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "cf050abb", - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "from pathlib import Path\n", - "from typing import Dict, List, Optional\n", - "\n", - "\n", - "def get_sweep_experiments(sweep_dir: str) -> List[str]:\n", - " \"\"\"\n", - " Get all experiment names from a sweep directory.\n", - "\n", - " Args:\n", - " sweep_dir: Path to sweep directory\n", - "\n", - " Returns:\n", - " List of experiment names (subdirectories with seed_0)\n", - " \"\"\"\n", - " sweep_path = Path(sweep_dir)\n", - " experiments = []\n", - "\n", - " for item in sweep_path.iterdir():\n", - " if (\n", - " item.is_dir()\n", - " and not item.name.startswith(\".\")\n", - " and item.name not in [\"configs\"]\n", - " ):\n", - " # Check if it has a seed_0 subdirectory\n", - " if (item / \"seed_0\").exists():\n", - " experiments.append(item.name)\n", - "\n", - " return sorted(experiments)\n", - "\n", - "\n", - "def load_experiment_losses(\n", - " sweep_dir: str, experiment_name: str, seed: int = 0\n", - ") -> Dict[str, np.ndarray]:\n", - " \"\"\"\n", - " Load training and validation loss histories for an experiment.\n", - "\n", - " Args:\n", - " sweep_dir: Path to sweep directory\n", - " experiment_name: Name of the experiment subdirectory\n", - " seed: Seed number (default: 0)\n", - "\n", - " Returns:\n", - " Dictionary with 'train' and 'val' loss arrays (if they exist)\n", - " \"\"\"\n", - " exp_path = Path(sweep_dir) / experiment_name / f\"seed_{seed}\"\n", - " losses = {}\n", - "\n", - " train_loss_path = exp_path / \"train_loss_history.npy\"\n", - " if train_loss_path.exists():\n", - " losses[\"train\"] = np.load(train_loss_path)\n", - "\n", - " val_loss_path = exp_path / \"val_loss_history.npy\"\n", - " if val_loss_path.exists():\n", - " losses[\"val\"] = np.load(val_loss_path)\n", - "\n", - " return losses\n", - "\n", - "\n", - "def load_all_sweep_losses(\n", - " sweep_dir: str, seed: int = 0\n", - ") -> Dict[str, Dict[str, np.ndarray]]:\n", - " \"\"\"\n", - " Load loss histories for all experiments in a sweep.\n", - "\n", - " Args:\n", - " sweep_dir: Path to sweep directory\n", - " seed: Seed number (default: 0)\n", - "\n", - " Returns:\n", - " Dictionary mapping experiment names to their loss dictionaries\n", - " \"\"\"\n", - " experiments = get_sweep_experiments(sweep_dir)\n", - " all_losses = {}\n", - "\n", - " for exp_name in experiments:\n", - " all_losses[exp_name] = load_experiment_losses(sweep_dir, exp_name, seed)\n", - "\n", - " return all_losses\n", - "\n", - "\n", - "def remove_outliers_local(loss_history, window=10, threshold=3.0):\n", - " \"\"\"\n", - " Replace outliers with local median if they deviate too much.\n", - "\n", - " Args:\n", - " loss_history: Array of loss values\n", - " window: Window size for local statistics\n", - " threshold: How many local standard deviations to consider an outlier\n", - "\n", - " Returns:\n", - " Tuple of (cleaned loss history, whether any outliers were found)\n", - " \"\"\"\n", - " cleaned = loss_history.copy()\n", - " half_window = window // 2\n", - " outliers_found = False\n", - "\n", - " for i in range(len(loss_history)):\n", - " start = max(0, i - half_window)\n", - " end = min(len(loss_history), i + half_window + 1)\n", - " local_window = loss_history[start:end]\n", - "\n", - " local_median = np.median(local_window)\n", - " local_std = np.std(local_window)\n", - "\n", - " # If the value is too far from local median, replace it\n", - " if abs(loss_history[i] - local_median) > threshold * local_std:\n", - " cleaned[i] = local_median\n", - " outliers_found = True\n", - "\n", - " return cleaned, outliers_found" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "6b5653c8", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Found experiments: ['k_2_seqseq', 'k_3_seqseq', 'k_4_seqseq', 'k_5_seqseq', 'k_6_seqseq', 'k_7_seqseq', 'k_8_seqseq']\n" - ] - } - ], - "source": [ - "# Set up your sweep directory\n", - "sweep_dir = \"/home/facosta/group-agf/sweeps/seq_seq_sweep_20251113_120513\"\n", - "\n", - "# Get all experiments in the sweep\n", - "experiments = get_sweep_experiments(sweep_dir)\n", - "print(f\"Found experiments: {experiments}\")\n", - "\n", - "# Load losses for all experiments\n", - "all_losses = load_all_sweep_losses(sweep_dir)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "fa6b246a", - "metadata": {}, - "outputs": [], - "source": [ - "def plot_loss_comparison(\n", - " sweep_dir: str,\n", - " experiments: Optional[List[str]] = None,\n", - " loss_type: str = \"train\",\n", - " log_scale: bool = True,\n", - " figsize: tuple = (10, 6),\n", - " seed: int = 0,\n", - " remove_outliers: bool = False,\n", - " outlier_window: int = 10,\n", - " outlier_threshold: float = 3.0,\n", - " template_2d: Optional[np.ndarray] = None,\n", - " p1: Optional[int] = None,\n", - " p2: Optional[int] = None,\n", - " show_theory_bands: bool = True,\n", - " num_theory_lines: Optional[int] = None,\n", - " color_by_k: bool = True,\n", - " cmap: str = \"viridis\",\n", - "):\n", - " \"\"\"\n", - " Plot and compare loss curves from multiple experiments.\n", - "\n", - " Args:\n", - " sweep_dir: Path to sweep directory\n", - " experiments: List of experiment names to plot (None = all experiments)\n", - " loss_type: 'train' or 'val'\n", - " log_scale: Whether to use log scale for both axes\n", - " figsize: Figure size tuple\n", - " seed: Seed number (default: 0)\n", - " remove_outliers: Whether to remove outliers using local outlier replacement\n", - " outlier_window: Window size for outlier detection (default: 10)\n", - " outlier_threshold: Threshold in standard deviations for outlier detection (default: 3.0)\n", - " template_2d: Optional 2D template array for computing theory lines\n", - " p1: First dimension of template (required if template_2d is provided)\n", - " p2: Second dimension of template (required if template_2d is provided)\n", - " show_theory_bands: Whether to show colored bands between theory lines (default: True)\n", - " num_theory_lines: Number of theory lines to show (default: None = show all)\n", - " color_by_k: Whether to color lines by k value (default: True)\n", - " cmap: Colormap name for k-based coloring (default: 'viridis')\n", - " \"\"\"\n", - " if experiments is None:\n", - " experiments = get_sweep_experiments(sweep_dir)\n", - "\n", - " fig, ax = plt.subplots(figsize=figsize)\n", - "\n", - " # Compute theory lines if template is provided\n", - " theory_levels = None\n", - " if template_2d is not None:\n", - " if p1 is None or p2 is None:\n", - " raise ValueError(\"p1 and p2 must be provided if template_2d is given\")\n", - "\n", - " # Import the helper function (assuming it's in utils.py)\n", - " from gagf.rnns.utils import get_power_2d_adele\n", - "\n", - " # Compute power spectrum of template\n", - " _, _, power = get_power_2d_adele(template_2d)\n", - " power_flat = np.sort(power.flatten()[power.flatten() > 1e-20])[::-1]\n", - "\n", - " # Theory levels (cumulative tail sums)\n", - " alpha_values = np.array(\n", - " [np.sum(power_flat[k:]) for k in range(len(power_flat))]\n", - " )\n", - " coef = 1.0 / (p1 * p2)\n", - " theory_levels = coef * alpha_values # strictly decreasing\n", - "\n", - " # Limit number of lines if specified\n", - " if num_theory_lines is not None:\n", - " theory_levels = theory_levels[: num_theory_lines + 1]\n", - "\n", - " # Generate colors for bands\n", - " n_bands = len(theory_levels) - 1\n", - " colors = plt.cm.tab10(np.linspace(0, 1, max(n_bands, 1)))\n", - "\n", - " # Draw colored bands between theory lines\n", - " if show_theory_bands and n_bands > 0:\n", - " for i in range(n_bands):\n", - " y_top = theory_levels[i]\n", - " y_bot = theory_levels[i + 1]\n", - " ax.axhspan(\n", - " y_bot,\n", - " y_top,\n", - " facecolor=colors[i % len(colors)],\n", - " alpha=0.15,\n", - " zorder=-3,\n", - " )\n", - "\n", - " # Draw the black theory lines\n", - " for y in theory_levels:\n", - " ax.axhline(\n", - " y=y,\n", - " color=\"black\",\n", - " linestyle=\"--\",\n", - " linewidth=1.5,\n", - " alpha=0.7,\n", - " zorder=-2,\n", - " label=\"_nolegend_\",\n", - " )\n", - "\n", - " # Extract k values and set up colormap\n", - " k_values = {}\n", - " if color_by_k:\n", - " import re\n", - "\n", - " for exp_name in experiments:\n", - " # Try to extract k value from experiment name (e.g., \"k_2_seqseq\" -> 2)\n", - " match = re.search(r\"k[_\\s]*(\\d+)\", exp_name, re.IGNORECASE)\n", - " if match:\n", - " k_values[exp_name] = int(match.group(1))\n", - "\n", - " if k_values:\n", - " k_min = min(k_values.values())\n", - " k_max = max(k_values.values())\n", - " norm = plt.cm.colors.Normalize(vmin=k_min, vmax=k_max)\n", - " colormap = plt.cm.get_cmap(cmap)\n", - " scalar_map = plt.cm.ScalarMappable(norm=norm, cmap=colormap)\n", - "\n", - " # Plot loss curves\n", - " for exp_name in experiments:\n", - " losses = load_experiment_losses(sweep_dir, exp_name, seed)\n", - " if loss_type in losses:\n", - " loss_history = losses[loss_type]\n", - "\n", - " # Apply outlier removal if requested\n", - " if remove_outliers:\n", - " loss_history, outliers_found = remove_outliers_local(\n", - " loss_history, window=outlier_window, threshold=outlier_threshold\n", - " )\n", - " if outliers_found:\n", - " print(f\"Outliers from {exp_name} removed for plot\")\n", - "\n", - " # Determine color\n", - " if color_by_k and exp_name in k_values:\n", - " color = scalar_map.to_rgba(k_values[exp_name])\n", - " else:\n", - " color = None # Use default color cycle\n", - "\n", - " ax.plot(loss_history, label=exp_name, alpha=0.8, linewidth=2, color=color)\n", - "\n", - " ax.set_xlabel(\"Step\", fontsize=14)\n", - " ax.set_ylabel(f\"{loss_type.capitalize()} Loss\", fontsize=14)\n", - " title = f\"{loss_type.capitalize()} Loss Comparison - {Path(sweep_dir).name}\"\n", - " if remove_outliers:\n", - " title += \" (outliers removed)\"\n", - " ax.set_title(title, fontsize=14)\n", - " ax.legend(fontsize=10)\n", - " ax.grid(True, alpha=0.3)\n", - "\n", - " if log_scale:\n", - " ax.set_xscale(\"log\")\n", - " ax.set_yscale(\"log\")\n", - "\n", - " # Add colorbar if coloring by k\n", - " if color_by_k and k_values:\n", - " cbar = plt.colorbar(scalar_map, ax=ax, label=\"k (sequence length)\", pad=0.02)\n", - " cbar.ax.tick_params(labelsize=10)\n", - "\n", - " plt.tight_layout()\n", - " plt.show()\n", - "\n", - " return fig, ax, theory_levels" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "a8e3f5e3", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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IIXAAJBCYABIITAApKjos8igGv3j0t1FTwA+hTsYAFIIDAApBAaAFAIDQAqBASCFwACQQmAASCEwAKQQGABSCAwAKQQGgBQCA0AKgQEghcAAkEJgAEghMACkEBgAUggMACkEBoAUAgNACoEBIIXAAJBCYABIITAApBAYAFIIDAApBAaAFAIDQAqBASCFwACQQmAASCEwAKQQGABSCAwAKQQGgBTDB/sJy+VyRER8EiciyoP97ACcjU/iRET87f/lpzLogTl27FhEROyKfx3spwZggBw7diyamppO+Zi68ulkaAD19vbGoUOHorGxMerq6s749+nq6orm5ubo6OiIUaNGDeDCocXrdHq8TqfH63R6hvLrVC6X49ixYzF+/PgYNuzU77IM+h3MsGHDYsKECQP2+40aNWrI/QfM4HU6PV6n0+N1Oj1D9XX6n+5c/os3+QFIITAApKjZwJRKpVi1alWUSqWip1Q1r9Pp8TqdHq/T6fE6/dWgv8kPwOdDzd7BAFDdBAaAFAIDQAqBASBFzQbm0UcfjUmTJsXIkSNj1qxZsWfPnqInVZW2traYOXNmNDY2xtixY+P222+PAwcOFD2rqj388MNRV1cXS5cuLXpK1Xn33XfjrrvuijFjxkRDQ0PMmDEjXn311aJnVZWenp5YuXJlTJ48ORoaGuKSSy6JBx988LQ+s2uoqsnAbN26NZYtWxarVq2K/fv3x+WXXx433XRTHD16tOhpVWPHjh3R2toau3fvjhdffDFOnDgRN954Yxw/frzoaVVp79698fjjj8dll11W9JSq88EHH8ScOXPinHPOieeffz5+97vfxY9+9KMYPXp00dOqypo1a2L9+vWxbt26+P3vfx9r1qyJH/zgB7F27dqipxWmJv+a8qxZs2LmzJmxbt26iPjr55s1NzfHPffcE8uXLy94XXV67733YuzYsbFjx4647rrrip5TVT788MO46qqr4sc//nF8//vfjyuuuCLa29uLnlU1li9fHr/97W/jN7/5TdFTqtq8efNi3Lhx8ZOf/KTv3Fe/+tVoaGiIn//85wUuK07N3cF8/PHHsW/fvpg7d27fuWHDhsXcuXPjlVdeKXBZdevs7IyIiPPPP7/gJdWntbU1brnllpP+TPE3zz77bLS0tMQdd9wRY8eOjSuvvDI2btxY9KyqM3v27Ni+fXscPHgwIiLeeOON2LVrV9x8880FLyvOoH/Y5dl6//33o6enJ8aNG3fS+XHjxsUf/vCHglZVt97e3li6dGnMmTMnpk+fXvScqvLUU0/F/v37Y+/evUVPqVpvv/12rF+/PpYtWxbf/e53Y+/evbF48eIYMWJELFiwoOh5VWP58uXR1dUVU6ZMifr6+ujp6YnVq1fH/Pnzi55WmJoLDJVrbW2Nt956K3bt2lX0lKrS0dERS5YsiRdffDFGjhxZ9Jyq1dvbGy0tLfHQQw9FRMSVV14Zb731Vjz22GMC83eefvrp2Lx5c2zZsiWmTZsWr7/+eixdujTGjx//uX2dai4wF1xwQdTX18eRI0dOOn/kyJG48MILC1pVvRYtWhTPPfdc7Ny5c0C/JmEo2LdvXxw9ejSuuuqqvnM9PT2xc+fOWLduXXR3d0d9fX2BC6vDRRddFFOnTj3p3KWXXhq/+MUvClpUne67775Yvnx53HnnnRERMWPGjHjnnXeira3tcxuYmnsPZsSIEXH11VfH9u3b+8719vbG9u3b49prry1wWXUpl8uxaNGi2LZtW/z617+OyZMnFz2p6txwww3x5ptvxuuvv953tLS0xPz58+P1118Xl/80Z86cfn/F/eDBg3HxxRcXtKg6ffTRR/2+gKu+vj56e3sLWlS8mruDiYhYtmxZLFiwIFpaWuKaa66J9vb2OH78eCxcuLDoaVWjtbU1tmzZEs8880w0NjbG4cOHI+KvXxTU0NBQ8Lrq0NjY2O89qfPOOy/GjBnjvaq/c++998bs2bPjoYceiq997WuxZ8+e2LBhQ2zYsKHoaVXl1ltvjdWrV8fEiRNj2rRp8dprr8UjjzwSd999d9HTilOuUWvXri1PnDixPGLEiPI111xT3r17d9GTqkpEfOrxxBNPFD2tqn35y18uL1mypOgZVeeXv/xlefr06eVSqVSeMmVKecOGDUVPqjpdXV3lJUuWlCdOnFgeOXJk+Ytf/GL5e9/7Xrm7u7voaYWpyX8HA0D1q7n3YACoDQIDQAqBASCFwACQQmAASCEwAKQQGABSCAwAKQQGgBQCA0AKgQEghcAAkOL/A5LiaRxytTEoAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "template_path = os.path.join(sweep_dir, \"k_2_seqseq\", \"seed_0\", \"template.npy\")\n", - "template_2d = np.load(template_path)\n", - "p1, p2 = template_2d.shape\n", - "\n", - "plt.imshow(template_2d)" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "dd4bf1a8", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/tmp/ipykernel_128294/1914126371.py:113: MatplotlibDeprecationWarning: The get_cmap function was deprecated in Matplotlib 3.7 and will be removed in 3.11. Use ``matplotlib.colormaps[name]`` or ``matplotlib.colormaps.get_cmap()`` or ``pyplot.get_cmap()`` instead.\n", - " colormap = plt.cm.get_cmap(cmap)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Outliers from k_2_seqseq removed for plot\n", - "Outliers from k_3_seqseq removed for plot\n", - "Outliers from k_4_seqseq removed for plot\n", - "Outliers from k_5_seqseq removed for plot\n", - "Outliers from k_6_seqseq removed for plot\n", - "Outliers from k_7_seqseq removed for plot\n", - "Outliers from k_8_seqseq removed for plot\n" - ] - }, - { - "data": { - "image/png": "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+Pj4ULt2bXksq5jMZEqSJEmSJEm3PCEE58+fR61WExgYeMuUCgohMBqNaDQamTG6BkIIcnNzSUpKAsDf379St2fGTGU9yqi8Nd84MpMpSZIkSZIk3fKMRiO5ubkEBATg5uZW1ckpN5nJvH5cXV0BSEpKombNmjes6qxUksxkSpIkSZIkSbc8k8kEgE6nq+KUSFXJ+oChsLCwUjOZJiEwicppk1lZ672Rbo16BJIkSZIkSZJUDrI08L9Nnv+bgyzJlCRJkiRJkiRJqoCbqXfZm5EsyZQkSZIkSZKkKtK9e3deeeWVqk6GJF1XMpMpSZIkSZIkSbeYH374gc6dO+Pr64uvry+9evVix44dVZ2s/wwzAlMlvWRJpiRJkiRJkiRJN9zGjRt58MEHiY6OZtu2bQQGBtKnTx8SExOrOmmSJDOZkiRJkiRJknSzWL58Od7e3vz888+lxv38888888wzNG/enPr16zNjxgzMZjPr168v13a+/vprIiIicHFxoVatWtx77722eWazmY8++oh69erh6upKs2bNWLRokd3yK1asIDIyEldXV7p3787s2bNRFIWMjAwA4uPjGTRoEL6+vri7u9OoUSNWrFhhW/7QoUPceeedeHh4UKtWLYYPH05KSoptfk5ODo888ggeHh74+/szdepUunXrxosvvliu/ats1jaZlfW61clMpiRJkiRJkiTdBObPn8+DDz7Izz//zMMPP1yhZXNzcyksLKRatWplxu7atYvnn3+e9957j+PHj7Nq1Sq6dOlim//RRx8xd+5cvv32Ww4fPsxLL73E//73PzZt2gRAQkICd999N4MGDWLfvn089thjjBs3zm4bY8aMoaCggM2bN3Pw4EGmTJmCh4cHABkZGfTo0YMWLVqwa9cuVq1axcWLF7n//vtty7/66qts2rSJP/74gzVr1rBx40b27NlToWMiVR3Zu6wkSZIkSZJ0W5r8yBdkpWbf8O16+Xkwbu7zFVrmq6++4q233uLPP/+ka9euFd7m66+/TkBAAL169Soz9syZM7i7uzNw4EA8PT0JDg6mRYsWABQUFDBp0iTWrVtH+/btAQgNDWXr1q189913dO3alW+++YawsDCmTp0KQFRUlC0jWXwb99xzD02aNLGtw+rLL7+kRYsWTJo0yTZt5syZBAYGcuLECQICAvjxxx+ZN28ePXv2BGDO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ccd/buWKa65j0+YtnDN2DJdechFDhwwBYOv2bew/cICg8CiPfaxWKwcOHiQ3N5eUlBMMGjjQvc1gMNC/b193bWtTa8i+k6dDn8xml2QmJydz77338ueff3r8w61KfHw8n3zyCSNGjKBt27bMnTvX/ctIUzn77LPRNDGyoyCcSXoNbcuJIxvRddiwZC+jr+hd4zIiI/wYflZr/lp6CFXTWLv+OGNHtXFvv7hPa/7edYJ8q4N1BzO42e7Ez2SgT2QY+5PCseoydl3GiBNd994vXRAE4YwghTZN5zAptEbhvXr3YsuWLXz40cf079evWvew0596mhuvv47/u3ky4KqJLCws4rY7p/D4ow8jy75fuKIo/PnrL/yzejV//LmYN9+ew+MznmLtyuX4+/sB8P6ctz2SvNL9qmv8eedyeP8eFv36O38uXsyYc89nyh3/4ZVZL1JQUEi/vn34bP5HFfaLioqs9jGE5qvZJZkbN24kLS2Nvn3Lmpmpqsry5ct56623sNlsXv+Bp6amctttt3HRRRexfv16pk6dyptvvlnr84iMjERRlAoDB6WmptKiRYtalysIwult4JhO/P7lRgCWfLuFEZf0QDFU/0u51NBBLd0D//y5JImB/WMJDjID4GcyMKRDFH9sP45T1dh4KJOzO8bQISQYTTNhc/iRqxqJMtixaRn46Q4kyVhvr1EQBOFUUdMmq02lXWIir740i1HjzkFRZN56fXaV+xQVFSNLnomkoriWq1PbJ0kSZw0dyllDhzLjicdIaN+R7374gWn33UtcXCwHkw757BfapXNnPvnsC6xWq7tSaI2XGRiioqKYNPEGJk28gWFnn8WDjzzGK7NepG+f3ixY+DXR0VEEBwdX2A8gNrYFa9etY/iwswFXTerGzZvpWzI9YFMTNZmVa3YD/4wZM4bt27ezZcsW96N///5cf/31bNmyxWuCmZGRwZgxY+jSpQvffvstixcvZsGCBTzwwAO1Pg+TyUS/fv1YvHixe52maSxevJghJVX9giAIJ4ttE073Qa5+J1lpBWxbfahW5bSICaRvL9cPWvmFdv73/iY0reymYXC7siZGaw9kANA5NBiDJFNUHEK2agR0CjUbosmsIAhC89exYwf+/uN3vvnuB+67v+p72IsuOJ85773Plwu+IinpEH/+tZjpTz/DRRecX2WN49p165j54kts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cV6tMIr4so0BYMCAAfj9999RXFyMjIwMrFy5EhdccEFdV5cC4Ms2/vHHH7FixQp07txZPkdo2bJlOO+88+q6uhQAX7bxkSNHcO+998oX/Bk7diy3bxTxta2m6OXLNs7KysL1118PwHXF6JEjR6Jnz551XleiQLCTSX679tprce2114a7GhRCX3/9dbirQCF08cUXQxTFcFeDQqhXr17YuXNnuKtBdeSOO+4IdxUoBFq1aoXff/893NUgCginy5IsLS0NarW62sUhsrKy0KhRozDVioKJ2zj2cRvHPm7j2MdtHPu4jSnWsZNJMp1Oh+7du2Pjxo3yOlEUsXHjRk6VjBHcxrGP2zj2cRvHPm7j2MdtTLGO02XrmaKiIvz999/y8qFDh7Bz506kpKSgefPmGDduHEaMGIEePXqgV69emDNnDoqLi3HnnXeGsdbkD27j2MdtHPu4jWMft3Hs4zamei3MV7elOvbtt99KAKr9jBgxQs689tprUvPmzSWdTif16tVL2rJlS/gqTH7jNo593Maxj9s49nEbxz5uY6rPBEmSpLrozBIREREREVHs4zmZREREREREFDTsZBIREREREVHQsJNJREREREREQcNOJhEREREREQUNO5lEREREREQUNOxkEhERERERUdCwk0lERERERERBw04mERERERERBQ07mURERERERBQ07GQSERERERFR0LCTSURE9UpxcTGmT5+O888/H4mJidDr9cjIyEDfvn0xYcIE/PPPP3K2ZcuWaNmyZfgqS0REFIU04a4AERFRXSksLMTFF1+MXbt2oU2bNrjtttuQmpqKnJwc/Prrr5g5cyZat26N1q1bh7uqREREUYudTCIiqjfmzJmDXbt24Z577sGbb74JQRDcnj906BCsVmuYakdERBQbOF2WiIjqjZ9//hkAMHr06GodTADIzMxE+/btcfjwYQiCgCNHjuDIkSMQBEH+mTp1qttrNm/ejCFDhiAtLQ16vR5t27bFU089hZKSErfcpk2b5Nf/8MMP6NevH4xGI5KSknDjjTfi77//DtnfTUREVJfYySQionojNTUVAPDnn396zSUlJWHKlCkwm80wm82YMmWK/NOvXz85N3/+fPTr1w8//vgjrr76ajz44IPIyMjA888/jyuuuAI2m61a2Vu2bEH//v1hNpsxduxYXHrppVizZg0uvPBCHDx4MKh/LxERUTgIkiRJ4a4EERFRXfj0008xdOhQGI1G3HvvvRg4cCC6d+8udz6rKr/oz+HDh6s9t2/fPnTp0gUdO3bExo0b3cqYOXMmJkyYgNmzZ+PRRx8F4BrJvOyyywAACxYswH333SfnFy5ciPvvvx/XXHMN1q5dG6S/loiIKDzYySQionrl5ZdfxpQpU1BUVCSva926Na688ko89NBDaNu2rbzeWyfzoYcewquvvorNmzejb9++bs+JoohGjRqhefPm2LZtG4CKTuY555yDP/74AyqVyi3fvn17/P3338jKykJ6enoQ/2IiIqK6xQv/EBFRvTJu3DiMHDkS69evx08//YRt27bhl19+wRtvvIHFixdjxYoVuPbaa2ssZ8uWLQCADRs2YOPGjdWe12q12L9/f7X1F110kVsHEwBUKhUuuugi/PXXX/j9998xYMCAAP86IiKi8GMnk4iI6h2j0Yibb74ZN998MwAgPz8fEydOxLx583D33XfjxIkT0Ol0XsvIy8sDADz//PN+/e6GDRt6XZ+fn+9XeURERJGGF/4hIqJ6z2w24/XXX0eLFi2Qk5OD3bt31/gak8kEACgoKIAkSYo/VWVlZXksr3y92WyuxV9CREQUfuxkEhERARAEAQkJCW7r1Go1nE6nx3zv3r0BVEyb9dWPP/4IURTd1omiiJ9++gmCIKBLly5+lUdERBRp2MkkIqJ6Y+HChdi6davH5z7++GP88ccfSEpKQqdOnQAAKSkpyMnJgcViqZZ/4IEHoNFoMHbsWBw9erTa82fPnsWOHTuqrf/zzz+xaNEit3WLFi3Cn3/+iauvvpoX/SEioqjHczKJiKjeWLduHe6//360adMGF110EZo0aYLi4mLs2LED33//PVQqFebNmwe9Xg8AuPzyy7Ft2zYMHjwYffv2hU6nwyWXXIJLLrkEnTp1wrx58zBq1Ci0a9cOV111FVq3bo3CwkIcPHgQ3333He644w4sWLDArQ6DBg3Cgw8+iC+++AIdO3bE3r17sXbtWqSlpWHu3Lnh+G8hIiIKKt7ChIiI6o0DBw7g008/xVdffYW///4bJ0+eBAA0bdoUF198McaOHYvu3bvL+aKiIowbNw6fffYZsrOz4XQ6MWXKFEydOlXObN26FS+//DI2b96M06dPw2w2o3nz5hg4cCBGjBiB9u3bA6i4hcmUKVMwYMAAPPXUU9i2bRvUajX69++PF154AW3atKnT/w8iIqJQYCeTiIioDlTuZFbupBIREcUanpNJREREREREQcNOJhEREREREQUNO5lEREREREQUNDwnk4iIiIiIiIKGI5lEREREREQUNOxkEhERERERUdCwk0lERERERERBw04mERERERERBQ07mURERERERBQ07GQSERERERFR0LCTSUREREREREHDTiYREREREREFDTuZREREREREFDT/D2d0myof8h7EAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Theory plateau levels:\n", - " Plateau 0: 5.298448e-02\n", - " Plateau 1: 4.530677e-02\n", - " Plateau 2: 3.806381e-02\n", - " Plateau 3: 3.347446e-02\n", - " Plateau 4: 2.991633e-02\n", - " Plateau 5: 2.651234e-02\n", - " Plateau 6: 2.485670e-02\n", - " Plateau 7: 2.321230e-02\n", - " Plateau 8: 2.157320e-02\n", - " Plateau 9: 2.010709e-02\n", - " Plateau 10: 1.874044e-02\n" - ] - } - ], - "source": [ - "# First, load the template from one of your experiments\n", - "# (assuming they all use the same template)\n", - "template_path = os.path.join(sweep_dir, \"k_2_seqseq\", \"seed_0\", \"template.npy\")\n", - "template_2d = np.load(template_path)\n", - "p1, p2 = template_2d.shape\n", - "\n", - "# Plot with theory lines\n", - "fig, ax, theory_levels = plot_loss_comparison(\n", - " sweep_dir,\n", - " template_2d=template_2d,\n", - " p1=p1,\n", - " p2=p2,\n", - " remove_outliers=True,\n", - " num_theory_lines=10, # Show first 10 theory lines\n", - " log_scale=True,\n", - " cmap=\"viridis\",\n", - ")\n", - "\n", - "# Print the theory levels (plateau values)\n", - "print(\"Theory plateau levels:\")\n", - "for i, level in enumerate(theory_levels):\n", - " print(f\" Plateau {i}: {level:.6e}\")" - ] - }, - { - "cell_type": "markdown", - "id": "ead6933c", - "metadata": {}, - "source": [ - "### Time to reach plateau" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "4e1d02b4", - "metadata": {}, - "outputs": [], - "source": [ - "def calculate_time_to_plateau(\n", - " sweep_dir: str,\n", - " template_2d: np.ndarray,\n", - " p1: int,\n", - " p2: int,\n", - " target_plateau_idx: int = 1,\n", - " loss_type: str = \"train\",\n", - " seed: int = 0,\n", - " tolerance: float = 1.1,\n", - " experiments: Optional[List[str]] = None,\n", - ") -> Dict[str, int]:\n", - " \"\"\"\n", - " Calculate the step at which each experiment's loss reaches a target plateau.\n", - "\n", - " Args:\n", - " sweep_dir: Path to sweep directory\n", - " template_2d: 2D template array for computing theory lines\n", - " p1, p2: Dimensions of template\n", - " target_plateau_idx: Index of target plateau (1 = first drop, 2 = second drop, etc.)\n", - " loss_type: 'train' or 'val'\n", - " seed: Seed number\n", - " tolerance: Multiplier for plateau threshold (loss must be <= tolerance * plateau_level)\n", - " experiments: List of experiment names (None = all experiments)\n", - "\n", - " Returns:\n", - " Dictionary mapping experiment names to step numbers\n", - " \"\"\"\n", - " from gagf.rnns.utils import get_power_2d_adele\n", - "\n", - " # Compute theory levels\n", - " _, _, power = get_power_2d_adele(template_2d)\n", - " power_flat = np.sort(power.flatten()[power.flatten() > 1e-20])[::-1]\n", - " alpha_values = np.array([np.sum(power_flat[k:]) for k in range(len(power_flat))])\n", - " coef = 1.0 / (p1 * p2)\n", - " theory_levels = coef * alpha_values\n", - "\n", - " if target_plateau_idx >= len(theory_levels):\n", - " raise ValueError(\n", - " f\"target_plateau_idx {target_plateau_idx} exceeds available plateaus ({len(theory_levels)})\"\n", - " )\n", - "\n", - " target_level = theory_levels[target_plateau_idx]\n", - " threshold = tolerance * target_level\n", - "\n", - " if experiments is None:\n", - " experiments = get_sweep_experiments(sweep_dir)\n", - "\n", - " times_to_plateau = {}\n", - "\n", - " for exp_name in experiments:\n", - " losses = load_experiment_losses(sweep_dir, exp_name, seed)\n", - " if loss_type in losses:\n", - " loss_history = losses[loss_type]\n", - "\n", - " # Find first step where loss drops below threshold\n", - " crossing_indices = np.where(loss_history <= threshold)[0]\n", - "\n", - " if len(crossing_indices) > 0:\n", - " times_to_plateau[exp_name] = crossing_indices[0]\n", - " else:\n", - " times_to_plateau[exp_name] = None # Never reached\n", - "\n", - " return times_to_plateau, theory_levels\n", - "\n", - "\n", - "def plot_time_to_plateau(\n", - " sweep_dir: str,\n", - " template_2d: np.ndarray,\n", - " p1: int,\n", - " p2: int,\n", - " target_plateau_idx: int = 1,\n", - " loss_type: str = \"train\",\n", - " seed: int = 0,\n", - " tolerance: float = 1.1,\n", - " experiments: Optional[List[str]] = None,\n", - " figsize: tuple = (10, 6),\n", - " sort_by: str = \"time\",\n", - "):\n", - " \"\"\"\n", - " Plot the time to reach a target plateau for different experiments.\n", - "\n", - " Args:\n", - " sweep_dir: Path to sweep directory\n", - " template_2d: 2D template array\n", - " p1, p2: Template dimensions\n", - " target_plateau_idx: Which plateau to measure (1 = first drop)\n", - " loss_type: 'train' or 'val'\n", - " seed: Seed number\n", - " tolerance: Multiplier for plateau threshold\n", - " experiments: List of experiment names (None = all)\n", - " figsize: Figure size\n", - " sort_by: 'time' (sort by time to plateau) or 'name' (alphabetical)\n", - " \"\"\"\n", - " times, theory_levels = calculate_time_to_plateau(\n", - " sweep_dir,\n", - " template_2d,\n", - " p1,\n", - " p2,\n", - " target_plateau_idx,\n", - " loss_type,\n", - " seed,\n", - " tolerance,\n", - " experiments,\n", - " )\n", - "\n", - " # Filter out experiments that never reached the plateau\n", - " reached = {k: v for k, v in times.items() if v is not None}\n", - " not_reached = [k for k, v in times.items() if v is None]\n", - "\n", - " if not reached:\n", - " print(\"No experiments reached the target plateau!\")\n", - " return\n", - "\n", - " # Sort experiments\n", - " if sort_by == \"time\":\n", - " sorted_items = sorted(reached.items(), key=lambda x: x[1])\n", - " else: # alphabetical\n", - " sorted_items = sorted(reached.items(), key=lambda x: x[0])\n", - "\n", - " exp_names = [item[0] for item in sorted_items]\n", - " steps = [item[1] for item in sorted_items]\n", - "\n", - " # Create bar plot\n", - " fig, ax = plt.subplots(figsize=figsize)\n", - " bars = ax.bar(range(len(exp_names)), steps, alpha=0.7, edgecolor=\"black\")\n", - "\n", - " # Color bars by value (gradient)\n", - " colors = plt.cm.viridis(np.linspace(0.2, 0.9, len(steps)))\n", - " for bar, color in zip(bars, colors):\n", - " bar.set_color(color)\n", - "\n", - " ax.set_xticks(range(len(exp_names)))\n", - " ax.set_xticklabels(exp_names, rotation=45, ha=\"right\")\n", - " ax.set_xlabel(\"Experiment\", fontsize=12)\n", - " ax.set_ylabel(\"Steps to Reach Plateau\", fontsize=12)\n", - " ax.set_title(\n", - " f\"Time to Reach Plateau {target_plateau_idx} (Level: {theory_levels[target_plateau_idx]:.2e})\",\n", - " fontsize=13,\n", - " )\n", - " ax.grid(True, alpha=0.3, axis=\"y\")\n", - "\n", - " # Add value labels on bars\n", - " for i, (bar, step) in enumerate(zip(bars, steps)):\n", - " height = bar.get_height()\n", - " ax.text(\n", - " bar.get_x() + bar.get_width() / 2.0,\n", - " height,\n", - " f\"{int(step):,}\",\n", - " ha=\"center\",\n", - " va=\"bottom\",\n", - " fontsize=9,\n", - " )\n", - "\n", - " plt.tight_layout()\n", - "\n", - " # Print summary\n", - " print(\n", - " f\"\\nTime to reach plateau {target_plateau_idx} (threshold: {theory_levels[target_plateau_idx]:.2e}):\"\n", - " )\n", - " print(\"-\" * 60)\n", - " for name, step in sorted_items:\n", - " print(f\" {name:30s}: {step:8,} steps\")\n", - "\n", - " if not_reached:\n", - " print(f\"\\nExperiments that did not reach plateau {target_plateau_idx}:\")\n", - " for name in not_reached:\n", - " print(f\" - {name}\")\n", - "\n", - " plt.show()\n", - "\n", - " return fig, ax, times, theory_levels" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "b5b266d4", - "metadata": {}, - "outputs": [], - "source": [ - "def plot_time_to_plateau(\n", - " sweep_dir: str,\n", - " template_2d: np.ndarray,\n", - " p1: int,\n", - " p2: int,\n", - " target_plateau_idx: int = 1,\n", - " loss_type: str = \"train\",\n", - " seed: int = 0,\n", - " tolerance: float = 1.1,\n", - " experiments: Optional[List[str]] = None,\n", - " figsize: tuple = (10, 6),\n", - " sort_by: str = \"time\",\n", - " color_by_k: bool = True,\n", - " cmap: str = \"viridis\",\n", - "):\n", - " \"\"\"\n", - " Plot the time to reach a target plateau for different experiments.\n", - "\n", - " Args:\n", - " sweep_dir: Path to sweep directory\n", - " template_2d: 2D template array\n", - " p1, p2: Template dimensions\n", - " target_plateau_idx: Which plateau to measure (1 = first drop)\n", - " loss_type: 'train' or 'val'\n", - " seed: Seed number\n", - " tolerance: Multiplier for plateau threshold\n", - " experiments: List of experiment names (None = all)\n", - " figsize: Figure size\n", - " sort_by: 'time' (sort by time to plateau) or 'name' (alphabetical)\n", - " color_by_k: Whether to color bars by k value (default: True)\n", - " cmap: Colormap name for k-based coloring (default: 'viridis')\n", - " \"\"\"\n", - " times, theory_levels = calculate_time_to_plateau(\n", - " sweep_dir,\n", - " template_2d,\n", - " p1,\n", - " p2,\n", - " target_plateau_idx,\n", - " loss_type,\n", - " seed,\n", - " tolerance,\n", - " experiments,\n", - " )\n", - "\n", - " # Filter out experiments that never reached the plateau\n", - " reached = {k: v for k, v in times.items() if v is not None}\n", - " not_reached = [k for k, v in times.items() if v is None]\n", - "\n", - " if not reached:\n", - " print(\"No experiments reached the target plateau!\")\n", - " return\n", - "\n", - " # Sort experiments\n", - " if sort_by == \"time\":\n", - " sorted_items = sorted(reached.items(), key=lambda x: x[1])\n", - " else: # alphabetical\n", - " sorted_items = sorted(reached.items(), key=lambda x: x[0])\n", - "\n", - " exp_names = [item[0] for item in sorted_items]\n", - " steps = [item[1] for item in sorted_items]\n", - "\n", - " # Extract k values and set up colormap\n", - " k_values = []\n", - " if color_by_k:\n", - " import re\n", - "\n", - " for exp_name in exp_names:\n", - " # Try to extract k value from experiment name (e.g., \"k_2_seqseq\" -> 2)\n", - " match = re.search(r\"k[_\\s]*(\\d+)\", exp_name, re.IGNORECASE)\n", - " if match:\n", - " k_values.append(int(match.group(1)))\n", - " else:\n", - " k_values.append(None)\n", - "\n", - " # Check if we have valid k values\n", - " valid_k_values = [k for k in k_values if k is not None]\n", - " if valid_k_values:\n", - " k_min = min(valid_k_values)\n", - " k_max = max(valid_k_values)\n", - " norm = plt.cm.colors.Normalize(vmin=k_min, vmax=k_max)\n", - " colormap = plt.cm.get_cmap(cmap)\n", - " scalar_map = plt.cm.ScalarMappable(norm=norm, cmap=colormap)\n", - " else:\n", - " color_by_k = False # Fall back if no k values found\n", - "\n", - " # Create bar plot\n", - " fig, ax = plt.subplots(figsize=figsize)\n", - " bars = ax.bar(range(len(exp_names)), steps, alpha=0.7, edgecolor=\"black\")\n", - "\n", - " # Color bars\n", - " if color_by_k and valid_k_values:\n", - " for bar, k_val in zip(bars, k_values):\n", - " if k_val is not None:\n", - " bar.set_color(scalar_map.to_rgba(k_val))\n", - " else:\n", - " bar.set_color(\"gray\") # Fallback color\n", - " else:\n", - " # Color bars by position (gradient from blue to yellow)\n", - " colors = plt.cm.viridis(np.linspace(0.2, 0.9, len(steps)))\n", - " for bar, color in zip(bars, colors):\n", - " bar.set_color(color)\n", - "\n", - " ax.set_xticks(range(len(exp_names)))\n", - " ax.set_xticklabels(exp_names, rotation=45, ha=\"right\")\n", - " ax.set_xlabel(\"Experiment\", fontsize=12)\n", - " ax.set_ylabel(\"Steps to Reach Plateau\", fontsize=12)\n", - " ax.set_title(\n", - " f\"Time to Reach Plateau {target_plateau_idx} (Level: {theory_levels[target_plateau_idx]:.2e})\",\n", - " fontsize=13,\n", - " )\n", - " ax.grid(True, alpha=0.3, axis=\"y\")\n", - "\n", - " # Add value labels on bars\n", - " for i, (bar, step) in enumerate(zip(bars, steps)):\n", - " height = bar.get_height()\n", - " ax.text(\n", - " bar.get_x() + bar.get_width() / 2.0,\n", - " height,\n", - " f\"{int(step):,}\",\n", - " ha=\"center\",\n", - " va=\"bottom\",\n", - " fontsize=9,\n", - " )\n", - "\n", - " # Add colorbar if coloring by k\n", - " if color_by_k and valid_k_values:\n", - " cbar = plt.colorbar(scalar_map, ax=ax, label=\"k (sequence length)\", pad=0.02)\n", - " cbar.ax.tick_params(labelsize=10)\n", - "\n", - " plt.tight_layout()\n", - "\n", - " # Print summary\n", - " print(\n", - " f\"\\nTime to reach plateau {target_plateau_idx} (threshold: {theory_levels[target_plateau_idx]:.2e}):\"\n", - " )\n", - " print(\"-\" * 60)\n", - " for name, step in sorted_items:\n", - " print(f\" {name:30s}: {step:8,} steps\")\n", - "\n", - " if not_reached:\n", - " print(f\"\\nExperiments that did not reach plateau {target_plateau_idx}:\")\n", - " for name in not_reached:\n", - " print(f\" - {name}\")\n", - "\n", - " plt.show()\n", - "\n", - " return fig, ax, times, theory_levels" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "b015323f", - "metadata": {}, - "outputs": [], - "source": [ - "# Load template\n", - "template_path = os.path.join(sweep_dir, \"k_2_seqseq\", \"seed_0\", \"template.npy\")\n", - "template_2d = np.load(template_path)\n", - "p1, p2 = template_2d.shape\n", - "\n", - "# get the times without plotting\n", - "times_dict, theory_levels = calculate_time_to_plateau(\n", - " sweep_dir, template_2d, p1, p2, target_plateau_idx=1\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "eb63ea4a", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Time to reach plateau 1 (threshold: 4.53e-02):\n", - "------------------------------------------------------------\n", - " k_2_seqseq : 33 steps\n", - " k_3_seqseq : 41 steps\n", - " k_4_seqseq : 47 steps\n", - " k_5_seqseq : 53 steps\n", - " k_6_seqseq : 57 steps\n", - " k_7_seqseq : 63 steps\n", - " k_8_seqseq : 67 steps\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/tmp/ipykernel_128294/2488080501.py:81: MatplotlibDeprecationWarning: The get_cmap function was deprecated in Matplotlib 3.7 and will be removed in 3.11. Use ``matplotlib.colormaps[name]`` or ``matplotlib.colormaps.get_cmap()`` or ``pyplot.get_cmap()`` instead.\n", - " colormap = plt.cm.get_cmap(cmap)\n" - ] - }, - { - "data": { - "image/png": "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rr/+elWtWlVjxozRzp07NWXKFN12223q2rWrZs2apf79+ysyMlJTpkxR9+7d9d///le1atVyP//pp5/WCy+8oOuvv17PPfecbDabPvzwQ/Xo0UNTp07VwIEDz/ra7dq101NPPaWxY8d6DL+tWLGiJCk7O1udOnXSmjVr1L17dz3xxBPasWOHpk+frq+++kobN25U1apVvXrf2dnZ2rt3r2w2m8qUKePev2nTJnXo0EFlypTRgw8+qAsuuEBbt27VlClTtGbNGq1cuVJhYWGSzhQyq1at0k033aRatWopIyNDixYt0v3336+jR49q+PDh7rgpKSlq06aN/vOf/6h79+56+OGH5XQ6tXnzZn322Wfq2bOnR36dOnVSYmKiRo4cqePHj2vixInq3Lmzdu3apbi4OK/es8Ph0N69exUaGurxnv/qxx9/1OLFi3XbbbepTp06ys7O1pIlSzRs2DD99ttvmjlzpiSpa9euOnjwoGbNmqWnnnpKDRo0kCTVqVPH/Rlff/31+u6773T33XfrkUceUWpqql5//XW1bt1aq1atUosWLSRJWVlZevnll9WtWzd16dJFMTEx2rBhg2bPnq3Vq1dr06ZNCg8P9+p9F6eVK1eqTJkyqlevntcx7r77bv3rX/9S9+7ddc8998jhcOidd97Rtddeq8WLF+uWW25RmTJldMstt+jjjz/WiRMnVK5cOffzXS6X3nnnHTVu3Ng9DDw1NVVXXnml9u7dq3vvvVcNGzbUwYMHNW3aNF1xxRXauHGju9A6mz59+mjlypXatWtXgYcnv/LKK/rll1/0wQcfePtx6MCBA4qNjdXp06cVHR2tTp06aezYsapfv36+56elpcnhcMhut2vNmjV68cUXVb58eV1xxRUe5xXlZ1WuDRs26IILLlC1atU89lerVk1VqlTRhg0b/jbG/v37Jf3v59yfVapUSTVr1vTqXlwAKBQ/94AC8LO/G8Ka37DI3H0DBgzw2D948GAjyVSrVs2kpqa692/dutVIMsOGDXPv27Rpk5Fkhg8fnuc1u3TpYuLi4ozdbj9n7ucaPjdr1iwjyQwdOtRj/2effWYkmbvuuuucsY3532fz5ptvmqNHj5rDhw+bjRs3mu7duxtJpkePHh7nN27c2Fx00UV58l68eHGePNPT0/O8ntPpNFdddZWJj483WVlZ7v0PP/ywkWRmzpyZ73Ny5bbLww8/7HHOe++9ZySZGTNmePWev//+e9OlSxcjyfTs2dN9bn5DWE+dOmVcLleeuHfddZex2Wzm999/z/Na+Q39nDhxopFklixZ4rE/NTXVVKtWzVx11VXufS6Xy5w6dSpPjDfeeMNIMu+++65737n+z3g7BNjbIazVq1c3zZo1y/dYQYaw5v6/+uv/i+zsbNO8eXNTs2ZNd1vk/r9/7bXXPM5dtmyZkWQmTJjg3vfoo4+ayMhIs2XLFo9zd+/ebeLi4kzfvn3d+872eV511VWFGt7822+/mejoaDN+/HhjjDG7du0q9BDWfv36maeeesosXLjQLFq0yAwZMsRERkaa+Ph48+OPP+b7nG7duhlJ7u2KK64wGzdu9DjHFz+rjDEmNjbWXH755fkeu+yyy0zlypX/NkaPHj2MJLN8+fJ8j19zzTUmNjb2b+MAQFEwhBWA1/46FCu3F7BPnz6Kj49372/cuLHi4+O1Y8cO97533nlHlmWpb9++OnbsmMd2yy23KC0tTWvXrvU6tw8//FA2m82jJ0+SOnfurKZNm+rjjz+Wy+UqUKx7771XiYmJqlixolq0aKEPPvhA999/v9588033Odu2bdOPP/6oO++8Uw6Hw+P9tGnTRjExMfrqq6/c58fExLj/nZmZqePHj+vEiRO67rrrZLfb9csvv0g600O0cOFCNWjQQA888ECe3Gy2vD/GBw8e7PG4Q4cOkuTx+RfmPV9++eX64osv1LdvX73++uvnfF5UVJR7GGhWVpZOnDihY8eOqVOnTnK5XHlmwzyb+fPnq379+mrevLnHZ5mVlaVrr71Wq1ev1unTpyWdmVk4KipK0plhkCkpKTp27Jj7fRd1+G5xOXr0qEdvYGHNnz/fPXT8z59RSkqKbr75Zu3evdvd5p06dVLFihXzzKQ7b948hYaGqnfv3pLODIl955131K5dO11wwQUecWNiYtSyZUuP/8dn880338gYU+Dex4ceeki1a9dWcnJy4T6EP5kzZ45eeOEF3XHHHerevbtefvllffXVV0pPTz9r3GeffVZLly7VggULdP/990tSnmHPvvpZderUqbMOe46MjNSpU6fO+fwJEyZo0aJFeuCBB9z/t/+qfPnySk9Pd383AKA4MIQVgNf+OrNh2bJlJcljmOqfj/35wuznn3+WMeasQ8sk6fDhw17ntmvXLlWpUsWd0581bNhQW7Zs0bFjx5SUlPS3sUaOHKm2bdvK4XDo+++/10svvaSDBw96DIv8+eefJZ25IH322WfzjfPn95Oenq5Ro0bpvffe0759+/Kcm3sP1rFjx3Ty5Eldf/31f5tnrr+2S/ny5SXlvTA+l9z3bLPZFBcXp/r16xdo+GtOTo7Gjx+vefPmaefOnXnuQ8vv3rL8/Pzzzzp9+rQSExPPes6xY8fcwwHfe+89TZgwQZs3b85z311BX7OkWZbl1X16uX7++WelpaXlO5wx1+HDh1WvXj13kThx4kT997//Vb169ZSRkaHFixfruuuuc8c4evSojh8/rq+++uqsn31+f7Qoivnz52vp0qVatWqVe4i3r7Rt21bt2rXTihUrdPr0afcfGnI1atRIjRo1kiT16tVLM2fO1A033KBVq1a51+YszM+qEydOKCsry+NY7r2M0dHRcjgc+T4/MzNT0dHRZ43/xhtvaOjQoercubOmTp161vNy/z+xdi+A4kQBCcBrISEhhdr/54tlY4wsy9KXX3551vMbNmxY9CR9oFGjRurYsaOkMz2YDRo0UK9evTRy5EiNHz9e0v/e2xNPPHHWYu/Pxeydd96pzz77TA888IDatWun8uXLKyQkRF988YVeeeWVAveO5qcgn//f+fN7Lozk5GS9+uqruuOOOzRixAglJSUpLCxMP/zwg5588skCvy9jjBo1aqSJEyee9ZzcAmfx4sW64447dPnll2vy5MmqVq2aIiMj5XQ6df3113u85rkurHNycgr4Ln0jMTFRJ06c8Pr5xhglJia6J2fJzyWXXOL+d58+fTRx4kTNmzdPzz//vBYvXqz09HT17dvXI6YkdezYUU8++aTXuRWUw+FQcnKybrzxRlWqVEk7d+6UdOZeRunM/Zg7d+5UhQoVznnv7bnk3hd48uTJPAXkX911110aMGCAZsyY4S4gC/OzqmvXrlq5cqXHsdzPtEqVKu739VcHDhzQBRdckO+xN998Uw888ICuu+46ffDBB+cssk+cOKHY2FhFRkae830CQFFQQALwi7p162rJkiWqXr26ewKVwjpXMVC7dm0tWbJEKSkpeS48t2/frvj4eFWoUMGr1+3Zs6dmzJihV155RQ899JBq1qypunXrSjpTvP1d4ZWSkqLPPvtMd999d541NpctW+bxuEKFCipbtqy2bt3qVa4l7e2331a7du3yzA6bWxj82bnar27dujp69Kg6dOjwtz1eb7/9tiIjI7VixQqPXpzcYcB/ljtkNL/CraAzjPrKJZdcolWrVsnlcnnVq1e3bl3997//VcuWLRUbG/u35zdp0kRNmjTR/Pnz9dxzz2nevHnuCXZyJSYmqkyZMrLb7V79AaGwTp8+raNHj+rzzz/X559/nuf4/PnzNX/+fL388ssaMmSIV6+xY8cOhYaGFmi4cFZWllwul8f/j8L8rJowYcJZe7wvu+wyvfPOO9q3b5/HRDr79u3T77//nu/6jW+++abuu+8+dezYUR999NHfzvy7c+dOjz8aAEBx4B5IAH5x9913S5Keeuopj+UdchVk+GruRXN+xcCtt94ql8vl7iHM9eWXX2rz5s265ZZbijQU79lnn1VWVpaef/55SVKzZs10ySWXaMaMGfkWIjk5Oe48c3sx/tojePDgwTzLeNhsNvXq1Uvbt2/X7Nmz88QtyhDI4hASEpInp4yMjHwXdz9X+/Xp00eHDh06aw/kn/9/hISEyLIsj55GY4y7bf6sVq1aCg0NzVOof/fdd1q3bt053pnvtW/fXmlpadq+fbtXz+/Tp49cLlee+3xz5fcd6tu3r/bs2aMFCxbo66+/1h133OHRW2Wz2dS7d299//33Z12i4siRI3+bW0GX8YiJidGiRYvybNOmTZN0ZqbnRYsWeRRXBw8e1C+//OJxz2Bqamq+P0c+//xzrVmzRtdee63H+8xdbuivpkyZIklq2bKle19hflY1b95cHTt29Nhy9erVS5I0adIkj+fnPs69DzXX3Llzdf/996tDhw76+OOP/7ZX8dChQ9qzZ4+uuuqqc54HAEVFDyQAv7jssss0atQojRo1Sk2bNlWPHj1UpUoVHTx4UJs2bdIXX3yR516iv7r44osVFxenadOmKTo6WmXKlFFSUpI6dOigfv366a233tKLL76o3bt3q127dtq5c6emTZumihUrauzYsUXK/+qrr1br1q311ltv6amnnlLt2rX19ttvq0OHDmrcuLF7+YNTp05p586dWrx4scaNG6d+/fopLi5O1113nebPn6+oqChddtll2rNnj2bOnKlatWrluVfx+eef19dff6377rtPX331ldq0aSNjjDZv3qycnBy9/fbbRXovvtS9e3fNnDlTd9xxhzp2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4lVCAAAAABAQjHVm83VMSdWqVfPY/eyzz2rUqFEe+6644grNnTtXF110kQ4ePKjRo0erbdu2+umnnxQXF/e3L/Xiiy+qXbt2uuiii9S2bVtJ0rfffiu73a6vv/7aq/S9KiDbtGnjUbFWq1ZNP//8s7Zt26aQkBDVr19foaFFWmISAAAAAM5b+/btU3x8vPtxREREnnNuuOEG978bN26sK664QjVq1NB7772n/v37/+1rXHzxxfrxxx81depUbd26VVFRUerTp48eeeQRlStXzqu8fVbl2Ww2NWnSxFfhUMIGDRqkjz76SKmpqYqLi1OPHj300ksvKTw8XN27d9eaNWuUkZGh8uXLq3///nr66af9nTIAAABQvIpj2Y0/4sXHx3sUkAVRpkwZ1atXTzt37izwc6pUqaKxY8cW6nXOxat7IKUzY3bHjx+vTp06qVmzZvr+++8lSSdOnNDEiRML9abgfwMGDNAvv/wiu92urVu3auvWrXrppZcknelO3717t+x2u1auXKkFCxZo/vz5fs4YAAAAKF3S09P1f//3f6pcuXKBn5OSkqKvvvpK8+fP17x58zw2b3jVA7l//35dddVV2rdvn+rWratffvlF6enpkqRy5cpp5syZ2rNnjyZPnuxVUih5DRo0cP/bGCObzeZedLRRo0buY5ZleRwDAAAAzlvF2ANZEEOGDNHNN9+sGjVq6Pfff9ezzz6rkJAQ9erVq0DP//TTT9W7d2+lp6crPj5elvW/+zkty1KfPn0Km713PZBDhw5VWlqatmzZopUrV8oYz0/h1ltv1bJly7wJDT8aP368YmNjlZSUpK1bt2rQoEHuYwMGDFB0dLSqV6+u9PR0rxceBQAAAIKFZYpnK6j9+/erV69euuiii3T77berfPnyWrdunRITEwv0/CeeeEL33nuv0tPTlZKSopMnT7q3EydOePWZeFVAfvXVV3r00Ud18cUXe1SxuWrXrq19+/Z5lRD8Z9iwYUpPT9f27dv10EMPeaw3M23aNKWnp2vDhg3q06ePypYt68dMAQAAgPPfwoUL9fvvv8vhcGj//v1auHCh6tSpU+DnHzhwQI8++qiio6N9lpNXBeTp06fPWfXmt1glgkeDBg3UpEmTPL2MNptNLVq0UFxcnIYMGeKf5AAAAICSYoppKyGdOnXSxo0bfRrTq3sgL774Yq1atUoPPvhgvsc/+ugjNWvWrEiJwb+ys7PPep/juY4BAAAACAydO3fW0KFDtX37djVq1EhhYWEex2+55ZZCx/SqgHz88cfVt29fNW7cWD169JAkuVwu7dy5U6NHj9batWv1wQcfeBMafpCenq5FixbptttuU0JCgn766Sc9//zz6tSpk/bs2aONGzeqU6dOio6O1rp16zRlyhQ9+uij/k4bAAAAKF5+nkSnqO6//35J0pgxY/IcsyxLTqez0DG9KiDvuusu7dmzR08//bRGjBghSbr++uvds3eOHTtWt956qzeh4QeWZWnBggUaMmSIHA6HkpKS1K1bN40ePVpHjx7VpEmT1L9/f7lcLlWpUkWDBg3SsGHD/J02AAAAgHNwuVw+j+lVASlJI0aM0N13360PPvhAO3fulMvlUp06ddS1a1fVrl3blzmimMXExGjp0qX5HqtRo4a+/fbbEs4IAAAA8L/Czppa0Jj+kJmZqcjIyCLH8bqAlKTq1atr8ODBefafPHlSr776qkaOHFmU8AAAAADgP8Y6s/k6ZglxOp0aO3asZsyYocOHD+u///2vateurWeeeUY1a9ZU//79Cx2z0AWkMUZHjhxRmTJlFBER4XFs//79mjhxot544w1lZGRQQBZAytFUnbKf9ncaQS06PkplEhP8nQYAAAAQUF544QW99dZbeumll9z3Q0rSJZdc4r5NrbAKXEAaYzRy5Ei9+uqrSktLk2VZ6ty5s+bMmaPIyEg99dRTmjlzprKysnTjjTdq6NChhU6mtEk5mqpxvSfLfpxlT4oivnychr/zGEUkAAAAfCvIJ9GZN2+eZs2apWuuuUYPPfSQe3+TJk30yy+/eBWzwAXklClT9MILL6hGjRq67rrrtGvXLn366afq37+/jh49qvXr1+uuu+7SP/7xDzVo0MCrZEqbU/bTsh9PU1hEuCKiwv2dTlBynM6S/XiaTtlPU0ACAAAAf3LgwAFdeOGFefa7XC5lZ2d7FbPABeSbb76pyy+/XCtXrnQPXf3HP/6hf/7zn6patap++OEHNWrUyKskSruIqHBFxkT8/YnIV7Yjy98pAAAA4DwU7JPoXHzxxfr2229Vo0YNj/3vv/++mjVr5lXMAheQO3bs0Pjx4z3ue7zvvvv0z3/+UyNGjKB4BAAAAIAAMnLkSPXt21cHDhyQy+XS4sWL9euvv2revHn67LPPvIppK+iJmZmZqlChgse+8uXLS5Lq1Knj1YsDAAAAQMAyxbSVkC5duujTTz/VsmXLFBMTo5EjR+rnn3/Wp59+qmuvvdarmIWahdWy8p9yNiQkxKsXBwAAAICAVQxDWEuygJSktm3bnnXNd28UqoAcNmyYxo0b537sdDolnRnKGhMT43GuZVnaunWrD1IEAAAAAASCAheQ7dq1y7cHMikpyacJAQAAAEBACPJlPGw221lHkUr/6xAsjAIXkN98802hgwMAAAAA/OPDDz/0eJydna3Nmzfrrbfe0ujRo72KWaghrAAAAABQagR5D2SXLl3y7OvevbsaNmyod999V/379y90zALPwgoAAAAACH4tW7bU8uXLvXouPZAAAAAAkA+rGGZh9fmsroV0+vRpTZkyRRdccIFXz6eABAAAAIDzUNmyZT0m0THGKC0tTdHR0Zo/f75XMSkgAQAAAOA89Morr3gUkDabTYmJibriiitUtmxZr2JSQAIAAABAfoJ8Ep1+/fr5PGaRCsiMjAytXLlSe/bskSTVqFFDV111lWJiYryKN336dE2fPl27d++WJDVs2FAjR47UDTfcIEnKzMzUE088oYULF8rhcKhTp06aNm2aKlasWJS3AQAAAADnnR9//LHA5zZu3LhA53ldQL766qt6+umnlZ6eLmP+V0bHxcXphRde0COPPFLomFWrVtX48eNVt25dGWP01ltvqUuXLtq8ebMaNmyowYMH6/PPP9eiRYuUkJCgRx55RF27dtWaNWu8fRsAAAAAkK9gn0SnadOmHkNY82OMkWVZcjqdBYrpVQE5b948PfbYY2rVqpUeffRRNWjQQJL0888/69VXX9Vjjz2mhIQE3X333YWKe/PNN3s8fuGFFzR9+nStW7dOVatW1ezZs7VgwQJ16NBBkjRnzhw1aNBA69atU8uWLb15KwAAAABwXlq8eLGGDBmioUOHqlWrVpKktWvXasKECXrppZfUrFmzQsf0qoCcOHGi2rVrp+XLlyskJMS9v3HjxurevbuuueYaTZgwodAF5J85nU4tWrRIGRkZatWqlTZt2qTs7Gx17NjRfU79+vVVvXp1rV279qwFpMPhkMPhcD+22+2SJJfLJZfL5XV+vnCm2peUu6HwLMmyznyWvmpPj3aBd4qrXcTXpShyP7tiaxc/T0serIqlXVzmf381p128kvv5GZdv20XGkoxkaBfvGEnG8lm7GJeRMdaZduG3i/f++Awtl5Hl5+vrYrm+D+Lv69ixYzVlyhTdeOON7n2NGzdWtWrV9Mwzz2jTpk2FjulVAfnrr7/qn//8p0fxmCskJEQ9evTQkCFDvAmtbdu2qVWrVsrMzFRsbKw+/PBDXXzxxdqyZYvCw8NVpkwZj/MrVqyoQ4cOnTXeuHHjNHr06Dz7jx49qszMTK9y9JXUtBRVqFtOUTGRCosI82suwSraEaGojHClpqUo5IhvfvCnpqapQsVwRUWGKizC5pOYpU20I1RRMeFKTT2hkLBsn8RMTU1X5dgQRUVYCufr4pWsEEuxISFKPXlc4S7H3z+hAOzp6aoWEqpoy6YIn0QsfRyWTQkhobIfP64jDt+0S6rDrkpZUYpyhSvCxnx53nC4pJgcKfX4CYWl5/gkZnp2qkLSEmVZkZLFDzJvWCZaISZax4+myhGW9zq0sIzTLpNRVbKiJSvcBxmWUiZLMvGysuyyQo74NZW0tDTfBgzySXS2bdumWrVq5dlfq1Ytbd++3auYXv1WSUhIcE90k5/du3crPj7eq4QuuugibdmyRampqXr//ffVt29frVy50qtYkjR8+HAlJye7H9vtdlWrVk2JiYle5+grznSjYztOKKZMrCJjuPTyRmaGQxkp6UqIK6OkpCSfxHRmh+nY4SzFxNoUGUkB6Y3MzBxlpGcpIaGckpK8myL6r7JsETqY7lScM1RRfF28ctphlHbaqYSy5ZVUIcEnMTMjIrTPmaP4kBBFq+gXc6XRKeOS3Zmj+PLllZTgm3bJPhWqQ/tOKy5MiqRZvJLpzFKa7bQSypdTUnQ5n8SMyHLKmX1UobYYyRbpk5iljXFlyunKUPnEBCWEF/33vslxyITvl2zxkhXlgwxLKXNactllJcTLCvXN9Zi3IiP5bv1ZgwYNNG7cOL3xxhsKDz/zR5KsrCyNGzfOfRtiYXlVQHbu3Fmvvvqqmjdvrp49e3oce/fddzV16lT17t3bq4TCw8N14YUXSpKaN2+uDRs2aPLkybrjjjuUlZWllJQUj17Iw4cPq1KlSmeNFxERoYiIvFebNptNNpt/iwPLss4MYWGIkff+GAZkWZbP2tOjXeCd4moX8XUpitzPrtjahdFfXimWdrFZYlRe0eR+fpbNt+1yZmzsmWH+8MIf4+V91S7GZsnkjldmHH4RGHe7WH6+vvb19X2wT6IzY8YM3Xzzzapatap7ltUff/xRlmXp008/9SqmVwXk+PHjtXbtWvXu3VtPPPGE6tatK0nasWOHDh06pPr162v8+PFeJfRXLpdLDodDzZs3V1hYmJYvX65u3bpJOjOUdu/eve4bQgEAAAAAZ1x++eX67bff9M477+iXX36RJN1xxx268847vV560asCMjExUT/88INmzpypL7/80r0OZKNGjfTkk0/qgQce8Kr7ePjw4brhhhtUvXp1paWlacGCBfrmm2/073//WwkJCerfv7+Sk5NVrlw5xcfHa9CgQWrVqhUzsAIAAADwvSC/B1KSYmJi9MADD/gsntd31kdGRuqxxx7TY4895rNkjhw5oj59+ujgwYNKSEhQ48aN9e9//1vXXnutJOmVV16RzWZTt27d5HA41KlTJ02bNs1nrw8AAAAA55O3335bM2fO1G+//aa1a9eqRo0aeuWVV1S7dm116dKl0PG8GiRcu3ZtffLJJ2c9/tlnn6l27dqFjjt79mzt3r1bDodDR44c0bJly9zFo3SmaH3ttdd04sQJZWRkaPHixee8/xEAAAAAvPXnW2R9uZWU6dOnKzk5WTfccINOnjwpp9MpSSpbtqwmTZrkVUyvCsjdu3crPT39rMfT09Pdw1oBAAAAICiZYtpKyKuvvqrXX39dI0aMUGjo/waftmjRQtu2bfMqptfTFFnnmD5sw4YNedZrBAAAAACUnF27dqlZs2Z59kdERCgjI8OrmAW+B3Ly5MmaPHmypDPF4+OPP64RI0bkOS81NVUpKSm68847vUoIAAAAAAJCkE+iU6tWLW3ZskU1atTw2L9kyZLiXwcyKSlJDRs2lHRmCOsFF1ygCy64wOMcy7IUExOj5s2ba8CAAV4lBAAAAAAouuTkZA0cOFCZmZkyxuj777/Xv/71L40bN05vvPGGVzELXED26tVLvXr1kiRdffXVevrpp3XNNdd49aIAAAAAEOiKY9KbkpxE57777lNUVJSefvppnTp1SnfeeaeqVKmiyZMnq2fPnl7F9GoZjxUrVnj1YgAAAACAktO7d2/17t1bp06dUnp6upKSkooUz+tJdAAAAADgvBbks7CePn1ap06dkiRFR0fr9OnTmjRpkr766iuvY1JAAgAAAEB+gryA7NKli+bNmydJSklJ0eWXX64JEyaoS5cumj59ulcxKSABAAAA4Dz0ww8/qG3btpKk999/X5UqVdKePXs0b948TZkyxauYXt0DCQAAAADnu2CfROfUqVOKi4uTJH311Vfq2rWrbDabWrZsqT179ngVkx5IAAAAADgPXXjhhfroo4+0b98+/fvf/9Z1110nSTpy5Iji4+O9iulVAZmWlqZ9+/Z57Pv99981cuRIPfnkk/r++++9SgYAAAAAAkaQ3wM5cuRIDRkyRDVr1tQVV1yhVq1aSTrTG9msWTOvYno1hPWBBx7Qrl27tG7dOkmS3W5Xy5YttX//ftlsNk2ePFlLlixR+/btvUoKAAAAAFA03bt3V5s2bXTw4EE1adLEvf+aa67Rbbfd5lVMr3ogV69erZtuusn9eP78+fr999/13Xff6eTJk2rcuLGef/55rxICAAAAgECQew+kr7eSVKlSJTVr1kw22/9Kv8svv1z169f3Kp5XBeSxY8d0wQUXuB9/8sknatOmjVq2bKm4uDj16dNHW7du9SohAAAAAAgIQTiE9aGHHtL+/fsLdO67776rd955p1DxvRrCWqZMGR06dEjSmcUpv/32W40YMeJ/QUND3QtWAgAAAABKRmJioho2bKjWrVvr5ptvVosWLVSlShVFRkbq5MmT2r59u1avXq2FCxeqSpUqmjVrVqHie1VAXnnllZo2bZrq16+vJUuWKDMzU126dHEf/+9//+vRQwkAAAAAQac4egyLuQfyueee0yOPPKI33nhD06ZN0/bt2z2Ox8XFqWPHjpo1a5auv/76Qsf3qoB88cUXdd1116lbt26SpCeeeEINGzaUJDmdTi1atMirZAAAAAAARVOxYkWNGDFCI0aM0MmTJ7V3716dPn1aFSpUUJ06dWRZltexvSogL7zwQv3666/avn27EhISVLNmTfexU6dOaerUqR6z/AAAAABAsLH+2HwdsySVLVtWZcuW9Vk8rwpISQoLC8u3SIyLi/MYzgoAAAAAOD94XUA6HA69/vrr+uKLL7R7925JUs2aNXXjjTfqvvvuU2RkpK9yBAAAAICSF4T3QBY3rwrI/fv369prr9Wvv/6qypUr68ILL5Qkbd26VUuWLNHUqVO1bNkyVa1a1afJAgAAAEBJKY51G0t6HUhf82odyIEDB2rPnj167733dODAAa1cuVIrV67UgQMH9O6772rv3r0aOHCgr3MFAAAAAPiRVwXk8uXLNXjwYHXv3j3PsR49euixxx7T8uXLi5wcAAAAAPiNKaathPzrX/8667GhQ4d6FdOrAjIuLk5JSUlnPV6pUiXFxcV5lRAAAAAAoOgefvhhffnll3n2Dx48WPPnz/cqplcF5D333KO5c+fq1KlTeY6lp6drzpw56t+/v1cJAQAAAEDACNLeR0l655131KtXL61evdq9b9CgQXrvvfe0YsUKr2J6NYlO06ZN9fnnn6t+/frq27evexKdHTt2aN68eSpXrpwaN26sxYsXezyva9euXiUJAAAAACiczp07a9q0abrlllu0dOlSzZ49Wx9//LFWrFihevXqeRXTqwKyZ8+e7n+/8MILeY7v379fvXr1kjH/K7Ety5LT6fTm5QAAAACgxJ0Ps7DeeeedSklJUevWrZWYmKiVK1e6OwC94VUB6W13JwAAAAAEjSBcBzI5OTnf/YmJibr00ks1bdo0976JEycWOr5XBeRVV13lzdMAAAAAAMVo8+bN+e6/8MILZbfb3ccty/IqvlcFZC6Hw6EffvhBR44cUevWrVWhQoWihAMAAACAgBFoQ1jHjx+v4cOH67HHHtOkSZPyPae4R4t6NQurJE2ZMkWVK1dWmzZt1LVrV/3444+SpGPHjqlChQp68803fZYkAAAAAJRmGzZs0MyZM9W4cWO/5uFVATlnzhw9/vjjuv766zV79myPyXIqVKigDh06aOHChT5LEgAAAABKnK+X8PDynsr09HT17t1br7/+usqWLVukt1RUXhWQEyZMUJcuXbRgwQLdfPPNeY43b95c//nPf4qcHAAAAACUdgMHDlTnzp3VsWNHf6fi3T2QO3fu1KOPPnrW4+XKldPx48e9TgoAAAAA/K0474G02+0e+yMiIhQREZHn/IULF+qHH37Qhg0bfJuIl7zqgSxTpoyOHTt21uPbt29XpUqVvE4KAAAAAPyuGIewVqtWTQkJCe5t3LhxeV5+3759euyxx/TOO+8oMjKy+N5nIXjVA3njjTdq1qxZGjBgQJ5j//nPf/T666/r3nvvLXJyAAAAAHA+2rdvn+Lj492P8+t93LRpk44cOaJLL73Uvc/pdGrVqlWaOnWqHA6HQkJCSiTfXF4VkM8//7yuuOIKXXLJJbr55ptlWZbeeustvfnmm/rggw9UuXJljRw50te5AgAAAEDJ8XLSm7+NKSk+Pt6jgMzPNddco23btnnsu+eee1S/fn09+eSTJV48Sl4WkFWqVNGmTZv01FNP6d1335UxRm+//bbi4uLUq1cvjR8/njUhAQAAAKAI4uLidMkll3jsi4mJUfny5fPsLyleFZCSlJSUpDfeeENvvPGGjh49KpfLpcTERNlsXi8tCQAAAAABozgn0QlWXlV79957r9avX+9+nJiYqIoVK7qLx++//557IAEAAADAx7755htNmjTJb6/vVQE5d+5c/d///d9Zj+/atUtvvfWW10kBAAAAgN8V4yyswcrrIazn8vvvvysqKqo4QgMAAABAibCMkWV8W/H5Ol5JK3AB+fHHH+vjjz92P541a5aWLVuW57yUlBQtW7ZMl112mW8yBAAAAAAEhAIXkNu3b9eiRYskSZZlaf369dq0aZPHOZZlKSYmRu3atdPEiRN9mykAAAAAlKRiXMYjWBW4gBw+fLiGDx8uSbLZbJo9e7buvPPOYksMAAAAABBYvLoH0uVy+ToPAAAAAAgoLOORl08m0fnll1+0aNEiHTx4UBdddJHuuecexcfH+yI0AAAAACBAFLiAnDp1qqZMmaLvvvtOFSpUcO//9NNP1aNHD2VlZbn3vfrqq1q3bp3HeQAAAAAQVLgHMo8CrwP5ySefqE6dOh5FYU5Oju677z6FhIRozpw52rZtm8aPH689e/bohRdeKJaEAQAAAKAk5A5h9fUWzApcQG7fvl0tW7b02LdixQodPXpUgwcPVt++fdWwYUP94x//0O23364vvvjC58kCAAAAAPynwAXk8ePHVa1aNY99y5cvl2VZuu222zz2t27dWnv37vVNhgAAAADgD6aYtiBW4AKyYsWKOnTokMe+b7/9VtHR0WrSpInH/vDwcIWHhxc6mXHjxumyyy5TXFyckpKSdOutt+rXX3/1OCczM1MDBw5U+fLlFRsbq27duunw4cOFfi0AAAAAQOEUuIBs0aKF3nrrLaWlpUmS/vOf/+j7779Xp06dFBrqORfPL7/8oqpVqxY6mZUrV2rgwIFat26dli5dquzsbF133XXKyMhwnzN48GB9+umnWrRokVauXKnff/9dXbt2LfRrAQAAAMC5cA9kXgWehfXZZ5/VZZddprp166phw4batGmTLMvS8OHD85z74YcfqkOHDoVOZsmSJR6P586dq6Sk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TnxfAhvfFwQ7JtEpBcwfQ1mio6OVkZEhSXI6nZKku+++W3fddZc+//xzvfLKK9q4caM/Uy1VaJfARLsEJtolMJk/ZpIsV66cjh8/rtOnT7uPXX/99br77ru1ceNGjRkzRkuWLPFXmqUO35fAxPcF5wsKyPPQX6fszh1v36RJE7333nvatm2bQkJC3MeTkpLUvHlz/fbbb3r11Ve1ZcuWkky31KBdAhPtEphol8D013bJnUmycePGWr16tZYtW+axPEHFihV1zTXXqGLFivrnP/+p5cuXl2i+pQXfl8DE9wXnK8sYFqI5n/x5dq8vvvhCdrtdJ0+e1MMPPyxJ6tq1q9avX6/3339fderUUUJCgu644w51795dYWFheuWVV1SlShWNGjVKjRs39udbOa/QLoGJdglMtEtg+nO7vP/++zp69KgOHTqkRx55RImJiXrkkUc0b948zZw5U5deeqkqVaqku+++W61bt1aLFi306quv6sCBA3r55ZfVvn17/76Z8wjfl8DE9wXnNT8NnUUxGzp0qKlZs6Zp27atadCggalXr55Zu3atOXTokOnRo4eJi4sz9erVc285OTnGGGPmzp1rrr76anPgwAE/v4PzE+0SmGiXwES7BKahQ4eaqlWrmi5duphLL73UVKlSxSxatMgYY8zAgQPNBRdcYCpWrGjq1q1rLrroIne7fPnll6Znz55mz549/kz/vMX3JTDxfcH5iALyPPT666+bpKQks3nzZmOMMR9++KGxLMt89dVX7nM++OAD8+abb5pp06aZ7OxsY4wxTqfTGGOM3W4v8ZxLA9olMNEugYl2CUzvvPOOqVy5svnxxx+NMcYsX77cWJZlPv74Y/c53333nfnkk0/Mv/71L/fFcG67ZGRklHzSpQDfl8DE9wXnKwrI89BTTz1lRowYYYwxZuHChSYhIcFMnz7dGGNMampqvs/JyckxLperxHIsjWiXwES7BCbaJTC99NJL5r777jPGnLk4jo+PN9OmTTPGGJOSkpJv29AuxY/vS2Di+4LzFZPoBDmTzy2s27Zt0+nTp7V69Wrdf//9GjdunB566CEZYzRx4kRNnDgxz3NCQkLcN3ej6GiXwES7BCbaJTD9dQIQSdqxY4eysrK0fv16PfTQQxo/frz7Xrs5c+ZoypQp7tk+c9EuvsX3JTDxfUFpQgEZxFwul/uHzM8/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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/tmp/ipykernel_128294/2488080501.py:81: MatplotlibDeprecationWarning: The get_cmap function was deprecated in Matplotlib 3.7 and will be removed in 3.11. Use ``matplotlib.colormaps[name]`` or ``matplotlib.colormaps.get_cmap()`` or ``pyplot.get_cmap()`` instead.\n", - " colormap = plt.cm.get_cmap(cmap)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Time to reach plateau 2 (threshold: 3.81e-02):\n", - "------------------------------------------------------------\n", - " k_2_seqseq : 53 steps\n", - " k_3_seqseq : 74 steps\n", - " k_4_seqseq : 85 steps\n", - " k_5_seqseq : 95 steps\n", - " k_6_seqseq : 98 steps\n", - " k_7_seqseq : 98 steps\n", - " k_8_seqseq : 100 steps\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA5EAAAJOCAYAAAAuzYPxAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAmzhJREFUeJzs3XmcjeX/x/H3fWYfZsY2g7FOWiwRUZGlklCSIqWUJaUFJS3IXtZ+34SULUR7irZvVCSlEKKUEtmT3cyZxWznXL8/NOdrGsOZM2fmnDNez8fjfjyc+77P53zOueY25zPXdV+XZYwxAgAAAADADTZfJwAAAAAACBwUkQAAAAAAt1FEAgAAAADcRhEJAAAAAHAbRSQAAAAAwG0UkQAAAAAAt1FEAgAAAADcRhEJAAAAAHAbRSQAAAAAwG0UkQAKrFevXrIsy9dpwA3F3VajR4+WZVnavXt3sb1mSTR48GAlJCQoMzPT16kU2O7du2VZlkaPHu3rVM5bxhhdfvnl6t27t69TAVBCUUQCkGVZbm/+Xhzs3r1bo0eP1ubNm4sk/muvvZbr87DZbIqJiVHz5s312muvFclr+lp+77lFixZauHChV19r8+bNGj16tN//nP1benq65syZo06dOqlmzZqKiIjQBRdcoLvuuku//fZbgWLt2rVLU6dO1ciRIxUaGuran/MHgaNHj3o7fb9z+PBh9e7dWw0aNFC5cuUUHh6uCy+8UH369NGOHTsKFGvp0qW6/vrrValSJZUqVUqXXHKJnnzySR06dCjXeX///beGDRum9u3bKzY2VpZlqVevXl58V2eWlJSkAQMGqEqVKgoPD1e9evU0Y8YMGWNynffHH39o5MiRatq0qWJjYxUVFaWGDRtq3LhxSk1NzXVuThG/cOHCIvu/EMD5LdjXCQDwvddffz3X42+//VazZ89W37591bJly1zHYmNjNWfOHM2cObM4U3Tb7t27NWbMGNWsWVMNGzYsstd59NFHdcUVV8jpdGrfvn169dVX1bt3bx04cEDPPPNMkb2uL53+nnfv3q05c+aoZ8+e2r9/v9fe8+bNmzVmzBhde+21qlmzpldiFofdu3erb9++atGihfr06aP4+Hjt3LlTM2bM0OLFi7Vs2TJdd911bsWaOHGioqOjdc899xRx1v7rxIkT+uOPP9S2bVvVqFFDERER2r59u+bNm6dFixZp7dq1qlu37jnjzJkzR3379lXjxo01ePBglSpVSuvXr9eUKVO0ePFibdmyRaVKlZIkbdu2TePHj1e1atV0xRVXaOnSpUX9NpWZmakbbrhBmzZt0oABA1SnTh0tXbpUjzzyiA4dOpSrN3fevHl6+eWXdcstt6h79+4KCQnRypUrNXz4cL333ntau3atIiIiXOffcsstqlmzpsaNG6dFixYV+XsBcJ4xAPAv8+fPN5LM/PnzfZ1Kga1cubJIc8/5bBYtWpRr/19//WVKlSplYmJiTHZ2dpG8tid69uxpCvtffX7vee/evSYiIsJER0ebrKwsY4wxo0aNMpLMrl27CvVaK1euLFTOxe3o0aNm06ZNefb/+uuvJjQ01DRu3NitOElJSaZUqVLm0UcfzXMspy2PHDlS2HSL1K5du4wkM2rUKK/H/uGHH4wk8/DDD7t1/sUXX2wqV65sTp48mWv/sGHDjCSzZMkS1z673W4OHz5sjDHmyJEjRpLp2bOnt1I/o5dfftlIMtOmTcu1v3PnziYkJMTs3r3btW/9+vUmMTExT4yc9/LSSy/lOTZy5EgTEhJi/v77b+8nD+C8xnBWAAV2pvvscvYdO3ZMvXr1UoUKFRQVFaVbb71VBw8elCTNnj1bderUUXh4uGrXrq2PPvrojPHfffddtWjRQlFRUYqMjNRVV12l999//5x5vfbaa67ent69e7uGX1577bWuc1JTUzV06FDVqlVLYWFhqlSpknr06KE9e/Z4+GmcEh8frzp16igpKUlHjhzJdWz79u269957VblyZYWGhqpmzZp66qmn8gxB+/333/XII4+oXr16rvfeuHFjvfrqq2d8TbvdrmHDhrk+0/Lly6tFixZ655138pyblJSkhx9+WHFxcQoPD1fz5s21bt26Qr3natWqqW7durLb7Xne8+kOHDigJ554Qg0bNlTZsmUVHh6uunXratKkSXI4HK7zRo8e7bqH67rrrnO13+lDCjMyMjR+/HjVq1dP4eHhKlOmjDp27KhNmzblek2n06lx48apVatWqlSpkkJDQ1W9enU9/PDDOnbsWK5zv/76a1mWdcbhyO7eU1q+fPkz9nzXrVtXl156qX755ZdzxpCkzz77TKmpqbrpppvcOj8/57qGHA6H4uPjdfnll5/x+bNmzZJlWfrwww9d+9z97PPz999/6/fff1daWprH76tGjRqSTvVUusNut7t+5k4XHx8vSa5eSEmKiopSbGys27kYYzRjxgw1btxYkZGRKl26tK677jqtXLnS7RhvvfWWIiMj9cADD+TaP3DgQGVlZendd9917WvSpIliYmLyxLjzzjsl6Yw/YzfeeKOysrJytSMAeAPDWQF4Vfv27VW1alU9++yz2rFjh6ZNm6bbbrtNnTt31uzZs9WnTx+Fh4dr2rRpuv322/XHH38oISHB9fzhw4dr3Lhxat++vZ577jnZbDYtWbJEXbt21fTp09WvX798X7tVq1Z65plnNH78+FxDcStWrChJysrKUrt27fTdd9/p9ttv1xNPPKHt27drxowZ+uKLL7RhwwZVrVrVo/edlZWlvXv3ymazqUyZMq79GzduVOvWrVWmTBk9+OCDqlKlin766SdNmzZN3333nVatWqWQkBBJp4qZb775RjfffLMSEhKUmpqqRYsW6YEHHtCRI0c0dOhQV9zExES1aNFCv/76q26//XY9/PDDcjgc2rRpkz799FN169YtV37t2rVTbGysRo4cqWPHjmny5Mnq0KGDdu3apaioKI/ec0ZGhvbu3avg4OBc7/nffv75Zy1evFi33XabatWqpaysLC1btkxDhgzRzp07NWvWLElS586d9ffff2v27Nl65plnVKdOHUlSrVq1XJ9x+/bt9f333+vee+9V//79lZSUpDlz5qh58+b65ptv1KRJE0mnhgn+3//9n7p06aJOnTq5hjHOnTtXq1ev1saNG3Pdb1hUnE6n/v77b9fP4LmsWrVKknTFFVd4/JruXENBQUG655579H//93/69ddfVa9evVwxFi5cqAoVKqhDhw6SCvbZ52fo0KFasGCBVq5cmesPO2eTlZWlpKQkZWVlaceOHa7hne4W2e3atdOCBQv0xBNP6P7771fp0qW1fv16Pffcc7rmmmvUunVrt+Kcyb333qu3335bt99+u3r37q2MjAy9+eabuuGGG7R48WLdcsstZ32+0+nUjz/+qMsvvzxPkXvllVfKsiytX7/+nHns379fks74M3b55ZcrLCxMX3/9tR566KECvDsAOAdfd4UC8D/nGs56piGSOfseeeSRXPsff/xxI8lUq1bNJCUlufb/9NNPRpIZMmSIa9/GjRuNJDN06NA8r9mpUycTFRVl7Hb7WXM/23DW2bNn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qQLuXF9UExMT9emnn+ree+/N86Vw+fLluR5XqFBBZcuWLVSxUZxef/11tWrVKs+ssWdaNP5s7XfRRRfpyJEjat269RmH7P77NcPDw7Vy5cpcvTk5Q4JPlzN89Pjx43mO7dy586yv828//vij2rRpo6ioKK1cudI1m6i7Lr30Uq1atUpHjx716GexoNdQhQoVdNNNN2nJkiVKSUnRwoULZbPZ8qxRWZDPvqidPHlSDodDdrv9rMVRTnF2ei9gjpw/DnjyRwLp1Ofxxx9/qGnTpipduvRZz33zzTdzDfXNGWZts9l0+eWXa9OmTcrIyMhVEP/www8yxpxxsqLRo0drzJgx6tmzp1599dWzXjMZGRnat2+fOnfuXNC3CABnxT2RAPzGvffeK0l65plnzvjFz52hrDlf6M5UENx6661yOp2unsIcS5cu1aZNm3TLLbcU6gvyqFGjlJmZqbFjx0qSGjVqpEsvvVQzZ848YzGSnZ3tyjOn1+jfPYN///13niU+bDab7rrrLm3dulVz587NE7cwwyGLQlBQUJ6cUlNT9eKLL+Y592zt16NHDx08eDDf3rDTfz6CgoJkWVauHkdjjKttTpeQkKDg4OA8xfr333+vtWvXnuWd5bZp0ybdcMMNKl26tFauXHnGIdznknO/YEFe93SeXEM9e/ZUWlqa3njjDS1atEg33HCDawmMHAX57PNTkCU+8ou3detWrVixQrVq1cpVQB49elS///67kpKSXPvq1q0r6VQR9+/hzDnLuXg6C26PHj3kdDrzHUZ6ev7NmzdXmzZtXFvz5s1dx+666y6lpaVp9uzZuZ4/ZcoUBQcHu5bvyPHss89qzJgxuvfeezVv3rxz/n+1adMmZWZm5tujCQCeoicSgN+44oorNHr0aI0ePVoNGzZU165dFR8fr7///lsbN27UZ599pszMzLPGqFu3rqKiovTKK68oMjJSZcqUUVxcnFq3bq1evXppwYIFmjRpknbv3q1WrVppx44deuWVV1SxYkWNHz++UPlfd911at68uRYsWKBnnnlGF1xwgV5//XW1bt1aDRo00H333ad69eopLS1NO3bs0OLFizVhwgT16tVLUVFRatu2rd544w1FRES4hsDNmjVLCQkJee5dHDt2rL766ivdf//9+uKLL9SiRQsZY7Rp0yZlZ2fr9ddfL9R78abbb79ds2bNct1/dujQIc2bN891X+bprrjiCtlsNo0bN04nTpxQqVKllJCQoKuuukqPPfaYvvzySz311FP66quv1Lp1a0VHR2vv3r1asWKFq+cx5zU/+OADtW7dWj169HCtlXemAqZ06dLq1auXXn31Vd1111269tprtX37ds2fP18NGjRwq8d3z549uuGGG3TixAk9+uij+v777/X999/nOue2227LNXnSmbRv315RUVH67LPPdPPNN5/xnMmTJ5/xXrnWrVvr6quvLvA11KFDB5UvX16DBw+W3W7PNaFOjoJ89vkpyBIfEyZM0JdffqkOHTqoZs2aMsbol19+0euvv66srCy9/PLLuc6fPn26xowZo/nz57vWFb3sssvUpUsXffDBB2rSpInuueceRUZG6vPPP9cnn3yipk2bqlOnTrni5PyRIefn5Oeff3bta9WqlVq1aiVJrmU9pk+frh9//FE333yzKlSooP3792vNmjXasWOHW73YDzzwgObPn69BgwZp9+7dqlOnjj777DMtWbJEw4cPV82aNV3nvvzyyxo1apSqV6+uNm3a5BlKW7FiRd1www259n322WcKCQnRrbfees5cAKBAinMqWACBoTBLfPzb2ZZPqFGjRq6lAXJ8+umnpm3btqZs2bImNDTUVK1a1bRv397MmDHDrfz/+9//mkaNGpmwsDAjKddrpKSkmCFDhpiEhAQTEhJiYmNjzT333GN2797tVuycz2bRokVnPL5s2TIjyfTq1cu1b/fu3ebBBx80NWrUMCEhIaZcuXLm8ssvN0OGDDF79+51nXfkyBHTp08fU7lyZRMWFmYuvfRSM3v27HyXvThx4oR56qmnTK1atVxxW7RokWv5irMtUaGzLGFQkPd8ujMt8ZGammqefPJJU716dRMWFmYuvPBCM2HCBLN8+fIz/my89tprpk6dOiYkJCRPjllZWWbq1KmmSZMmJjIy0kRGRpoLL7zQ3H333ebzzz/PFWf27NmmTp06JiwszFSqVMk88MAD5tixY2d838nJyaZPnz6mXLlyJiIiwrRo0cJ89913bi/xkfNzfrbt9M/kbB5++GFTrlw5k5GRkWt/Ti75bRMmTHCdW9BrqH///kaSiY6OPuPSKMa4/9l7Y4mPL7/80nTp0sXUqFHDREREmNDQUJOQkGB69eplfvnllzzn5/zc/ftnKSMjw0yaNMk0aNDAhIeHm9DQUHPRRReZoUOHnnFJnbN9vv9+P8YYs3DhQtOiRQsTFRVlwsLCTI0aNcxtt91m3nnnnXO+xxwnTpww/fr1M5UrVzahoaGmTp065qWXXsqzRMi52v9M/5cmJCSY22+/3e1cAMBdljF+Nu4JAIDz2O7du1W7dm1Nnz5d999/v6/TQYD66KOP1LlzZ23cuFENGzb0dToAShiKSAAA/MyQIUP0zjvv6I8//si1bAzgDmOMLr/8cjVs2FDz58/3dToASiCKSAAAAACA25idFQAAAADgNopIAAAAAPBjDodDI0aMUEJCgiIiIlSrVi0999xzPlvWiyU+AAAAAMCPTZo0STNmzNCCBQtUr149bdiwQb1791ZMTIweffTRYs+HeyIBAAAAwI/dfPPNqlixoubOneva16VLF0VEROiNN94o9nzoiTwDp9OpAwcOKCoqSpZl+TodAAAAAG4yxig5OVnx8fGy2Qp39156eroyMzO9lFluxpg8tUZYWJjCwsLynHv11Vdr9uzZ+uOPP3TxxRfrp59+0urVqzV58uQiye1cKCLP4MCBA6pWrZqv0wAAAADgoX379qlq1aoePz89PV0JNUrr4GGHF7P6n9KlSyslJSXXvlGjRmn06NF5zh0yZIjsdrtq166toKAgORwOjRs3Tt27dy+S3M6FIvIMoqKiJJ36wYuOjvZxNgAAAADcZbfbVa1aNdd3ek9lZmbq4GGH9mysqego785Hak92qkbj3XnqjTP1QkrSe++9pzfffFNvvfWW6tWrp82bN2vgwIGKj49Xz549vZqbOygizyCnWzk6OpoiEgAAAAhA3rotrXSUpdJR3r3FzamC1RtPPfWUhgwZom7dukmS6tevrz179mjChAk+KSJZ4gMAAAAA/FhaWlqe+zuDgoLkdDp9kg89kQAAAACQD4dxyuHl9SwcpmDFX8eOHTVu3DhVr15d9erV06ZNmzR58mTdd9993k3MTRSRAAAAAODHXnrpJY0YMUKPPPKIDh8+rPj4eD344IMaOXKkT/KhiAQAAACAfDhl5JR3uyILGi8qKkpTpkzRlClTvJqHpygiAQAAACAfTjnl7TsPvR+xeDGxDgAAAADAbfREAgAAAEA+HMbIYbw7nNXb8YobPZEAAACAD02fPl1NmjRRWFiYbr311lzH7Ha77r77bkVHR6tixYp67rnnCnQcKAr0RAIAAAA+FB8fr+HDh2v58uXav39/rmMDBgzQ8ePHtXfvXh0+fFht2rRRjRo11KNHD7eOo/D8YWIdf0MRCQAAAPhQ586dJUmbN2/OVUSmpaXpnXfe0XfffacyZcqoTJkyGjBggObOnasePXqc8zhQVBjOCgAAAPihbdu2KTMzUw0bNnTta9iwoX7++We3jsM7nDJyeHmjJxIAAACA16WkpKhUqVIKDv7fV/YyZcooOTnZrePwDoaz5kVPJAAAAOCHSpcurbS0NGVnZ7v2JSUlKSoqyq3jQFGhiAQAAAD80CWXXKKQkBD99NNPrn2bN29W/fr13ToO78hZ4sPbWyDzqyLym2++UceOHRUfHy/LsvThhx/mOm6M0ciRI1W5cmVFRESoTZs22r59e65zjh8/ru7duys6OlplypRRnz59lJKSUozvAgAAAHBfdna20tPTlZ2dLafTqfT0dGVmZioyMlJ33nmnRowYoaSkJG3fvl0vvfSS7r//fkk653GgqPhVEZmamqrLLrtML7/88hmPP//885o2bZpmzpypdevWqVSpUmrXrp3S09Nd53Tv3l2//vqrvvzyS3366af65ptv1Ldv3+J6CwAA4Cz+/PNP3XjjjSpbtqyqVKmi559/3nVs69atuv7661W2bFlVqlRJffv2VVpamg+zPT/QJr43duxYRUREaNy4cfrkk08UERGhtm3bSjq1hmRMTIyqVq2q5s2bq0+fPrlmXj3XcRSes4i2QGYZ4599qZZlacmSJa4FV40xio+P1xNPPKEnn3xS0qkx3xUrVtRrr72mbt266bffflPdunW1fv16NWnSRJK0bNky3XTTTdq/f7/i4+Pdem273a6YmBglJSUpOjq6SN4fAADnG4fDoQYNGujWW2/V6NGjtXPnTt1www2aOHGi7r77bjVs2FBXX321pkyZoqSkJN18881q3bq1JkyY4OvUSyzaBCWRt77L58T5/beKiorybt9bcrJTtescCth6w696Is9m165dOnjwoNq0aePaFxMTo6uuukpr1qyRJK1Zs0ZlypRxFZCS1KZNG9lsNq1bt67YcwYAAP+zbds2bdu2TaNGjVJISIguueQS9enTR7Nnz5Yk7dy5U/fcc49CQ0MVGxurW265RVu2bPFx1iUbbQKcm7eX98jZAlnALPFx8OBBSVLFihVz7a9YsaLr2MGDBxUXF5freHBwsMqVK+c650wyMjKUkZHhemy32yVJTqdTTmegdzYDAOAfcmaQdDgcrt+vDodDP//8s5xOp5544gktWLBAl112mZKSkrRkyRL16dOH38VFiDbJzThPSE7m0igUW2lZtrI+TcHbP58Oc2rzdsxAFjBFZFGaMGGCxowZk2f/kSNHct1vCQAAPFe2bFlVq1ZNTz31lJ566int3r1bc+fOld1u1+HDh3XVVVdp4MCBiomJkcPhUPv27XXzzTfr8OHDvk69xKJN/sc4k2VS50om1depBDarlKxSfWTZfLfMCOtkFr2AKSIrVaokSTp06JAqV67s2n/o0CE1bNjQdc6//1PLzs7W8ePHXc8/k6FDh2rQoEGux3a7XdWqVVNsbGxAjlEGAMBfffzxxxo0aJAaN26sqlWr6r777tPs2bMVEhKiO++8U2PGjNFDDz2k1NRUPfroo3riiSf0zjvv+DrtEo02OcVkZ8iEbJOsUMkK93U6gcmkSyZTVkyorOC4c59fRMLDvdt+RTERTqD35QdMEZmQkKBKlSppxYoVrqLRbrdr3bp1evjhhyVJzZo1U2JiojZu3KjGjRtLkr766is5nU5dddVV+cYOCwtTWFhYnv02m002W8DcNgoAgN+rX7++vvzyS9fjwYMH65prrtGuXbt08uRJPfbYY7IsS+Hh4XrooYd044038ru4iNEmpxibJWMZyRZGEekpYyRnhiybJcuHPyMl8efT3/jVJ5ySkqLNmzdr8+bNkk5NprN582bt3btXlmVp4MCBGjt2rD7++GNt2bJFPXr0UHx8vGsG1zp16qh9+/Z64IEH9MMPP+i7775T//791a1bN7dnZgUAAEXn559/VmpqqjIzM7V48WLNmzdPw4cPV+3atVW6dGm98sorys7OVnJysubMmaNGjRr5OuUSjzYBzs4pSw4vb05Zvn5bheJXReSGDRvUqFEj139OgwYNUqNGjTRy5EhJ0tNPP60BAwaob9++uuKKK5SSkqJly5bl6rJ+8803Vbt2bV1//fW66aab1KJFC9cMYwAAwLfee+89Va9eXWXLltV//vMfffjhh2rQoIFKly6tTz75RG+//bYqVKigmjVrKjExUQsWLPB1yiUebQKgoPx2nUhfYp1IAACA84vJ3iuT+Khki5asCF+nE5jMSclpl1Vmmqzg6j5Lw9vr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5MMpS055eTirl+MVN4+nUF26dKluuOEGlS9fXsHBwQoKCsqzAQAAAABKFo+KyA8++EA333yzDh06pG7dusnpdOquu+5St27dFBERoQYNGjCxDgAAAICAlzOxjre3QOZRETlhwgRdeeWV2rRpk8aMGSNJuu+++/Tmm2/ql19+0d9//62EhASvJgoAAAAA8D2PisitW7eqW7duCgoKUnDwqdsqs7KyJEk1a9bUI488okmTJnkvSwAAAADwgZyJdby9BTKPisjIyEiFhoZKksqUKaOwsDD9/fffruMVK1Y84zIgAAAAAICC++uvv3TPPfeofPnyioiIUP369bVhwwaf5OJREXnJJZdo69atrscNGzbU66+/ruzsbKWnp+utt95S9erVvZYkAAAAAPiCP9wTeeLECTVv3lwhISFaunSptm7dqhdeeEFly5Ytond9dh4t8XHbbbdp2rRp+s9//qOwsDANGzZMnTp1UpkyZWRZllJTUzVv3jxv5woAAAAAxcof1omcNGmSqlWrpvnz57v2+XIOGo96Ip988knt3btXYWFhkqSbb75ZX3/9tR544AE9+OCDWrFihXr16uXNPAEAAADgvPTxxx+rSZMm6tq1q+Li4tSoUSPNmTPHZ/l41BN5Ji1btlTLli29FQ4AAAAAfM4UwZIcOT2Rdrs91/6wsDBXR93pdu7cqRkzZmjQoEF65plntH79ej366KMKDQ1Vz549vZqbOzzqiczx119/6e2339bUqVO1f/9+SZLT6dTx48flcDi8kiAAAAAAlETVqlVTTEyMa5swYcIZz3M6nbr88ss1fvx4NWrUSH379tUDDzygmTNnFnPGp3jUE2mM0RNPPKHp06crOztblmWpfv36qlq1qpKTk1WzZk09++yzGjhwoJfTBQAAAIDiYyQZ4/2YkrRv3z5FR0e79p+pF1KSKleurLp16+baV6dOHX3wwQfeTcxNHvVE/t///Z+mTp2qJ598Ul9++aXMaZ9qTEyMOnfu7LM3BAAAAACBIDo6OteWXxHZvHlzbdu2Lde+P/74QzVq1CiONPPwqCdyzpw56tGjh8aPH69jx47lOd6gQQMtXbq00MkBAAAAgC85ZcmSd++JdBYw3uOPP66rr75a48eP1x133KEffvhBs2fP1uzZs72al7s86onct2+frr766nyPlypVKs9NogAAAAAQaHKW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tPAob4+KyEcffVSLFi1SRkaGwsLC9Nxzz2nNmjW69957JUm1atXStGnTPEoIeYVFhCq81Jl/mHBuWRmZvk4BAAAAgcpYpzZvx5RUrVq1XLtHjRql0aNH5zn9qquu0muvvaZLLrlEf//9t8aMGaOWLVvql19+UVRU1FlfatKkSWrVqpUuueQStWzZUpL07bffym6366uvvvIofY+KyBYtWuSqWqtVq6bffvtNW7ZsUVBQkGrXru32GF0AAAAAOB/t27dP0dHRrsf59ULeeOONrn83aNBAV111lWrUqKH33ntPffr0Oetr1K1bVz///LOmT5+un376SREREerRo4f69++vcuXKeZS31yo9m82myy67zFvhAAAAAMD3inCJj+jo6FxFpLvKlCmjiy++WDt27HDr/Pj4eI0fP77Ar5Mfj4tIu92uV155RStXrtThw4c1a9YsXXnllTp+/Lhee+013XLLLbrwwgu9ligAAAAAQEpJSdGff/7pup3wXBITE/XDDz/o8OHDcjqduY716NGjwK/vURG5f/9+XXPNNdq3b58uuugi/f7770pJSZEklStXTrNmzdKePXs0depUT8IDAAAAgH8owp5Idz355JPq2LGjatSooQMHDmjUqFEKCgrSXXfddc7nfvLJJ+revbtSUlIUHR0ty/rf/Z2WZRVfEfnUU08pOTlZmzdvVlxcnOLi4nIdv/XWW/Xpp596EhoAAAAA/IZlimCJjwLG279/v+666y4dO3ZMsbGxatGihdauXavY2NhzPveJJ57Qfffdp/HjxysyMtLDjHPzqIj84osv9Pjjj6tu3bqu9SJPd8EFF2jfvn2FTg4AAAAAznfvvPOOx8/966+/9Oijj3qtgJQkmydPOnny5Fmr3jMtZgkAAAAAAccU0VZM2rVrpw0bNng1pkc9kXXr1tU333yjBx988IzHP/zwQzVq1KhQiQEAAAAACqdDhw566qmntHXrVtWvX18hISG5jt9yyy0FjulRETlw4ED17NlTDRo0UNeuXSVJTqdTO3bs0JgxY7RmzRp98MEHnoQGAAAAAP/hBxPrFMYDDzwgSXr22WfzHLMsSw6Ho8AxPSoi77nnHu3Zs0fDhw/XsGHDJEnt27eXMUY2m03jx4/Xrbfe6kloAAAAAICX/HtJD2/weJ3IYcOG6d5779UHH3ygHTt2yOl0qlatWurcubMuuOACb+YIAAAAAD7hD7Ozekt6errCw8MLHcfjIlKSqlevrscffzzP/hMnTuill17SyJEjCxMeAAAAAHzLWKc2b8csJg6HQ+PHj9fMmTN16NAh/fHHH7rgggs0YsQI1axZU3369ClwzALPzmqM0aFDh5SRkZHn2P79+zVo0CDVqFFDY8aMKXAyAAAAAADvGTdunF577TU9//zzCg0Nde2/9NJL9eqrr3oU0+0i0hijESNGqGzZsoqPj1epUqXUqVMnHT9+XGlpaRo4cKAuuugiTZ06Vddcc41WrlzpUUIAAAAA4DcCfImPhQsXavbs2erevbuCgoJc+y+77DL9/vvvHsV0ezjrtGnTNG7cONWoUUNt27bVrl279Mknn6hPnz46cuSI1q1bp3vuuUdPP/206tSp41EyAAAAAADv+euvv3ThhRfm2e90OpWVleVRTLeLyHnz5unKK6/UqlWrFBYWJkl6+umn9Z///EdVq1bVjz/+qPr163uUBAAAAAD4o0CfWKdu3br69ttvVaNGjVz733//fTVq1MijmG4Xkdu3b9fEiRNdBaQk3X///frPf/6jYcOGUUACAAAAgJ8ZOXKkevbsqb/++ktOp1OLFy/Wtm3btHDhQn366acexXT7nsj09HRVqFAh177y5ctLkmrVquXRiwMAAACAXwvweyI7deqkTz75RMuXL1epUqU0cuRI/fbbb/rkk090ww03eBSzQEt8WNaZp6I9/QZNAAAAACgximA4a3EWkZLUsmVLffnll16LV6AicsiQIZowYYLrscPhkHRqWGupUqVynWtZln766ScvpAgAAAAA8BduF5GtWrU6Y09kXFycVxMCAAAAAL9RFMNPi7En0maz5TuiVPpfx2BBuF1Efv311wUODgAAAADwnSVLluR6nJWVpU2bNmnBggUaM2aMRzELNJwVAAAAAM4rAd4T2alTpzz7br/9dtWrV0/vvvuu+vTpU+CYbs/OCgAAAAAoGZo2baoVK1Z49Fx6IgEAAAAgH1YRzM7q9dleC+jkyZOaNm2aqlSp4tHzKSIBAAAAoIQqW7Zsrol1jDFKTk5WZGSk3njjDY9iUkQCAAAAQAn14osv5ioibTabYmNjddVVV6ls2bIexaSIBAAAAID8BPjEOr169fJ6zEIVkampqVq1apX27NkjSapRo4auueYalSpVyivJAQAA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qW3btq5C7YknnlC9evUkneoZXLRokUfJnEtUVJQuvfTSXPtKlSql8uXLu/b36dNHgwYNUrly5RQdHa0BAwaoWbNmrqG2AAAAAFDSVaxYUcOGDdOwYcN04sQJ7d27VydPnlSFChVUq1YtWYX4C5ZHReSFF16obdu2aevWrYqJiVHNmjVdx9LS0jR9+nRddtllHidVGC+++KJsNpu6dOmijIwMtWvXTq+88opPcgEAAAAQ2IpiEEdxD0AoW7ZsrqURC8vju+tDQkLOWChGRUXlGtpa1P69lEh4eLhefvllvfzyy8WWAwAAAACcLzwuIjMyMjRnzhx99tln2r17tySpZs2auummm3T//fdzQysAAACAwBeA90QWNY+KyP379+uGG27Qtm3bVLlyZV144YWSpJ9++knLli3T9OnTtXz5cremlAUAAAAAf1US1on0No+mLurXr5/27Nmj9957T3/99ZdWrVqlVatW6a+//tK7776rvXv3ql+/ft7OFQAAAADgYx4VkStWrNDjjz+u22+/Pc+xrl276rHHHtOKFSsKnRwAAAAA+JQpoq2YvP322/kee+qppzyK6VERGRUVddaF2ytVqqSoqCiPEgIAAAAAeMfDDz+spUuX5tn/+OOP64033vAopkdFZO/evfXaa68pLS0tz7GUlBTNnz9fffr08SghAAAAAPArAdoLKUlvvvmm7rrrLq1evdq1b8CAAXrvvfe0cuVKj2J6NLFOw4YN9d///le1a9dWz549XRPrbN++XQsXLlS5cuXUoEEDLV68ONfzOnfu7FGSAAAAAICC69Chg1555RXdcsst+vLLLzV37lx99NFHWrlypS6++GKPYnpURHbr1s3173HjxuU5vn//ft11110y5n9ltmVZcjgcnrwcAAAAAPhESZid9e6771ZiYqKaN2+u2NhYrVq1ytUR6AmPikhPuz0BAAAAIKAE4DqRgwYNOuP+2NhYXX755XrllVdc+yZPnlzg+B4Vkddcc40nTwMAAAAAFLFNmzadcf+FF14ou93uOm5ZlkfxPSoic2RkZOjHH3/U4cOH1bx5c1WoUKEw4QAAAADAr/jbcNaJEydq6NCheuyxxzRlypQznlPUI0c9mp1VkqZNm6bKlSurRYsW6ty5s37++WdJ0tGjR1WhQgXNmzfPa0kCAAAAwPlu/fr1mjVrlho0aODTPDwqIufPn6+BAweqffv2mjt3bq4JdCpUqKDWrVvrnXfe8VqSAAAAAOAT3l7ew8N7LFNSUtS9e3fNmTNHZcuWLdRbKiyPisgXXnhBnTp10ltvvaWOHTvmOd64cWP9+uuvhU4OAAAAACD169dPHTp0UJs2bXydimf3RO7YsUOPPvpovsfLlSunY8eOeZwUAAAAAPiDorwn0m6359ofFhamsLCwPOe/8847+vHHH7V+/XrvJuIhj3oiy5Qpo6NHj+Z7fOvWrapUqZLHSQEAAACAXyjC4azVqlVTTEyMa5swYUKel9+3b58ee+wxvfnmmwoPDy+691kAHvVE3nTTTZo9e7YeeeSRPMd+/fVXzZkzR/fdd1+hkwMAAACAkmrfvn2Kjo52PT5TL+TGjRt1+PBhXX755a59DodD33zzjaZPn66MjAwFBQUVS745PCoix44dq6uuukqXXnqpOnbsKMuytGDBAs2bN08ffPCBKleurJEjR3o7VwAAAAAoXh5OhHPOmJKio6NzFZFncv3112vLli259vXu3Vu1a9fW4MGDi72AlDwsIuPj47Vx40Y988wzevfdd2WM0euvv66oqCjdddddmjhxImtGAgAAAEAhRUVF6dJLL821r1SpUipfvnye/cXFoyJSkuLi4vTqq6/q1Vdf1ZEjR+R0OhUbGyubzeOlJwEAAADArxTlxDqByqOK77777tO6detcj2NjY1WxYkVXAfnDDz9wTyQAAAAAFIGvv/5aU6ZM8dnre1REvvbaa/rzzz/zPb5r1y4tWLDA46QAAAAAwC8U4eysgcrj4axnc+DAAUVERBRFaAAAAAAoNpYxsox3qz5vxytubheRH330kT766CPX49mzZ2v58uV5zktMTNTy5ct1xRVXeCdDAAAAAIDfcLuI3Lp1qxYtWiRJsixL69at08aNG3OdY1mWSpUqpVatWmny5MnezRQAAAAAilsRLvERqNwuIocOHaqhQ4dKkmw2m+bOnau77767yBIDAAAAAPgfj+6JdDqd3s4DAAAAAPwOS3zk5ZWJdX7//XctWrRIf//9ty655BL17t1b0dHR3ggNAAAAAPAjbheR06dP17Rp0/T999+rQoUKrv2ffPKJunbtqszMTNe+l156SWvXrs11HgAAAAAEHO6JzMPtdSI//vhj1apVK1dhmJ2drfvvv19BQUGaP3++tmzZookT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8uRJLVq0SE6nU4MHD1bDhg19m+R5hjbxP7SJ/6FN/FNOm4wePVq///67kpKStG3bNg0dOlSjR4/W9ddf7+MMzy9cJ/6J6wQBzwD/eOGFF0x0dLRZvny52bx5s5k+fbq5+OKLzb333mt++uknX6d3XqJN/A9t4n9oE//z8ssvm6ioKPP111+b/fv3m0WLFplrrrnGtG7d2nz11Ve+Tu+8xHXif7hOEMgoImGcTqdxOBymY8eOpn///rmOLVy40MTGxppu3bqZzZs3+yjD8w9t4n9oE/9Dm/ivnj17mu7du+fat3TpUlOvXj1z9dVXm1WrVvkos/MP14n/4jpBIGNiHbiGukRGRio1NVWS5HA4JEn33nuv7rnnHv33v//Viy++qA0bNvgy1fMGbeJ/aBP/Q5v4H/PPTJPlypXTsWPHdPLkSdex9u3b695779WGDRv07LPPatmyZb5K87zCdeJ/uE5QElBEnof+PcV3zrj8yy67TO+99562bNmioKAg1/G4uDg1btxYO3fu1EsvvaTNmzcXZ7rnBdrE/9Am/oc28T//bpOcmSYbNGig1atXa/ny5bmWMKhYsaKuv/56VaxYUf/5z3+0YsWKYs33fMB14n+4TlASWcawQM355PTZwD777DPZ7XadOHFCDz/8sCSpc+fOWrdund5//33VqlVLMTExuvPOO3X77bcrJCREL774ouLj4zV69Gg1aNDAl2+lxKBN/A9t4n9oE/9zepu8//77OnLkiA4ePKj+/fsrNjZW/fv318KFCzVr1ixdfvnlqlSpku699141b95cTZo00UsvvaS//vpL//d//6drr73Wt2+mhOA68T9cJyixfDSMFj721FNPmZo1a5qWLVuaOnXqmIsvvtisWbPGHDx40HTt2tVERUWZiy++2LVlZ2cbY4x57bXXzHXXXWf++usvH7+Dkoc28T+0if+hTfzPU089ZapWrWo6depkLr/8chMfH28WLVpkjDGmX79+pkqVKqZixYrmoosuMpdccomrTZYuXWq6detm9uzZ48v0SySuE//DdYKShiLyPDRnzhwTFxdnNm3aZIwxZsmSJcayLPPFF1+4zvnggw/MvHnzzCuvvGKysrKMMcY4HA5jjDF2u73Ycy7paBP/Q5v4H9rE/7z55pumcuXK5ueffzbGGLNixQpjWZb56KOPXOd8//335uOPPzZv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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/tmp/ipykernel_128294/2488080501.py:81: MatplotlibDeprecationWarning: The get_cmap function was deprecated in Matplotlib 3.7 and will be removed in 3.11. Use ``matplotlib.colormaps[name]`` or ``matplotlib.colormaps.get_cmap()`` or ``pyplot.get_cmap()`` instead.\n", - " colormap = plt.cm.get_cmap(cmap)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Time to reach plateau 3 (threshold: 3.35e-02):\n", - "------------------------------------------------------------\n", - " k_2_seqseq : 416 steps\n", - " k_3_seqseq : 537 steps\n", - " k_4_seqseq : 674 steps\n", - " k_5_seqseq : 628 steps\n", - " k_6_seqseq : 1,078 steps\n", - " k_7_seqseq : 1,180 steps\n", - " k_8_seqseq : 1,338 steps\n" - ] - }, - { - "data": { - "image/png": "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2rWDnZ0dAEAmkyEsLAzDhg2DQqFAUFAQRo4ciYCAAHOchsXLHOYq5WbpmEwSERERERVyMpkMQUFBcHJywsiRIw32y+Vy1K1bF0+ePME333wDADh48CA+//xz7NixA6mpqbh58yY2btyIJUuWFHT49IZiMklEREREZCHS0tJ0z0zmtP/8+fOoVq0a6tWrB5lMhlKlSqF9+/b49ddfCyrcN0rm0iBSbpaOySQRERERUQFKT09HSkoK0tPTodVqkZKSgtTUVABAWFiY7pnIe/fuYfv27UhMTIRWq8WJEycwf/583UysFy9eREREBF6+fIn09HT8+uuv2Lhxo25/jRo1cPbsWRw/fhyiKOraCwwMNMt505uHS4MQERERERWgqVOnYvLkybrXdnZ2qFu3Lg4fPoyoqCh06tRJt2/u3Lno2bMntFotfHx8MGjQIIwePRpARlI6duxY3LhxA4IgoESJEpg9ezY6d+4MAKhZsyZmz56NXr164cGDB1AqlWjTpg3GjRtXsCf8htD+u0nZnqUTRPEN6F8tYCqVCs7OzoiPj4dSqTR3OERERET0BlCr1QgICMCVK1dgbW1t7nAsnlT37Jnt/HXdC05O0g3sTEjQolz5JxadU7BnkoiIiIioEFAoFLhx44a5w6BsZC7pIWV7lo7JJBERERHRf4jaWECbaO4wLJfMEYLMzdxRSEojZmxStmfpmEwSEREREb1C1MZCjBsOaOPMHYrlkrkALrPfuISS9DGZJCIiIiJ6lTYxI5EUbADB1tzRWB4xJePz0yYCb1AyyQl4DDGZJCIiIiLKimALCHbmjsIyianmjoAKAJNJIiIiIiKiHGghQANB0vYsnXRz2xIREREREdFbgz2TREREREREOdCKGZuU7Vk6JpNEREREREQ50Eg8zFXKtsyFw1yJiIiIiIjIaOyZJCIiIiIiygF7Jg2xZ5KIiIiIiIiMxp5JIiIiIiKiHGhFAVpRwqVBJGzLXNgzSUREREREREZjzyQREREREVEO+MykISaTREREREREOdBABo2EAzs1krVkPhzmSkREREREREZjzyQREREREVEORIkn4BE5AQ8RERERERG9jdgzSURERERElANOwGOIPZNERERERERkNPZMEhERERER5UAjyqARJZzNVZSsKbNhMklERERERJQDLQRoJRzYqYXlZ5Mc5kpERERERERG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jQMHDqBdu3YAgBs3biAqKgo1atQAANSoUQPTpk1DTEyMLoGIiIiAUqlEhQoVsjyuQqGAQmF4JyqTySCTmS9pEAQh42eQQ5RM8+//B4IgSHId9a4HGU/i6wH8e03Ar4ipMj83Sb8j0I1GIyNJfj1kAjiKz3SZn50gk+56ZIydzRjyT0b6d/y8VNdDlAkQM8cyc1yjCUTd9RDMeK9szvv0t4VFJZNOTk5477339MocHBxQpEgRXXnPnj0xfPhwuLm5QalUYtCgQahRowaqV68OAGjcuDEqVKiArl27YtasWYiOjsb48eMxYMCALBNGIiIiIiIiLg1iyKKSydyYM2cOZDIZ2rVrB7VajSZNmmDx4sW6/XK5HLt370a/fv1Qo0YNODg4IDQ0FFOmTDFj1ERERERERJbF4pPJw4cP6722tbXFokWLsGjRomzfU7x4cfz222/5HBkREREREb0xpH5uhj2TREREREREbz5Bm7FJ2Z6l41OpREREREREZDT2TBIREREREeWEw1wNsGeSiIiIiIiIjMaeSSIiIiIiohxwaRBD7JkkIiIiIiIio7FnkoiIiIiIKCeimLFJ2Z6FYzJJRERERESUAw5zNcRhrkRERERERGQ09kwSERERERHlhEuDGGDPJBERERERERmNPZNEREREREQ54DOThtgzSUREREREREZjzyQREREREVFOuDSIASaTREREREREOeAwV0Mc5kpERERERERGY88kERERERFRTrg0iAH2TBIREREREZHR2DNJRERERESUAz4zaYg9k0RERERERGQ09kwSERERERHlRCtmbFK2Z+GYTBIREREREeWEE/AY4DBXIiIiIiIiMhp7JomIiIiIiHIgQOIJeKRrymzYM0lERERERERGY88kERERERFRTkQxY5OyPQvHnkkiIiIiIiIyGnsmiYiIiIiIciCIEj8zafkdk0wmiYiIiIiIcsSlQQxwmCsREREREREZjT2TREREREREORBEEYKEk+ZI2Za5sGeSiIiIiIiIjMaeSSIiIiIiopxo/92kbM/CsWeSiIiIiIiIjMaeSSIiIiIiohzwmUlDTCaJiIiIiIhywqVBDHCYKxERERERERmNPZNEREREREQ5EcWMTcr2LBx7JomIiIiIiMho7JkkIiIiIiLKgSBmbFK2Z+nYM0lERERERERGY88kERERERFRTvjMpAH2TBIREREREeVA0Eq/GWPJkiUICAiAUqmEUqlEjRo1sGfPnvw52VxiMklERERERFTIFStWDDNmzEBkZCTOnTuHBg0aIDg4GFevXjVbTBzmSkRERERElBMzD3Nt1aqV3utp06ZhyZIlOHXqFCpWrChdXEZgMklERERERGRBNBoNtm3bhqSkJNSoUcNscTCZJCIiIiIiyon47yZlewBUKpVesUKhgEKhyPItly9fRo0aNZCSkgJHR0f89NNPqFChgoRBGYfPTBIREREREZmJr68vnJ2ddVt4eHi2dcuWLYuLFy/i9OnT6NevH0JDQ3Ht2rUCjFYfeyaJiIiIiIhyIIgiBAmfmcxs6/79+1Aqlbry7HolAcDGxgalS5cGAFStWhVnz57FvHnzsGzZMsniMgaTSSIiIiIiopzk0wQ8mUt9mEKr1UKtVksXk5GYTBIRERERERVyY8aMQbNmzeDn54eEhARs2rQJhw8fxu+//262mJhMEhERERER5UQEoJW4PSPExMSgW7duePz4MZydnREQEIDff/8dH3/8sYRBGYfJJBERERERUSG3atUqc4dgwKJmcw0PD8cHH3wAJycneHp6ok2bNrhx44ZenZSUFAwYMABFihSBo6Mj2rVrhydPnujViYqKQosWLWBvbw9PT0988cUXSE9PL8hTISIiIiIiC5I5AY+Um6WzqGTyyJEjGDBgAE6dOoWIiAikpaWhcePGSEpK0tUZNmwYdu3ahW3btuHIkSN49OgR2rZtq9uv0WjQokULpKam4sSJE1i3bh3Wrl2LiRMnmuOUiIiIiIiILJJFDXPdu3ev3uu1a9fC09MTkZGRqFOnDuLj47Fq1Sps2rQJDRo0AACsWbMG5cuXx6lTp1C9enXs27cP165dw/79++Hl5YUqVarg66+/xqhRozBp0iTY2NiY49SIiIiIiKgwEyHxbK7SNWUuFpVM/ld8fDwAwM3NDQAQGRmJtLQ0NGrUSFenXLly8PPzw8mTJ1G9enWcPHkSlSpVgpeXl65OkyZN0K9fP1y9ehWBgYEGx1Gr1XpT7qpUKgAZU/FqtVI+hWscURQhCAAyNzKOAAhCxucoxXXUux5kPImvB/DvNQG/IqbK/Nwk/Y5ktvsG/AItaJJfD60IQfz3WvB6GC3zsxO10l0PiAIg8coDbw0RgChIej1EUci4JvwNYrx/PztBK0Iw472y5Pfp+bQ0iCWz2GRSq9Vi6NChqFmzJt577z0AQHR0NGxsbODi4qJX18vLC9HR0bo6ryaSmfsz92UlPDwckydPNih/+vQpUlJS8noqJotPiIN7GTfYOdjCWmFttjgslb1aAbskG8QnxEEek/dfFPHxCXD3soGdrRWsFRY1grxQsFdbwc7BBvHxsZBbp0nSZnx8Ioo6ymGnEGDDr4jRUuUCHOVyxL94Dhtt3tewUiUmwlduBXtBhuyXY6bsqAUZnOVWUD1/jhgJ1hSLV6vgnWoHO60NFDKLvR0wG7UWcEgH4p/Hwjox7/MuJKbFQ57gAUGwBQT+h2UsQbSHXLTH86fxUFvL89yeqFFBTCoGCPaAwFFrRhNTAVEJIVUFQR5jtjASEhLMduy3hcX+9hgwYACuXLmCY8eO5fuxxowZg+HDh+teq1Qq+Pr6wsPDw+QFRqWgSRTx7GYsHFwcYevAWzNjpSSpkRSXCGcnF3h6eua5PU2aNZ49SYWDowy2tkwmjZWSko6kxFQ4O7vB09NVkjZTZQo8TtTASWMFO35FjPZSLSLhpQbOrkXg6e6c5/ZSFArc16RDKZfDHnm/2XvbJItaqDTpUBYpAk/nvF+PtGQrRN9/CSdrwJaXw2gpmlQkyF7CuYgbPO3d8tyeIlUDTdpTWMkcAJmtBBG+XURtCjTaJBTxcIazTd5/p4vpaog2DwCZEhDsJIjwLSO+BLQqCM5KCFZ5vx6msrWV+LukhbQd1ebrtJWMRSaTAwcOxO7du3H06FEUK1ZMV+7t7Y3U1FTExcXp9U4+efIE3t7eujpnzpzRay9zttfMOv+lUCigUBjeicpkMshk5ksaBEHI6B3nECXT/DtSQRAESa6j3vUg40l8PYB/rwn4FTFV5ucm6XcEutFoZCTJr4dMAEfxmS7zsxNk0l2PjLGzGUP+yUj/jp+X6nqIMgFi5lhmjss3gai7HoIZ75XNeZ/+trCoT1gURQwcOBA//fQTDh48CH9/f739VatWhbW1NQ4cOKAru3HjBqKiolCjRg0AQI0aNXD58mXExPy/yz0iIgJKpRIVKlQomBMhIiIiIiKLwqVBDFlUz+SAAQOwadMm/Pzzz3ByctI94+js7Aw7Ozs4OzujZ8+eGD58ONzc3KBUKjFo0CDUqFED1atXBwA0btwYFSpUQNeuXTFr1ixER0dj/PjxGDBgQJa9j0RERERERGTIopLJJUuWAADq1aunV75mzRqEhYUBAObMmQOZTIZ27dpBrVajSZMmWLx4sa6uXC7H7t270a9fP9SoUQMODg4IDQ3FlClTCuo0iIiIiIjI0nA2VwMWlUyKufjAbW1tsWjRIixatCjbOsWLF8dvv/0mZWhERERERPQmYzJpwKKemSQiIiIiIqLCwaJ6JomIiIiIiMyCPZMG2DNJRERERERERmPPJBERERERUU60kHZdXq2EbZkJeyaJiIiIiIjIaOyZJCIiIiIiyoEgiv9r787joir7/oF/hiVxAdzXbh8J0bvcKIF+moqKTy635uOujwuaZppoPXajYirdWmpmRu645EJpbllmbrngLuaC0stMXLpdCFIEB5FlZs7394c3EyMWjMwwl8zn/XrN68WcOWe4hg/fA9e5zrkOdDa8ztGW7+Uo7EwSEREREREVhhPwFMDTXImIiIiIiMhqHJkkIiIiIiIqjCaAzoajiRpHJomIiIiIiMgJcWSSiIiIiIioMLxmsgCOTBIREREREZHVODJJRERERERUKBuPTOLpH5lkZ5KIiIiIiKgwPM21AJ7mSkRERERERFbjyCQREREREVFhNIFNT03lrUGIiIiIiIjIGXFkkoiIiIiIqDCiPXzY8v2echyZJCIiIiIiIqtxZJKIiIiIiKgwnM21AHYmiYiIiIiICsMJeArgaa5ERERERERkNY5MEhERERERFYanuRbAkUkiIiIiIiKyGkcmiYiIiIiICiOw8cik7d7KUTgySURERERERFbjyCQREREREVFheM1kAexMEhERERERFUbTAGg2fr+nG09zJSIiIiIiIqtxZJKIiIiIiKgwPM21AI5MEhERERERkdU4MklERERERFQYjkwWwJFJIiIiIiIishpHJomIiIiIiAqjCQAbjiZqT//IJDuTREREREREhRDRIGK723nY8r0chae5EhERERERkdU4MklERERERFQYEduemsoJeIiIiIiIiMgZcWSSiIiIiIioMGLjCXg4MklERERERETOiCOTREREREREhdE0QGfDGVhLwWyu7EwSEREREREVhqe5FsDTXImIiIiIiMhqHJkkIiIiIiIqhGgaxIanuUopOM2VI5NERERERERkNY5MEhERERERFYbXTBbAkUkiIiIiIiKyGkcmiYiIiIiICqMJoOPI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ZGRkmJ9v3rwZv/32Gzp37gwAaN68OXx9fTF37lzcv3+/wPa3b9+23wf5C/ZqV/ny5ZGenl7M1hERERUPRyaJiMgudu7ciYsXLxZY3rJlS+Tk5GDq1KkYOnQounXrBgBYvXo1/P398dZbb2Hjxo0W21SuXBmtWrXCsGHDkJKSgqioKNSvXx9vvPEGAMDFxQUrVqxA586d0ahRIwwbNgx16tTBrVu3cODAAXh5eeG7776z/4d+hL3a1bx5c+zduxfz5s1D7dq14ePjY578h4iIqKSwM0lERHYxbdq0xy5fsWIFoqOjUbVqVURFRZmX+/n5YdasWXj77bexceNG9O3b1/za5MmTcf78ecyaNQsZGRkICQnB4sWLUa5cOfM6bdu2xfHjxzFjxgwsXLgQ9+/fR82aNfHyyy/jzTfftNvnLIw92jVv3jyMHDkSU6ZMQVZWFkJDQ9mZJCKiEqcTXtFPRESKio2NRbt27bBp0yb07t3b0c0hIiKifHjNJBEREREREVmNnUkiIiIiIiKyGjuTREREREREZDVeM0lERERERERW48gkERERERERWY2dSSIiIiIiIrIaO5NERERERERkNXYmiYiIiIiIyGrsTBIREREREZHV2JkkIiIiIiIiq7EzSURERERERFZjZ5KIiIiIiIisxs4kERERERERWe3/A6YlZe1I86qTAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/tmp/ipykernel_128294/2488080501.py:81: MatplotlibDeprecationWarning: The get_cmap function was deprecated in Matplotlib 3.7 and will be removed in 3.11. Use ``matplotlib.colormaps[name]`` or ``matplotlib.colormaps.get_cmap()`` or ``pyplot.get_cmap()`` instead.\n", - " colormap = plt.cm.get_cmap(cmap)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Time to reach plateau 4 (threshold: 2.99e-02):\n", - "------------------------------------------------------------\n", - " k_2_seqseq : 607 steps\n", - " k_3_seqseq : 1,735 steps\n", - " k_4_seqseq : 1,365 steps\n", - " k_5_seqseq : 5,250 steps\n", - " k_6_seqseq : 2,116 steps\n", - " k_7_seqseq : 2,578 steps\n", - " k_8_seqseq : 5,183 steps\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA5MAAAJOCAYAAAAqOFPMAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAqRpJREFUeJzs3XmcjeX/x/H3fWY5s54Zy1gmjEHZskVFSkKWJELfbFmyVEQoIbJkrb7ZQ2RNJVqUFllCKVtCovwoDNm3GWPMjJlz//7wnZPTGWbmODNnhtfz8bgfD+e+r/O5P/d9zPKZ67qvyzBN0xQAAAAAAFlg8XYCAAAAAIC8h2ISAAAAAJBlFJMAAAAAgCyjmAQAAAAAZBnFJAAAAAAgyygmAQAAAABZRjEJAAAAAMgyikkAAAAAQJZRTAIAAAAAsoxiEoBHdO7cWYZheDsNZEJOf1YjRoyQYRg6ePBgjp3zZjRw4EBFR0crOTnZ26lk2cGDB2UYhkaMGOHtVG5p/fr10x133KHLly97OxUANwmKSQDpMgwj01tuLxIOHjyoESNGaMeOHdkSf/78+U73w2KxKCwsTLVr19b8+fOz5Zzedq1rvv/++7Vw4UKPnmvHjh0aMWJErv9/lhkDBw6UYRgKCQnJ0vsOHDigyZMna9iwYfL393fsT/vDwOnTpz2daq7z999/a9y4cXrwwQdVtGhRBQcHq2LFihowYIDOnDmT6TimaWrmzJmqVq2aAgMDFR4ersaNG2vTpk3ptv/zzz/Vvn17FS5cWFarVWXKlNHw4cOVmJjoqUtzYbfbNXHiRJUrV04BAQEqXry4XnzxRV28eNGp3blz5zR58mQ1bNhQxYsXV2BgoMqWLasePXro8OHDLnEHDhyoI0eOaMaMGdmWO4Bbi6+3EwCQO7333ntOr3/44QfNmjVLPXr00AMPPOB0LCIiQrNnz9bMmTNzMsVMO3jwoEaOHKmSJUuqatWq2XaePn366O6775bdbtfhw4f17rvvqkuXLjp69KheeeWVbDuvN119zQcPHtTs2bPVqVMnHTlyxGPXvGPHDo0cOVJ169ZVyZIlPRLTG3bs2KEJEyYoJCREpmlm6b3jx4+XzWZThw4dsim73G/58uUaMWKEmjZtqgEDBig0NFRbtmzRpEmTtHjxYm3dulVFihTJME7Pnj01c+ZM1a1bV2+88YYSEhI0a9YsPfjgg/r2229Vt25dR9s//vhDtWrVUkpKinr16qXo6Ght3LhRo0aN0ubNm/XNN99kSy9/v379NGXKFD3++ON68cUX9fvvv2vKlCnavn27Vq9eLYvlSl/A5s2b9eKLL6p+/fp6/vnnVbBgQf3222965513tGTJEv3000+qUKGCI26RIkXUpk0bjR8/Xj179pSvL78GArhBJgBkwrx580xJ5rx587ydSpatXbs2W3NPuzdLly512v/333+bwcHBZlhYmJmSkpIt53ZHp06dzBv99n+ta46JiTEDAwNNm81mXr582TRN0xw+fLgpyTxw4MANnWvt2rU3lLM3paSkmDVq1DCbNWtmPvjgg2ZwcHCm3xsbG2sGBwebffr0cTmW9lmeOnXKk+l63IEDB0xJ5vDhw92O8dtvv5nHjh1z2T979mxTkvniiy9mGGP79u2mJLNx48am3W537D937pxZuHBh8/bbbzdTU1Md+5s3b24ahmH++OOPTnHGjh1rSjLfe+89t6/nWn777TfTMAyzZcuWTvunTJliSjLff/99x74DBw6Y+/fvd4mxatUqU5LZqlUrl2PfffedKcn8+OOPPZ47gFsPw1wBeER6z+Gl7Ttz5ow6d+6sggULKjQ0VC1atNDx48clSbNmzVL58uUVEBCgcuXK6fPPP083/kcffaT7779foaGhCgoK0r333quPP/44w7zmz5+vhx56SJLUpUsXx7DMq3sfLl68qMGDB6t06dKyWq0qUqSIOnbsqEOHDrl5N66IjIxU+fLlFRsbq1OnTjkd27dvn5566ikVLVpU/v7+KlmypAYMGOAyjO2PP/5Qz549VbFiRce1V69eXe+++26654yLi9OQIUMc97RAgQK6//77tXjxYpe2sbGxeu6551SoUCEFBASodu3a2rx58w1dc/HixVWhQgXFxcW5XPPVjh49qhdffFFVq1ZVvnz5FBAQoAoVKuj1119Xamqqo92IESPUpUsXSdJDDz3k+Pw6d+7saJOUlKSxY8eqYsWKCggIUHh4uJo1a6bt27c7ndNut2vMmDGqU6eOihQpIn9/f5UoUULPPfecyzDJdevWyTCMdIcpu/PM6ZQpU7Rnzx5NnTo1S++TpK+//loXL17UI488kuX3Xi2jr6HU1FRFRkbqrrvuSvf977zzjgzD0LJlyxz7Mnvvr+XYsWP6448/lJCQkGHbihUrptvz+OSTT0qSfvvttwxjrF27VpLUqVMnp88wPDxczZs31759+/Tjjz86tb/jjjt03333OcVJ+/83b948l3OsXr1aDRs2VHh4uAICAlS5cuUsjdr48MMPZZqm+vbt67S/e/fuCgoK0qJFixz7SpYsqdKlS7vEaNCggfLnz5/uPalTp46Cg4O1dOnSTOcEANfC+AYA2a5x48YqVqyYXnvtNe3fv98xfKtly5aaNWuWunbtqoCAAE2ZMkWtW7fW//3f/yk6Otrx/qFDh2rMmDFq3LixRo0aJYvFos8++0xPPPGEpk2bpl69el3z3HXq1NErr7yisWPHOg3RLVy4sCTp8uXLatSokX788Ue1bt1aL774ovbt26cZM2Zo5cqV+vnnn1WsWDG3rvvy5cuKiYmRxWJReHi4Y/+2bdtUr149hYeH65lnntFtt92mnTt3asqUKfrxxx+1fv16+fn5SbpS1Hz//fd69NFHFR0drYsXL2rp0qXq3r27Tp06pcGDBzvinj9/Xvfff792796t1q1b67nnnlNqaqq2b9+uL7/8Um3atHHKr1GjRoqIiNCwYcN05swZTZgwQU2bNtWBAwcUGhrq1jUnJSUpJiZGvr6+Ttf8b7/++qs+/fRTPf744ypdurQuX76sFStWaNCgQfrrr7/0zjvvSJJatmypY8eOadasWXrllVdUvnx5SXL8An358mU1btxYP/30k5566ik9//zzio2N1ezZs1W7dm19//33qlGjhiQpOTlZb775plq1aqXmzZsrODhYW7du1Zw5c7RhwwZt27bN6XlETzl06JBeffVVDR8+XFFRUVl+//r16yVJd999t9s5ZOZryMfHRx06dNCbb76p3bt3q2LFik4xFi5cqIIFC6pp06aSsnbvr2Xw4MFasGCB1q5d6/QHnqw4cuSIpH++pq8nKSlJkhQUFORyLG3fpk2bHN8nkpKSrtt2y5YtMk3TUZjOmjVLzz77rGrWrKkhQ4YoODhYq1at0nPPPac///xTb775ZoY5bt26VRaLRffcc4/T/oCAAFWtWlVbt27NMEZsbKwuXLigO++80+WYj4+P7r77bsf/KwC4Id7uGgWQN2Q0zDW9oZNp+3r27Om0v1+/fqYks3jx4mZsbKxj/86dO01J5qBBgxz7tm3bZkoyBw8e7HLO5s2bm6GhoWZcXNx1c7/eMNdZs2aZkswBAwY47f/yyy9NSWaHDh2uG9s0/7k3c+fONU+dOmWeOHHC/Pnnn83WrVubkswnnnjCqX3lypXNsmXLuuT96aefuuQZHx/vcr7U1FTzwQcfNG02m5mcnOzY/9xzz5mSzHfeeSfd96RJ+1yee+45pzZLliwxJZkzZ85065q3bNliNm/e3JRktmnTxtE2vWGuCQkJTsMM03To0MG0WCzm0aNHXc6V3jDXCRMmmJLMFStWOO2PjY01ixcvbj744IOOfXa73UxISHCJ8e6775qSzI8++six73r/Z7I6TLhJkyZmpUqVHMN+szrMtU6dOma+fPnSPZaZYa5Z+Rr67bff0v162L9/vynJ7N27t2NfVu79tYa5puV/I0OYn3jiCVOSuWbNmgzbfvHFF6Yk84UXXnDab7fbzWrVqrlc41133WUGBAS4DK/97LPPTEmmJPPMmTOmaZrm0aNHTavVarZt29blvH369DEtFov5559/ZpjjnXfeaRYqVCjdY2nXmpSUdN0YAwYMMCWZc+bMSfd4165dTUnm6dOnM8wHAK6HYa4Ast2/h2ul/dW/Y8eOstlsjv2VK1eWzWbTvn37HPvef/99GYahTp066fTp007bY489pgsXLmjjxo1u5/bZZ5/JYrE49fBJUtOmTVW1alV9/vnnstvtmYr19NNPKyIiQoULF1aNGjX0ySefqHv37po7d66jza5du/Trr7+qXbt2SkpKcrqe+++/X8HBwVq5cqWjfXBwsOPfiYmJOnPmjM6ePauGDRsqLi5Of/zxh6QrQzgXL16s8uXLq0ePHi65pU3YcbV+/fo5va5Xr54kOd3/rFzzPffco6+//lqdOnXS7Nmzr/u+wMBAR29OcnKyzp49q9OnT6tRo0ay2+36+eefM3X+RYsWqVy5cqpevbrTvUxOTtbDDz+sDRs26NKlS5KuzFAcGBgo6cqQzvPnz+v06dOO677RIb7p+fDDD7VixQrNnDnT7clOTp06pfz587udQ1a+hipWrKjq1avr/fffd/p/nzZDb6dOnRz7snLvr2X+/PkyTdPtXsm33npLS5cuVY8ePRyf4/U0adJEFSpU0PTp0/XGG29o//79+vXXX9WlSxfHkNCrh9y++OKLSkxMVPPmzbV+/XodOnRIS5Ys0XPPPecYPZDW/uOPP1ZSUpK6du3qcp+bNWsmu92u1atXZ5hjQkKCrFZruscCAgJccvy3jz/+WP/973/VuHFjxxDxfytQoIAk6eTJkxnmAwDXwzBXANmuVKlSTq/z5csnSU5DWa8+dvXza7///rtM01S5cuWuGf/EiRNu53bgwAFFRkY6crpaxYoVtWPHDp0+fVqFChXKMNawYcP0wAMPKCkpSVu2bNEbb7yhY8eOOQ2d/P333yVJw4cP1/Dhw9ONc/X1xMfHa8SIEVqyZEm6U/2fO3dOknT69GmdO3dOjRs3zjDPNP/+XNJ+wczKMgtp12yxWBQaGqpy5cplaohsSkqKxo8fr4ULF2r//v0us5umXVdGfv/9d126dEkRERHXbHP69GkVL15ckrRkyRK99dZb2r59u8tae5k9Z2adPXtWffv2VdeuXV2eucsKwzCyPPvr1bL6NdSpUyf16dPH8eyfaZpatGiRo9C8Om5W7r2nvfvuuxowYICaNm2qadOmZeo9vr6++uabb9SpUycNHDhQAwcOlHTlD1njx4/Xiy++6PQHrnbt2unMmTN69dVXHQWvv7+/XnnlFX311VfaunWro33a13aDBg2uef60+xwbG+tSaEdERMjHx0dBQUHXLPLSliNJb+itdOX52vbt26t69er66KOPrvlsb9r/J9YGBnCjKCYBZDsfH58s7b/6F2fzf88jffPNN9ds/+9nu7ylUqVKjl8kmzZtqvLly6tt27YaNmyYxo8fL+mfa3vxxRevWfhdXdi2a9dOX375pXr06KE6deqoQIEC8vHx0ddff62JEydmutc0PZm5/xm5+pqzon///po6daqefPJJDRkyRIUKFZKfn59++eUXDRw4MNPXZZqmKlWqpAkTJlyzTVqx8+mnn+rJJ5/UPffco8mTJ6t48eIKCAhQamqqGjdu7HTO6/2SnZKSkqncRo4cqYsXL6p79+7av3+/Y/+lS5dkmqb2798vq9WaYbEVERGhnTt3Zuqc6cnq11Dbtm314osvauHChWrYsKE2bNigv/76S6+//rpL3Mzee0+bO3euevTooYYNG+qTTz5x9BJmRokSJbR27VrFxMTo4MGDKlCggCpWrKjp06dLkkvR3bt3b/Xo0UO7du1SUlKSKlasqPDwcL399tsqWrSoo5hM+7pZuHChihYtmu650/6A88ILL2jBggVOxw4cOKCSJUsqMjJSe/bsUVJSkksP5d9//62CBQum+2zvihUr1LJlS1WsWFErV650Kor/7ezZs5Ky7/MBcOugmASQq91+++1asWKFSpQo4Zh8JauuVxiUKlVKK1as0Pnz510mjNmzZ49sNpsKFizo1nnbtGmjmTNnauLEiXr22WdVsmRJ3X777ZKuFHIZFWHnz5/Xl19+qaeeesplNsh/D5crWLCg8uXLd0NFR0567733VKdOHZdZZq8uutJc7/O7/fbbderUKdWrVy/dobz/PmdAQIDWrl3r1LOTNlT4amnDStN+6b7aX3/9dd3zpDl06JAuXryoe++995q5V6xYMcNZSO+8806tX79ep0+fduv/Yla/hgoWLKhHHnlEn332meLj47Vw4UJZLBaXNS6zcu89ae7cuerWrZsaNGigZcuWXXNIaEZKlCihEiVKOF5//fXXslgsatSokUtbq9XqNJnQzz//rFOnTqlr166OfWlf2wULFszwa/vll192uZ9pM9XefffdWrlypbZs2eK0pm9iYqJ27NihOnXquMRbsWKFWrRooXLlymn16tXpjrS42v79+1WkSBHHaAQAcBfPTALI1Z566ilJ0iuvvOK0ZESazAxxDQkJkZR+YdCiRQvZ7XZHz2Gab775Rtu3b9djjz12Q78oDx8+XMnJyRo9erQkqVq1arrzzjs1c+bMdIuSlJQUR55pvUj/7ik8duyYy9IgFotFbdu21Z49ezRnzhyXuDcyTDI7+Pj4uOR08eJFTZw40aXt9T6/jh076vjx49fsHbv6/4ePj48Mw3DqgTRN0/HZXC06Olq+vr4uRftPP/2kTZs2XefK/jFw4EAtXbrUZatQoYICAgK0dOnSdK/339KGV2b2vP/mztdQp06dlJCQoEWLFmnp0qV6+OGHFRkZ6dQmK/f+WrKyNIh05RnL7t27q169evr8888dzxCm5/Tp0/rjjz8UGxubYdwvvvhCX331lZ566qkMZ9xNTExU3759ZbVa9dJLLzn2/+c//5HVatXw4cPTfVY0NjbWMZtshQoV1KBBA6ct7VqefPJJGYahSZMmOb1/9uzZSkhIUPv27Z32r1y5Uo8//rjKli2rNWvWZPh8bWpqqn7++Wc9+OCD120HAJlBzySAXO3uu+/WiBEjNGLECFWtWlVPPPGEIiMjdezYMW3btk1ff/21kpOTrxujQoUKCg0N1fTp0xUUFKTw8HAVKlRI9erVU+fOnbVgwQK9/vrrOnjwoOrUqaP9+/dr+vTpKly4sMaOHXtD+T/00EOqXbu2FixYoFdeeUWlSpXSe++9p3r16qly5cp6+umnVbFiRSUkJGj//v369NNPNW7cOHXu3FmhoaFq2LChFi1apMDAQN199906dOiQ3nnnHUVHR7s82zh69Gh999136tatm1auXKn7779fpmlq+/btSklJ0XvvvXdD1+JJrVu31jvvvKMnn3xSDRo00IkTJzR37tx0e0ruvvtuWSwWjRkzRufOnVNwcLCio6N177336oUXXtCqVas0YMAAfffdd6pXr55sNptiYmK0Zs0aR09k2jk/+eQT1atXTx07dtTly5e1bNmydAuZkJAQde7cWe+++67atm2runXrat++fZo3b54qV66cqR7gWrVqpbt/2rRpOnTokFq3bp2pe9W4cWOFhobq66+/1qOPPppumwkTJqT7HF29evV03333ZflrqGnTpipQoIAGDhyouLg4p4l30mTl3l9LVpYG+eKLL9S1a1fZbDY9+eST+uSTT5yOh4SEqEWLFo7X06ZN08iRIzVv3jyndUm7du0q0zRVtWpVBQYGasOGDXr//fd19913a/LkyU4xd+/erc6dO+vRRx9VsWLFdOLECS1YsEB//vmn5s2b5zQktlixYpoxY4a6deum8uXLOwrTU6dOadeuXVq2bJn27NmjkiVLXvc6K1WqpF69emnatGlq2bKlHnnkEf3++++aMmWKHnzwQbVr187R9ueff1bz5s1lmqa6dOmib775xiXev3tA169fr4sXL+qJJ564bh4AkCk5OHMsgDzsRpYG+bfrLbsQFRXltKRAmi+//NJs2LChmS9fPtPf398sVqyY2bhxY3PGjBmZyv+rr74yq1WrZlqtVlOS0zni4+PNQYMGmdHR0aafn58ZERFhdujQwTx48GCmYqfdm6VLl6Z7fMWKFaYks3Pnzo59Bw8eNJ955hkzKirK9PPzM/Pnz2/edddd5qBBg8yYmBhHu1OnTpldu3Y1ixYtalqtVvPOO+80Z82adc3lMs6dO2cOGDDALF26tCPu/fff77TsxfWWtpBkdurU6Yav+WrpLQ1y8eJF86WXXjJLlChhWq1Ws0yZMua4cePM1atXp/t/Y/78+Wb58uVNPz8/lxwvX75sTp482axRo4YZFBRkBgUFmWXK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KMzHV3FnzujkVX/gBOB5ZmqczIvFJCNIMvy9nU7eYyZLpk1GcpwMn5NeS+PChQsejWeXIbsHB3balferyVxVTP5beHi47rjjDu3fv18PP/ywkpOTdf78eafeyRMnTjiesSxSpIi2bNniFCNttter2/x7BtgTJ07IZrNds2AdPHiw+vfv73gdFxen4sWLKyIiQjab7YavEwBuBYlWqw6npsjm46Mg+Xg7nTwnwbQrLjVFtgIFVCgszNvpADc1MyVJpv8RyWKTDO91aORZ5iXJHicjzCbDt5DX0ggICPDauW8VubqYjI+P159//qmnnnpK1atXl5+fn9asWaNWrVpJkvbu3auYmBjVqlVLklSrVi2NGTNGJ0+eVKFCV/7jrlq1SjabTRUqVHC0+frrr53Os2rVKkeM9FitVlmtrn9Ht1gsslhy3WOnAJArGYYhU7qyMWosy9LunWEY/OwBsplpMWQa5pUx+YzLd8OV+2ZYDBle/H7l6e+VTMDjKlf9NHrppZe0fv16HTx4UD/99JMef/xx+fj4qG3btgoLC1PXrl3Vv39/rV27Vtu2bVOXLl1Uq1Yt1axZU5LUsGFDVahQQU899ZR27typb7/9VkOHDlWvXr0cxeCzzz6rv/76Sy+//LL++OMPTZ8+XUuWLFG/fv28eekAAAAAkKfkqp7JI0eOqG3btjpz5owiIiJ0//33a9OmTYqIiJAkTZw4URaLRa1atVJSUpIaNWqk6dOnO97v4+OjL7/8Us8995xq1aql4OBgderUSa+99pqjTXR0tL766iv169dPkydPVrFixfTuu++yLAgAAACAa/L8BDx5v9c7VxWTixcvvu7xgIAAvf3223r77bev2SYqKsplGOu/1a1bV9u3b3crRwAAAABALismAQAAACA3ujKbq+eec/RkLG+hmAQAAACADNhlUSpLgzjJVRPwAAAAAADyBnomAQAAACADTMDjip5JAAAAAECW0TMJAAAAABmwyyI7z0w6oWcSAAAAAJBl9EwCAAAAQAZSTUOppueW8/BkLG+hmAQAAACADKR6eGmQVIa5AgAAAABuRfRMAgAAAEAG7KZFdg8uDWJnaRAAAAAAwK2InkkAAAAAyADPTLqiZxIAAAAAkGX0TAIAAABABuzy7HIedo9F8h6KSQAAAADIgF0W2T04sNOTsbwl718BAAAAACDH0TMJ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+3+MzXFp984wDH72ANnMtBgyDfPKmHzG5bvhyn0zLIYML36/8vT3SnomXeWan0b169fXrl27tGPHDsdWo0YNtW/f3vFvPz8/rVmzxvGevXv3KiYmRrVq1ZIk1apVS7t27dLJk/90p69atUo2m00VKlRwtLk6RlqbtBgAAAAA8G8sDeIq1/RMhoaG6s4773TaFxwcrAIFCjj2d+3aVf3791f+/Plls9nUu3dv1apVSzVr1pQkNWzYUBUqVNBTTz2lN954Q8ePH9fQoUPVq1cvR8/is88+q2nTpunll1/W008/re+++05LlizRV199lbMXDAAAAAB5WK4pJjNj4sSJslgsatWqlZKSktSoUSNNnz7dcdzHx0dffvmlnnvuOdWqVUvBwcHq1KmTXnvtNUeb6OhoffXVV+rXr58mT56sYsWK6d1331WjRo28cUkAAAAA8gCGubrK1cXkunXrnF4HBATo7bff1ttvv33N90RFRenrr7++bty6detq+/btnkgRAAAAAG5JbhWTV/f0XYthGHr11VfdCQ8AAAAAuYopye7BdUdvhqmd3ComR4wYcc1jhmFcWZiaYhIAAAAAblpuzeZqt9tdtpSUFP3555/q16+fatSo4TSjKgAAAADkZczm6spjS4NYLBZFR0frv//9r26//Xb17t3bU6EBAAAAwKsoJl1lyzqTderUyXASHAAAAABA3pUts7n+/PPPsliypU4FAAAAgBzH0iCu3ComFy5cmO7+8+fP6/vvv9enn36qbt263VBiAAAAAIDcy61isnPnztc8VrBgQQ0aNEjDhg1zNycAAAAAyFXomXTlVjF54MABl32GYShfvnwKDQ294aQAAAAAALmbW8VkVFSUp/MAAAAAgFzLNA2ZHuxN9GQsb8mWCXgAAAAA4GZilyG7PDjM1YOxvMXtKVe/+eYbPfzwwypQoIB8fX3l4+PjsgEAAAAAbk5uFZOffPKJHn30UZ04cUJt2rSR3W5X27Zt1aZNGwUGBqpy5cpMwAMAAADgppE2AY8nt7zOrWJy3Lhxuueee7R9+3aNHDlSkvT000/r/fff12+//aZjx44pOjrao4kCAAAAAHIPt4rJPXv2qE2bNvLx8ZGv75XHLi9fvixJKlmypHr27KnXX3/dc1kCAAAAgBelTcDjyS2vc6uYDAoKkr+/vyQpPDxcVqtVx44dcxwv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a9eueuaZZ1z2P/rooy4VrWEYio2NvbHsAAAAACC3yMHnHD1pw4YN+uGHH1S1alWPxs10MdmpUyePnhgAAAAA8gpPD03NyWGuxYsXl5kNa5FkupicN2+ex08OAAAAAMhekyZN0qBBg/TOO++oZMmSHoubpWGuAAAAAHBLysNLgzz55JNKSEhQ6dKlFRQUJD8/P6fjZ8+edSsuxSQAAAAA3MQmTZqULXEpJgEAAAAgQ8b/Nk/GyxnZNf9NpteZBAAAAADkTX/++aeGDh2qtm3b6uTJk5Kkb775Rrt373Y7JsUkAAAAAGTEzIYth6xfv16VKlXS5s2b9emnnyo+Pl6StHPnTg0fPtztuBSTAAAAAJCRPFxMDho0SKNHj9aqVavk7+/v2F+vXj1t2rTJ7bg3/MxkfHy8zp07l+66JSVKlLjR8AAAAACAG7Br1y598MEHLvsLFSqk06dPux3XrWIyMTFRI0eO1Jw5c3TmzJlrtktNTXU7MQAAAADINUzjyubJeDkkPDxcx44dU3R0tNP+7du367bbbnM7rlvFZM+ePbVgwQK1aNFCDzzwgPLly+d2AgAAAACA7NOmTRsNHDhQS5culWEYstvt+vHHH/XSSy+pY8eObsd165nJTz/9VN26ddMnn3yivn37qlOnTuluWTVjxgxVrlxZNptNNptNtWrV0jfffOM4npiYqF69eqlAgQIKCQlRq1atdOLECacYMTExatq0qYKCglSoUCENGDBAKSkpTm3WrVunu+66S1arVWXKlNH8+fPduQ0AAAAAbhGm6fktp4wdO1blypVT8eLFFR8frwoVKqhOnTq67777NHToULfjulVMGoahu+66y+2TXkuxYsU0fvx4bdu2TT///LPq1aun5s2bO6ar7devn5YvX66lS5dq/fr1Onr0qFq2bOl4f2pqqpo2bark5GT99NNPWrBggebPn69hw4Y52hw4cEBNmzbVQw89pB07dqhv377q1q2bvv32W49fDwAAAAB4m7+/v2bPnq0///xTX375pRYtWqQ//vhD7733nnx8fNyO69Yw1+bNm2v16tV65pln3D5xepo1a+b0esyYMZoxY4Y2bdqkYsWKac6cOfrggw9Ur149SdK8efNUvnx5bdq0STVr1tTKlSu1Z88erV69WoULF1bVqlU1atQoDRw4UCNGjJC/v79mzpyp6OhovfXW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3tu5c2f99NNPLvs3b96szp07u52TW8XkyZMndc8990iSAgMDJclpStlWrVrp008/dTspAAAAAICzihUr6tixY45tw4YNmXrf9u3bVbt2bZf9NWvW1I4dO9zOx61nJgsXLqwzZ85IutJNmi9fPu3du1fNmjWTJMXFxSkxMdHtpAAAAAAgNzHk4Ql43HiPr6+vihQpkvVzGYYuXLjgsj82NlapqaluZHKFWz2T9957r1MV3KxZM7355pt6//339d5772nixImqWbOm20kBAAAAwK0gLi7OaUtKSrpm23379ikyMlKlSpVS+/btFRMTk6lz1KlTR+PGjXMqHFNTUzVu3Djdf//9bufuVs9knz59tHTpUiUlJclqtWrUqFHauHGjnnrqKUlS6dKlNWXKFLeTAgAAAIBcxTSubJ6MJ6l48eJOu4cPH64RI0a4NL/33ns1f/58lS1bVseOHdPIkSP1wAMP6LffflNoaOh1T/X666+rTp06Klu2rB544AFJ0g8//KC4uDh99913bl+CW8Xk/fff71TBFi9eXL///rt27dolHx8flStXTr6+N7SEJQAAAADc9A4fPiybzeZ4bbVa023XpEkTx78rV66se++9V1FRUVqyZIm6du163XNUqFBBv/76q6ZNm6adO3cqMDBQHTt21PPPP6/8+fO7nbvHKj6LxaIqVap4KhwAAAAA5B6eXs7jf7FsNptTMZlZ4eHhuuOOO7R///5MtY+MjNTYsWOzfJ7rceuZSenK2N7x48erUaNGqlatmrZs2SJJOnv2rCZMmJDpiwIAAED2SkpKUvfu3RUdHa3Q0FCVK1dOc+fOvWb7unXrymq1KiQkxLEdPXpUkhQTE+O0PyQkRL6+vnrssccc79+zZ4/q16+vfPnyqUiRIurRo4cSEhKy/TqBW0l8fLz+/PNPFS1aNFPtz58/r5UrV2rRokVauHCh0+Yut3omjxw5ogcffFCHDx/W7bffrj/++EPx8fGSpPz58+udd97RoUOHNHnyZLcTAwAAgGekpKSoaNGiWr16tUqVKqXNmzerSZMmKlasmBo2bJjue15//XX17dvXZX+JEiUcv/dJUnJysiIjI9WmTRvHvnbt2um+++7TN998o9jYWD366KMaNWqUxo0b5/FrA3JMNvVMZtZLL72kZs2aKSoqSkePHtXw4cPl4+Ojtm3bZvje5cuX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CxYs0MiRI92Om6VhrgAAAABwS8rDPZPNmzd32de6dWtVrFhRH330kbp27epW3EzP5goAAAAAuHnUrFlTa9ascfv99EwCAAAAQAYMD8/m6tGZYd1w6dIlTZkyRbfddpvbMSgmAQAAAOAmli9fPqcJeEzT1IULFxQUFKRFixa5HZdiEgAAAABuYhMnTnQqJi0WiyIiInTvvfcqX758bselmAQAAACAjOThCXg6d+6cLXFvqJi8ePGi1q9fr0OHDkmSoqKi9OCDDyo4ONgjyQEAAAAAbsyvv/6a6baVK1fOdFu3i8mpU6dq6NChio+Pl2n+U1aHhoZqzJgxev75590NDQAAAAC5Sl6egKdq1apOw1zTY5qmDMNQampqpuO6tTTIwoUL9cILL+jOO+/UBx98oB07dmjHjh368MMPValSJb3wwgt677333AkNAAAAAPCgTz/9VNHR0Zo+fbq2b9+u7du3a/r06SpdurQ++eQT/fXXXzpw4ID++uuvLMV1q2dywoQJqlOnjtasWSMfHx/H/sqVK6t169aqX7++3nrrLT311FPuhAcAAACA3MfLy3m4a+zYsZoyZYoeeeQRx77KlSurePHievXVV7Vt2za34rrVM7l371498cQTToVkGh8fHz3xxBPau3evWwkBAAAAQK5jZsOWQ3bt2qXo6GiX/dHR0dqzZ4/bcd0qJsPCwnTw4MFrHj948KBsNpu7OQEAAAAAPKR8+fIaN26ckpOTHfuSk5M1btw4lS9f3u24bg1zbdq0qaZOnarq1aurTZs2Tsc++ugjTZs2Te3bt3c7KQAAAADITfLyBDwzZ85Us2bNVKxYMcdsrb/++qsMw9Dy5cvdjutWMTl+/Hht3LhR7du314svvqjbb79dkrRv3z4dP35c5cqV0/jx491OCgAAAADgGffcc4/++usvvf/++/rjjz8kSU8++aTatWt3Q8s6ulVMRkRE6JdfftE777yjb775xrHOZKVKlTRw4ED16NFDAQEBbicFAAAAALmKp59zzOHJfIKDg9WjRw+PxnR7ncmAgAC98MILeuGFFzyZDwAAAADAw9577z298847+uuvv7Rx40ZFRUVp4sSJKlWqlJo3b+5WTLcm4ClVqpS++OKLax7/8ssvVapUKbcSAgAAAIDcJu2ZSU9uOWXGjBnq37+/mjRponPnzik1NVWSlC9fPk2aNMntuG4VkwcPHlR8fPw1j8fHxzuGvgIAgFtPUlKSunfvrujoaIWGhqpcuXKaO3fuNdu/+uqrqlSpknx9fdW3b1+X4z169FDZsmVlsVjS/cUnKSlJL730kooWLaqQkBBVqlTpujPPA0CW5eGlQaZOnarZs2dryJAh8vX9Z3BqjRo1tGvXLrfjuj3M1TCMax7bunWrwsPD3Q0NAADyuJSUFBUtWlSrV69WqVKltHnzZjVp0kTFihVTw4YNXdqXKVNGb7zxhmbPnp1uvCpVqujJJ5/UkCFD0j3epUsXXbp0Sdu2bVPRokW1d+9efhcBgP85cOCAqlWr5rLfarXq4sWLbsfNdDE5efJkTZ48WdKVQrJv377pfkOPjY3V+fPn1a5dO7eTAgAAeVtwcLBee+01x+uaNWvqoYce0oYNG9ItJjt16iTpyhJj6enVq5ckadSoUS7Hdu/erc8//1xHjhxRvnz5JEnlypW74WsAACd5eAKe6Oho7dixQ1FRUU77V6xYkTPrTBYqVEgVK1aUdGWY62233abbbrvNqY1hGAoODlb16tXVs2dPt5MCAAA3l8TERG3ZsiVb/ti8fv16lSxZUkOHDtWSJUsUHh6u7t276+WXX/b4uQAgL+rfv7969eqlxMREmaapLVu26MMPP9S4ceP07rvvuh0308Vk27Zt1bZtW0nSQw89pKFDh6p+/fpunxgAANwaTNNUt27ddPvtt6tly5Yej3/27Fnt2bNHjz76qA4fPqw///xTDRs2VNGiRfXUU095/HwAbk2enjQnJyfg6datmwIDAzV06FAlJCSoXbt2ioyM1OTJk9WmTRu347r1zOTatWvdPiEAALh1mKapnj17au/evVq9erUsFrfm/ruukJAQ+fj46LXXXpPValXFihX19NNPa/ny5RSTAPA/7du3V/v27ZWQkKD4+HgVKlTohmN6/js6AACArhSSvXr10ubNm7Vy5UqFhYVly3mqVKki6fqTAwLADcvDs7leunRJCQkJkqSgoCBdunRJkyZN0sqVK28oLsUkAADIFs8//7x+/PFHrVq1yjExTprOnTurc+fOjteXL19WYmKiUlNTlZqaqsTERF2+fNlxPDk5WYmJibLb7UpJSVFiYqJSUlIkSXXq1NHtt9+ukSNH6vLly9q7d6/mz5/v9iLcAJCuPFxMNm/eXAsXLpQknT9/Xvfcc4/eeustNW/eXDNmzHA7LsUkAADwuEOHDmn69Onau3evoqKiFBISopCQED377LOSpJiYGNWuXdvRvnv37goMDNSiRYs0bdo0BQYGqnv37o7jDRs2VGBgoH744QcNGDBAgYGBGj16tCTJx8dHX3zxhTZu3Kjw8HA1btxYL7zwgtq3b5+zFw0AudQvv/yiBx54QJL08ccfq0iRIjp06JAWLlyoKVOmuB3X7XUmAQAAriUqKkqmmf6f3ZOSkvT333879UzOnz9f8+fPv2a8devWXfd8t99+u7777js3MgWAzMnLE/AkJCQoNDRUkrRy5Uq1bNlSFotFNWvW1KFDh9yOS88kAADIUVarVXv37pWfn5+3UwGAW0KZMmW0bNkyHT58WN9++61jvd+TJ0/KZrO5HdetnskLFy7o/PnzKl68uGPf0aNHNXPmTCUlJalVq1a655573E4KAABkv3PJ8bqYkuTtNPKsYF+r8vmHeDsNADnF08855mDP5LBhw9SuXTv169dP9evXV61atSRd6aWsVq2a23HdKiZ79OihAwcOaNOmTZKkuLg41axZU0eOHJHFYtHkyZO1YsUK1a1b1+3EAABA9jmXHK9Xd36k88kJ3k4lzwr3D9KoKk9SUALI9Vq3bq37779fx44dc8yALUn169fX448/7nZct4rJDRs26JlnnnG8XrRokY4ePaqffvpJFStWVP369TV69GiKSQAAcqmLKUk6n5wgf4uvrD4MN82qpNTLOp+coIspSRSTwC0iLz8zKUlFihRRkSJFnPbd6GhSt4rJ06dP67bbbnO8/uKLL3T//ferZs2akqSOHTtq5MiRN5QYAADIflYfPwX6+Hs7jTwp2Z7i7RQA5KQ8Nsz12Wef1dChQ1WsWLEM23700UdKSUnJ8izYbhWT4eHhOn78uKQrC2D+8MMPGjJkyD9BfX0di2ICAAAAAHJWRESEKlasqNq1a6tZs2aqUaOGIiMjFRAQoHPnzmnPnj3asGGDFi9erMjISM2aNSvL53CrmLzvvvs0ffp0lStXTitWrFBiYqLTwsD/93//59RzCQAAAAB5Wh7rmRw1apSef/55vfvuu5o+fbr27NnjdDw0NFQNGjTQrFmz1LhxY7fO4dbSIK+//rr8/PzUqlUrzZ49W/3791fFihUlSampqVq6dKkefPDBLMcdN26c7r77boWGhqpQoUJq0aKF9u7d69QmMTFRvXr1UoECBRQSEqJWrVrpxIkTTm1iYmLUtGlTBQUFqVChQhowYIBSUpyHoqxbt0533XWXrFarypQpc921rQAAAAAgrylcuLCGDBmiXbt26fTp0/rll1/0448/au/evTp37pw+/vhjtwtJyc2eyTJlymjv3r3as2ePwsLCVLJkScexhIQETZs2zWmWoMxav369evXqpbvvvlspKSl65ZVX1LBhQ+3Zs0fBwcGSpH79+umrr77S0qVLFRYWpueff14tW7bUjz/+KOlKMdu0aVMVKVJEP/30k44dO6aOHTvKz89PY8eOlSQdOHBATZs21bPPPqv3339fa9asUbdu3VS0aFE1atTInVsCAAAA4CZm/G/zZLyclC9fPuXLl8+jMd0qJiXJz88v3YIxNDTUachrVqxYscLp9fz581WoUCFt27ZNderUUWxsrObMmaMPPvhA9erVkyTNmzdP5cuX16ZNm1SzZk2tXLlSe/bs0erVq1W4cGFVrVpVo0aN0sCBAzVixAj5+/tr5syZio6O1ltvvSVJKl++vDZs2KCJEydSTAIAAABAJrg1zFWSkpKSNG3aND3yyCOqUKGCKlSooEceeUTTpk1TYmKiR5KLjY2VJOXPn1+StG3bNl2+fFkNGjRwtClXrpxKlCihjRs3SpI2btyoSpUqqXDhwo42jRo1UlxcnHbv3u1oc3WMtDZpMQAAAADAiZkNWx7nVs/kkSNH9PDDD2vv3r0qWrSoypQpI0nauXOnVqxYoWnTpmn16tWZmob2Wux2u/r27avatWvrzjvvlCQdP35c/v7+Cg8Pd2pbuHBhx+yyx48fdyok046nHbtem7i4OF26dEmBgYFOx5KSkpSUlOR4HRcX58jRbre7fY0AcCsxTdMxRCin19a6GaTdO9M0PfKzx7Sb/6yZxueRZWn3zrR77vOQaUimZPJ5ZJ0pyTQ8+nmYpnHlM8nxwYg3gf/dO8NuyvDi78qe/j09r68zmR3cKiZ79eqlQ4cOacmSJWrdurXTsaVLl6pTp07q1auXPv/8c7cT69Wrl3777Tdt2LDB7RieMm7cuHTXzTx16pTHemEB4GYXFx+v4j6+CjIssno7mTwoybAozMdXcWfO6ORVf+B0V2xSnIokByrQ7i+rxe2nXm5ZSXYpOEWKPXNWfvE3vt5k/OVY+VyIkGEESIafBzK8tRhmkHzMIJ05FaskP58bjmemxsm8WEwygiSDdVizzEyWTJuM5DgZPie9lsaFCxe8du5bhVs/PdasWaN+/fq5FJKS9MQTT+iXX37R1KlT3U7q+eef15dffqnvv//eqXezSJEiSk5O1vnz5516J0+cOKEiRYo42mzZssUpXtpsr1e3+fcMsCdOnJDNZnPplZSkwYMHq3///o7XcXFxKl68uCIiImSz2dy+TgC4lSRarTqcmiKbj4+CdOO/7N1qEky74lJTZCtQQIXCwm443uUEXx0/fEmhflIAH0eWJaYm64LlksIK5FehoPw3HM+anKrUy6fkawmWLAEeyPDWYtoTlWq/qAIRYQrzL3Tj8VKSZPofkSw2yXD93RAZMC9J9jgZYTYZvjf+ebgrIMDDX0t5bGmQq3344Ydq27ZtuscGDBigN9980624bhWTaUt3XEuRIkUUGhqa5bimaap379767LPPtG7dOkVHRzsdr169uvz8/LRmzRq1atVKkrR3717FxMSoVq1akqRatWppzJgxOnnypCPHVatWyWazqUKFCo42X3/9tVPsVatWOWL8m9VqldXq+nd0i8Uii8Xtx04B4JZiGMY/j4kwaizL0u6dYRge+dljWAwxis99affOsHju87gyhk4y+Dyy7n/j5z31eZgWQ2bamMabYSxijjMdn4fhxd+V+T39H88995zCw8PVpEkTp/39+vXT4sWL3S4m3brDXbp00fz585WQkOByLD4+XvPmzVPXrl2zHLdXr15atGiRPvjgA4WGhur48eM6fvy4Ll26JEkKCwtT165d1b9/f61du1bbtm1Tly5dVKtWLdWsWVOS1LBhQ1WoUEFPPfWUdu7cqW+//VZDhw5Vr169HAXhs88+q7/++ksvv/yy/vjjD02fPl1LlixRv3793LkdAAAAAG4FeXTynffff19t27Z1eoSwd+/eWrJkidauXet2XLd6JqtWraqvvvpK5cqVU6dOnRwT8Ozbt08LFy5U/vz5VblyZX366adO72vZsuV1486YMUOSVLduXaf98+bNU+fOnSVJEydOlMViUatWrZSUlKRGjRpp+vTpjrY+Pj768ssv9dxzz6lWrVoKDg5Wp06d9NprrznaREdH66uvvlK/fv00efJkFStWTO+++y7LggAAAAC46TRt2lTTp0/XY489plWrVmnOnDn6/PPPtXbtWt1xxx1ux3WrmGzTpo3j32PGjHE5fuTIEbVt21bmVdORGYah1NTU68Y1MzF9WUBAgN5++229/fbb12wTFRXlMoz13+rWravt27dneD4AAAAAyOuzubZr107nz59X7dq1FRERofXr1zs6Bd3lVjF5I12hAAAAAJDn5LEJeK6eQPRqERERuuuuu5xGd06YMMGtc7hVTD744INunQwAAAAAkP2uNQqzTJkyiouLcxw3bmDWrxtaWCopKUm//PKLTp48qdq1a6tgwYI3Eg4AAAAAcqXcNsx1/PjxGjx4sF544QVNmjTJ5XhOjCZ1e77cKVOmqGjRorr//vvVsmVL/frrr5Kk06dPq2DBgpo7d67HkgRwxbRp01SjRg1ZrVa1aNHimu1iYmIUEhLitPn6+uqxxx5ztGndurWKFi0qm82m6OhojR492ilGyZIlFRgY6Hj/1Wu7AgAAwHu2bt2qd955R5UrV/ZqHm4Vk/PmzVPfvn3VuHFjzZkzx2ninIIFC6pevXpavHixx5IEcEVkZKSGDh2q7t27X7ddiRIlFB8f79jOnj2r8PBwp8mzhg8froMHDyouLk7r16/XBx98oEWLFjnF+fDDDx0xzp8/nx2XBAAAkDd4clmQG3j+Mj4+Xu3bt9fs2bOVL18+96/HA9wqJt966y01b95cH3zwgZo1a+ZyvHr16tq9e/cNJwfAWcuWLdWiRYssDylftmyZ7Ha70/I8lSpVcqy9mrYI+r59+zyaLwAAADyrV69eatq0qRo0aODtVNwrJvfv368mTZpc83j+/Pl15swZt5MC4Flz5sxR+/btFRAQ4LS/Z8+eCgoKcvRkpq3nmuaZZ55RwYIFVatWrQyX2wEAALiZpT0z6clNkuLi4py2pKSka+awePFi/fLLLxo3blwOXfX1uVVMhoeH6/Tp09c8vmfPHhUpUsTtpAB4zqFDh7R69Wp169bN5dj06dMVHx+vrVu3qmPHjk5DJd577z0dOHBAf//9t3r37q1WrVpp69atOZk6AABA7pFNw1yLFy+usLAwx3atQvHw4cN64YUX9P7777t0EHiLW8XkI488olmzZqX7DNXu3bs1e/Zsp4k+AHjPvHnzVK1aNVWpUiXd4xaLRTVq1FBoaKheeuklx/4HHnhAQUFBslqtateunZo1a6ZPPvkkp9IGAAC4JRw+fFixsbGObfDgwem227Ztm06ePKm77rpLvr6+8vX11fr16zVlyhT5+voqNTU1hzN3c2mQ0aNH695779Wdd96pZs2ayTAMLViwQHPnztUnn3yiokWLatiwYZ7OFUAW2e12zZs375rflK52+fLl6z4zabG4PfkzAABA3ncDk+ZcM54km80mm82WYfP69etr165dTvu6dOmicuXKaeDAgfLx8fFgcpnjVjEZGRmpbdu26ZVXXtFHH30k0zT13nvvKTQ0VG3bttX48eNZcxLIBikpKY7NbrcrMTFRFotF/v7+jucd58+f72i/atUqnT59Wm3btnWKc+jQIf38889q1KiRgoKCtGnTJk2ZMkV9+vSRdGVpkYMHD+ree++VxWLRZ599ps8//zxH1isCAACAq9DQUN15551O+4KDg1WgQAGX/TnFrWJSkgoVKqR3331X7777rk6dOiW73a6IiAh6L4BsNHr0aI0cOdLxOjAwUA8++KDWrVunmJgYl6Jxzpw5at26tcLCwlxiTZo0SV27dpXdbldkZKR69+6tQYMGSboy5XSfPn20f/9++fr66o477tCSJUtUs2bN7L1AAACAXOrqSXM8FS+vc6uYfPrpp/XMM8/o3nvvlSRFREQ4Hd+yZYtmzpypuXPn3niGABxGjBihESNGuOxPSkrS33//7TIb65IlS9KNExUVpR9++OGa56lQoYJ27NhxA5kCAAAgu61bt86r53erG3H+/Pn6888/r3n8wIEDWrBggdtJAcgaq9WqvXv3ys/Pz9upAAAA3JyyaTbXvMztYa7Xc/ToUQUGBmZHaCBXO3/uohIuXnttIFxfULBV4fmCvZ0GAACAC8M0ZZieqwA9GctbMl1Mfv755/r8888dr2fNmqXVq1e7tDt//rxWr16tu+++2zMZAnnE+XMXNW7EMsXFJng7lTzLFhakwSNaUFACAADkAZkuJvfs2aOlS5dKkgzD0ObNm7Vt2zanNoZhKDg4WHXq1NGECRM8mymQyyVcTFJcbIL8/H1l9c+WTv+bWlJyiuJiE5RwMYliEgAA5D7ZtDRIXpbp33gHDx7sWKvOYrFozpw5ateuXbYlBuRVVn9fBQT6ezuNPOlycoq3UwAAAEAmudV9YrfbPZ0HAAAAAORaLA3iyiNj8f744w8tXbpUx44dU9myZdWlSxfZbDZPhAYAAAAA5EKZLianTZumKVOm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ADzwUaVKFfN6ycnJ8tRTT8mYMWMkMzNTGjduLP7+/qLX683rxMbGCgBp3LixaLVa8/Jt27YJAPnss89ERMRkMomvr6+89tprYjKZzOvl5eWJt7e3/N///Z952ezZswWADBkypETtRa8VV1T31atXzcsiIyMFgDRo0MCirvDwcAFgXvdx6nrjjTcs/v8+ffpInTp1LJZVr15dQkJCStRPRERUkfjJJBER2cTy5cvRvHlzi2XOzs7mf7dq1Qr//Oc/ER4ejnPnzuH27ds4cODAA69ZHDFiBNzd3c3P+/fvj4YNG2LPnj2YNGkSkpKSkJKSghkzZiAjI8Ni2+DgYERFRcFkMsHJ6ferO8aNG1fqryU4OBhNmzY1P3/xxRcBAP369bOoq2j5lStX0LRpU6vU1alTJ+zcuRNarRYeHh6lrpmIiMjWOJgkIiKbCAwMfOQEPGFhYfjyyy9x6tQpzJs3D88999wD1/P19bV4rtFo0KxZM/P1iSkpKQCAkJCQP/y/7t69i1q1apmfP2im2T/SpEkTi+eenp4AgD/96U8PXJ6ZmfnYdd3/fxW9lpmZycEkEREphYNJIiKymytXrpgHXEUT2jwOk8kEAPj444/h5+f3wHVq1Khh8bzoWsvSKP6JammWy3+vwXycuh71nkRERKrgYJKIiOzCZDJh5MiR8PDwwDvvvIN58+ahf//+6Nu3b4l1iwacRUQEly5dQps2bQD8PgGNh4cHXnnlFdsXX0q2quv+GWeJiIjsgbcGISIiu1i8eDGOHz+O1atXY+7cuejQoQPGjx9fYgZYANi0aROys7PNz6Ojo/Hrr7+ie/fuAIB27drBx8cHixYtQk5OTontb926Zbsv5CFsVVf16tWRlZVVzuqIiIjKh59MEhGRTezduxcXLlwosbxDhw4oKCjAzJkzMXLkSPTq1QsAsGHDBvj5+eGtt97Ctm3bLLapXbs2OnbsiFGjRiE9PR0RERFo1qwZ/va3vwEAnJycsHbtWnTv3h0tW7bEqFGj0LhxY9y8eROxsbHw8PDAt99+a/sv+j62qqtdu3aIiYnB4sWL0ahRI3h7e5sn/yEiIqooHEwSEZFNzJo164HL165di8jISNStWxcRERHm5b6+vpg/fz7efvttbNu2DQMHDjS/Nn36dJw7dw7z589HdnY2goODsWLFClSrVs28TufOnXHixAnMnTsXy5YtQ05ODho0aIAXX3wRb775ps2+zkexRV2LFy/G2LFjMWPGDOh0OoSEhHAwSUREFU4jvKKfiIgUFRcXhy5dumD79u3o37+/vcshIiKiYnjNJBEREREREZUZB5NERERERERUZhxMEhERERERUZnxmkkiIiIiIiIqM34ySURERERERGXGwSQRERERERGVGQeTREREREREVGYcTBIREREREVGZcTBJREREREREZcbBJBEREREREZUZB5NERERERERUZhxMEhERERERUZlxMElERERERERl9v/1YmrcEnqmAwAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Plot time to first drop (plateau index 1)\n", - "fig, ax, times, levels = plot_time_to_plateau(\n", - " sweep_dir,\n", - " template_2d,\n", - " p1,\n", - " p2,\n", - " target_plateau_idx=1, # First drop\n", - " tolerance=1.1, # Loss must be <= 1.1 * theory_level\n", - " sort_by=\"name\",\n", - ")\n", - "\n", - "# Plot time to second drop (plateau index 2)\n", - "plot_time_to_plateau(\n", - " sweep_dir,\n", - " template_2d,\n", - " p1,\n", - " p2,\n", - " target_plateau_idx=2,\n", - " tolerance=1.05, # Second drop\n", - " cmap=\"viridis\",\n", - " sort_by=\"name\",\n", - ")\n", - "\n", - "# Plot time to third drop (plateau index 3)\n", - "plot_time_to_plateau(\n", - " sweep_dir,\n", - " template_2d,\n", - " p1,\n", - " p2,\n", - " target_plateau_idx=3,\n", - " tolerance=1.05, # Second drop\n", - " cmap=\"viridis\",\n", - " sort_by=\"name\",\n", - ")\n", - "\n", - "# Plot time to fourth drop (plateau index 4)\n", - "plot_time_to_plateau(\n", - " sweep_dir,\n", - " template_2d,\n", - " p1,\n", - " p2,\n", - " target_plateau_idx=4,\n", - " tolerance=1.05, # Second drop\n", - " cmap=\"viridis\",\n", - " sort_by=\"name\",\n", - ");" - ] - }, - { - "cell_type": "markdown", - "id": "5536cdb2", - "metadata": {}, - "source": [ - "## Sequence-to-one sweep across different values of k (sequence length)" - ] - }, - { - "cell_type": "markdown", - "id": "063d9df4", - "metadata": {}, - "source": [ - "- 1st sweep dir: \"/home/facosta/group-agf/sweeps/optim_sweep_20251113_001549\" (k=4, 5)\n", - "- 2nd sweep dir: \"/home/facosta/group-agf/sweeps/optim_sweep_20251113_145528\" (k=2, 3)" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "d96f443e", - "metadata": {}, - "outputs": [], - "source": [ - "def load_losses_from_multiple_sweeps(\n", - " sweep_experiments: Dict[str, List[str]], loss_type: str = \"train\", seed: int = 0\n", - ") -> Dict[str, Dict[str, np.ndarray]]:\n", - " \"\"\"\n", - " Load loss histories from experiments across multiple sweeps.\n", - "\n", - " Args:\n", - " sweep_experiments: Dictionary mapping sweep_dir -> list of experiment names\n", - " e.g., {sweep_dir_1: [\"exp1\", \"exp2\"], sweep_dir_2: [\"exp3\", \"exp4\"]}\n", - " loss_type: 'train' or 'val'\n", - " seed: Seed number\n", - "\n", - " Returns:\n", - " Dictionary mapping experiment names to their loss dictionaries\n", - " Note: Experiment names must be unique across sweeps\n", - " \"\"\"\n", - " all_losses = {}\n", - "\n", - " for sweep_dir, exp_names in sweep_experiments.items():\n", - " for exp_name in exp_names:\n", - " losses = load_experiment_losses(sweep_dir, exp_name, seed)\n", - " if loss_type in losses:\n", - " # Store with experiment name as key\n", - " all_losses[exp_name] = losses\n", - " else:\n", - " print(\n", - " f\"Warning: No {loss_type} loss found for {exp_name} in {sweep_dir}\"\n", - " )\n", - "\n", - " return all_losses\n", - "\n", - "\n", - "def create_color_mapping_from_multiple_sweeps(\n", - " sweep_experiments: Dict[str, List[str]],\n", - " parameter_path: str,\n", - " cmap: str = \"viridis\",\n", - " seed: int = 0,\n", - " log_scale: bool = False,\n", - ") -> tuple:\n", - " \"\"\"\n", - " Create color mapping for experiments across multiple sweeps.\n", - "\n", - " Args:\n", - " sweep_experiments: Dictionary mapping sweep_dir -> list of experiment names\n", - " parameter_path: Dot-separated path to parameter (e.g., 'data.batch_size')\n", - " cmap: Colormap name\n", - " seed: Seed number\n", - " log_scale: Whether to use logarithmic scale for color mapping\n", - "\n", - " Returns:\n", - " Tuple of (color_mapping dict, scalar_map, param_values dict)\n", - " \"\"\"\n", - " param_values = {}\n", - "\n", - " # Extract parameters from all experiments across all sweeps\n", - " for sweep_dir, exp_names in sweep_experiments.items():\n", - " for exp_name in exp_names:\n", - " value = extract_config_parameter(sweep_dir, exp_name, parameter_path, seed)\n", - " if value is not None:\n", - " param_values[exp_name] = value\n", - "\n", - " if not param_values:\n", - " print(f\"Warning: Could not extract '{parameter_path}' from any experiments\")\n", - " return {}, None, {}\n", - "\n", - " # Create color mapping\n", - " values = list(param_values.values())\n", - " v_min = min(values)\n", - " v_max = max(values)\n", - "\n", - " # Use log or linear normalization\n", - " if log_scale:\n", - " if v_min <= 0:\n", - " print(\n", - " f\"Warning: log_scale requested but found non-positive values (min={v_min}). Using linear scale.\"\n", - " )\n", - " norm = plt.cm.colors.Normalize(vmin=v_min, vmax=v_max)\n", - " else:\n", - " norm = plt.cm.colors.LogNorm(vmin=v_min, vmax=v_max)\n", - " else:\n", - " norm = plt.cm.colors.Normalize(vmin=v_min, vmax=v_max)\n", - "\n", - " colormap = plt.cm.get_cmap(cmap)\n", - "\n", - " color_mapping = {}\n", - " for exp_name, value in param_values.items():\n", - " color_mapping[exp_name] = colormap(norm(value))\n", - "\n", - " scalar_map = plt.cm.ScalarMappable(norm=norm, cmap=colormap)\n", - "\n", - " return color_mapping, scalar_map, param_values\n", - "\n", - "\n", - "def plot_loss_comparison_multi_sweep(\n", - " sweep_experiments: Dict[str, List[str]],\n", - " loss_type: str = \"train\",\n", - " log_scale: bool = True,\n", - " figsize: tuple = (10, 6),\n", - " seed: int = 0,\n", - " remove_outliers: bool = False,\n", - " outlier_window: int = 10,\n", - " outlier_threshold: float = 3.0,\n", - " template_2d: Optional[np.ndarray] = None,\n", - " p1: Optional[int] = None,\n", - " p2: Optional[int] = None,\n", - " show_theory_bands: bool = True,\n", - " num_theory_lines: Optional[int] = None,\n", - " color_mapping: Optional[Dict[str, tuple]] = None,\n", - " colorbar_label: Optional[str] = None,\n", - " scalar_map: Optional[plt.cm.ScalarMappable] = None,\n", - "):\n", - " \"\"\"\n", - " Plot and compare loss curves from experiments across multiple sweeps.\n", - "\n", - " Args:\n", - " sweep_experiments: Dictionary mapping sweep_dir -> list of experiment names\n", - " e.g., {sweep_dir_1: [\"exp1\", \"exp2\"], sweep_dir_2: [\"exp3\"]}\n", - " loss_type: 'train' or 'val'\n", - " log_scale: Whether to use log scale for both axes\n", - " figsize: Figure size tuple\n", - " seed: Seed number\n", - " remove_outliers: Whether to remove outliers\n", - " outlier_window: Window size for outlier detection\n", - " outlier_threshold: Threshold for outlier detection\n", - " template_2d: Optional 2D template array for computing theory lines\n", - " p1, p2: Template dimensions\n", - " show_theory_bands: Whether to show colored bands between theory lines\n", - " num_theory_lines: Number of theory lines to show\n", - " color_mapping: Dictionary mapping experiment names to RGBA colors\n", - " colorbar_label: Label for colorbar\n", - " scalar_map: ScalarMappable for colorbar\n", - " \"\"\"\n", - " fig, ax = plt.subplots(figsize=figsize)\n", - "\n", - " # Compute theory lines if template is provided\n", - " theory_levels = None\n", - " if template_2d is not None:\n", - " if p1 is None or p2 is None:\n", - " raise ValueError(\"p1 and p2 must be provided if template_2d is given\")\n", - "\n", - " from gagf.rnns.utils import get_power_2d_adele\n", - "\n", - " _, _, power = get_power_2d_adele(template_2d)\n", - " power_flat = np.sort(power.flatten()[power.flatten() > 1e-20])[::-1]\n", - "\n", - " alpha_values = np.array(\n", - " [np.sum(power_flat[k:]) for k in range(len(power_flat))]\n", - " )\n", - " coef = 1.0 / (p1 * p2)\n", - " theory_levels = coef * alpha_values\n", - "\n", - " if num_theory_lines is not None:\n", - " theory_levels = theory_levels[: num_theory_lines + 1]\n", - "\n", - " n_bands = len(theory_levels) - 1\n", - " colors = plt.cm.tab10(np.linspace(0, 1, max(n_bands, 1)))\n", - "\n", - " if show_theory_bands and n_bands > 0:\n", - " for i in range(n_bands):\n", - " y_top = theory_levels[i]\n", - " y_bot = theory_levels[i + 1]\n", - " ax.axhspan(\n", - " y_bot,\n", - " y_top,\n", - " facecolor=colors[i % len(colors)],\n", - " alpha=0.15,\n", - " zorder=-3,\n", - " )\n", - "\n", - " for y in theory_levels:\n", - " ax.axhline(\n", - " y=y,\n", - " color=\"black\",\n", - " linestyle=\"--\",\n", - " linewidth=1.5,\n", - " alpha=0.7,\n", - " zorder=-2,\n", - " label=\"_nolegend_\",\n", - " )\n", - "\n", - " # Plot loss curves from all sweeps\n", - " for sweep_dir, exp_names in sweep_experiments.items():\n", - " for exp_name in exp_names:\n", - " losses = load_experiment_losses(sweep_dir, exp_name, seed)\n", - " if loss_type in losses:\n", - " loss_history = losses[loss_type]\n", - "\n", - " if remove_outliers:\n", - " loss_history, outliers_found = remove_outliers_local(\n", - " loss_history, window=outlier_window, threshold=outlier_threshold\n", - " )\n", - " if outliers_found:\n", - " print(f\"Outliers from {exp_name} removed for plot\")\n", - "\n", - " # Determine color\n", - " if color_mapping and exp_name in color_mapping:\n", - " color = color_mapping[exp_name]\n", - " else:\n", - " color = None\n", - "\n", - " ax.plot(\n", - " loss_history, label=exp_name, alpha=0.8, linewidth=2, color=color\n", - " )\n", - "\n", - " ax.set_xlabel(\"Step\", fontsize=14)\n", - " ax.set_ylabel(f\"{loss_type.capitalize()} Loss\", fontsize=14)\n", - " ax.set_title(\n", - " f\"{loss_type.capitalize()} Loss Comparison (Multiple Sweeps)\", fontsize=14\n", - " )\n", - " ax.legend(fontsize=10)\n", - " ax.grid(True, alpha=0.3)\n", - "\n", - " if log_scale:\n", - " ax.set_xscale(\"log\")\n", - " ax.set_yscale(\"log\")\n", - "\n", - " if color_mapping and scalar_map is not None:\n", - " label = colorbar_label if colorbar_label else \"Parameter Value\"\n", - " cbar = plt.colorbar(scalar_map, ax=ax, label=label, pad=0.02)\n", - " cbar.ax.tick_params(labelsize=10)\n", - "\n", - " plt.tight_layout()\n", - " plt.show()\n", - "\n", - " return fig, ax, theory_levels" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "9ac8e706", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/tmp/ipykernel_128294/1234058534.py:81: MatplotlibDeprecationWarning: The get_cmap function was deprecated in Matplotlib 3.7 and will be removed in 3.11. Use ``matplotlib.colormaps[name]`` or ``matplotlib.colormaps.get_cmap()`` or ``pyplot.get_cmap()`` instead.\n", - " colormap = plt.cm.get_cmap(cmap)\n", - "/tmp/ipykernel_128294/1234058534.py:204: UserWarning: Creating legend with loc=\"best\" can be slow with large amounts of data.\n", - " plt.tight_layout()\n", - "/home/facosta/.cache/pypoetry/virtualenvs/gagf-PDhBFja6-py3.12/lib/python3.12/site-packages/IPython/core/pylabtools.py:170: UserWarning: Creating legend with loc=\"best\" can be slow with large amounts of data.\n", - " fig.canvas.print_figure(bytes_io, **kw)\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA6YAAAJOCAYAAACk4hqwAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAA/YZJREFUeJzs3Xd8U1X/B/DPzWq6C20ptLRll72RvaeAgj7igJ8Mt48DRNwyRGW54MGNg6ECIogLByJD9t5DmS2jk+42897fH6W3SZukaUiatP28X6+8mnvzzcnJ7b0n99xz7jmCJEkSiIiIiIiIiLxE4e0MEBERERERUc3GiikRERERERF5FSumRERERERE5FWsmBIREREREZFXsWJKREREREREXsWKKREREREREXkVK6ZERERERETkVayYEhERERERkVexYkpERERERERexYopEfk0QRDQr18/b2eDqpGLFy9CEARMnDjR21lx2ejRo9GiRQuYzWav5mPWrFkQBAFbtmxx+j1Lly6FIAhYunRppX82uZ/RaESjRo1w9913ezsrRFTFsWJKROUSBKFCj6pEEAQ0b97c29lwi3/++QdPPfUUWrVqhZCQEPj5+SE2NhZ33XUX1q5dC1EUvZ1FcoOtW7fihx9+wMyZM6FUKuX1xRU1QRAwbdo0u+9/4YUX5LhZs2a5PX/VoeJf7JdffsGIESNQp04dqNVqREREoHXr1njggQfwww8/eDt7PkGtVuOVV17BmjVrsHv3bm9nh4iqMJW3M0BEvm/mzJll1i1cuBDZ2dk2X3OnU6dOISAgwKOfUR288847eOGFFyCKInr16oXBgwcjICAASUlJ+PPPP7F27Vo88MAD+Pzzz72dVa+LiYnBqVOnEBoa6u2suGT69OmIj4+320KlUqnw1VdfYd68eVCprH/mTSYTli9fDpVKBZPJVBnZLeOOO+5At27dUK9ePa98vrNee+01zJo1CwEBARg5ciQaNGgAk8mEEydOYPXq1fjnn38watQob2fTJ0yYMAEvv/wypk+fjo0bN3o7O0RURbFiSkTlstWqsnTpUmRnZ3ukxcVSdWnN9KRPP/0U06ZNQ4MGDbB27Vp07NjR6nWTyYRly5bh77//9lIOfYtara6y+9WJEyfw999/45VXXoFCYbvT06233oqffvoJP//8M0aPHm312oYNG5CcnIzb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lyBJkrz+6NGjWLp0KUJDQ52amuNmLFq0CJcvX5aXDQaD3J3Zco7R+Ph4ZGZm4sSJE/I6s9mMadOmIS0tzS15OXHihM2WpNL/s4ruC+4kCAJ69+6NCxcuOP29hwwZgvXr12P9+vUYPHhwufFdunTBxYsXsXXrVnmdwWDA1KlTnc5nrVq1IAgCkpKSnH5PMbPZjJdffrnMPrlixQpERkZi+PDhDt8/adIkBAcH45VXXrHaX4oVFBTI96E6snfvXixfvtxmt+m0tDR89tlnAFDmYklxK+j8+fOhUCis5jrt378//vrrL+zbtw89e/Yscx/5008/jYKCAjz88MM2u+BeuHDBqlypaHyx5cuX4+jRo/KyJEl4+eWXYTabrY67bdu22by4UDywUenyKTExEcnJyTanhiIicgbvMSWiSnP//fdj/vz5eOqpp7B582bEx8fjyJEj2LRpE+68806sW7fOK/m6du2a1QmZpYiICLz99tuYP38+tm7dijfeeAM7d+5E165dcfHiRaxZswYBAQH48ssv5YGNDh8+jDvvvBO33HILWrZsibp16+LKlStYv349FAqF3A3wypUr6NChA9q1a4e2bdsiJiYGGRkZ+OGHH2A0Gq3mQ3TkkUceQU5ODl588UV07NgRffr0QYcOHeDv748rV65g06ZNuHLlCh566CH5Pc8//zx++eUXrFixAqdOncLAgQORmpqK1atXw2QyYcmSJVZd+jyhW7duaNeuHe655x4EBgbip59+wpkzZ3DnnXdaDXDz1FNP4Y8//kCvXr1w9913Q6vVYsuWLbhy5Qr69esnt1LejI0bN+K5555Dz5490axZM4SHh8tzpWq1WjzxxBNybEX2BXe74447sH79emzcuBFjx44tN754Lk9nTZ06FX/88QeGDx+O++67DwEBAdi4cSPCwsLKDC5lT1BQELp06YJt27bh/vvvR9OmTaFQKKzm77Wnbdu22L59O7p06YJBgwbJ85iaTCZ8+umnNkeItRQZGSnPwduuXTsMGzYMzZs3h16vlyvcPXr0kAcisufq1auYMGECnnzySfTp0wfNmzeHSqXCpUuX8PPPPyMvLw8jRowoM9dvr169oFarkZaWhg4dOljNl9q/f3+5QmvZjbfYo48+it27d2PZsmXYsWMHBg0ahOjoaKSkpOD06dPYs2cPvvnmG3k+2IrGFxs6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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Extracted k values: {'k_4_seqone': 4, 'k_5_seqone': 5, 'k_2_seqone': 2, 'k_3_seqone': 3}\n" - ] - } - ], - "source": [ - "# Define which experiments from which sweeps\n", - "sweep_experiments = {\n", - " \"/home/facosta/group-agf/sweeps/optim_sweep_20251113_001549\": [\n", - " \"k_4_seqone\",\n", - " \"k_5_seqone\",\n", - " ],\n", - " \"/home/facosta/group-agf/sweeps/optim_sweep_20251113_145528\": [\n", - " \"k_2_seqone\",\n", - " \"k_3_seqone\",\n", - " ],\n", - "}\n", - "\n", - "# Load template (assuming same template across all)\n", - "template_path = os.path.join(\n", - " list(sweep_experiments.keys())[0], # First sweep\n", - " list(sweep_experiments.values())[0][0], # First experiment\n", - " \"seed_0\",\n", - " \"template.npy\",\n", - ")\n", - "template_2d = np.load(template_path)\n", - "p1, p2 = template_2d.shape\n", - "\n", - "# Create color mapping based on parameter across all sweeps\n", - "color_map, scalar_map, k_values = create_color_mapping_from_multiple_sweeps(\n", - " sweep_experiments,\n", - " \"data.k\", # or 'data.batch_size', 'training.learning_rate', etc.\n", - " cmap=\"viridis\",\n", - " log_scale=False,\n", - ")\n", - "\n", - "# Plot\n", - "plot_loss_comparison_multi_sweep(\n", - " sweep_experiments,\n", - " template_2d=template_2d,\n", - " p1=p1,\n", - " p2=p2,\n", - " color_mapping=color_map,\n", - " colorbar_label=\"k (sequence length)\",\n", - " scalar_map=scalar_map,\n", - " num_theory_lines=10,\n", - " remove_outliers=False,\n", - " log_scale=True,\n", - ")\n", - "\n", - "# Print extracted values to verify\n", - "print(\"Extracted k values:\", k_values)" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "1019938c", - "metadata": {}, - "outputs": [], - "source": [ - "def calculate_time_to_plateau_multi_sweep(\n", - " sweep_experiments: Dict[str, List[str]],\n", - " template_2d: np.ndarray,\n", - " p1: int,\n", - " p2: int,\n", - " target_plateau_idx: int = 1,\n", - " loss_type: str = \"train\",\n", - " seed: int = 0,\n", - " tolerance: float = 1.1,\n", - ") -> tuple:\n", - " \"\"\"\n", - " Calculate time to plateau for experiments across multiple sweeps.\n", - "\n", - " Args:\n", - " sweep_experiments: Dictionary mapping sweep_dir -> list of experiment names\n", - " template_2d: 2D template array\n", - " p1, p2: Template dimensions\n", - " target_plateau_idx: Which plateau to measure (1 = first drop)\n", - " loss_type: 'train' or 'val'\n", - " seed: Seed number\n", - " tolerance: Multiplier for plateau threshold\n", - "\n", - " Returns:\n", - " Tuple of (times_to_plateau dict, theory_levels array)\n", - " \"\"\"\n", - " from gagf.rnns.utils import get_power_2d_adele\n", - "\n", - " # Compute theory levels\n", - " _, _, power = get_power_2d_adele(template_2d)\n", - " power_flat = np.sort(power.flatten()[power.flatten() > 1e-20])[::-1]\n", - " alpha_values = np.array([np.sum(power_flat[k:]) for k in range(len(power_flat))])\n", - " coef = 1.0 / (p1 * p2)\n", - " theory_levels = coef * alpha_values\n", - "\n", - " if target_plateau_idx >= len(theory_levels):\n", - " raise ValueError(\n", - " f\"target_plateau_idx {target_plateau_idx} exceeds available plateaus ({len(theory_levels)})\"\n", - " )\n", - "\n", - " target_level = theory_levels[target_plateau_idx]\n", - " threshold = tolerance * target_level\n", - "\n", - " times_to_plateau = {}\n", - "\n", - " # Process all experiments across all sweeps\n", - " for sweep_dir, exp_names in sweep_experiments.items():\n", - " for exp_name in exp_names:\n", - " losses = load_experiment_losses(sweep_dir, exp_name, seed)\n", - " if loss_type in losses:\n", - " loss_history = losses[loss_type]\n", - "\n", - " # Find first step where loss drops below threshold\n", - " crossing_indices = np.where(loss_history <= threshold)[0]\n", - "\n", - " if len(crossing_indices) > 0:\n", - " times_to_plateau[exp_name] = crossing_indices[0]\n", - " else:\n", - " times_to_plateau[exp_name] = None # Never reached\n", - "\n", - " return times_to_plateau, theory_levels\n", - "\n", - "\n", - "def plot_time_to_plateau_multi_sweep(\n", - " sweep_experiments: Dict[str, List[str]],\n", - " template_2d: np.ndarray,\n", - " p1: int,\n", - " p2: int,\n", - " target_plateau_idx: int = 1,\n", - " loss_type: str = \"train\",\n", - " seed: int = 0,\n", - " tolerance: float = 1.1,\n", - " figsize: tuple = (10, 6),\n", - " sort_by: str = \"time\",\n", - " color_mapping: Optional[Dict[str, tuple]] = None,\n", - " colorbar_label: Optional[str] = None,\n", - " scalar_map: Optional[plt.cm.ScalarMappable] = None,\n", - " show_not_reached: bool = True,\n", - "):\n", - " \"\"\"\n", - " Plot time to reach a target plateau for experiments across multiple sweeps.\n", - "\n", - " Args:\n", - " sweep_experiments: Dictionary mapping sweep_dir -> list of experiment names\n", - " template_2d: 2D template array\n", - " p1, p2: Template dimensions\n", - " target_plateau_idx: Which plateau to measure (1 = first drop)\n", - " loss_type: 'train' or 'val'\n", - " seed: Seed number\n", - " tolerance: Multiplier for plateau threshold\n", - " figsize: Figure size\n", - " sort_by: 'time' (sort by time to plateau) or 'name' (alphabetical)\n", - " color_mapping: Dictionary mapping experiment names to RGBA colors\n", - " colorbar_label: Label for colorbar\n", - " scalar_map: ScalarMappable for colorbar\n", - " show_not_reached: Whether to show experiments that didn't reach plateau\n", - " \"\"\"\n", - " times, theory_levels = calculate_time_to_plateau_multi_sweep(\n", - " sweep_experiments,\n", - " template_2d,\n", - " p1,\n", - " p2,\n", - " target_plateau_idx,\n", - " loss_type,\n", - " seed,\n", - " tolerance,\n", - " )\n", - "\n", - " # Separate reached vs not reached\n", - " reached = {k: v for k, v in times.items() if v is not None}\n", - " not_reached = {k: v for k, v in times.items() if v is None}\n", - "\n", - " if not reached and not not_reached:\n", - " print(\"No experiments found!\")\n", - " return\n", - "\n", - " # Sort experiments that reached the plateau\n", - " if reached:\n", - " if sort_by == \"time\":\n", - " sorted_reached = sorted(reached.items(), key=lambda x: x[1])\n", - " else: # alphabetical\n", - " sorted_reached = sorted(reached.items(), key=lambda x: x[0])\n", - " else:\n", - " sorted_reached = []\n", - "\n", - " # Add not-reached experiments at the end if requested\n", - " if show_not_reached and not_reached:\n", - " not_reached_sorted = sorted(not_reached.keys())\n", - " exp_names = [item[0] for item in sorted_reached] + not_reached_sorted\n", - " # Use a very large value for visualization (e.g., max reached time * 1.5)\n", - " max_reached_time = max([v for v in reached.values()]) if reached else 10000\n", - " placeholder_time = max_reached_time * 1.3\n", - " steps = [item[1] for item in sorted_reached] + [placeholder_time] * len(\n", - " not_reached_sorted\n", - " )\n", - " reached_mask = [True] * len(sorted_reached) + [False] * len(not_reached_sorted)\n", - " else:\n", - " exp_names = [item[0] for item in sorted_reached]\n", - " steps = [item[1] for item in sorted_reached]\n", - " reached_mask = [True] * len(sorted_reached)\n", - "\n", - " if not exp_names:\n", - " print(\"No experiments to plot!\")\n", - " return\n", - "\n", - " # Create bar plot\n", - " fig, ax = plt.subplots(figsize=figsize)\n", - " bars = ax.bar(range(len(exp_names)), steps, alpha=0.7, edgecolor=\"black\")\n", - "\n", - " # Color bars\n", - " for i, (bar, exp_name, did_reach) in enumerate(zip(bars, exp_names, reached_mask)):\n", - " if not did_reach:\n", - " # Gray out experiments that didn't reach plateau\n", - " bar.set_color(\"lightgray\")\n", - " bar.set_alpha(0.4)\n", - " bar.set_hatch(\"///\")\n", - " elif color_mapping and exp_name in color_mapping:\n", - " bar.set_color(color_mapping[exp_name])\n", - " else:\n", - " # Default gradient coloring\n", - " colors = plt.cm.viridis(\n", - " np.linspace(0.2, 0.9, len([m for m in reached_mask if m]))\n", - " )\n", - " bar.set_color(colors[i] if did_reach else \"lightgray\")\n", - "\n", - " ax.set_xticks(range(len(exp_names)))\n", - " ax.set_xticklabels(exp_names, rotation=45, ha=\"right\")\n", - " ax.set_xlabel(\"Experiment\", fontsize=12)\n", - " ax.set_ylabel(\"Steps to Reach Plateau\", fontsize=12)\n", - " ax.set_title(\n", - " f\"Time to Reach Plateau {target_plateau_idx} (Level: {theory_levels[target_plateau_idx]:.2e})\",\n", - " fontsize=13,\n", - " )\n", - " ax.grid(True, alpha=0.3, axis=\"y\")\n", - "\n", - " # Add value labels on bars\n", - " for i, (bar, step, did_reach, exp_name) in enumerate(\n", - " zip(bars, steps, reached_mask, exp_names)\n", - " ):\n", - " height = bar.get_height()\n", - " if did_reach:\n", - " ax.text(\n", - " bar.get_x() + bar.get_width() / 2.0,\n", - " height,\n", - " f\"{int(step):,}\",\n", - " ha=\"center\",\n", - " va=\"bottom\",\n", - " fontsize=9,\n", - " )\n", - " else:\n", - " # Add \"Did not reach\" annotation\n", - " ax.text(\n", - " bar.get_x() + bar.get_width() / 2.0,\n", - " height / 2,\n", - " \"Did not\\nreach\",\n", - " ha=\"center\",\n", - " va=\"center\",\n", - " fontsize=8,\n", - " style=\"italic\",\n", - " color=\"darkgray\",\n", - " weight=\"bold\",\n", - " )\n", - "\n", - " # Add colorbar if color mapping provided (only for experiments that reached)\n", - " if color_mapping and scalar_map is not None and reached:\n", - " label = colorbar_label if colorbar_label else \"Parameter Value\"\n", - " cbar = plt.colorbar(scalar_map, ax=ax, label=label, pad=0.02)\n", - " cbar.ax.tick_params(labelsize=10)\n", - "\n", - " plt.tight_layout()\n", - "\n", - " # Print summary\n", - " print(\n", - " f\"\\nTime to reach plateau {target_plateau_idx} (threshold: {theory_levels[target_plateau_idx]:.2e}):\"\n", - " )\n", - " print(\"-\" * 60)\n", - " if reached:\n", - " for name, step in sorted_reached:\n", - " print(f\" {name:30s}: {step:8,} steps\")\n", - "\n", - " if not_reached:\n", - " print(f\"\\nExperiments that did not reach plateau {target_plateau_idx}:\")\n", - " for name in not_reached_sorted:\n", - " print(f\" - {name}\")\n", - "\n", - " plt.show()\n", - "\n", - " return fig, ax, times, theory_levels" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "84c284b1", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/tmp/ipykernel_128294/1234058534.py:81: MatplotlibDeprecationWarning: The get_cmap function was deprecated in Matplotlib 3.7 and will be removed in 3.11. Use ``matplotlib.colormaps[name]`` or ``matplotlib.colormaps.get_cmap()`` or ``pyplot.get_cmap()`` instead.\n", - " colormap = plt.cm.get_cmap(cmap)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Time to reach plateau 1 (threshold: 4.53e-02):\n", - "------------------------------------------------------------\n", - " k_2_seqone : 33 steps\n", - " k_3_seqone : 210 steps\n", - " k_4_seqone : 44,338 steps\n", - "\n", - "Experiments that did not reach plateau 1:\n", - " - k_5_seqone\n" - ] - }, - { - "data": { - "image/png": "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HZeISkW3bt1QtWpVzJo1C5cuXcKSJUvw7LPP4rnnnsOKFSswcuRIaLVaLFmyBH369ME///yD8PBw8/OnTp2KOXPmoFu3bpg9ezZUKhW+++479O3bF0uXLsWYMWOKfO327dtj8uTJmDt3rsVU4uDgYACAXq9HVFQUjhw5gj59+uCNN97AxYsX8dlnn2HPnj34/fffUbVqVYfet16vR3x8PFQqFfz9/c3HY2Nj0blzZ/j7++PFF19ElSpV8Oeff2LJkiU4cuQIDh48CI1GAyA3DB06dAhPPfUUwsPDkZGRgS1btmD06NFISkrCpEmTzPUmJyejbdu2OHv2LPr06YOXX34Zoiji5MmT2LFjB/r372/RvqioKAQGBmLatGm4c+cOFixYgB49eiAuLg4+Pj4OveecnBzEx8fDzc3N4j3f76+//sLWrVvx7LPP4pFHHoFer8fu3bvx9ttv47///sPy5csBAM899xxu3ryJFStWYPLkyahXrx4A4JFHHjF/xt26dcPRo0cxePBgjB07FikpKfj888/Rpk0bHDp0CM2bNwcA6HQ6fPjhh+jduzd69uwJb29vnDhxAl988QUOHz6M2NhYuLu7O/S+H6SDBw/C398ftWvXdriOwYMH4+uvv0afPn0wfPhw5OTkYP369XjiiSewdetWPPPMM/D398czzzyD7du34+7duyhfvrz5+UajEevXr0dERIR5SntKSgoee+wxxMfHY8SIEWjQoAFu3ryJTz/9FK1atcLvv/9uDmtFGTJkCA4ePIi4uDi7p1ovXLgQ58+fx7fffuvox4Hr16+jXLlyyMrKgpeXF6KiojB37lzUrVu30PJpaWnIyclBamoqjhw5gvfffx8VKlRAq1atLMqV5N8qkxMnTqBKlSoIDQ21OB4aGorKlSvjxIkTNuu4du0agLx/5/ILCQlB9erVHbo3mYjIIaU8EktECmZrOm5hUzxNx1555RWL4+PHj5cASKGhoVJKSor5+J9//ikBkN5++23zsdjYWAmANGnSpAKv2bNnT8nHx0dKTU212nZrUwFXrFghAZAmTJhgcXzHjh0SAOn555+3Wrck5X02q1atkpKSkqTExETp999/l/r06SMBkPr27WtRPiIiQqpTp06Bdm/durVAO9PT0wu8niiKUocOHSRfX19Jp9OZj7/88ssSAGn58uWFPsfE1C8vv/yy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jBkzBlFRURgxYgSmTJmC8ePHQ6vVYvXq1QgODsZrr73m7LYSERERUSkRRRGSJMHT01MRgYcBNJdc+oOUpUOHDub/HR8fj9DQ0ALXryRJuHr1qkP1F33FWvHxxx8jKioKP/74I1544QUAQI8ePTBnzhycO3cOaWlpuHPnjkMNIiIiIiL5UVLgYQDNJZf+cCXSA3jIXXh4uMUuKSZ3795FeHi4Q3U6FEL//fdfPP300wBgvjFVp9MBAPz8/DBq1Ch8+umnDjWIiIiIiORHrVZbDVJyCTwMoLnk0h+udnueaTquMx9yZ7r3837p6enQarUO1enQny38/PxgMBgA5K6G5OXlZTEU6+Pjg4SEBIcaRERERETyo4TAwwCaSy79odfrXW6f0LIkOjoaACAIAt555x14eXmZz4miiN9++w1NmjRxqG6HQmjDhg3x559/mn9u3bo1PvvsM3Tv3h1GoxHLly9H7dq1HWoQERERESmHXAIPA2guOfaHS3H2HFoZz8c9efIkgNy+P336tMXvlbu7Oxo3bow333zTobodCqHPP/88li1bhpycHHh4eGDmzJno0qWLeUsWjUaDb7/91qEGEREREZEyyDHwMIDKqz+stYHkzbRC7vDhw7F48WKH9gMtikMhdPjw4Rg+fLj55zZt2uDs2bP44YcfoFar0bVrV46EEhEREbkwOQYeBlB59YdarXa96bjOvo9TAfeEfvnll06v02lLWdWoUQOvv/66s6ojIiIiIpmSY+BhAJVff7jaokRl1XPPPVfocdM1X7NmTQwcOBB16tSxu06HVsclIiIiorJJroHHGgbQvLJy6A8lkyTnP+TO19cXv/zyC/744w8IggBBEHDy5En88ssvMBgM2LRpExo3bowjR47YXaddI6EqlcrqL1VhBEEwr6BLRERERK5BaYGHATSvrBz6Q+mcva2KErZoCQkJwcCBA7F06VLz9Wg0GvH666/Dx8cHGzduxEsvvYSJEyfi8OHDdtVpVwidNm1asUMoEREREbkOU+AxBSklBB4G0LyycugPUqYvvvgCR44csbgeVSoVXn31VTz22GOYO3cuxo4di3bt2tldp10hdMaMGcVuLBERERG5DlEUzeFICYGHATSvrBz6w2VIgnMXE1LASKjBYMD58+cLLDx7/vx5832/tn4X7lfshYkSEhJw+fJlVKhQAbVq1Sru04mIiIhIgZQUeBhA88rKoT9I2QYPHoyRI0di8uTJaNGiBQDgxIkTmDt3LoYMGQIAOHjwIBo0aGB3nXaHUJ1Oh2HDhmHTpk3mY40bN8bWrVtRvXp1u1+QiIiIiJRHrVbbDEdyCDwMoHll5dAfrrZFi7MXE1LCwkQLFy5EcHAwPvjgAyQmJgIAgoODMX78eEycOBEA0LVrV3Tr1s3uOu0OoUuXLsXGjRvRvHlzdOzYEZcuXcL27dsxZMgQHDp0qJhvhYiIiIiUhAGUARQoXn+IoshtWlyAWq3GlClTMGXKFKSmpgLIXTE3v2rVqhWrTrtD6Nq1a9GpUyf8/PPP5l+8efPmYerUqbhx4wYqV65crBcmIiIiIuWTS+BhAM0rK6f+0Gg0VsspjvT/D2fWpyD3h09H2b1PaFxcHHr37m3xi9evXz9IkoS4uDinNIaIiIiIlENugYcBVH79Ye29KZFpixZnPuQuMTERgwcPRuXKleHm5ga1Wm3xcITdI6FpaWnw9/e3OObn5wcAyMnJcejFiYiIiEiZ5Bh4GEDl1R9ubm4ud09oWTRs2DDEx8fjnXfeQaVKlZyydWexVsct6gW5hygRERFR2SHHwMMAKr/+cNkAqrAptCV1+PBh/Prrr2jSpInT6ixWCB05ciRefPHFAsefeuqpAr8YgiAgJSWlZK0jIiIiIlmRa+BhAFVOf5CyhIaGQnLyMr52h9ChQ4c69YWJiIiISHmUFngYQPPKyqE/lM7Z93Eq4Z7QRYsW4e2338by5cudtjWn3SH0yy+/dMoLEhEREZHymAKPKRwpIfAwgOaVlUN/kDL169cPmZmZeOSRR+Dl5VVgxeO7d+8Wu85iTcclIiIiorLJaDRCFEV4enoqIvAwgOaVlUN/uIwyuEXLokWLnF4nQygRERER2WQ0GhUTeBhA88rKoT9ci/D/D2fWJ28P4rZM19q4h4iIiIgeCFt7Asol8DCA5pWVQ3+47Aq5Zcy///6LqVOnYsCAAbh16xYA4Mcff8TZs2cdqo8hlIiIiIhsshWk5BB4GEDzysqhP0RRhCiKVutTHOkBPGTu4MGDaNSoEX777Tds3boV6enpAIA///wT06dPd6hOhlAiIiIicphcAg8DaF5ZOfWHtc+AlOHtt9/Gu+++i71791pcI507d8axY8ccqpNXBRERERE5RG6BhwFUfv3hciG0DI6Enj59Gs8++2yB40FBQbh9+7ZDdZZ4YaL09HTcu3ev0A1Mq1WrVtLqiYiIiEiG5Bh4GEDl1R8ajYb3hLoAf39/3Lx5E+Hh4RbHT548iSpVqjhUp0MhNDs7GzNnzsQXX3yBO3fuFFnO5eaAExEREZEsAw8DqPz6wyUDqCTkPpxZn8z1798fEydOxJYtWyAIAoxGI44cOYI333wTQ4YMcahOh0LoK6+8gjVr1qBXr15o164dAgICHHpxIiIiIlIWuQYeBlDl9IeSSVLuw5n1yd3cuXMxZswYhIaGQhRF1K9fH6IoYuDAgZg6dapDdToUQrdu3YpRo0Zh+fLlDr0oERERESmT0gIPA2geOfQHKY+7uzs+//xzvPPOOzhz5gzS09PRtGlT1KpVy+E6HQqhgiDg0UcfdfhFiYiIiEhZTIHHaDQqJvAwgOaRQ3+4BGcvJqSAkVCTatWqOW3NH4dCaM+ePfHzzz/jxRdfdEojiIiIiEjejEYjDAYDPD09FRF4GEDzyKE/SFmio6PtLrtgwYJi129XCL17967Fz++88w7+97//4YUXXsCLL76IatWqFfpLVb58+WI3iIiIiIjkhyOgDKCFlS1zAbSMLEx08uRJu8o52u92hdCKFSsWeAFJknDy5El88cUXRT6Pq+MSERERuQa1Wm01SAHyCDwMoHnk0B8uuUJuGbB///4HWr9dIXTatGll568bRERERFSAtdAFyCPwMIDmkUN/GI1GlxuUEqTchzPrK4vsCqEzZsx4wM0gIiIiIqWSQ+BhAM0jp/6wNXquOGV4YSJnsv4nLSIiIiIiK+QUeBhA5dcfLhdCySkcCqFTp05FkyZNijzftGlTzJw509E2EREREZECyC3wMIAqqz8UybQwkTMfZZBDIfSbb77Bk08+WeT57t27Y9OmTQ43ioiIiIjkTWmBhwE0z8PqD6KiOBRC4+Pj8cgjjxR5Pjw8HFeuXHG4UUREREQkX3IMPAygyukPRZMewEMBvvrqK7Rp0waVK1c257xFixZh+/btDtXnUAgtV66c1ZAZFxfHv34QERERuSClBR4G0Dxy6A9Sns8++wzR0dHo3r07kpOTzSse+/v7Y9GiRQ7V6VAI7dixI5YvX47r168XOHf16lWsWLECnTp1cqhBRERERCRPer1eUYGHATSPHPrDJZTBkdCPP/4Yn3/+OaZMmWJxrTdv3hynT592qE67tmi53+zZs9GyZUs0aNAAI0eORIMGDQAAZ86cwapVqyBJEmbPnu1Qg4iIiIhIfkRRhF6vh4eHhyICDwNoHjn0h8sog1u0xMXFoWnTpgWOe3h4ICMjw6E6HQqhderUwa+//opXX30VCxcutDjXvn17LFmyBPXq1XOoQUREREQkP0ajUTGBhwE0jxz6g5QtPDwcp06dQlhYmMXx3bt3O5z5HAqhABAREYGDBw/i9u3b+O+//wAANWrUQMWKFR2tkoiIiIhkSqVSQaPRWC0jh8DDAJpHLv3hUpy9rYoCtmiJjo7GmDFjzNf/8ePH8fXXX2PevHlYuXKlQ3U6HEJNKlasyOBJRERE5OKshS5APoGHATSXHPpDkiTzIjakXKNGjYKnpyemTp2KzMxMDBw4EJUrV8bixYvRv39/h+osUQi9du0aTp48iZSUlEL/yjFkyJCSVE9ERERECiCHwMMAmkdO/WHrjxdKI0i5D2fWpwSDBg3CoEGDkJmZifT0dAQFBZWoPodCaHZ2NoYOHYpvv/0WRqMRgiBAknI/wfwXI0MoERERkWuTU+BhAJVff7haCC2L4uLiYDAYUKtWLXh5ecHLywsAcPHiRWg0GlSvXr3YdTq0RcvkyZOxdetWzJkzBwcOHIAkSVizZg327NmDJ598Eo0bN8aff/7pSNVEREREpBByCzwMoPLrD5dbsKiUt2j57LPPEBERAV9fX/j6+iIyMhI//vhjkeVXr14NQRAsHlqttlivOWzYMBw9erTA8d9++w3Dhg0r3hv4fw6F0G+++QbDhw/HxIkTzduzVKlSBV26dMGOHTvg7++PTz75xKEGEREREZH8yTHwMIDKqz9cLoDKQNWqVfHee+8hNjYWv//+Ozp37oyePXvi7NmzRT7H19cXN2/eND+uXLlSrNc8efIk2rRpU+B469atcerUqeK+BQAOhtBbt26hZcuWAABPT08AsNgjpnfv3ti6dWux67WV7LOzszFmzBhUqFAB5cqVQ+/evZGYmGhRR3x8PHr06AEvLy8EBQVhwoQJMBgMFmUOHDiARx99FB4eHqhZsyZWr15doC2ffPIJqlevDq1Wi1atWuH48ePFfj9ERERErkiOgYcBVDn9QY57+umn0b17d9SqVQu1a9fGnDlzUK5cORw7dqzI5wiCgJCQEPMjODi4WK8pCALS0tIKHE9JSXF44SmHro7g4GDcuXMHAODl5YWAgABcuHDBfD41NRXZ2dnFrtdWsh8/fjx++OEHbNmyBQcPHsSNGzfw3HPPmZ8viiJ69OgBnU6Ho0ePYs2aNVi9ejWmTZtmLhMXF4cePXqgU6dOOHXqFMaNG4dRo0bhp59+MpfZtGkToqOjMX36dPzxxx9o3LgxoqKicOvWrWK/JyIiIiJXorTAwwBasCwDqOME5C1O5JRHCdoiiiI2btyIjIwMREZGFlkuPT0dYWFhCA0NtTlqWpj27dtj3rx5FoFTFEXMmzcPbdu2dajtgmRaUagY/ve//yErKws//PADgNx5wj/++CMWLFgAo9GIN954A02bNrUIdo4qX748PvzwQ/Tp0weBgYHYsGED+vTpAwA4f/486tWrh5iYGLRu3Ro//vgjnnrqKdy4ccOc8JctW4aJEyciKSkJ7u7umDhxInbu3IkzZ86YX6N///5ITk7G7t27AQCtWrVCixYtsHTpUgC5v1ihoaF49dVX8fbbb9vV7tTUVPj5+SElJQW+vr4l/hyIiEiZrmXewdsnN8BH4wlPtfUvk0QmWaIOafosvNd0IKp6VSjt5sBgMODOnTuQJAl6vV4xgYcBtGDZh9kfoijCaDSiQoUKNt/3g+Ks7+SmesLefxeqYt5TaY0xOxtXJk7F1atXLdrn4eEBDw+PQp9z+vRpREZGIjs7G+XKlcOGDRvQvXv3QsvGxMTg4sWLiIiIQEpKCj766CMcOnQIZ8+eRdWqVe1q47lz59C+fXv4+/ujXbt2AIBff/0Vqamp+OWXX9CwYcNivmsHR0Jfe+011KhRAzk5OQCA2bNnw9/fH4MHD8bQoUPh5+eHJUuWOFK12f3JPjY2Fnq9Hl26dDGXqVu3LqpVq4aYmBgAuR9yo0aNLIaYo6KikJqaak78MTExFnWYypjq0Ol0iI2NtSijUqnQpUsXcxkiIiKissYU6OQaeIpqb/4Aevv2bfz888/4+eefsW/fPhw8eBC///47bt26ZRFAjx49ip9//hk6na5AvZIk4ddff8Xhw4chCILTA+jt27dx/fp1ZGZmWi0r9wDqsiTB+Q8AoaGh8PPzMz/mzZtXZBPq1KmDU6dO4bfffsPLL7+MoUOH4ty5c4WWjYyMxJAhQ9CkSRN06NABW7duRWBgIJYvX273W65fvz7++usv/O9//8OtW7eQlpaGIUOG4Pz58w4FUMDBLVratm1rMfQaGhqKv//+G6dPn4ZarUbdunUd/mvH/cn+u+++Q/369XHq1Cm4u7vD39/fonxwcDASEhIAAAkJCQXmOJt+tlUmNTUVWVlZuHfvHkRRLLTM+fPni2x3Tk6OOZQDuX8tAXJ/OQvbQ5WIiMoGySjl7SunkP3gqPSZrhnJKMnie4TRaITBYIBarYZGowEAFDWZLn/gMY3kFVU2f+AxjfoUVTZ/4DGFLmtl8wdQU1nT97MKFSogODgY9+7dw82bN5GcnIx69eohODgYgiCgZs2a5vea/zUkSUJaWhp0Oh08PDzg6elZZBvuD6BqtbrIskDeCGhiYiLu3LmD8uXL2/yM3dzcZN0fkiRBkqRS/T4sh98fexQ2EloUd3d31KxZEwDQrFkznDhxAosXL7YrWGo0GjRt2hSXLl0qVvsqV66MuXPnFus51jhtXFylUqFx48YlrseU7FNSUvDNN99g6NChOHjwoBNa+GDNmzcPM2fOLHA8KSnJoftjiYjINaTkpCJE5wlPozs8VKUzHY2UJ8cIeBuAlDt3oUk32H7CAyaKItLS0qBWq5GVlWW1nF6vh1qthpubm9XRPKPRCL1eD0EQoNForNZrCnT2ltXr9ZAkCe7u7hbfw/KvaeLh4YHg4GBkZGQgNTUVN2/ehFarRXJyMuLi4hAQEAC1Wg2DwYCrV68iNTUVbm5u8PHxAZC7OOfdu3cLvP61a9eQlJQEPz8/5OTkQKfTwdvbGzVq1IBKpYJOp8ONGzeQmpoKSZLg5eWFkJAQaDQa/Pvvv+bRV9OqoxERERZTg+//jG2NapZmf5jCpyiKpbZfaGEL6pSIs/+g+P91mRZmdYTpjy72EEURp0+fLnL6blGSk5Nx/Phx3Lp1q0CwHzJkSLHqAkoQQlNTU/Hpp59i//79uHXrFpYvX46WLVvi7t27WL16NZ555hlzQi+OopJ9v379oNPpkJycbDEampiYiJCQEABASEhIgVVsTavn5i9z/4q6iYmJ8PX1haenJ9RqNdRqdaFlTHUUZtKkSYiOjjb/nJqaitDQUAQGBvKeUCKiMkyf6YaEq1nw0QBa7tlOdsoWdUhTZcGvQnkEeZUv7ebAYDBApVKZvycVVeZBTvk0BceS3AP6999/A8id4ebr64vs7Gz4+voiNTUVarUa5cuXx7179wAAFStWRPny5REbG4vk5GQEBQXBy8sL8fHxFufv999//5nbEhYWhv/++88c4H18fPDbb78hJycHYWFhEAQBcXFxiI+PR6tWrSCKIv755x/zDg4qlQqBgYEFPmM5TMG1pz8MBgP0ej0CAwNL7Z7Q4u6JadMDCqH2mjRpEp588klUq1YNaWlp2LBhAw4cOGBei2fIkCGoUqWKeTrvrFmz0Lp1a9SsWRPJycn48MMPceXKFYwaNcru1/zhhx8waNAgpKenw9fX1+L6EATh4YXQa9euoUOHDrh69Spq1aqF8+fPIz09HUDuQkLLly/HlStXsHjxYkeqt2D6x6RZs2bQaDTYt28fevfuDQC4cOEC4uPjzatBRUZGYs6cObh16xaCgoIAAHv37oWvry/q169vLrNr1y6L19i7d6+5Dnd3dzRr1gz79u1Dr169zG3Yt28fxo4dW2Q7i7p5WKVSlY358UREVChBJeTd9sMt88hOpmtGUAmy+B5h+j5j2uz+fgaDATqdDm5ubnYFHp1OB5VKZVfgycnJgUqlsiuAmkYRPT09C5TV6XTmUdFy5cqZR470ej2A3NHR/FtR+Pr6Ijk5GcnJyfDx8cEjjzwCDw8P3LlzB2lpaQW+jJvakJaWBkEQ0KhRI3h5eeH69evQ6/Xw8PBAfHw8srOzUa1aNdSsWRM6nQ5Xrlwxjyp6eXkBAPz8/FCpUqVCP2PTgkW2Aqhc+kMQhFL9PiyH3x9nunXrFoYMGYKbN2/Cz88PERER+Omnn/DEE08AyN2uMv97vnfvHkaPHo2EhAQEBASgWbNmOHr0qDkb2eONN97AiBEjMHfuXPM1WlIOhdAJEyYgLS0Np06dQlBQkDnwmfTq1Qs7duwodr3Wkr2fnx9GjhyJ6OholC9fHr6+vnj11VcRGRmJ1q1bAwC6du2K+vXrY/Dgwfjggw+QkJCAqVOnYsyYMeaA+NJLL2Hp0qV46623MGLECPzyyy/YvHkzdu7caW5HdHQ0hg4diubNm6Nly5ZYtGgRMjIyMHz4cEc+LiIiIiKXJYdFb+xZBdcULr28vMzTdfV6PW7dugVBEFC5cmWLcj4+Prhx4wYAwNvb2/xd0jSl9f6ZbpIkISUlBUajET4+PvDy8oLRaERGRgbUajW8vLzMgza+vr7Q6XRITU2F0WiEh4cHNBqNRQDOT04joMXtj9IaAX1QzPf4O7G+4vjiiy+snj9w4IDFzwsXLsTChQuL2SpL169fx2uvvea0AAo4GEL37NmD8ePHo379+ua59fnVqFEDV69eLXa9tpL9woULoVKp0Lt3b+Tk5CAqKgqffvqp+flqtRo7duzAyy+/jMjISHh7e2Po0KGYNWuWuUx4eDh27tyJ8ePHY/HixahatSpWrlyJqKgoc5l+/fohKSkJ06ZNQ0JCApo0aYLdu3cXe2NXIiIiIlcmt8BjbRsWU8ATBAGJiYnIycnB9evXIUkSateuDR8fH2RnZ0On08HLywtqtdpcV0pKChITE5GQkABRFOHl5WURrkz3SKakpADIC5Hp6emQJAk+Pj4QBAE+Pj5ISkrCtWvXkJmZaV44s3bt2hAEwTxSm5aWZl5M0/S5KTGAarVaq4sxkTJERUXh999/R40aNZxWp0MhNCsry2J++v0cvQHYVrLXarX45JNP8MknnxRZJiwsrMB02/t17NgRJ0+etFpm7NixVqffEhEREZVlcgw81sqaVsbNyMjAv//+C3d3d1SoUAHVqlVDQECARRkfHx/k5OTA398fISEhSEpKQnx8vDlc5h+pzL8KrilEms6b6jP9HBYWhqysLCQlJSElJQU+Pj6IiIgwzyoMDg7G7du3kZiYiHv37qFixYqKD6AuF0JL+Z7Q0tCjRw9MmDAB586dQ6NGjcwrMps888wzxa7ToRBav359HDp0CC+++GKh57dt24amTZs6UjURERERyZwcA4+1spIkoVatWqhZs6Z5u5TCBAUF4fHHH0dOTg5EUYRWqy2wD2KDBg0s6s2/DUvdunVRt25d8/mqVauiatWqFp9F9erVUatWLfN2KfmVL18e7dq1A6DsKbim/hBFscjypByjR48GAIvZpSaCIDjUzw6F0HHjxmHo0KGIiIhA3759AeReeJcuXcLMmTMRExODb7/91pGqiYiIiEjG5Bp4iiJJErKzsyFJktUAaiprCqAeHh5W72e8P4DauvfRtA+oaWEha1whgLqsMjgS+iD2WnUohD7//PO4cuUKpk6diilTpgAAunXrBkmSoFKpMHfuXPPKskRERETkGvLvO6mEwMMAmkcO/eEKSnthotKWnZ3tlG1vHF6uasqUKRg8eDC+/fZbXLp0CUajEY888giee+45p960SkRERESlz7TlhkajUUTgkVsAVavVOHz4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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Time to reach plateau 1 (threshold: 4.53e-02):\n", - "------------------------------------------------------------\n", - " k_2_seqone : 33 steps\n", - " k_3_seqone : 210 steps\n", - " k_4_seqone : 44,338 steps\n", - "\n", - "Experiments that did not reach plateau 1:\n", - " - k_5_seqone\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAJOCAYAAACqS2TfAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAniFJREFUeJzs3Xd4U3X///FXkqYtLR2MloJsRQFZigoIIipSFQeK3oADRNBbAW8BB6DeiBPH7UJU3Li4Vb5uUBRRwFFFUXCCcMsUWirQBR3Jyfn90V+SxrZpKSk9SZ6P6+p12Zx3Tj7nvJPKK58zbKZpmgIAAAAAACFnb+gBAAAAAAAQqQjdAAAAAADUE0I3AAAAAAD1hNANAAAAAEA9IXQDAAAAAFBPCN0AAAAAANQTQjcAAAAAAPWE0A0AAAAAQD0hdAMAAAAAUE8I3QBgEZdffrlsNltDDwO1cKh7NWvWLNlsNm3evPmQvWYkGjFihPr379/Qw6iT5cuXy2azaf78+Q09lKh2/vnn65RTTmnoYQAIM4RuAKgnNput1j9WD1ObN2/WrFmztGbNmnpZ//z58wP2h91uV0pKivr37x+xIaO6bR4wYIBeeumlkL7WmjVrNGvWLMu/z6qydOlSXX311Tr++OMVHx8vm82m5cuXH/B6vvzyS73xxhu66667Ah4fNGiQGjduHKLRhpf9+/erY8eOstlsmjRpUq2fN2jQoGr/ln333XcBtYsXL9a5556r9u3bKyEhQU2aNNGxxx6rRx55RCUlJaHeJJ/S0lLNnDlTHTp0UFxcnA4//HDdddddcrlcAXV//vmnZs+erZNPPlktW7ZUYmKijj76aN14443avXt3pfXOmjVLK1as0HvvvVdvYwcQeWIaegAAEKlefvnlgN8///xzPf3007rqqqt00kknBSxLS0vTM888o3nz5h3KIdba5s2bdfvtt6t9+/bq1atXvb3Ov/71Lx1//PHyeDzatm2bnn32WY0dO1Y7duzQzTffXG+v25AqbvPmzZv1zDPPaMyYMdq+fXvItnnNmjW6/fbbNWjQILVv3z4k6zxUXn31VS1YsEDdunVTly5d6vzFzx133KFevXoxS1nBzJkzlZubW6fnNm/eXA8//HClxzt27Bjw+08//SSHw6Fx48apZcuWKi4u1ueff64pU6Zo8eLF+vjjj+vlqJERI0bo3Xff1RVXXKF+/fopKytL//73v7Vx48aAL/Lef/99zZo1S0OHDtWNN96opKQkrVq1So888ohee+01ffvtt8rIyPDV9+zZU4MGDdKdd96pc889N+TjBhChTADAIfHCCy+YkswXXnihoYdywD777LN6Hbt33yxcuDDg8T///NNMTEw0U1JSTLfbXS+vXRdjxowxD/Z/odVt89atW81GjRqZycnJpsvlMk3TNG+77TZTkrlp06aDeq3PPvvsoMbcELZv326WlJSYpmmaDzzwQJ22Y8OGDabNZjMfeuihSstOPvlkMzExMRRDrVeh/gyuXr3adDgc5oMPPmhKMidOnFjr55588slmu3btDur1J0yYYEoyv/nmm4NaT1UWL15sSjKnTp0a8PjUqVNNSeaXX37pe+znn382d+7cWWkdzzzzjCnJvP766yste/75501J5urVq0M+dgCRicPLAcAiqjpP2PvY7t27dfnll6t58+ZKSkrSsGHDlJ2dLUl6+umn1aVLF8XHx6tz58569913q1z/66+/rgEDBigpKUkJCQnq06eP/u///q/Gcc2fP983Ozh27FjfYaSDBg3y1ezbt08zZszQ4Ycfrri4OGVkZGj06NHasmVLHfdGuVatWqlLly7Kz8+vNCO3YcMGXXbZZWrZsqViY2PVvn173Xjjjdq3b19A3bp16zRhwgQdffTRvm3v3bu3nn322Spfs6CgQLfccotvnzZr1kwDBgzQa6+9Vqk2Pz9f11xzjdLT0xUfH6/+/fvrm2++OahtbtOmjbp27aqCgoKgs5A7duzQ9ddfr169eqlJkyaKj49X165ddd9998kwDF/drFmzNHbsWEnSKaec4uvf5Zdf7qspLS3VPffco6OPPlrx8fFKTU3VOeecox9++CHgNT0ej+6++24NHDhQGRkZio2NVdu2bXXNNddUOhQ32DnIB3JO/GGHHaa4uLha1Vbn//7v/2Saps4666w6r8M0TT355JPq3bu3EhIS1LhxY51yyin67LPPfDV5eXmKj4/XBRdcUOU6ZsyYIZvNFjBbn5+fr2nTpumII45QXFyc0tLSNGrUKP3xxx+1GtfWrVu1bt26SodNB2MYhq688kqdccYZ1Y61NjwejwoKCmSa5gE/t127dpKkvXv3VlpW179VXgsWLJAkTZ48OeBx7++vvPKK77Gjjz46YCbba8SIEZKkn3/+udKyM888U5L0xhtv1HpMAKIbh5cDQBg444wz1Lp1a91xxx3auHGj5syZo/PPP18XXHCBnn76aY0bN07x8fGaM2eOLrzwQv3+++/q0KGD7/m33nqr7r77bp1xxhm68847Zbfb9fbbb+uiiy7S3LlzNXHixGpfe+DAgbr55pt1zz33BBwa36JFC0mSy+VSZmamvvzyS1144YW6/vrrtWHDBj355JP6+OOP9d1336l169Z12m6Xy6WtW7fKbrcrNTXV9/jq1at16qmnKjU1Vf/85z912GGHae3atZozZ46+/PJLrVixQk6nU1J5+Fu5cqXOPvtsdejQQfv27dPChQt15ZVXKjc3VzNmzPCtNy8vTwMGDNAvv/yiCy+8UNdcc40Mw9APP/ygRYsWaeTIkQHjy8zMVFpammbOnKndu3froYce0tChQ7Vp0yYlJSXVaZtLS0u1detWxcTEBGzz3/3444966623dP755+vwww+Xy+XSkiVLNH36dP3xxx966qmnJEkXXHCBdu7cqaefflo333yzunTpIkk6/PDDffv4jDPO0FdffaXLLrtMkyZNUn5+vp555hn1799fK1eu1HHHHSdJKisr0wMPPKDhw4frvPPOU2Jior799ls999xz+uKLL7R69WrFxsbWabvr04oVK5Samqojjzyyzuu47LLL9N///lcXXnihxo4dq9LSUr366qs6/fTT9dZbb+ncc89Vamqqzj33XL377rvas2ePmjZt6nu+x+PRq6++qh49evhO0cjPz9eJJ56orVu36oorrtDRRx+tnTt36oknnlCfPn303Xff+cJpdUaPHq0VK1Zo06ZNtT514OGHH9a6dev05ptv1nV36M8//1Tjxo1VXFyshIQEZWZm6p577lHnzp2rrC8sLFRpaakKCgr05Zdf6r777lOzZs3Up0+fgLqD+Vvl9e233+qwww5TmzZtAh5v06aNWrVqpW+//bbGdWzfvl2S/+9cRRkZGWrfvn2dri0AIEo18Ew7AESNmg4vr+qQZe9jEyZMCHh8ypQppiSzTZs2Zn5+vu/xtWvXmpLM6dOn+x5bvXq1KcmcMWNGpdc877zzzKSkJLOgoCDo2IMd2vr000+bkswbb7wx4PFFixaZksxLL7006LpN079vnn/+eTM3N9fMyckxv/vuO/PCCy80JZkXXXRRQH2PHj3M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W7Zs0VNPPaUOHTpUOvf6rrvu0qeffqrx48fr448/1oABA2Sapn744Qe53W69/PLLB7UtoXThhRfqqaee0ogRIzR48GDl5OTo+eef951XXtHxxx8vu92uu+++W3v37lViYqI6dOigPn366LrrrtPSpUt144036tNPP9Wpp56q5ORkbd26VcuWLfPNbHtf880339Spp56q0aNHy+Vy6Z133qnywlSNGzfW5ZdfrmeffVajRo3SoEGDtGHDBr3wwgvq0aNHrY8o+PHHH/Xee+9Jkr788ktJ5TPuX3zxhSTp2muvVUpKStB1DB8+XNOmTdMHH3xQ5eyky+Wq8osDqfwwZu9twubOnavvv/9eZ599tpo3b67t27crKytLGzdurPQF0CWXXKKbbrpJEyZMkMfjCTi03Ovuu+/Wl19+qX/84x/6xz/+ob59+yo2NlZbtmzRBx98oN69e1d5n/OKanvLMKfTqQsvvLDS45s3b5ZUfgu5vy+fMWOGXnzxRX322WcaNGiQJOmzzz7T1KlTdc4556hjx46KiYnRqlWr9Morr6h58+aVgm63bt00YMAAHXvssb4Lxi1dulTLli1T9+7dAy4SGYq/VVL5qSlnn322HnroIeXn56tfv37KysrSc889p0svvVQDBgzw1b733nsaN26ckpOTNWLEiEq3UWvcuLGGDRsW8NgHH3wgSbroootqHAsASOKWYQBwqBzMLcP+LtjtmNq1axdwmyevRYsWmUOGDDGbNGlixsbGmq1btzbPOOMM88knn6zV+BcvXmwec8wxZlxcnCkp4DWKiorM6dOnmx06dDCdTqeZlpZmXnrppebmzZtrtW7vvlm4cGGVy5csWWJKMi+//HLfY5s3bzb/+c9/mu3atTOdTqfZtGlT89hjjzWnT59ubt261VeXm5trjhs3zmzZsqUZFxdnduvWzXz66aervY3W3r17zRtvvNE8/PDDfesdMGBAwO2wgt3ySlLArZ7qus0VVXXLsH379pk33HCD2bZtWzMuLs484ogjzNmzZ/tuTfX398b8+fPNLl26mE6ns9IYXS6X+eijj5rHHXecmZCQYCYkJJhHHHGEefHFF5sfffRRwHqefvpps0uXLmZcXJyZkZFhXnnllebu3bur3O7CwkJz3LhxZtOmTc1GjRqZAwYMML/88ssDumWYdz9V91PbW2WdeeaZZrdu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yKh0lXHv1c0r1vz9iuc5OTlKTk5Wo0aN5HA45HA4qqzxrqMqM2bM0NSpU32/FxQUqE2bNkpLS+OcbgAA6mi/q1TZ2s453bA87zndzdKSleBMb+jhBOV2u2WapgzDUEJCQlQfwlzfh5QnJCRwSHkd++Gd5W7atKllz+mu7WRxnUa/bds2nXjiidUuT0xM9B1eXVunnXaafvrpp4DHxo4dq86dO2vatGlq06aNnE6nli1bpuHDh0uS1q9fr61bt6pfv36SpH79+unuu+/Wrl27lJ5e/sdu6dKlSk5OVteuXX01H3zwQcDrLF261LeO2NhY9e7dW8uWLdOwYcMklX8Qli1bpkmTJlU7/ri4ON/hJRXZ7fagHxwAAFA9u90mm830/QBW5X2P2u02y//bzzs+74RTdbyhTSoPFzXVlpWVyePxKD4+vsaA53K5ZBhGjbWSfGEwNja2VgGvrKzMFwZrCnhlZWWKiYmpVeAuKyuT3W6vVeAuLS2V3W6vVeAuKyuTVN6PmgJ3NPXD4/HIZrNZOk/Vdlx1Ct3p6enatm1btctXr16ttm0P7KqNSUlJ6tatW8BjiYmJatasme/xcePGaerUqWratKmSk5N17bXXql+/furbt68kaciQIeratasuu+wy3X///crOztatt96qiRMn+gLx1Vdfrblz5+qmm27SFVdcoU8//VRvvPGGFi9e7HvdqVOnasyYMTruuON0wgkn6JFHHtG+ffs0duzYA9omAAAAwIocDkfQABRNM6pcNC28+hGO6hS6L7jgAs2bN0+XX365UlJSJMm3Yz7++GPNnz9fN910U+hG+f89/PDDstvtGj58uEpLS5WZmaknnnjCt9zhcGjRokW65ppr1K9fPyUmJmrMmDG64447fDUdOnTQ4sWLNWXKFD366KNq3bq1nn32WWVmZvpqRowYodzcXM2cOVPZ2dnq1auXlixZUuniagAAAEA4IuARuMOxH+GqTvfpzs/P18CBA7Vp0yaddNJJWrJkiU4//XQVFRUpKytLxxxzjFauXKmEhIT6GHNY4D7dAAAcPO7TjXARzvfproiA50fg9muIfhiGIY/Ho2bNmln2nO56vU93SkqKvv76a9100036888/FR8frxUrVigvL0+33XabPv/886gO3AAAAEC4ieaA93cEbj8r9CPc1fkrg0aNGunWW2/VrbfeGsrx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+DabLWLuswYAAABEIgJeOQK3nxX6Ee7qFLo/++yzUI8DAAAAQAMi4JUjcPtZoR+RoE6h++STTw71OAAAAAA0EAJeOQK3n1X6EQnqFLq9SktL9f3332vXrl3q37+/mjdvHqpxAQAAADgECHjlCNx+VuiHdxyRoM7z+HPmzFHLli01YMAAXXDBBfrxxx8lSX/99ZeaN2+u559//oDXOXv2bB1//PG+W5INGzZM69evD6gpKSnRxIkT1axZMzVu3FjDhw9XTk5OQM3WrVs1dOhQJSQkKD09XTfeeKPcbndAzfLly3XssccqLi5ORxxxhObPn19pPI8//rjat2+v+Ph49enTR6tWrTrgbQIAAACsioBXjsDtZ7V+RII6he4XXnhBkydP1hlnnKHnnnsuYGc0b95cp556ql577bUDXu+KFSs0ceJEff3111q6dKlcLpeGDBmiffv2+WqmTJmi999/XwsXLtSKFSu0Y8eOgKuiG4ahoUOHqqysTF999ZVefPFFzZ8/XzNnzvTVbNq0SUOHDtUpp5yiNWvWaPLkyRo/frw++ugjX83rr7+uqVOn6rbbbtP333+vnj17KjMzU7t27Trg7QIAAACsxuVyEfBE4K7Iav2o6V7y4cJm1uHrg27duqlTp056++23tXv3bqWlpemTTz7RqaeeKkm67777NGfOHP35558HNbjc3Fylp6drxYoVGjhwoPLz85WWlqYFCxbowgsvlCStW7dOXbp0UVZWlvr27asPP/xQZ599tnbs2KEWLVpIkubNm6dp06YpNzdXsbGxmjZtmhYvXqyff/7Z91ojR45UXl6elixZIknq06ePjj/+eM2dO1dS+RulTZs2uvbaazV9+vQax15QUKCUlBTl5+crOTn5oPYDAADRar9rq37e9S/F2FPksDdq6OEA1TI8xXJ78tUtfY4SnG0bejhBud1u7dq1Sy6XS3FxcQQ8Arck6/XD6XRKkpo1a1bj/msotc18dZrp3rhxo84888xqlzdt2lS7d++uy6oD5Ofn+9YnSatXr5bL5dLgwYN9NZ07d1bbtm2VlZUlScrKylL37t19gVuSMjMzVVBQoF9++cVXU3Ed3hrvOsrKyrR69eqAGrvdrsGDB/tqAAAAgHDl8XgIeARuHyv2I5KuaF6nrwxSU1P1119/Vbv8119/VUZGRp0HJZU3aPLkyerfv7+6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+OOP6/zzz1dRUZF27tzZ0EMEwg6fKyC0+EwBocfnCqFE6AaqYJqmJGn79u3au3evVq5cqWuuuUb33XefrrnmGknl5/j85z//UUlJSUMOFQgbfK6A0OIzBYQenyvUB0I3oMpXqLTZbJKkiy++WFu3btWgQYN0//33+/7YFhcXa/Hixdq/f7/i4uIO+XiBcMDnCggtPlNA6PG5wqHAOd2IeqZp+i6YsXDhQv3xxx/q0aOHTjzxRHXq1EmjRo3SggULtH79eu3YsUMbNmzQfffdpx07dujtt9+WzWaTaZq+P9IA+FwBocZnCgg9Plc4VGym9xgKIApV/EN5880367HHHlOXLl20evVqjR8/XjfccIMyMjL02GOPaf78+frzzz915JFHKiMjQ++9956cTqcMw5DD4WjgLQGsg88VEFp8poDQ43OFQ8oEYH7//ffmGWecYWZlZZmmaZrvvPOO2blzZ3P06NHm77//bpqmaZaWlppffPGFuXXrVtMwDNM0TdPlcjXYmAGr43MFhBafKSD0+FzhUGCmG1HviSee0IoVK+TxePTqq6/6bgPxzjvv6Oabb9YJJ5yga6+9Vr179w54nsfj8R2SBCAQnysgtPhMAaHH5wqHCu8WRD2Xy6X3339fq1ev1h9//OF7fNiwYZo9e7ZWr16tO++8U7///nvA8/hjC1SPzxUQWnymgNDjc4VDhXcMosrfr1ApSdddd52efPJJ7du3T08//bQ2bdrkW3beeefplltuUePGjXXEEUccyqECYYPPFRBafKaA0ONzhYbE4eWIGhUPBVq7dq2Ki4uVkpKiLl26SCo/xOiee+7RxRdfrAkTJqh9+/ZB1wGAzxUQanymgNDjc4WGxi3DEBXMCreEmD59ut5++21lZ2erbdu26tChg9577z1NmDBBpmnq3nvvld1u1/jx4yt9s8kfW8CPzxUQWnymgNDjcwUrIHQjKnhvCfHII4/omWee0Ztvvqnk5GStX79es2bNUp8+ffTNN99o4sSJcjqdmjBhgtq0acPhREAQfK6A0OIzBYQenytYAYeXI2q43W6NHTtW7du315133imp/FCh7777TpdeeqnOOOMMzZkzR5L0/vvv66yzzuLei0AN+FwBocVnCgg9PldoaMx0I2L9/dybmJgYbd++XUVFRb7H7Ha7TjjhBJ177rlau3atSkpKFB8fr3PO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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Define your experiments across multiple sweeps\n", - "sweep_experiments = {\n", - " \"/home/facosta/group-agf/sweeps/optim_sweep_20251113_001549\": [\n", - " \"k_4_seqone\",\n", - " \"k_5_seqone\",\n", - " ],\n", - " \"/home/facosta/group-agf/sweeps/optim_sweep_20251113_145528\": [\n", - " \"k_2_seqone\",\n", - " \"k_3_seqone\",\n", - " ],\n", - "}\n", - "\n", - "# Load template\n", - "template_path = os.path.join(\n", - " \"/home/facosta/group-agf/sweeps/optim_sweep_20251113_001549\",\n", - " \"k_4_seqone\",\n", - " \"seed_0\",\n", - " \"template.npy\",\n", - ")\n", - "template_2d = np.load(template_path)\n", - "p1, p2 = template_2d.shape\n", - "\n", - "# Create color mapping by k value\n", - "color_map, scalar_map, k_values = create_color_mapping_from_multiple_sweeps(\n", - " sweep_experiments, \"data.k\", cmap=\"viridis\", log_scale=False\n", - ")\n", - "\n", - "# Plot time to first plateau\n", - "fig, ax, times, levels = plot_time_to_plateau_multi_sweep(\n", - " sweep_experiments,\n", - " template_2d,\n", - " p1,\n", - " p2,\n", - " target_plateau_idx=1, # First drop\n", - " tolerance=1.1,\n", - " color_mapping=color_map,\n", - " colorbar_label=\"k (sequence length)\",\n", - " scalar_map=scalar_map,\n", - " sort_by=\"name\", # or 'time'\n", - " show_not_reached=True, # Show experiments that didn't reach plateau\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "78bfc515", - "metadata": {}, - "source": [ - "## Batch size sweep (seq-to-one, k=3)" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "ac01c062", - "metadata": {}, - "outputs": [], - "source": [ - "import yaml\n", - "\n", - "\n", - "def extract_config_parameter(\n", - " sweep_dir: str, experiment_name: str, parameter_path: str, seed: int = 0\n", - ") -> any:\n", - " \"\"\"\n", - " Extract a parameter value from an experiment's config file.\n", - "\n", - " Args:\n", - " sweep_dir: Path to sweep directory\n", - " experiment_name: Name of experiment\n", - " parameter_path: Dot-separated path to parameter (e.g., 'data.batch_size', 'training.learning_rate')\n", - " seed: Seed number (for getting from seed_X/config.yaml)\n", - "\n", - " Returns:\n", - " Parameter value or None if not found\n", - " \"\"\"\n", - " # Try configs directory first\n", - " config_path = Path(sweep_dir) / \"configs\" / f\"{experiment_name}_config.yaml\"\n", - "\n", - " # If not there, try seed_X directory\n", - " if not config_path.exists():\n", - " config_path = Path(sweep_dir) / experiment_name / f\"seed_{seed}\" / \"config.yaml\"\n", - "\n", - " if not config_path.exists():\n", - " return None\n", - "\n", - " try:\n", - " with open(config_path, \"r\") as f:\n", - " config = yaml.safe_load(f)\n", - "\n", - " # Navigate through nested structure using dot notation\n", - " value = config\n", - " for key in parameter_path.split(\".\"):\n", - " value = value[key]\n", - "\n", - " return value\n", - " except (KeyError, TypeError):\n", - " return None\n", - "\n", - "\n", - "def create_color_mapping(\n", - " sweep_dir: str,\n", - " parameter_path: str,\n", - " experiments: Optional[List[str]] = None,\n", - " cmap: str = \"viridis\",\n", - " seed: int = 0,\n", - " log_scale: bool = False,\n", - ") -> tuple:\n", - " \"\"\"\n", - " Create a color mapping for experiments based on a config parameter.\n", - "\n", - " Args:\n", - " sweep_dir: Path to sweep directory\n", - " parameter_path: Dot-separated path to parameter (e.g., 'data.batch_size')\n", - " experiments: List of experiment names (None = all)\n", - " cmap: Colormap name\n", - " seed: Seed number\n", - " log_scale: Whether to use logarithmic scale for color mapping\n", - "\n", - " Returns:\n", - " Tuple of (color_mapping dict, scalar_map, param_values dict)\n", - " \"\"\"\n", - " if experiments is None:\n", - " experiments = get_sweep_experiments(sweep_dir)\n", - "\n", - " # Extract parameter values for all experiments\n", - " param_values = {}\n", - " for exp_name in experiments:\n", - " value = extract_config_parameter(sweep_dir, exp_name, parameter_path, seed)\n", - " if value is not None:\n", - " param_values[exp_name] = value\n", - "\n", - " if not param_values:\n", - " print(f\"Warning: Could not extract '{parameter_path}' from any experiments\")\n", - " return {}, None, {}\n", - "\n", - " # Create color mapping\n", - " values = list(param_values.values())\n", - " v_min = min(values)\n", - " v_max = max(values)\n", - "\n", - " # Use log or linear normalization\n", - " if log_scale:\n", - " if v_min <= 0:\n", - " print(\n", - " f\"Warning: log_scale requested but found non-positive values (min={v_min}). Using linear scale.\"\n", - " )\n", - " norm = plt.cm.colors.Normalize(vmin=v_min, vmax=v_max)\n", - " else:\n", - " norm = plt.cm.colors.LogNorm(vmin=v_min, vmax=v_max)\n", - " else:\n", - " norm = plt.cm.colors.Normalize(vmin=v_min, vmax=v_max)\n", - "\n", - " colormap = plt.cm.get_cmap(cmap)\n", - "\n", - " color_mapping = {}\n", - " for exp_name, value in param_values.items():\n", - " color_mapping[exp_name] = colormap(norm(value))\n", - "\n", - " # Also return the scalar mappable for colorbar\n", - " scalar_map = plt.cm.ScalarMappable(norm=norm, cmap=colormap)\n", - "\n", - " return color_mapping, scalar_map, param_values" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "b2da02fb", - "metadata": {}, - "outputs": [], - "source": [ - "def plot_loss_comparison(\n", - " sweep_dir: str,\n", - " experiments: Optional[List[str]] = None,\n", - " loss_type: str = \"train\",\n", - " log_scale: bool = True,\n", - " figsize: tuple = (10, 6),\n", - " seed: int = 0,\n", - " remove_outliers: bool = False,\n", - " outlier_window: int = 10,\n", - " outlier_threshold: float = 3.0,\n", - " template_2d: Optional[np.ndarray] = None,\n", - " p1: Optional[int] = None,\n", - " p2: Optional[int] = None,\n", - " show_theory_bands: bool = True,\n", - " num_theory_lines: Optional[int] = None,\n", - " color_mapping: Optional[Dict[str, tuple]] = None,\n", - " colorbar_label: Optional[str] = None,\n", - " scalar_map: Optional[plt.cm.ScalarMappable] = None,\n", - "):\n", - " \"\"\"\n", - " Plot and compare loss curves from multiple experiments.\n", - "\n", - " Args:\n", - " sweep_dir: Path to sweep directory\n", - " experiments: List of experiment names to plot (None = all experiments)\n", - " loss_type: 'train' or 'val'\n", - " log_scale: Whether to use log scale for both axes\n", - " figsize: Figure size tuple\n", - " seed: Seed number (default: 0)\n", - " remove_outliers: Whether to remove outliers using local outlier replacement\n", - " outlier_window: Window size for outlier detection (default: 10)\n", - " outlier_threshold: Threshold in standard deviations for outlier detection (default: 3.0)\n", - " template_2d: Optional 2D template array for computing theory lines\n", - " p1: First dimension of template (required if template_2d is provided)\n", - " p2: Second dimension of template (required if template_2d is provided)\n", - " show_theory_bands: Whether to show colored bands between theory lines (default: True)\n", - " num_theory_lines: Number of theory lines to show (default: None = show all)\n", - " color_mapping: Dictionary mapping experiment names to RGBA colors\n", - " colorbar_label: Label for colorbar (if color_mapping provided)\n", - " scalar_map: ScalarMappable for colorbar (if color_mapping provided)\n", - " \"\"\"\n", - " if experiments is None:\n", - " experiments = get_sweep_experiments(sweep_dir)\n", - "\n", - " fig, ax = plt.subplots(figsize=figsize)\n", - "\n", - " # Compute theory lines if template is provided\n", - " theory_levels = None\n", - " if template_2d is not None:\n", - " if p1 is None or p2 is None:\n", - " raise ValueError(\"p1 and p2 must be provided if template_2d is given\")\n", - "\n", - " # Import the helper function (assuming it's in utils.py)\n", - " from gagf.rnns.utils import get_power_2d_adele\n", - "\n", - " # Compute power spectrum of template\n", - " _, _, power = get_power_2d_adele(template_2d)\n", - " power_flat = np.sort(power.flatten()[power.flatten() > 1e-20])[::-1]\n", - "\n", - " # Theory levels (cumulative tail sums)\n", - " alpha_values = np.array(\n", - " [np.sum(power_flat[k:]) for k in range(len(power_flat))]\n", - " )\n", - " coef = 1.0 / (p1 * p2)\n", - " theory_levels = coef * alpha_values # strictly decreasing\n", - "\n", - " # Limit number of lines if specified\n", - " if num_theory_lines is not None:\n", - " theory_levels = theory_levels[: num_theory_lines + 1]\n", - "\n", - " # Generate colors for bands\n", - " n_bands = len(theory_levels) - 1\n", - " colors = plt.cm.tab10(np.linspace(0, 1, max(n_bands, 1)))\n", - "\n", - " # Draw colored bands between theory lines\n", - " if show_theory_bands and n_bands > 0:\n", - " for i in range(n_bands):\n", - " y_top = theory_levels[i]\n", - " y_bot = theory_levels[i + 1]\n", - " ax.axhspan(\n", - " y_bot,\n", - " y_top,\n", - " facecolor=colors[i % len(colors)],\n", - " alpha=0.15,\n", - " zorder=-3,\n", - " )\n", - "\n", - " # Draw the black theory lines\n", - " for y in theory_levels:\n", - " ax.axhline(\n", - " y=y,\n", - " color=\"black\",\n", - " linestyle=\"--\",\n", - " linewidth=1.5,\n", - " alpha=0.7,\n", - " zorder=-2,\n", - " label=\"_nolegend_\",\n", - " )\n", - "\n", - " # Plot loss curves\n", - " for exp_name in experiments:\n", - " losses = load_experiment_losses(sweep_dir, exp_name, seed)\n", - " if loss_type in losses:\n", - " loss_history = losses[loss_type]\n", - "\n", - " # Apply outlier removal if requested\n", - " if remove_outliers:\n", - " loss_history, outliers_found = remove_outliers_local(\n", - " loss_history, window=outlier_window, threshold=outlier_threshold\n", - " )\n", - " if outliers_found:\n", - " print(f\"Outliers from {exp_name} removed for plot\")\n", - "\n", - " # Determine color\n", - " if color_mapping and exp_name in color_mapping:\n", - " color = color_mapping[exp_name]\n", - " else:\n", - " color = None # Use default color cycle\n", - "\n", - " ax.plot(loss_history, label=exp_name, alpha=0.8, linewidth=2, color=color)\n", - "\n", - " ax.set_xlabel(\"Step\", fontsize=14)\n", - " ax.set_ylabel(f\"{loss_type.capitalize()} Loss\", fontsize=14)\n", - " title = f\"{loss_type.capitalize()} Loss Comparison - {Path(sweep_dir).name}\"\n", - " if remove_outliers:\n", - " title += \" (outliers removed)\"\n", - " ax.set_title(title, fontsize=14)\n", - " ax.legend(fontsize=10)\n", - " ax.grid(True, alpha=0.3)\n", - "\n", - " if log_scale:\n", - " ax.set_xscale(\"log\")\n", - " ax.set_yscale(\"log\")\n", - "\n", - " # Add colorbar if color mapping provided\n", - " if color_mapping and scalar_map is not None:\n", - " label = colorbar_label if colorbar_label else \"Parameter Value\"\n", - " cbar = plt.colorbar(scalar_map, ax=ax, label=label, pad=0.02)\n", - " cbar.ax.tick_params(labelsize=10)\n", - "\n", - " plt.tight_layout()\n", - " plt.show()\n", - "\n", - " return fig, ax, theory_levels" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "8b2ce522", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Found experiments: ['batch_100', 'batch_1000', 'batch_10000', 'batch_200', 'batch_2000', 'batch_20000', 'batch_50', 'batch_500', 'batch_5000']\n" - ] - } - ], - "source": [ - "# Set up your sweep directory\n", - "batch_sweep_dir = \"/home/facosta/group-agf/sweeps/batch_sweep_20251113_171834\"\n", - "\n", - "# Get all experiments in the sweep\n", - "batch_experiments = get_sweep_experiments(batch_sweep_dir)\n", - "print(f\"Found experiments: {batch_experiments}\")\n", - "\n", - "# Load losses for all experiments\n", - "batch_all_losses = load_all_sweep_losses(batch_sweep_dir)" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "520500f3", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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IIXAAJBCYABIITAApKjos8igGv3j0t1FTwA+hTsYAFIIDAApBAaAFAIDQAqBASCFwACQQmAASCEwAKQQGABSCAwAKQQGgBQCA0AKgQEghcAAkEJgAEghMACkEBgAUggMACkEBoAUAgNACoEBIIXAAJBCYABIITAApBAYAFIIDAApBAaAFAIDQAqBASCFwACQQmAASCEwAKQQGABSCAwAKQQGgBTDB/sJy+VyRER8EiciyoP97ACcjU/iRET87f/lpzLogTl27FhEROyKfx3spwZggBw7diyamppO+Zi68ulkaAD19vbGoUOHorGxMerq6s749+nq6orm5ubo6OiIUaNGDeDCocXrdHq8TqfH63R6hvLrVC6X49ixYzF+/PgYNuzU77IM+h3MsGHDYsKECQP2+40aNWrI/QfM4HU6PV6n0+N1Oj1D9XX6n+5c/os3+QFIITAApKjZwJRKpVi1alWUSqWip1Q1r9Pp8TqdHq/T6fE6/dWgv8kPwOdDzd7BAFDdBAaAFAIDQAqBASBFzQbm0UcfjUmTJsXIkSNj1qxZsWfPnqInVZW2traYOXNmNDY2xtixY+P222+PAwcOFD2rqj388MNRV1cXS5cuLXpK1Xn33XfjrrvuijFjxkRDQ0PMmDEjXn311aJnVZWenp5YuXJlTJ48ORoaGuKSSy6JBx988LQ+s2uoqsnAbN26NZYtWxarVq2K/fv3x+WXXx433XRTHD16tOhpVWPHjh3R2toau3fvjhdffDFOnDgRN954Yxw/frzoaVVp79698fjjj8dll11W9JSq88EHH8ScOXPinHPOieeffz5+97vfxY9+9KMYPXp00dOqypo1a2L9+vWxbt26+P3vfx9r1qyJH/zgB7F27dqipxWmJv+a8qxZs2LmzJmxbt26iPjr55s1NzfHPffcE8uXLy94XXV67733YuzYsbFjx4647rrrip5TVT788MO46qqr4sc//nF8//vfjyuuuCLa29uLnlU1li9fHr/97W/jN7/5TdFTqtq8efNi3Lhx8ZOf/KTv3Fe/+tVoaGiIn//85wUuK07N3cF8/PHHsW/fvpg7d27fuWHDhsXcuXPjlVdeKXBZdevs7IyIiPPPP7/gJdWntbU1brnllpP+TPE3zz77bLS0tMQdd9wRY8eOjSuvvDI2btxY9KyqM3v27Ni+fXscPHgwIiLeeOON2LVrV9x8880FLyvOoH/Y5dl6//33o6enJ8aNG3fS+XHjxsUf/vCHglZVt97e3li6dGnMmTMnpk+fXvScqvLUU0/F/v37Y+/evUVPqVpvv/12rF+/PpYtWxbf/e53Y+/evbF48eIYMWJELFiwoOh5VWP58uXR1dUVU6ZMifr6+ujp6YnVq1fH/Pnzi55WmJoLDJVrbW2Nt956K3bt2lX0lKrS0dERS5YsiRdffDFGjhxZ9Jyq1dvbGy0tLfHQQw9FRMSVV14Zb731Vjz22GMC83eefvrp2Lx5c2zZsiWmTZsWr7/+eixdujTGjx//uX2dai4wF1xwQdTX18eRI0dOOn/kyJG48MILC1pVvRYtWhTPPfdc7Ny5c0C/JmEo2LdvXxw9ejSuuuqqvnM9PT2xc+fOWLduXXR3d0d9fX2BC6vDRRddFFOnTj3p3KWXXhq/+MUvClpUne67775Yvnx53HnnnRERMWPGjHjnnXeira3tcxuYmnsPZsSIEXH11VfH9u3b+8719vbG9u3b49prry1wWXUpl8uxaNGi2LZtW/z617+OyZMnFz2p6txwww3x5ptvxuuvv953tLS0xPz58+P1118Xl/80Z86cfn/F/eDBg3HxxRcXtKg6ffTRR/2+gKu+vj56e3sLWlS8mruDiYhYtmxZLFiwIFpaWuKaa66J9vb2OH78eCxcuLDoaVWjtbU1tmzZEs8880w0NjbG4cOHI+KvXxTU0NBQ8Lrq0NjY2O89qfPOOy/GjBnjvaq/c++998bs2bPjoYceiq997WuxZ8+e2LBhQ2zYsKHoaVXl1ltvjdWrV8fEiRNj2rRp8dprr8UjjzwSd999d9HTilOuUWvXri1PnDixPGLEiPI111xT3r17d9GTqkpEfOrxxBNPFD2tqn35y18uL1mypOgZVeeXv/xlefr06eVSqVSeMmVKecOGDUVPqjpdXV3lJUuWlCdOnFgeOXJk+Ytf/GL5e9/7Xrm7u7voaYWpyX8HA0D1q7n3YACoDQIDQAqBASCFwACQQmAASCEwAKQQGABSCAwAKQQGgBQCA0AKgQEghcAAkOL/A5LiaRxytTEoAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# First, load the template from one of your experiments\n", - "# (assuming they all use the same template)\n", - "template_path = os.path.join(batch_sweep_dir, \"batch_1000\", \"seed_0\", \"template.npy\")\n", - "template_2d = np.load(template_path)\n", - "p1, p2 = template_2d.shape\n", - "\n", - "plt.imshow(template_2d)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "b9761849", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/tmp/ipykernel_128294/2157201269.py:92: MatplotlibDeprecationWarning: The get_cmap function was deprecated in Matplotlib 3.7 and will be removed in 3.11. Use ``matplotlib.colormaps[name]`` or ``matplotlib.colormaps.get_cmap()`` or ``pyplot.get_cmap()`` instead.\n", - " colormap = plt.cm.get_cmap(cmap)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Outliers from batch_100 removed for plot\n", - "Outliers from batch_1000 removed for plot\n", - "Outliers from batch_10000 removed for plot\n", - "Outliers from batch_200 removed for plot\n", - "Outliers from batch_2000 removed for plot\n", - "Outliers from batch_20000 removed for plot\n", - "Outliers from batch_50 removed for plot\n", - "Outliers from batch_500 removed for plot\n", - "Outliers from batch_5000 removed for plot\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA6cAAAJOCAYAAABLIHGOAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs3Xd8FNUWwPHfbDYN0giQhBJ66L0GQaSDIk0RbDRpKkVEVEA6Kr2DoCJFFFHgPRS70hRN6KBUHyWAQAolJIHU3fv+CDtkk01IQjaN8/Wzkp05e+fO7uzsnLl37mhKKYUQQgghhBBCCJGHDHldASGEEEIIIYQQQpJTIYQQQgghhBB5TpJTIYQQQgghhBB5TpJTIYQQQgghhBB5TpJTIYQQQgghhBB5TpJTIYQQQgghhBB5TpJTIYQQQgghhBB5TpJTIYQQQgghhBB5TpJTIYQQQgghhBB5TpLTQkLTNFq3bp3X1RCFSEhICJqmMWDAgLyuSq5o3bo1mqbldTXu62H7XIQQeU8pRaNGjejYsWNeV8WKrf32rl270DSNqVOn5k2lRK5J7/fw0UcfpVmzZnlTKfHAJDnNQZqmZelRkGiaRvXq1fO6Gjnin3/+YeTIkdSqVQsPDw+cnZ3x9/enV69ebNmyBbPZnNdVFIXQ1KlT0TSNXbt25XVVRDbt2bOHN954g0aNGlG8eHFcXFyoXr06b7/9NpGRkem+bv/+/TzxxBN4eXlRtGhRAgMD+eqrr9LE3b59m88++4zevXtTtWpVXF1d8fLy4rHHHuOLL76wWbblQDy9x9q1a9O8Ztu2bYwcOZIWLVpQtGjR+x7Inz17lqlTp9KtWzfKlCmDpmlUqFAhw/dq6dKlDBw4kLp162I0Gu+77S9ZsoQuXbpQoUIFihYtipeXF/Xq1WPq1KncuHEjw2VlJKt1t3xPM3oMGjTI6jW//fYbY8eOpU2bNnh6embq5FFkZCSTJ0+mbt26uLu7U6JECZo0acKyZcuIi4uzio2Li2PMmDG0atWK0qVL4+Ligp+fHy1atGDNmjUkJibe9304d+4cbm5uaJrGyy+/fN/41D799FMOHTrE9OnTs/zaByH7TZEdU6dOZd++fWzcuDGvqyKywZjXFShMpkyZkmbaokWLuHXrls15OenkyZMUKVLErssoDObPn8/bb7+N2WymZcuWdOjQgSJFinDp0iV+/fVXtmzZwksvvcQnn3yS11XNc2XKlOHkyZN4enrmdVWEyBd69erFtWvXaNmyJf369dMPmufMmcPmzZv5888/8fX1tXrNzp076dSpEy4uLjz77LO4u7uzZcsW+vTpw6VLl3jjjTf02N9//52+fftSvHhx2rVrx9NPP014eDj/+c9/eP755/njjz9YtmyZzbo99thjNnvP1K9fP820+fPns3v3bjw8PChdujRnzpzJcL1///13pk2bhoODAzVq1CA0NPS+79WoUaMAKFWqFCVLlrzvayz73Mceeww/Pz/i4uLYu3cv06ZNY/Xq1ezbtw8/P7/7LvdB655RD6RVq1Zx+fJlOnXqZDV99erVrFu3jiJFilCuXDmioqIyXEZkZCSNGjXi3LlztGzZkmHDhhEfH88PP/zAyJEj+e9//8svv/yCwZDcfhATE8OKFSto2rQpXbp0oWTJkty8eZMffviBl156iY0bN/LDDz/o8amZzeYH6mlhNpuZOnUqjz76KIGBgdkuJ7c0bdqUkydPUqJEibyuisgj7dq1o2HDhkyZMoU+ffoUuAahh54SdlW+fHlVGN5mQFWrVi2vq/FAPvzwQwWoChUqqIMHD6aZn5iYqFatWqX69++f+5UTee6xxx6z63d1ypQpClA7d+58oHLOnz+vANlO88CsWbPU5cuXraaZzWb1yiuvKEC9+uqrVvMSExNV5cqVlbOzszp8+LA+PTIyUlWtWlU5OTmpkJAQffrhw4fV+vXrVXx8vFU5oaGh+m/J3r17rebt3LlTAWrKlCmZXo/ffvtN/fPPP8psNqsvvvjivq8/e/asCgoKUnfu3FFKKeXs7KzKly+f4TK+/fZbdfXqVaWUUsOGDbvvth8bG2tz+sSJExWgxo4dm+HycrLutoSGhiqj0aiKFy+e5vPZv3+/OnbsmEpKSlJBQUH3/X7Onj1bAWr06NFW0+Pj41Xjxo0VoHbv3q1PN5lMaZapVPL21bp1awWob7/9Nt3lzZs3TxmNRrVw4UIFqGHDhmVyrZN9++23ClAff/xxll6XE+6337T3flvkbxn9Hi5YsEAB6tdff839iokHIt1680DKPvInT56kZ8+eFC9eHE3TCAkJAeC///0vzz33HFWqVKFIkSJ4enry6KOPsmXLFptl2rrmdMCAAWiaxvnz51myZAnVq1fH2dmZ8uXLM23aNLt1X7127RqjR4+mYsWKODs74+PjQ+/evTl27Fia2Fu3bjF58mRq1qyJm5sbHh4eVKlShf79+3PhwgU9Li4ujvnz51OvXj08PT0pWrQoFSpUoHfv3hw9evS+dYqMjOTNN9/EycmJ7777joYNG6aJMRqNDBo0iA8//NBq+u3bt5kyZQrVq1fHxcUFb29vunTpwh9//JGmjJRdkNasWUOdOnVwdXWlYsWKLFmyBEi+dmf+/PlUq1YNFxcXAgIC+PTTT9OUZfn8zp07x5w5cwgICMDFxYWKFSsyffr0NF25EhISWLp0KZ06dcLf319/75966ikOHz6cpvy1a9fq3f62bdtGixYtcHd317u8pXctx9WrV3nttdcICAjQux3WqFGDl19+mVu3blnFZmVbyKvtNbW4uDjGjRtHuXLlcHFxoUaNGixduhSllFXcrVu3mD17No899hilS5fGycmJ0qVL069fP86ePWsV27p1a6ZNmwZAmzZt9O6BqbsXhoeH88Ybb1CtWjVcXV3x9vamWbNmzJs3z2Zdz5w5Q8+ePSlWrBhFixalffv2mfo+pOfQoUP06tWLcuXK4ezsTMmSJWnSpAnvvfeeHtOzZ08MBgMRERFWr61fvz6apjFx4kSr6ZbtbN26dWnW9fXXX6dKlSo4OztTokQJnn76aZvbRlbjK1SoQIUKFYiMjGTYsGH4+fnh4uJCgwYN0u0emxlvv/02pUuXtpqmaRqTJk0CYPfu3VbzduzYwdmzZ3n++eetWjA9PT2ZMGECCQkJVu9L/fr1efHFF3FycrIqx9fXl2HDhgHJXUgf1KOPPkpAQECmWxMqVapEYGAgrq6umV5Gly5dstTS6eLiYnP6M888A3Df1t30ZKfutqxbt46kpCT69u2b5vNp3LgxtWrVwsHBIVNlnTt3DoAnnnjCarqTk5N+TWfK75fBYEizTEj+zerZsyeQ/vtz6tQpJk6cyPjx4222omfGmjVr0DSNp59+2ub8CxcuMGjQIMqUKYOTkxNly5Zl0KBBXLx4MU2s5btpS+rrRzO730wto2tOs7sfGTFiBP7+/hiNRr2rfFZ+C225328wJP+uL1iwgIYNG1K0aFHc3d159NFH+eabb9KUl/KYYd68efqlATVr1tS7tyYkJPDOO+9QoUIFXFxcqFu3Lj/88IPN+mX2c23Xrh0Gg8HqmC2lUaNGoWkav/zyi9X03377ja5du1KiRAmcnZ0JCAhg4sSJ3LlzJ00ZJpOJ2bNnU6VKFVxcXKhSpQozZ87M8LjAsu+wdWmDyN+kW28eOnPmDIGBgdSpU4cBAwZw/fp1/Qdo/PjxODk50bJlS0qVKkVERATffPMNvXr1YsmSJYwcOTLTy3nzzTfZvXs3Tz75JJ06dWLr1q1MnTqVhIQEq4POnBAREUHz5s05e/YsrVu35tlnn+X8+fNs3ryZ7777jp9++omWLVsCyUlap06d2Lt3Ly1atKBz5876Du6bb76hb9++lC9fHoD+/fvz1VdfUbduXQYOHIizszOXLl1i586d7N+/n3r16mVYr82bNxMVFcXzzz9PzZo1M4x1dnbW/46Li6Nt27bs27ePhg0bMnr0aMLCwvjyyy/56aef+OKLL/QdYEqLFi1i165ddO/enbZt27JlyxZee+01ihQpwuHDh9myZQtPPvkk7dq1Y+PGjfTv358KFSrQqlWrNGWNHj2aP/74g969e+Pm5sa2bduYMmUKf/31F5s3b9bjbty4wejRo3n00Ud54oknKFasGOfOneObb77hhx9+4LfffqNJkyZpyt+0aRM///wzTz75JK+++mqGXdLu3LlDixYtCAkJoWPHjvTs2ZOEhATOnz/P+vXrGTt2rN4NOCvbQkq5ub3a0rt3bw4fPqwfiG3ZsoVRo0YREhLC/Pnz9biTJ08yefJk2rRpQ8+ePSlatCinTp1iw4YNfPfddxw6dEjffi0J/u7du/XPGsDLy0sv7/Tp07Rp04arV6/SsmVLevTowe3btzl+/Djvv/8+Y8eOtapnSEgIgYGB1KpVi5deeomzZ8/y9ddf06ZNG06ePJmme+n9HDlyhEceeQQHBwe6d+9O+fLliYyM5MSJE3z00Ue88847QPJB4tatW9m1a5e+7V+/fp2//voLSO7GmpLleZs2bfRplm3i33//pWPHjvTo0YPw8HC2bNnCTz/9xPbt260Gs8hqPCQfhLVv356YmBj69u3L7du3+eqrr3j++ee5du1alvah9+Po6AgkJwspWa6TszWIjKVraOqENqvLsPjf//7HokWLiI2NpWzZsrRt25YyZcpkquz87LvvvgOgdu3aeVoPS7fjwYMHP3BZlnX5/vvv6dChgz49ISGBX375BVdXV5o3b37fcsxmMz/++KNVmSmZTCb69++vH/T/+eefWa6rUoqdO3dSrVo1ihUrlmb+P//8Q8uWLYmIiKBr167UqlWLY8eOsXr1arZt28aePXuoWrVqlpcLmdtvZkV29iPx8fG0bduWmJgYunXrhtFoxNfXN0u/hfeT3m9wfHw8nTt3ZteuXdSvX59BgwaRmJjId999R/fu3Vm6dCkjRoxIU96YMWPYu3cvXbt2xcHBgY0bN/L8889TrFgxli5dyokTJ+jSpQtxcXFs2LCB7t27c/LkSSpXrqyXkZXPtW/fvuzYsYPPP/+cCRMmWNUlKSmJjRs3Urp0adq1a6dPX7FiBcOHD8fLy4uuXbvi4+PDgQMHeO+999i5cyc7d+60OiEzdOhQVq9eTcWKFRk+fDhxcXEsWLAgw226bNmy+Pv7s3379kx9DiIfyduG28LPVrdeSzcEQE2ePNnm686ePZtmWnR0tKpTp47y9PRUt2/ftpoHqMcee8xqWv/+/RWgKlasqK5cuaJPj4iIUF5eXsrd3d1mVyFbyGS33oEDBypAjR8/3mr6d999pwBVpUoVZTKZlFJK/fXXXwpQPXr0SFNOXFycio6OVkold4HTNE01atRIJSUlWcUlJSWpmzdv3rdeAwYMUIBatWrVfWNTmjZtmgLUCy+8oMxmsz790KFDysnJSXl5eamoqCh9uqULkre3t9VnePHiReXk5KQ8PT1V1apVVXh4uD4vODhYAapr165Wy7Z8fiVLllSXLl3Sp8fHx6tWrVopQG3evFmfHhcXp/79998063Ds2DHl5uam2rdvbzV9zZo1ClAGg0H98ssvaV5nq7vMN998Y7M7mlLJ22dcXJz+PCvbQsr1zYntNTss3cOqVaumIiMj9emRkZGqWrVqStM0tX//fqvp169fT1POjh07lMFgUIMHD7aafr/uaZbufB999FGaeSk//5T7j1mzZlnFWbpAzpw5M1PrnNKYMWMUoLZu3Zpm3rVr1/S/Ld/bV155RZ+2ZcsWBah27dopR0dHFRMTo8/z9/dXlSpVsirvkUceUQ4ODurHH3+0mn769Gnl7u6u6tSp80Dxlv1uq1atrLaZS5cuqRIlSihnZ2eb35XssnTTfPPNN62m9+rVSwHqwIEDNl/n5uam/P3971t+UlKSqlOnjtI0Tf39999W8yzdelM/jEajev3119PsM1PLTLfe1LLaNTYz3XotPvzwQzVlyhQ1ZswYvctqgwYN1I0bNzK9vIxkp1vvb7/9pgAVGBh439jMdOu9c+eOCgwMVIB69NFH1dixY9XIkSNV5cqVla+vr/rmm29svi4+Pl5NmTJFTZ48WQ0fPlxVr15dAWrgwIE242fMmKGMRqO+/Vm2lax06z1+/Lj+G2hLmzZtFKA+/PBDq+nLly9XgGrbtq3V9PLly6f7/tvqopudbr3pdXXP7n6kU6dOerdwi6z8Fqbnfr/BEyZMUICaNGmS1fFHVFSUaty4sXJycrK6zMDyG5r6GGPv3r0KUF5eXqply5ZW++cvv/xSAWrkyJFWy87K5xoVFaVcXV1VzZo106zDtm3b0nTLP378uDIajapevXpWvy1KKTVz5kwFqHnz5unTLJ9nvXr1rOr+77//qhIlSmT4fevZs6cC1Llz52zOF/mTJKd2llFy6ufnl+WD7fnz5ytA7dq1y2p6Rsnp6tWr05RjmffXX39larmZSU7j4+OVi4uLKl68eJrkWSmlOnTooAD122+/KaXuHeQ+99xzGZZ769YtBagWLVpY7aCzonPnzgpI86N0P5UqVVKOjo5WyYHFkCFDFKA+/fRTfZrlh3TatGlp4tu2basAtW7dOpvLKVeunNU0y2f07rvvpon//fffFaCefPLJTK1H165dlZOTk0pISNCnWX4Ye/bsafM1GSWnqRPO1LK6LSiVs9trdlgOcj777LM089avX68ANWLEiEyVVadOHVWhQgWraRkdZFkOHlq1anXfsi2fS8WKFa2S+5TznnrqqUzVMyVLcvrTTz9lGGc2m1WJEiWs9gcjRoxQbm5u6qefflKA+uGHH5RSSp05c0YB6qWXXtJjDx06lGaarXpYkrCsxit1b7+7Z8+eNPEzZsxIc/DzIA4fPqyKFCmifHx8VEREhNU8y3b+v//9z+ZrS5curTw8PO67jPHjx6f7Hhw7dkzNmjVLHTt2TMXExKiwsDC1detWPXEZM2ZMhmXnt+S0UaNGVkl2x44dVVhYWKaXdT/ZSU4t+5/MnNzMTHKqVHKCainX8nBwcFCjR49Oc8BuER0dbRWvaZoaO3asSkxMTBN75MgR5ejoaLWvzk5yavlO29qOLly4oABVs2bNNL/NJpNJ3wYvXryoT8+r5PRB9iNHjx5NE5/Z38KMZPQbbDKZVLFixVTlypVtHvdYlr906VJ9mmV7Su8YA6yvZVYq+cSXo6Oj1W9Pdj7X5557TgFpxvPo3bu3AtSRI0f0aaNGjUrz+5+y/JIlS6pGjRrp0ywnurds2ZIm3rI/T+/79vLLL6e7LJF/SbfePFSvXj2b15FA8nURs2bN4ocffuDChQvExsZazb9y5Uqml9OoUaM008qWLQuQ4e0PsurUqVPExcXRpk0bmyMHt2nThl9++YUjR47w6KOPUqNGDerWrcsXX3zBv//+S48ePWjdujX169e3GnXQw8ODJ554gu+//56GDRvyzDPP0Lp1a5o0aaJ3dbOHqKgozp07R40aNfT3K/X6fPzxxxw5coS+fftazbN1bU+pUqUynLd3716b9Xj00UfTTGvevDlGozHNtaRHjhxhzpw57Nmzh9DQ0DTXpV67dk2vh0XTpk1tLteWVq1aUapUKWbNmsXRo0d58skneeyxx6hRo4bVtUJZ3RZSetDtddGiRWniBgwYcN/rlCxsvd+Waanf7127drFo0SL27t3LtWvXSEpK0uel9922Zd++fYDt7p/pSf09gQf7Xvfu3ZtFixbRs2dP+vTpQ4cOHWjVqlWarqGW69s3b97M1atXKVWqFDt37uTRRx+lVatWODs7s3PnTjp37myzS29wcDAAYWFhNq8JO3XqlP5v7dq1sxxvYTQabXaNTO+zzI5z587RpUsXTCYTGzdutMvooCtXrmTmzJk0aNCAxYsXp5lfq1YtatWqpT8vWrQo3bt3p1mzZtStW5clS5bw9ttv4+Pjk+N1s4cDBw4AyfuqoKAgxo0bR8OGDfn++++pW7durtcnKiqKTZs24ebmRp8+fXKkzIiICLp3705ERATff/89LVq04M6dO3z99de88cYbfPvttxw8eBAPDw+r17m5uaGUwmw2c+XKFbZt28aECRMICgri+++/1+MTEhLo378/VapUeeA7BVy/fh2w3ZX2yJEjQPIIy6mvXzYYDLRq1YpTp05x5MgR/P39H6geDyq7+xEXFxfq1KmTJj6zv4WZYes3+PTp09y8eZPSpUvr192mZLkm2VLvlNI7xjh37lyaeQ4ODvj4+FgdU2bnc+3bty9ffPEF69ev18f0iIqKYtu2bdSpU8fq0ivLZ2HpSp2ao6Oj1XpZxlHI6Lc5Pd7e3kDy/kQUHJKc5qH0rgm7ceMGTZo04eLFi7Ro0YL27dvj5eWFg4MDR44c4euvvyY+Pj7Ty0n9Awf3rlsymUzZq7wNlusk0lsvS1JkiTMajezYsYOpU6eyZcsW/ZYKJUuWZMSIEbzzzjv6ABObNm3i/fffZ8OGDfq1bx4eHgwcOJD333//vrfRsQzMcfnyZbutT0oZvefpzUuZ2KRka/kODg4UL17catCFP//8k7Zt2wLJSU5AQIB+X7utW7dy9OhRm9tNVq5N9PT0JDg4mMmTJ7Nt2za+//57APz9/Rk3bhyvvvoqYL/3LjPb66JFi9IMzNC6detMJ6e26myZlvL93rRpE3369MHNzY1OnTpRoUIFihQpog9wkd7gELZYys3KNYI5/b1u1qwZu3bt0r9na9asAaBJkybMnj3bKsFs06YNmzdvZufOnXTo0IHjx48zYMAAXFxcaN68uZ6U2kpOLfes/O677/TrCW25fft2tuItSpQoYfPWGrY+y+w4f/48bdq04dq1a2zZssVqHS0s15ylt6yoqCib1/FZrFq1ildffZU6derwyy+/4Obmlun6+fn50b17d1atWqVff1aQlChRgq5du1K/fn0CAgIYMmRIuifw7Gnjxo3cuXOHQYMGZen9z8jrr79OUFAQR48e1RNuDw8Phg0bRlxcHKNHj2bp0qX6b11qBoOBsmXL8sorr1CiRAl69+7Ne++9x+zZswGYOXMmf//9N3/++afVGArZYRlIKvW9V+HB9vO5Lbv7ER8fH5vJZmZ/CzPD1vtnqe/x48c5fvx4pusL2Tv+SHkiOzufa8eOHfH19WXjxo3MmzcPBwcHNm/eTGxsbJqT95Z1y+wYErdu3cJgMNg8+Xe/4xdLw47carFgkdF681B6Z9c++eQTLl68yIwZM9izZw9Lly5lxowZTJ06NV/fY8yy0wsLC7M533J/uZQ7x+LFi7N06VIuX77MiRMnWLZsGd7e3kyZMoU5c+bocUWKFOHdd9/l3LlznDt3jk8++YRq1aqxePFiXn/99fvWrUWLFgBZujA+O+tjD7aWbzKZuH79utWAC++99x7x8fH8+uuvfPPNN8yfP59p06YxderUDEfNzOpZ3nLlyrF27VoiIiI4fPgws2fPxmw2M3z4cH0k1Lx870JCQlDJlyzoj4zuXZiarTpbpqV8v6dOnYqLiwsHDx5k06ZNzJ07V3+/0xt5ND2WVomsnDyxh0cffZQffviBmzdvsnPnTsaMGcPff/9Nly5d9BFG4V6yuXPnTn3QH8u0Nm3acOjQIW7dusWuXbsICAiwSrotn7llBOT0Hv37989WvMW1a9dsjuRo67PMqnPnztG6dWuuXr3KV199xZNPPmkzLiAgAEgerCi10NBQYmJi9JjUPv74Y4YOHUrNmjXZvn07xYsXz3I9LQdztg5gCwp/f39q1KjB/v37bY7iaW+rVq0CcmYgJIsffvgBb29vmy3Blu9RZlv2Lb0tLN9Dy2vNZjOBgYH6CLeapullf/jhh2iaRo8ePe5bfsmSJYF7CUVK2dnPGwyGdE/EPugJo4xkdz+S0e9jZn4LM8PWMiz1ffrppzOsr+UkYk7Kzufq4ODAc889R2hoKL/++isA69evx2Aw8Pzzz9ssPyoqKsN1s/D09MRsNtts/UyvjhaW7dayHYuCQZLTfMhyG4ru3bunmff777/ndnUyzXKrlfQOIiw/nra6nGiaRo0aNRg+fLg+3LitodIBKlasyEsvvcTu3btxc3NLNy6lXr164eHhwZYtW2x2g0nJ0rro4eFBpUqVOHPmjM2kIaP1yUm2PvOgoCCSkpJo0KCBPu3s2bN4e3unGQH3zp07HDp0KMfrZTAYqF+/Pm+99Zb+Q2z5LB5kW8hrtt5vy7TU73eNGjXSJBdXr161SuQsLL0AbLVqWrp1/fzzz9mveA5ydXWldevWzJ8/nwkTJhAbG2t1G4AaNWrg5+fHjh072LlzJ8WKFdPfm7Zt22IymVi1ahVXrlxJc2LAMhpmUFBQpuqS1XiLpKQkm6+x9Vlmxblz5/RRlb/88kub+2mLxx57DLD9uf70009WMSl9/PHHDBs2jBo1arBjx45sH1hZWhoz22sgv7p69SqapmX6Vi055e+//2b//v3UqlUrR08MJyQkEBUVRUJCQpp5lu6amW3xtHTHTHmJS4cOHRg0aFCah+XWNdWrV2fQoEFWIwWnp1atWhgMBk6fPp1mnmX//dtvv6W51ZZSSr/tUcr9fLFixQgPD0+ToN6+fdvmSZyM9ptZkd39SGZk9FuYXTVq1MDDw4MDBw6kuTzH3rLzuQJ6C+lnn33GpUuX2L17N23atEnTI8jyWVi6996PpUtwRr/N6Tl9+jSOjo5Ur149U8sS+YMkp/mQ5fYTe/bssZq+YcMGvetIfuTk5MRzzz3HtWvXmDlzptW8H3/8kZ9++okqVarorZghISH6fV1TspwJs7Q+RURE2LwH2c2bN4mPj89UK5WXlxdz584lPj6eLl266NdUpGQymVi3bh0vv/yyPq1///4kJiYyfvx4q530X3/9xdq1a/H09MzU2ecHsXjxYv7991/9ueU+ZYDVPUjLly/PzZs3rboAmUwmxo4dm+aelNl1/PjxDFsWLZ9FVreF/GTGjBlWZ/Bv3brFu+++i6ZpVmfVy5cvz5kzZ6zej7i4OF555RWbBxOWa18uXbqUZl6TJk1o0qQJv/32Gx9//HGa+bnRohoUFGSz617qz9aidevWnDt3js2bN/PYY4/pXWibNm1KkSJF9C6Gqbu7Nm3alGbNmvHFF1/w5Zdfplme2Wy2ur1KVuNTstxL1OLff/9l8eLFODs78+yzz9p8TUYsXXmvXLnCxo0b9XtMpqddu3ZUqlSJDRs2WO1zbt26xfvvv4+TkxP9+vWzes2qVasYNmwY1atXZ8eOHfe9VvTgwYM2py9evJidO3cSEBBg8xZS+cnVq1dtbuNKKaZOnUpYWBjt2rV74C6qWWW5fcygQYNytNwWLVqQlJTEjBkzrKbHxcXx7rvvAtbfmxMnTtg8yXfnzh3GjBkDWN8zdfjw4axatSrN48033wSST4isWrWK4cOH37euXl5e1K1blwMHDqTpiVCuXDnatGnD8ePHWb16tdW8jz76iJMnT9K2bVur602bNGlCYmIin3/+uT5NKcX48eNttvBntN/MigfZj9iS2d/C7DIajbzyyitcuHCBsWPH2vxNOXbsGOHh4Q+0HFuy87kCNGzYkJo1a/Lf//6XDz/8EKVUmi69AK+++ipGo5GRI0favBduZGSkVc8BSxnTp0+32kYuX75s8zp8i4SEBA4fPkzjxo2lW28BI9ec5kN9+/Zl9uzZjBw5kp07d1K+fHmOHj3K9u3beeqpp/jPf/6TJ/W6evWqVTKUUokSJZg3bx6zZ89m9+7dvPvuu/z55580a9aMkJAQNm3aRJEiRVizZo1+EHvkyBGeeuopmjZtSs2aNfHz8+Py5cts3boVg8Ggd9e9fPkyDRo0oF69etStW5cyZcpw/fp1vv76axITE9Pc/zE9Q4cOJSoqSh9go1WrVjRo0ABXV1cuX77M9u3buXz5slX3rbfeeovvvvuO9evXc/LkSdq1a0d4eDhffvklSUlJfPzxx7i7uz/YG3sfgYGB1KtXjz59+lC0aFG2bdvG6dOneeqpp6xuij5y5Eh+/vlnWrZsSe/evXFxcWHXrl1cvnyZ1q1bW3X7yq5ffvmFN998kxYtWlC1alWKFy+u30vVxcXF6mAnK9tCflK1alVq165tdZ/Tf//9lzFjxtC4cWM9buTIkYwcOZIGDRrQq1cvkpKS+OWXX1BKUa9ePX0QBwvLTeQnTJjA8ePH8fT0xMvLS79P3eeff07r1q0ZOnQo69evp3nz5sTFxXH8+HEOHz6sD0xiL7Nnz2bnzp20atWKihUr4uLiwqFDh9i+fTuVKlVKk4i1adOGjRs3EhERYXUg7eTkRIsWLfSWVltdqr/44gvatGnDs88+y6JFi2jYsCGurq5cvHiRoKAgIiIirBLlrMZD8nVRt2/fpm7dunTt2lW/z+n169dZsmRJtu4B2qZNGy5evEhgYCB//fWXfm/XlFIOtmI0Glm1ahWdOnWiVatWPPvss7i7u7NlyxYuXLjAvHnzrFo1d+zYwdChQ1FK0apVK1asWJGm/Pr161udEHv66adxdHSkcePGlC1bltu3bxMcHMzhw4fx8vLis88+S9PiuHXrVrZu3QokJ9yWaZaThdWrV2fcuHF6/LVr16z2s4mJiVy7ds3q92DevHlW14TNmjVL76Viaa2aNWsWa9euBaBHjx76epw+fZoOHToQGBhIQEAAvr6+XLt2jd9//53Tp09TunRpli9fnua9yIzs1B2SD2w/++wzmycQUtuzZ4/e/ddyInDPnj36Miy/jxYzZ85kz549vPvuu/zyyy888sgjxMbG6gMgNm/e3GqZX331FQsWLKBly5ZUqFABDw8PLl++zA8//MD169d59NFHM3V5S3b17NmTKVOmEBwczCOPPGI1b8WKFbRs2ZIhQ4awbds2atasyfHjx/nmm28oWbJkmm14xIgRrFmzhsGDB/PLL79QsmRJfv/9dyIjI7O138yK7OxH0pOV38LsmjZtGocOHWLJkiV89913tGrVCh8fHy5fvszff//N0aNHCQoKsstgZ1n9XC369u3L+PHjmTNnDkWKFLE6RrGoXbs2H3zwAa+88grVqlXjiSeeoHLlykRHR3Pu3Dl2797NgAEDWLlyJZC8DQwcOJA1a9ZQp04devbsSXx8PF9++SWBgYF8++23Nuvy+++/Ex8fb/cGBGEHOT38r7CW0a1kMhpq/siRI6pjx46qWLFiyt3dXT322GPq119/1YceX7NmjVU8GdxK5vz582nKv9/w7Klh4z56KR8ph4aPiIhQo0aNUuXLl1eOjo6qRIkSqlevXmnuz3fp0iU1btw4FRgYqHx8fJSTk5MqV66ceuqpp1RQUJAed/PmTTV16lTVqlUrVapUKeXk5KRKly6tOnfurN+yIitOnTqlRowYoWrWrKnc3NyUo6OjKlOmjOrRo4favHlzmqHTY2Ji1KRJk1TVqlX1e5s+/vjj6vfff09Tdkbva0afh63h8C3xZ8+eVbNmzVJVqlRRTk5Oqnz58mrq1Kk2b0O0efNm1bBhQ1WkSBFVokQJ1bt3b3X27Fmby05vW7KwtZ2eOHFCvfbaa6pBgwaqePHiytnZWVWqVEn1799fHT9+PE0Zmd0W7vf+ZHV7zQ7LZxAbG6veeust5e/vr5ycnFS1atXUkiVL0mwXZrNZrVy5UtWqVUu5uLgoPz8/NWjQIBUeHm7z81RKqbVr16o6deooZ2fnNN8bpZQKDQ1Vr732mqpUqZJycnJS3t7eqlmzZmrBggV6zP32H7b2BZnx448/qn79+qlq1aopd3d35ebmpmrWrKkmTJiQ5hYpSin1zz//6N//1J/n+++/r7jP7adu3LihJk6cqGrXrq1cXV2Vm5ubCggIUM8//7z6z3/+80DxlttV3LhxQw0dOlT5+voqZ2dnVa9ePbVhw4YsvzcW99sPpveTunfvXtW5c2fl4eGhXF1dVdOmTdXGjRvTxFm+kxk9Un/us2bNUm3atFGlS5dWzs7OytXVVVWvXl2NHj3a5i2wlLr3fUrvkXr7SXlv3fQeqb+3lu9Aeo+Ut/m4evWqeuutt1SzZs1UyZIlldFoVO7u7qphw4Zq0qRJNu8nnFnZqbtS9+7/2Lt37/su436fm61bp5w+fVr1799flStXTjk6OipXV1dVt25dNWPGjDT31Ny/f78aMmSIqlWrlvLy8lJGo1EVL15ctWnTRn344Yc2byVjS3ZuJaOUUpcvX1ZGo9Hq3sYphYSEqIEDB6pSpUopo9GoSpUqpQYOHKhCQkJsxu/YsUM1a9ZMOTs7q+LFi6u+ffuqsLCwbO03s3KfU6Wytx+xJau/hbbc7zdYqeRbvXz44YeqRYsWysPDQzk7O6ty5cqpzp07qxUrVljd9zOrxxj3W8+sfq5KJd/T3WAwKLj/bQL37dunnn32WVW6dGn9+KBhw4Zq3Lhx6uTJk2neh5kzZ+q/jZUqVVLvv/++frsyW7+HAwYMUE5OTlb3fBUFg6ZUqg7lQoh8YcCAAaxbt47z588X+GvGhMhNlu+LrcsGhBBZ17dvX7777jsuXLhg995CQjyomzdvUr58eXr16pWma7LI//JfnzohhBBCCJFvvPvuu8TGxrJ06dK8rooQ97VgwQJMJlOa67pFwSDJqRBCCCGESFf58uVZt26dtJqKAsHb25tPP/00W2MLiLwnAyIJIUQhtXbt2kx1be3Ro0e+vK2PvR05ckQfGCgjFSpUSHcwOJG7du3alanB3VIPHCUeXO/evfO6CkJkij0HCBP2J9ecCiFEIdW6detM3R5hzZo1D2XytXbtWgYOHHjfuMceeyxHRrsWD27q1KlMmzbtvnH9+/fXRwYWQghRcEhyKoQQQgghhBAiz8k1p0IIIYQQQggh8pxcc5qDzGYzV65cwd3dHU3T8ro6QgghhBBCPNSUUkRHR1O6dGkMhgdrl4uLiyMhISGHapaWk5MTLi4udiu/IJDkNAdduXIFf3//vK6GEEIIIYQQIoVLly5RtmzZbL8+Li6OiuXdCA035WCtrHl4eFCqVCkMBgPDhw9n+PDhdltWfiXJaQ6yDLF+6dIlPDw88qQOZrOZiIgISpYs+cBnh0ThI9uHSI9sGyI9sm2IjMj2IdKTX7aNqKgo/P39H/hWSAkJCYSGm7hwsAIe7jm/PlHRZso3CsnTPCI/kOQ0B1m68np4eORpchoXF4eHh4f8SIg0ZPsQ6ZFtQ6RHtg2REdk+RHry27aRU5fcublruLnn/OV7ZuSSQJABkYQQQgghhBBC5APSciqEEEIIIYQQmWBSZkx2uBGnSZlzvtACSFpOhRBCCCGEEELkOWk5FUIIIYQQ+ZLJZCIxMTGvqyGywWw2k5iYSFxcnF2vOXV0dMTBwcFu5admRmEm55tO7VFmQSTJqRBCCCGEyFeUUoSGhhIZGZnXVRHZpJTCbDYTHR2dY4MRpcfLyws/Pz+7L0fYnySnQgghhBAiX7Ekpj4+PhQpUkSSjgJIKUVSUhJGo9Fun59Sijt37hAeHg5AqVKl7LKclMyYscfVofYpteCR5FQIIYQQQuQbJpNJT0yLFy+e19UR2ZQbySmAq6srAOHh4fj4+ORqF1+R8yQ5FUIIIYQQ+YblGtMiRYrkcU1EQWHZVhITE+2enJqUwqRy/vpQe5RZEMlovUIIIYQQIt+Rrrwis2RbKTyk5VQIIYQQQgghMkFG67UvaTkVQgghhBAiB7Ru3ZrRo0fn6jJDQkLQNI0jR47k6nKFsAdJToUQQgghhMgHdu3ahaZpuXoLnbi4OAYMGECdOnUwGo306NEj3bo1bNgQZ2dnqlSpwtq1a9PELF++nAoVKuDi4kJgYCD79++3b+XzgBmFyQ4PaTlNJsmpEEIIIYQQDymTyYSrqyujRo2iffv2NmPOnz9Ply5daNOmDUeOHGH06NEMHjyYn376SY/58ssvGTNmDFOmTOHQoUPUrVuXLl266Ld5ESIzJDkVQgghhBAihyQlJTFixAg8PT0pUaIEkyZNQt0diXX9+vU0btwYd3d3/Pz8eP755/XkLSQkhDZt2gBQrFgxNE1jwIABAJjNZubMmUOVKlVwdnamXLlyvPfee1bLPXfuHG3atKFIkSLUq1ePoKCgTNW3aNGirFixgiFDhuDn52czZuXKlVSsWJH58+dTo0YNRowYQa9evVi4cKEes2DBAoYMGcLAgQOpWbMmK1eupEiRIqxevTpL719+Z7nm1B4PIcmpEEIIIYQQOWbdunUYjUb27dvH4sWLWbBgAatWrQKSb3UyY8YMjh49ytatWwkJCdETUH9/f7Zs2QLA6dOnuXr1KosXLwZg/PjxzJo1i0mTJnHixAk2bNiAr6+v1XLfeecdxo4dy5EjR6hatSrPPfccSUlJObJOQUFBaVpVO3XqpCfACQkJHDx40CrGYDDQtm1bgoODc6QO4uEgo/UKIYQQQoh8b+7bXxEVeSfXl+vhVYQ3Z/fOdLy/vz8LFy5E0zSqVavG33//zcKFCxkyZAgvvfSSHlepUiWWLFlCkyZNiImJwc3NDW9vbwB8fHzw8vICIDo6msWLF7Ns2TL69+8PQOXKlWnZsqXVcseOHUuXLl0AmDZtGrVq1eLMmTNUr179QVYfgNDQ0DTJsK+vL1FRUcTGxnLz5k1MJlOaGB8fH/75558HXn5+Ivc5tS9JToUQQgghRL4XFXmHWzdu53U17iswMNDqvpvNmzdn/vz5mEwmjhw5wtSpUzl69Cg3b97EbDYDcPHiRWrWrGmzvJMnTxIfH0+7du0yXG7dunX1v0uVKgVAeHh4jiSnQuQWSU6FEEIIIUS+5+FVpEAvNy4ujk6dOtGpUyc+//xzSpYsycWLF+nUqRMJCQnpvs7V1TVT5Ts6Oup/W5JjS/L7oPz8/AgLC7OaFhYWhoeHB66urjg4OODg4JAmJjw8PN3rWAsq892HPcoVkpwWSmazmT+/3k/1ZgGUKO2d19URQgghhHhgWelam5f27t1r9Tw4OJiAgABOnTrF9evXmTVrFv7+/gAcOHDAKtbJyQlIHkHXIiAgAFdXV7Zv387gwYPtXHvbmjdvzvfff2817ZdffqF58+ZAcr0bNWrE9u3b9VvRmM1mdu7cyfDhw3O7uqIAk+TUDuLi4vSdS0oGg8FqelxcXLplZDd2zY5P2Tb5D266ulJpusai7VNxLnLvjJumaTg7O+vP4+Pj9RHkUksdm5CQkOEZOBcXlzyPdXZ21s8WJiYmWu3ccyo2KSkpwwEGshLr5OSEwWDI8VhHR0ccHBzSxJrNZhISEoiLi9PLShlrMplITExMt1yj0YjRaMxyrGW5OR2rlCI+Pj5HYh0cHPSzzjkZmxvf+6zG2vreW973+Ph4q7P0so94uPYRtljiQPYRD/M+wsLWcUTq35X0YrPyXVZKYTab041Puaz7tQ5mJVbTtEy3OqYXe/HiRV5//XWGDh3KoUOHWLp0KfPmzaNcuXI4OTmxZMkShg0bxrFjx5gxY4b+erPZjL+/P5qm8e233/LEE0/g4uJC0aJFeeutt3jrrbcwGo20aNGCiIgIjh8/bpWsWt6zlPVJ+R6mrK9SyuozPnHiBAkJCVy/fp2YmBgOHz6MpmnUr18fpRRDhw5l2bJlvPnmmwwcOJCdO3fy1VdfsW3bNpRSaJrGmDFj6N+/Pw0bNqRp06YsXryY27dv079//0zVIaP3936xKeel3kdktO1nh+W+pDnNHmUWRJKc2kG/fv2sulZYNG7cmClTpujPX3zxxXR/sGrXrs3MmTP154MGDSIqKspmbEBAAAsWLCAxIYntt/7AfbLCnTvciXJk27ounLzhzF9H3IDki/Q/+OAD/bWvv/46ly5dslmuj48Pn3zyif583Lhx/O9//7MZ6+Hhweeff64/nzJlCseOHbMZ6+zszObNm/XnM2fOTHPmMKVt27bpfy9YsIA//vgj3dhNmzbpP27Lly9n+/bt6cZ+9tlneHp6ArBq1ao0ZwRT+uSTT/Dx8QHg008/5b///W+6scuXL6dcuXIAfPXVV3zxxRfpxi5YsICAgAAAvvnmG9asWZNu7Pvvv0+dOnUA+Omnn1i5cmW6sZMnT6ZJkyYA7N69m0WLFgHJO3p/f38uXbqk78jffvttfVCFoKAgZs+enW65o0eP1q95OXToENOnT0839uWXX9YHZjh+/DgTJkxIN3bgwIE89dRTAJw9e5YxY8akG/vcc8/x/PPPA3Dp0qUMz8j27NlTH3wiIiKCQYMGpRv7xBNP8MorrwAQFRXFiy++mG5su3btGD16NJB8YPbMM8+kG9uiRQvGjRunP88o1t77CItXX301zX3nLNsGJG/DFrKPeLj2Eba89dZbeh1kH/Hw7iMsUh9HjB07FsDqd8XiQfYRkZGRXLx40erkiIXBYKBy5cr689DQUG7fTv9aVMv2C8ldUWNiYtKNrVy5sp4QRUREpPueAVSsWFE/uXHt2jVu3bpFbGws3bp1IywsjKZNm+Lg4EDfvn156aWXcHJyYu3atYwbN44lS5ZQq1YtxowZw8svv8ylS5dwd3cHYNKkSYwbN46BAwfSp08fpk+fznPPPUdUVBQTJ04kPDyckiVL8uyzz1p9/tHR0Zw9exZAr/eVK1f0aWXKlKFIkeQuyrdu3SIiIkJ/befOnbl8+bL+vGHDhkBy0hcdHY3ZbObDDz/k/fffZ/Hixfj5+fHee+9RpUoVYmJicHd3p0+fPly6dImJEycSERFBjRo1WLNmDbdv39br4Ovri4eHBwB37tzhypUr6b6/JUuW1AeFio2NtapfapYyIe0+IqOTZCL/keTUDmITTSQqLc30m7cTOBdxb4d4Oz6JhATbZ6sj71jHxsQlcSed2FspYrUUn6iTRyKHfitB564XCd6XfDAWFZtoVW5UbGK65UbHWcfeupOQbqwhLskqNjKD2CQcrGJv3k4/FrCKvXE7PsPY8xExOLskz78ek3FsyLUY3BOSf/SuRd8v9jYxWnI9IqLjMoy9eP02Sa7JseFR94m9cRuHu+sXdis2w9h/b9yh6N3Y0PvEXr55h+J3Y69E3ovVNI34RBN3EpL0g4grN+/o7/GVm3cyLPdKZKwee/k+saG37sX+eyPj2LAUsRdv3M4wNjwq7l59r2ccGxF9L/batYxjr0XH67HRUTEZxl6PuRcbH5fxZ3zjdrzVNpxRbG7sIyD5u5061rJtxCeZZR9x18O4j7Dl6s07uN+K5bYhRvYRD/E+wsLWcYSz0WD1u5KynOzsI0yJ8ZjV3ZZAG61lyqyIT7zXkyHJbDvOImWs6X6xSSYMWvL8JJM5w9iEJDMmZbKqw6fr1+vzp0ydqv+daFKoRBNP9epN67btiLoVqc87dfo0gL6ssW+PY8LEyQBE3rxJZOQN0DSGvfwyw15+OU0dSpXxJy4hiVu3Irl54zoAbu7uacpNNJn19yIx1bpt37HDqlwf31IUKVKE+ESTHtukaVP+u3WrVZxZKatyXxo8hK7dut2dq+Hs5ER8QgKQtg4JSRm/vxnVN7Uks5kkk5lLN26n2UckJaXf6yU7TCr5kdPsUWZBpKmM2shFlkRFReHp6cm+4+dwu3v2KyUtdbeZDLoZZDf2na/GYKx0t2uJBr7bIxj9mhPRasXdaWm745DeJmCjO47KqLtcqq51eRHrlKobnjmDbnjZjU1KSsKUUde6LMQ6puqGl1OxxlRd9iyxSilu37pJUc9ieh2Nqbr1JmVwhtEhVZe9zMaazWYSM+iGl91YpRQJGXWty0KsIVU3vJyKzY3vfZZjbXzv9W3Dy9uqa53sIx6ufYQtDkYH7kRF4l6sOGazkn1EDscWlH3EvWDr731cXBy3I29Y/a6kF5vZ77IpMZ7Y66GUK1/O6vudkkFL0VVXKcigS2RWYjXNgGUtlFKohzZWQ0PLeiwput8qMJtMGBwcsCxYI0VXXe7TrdcqFpRKf9tJiIvn4sULuHj7oTk4Wu0jYqKjaVqrErdu3bJqYc0qy3H+Xyd8cHc33P8FWRQdbaZuzfAHrmdBJy2nduDk4pzuzjSlzMRkNfbdZ+YxZO40Sre9hQYENI1DMzjj7Gj79Sl/NO7H1nW0+TnW0dERbHSvftDYlNcoFbRYpcwkxDri7OKMpqXdsVpG28uMrMQaDIZMb8NZidU0rUDFgn2+91mOtfG917cNZ6f7xqYnP3zvZR+R87EpDwhlH2HfWMi/+4j0Y51IcEr/dyWlrHw/NS05qTTcp0wAg6ahZz85GJsy6SrIsd26duGPPXtsvuatt8fx9rjxOVeHlAmlBpoyoxkMNl+dMvb+5ZLh9pWynNT7iITE9E9mZYeM1mtfkpwWQlqKs1ARVxzR5AJrIYQQQoiH0oqVHxEXG2tzXjFvuauDyF8kOS2MUiSnV85l/iylEEIIIYQoXMqUKZPXVShUzGiYMtmSnNVyBeR8h2mR57QU/QIc8+Z+1UIIIYQQQgiRJdJyWggpq+Q04wv/hRBCCCGEEJljVskPe5QrJDkt9G5ccUQusRZCCCGEEOLBmezUrdceZRZE0q23MEp55kVLPUEIIYQQQggh8h9pOS3s5CSMEEIIIYQQOUJaTu1LWk4LI2koFUIIIYTIdR3at2XsG2NydZkhISG4OBk5euRIri5XCHuQ5LQQSnEnGZR06xVCCCGEKBB2796Fi5ORyMjIXFtmXFwcgwe9RKMG9Snq6swzTz+Vbt0CmzbBw60INWtU49NP16WJWbniA6oGVMbTvSiPtmjOgf370yzrtVEjKe3nQ/Finjzb+xnCwsLssl72Ylaa3R5CktOHgIYkp0IIIYQQwhaTyYSrqyuvjhhB23btbMacP3+ent278Vjrx9i3/yAjR47ilWFD+eXnn/SYTV99xVtvjuWdiZMI3rufunXr0b1bV8LDw/WYN8e+wXfffcvnX2zkl+07uHr1Cn1697L7OoqCQ5LTwk4DTZJTIYQQQohckZSUxOjXRuFTwpsypXyZOmUy6m63ts8/+4xHAptRwtuL8v5l6Nf3RT15CwkJoVOH9gD4+ZTAxcnI4EEvAWA2m5k/by41a1TDw60IVSpXZNbM962We/78eTp2aEcxT3eaNGpIcHBQpupbtGhRli5bzqBBg/H19bMZs+qjD6lQoSKz58yjeo0avPLqcJ566mmWLFmsxyxZvJCXBg2mf/8B1KhZk6XLP8DVtQjr1q4B4NatW6xds5o5c+bRpk1bGjZsxEcff0JwUBB79wZn4R3OW5ZrTu3xEJKcFk4p7xwj27kQQgghRK75bP2nGI1G9vwRxLz5C1myeBGrV38CQGJSIlOmTmXfgUN8tXkLFy+EMGRwcgLq7+/Pxi83AfD3sROEXPyX+QsWAjDpnQnMmzuH8ePf4fDRv1n36Xp8fH2tljtl8iRef30M+/YfJCAggH59XyQpKSlH1il4b3CaVtX2HTuyNzg5qUxISODQoUO0bXsvxmAw0KZtG/bdjTl06CCJiYlW5VSrXh3/cuX0coSQ0XoLozS3khFCCCGEKNje2v4jkXFxub5cLxcX5rTrnOn4smX9mTtvPpqmUbVaNY4f+5ulixczaNBgBgwYqMdVqlSJ+QsX0aJ5IDExMbi5uVHMuxgAJX188PLyAiA6Opply5aycPES+vbrB0DlypVp0aKl1XJHjxnD4090AWDS5Ck0qF+Xs2fOUK169QdZfQDCQsPw8fGxmubr40NUVBSxsbHcvHkTk8mEj691jI+PL//8849ehpOTk75eKcsJCw194DrmFhMGTHZo3zPleIkFkySnDwXp1iuEEEKIgi0yLo4bsXfyuhr31bRZMzTtXutAs8DmLFq0EJPJxNGjR3h3+nT++vsvIm/exGxO7u526eJFatSsabO8U6dOEh8fT5s2bTNcbp06dfS//UqVAiA8IjxHklMhcoskpw8FSU6FEEIIUbB5ubgU6OXGxcXRtcsTtO/QkbXrPqVkiZJcvHSRrl2eICEhId3Xubq4Zqp8R6Oj/rclObYkvw/K18/XamAjgLDwcDw8PHB1dcXBwQEHBwfCw6xjwsPD8Lt7Hauvny8JCQlERkZatZ6GhYfj62f7Wtf8SNlpZF0lo/UCkpwWTlbdemVDF0IIIUTBl5WutXlp/759Vs/37g2mSpUATp8+xfXr13n3vffx9/cH4ODBg1axTk5OQPIIuhZVAgJwdXVl584dVKw4yM61ty2wWSA//vij1bTtv/5Ks8BAILneDRs2ZOfOHXTr3h1ITox37dzFy6++CkDDho1wdHRk544d9Hwq+XY1/5w+zaWLF/VyhJDktLCT+5wKIYQQQuSaS5cu8tabbzB48FAOHz7Mig+WM2vOXPz9y+Hk5MSK5csYPHQYJ44fZ+b771m9tly58miaxvfffUfnxx/H1dUVNzc33hj7Ju+MH4eToxPNH3mEa9ciOHHiBAMHvpQjdT554gQJCQncvHGD6Jhojh45AkC9+vUBGDx0GCtWfMCEcW/Tf8BAdu3ayZbNm9j69Td6GaNee53BgwbSsGEjmjRpwtKlS7hz5zb9+g8AwNPTkwEDX+Ktt8ZSzLsYHh4ejBn9GoGBgTRrVnCSU3uNrCuj9SaT5LQwkgGRhBBCCCHyxAsv9iU2No6WLZrj4ODA8BEjGTx4CJqm8fGq1UyePJHly5fRoEEDZs2ezdNP9dRfW6ZMGSZNnsKkiRMYOmQQL7zYl1WfrGbCOxMxGo1Mnz6Vq1eu4FeqFEOGDM2xOnfv3pWLFy7oz5s1bQxAXELyaL8VK1bkv19/w1tjx7Js2VLKlC3Lig8/okPHTvprnundm2vXIpg+fSphoaHUrVePrV9/g2+KUYXnzpuPwWDguT69iY+Pp0OHjixeuizH1kMUfJqy3HhJPLCoqCg8PT05cvYy7u4eeVIHpcwMmTiF0j2j0TQw/hzD+2NjiHXcmCf1EfmLUmaib17HvVhxNE3uJCXukW1DpEe2DZERe2wfpsR44m6EUr58BZzz6DpT8eAUYDYlYXAw2r2tJD4ujgsXQnDx9sPB0dlqXnR0FPUrl+HWrVt4eGT/+NxynP/DXxUp6p7z+8Lb0WYer3v+getZ0MmvTKGl2fhLCCGEEEIIIfInSU4LobRt4dI4LoQQQgjxMOrWtQvFi3nafMyeNTOvq1fgmNEwY7DDQ5qTQK45LfxkQCQhhBBCiIfWipUfERcba3NeMW/vXK6NEBmT5LSQk1smCSGEEEI8vMqUKZPXVShUZLRe+5JuvYWQlma0Xmk5FUIIIYQQQuRv0nJaGEkuKoQQQgghRI4zKQMmlfPteya5gQogLaeFXnIHAdnYhRBCCCGEEGnduXOH8uXLM3bs2LyuirScFkapb10rPdiFEEIIIYR4cMmj9eb80XVejtb73nvvERgYmGfLT0laTgs7ueZUCCGEEEIIYcP//vc/Tp06xeOPP57XVQEkOS2cUg7Rq0m7qRBCCCFEbujQvi1j3xiTq8sMCQnBxcnI0SNHcnW5DyszBkx2eJizkZb99ttvdO3aldKlS6NpGlu3bk0Ts3z5cipUqICLiwvNmjVj3759VvPHjh3LzJn55363kpwWRikaSpW0nAohhBBCFAi7d+/CxclIZGRkri0zLi6OwYNeolGD+hR1deaZp59Kt26BTZvg4VaEmjWq8emn69LErFzxAVUDKuPpXpRHWzTnwP79aZb12qiRlPbzoXgxT57t/QxhYWFWMRcvXqRH964U83THv0wpxo97i6SkpJxb4ULk9u3b1KtXj+XLl9uc/+WXXzJmzBimTJnCoUOHqFevHp06dSI8PByAr7/+mqpVq1K1atXcrHaGJDkthKzaSiUvFUIIIYQQ6TCZTLi6uvLqiBG0bdfOZsz58+fp2b0bj7V+jH37DzJy5CheGTaUX37+SY/Z9NVXvPXmWN6ZOIngvfupW7ce3bt11RMhgDfHvsF3333L519s5JftO7h69Qp9eveyqkvP7t1ISEhg1+7fWfXJatZ/+inTpk6x3xuQRZbReu3xAIiKirJ6xMfHp1uXxx9/nHfffZeePXvanL9gwQKGDBnCwIEDqVmzJitXrqRIkSKsXr0agODgYDZu3EiFChUYO3YsH3/8MdOnT8/5Ny0LJDkt7KTlVAghhBAi1yQlJTH6tVH4lPCmTClfpk6ZrA9W+flnn/FIYDNKeHtR3r8M/fq+qCdvISEhdOrQHgA/nxK4OBkZPOglAMxmM/PnzaVmjWp4uBWhSuWKzJr5vtVyz58/T8cO7Sjm6U6TRg0JDg7KVH2LFi3K0mXLGTRoML6+fjZjVn30IRUqVGT2nHlUr1GDV14dzlNPPc2SJYv1mCWLF/LSoMH07z+AGjVrsnT5B7i6FmHd2jUA3Lp1i7VrVjNnzjzatGlLw4aN+OjjTwgOCmLv3mAAfv3lZ06ePMGatZ9Sr359OnV+nClTp/HhyhUkJCRk9iMo0Pz9/fH09NQf2e1ym5CQwMGDB2nfvr0+zWAw0L59e4KCkreNmTNncunSJUJCQpg3bx5Dhgxh8uTJObIe2ZUvk9P79Y1ObdOmTVSvXh0XFxfq1KnD999/bzV/wIABaJpm9ejcubNVzI0bN3jhhRfw8PDAy8uLQYMGERMTk+PrliskFxVCCCGEyBOfrf8Uo9HInj+CmDd/IUsWL2L16k8ASExKZMrUqew7cIivNm/h4oUQhgxOTkD9/f3Z+OUmAP4+doKQi/8yf8FCACa9M4F5c+cwfvw7HD76N+s+XY+Pr6/VcqdMnsTrr49h3/6DBAQE0K/viznWHTZ4b3CaVtX2HTuyNzg5qUxISODQoUO0bXsvxmAw0KZtG/bdjTl06CCJiYlW5VSrXh3/cuX0coKDg6lduw6+KdatfYeOREVFceL48RxZlwdlvnt9qD0eAJcuXeLWrVv6Y/z48dmq57Vr1zCZTFbvJYCvry+hoaEP/D7YS767lYylb/TKlStp1qwZixYtolOnTpw+fRofH5808X/++SfPPfccM2fO5Mknn2TDhg306NGDQ4cOUbt2bT2uc+fOrFmzRn/u7OxsVc4LL7zA1atX+eWXX0hMTGTgwIEMHTqUDRs22G9l7cQqN5WWUyGEEEIUAn9fn0iiOTLXl+to8KJO8XczHV+2rD9z581H0zSqVqvG8WN/s3TxYgYNGsyAAQP1uEqVKjF/4SJaNA8kJiYGNzc3inkXA6Ckjw9eXl4AREdHs2zZUhYuXkLffv0AqFy5Mi1atLRa7ugxY3j8iS4ATJo8hQb163L2zBmqVa/+IKsPQFhoWJrjcF8fH6KiooiNjeXmzZuYTCZ8fK1jfHx8+eeff/QynJyc9PVKWU7Y3WQpLCwsTRmW5CosLP8mVDnJw8MDDw+PXF/ugAEDcn2ZtuS7ltP79Y1ObfHixXTu3Jk333yTGjVqMGPGDBo2bMiyZcus4pydnfHz89MfxYoV0+edPHmSH3/8kVWrVtGsWTNatmzJ0qVL2bhxI1euXLHr+tpFytF60eQ+p0IIIYQo8BLNkSSYbuT6I6sJcdNmzdBS3C2hWWBzzpz5HyaTiUOHDvJUj+5UqVyREt5edGjXFoBLFy+mW96pUyeJj4+nTZu2GS63Tp06+t9+pUoBEB4Rnl64yCaT0uz2yEklSpTAwcEhzYBTYWFh+PnZ7r6dH+Sr5DQzfaNTCwoKsooH6NSpU5r4Xbt24ePjQ7Vq1XjllVe4fv26VRleXl40btxYn9a+fXsMBgN79+7NiVXLZSlaSqXlVAghhBCFgKPBCycH71x/OBq8cqT+cXFxdO3yBO4eHqxd9yl//BnMl5s2A2R4PaWri2umync0Oup/W5Jjs9n8ADW+x9fP12pgI4Cw8HA8PDxwdXXVE6HwMOuY8PAw/O5ex+rr50tCQkKakYjDwsPxvZss+fr6pinDklyldz2ssM3JyYlGjRqxfft2fZrZbGb79u00b948D2uWsXzVrTejvtGnTp2y+ZrQ0ND79qXu3LkzTz31FBUrVuTs2bNMmDCBxx9/nKCgIBwcHAgNDU3TVcFoNOLt7Z1hn+z4+HirEbSioqIAUMqMUjmzM8iq5GWneH73f3lVH5G/JG8fSrYHkYZsGyI9sm2IjNhj+1BKoUB/WNTOQtfanJaV0/z79+2zit+7N5gqVQI4dfoU169fZ8Z77+Pv7w/AwYMH9fIV4OjkBECSyaSXUTkgAFdXV3bu3EGFioMyrKNK8Xd26p66HItmzQL56ccfraZv//VXmgUG6vVu0LAhO3buoGv37gCYzSZ27dzFy6++igIaNGyEo6MjO3bsoOdTyber+ef0aS5dvEjTu+U0Cwxk9qyZhIWH68fm27f/ioeHB9Vr1kx3XfTtxca2mNP7Lst9SXOaKRuNSTExMZw5c0Z/fv78eY4cOYK3tzflypVjzJgx9O/fn8aNG9O0aVMWLVrE7du3GThwYAal5q18lZzay7PPPqv/XadOHerWrUvlypXZtWsX7dIZMjszZs6cybRp09JMj4m8AUmJ2S73QVh26DoteecQffN6ei8RDxGlFLEx0QBWXY6EkG1DpEe2DZERe2wfymzCYDZjNpswmwrY/S2V4tKli7z5xhgGDR7MkcOHWfHBcmbOmkWZ0qVxcnLig2VLGTxkMCeOn2Dm+8kJt2Vd/cuUQdM0vvv2Gzp16oyrqytubm6MeeMN3hk/DqPRgebNm3Mt4honT56g/4CBmM1JVmUA9/7N5Ht48uRJEhISuHHjOjHR0Rw+lJw016tXD4BBgwexcsUHjH/7Lfr178/uXbvYsnkTW/67VS9/5MhRDB0ymAYN6tO4cROWL13KnTu3efGFFzGbknB3K0r/AQN4+8038PLywMPdgzfGjKFZs0CaNG6M2ZRE27ZtqV6jBi8N6Me7771PWFgYU6dMZuiwYTgaHdJdF7PZhDKbuR0ViWZwsJoXc3f7LIwOHDhAmzZt9OdjxowBoH///qxdu5Y+ffoQERHB5MmTCQ0NpX79+vz4449pGvbyk3yVnGanb7Sfn1+W+1JXqlSJEiVKcObMGdq1a4efn1+argpJSUncuHEjw3LGjx+vbwSQ3HLq7++Pm5c37u65fyEzJJ8d0lKdeDE4aLgXK54n9RH5i+XsoXsxbzQtX/XqF3lMtg2RHtk2REbssX2YEhOIuxmPweCAwSFfHaren6bxwot9iY+P57FHW+Lg4MDwESMZPPRlNE3jo1WrmTJ5Iis+WE79Bg2YOXsOvZ7qqa9r2XLlmTR5ClMmTeLloUN54cW+fPzJaiZMnIyjoxPvzpjB1StX8CtViiFDhmJwMGIwJL9HKd8v/d9MvodP9ezBxQsX9OePBDYDIDYhORmsVDmA/379DW+NHcsHy5dRpmxZVnz4EZ06P66/pvezz3H9xg3enTGDsNBQ6tarx9at31CqTGnuXmfG3PkLcXAw8sJzzxEfH0/7Dh1ZvHSZVb3/s/UbXhs5nLatH6No0aK80LcvU6bNyHA9DIYkNIOBoh5eODg6Wc9M0d05J5iVAbPK+X2hWWW95bR169b6bYrSM2LECEaMGJHdauU6Td1vjXJZs2bNaNq0KUuXLgWS+0aXK1eOESNGMG7cuDTxffr04c6dO2zbtk2f9sgjj1C3bl1Wrlxpcxn//vsv5cqVY+vWrXTr1o2TJ09Ss2ZNDhw4QKNGjQD4+eef6dy5M//++y+lS5fOVN2joqLw9PTkyNnLeZqcDhozhbIvxKBpCsOeO8x79SrRjtvu/2JR6CllJvrmddyLFZeDTGFFtg2RHtk2REbssX2YEuOJuxFK+fIVcHZxyZEyRe5TJLfgGhyMdh+cMz4ujgsXQnDx9sPB0fqOHNHRUdSvXIZbt2490Ci4luP81YcaUMTd4f4vyKI70SZeanj4getZ0OW7X5kxY8bw8ccfs27dOk6ePMkrr7xi1Te6X79+Vvf7ee211/jxxx+ZP38+p06dYurUqRw4cEA/QxATE8Obb75JcHAwISEhbN++ne7du1OlShU6deoEQI0aNejcuTNDhgxh3759/PHHH4wYMYJnn30204lpvpLydIP0wBJCCCGEECJHWK45tccDoEmTJtSsWZPly5fn8ZrmjXzXV+J+faMvXryIwXAvp37kkUfYsGEDEydOZMKECQQEBLB161b9HqcODg789ddfrFu3jsjISEqXLk3Hjh2ZMWOG1b1OP//8c0aMGEG7du0wGAw8/fTTLFmyJHdXPofk8EjUQgghhBCigOrWtQt/7Nljc95bb4/j7XHjbc4Ttpkhx2/7YikXYP/+/Q91y2m+S04h477Ru3btSjPtmWee4ZlnnrEZ7+rqyk8//XTfZXp7e7Nhw4Ys1TPfStNRO1/13BZCCCGEELlkxcqPiIuNtTmvmLd3LtdGiIzly+RU5DRJToUQQgghHkZlypTJ6yoUKmYMmO1wZaQ9yiyI5F0ojFIM5S6j/gshhBBCCCEKAmk5LeSUBpq0nAohhBBCCPHATMqAyQ63krFHmQWRvAuFkTlFc6k0nQohhBBCCCEKAGk5FUIIIYQQQohMMKNhtsO9Gu1RZkEkLaeFkOaYeop06xVCCCGEEELkb5KcFkIOONx7IidhhBBCCCFyRYf2bRn7xphcXWZISAguTkaOHjmSq8t9WFmuObXHQ0hy+pCQllMhhBBCiPxu9+5duDgZiYyMzNVl9nqqJxXKlcXby4OmjRvxxYYNaeK2bN5M3dq18HQvSqMG9fnxh++t5iulmDZ1ChXKlcXLw40nOnfkzJkzubUahUaTJk2oWbMmy5cvz+uq5AlJTgshq1RUWk6FEEIIIUQ6goOCqF2nDl98+RX7Dx6mX//+DHppAN9/960eExT0J/36vsCAgQPZu+8AXbt145leT3P82DE9Zv68uXywfBlLl33A73v+pGiRonTv+iRxcXF5sVp2Y8JgtwfA/v37OXHiBMOHD8/jNc0bkpwWQppKOVqv3EpGCCGEECK3JCUlMfq1UfiU8KZMKV+mTpmMUsnHYp9/9hmPBDajhLcX5f3L0K/vi4SHhwPJ3XM7dWgPgJ9PCVycjAwe9BIAZrOZ+fPmUrNGNTzcilClckVmzXzfarnnz5+nY4d2FPN0p0mjhgQHB2Wqvm+PG8/UadNp3vwRKleuzIiRo+jYqRNbt27VY5YvXUrHTp0Y88ZYqteowdRp02nQoAErVnwAJLeaLlu6hHHjJ9C1Wzfq1K3LqjVruXr1Kt98/fUDvZ/i4SLJaWEkraVCCCGEEHnis/WfYjQa2fNHEPPmL2TJ4kWsXv0JAIlJiUyZOpV9Bw7x1eYtXLwQwpDByQmov78/G7/cBMDfx04QcvFf5i9YCMCkdyYwb+4cxo9/h8NH/2bdp+vx8fW1Wu6UyZN4/fUx7Nt/kICAAPr1fZGkpKRsrcOtW7fw9i6mPw/eG0zbtu2sYtp36Mje4GAgOTEODQ21ivH09KRJkybs3RucrTrkV2al2e0h5FYyhVLaW5tKy6kQQgghCrZZi38gKjo215fr4e7KuNcez3R82bL+zJ03H03TqFqtGseP/c3SxYsZNGgwAwYM1OMqVarE/IWLaNE8kJiYGNzc3Ch2NyEs6eODl5cXANHR0SxbtpSFi5fQt18/ACpXrkyLFi2tljt6zBgef6ILAJMmT6FB/bqcPXOGatWrZ2l9N2/axMEDB1i+fIU+LSw0FB8f62TY19eXsLDQ5Pl3/02dMPv4+BIWGpql5YuHmySnhZ2chBFCCCFEIRAVHUtkVO4np1nVtFkztBQtBc0Cm7No0UJMJhNHjx7h3enT+evvv4i8eROz2QzApYsXqVGzps3yTp06SXx8PG3atM1wuXXq1NH/9itVCoDwiPAsJae7du1k6JBBfLDiQ2rWqpXp1z1MzCmuD83pcoUkp4WTVbcAyU6FEEIIUfB5uLsW6OXGxcXRtcsTtO/QkbXrPqVkiZJcvHSRrl2eICEhId3XubpkbvmOxns3urckx5bkNzN++203T/fswZx583mxb1+reb5+foSHh1lNCwsLw9fXL3n+3X/Dw8IodTcxBggPD6Nu/QaZroMQkpwWRpoMiCSEEEKIwiUrXWvz0v59+6ye790bTJUqAZw+fYrr16/z7nvv4+/vD8DBgwetYp2cnAAwmUz6tCoBAbi6urJz5w4qVhxklzrv3r2Lp3p05733ZzJ48JA08wObBbJzxw5GjnpNn7Zj+680CwwEoGLFivj5+bFz5w7q1a8PQFRUFPv372fIsFfsUue8YlYGzHa4J6k9yiyI5F0QQgghhBAih1y6dJG33nyDf06f5suNG1nxwXKGjxyJv385nJycWLF8GefOnePbbduY+f57Vq8tV648mqbx/XffERERQUxMDC4uLrwx9k3eGT+Oz9av5+zZs+zdG8yaNatzpL67du2kZ/duvDp8BD16PkVoaCihoaHcuHFDjxk+ciQ///wTixYu4PSpU8yYPo2DBw/yyiuvAskttSNGjmLWzPf5dts2jv39N4MGDqBUqVJ06949R+opHg6SnBZGaUdEEkIIIYQQueCFF/sSGxtHyxbNGf3aSIaPGMngwUMoWbIkH69azZb/bKFBvTrMmzubWbNnW722TJkyTJo8hUkTJ1CubGlGvzYKgAnvTOS10a8zffpU6tetzYsvPE/E3VvQPKjP1q/nzp07zJ0zmwrlyuqPPr176THNmz/Cuk8/45NVq2jSuCH//c9/2LR5C7Vq19Zj3hj7Jq+8Opzhr75Mi0cCuX07hq3fbMPFxSVH6plfmNDs9hCgKcuNl8QDi4qKwtPTkyNnL+Pu7pEndVDKzLC3ZuHXJwJNUxgOxbFwwBkiHX/Nk/qI/EUpM9E3r+NerDiaJuemxD2ybYj0yLYhMmKP7cOUGE/cjVDKl6+AcyFLbB4mCjCbkjA4GO2edsXHxXHhQggu3n44ODpbzYuOjqJ+5TLcunULD4/sH59bjvNn7GuLi1vOXxkZF5PEpKY7HrieBZ38yhRCGnLNqRBCCCGEEDnNcs2pPR4ATZo0oWbNmixfvjyP1zRvyIBIhZH0ChBCCCGEEEC3rl34Y88em/Peenscb48bn8s1EhnZv3//Q91yKsmpEEIIIYQQhdSKlR8RF2v7/rDFvL1zuTYFnwnscn2o6f4hDwVJTgullN16NZBuvUIIIYQQD6UyZcrkdRWEyDRJTgshzSD9eoUQQgghhMhpcp9T+5J3oTAyp/hbA2k5FUIIIYQQQuR30nJaCGma9Wi9QgghhBBCiAdnUgZMdmjltEeZBZG8Cw8ByU+FEEIIIYQQ+Z20nBZGaVpOpVuvEEIIIYQQD0qhYbZD04+S5iRAWk4LpbSbtiSnQgghhBD21qF9W8a+MSZXlxkSEoKLk5GjR47k6nKFsAdJTgszyUmFEEIIIQqM3bt34eJkJDIyMleX2eupnlQoVxZvLw+aNm7EFxs2pInbsnkzdWvXwtO9KI0a1OfHH763mq+UYtrUKVQoVxYvDzee6NyRM2fOWMXcuHGD/v36UrJ4MXxLFmfY0CHExMTYdf1ymuWaU3s8hCSnhZIMiCSEEEIIITIjOCiI2nXq8MWXX7H/4GH69e/PoJcG8P133+oxQUF/0q/vCwwYOJC9+w7QtVs3nun1NMePHdNj5s+bywfLl7F02Qf8vudPihYpSveuTxIXF6fHDOjfl5MnTvDdDz/yn61fs2fP77z6ysu5ur4if5PktJBTSH4qhBBCCJFbkpKSGP3aKHxKeFOmlC9Tp0xGqeTubJ9/9hmPBDajhLcX5f3L0K/vi4SHhwPJ3XM7dWgPgJ9PCVycjAwe9BIAZrOZ+fPmUrNGNTzcilClckVmzXzfarnnz5+nY4d2FPN0p0mjhgQHB2Wqvm+PG8/UadNp3vwRKleuzIiRo+jYqRNbt27VY5YvXUrHTp0Y88ZYqteowdRp02nQoAErVnwAJLeaLlu6hHHjJ9C1Wzfq1K3LqjVruXr1Kt98/TUAp06e5OeffmLFhx/StGkzWrRoycKFi9j01ZdcuXIl+294LjMrzW4PgCZNmlCzZk2WL1+ex2uaNyQ5LZTufayaZUAkJX18hRBCCCHs7bP1n2I0GtnzRxDz5i9kyeJFrF79CQCJSYlMmTqVfQcO8dXmLVy8EMKQwckJqL+/Pxu/3ATA38dOEHLxX+YvWAjApHcmMG/uHMaPf4fDR/9m3afr8fH1tVrulMmTeP31Mezbf5CAgAD69X2RpKSkbK3DrVu38PYupj8P3htM27btrGLad+jI3uBgIDkxDg0NtYrx9PSkSZMm7N0brJfh5eVFo0aN9Zi27dpjMBjYv29ftupZGO3fv58TJ04wfPjwvK5KnpDReh8a0oYqhBBCiIJr/KFviEyIzfXlejm5MrNht0zHly3rz9x589E0jarVqnH82N8sXbyYQYMGM2DAQD2uUqVKzF+4iBbNA4mJicHNzY1idxPCkj4+eHl5ARAdHc2yZUtZuHgJffv1A6By5cq0aNHSarmjx4zh8Se6ADBp8hQa1K/L2TNnqFa9epbWd/OmTRw8cIDly1fo08JCQ/HxsU6GfX19CQsLTZ5/99/UCbOPjy9hoaF6GSVL+ljNNxqNeHt7668vCEwYMNmhfc8eZRZEkpwWQiaTOa+rIIQQQgiRoyITYrkRfzuvq3FfTZs1sxr/o1lgcxYtWojJZOLo0SO8O306f/39F5E3b2I2Jx+zXbp4kRo1a9os79Spk8THx9OmTdsMl1unTh39b79SpQAIjwjPUnK6a9dOhg4ZxAcrPqRmrVqZfp0QOUWS00LIaHSwMdWM9OIWQgghREHl5eRaoJcbFxdH1y5P0L5DR9au+5SSJUpy8dJFunZ5goSEhHRf5+qSueU7Gh31vy3JsSX5zYzfftvN0z17MGfefF7s29dqnq+fH+HhYVbTwsLC8PX1S55/99/wsDBK3U2MAcLDw6hbv4FeRkREuFUZSUlJ3LhxQ399QZDy+tCcLldIclooaQ62RuuVa06FEEIIUXBlpWttXkp9/eTevcFUqRLA6dOnuH79Ou++9z7+/v4AHDx40CrWyckJAJPJpE+rEhCAq6srO3fuoGLFQXap8+7du3iqR3fee38mgwcPSTM/sFkgO3fsYOSo1/RpO7b/SrPAQAAqVqyIn58fO3fuoF79+gBERUWxf/9+hgx7RS8jMjKSQ4cO0rBhIwB27tyB2WymSdOmdlkvezBjwGyHBh97lFkQybtQCBmU3EpGCCGEECIvXLp0kbfefIN/Tp/my40bWfHBcoaPHIm/fzmcnJxYsXwZ586d49tt25j5/ntWry1XrjyapvH9d98RERFBTEwMLi4uvDH2Td4ZP47P1q/n7Nmz7N0bzJo1q3Okvrt27aRn9268OnwEPXo+RWhoKKGhody4cUOPGT5yJD///BOLFi7g9KlTzJg+jYMHD/LKK68CyS21I0aOYtbM9/l22zaO/f03gwYOoFSpUnTr3h2A6jVq0LFTJ159+WX279/Hn3/+weuvvcYzvftQunTpHFkXUfBJcloIme4k6n+rFP8XQgghhBD29cKLfYmNjaNli+aMfm0kw0eMZPDgIZQsWZKPV61my3+20KBeHebNnc2s2bOtXlumTBkmTZ7CpIkTKFe2NKNfGwXAhHcm8tro15k+fSr169bmxReeJyI8PO3Cs+Gz9eu5c+cOc+fMpkK5svqjT+9eekzz5o+w7tPP+GTVKpo0bsh///MfNm3eQq3atfWYN8a+ySuvDmf4qy/T4pFAbt+OYes323BxcdFj1q5bT9Vq1Xi8U0d6dOvKIy1a8MGKlTmyHrnFpDS7PQRoSsk9RnJKVFQUnp6eHDl7GXd3jzypg1Jmho+YQ4mBYWgotNPxLO19jBvGX1Gac57USeQfSpmJvnkd92LF0TQ5NyXukW1DpEe2DZERe2wfpsR44m6EUr58BZxTJDaiYFGA2ZSEwcFo94588XFxXLgQgou3Hw6O1se70dFR1K9chlu3buHhkf3jc8tx/iu/P4Wzm+P9X5BF8TGJrHj0Pw9cz4JOrjkthFKOEHevX6+cgxBCCCGEEOJByIBI9iWnQAshq+RUk669QgghhBAPq25du1C8mKfNx+xZM/O6ekJYkZbTQkiTUZCEEEIIIQSwYuVHxMXG2pxXzNs7l2tT8CllwKxyvn1P2aHMgkiS08LIILeSEUIIIYQQyYMsCVFQSHJaCKXu1ptMklMhhBBCCCEehAkNkx16KdqjzIJI2o8LIQfne6OU3Rs4T5JTIYQQQgghRP4lLaeFkObidO+JA0hiKoQQQgghxIMzK/uMrGuWw3VAWk4LJWU0oszJf2sOd/+VBFUIIYQQQoh8rUmTJtSsWZPly5fndVXyhLScFkIOmkHvzqu5Q3yiiaCw8zg7FqeUW/JNfYu5uGI0OOi9263vjSqEEEIIIYRIzWyn0XotZe7fvx8PD48cL7+gkOS0ECrm7Ub83b8NLoqlodW4mvRp8kYfmf7rynkWy43qFQoaGlVc6/K/2KMA9PEZhYuhaB7XSgghhBB5qUP7ttSrV5958xfk2jJDQkKoXrUKe/cdoF79+rm2XCHsQbr1FkLOjtbnHG6GZe4cRILJZI/qFEoKpSemAL/c+DIPayOEEEKIwmD37l24OBmJjIzM1WX2eqonFcqVxdvLg6aNG/HFhg1p4rZs3kzd2rXwdC9Kowb1+fGH763mK6WYNnUKFcqVxcvDjSc6d+TMmTNWMTdu3KB/v76ULF4M35LFGTZ0CDExMVYxf//1F23bPIane1EqV6rA/Hlzc36lH4AZzW4PIclpoVTMq4jV86RELVObe1xSon0q9BBwNrjmdRWEEEIIIbIsOCiI2nXq8MWXX7H/4GH69e/PoJcG8P133+oxQUF/0q/vCwwYOJC9+w7QtVs3nun1NMePHdNj5s+bywfLl7F02Qf8vudPihYpSveuTxIXF6fHDOjfl5MnTvDdDz/yn61fs2fP77z6ysv6/KioKJ7s8jjlypUnKHgfM2fO5t0Z01m16uPceTNEnpPktBBydDTy9+YKXPjdh6QrGsRmbjAks1IUN/pR2aU2j3p2tZrn6eD9wPUq41QJR83J5rwSxlJZLs+oOWY6trxzNRq7t71vnL9zwH1jahdtxpPFB9C+WG99mpPmkum6CCGEEKLwSkpKYvRro/Ap4U2ZUr5MnTIZpZKPxT7/7DMeCWxGCW8vyvuXoV/fFwkPDweSu+d26tAeAD+fErg4GRk86CUAzGYz8+fNpWaNani4FaFK5YrMmvm+1XLPnz9Pxw7tKObpTpNGDQkODspUfd8eN56p06bTvPkjVK5cmREjR9GxUye2bt2qxyxfupSOnTox5o2xVK9Rg6nTptOgQQNWrPgASG41XbZ0CePGT6Brt27UqVuXVWvWcvXqVb75+msATp08yc8//cSKDz+kadNmtGjRkoULF7Hpqy+5cuUKABu/2EBCQgIffbyKmrVq0btPH4YPH8GSRYuy92HYgUlpdnsIuea0ULJs2nciXIjaa8Tl+k0m/jwHs5Y2wXz1py363zXKB/Bkhbr680qute1d1VxXq2izHCvrtikqxTMZDVkIIYQQ8Nn6Txkw8CX2/BHEwYMHGf7qy/iXK8egQYNJTEpkytSpBFStRkREOG+/OZYhg1/i62++xd/fn41fbuLZPs/w97ETuHt44Oqa3DNr0jsTWL36E+bMnc8jLVoQGnqV06dPWy13yuRJzJo9mypVApgyeRL9+r7IiZOnMRqzfrh/69Ytqlevrj8P3hvMa6+Ntopp36Ej2775BkhOjENDQ2nbtp0+39PTkyZNmrB3bzB9+vQheG8wXl5eNGrUWI9p2649BoOB/fv20b1HD4KDg2nZ8lGcnO41ZrTv2JF58+Zy8+ZNihWT8VEKO0lOCyFHV+vWyUSzxjeXDxOrPDBqDtwbmFcjTotHu/tfZOJt/hcdhrODkSSzmeLObiSaTbjcfe7u6ML529co6eyOq4MjcaZEnAxGrsRG4uPijpPByI3427g7JrcimpQZDQ1HgwOJZhNOBiOXY29S1OiMt1NREs0mNC15dOE7SQm4ODiiUDgbHDErMw53hxzOryMJayk6HihJToUQQgi7coh+C1Rk7i9Y88LkPifT4WXL+jN33nw0TaNqtWocP/Y3SxcvZtCgwQwYMFCPq1SpEvMXLqJF80BiYmJwc3OjmHdy8lXSxwcvLy8AoqOjWbZsKQsXL6Fvv34AVK5cmRYtWlotd/SYMTz+RBcAJk2eQoP6dTl75gzVUiSZmbF50yYOHjjA8uUr9GlhoaH4+Phaxfn6+hIWFpo8/+6/Pr7WMT4+voSFhupllCzpYzXfaDTi7e1tVU6FChWtl3N3uWGhofkiObX3aL0PO0lO7SAhLp54x7g00zWDwepMUHxc2piciHUwJCdzGvfa8zp6vmfztZ0DU5Rz9/FtWCV+uF4RDQfg3iBJ90u/UqaQqWMdKYXGvToaDPeilVKoDApv7VudZ/yTz7IlJCSgzOZ0Y52cnfVkNjExEXMGgzxlNzYpKQlTUhKJ5ni9LklJSfpnZCs2PY5OThgMhhyPNTo64uDgkCZWKUViQiLxcfF6HVPGmkwmkhLTv/bYwWjUz8BmJdZsNpOYkJDjsUopEuLjcyTW4OCAo6Njjsfm1vc+S7Hx8aT+0unbRnwCLi4uGcbeK1jD2dlZf3q/76dzinLzKjY39xE5EZvb+whbHIwO+t+yj3h49xH3gq2/9/HxCWl+V9KLzcp3WSkwKzNmdS/eoCLRzDfSfb29KANW9bDQNIN+7KOU0k9UN2nWFIXSu/I2adaMRYsWYjKZOHr0CO9On85ff/9F5M2bmO++HxcuhlCjRk39NaQo98TJE8THx9O6des09dC0ewlN7dq19fk+fncTuvAwAqpVzbC+Ke3etYuhQwbxwYqV1KxVS48FUFh/HmZ9+r1yFOpejEp+rt2dlnp5Kd8js7r7OpW8PPPdBo6U21Tq7SH1+6THpdpHJMSl//0T+U++TE6XL1/O3LlzCQ0NpV69eixdupSmTZumG79p0yYmTZpESEgIAQEBzJ49myeeeMJm7Msvv8yHH37IwoULGT16tD69QoUKXLhwwSp25syZjBs3Lsv1HztyqM0uFHXqNWTUm+P152NeHUxCgu0vTNXqNXlz4jT9+bjRw4mJibIZW6FiZd6ZMUt/fmBvEGB9PabZnPyl1QDNYDuNVIAywxPeZ7kRq7EnsrTVj1VSYqK+E01N07QMY+PNF7gZnvyeGDSNcinOioWHhREbe8dmuQC/GTQ9OV29cikH9wWnG7ts1Xr9x+2z1R/x5++70o1d8MEq3D08Afjqs3Xs2v5TurEzF35AiZIlAfjvVxv4+fttGFw0yryUfB+q0yH/46vvNwMwbdYCSpf1B+D7r//Dtv9uSrfcCdNnUrFSFQC2//gdmzd+lm7s2AlTqVYz+Yfi952/smHdJ+nGjnxjHHUbNAJg7597WPtR8o2cNU2jQrlyhFy8qO/Ih414ncaBjwBweP9ePly2MN1yBwwdTotWrQE4/tcRls6flW7s8/0H0aZDZwD+d+ok896fmm5sr2dfpNOT3QG4EHKO9yePTze2a89n6PZ08vW+Vy//y5RxY9KN7fhEV555Pvks8/Vr1xj/+qvpxrZu14kXBg4GICY6ijGvDk439pFHWzNw2HAAEuLjGTG4b7qxjZoG8vKoN/TnGcXm1j5iytuvc/1ahFWMZduITzIzbfa9WyC8N2kcV6/8a7Pc4iVKMmvRB/rzuTMmE3L+rM1YNzcPFq68t80unvMe/5w6YTPWycmZ5avvfRdWLp7P30cP2YwF+Pize9+x/LSPSE9+3kfYMmz4aKrePbiVfcTDu4+wKFW6LNPn3NsGZk6ZgLPRYPW7YvEg+4ioqFtcvfwvBod7J0d8XYw4aC6gaXp3V0hOkM2m9E+wuBa5N1BkQkJChidjXIoU0RM4S6xJGQm7fj5NrH+5CvpJnhs3rhMddYu4uDhuR0dzMeRe/LXwMADi4uLo2uUJWj32GLNmzcK7WDGuXL3K4EGDuBgSQlFXV8JCr1ot41ZkJJE3rgNw5d9LGFLl/6VKl723bvHx+nKjopI/66tXLuvT/EqVxsUl+X2Ljo7ixvVrVmXt27ePl4cN4+1x43jq6V769Nu3YyhRogSnT560Wq///XOaYsWKcef2bXx9/QC4eCGEhLjYuxEal//9l2rVqnMx5DyODg6E330vAGLvxHLl8iVu3LiBg0HjYsh53NyKciHkPBdDzuNdvAQeHp6E3X1NYkK81fJTcnN31/9OvY9IyuDzzg4zGmY7XB8qo/Umy3fJ6ZdffsmYMWNYuXIlzZo1Y9GiRXTq1InTp0/j4+OTJv7PP//kueeeY+bMmTz55JNs2LCBHj16cOjQIWrXtr5m8r///S/BwcGULl3a5rKnT5/OkCFD9OfuKTb0rHAlHkfSnmEvpsVQSQvVnxclDiO2z/56cdsq1k2LxYztHyBP7Y4ea0bhRBKaciTRbNCbMzO7uVvimnlFsOdmaTSrs1wqw3JSxlpaYS2SEsFAcrJqwIAz93YURs2kz7PFmSR9/byJoUg67wNARS0MFy35LG1xojKMraCF46kl70BLaLfuG+ujJX+mJUmO1ZSG4e46O2om/fXltAjK3R2syUeLzLDcclyjkuYGgO99Ystq1/T34SQ3M4wto13XY89rN/RYDQ1nEilCvH4Gs7R2Q4+9kiLWlpSx17XrGcb6cVOPva1dyzDWV4vUY01kHOuTItaoRWQYW5JbeqzbfepbQrsXe0uLzjC2OFF6bJwWn2GsN9bf+4xic2MfAeBOLLGpYi3bhrMWbxXrod3hVjrluhNrFeup3Ul3/dw061gvbqcb64yyii2mZfy9Txmbn/YR6cnP+whbSmk38dMi8dGSuCr7CODh3EdYeKSK9dDuAM5Wvyspy8nOPiJOMxFx91DdkKLMiLjkEw0GTaOybzl9enhYOLdjY0lPgF/5e2WERxCTwQnxyr7lMNxtrbsecZ2o2OTbnBhstDI6aUkY7x6/GDFhuNtK+Ndff1nFHz16hCpVKnP+9DGuX7/OlHfGU8Qt+RjTMtqthsKA0m8HaDTF4UwiRi2JShXK4+LiQnBwEL39y1rXgST9mMqIWV9uyn/1YxWScCbx7t8mqzru3buXl19+hbFj3+C5Pr1x0u7FxpNE/fr1CQ4OYuCA/vprgv78gwb16+OIieoVy+Ln58cfu3fxTO/kk0MxMdEcOXKEZ5/tgwFFgwb1uXXrFscO7aVRw4YkaUnsCw7CbDZTv26d5Jj69Vm4aBGmxAQcMeFMIrt//ZmqAQEU8/QgvX58RswYMeGvXYNU+4hEcjY5FfalqdSnufJYs2bNaNKkCcuWLQOSm+b9/f0ZOXKkzVbMPn36cPv2bb799t5w14GBgdSvX5+VK1fq0y5fvkyzZs346aef6NKlC6NHj07Tcpp6WlZFRUXh6elJ2IlgPNzd0sw3GKxbF+My6GaQ3VizUny8/QQrf0ze2XkcDaeGWbHw26GYUCQqM56uRUhSZoyagW4/7NTLqeNVhBmNP7/7zEiieSYOTo44agY0TSM+Pp5Es5lEsxlng8O9riF3/y3ieq87Tmx8PLHmMI4kLsagQXGtEVUcniJJKYyahotLcrc2s1IkJCSASq67pcwtESFsDk8+O2bQDPynUScg+SympRXYFmdnJ6tueCZTBklvNmOTkpJISjIRZ45n+c0vAKjgWIanPTqkG5seJydHq254ORXr6Gi06rJniTUrxbVbdyjhWUT/8U0ZazKZSEzMoCug0cGqy15mY81mMwkJ6Xfvy26sUor4+PS792Ul1sHBYNUNL6dic+N7n9XY+Pj4ND32LNtGSa8iuKbq1ptB7740XfYy+n66uOR9bG7uI3IiNrf3EbY4GB24HhWLTzE3lNks+4gcji0o+wiL1N/72Lg4IiKtf1fSi83sdzku0cS56/FUKFfO6vttVWer7p4ZH8pmJVbT7t1+LzuxbTt04uChwwx+aSBDBw/i0JEjDHtlOPPmzOLpHt0pW7EKo0YMZ9iQwRw7fpy3x7/DP//7Hwf3BVG/Xj0uX75M+cpVWfPxRzzxeCdcXF0oWtSN6e++x5JlH7Bg3hxaNG9OxLVrHD9xgsEvDeRCyAUqVq3OoX1B1KtXD4DIyEiK+5Zm+88/0vqxVmnqm9ylNvnvnbt2063n04wa8Sojh7+qxzo7OeHt7Y1C8cefwbRp35GZ787gicc78+WmTcycPZcDe/+kTu3aaMDsufOYNXc+a1Z9RMWKFZg8dTp//X2MY0cP6b8rXbp1JywsgpXLl5CQmMhLg4fRqFFDPv90LZA8EFONOvXo0L49b48dw/HjJ3hp6MssmDeHIXdHLrYlPj6ekAsXqVjcGScHzWofERUdg2/NQG7duoWHh0eGn2lGLMf5z2zvh2NR23efeBCJtxPY1O7TB65nQZevWk4TEhI4ePAg48ffa4o3GAy0b9+eoCDbw2EHBQUxZox1l51OqYa/NpvN9O3blzfffJNad/vP2zJr1ixmzJhBuXLleP7553n99dezNcKZi4tTujtT67j7x2Qn1mh0AAcDmMygJb+HrikSRwAnLfmgxHIgA5CAIwaH8qAuAiZcHB3QtHvdaZydnclsLVydnVFmV4ym5PIdjZrVAa+FQdNwcU5baknXohi0tBeGp/zxvB9HR0ccM3m3mazEGi3XKJnvdZE2Gh1sfkbGFNczZbpcO8aalcIpNhEXF+c0BxEADg4O+gHr/WQl1mAwZHobzkqsdvdER0GJBft977MS62zjO2fZNlLPsxWbnqx8P/NDrN33EYUkNuUBuuwj7BsL+XcfkVGsk1P6vyspZeX7qZF8jHC/MoFMxeRmbL8XXyAuLo7Alq1wcHDgtRHDGTZ4EJqmsXbVR0yYPIWlyz+gYYP6zJs9k25P9cJA8rr6ly3LtMmTGDdxEgOHDKXfiy+w9pOPmfzOBByNjkydPoMrV65SqpQfLw8ZYtVLTePe+5XyX1vrkXw9Z/Lf6z/7nDt37jBrzjxmzZmnxzzW6lF2/fozGhotH2nOhk/XMnHKNN6ZPIWAKlXYuvkr6qbopfjW2De4ffsOLw8fSWRkJC1bPMK332yliKurXs/P161lxGuv067TExgMBp7u2YMlC+frdSzm5cXP333L8NdG0ziwBSVKFGfyO+MZNnhQhu+/luKdSL2PSEhM/+SQyH/yVXJ67do1TCYTvqlG+vL19eXUqVM2XxMaGmozPjT0XjeS2bNnYzQaGTVqVLrLHjVqFA0bNsTb25s///yT8ePHc/XqVRYsWJDua+Lj45MHDbjL0r/frO5/ts1e9OU6OiQnp6mnZyDWZALunWlSpokoh/SvF7qflI3yyRfIZ/498TQ6WXUPyqv3MyMpq5R8IX/+q2NqZqXuDjSQ/+sqcpdsGyI9sm2IjNhj+zCr5CMAy6Mg2fnrz/rfHyxbYjVPAc8+24dnn+1jNd2cEKvPB5j4zngmvjPe6nWawcCE8W8zYfzbacosX6F8mjI8vbzSTEvPmk8+Zs0nH9ucl/K1vXo9Ta9eT6c7H01j2tTJTJs6WZ+UeHcgOUtcMW9vPl+/LsPl1Klbh992bk9/OenUU2H7eCyDxvpsMSs7XXMq9zkF8llyag8HDx5k8eLFHDp0KMNbkqRsfa1bty5OTk4MGzaMmTNnpnsGcebMmUybNi3N9IjIGOLyqHu7WSli4xOSW05JTqCSkkyE34yxGZ+UdC+BjY5LICHxJppmmXabm1G2X5cZ8dwh0SF5p3Q7KYHwO5kvyyvJgaQUyXV69c9LCSqRxLvv322VkC/rmJpZKW7FxKLI2hlhUfjJtiHSI9uGyIg9to9Ek8JsdiDJbLY6FhAFi0JhMinAZNWyaQ9JZjNms+L6rTs4OlgvKzom/x+fiXvyVXJaokQJHBwcCAsLs5oeFhaGn5+fzdf4+fllGP/7778THh5OuXL3Lpw3mUy88cYbLFq0iJCQEJvlNmvWjKSkJEJCQqhWrZrNmPHjx1sltVFRUfj7+1PSy83mNae5wawURV2Sr2dSAFpyl1OfYrbrYzSm6Dpr0HBymgpmy7W9Xum+LjPizPFciE3u0lXU6IiPc+bLKpLkjPFSct3quhd/oHrYS4I5EceE5Dq6OhnzZR1Ts1zXW7KYmxxkCiuybYj0yLYhMmKP7SMu0UT0jQSMBgNGB7n344N6omt3ft/zh815499+iwnj3rLj0k04ZrJ7/4MwGgwYDBrFPYvg4mi9PJccznbkPqf2la+SUycnJxo1asT27dvp0aMHkHy96Pbt2xkxYoTN1zRv3pzt27dbDWT0yy+/0Lx5cwD69u1L+/btrV7TqVMn+vbty8CBA0nPkSNHMBgMNkcItnB2drbZqmrQ8vbssq0W4szUJ85sxmAoglmVAHUNtIQHWg/ra0ZVlq/dsJxlMxoM+fKAyMGQ/fXLS9rd608KSn1F7pFtQ6RHtg2RkZzePgx3B+5JPfK/yJ5VKz8gNtb2fW69vYvZ7T1W3LsW1N6fo2VbsbUdpr79jsjf8lVyCsnda/v370/jxo1p2rQpixYt4vbt23oi2a9fP8qUKcPMmTMBeO2113jssceYP38+Xbp0YePGjRw4cICPPvoIgOLFi1O8eHGrZTg6OuLn56e3iAYFBbF3717atGmDu7s7QUFBvP7667z44osUK1YsF9c+Z2T3tyFev8G8J3AN1B3MSbav09UMTwMeJO8K7gARgP/d51dQ5p8wYqKcMYZihmjMxKLMJVDm70m+B6uNkRY1d6A4qBBcUAwr60ol13CcDM6Yk5zvLvcR0GqBstQ1GmXelDwNBVwHFQYYADPgjGZohzJvRzO0RJm3p1pmFeAWmlYfMKJUOJpW9279QoBSKLX37iBRgFYSTWuAUtdQ6hyoooABpW5jThqFZugCFAOyOorbRZT517vLcAMVg2boBppvxi+7r1Qbg1I4OsSCKnKfGwOl83oAigDlM+wmL4QQQoj8oUyZMnldhUJFrjm1r3yXnPbp04eIiAgmT55MaGgo9evX58cff9QHPbp48aLVCLOPPPIIGzZsYOLEiUyYMIGAgAC2bt2a5h6nGXF2dmbjxo1MnTqV+Ph4KlasyOuvv55mFOACxbJ9a1o2RhNI//5fFsq8JVMlFTNEA+CsRd5NTMFmYgqgooHou080KrmGA+Cg3bvFgTL/Cfxp47XHU02wXKMSry83TWIKoM4k/6N+uTdJHbRdPwAVgVLJgx1oCixvrlJJd5fxXfqvzSwVc7esbx68LBvcXMxgtnXHtszTDG1B65FTVRJCCCGEEECTJk1wcHBg+PDhDB8+PK+rk+vyXXIKMGLEiHS78e7atSvNtGeeeYZnnnkm0+Wnvs60YcOGBAcHZ6WK+Vpyd4YHOftSEriaQ7VJlvrG3IVBynf4YRuuQalT0tVKCCGEEA8dMxpmOxwFWcrcv3+/3OdUFGbJPf6zQjMMQpneAuJB8wIVaSOoJJrWAlAodRkIu9s11gG4gTL/9mDVTpcBzdCc5AQalDqmt37el1Yb1LF05pVE06qizH+gGToBDijzL6BVS/sarT6oI3efWLoop7j+VPNE01pZT7sPpXaBupVqOWXQtAZYf34PluQrZSY2IR7HIs4puuVmvkxl/oXk9c2j4aiFEEIIIUShJclpIfSgAxJomoZmnJv5eFvTDL1INN/iaNy7AJQw1qamS/9Ml5lkNvH2/5KvwazlXowZVZums+y2mS4zMzRDnxR/d844VinQ7t4XTPPFYOye/eXSLtuvzQqlFHGJMXgY3LJ1zahSv4FKBEz3jRVCCCGEKGzkmlP7kjGLCystxb951qP23pfsQbr15tcOwVqKEYXND03HXtlxCiGEEEII+5DktBBK2yCWN+mddctc1uqQ8mbNKr9mpw8ly+fysCTjQgghROa1bt+R0W+MzdVlhoRcQHNy5ciRo7m63IeVpeXUHg8hyWmhVBju55RyHQrjYEoFV9avUxVCCCFE5uza/RuakyuRkZG5tkxLcpv6Ebx3r1Xcps1bqF67Hi7uXtRp0Jjvf/gx1+ooHh6SnBZKWjp/p9W/aiX979alHvSemunXI6sJppZDXYLtzXC3nvm5jjmrEJz5EEIIIUQav/74PVcvntcfjRo21Of9GRTEc337M2hgfw7vC6ZHt6706NWbY8dS38qv8JOWU/uS5LQw0vT/oe5zm1O/Iq7635U83HK4Gg/SrTfFK/N13nf3fc7flcxB0nIqhBBCZCQpKYkRr43Gs4QvJUqVZdKUafpxwvrPNtA4sAXu3iXx86/A8337Ex6efF/3kJALtOnQCYBiPqXQnFwZMGgIAGazmTnz5lOlRi2c3TwpVzmA92bOtlruufPnadOhE0U8vanXqClBWbxNYnFvb/z8/PSHo6OjPm/x0uV07tSRN98YQ40a1ZkxbQoNG9Rn2YqV2X6fCipJTu1LktNCyKBpVsmSMqefSFjdqzPHE6wHSE61lC2n+dcDDoxcAFl2GXLNqRBCCGHLuvWfYzQa2ffH7yyeP5cFi5ewavUaABKTEpkxdTJHD+xj6+YvCblwgQGDhwLg71+WLV9+AcDpY39x9eJ5Fi+YB8D4dyYxa+58Jo0fz4mjh9nw6Vp8fX2slvvO5KmMfX00R/bvpWpAFZ7r25+kpMzf+q3b073wKVOOlq3b8s22b63mBe3dS/u2baymderQgaBg666/QjwouZVMIZQ6YYqNTX/H5JAiON+lG3dHGjbn7/QUeJi69Vo8bOsrhBAir80auJKo69G5vlyP4u6MW/NypuP9y5Zl4by5aJpGtWpV+fvYcRYuXsqQQS/x0oB7t9WrVKkiSxbOp0nzlsTExODm5oa3tzcAPj4l8fLyAiA6OprFy5azbPFC+vd7EYDKlSvRskULq+WOHTOaLk88DsC0yZOoVb8hZ86cpXr1ahnW182tKPPnzKLFI80xGAxs+c9WevTqzdbNX9Gt65MAhIaG4etjnQz7+voQGhaW6felsFCA2Q6XOcmRVTJJTgshLQtfmJSJbE63nFqPuJv1svP0LjiZ9PB1cn3omoqFEELkE1HXo4mMyP3kNKsCmzW16gHWPLAZ8xctxmQyceToUaZOf4+jf//FzZuRmM3JTQMXL16iZs0aNss7eeoU8fHxtGvTxuZ8i7p1aut/lyrlB0B4RMR9k9MSJUowZvRr+vMmjRtz5epV5i5YqCenQuQWSU4fctYDD+V86fdkvXQDGiZUvr6eU3voWk6lW68QQoi84VHcvUAvNy4ujk5dutGpQ3s+X7eGkiVKcvHSJTp16UpCQkK6r3N1cU13XkqOxnvXiFqSY0vym1XNmjbhl+079Od+fr6E3b021iIsLBw/35weTDP/s9f1oXLNaTJJTgshLcWVxPfbzg0pu/Xa8ZrT7CRvckdNIYQQQlhkpWttXtq7b7/V8+C9+wioUoVTp09z/fp1Zr03A39/fwAOHDxkFevklJxgmkwmfVpAQBVcXV3ZvnMngysOtHPtkx05+hel/Pz0582bNWP7jl2MHjVSn/bL9u00D2yWK/URDw9JTgsh61GuMs5Ore4nmsO56YOe/9E0Lb8P1fsQtpze/VSVnDIQQgghbLl46RJj3nyLYYMHc+jwYZZ+sIL5c2ZRzt8fJycnli5fwctDh3Ds+HFmvD/T6rXly5VD0zS+/e4Hnni8E66urri5ufH22Dd4a/w7ODk60eKR5kRci+D4iZMMGjjggeu77tPPcHJypEH9+gD8Z+vXrF67jlUfrtBjXhs5nMfadWT+wkV0efxxNn61iQMHD/HRB8sfePkFjbSc2pckp4WQlmpEpIQEUzqR9+7TCfYYeOjBuvXqLaf5OEHNyvW9hcPDd5WtEEIIkRX9XnyB2Ng4mrZ4FAcHB14bMZyhgwehaRprV33EhMlTWLL8Axo2qM+82TPp9lQv/bVlypRh2uRJjJs4iYFDhtLvxRdY+8nHTHpnPEajkcnTp3PlylVKlfLj5SFDcqzOM96fxYWLFzEajVSvVpUvP19Pr6ef0uc/0rw5Gz5dy8Qp05gwaQoBVaqwdfNX1K5dK8fqIARIcloopU6XYu8kZio453PAB+3Wa2mVzL/0VC0fJ9A562FLxoUQQojM2/Xrz/rfK5YtSTP/uWf78NyzfaymqYRYq+eT3hnPpHfGW00zGAy8M/5t3hn/dpoyK1Qon6YMLy+vNNPS07/fi/oowBl5ptfTPNPr6UyVWZhJy6l9yX1OCyGrhlMt48TJntecPni3Xstf+Tjx0/J/Ap2zZEAkIYQQQghhH5KcFkqZTwtTbgD57brJe91687QaGbrXyTUfV1IIIYQQD63Hu3bHrVgJm4/3Z83J6+oVOJaWU3s8hHTrLZRSXXKK2ZTZltMcr0mKv7N3K5nkV+bnxO9huwZTxlAWQgghCpJVKz8gNjbO5jxv72K5XBshMibJaSGUultvZuV8t94HHBDJMjBszlTHLh6+c1wPWzIuhBBCFGxlypTJ6yoUKkppKDu0ctqjzIJIuvUWQobUTaeZjM35dOPBBkSyvD4/jzX00N5KRgghhBBCiBwmLacPichrMXiVcEszPeV9TvPbLVssZ04KQuKX/2uYU2RAJCGEEEI8vMxomO1wst4eZRZE0nJaCGlWraHJf3/87k82Yw3kTstp9rr15v+RcPWW03yW2OeGh3GdhRBCCCGE/UhyWgjZ6tUb/Os/6cTeCzbl9DWnD9hl+OG7h2hB8GAnHIQQQgghCjJ7j9bbpEkTatasyfLly/N4TfOGdOsthKzSh7tPEuJN942178Wd2Wg5vftvfu5AatAe5mtOH5Z1FkIIIYTIHfv378fDwyOvq5FnJDkthLRsDohk3/uJPki33vycBBWEOgohhBBCiJwgo/Xal3TrLYSysmmnHBDJHumVlgMXd+fnXr0P325EWk6FEEKI9LRu35HRb4zN1WWGhFxAc3LlyJGjubpcIexBktNCKCv3OTXY8ZrTlLJTsqFAtErm/0GbcpYkp0IIIYS97Nr9G5qTK5GRkbm2TEtym/oRvHevVdymzVuoXrseLu5e1GnQmO9/+NFqvlKKyVOnU6pcRVw9itGh8xP878yZXFuP3GLva04fdpKcFkJZ6NWbin3aTrNbtqFAjNabLH8n0DlJdpxCCCFEYfTrj99z9eJ5/dGoYUN93p9BQTzXtz+DBvbn8L5genTrSo9evTl27LgeM2fefJYs/4CVy5awd89vFC1SlCe7dicuLi4vVkcUUJKcFkKprznNaEAhu19zem/I3WwXkb9H6727gvm6jvbyMK6zEEIIkbGkpCRGvDYazxK+lChVlklTpunHMus/20DjwBa4e5fEz78Cz/ftT3h4OJDcgtmmQycAivmUQnNyZcCgIQCYzWbmzJtPlRq1cHbzpFzlAN6bOdtquefOn6dNh04U8fSmXqOmBAUHZ6nexb298fPz0x+Ojo76vMVLl9O5U0fefGMMNWpUZ8a0KTRsUJ9lK1YCycdqi5YuZ+L4t+nerSt169Zh3ZpVXLl6la1ff5O9NzKfslxzao+HkOS0UNJSPUvIIIlIuQGY7ZBgPcg1p9lvc809D99uRLr1CiGEEBlZt/5zjEYj+/74ncXz57Jg8RJWrV4DQGJSIjOmTubogX1s3fwlIRcuMGDwUAD8/cuy5csvADh97C+uXjzP4gXzABj/ziRmzZ3PpPHjOXH0MBs+XYuvr4/Vct+ZPJWxr4/myP69VA2ownN9+5OUlJTpend7uhc+ZcrRsnVbvtn2rdW8oL17ad+2jdW0Th06EBSc3PX3/PkQQkNDad+2rT7f09OTpk2aEJSqe7AQGZHReguh9Lr1mpLMOBitz0dYtZzatVtvdl6Z/685tbRS2+e9y48kORVCCJE3xn21nVt3cr+LqGcRF2b1bpfpeP+yZVk4by6aplGtWlX+PnachYuXMmTQS7w0oL8eV6lSRZYsnE+T5i2JiYnBzc0Nb29vAHx8SuLl5QVAdHQ0i//P3nnHx1Gcj/uZ3b2m3mzJvYMxxQZcIQkBDHboBAghtDj8ICSYQEwJEExLwEACMQEHAgFCEvhCSAgJJYBjOhgwGNs0A65yk2RJVteV3Z3fH6s73Ul3J+mkU7Hm4SN8u/vu7Oze7Ny8877zvvct4757fsf5550DwIQJ4/nG4YfHXPfKRZdz/HHfAeDmGxaz/7RD2LBhI5Mn75u0vllZmdx15+0cftgcNE3jn888yymnf49n//F3TjrxBADKysopHhqrDBcXD6WsvNw5Xl4W2RfN0KFDKS8r7/SzGwjINK0PVZZTB6Wc7oXEuPVGheNtag6Sne1NKJtOz9RUFEwxADxmeyIasUKhUCgUio6pbfJT1djc19XokNmzZsaMr+bMnsVdS+/BsizWrF3LTbfcytpP1rFnTw227Sy+Ki3dxpQp+8Ut74v16wkEAhx95JFxj4c56MADIp+HDSsBoGL37g6V06KiIhZdfllke8b06ezctYvf3P27iHKqUPQWSjndC2kItLpwNE/II/Oz3UCslTRM+u1g3QiINIAi4fZn665CoVAoFHsDuRnejoX68XX9fj/zjj+JecfM5fHHHmVI0RBKt21j3vEnEgwGE57n8/o6Vb7LaF0jGvHsspNFHknMrJkzWL7i1ch2SUkx5S1rY8OUl1dQUlzsHC8uiewbNmxYRKaiooJp0w5KqQ79FUl6DCdqJOmglNO9kI931rRuRCmkQmuvnOoxAZHSt+Y0Jctpy7+Dx2V2IKDcehUKhULRN3TFtbYvef+DVTHb773/AZMmTmT9l19SVVXF7bf+ilGjRgHw4UerY2TdbkfBtCwrsm/SpIn4fD5WvPYa/2/cgjTX3mHN2nUMKymJbM+ZNYsVr77O5T+7NLJv+YoVzJk9C4Bx48ZSUlLCitdeY9q0qQDU1dXxwapV/OTHF/ZKnRV7B0o53Qv5vLwWQedUh2hjajqU026tOR0AHrMDIxdrTxK9Znmw3LNCoVAoFJ2ndNs2Fl11NT/+f/+P1R9/zL1/uJ+77ryd0aNG4Xa7uXfZ/Vx80YV8+tln/Oq2JTHnjhk9GiEEz7/wX477zjx8Ph9ZWVn84soruPraX+J2uTn8sDnsrtzNZ59/wQULftjt+j72l7/hdrs4eNo0AJ559t888ufH+NMf74/IXHbpJRxx9LHc9bulHP+d7/Dk35/mw49W8+AflgGOpfbySy/h10vuYNLEiYwbO5bFN93M8GHDOOXkk7pdx/6EjUjLsi5bLRUDlHK6V+I3LYQQ7VQHM2hBRuy+6JcrvWs7Uym8xSWlPy86HXTKqUKhUCgUimScd87ZNDf7mXn4N9F1ncsWXsJF/+8ChBD8+U8Pct0NN/L7ZX/gkIOn8ds7lnDSd0+PnDtixAhuvmEx11y/mAUXXsR555zNnx9+iMW/vBbDMLjhllvYuXMXw4aVcPGFPWeR/NVtt7O1tBTDMJi87z489fhfOf2070aOHzZnDk/85c9cf+PNXLf4RiZNnMiz//g7Bxywf0Tm6iuvoLGxiYt+upCamhq+cfhhPPefZ/F6+8YdWzEwUcrpXsiI3Ay27mhot39PdTM5ebHrFqKtk+lVsFJZc5rqmb3H4J7j6s/fjEKhUCgUvc/r/3sl8vn++37f7vhZ3z+Ts75/Zsw+GYwN8rT4l9ey+JfXxuzTNI1fXvsLfnntL9qVOXbsmHZl5OXltduXiPPPOycSBTgZZ5x+GmecflrC40IIbrnpBm656QbAGSWYVmprXvsz6cpJqqL1Oqg8p3shhwzPj9lOFpIods1pz9dFdCOokRgIfr3h+xs0eppac6pQKBQKhUKhSA9KOd1L8Xr1yGe9RaGw4sxeRasa6c1z2o2ASP1Y84ukuxk0ippSThUKhUKhGEh858STycovivt32+139nX1Bhx2S57TdPwplFvvXsm04XlkZ7ppatkON/U9Vc0wKVZWS7PltDt0x+raW3QnGrFCoVAoFApFuvnTA3+gudkf91hBQX7c/QpFX6GU072QYTm+iEIqgq2hyC2rvQIVGxCpf605HXxWSYVCoVAoFIqeZcSIEX1dhb0KKdOU51QNdwGlnO61uHXHY1sLmJF98RIxazEBkXqebq05bfm3P7+rg89yGr0SYO8LcqBQKBQKhUKRDBUQKb2oNad7LaLNv1C/p6mdVLRbr5XWPKepROuNmE7TbNVNnd6zPPcXVMepUCgUCoVCoUgPynK6l6KJFrfYKF2isbb9eoPY8Db90603fHZ/VIvahgfqj3VMH4NBGVcoFAqFQqFoRVlO04uynO6lCAGaz010O9+8qTqOXLTlLy016caZ6iVVKBQKhUKhUCgGC8pyupcihEBoGjLarbc2EFdWQ2Aj+7Vbqo1sdfPtR8TmYh0MtlOVSkahUCgUCsXgxZYCkQYrp0ol46Asp3spIvy/qHbub2iOKxtedxonmG8P1CMcMKjrwXO0tFt1e5bBERRJKacKhUKhUCTi23OP5fIrruzVa27ZshXh9rFmzdpeva5CkQ6UcrqXIuJMvmR743/d4Yi96VGuuuPW20p/VfxiAiL1YT16DzWrp1AoFApFunj9jTcRbh81NTW9ds2wctv2773334+Re/of/2TyAVPxZudx4MHTefG/L8Ucl1Jyw023MGz0OHw5+Rwz/zi+3rAhRqa6upqzz/shOYVDyRtSwgUXXUxDQ0Pa77EnCaeSScefQimney0RpSk6qFCCVh+xbqbDchpPS+7suQNA8RsICnT6GGz3q1AoFArF3sv/XnqRXaWbI3+HHnJI5Ni7K1dy1rnnc8GC8/n4g/c45aQTOeX07/Hpp59FZO787V38ftkfeOC+3/P+22+SmZHJCSeejN/fGpDz7PMX8NnnX7D8v8/z/LP/5M233+ain1zSq/ep6N8o5XQvJaITRimHXm/8JcZh91k7jcpGKutZtU4o1n3PYLMkKrdehUKhUCiSYZomCy+7nNyiYoqGjWTxjTdHxjF//dsTTJ99ONkFQygZNZYfnHs+FRUVgGPBPPKYeQDkDx2GcPv44QUXAk6u+jt/excT99sfT1YuoydM4tYld8Rcd9PmzRx5zDwycguYeuhMVr73XpfqXVhQQElJSeTP5XJFjt1z7zLmzzuWq65YxH77TeZXN9/IIQdP4777HwCccdrSe5dx/bW/4OSTTuSggw7ksUf/xM5du3j23/8B4Isv1vPSy6/wpz/+gVkzZ/KNww/n3t/dzZN/f5qdO3em8KT7BsfKKdLw19d31j9Qyuleimj3AfIKM+PLtsjYaX0ruld2f31fB1+eU4VCoVAoFMl47K+PYxgGH7zzFvfc9Rvuvuf3/OmRRwEImSF+ddMNrP3wA579x1Ns2bqVH/6/iwAYNWok/3zq/wD48tN17CrdzD13/xaAa3+5mNt/cxeLr72Wz9d+zBN/+TPFxUNjrvvLG27iyp9fzppV77PPpImcde75mKbZ6XqfdNrpDB0xmm98+yj+89zzMcdWvv8+c486MmbfvGOOYeV7juvv5s1bKCsrY+5RR0WO5+bmMnPGDFa2uAevfP998vLymH7ooRGZuUcfhaZpvP/Bqk7XU7F3o6L17qW0utOKiGLn9rriyoaj4Nr9OJWMUvv6C8pyqlAoFIq+4dHSh2mwen99YpaexYLRF3RaftTIkfzut79BCMG+++7DJ59+xu/uuZcLL/gRP/rh+RG58ePH8fvf3cWMOd+goaGBrKwsCgoKABg6dAh5eXkA1NfXc899y7jvnt9x/nnnADBhwni+cfjhMde9ctHlHH/cdwC4+YbF7D/tEDZs2Mjkyfsmv7+sTO6683YOP2wOmqbxz2ee5ZTTv8ez//g7J514AgBlZeUUD41VhouLh1JWXu4cLy+L7Itm6NChlJeVR8oYOmRIzHHDMCgoKIiUMxBQeU7Ti1JO91K0llQy0bpEbWX8Dr3V87fnlY3WaL2puPW2Vj69Vt3UGXxrTpVyqlAoFIq+ocFqoN6s7+tqdMjsWTNjYm7MmT2Lu5beg2VZrFm7lptuuZW1n6xjz54abNvJZlBauo0pU/aLW94X69cTCAQ4+sgj4x4Pc9CBB0Q+DxtWAkDF7t0dKqdFRUUsuvyyyPaM6dPZuWsXv7n7dxHlVKHoLZRyupcipUQYGlJv7RzXvPl1XNl0ppLZ24n+8RkcyqlCoVAoFH1Dlp41oK/r9/uZd/xJzDtmLo8/9ihDioZQum0b844/kWAwmPA8n9fXqfJdRquHXHh8ElZ+u8qsmTNYvuLVyHZJSTHlLWtjw5SXV1BSXOwcLy6J7Bs2bFhEpqKigmnTDoqUUbF7d0wZpmlSXV0dKWcgIEnP9LwaRToo5XQvpTYQAkAarcuKEzX6sHqV3jWTKVhOY87un6/s4HM9VpZThUKhUPQNXXGt7Uvarp987/0PmDRxIuu//JKqqipuv/VXjBo1CoAPP1odI+t2OwqmZVmRfZMmTcTn87Hitdf4f+MWpLn2DmvWrmNYSUlke86sWax49XUu/9mlkX3LV6xgzuxZAIwbN5aSkhJWvPYa06ZNBaCuro4PVq3iJz++MFJGTU0NH61eHYkE/Oprr2PbNrNmzuiV+1L0f/plQKRly5YxduxYvF4vs2bN4oMPPkgq//TTTzN58mS8Xi8HHnggL774YkLZiy++GCEES5cujdlfXV3N2WefTU5ODnl5eVxwwQUDLu9SDPHc1hPoEq3RenurIp09M9qttyfqougusamB1JeiUCgUCkVbSrdtY9FVV/Pll1/xf08+xb1/uJ/LLr2E0aNG4Xa7uXfZ/WzatJn/PPc8v7ptScy5Y0aPRgjB8y/8l927d9PQ0IDX6+UXV17B1df+kr/89XE2btzEe++/z8OP/rlH6vvYX/7G/z35FOvXf8n69V9y2+138sifH+PSS34Skbns0kt46ZVXuOt3S1m//ktuuuXXfPjRahb+5GLAGR9cfukl/HrJHfznuef55JNPOX/BBQwfNoxTTj4JgP32m8z8ecdy4cWX8MGqVbzz7rssvOznfP97ZzB8+PAeuZfeID2RetOzjnUg0u+U06eeeopFixZx4403snr1aqZOncq8efMiYbbb8u6773LWWWdxwQUX8PHHH3PKKadwyimn8Omnn7aT/de//sV7770X9wU4++yz+eyzz1i+fDnPP/88b775JhdddFGP319/JL2W00jp3SplYFhO+2cdexalnCoUCoVCkYzzzjmb5mY/Mw//Jpdc9nMuW3gJF/2/CxgyZAh//tODPP3MM0yZejC3/+a3/PaOWOV0xIgR3HzDYq65fjHFI8ew8LKfA7D4l9dyxeWXccMtt7DfQdM48+xzqajYHe/yKfGr227n0NmHMesb3+Lfzz3HU4//lQXnnxc5fticOTzxlz/z4J8eYer0mfzjmX/x7D/+zgEH7B+RufrKK7j0pz/hop8uZMZh36ChsZHn/vMsXq83IvP4Y48yed99OHrecRx30ql84/DDePD+ZT12H3sDM2bMYMqUKSxbNjifi5D9LP/FrFmzmDFjBvfddx/g+MqPGjWKSy+9lGuuuaad/JlnnkljYyPPP98a8nr27NlMmzaNBx54ILJvx44dzJo1i5dffpnjjz+eyy+/nMsvvxyAL774gilTprBq1SqmT58OwEsvvcRxxx3H9u3bOz2bU1dXR25uLrWbVpOTnZ3qI+gWtpRU7Gngkn9+xPbKRoLVDZQ8+zUGMLQki4ffurzdORe8/h67/X7y3W4eO+qwHq3PqqbbabarMISPwzJv6dK5SzauZlWN0/E+fNC3yXd5erRuPcHfq19iQ6AUgMuGnkum3rl1IX1FuH0Mzc+KCTjVWaT9BNJ28qYJ/VqEGNbBGYqBQnfbhmLvRbUNRTLS0T78IYvNVQHGjRmD19v/fvsVnUMCpmVj6Fras8L7/QE2b93KuEIPXpcec6yuvp7c8YdQW1tLTk5OytcIj/PHP3Ydeoa34xO6iNXkZ9P5t3W7ngOdfmU5DQaDfPTRR8ydOzeyT9M05s6dy8qVK+Oes3Llyhh5gHnz5sXI27bNueeey1VXXcX+++/ftghWrlzp5F1qUUwB5s6d6+RdasnNNNDI8ThrFoTZ8dxD+MckPbMUqXdH2gDIISrS3t0qFAqFQqFQKBSDg34VEKmyshLLsihuE7GruLiY9evXxz2nrKwsrnxZWVlk+4477sAwDH72s58lLGNom9xNkbxLUeW0JRAIEAgEItt1dXWAsz6yr1Kf2FI6kXpb05xGkFImrZfdwfHuIEmt7LCrrJXGuvUUlrT7fR3D7SPlesroCQN7kLgyDw663TYUey2qbSiSkY72YUsZiYiqWl33Oe7Ek3nr7XfiHrv2F1dz3TVXp+3a4XFCur/HcFuJN5bt8bgl6VofqtacAv1MOU0HH330Effccw+rV69uE8yl+yxZsoSbb7653f7dNQ34zR69VKexpaS2oZmQaUWsjbKla/BkeajY0z7IUyhkYpo2fsy4x7tDQLMICQs7hbKb/CFMywnTtLumEcvVRw81Cc3+EKGoOjZp6Qkr1VOE24eElNyvMtxBPC7nHusaGrHsARw0TBFDd9uGYu9FtQ1FMtLRPkKWxLZ1TNuOjAMUqXP/smU0+5vjHivIz0/bM5ZILEsCVto9zUzbxrYlVbVNuPTYa9UP5ACng5B+pZwWFRWh6zrl5eUx+8vLyymJCmcdTUlJSVL5t956i4qKCkaPHh05blkWV1xxBUuXLmXLli2UlJS0C7gUybuU4LoA1157LYsWLYps19XVMWrUKIbkZZGT3Te5uGwpEYDbZTjKuHBcTwWga4Kh+e3r5XO7MMwQhqHHPd4dtjW7sG0dXWgMzela2Vk1bgy/43lemJfBEHf/W8+ZsceNK+DUsSgvg2w9s49rlJxw+xiS6tog2wOy5TvJyQDRN+1c0fN0u20o9lpU21AkIx3twx+yqK8OYmgaht6vVqANSMaMHtmHV7dw6XrHYt3E0DQ0TVCYm9Fuzam3h7UdKZ2/nkY5pzj0K+XU7XZz6KGHsmLFCk455RTAWS+6YsUKFi5cGPecOXPmsGLFikhwI4Dly5czZ84cAM4999y4a1LPPfdcFixYECmjpqaGjz76iEMPPRSAV1991cm7NGtWwvp6PB48nvYL9TXRt7PLQgi0OJeXdvx6Rdacyp6vd+tMmehy2VpErW7Z7oeDomhrvPPc+18d2xKuZ0oBkYSIdJ5CtE0toxjodKdtKPZuVNtQJKOn24cmWn79WxRfxcBE0joOTPv32NJW4rXDeGNiRf+lXymnAIsWLeL8889n+vTpzJw5k6VLl9LY2BhRJM877zxGjBjBkiVO6O3LLruMI444grvuuovjjz+eJ598kg8//JAHH3wQgMLCQgoLC2Ou4XK5KCkpYd999wVgv/32Y/78+Vx44YU88MADhEIhFi5cyPe///0BlXepIxIFFQq/w+ldP9j1sqP7lv46maQNutQqg+1+FQqFQtHbuHQNkDT5/fh8PR8VVbH30eT3A7Kl7aSXdOUkVXlOHfqdcnrmmWeye/dubrjhBsrKypg2bRovvfRSJOhRaWkpmtba8A477DCeeOIJrr/+eq677jomTZrEs88+ywEHHNCl6z7++OMsXLiQo48+Gk3TOO200/j973/fo/fWm8S1aCVQTsMKVjrcCVqznHa98PQHHu9Z+mtE4Z5FKacKhUKhSC+6Jsjz6VTsdtLJZXi9ylNnACJx1oIaWvpGdFI6kxgVu3eT59PRlZl0wNPvlFOAhQsXJnTjff3119vtO+OMMzjjjDM6Xf6WLVva7SsoKOCJJ57odBn9nYjCGdWZJ4qkFxZJTyTGVvU01TOh76Ifd0S023H/rKFCoVAoFAOPkhwPEKCiopxecApVpAEJ2LZE09IdDkmS59Nb2kwvIEV6IusqyynQT5VTRfeJazhNEEs77Jtvp0W96saLpmZJFQqFQqEYlAghGJbrZWi2jETFVwwsbOlEzy3MzUjrenWXrimL6V5ESsrpJ598wqpVqzj99NPJyckBoLm5mUWLFvGf//wHn8/HlVdeycUXX9yjlVV0nkgnIFotepYZv3MPO0mnx6039c4ixnLaT+2SsZbT/lnHnkW59SoUCoWi99A1ga6lP9qrouexpcSlC7wufa8Kpqai9aaXlFYN//rXv2bx4sVkZ2dH9l133XX88Y9/pL6+nm3btnHJJZewfPnyHquoomvE6wPMkJVANp2W0zDdW3Pa4wmUe4joNTCDQzmN7jLUTLZCoVAoFAqFoudISTn94IMPOPLIIyMDc9M0efTRR5k5cyYVFRVs3ryZIUOGcM899/RoZRWdJ2aGqoPJKq0T61K7SyqK2140yaZQKBQKhUKh2BuQafxTpKac7t69m1GjRkW2V61aRV1dHRdffDFer5fhw4dz8skns3bt2h6rqKJrxLjed6DlxThq9vSL0ZqnpuunRn3ur1bJgVBHhUKhUCgUCoViIJDSmlPDMAgEApHt119/HSEERx55ZGRfYWEhlZWV3a+hIiWiraHh4F+JFM8YyykSvUdjqnUnWm/UPfRTvW/wRetVa04VCoVCoVAMXlSe0/SSkuV07NixvPbaa5Htp59+mnHjxjFmzJjIvh07dlBYWNj9GipSQtM6rzSl03LaU69Zf7VKxirQ/bOOPYtSThUKhUKhUCgU6SEl5fTcc89l7dq1zJo1i29961usXbuWH/zgBzEy69atY9KkST1SSUXXiXHrbdmwO0glA+lYc9qSbzWVgEgxFl2FQqFQKBQKhaIfoNabpo2UlNOFCxdyxhln8OGHH/L222/zne98h+uuuy5y/LPPPmPt2rUcddRRPVZRRdfQ46z1rKlujisbvSS15y2UqdtOoxtnf7VKikFnSRxs96tQKBQKhUKh6C1SWnPq8Xh46qmnqKurQwgRk1IGoLi4mI8//pixY8f2RB0VKaBpUapdBwGR0pmyJdZlWMakXtkriLqd/pqLtWdRyqlCoVAoFIrBi1pzml5SUk7D5OTkxN1fVFREUVFRd4pWdBO9xZVX6CISECkz2x1XVkurgtVWmen8ixcT1KnNseaGABs/3cU+B4/E7elWM+4WokeDRw0ElHKqUCgUCoVCoUgPKbn1btu2jVdffZWmpqbIPtu2ueOOOzj88MOZO3cuL7zwQo9VUtF1IgpnlD5o25KfHnMfZaV72PTZLjZ9totbfvQ4X/12JfaWOszXt/Plh9so37aHXVurO7xGU0Og19xt266FfeDGF/jD4ud5+NcvYZlWr9QhHmbIijyD/hq0SaFQKBQKhULRQ6g8p2klJZPT4sWLee655ygrK4vsu/XWW7nxxhsj22+88QbvvPMOM2fO7H4tFV0m2uoYVk6bG0MwBG654PEY2aamZoKPOMroQ6teiFhdo5l7+jQ8PjdffFTKKf/vMHZsquTpP7yFbujse/AIDpw1jm+csD8Au3fUMmRELkIIKjaYfPSyYOwcyX3P/YfybTUs/tPZeHwuABrr/ei6hjfDzUv/9yFlW6s545JvkZntBQnBl3ch60I0XnoQZOWx9p1NfPrBVr5etxOAT97bwi0/eoIrf386/3zgLTJzfMycuy/3X/88M+fuy4k/nIXh0mPciYMBEyEg0BziqXvfwJfl4fs/OyLWFToKKSX1Nc3k5GfE7P/io1L+++YqxIwQw8Z2HJl602e72L2rlkOPmITh0juUB9i+qZJ1725mzrGTyR+a3fEJaUdZThUKhUKhUAxmBD2Xj6JtuQOPDRs2sHHjRr71rW/h8/m6vYxPyBRMX5MmTeKQQw7hqaeeApzBe0lJCYWFhbzyyiuUlZUxd+5cjj32WP7+97+nXLmBRl1dHbm5udRuWk1Odt8oEraUVOxp4N53NvC/T3cS3NNI/ksbyWx2rIv5hT4yM92IKAV0V1MzjSETpGRURgYed8+5yTbbFVgyCECWPgLLlFiWTWFxNj+4/Ej+eNOLCc+tCvqpMZ18uiM8mXj11Os16aDhEYU2GaMnDsGb4eardTsAOOKkAykr3cOXa7Zz/Lkz+eYJ+/O/pz/mk/e2UL69Bjm/GTk9QHZ+Bov2O5cCM48/XP8cX6/byaSDhqPrGhfeeBxb1pdx7zX/AcDlNjj1wsP41kkHIG3JZ6tKWfXqV4zbr5gjTj6I5oYAV5/+cEy9Skblc8MjZxMKmoSCFpom8GbEd9NORrh9DM3Pip3A6CTSfh5pvwKA0C9BiH27XIaif9LdtqHYe1FtQ5EM1T4UiegvbaOuvp7c8YdQW1ubcElip8ppGeePeuAmNJ+3B2voYDf72XbxTd2uZ29RVVXFmWeeyauvvooQgq+//prx48fzox/9iPz8fO66666Uyk1ptF9RURGT03TNmjXs3r2bm266iZEjRzJy5EhOOeUU3njjjZQqpeg+X1TUAiA0ge0zMJstdGBPVTPVVc0xczPNXjBbDHllZQ3oErKyPXh9BrbtzH5UVjSSnePBl+HC5dYJBkyCAQu/3yQn14PLpWOaNoZLw99s4stwRXKtSuk4vO7cUYcVcuZCync18NufP0N2rvNyW6aNadq4XBrNzSY+n9FyrhPPSQL+ZhO3R0cAgYCJv9kkO8eDbsS3ePqbQ4DA5db4et1OZEu0J6EJpJTYlmx3bumG3THbb/znE2zLJhSyeeEvH/DCXz4gZFq4XLrzbFrk6vc0ccsFjyN2tb5SYWX4ilMeBMC2nIQ4oYDJU/e9wVP3vREzs/TR61/zj/vfjnsvZdv28NNj7ovdKaXzfDSBpgmu+v3pjNm3OO75PYeynCoUCoVCoRjEpMsFd4ANq37+859jGAalpaXst99+kf1nnnkmixYt6l3l1LZtbLs18+Trr7+OECImdcyIESNi3H4VvUtE53EZWNkezGo/ZhsZT1jRMEG0rE01JVgSqur86HUCq+VNcSGoqwtQXxeIeXckEPCbSMAiVnXRAW9+EN3tWG1N00YgIrLVe/zs2eOPrTety2QDXknI06LMVtcjTKc+dkt9NKC+LtDu3mVUWZ2hozBNdouMFkcuq9rGF3Cu2FDZiLlTEArarTfSCVxunVCw43WzBUUZVFc2xT3m9ujcsfBpjjzlIM645Fudu7BCoVAoFAqFQpECr7zyCi+//DIjR46M2T9p0iS2bt2acrkpKaejR4/mgw8+iGw/++yzDBs2jH33bXXxKysrIy8vL+WKKbqH1WIl1Fw6DdOKaZiW2KImkRh7/Oh1AfaMyUNISdbqMvRmR521stxIAVa2G9/GGgLDs5x9hga6IOOz3QgJ/tE5uCqbMfb4kYZGaGgG7lodyzAQlsQa7kKvDSAsiQjZoAukEFhZLqTHQK8LoDWbSJeGMG0a9y1E6hJXRT2BoRm4K/0YdQGwJYGwu78tkboGmlOOFrDQmkKYeV6M2oBjepVgZ7jQmkIRpVG6NKRLR1g2Zo4HV3Wzo0zaEjvDhe3R0RuCaCEb29AQlt1O2TQLfRgZITw4bsuNIQsZ1NCdh9ppOqOYAgkVU4BgwGLXjjpee3ZdmpXTaEuznVBKoVAoFAqFYq9EWU4BaGxsJCMjo93+6upqPB5PyuWmpJyedtpp3HrrrZx++ul4vV7efvttFi5cGCPz+eefM378+JQrNpDx+4O4Xe0tepomcLvdUXLtZXpCNhQKRaWS6URAZiEwC3yYBT4ApBDUTx8WV7R5Qn67fYFhWa0bbZYgipTeNEeDlC0KaGBsAQCJVbOOy+oqMo4tVbTYWFv/D95x1WTm1wOS/NscOaPB36sdjCFalcSQ8HPt9hva1V4CHpGLwMCybPRmLZIGx3EtFi3L+13J6y7qEOS2bCxHyreSyNLqtixJHtk5VVmIuGt3V3ZBwSkM9zmTOFJKAoFgQlld13C5XJ2S7a33viuygUCAto/YlpJgMEQgEMDn9SaVDSMEMT9AwWAQO8kz9nr7XtbjcUfaRCgUwrIST7KkKmuaJmaSKOJdkXW7XZFgbT0p63IZ6LreKVndaA3gZlkWoVBbP5xWDEPHMIwuy9q2TTAY6nHZjt7Prsh25b3fG/uIMG3f+0AgQDAYwu8PtFtXqPqI+LJ7Wx8RLRv93od/V6LbRl/0EX5/4vdPkTrf/OY3+ctf/sKvfvUrwBlv2bbNnXfeyZFHHplyuSkpp1deeSWvvPIKzzzzDAAHHXQQN910U+T41q1b+eCDD7jmmmtSrthA5ryFV+Ey2j/a6dMO5MarLo1sn/OTKwgE478wB0zehyWLr4xsX3D5tdTVN8SVnTR+LHf/6rrI9v2PPsHm5lxskUU8TaP/rxpsqVWPrJ1P7Q4TK9Vt1Fa7vfJr+dzoTb3XEVpSoIuWdDZSEgiGcBkGessPkGXbhEyTAM56Wk0IbLO1ztGytiWo2GEmfGwjh/sI/8b7AwG276xIWK8hRQXk5jiBwZr9fnbsKk8oW1SQT16es/g/EAyybceuhLIF+bkU5OcBEAyGKN2eONBVXm4ORYXOhIppmmwp3ZFQ9jfVj/K7A50+q66+gXN+ckVC2aO/OYfLL17g1DcQ5IwLLk0oe/jMQ7nmsh9HtpPJ9lYf8dOrb6KisipGRgjBqNFjwQqw7I6bIvt/vvi2hN/H0KJCHr5nSWT7ml/9lq83bYkrm5OdxeMP3B3ZvvGO3/Pp+q/iynrcbv7xaOsa6yX3/JEP13wSVxbguccfjHy++/5HeeeDjxLKPv3wvZGB6rKH/8aKt1YmlP3b/XdF2vCf/vZ3Xvxf4jgKDy9dwtAhTtTuvzz1L/714vKEssvuuInRI4cD8Pd/v8j/PfN8Qtm7b7mOSRPGAvCfl1bw6P/9M6Hsbb+8ggOnODOEL7/6Fg889n8JZW+4ciEzDj4IgDfe/YClf/xzQtmrF17EpBbPqJWrPuaOex9MKHv5j3/I0d86DIDV6z7jlt/el1D24vPP4vhjnQHMZ+u/5rpbE69PWnDWaXz3hHkAbNxcyqIbbksoe9Z3T+AHp50EwLYdu7jkFzcllD31uGP40dlnALC7spoLLr82oexxc4/gJwvOBgZnHxFm1Ihh/OHOmyPbV954O+getpVuaTexqPqIVvbmPuIXl17EN2ZPB2L7iPDvSnTb6Is+ImQmVoBTQgrnr6dJR5lp5M477+Too4/mww8/JBgMcvXVV/PZZ59RXV3NO++8k3K5KSmnOTk5vPfee3z66acA7LfffpEZkzDPPPMM06dPT7liA5lmIQjFiUpWo2lscbU+8kZNEEwQvaxWbyur0ZRAti6qXGlL/JpG/qZ3qZxwLNAJHa+jRZd9hLBBppSJt/eo2pBN0b61sTt7OSKdjGMdju432+qZ8bbDsrawEAZYCfpxCxFx5jURjm6egBCt7TskOpAVRGSDgqSyphBRssnLjZY1O5SFr3Ubl+amztATvm8A1boeeecClpVUdk+bdzmZbG/0EQANcWSFEASEINhGtj5JuQ1tZOuSyOptZGv1xLKmJmJka5KUC8TI7klSLsBWl4GnRb5aT/49bzV0clpkqzqQLXXpNLXIVnYgu83QsVtkd3cgu92l42qRrehAdoehk90iW95BG95ptLbhsg5kywydHF2j2TDY1QnZcLk7O5Atj5Ld0YFsRdQ7t92VXHa33vlyK6NkKzsotypKdjD2EWHq4/QRbiFoEu2ndVUf0cre3EfsipKN7iPCvyvRbaMv+ghTRZFOCwcccABfffUV9913H9nZ2TQ0NPDd736XSy65hGHD4ntgdoaUUsko4hMOMf3h1x+SlZ3V7rho6zaTxMUmVVlpS6rKq8jKy+L5tzfy1MoNmFXxZ0qjkZA2BTU1197IyX0ykZTYrdf5FK3i5Y1uYOTMysi27g8hQp1bR9oTaEKitdRHCCic6FQxfAey5X9CGGhkIG07JpUQAqQMIAkiAZcYiiB+mhpD1KFJRxm3xBAsmTiUuohyqZUduOqmKgskdc/qquxZIxbg1Z0cXcFkbnhtXPaSyfbGe99l2UCg3SyFlJKGmgay8rPwtnHrTfgKx3HZS+Y67fH2vay7jRuencQNL1VZ0zSxkrnWdUHW1cYNr6dkjTYue8lkdUOnsaaRnIIcbGljJnHD09u47HVW1rZtQklc9lKV7ej97IpsV977vbGPaBWOfe/9fj8NexrIystqn9tQ9RFxZfe2PiJaNvq9j/yuRLWNvugjGuobmD5peo+lkhl5381pSyWzfeGNAyaVTLrodkLLd955hzVr1lBXV0dOTg7Tpk3j8MMP74m6DVjcHndMR5iIzsikIutyufB4PJw2dwoz9x3Bm4+8x8o/vwc4IWxijJExGkzrxxjXX004gYJwIvBm5nqd9C62pLEugGZoeDNcNNYFEIAvy40/ZCEDVqS8cLTbSNnCWZPjRPCNlQljERsh1yYq7XF7Y2HMbSTTZ9sZijWQUb8n8c51eQ1s08Yy7UhdRZT81tHZNBxcAgKGbazB8/UegoH4Ha7bY+D2GjTU+uMed56hh6YGZyAhhGDI8GxKa+uxbIkmwRuA5iyn0kZI4G520skUj87j4tcuS3zvtqSuuo6cgpwYBXV387+oDTjrR0dmnYLXGBv3/EzzJbLM5wCocZ1FQD8o4bUGCq9VvszW5k0AWNJps0KITr9zXZGF9L33XZKNE6hA2pKAK4DH7elQNhHRg9uBIOtyucDV87KGYUQGSXuDbPRAXtf1dp5SieiKrKZpnW7DXZFN17s8GPuIhLJuj9N3eDyxE59x6A/vveoj0isb/d5HflcStI3e6iOCCVzfFd1j/PjxHHHEETzwwAMxfUZlZSUzZ85k06ZNKZWbsnL67rvvsmDBAjZs2AA4syPhWZFJkybx6KOPMmfOnFSLV/QAQghGj87j+788Bhqa2bp6GzKihQksy6a+utlRqCaX0FBWi25oEauViGiBrQwdV8i46aMZPrmYf/3qJXIKW6N05bZ8PvSkA5l02HievObfcetVPLGI8g2OpXHk/sPY91sTWX7fG2htgjcddtZ0PvrPOgKNAUBghiws08YK2fiy3e1naIlth2HmXvwNXnt4JVaLNdO27ZYcrPF/RAtH51NVuofv3XoiQ8YW8sUbX2OZNts/3cnGD7a2ky8aW8CX2T78eTqarvH9C79F1qYaXrz7VQD2/cYEvnx7I9KW7HfERHS3wcHH78+YaSOp2VXHV+9uYsy0kWTm+fjijQ2sefEzKjZVklvkPE9PpptAYxCXW0eTkqKbv8XR9R7+kbEd0WBiLvkCIJJXNjVaz5XJIyJ14xr9E020tjtbRSBWKBQKhUKRDBWtF4AtW7ZgGAbf/OY3+c9//kNJSQngWMR7PZXMZ599xrHHHktTUxPHHHMMRx55JMOGDaOsrIzXXnuNV155hXnz5vHee+8xZcqUlCun6BkMl845vz0VcJS35X94k+rtNRy36Ggycr1ohoYQgk+Xr2fjqq18+r8vI+f+/F8XkpmXQaApiG3a+HJa3Rhs0+bfS15hyLhCLnjg++guPUYxvD7KghcKmKx54VOmHLkPmfkZSCmxLTsSBXLizDFs/GArB83bj80flTJ0whCGjCngqIsOx7ZthBD8bdEz7Ph8F/MvO5Ltn+1kzYufs/9R+3DyL+ehaRq2bVOzqw63z8X2z3YxYeZYXB6nic8+81AAKjZV4sl0k1mQiaYLNq0q5cN/rcWT6WbOWdMpnlDk3FtU3Q47a3rk2dXvbiBnaDafv/4V2z7ZyWFnTSe7KIsb7noN0VgHmkBKOPiEA8gfnosvx0vJpKHs3lKF2+citzjWTSN/eC6zTj84sj3ztGkccuIBrHjgbYQumHvxNyNK+1Uvv0l9KITwGcycfzD/Wt0SrKJX9cUYm3pvXjhtiE4r5gqFQqFQKBQKcIxgL730EldeeSWHHnoozz77LDNmzOh2uSkpp7fccgvBYJAXX3yR+fPnxxz7xS9+wUsvvcRJJ53ELbfcwpNPPtntSip6DiEEx15yRNxjBx67Hwceux+n/HJ+u2OejPZuMAceux/7H71vO4tnPFwegxnfnRZTj+j0BEPGFjJkrBPFbv+jYvPRhNdHnHP3dzEDJi6vi2nH7c8JVx3TTq5gRB4Ak785MW49ho4vitmeOGssE2eNbScXXbfoOucMdaLyTfn2Pkz59j6t145e1ygd2XGHjo65v85iuA3m/ezb7eukaxBy1mS6taj6tVy6O2qVSEnD3VsUuSjlVC3BVygUCoVCkQwVrRdwxkxZWVk888wzXHvttRxxxBE8+OCDHHPMMR2fnISUlNPXX3+d008/vZ1iGmb+/PmcfvrprFixoluVU/R/OqOY9hRCCFzeTi7o6GUiymlHOTp7AInEpbU+d2m0rObtsct21q1371Dkot16pXLrVSgUCoVCoeiQaG/JJUuWsP/++3PhhRdy1llndavclJTT2tpaxo0bl1Rm3Lhx1NbWplQphWKgEV7oL5FpU07DCrCUoAvNyVcqJfbUfHijupuld07plFEhqwS9F5E4nQhlOVUoFAqFQtFJhHT+0lHuQKLtmOmcc85hwoQJnHrqqd0qNyXldPjw4bz33ntJZd5//32GDx+eUqUUioGGrrVaTpNEqO8WYSXKbukMXJpOwDKRBT1hTe6cK4ktMiOfc0OPkht6tAeu3bdkm14M23FbLwjcRJHMQuJCCg+GvbNX6iBFJkI29khZlihGl+UdSMWGu5YiA5Nist0WrpArMhvqsje0O9MWWQhMTDEcsHHZW3qk3h1hiRJ0WRb3mC0KsERem72yzWeJy24N0CBFBkI2JSgvG03WR8lmIWRrSi5LDEWXFa3HCDizRrRG6A5p49vVx2VvTnB3qRHSxqPJWmyRjcDGsEvjypnaGIyoew9pE4h+58PfsxQZLd9rm5pLyHYHcYXcSdM4x0vBFUt3j3eH/ly3jsvv+NmmXn5IG0OjPg9EP08srlAo+hW23d7bbM6cOaxdu5b169enXG5KyulJJ53Evffey+LFi/nlL38ZkxPP7/ezZMkSXnvtNX72s5+lXDGFYiARu+Y0Pa6hbQeFessOe2Q4YnL6p9wsUZz2a/Q20cMxCWiyrnWjl+gpxRTohGIKbW9OyCZcbEbTLHSpJ713rUVJc8nUQsSnSiLFFECT1Wiya94DiRRTp7z6mO1oxdSpS0XCY2FcdvqfT/gauqxKKhetmDrnbYwrJ2QTLtl+QgJA70TbUAxMPPYnmGLEXpEaTKHoFVS03qQUFxdTXJz6eDEl5XTx4sU8//zz3Hbbbfzxj39k5syZFBcXU15ezqpVq9i9ezfjx49n8eLFKVdMoRhIRKdxiTOR1CO0tZxGFOISZ3JISsguykq59FYS944hMTbF8vsv0Uq/vRemylEoFIqO0OWevq6CQqEYABxyyCGsWLGC/Px8Dj744LhpHcOsXr06pWukpJwWFhby3nvvcfXVV/Pkk0/y4osvRo55vV4WLFjAHXfcQUFBQUqVUigGGrHKaXqmvqJiLjnbLYqUFK2qZVZBRrvzukrSdCpCUO5d1uYEGVW5jjTzsDuppL2bWaJjEse+KePIRsu0Padz243N72JqnwBQ6ToZzVNCewU9nvIer0MWEBNUSQAWrfZZCejETruGzwnXqW0O3nh1afssEh2P912Gj8eeJ22buoY6cvKzW9ZQh8/VomQT3bsddR/R9Rdxzgk/j7b3ET5mRJUTLjtM+DwL5znaxNq+29Qt3o+mjF4rHW5b0feQjPC9WbR+l9HnRj/XZO2bKNlwHcL3El2GbNkfvlfayHS2r4l+lvHaVrz3MUrKltQ31JKdnxNZX991utcvig7P70753e2z01m39F3fa39MTuiplq1Qj9ZIodirGcTRek8++WQ8Hg8Ap5xySlqukZJyClBUVMQjjzzCH//4R9avX09dXR05OTlMnjwZl6t/RlRVKNJFtHJqWukxnbYGRGpjORWtQ8tdX1XEP7kDks18deLkqM+dWbOU7FpdOdYznbgQrWl5bEEPrLtqm4YoXnlt697Ta71SeDZCADoII75Sl5Rw/dunYEosGw89jky8MrU4cp1EJKpjV8pq+9PZ2XOTPddEZcR7JqmSYhlCInGBcKXQNnqGvcTbrV9h05p3W6hI5QqFohPceOONcT/3JCkrp2FcLhcHHnhgu/1XXXUVzzzzDBs3xl/bolDsTcSuOU2T5TRSfux2hJb9ZtDEcHf11Y4qbZBFrBWD+N4VCsVgJnqiRimnCkWnUWtO2+H3+3nqqadobGzkmGOOYdKkSSmXlbbQbJWVlWzZsiVdxSsU/YpoT7f0ufXGulZGLKla9F7Y/tmutFx/byVmYmEg/zIoFApFF5AxQ8C9IzWYQqFIP4sWLeLSSy+NbAeDQWbPns2FF17Iddddx8EHH8y7776bcvkqbrhC0QNEu8WmTTkNlx+xnIrYAy0Em7u7dmhwKWgiqhuUaYq0rFAoFP2OKBd35darUHQBmca/AcArr7zCMcccE9l+/PHHKS0t5euvv2bPnj2cccYZ3HrrrSmXr5RThaIHiA4Skja33rCltK3ltI3cu//3YSqlR30eIL1jDxHt1ps0GJRCoVDsRSjLqUKhSIXS0lKmTJkS2X7llVc4/fTTGTNmDEIILrvsMj7++OOUy1fKqULRA/TGmtOw/isjllNiP7Qc2P5pKm690Qra4EIot16FQjEoUZZThSIlBrnlVNO0SHBOgPfee4/Zs2dHtvPy8tizZ0/q5XerdgqFAmijnKbNrTd+ntNA0AS616e1SSrSjZIGHjGWUxUQSaFQDBqihoBqSYNCoegk++23H8899xwAn332GaWlpRx55JGR41u3bqW4uDjl8rsdrVehUIAW/RufNrfeNteMk9IhFDBxedRr3RWUW69CoRiMSBWtV6FIjUGc5xTg6quv5vvf/z4vvPACn332Gccddxzjxo2LHH/xxReZOXNmyuV3ehQb7VvcGXbtUhFDFYOH3rScSiRSytbtqL7MsmxSyzI8eNecalF5TaUaoCkUikFDa98n1JpThULRSU499VRefPFFnn/+eY499tiYyL0AGRkZ/PSnP025/E4rp+vXr+9y4aKPknUrFL1NdFNPk24acw0ZvR29P2XdKvpdHVwKmnLrVSgUg5FYy6lSThWKziKk85eOcgcKRx99NEcffXTcYzfeeGO3yu70mlPbtrv8Z1mqs1MMDqKtb+kLiBStRIHe8vpGX62msjGlskXUIGWwubYqt16FQjE4ibacDq5JSYVC4VBTU8P06dOZNm0aBxxwAA899FBfV0mtOVUoegK/vzW3aLrznEKLAhzHcpp64YPYcho9sTDI7l2hUAxihLKcKhQpka7Iun0wP56dnc2bb75JRkYGjY2NHHDAAXz3u9+lsLCw9yvTgorWq1D0AFu31EQ+f/B1WVquoUdFXbKkjd4jWmmYqHWXgyxqo6bcehUKxSAkNs/p4Or3FQqFg67rZGRkABAIBJBS9vlYSCmnCkUPYEVNdwUDZlquoUdZNy1b9uiabjGIAyJFP0cVEEmhUAwelFuvQjHQefPNNznxxBMZPnw4QgieffbZdjLLli1j7NixeL1eZs2axQcffBBzvKamhqlTpzJy5EiuuuoqioqKeqn28VHKqULRE0QHREqTW6+uRSmnUrZLLdPN0iOfBpuCJqKtxoNMMVcoFIOZ6Bxoyq1XoRiINDY2MnXqVJYtWxb3+FNPPcWiRYu48cYbWb16NVOnTmXevHlUVFREZPLy8li7di2bN2/miSeeoLy8vLeqHxelnCoUPUC0ShMIpudHXo9aG2nZdow7ancRg9i9S0XrVSgUg5HoaL0qlYxC0XkErRF7e/Qvhbp85zvf4de//jWnnnpq3ON33303F154IQsWLGDKlCk88MADZGRk8Mgjj7STLS4uZurUqbz11ludunZ5eTnnnnsuw4cPxzAMdF2P+UsVFRBJoegB3LJVuXO7Un8hk2HarUqjYzntSdPp4A2IpKmASAqFYlAyeCclFYr+TF1dXcy2x+PB4/F0uZxgMMhHH33EtddeG9mnaRpz585l5cqVgKNgZmRkkJ2dTW1tLW+++SY/+clPOlX+D3/4Q0pLS1m8eDHDhg3rsXGpUk4Vih4gWh1NVyqZTyoqI58rm5pjLaeCbi0VjY5YO9gCIinLqUKhGJwM3lgDCkW3kML5S0e5wKhRo2J233jjjdx0001dLq6yshLLsiguLo7ZX1xczPr16wHYunUrF110USQQ0qWXXsqBBx7YqfLffvtt3nrrLaZNm9bluiVDKacKRQ8Qq+Ck/3qltfU9vOZ08M6gqzynCoViMBIbrVf1fQpFp0lzKplt27aRk5MT2Z2K1bSzzJw5kzVr1qR07qhRo9Iyqd8t5dQ0Tb788ktqamqwrPjrFb71rW915xIKxcBDShqag2T53D1a7MicbLbX1QOwb2E+G8tbF7NLupfudDAHBVJ5ThUKxeBERH1SfZ9C0V/IycmJUU5TpaioCF3X2wU4Ki8vp6SkpNvlL126lGuuuYY//vGPjB07ttvlhUlJOZVScsMNN3DvvfdSX1+fVDaR0qpQ7K1ICbVNgR5XTicW5EaUUwk9vOZUWU6B3jF7KxQKRb9AxcRUKFIizZbTnsLtdnPooYeyYsUKTjnlFABs22bFihUsXLgwpTLz8/Njxp+NjY1MmDCBjIwMXC5XjGx1dXVK10hJOf3Vr37FrbfeSl5eHueddx4jR47EMJSHsEIBzuRNOtadtnUd1nrWr7e17MFmOVVuvQqFYlAyeAPhKRR7Cw0NDWzYsCGyvXnzZtasWUNBQQGjR49m0aJFnH/++UyfPp2ZM2eydOlSGhsbWbBgQUrXW7p0aQ/VPDEpaZSPPPIIY8aM4cMPP6SwsLCn66RQDGikhNyMnl8foEUb+JCRgEgZOR5y9h9B/ac7Ui472rV1sA1SVLRehUIxOFEBkRSKVAinfklHuV3lww8/5Mgjj4xsL1q0CIDzzz+fP//5z5x55pns3r2bG264gbKyMqZNm8ZLL73ULkhSZzn//PNTOq8rpKSclpWV8ZOf/EQppgpFFFlSp0FYTsSztFwh1nIaNpxm5nrxDM+j/tMdGEaqblrRydgH1yBFRetVKBSDEqEspwrFQOfb3/52h2OXhQsXpuzGm4wXX3wRXdeZN29ezP5XXnkFy7L4zne+k1K5KY1kx40b1y4HT0+ybNkyxo4di9frZdasWXzwwQdJ5Z9++mkmT56M1+vlwAMP5MUXX4w5ftNNNzF58mQyMzPJz89n7ty5vP/++zEyY8eORQgR83f77bf3+L0pBgfp0HGiLae2bLWcCoi8yYY7tRyrsa6tg2uQotx6FQrF4MX58UjPIhGFYi9FpvFvAHHNNdfEjS1k2zbXXHNNyuWmpJz+5Cc/4fnnn6eioqJj4S7y1FNPsWjRIm688UZWr17N1KlTmTdvXsJrvfvuu5x11llccMEFfPzxx5xyyimccsopfPrppxGZffbZh/vuu49PPvmEt99+m7Fjx3Lssceye/fumLJuueUWdu3aFfm79NJLe/z+FHsv6bbARS9Al8jYNadad4cWgzelQPRztQfZvSsUisFOuP8bXJOSCkV/ZsaMGUyZMoVly5b1dVWS8vXXXzNlypR2+ydPnhyzDrarpOTWe/LJJ/PWW29x2GGHccMNN3DIIYckDHk8evToLpV99913c+GFF0YW6j7wwAO88MILPPLII3G18HvuuYf58+dz1VVXAU6wpuXLl3PffffxwAMPAPCDH/yg3TUefvhh1q1bx9FHHx3Zn52d3SOhlRWKdFhOY1YHyTZRZsMfU77u4HXv0qLT6Ci3XoVCMZgQGkiLwTYpqVB0izRH6121alWPpJJJN7m5uWzatKldGpkNGzaQmZmZcrkpu/U+88wzbNq0iQULFjB16lTGjRvX7m/8+PFdKjcYDPLRRx8xd+7c1gpqGnPnzmXlypVxz1m5cmWMPMC8efMSygeDQR588EFyc3OZOnVqzLHbb7+dwsJCDj74YH7zm99gmmaX6q9QhEmHe2i0pdSWUZZTAVKEr5sagzvP6eB1aVYoFAoH1fcpFIqucfLJJ3P55ZezcePGyL4NGzZwxRVXcNJJJ6VcbkqW0/POO6+Hcyw6VFZWYllWuwhSxcXFrF+/Pu45ZWVlceXLyspi9j3//PN8//vfp6mpiWHDhrF8+XKKiooix3/2s59xyCGHUFBQwLvvvsu1117Lrl27uPvuuxPWNxAIEAgEItvhdbjSlki7bwb4UsrIn/qt6T3mzB7FPz/YAAIyM93YVs+3AQER7VPaMjaqW8ssXqApBDLxtRO1DylblVJp233WfvsEW0Seqz3Y7j0K1XcoEqHaxt6LlC3RC2TqfZ9qH4pE9Je20ePjsX4UrbcvufPOO5k/fz6TJ09m5MiRAGzfvp1vfvOb/Pa3v0253JSU0z//+c8pX7CvOPLII1mzZg2VlZU89NBDfO973+P9999n6NChQGvoZYCDDjoIt9vNj3/8Y5YsWYLHEz8tyJIlS7j55pvb7a/fU480+6iFSWiub3ZcPlWEg14jJ1N3lDoBmgZ1e+pxm6EevUagyR9ZeF5f10AwGMAyLWxLYka5ZVmWTV11goBlCdpHkOZIGhW/2URdU/oCnvU3Gq3GyHP1N/upk4Pn3mNQfYciEapt7LUUei00LEwZoq4+xb5PtQ9FIvpJ22iob+i7i+/F5Obm8u6777J8+XLWrl2Lz+fjoIMO4lvf+la3yk1JOU0XRUVF6LpOeXl5zP7y8vKEa0FLSko6JZ+ZmcnEiROZOHEis2fPZtKkSTz88MNce+21ccudNWsWpmmyZcsW9t1337gy1157bYxSW1dXx6hRo8jOzyY7J7vD+00HThoTSXZBdlqs24r4ZOY0IjQNIWw0TSMrL4uc3IwevYavyoeuO9F4M7Mz8TV50Rt0wEbTdcI9v65r5BTEX6uQqH00m9nUNDmuvV63hxxv/1/r0FPYIRM94DxXt89FTv7gufdoVN+hSIRqG3svRtCFwEQKnZzM1Po+1T4UiegvbUMYPXxtGbWeqqfLHUD85S9/4cwzz+TYY4/l2GOPjewPBoM8+eSTnHfeeSmV26+UU7fbzaGHHsqKFSs45ZRTAMfNbsWKFQnz88yZM4cVK1Zw+eWXR/YtX76cOXPmJL2WbdsxLrltWbNmDZqmRSyr8fB4PHGtqkITiG5HT00Rm9Z0OH1Vh0GIpmuxk4KCHn/+mtY682gLZz02tKyZFLTOSrZsx/0hSNA+hKa1BlgSclC1HU3TI89OMrjuPQbVdygSodrG3otwljWI7vR9qn0oEtFP2oZql+lhwYIFzJ8/v52uVF9fz4IFC9KrnB511FEIIXjssccYOXIkRx11VKcKF0KwYsWKLlVo0aJFnH/++UyfPp2ZM2eydOlSGhsbI9F7zzvvPEaMGMGSJUsAuOyyyzjiiCO46667OP7443nyySf58MMPefDBBwFobGzk1ltv5aSTTmLYsGFUVlaybNkyduzYwRlnnAE4QZXef/99jjzySLKzs1m5ciU///nPOeecc8jPz+9S/RWDk2g9UJKuaL2xqWpiAiK1CW1WV1FPbnHnZ8FVnlOHwRYMSqFQDHbCPx6q71MoOk2ao/UOFKSUcQ0h27dvJzc3N+VyO6Wcvv766wghaGpqimx3hlRM+GeeeSa7d+/mhhtuoKysjGnTpvHSSy9Fgh6VlpZGLEYAhx12GE888QTXX3891113HZMmTeLZZ5/lgAMOAEDXddavX89jjz1GZWUlhYWFzJgxg7feeov9998fcCygTz75JDfddBOBQIBx48bx85//PMZlV6FIRtu2no6UJFpMVNlWQ6mmCdr2aF+v3Mz0U2KjUXdQetTnAdY7dpO2+WMVCoVisCAj03Oq71MoFJ3j4IMPjljEjz76aAyjVZ20LIvNmzczf/78lMvvlHJq23bS7Z5m4cKFCd144ynGZ5xxRsQK2hav18szzzyT9HqHHHII7733XpfrqVCE0USU/U2mx/YYrf/GpJKhdZmCy62Hq9DV0qM+D65BSrTl1JaDy2qsUCgGOy3LQwZZv69QdIfBHq03vPRyzZo1zJs3j6ysrMgxt9vN2LFjOe2001Iuv1+tOVUoBixtnQTSYDkVbS4SrZwKvXvrKYSIynMqrW6VNdDQxODN8apQKAY74d8ONTGnUPQXZsyYga7rXHLJJVxyySV9XZ123HjjjQCMHTuWM888E6/X26PlK+VUoegBNC3W5TYdqTK1NpbTGGW1zWL/L17/ihmndsWtV1lOIT3u2AqFQtF/Cfd/qu9TKDpNmtecrlq1ipyc/p854Pzzz09Lud1STv1+P6tWrWLnzp0JI9+mGqlJoRhI6JrADPtjyHQpOQkCIgFWi6t9KOhYPUvX7exiyYPXehh977ayHigUikGFspwqFIrUsCyL3/3ud/z973+ntLSUYDAYc7y6ujqlclNWTpctW8bixYupra2NezwcwUkpp4rBgKZrNAhHMZTA+h3VjB7Ss7Neuha9NhL0OGtOUye6gME1SNFUQCSFQjFIkSpar0LRddK05nSgvYY333wzf/rTn7jiiiu4/vrr+eUvf8mWLVt49tlnueGGG1IuV+tYpD3PPPMMl156KaNGjeK3v/0tUkpOPvlkbrvtNubPn4+UktNOO41HHnkk5YopFAMJXRe4IskyJSMKspKf0E0kbdx6u62cDuJovdFWY+XWq1AoBhWi5f+q71MoFF3j8ccf56GHHuKKK67AMAzOOuss/vSnP3HDDTd0K9BsSsrp0qVLGTp0aCQfKMC0adP4xS9+wQsvvMDf/vY3nn32WcaMGZNyxRSKgYQmBDm244ggAUNP6dXq8BphpCRutN5UGcy5PqOfo3LrVSgUgwu15lSh6DIyjX8DiLKyMg488EAAsrKyIt60J5xwAi+88ELK5aY0gl63bh0nnXQSGRkZkX2W1Rrh8wc/+AFHHXUUt9xyS8oVUygGEpreqt4FAhamlV4lp10qmTgya//7eactgbYEK7JUIPW6d+Z6vW2d7Cj1VazlVCmnCoViMKHWnCoUitQYOXIku3btAmDChAm88sorgBPQyePxpFxuSmtOQ6EQQ4YMiWz7fD5qampiZKZOncqDDz6YcsUUioHErl31EeujGbKw0hCuNzogryRWOY23+OG5O5fz3J3LOf/3Z+DyuXj7L++z/s0NWJaNrmscfs5M8ofn8sUbX7Ph/Y2ILI3j7rDJGONMNDXX+fE3BNANjfVvbcTfEKCxupHpp04lryQHoQleffAdAOacNZ2Xlr7Gl29vBKBk0hBOv/l48oblEmgK8tLS1/hk+XrGHTKKis2VTPn2Phz142/w1TsbGTKukCFjCwk0BnnrL++z7zcmMPKAYXz8/Kcg4eATDyDkN2moauQfN75AycQh7H/0voyfPhpN1yLKbshv4m8IkF2Uyc4vyvns1S/JLc7hrb++z6TZ4zj5unnO9xM0sUwbT4bbeXTEBpYKr5dvi23b7NleS8GoPIQQSCmp2VVHRp4PT4ab6h015A3LQdNald2QP0RDdRP5w3NT+coVCoUirUihtcxuDjCTjULRl6Q5Wu9A4dRTT2XFihXMmjWLSy+9lHPOOYeHH36Y0tLSiGdtKqSknA4fPjyiKQOMGTOGjz/+OEZm69atGIbKVKMYHIwdmx+z7DMdltNoJcqWbZK/RPlA1O9pJivPG1GwHvvZ0zHl2LZE1+Htv33guAe3aL2BOvjXTzQ0sQmXdk+4ZNouaP3oP5+0q9sH/1yDbdkgQNM0yr7ezX0/+HM7uc2rtwGw6l9rWfWvtXHv8/2nY/uS/y59LWZ79+YqPlm+Pu65ifhk+fqE5xz148NpmNyEZVrs/KKKtY/8PnJs9vcOYcT+w7CCJs/e+nKXrjlh5hg2frAVgOOvPJqDjz+gS+crFApF+lFuvQqFIjVuv/32yOczzzyT0aNHs3LlSiZNmsSJJ56YcrkpaY8zZsxg9erVke358+dzzz33sGTJEk466STefvttnnnmGebOnZtyxRSKgYTP5yIY5Rb1xfZqDplQnFJZ1dXNNDUGGTEyJ8aCp7Wx5ukiOv1LKw21fhpq/Xi8BkII3D4DK2TTWB+ImiEXMTqn0GzyhkscI6SNaVns3lHXrm5DR+VSsc1ZU+DxGhguHY/PRUOdn6DfjMjlFWUS9JtousDjM6gqa8Drc5Fd4KO6rIHsfB+WZWNbNpk5XkdBbqlPKGBhuDUCzSZNdQFyCnxYlmRPRQPeDBe5hRnYtqS6rAHLssktzMDtNdB1LeLu3NQQICPbQ6AphGZo+Bscn+XMXA8Bv4kZsHB5DbwZLpb/4S1cv2xA6GDZUF/VRGaul+aGAP+5+zXyijJxew0s06a2spGA36SwJBvDrcfkt21LWDEFeOG3K8jMy2Cfw8cnlFcoFIrex/kdUQGRFIrOI9IUrTctEYB7kTlz5jBnzpxul5OScnrGGWdw3XXXsWXLFsaOHcu1117LP//5T66//nquv/56pJTk5uZy5513druCCsVAQNMETaJVOf33G1/x5YodSc/Jz/fhbw4x57DRNDeFEEKgGxpvvbWlnezQIZmMmVmEuS2IXW1SWdRAbbCR3XWNhEI2GQIydA2XaSNwVg81N5tIoLEphE3sAnNBS1Cllm0pBQ11OqGgjscdIlDrKKZhdVNrOae8tDYyhGlsNhHNJtQFkC0yFo7LccXuBnQEOlBf48jXN4WoawpiIKje3Rgpp6Y2gGg5X6NV0Q4/zeDOemgpu7ExRH1jDVrLSlEJ1FY2Rey7sqXOGlBX1YxNrF2gsa41H7Osc66LgKHNFsINZlDQWB9wFPkWqsrq230f8faVjM5DJFFW/379c1z/2mUJjysUCkWfodbbKxSKLlJVVUVhYSEA27Zt46GHHqK5uZmTTjqJb37zmymXm5Jyeuqpp3LqqadGtocMGcKaNWv405/+xKZNmxgzZgznnnsuI0aMSLliCsVAwuPR22VzWW80Jj+p3jn+8Ztt3GTjvJXr9zRiv1SO2RLc5y///QzbAMvnqHTBXGg4bV9EwGx/cpj2HroxJlcRNWUnEbHy4UOCvc77SwjIH7rF2ciDXSePjXuLbR+FUR+k4I2tjmJtQ2VFPflDs5DSUdDD/wLomgZS0hgMsbWmDr9lMT4vB79lUd7QRJbbTabbiLhuVzf7EQJcmo4QUJyZgd80saVkjz+ALgS5Xg/VzX68hsHnu6s4YGghOR4PLk1jXXklu5ua2H9IIYUZPr6u2sPInGyaTad9NIdMCnxe3LqGz2Wwo66RfI+bisYmsvOzY9MUKRSKvRiV51Sh6G/MmDEDXde55JJLuOSSS/q6Ou345JNPOPHEE9m2bRuTJk3iySefZP78+TQ2NqJpGr/73e/4xz/+wSmnnJJS+Skpp6WlpbjdbkpKSiL78vPzueqqq1KqxN5GMBAk4A+02y80gdvtjmzHk+kJ2VAoRCAQiBvUBUFMBK1AIJD4N6mNbDAYRCYJ9OPx9r2s2+OO3HcoFHLWQfawrGmaWKbVTibf0tll2LFrQROW6NAVWdnuc+wZVq6GXtlBIZ2mMwOVrtS+/9L2WU753ubOn3yBgVHvb9kwQTjW2ESq3Z0blrRu7EledKGndXLDqtTRtfZtLoKALys0RJT1Hh02VQPVLdvNbc5p77UNEl7ZAu4WpRigo+DK0d1MIllNuFuKD3Yom6xcrybx2+2frhAgaO0nJDZShhIUHDXR0IkXNCXZyP+6JmuIfDSRGSsqRNR3IZPWo2uyRPq0zsjalo3epEcmXnqq3FZZKDAKES3/gbPOXiLZHapoJ5ss6ne0LDjr7LsrO6/gRIZ6S3C5XJF7CwaCcWUBNF3rtGxvjQ3iyVpSoiNpG623K2ODQDCQeNyhxhFxZRONI1KRdbldkUB8PSlruAx0Xe+yrGVZmCFnIlRK2a5t6IYeiUkTLRuPaFnbtgkFE/TrHcgme//6I6tWrSInJ6evq5GQq6++mgMPPJDHH3+cv/71r5xwwgkcf/zxPPTQQwBceuml3H777b2rnI4bN47zzz+fRx55JKWL7u0sunhR3GBQBx18EJdd0+rWd/lFlyd8Yfadsi9X33h1ZPsXl/6C+rr2roQA4yaM4/rbro9sP/HIE6z7ZF3cH+/hI4fzq7t+Fdn+9XW/Zuf2nXHLLRpSxB333RHZvvOmO9m8Mf7APTsnm6UPLY1sL12ylC8//zKurNvj5v6/3B/Zvv/u+1n38bq4sgAPP/Vw6+dlD/Phex8mlP3DY3+I/Aj99aG/8s4b7ySU/d2DvyMn13n5n/rLU7z2ymsJZe+47w6KhhQB8Mz/PcPLz7cPjhMy5hAcm4vb7Yp0wpZldfxD0SJrWxZmB51/BAmEAG/ULldvW7sGrkKaNpIM5joWihWWUkRc7TTM9l53bQbVSCu5IhDlcpxsYIaEEDbully9oVAooSIgELg9rsh2Ylmnn/N4WgfKZiiEnaTCMbKmiW3bJBpeeDxuJIGWOphJ0we53e7I9xEutzOylmViJRt4ul0RjdoyrZj0am1xuVyR7yNaNkg51WV6jOywEcMig/u62jr2VCee1SgZVoLX53QK9XUNVFdVJZQdWlJMRoYPgMaGRip3J57ZGjJ0CF6vU25TYxO7K3YnlC0aUkRWdhYAzc1+KsrKE8oWFBaSk5sNQMDv5+NdHyWUzS/IJzfPiXodDAbYtWNXQtm8/Dzy8vNaZEPs3J54iUVObi4FhfmA0x62l26PK7fs/aVMqT+Ycy44B4D6unp+flHiaJSHH3E4P/rpj5w6BIL89PyfJpSdPns6P/n5TyLbyWR7ehxx5QVVjBsZwu3xoI2XkTZ8wxU3JGwTbccRt11/G27NzZbSLe3efzWOaKUz44gwt/z2FkaMcrwPX/jXC/znH/9JKHv9bdczbsI4AP734v94+vGnE8pedcNVTN5/MgBvrniTxx95PKHsz37xM6YeMhWA9995n0f+kHjMf/HlFzNjzgwAVn+wmgeWPgA4v1FjR4+NaRs/+umPOPyIwwH4dO2n/P6O38cvFDj7R2dz1LyjAPjqi6/4zS2/SSh7xtlnMP+k+QBs3byVX1/368gx00ziVZYKgzxa76pVq3j11Vc56KCDItlZfvrTn0YmPi699FJmz56dcvkpKaf5+fkRH2NFezwhcMVpYFnNkmHVrQd8QdASTAJltpH1BiShRLL+VllbStwhiTcUf6Y/wx9bbobfkY2HLxArm5lE1ttWtjmxrEcQI5uVRBZiZbObksuW7JF4PY58Tidkcy1HNrcxuWzxHslQPbmsYX1FvXUoREXSFW2i6rYl5ngHsuE1nYqep+LzPIZOqenranSNrv6IdUFeStkamCHZj7CIDeAQXsscV7SNbLI6tZPtYCAQU4eOZKPkRZI6hMuKfj97TDZJHbQ257lMcLXoq4bd/ng0huXIO7KyA1kZkdWtjsvVLWfAYHQgq0fXweqgDnZrHcyO6mC3lmubna+D7KAOelQdSFKurjl9f/j3KKMu+W9GTlOrrD+QXDa7qc3vfRLZnh5HaJZASNAllOxpjU7gS1LneOMI4SHuuEONI1rpzDgizNAaybBMRzavoROyLfeX34HskNpW2YL65LJF0bIdtPfCulbZwihZIcBlxbaNgijZHbXJyy2ob5Wt6kA2v6FVtrEmVjaJcVaRAtXV1RHv2aysLDIzM8nPz48cz8/Pp74+vkGtMwiZzDcmAaeeeipVVVW8+eabKV94b6Suro7c3FxKV60iJyur3XFNxLrY+AOJ3XFSlbWlZFd1NfmZme2iu4IzEGrr1pvM2NPWHSeZpcPbD2Q97lgXGyuJVSRVWdM0MRNYRZ55YyNvrtuBRGAJSY1mgpRoCAwJIQEe2znmkgJLQI1h4bO1loG9JMPWaNaculgCXLbj5KY7pjJMIQkIC6Tj8qbbENKguT5AsLwa1656jOpmbJ9BaGgmSDCqm5EuHakL8OrOj4QtEbbEduloQRO9MUTTfkXYbh1XZROeXY2YGS7MIh/uXQ3YHh0taKE1hrC9BrbPhbGnmVCBDz1gEhyaiQjZaCELo6oZK9tpk4FRORjVflxVTVi5HvS6IMGhmehNQUTIxqgNEByWBbZEGhpGrd8p32OgN4cwc73o9UG05hAiZBEcng1CoPlNzBwPRl0AvSFIaEgGwaGZ+Dbswcpy4dlZT+MBQ9Eaglh5XjI+243mN7Gy3JgFPkTQQm8OEcr1ommAJtDrA2BoaKaN9GqIRhO9OYTeFMIs9NI4Ig/b58zpCQEELAr/txFDd9L7FORloGlOsCYhBbYmMdCwBWhS8NO/no0/GMSUNkNdPipCQWpDflxCZ3tzE28ESqknRMiWXDviYDJtndKmRoo8GYRsiyYzxH7ZBXzZWI1HeJiYl0fItllbW8F+vlyqQo00mQKvoePVDGpDAXw6GJpOjjsTr6ERMG0MW7LHDKILyeaGBjy6YGVlDev27MalC75ZPJyfTtofG8txgUNDILGwAYmB23GdReJzezCxcWHQHGrCMcpKdAwsbLSW8FUSG6/Hgy1D2EiCoSCa1Angx8Dd4sAJGgYCidvtiTh3BkLNIDU04azjNVvMyBIbDfC6HQughcQOOe9GiCAgMNAJEsIrPFjSxuN2tZSqETJDWLaJhY1Ab7lLuyWUlyMrEGgYNJnNURZnGxsbDR0bC4kgw+1FAC7hJmD68VshDFyY+DEwAIGFiY4bzW2j48bG6Us+Fb/FpAGDXA40r26pn4PLZaBpmnNFUxKwAi3hwEBHb6mN0x95XG4MzcDCImiGkFbrMdHicC6RaGh4DBdCF1hYSBNClolAtNyXhoWJQHPuX9eoaWqiKDsbYYPfDKBFnpds+S6cp6LrGi7DcMqwLEKmSQgTvSWsmoFBkCA6GobuuOE5/ZhOyDQdV+CWEqP/1XUNYTjfkm3bBEMmsiXkmdbyn2z5XtDBY3jQEFjSwh8MOp9bXFdNTHx4AYGua+iGhiktBKLFFdC5r0bZxF8D/wBgoj6WE73HxLjqBoKJXQV1Teu0bG+MDRLJenz3ouuOJdMO/R5a2lRXxgbNfj9VjY0UxBl3qHFEfNlk44iuyrpdsa66PSXrMmLdejsrG37vwRmTVrdpG+H3vq1sPKJlnfc+sXaaTLauoYHRM2ZQW1vbLXfZ8Dh/4jW3oXu9HZ/QRSy/nw23X9fteqYbTdMoLy9nyJAhAGRnZ7Nu3TrGjXMs+OXl5QwfPjypB1EyUrKcLlmyhNmzZ3PLLbdw3XXXqXymbfC63TEdYUK5TsikIutyufB6PHGV07Z4ulBu9I/cQJB1uVy4OhbrsqxhGAnb/A+OncIPjp3SyZJ6llDIYv3nZTx4/dOEPB6skI1RHsDj0UF3YQZtqqoaACgenocVtCgvr8eybAoKM5yB98eVZGW5aWwMUjy6kHMuPZr7rn8GCcyYPZHXnlvLuANG4vMaVOyqxfTYiEabioomApvrKCjIIDPTjYVBqDqEx2MQWFuFaVoUjyxg154Qgd1NGFUBfF4X1dWNZGZ6yK0M0twcQkrIyHBh+00EFqGQhavOxm5Zu6ZrBmJHM5MPHoMvN4Om+mY+/vRrXG4dl7+JM06YTfmwarZurGDrjmbMNZUE/CZNjUG8XhdZOR5Ek2TrpjKASJ7X0cWOa6FlOYPrMGddOpd9p43hpgsexq6WNG4rR9c1Ns0swe8zMNwankBYUYADZ4/hgJnj+O8T77X/ggRMzS2J2TWpjUjTTos363ZgaDAmo5DhniwOiuOkMjo3dueYzLy45SVjXMu/U1uKGpFZzbo9tUh0Ct3ZGJoLcOHuxA9w+G3I8nTix1Q40l5PhnMO2R2e4vJ09u2E1qWnmcmknHK70J9kuzuuZxivKxNvpMod1EMDj3SUYBeCLCMjsawLvK6O+2yNFsWoE4/NwOiwXFtKGkUIl3ChGQK30bnnZhgGHqN9uRnEaVM6kcFth+jg0Tv322UII2a9YSJcwnlY3ihZ3dbQgi2pVqLWkILjrtjZ3+WuyEL6xgbxZHXdgIjLv01YOe3K2MDj8eAOBjs17ugPY4P+Po4Y6LK6rkfeZVvKpG0jWrYjNE3rdHtvKxtMMjmkSI0f/vCHkX7C7/dz8cUXk5np/N4FkkyadYaUtMo777yTAw88kJtvvpk//vGPTJ06leLi4nYL4YUQPPzwwwlKUSgUPYnLpXPg1BEsffZn+JsC+DI9bPp8J8PHFJGR7QwGA4EQe5qbGJqbgyYEX64p5ZHbXyAr18c1957D1q/K+PejbzPt8Ekc/d1DAbjvhdZ1VT+8+riYa4aCJnV7Gtm5pZKJB47ig/99xu5dNcw7cxbZec4g+4vVWynbVsW3TzoYIQSN9c28/OQHlIwuYPYx+1Nb3UhOXga6oWOZFoHmEBnZXv77xHu8/NT7ZOb4uOyOMxg63HEZsW07MvMLsOnznSz/xyqO/d5Mxk0eFtlvhixKvy5n9KRiDFfsj98tj6ykrLoJq8npQC/73sEUj8inrqaJklEF+JuCeDNaBzA3P/r/WPnyJ0zYfwRjJw9j8Wur2VbbiAyaeEfuIVDXRMHE4Vxx1/cBmHfmLL5cW8r9N/yrS9+hW2utZ7CXUzvo0UFhuu5Qo+gGokUhkMpxv1+hRSXgsvfSVCsyJja3eu8Vik4ziF+X888/P2b7nHPOaSdz3nnnpVx+p5VTXde56aabWLx4MX/+858j+3ft2sWuXfEDEyjlVKHofXRdIzPbcXOceMDImGMut4EWaB2K7DttNLf+9aKI8jbxgJERBaszuNwGhcW5FBY7gUqOOOngdjL7HTKG/Q4ZE9nOzPbx3QuPiGznF7VapHRDJyPbqct3fjCb+WfNajfpFa2YAoyfMpwf33Byu+saLp3xU4bHrfecA4fzrzc2oGc4s35hpTasxEcrpgC5BZnMP6t1cb+maQghcPnc5I8bRjz2nTqaBb84nkfveCHu8Xi4Reu9BWXvKirRs9qWUk57lbCbrmTvVIAGKtHvxN773UT3p+q9VygUHfPoo4+mtfxOK6dOSHin49q8OX6kNYVCMfBoa1XsT8RNh9QDuA2tY6EkGOEIyx0ocW2r31TvjyjA8cttrVeoDy2nSjntXZTltH8SYzndaxW3vSMlmELRqwzyaL3pJiW33jFjxnQspFAoFP0Ul9E9hVzTwsqp81uSSIWOTt8C0NwUSKqcRrv1hpIE1kgH0VaivXcg3j9Rymn/JFY53Vstp9GrJIMQbz2wQqGIQcg40ed7qFxFisqpQqFQDGRc3bScdibYGIAvIzZ4Q9CfPJ69O8Zy2stuvVGf1ZrT3kW59fZPoldj7q1rTpGtyqhmPI+UeYALZAFC7AKxB3AhrWkg/M62HAI0g2hCiI1gl+B25SPE0BZ3EYnQtoFsWbIhasAeDqIGoW1DyiwcJdh0/mQxjmKs4+RUq0XQjJT5ICRClILMQcoxSJkJaE7d8CJlERBCiEacIW0AsEFmgVbm1EFUOGXLQoT+LtI+qOUe9rSco4HMARECAkgZDjhnI0Sdc770gbAj+537CQF+hChDkgMyXH+nHOzxSDofWGpvRCAx9CZgAmriQ9FZuqScpsvFTqFQKHqT3KzuDRiiDaLJLKdtD/zvH6s494r5Cct1xaw57W233tZrK7fe3kVEpgZsJ8es+q3tF2jCSaUjW5LU7JXI1jX/Qn83sReI/nbCInQNcrMtDE1Pnqw7XFYnq9ZWrqfeCqF91UMlRZXZ4yXuJUjINywwrwVG93Vteg7l1ptWumQ+uOmmmyJhnzvzp1LMKBSK/siIIa15iLUURhXRipyMVlTbKHVDhuXFbH/05pdJy3WLqGi9du9aTlW03r5DxNqt+6weivZoLWqHtZd+L7Y9p6+roFAoFDF0SXvMyckhLy8vTVVRKBSK3kGP0kj3GZWfwvmtn6PVuD3VTRQUtua1zC3MoivofbjuM9pYpyynvUt4zSk4rr3R24q+RQgNpI3cW00achh28BI09/3ETIxIA0TUMgR7JIg6509mAIbzuQXTHIFmjECQAwQQYiuI8pYyBNKahtA2xpzTWvYI519tR8v2WNC2xK+udQRQj9BXR7aF+Aq0XUj7QIQob7EG2yAaW1x64xVUiLQnIvT3W8o5BKFtBlGDtA6jdS1uHULbCtQB2SCqo+o9GrTS+OUD0t4fZFHC44MBKaE5EMCrZ7cLEDiQSfea0xkzZqDrOpdccgmXXHJJz1+on9Ml5fTnP/85N9xwQ7rqolAoFL2CHpWOxrK7/gsTs+bUWWIFQOXuxhjltMv16sOIucpy2pdEWeL3UgvdQCVsOd1r15wCUu6HFfh9yufbUrKnvp6i7OxOr8fvNuaPeqicc3umHEVcbClpaKrHm53dsbAiwqpVq8jJyenravQZ3YsKolAoFAOQaMtpd5XT6LP/eP873alWbHTQXlYQY/Oc9uqlBz1ajHKqIvb2J8LfjYpgrVAoIsg0/imUcqpQKAYfmiYia02tFFK2RFsZZQ8aCmIUxF7+lVKW074j1q1XKaf9iVblVH0vCoVC0RuoiEUKhWJQEjaYbi2r7/K5iSyn3aUv3Xo1+m6962BHRP0UKyWof6EJDaR6JxQKRRQqWm9aUZZThUKh6CINwahAIW0sp3W1/pTL1ekfllMVEKl30aKUU0nyXLiK3kUPW0734jWnCoVC0Z/otOXUTsH1TaFQKPZGPqvYE/lc7wVPQ+uxjz4s5cij90mpXC3GtbZ3+1xNufX2GdFuvbZSTvsVIuLWq8ZACoXCId3Regc7ynKqUCgGPbsqGzoWSkBVm+C8pVv3xBfsBNGutRWh5pTLSenaynLaZ4gYy6ly6+1PRKL1KuVUoVAoegWlnCoUikHPa6u3pXxuvTd2e/0X5SmXtbZxd+Tz67XbUy4nFYwo5dRULoy9ihaz5lRZTvsTmlDRehUKRRtUtN60opRThUIx6BmSl9FjZQWDqVu+Cgxvx0JpImbNaQrpdRSpExutVymn/QlNrTlVKBSKXkVF61UoFIOerAxXX1cBgGJ3zynJXUVEKadf19f1WT0GIzruyGebYB/WRNEW5darUCjaoaL1phVlOVUoFIOeLbv6hzJ2YGZRX1dB0QfotFrMTVKP9qzoebSoYZKynioUCkX6UZZThUIx6Cmrakz5XLdLhx4KYuMResdCir2OaOXUUsppvyK85hRAKrOGQqFARetNN8pyqlAoBiVed6sieMzMMV06N8/b6oaZleVJKvuN46Z2utzoiLmKwYOOL/LZonejNCuSE205tZRrr0KhUKQdpZwqFIpBybFRCqndxQBAJ00eHfmcmeVOIgkzj9qvaxVTDDoM5dbbb4lO7ySVcqpQKEBF600zSjlVKBSDkugAQLKLeT3LGqKtW8mtnbrRtW42HLHXUN3zoEG59fZfYtecqpGjQqFIPzNmzGDKlCksW7asr6vSJ6g1pwqFYlAS7ULb1cwpud7k1tJodL1rSmaW7qLa9MekduktvLquEpn0AZqK1ttvEVFrTlXEXoVCAelfc7pq1SpycnJ6/gIDBDU1r1AoBiWaFqWcdlE7PaikIO7neAita0qm0TIYNvsgMmiRx1k/a2jqp6E3ic1z2jPBtRQ9Q7Rbr1JOFQqFIv2oEYhCoRiURBsmu+quF211LfR5GD8hcQqYriqnestg2EJ22d24u4Sttcp9sXfRlHLab4lx61XKqUKhALXmNM0o5VShUAxKvirdE/m8fmt1l86NVk4tKZm8X3FC2ezcjC6VbUS5EZq9/EsVthLZsvcV48GMiFphYyvltF+hqzWnCoVC0aso5VShUAxK1m2sjHx+/7NdXTpXjzKGSikZOy6xa68vM3mqmbZEK6dWL7v2RluT1TC89xBE59JUyml/Qq05VSgU7VCW07SilFOFQjEoOfVbEyOfT/zGhC6dGx3p1wYKizKTymfmOHksC0tyOyw7OhBSb6871WMUY/Ur2VtEW06lCknVr9CVW69CoVD0Kipar0KhGJTkZLZGSPV5utYVRiuQli3xepOf31jnpJ6pKqvtWtm9rCBGz1YqF8beI3rNqXLr7V+ImIBI6p1QKBROArl0xNPv/Rj9/RNlOVUoFIOSoNlqBamqbU4i2Z4Yy6mUuN2dV279TclThcSsOe1lBbHtfSl6BxWtt/8Sm+dUWU4VCoUi3SjlVKFQDEre/WRH5PPyVaVdOjfauimljElL0xGmmVz5MIhWTnvbrVdZifoCZ12j870rt97+hUolo1Ao2qHWnKYVpZwqFIpByeEHjoh8npEk2m48opXRrrreRkf6jYcR49bbu4Ph6B8Etea0d9FaVtnYSjntV2gi2uVaKacKhUKRbtSaU4VCMSjJz2mNoluQ4+3SudFKXFd1uIqde9A0jVETh8a40YbR+9KtN9pKpHTTXsUJihRUbr39DJXnVKFQtEVI5y8d5SqU5VShUAxSmvytFqrlH2zt0rndsZwuvfrv3H3lk/zptucxQ+0Vkdg8p6kPhqsr6ij9urxL5+hdsNqWlVZRsWNPu/09lR91w6fbeeL3y7t8D2FsO3H9pZRYHbhX9yT1NU0dPpdwUKSBYjm1TGtQ5MKNcetVa04VCoUi7SjLqUKhGJR8uqk1z2lXrYRaDwQO+uyDTTxw87MUFudw2LwDKSut4n///Ij1pbsIDDdwXzwpsua0fHs19173TxpqmygozmHc5OGUfl3OsNEF/OjaEyJl+puDWKbF6//+mOVPrwLgosUnM37KcCp27KFgaDa7tlYhNIHb42L0pFZ3Zn9TkF3/+pzgZ2UYZ+3HhrXb+ferX5KV42PcfsNwe1yEgiabPt/Juy9/Ejnvez89mubGAMUj8/nTrc8B8KNrT+Cg2RPYU1lPRpYXt8egrLSaomG56IaGtCUbP99JbkEmOfmZuL0uvl63jeJRBQSaQ4SCJvf98p8AfLDic5b++7KYZxcMhDBDFhlZjsV7984atny5i32mjiYj08Mfb/k3O7dW8ZObTyGvMItQ0KRgaA6WZVO+rZr/u/d/VJXVcuHikxg3eVhM2VJKtm+sYMjwfGoq63nrxXUc/I1JTDxgJJZlI22J4dJjzrEsG39TgIwsbztr+CtPr+LFv73L9G9P5pyfz8O2bZrq/WTlZgAQCpo8ee//qM6ymf5DsIwQ/mAQr8+JJv3FR1v44y3/5qhTD+WkH36jCy3MwbZtNE2L1LOp3s9Hb35JUUkuU6aPjRxrez+6rkWeR1vKSqu47/pnyM71seiu7+PqQkCwgYYWk+d071fGFQpFJ0jX+lDVxQBKOVUoFIOU+qZQyud2pJwG/CaeDtLLAGz4ZDsbPoH3//d5ZJ8A7NJG/Net4S73BnxarCJUXV5HdXkdALt37uHyk+9Jeo0Hf/XvDusRZk9zE9KyCN2/hr9kbsDVcp/Rymhb/v6HFe32PbLk+U5fszMku8fsvAzqa5riHrtr0f8lLfeeX/y9U9d/57/r2u0rGV1IWWlV0vO+cdxBvP2ic+6Hr6/nw9fXJ5RtwuTTF3UgQCb3c+i39uWbJ0zlj7c439+r//qIYMDk7RfXJr3mjKP2Y9WrX7Spx1Q8Xhcrnvkw7jkZWV6aGvwAjJ8ygk2f72gnE7JsXLrG9G9PjtxHQ20Tb/93HUeefEjSOg1kot16pXLrVSgUirSjlFOFQjEo+cZBw1m/tTqyLaWMuwY0HkaUW69ptR+wVlY2MGJkXkr10vo0r2LU/UsJnXwefUkixTTddKSYAhHFtDMIRMu37fz/oze/5KM3v2xTXnLFFGinmHbmvLBiCsRVTKNpq2A31HQtDdNAI/p9tJRyqlAowigrZ9rol8rpsmXL+M1vfkNZWRlTp07l3nvvZebMmQnln376aRYvXsyWLVuYNGkSd9xxB8cdd1zk+E033cSTTz7Jtm3bcLvdHHroodx6663MmjUrIlNdXc2ll17Kc889h6ZpnHbaadxzzz1kZWWl9V4VCkXfMG54bsz2JXe92qXzSz2NuAyNsl0N/HT1HrZHBbK54r43uej0aUydNIS/vvQFTQGTqppmhCawbUl2hpuQaeEPOufkZLgRmkBKSaM0CQlnEFxvBdEMqGkI4DZ0PG6dkGnjdumOrD9EIGghBGT73DT4QwzJ86EJQUVNEz63gdul09AcItiyvlUABbleLEti2xIENPlDuAwdaUhkwNlXJ4M0NoXIzfSg6wJNE1S2KCI+j4EQAq9bx7Yluq4RClm4WtxdNeFY2kKmjWnZSAk5mW6CIeees3wumgMmOZluQqZNbUMAj1tHE4LsTDc19QG8bp1Mnwt/0MJt6OyuacLrNsjJdNxdpYSQaWHZkgyvy3leTUEamoPkZ3uRtqQ5aGJaEkMXCAQ5WW6kDYGQiWFoCAS1jQF0TZDlcyME6JpGoz+Et6U+li2pawxiGBqZXgPLkhi6hq4JNN35PuubgtQ1Otf1uHQ0TSAEBEMWtY1BdE2Qm+VBCEfZCYQsNE0QMm2klJiWjd8y8PhsdF0SwMK0JP6Aic9r4HHpNAdMfB4DXRP4gxaBkPMcG/0hhBBk+VyEQjZCQCBk4XUbCOHkrrVt5xnY0pmEsaVE1zRsWzqql3A8AFxhV17AtiWaEDT6Q+iawDAc5TmsqoVMG9O2eWf5p8w7ezYh06axOYTbpZPtc6Fpgt17mmkOmgwrykQg2F5Rz4ihWQSDFv99bzOjhmYzcVQ++dleGptDrNuwm7fWbufMo/claNrsOzofIQTBkMXGHTXsqQ8wZVwhWT4XUoLL0Gjyh7jvn2sYXZzNyd+ciMel8/nmKrIz3bgMjeaAyYghrb/jXreBaTnt0uPSaQqY7Knz4w+aDM3PxO3ScBs67322C9OyaRrmh5Z4aY3+INJwRqSfba5iTEkOXrdB0HTaqK4JGppDZGe4EELQ2Bwiw+u8K5W1zVTX+SkpyKC8uonCXB9by+rYf1whazfsZsrYQgxdIxCyyM5wUVXrJ9PnwucxaPKH8HkMpHT6grwsD0HT4r1PdzG6OJvxI/IwLTvi0bGzsoGcTA9ZPhdCxAZtC0/CBUIWZVWNjCrOBpw+INPn9EvgrKvXhdNm9tT7CZk2JQUZ1DUGycpwI5H4A04bLKtupDEYINeXiUvXaA6a6JrA2+LuHXYND/cVUkoCIQtD16hrDJKb5UHXRKQfsm1JbUOA/Byv027DfYxp4zI0LFuia867KWiNAWDbkuaASabPhWXZWLbzrlbWNrNhew3TJxejt7y7CoWi/9LvlNOnnnqKRYsW8cADDzBr1iyWLl3KvHnz+PLLLxk6dGg7+XfffZezzjqLJUuWcMIJJ/DEE09wyimnsHr1ag444AAA9tlnH+677z7Gjx9Pc3Mzv/vd7zj22GPZsGEDQ4YMAeDss89m165dLF++nFAoxIIFC7jooot44oknevX+FQpF75Cd4e52GSHTBgGfehoJjol2v7W47s2P4E3HBdg+bBiCNpF9BZGZ153E7pctnoQRu67dekpHbG8ptq2sAGTLNSO2sTiC4SqGV+Tuiq6XbF9W26JE1HZb2hljw0Jt6tCm6Jj9icqOPm9b231xrhPvGh2VH6HlPmRYuOXEnVHXib2l1qu1ijv7ZLujrVGTo4+1nhM+i4isbFvjeA2gDe0Pt30isU8jtsjYL/Ho+19wJjpoVRSklJHvW4Q1pDaWePuTFoVKOBMzEud9efGZOEGwwtV7ndiHEq5y9S6Wrf8qtqJtZRO02RQAAG2rSURBVBIQLRLdtgVQMGE3RZNqAHj763ep2vh1uycwmBkb8pJla5iWjaFr9Ocn87eX23sVAPzhyqN7uSaKgY6K1ptehOxn4fZmzZrFjBkzuO+++wAnmMOoUaO49NJLueaaa9rJn3nmmTQ2NvL8861rnGbPns20adN44IEH4l6jrq6O3Nxc/ve//3H00UfzxRdfMGXKFFatWsX06dMBeOmllzjuuOPYvn07w4cP71Tdw+VWrF1LTnZ2V2+9R7ClpLK+nqLs7A7zKSoGH6p9xPLT37ZfL9lZPvU0xmwH40TejVDfeddHGaWcKgYPreooyH48wI+HNczTsVCKdNbVPl0Mn1DBkJHto1IDaPbA+p7ShUsKdNluRmbAUJyfEbHyKnoWt3AjLI2zsk+myMjvs3rU1dczdOpUamtrycnJSb2clnH+ARfehu7uWgq6zmAF/Xz60HXdrudAp18NgYLBIB999BFz586N7NM0jblz57Jy5cq456xcuTJGHmDevHkJ5YPBIA8++CC5ublMnTo1UkZeXl5EMQWYO3cumqbx/vvvd/e2FArFYMfXeSutmjlVDDSiA1fKBH+JzotXRvS23WJR7cxfsuun8gdQuSs3beWnUp/+SGiAd1rle/pm3fpgICCDNMhGzAGSIqu/MGPGDKZMmcKyZcv6uip9Qr+aKqqsrMSyLIqLi2P2FxcXs359/CiHZWVlceXLyspi9j3//PN8//vfp6mpiWHDhrF8+XKKiooiZbR1GTYMg4KCgnblRBMIBAgEApHtujongmZTIIDhcrWT14TA7W4dpPqjzu0pWVtKgsEgzX5/3BlnAXg8rbPcgUAgqYtctGwwGEyaNsPbD2Q9bnfkvkOhEFaSXIepypqmiWkltpJ1RdbtckVSOfSkrMsw0HW9nayUkkCb9hEta1kWITPxj4ih6xiG0WVZ27YJhhJHx01VNnw/qcouuXg2v/jDu0CU+yGATJ4iRggoNl2UG6GwePLRo961eUBhK+vpYEb0a1WkPdE/NV0xnokEn9tvd+55dPeptT1fAv4md5Ljvfs9OV7Koo1TdXJ6S1YiETLBt98fKxyF26XF5LB1fgda3dOTFZ6qLFImbT/9QhbR+nKnKKtJDa/0EAgEaDKdwGt9MY5oSjKGToV0u/WuWrVqUFtO+5Vymk6OPPJI1qxZQ2VlJQ899BDf+973eP/99+OuY+0sS5Ys4eabb263/5Z7741RLMNMGDOGM086KbL9m/vvT/hSjh4+nHNOOy2y/buHHqLZ748rO2zoUBaceSbgDKj/8fLLbN2yJW43UpSfz0XnnBPZfvBvf6NyT3yXpdzsbC754Q8j248+9RS7Kiriyvq8Xn5+4YWR7b/985+U7twZV9ZlGFz1k59Etp/6z3/YuHVrXFmA6y69NPL5mRdfZP3GjQllr7z4YtwtEwPPL1/OugSTGgCXXXABmRlOrsGXX3uNjz79NKHsT88/n7yWjmLF22/z/scfJ5S98Ac/YEhhIQBvvvceb69alVB2wfe+x7CWyZX3PvqIV999N6Hs2aeeypiRIwH4aN06Xn7jjYSyZ5xwApPGjQNg3eef8/wKx31VAEXFxVSWl0fax6nz57PfpEkAfPH11/zrpZcSlnvC0Udz0JQpAHy9eTNPP584Zci8I47g0IMOAmDr9u08/q9/JZQ96rDDmH3ooQDsKi/n0b8nTvHxjRkz+Nbs2QDsrqrioSTrwmcdfDBHf8PJDVlTV8cfHnusnYwXJ89pTv5+VDRkMWV8AROGZ/LQMx9G3CuLMqqpD2QRtFxIBBleLycfMZk3Pt6BlJJdVZWYmiAoDfSgxAiaGH6LoM+NLgTCZcC7GxC2RFo2dqYLEJh5HkKFGRh7/BjVzQjbRhdOHlApQJgWgaFZuPY0I4VAunX0+gDClmA7YwHbYxAYmY1WHwBbYtQGsHI8mEUZGHV+9Co/doYLPWCBoWEELUzTwspyozeGCA3NwMpy49rdhF4XxPLpmAVejMpmpKEhLIkIWlhZOka9idQ1pEsjVJKFCJhopoW+x7m2NDTsTBdawEIETKwMHRGS6E0m0q1jZbrRAs5naWiIkIXUNWyvgauqGdutoflDoGlYmW7sLDdIG6O8EelxQcsAUlhgZbnRmkOIoOkcExI0Da0xhJXnQTSbznMKWUiPhjR0hOk8e63JQq8PIF06wrIxC31IBCJkIg0NzW86a2y9LkTAcupk2kiX5jx0w6k/lo2wbKRLd55nrR+t2UIISSjXDbqOsEC6NLSaJjQLzAIfSJA+A0yJUdXkfC9mCJ/LT8h0Oe2jzqmD7TYwdBMpBKEcL3oGUBbClgIzx4urphnbrWM0BLEy3Ri1zQQLM9HDqZLC40VNgCbQTBPL7fSRelMILWhhu53JqVBhBu6KBqxsDyJgRc41zBAhtxsjFEQKDV23COHB9ugYNX6m3A6b3h2NkJKQpuPNDTBl+ibW/G8yupS4vEFCpgvT1plwQClVu/Kor8wir6Cekn12o3tstm8ciiYtMjwhqnbn4q9zYwuNnJwGho6vZtOaUYAgqOu4bQtsid0yGBZCEhQG+0zdgi00Nq0dicuWCCmxhQZICgpqqanPwgrqZBQ3Ubc7Cwm4bMmYKRWIbMmad/YhKG00U2K6BUbABl2y8bEJCFsiNA3/JJvAUBtMgW89CFsgbIlRqzlrVTWQLoke0tEMHS1XQ+6xnElCt0AzJbYPEBLLEGg2uBs0dF1HaqBZELRCzrplG4K5NnqjDhpoIUmmIThi8mi+3FqDAHbUVuEx/LitEH7LgyV0vCKAjo0vKxuXXoDh0ThwnyJWrv6IqnofIY+GK2Cj2ZJhmRVUmbmEyGLCPsM4qDiPtzeUs3N3NR67CUPaWKaOaRr4XH6wodGVTcNQX6QPlXaIIbtCmKH24xld19h33AhO/OY4/vrienZXVRMyzZaV0s73l++tZY8/F00TFBcNiZxbU1tNIBhEStHO1V0IGF5cHFnrXFtXQ5M/dvJREzY+w09jKINhLWO9AyYU8M7Hm2nyxyorZsGWiNofM474X+fHES+9/iqrP/0soWzMOOKd2HGE8zRa7zFmHPF+4nGERPKj750ZGUesXP0hr70b33MQWscRUkpWf/pJ3HFEuC4x44gvWscR8eocM47Y0DqOCI85lpY/Fhlz9MU4IphkElvR/+hXymlRURG6rlNeHhsMoby8nJKSkrjnlJSUdEo+MzOTiRMnMnHiRGbPns2kSZN4+OGHufbaaykpKaGijdJlmibV1dUJrwtw7bXXsmjRosh2XV0do0aNonRHGYbR3nKal19CVvGEyHbpjgoCwfizOb7MvBjZ7WWV1NfXx5XVXRkRWSltqmrq2bK9LG7y9JClx5S7q7KOHTt3tZMDGFJkxshW7Glgy7b4stnZ2TGyu2ubEsp63J4Y2aq6QEJZIEa2ujGUVDajaBxer2NprWl+Oamst3AMWS0/FLWB15PKevJGktUSPKsh+G5SWSNnOFnFjhLZZK9OKqtlFUfuz8/nSWXJKIrIBsTGpLLSUxCRNb/eFpEVQmDrbkqj2ofpym2V3VKRtFzT1fo9y521SWUDIrP1u6v2J5X144vIao0klT3kUHdEdk/Ik1R2//0Pjcg2a7uTys7d50Cuu/JsAGrr6nj4r63uNHtalpeGjZmzDj6C7558JN89Gfz+AD/68XkYgK9sUkyZBpCRmUnx0GJKQwCCQNBEC5qIDDfuPUCDifC5sPY0oWkaheNHUlfq9Gkhl8AVtJFuA7uiHi3HBzk+ZEMAT04Go/bfh2B9E83Vdexxg7l9DzIQwmgI4NlZF6mH1hCgcOJorECIjDF5lG0uxWoMoRXn4BZATRAZtNEz3Ow8egi5b5UhsBCm5QSq0aF+dgmBMVlkrq7Eu7UevaqOpgMLcJsCvbbZeTjSRKt3BqhSgNbsKJO2GxAWGibBA/Jwf1GN5TMIjvSR8XkNWgM0Tc7Dt74G2yWoOnMcee9X4tpU21KWRLSZ+dZrW2fFtZAz8Gg4cTz+HB3vJ1W4dzbSPDmf4IhMpw4+Hb0mSMaeEHam21EYd9ZhenQ8W+vxbG1o1ya0lsF24OAhuNdUOMqxBGk7yokI2oSGetHrQriqnDo0HTkCGQxhbKlDazbR6539oaE+9nxnFK4qPwUvboPw1yMlMgiWkIz5dj11G3VGzwsw8pgA0oKaL100V2g0bNfZ/j83OcMtMve3MDySjGEWX/41wzHW5EDJYSFsEyo+aIBW3QHdK8keY1HzpYG7QBKsaxkEZ8Hhv6ujdoPOp8syIVDD2AUBzCbBtpc8MRbcYd8Msuut6EnXlueVB5Mn1zB5cikQNp445Y+64C2SRrUQrcGfxk4sj/ub5cjZ7D9rW8TDQ9o2oSQWlGnTN6OHPSZsSSiUeGCq67ojK2GTOJQtpYlT6eTk5OAp9hLSm5FIGhqaEeGi24SmyM7KZsgQR7mwbcmWrZsTlpuZmUnx0MLI9qbNmxLKfrveYuGCEyLbCy48j0AwQBDnFdQAq+VvwtD9WHztzyKy7732dzz19USvEK5sGVbsO34Cv/rxQgDOAi67YiG7K3dj43ybLog4Zo4fPpLDjr2AFz51Uh1t37Gd0XnbKN1a2u47HFI0hBsXXQbAITMOZfHN17FxU+wEc10j6DjjiKU3/Smy/1dLbuKL9V/EtcZ73B7uvuEvke0777qdNevaTxr7ccpeetNTkX0NtXfzxppoRTrE1m2tXnKpjiPq+sE4ItCVccSnm1IaR8Qj0Tgi/pij98cRppl6XvO4pMvXfmA5zaSNfhkQaebMmdx7772AY5ofPXo0CxcuTBgQqampieeeey6y77DDDuOggw5KGBAJYMKECZx77rncdNNNkYBIH374IYe2zLq88sorzJ8/P6WASF99spns7PbmeE3TYl11E1hCuyMrpU357jJys/Pju/UK0d6tN0ETaCsbDAaxk7i+er3ePpf1eDyxrrrJ3G9TlDVNEzOJG0pXZN1ud6yrbg/JulyuWLfeFlkpJTV11eTlFLS69UbJWpaVdNBnGEasO04nZW3bTjpzmaqslDLGtb47srqu42qZLe+O7EO/fZGdbXJgCqFRu3UXtVt2kTWiiLzxI9q9n+EUD0JoUfuS51XsSNYMBGncVUXWsCIMryeprJRg2SaGbmCZFv6qWrSCLEIVNQifi6JRxTQ3BQi4QbdbDJU26FKjMQOCWyux6prIHlOCWzci9yMF2BpYOrgsp75Cgo2NkGDqzuDXaGnOYc9AqWsgnWvZ2GDZNDc14cnKQEej2QvuENj+IP7aJtxDc3EJHSltJ72E3VqWkGAazjWcOglCLhCmRLclpuG8J1Ur14NpU3joRGyfC3v7HtxFubgzfQQ1G6PZRLgNR/G2W12wQkbLNdwarhAIKZ1+VYBuOd+tbYiwX6ZjwbQFQkKorpHqr7fhLsgmb+wwhHTqbQvn3qUuMHVHhRN2q7ucYTrPVNqS5l3VeHIyMbJ9CFvS2NSEGXSsopoQeHOzEF4X2BINQUNdPTVrNuEank/hlLG4A5JgKIDQdQxNx9KcagoJgWY/hs+DlBbNpVXUb6vAtlv7SgkM//Y0pJDYmkC3BUIIdAtsIdEsiaU7zyvoavnOWmLniBgnVUlQt9GkQNigSafdBNxw++3n0mRbSE1g2jaFHh/BYBCJxG+ZkVykAdsiaFkUZWShG066pW0NtQxzZ1AT9GPaNgUeH3WhANkuJ3XQdvkQAW0tUkomum4j6HeCGbo1J5VQyLaoCwXJMAyy3F4eL1vNa1VfowuNq0d/mxJ3Dm5NJ2hbmLaNJSUeXUfTNdB06oJ+slxusoVOfYuSrAnnvnUh0DWBKSVZXh+BludqBYNU+ZvJdXtwaToXv/VC5Hn/+ahT0j6OgI7HBpv31PGb5W8635wtuXX+nJjflWjZ/jiOeOalj3lvzRYATv/ONKYfOCZyXI0jHBKNIzqSjR4bxBtz9MU4or6+jn0OHNdjAZEOvCB9AZE+eVgFROpXllOARYsWcf755zN9+nRmzpzJ0qVLaWxsZMGCBQCcd955jBgxgiVLlgBw2WWXccQRR3DXXXdx/PHH8+STT/Lhhx/y4IMPAtDY2Mitt97KSSedxLBhw6isrGTZsmXs2LGDM844A4D99tuP+fPnc+GFF/LAAw8QCoVYuHAh3//+9zutmEbj8XpjOsJEdEYmFVnD5cLr9cQMXBMR/aPREfFclfuzrMvliigQPSkb3QEONFkpbVx+d8L2oet65AemI7oiq2lap9twV2SFEP1O9tLrvxtzXErJ7rIaiobm0tjgx98cZEhJHmbIsUq6WqJENtQ38/SjbyAQnHXRUWiaoLkpQHZuBqGgidvjtM+6mkbKd+5hwuQRkbQdYQL+EB5v/HYc8Ieo2LWHEWOGxJxnWzZCc3JnVNVUUZhX2Km+IxQ0aWzwk5ufyaYvdzGkJJesbB+mZeNy6e0Gqes+3ETtnkZmH7EfTY0BcvIykBJ2bN3NsJGFfPrxFhrrmsnM8TFxv+GYIYucvMx29yilpL62iYwsL5oQjhIQRXVlPXkFWQgBpRsryMjyMKQkz3nGdc288dJaRo0fykHTx0fOMUMW6z8ppfjms8jM9JKR7SMR/uYgpRvLyS/KJr8oG8PQMUMW2zZXMGr8UAyjc+9E9P3U1TSRm58ZUQbCz66mugGvz403KqCWaVox1whPAoT56rPtrF9XyuFzDyAnN4OKshqKh+Wzu6yGgiE5NDcFyMj0OPlZa5sYUpLnKM+2RNMElmW3uwd/c4D1X2wm05vFiNFF3HzakpjnceeyC9Fa8vSG891WVdTx+ZqtHHDoOHwZbjweFxVlNXz16XaGDsvD43MzdmKxkw+0wU9mlpemBj9+f4idWyt54sFX0W1w+SHD5yOjzXNzt/RpHcXF3zffsVTlZGZG9uXRmve0MTSCCnMdCIGu1zE0Z2S7MgqjPme5PLha+j2fz8vQzNyk1y/ytdbc50vcroBIubjc5Ga21lForW287W9gusYRHY0NxhTkRT4LTeByJ/5diaY/jA3cbjejRxbxwTpnOZHL5U74bNQ4ouuy0WODnhxzdGccEUziPZEKKpVMeul3yumZZ57J7t27ueGGGygrK2PatGm89NJLkaBHpaWlkVkfcKykTzzxBNdffz3XXXcdkyZN4tlnn43kONV1nfXr1/PYY49RWVlJYWEhM2bM4K233mL//fePlPP444+zcOFCjj76aDRN47TTTuP3v/997968QqHY6xBCMHSYE0I/OzeD7FxnsGq4Yn+Qs7J9LPjZ/Jh9YcU1rJgC5ORlkpOXSTwSKabhY6PGtV9jH1buuupE43Ib5BU4A+gJk1sn8dwJgj9FK4O5LfclBJE6TZs5Ie55bRFCJLx/gIKiVnVlzMTYYHlZOT6O/97sducYLp0DDhnXqet7fW72OWBUu/PH7TOsU+e3RQhBbn5m5HM04ecbc602imPbc/bZfyT77N+qYI0Y7QT+GzbKUbGi20hY6RVCoOthq0b7gaLH62LkuMK4ExdenzsygSCEwN3y3RYV5/KteQfFyJaMKKBkREG78jOznEFkRpaXjCxvzHeYbtyitT5+WUY2U5LK61HP2+rAs2FvxuNqHT6OyBt4Fh49ahyZLBiiQqHoffqdcgqwcOFCFi5cGPfY66+/3m7fGWecEbGCtsXr9fLMM890eM2CggKeSBJYRaFQKBQKxd6FoNXiVmW+zhDjqKTyepRyPpiV07BrskTi7qTlqz8RnowBx3tEoegSas1pWlHJChQKhUKhUPQrCof0jvXUI1q9CZplaYfySjltJWwxt/pX6JJOEe1KatkDr/4Kxd6MUk4VCoVCoVB0msLh7V1ze5qq3fGj0/c0LpF8zWhb9KjYsWYfKGX9KYZl2MXZHoDKnR61lt1UllNFV5Fp/FMo5VShUCgUCkXnqdpZ3avXq6lun+anp3CLIR0LRdHXltNAkmiwvU44mqzdj+rUSYyotfGWUk4Vin5Fv1xzqlAoFAqFYmAQaA7i8XU+WmpXSafyoInORVcN09fKaci28PaToVuwJbVIWV36Jg/SRXRgTaWcKrqKitabXpTlVKFQKBQKRcqk25IaCibOr9jb9IVy6olaHxkvf7mi60SnqPrkyx19WBOFQtEWpZwqFAqFQqFImd3bdqe1/Bf+/n5ay+8KRh8op1MKWoM22f1ozelA5stNZZHPZbtr+7AmigGJWnOaVpRyqlAoFAqFotNktuTqDfPyY6+m9Xob1+9Ma/ldITbPae+MJKOvqZTTnmEgBnFSKAYLSjlVKBQKhULRaWYdPz1mu6m+uY9q0jNkapMin6VM7kIc7dZr9pLlVItRTvvn+siBpjTnZvv6ugqKAYyQMm1/CqWcKhQKhUKh6AKGocdsNw9w5VSjNZiTTTCpbLRyatP7yml/zSnaFAz1dRW6RMmQrqUQUigUvYdSThUKhUKhUHQaofX+0MHfnFxp7A4anshni0By2T5x641SiPupcmoNMDfZ6DynCkWXUWtO04pSThUKhUKhUHSavggY+4cl/05b2ZpoVU6lTK4E90VApN3Njb1+za6yZc/ACipUVJAVs13f6O+jmigUirYo5VShUCgUCkWnKRxe2OvXrCyvS1vZXbGc9kUqma9qqiKf1+wuSyLZd7j6wJreHVxtXNO/2lzeRzVRDETCeU7T8adQyqlCoVAoFIouUDx2aMdCAwiL+shnWzYllW22WtdWvljxedrqlIjHv1rX69fsDOX1yZ9bf8Pnc8dsV1TWJ5BUKBS9jVJOFQqFQqFQdBppp99iWFSck/ZrhKmxPvr/7d13fBRl4gbwZ2a2JaRBQhJapIMUpVcLKoqK3VPOQ0VEVASknIioCMohWA6xINj1J3ggd4rKIR5SFKU3BSmi9JJACKRvnff3x2Ynu8nOZgO72U3yfD+ffGBmn7w7u3nn3Xn3fWdG+/9hx/sBs9n20im2VjXwlX1rk3WHjkV6EypFKTPSu+Knqv+igaoxnnMaVuycEhERUdCcdlfYn6NNhyZhfw5/7CI74OPt4tO1//dKuijcm1NtFDvYUSei0GDnlIiIiIKWdlH9sD9Hq3aNwv4cHg0Ng4LOKl5Xg4pRTAGSNV/juqW3Y7nI6/9ENR3POQ0vdk6JiIgoaEazMezP0ap947A/h0eq4fqgs5G4Wu/Lfa6rkueprGNeV+jde+pMgCQRVUb37t3Rrl07zJkzJ9KbEhGGSG8AERERkTepCu9XU5nnUlD1ndNGcVV3/m1lGGQZzio4/5go6oTr/NCSMjdv3oyEhOjc76sCR06JiIjogpw7Hfr7XMbUicy0WVU4dB/zvZVM1c3Ba5VUevsetQqfN5A65to9rZmIwoOdUyIiIqqUNt1b+Szbiu0hf45BD/YLeZnBUKH/WmSvUdaqGjkFfO8jGi2jlUZFqThEVAPxnNPwYueUiIiIKmXgcN/zIDMPZIb8OVLSqu4iO0lKV+3/Kmy6OSUC55wCvue6OtTwXy05GIW20H8hQUTEzikRERFVSnLDej7LifVD35E0VcGFlzwkmLX/q0K/0+XdSVSr8KaEhigcOX348h6R3oQLkpQQG+lNoOqK9zkNK3ZOiYiIqFIMRt/rKYbj+kVGU9Vds1FG6fmT0TitV5EjM2IbSHKd0s5dj4wGEdyS8zP41p4+y0VhmJpORJXHzikRERFdEKcj9FNNDcaqO6fRu0OqiiLdnPe0XmctP+dUkb066mr1G/JpnpHis/zH4VMR2hKqjni+afiwc0pEREQXxGQJ/ZVbFaXqDlEcIlv7f5E4opuLjnNOo6NzaojC0dzKKHsLIXZOiaIDO6dERER0QXau/S3Sm3BBJJSe32pAnG5OQWmHpipv6eJzzmmUdAR9phpXw5HTsjZsPxjpTaDqQojw/RA7p0RERHRhju0/EelNuCBJSunFfVTo3+dUkiTIJR3UKj3n1HvENkpGTmta59TpjI6rIFP0461kwoudUyIiIrogf+6o3qNOimTR/q+iuIJs1XdOvc855bReIqrJqu5SeERERETnSVUFZDkMlwUGoCBG+79LWANnJRkOocJVpbeSKb04FC+IRBRh4brtC3cjABw5JSIiomognNMuFcmrcwr9q/W6s+5Dpyq9IFIUnnPqvU1/ZJ+N4JYQUU3CzikRERFFvYLcwJ3GCyF7jZyqFYycGiLQOVW8riwbLSOncjhublvF6sSaI70JVA1Javh+iJ1TIiIiqgaWLPg5bGX7TOut4JxTWTvntOrm4BmjcFpv2VuxVEcThl/ns5x5Oi9CW0JEHuycEhER0QX74fOfkHcmP2zl/7EnfFcElr0uiOQSgTunZx3ux3Mc4RvJLcvgc0EkXlU2VOLqWHyWX35neYS2hKoVEcYfYueUiIiILtyyD1bg1WFv4PTRbDjsTpw+dgZrPv8JZ0+dAwA4bA6IMqONqqpCCAFVVeFylY4IfvnmUrz8wOsozsmDEALFZ3KRdzQLPy/ZgP3b/8SZkzkozC1EUX4x9m//E+899QlWL1oLABBC4PSxM3C5VOxYvRP7t/0JAMjJPIszJ3KwZ+Pv2Ln2N+zZsA/7t/0JW7Ed373/E354TcBeJKDCiiN7j+Hw7iN+X6dwqXCuOgnb3zfjXzP/DVVVUZRfXO61nT6ajQ+fna9tV2WdOZGDpe8sxz+Hv4XM9Qe09YV2O/JzCnyy+WcLsGfj73A6nMjJPItdP++B0+EEABz67Qi+fHMpTh7M0vJH9x1H5qEsBMNWZMPKz37Adx+vhMOmf5sdb6qqIjc7D06HEy6dc4XPnMjBjtU7tTILcwtRXOg7pdpTPwAgNzsPf/5yEGqZkWMhBM6czIGtyIada39D/tkCHPj1EH5ZsxMupwvWIhsO7jpc7vcABLzAVtm/p7fMQ1nl/gYVEULg6L7jyD5+Bi6nC3arHYtnLcGXb3wDl9MFIYTf5/S3zmF3+uw7F8Jhd2LnT7tx+mh2pX7v1NHT2L1+r89+683pcAZdX4i8SSLQ3keVkpeXh8TERBzefxIJ8QkR2QYhVJw5dwbJScmQJH73QL5YP0gP6wbp0asbEwdMCftzHz/se8Bcr348YgKcJ1ivQV3knDy/i/MUq4chICBLRlikRtp6k8UEu9WuLR8sPqP9v1lMclBly4oMVecgXiurw0W4e8LtWPnZD9jy3Xafx4qcDmQVuTtDdc0xSDK7R/xiE2LR99aeWPHp6qC2Q48kS0htkoKczHNo36ctdqzeqT1mjjHBVmz3ybfq0gIXtWuCuVkHYC20wuV0YXLX7tj6v19w4s+Tfp9j6n+ewq6f9+BcVi6+X7BGd1va92mL39bt9VmX3LAezpzIAQDUSaqDwnOFQb2u/oP7lXuuO8bcjP+++532mrKcKkxpiSjYdQSm5HikmUpvZPHwyw8gITkBn7/6BY7sOVau/DbdWyG1SQrWfrFeW9eyc3N0uqojElMS8MHTnwIAbht9Ew7uPIxf1uwsVwYANGrVEMdL7hV8x5ibsenbrbjk8vZY9sEKn+fqNbAbflu/t1z98Eisn4heA7vh+/lrcNntvfDDYt+p8C07N0fbHq2xZtFaFOYWoWWX5qibmoRN327VMrePvgnx9eLQqksLmCwmnDyQCVUVaNgiHTtW/Yqv5y1HSqN6Pu9H49YNcez3E0jNqI9O/Tpg83fbcTbrHADgwX/+Da3bt4ro50pefh4uatUAubm5SEg4/+Nzz3F+j1v/AYPRUvEvVJLTYcWmr5694O2s7tg5DSF2TinasX6QHtYN0qNXN375YRc+e3FxWJ+7bOe0rLiEGBiNCux2J2RZhqxIiIuPgaoKFBfaoBhkCCFgtzlRJ94CVRU4VzL1OCUtCU6nCwV5xbDEmOAynoQkq1CdEmBNRXxirHZepc3mgCLLUFUVJ615cMgqZFmC5ZwEk8GAevXjIcvu55IkSRtNkmVJK6Oo0AZJkiArEgryimE0KjBbTJBkCSaTAUIVcDpdMJoMcLlU5OcWISbWDCEEnJLAabt7GrFZVpAeEwdrsR1GkwE2qwMCQHyC+7xZIQRcLhUGgwKhCtgdThQV2BCXYIHRWNrxstvco5pGs8GdFQKFBVbExpohK6V/Z7vdCZdTRUysSVsnhIDN6sDeKxu6R/wAtP41B0WHzkJRZNSrHw9JkrT3AwCcDhcgAUUFNsTEmmA0GWC3O1FcaEOdeAucDhecThdi65ghl0xjdtidMBgUQAKE8B3ptNudEEJAlmUYjQpUVbhfj8mA4iI7FIPsfl+FgMPhgsmr0+lwOCFJEgwGBUdPngXgfs9kSYIky2iUngS55O+oeL0XNqsDxUXu7ZVlGcWFNphjTFBd7lFMS4xJ+x3v1+79nhlNBkAIFBXZtffUYHCfU+x0uuCwO2GJMWn1qCCvGGaLEUaTQatPLqfL/R5JvrdYcjhcMBoVn/fe+zDfWmSH0+mC1epAQlKs+31zuf/usiwhPjFWqwdmsxGKQYEsSxCqQHGxHZYYI2RZhsPuhLHkvfW8Ru/3qnS9gEt14ZX/TWPnNAjsnLrxPqdERERUaR0uaxf254hLiEFBnv45oP4ey83xP6pWNnvyaOkIaHGhDXVSndrVMgvyipCf6/95XbEqVKOA6gJUVYHN6sDJozkVvZRyrIDuc3gU5runuboUwG5xdzLscEKcsZfL5p0NPJpYVBD4KsQeeu+fPw57qvb/PRcnouHvp+EAcOLIGf1fApBf5srL3n+byjx/KEgA7CUn+6kQAFQcOpLt87gMQEXpKYE5+cVQStbJZ71zEkTJ/6WSx1UI7fc9GRfcHXrlrAS5pFwJpacdlv19Ka/0MU8XT4YEFQIKfKcme7ZRhYAESXtU8npchYA1065tr1qyPbnnivxmvcvxPGfZkS336/TqjHter+yenu3dya/2hHD/hKNcYueUiIiIKq8qDjYTEmMDdk5DSXUaoBjd52nGpeYCAIrPxsHlUADhdSsXY+kBZFG8C+ZiGVJJz0ESgCh5WzwdXSG515esBSC0dZKQ3EULlPxyaVgSJR0ASbgP+b36IAV1hFehXl0JIZX2cjz/evPux4gyy3rrAqxXy1SBY3e0LH1O7+f3ty1621X2eQNl9cos+3wVLbNPEDbx2zKx9ee96HFFh0hvClUT7JyGgc1qhdVoKrdelmWYTKXrrVb9bzEvJOt0OGC12vxe5l2SJJjNpefr2Gw23ZP+y2btdnvAE+8tFkvEs2azWXvdDocDLpf+VQ3PN+t0OuF0OkOSNZlM2vSlUGaNRiMURSmXFULAYbf71A/vrMvlgsOhfwEDg8EAg8FQ6ayqqrDby3/Tf6FZIQRsNltIsoqiwGg0hjxbVft9ZbL+9ntP3bDZ7D77HNuI2tVG+OOZcgiU3+9FuXt9Sl6fPf4v8OI/668s6HdawsBZbNQ6px4xdctf9KbYFeuz7DBWzdVzlYojIaPXRy0rftdh5F+S4btSCuL/warodwI9XvaxipbZQQ2L/G7peO2b/+GjHi0BROY4whbg8/F8SN7fDYW4XGLnNCxGPD4cBoOx3PrOl3bBxCee1pYfGTkMNrv/g9qL27bDlGde0JZHjx+B/Hz/l+hv0bwFpj//krb84SfvYefOXX4PCho1bIx/vjRbW376uYk4fqL8Sf4AUD+lPt58ba62/Pz0yfjzwJ9+s/Hx8Xjv7Y+05Rmv/AN79u72mzWbzPjkgwXa8mtvvIrtv2zzmwWAhZ/+W/v/nHfewMZNG3SzH783XztQff+jd/DD2jW62XfmfIDEhEQAwP8t+BgrVn6nm31z1tuoX989fWnh5wuw9NtvdLOvzHgNTRo3AQB8+fV/8J8v9c/Jmv78TLRo7m6wv/3uv1iw8FPd7OSnp6L9xe5vHleu/h4f/d/7utknx09Cl85dAQA/r1+Lue/OAeDuTGRclIEjh49o9WPMqPHo3bMPAGDTlo14/a1ZuuWOeHgkrrz8KgDAL7/uwMuzZuhmh97/EAZcez0AYM++3Zj24lTd7OC/3oebB94KADh46ACemfKUbvbO2+/CXXcMAgAcO34MEyaN083edMPNuPdvQwAA2dmnMXr8Y7rZa68ZgGEPDAfgPj/lkZHDdLNXXt4PIx4eBcDdeXtg+L262Z49emHc6Ce05UDZqmojnnhqLE5nn/bJeOqGy6Hi1ZmvaevZRtSuNsKfx0eOQ+s2rQGUbyNch3zPu6pfPxXxcfEAgKKiYmRm+b84DgCkJNfXzqsqthbj5EmdW8U4LTAoBq0zLYQKe6ADWkWBopR+KWV36B/QKooCQ0nWXmSCMV5/SqlU0plOlK3IVUN/vlk0CbYfaapgKjERIFAgzmmffZE4jnA6edXg6oSd03AQTr/fwAlRDNV11mvZDgj/O4wQVp8sAmVVm5Z1X4rc4c76vSS5rcw22AJsQ5msqp+FsJcp1xqgXKlMtli/XKDMNlScVV2WoLLCdU67eqJQiwKXq+ZCdXlGygJnhZoL1RVX8v/CCrY3V3t9qlpQwfbmlf6dK8iqamlWdXlnpZL6WVo/hJrvVW5+Bdtb4LW9eRW8D6VZ4QqcVb2yqiu3gnILvba3gqwo8treisotCnp7hVrstb36db1s1r0i0PaGv41w/66/fdldN4RwsI3wlFUr2wg/5YqCkv1ZKddGSE0AcdTr6rlCBeAZSXQh8HCUqzQrAmQNxYCIq6Cscltd5t/gsmeP1YHR7EJcfb2RFgGTdP4jpXoDyZJXd1AE2mY/M6LKvsZQDDYHO3IKAMk/7MHZni2hWsp/KV+teJ9oSSGVXvgL8kve14gcRwj9mSHnxXMCcKix7gHg1XpDynMVr707tiM+Pr7c41UxZU8IgazsbCTGxXFaL6fslcsKIZCbn4/E+HhO6y2D03rddSMpIYHTei8wW53bCH8MBgNyCwpQLzERqqqWmdYrsHL+Bqz9zxYA7jrheW169230qExWdQkUFztgsRhx6mSubq6yvG/xYjIbYLeVvg9GkwKHPfRTdkNdbtlTKb15vz7v01AvpAPr91RVIbSOs98+nixBUt1rlFgDFEiwFbmvMixJ7qxqVKCUvC9lT5sVANQYA5Rip89prJ7/CEUGnCqEUYbkdL9e1WyAMMqIkyQUOl2Q7SqEIkG2uSBkCbIqIGQJQpEguUq2zWyAXQJkm9fzuAQgSyV11H3bHZdBgsGuul+XIsFZsjGyQ4XTYoBc7IQiS+4rCFsUKDYXEhNjkHvOff60SxJQhPu5FQBCkgCnClWWIAv3K5cA2Et+V1KFz4WSPLVHBiAZZcAl4FIkyE73FYedQmgXYpIlWft9AfcVj52yBLhUGBNMcFpdkBzuqw1Lsvu9kABAkWCPN8Fgd8FQ7IIqBFSp5A+mCkiK+2+qyhJcRgWy1QlI7qsnyy4BmBQodRR06dYUD8+4W9vXI3EckZ+fj7adOofsar09b5oWtqv1blw6mVfrjfQG1ERmi8XnYElPMJnzyRqNRlgsFr+d07K8Dywr4n1wWx2yRqNR60CEMuvdAFa3rBACRTabbv1QFEU7YK1IZbKyLAddhyuTlSSpWmWB8O33lcn62+89daPsY2wjKp+Ntv3+QrPenUZ/+/1Nw69C6y7NcHTvSWQdyUaDZvWRl1OILf/bhYYt6sNudaBTv4vR+Zp2mHHvO36fQ5IkJNSLw+i37gMAFBdYkZgSj93r/0BcUix2rduPTct+BQB8uP15GEwGqC4VB3cdw/KP1uLa+/qgdddm2PzdTnw/fx363NoZl1zeBjvW7MVv6/ajSZsGyD9TgD9/OQJLnAWJyXE4ceAUHDYnzDEmXHtfH+SdKUDna9oj+3gOFkz3Py27x42X4OZHroZikHFw1zHE160DSZKQeeg0/u+FrwAAna5sizvHDcDxg9lIqhuLhOQ4HP/jFL58awXadG2K6x+8AsUFNuzddAA5medQlGdFwxapiI23IOvIGTRskYpmlzSGLMswGBQc2XMCx//IQnLDJHw/fx2O7stE2x7Ncfvj1yKhXpz2N9qz8QB2rd0Hcx0z+t7WBacOn8GW/+3ERe0a4fDu43A5VSSlJeDWx67BiT9OYf+2Q4irWwdfz12FRi1Tcc/Tt+Dkn1lIaVQXRosZe9fvR5OLGyC9aQrOZuZh37bD6D3wEpw6cgbfz18HoQrs+nk/BABznBFdr26PXjd3RmrjehBCIPNQNn798Xd0u649UhrWhb3YDqdTxdmsXFhizfj0H18h61A2Lr+jG9IuSkZKo3po1CoNuzf8gX//czkGPXkjEuvHY+uK31C/cV1s+343ElLicOpIDk4fy4EkQfsc+9vTN6NVl4tgLbBhz8Y/cerIGdRNT8KlV7bBzPvfRUrJ3+8v469H56sv1r7E8bx31kIbrIU21E1zT+O3FtmRezoPljpmGIwKtvxvFzIubgjVpWLFp+tw5sRZDJv+F6Q3qw8AyDl5DnF160DA/SWHJEnYt+Ug/u/5JWh+SRNcdHFDdLy8NRZM/wanj7mv7Dxp/iOwxJjw69rfYSu24/SxHFxyRRs07+ie8l+Ub8Wx3zPRtF1DAICxZGTaaXehuMCK7BNnkdGmAVwuFS6HC0X5VuzbchBd+7eHKcYEoarYtnI3rAU2rF60EcUFVrTt0RzJDZNwzd96Y8PSHTh97CwaNK+PPrd2cXd85dIvizzv0YkDp5DaJBkGo6K9N0JVERNnQU5mLvZvOwRLHTMcdidyTp5Dr4GdEF+vDk4fy4HJYoTLqIbkmONCjiMCnQZwPnjOaXhx5DSEPN+oHNy7Bwl+Rk6rghACObm5qJeYGFTnlGoX1g/Sw7pBekJdN47sPYnPX1mGZh0b486xA8rdD1KP6lLdIzshrp+qS/W5r6e3U0fO4MSBU4hLjEXT9o1gMOl34ovyiqEYFZhjgv+CpLqzF9shhECBvThq245dP/+OTd/uRL+7e6D5JU0ivTmwWx0wVfEUaJfTBSGgdTCrSrR8ruTl56NZ24tDNnLaa2D4Rk43/Jcjpxw5JSIioiqT0bYBnvig9IJjwR606nUgL1SgclMzkpGakRxUObEJMaHapGrDFGNyj6zbq+Z2P+ejQ9/W6NC3daQ3Q1PVHVMAUAxV2ymt8Xif07CqQXfEJSIiIiIiouqKI6dERERERERB4Dmn4cWRUyIiIiIiIoo4jpwSEREREREFg/c5DSuOnBIREREREUWB7t27o127dpgzZ06kNyUiOHJKREREREQUhHCfc7p58+ZafSsZjpwSERERERFRxHHklIiIiIiIKBiqcP+Eo1ziyCkRERERERFFHkdOiYiIiIiIgsGr9YZVVI6czpkzB02bNoXFYkHPnj2xadOmgPnFixejbdu2sFgs6NixI5YtW6Y95nA4MHHiRHTs2BF16tRBw4YNcf/99+PEiRM+ZTRt2hSSJPn8zJw5Myyvj4iIiIiIiHxFXed00aJFGD9+PKZMmYJt27bh0ksvxYABA3Dq1Cm/+XXr1uGee+7BsGHDsH37dtx222247bbbsGvXLgBAUVERtm3bhsmTJ2Pbtm344osvsG/fPtxyyy3lynrhhRdw8uRJ7Wf06NFhfa1ERERERFR9SCi9Ym9IfyL9wqJE1HVOZ82aheHDh2Po0KFo164d5s2bh9jYWHz44Yd+86+//jquv/56TJgwARdffDGmTZuGLl264K233gIAJCYmYsWKFbj77rvRpk0b9OrVC2+99Ra2bt2KI0eO+JQVHx+P9PR07adOnTphf71EREREREQUZeec2u12bN26FZMmTdLWybKM/v37Y/369X5/Z/369Rg/frzPugEDBmDJkiW6z5ObmwtJkpCUlOSzfubMmZg2bRoyMjLwt7/9DePGjYPBoP8W2Ww22Gw2bTkvL8/9HyEgRGQmjouS547U81N0Y/0gPawbpId1gwJh/SA9UVM3Qv38QoS+TE+5FF2d0+zsbLhcLqSlpfmsT0tLw969e/3+TmZmpt98Zmam37zVasXEiRNxzz33+Nzg9vHHH0eXLl1Qr149rFu3DpMmTcLJkycxa9Ys3e2dMWMGnn/++XLrT2Vno8hqLbdekmQYjKVvucNu1y37fLNCCJzLy4PD7oDkb36AJMFoNJaW63Do7wxlsk6HE0KoutthNJkinjUYjZBKXrjL6YSqhiHrckF1uUKTNRggyXLIs4pigKyUzwoBFBYX+dQP76zqUuFyOXXLlRUFiqJUOitUFU5nGLJCwOlwhCYry1AMhpBnq2K/r3TWz37vqRtOh8Nnn2MbUbvaCH9kRUFRsfszTaiCbUSIs9WljfAK+x5H2O0oKCryf9zBNsJ/toa1EXrHEf6OOSLRRhQUFOj+HkWfqOqchpvD4cDdd98NIQTmzp3r85j36Osll1wCk8mERx55BDNmzIDZbPZb3qRJk3x+Ly8vD02aNMEzz03xO+J66SUdMWHcOG35wUcehV3nw6Jt2zZ4duJEbXnE448jP9//ztW8WTO88NxkAO4Pwfc+/BC/7frN7zdVDRs2xMvT/6EtP/nMs+UuDuWRkpKM2a+8oi0/98I0HDh40G82Pj4Oc994Q1v+x0svYe/efX6zJpMJH74zT1t+5bXX8MuvO/1mAWD+R6VTul+fMwebt2zVzb4/921YLBYAwDvvf4C1P/+sm3379dnaFxQf/d+nWLl6tW72tVdeRv2UFADAZ4sWYdny73SzM/8xDY0bNQIA/GfJEnz51de62ecnP4sWzZsDAJZ++y0Wfr5YN/v0kxPQ7uKLAQArVq7CJ/Pn62bHj3kcXTp1AgD8+NPPePeDDwAAkiQh46KLcOTwYa1+jHpsBHp17w4A2LB5M956e67fMgHg4WHDcMVlfQEA23bswKzX39DNDrn3Xlx7zdUAgN179uDFl1/Rzf717rtw0w03AAD+PHAAU6b9Qzd7+6234M7bbgMAHDt+HE89O1k3e+P1A/C3QYMAAKezs/H3JyfqZq+56ioMvf8+AO59eUyA7OV9++KRh4YBcH/h9dC48brZ7t26YszIkdryvUMf1M1WRRsBAGMnTEB29hmfjKduOB0OvPSPadp6thG1q43wZ+RjI9C6VSvUS0zExi1b2EagdrYRHmWPIyY+OxkGo9Hnc8WDbUSpmtxG6B1H+DvmiEQbEahTez4854iGWjjKrI6iqnOakpICRVGQlZXlsz4rKwvp6el+fyc9PT2ovKdjevjwYaxatcpn1NSfnj17wul04tChQ2jTpo3fjNls9ttxlSQFslT+rTXJMUgw1dOWFckIWfL/LZtRMvtmYfRbpjtr0rKqUGGQ3Fnh55rU3lnPsl65hkpkFRjLZM36Wck3a5JjdLMAfLJmpeKsxWQJKhtvqosEUyIAwKLEBs4ak7TtqCgb55OtEzhrKs3GKHEBs3WMiaVZQ+BsnFc21isrSRIkKD71o44Sr2XrKPEBy401xGnZOGNiwGyMV7ZORVnFq1xTTsCsRanjtQ2FFWRjtazV6Aw6K0z+92EPs1K6L5tUa9BZAAGzVdFGAO59u2zWUzeMksQ2okRtbCP8livHIdYQj3hTXbYRtbiN0MsaJRMA2e9xB9sIr2xNbiN0jiP8HXNEoo2Q2OurViQR8Yngvnr27IkePXrgzTffBACoqoqMjAyMGjUKTz31VLn8oEGDUFRUhG+++UZb16dPH1xyySWYN8/9rZqnY7p//36sXr0a9evXr3A7FixYgPvvvx/Z2dmoW7duUNuel5eHxMREHPvtIBLiy3d+ZVmGyWtqidXP1N8LzapCxYlTmaiXUBeyn3m9kiT5dKhtNpvuuQBls3a7PeCUFc83jZHMms1mbSqMw+GAK8A0lPPNOp3OgN/CVSZrMpkgl0yxCWXWaDRq01u8s6oQyMnNQb3Eelr98M66XC73dC4dBoNBmxVQmayqqrrf7l9IVgjhc973hWQVRdGmn4UyWxX7fWWz/vZ7T91ITkpGjNc+xzaidrUR/igGBTl551C/bjKEKthGhDhbXdoIj7L7fbHVijPnzvh8ruhl2UbUzDZC7zjC3zFHJNqIvPw8NG7fDLm5uRUOTgXiOc6/7KqpMBgsFf9CJTmdVvy0euoFb2d1F1Ujp4B7eu2QIUPQrVs39OjRA7Nnz0ZhYSGGDh0KALj//vvRqFEjzJgxAwAwZswYXHnllfjnP/+JgQMHYuHChdiyZQveffddAO7G4i9/+Qu2bduGpUuXwuVyaeej1qtXDyaTCevXr8fGjRtx1VVXIT4+HuvXr8e4ceNw7733Bt0x9WaxWHwawkC5ypQZLKPRCIvFDFmq+GLMelOW/fH+4KoOWaPR6HOuS6iy3g1gdcuqQoWx2KRbPxSvczYqUpmsLMtB1+HKZCVJqlZZIHz7fWWy/vZ7T90wm00VZvVEw37PNiL0WdXr/Dy2EeHNAtHbRuhnTTCa9D9XvEXDfs82IrxZ7/0+lMccF9JG2B36ndrzIQkBKQxje+EoszqKus7poEGDcPr0aTz33HPIzMxEp06dsHz5cu2iR0eOHNG+9QHco6SfffYZnn32WTz99NNo1aoVlixZgg4dOgAAjh8/jq+/ds/V71Qyd95j9erV6NevH8xmMxYuXIipU6fCZrOhWbNmGDduXLmrABMREREREVF4RF3nFABGjRqFUaNG+X1szZo15dbddddduOuuu/zmmzZtWuElrLt06YINGzZUejuJiIiIiKgWUUt+wlEuoeJ5n0RERERERERhFpUjp0RERERERNGG55yGF0dOiYiIiIiIKOI4ckpERERERBQMUfITjnKJI6dEREREREQUeRw5JSIiIiIiCoYQ7p9wlEscOSUiIiIiIqLI48gpERERERFRECTh/glHucSRUyIiIiIiIooCHDklIiIiIiIKBs85DSuOnBIREREREVHEceSUiIiIiIgoCJLq/glHucSRUyIiIiIiIooCHDklIiIiIiIKBs85DSuOnBIREREREVHEceQ0DKxWK0xGU7n1sizDZDL55PRcSNbhcMBqtUGWpHJZSZJgNpu1ZZvNBqHzTU3ZrN1uh6rqT4i3WCwRz5rNZkglr9vhcMDlcoU863Q64XQ6Q5I1mUyQZTnkWaPRCEVRymVVIeCw233qh3fW5XLB4XDolmswGGAwGCqdVVUVdrs95FkhBGw2W0iyiqLAaDSGPFtV+31lsv72e0/dsNnsiPHa59hG1K42wh/FoGj/ZxtRe9sIj/LHEfZynyt6WbYRNbON0DuO8HfMEYk2IlDdPy+i5CfUOHAKgJ3TsBg6ejiMBmO59V0v7YLJE57Wloc8Ngw2u/8PrPZt22H6sy9oyw+PHYG8gny/2VbNWuCVaS9py+9+/B527trl94OlScPGePPl2dryE5Mn4uiJY37LTU2pj3dnz9WWn5k2GfsP/uk3mxAXj/+b95G2/PzL/8Bve3f7zZpNZiz6cIG2/NLrr2LrL9v8ZgFgyfx/a/+fPe8NrNu0QTe78P352ofQ3A/fwaq1a3Szn7z9ARITEgEAH87/GN+u/E43++5rbyO1fioAYP7nC7Bk2Te62TdmvoaMxk0AAIu/+g8WfblYN/vKCzPRqnlLAMA3y/+LTxZ+qpud9vRUdGzXAQDwv9Xf491P3tfNPvv3SejWuSsA4Md1a/HGu3MAuA8UmmRk4OiRI1r9mDBqPPr26gMA2LB5I155a5ZuuY8/PBJXX3EVAGD7rzvwj3/O0M0+POQh3Hjt9QCA3/buxuQXp+pmh/z1Ptx+060AgD8PHcCE557SzQ66/S7cc+cgAMDR48fw+FPjdLO33XgzHvjbEADA6ezTeHjcY7rZG64ZgEeGDgcA5OXnYchjw3SzV1/eD48/MgqA+yDurw/dq5vt06MXnnz8CW05ULaq2ojRE8fiVPZpn4ynbsCp4o2XXtPWs42oXW2EP0+MHIdWbVoDYBtRm9sIj7LHEROnTAIMss/nigfbiFI1uY3QO47wd8wRiTbC4dTvAFP0Yec0DFxQIaH8t2c2yYFcqUhbdsAJp58cANhQJiu59LOSU8sKCDjgzgo/X8HYvbKeZb1y7fDN2gJkHZLLNwuHblYuV65+FoBP1hqgXE/WVnK5s2LYA2bzpGJAcn+JUCxVnDWXbEdRBeXmS8XaNldUbj5Ks0WSLWC2QLJq2UJYg896lStBgqtM/fDOFkiByy2UbMFnEXy5RV7l5qM4YLZYspdmpcDZIpRm8yrIepdbYdarXGsFr81aZl8OlK2KNgJw79tls5664SqzL7ONqF1thF62SLIhTypmG1GL2wjtMT/HEQoUv8cdbCN8szW5jfC3L/s75ohEG+FCaC+DKwkBKQznh4ajzOpIEnrzNqjS8vLykJiYiN27dyM+Pr7c41UxHUcIgVOnTiEhIUGbEuKN03ovPFudp+MIIZCbm4vExERtGzmt1622T9nz1I2kpCSffY5tRO1qI/wxGAzIy8tD3bp1oaoq24gQZ6tLG+FRdr+3Wq04d+6cz+eKXpZtRM1sI/SOI/wdc0SijcjPz0e7du2Qm5uLhIQE3TIq4jnOv6rb0zAYLBX/QiU5nVas3vLiBW9ndcfOaQh5Ku2BAwf8dk6rghACZ8+eRd26df12Tql2Y/0gPawbpId1gwJh/SA90VI38vPz0bx589B1TrtOCl/ndOuMWt855dV6iYiIiIiIKOJ4zikREREREVEwBBDi01hLyyWOnBIREREREVHkceSUiIiIiIgoCLxab3hx5JSIiIiIiIgijiOnREREREREwRAAwjHKyYFTABw5JSIiIiIioijAkVMiIiIiIqJgCBGmkVMOnQIcOSUiIiIiIqIowJFTIiIiIiKiYKgApDCVSxw5JSIiIiIiosjjyCkREREREVEQeJ/T8OLIKREREREREUUcR06JiIiIiIiCwav1hhU7p0RERERERMFg5zSsOK2XiIiIiIioljl69Cj69euHdu3a4ZJLLsHixYsjvUkcOSUiIiIiIgpKDRo5NRgMmD17Njp16oTMzEx07doVN954I+rUqVPl26JtU8SeuQazWq0wGo3l1suyDJPJ5JPTcyFZh8MBq9UKSSp/EyZJkmA2m7Vlm80GobMzlM3a7Xaoqv5NmCwWS8SzZrNZe90OhwMulyvkWafTCafTGZKsyWSCLMshzxqNRiiKUi4rhIDdbvepH95Zl8sFh8OhW67BYIDBYKh0VlVV2O32kGeFELDZbCHJKoqi7behzFbVfl+ZrL/93lM3bDabzz7HNqJ2tRH+ePYhgG1EbW4jPPwdR5T9XNHLso2omW2E3nGEv2OOSLQRgep+bdegQQM0aNAAAJCeno6UlBTk5OSwc1rTjBo1yufD3KNTp06YMGGCtjxixAjdHa1t27aYPHmytjx27Fjk5+f7zTZv3hzTpk3Tlj/66CPs2rXL7wdLo0aN8PLLL2vLkydPxvHjx/2Wm5KSgtdff11bnjZtGg4cOOA3Gx8fj3nz5mnLL730Evbu3es3azKZ8NFHH2nLr7/+Onbs2OE3CwALFizQ/j937lxs2rRJN/vBBx9oH0IffPAB1q5dq5udO3cuEhISAADz58/H999/r5udPXs26tevDwBYtGgRli1bppt96aWX0LhxYwDAV199hS+++EI3+8ILL6BFixYAgOXLl+Nf//qXbvaZZ55Bu3btAACrVq3CJ598opt94okn0LlzZwDAunXr8M477wBwHyhkZGTgyJEjWv0YPXo0evXqBQDYvHkz3nzzTd1yH3nkEVxxxRUAgF9//RWvvvqqbnbIkCG47rrrAAB79+7F9OnTdbP33HMPbrrpJgDAwYMH8dxzz+lm77jjDtx5550AgOPHj2PixIm62RtvvBGDBw8GAGRnZ2Ps2LG62f79+2Po0KEAgPz8fIwYMUI3e/nll+PRRx8F4D4wGzZsmG62R48eGDNmjLYcKFtVbcSTTz6J7Oxsn4ynbrhcLrz00kvaerYRtauN8GfUqFFo06YNALYRtbmN8Ch7HDFlyhQoiuLzueLBNqJUTW4j9I4j/B1zRKKNCNSxPi8qgPLjP6Ept5J+/PFHvPLKK9i6dStOnjyJL7/8ErfddptPZs6cOXjllVeQmZmJSy+9FG+++SZ69OhRrqytW7fC5XKhSZMm5/kCQoOd0zCQZSdKvkDyYTTaEBtb+sFgMDjhcvnfYYxGu09WURxQFP9Zg6E0q6oCiuKCojj9dk69s55l/XIdQWcVxTdrNAYqVy6TtelmAVQyWwCLxf0tnMkUOBsTk4/YWKkka60gW4DYWEslsvkl2eIKsoVa1mwOnLVYSrMWS/BZs7lIy0qSBEVRfeqHxVLkVW5RwHLNZu9sYQXbUBx01mwuzcbEBM6aTN7Zggqy1vPKOhz5FWRL92VZDlzPyu73lcmGo41wL5fPeuqGJLGN8KiNbYT/bDHM5mLExBjYRtTiNkI/a4csm/0ed7CN8M7W5DbC/3GEv2OOSLQRqhrizmkUKSwsxKWXXooHH3wQd9xxR7nHFy1ahPHjx2PevHno2bMnZs+ejQEDBmDfvn1ITU3Vcjk5Obj//vvx3nvvVeXm+yUJvXkbVGl5eXlITEzEwYObkZAQV+5xWZbKTLEJNM3n/LKqKpCZmYO6devoTOuFn2m9/sstm3VPhdGvLhZL5LNms6nMFJtAU3fOL+ue3hJo6k7wWZPJWGaKTWiyRqOhzHQcd1YIgZycQtSrV8drWm9p1j3FJtD0PqXMdJzgsu4pNoGm7pxf1j1dLtA0n+CziiKXmYYXmmxV7PeVzfrb7z11Izm5jp9pvf7LZRvhP1ud2wh/FEXBuXNFSE6OhxAq24gQZ6tLG+FRdr+3Wq04c8b3c0UvyzaiZrYRescR/o45ItFG5OUVoFmz7sjNzdVGus+H5zi/f+vxMCjmin+hkpwuG77/fRaOHj3qs51ms9lnP9IjSVK5kdOePXuie/fueOuttwC435smTZpg9OjReOqppwC49/drr70Ww4cPx3333RfaF3UeOHIaBhaLyach1M8FX7ErkzUajTCbzZDliuccBFPZPbw/uKpD1mg0ws+pvxec9T6vobplVVXAZLLr1g9FUbQPmIpUJivLctB1uDJZSZKqVRYI335fmay//d5TN0wmc4VZPdGw37ONCH3W+0CebUR4s0D0thF6TCZzwM8V32zk93u2EeHNeu/3oTzmuJA2ItC5qtGo7LTaKVOmYOrUqZUux263Y+vWrZg0aZK2TpZl9O/fH+vXrwfg/gLhgQcewNVXXx0VHVOAnVMiIiIiIqLghPlqvf5GTs9HdnY2XC4X0tLSfNanpaVp53P//PPPWLRoES655BIsWbIEAPDpp5+iY8eO5/WcocDOKRERERERURRISEi4oOnHlXHZZZcFvHp1JLBzSkREREREFAxVAFIYRk4DnAt9PlJSUqAoCrKysnzWZ2VlIT09PaTPFUpypDeAiIiIiIiIQsdkMqFr165YuXKltk5VVaxcuRK9e/eO4JYFxpFTIiIiIiKiYIT5nNPKKCgowB9//KEtHzx4EDt27EC9evWQkZGB8ePHY8iQIejWrRt69OiB2bNno7CwULtnczRi55SIiIiIiKia2bJlC6666iptefz48QCAIUOG4OOPP8agQYNw+vRpPPfcc8jMzESnTp2wfPnychdJiibsnBIREREREQUlTCOnqHyZ/fr1g6hgW0aNGoVRo0ad70ZVOZ5zSkRERERERBHHzikREREREVEwPOechuMHQPfu3dGuXTvMmTMnwi80Mjitl4iIiIiIKAps3ry5yu5zGo3YOSUiIiIiIgqGKnA+54cGVy5xWi8RERERERFFHEdOiYiIiIiIgiFU9084yqXoHDmdM2cOmjZtCovFgp49e2LTpk0B84sXL0bbtm1hsVjQsWNHLFu2THvM4XBg4sSJ6NixI+rUqYOGDRvi/vvvx4kTJ3zKyMnJweDBg5GQkICkpCQMGzYMBQUFYXl9RERERERE5CvqRk4XLVqE8ePHY968eejZsydmz56NAQMGYN++fUhNTS2XX7duHe655x7MmDEDN910Ez777DPcdttt2LZtGzp06ICioiJs27YNkydPxqWXXoqzZ89izJgxuOWWW7BlyxatnMGDB+PkyZNYsWIFHA4Hhg4diocffhifffZZpV+D1WqHyWQrt16WJZhMJq9c+Uwosg6HAzabDZIklctKEmA2m7Vlm82me6umslm73Q41wHx4iyXyWbPZpL1uh8MBl0v/W6jzzTqdTjidrpBkTSYjZFkOedZoNEBRlHJZIQTsdt/64Z11uVxwOJy65RoMCgwGQ6WzqqrCbneEPCuEgM1mD0lWUWQYjcaQZ6tqv69M1t9+76kbdrsNFoslYNaDbYT/bHVuI/zx5AC2EbW5jfAov9/byn2u6GfZRgA1r43QO47wd8wRiTbCatXf/86L15V1Q14uQRIV3bm1ivXs2RPdu3fHW2+9BcBdwZo0aYLRo0fjqaeeKpcfNGgQCgsLsXTpUm1dr1690KlTJ8ybN8/vc2zevBk9evTA4cOHkZGRgT179qBdu3bYvHkzunXrBgBYvnw5brzxRhw7dgwNGzYMatvz8vKQmJiI/v2vgNFYvt/fpUtHPP30GG158ODHdD+w2rVrjRdeeFJbHjp0LPLz/Y/ktmjRFC+99CwAQFUFpk17E7t27fR7U97GjRtg9uxp2vLYsZNx7NhJv+XWr5+MuXNf0pYnTvwH/vzzkN9sfHwcPvpotrb83HMvY/fu3/1mzWYTFix4W1t+8cXXsW3bTr9ZAPj3v9/X/v/qq3OxYcNW3ez8+XO0D6G33voQa9as081+8MEsJCa6r4b23nvz8d13a3Szb789E6mpKQCATz75HN988z/d7GuvPY8mTRoBABYt+gqLF3+jm5058xm0bNkMAPDVV8vx6af/1s1OnfoEOnRoCwBYvnwV3n9f/4uTSZNGo2vXSwEAq1f/jDlzPgIASJKEjIymOHLkkFY/xo9/BH36dAcArFu3GbNmvaNb7siRQ3HVVX0BAFu3/oIZM97UzT700N9w/fVXAwB27dqLqVNf1c3ed99fcOut1wMA/vjjIJ56arpu9q67bsagQbcCAI4ePY5x46boZm+++ToMGXI3AODUqWw89lj5NsRjwIB+GD78XgBAbm4ehg0br5vt168PRo16EID7gO/ee0fqZnv16oonnhihLf/lLw/pZquijQCAESMm4vTpMz4ZT91QVRtee+0FbT3biNrVRvgzbtwjaN26DZKT47Fhwxa2EaidbYRH2eOIceOegyybfT5XPNhGlKrJbYTecYS/Y45ItBEOhxPff/8jcnNzL+gquNpxfpMRMMjmin+hkpyqDd8fnXvB21ndRdXIqd1ux9atWzFp0iRtnSzL6N+/P9avX+/3d9avX4/x430/IAYMGIAlS5boPk9ubi4kSUJSUpJWRlJSktYxBYD+/ftDlmVs3LgRt99+u99ybDYbbLbSbyLz8vLcr0OyQJWM5fIFiMcJNU1btkoxsEtKuRwAFCLOJ2uTYmGT/H9rVSSVZoWqwg4zbFIMhJ8riXlnPcs2KcZvucVSnaCzJinWJ1sI/ayQTD7ZAsTrZgH4ZPMryJ4UaTCr7gYjDwkBs5kiDYWqe+fPRWLAbJZIhVOtX5JNqiBbH0rJNp+rIHtK1EdsSfYs6gbMnhYp2nuRg3oBs9kiuTQrSrOSJMEhmXzqxxlRT8ueEYHLzfHKZovkwFmUZk+L7IDZs6irZU+JgoDZc0jSslnCHjCb65U9I+QKsolaNl/EBMzmIUHL2oQtYDa/zH4fKFsVbQTg3rdtUpFPprRuGNlGlKiNbYQ/OaIuzogk2NVkthG1uI3QyxZJcTBLkt/jDrYRpWpyG6F3HOHvmCMSbYRT0h9xPS+8Wm9YRdXI6YkTJ9CoUSOsW7cOvXv31tY/+eST+OGHH7Bx48Zyv2MymfDJJ5/gnnvu0da9/fbbeP7555GVlVUub7Va0bdvX7Rt2xYLFiwAALz44ov45JNPsG/fPp9samoqnn/+eYwYMaJcOQAwdepUPP/88+XWr9y2DXFx8eXWS5IMg9eIqsOuP83gvLOqQP65HFjqxAPlZ/UCkqRNNQLc01ACzd3xzjodTogAJ2sbvaYERSxrNLrnEQFwOV1Q1UDTUM4z63JBdYUmazAYIcmhzyoGgzZ1xycrAGtBPixxpfXDO6uqKlxO/Sk2sqJoU3cqkxWqgNOp/+FwvlkI4a7DocjKChRD6LNVst9XNutvv/fUjfh4n32ObUQtayP8kGUFtsICxMYnQIVgGxHibLVpI0rDvscRdjus+b6fK3pZthE1s43QPY7wc8wRiTaioCAf13TpErqR00aPhm/k9Pg8jpxGegOqksPhwN133w0hBObOnXvB5U2aNMln1DYvLw9NmjRB3bQGiI9QpRKqCiEB8fWSIclReb0riiChqsjPMbJ+UDmsG6RHqCryFRlxrBvkh1BV5BvZdlB50fK5YiyZ2RgyYT7ntHv37lAUBSNHjsTIkfqnBNRUUdU5TUlJgaIo5UY8s7KykJ6e7vd30tPTg8p7OqaHDx/GqlWrfL6RSE9Px6lTp3zyTqcTOTk5us8LuE/y9z7R30OS5YjuhJIkRXwbKHqxfpAe1g3Sw7pBgbB+kJ5oqBvVrV5u3ry5Vo+cRtVfy2QyoWvXrli5cqW2TlVVrFy50mear7fevXv75AFgxYoVPnlPx3T//v34/vvvkZycXK6Mc+fOYevW0hPkV61aBVVV0bNnz1C8NCIiIiIiqu4ESkdPQ/oT6RcWHaJq5BQAxo8fjyFDhqBbt27o0aMHZs+ejcLCQgwdOhQAcP/996NRo0aYMWMGAGDMmDG48sor8c9//hMDBw7EwoULsWXLFrz77rsA3B3Tv/zlL9i2bRuWLl0Kl8uFzMxMAEC9evVgMplw8cUX4/rrr8fw4cMxb948OBwOjBo1Cn/961+DvlIvERERERERnb+o65wOGjQIp0+fxnPPPYfMzEx06tQJy5cvR1qa+wpcR44c0U66BoA+ffrgs88+w7PPPounn34arVq1wpIlS9ChQwcAwPHjx/H1118DADp16uTzXKtXr0a/fv0AAAsWLMCoUaNwzTXXQJZl3HnnnXjjjTfC/4KJiIiIiKh64H1OwyqqrtZb3Xmu4rX9ZFZEL4iUfyYb8ckp1W6OPYUf6wfpYd0gPawbFAjrB+mJlrqRn5eHzg3SQne13vSHYZBNFf9CJTlVO77PfJdX6430BhAREREREVULqgpA/3ZEF1Yu8SsuIiIiIiIiijiOnBIREREREQWD55yGFUdOiYiIiIiIKOI4ckpERERERBQMjpyGFUdOiYiIiIiIgqGK8P0A6N69O9q1a4c5c+ZE+IVGBkdOiYiIiIiIosDmzZt5KxkiIiIiIiIKTAgVQoT+ti/hKLM6Yuc0DOxWK2ym8jfnlWQZJq/1NqtVt4wLyTocDthsNkiS5CcswWw2l5Zrs+nPcS+TtdvtEAHuwWS2WCKeNZnN2ut2OBxQXa6QZ51OJ1xOZ0iyRpMJcsmNqUOZNRiNUBSlXFYIAYfd7lM/vLMulwtOh0O3XMVggMFgqHRWVVU47PaQZ4UQsNtsIcnKigKj0RjybFXt95XK+tnvtbpht8FiiQmYLS2YbYS/bHVuI/zx5AC2EbW5jSgNlzmOsNvKfa7oZdlG1Mw2Qu84wt8xRyTaCHuAuk/Rh53TMHhi+EMwlHwoeevYpQsef/oZbXn8sKGw2/zvaK3btcOEF6Zpy5NGPIr8/Hy/2aYtWuCZl17Wlj977z3s3LULws8HS4PGjfHC7Ne15ekTn8TJY8f8lptcvz5mzp2nLb8y+Vkc+vNPv9n4+HjM+uhjbfn1f0zD77t3+82azCbMWfAvbXneq69g57ZtfrMA8N6//6P9/8M3XsfWDRt0s2/NX6B9CM1/Zx7WrVmjm531wYeIT0wEAHz+8UdY8913utmZb89FcmoqAODLBQvwv2++1s0+/9praNgkAwCw7D//xjeLF+tmn5n5Epq2bAkAWPnfpfj3p5/qZp+Y+jzadOgAAFj7/Qp89v77utnRkybhkq7dAACb1q7FR3PeAgBIkoSmGU1w6MhRrX48Mn48uvXpCwDYvnED3pk1S7fcoSNHoc9VVwEAftuxHW/OmKGb/dtDD+Gq628AAOzfvRuvTp2im/3LffdhwK23AQCOHDiA6U9N1M3efNdduGXQXwEAJ48dxZRx43Sz1918C+4aMgQAkHP6NJ56bIRutt+AARg8/GEAQEFeHsYPe1A326dfPwwdNRoAYLfZMOrewbrZrr164dEnJmjLgbJV1UZMGTsGZ06f9sl46oZNFXj+tdnaerYRtauN8OeRcePQunVrAGwjanMb4VH2OGLGpEkwy5LP54oH24hSNbqN0DmO8HfMEYk2IlAH+LyI0vNDQ14usXMaDrGKDKNS/lpT9YwGtIgt/fYuTlFg85MDgLplswYFqk42ySurqipiFRl1FNlv5zTRoPiUm2hQkKdTbkKZbJLRgDo62bgy2boBsmbFN1svQBaATzbZZAyYbR5rgaXkQyWlgmyzWAsSS8quX0G2aawFqSXZVHPg7EUxFmSUZNPMpoDZjBiz9vrSK8g28crurSDb2FKaPWQpzUqSBIvsWz8aeWVPWswBy21oMWnZnAqyDcyl2aKYwNl0r6xaQTbNK2uMsQTMppqNWjY+NnC2vqk0m+uwBcymeGWtMgJmk72yQOBsVbQRgHvftpbJeuqGRQbbiBK1sY3wp6HFjAZmE1JjLchkGwGgdrYRHv6OIzzbXfa4g21EqZrcRugdR/g75ohEG+FQef3X6kQS/nowdF7y8vKQmJiIrKwsvycyy2WmzVgDTDM436yqqjh+/DiSk5O1qRveJD/TevWqQNms3W6HGmAqjKXMtJlIZM1lpti4AkyxOd+s0+mEM8D0lspkTWWm2IQqaywzHceTVVUV2dnZSElJ0coylpmO4wjwDaOhzHScYLOqqsIeYDrO+WaFEO7pZyHIKmWm4YUqWxX7fWWz/vZ7T92oX78+YmJiAmY92Eb4z1bnNsIfRVFw5swZpKamuqfpsY2olW2ER9n9vri4GKdPn/b5XNHLso2omW2E3nGEv2OOSLQReXl5SEtLQ25u7gVdaMhznH9N4n0wSOVP37tQTmHHytxPL3g7qzt2TkPIU2kjWalUVcWpU6eQmprqt3NKtRvrB+lh3SA9rBsUCOsH6YmWuhGq43N2TqsGp/USEREREREFQ1UBKQxX1uXVegEA/IqLiIiIiIiIIo4jp0RERERERMEQAgCv1hsuHDklIiIiIiKiiOPIKRERERERURCEqkKE4ZxTwXNOAXDklIiIiIiIKCp0794d7dq1w5w5cyK9KRHBkVMiIiIiIqJghPmc082bN9fqW8lw5JSIiIiIiIgijiOnREREREREwVAFIPFqveHCkVMiIiIiIiKKOI6cEhERERERBUMIAGG4si5HTgFw5JSIiIiIiIiiAEdOiYiIiIiIgiBUARGGc04FR04BcOSUiIiIiIiIogBHTomIiIiIiIIhVITnnNMwlFkNceSUiIiIiIiIIo4jp0REREREREHgOafhxZFTIiIiIiIiijiOnBIREREREQWD55yGFTunIeQZjs/Ly4vYNqiqivz8fFgsFsgyB8bJF+sH6WHdID2sGxQI6wfpiZa64TkuD9W0WSccQBhm4DrhCH2h1ZAkOME5ZI4dO4YmTZpEejOIiIiIiMjL0aNH0bhx4/P+favVimbNmiEzMzOEW+UrISEBDRo0gCzLGDlyJEaOHBm254pW7JyGkKqqOHHiBOLj4yFJUkS2IS8vD02aNMHRo0eRkJAQkW2g6MX6QXpYN0gP6wYFwvpBeqKlbgghkJ+fj4YNG17wCK7VaoXdbg/RlpVnMplgsVjCVn51wGm9ISTL8gV9IxNKCQkJ/JAgXawfpId1g/SwblAgrB+kJxrqRmJiYkjKsVgstb7zGG48OYCIiIiIiIgijp1TIiIiIiIiijh2TmsYs9mMKVOmwGw2R3pTKAqxfpAe1g3Sw7pBgbB+kB7WDTofvCASERERERERRRxHTomIiIiIiCji2DklIiIiIiKiiGPnlIiIiIiIiCKOndMaZs6cOWjatCksFgt69uyJTZs2RXqT6ALMmDED3bt3R3x8PFJTU3Hbbbdh3759Phmr1YqRI0ciOTkZcXFxuPPOO5GVleWTOXLkCAYOHIjY2FikpqZiwoQJcDqdPpk1a9agS5cuMJvNaNmyJT7++ONy28P6Fb1mzpwJSZIwduxYbR3rRu11/Phx3HvvvUhOTkZMTAw6duyILVu2aI8LIfDcc8+hQYMGiImJQf/+/bF//36fMnJycjB48GAkJCQgKSkJw4YNQ0FBgU/m119/xeWXXw6LxYImTZrg5ZdfLrctixcvRtu2bWGxWNCxY0csW7YsPC+aguJyuTB58mQ0a9YMMTExaNGiBaZNmwbvS5CwftQOP/74I26++WY0bNgQkiRhyZIlPo9HUz0IZluohhBUYyxcuFCYTCbx4Ycfit9++00MHz5cJCUliaysrEhvGp2nAQMGiI8++kjs2rVL7NixQ9x4440iIyNDFBQUaJlHH31UNGnSRKxcuVJs2bJF9OrVS/Tp00d73Ol0ig4dOoj+/fuL7du3i2XLlomUlBQxadIkLXPgwAERGxsrxo8fL3bv3i3efPNNoSiKWL58uZZh/YpemzZtEk2bNhWXXHKJGDNmjLaedaN2ysnJERdddJF44IEHxMaNG8WBAwfEd999J/744w8tM3PmTJGYmCiWLFkifvnlF3HLLbeIZs2aieLiYi1z/fXXi0svvVRs2LBBrF27VrRs2VLcc8892uO5ubkiLS1NDB48WOzatUv861//EjExMeKdd97RMj///LNQFEW8/PLLYvfu3eLZZ58VRqNR7Ny5s2reDCpn+vTpIjk5WSxdulQcPHhQLF68WMTFxYnXX39dy7B+1A7Lli0TzzzzjPjiiy8EAPHll1/6PB5N9SCYbaGagZ3TGqRHjx5i5MiR2rLL5RINGzYUM2bMiOBWUSidOnVKABA//PCDEEKIc+fOCaPRKBYvXqxl9uzZIwCI9evXCyHcHz6yLIvMzEwtM3fuXJGQkCBsNpsQQognn3xStG/f3ue5Bg0aJAYMGKAts35Fp/z8fNGqVSuxYsUKceWVV2qdU9aN2mvixInisssu031cVVWRnp4uXnnlFW3duXPnhNlsFv/617+EEELs3r1bABCbN2/WMt9++62QJEkcP35cCCHE22+/LerWravVFc9zt2nTRlu+++67xcCBA32ev2fPnuKRRx65sBdJ523gwIHiwQcf9Fl3xx13iMGDBwshWD9qq7Kd02iqB8FsC9UcnNZbQ9jtdmzduhX9+/fX1smyjP79+2P9+vUR3DIKpdzcXABAvXr1AABbt26Fw+Hw+bu3bdsWGRkZ2t99/fr16NixI9LS0rTMgAEDkJeXh99++03LeJfhyXjKYP2KXiNHjsTAgQPL/f1YN2qvr7/+Gt26dcNdd92F1NRUdO7cGe+99572+MGDB5GZmenzN0tMTETPnj196kZSUhK6deumZfr37w9ZlrFx40Ytc8UVV8BkMmmZAQMGYN++fTh79qyWCVR/qOr16dMHK1euxO+//w4A+OWXX/DTTz/hhhtuAMD6QW7RVA+C2RaqOdg5rSGys7Phcrl8DjIBIC0tDZmZmRHaKgolVVUxduxY9O3bFx06dAAAZGZmwmQyISkpySfr/XfPzMz0Wy88jwXK5OXlobi4mPUrSi1cuBDbtm3DjBkzyj3GulF7HThwAHPnzkWrVq3w3XffYcSIEXj88cfxySefACj92wb6m2VmZiI1NdXncYPBgHr16oWk/rBuRM5TTz2Fv/71r2jbti2MRiM6d+6MsWPHYvDgwQBYP8gtmupBMNtCNYch0htARMEZOXIkdu3ahZ9++inSm0JR4OjRoxgzZgxWrFgBi8US6c2hKKKqKrp164YXX3wRANC5c2fs2rUL8+bNw5AhQyK8dRRpn3/+ORYsWIDPPvsM7du3x44dOzB27Fg0bNiQ9YOIIo4jpzVESkoKFEUpdyXOrKwspKenR2irKFRGjRqFpUuXYvXq1WjcuLG2Pj09HXa7HefOnfPJe//d09PT/dYLz2OBMgkJCYiJiWH9ikJbt27FqVOn0KVLFxgMBhgMBvzwww944403YDAYkJaWxrpRSzVo0ADt2rXzWXfxxRfjyJEjAEr/toH+Zunp6Th16pTP406nEzk5OSGpP6wbkTNhwgRt9LRjx4647777MG7cOG0GBusHAdFVD4LZFqo52DmtIUwmE7p27YqVK1dq61RVxcqVK9G7d+8IbhldCCEERo0ahS+//BKrVq1Cs2bNfB7v2rUrjEajz9993759OHLkiPZ37927N3bu3OnzAbJixQokJCRoB7C9e/f2KcOT8ZTB+hV9rrnmGuzcuRM7duzQfrp164bBgwdr/2fdqJ369u1b7pZTv//+Oy666CIAQLNmzZCenu7zN8vLy8PGjRt96sa5c+ewdetWLbNq1SqoqoqePXtqmR9//BEOh0PLrFixAm3atEHdunW1TKD6Q1WvqKgIsux7+KcoClRVBcD6QW7RVA+C2RaqQSJ9RSYKnYULFwqz2Sw+/vhjsXv3bvHwww+LpKQknytxUvUyYsQIkZiYKNasWSNOnjyp/RQVFWmZRx99VGRkZIhVq1aJLVu2iN69e4vevXtrj3tuF3LdddeJHTt2iOXLl4v69ev7vV3IhAkTxJ49e8ScOXP83i6E9Su6eV+tVwjWjdpq06ZNwmAwiOnTp4v9+/eLBQsWiNjYWDF//nwtM3PmTJGUlCS++uor8euvv4pbb73V7y0iOnfuLDZu3Ch++ukn0apVK59bRJw7d06kpaWJ++67T+zatUssXLhQxMbGlrtFhMFgEK+++qrYs2ePmDJlCm8VEmFDhgwRjRo10m4l88UXX4iUlBTx5JNPahnWj9ohPz9fbN++XWzfvl0AELNmzRLbt28Xhw8fFkJEVz0IZluoZmDntIZ58803RUZGhjCZTKJHjx5iw4YNkd4kugAA/P589NFHWqa4uFg89thjom7duiI2Nlbcfvvt4uTJkz7lHDp0SNxwww0iJiZGpKSkiL///e/C4XD4ZFavXi06deokTCaTaN68uc9zeLB+RbeynVPWjdrrm2++ER06dBBms1m0bdtWvPvuuz6Pq6oqJk+eLNLS0oTZbBbXXHON2Ldvn0/mzJkz4p577hFxcXEiISFBDB06VOTn5/tkfvnlF3HZZZcJs9ksGjVqJGbOnFluWz7//HPRunVrYTKZRPv27cV///vf0L9gClpeXp4YM2aMyMjIEBaLRTRv3lw888wzPrf6YP2oHVavXu33GGPIkCFCiOiqB8FsC9UMkhBCRGbMloiIiIiIiMiN55wSERERERFRxLFzSkRERERERBHHzikRERERERFFHDunREREREREFHHsnBIREREREVHEsXNKREREREREEcfOKREREREREUUcO6dEREREREQUceycEhERERERUcSxc0pERDVCYWEhXnzxRXTp0gVxcXEwm81o3LgxLr/8ckyaNAl//vmnlm3atCmaNm0auY0lIiKicgyR3gAiIqILlZ+fj8suuwy//vorWrZsiXvvvRfJycnIzs7Gpk2bMHPmTLRo0QItWrSI9KYSERGRDnZOiYio2ps9ezZ+/fVXPPTQQ3j33XchSZLP4wcPHoTNZovQ1hEREVEwOK2XiIiqvfXr1wMARo4cWa5jCgDNmjVD27ZtcejQIUiShMOHD+Pw4cOQJEn7mTp1qs/v/Pjjj7j55puRkpICs9mMVq1a4dlnn0VRUZFPbs2aNdrv//TTT+jXrx/i4+ORlJSEO++8E3/88UfYXjcREVFNws4pERFVe8nJyQCA33//PWAuKSkJU6ZMQWJiIhITEzFlyhTtp1+/flpu7ty56NevH37++WcMHDgQjz/+OBo3bozp06fj2muvhd1uL1f2hg0bcM011yAxMRGjR4/GlVdeiS+//BJ9+vTBgQMHQvp6iYiIaiJJCCEivRFEREQX4uuvv8att96K+Ph4PPzww7juuuvQtWtXrdNaludiSIcOHSr32O7du3HppZeiffv2WLlypU8ZM2fOxKRJk/Dqq6/i73//OwD3yOlVV10FAJg3bx4eeeQRLf/OO+/g0UcfxU033YRvvvkmRK+WiIioZmLnlIiIaoRZs2ZhypQpKCgo0Na1aNEC119/PcaMGYNWrVpp6wN1TseMGYM33ngDP/74Iy6//HKfx1RVRXp6OjIyMrBlyxYApZ3T1q1bY8+ePZBl2Sfftm1b/PHHH8jKykL9+vVD+IqJiIhqFl4QiYiIaoTx48dj+PDhWL58OdatW4ctW7Zg48aNmDNnDj744AMsWrQIt9xyS4XlbNiwAQDw3XffYeXKleUeNxqN2Lt3b7n1ffv29emYAoAsy+jbty/279+PX375Bf379z/PV0dERFTzsXNKREQ1Rnx8PO666y7cddddAIDc3Fw8/fTTePvttzFs2DAcP34cJpMpYBk5OTkAgOnTp1fqudPS0gKuz83NrVR5REREtQ0viERERDVWYmIi3nrrLVx00UXIzs7Gzp07K/ydhIQEAEBeXh6EELo/ZWVlZfktz7M+MTHxAl4JERFRzcfOKRER1WiSJKFOnTo+6xRFgcvl8pvv2bMngNLpvcH6+eefoaqqzzpVVbFu3TpIkoRLL720UuURERHVNuycEhFRtffOO+9g8+bNfh9bsmQJ9uzZg6SkJHTo0AEAUK9ePWRnZ8NqtZbLP/bYYzAYDBg9ejSOHDlS7vFz585h+/bt5db//vvveO+993zWvffee/j9998xcOBAXgyJiIioAjznlIiIqr1vv/0Wjz76KFq2bIm+ffuiYcOGKCwsxPbt27F27VrIsoy3334bZrMZAHD11Vdjy5YtuOGGG3D55ZfDZDLhiiuuwBVXXIEOHTrg7bffxogRI9CmTRvceOONaNGiBfLz83HgwAH88MMPeOCBBzBv3jyfbRgwYAAef/xxLFu2DO3bt8dvv/2Gb775BikpKXj99dcj8bYQERFVK7yVDBERVXv79u3D119/jRUrVuCPP/7AyZMnAQCNGjXCZZddhtGjR6Nr165avqCgAOPHj8fSpUtx6tQpuFwuTJkyBVOnTtUymzdvxqxZs/Djjz/i9OnTSExMREZGBq677joMGTIEbdu2BVB6K5kpU6agf//+ePbZZ7FlyxYoioJrrrkGL7/8Mlq2bFml7wcREVF1xM4pERHRBfDunHp3bomIiKhyeM4pERERERERRRw7p0RERERERBRx7JwSERERERFRxPGcUyIiIiIiIoo4jpwSERERERFRxLFzSkRERERERBHHzikRERERERFFHDunREREREREFHHsnBIREREREVHEsXNKREREREREEcfOKREREREREUUcO6dEREREREQUceycEhERERERUcT9P+DVP9sZ+M+2AAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Batch sizes: {'batch_100': 100, 'batch_1000': 1000, 'batch_10000': 10000, 'batch_200': 200, 'batch_2000': 2000, 'batch_20000': 20000, 'batch_50': 50, 'batch_500': 500, 'batch_5000': 5000}\n", - "Theory plateau levels:\n", - " Plateau 0: 5.298448e-02\n", - " Plateau 1: 4.530677e-02\n", - " Plateau 2: 3.806381e-02\n", - " Plateau 3: 3.347446e-02\n", - " Plateau 4: 2.991633e-02\n", - " Plateau 5: 2.651234e-02\n", - " Plateau 6: 2.485670e-02\n", - " Plateau 7: 2.321230e-02\n", - " Plateau 8: 2.157320e-02\n", - " Plateau 9: 2.010709e-02\n", - " Plateau 10: 1.874044e-02\n", - " Plateau 11: 1.741158e-02\n", - " Plateau 12: 1.623654e-02\n", - " Plateau 13: 1.508869e-02\n", - " Plateau 14: 1.408196e-02\n", - " Plateau 15: 1.307818e-02\n", - " Plateau 16: 1.214282e-02\n", - " Plateau 17: 1.125079e-02\n", - " Plateau 18: 1.052611e-02\n", - " Plateau 19: 9.803669e-03\n", - " Plateau 20: 9.096431e-03\n", - " Plateau 21: 8.496145e-03\n", - " Plateau 22: 7.900277e-03\n", - " Plateau 23: 7.355611e-03\n", - " Plateau 24: 6.816451e-03\n", - " Plateau 25: 6.309793e-03\n", - " Plateau 26: 5.815373e-03\n", - " Plateau 27: 5.328230e-03\n", - " Plateau 28: 4.855039e-03\n", - " Plateau 29: 4.387949e-03\n", - " Plateau 30: 3.959070e-03\n", - " Plateau 31: 3.554286e-03\n", - " Plateau 32: 3.168230e-03\n", - " Plateau 33: 2.786574e-03\n", - " Plateau 34: 2.415822e-03\n", - " Plateau 35: 2.051240e-03\n", - " Plateau 36: 1.722913e-03\n", - " Plateau 37: 1.405959e-03\n", - " Plateau 38: 1.158988e-03\n", - " Plateau 39: 9.464809e-04\n", - " Plateau 40: 7.376011e-04\n", - " Plateau 41: 5.696002e-04\n", - " Plateau 42: 4.094885e-04\n", - " Plateau 43: 2.914447e-04\n", - " Plateau 44: 1.754022e-04\n", - " Plateau 45: 9.782350e-05\n", - " Plateau 46: 5.992743e-05\n", - " Plateau 47: 3.133626e-05\n", - " Plateau 48: 1.308275e-05\n", - " Plateau 49: 6.127534e-06\n", - " Plateau 50: 1.671809e-06\n", - " Plateau 51: 7.598921e-17\n" - ] - } - ], - "source": [ - "# Example 1: Color by batch_size\n", - "color_map, scalar_map, batch_values = create_color_mapping(\n", - " batch_sweep_dir,\n", - " \"data.batch_size\",\n", - " cmap=\"viridis\",\n", - " log_scale=True,\n", - ")\n", - "\n", - "plot_loss_comparison(\n", - " batch_sweep_dir,\n", - " template_2d=template_2d,\n", - " p1=p1,\n", - " p2=p2,\n", - " color_mapping=color_map,\n", - " colorbar_label=\"Batch Size\",\n", - " scalar_map=scalar_map,\n", - " num_theory_lines=10,\n", - " remove_outliers=True,\n", - " log_scale=False,\n", - ")\n", - "\n", - "\n", - "# Print the extracted values to verify\n", - "print(\"Batch sizes:\", batch_values)\n", - "\n", - "# Print the theory levels (plateau values)\n", - "print(\"Theory plateau levels:\")\n", - "for i, level in enumerate(theory_levels):\n", - " print(f\" Plateau {i}: {level:.6e}\")" - ] - }, - { - "cell_type": "markdown", - "id": "7acdd373", - "metadata": {}, - "source": [ - "## MLP Scaling Sweep Heatmap\n", - "\n", - "Visualize the relationship between sequence length (k) and hidden dimension (width) for SequentialMLP.\n", - "\n", - "**Sweep parameters:**\n", - "- Model: SequentialMLP\n", - "- Dimension: 1, p = 10\n", - "- k values: 2, 3, 4, 5, 6 (5 values)\n", - "- hidden_dim values: 60, 360, 2160, 12960, 77760 (5 values = 10×6¹ through 10×6⁵)\n", - "- num_steps varies with k: k=2→50k, k=3→100k, k=4→150k, k=5→200k, k=6→250k\n", - "- Total: 25 experiments × 3 seeds = 75 runs" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "92d3289e", - "metadata": {}, - "outputs": [ - { - "ename": "SyntaxError", - "evalue": "invalid syntax (2253525129.py, line 69)", - "output_type": "error", - "traceback": [ - " \u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[4]\u001b[39m\u001b[32m, line 69\u001b[39m\n\u001b[31m \u001b[39m\u001b[31mreturn griddef plot_scaling_heatmap(\u001b[39m\n ^\n\u001b[31mSyntaxError\u001b[39m\u001b[31m:\u001b[39m invalid syntax\n" - ] - } - ], - "source": [ - "def plot_scaling_heatmap(\n", - " sweep_dir: str,\n", - " k_values: list = [2, 3, 4, 5, 6, 7, 8],\n", - " hidden_dims: list = [60, 360, 2160, 12960, 77760, 466560, 2799360],\n", - " use_log_scale: bool = True,\n", - " save_path: str = None\n", - "): \n", - " \"\"\"\n", - " Create a heatmap of final train loss vs k and hidden_dim.\n", - " \n", - " Args:\n", - " sweep_dir: Path to the sweep directory\n", - " k_values: List of k values (x-axis)\n", - " hidden_dims: List of hidden dimension values (y-axis)\n", - " use_log_scale: Whether to use log scale for the loss values\n", - " save_path: Optional path to save the figure\n", - " \"\"\"\n", - " # Load results\n", - " grid, std_grid = load_sweep_results_grid(sweep_dir, k_values, hidden_dims)\n", - " \n", - " # Apply log scale if requested\n", - " plot_grid = np.log10(grid) if use_log_scale else grid\n", - " \n", - " # Create figure\n", - " fig, ax = plt.subplots(figsize=(12, 10)) \n", - " \n", - " \n", - " # Create heatmap\n", - " im = ax.imshow(plot_grid, aspect='auto', cmap='viridis', origin='lower')\n", - " \n", - " # Set ticks and labels\n", - " ax.set_xticks(range(len(k_values)))\n", - " ax.set_yticks(range(len(hidden_dims)))\n", - " ax.set_xticklabels(k_values)\n", - " ax.set_yticklabels([f\"{h:,}\" for h in hidden_dims])\n", - " \n", - " # Labels\n", - " ax.set_xlabel('Sequence Length (k)', fontsize=14)\n", - " ax.set_ylabel('Hidden Dimension (width)', fontsize=14)\n", - " title = 'Final Train Loss: SequentialMLP Scaling'\n", - " if use_log_scale:\n", - " title += ' (log₁₀)'\n", - " ax.set_title(title, fontsize=16, pad=20)\n", - " \n", - " # Add colorbar\n", - " cbar = plt.colorbar(im, ax=ax)\n", - " cbar_label = 'log₁₀(Train Loss)' if use_log_scale else 'Train Loss'\n", - " cbar.set_label(cbar_label, fontsize=12)\n", - " \n", - " # Add text annotations\n", - "\n", - " # Add text annotations\n", - " for i in range(len(hidden_dims)):\n", - " for j in range(len(k_values)):\n", - " if not np.isnan(grid[i, j]):\n", - " text_val = f\"{grid[i, j]:.2e}\"\n", - " text_color = 'white' if plot_grid[i, j] < plot_grid[~np.isnan(plot_grid)].mean() else 'black'\n", - " ax.text(j, i, text_val, ha='center', va='center', \n", - " color=text_color, fontsize=8)\n", - " \n", - " plt.tight_layout()\n", - " \n", - " if save_path:\n", - " plt.savefig(save_path, dpi=300, bbox_inches='tight')\n", - " print(f\"Figure saved to: {save_path}\")\n", - " \n", - " plt.show()\n", - " \n", - " return grid" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2e5c22df", - "metadata": {}, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 'load_sweep_results_grid' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[31m---------------------------------------------------------------------------\u001b[39m", - "\u001b[31mNameError\u001b[39m Traceback (most recent call last)", - "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[2]\u001b[39m\u001b[32m, line 2\u001b[39m\n\u001b[32m 1\u001b[39m sweep_dir = \u001b[33m\"\u001b[39m\u001b[33msweeps/sweep_mlp_scaling_20251202_102158\u001b[39m\u001b[33m\"\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m2\u001b[39m grid, std_grid = \u001b[43mplot_scaling_heatmap\u001b[49m\u001b[43m(\u001b[49m\u001b[43msweep_dir\u001b[49m\u001b[43m)\u001b[49m\n", - "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[1]\u001b[39m\u001b[32m, line 19\u001b[39m, in \u001b[36mplot_scaling_heatmap\u001b[39m\u001b[34m(sweep_dir, k_values, hidden_dims, use_log_scale, save_path)\u001b[39m\n\u001b[32m 8\u001b[39m \u001b[38;5;250m\u001b[39m\u001b[33;03m\"\"\"\u001b[39;00m\n\u001b[32m 9\u001b[39m \u001b[33;03mCreate a heatmap of final train loss vs k and hidden_dim.\u001b[39;00m\n\u001b[32m 10\u001b[39m \n\u001b[32m (...)\u001b[39m\u001b[32m 16\u001b[39m \u001b[33;03m save_path: Optional path to save the figure\u001b[39;00m\n\u001b[32m 17\u001b[39m \u001b[33;03m\"\"\"\u001b[39;00m\n\u001b[32m 18\u001b[39m \u001b[38;5;66;03m# Load results\u001b[39;00m\n\u001b[32m---> \u001b[39m\u001b[32m19\u001b[39m grid, std_grid = \u001b[43mload_sweep_results_grid\u001b[49m(sweep_dir, k_values, hidden_dims)\n\u001b[32m 21\u001b[39m \u001b[38;5;66;03m# Apply log scale if requested\u001b[39;00m\n\u001b[32m 22\u001b[39m plot_grid = np.log10(grid) \u001b[38;5;28;01mif\u001b[39;00m use_log_scale \u001b[38;5;28;01melse\u001b[39;00m grid\n", - "\u001b[31mNameError\u001b[39m: name 'load_sweep_results_grid' is not defined" - ] - } - ], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "b10c9d83", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "gagf-PDhBFja6-py3.12", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.2" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/gagf/rnns/seq_mlp.ipynb b/gagf/rnns/seq_mlp.ipynb deleted file mode 100644 index fdb8305..0000000 --- a/gagf/rnns/seq_mlp.ipynb +++ /dev/null @@ -1,2442 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "4265f1a8", - "metadata": {}, - "source": [ - "# MLP Scaling: $H$ vs $k$\n", - "\n", - "Hidden neurons vs sequence length scaling experiments." - ] - }, - { - "cell_type": "markdown", - "id": "5a05ce99", - "metadata": {}, - "source": [ - "## Set up" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "5cfe1142", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "The autoreload extension is already loaded. To reload it, use:\n", - " %reload_ext autoreload\n", - "The jupyter_black extension is already loaded. To reload it, use:\n", - " %reload_ext jupyter_black\n", - "Working directory: /home/facosta/group-agf/gagf\n", - "Directory added to path: /home/facosta/group-agf\n", - "Directory added to path: /home/facosta/group-agf/gagf\n" - ] - } - ], - "source": [ - "# autoreload\n", - "%load_ext autoreload\n", - "%autoreload 2\n", - "# jupyter black formatter\n", - "%load_ext jupyter_black\n", - "\n", - "import subprocess\n", - "import os\n", - "import sys\n", - "\n", - "gitroot_path = subprocess.check_output(\n", - " [\"git\", \"rev-parse\", \"--show-toplevel\"], universal_newlines=True\n", - ")\n", - "\n", - "os.chdir(os.path.join(gitroot_path[:-1], \"gagf\"))\n", - "print(\"Working directory: \", os.getcwd())\n", - "\n", - "sys_dir = os.path.dirname(os.getcwd())\n", - "sys.path.append(sys_dir)\n", - "print(\"Directory added to path: \", sys_dir)\n", - "sys.path.append(os.getcwd())\n", - "print(\"Directory added to path: \", os.getcwd())\n", - "\n", - "import yaml\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "from pathlib import Path" - ] - }, - { - "cell_type": "markdown", - "id": "15a42140", - "metadata": {}, - "source": [ - "## Specify experiment directory" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "2ebd6750", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "sweep_dir = \"/data/facosta/sweeps/sweep_mlp_scaling_20251212_161329\"\n", - "os.path.exists(sweep_dir)" - ] - }, - { - "cell_type": "markdown", - "id": "cb3acce2", - "metadata": {}, - "source": [ - "### Final Loss Heatmap" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "af291059", - "metadata": {}, - "outputs": [], - "source": [ - "def load_sweep_results_grid(sweep_dir: str, k_values: list, hidden_dims: list):\n", - " \"\"\"\n", - " Load sweep results and organize into a grid for heatmap visualization.\n", - "\n", - " Args:\n", - " sweep_dir: Path to the sweep directory\n", - " k_values: List of k (sequence length) values\n", - " hidden_dims: List of hidden dimension values\n", - "\n", - " Returns:\n", - " grid: 2D numpy array with shape (len(hidden_dims), len(k_values))\n", - " containing mean final train losses\n", - " std_grid: 2D numpy array with standard deviations (if multiple seeds)\n", - " \"\"\"\n", - " sweep_path = Path(sweep_dir)\n", - "\n", - " # Initialize grids\n", - " grid = np.full((len(hidden_dims), len(k_values)), np.nan)\n", - " std_grid = np.full((len(hidden_dims), len(k_values)), np.nan)\n", - "\n", - " # Load results for each experiment\n", - " for i, h in enumerate(hidden_dims):\n", - " for j, k in enumerate(k_values):\n", - " exp_name = f\"k{k}_h{h}\"\n", - " exp_dir = sweep_path / exp_name\n", - "\n", - " if not exp_dir.exists():\n", - " print(f\"Warning: Experiment {exp_name} not found\")\n", - " continue\n", - "\n", - " # Load experiment summary\n", - " summary_file = exp_dir / \"experiment_summary.yaml\"\n", - " if summary_file.exists():\n", - " with open(summary_file, \"r\") as f:\n", - " summary = yaml.safe_load(f)\n", - "\n", - " # Get mean train loss\n", - " if \"train_loss_stats\" in summary:\n", - " grid[i, j] = summary[\"train_loss_stats\"][\"mean\"]\n", - " std_grid[i, j] = summary[\"train_loss_stats\"][\"std\"]\n", - " else:\n", - " print(f\"Warning: No train_loss_stats in {exp_name}\")\n", - " else:\n", - " print(f\"Warning: No summary file for {exp_name}\")\n", - "\n", - " return grid, std_grid" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "54e321b2", - "metadata": {}, - "outputs": [], - "source": [ - "k_values = [2, 3, 4, 5, 6, 7, 8]\n", - "\n", - "# hidden_dims = [60, 360, 2160, 12960, 77760]\n", - "hidden_dims = [6, 6**2, 6**3, 6**4, 6**5, 6**6]\n", - "\n", - "grid, _ = load_sweep_results_grid(sweep_dir, k_values, hidden_dims)" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "2f62021a", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAArYAAAIjCAYAAAD2qFgcAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAWfZJREFUeJzt3XmcjXX/x/H3mcHMMIt9xjIMM1nLOtGQ7CEpFO4oW5R9mQgVQ7KUzE0lsg3d8VMJt5sQQillmaZyly3LyDZZx1hmmHP9/pBzd5qhOeMc1+mc1/PxuB6POd/rur7X5zqVPj7zXSyGYRgCAAAA/uZ8zA4AAAAAcAYSWwAAAHgEElsAAAB4BBJbAAAAeAQSWwAAAHgEElsAAAB4BBJbAAAAeAQSWwAAAHgEElsAAAB4BBJbAE53+PBhWSwWLViwwKXPiYiIUPfu3V36jJzYvHmzLBaLNm/ebHYoAODVSGwBOGzBggWyWCzZHiNHjjQ7PJvu3bvfMs4/Hu6QHP9ZRESEHn30UbPDAIC/lTxmBwDg7+vVV19VuXLl7NruvfdelS1bVleuXFHevHlNiuyG559/Xs2aNbN9PnTokMaMGaPnnntODRo0sLVHRkbe0XMeeughXblyRfny5bujfgAAd4bEFkCutWrVStHR0dme8/f3v8vRZBUTE6OYmBjb5507d2rMmDGKiYnR008/fcv7Ll26pAIFCuT4OT4+Pm7xvgDg7RiKAMDpshtj2717dwUGBurYsWNq27atAgMDVaxYMQ0bNkyZmZl297/55puqV6+eihQpooCAANWuXVtLly51Saw3h1Vs2bJF/fr1U/HixVW6dGlJ0pEjR9SvXz9VrFhRAQEBKlKkiDp06KDDhw/b9ZHdGNtGjRrp3nvv1U8//aTGjRsrf/78KlWqlN544w2nxX79+nWNHz9ekZGR8vPzU0REhF566SWlp6fbXbdz5061aNFCRYsWVUBAgMqVK6eePXvaXbNkyRLVrl1bQUFBCg4O1n333afp06c7LVYAuBuo2ALItQsXLuj06dN2bUWLFr3l9ZmZmWrRooXq1q2rN998Uxs2bNDUqVMVGRmpvn372q6bPn26HnvsMXXp0kUZGRlasmSJOnTooFWrVql169YueZd+/fqpWLFiGjNmjC5duiRJ2rFjh77++mv94x//UOnSpXX48GHNnDlTjRo10k8//aT8+fPfts9z586pZcuWat++vTp27KilS5dqxIgRuu+++9SqVas7jrlXr15auHChnnzySb3wwgv69ttvNWnSJP38889avny5JCklJUUPP/ywihUrppEjR6pgwYI6fPiwli1bZutn/fr1euqpp9S0aVO9/vrrkqSff/5ZX331lQYPHnzHcQLAXWMAgIMSEhIMSdkehmEYhw4dMiQZCQkJtnu6detmSDJeffVVu75q1qxp1K5d267t8uXLdp8zMjKMe++912jSpIlde9myZY1u3brlOO4dO3Zkievmuzz44IPG9evXbxuHYRjGtm3bDEnG+++/b2vbtGmTIcnYtGmTra1hw4ZZrktPTzfCwsKMJ5544i9jLVu2rNG6detbnk9KSjIkGb169bJrHzZsmCHJ+Pzzzw3DMIzly5cbkowdO3bcsq/BgwcbwcHBWd4fAP5uGIoAINdmzJih9evX2x1/pU+fPnafGzRooIMHD9q1BQQE2H4+d+6cLly4oAYNGigxMdE5gWejd+/e8vX1vWUc165d05kzZxQVFaWCBQvmKJbAwEC7sbz58uVTnTp1srxvbnz66aeSpNjYWLv2F154QZK0evVqSVLBggUlSatWrdK1a9ey7atgwYK6dOlSjv75AYA7I7EFkGt16tRRs2bN7I7b8ff3V7FixezaChUqpHPnztm1rVq1Sg888ID8/f1VuHBhFStWTDNnztSFCxec/g43/Xl1B0m6cuWKxowZo/DwcPn5+alo0aIqVqyYzp8/n6NYSpcuLYvFYteW3fvmxpEjR+Tj46OoqCi79rCwMBUsWFBHjhyRJDVs2FBPPPGExo0bp6JFi+rxxx9XQkKC3Tjcfv36qUKFCmrVqpVKly6tnj17au3atXccIwDcbSS2AO6aP1dEs/Pll1/qsccek7+/v9599119+umnWr9+vTp37izDMFwW2x+rszcNHDhQEyZMUMeOHfXRRx/ps88+0/r161WkSBFZrda/7PNW7+vM9/hz4pzd+aVLl2rbtm0aMGCAjh07pp49e6p27dpKS0uTJBUvXlxJSUlauXKlHnvsMW3atEmtWrVSt27dnBYnANwNTB4D4FY++eQT+fv7a926dfLz87O1JyQk3PVYli5dqm7dumnq1Km2tqtXr+r8+fN3PZY/K1u2rKxWq/bv36/KlSvb2k+dOqXz58+rbNmy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O3ZUYGCgJCkgIEABAQG287/99ps+//xzzZs3z9a2du1abdmyRQcPHlThwoUl3agUAwAAuBqTx5znb/XGGRkZ+uCDD9SzZ09ZLFn/FrJr1y4lJSXp2WefvWUf77//vvLnz68nn3zS1rZy5UpFR0frjTfeUKlSpVShQgUNGzZMV65cuWU/6enpSk1NtTsAAABgHrev2P7RihUrdP78eXXv3j3b8/PmzVPlypVVr169W/Yxb948de7c2a6Ke/DgQW3dulX+/v5avny5Tp8+rX79+unMmTNKSEjItp9JkyZp3Lhxd/Q+AAAAVllcs0EDk8fc27x589SqVSuVLFkyy7krV65o8eLFt63Wbtu2TT///HOWa6xWqywWixYtWqQ6derokUceUXx8vBYuXHjLqu2oUaN04cIF23H06NE7ezkAAADckb9NxfbIkSPasGGDli1blu35pUuX6vLly+ratest+5g7d65q1Kih2rVr27WXKFFCpUqVUkhIiK2tcuXKMgxDv/76q+65554sffn5+cnPzy+XbwMAAHCD4aLlvgwqtu4rISFBxYsXV+vWrbM9P2/ePD322GNZJpvdlJaWpo8++ijbim79+vV1/PhxpaWl2dr27dsnHx8flS5d2jkvAAAAAJf6WyS2VqtVCQkJ6tatm/LkyVpkPnDggL744gv16tXrln18+OGHun79up5++uks5zp37qwiRYqoR48e+umnn/TFF19o+PDh6tmzp91YXAAAAGezGhaXHd7mb5HYbtiwQcnJyerZs2e25+fPn6/SpUvr4YcfvmUf8+bNU/v27VWwYMEs5wIDA7V+/XqdP39e0dHR6tKli9q0aaO33nrLWa8AAAAAF7MYhmGYHYQnSE1NVUhIiBrpceWx5DU7HPeTzfJswF+y/C3+7g03E/pVAbNDcFvzymwyOwS3k3rRquIVj+jChQsKDg6+u8/+PXdot76H8hbI5/T+r13K0PLmCaa8m1n+NpPHAAAAPJGrhg0wFAEAAAD4m6JiCwAAYCKri5b7YoMGAAAA4G+Kii0AAICJGGPrPFRsAQAA4BGo2AIAAJiIiq3zULEFAACAR6BiCwAAYCIqts5DYgsAAGAiElvnYSgCAAAAPAIVWwAAABMZcs1mCobTe3R/VGwBAADgEajYAgAAmIgxts5DxRYAAAAegYotAACAiajYOg8VWwAAAHgE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UzVlyhTVrVtXly5d0uHDh+/mqwIAAG/kJlvqxsbGqlu3boqOjladOnU0bdo0Xbp0ybZKQteuXVWqVClNmjRJktS3b1+98847Gjx4sAYOHKj9+/dr4sSJGjRoUI6eN3z4cL3++uuSpB9//FEvvPCCYmNjtWnTJsXGxuYq53R4jO2VK1dkGIZtstiRI0e0fPlyValSRQ8//LDDAfyVVq1aqVWrVtmeCwkJ0fr16+3a3nnnHdWpU0fJyckqU6aMVq1apbx582rGjBny8blRoJ41a5aqVaumAwcOKCoqSufOndMrr7yi//znP2ratKmtr2rVqjn9fQAAANxRp06d9Ntvv2nMmDE6efKkatSoobVr19omlCUnJ9tyKenGpLR169Zp6NChqlatmkqVKqXBgwdrxIgROXreoUOHVKVKFUnSJ598okcffVQTJ05UYmKibSKZoxxObB9//HG1b99effr00fnz51WnTh3ly5dPp0+fVnx8vPr27ZurQJzlwoULslgsKliwoCQpPT1d+fLls/sHcXMx4K1btyoqKkrr16+X1WrVsWPHVLlyZV28eFH16tXT1KlTs8wkvCk9PV3p6em2z39eSgMAACAnXL3clyMGDBigAQMGZHtu8+bNWdpiYmL0zTffOPwc6cbwh8uXL0uSNmzYoK5du0qSChcunOu8yuGdxxITE9WgQQNJ0tKlSxUWFqYjR47o/fff11tvvZWrIJzl6tWrGjFihJ566inbIOkmTZro5MmTmjJlijIyMnTu3DnbIsMnTpyQdGO5CqvVqokTJ2ratGlaunSpzp49q+bNmysjIyPbZ02aNMlubPGtEmAAAABk9eCDDyo2Nlbjx4/X9u3b1bp1a0k3xumWLl06V306nNhevnzZtnXuZ599pvbt28vHx0cPPPBArvf1dYZr166pY8eOMgxDM2fOtLVXrVpVCxcu1NSpU5U/f36FhYWpXLlyCg0NtVVxrVarrl27prfeekstWrTQAw88oP/7v//T/v37tWnTpmyfN2rUKF24cMF2HD169K68JwAA8ECGCw4398477yhPnjxaunSpZs6caduKd82aNWrZsmWu+nR4KEJUVJRWrFihdu3a2cZVSFJKSspfLiXhKjeT2iNHjujzzz/PEkfnzp3VuXNnnTp1SgUKFJDFYlF8fLzKly8v6cZyFZJs4zwkqVixYipatKiSk5OzfWZ2u3YAAAAgZ27Ohfqzf/7zn7nu0+HEdsyYMercubOGDh2qpk2b2paA+Oyzz1SzZs1cB5JbN5Pam9XVm4v7Zufm4Of58+fL399fzZs3l3RjuQpJ2rt3r630ffbsWZ0+fVply5Z18RsAAABv5k5jbO+2zMxMrVixQj///LOkG79pf+yxx3K0JW92HE5sn3zyST344IM6ceKEqlevbmtv2rSp2rVrl6sgbictLU0HDhywfT506JCSkpJUuHBhlShRQk8++aQSExO1atUqZWZm6uTJk5JuDDy+uYbaO++8o3r16ikwMFDr16/X8OHDNXnyZNsEswoVKujxxx/X4MGDNXv2bAUHB2vUqFGqVKmSGjdu7PR3AgAAsHGT5b7utgMHDuiRRx7RsWPHVLFiRUk35jCFh4dr9erVioyMdLjPXG2pGxYWlmUXijp16uSmq7+0c+dOu+QyNjZWktStWzeNHTtWK1eulCTVqFHD7r5NmzapUaNGkqTt27crLi5OaWlpqlSpkt577z0988wzdte///77Gjp0qFq3bi0fHx81bNhQa9euVd68eV3yXgAAAN5s0KBBioyM1DfffKPChQtLks6cOaOnn35agwYN0urVqx3u0+HE9tKlS5o8ebI2btyolJQUu90mpBsrDDhTo0aNZNxmn7nbnbvp/fff/8trgoODNW/ePM2bN8+h+AAAAO6M5ffDFf26ry1bttgltZJUpEgRTZ482TZM1FEOJ7a9evXSli1b9Mwzz6hEiRK2rXYBAACAnPLz89PFixeztKelpeVoS97sOJzYrlmzRqtXr851Jg0AAIA/8NIxto8++qiee+45zZs3zzak9dtvv1WfPn302GOP5apPh9exLVSokF3JGAAAAHDUW2+9pcjISMXExMjf31/+/v6qX7++oqKiNG3atFz16XDFdvz48RozZowWLlyo/Pnz5+qhAAAA+J2XVmwLFiyof//73zpw4IBtua/KlSsrKioq1306nNhOnTpVv/zyi0JDQxUREZFl1YDExMRcBwMAAADvEhUVZZfM/vDDD4qOjlZGRobDfTmc2LZt29bhhwAAAOAWDMuNwxX9/g0ZhqHMzMxc3etwYhsXF5erBwEAACArw7hxuKJfb+Pw5DFJOn/+vObOnatRo0bp7Nmzkm4MQTh27JhTgwMAAAByyuGK7Q8//KBmzZopJCRE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WrlypRo1aqQzZ86YHRpcJDk5WatWrVL37t0duq9Hjx6aOXOmrl+/7prAACAXSGwBSJLOnz+vL7/8Uq+//roaN26ssmXLqk6dOho1apQee+wxu+t69eqlYsWKKTg4WE2aNNH3339v19fkyZMVGhqqoKAgPfvssxo5cqRdhbFRo0YaMmSI3T1t27a1S67S09M1bNgwlSpVSgUKFFDdunW1efNm2/mbvy5ft26dKleurMDAQLVs2VInTpyw63f+/PmqWrWq/Pz8VKJECQ0YMMChd3HU3LlzVblyZfn7+6tSpUp69913becOHz4si8WiZcuWqXHjxsqfP7+qV6+ubdu22fUxZ84chYeHK3/+/GrXrp3i4+NtQwMWLFigcePG6fvvv5fFYpHFYtGCBQts954+fVrt2rVT/vz5dc8992jlypW3jfejjz5S9erVVapUqVte89tvvyk6Olrt2rVTenq6JKl58+Y6e/astmzZ4uA3BACuQ2ILQJIUGBiowMBArVixwpa8ZKdDhw5KSUnRmjVrtGvXLtWqVUtNmzbV2bNnJd1IlMaOHauJEydq586dKlGihF1yl1MDBgzQtm3btGTJEv3www/q0KGDWrZsqf3799uuuXz5st58803961//0hdffKHk5GQNGzbMdn7mzJnq37+/nnvuOf34449auXKloqKicvwujlq0aJHGjBmjCRMm6Oeff9bEiRM1evRoLVy40O66l19+WcOGDVNSUpIqVKigp556ylb5/Oqrr9SnTx8NHjxYSUlJat68uSZMmGC7t1OnTnrhhRdUtWpVnThxQidOnFCnTp1s58eNG6eOHTvqhx9+0COPPKIuXbrc9n2+/PJLRUdH3/L80aNH1aBBA917771aunSp/Pz8JEn58uVTjRo19OWXX+bquwIAlzAA4HdLly41ChUqZPj7+xv16tUzRo0aZXz//fe2819++aURHBxsXL161e6+yMhI47333jMMwzBiYmKMfv362Z2vW7euUb16ddvnhg0bGoMHD7a75vHHHze6detmGIZhHDlyxPD19TWOHTtmd03Tpk2NUaNGGYZhGAkJCYYk48CBA7bzM2bMMEJDQ22fS5Ysabz88svZvmtO3iU7kozly5dney4yMtJYvHixXdv48eONmJgYwzAM49ChQ4YkY+7cubbz//3vfw1Jxs8//2wYhmF06tTJaN26tV0fXbp0MUJCQmyf4+Li7L7PP8b2yiuv2D6npaUZkow1a9bc8n2qV69uvPrqq3ZtCQkJRkhIiLFnzx4jPDzcGDRokGG1WrPc265dO6N79+637BsA7jYqtgBsnnjiCR0/flwrV65Uy5YttXnzZtWqVcv2q+7vv/9eaWlpKlKkiK3CGxgYqEOHDumXX36RJP3888+qW7euXb8xMTEOxfHjjz8qMzNTFSpUsHvOli1bbM+RpPz58ysyMtL2uUSJEkpJSZEkpaSk6Pjx42ratGm2z8jJuzji0qVL+uWXX/Tss8/a9ffaa69l6a9atWp2Md+MV7qxQkGdOnXsrv/z59v5Y98FChRQcHCwre/sXLlyRf7+/tm2N2jQQO3bt9f06dNlsViyXBMQEKDLly/nODYAcLU8ZgcAwL34+/urefPmat68uUaPHq1evXopLi5O3bt3V1pamkqUKGE31vWm2y0P9Wc+Pj4yDMOu7dq1a7af09LS5Ovrq127dsnX19fuusDAQNvPefPmtTtnsVhs/QYEBNw2Bme9yx/7k26Mj/1zYv/nd/hj3DcTRqvV6vAzs5Pdd3K7vosWLapz585laffz81OzZs20atUqDR8+PNsxuGfPnrX7iwUAmI3EFsBtValSxba8Va1atXTy5EnlyZNHERER2V5fuXJlffvtt+rataut7ZtvvrG7plixYnaTvDIzM7V79241btxYklSzZk1lZmYqJSVFDRo0yFXcQUFBioiI0MaNG239/lFO3sURoaGhKlmypA4ePKguXbrkup+KFStqx44ddm1//pwvXz5lZmbm+hl/VLNmTf30009Z2n18fPSvf/1LnTt3VuPGjbV582aVLFnS7prdu3frySefdEocAOAMJLYAJElnzpxRhw4d1LNnT1WrVk1BQUHauXOn3njjDT3++OOSpGbNmikmJkZt27bVG2+8oQoVKuj48eNavXq12rVrp+joaA0ePFjdu3dXdHS06tevr0WLFum///2vypcvb3tWkyZNFBsbq9WrVysyMlLx8fE6f/687XyFChXUpUsXde3aVVOnTlXNmjX122+/aePGjapWrZpat26do3caO3as+vTpo+LFi6tVq1a6ePGivvrqKw0cODBH73Irhw4dUlJSkl3bPffco3HjxmnQoEEKCQlRy5YtlZ6erp07d+rcuXOKjY3NUcwDBw7UQw89pPj4eLVp00aff/651qxZYzcUICIiwhZD6dKlFRQUZJvU5agWLVqoV69eyszMzFJZ9vX11aJFi/TUU0+pSZMm2rx5s8LCwiTdWOHh2LFjatasWa6eCwAuYfYgXwDu4erVq8bIkSONWrVqGSEhIUb+/PmNihUrGq+88opx+fJl23WpqanGwIEDjZIlSxp58+Y1wsPDjS5duhjJycm2ayZMmGAULVrUCAwMNLp162a8+OKLdpOdMjIyjL59+xqFCxc2ihcvbkyaNMlu8tjNa8aMGWNEREQYefPmNUqUKGG0a9fO+OGHHwzD+N8Epz9avny58ec/1mbNmmVUrFjR1sfAgQMdepc/k5Tt8eWXXxqGYRiLFi0yatSoYeTLl88oVKiQ8dBDDxnLli0zDON/k8e+++47W3/nzp0zJBmbNm2ytc2ePdsoVaqUERAQYLRt29Z47bXXjLCwMLt/Vk888YRRsGBBQ5KRkJBgi+3PE9tCQkJs57Nz7do1o2TJksbatWttbX/+bq9du2a0b9/eqFy5snHq1CnDMAxj4sSJRosWLW7ZLwCYwWIYfxroBgBONnbsWK1YsSJLlRM507t3b+3Zs8dlS2vNmDFDK1eu1Lp163J0fUZGhu655x4tXrxY9evXd0lMAJAbDEUAADfz5ptvqnnz5ipQoIDWrFmjhQsX5mot4Jx6/vnndf78eV28eDFH2+omJyfrpZdeIqkF4HZIbAHAzWzfvl1vvPGGLl68qPLly+utt95Sr169XPa8PHny6OWXX87x9VFRUXYbXQCAu2AoAgAAADwCGzQAAADAI5DYAgAAwCOQ2AIAAMAjkNgCAADAI5DYAgAAwCOQ2AIAAMAjkNgCAADAI5DYAgAAwCP8PxQsFPOhnphMAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.figure(figsize=(8, 6))\n", - "plt.imshow(grid, aspect=\"auto\", norm=None)\n", - "\n", - "# Correct labels: rows = hidden_dims (y), columns = k_values (x)\n", - "plt.xlabel(\"Sequence Length (k)\")\n", - "plt.ylabel(\"Hidden Dimension\")\n", - "\n", - "# Set tick labels to show actual values\n", - "plt.xticks(range(len(k_values)), k_values)\n", - "plt.yticks(range(len(hidden_dims)), hidden_dims)\n", - "\n", - "plt.gca().invert_yaxis()\n", - "\n", - "plt.title(\"Final Train Loss\")\n", - "\n", - "plt.colorbar(label=\"Final Train Loss\")\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "fbcf4b02", - "metadata": {}, - "source": [ - "### Loss Curve Integral Heatmap" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "4bb980bb", - "metadata": {}, - "outputs": [], - "source": [ - "def load_sweep_results_grid_integral(sweep_dir: str, k_values: list, hidden_dims: list):\n", - " \"\"\"\n", - " Load sweep results and compute integral of loss curves.\n", - "\n", - " Returns:\n", - " grid: 2D array with mean integral of loss curves\n", - " std_grid: 2D array with standard deviations across seeds\n", - " \"\"\"\n", - " sweep_path = Path(sweep_dir)\n", - "\n", - " grid = np.full((len(hidden_dims), len(k_values)), np.nan)\n", - " std_grid = np.full((len(hidden_dims), len(k_values)), np.nan)\n", - "\n", - " for i, h in enumerate(hidden_dims):\n", - " for j, k in enumerate(k_values):\n", - " exp_name = f\"k{k}_h{h}\"\n", - " exp_dir = sweep_path / exp_name\n", - "\n", - " if not exp_dir.exists():\n", - " continue\n", - "\n", - " # Collect integrals from all seeds\n", - " integrals = []\n", - " for seed_dir in exp_dir.glob(\"seed_*\"):\n", - " loss_file = seed_dir / \"train_loss_history.npy\"\n", - " if loss_file.exists():\n", - " loss_history = np.load(loss_file)\n", - " # Compute integral using trapezoidal rule\n", - " integral = np.trapz(loss_history)\n", - " integrals.append(integral)\n", - "\n", - " if integrals:\n", - " grid[i, j] = np.mean(integrals)\n", - " std_grid[i, j] = np.std(integrals) if len(integrals) > 1 else 0.0\n", - "\n", - " return grid, std_grid" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "8e5017cd", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAroAAAIjCAYAAADslLiSAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAZe1JREFUeJzt3Xl8TXf+x/H3TUIWWexZbLHUEiW2SFE7VTVaS9EWDVqlpUWGDqNFW0WrUl1SqrV18euipaqDhlLV0WlIabWjqC1FxNKIJAS55/eHutPbJJpcOU7cvJ6Px3mM+z3nfs/nnDHmk08+53tshmEYAgAAANyMh9UBAAAAAGYg0QUAAIBbItEFAACAWyLRBQAAgFsi0QUAAIBbItEFAACAWyLRBQAAgFsi0QUAAIBbItEFAACAWyLRBQCYYsiQIQoPD7c6DAAlGIkuUIIsWbJENptN27ZtszqUAtmxY4cGDRqkatWqydvbW+XLl1eXLl20ePFi5eTkWB1eoW3atEk2m03Lly936fszZszQypUrizYoAHBjJLoAiqU333xTLVq00MaNGzVw4EC99tprmjJlinx9ffXAAw/oueeeszrE645EFwAKx8vqAADgz7755huNHDlSrVq10r/+9S8FBAQ49o0dO1bbtm3Trl27iuRcmZmZKlOmTJHM5e6ysrLk5+dndRgAUGBUdAHk8t1336l79+4KDAyUv7+/OnfurG+++cbpmIsXL+qpp57STTfdJB8fH1WoUEG33nqrEhISHMekpKRo6NChqlq1qry9vRUaGqq77rpLBw8evOr5n3rqKdlsNr377rtOSe4VLVq00JAhQyT9rx1g06ZNTsccPHhQNptNS5YscYwNGTJE/v7++uWXX3THHXcoICBAAwcO1OjRo+Xv76+srKxc57r33nsVEhLi1CqxZs0atW3bVmXKlFFAQIB69OihH3/88arXlJ9p06bJZrNp3759GjJkiMqWLaugoCANHTrUKR6bzabMzEwtXbpUNptNNpvNcQ8k6ciRIxo2bJiCg4Pl7e2thg0batGiRbnOd+jQId15550qU6aMKleurHHjxmndunW57mGHDh108803a/v27WrXrp38/Pz0z3/+U5L0ySefqEePHgoLC5O3t7dq166tZ5555oZsJwHg3qjoAnDy448/qm3btgoMDNTjjz+uUqVK6fXXX1eHDh305ZdfKjo6WtLlBG3mzJl68MEH1bJlS6Wnp2vbtm1KSkpS165dJUl9+/bVjz/+qEcffVTh4eFKTU1VQkKCDh8+nO9DSllZWdqwYYPatWun6tWrF/n1Xbp0Sd26ddOtt96qF154QX5+fgoPD1d8fLw+++wz9evXzymWTz/9VEOGDJGnp6ck6e2331ZMTIy6deum5557TllZWZo3b55uvfVWfffddy4/fNW/f3/VrFlTM2fOVFJSkt58801VrlzZ0aLx9ttvO+71Qw89JEmqXbu2JOn48eO65ZZbZLPZNHr0aFWqVElr1qzRAw88oPT0dI0dO1bS5ep1p06ddOzYMY0ZM0YhISFatmyZNm7cmGdMp06dUvfu3XXPPfdo0KBBCg4OlnS519vf31+xsbHy9/fXF198oSlTpig9PV2zZ8926foBwBQGgBJj8eLFhiQjMTEx32N69epllC5d2vjll18cY0ePHjUCAgKMdu3aOcYiIyONHj165DvPb7/9ZkgyZs+eXagYd+7caUgyxowZU6DjN27caEgyNm7c6DR+4MABQ5KxePFix1hMTIwhyZg4caLTsXa73ahSpYrRt29fp/EPPvjAkGRs3rzZMAzDOHv2rFG2bFlj+PDhTselpKQYQUFBucbzi/XDDz90jE2dOtWQZAwbNszp2N69exsVKlRwGitTpowRExOTa94HHnjACA0NNU6ePOk0fs899xhBQUFGVlaWYRiGMWfOHEOSsXLlSscx586dM+rXr5/rHrZv396QZMyfPz/X+a7M90cjRoww/Pz8jPPnzzvGYmJijBo1auS+EQBwndC6AMAhJydHn3/+uXr16qVatWo5xkNDQ3Xfffdpy5YtSk9PlySVLVtWP/74o/bu3ZvnXL6+vipdurQ2bdqk3377rcAxXJk/r5aFovLwww87fbbZbOrXr5/+9a9/KSMjwzH+/vvvq0qVKrr11lslSQkJCUpLS9O9996rkydPOjZPT09FR0fnWxktiJEjRzp9btu2rU6dOuW4H/kxDEMfffSRevbsKcMwnOLq1q2bzpw5o6SkJEnS2rVrVaVKFd15552O7/v4+Gj48OF5zu3t7a2hQ4fmGvf19XX8+ezZszp58qTatm2rrKws7d69u8DXDABmI9EF4HDixAllZWWpXr16ufY1aNBAdrtdycnJkqSnn35aaWlpqlu3rho1aqQJEybo+++/dxzv7e2t5557TmvWrFFwcLDatWun559/XikpKVeNITAwUNLlBMoMXl5eqlq1aq7xAQMG6Ny5c1q1apUkKSMjQ//617/Ur18/2Ww2SXIk9Z06dVKlSpWcts8//1ypqakux/XnNo1y5cpJ0l/+kHDixAmlpaVpwYIFuWK6kqReievQoUOqXbu243quqFOnTp5zV6lSRaVLl841/uOPP6p3794KCgpSYGCgKlWqpEGDBkmSzpw5U4CrBYDrgx5dAC5p166dfvnlF33yySf6/PPP9eabb+rFF1/U/Pnz9eCDD0q6vEJCz549tXLlSq1bt05PPvmkZs6cqS+++EJNmzbNc946derIy8tLP/zwQ4Hi+HPSdkV+D0Z5e3vLwyP3z/i33HKLwsPD9cEHH+i+++7Tp59+qnPnzmnAgAGOY+x2u6TL/bIhISG55vDycv2f1Cs9wH9mGMZVv3clpkGDBikmJibPYxo3buxSTH+s3F6Rlpam9u3bKzAwUE8//bRq164tHx8fJSUl6R//+IcjHgAoDkh0AThUqlRJfn5++vnnn3Pt2717tzw8PFStWjXHWPny5TV06FANHTpUGRkZateunaZNm+ZIdKXLD0z9/e9/19///nft3btXTZo00Zw5c/TOO+/kGYOfn586deqkL774QsnJyU7ny8uVymdaWprT+KFDhwp62Q79+/fXSy+9pPT0dL3//vsKDw/XLbfc4nQtklS5cmV16dKl0PNfq7yS+kqVKikgIEA5OTl/GVONGjX0008/yTAMp7n27dtX4Bg2bdqkU6dO6eOPP1a7du0c4wcOHCjwHABwvdC6AMDB09NTt912mz755BOnJcCOHz+uZcuW6dZbb3W0Fpw6dcrpu/7+/qpTp46ys7MlXV6x4Pz5807H1K5dWwEBAY5j8jN16lQZhqHBgwc79cxesX37di1dulTS5eTN09NTmzdvdjrmtddeK9hF/8GAAQOUnZ2tpUuXau3aterfv7/T/m7duikwMFAzZszQxYsXc33/xIkThT5nYZQpUyZXQu/p6am+ffvqo48+ynNt4T/G1K1bNx05csTRniFJ58+f1xtvvFHgGK5Unv9Yab5w4YJL9xsAzEZFFyiBFi1apLVr1+YaHzNmjKZPn66EhATdeuuteuSRR+Tl5aXXX39d2dnZev755x3HRkREqEOHDmrevLnKly+vbdu2afny5Ro9erQkac+ePercubP69++viIgIeXl5acWKFTp+/Ljuueeeq8bXunVrxcfH65FHHlH9+vU1ePBg3XTTTTp79qw2bdqkVatWafr06ZKkoKAg9evXT6+88opsNptq166t1atXu9Qv26xZM9WpU0eTJ09Wdna2U9uCdLl/eN68eRo8eLCaNWume+65R5UqVdLhw4f12WefqU2bNnr11VcLfd6Cat68udavX6+4uDiFhYWpZs2aio6O1qxZs7Rx40ZFR0dr+PDhioiI0OnTp5WUlKT169fr9OnTkqQRI0bo1Vdf1b333qsxY8YoNDRU7777rnx8fCTl3wbyR61bt1a5cuUUExOjxx57TDabTW+//fZftlgAgCUsXPEBwHV2ZXmx/Lbk5GTDMAwjKSnJ6Natm+Hv72/4+fkZHTt2NP797387zTV9+nSjZcuWRtmyZQ1fX1+jfv36xrPPPmtcuHDBMAzDOHnypDFq1Cijfv36RpkyZYygoCAjOjra+OCDDwoc7/bt24377rvPCAsLM0qVKmWUK1fO6Ny5s7F06VIjJyfHcdyJEyeMvn37Gn5+fka5cuWMESNGGLt27cpzebEyZcpc9ZyTJ082JBl16tTJ95iNGzca3bp1M4KCggwfHx+jdu3axpAhQ4xt27Zdde6rLS924sQJp2Ov/Hd14MABx9ju3buNdu3aGb6+voYkp6XGjh8/bowaNcqoVq2aUapUKSMkJMTo3LmzsWDBAqd59+/fb/To0cPw9fU1KlWqZPz97383PvroI0OS8c033ziOa9++vdGwYcM8r+Prr782brnlFsPX19cICwszHn/8cWPdunW5lihjeTEAVrMZBj+GA0BJNnfuXI0bN06//vqrqlSpYnU4AFBkSHQBoAQ5d+6c02oK58+fV9OmTZWTk6M9e/ZYGBkAFD16dAGgBOnTp4+qV6+uJk2a6MyZM3rnnXe0e/duvfvuu1aHBsANHDhwQMOGDdPx48fl6empb775RmXKlLEsHiq6AFCCzJ07V2+++aYOHjyonJwcRURE6PHHH8/14B0AuKJ9+/aaPn262rZtq9OnTyswMPCa1hi/ViS6AAAAuGY//vijxowZo/Xr11sdigPr6AIAAECbN29Wz549FRYWJpvNppUrV+Y6Jj4+XuHh4fLx8VF0dLS+/fZbx769e/fK399f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Bzp8+LAuXLjgtO/jjz92ac5CJ7pDhgyRl5eXVq9erdDQ0GvqmwAAACjpLld0zXgYrcinNM17772n+++/X926ddPnn3+u2267TXv27NHx48fVu3dvl+ctdKK7Y8cObd++XfXr13f5pAAAAMAVM2bM0IsvvqhRo0YpICBAL730kmrWrKkRI0YoNDTU5XkLvY5uRESETp486fIJAQAA8D9XlhczY7NCVlaWatSoofHjxxf4O7/88ot69OghSSpdurQyMzNls9k0btw4LViwwOVYCp3oPvfcc3r88ce1adMmnTp1Sunp6U4bAAAASq5nn31Wt9xyS6G+U65cOZ09e1aSVKVKFe3atUuSlJaWpqysLJdjKXTrQpcuXSRJnTt3dhrnYTQAAIDCM37fzJj3etu7d692796tnj17OpLVgmjXrp0SEhLUqFEj9evXT2PGjNEXX3yhhISEXDlnYRQ60b0ea54BAADg+tq8ebNmz56t7du369ixY1qxYoV69erldEx8fLxmz56tlJQURUZG6pVXXlHLli0d+8ePH6/Zs2fnWp3rr7z66qs6f/68JGny5MkqVaqU/v3vf6tv37564oknXL6mQie67du3d/lkAAAAcGb2K4D/3Frq7e0tb2/vXMdnZmYqMjJSw4YNU58+fXLtf//99xUbG6v58+crOjpac+fOVbdu3fTzzz+rcuXK+uSTT1S3bl3VrVu3UInupUuXtHr1anXr1k2S5OHhoYkTJxbmUvPl0gsj0tLStHDhQv33v/+VJDVs2FDDhg1TUFBQkQQFAABQYpjcu1CtWjWn4alTp2ratGm5Du/evbu6d++e73RxcXEaPny4hg4dKkmaP3++PvvsMy1atEgTJ07UN998o/fee08ffvihMjIydPHiRQUGBmrKlClXDdPLy0sjR4505JVFqdAPo23btk21a9fWiy++qNOnT+v06dOKi4tT7dq1lZSUVOQBAgAAwHXJyck6c+aMY5s0aVKh57hw4YK2b9/ueFZLulx57dKli7Zu3SpJmjlzppKTk3Xw4EG98MILGj58+F8muVe0bNlSO3bsKHRcf6XQFd1x48bpzjvv1BtvvCEvr8tfv3Tpkh588EGNHTtWmzdvLvIgAQAA3JZZS4H9PmdgYKACAwOvaaqTJ08qJydHwcHBTuPBwcHavXv3Nc0tSY888ohiY2OVnJys5s2bq0yZMk77Gzdu7NK8hU50t23b5pTkSpdLzo8//rhatGjhUhAAAABwH0OGDCnU8ffcc48k6bHHHnOM2Wy2a17Vq9CJbmBgoA4fPpzrzWjJyckKCAhwKQgAAICS6vIrgM2ZV5KioqLk6empUaNGadSoUS7NVbFiRXl6eur48eNO48ePH1dISMi1hqoDBw5c8xx5KXSiO2DAAD3wwAN64YUX1Lp1a0nS119/rQkTJujee+8t8gABAADgusTExGtuXShdurSaN2+uDRs2OJYcs9vt2rBhg0aPHn3NMdaoUeOa58hLoRPdF154QTabTffff78uXbokSSpVqpQefvhhzZo1q8gDBAAAcGdmLy9WUBkZGdq3b5/j84EDB7Rjxw6VL19e1atXV2xsrGJiYtSiRQu1bNlSc+fOVWZmpmMVhmuxatWqPMdtNpt8fHxUp04d1axZs9DzFjrRLV26tF566SXNnDlTv/zyiySpdu3a8vPzK/TJAQAAUDxs27ZNHTt2dHyOjY2VJMXExGjJkiUaMGCATpw4oSlTpiglJUVNmjTR2rVrcz2g5opevXo5enL/6I99urfeeqtWrlypcuXKFXjeQi8vdoWfn58aNWqkRo0akeQCAAC4yrCZtxVChw4dZBhGrm3JkiWOY0aPHq1Dhw4pOztb//nPfxQdHV0ktyAhIUFRUVFKSEhwLIOWkJCg6OhorV69Wps3b9apU6c0fvz4Qs1boIpunz59tGTJEgUGBub5pow/+vjjjwsVAAAAQEl2IzyMZrYxY8ZowYIFjue/JKlz587y8fHRQw89pB9//FFz587VsGHDCjVvgSq6QUFBstlsjj9fbStqmzdvVs+ePRUWFiabzaaVK1c69l28eFH/+Mc/1KhRI5UpU0ZhYWG6//77dfToUac5kpKS1LVrV5UtW1YVKlTQQw89pIyMjFznWrJkiRo3biwfHx9Vrly52P5lAAAAKKjExET99NNPxTqv+eWXX/J8YC4wMFD79++XJN100006efJkoeYtUEV38eLFef75erjae5ezsrKUlJSkJ598UpGRkfrtt980ZswY3Xnnndq2bZsk6ejRo+rSpYsGDBigV199Venp6Ro7dqyGDBmi5cuXO+aKi4vTnDlzNHv2bEVHRyszM1MHDx68npcKAABKIpNfAXwjaN68uSZMmKC33npLlSpVkiSdOHFCjz/+uKKioiRJe/fuzfU6479S6IfRzp07J8MwHH25hw4d0ooVKxQREaHbbrutsNP9pau9dzkoKEgJCQlOY6+++qpatmypw4cPq3r16lq9erVKlSql+Ph4eXhcLmDPnz9fjRs31r59+1SnTh399ttveuKJJ/Tpp5+qc+fOjrlcfQsHAAAACm7hwoW66667VLVqVUcym5ycrFq1aumTTz6RdHlViCeeeKJQ8xY60b3rrrvUp08fjRw5UmlpaWrZsqVKly6tkydPKi4uTg8//HBhpyxSZ86ckc1mU9myZSVJ2dnZKl26tCPJlSRfX19J0pYtW1SnTh0lJCTIbrfryJEjatCggc6ePavWrVtrzpw5+f7kkJ2drezsbMfn9PR08y4KAAC4reKyvJiV6tWrp59++kmff/659uzZ4xjr2rWrI4e7sn5vYRR61YWkpCS1bdtWkrR8+XKFhITo0KFDeuutt/Tyyy8XOoCidP78ef3jH//Qvffe6+jz6NSpk1JSUjR79mxduHBBv/32myZOnChJOnbsmCRp//79stvtmjFjhubOnavly5fr9OnT6tq1qy5cuJDnuWbOnOnUm1zYUjoAAMD1EBUVpYiICMXHx1sdylV5eHjo9ttv10MPPaRHH31U3bp1cypUujRnYb+QlZXleNXv559/rj59+sjDw0O33HKLDh06dE3BXIuLFy+qf//+MgxD8+bNc4w3bNhQS5cu1Zw5c+Tn56eQkBDVrFlTwcHBjptnt9t18eJFvfzyy+rWrZtuueUW/d///Z/27t2rjRs35nm+SZMmOZa/OHPmjJKTk6/LdQIAADdkmLD97kZ4GM1ut+uZZ55RlSpV5O/v73gl8JNPPqmFCxe6PG+hE906depo5cqVSk5O1rp16xx9uampqdf8ejlXXUlyDx06pISEhFxx3HfffUpJSdGRI0d06tQpTZs2TSdOnFCtWrUkSaGhoZKkiIgIx3cqVaqkihUr6vDhw3me09vbW4GBgU4bAAAACm/69OlasmSJnn/+eZUuXdoxfvPNN+vNN990ed5CJ7pTpkzR+PHjFR4erujoaLVq1UrS5epu06ZNXQ7EVVeS3L1792r9+vWqUKFCvscGBwfL399f77//vnx8fNS1a1dJUps2bSRJP//8s+PY06dP6+TJk6a9exkAAED6X4+uGduN4q233tKCBQs0cOBAeXp6OsYj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iCJWoEQ3KCjIsQUGBmrDhg3atm2bY//27du1YcMGBQUFmRZofr788kuNGjVK33zzjRISEnTx4kXddtttyszMdByTlZWl22+/Xf/85z/zneejjz7S4MGDNXToUO3cuVNff/217rvvvutxCQAAAJbLzMxUZGSk4uPj89z//vvvKzY2VlOnTlVSUpIiIyPVrVs3paamOo4pW7asdu7cqQMHDmjZsmU6fvz49Qo/TwVqXVi8eLHjz//4xz/Uv39/zZ8/X56enpKknJwcPfLII3m+vs1sa9eudfq8ZMkSVa5cWdu3b3es9zt27FhJ0qZNm/Kc40rD9OzZs/XAAw84xmnNAAAAZjN71YX09HSncW9vb3l7e+c6vnv37urevXu+88XFxWn48OEaOnSoJGn+/Pn67LPPtGjRIk2cONHp2ODgYEVGRuqrr77S3XfffY1X4rpCr6O7aNEijR8/3pHkSpd7MmJjY7Vo0aIiDc4VZ86ckSSVL1++wN9JSkrSkSNH5OHhoaZNmyo0NFTdu3fXrl278v1Odna20tPTnTYAAIDiplq1ak6/nZ85c2ah57hw4YK2b9+uLl26OMY8PDzUpUsXbd26VdLlJcHOnj0r6XI+tnnzZtWrV69oLsJFhX4Y7dKlS9q9e3euwHfv3i273V5kgbnCbrdr7NixatOmjW6++eYCf2///v2SpGnTpikuLk7h4eGaM2eOOnTooD179uSZNM+cOVNPPfVUkcUOAABKKLNe7vD7nMnJyU6/dc+rmvtXTp48qZycHMc6t1cEBwdr9+7dkqRDhw7poYcecjyE9uijj6pRo0YFmj85OVk2m82xysK3336rZcuWKSIiQg899FCh472i0Inu0KFD9cADD+iXX35xvKniP//5j2bNmuUoZVtl1KhR2rVrl7Zs2VKo711J0CdPnqy+fftKutyuUbVqVX344YcaMWJEru9MmjRJsbGxjs/p6emqVq3aNUQPAABKIrNbFwIDA69Le2nLli21Y8cOl75733336aGHHtLgwYOVkpKirl27qmHDhnr33XeVkpKiKVOmuDRvoRPdF154QSEhIZozZ46OHTsmSQoNDdWECRP097//3aUgisLo0aO1evVqbd68udBrroWGhkpy7sn19vZWrVq1dPjw4Ty/k19/CwAAgLupWLGiPD09cz1cdvz4cYWEhFzz/Lt27XIUUD/4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ZsxQ//799e2332rBggVasGCB1aEBAAB3ZsikRLfop7zR0Lrwu6ioKK1YsUL/93//p5tvvlnPPPOM5s6dq4EDB1odGgAAAFxARfcP/va3v+lvf/ub1WEAAICShNYF01DRBQAAgFuiogsAAGAlu12S3aR5SzYqugAAAHBLVHQBAACsRI+uaajoAgAAwC1R0QUAALASFV3TkOgCAABYyW7IlLc72El0aV0AAACAW6KiCwAAYCHDsMswin4pMDPmvNFQ0QUAAIBboqILAABgJcMwp5+Wh9Go6AIAAKBo9O7dW+XKldPdd99tdSiSSHQBAACsdWV5MTO262zMmDF66623rvt580OiCwAAgCLRoUMHBQQEWB2GA4kuAACAlex287ZC2Lx5s3r27KmwsDDZbDatXLky1zHx8fEKDw+Xj4+PoqOj9e233xbRTTAHiS4AAICVTG5dSE9Pd9qys7PzDCMzM1ORkZGKj4/Pc//777+v2NhYTZ06VUlJSYqMjFS3bt2Umppq2q25ViS6AAAAbqxatWoKCgpybDNnzszzuO7du2v69Onq3bt3nvvj4uI0fPhwDR06VBEREZo/f778/Py0aNEiM8O/JiwvBgAAYCHDbpdhM++FEcnJyQoMDHSMe3t7F3quCxcuaPv27Zo0aZJjzMPDQ126dNHWrVuvPViTkOgCAAC4scDAQKdE1xUnT55UTk6OgoODncaDg4O1e/dux+cuXbpo586dyszMVNWqVfXhhx+qVatW13Tua0GiCwAAYCXDkOQeL4xYv379dT/n1dCjCwAAgKuqWLGiPD09dfz4cafx48ePKyQkxKKo/hqJLgAAgJXshnmbpKioKEVEROS7mkJBlC5dWs2bN9eGDRv+F7bdrg0bNljamvBXaF0AAABwY4mJiQXq0c3IyNC+ffscnw8cOKAdO3aofPnyql69umJjYxUTE6MWLVqoZcuWmjt3rjIzMzV06FAzw78mJLoAAABWMgxJRb/qQmF7dLdt26aOHTs6PsfGxkqSYmJitGTJEg0YMEAnTpzQlClTlJKSoiZNmmjt2rW5HlArTkh0AQAAoA4dOsj4i+R49OjRGj169HWK6NrRowsAAGAhw26YtklF06N7o6KiCwAAYCXDLnNaFy7PWdAeXXdERRcAAABuiYouAACAhQy7IcNW9C93+Kt+25KAii4AAADcEokuAACA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5OQoNTVVbdu2dSnugIAAhYeHa8OGDY55/6gg11IYwcHBCgsL0/79+zVw4ECX56lXr54SExOdxv78uXTp0srJyXH5HH/UtGlT/fTTT7nGPTw89Pbbb+u+++5Tx44dtWnTJoWFhTkds2vXLt19991FEgcAmIFEF4Ak6dSpU+rXr5+GDRumxo0bKyAgQNu2bdPzzz+vu+66S5LUpUsXtWrVSr169dLzzz+vunXr6ujRo/rss8/Uu3dvtWjRQmPGjNGQIUPUokULtWnTRu+++65+/PFH1apVy3GuTp06KTY2Vp999plq166tuLg4paWlOfbXrVtXAwcO1P333685c+aoadOmOnHihDZs2KDGjRurR48eBbqmadOmaeTIkapcubK6d++us2fP6uuvv9ajjz5aoGvJz4EDB7Rjxw6nsZtuuklPPfWUHnvsMQUFBen2229Xdna2tm3bpt9++02xsbEFivnRRx9Vu3btFBcXp549e+qLL77QmjVrnFoHwsPDHTFUrVpVAQEBjofECqtbt2568MEHlZOTk6vy7OnpqXfffVf33nuvOnXqpE2bNikkJETS5RUkjhw5oi5durh0XgC4LqxuEgZQPJw/f96YOHGi0axZMyMoKMjw8/Mz6tWrZzzxxBNGVlaW47j09HTj0UcfNcLCwoxSpUoZ1apVMwYOHGgcPnzYccyzzz5rVKxY0fD39zdiYmKMxx9/3OnhqQsXLhgPP/ywUb58eaNy5crGzJkznR5Gu3LMlClTjPDwcKNUqVJGaGio0bt3b+P77783DON/D0z90YoVK4w//7M2f/58o169eo45Hn300UJdy59JynP76quvDMMwjHfffddo0qSJUbp0aaNcuXJGu3btjI8//tgwjP89jPbdd9855vvtt98MScbGjRsdYwsWLDCqVKli+Pr6Gr169TKmT59uhISEOP131bdvX6Ns2bKGJGPx4sWO2P78oFxQUJBjf14uXrxohIWFGWvXrnWM/fneXrx40ejTp4/RoEED4/jx44ZhGMaMGTOMbt265TsvABQHNsP4U6McABSxadOmaeXKlbmqoCiY4cOHa/fu3aYt5RUfH69Vq1Zp3bp1BTr+woULuummm7Rs2TK1adPGlJgAoCjQugAAxcwLL7ygrl27qkyZMlqzZo2WLl3q0lrEBTVixAilpaXp7NmzBXoN8OHDh/XPf/6TJBdAsUeiCwDFzLfffqvnn39eZ8+eVa1atfTyyy/rwQcfNO18Xl5emjx5coGPr1OnjtOLNwCguKJ1AQAAAG6JF0YAAADALZHoAgAAwC2R6AIAAMAtkegCAADALZHoAgAAwC2R6AIAAMAtkegCAADALZHoAgAAwC39PzPSPGFuMwtiAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "integral_grid, integral_std = load_sweep_results_grid_integral(\n", - " sweep_dir, k_values, hidden_dims\n", - ")\n", - "\n", - "from matplotlib.colors import LogNorm, SymLogNorm\n", - "\n", - "plt.figure(figsize=(8, 6))\n", - "plt.imshow(integral_grid, aspect=\"auto\", norm=LogNorm())\n", - "plt.xlabel(\"Sequence Length (k)\")\n", - "plt.ylabel(\"Hidden Dimension\")\n", - "plt.xticks(range(len(k_values)), k_values)\n", - "plt.yticks(range(len(hidden_dims)), hidden_dims)\n", - "\n", - "plt.gca().invert_yaxis()\n", - "plt.colorbar(label=\"Loss Curve Integral\")\n", - "plt.title(\"Loss Curve Integral\")\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "6b9956cf", - "metadata": {}, - "source": [ - "### Steps to Convergence Heatmap" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "4bf3dbcc", - "metadata": {}, - "outputs": [], - "source": [ - "def load_sweep_results_grid_convergence(\n", - " sweep_dir: str, k_values: list, hidden_dims: list, reduction_threshold: float = 0.99\n", - "):\n", - " \"\"\"\n", - " Load sweep results and compute steps to convergence.\n", - "\n", - " Convergence is defined as reaching `reduction_threshold` loss reduction\n", - " (e.g., 0.99 = 99% reduction from initial loss).\n", - "\n", - " If convergence is not reached, the grid point is set to NaN (blacked out).\n", - "\n", - " Args:\n", - " sweep_dir: Path to the sweep directory\n", - " k_values: List of k (sequence length) values\n", - " hidden_dims: List of hidden dimension values\n", - " reduction_threshold: Fraction of loss reduction to consider converged\n", - "\n", - " Returns:\n", - " grid: 2D array with mean steps to convergence (NaN if didn't converge)\n", - " std_grid: 2D array with standard deviations across seeds\n", - " \"\"\"\n", - " sweep_path = Path(sweep_dir)\n", - "\n", - " grid = np.full((len(hidden_dims), len(k_values)), np.nan)\n", - " std_grid = np.full((len(hidden_dims), len(k_values)), np.nan)\n", - "\n", - " for i, h in enumerate(hidden_dims):\n", - " for j, k in enumerate(k_values):\n", - " exp_name = f\"k{k}_h{h}\"\n", - " exp_dir = sweep_path / exp_name\n", - "\n", - " if not exp_dir.exists():\n", - " continue\n", - "\n", - " # Collect convergence steps from all seeds\n", - " convergence_steps = []\n", - " for seed_dir in exp_dir.glob(\"seed_*\"):\n", - " loss_file = seed_dir / \"train_loss_history.npy\"\n", - " if loss_file.exists():\n", - " loss_history = np.load(loss_file)\n", - " initial_loss = loss_history[0]\n", - "\n", - " if initial_loss > 0:\n", - " # Compute reduction at each step\n", - " reductions = 1 - loss_history / initial_loss\n", - "\n", - " # Find first step where reduction >= threshold\n", - " converged_mask = reductions >= reduction_threshold\n", - " if np.any(converged_mask):\n", - " step = np.argmax(converged_mask) # First True\n", - " convergence_steps.append(step)\n", - " # else: Never converged - don't add to list\n", - "\n", - " if convergence_steps:\n", - " grid[i, j] = np.mean(convergence_steps)\n", - " std_grid[i, j] = (\n", - " np.std(convergence_steps) if len(convergence_steps) > 1 else 0.0\n", - " )\n", - " # else: No seeds converged - grid[i,j] remains NaN (blacked out)\n", - "\n", - " return grid, std_grid" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "6b083a66", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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0gQANK6nR48eOHXqFP766y912/r162FtbY2OHTsCAM6ePYtr166hd+/eePr0qfp3ICUlBS1btsShQ4e0hvW8+rsXExODrKwsjeGcADQW0MixceNGNGnSBC4uLhq/c61atYJSqdSan5VzjS8PsyIyBk40JoMKCQnB5s2bkZGRgXPnzmHLli2YPXs2unbtirNnz+b7x/Hx48dISEjAwoULsXDhwlyPeXXCcs4KOjlkMhkqVaqkHsddvnx5REREYNasWVi9ejWaNGmCd999F3379tX4w62P27dvo3LlylofOKpXr67en5ecD0Lly5dHvXr11O0ODg7o0KEDVq1ahaysLFhYWMDW1lZrXDsApKWlacTK71y6Pl8ul2v82zx58gRff/01lixZAplMhvbt26N9+/aYMWMGIiIiMGzYsHznUDg5OWn84c5PzutVtWpVrX3VqlXDkSNHNNpyxs2/zMXFRWPssIWFBd577z2sWbMG6enpsLa2xubNm5GZmalRFFy7dg2XLl3Sipfj1Z+38uXL55p/gwYNtNorVaqk8fjatWsAkOdkQicnJ43HulznX3/9BS8vL7i6uuYaM+e8Qgit35UclpaWeT5XF7nFrVKlCjZs2JDv8/73v/9hwoQJOHbsmFbBnpiYCGdnZ/UHPV3uQXDz5k307dsX3bp101oCOT8VKlRAhQoVdD4+Lzk/x7m9HlWrVtX6QuNljx8/xosXL/J8rq7r2JctW1arWHJxccH58+c18pT6/pWfv/76C++9916+x+h77pcLJOC/D88v/w5069YNERER6vllQghs3LgRbdq0Uf9O5fzuhYWF5ZlbYmKiRgHy6u96Tm6v/l67urpqPC/nfOfPn9f5fUX8O5eA96MgY2NRQEXCysoKISEhCAkJQZUqVTBgwABs3Lgx1280c+R8U9O3b98837wDAwP1zmXmzJno378/tm3bhj179mD48OGYOnUqjh8/jrJly+odrzC8vLwAAKVLl9ba5+7ujszMTKSkpMDZ2Rmenp7Yv38/hBAafyzu37+vESsvnp6e6mNfpsvzv/rqK9SqVQudOnXC4cOHcf/+fUyfPh02NjaYOHEi3nnnHSxdujTPb2KrVauGM2fO4O7du/D29s43T33lt+LSy3r27Ikff/wRO3fuRKdOnbBhwwZUq1YNQUFB6mNUKhUCAgIwa9asXGO8mntBhVh+cn6+V65cCQ8PD639ry5Pqet16nJemUyGnTt35hozrx6AHCVLlkRWVhaeP3+uc+9PQf766y+0bNkS1apVw6xZs+Dt7Q0rKyvs2LEDs2fPznUyZkE8PT3VvYQnT57UeWJ8cnKyugcvPwqFIs8PecVFXj8zwkQnsOpyPV5eXmjSpAk2bNiAzz//HMePH8edO3c0VjfL+XmaMWOGRo/ey179PSjs7/rbb7+NTz/9NNf9VapU0XicU+S4ublJPieRIbAooCKX88f55Q+ouX0jUqpUKTg6OkKpVOa70snLcr4ByiGEwPXr17WKh4CAAAQEBODLL7/E0aNH0ahRI0RHR2sM13lVXt/a+Pj44Pz581CpVBofii9fvqzenxcvLy94eHhoraoDAP/88w9sbGzUH7xq1qyJn376CZcuXdL4Fv+PP/5Q789PzZo1cfjwYa08//jjD9jZ2Wn9Ycpx7tw5LFmyBKdOnVLn5eLioh6+4eXlhYyMDDx+/DjX4gYAOnTogLVr12LVqlUa9zvITc7rdeXKFa1v0a9cuZLv65mfpk2bwtPTE+vXr0fjxo3x+++/44svvtA4pmLFijh37hxatmwp+Vs6Hx8fXL9+Xav91baKFSsCyC7+dP35LkjFihWxe/duPHv2LM/egooVK0IIgfLly+f5b56fatWqAcj+Jj63ovzV30EAuHr1qtYdfF/2yy+/ID09Hdu3b9f4NvjVoUw5r1lcXJzWN7SvsrGxwa+//oq33noL77zzDg4ePIgaNWrk+xwgewWbnPX48+Pj46O1ktSr+4HcX48rV67kG7tUqVKwtbWV9Fx96fr+pe/vQ8WKFQtcdaow75356dGjBz7++GNcuXIF69evh52dHTp06KCRG5DdGyf1dy8nt+vXr2v0Ijx9+lSj5yLnfMnJyTqf6+bNmwD+6zEhMhbOKSCDyflW+1U5Xd8vDw+xt7dHQkKCxnEKhQLvvfceNm3alOsfl8ePH2u1rVixAs+fP1c//vnnn3H//n20adMGQPbY9leXIwwICIBcLs91aM3L7O3tc122tG3btnjw4IHGePWsrCzMnTsXDg4OaNasWb5xe/Togbt372Lv3r3qtidPnmDbtm1466231H8sO3bsCEtLSyxYsEB9nBAC0dHRKFOmDBo2bKhuv3//Pi5fvozMzEx1W9euXfHw4UNs3rxZ4zwbN25Ehw4dcp1vAAAjRozAoEGD1EM2SpcujcePH+PZs2cAgEuXLsHCwiLfb7W6du2KgIAAREZG5rp06vPnz9Uf0OvUqQN3d3dER0dr/Jvs3LkTly5dQrt27fI8T37kcjm6du2KX375BStXrkRWVpbG0CEg+74N9+7dw6JFi7Se/+LFizyXi31ZaGgojh07hrNnz6rbnj17pjUGPTQ0FE5OTpgyZYrGv1OO3H6+C/Lee++p70j9qpzfxS5dukChUGDixIlav59CCDx9+jTfc+QMjXp1idMcW7du1ShyT5w4gT/++EP9O5ibnG+AX84nMTERS5cu1TiudevWcHR0xNSpU9XD3l69vpc5Oztj9+7dcHd3x9tvv60xzjwvhppT4OnpiZo1a2L58uUa7xt79+7FxYsX832uQqFAaGgotm7dijt37qjbL126hN27dxd4DfrQ9f3Lzs4OALTep/Py3nvvqYeMvirn36qw7535nVuhUGDt2rXYuHEj2rdvr3Ffgdq1a6NixYr47rvvcu0V0uV3r2XLlrCwsNBaNjfnHjIv6969O44dO5brv11CQoLW36RTp07B2dlZpyKWqEi95onN9AarUaOGKF++vIiIiBALFy4U8+bNE7179xYKhUJr6cO2bdsKe3t7MXPmTLF27Vpx/PhxIUT2Cg8+Pj7Czs5OjBgxQvz4449i6tSpolu3bsLFxUX9/FeXJM1ZxtLGxkZUqlRJpKSkCCGE2LJliyhTpowYOXKkWLBggfjhhx9ESEiIsLS0FMeOHcv3eqZPn65eRWXNmjVi+/btQoj/ltWzsrISn3zyiZg7d6565Y+CliTNuUZPT0/h6OgoJkyYIGbNmiWqVKkibG1txdmzZzWOHTNmjAAgPvzwQ7Fo0SLRrl07AUCsXr1a47ic1WpeXtYyKytL1K9fXzg4OKiX0KxRo4ZwdHQUly9fzjW3DRs2CBcXF43Vn9LS0kSZMmXEW2+9JebNmyd8fX1F9+7dC7zOa9euCR8fH2FhYSF69+4t5s+fLxYuXChGjBghSpUqJapUqaI+NmdJ0nr16ok5c+aIcePGCTs7u1yXJLW3t9c6V26r2wghxJEjRwQA4ejoKAICArT2K5VK0bZtWyGTyUTPnj3F3LlzxZw5c8RHH30kXF1d1UuXCpG9Wkx4eLhWjDt37ogSJUoINzc3jSVJa9asKQBoLH27evVq9ZKVkydPFj/++KP44osvRM2aNTVi63Od77//vnpJ0u+//17Mnj1bdOnSRWNJ0qlTpwoAomHDhmL69OkiKipKfPrpp6Jy5cpixowZWud5lb+/v9ZqLLktSfrNN9+ol2f9559/8sz78uXLwsrKSgQEBIh58+aJb7/9VlSsWDHXZVxzltD19/cXU6ZMEVFRUeKjjz4S/fr1Ux/z6pKkf//9t/D19RW+vr4aKyMVtZ07d2osSfrll1/qvCTpuXPnhI2NjShXrpz49ttvxeTJk/VekvTl1yBHWFiYxrn1ef/y8/MTHh4eYv78+WLt2rX5Lpn5/Plz4efnp16SNDo6WkyZMkXUr19f/b6m67lzfrZy+9l89XXL0apVK+Ho6CgAiE2bNmnt379/v/r1nTBhgli4cKGYMGGCaNq0qWjfvr36uJyf1cePH2vF+OSTT9RLks6fP198+OGHwtvbW7i5uYn+/furj0tJSRG1atUSFhYWYtCgQSIqKkp899136t/rV2P7+/uLvn375vnaEr0uLArIYHbu3CkGDhwoqlWrJhwcHISVlZWoVKmSGDZsmHj48KHGsZcvXxZNmzYVtra2Wsu5PXz4UISHhwtvb29haWkpPDw8RMuWLcXChQvVx+QUBWvXrhXjxo0T7u7uwtbWVrRr105jSb8bN26IgQMHiooVKwobGxvh6uoqWrRoIfbt21fg9SQnJ4vevXuLEiVKaC0p+PDhQzFgwADh5uam/nCzdOlSnV+rv/76S3Tu3Fk4OTkJW1tb8dZbb4kTJ05oHadUKsWUKVOEj4+PsLKyEjVq1NBYzi9HbkWBEEI8e/ZMfPDBB6JkyZLCzs5ONGvWTOOD7stSU1OFj49Prvc/iI2NFbVq1RKOjo6iQ4cO4tGjRzpdZ3x8vBg/frwICAgQdnZ2wsbGRvj7+4tx48Zp3ftg/fr1Ijg4WFhbWwtXV1fRp08frQ90+hYFKpVKeHt7CwBi8uTJueaYkZEhpk2bJmrUqCGsra2Fi4uLqF27tpg4caJITExUH5dXUSBE9tK3TZo0EdbW1qJs2bJi6tSp4ocffhAANNbrFyL7Zzc0NFQ4OzsLGxsbUbFiRdG/f39x8uRJSdeZlZUlZsyYIapVqyasrKxEqVKlRJs2bcSpU6c0jtu0aZNo3LixsLe3F/b29qJatWoiPDxcXLlyJddretmsWbOEg4ODxjKiL39wmzlzpvD29lbff+TV9exzy3v79u0iMDBQ2NjYqIuKJUuW5PpzvH37dtGwYUNha2srnJycRN26dcXatWvV+3P7QHz9+nXh6ekpqlevnusHvKKyadMmUb16dWFtbS38/PzE5s2btT6YC5H7h9uDBw+K2rVrCysrK1GhQgURHR2d58/2q3QtCoTQ/f3r6NGj6nzy+jD+sqdPn4qhQ4eKMmXKCCsrK1G2bFkRFham8SWDLueWUhQsWrRI/QXAq8vX5jhz5ozo0qWLKFmypLC2thY+Pj6ie/fuIiYmRn1MfkVBVlaW+Oqrr4SHh4f6ffvSpUuiZMmS4qOPPtI49vnz52LcuHGiUqVKwsrKSri5uYmGDRuK7777TmOZ7kuXLgkAOv1NIipqMiFMdAYSmbUDBw6gRYsW2LhxI7p27WrsdIi0jBw5Ej/++COSk5MNNmnYWBITE1GhQgVMnz4dH3zwgbHTISo2EhIS4OLigsmTJ2vNWdLFyJEjcejQIZw6dYqrD5HRcU4BEVEhvXrPiKdPn2LlypVo3LixyRcEQPZY/U8//RQzZsyQtDIQ0Zsgt3vDzJkzBwDQvHlzveM9ffoUP/30EyZPnsyCgIoFrj5ERFRIDRo0QPPmzVG9enU8fPgQixcvRlJSEr766itjp2Ywn332GT777DNjp0FkNOvXr8eyZcvQtm1bODg44MiRI1i7di1at26NRo0a6R2vZMmSOi2HS/S6sCggIiqktm3b4ueff8bChQshk8lQq1YtLF68GE2bNjV2akRkIIGBgbCwsMD06dORlJSE0qVLY8SIEfkubU1kSjingIiIiIjIzHFOARERERGRmWNRQERERERk5jin4A2mUqnwzz//wNHRkSsbEBEREYDsu0w/f/4cXl5ekMtN7/vhtLQ0ZGRkGDyulZUVbGxsDB7XVLAoeIP9888/8Pb2NnYaREREVAzdvXsXZcuWNXYaeklLS4OzrQsykGbw2B4eHrh586bZFgYsCt5gjo6OAIDbp33h5GB63wS8TveyuCycLu5m2Rk7BZNxLs3H2CmYhHlHWxo7BZPgvZNrguTHKSMFG/ZP12grD+CZcdIxGTmfE0xJRkYGMpCGxmgLC1gaLG4WMnHkwQ5kZGSwKKA3T86QIScHOZwcWRTkJymLr48u7Pk66czGgm+vupDbmucfX31ZWLIoyI+lKgtOr7Tx3apgpjy02EJmDQuZ4YoCCDlg5r9m/J0hIiIiIgIQEhICPz8/zJ8/39ipvHb8KouIiIiITIpMLjNoT4dMyAAlEBsbCyenV/udzAN7CoiIiIiIzBx7CoiIiIjItMjk2ZvB8HtyFgVEREREZFKKZPiQmWNRQERERCYtS67Afs8AAMCT+xcAAIa/tRWZg5CQECgUCoSHhyM8PNzY6bxWLAqIiIjIpKVY2mJC7b4AgMO/fmbkbOi1kMkMPHwou6eAE42JiIiIiMhssaeAiIiIiEyLXJbdW2AonFPAngIiIiIiInPHooCIiIiITItMZvgNvKMxEREREZHJkMnlkBlworFMZMcy54nGLAqIiIjIpNlnvsCn5zcBAJ782zYIQJLRMiIyPSwKiIiIyKRZqJRo8e/9CXJ8bKRc6DWRGXiiMTjRmHMKiIiIiIjMHHsKiIiIiMi0yOWGvXmZ4PfkLAqIiIiIyLRw+JDBsSwiIiIiIgKXJCUiIiIiMh0yWfZdjQ1FlR3LnJckZU8BEREREZGZY08BEREREZkUmczANy8z5KRlE8VXgIiIiIjIzLGngIiIiIhMi9zAcwq4+hCLAiIiIiIyMYZektSgy5uaJg4fIiIiIiIyc+wpICIiIiLTwp4Cg2NPARERERERePMyIiIiIpOllCtwxrUCACDx2Q0AQKYxE6KiJ5dnb4YLCMC8b15mEkXBzZs3MXDgQDx8+BAKhQLHjx+Hvb29sdMiIiKiYiDZ0hYjGv4fAODwr58ZORsi02QSRUH//v0xefJkNGnSBM+ePYO1tbWxUyIiIiIiY+GcAoMr9nMK/vzzT1haWqJJkyYAAFdXV1hY5F/LPH36FO7u7rh169ZryPD16NmzJ2bOnGnsNIiIiIiMT4b/CgODbMa+IOMrNkXBvXv30LdvX5QsWRK2trYICAjAyZMnce3aNTg4OKBDhw6oVasWpkyZUmCsyMhIdOzYEb6+vrnu//bbbyGTyTBy5Eid85CSe46vv/4aMplMY6tWrZpecb788ktERkYiMTGxwOsnIiIiItJHsRg+FB8fj0aNGqFFixbYuXMnSpUqhWvXrsHFxQW3bt3C4cOHcfbsWbi7u+Odd95BSEgI3n777VxjpaamYvHixdi9e3eu+2NjY/Hjjz8iMDBQrzyk5P6yGjVqYN++ferHr/Z2FBTH398fFStWxKpVqxAeHp5nPkRERERvPA4fMrhiURRMmzYN3t7eWLp0qbqtfPnyAIBHjx6hTp068Pb2BgC0bdsWZ8+ezbMo2LFjB6ytrVG/fn2tfcnJyejTpw8WLVqEyZMn65WHlNxfZmFhAQ8Pj0LF6dChA9atW5dnUZCeno709HT146SkpHxzJyIiIiICisnwoe3bt6NOnTro1q0b3N3dERwcjEWLFgHIXi/20aNHiI+Ph0qlwqFDh1C9evU8Yx0+fBi1a9fOdV94eDjatWuHVq1a6Z2HlNxfdu3aNXh5eaFChQro06cP7ty5o3ecunXr4sSJExof/F82depUODs7q7ecQoqIiOhNZpuVjlEXtmLUha2YB2AeAAdjJ0VFSy4z/GbmikVRcOPGDURFRaFy5crYvXs3hgwZguHDh2P58uWwsLDAlClT0LRpUwQGBqJy5cpo3759nrFu374NLy8vrfZ169bh9OnTmDp1qqQ8CvOcevXqYdmyZdi1axeioqJw8+ZNNGnSBM+fP9crjpeXFzIyMvDgwYNccxk3bhwSExPV2927d/PMm4iI6E1hpcxE59vH0Pn2MYQDCAdgY+ykiExMsRg+pFKpUKdOHfUk4uDgYMTFxSE6OhphYWFo06YN2rRpo1OsFy9ewMZG863g7t27GDFiBPbu3au1T588pD7n5dwDAwNRr149+Pj4YMOGDfjggw90jmNrawsge95EbqytrblcKxEREb35imhOQUhICBQKBcLDw81uDmex6Cnw9PSEn5+fRlv16tW1htjows3NDfHx8Rptp06dwqNHj1CrVi1YWFjAwsICBw8exA8//AALCwsolUrJeUh5TokSJVClShVcv35drzjPnj0DAJQqVSrP2ERERERvPJnc8BuyF6S5ePGi2RUEQDEpCho1aoQrV65otF29ehU+Pj56xwoODsbFixc12lq2bIkLFy7g7Nmz6q1OnTro06cPzp49C4VCITkPKc9JTk7GX3/9BU9PT73ixMXFoWzZsnBzc8szNhERERGRvopFUTBq1CgcP34cU6ZMwfXr17FmzRosXLhQUpUWGhqKP//8U6O3wNHREf7+/hqbvb09SpYsCX9//0LloctzRo8ejYMHD+LWrVs4evQoOnfuDIVCgV69eukV5/Dhw2jdurXerwkRERHRG4UTjQ2uWBQFISEh2LJlC9auXQt/f39MmjQJc+bMQZ8+ffSOFRAQgFq1amHDhg1FkseyZcsge2kMmy7P+fvvv9GrVy9UrVoV3bt3R8mSJXH8+HGNYUAFxUlLS8PWrVsxePBgva+LiIiIiCg/MiGEMHYShvbbb79hzJgxiIuLg1xu2LpnwoQJOHjwIA4cOGDQuAWJiorCli1bsGfPHp2fk5SUBGdnZ8RfrQAnx2JR/xVbf2clGzsFk3A7y87YKZiM0y/yv8cJZZt1ONTYKZgEn1/euD/VBuWcnoxf9k7SaCsF4Ilx0jEZiYmJcHJyMnYaesn5bNOqwnBYyA23uEqWKh37bvxgkq+JoRSL1YcMrV27drh27Rru3btn8LX6d+7ciXnz5hk0pi4sLS0xd+7c135eIiIiInrzvZFFAQCMHDmySOKeOHGiSOIWZNCgQUY5LxEREVHxY+AlScE5BW9sUUBEREREb6giuk+BOeNAcyIiIiIiM8eeAiIiIiIyLYZeRlSwp4A9BUREREREZo49BURERERkWjinwOBYFBAREZFJU8nkuOngDgBITX4EAFAaMyEiE8SigIiIiEzacys7hDX/BABw+NfPjJwNvQ5CJoMw4Lf7hoxlqlgUEBEREZFpkcOwM2N503BONCYiIiIiAoCQkBD4+flh/vz5xk7ltWNPARERERGZliKaaBwbGwsnJyfDxTUh7CkgIiIiIjJz7CkgIiIiItPCJUkNjkUBERERmTSbrAz0+usgAOCtf9tmAEg1WkZU5FgUGByLAiIiIjJp1soMDLi2T6NtPlgUEOmDRQERERERmRTep8DwONGYiIiIiMjMsaeAiIiIiEwLb15mcOwpICIiIiIyc+wpICIiIiLTwtWHDI5FARERERGZFhkMXBQYLpSp4vAhIiIiIiIzx54CIiIiIjIpXJLU8NhTQERERERk5thTQERERESmRQbDfrWtMmAsE8WeAiIiIiIiM8eeAiIiomJOoVLCIfMFki1toZQr8twvVYqlDbLk2h8JZEIFp4xUyXFTLWyQqcj9o4ZzerLkuC8srJGhsJT8fHoDcElSg2NRQEREVIx1Pn4ak/ZshWNWGvo1G4Vbjh5ax3inPMaKg7Mln2N4/Q9x1q2iVrtTRip+2TtJctzxtfrggFdgrvsKE3e2f0ds8W0o+flk+jjR2PBYFJiBp8oUZCg5Uiw/z1T8VdDFc5WtsVMwGakqK2OnYBJkWfxDnB+FUolv1mUXBABw6uBsXMzluKeFPM/54wtxOJd2t0LGvXR6NQ6fXl3IKNqux23D4bht6sclATx+5Rhh8LMSGZ6vry+cnJwgl8vh4uKC/fv3Gy0XfhIiIiIqppxTX8DpRZr68VAA4wE8MVpGxdNTAO7GToJeLxkMe8MxI34/cfToUTg4OBgvgX/x62MiIiITMcTYCRDRG4tFARERkYm7AqBUIbajecR9Wsi42/PJuTBxl+j0qtAbLWeisSE3PR06dAgdOnSAl5cXZDIZtm7dqnXM/Pnz4evrCxsbG9SrVw8nTpx45TJkaNasGUJCQrB6teGH2umDw4eIiIhMnBJFM6RIFFFcFGFcotclJSUFQUFBGDhwILp06aK1f/369YiIiEB0dDTq1auHOXPmIDQ0FFeuXIG7e/aAtyNHjqBMmTK4f/8+WrVqhYCAAAQG5j45v6ixp4CIiIiITIqQG37TV5s2bTB58mR07tw51/2zZs3C4MGDMWDAAPj5+SE6Ohp2dnZYsuS/vq4yZcoAADw9PdG2bVucPn1a0uthCCwKiIiIiMi0FNHwoaSkJI0tPT1dUnoZGRk4deoUWrVqpW6Ty+Vo1aoVjh07BiC7p+H58+cAgOTkZPz++++oUaNGIV8Y6VgUEBEREREB8Pb2hrOzs3qbOnWqpDhPnjyBUqlE6dKlNdpLly6NBw8eAAAePnyIxo0bIygoCPXr10e/fv0QEhJS6GuQinMKiIiIiMikCFn2Zsh4AHD37l04OTmp262trQ13kldUqFAB586dK7L4+mJRQEREREQEwMnJSaMokMrNzQ0KhQIPHz7UaH/48CE8PLTvSl4ccPgQEREREZmWYrAkaX6srKxQu3ZtxMTEqNtUKhViYmLQoEEDg57LUNhTQEREREQEICQkBAqFAuHh4QgPD8/32OTkZFy/fl39+ObNmzh79ixcXV1Rrlw5REREICwsDHXq1EHdunUxZ84cpKSkYMCAAUV9GZKwKCAiIiIi0yL7dzNkPACxsbE6Dx86efIkWrRooX4cEREBAAgLC8OyZcvQo0cPPH78GOPHj8eDBw9Qs2ZN7Nq1S2vycXHBooCIiIiITIqQySAMOORHSqzmzZtDCJHvMUOHDsXQoUOlpvVacU4BEREREZGZY1FARERUTD23tUHPER+hOaDeEo2ZEFFxIS+CDdlzCvz8/DB//vzXdy3FBIcPERERFVOZFhY4XqUibhs7ESIzoc+cgjcNiwIiIiIiMinFYU7Bm4bDh4iIiIiIzBx7CoiIiIjItBTRkqTmjD0FRERERGRShMzwG8CJxkRERFQMyVQquKSkIuWltqcA8l8ZnYik4kRjIiIiKnZcUlJxeuxEjbZSAJ4YJx2i4kMmy94MGc/McfgQEREREZGZY08BEREREZkUgf/mARgqnrljUUBEREREpoWrDxkchw8REREREYGrDxERERERmQ65LHszZDyY9+pD7CkgIiIiIjJz7CkgIiIiIpPy8g3HDBXP3LGngIiIiIjIzL0xPQW+vr5wcnKCXC6Hi4sL9u/fb+yUiIiIiKgocPUhg3tjigIAOHr0KBwcHIydBhEREREVIQ4fMjyzHT709OlTuLu749atW8ZORSc9e/bEzJkzjZ0GERER0RvLnJckNami4N69e+jbty9KliwJW1tbBAQE4OTJkwAAmUyGZs2aISQkBKtXry4wVmRkJDp27AhfX191m6+vL2QymdYWHh6eZxxdnqNr3Pyu78svv0RkZCQSExP1ecmIiIiI3jwymeE3ZC9JevHixXw/+72pTGb4UHx8PBo1aoQWLVpg586dKFWqFK5duwYXFxcAwJEjR1CmTBncv38frVq1QkBAAAIDA3ONlZqaisWLF2P37t0a7bGxsVAqlerHcXFxePvtt9GtW7c889LlObocU9D1+fv7o2LFili1apVZ/qASERERUdExmaJg2rRp8Pb2xtKlS9Vt5cuXV/93mTJlAACenp5o27YtTp8+nWdRsGPHDlhbW6N+/foa7aVKldJ4/O2336JixYpo1qxZnnnp8hxdjino+gCgQ4cOWLduHYsCIiIiMmucU2B4JjN8aPv27ahTpw66desGd3d3BAcHY9GiRQCAlJQUPH/+HACQnJyM33//HTVq1Mgz1uHDh1G7du18z5eRkYFVq1Zh4MCBkMl0+0nR5Tl5HZPf9eWoW7cuTpw4gfT09Fxjp6enIykpSWMjIiLTlWxjg48/6ItugHrjOzsRFQWTKQpu3LiBqKgoVK5cGbt378aQIUMwfPhwLF++HA8fPkTjxo0RFBSE+vXro1+/fggJCckz1u3bt+Hl5ZXv+bZu3YqEhAT0799f5xx1eU5ex+R3fTm8vLyQkZGBBw8e5Bp76tSpcHZ2Vm/e3t46505ERMVPhqUFdtQKws+Aesswck5ExYKsCDYzZzLDh1QqFerUqYMpU6YAAIKDgxEXF4fo6GiEhYXh3LlzOsd68eIFbGxs8j1m8eLFaNOmTYHFg77PyeuYgq4PAGxtbQFkz4nIzbhx4xAREaF+nJSUxMKAiIiI3jgcPmR4JtNT4OnpCT8/P4226tWr486dO3rHcnNzQ3x8fJ77b9++jX379mHQoEE6x9TlOfkdo8v1PXv2DID2HIUc1tbWcHJy0tiIiIiIiApiMkVBo0aNcOXKFY22q1evwsfHR+9YwcHBuHjxYp77ly5dCnd3d7Rr107nmLo8J79jdLm+uLg4lC1bFm5ubjrnRURERPTGKaIlSc35PgUmM3xo1KhRaNiwIaZMmYLu3bvjxIkTWLhwIRYuXKh3rNDQUIwbNw7x8fHqJT9zqFQqLF26FGFhYbCw0O3l0eU5BR2jy/UdPnwYrVu31uNKiYiIiEhXsbGxZjvSwmR6CkJCQrBlyxasXbsW/v7+mDRpEubMmYM+ffroHSsgIAC1atXChg0btPbt27cPd+7cwcCBA3N97rJly7RWFiroObocU9D1paWlYevWrRg8eLCul0lERET0RsqZU2DIzdyZTE8BALRv3x7t27c3SKzx48djzJgxGDx4MOTy/2qj1q1bQwiR5/Nu3rypdd+Cgp6j6zH5Xd/SpUtRt25drXsrEBHRm8v1eTJOj52o0VYKwBPjpENEbzCTKgoMqV27drh27Rru3bun1wo9O3fuxLx584ows9xZWlpi7ty5r/28RERERMWOoZcRZU+B+RYFADBy5Ei9n3PixAnDJ6IDfVZCIiIiInqTCXn2Zsh45o4vARERERGRmTPrngIiIiIiMkEcPmRw7CkgIiIiIjJzLAqIiIiIyKRwSVIgISEBP/30E8aNG4dnz54BAE6fPo179+5JisfhQ0REREREJuT8+fNo1aoVnJ2dcevWLQwePBiurq7YvHkz7ty5gxUrVugdkz0FRERERGRaZDLDb8i+mayfnx/mz59v5AvMX0REBPr3749r167BxsZG3d62bVscOnRIUkz2FBARERGRySmKIT+xsbFwcnIyfGADi42NxY8//qjVXqZMGTx48EBSTPYUEBERERGZEGtrayQlJWm1X716FaVKlZIUk0UBEREREZkWWRFsJuTdd9/FN998g8zMTACATCbDnTt38Nlnn+G9996TFJNFARERERGRCZk5cyaSk5Ph7u6OFy9eoFmzZqhUqRIcHR0RGRkpKSbnFBARERGRSTH0MqKmtiSps7Mz9u7di//97384d+4ckpOTUatWLbRq1UpyTBYFREREREQmqFGjRmjUqJFBYnH4EBERUTGVYm2Nr7p3Qjig3pKNnBNRsWDmcwqGDx+OH374Qat93rx5GDlypKSYLAqIiIiKqXQrS6xs1ggLAPWWZuSciIoDc7+j8aZNm3LtIWjYsCF+/vlnSTFZFBARERERmZCnT5/C2dlZq93JyQlPnjyRFJNFARERERGZFjMfPlSpUiXs2rVLq33nzp2oUKGCpJicaExEREREZEIiIiIwdOhQPH78GG+99RYAICYmBjNnzsScOXMkxWRRQEREREQmxdyXJB04cCDS09MRGRmJSZMmAQB8fX0RFRWFfv36SYrJooCIiIiIyMQMGTIEQ4YMwePHj2FrawsHB4dCxWNRQEREVEy5JKdg36QZUL3UVh3AU2MlRFRcGHoegIn1FLysVKlSBonDicZERETFlEwIlExOQSlAvZnwZxcigxEymcE3AAgJCYGfnx/mz59v5CvM38OHD/H+++/Dy8sLFhYWUCgUGpsU7CkgIiIiIgIQGxsLJycnY6dRoP79++POnTv46quv4OnpCZms8F8XsCggIiIiItNi5sOHjhw5gsOHD6NmzZoGi8nhQ0REREREJsTb2xtCCIPGZFFARERERCYlZ0lSQ26mZM6cORg7dixu3bplsJgcPkREREbnlPoCFkqlpOdmWijw3NY2132OL17AMkta3CyFAkl2uce1T0uDdWaWpLhKuRyJ9na57rNNz4BtRob6sUtKiqRzEL3xzHz4UI8ePZCamoqKFSvCzs4OlpaWGvufPXumd0wWBUREZHQLFy5D/Ws3JD33t+BAhA96P9d9367+Ge3OnJcU93jlCug5ckiu+z7btgP9Dh2TFPeqR2m0/mp0rvv+b98BjNyxV1JcIjIfUu9anB8WBURERERkWsy8pyAsLMzgMVkUmIH7SgWeKzl9JD8JKhtjp2ASkvg66ey5kq+VLhSp/743KaX/RZYpX4qTyz7JlLK842YW4hOEyCffAuImAIiXfmYieoP89ddfWLp0Kf766y98//33cHd3x86dO1GuXDnUqFFD73j8pEhERGQCEgAMBVCYOofoTWHuE40PHjyI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ziVJWRSQecu0s8D+j6vBUqY0dipERERERsOigIiIiIhMCocPGR5XHyIiIiIiMnPsKSAiIiIik5KzlKgh45k7FgVEREREZFKy72hswInGHD7E4UNEREREROaOPQVk1mwTMzCo/xEA/3UbLlveEGnOVsZLioiIiPKlkKmgMOCSpAouScqigMybTCng/tdzjTa5kuMKiYiIyLywKCAiIiIikyI38JKknFPAOQVERERERGaPPQVEREREZFLkEJDDcMN9DRnLVLGngIiIiIhMSvZEY8NuABASEgI/Pz/Mnz/fyFf4+rGngIiIiIgIQGxsLJycnIydhlGwKCAiIiIik6KAgMKAQ34MGctUcfhQIXXu3BkuLi7o2rWrsVMhIiIiIpKERUEhjRgxAitWrDB2GkRERERmI3uiscqAG3sKWBQUUvPmzeHo6Kjz8U+fPoW7uztu3bql13l69uyJmTNn6pkdEREREVHBWBTo4N69e+jbty9KliwJW1tbBAQE4OTJk5JiRUZGomPHjvD19dXrHF9++SUiIyORmJhYmEshIiIiMnlFtfqQOeNE4wLEx8ejUaNGaNGiBXbu3IlSpUrh2rVrcHFx0TtWamoqFi9ejN27d+t9Dn9/f1SsWBGrVq1CeHh4oa+LiIiIyFRxorHhsSgowLRp0+Dt7Y2lS5eq28qXLy8p1o4dO2BtbY369etLOkeHDh2wbt26PIuC9PR0pKenqx8nJSVJypOIiIiIzAuHDxVg+/btqFOnDrp16wZ3d3cEBwdj0aJFkmIdPnwYtWvXlnyOunXr4sSJExof/F82depUODs7qzdvb29JeRIREREVZzKZgNyAm0zGngIWBQW4ceMGoqKiULlyZezevRtDhgzB8OHDsXz5cgBAq1at0K1bN+zYsQNly5bFsWPH8ox1+/ZteHl56X2OHF5eXsjIyMCDBw9yjT9u3DgkJiaqt7t37xbiys1DlrUcf/TwRWwPH/WWZa0wdlpERERErxWHDxVApVKhTp06mDJlCgAgODgYcXFxiI6ORlhYGPbt26dzrBcvXsDGxkbvc+SwtbUFkD03ITfW1tawtrbWOR8CMuwt8esXQbCUKY2dChEREelIARUM+RWeApxozJ6CAnh6esLPz0+jrXr16rhz547esdzc3BAfHy/5HM+ePQMAlCpVSu9zExERERHlhUVBARo1aoQrV65o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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "reduction_threshold = 0.6\n", - "conv_grid, conv_std = load_sweep_results_grid_convergence(\n", - " sweep_dir, k_values, hidden_dims, reduction_threshold=reduction_threshold\n", - ")\n", - "plt.figure(figsize=(10, 6)) # Made slightly wider to accommodate legend\n", - "cmap = plt.cm.viridis_r.copy()\n", - "cmap.set_bad(color=\"black\")\n", - "plt.imshow(conv_grid, aspect=\"equal\", cmap=cmap, norm=LogNorm())\n", - "\n", - "plt.xlabel(\"Sequence Length ($k$)\")\n", - "plt.ylabel(\"Hidden Dimension $H$\")\n", - "plt.xticks(range(len(k_values)), k_values)\n", - "\n", - "# Create y-tick labels with both power notation and actual values\n", - "ytick_labels = [f\"$6^{i+1}$ ({val:,})\" for i, val in enumerate(hidden_dims)]\n", - "plt.yticks(range(len(hidden_dims)), ytick_labels)\n", - "plt.gca().invert_yaxis()\n", - "\n", - "x_step = np.arange(len(k_values)) - 0.5\n", - "y_step = np.minimum(x_step, len(hidden_dims)) # Example: stays within bounds\n", - "\n", - "plt.step(\n", - " x_step,\n", - " y_step,\n", - " where=\"post\",\n", - " color=\"red\",\n", - " linewidth=3,\n", - " linestyle=\"--\",\n", - " label=\"Theory boundary ($H > 6^{k-1}$)\",\n", - ")\n", - "\n", - "# Place legend outside the plot area (to the right)\n", - "plt.legend(loc=\"upper center\", bbox_to_anchor=(0.5, -0.12), fontsize=12, frameon=True)\n", - "\n", - "plt.colorbar(label=f\"Steps to {reduction_threshold*100}% Convergence\")\n", - "plt.title(f\"Steps to {reduction_threshold*100}% Convergence (black = did not converge)\")\n", - "plt.tight_layout() # Adjust layout to prevent clipping\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "130132a9", - "metadata": {}, - "outputs": [], - "source": [ - "def load_sweep_results_grid_spikiness(\n", - " sweep_dir: str,\n", - " k_values: list,\n", - " hidden_dims: list,\n", - "):\n", - " \"\"\"\n", - " Compute fraction of training steps where loss increased (instability).\n", - "\n", - " Returns:\n", - " grid: 2D array with mean frac_upward across seeds\n", - " std_grid: 2D array with standard deviations\n", - " \"\"\"\n", - " sweep_path = Path(sweep_dir)\n", - "\n", - " grid = np.full((len(hidden_dims), len(k_values)), np.nan)\n", - " std_grid = np.full((len(hidden_dims), len(k_values)), np.nan)\n", - "\n", - " for i, h in enumerate(hidden_dims):\n", - " for j, k in enumerate(k_values):\n", - " exp_name = f\"k{k}_h{h}\"\n", - " exp_dir = sweep_path / exp_name\n", - "\n", - " if not exp_dir.exists():\n", - " continue\n", - "\n", - " frac_upwards = []\n", - " for seed_dir in exp_dir.glob(\"seed_*\"):\n", - " loss_file = seed_dir / \"train_loss_history.npy\"\n", - " if loss_file.exists():\n", - " loss_history = np.load(loss_file)\n", - " log_loss = np.log10(loss_history + 1e-10)\n", - " log_changes = np.diff(log_loss)\n", - "\n", - " # Fraction of steps where loss went UP\n", - " frac_upward = np.sum(log_changes > 0) / len(log_changes)\n", - " frac_upwards.append(frac_upward)\n", - "\n", - " if frac_upwards:\n", - " grid[i, j] = np.mean(frac_upwards)\n", - " std_grid[i, j] = np.std(frac_upwards) if len(frac_upwards) > 1 else 0.0\n", - "\n", - " return grid, std_grid" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "id": "4fba73d0", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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yTCGXNK1smCCdJmVyn3mQgpMkCUprhzGSJNZq9xnJqTCFJmS4ipghFSZjcp9pkiTFJOIiPSHoa7D0rdvXyxfvrxIa66owoKFiLSup/wc5mX9Coc3fvk+gdbYhUEqz+mHeaiKK5KudxENsA5jVO77ED/DG39JinsbtbEMk1Xua4v1aIQDkuI+RWWEY57Kfc2wW1JMIiKi4paVlYUVK1bg4MGD8Pf3z7O4/IIFCyTFZcFCRFplLMhVFitERESGQlczeun7LGExMTGoV68eAOD69etK+2Qy6bmzYCEqQN909+JOocSxQWK+xcpNo2RsNH6icl+XrAxUldjV/UCWho0mquM2zUqDt8S4z2QZ+cb1lCejkUJa3ARk5hu3glymFFduaoYHl2sDRhxyqKkKI68XfhARkQ4Y2qD727dvw93dHYcOHdJJfP4EJCLSU3JTMzyt15zFChER6bXq1avj+fPn4vuePXvi6dOnWovPHhYi0rn3Tb5GPKyRXsC3nE+NB8NU4qD7TBjnu2+CcU+EorvW435n1BGLjNpKiitH/n8hW2rUEmuMmgAA1nZ5wmKFiKgEMrRB98Ibie3ZswdhYWFai8+ChYh0Lh7WiMtnVqwcr/OZPayodBU3WWaBZB3ETZWZIxXm2W9YrBAREbFgISIiIiLSJkMbdC+TyfIMqi/KIPs3sWAhIiIiIiLJBEHAgAEDYG6e/YRAWloahg4dmmda423btkmKz4KFiIiIiEiLDG2WsODgYKX3ffv21Wp8FixERERERCRZZGSkTuOzYCEiIiIi0iJBAASJa3UVFtcQcQoaIiIiIiLSW+xhISKtUsAIj1EJAJCELAAFrztCRERU2giCDIIOfvbp6yxhusaChYi0KgU2mI55AID9prHFnA0RERGVdCxYiIiIiIi0SCHIoNBBD4u+zhKmaxzDQkREREREeos9LERERERE2iQAOpnQy0BnCWPBQkRERESkRQoBOnokTOshSwQ+EkZERERERHqLPSxEpFVmSMP72A0AqCVPAgAsNWqJVJl5caZFRET01gg6eiTMUBeOZMFCRFplhgx0xNbsN/+u8rvGqAlSwYKFiIiINMeChYiIiIhIi7hwpHZxDAsREREREekt9rAQEREREWlR9ixhuolriNjDQkREREREeos9LEREREREWsRZwrSLPSxERERERKS32MNCRERERKRFCkGmo5XuOUsYERERERGRXmEPCxERERGRFnEMi3axh4WIiIiIiPQWe1iIiIiIiLSIPSzaxYKFiIiIiEiLOOheu/hIGBERERER6S32sBCRVgkAXsMWAJABhdhGRERkKATo6JEwHcQsCViwEJFWJcMOX2IpAGC/aWwxZ0NEREQlHR8Jy8eDBw/QokULeHp6wsfHB5s3by7ulIiIiIioBFAIutsMEXtY8mFiYoLw8HD4+voiNjYW/v7+aN++PaytrYs7NSIiIiIig8Eelny4uLjA19cXAFChQgU4OTkhLi6uwHNevnwJZ2dn3L17V+v59OrVC/Pnz9d6XCIiIiLSLgEynW2GyOALlkePHqFv374oW7YsLC0t4e3tjdOnTysdc+bMGcjlcri6uhYYa+bMmejSpQvc3NzEtiVLlsDHxwd2dnaws7NDo0aNsHfvXo3zmDRpEmbOnImEhISi3TARERERUQli0I+ExcfHIygoCC1btsTevXtRrlw53LhxA46OjuIxcXFx6N+/P5YtW1ZgrJSUFCxfvhz79+9Xaq9cuTJmz56N6tWrQxAErFq1Cl26dMG5c+dQp04dtfPw8vKCh4cH1q5di+HDh2vxUyAiIiIibRIE/DtPpvbjGiKDLljmzJkDV1dXREZGim3u7u7i6/T0dHTt2hVff/01GjduXGCsPXv2wNzcHA0bNlRq79Spk9L7mTNnYsmSJTh58qRYsBSWR+5YGzZsyLdgSU9PR3p6uvg+MTGxwJyJdMEUGWiMwwAAZ3n2v8FNRoFIl5kVY1ZERERUUhn0I2G7du1CQEAAevToAWdnZ/j5+Yk9KYIgYMCAAXj33XfRr1+/QmNFR0fD39+/wGPkcjk2bNiA5ORkNGrUSK08cgsMDMSpU6eUipLcwsLCYG9vL26FPcJGpAvmSEMvRKIXIjFVsRVTFVthjYziTouIiOitEXS4GSKDLlhu376NJUuWoHr16ti/fz+GDRuGkSNHYtWqVTh+/Dg2btyIHTt2wNfXF76+vrh48WK+se7du4eKFSuq3Hfx4kXY2NjA3NwcQ4cOxfbt2+Hp6alWHrlVrFgRGRkZiI1VvbbFhAkTkJCQIG4PHjyQ8KkQEREREekPg34kTKFQICAgALNmzQIA+Pn5ISYmBhEREThx4gQUCvWfPkxNTYWFhYXKfTVr1sT58+eRkJCALVu2IDg4GEeOHBGLloLyCA4OFuNYWloCyB4vo4q5uTnMzc3VzpmIiIiItE+hozEshroOi0H3sLi4uCj1dABA7dq1cf/+fY1jOTk5IT4+XuU+MzMzVKtWDf7+/ggLC0PdunWxaNEijfPImVa5XLlyGudHRERERFQSGXTBEhQUhGvXrim1Xb9+HVWqVNE4lp+fHy5fvqzWsQqFQmkcirp5xMTEoHLlynByctI4PyIiIiJ6OziGRbsMumAZM2YMTp48iVmzZuHmzZtYt24dli5dKmna4DZt2uDSpUt5elkmTJiAo0eP4u7du7h48SImTJiAw4cPo0+fPhrnER0djdatW0u7WSIiIiJ6KxSC7jZDZNAFS/369bF9+3asX78eXl5emD59OsLDw5WKCXV5e3ujXr162LRpk1L7s2fP0L9/f9SsWRPvvfce/v77b+zfvx/vv/++RnmkpaVhx44dCAkJkX7DREREREQljEEPugeAjh07omPHjlqJFRoaivHjxyMkJARGRtm14PLly7WSR2RkJAIDA/Os80JERERE+kVXj28ZaAcLCxZt6tChA27cuIFHjx5pfQ0UU1NT/PDDD1qNSURERESk71iwaNno0aN1EnfIkCE6iUtERERE2qWAjqY11kHMksCgx7AQEREREZF+Yw8LEREREZEWcQyLdrGHhYiIiIiI9BZ7WIiIiIiItIhjWLSLPSxERERERKS32MNCRFqVBDsMw3oAwH7T2GLOhoiI6O0TAAg6GHDCMSxERERERER6hj0sRERERERaxDEs2sUeFiIiIiIi0lssWIiIiIiItEjQ4SbFjz/+CDc3N1hYWKBBgwY4depUvsdeunQJH374Idzc3CCTyRAeHi7xqtrDgoWIiIiISIsE/PdYmDY3KQXLxo0bMXbsWEyePBlnz55F3bp10aZNGzx79kzl8SkpKahatSpmz56NChUqSLii9rFgISKtMkEm6uEk6uEk2inOo53iPMyErOJOi4iIyCAtWLAAISEhGDhwIDw9PREREQErKyusWLFC5fH169fH3Llz0atXL5ibm7/lbFXjoHsi0ioLpCIEi7LfyLP/J8BkOuJgU3xJERERvUX6Mug+IyMDZ86cwYQJE8Q2IyMjtGrVCidOnNBucjrEgoWIiIiIqARJTExUem9ubq6yN+TFixeQy+UoX768Unv58uVx9epVneaoTXwkjIiIiIhI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9+9rHMvJyQnx8fGSrxEXFwcAKFeunMbXJiIiIiIqiViwFCIoKAjXrl1Tart+/TqqVKmicSw/Pz9cvnxZ8jViYmJQuXJlODk5aXxtIiIiIno7BB1NacweFlJpzJgxOHnyJGbNmoWbN29i3bp1WLp0ab4zdRWkTZs2uHTpUp5eFnWvER0djdatWxfpfoiIiIiIShIWLIWoX78+tm/fjvXr18PLywvTp09HeHg4+vTpo3Esb29v1KtXD5s2bdL4GmlpadixYwdCQkKKfE9EREREpDsKmaCzzRBx0L0aOnbsiI4dO2olVmhoKMaPH4+QkBAYGf1XLxZ2jcjISAQGBuZZw4WIiOj/7d17UFTn3Qfw74J7QVkRFASUi7dKQBFUIKAJJEocBymMjo2+pqJi3qTFKBJRsUGoFjFao45pMRhH7Rhq0RbiaNQoU5BooqgslcQEohiNgaBUrsolu+f9w2bfriy4yy6cXf1+Zvhjn3PO83z3GUnOj+dciIieZixY+lhUVBQqKytx584do96TIpVKsWvXrl5MRkRERETmoAEg6aV+n0UsWESQmJho9DFLly41fxDSqxVSZNuEAACWTqt61Cjl1ZNEREREYmDBQvSYZokcb0tjAADxi/NETkNERETWRgMBkl54opeGTwkjIiIiIiKyLFxhISIiIiIyI77p3rxYsBARERERmREvCTMvXhJGREREREQWiyssRERERERmxBUW82LBQvQYB+Eh/tpxEABgs/EeAECTNBoYwF8XIiIior7GMzCix0ihxgvCf96/cu0/jepn8y8aREREZDyusJgX72EhIiIiIiKLxRUWIiIiIiIz0gC9tMLybOIKCxERERERWSyusBARERERmZEgATSSXujX/F1aBa6wEBERERGRxeIKCxERERGRGT16mhefEmYuXGEhIiIiIiKLxRUWIiIiIiIz4gqLeXGFhYiIiIiILBZXWIiIiIiIzEgNAQJXWMyGBQsRERERkRnxkjDz4iVhRERERERksbjCQkRERERkRlxhMS8WLESPaUc/5NmMAwDETr7zqLFfL7yuloiIiIieiAUL0WMaJQoslP4PAKA+MU/kNERERGRt1BINBInG7P1qYP4+rQHvYSEiIiIiIovFFRYiIiIiIjPiY43NiyssRERERERPsT/96U/w9vaGQqFASEgILl682O3+hw8fho+PDxQK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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "============================================================\n", - "Converged runs: 30 (71.4%)\n", - "Did not converge (black): 12 (28.6%)\n", - "============================================================\n", - "\n" - ] - } - ], - "source": [ - "# Load both convergence and spikiness data\n", - "reduction_threshold = 0.6 # Adjust as needed\n", - "conv_grid, conv_std = load_sweep_results_grid_convergence(\n", - " sweep_dir, k_values, hidden_dims, reduction_threshold=reduction_threshold\n", - ")\n", - "\n", - "stability_grid, stability_std = load_sweep_results_grid_spikiness(\n", - " sweep_dir, k_values, hidden_dims\n", - ")\n", - "\n", - "# Create a masked version of stability_grid where non-converged runs are NaN\n", - "stability_grid_masked = stability_grid.copy()\n", - "stability_grid_masked[np.isnan(conv_grid)] = np.nan # Mask non-converged runs\n", - "\n", - "# Create plot\n", - "plt.figure(figsize=(10, 6))\n", - "\n", - "# Use a colormap with bad values (NaN) shown as black\n", - "cmap = plt.cm.plasma.copy()\n", - "cmap.set_bad(color=\"black\")\n", - "\n", - "plt.imshow(stability_grid_masked, aspect=\"equal\", cmap=cmap, vmin=0, vmax=0.5)\n", - "\n", - "plt.xlabel(\"Sequence Length ($k$)\")\n", - "plt.ylabel(\"Hidden Dimension $H$\")\n", - "plt.xticks(range(len(k_values)), k_values)\n", - "\n", - "# Create y-tick labels with both power notation and actual values\n", - "ytick_labels = [f\"$6^{i+1}$ ({val:,})\" for i, val in enumerate(hidden_dims)]\n", - "plt.yticks(range(len(hidden_dims)), ytick_labels)\n", - "plt.gca().invert_yaxis()\n", - "\n", - "x_step = np.arange(len(k_values)) - 0.5\n", - "y_step = np.minimum(x_step, len(hidden_dims)) # Example: stays within bounds\n", - "\n", - "plt.step(\n", - " x_step,\n", - " y_step,\n", - " where=\"post\",\n", - " color=\"red\",\n", - " linewidth=3,\n", - " linestyle=\"--\",\n", - " label=\"Theory boundary ($H > 6^{k-1}$)\",\n", - ")\n", - "\n", - "plt.legend(loc=\"upper left\", fontsize=10, frameon=True)\n", - "\n", - "plt.colorbar(label=\"Fraction of Upward Steps\")\n", - "plt.title(\n", - " f\"Training Instability\\n(black = did not converge)\",\n", - " fontsize=13,\n", - " fontweight=\"bold\",\n", - ")\n", - "\n", - "plt.tight_layout()\n", - "plt.show()\n", - "\n", - "# Print summary\n", - "n_converged = np.sum(~np.isnan(conv_grid))\n", - "n_not_converged = np.sum(np.isnan(conv_grid))\n", - "print(f\"\\n{'='*60}\")\n", - "print(f\"Converged runs: {n_converged} ({100*n_converged/conv_grid.size:.1f}%)\")\n", - "print(\n", - " f\"Did not converge (black): {n_not_converged} ({100*n_not_converged/conv_grid.size:.1f}%)\"\n", - ")\n", - "print(f\"{'='*60}\\n\")" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "7a228687", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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uQWMVNb5/LVva2GYuEDR4lqZ5XsobVyzl8fca1CPusNihYiKham1sHTr1k3r/qdPn+LEiRMICAjAH3/8geDgYEnxJRUshuqfRkREhTBTGqa1RakwXCuOoeLaFRKXxQoR0SsxefLkAo9PnDgRYWFhiI6OlhSfHVSJiIiIiGQkCIbbSqL3338fZ86ckXy9zi0sY8eOxfTp02FnZ6cxh7I2HMNCREREREQAYGZmBrVaLfl6nQuWkydPIjs7W3ydH45hISIiIiKTZqAxLMa+Dkt+tmzZ8moG3b84boVjWIiIiIiItDO1Qfdff/211v1JSUk4fvw4fvvtN+zcuVNyfEmD7omIiIiIiABg4cKFWvc7OjqiZs2aOHDgAJo0aSI5vt4Fi1qtxsqVK7FlyxbcuHEDCoUC3t7e6N69O/r168cuYURERERk0kytheX69esGja/XLGGCIKBLly4YPHgw7t69C19fX9StWxc3b97EgAED8PbbbxsqTyIiIiIiMkF6tbCsXLkSBw4cQHR0NFq31lwI7I8//kC3bt3w448/on///rImSURERERUUphaC4uh6dXCsm7dOnzxxRd5ihUAeP311/H5559jzZo1siVHRERERESmTa+C5fTp02jfvn2+x9966y38888/RU6KiIiIiKikEtQKg22mSK+CJSEhAeXLl8/3ePny5ZGYmFjkpIiIiIiIyPi98847SE5OBgD8+OOPyMzMlP0eehUsKpUK5ub5D3sxMzNDTk5OkZMiIiIiIiqpBOG/cSzybsX9ZHlt374dqampAICBAwciKSlJ9nvoNeheEAQMGDAAVlZWWo8boqIiIjIlGbDFUnwJAOj30a7cndZcMouIiIxTrVq1MGHCBLRu3RqCIGDjxo1wdHTUeq7Uibn0+lcwJCSk0HM4QxgRkXQqhTmuoy4AQF31aDFnQ0REUpjSLGGRkZEYO3YsfvvtNygUCkyaNEnruowKheLVFCxRUVGSbkJERERERKVP06ZNceTIEQCAUqnEpUuX4ObmJus92M+AiIiIiEhGptTC8qLr16+jXLlyssdlwUJEREREREVWuXJlPH36FMuXL8f58+cBAHXq1MGgQYPg5OQkOa5es4QREREREVHBDDNDmGFabeR07NgxVK1aFQsXLkRCQgISEhKwcOFCVK1aFSdOnJAcly0sRERGRCGoYYuU3DcpWbn/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jyI0NLTHcba2tgAeXANDRESmwYKFiEgPcrkckZGRiIyMRFpaGl599VWkp6ejoKAAAHD06FGMHj1a6xiZTGbQGFZWVhAEQavt/v37AID29na9x7GxsdF6LZFIoFarAfznA7UuhoyhL1PlNpahfY8cORJNTU1abUqlEvPmzUN+fj6am5t1Hvfvf/8bAODs7GxcYCIi0mDBQkTUD76+vigqKoKvry9kMhlu3LiB8PBwnfuOHz8eNjY2OHfuHDw9PQEATU1NqKmp0TrG2dkZdXV1mtetra2ora3VjPeocfQxYcIE2Nraori4GK+++mqP92SKMUzd57hx42BjY4OKigrN/LW0tKCmpgbPPfecZj+pVAqVSmWS3IGBgVp3+2pra8O1a9dw8OBBhIWFYeHChTh79iz8/Py0jquursaYMWMwcuRIk+QgIiIWLEREfWpsbMSCBQsQHx8Pf39/KBQKnD9/Hlu3bkVMTAwUCgVWr16NVatWQa1WY+bMmWhpacGZM2cwfPhwxMXFwc7ODgkJCUhJSYGTkxNcXFzwu9/9DlZW2vc9eeGFF7B3715ER0djxIgR2LBhA6ytrQFAr3H0IZfLsXbtWqxZswZSqRQzZszA7du38eWXXyIhIaHfY7S0tECpVGq1OTk5wcPDw+jcCoUCcXFxSElJgaOjI1xcXJCeng4rKytIJBLNft7e3jh37hyuX78OOzs7ODo69phjfc2ePRupqaloamqCg4MDqqqqYG1tDV9fXwQGBqK6uhrR0dEoLy/XKk7Kysrw0ksv9WtMIiLSjQULEVEf7OzsEBISgu3bt+Pq1au4f/8+PDw88Nprr2H9+vUAgE2bNsHZ2RlZWVm4du0aRowYgalTp2q2A8C2bdvQ3t6O6OhoKBQKvPXWWz0eMJiamora2lrMnTsX9vb22LRpk2aFRd9x9JGWloYhQ4Zgw4YN+OGHH+Dm5oY33njDqDFKSkp6XJOSkJCADz/80CS53333XbzxxhuYO3cuhg8fjjVr1uDmzZta15msXr0acXFx8PX1xb1791BbW6v10EdDTJ48GVOnTkVBQQFef/11KJVK+Pj4aE5j27ZtG77++mvMmzcPp06dglQqRWdnJ4qKinD8+PF+jUlERLpJhIdPmCYiokERERGBgICAHs9eoUfr6OjA6NGjkZ2d3ePhjqZy9OhRpKSkoLq6Wq+VmtzcXBQWFuLTTz8dkDxERE8qrrAQEZHZq6ysxDfffIPg4GC0tLRg48aNAICYmJgBGzMqKgqXL1/GrVu3tJ7p0hsbGxu89957A5aHiOhJxYKFiIgswh//+Ed8++23kEqlmDZtGsrKygb84vakpCS99334JgZERGQaPCWMiIiIiIjMVv9un0JERERERDQIWLAQEREREZHZYsFCRERERERmiwULERERERGZLRYsRERERERktliwEBERERGR2WLBQkREREREZosFCxERERERmS0WLEREREREZLZYsBARERERkdliwUJERERERGbr/wAQkZoaZU5gpQAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "stability_grid, stability_std = load_sweep_results_grid_spikiness(\n", - " sweep_dir, k_values, hidden_dims\n", - ")\n", - "\n", - "# Create side-by-side subplots\n", - "plt.figure(figsize=(10, 6))\n", - "\n", - "# ========== RIGHT PANEL: SPIKINESS ==========\n", - "# Use a different colormap - plasma, magma, or RdYlGn_r work well\n", - "plt.imshow(stability_grid, aspect=\"equal\", cmap=\"plasma\", vmin=0, vmax=0.5)\n", - "\n", - "\n", - "plt.xlabel(\"Sequence Length ($k$)\")\n", - "plt.ylabel(\"Hidden Dimension $H$\")\n", - "plt.xticks(range(len(k_values)), k_values)\n", - "\n", - "# Create y-tick labels with both power notation and actual values\n", - "ytick_labels = [f\"$6^{i+1}$ ({val:,})\" for i, val in enumerate(hidden_dims)]\n", - "plt.yticks(range(len(hidden_dims)), ytick_labels)\n", - "plt.gca().invert_yaxis()\n", - "\n", - "x_step = np.arange(len(k_values)) - 0.5\n", - "y_step = np.minimum(x_step, len(hidden_dims)) # Example: stays within bounds\n", - "\n", - "plt.step(\n", - " x_step,\n", - " y_step,\n", - " where=\"post\",\n", - " color=\"red\",\n", - " linewidth=3,\n", - " linestyle=\"--\",\n", - " label=\"Theory boundary ($H > 6^{k-1}$)\",\n", - ")\n", - "\n", - "plt.legend(loc=\"upper left\", fontsize=10, frameon=True)\n", - "\n", - "plt.colorbar(label=\"Fraction of Upward Steps\")\n", - "# cbar2.ax.axhline(0.3, color=\"white\", linewidth=2, linestyle=\"--\") # Mark threshold\n", - "plt.title(\n", - " \"Training Instability\\n(higher = more unstable)\", fontsize=13, fontweight=\"bold\"\n", - ")\n", - "\n", - "plt.tight_layout()\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 118, - "id": "5eb6bb45", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAvcAAAJ+CAYAAAA3wC+rAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAArztJREFUeJzs3XlcVNX/x/HXsAgIgijgBu77jopL7map5b7lVpppmVta2VfTXHKrLJc0tcx9yTRTyTTNSsXMXNISdxPNfUUQUVSY3x/E/TEByozsvJ/fx318Z86995zPvRJ85sw555rMZrMZERERERHJ9OzSOwAREREREUkZSu5FRERERLIIJfciIiIiIlmEknsRERERkSxCyb2IiIiISBah5F5EREREJItQci8iIiIikkUouRcRERERySKU3IuIiIiIZBFK7kVEREREsggl9yIiIiIiNtqxYwetWrWiYMGCmEwm1q1bl67xKLkXEREREbHRnTt3qFKlCp999ll6hwKAQ3oHICIiIiKSWbVo0YIWLVqkdxgGJfciIiIikiHdu3eP+/fvp3m7ZrMZk8lkUebk5ISTk1Oax2ItJfciIiIikuHcu3ePvC45icSc5m27ubkRERFhUTZmzBjGjh2b5rFYS8m9iIiIiGQ49+/fJxIz3XElB6bHn5BS7WJmeUQE586dw93d3SjPDL32oOReRERERDIwZ0xpmtzHrTbj7u5ukdxnFlotR0REREQki1DPvYiIiIhkWHaYsDOlYc+9lUP8IyIiOHXqlPE+JCSEgwcPkidPHgoXLpzC0T2eknsRERERERvt27ePxo0bG+/ffPNNAHr27MmiRYvSPB4l9yIiIiIiNmrUqBFmc9qv6JMUJfciIiIikmHZkbaTRDP7hNTMHr+IiIiIiPxLPfciIiIikmGZTGCXdvNpYxfdzDijbKymnnsRERERkSxCPfciIiIikmFpzL11Mnv8IiIiIiLyLyX3IiIiIiJZhIbliIiIiEiGZWdK4yfUgibUioiIiIhI+lPPvYiIiIhkWJpQa53MHr+IiIiIiPxLyb2IiIiISBahYTkiIiIikmHZpfETajN7z3dmj19ERERERP6lnnsRERERybA0odY6mT1+ERERERH5l3ruRURERCTDMplMmNLwIVZpOLw/VajnXkREREQki1ByLyIiIiKSRWhYjoiIiIhkWJpQ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ENRzLyIiIiIZlunf/6Vle5mZeu5FRERERLIIJfciIiIiIlmEhuWIiIiISIZlZ4rd0rK9zEw99yIiIiIiWYR67kVEREQkw9JSmNZRz72IiIiISBahnnsRERERybDUc28d9dyLiIiIiGQRSu5FRERERLIIDcsRERERkQxLT6i1jpJ7ERERydJMROPJUQAKlC8HgL19ekYkknqU3IuIiEiW5kwonakJwNzDt9M5GrGWyRS7pWV7mZnG3IuIiIiIZBHquRcRERGRDMuOtO2Nzuw935k9fhERERER+ZeSexERERGRLELDckREREQkw9ITaq2j5F5ERESytAfk5E/eAGDs2NiyYcPA1TX9YhJJLUruRUREJEt7SE728y4A+8fFlg0YoOQ+0zCZMGktzGTTmHsRERERkSxCPfciIiIikmFpzL11lNyLiIhkYjHYE4WnzefnIAx7HiQoN2PiHnmfoN5w7Lmf6L67eNlcryMROHAviXrzklhq9iTXIZLZKLkXERHJpE7wAr/yMffJbXMdrWhBQXYmKL9HXpYQYnO9TXmREqxLdN+T1FuXN6nIvET3rWIf957gg4NIVqDkXkREJBOKwf6JE3uAN3/ZRKNGCcuvXYMlPrbX++qqpXTqlPi+z59g3EPXWVMZMGBqovvWeMO967bXLRmThuVYRxNqRUREMqk2PEMnAggOhn790juazMPDAzxtH8kkkqGp515ERCQTsiOaPBwD4JdfYO7cdA4ok/DwgFmzwEEZUKZhSuOlMNN02c1UoB9tERGRTO6FF2I3W3h4JF6eNy9cvWp7TO7uSe97knrd3JLed/QomM2PPt/TU4m9ZG368RYREcnkvL1Tvk47u9SpF1KvXi/NpRVRci8iIiIiGZedKXZLy/YyM02oFRERERHJItRzLyIikgnFYM8tSgFw+HBsWZkyGk8uWY/JzoQpDbvTTZl8MUz9ChAREcmEovBkNXsBWF0xtuzq1dQbzy4imYOSexERERHJsEym2C0t28vMNOZeRERERCSLUHIvIiIiIpJFaFiOiIiIiGRYGpZjHfXci4iIiIhkEeq5FxEREZEMy2QyYUrD7vS0bCs1qOdeRERERCSLUM+9iIiIiGRYGnNvHfXci4iIiIhkEUruRURERESyCA3LEREREZEMSxNqraOeexERERGRLEI99yIiIiKSYWlCrXXUcy8iIiIi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0/OJ6k12cp8nTx6LSbIPHjxg165dVK5c+YmDEBERERHJjjw9PQkICEix+pKd3G/bts3i/fXr1/Hx8WHq1Kk0adIkxQISERERETGk0drzFu1lYjZPB9ZSlyIiIiIiGYsm1IqIiIhIxqWee6souRcRmz18CKGhsa9z5gRX18SPu3kToqNta8PZGXLlSnzfrVvw4IFt9ebIAR4eie8LC4P7922r19ERcue27VwREZEnpeReRGyybBkMHBibCAOMGQNjxyZ+bP36cOSIbe307w+ffZb4vrZtYft22+rt2BFWr058X58+8M03ttXbsCH8Z4qSiIg8CVMaP8TKlIZtpYJkJ/d//PGHxfuwf/+inzx5ktxJdFNVq1bN9shEJMN6+NAysZfHmzkT5gz6giO8mt6hiIhIFpbs5L5GjRqJTqLt379/gjKz2YzJZCLa1u/hRSRDCw1NmNhfu5Y+sWQG3t6xH4aOHn2VI7NjhwPNvx6Cg747TVI/UxJjsURE5JGS/adl4cKFqRmHiEi24OEBs2ahxF5EJLk0odYqyf7z0rNnz9SMQ0QyuWHDkt4XFPRkE2qTsm7dk02oTcqXX8Ls2bbV6+iY9L4PPoAZM5TYi4hI6tGfGBFJEUmtlAOQJ0/qtJlaq9IktYrOk0pq1R8REXkE9dxbJXNPBxYREREREYN67kVEREQk4zLZpe3ylJl8KczMHb2IiIiIiBiU3IuIiIiIZBEaliMiIiIiGZedKXZLy/YyMfXci4iIiIhkEeq5FxEREZGMSxNqrZK5oxcREREREYN67kXEaiYTeHklLBMREUlxeoiVVZTci4jVvLzg2rX0jkJERET+S8NyRERERESyCPXci4iIiEjGZWcXu6Vle5lY5o5eREREREQM6rkXERERkYxLE2qtop57EREREZEsQj33ImK1u3dhwQLLst69wcUlfeIRERGRWEruRcRqEREwcKBlWefOSu5FRCQV6Am1Vsnc0YuIiIiIiEE99yIiIiKScZlI4wm1addUalDPvYiIiIhIFqGeexERERHJuPQQK6tk7uhFRERERMSg5F5EREREJIvQsBwRERERybj0hFqrqOdeRERERCSLUM+9iIiIiGRceoiVVTJ39CIiIiIiYlDPvYiIiIhkXCYT2GnMfXKp515EREREJItQcp8M586do1GjRpQvX57KlSuzevXq9A5JRESe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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "============================================================\n", - "SUMMARY: Converged & Spiky Runs\n", - "============================================================\n", - "Spikiness threshold: 0.3 (frac_upward)\n", - "Converged & spiky: 10\n", - "Total converged: 30\n", - "Percentage: 33.3%\n", - "============================================================\n", - "\n" - ] - } - ], - "source": [ - "# Load both metrics\n", - "reduction_threshold = 0.6\n", - "conv_grid, conv_std = load_sweep_results_grid_convergence(\n", - " sweep_dir, k_values, hidden_dims, reduction_threshold=reduction_threshold\n", - ")\n", - "stability_grid, stability_std = load_sweep_results_grid_spikiness(\n", - " sweep_dir, k_values, hidden_dims\n", - ")\n", - "\n", - "# Create binary mask: 1 if converged AND spiky, 0 otherwise\n", - "spikiness_threshold = 0.3 # Adjust this threshold as needed\n", - "\n", - "converged_and_spiky = np.zeros_like(conv_grid)\n", - "for i in range(len(hidden_dims)):\n", - " for j in range(len(k_values)):\n", - " converged = not np.isnan(conv_grid[i, j])\n", - " spiky = stability_grid[i, j] > spikiness_threshold\n", - "\n", - " if converged and spiky:\n", - " converged_and_spiky[i, j] = 1.0\n", - " else:\n", - " converged_and_spiky[i, j] = np.nan # Will show as white\n", - "\n", - "# Plot\n", - "plt.figure(figsize=(8, 6.5))\n", - "\n", - "# Custom colormap: white for NaN, red for 1\n", - "cmap = plt.cm.Reds.copy()\n", - "cmap.set_bad(color=\"white\")\n", - "\n", - "im = plt.imshow(converged_and_spiky, aspect=\"equal\", cmap=cmap, vmin=0, vmax=1)\n", - "\n", - "plt.xlabel(\"Sequence Length (k)\", fontsize=12)\n", - "plt.ylabel(\"Hidden Dimension\", fontsize=12)\n", - "plt.xticks(range(len(k_values)), k_values)\n", - "\n", - "ytick_labels = [f\"$6^{i+1}$ ({val:,})\" for i, val in enumerate(hidden_dims)]\n", - "plt.yticks(range(len(hidden_dims)), ytick_labels)\n", - "plt.gca().invert_yaxis()\n", - "\n", - "# Add theory boundary\n", - "x_step = np.arange(len(k_values)) - 0.5\n", - "y_step = np.minimum(x_step, len(hidden_dims))\n", - "plt.step(\n", - " x_step,\n", - " y_step,\n", - " where=\"post\",\n", - " color=\"blue\",\n", - " linewidth=3,\n", - " linestyle=\"--\",\n", - " label=\"Theory boundary\",\n", - ")\n", - "plt.legend(loc=\"upper left\", fontsize=10, frameon=True)\n", - "\n", - "# Add text annotations showing spikiness values in colored cells\n", - "for i in range(len(hidden_dims)):\n", - " for j in range(len(k_values)):\n", - " if converged_and_spiky[i, j] == 1.0:\n", - " spikiness_val = stability_grid[i, j]\n", - " plt.text(\n", - " j,\n", - " i,\n", - " f\"{spikiness_val:.2f}\",\n", - " ha=\"center\",\n", - " va=\"center\",\n", - " fontsize=9,\n", - " color=\"white\",\n", - " fontweight=\"bold\",\n", - " )\n", - "\n", - "plt.colorbar(im, label=\"Converged & Spiky\", ticks=[0, 1])\n", - "plt.title(\n", - " f\"Converged BUT Spiky Runs\\n(threshold: frac_upward > {spikiness_threshold})\",\n", - " fontsize=13,\n", - " fontweight=\"bold\",\n", - ")\n", - "plt.tight_layout()\n", - "plt.show()\n", - "\n", - "# Print summary\n", - "n_converged_spiky = np.sum(converged_and_spiky == 1.0)\n", - "n_converged_total = np.sum(~np.isnan(conv_grid))\n", - "print(f\"\\n{'='*60}\")\n", - "print(f\"SUMMARY: Converged & Spiky Runs\")\n", - "print(f\"{'='*60}\")\n", - "print(f\"Spikiness threshold: {spikiness_threshold} (frac_upward)\")\n", - "print(f\"Converged & spiky: {n_converged_spiky}\")\n", - "print(f\"Total converged: {n_converged_total}\")\n", - "print(f\"Percentage: {100*n_converged_spiky/n_converged_total:.1f}%\")\n", - "print(f\"{'='*60}\\n\")" - ] - }, - { - "cell_type": "code", - "execution_count": 125, - "id": "c7b2bf5c", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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W3H37dun7777rkD7lVde6fLfb1GvteT6+h45ckR79uxxPq5Xr55beeR54403nNe75557nMWgN+T/b+CNN94o9OeZnZ3tfH0Nw1C9evU0adIkrV27Vn/88YcOHz6sOnXqSJK2bNmiXbt2OY/t06eP5s6dq61btyo9PV0ffvih83rvv//+RfO7lN8vLyY1NVW//PKL8/HWrVt19uxZ52NP/7u4GDPvy0X9fubm5io5OblE8wPginWeADc9+uijmj9/vnPdkjvuuEMrV65U7969FRERoUOHDmn58uX66KOPdPToUQUFBWnw4MHOD3czZsxQdHS0WrZsqYULF7r8gSusUPFESEiI7rrrLk2bNk3p6enauHGjJKl58+Zq0aKF87gKFSqoX79+zg8yN954o0aPHq169erp1KlT2r9/v9avX+9cwNIdVqtVt912m/MD79ixYxUUFKSYmBhNmTLF2QOWX5MmTZSQkKDk5GSdPXtW1157rR555BHFxsbq+PHj2rt3r7744gs5HA7T31pfffXVatu2rfODxd13360nnnhCLVu2VEpKipYsWaI77rhDffr00eDBgzV16lQ5HA69//77Cg8PV+/evRUcHKzff/9dP//8sxYvXqynnnrK5UNhYWbPnq3//ve/6t27t7p27aq6devKYrFo48aN+vzzz53HtWvXrtDzDx06pAEDBmjo0KHat2+fnnvuOee+2267TVar1ePXz2Kx6L777tOUKVMkSffee6+efPJJNW7cWBkZGTpw4IA2bdqkJUuWKD093Xmtzz77TJK0aNEiPf300+rYsaM+/fRTj3tyevfurZEjRyo7O1s//fSTrrvuOj3yyCMKCQlRcnKybDabs9cjJydHx48fdyvu7t27df311yshIUG9e/dWs2bNFBERoQMHDmjixIkXfa0l6e9//7smTpyoyMhIvfTSS84P8hUqVFD37t09ep5/+9vflJKSoieeeEK5ubm6/fbbtXjxYvXo0cOjOO5ea+vWrZLOLxR8/PhxJSQkKCcnRwcPHtSWLVu0ePFiJScnq06dOnrllVe0bNky9erVS7Vr11alSpW0a9cul9c673e1Q4cOatiwodq1a6eYmBgFBgZq+fLlBY67kEv5/dId/fv3d36RMHbsWGd7/fr1FR8fX6LXMvO+fNttt+mnn36SJCUlJalatWq6+uqrNXfuXP3+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kCRVr15dN954o7Zu3Vpk8bR06VIFBwerbdu2Lu1VqlRxefziiy+qbt266ty5c5F5uXOOO8dc7PlJUp8+fTR//vwii6fs7GxlZ2c7H6enpxeZNwAAAICLK5O37S1evFitWrVS//79FR0drfj4eM2aNUuSdObMGZ0+fVqSlJGRoS+++EJXX311kbE2bNigli1bXvB6OTk5evfddzVkyBBZ3LzX051zijrmQs8vT+vWrbV582aXAim/yZMnKzIy0rnFxsa6lTcAAADKMIuXt8tcmSye9uzZo+nTp6t+/fpasWKFHnzwQT3yyCN66623dPToUXXo0EHNmjVT27Ztde+99yohIaHIWPv371dMTMwFr7do0SKdOnVKgwcPdjtHd84p6pgLPb88MTExysnJ0ZEjRwqNPWbMGKWlpTm3gwcPup07AAAAgILK5G17DodDrVq10qRJkyRJ8fHx2r59u2bMmKFBgwbp+++/dzvW2bNnFRIScsFjZs+erZ49e160yPL0nKKOudjzk6TQ0FBJ58dsFSY4OFjBwcFu5wsAAICyjzFP3lUme56qV6+uuLg4l7ZGjRrpwIEDHseKiopSampqkfv379+vVatWaejQoW7HdOecCx3jzvM7efKkpIJjqAAAAAB4R5ksntq3b6+dO3e6tP3666+qXbu2x7Hi4+P1888/F7l/zpw5io6OVq9evdyO6c45FzrGnee3fft21axZU1FRUW7nBQAAAD9XCus8JSQkKC4uTklJST5+sqWvTN62N3LkSF1zzTWaNGmSBgwYoM2bN2vmzJmaOXOmx7F69OihMWPGKDU11TkVeB6Hw6E5c+Zo0KBBCghw76Vy55yLHePO89uwYYO6d+/uwTMFAAAAii85OVkRERG+TsMnymTPU0JCghYuXKj3339fjRs31oQJEzR16lTdddddHsdq0qSJWrRooQ8//LDAvlWrVunAgQMaMmRIoefOnTu3wEx6FzvHnWMu9vyysrK0aNEiDRs2zN2nCQDAJSEqJUVHKkTqPxaLXrRY9KjFIp044eu0AL+RN+bJW9vlrkz2PElS79691bt37xKJNXbsWI0ePVrDhg2T1fpnPdm9e3cZhlHkeXv37i2w7tPFznH3mAs9vzlz5qh169YF1qYCAAAA4D1ltngqSb169dKuXbt06NAhj9ZDWrZsmaZNm+bFzAoXGBio119/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AAAA/+PJhBG+tGbNmhKP6Vbx5HA4LvgYAAB/ZDNy1OLEMgWt/F2WdLtCHA6FZGf7Oi0AKFop9DyVFZ07dy7xmKYnjAAAwN8FO7LU449ZipjwhWx7s1T53DmXKW4BAJe2DRs26I033tCePXv00UcfqUaNGnrnnXd0xRVXqEOHDh7HK7EZHjIzM/Xmm29q+vTphS6eCwAAAMC78mbb89ZWlixYsEA9evRQaGiotm7dquz/3TmQlpamSZMmmYppqnj629/+psaNGzsf5+TkqG3btho6dKgSExPVvHlzfffdd6YSAgAAAHDpSkhIUFxcnJKSknydygW98MILmjFjhmbNmqXAwEBne/v27bV161ZTMU0VT2vWrFG/fv2cj+fNm6ft27frvffe0/bt21WtWjU999xzphIqKZmZmapdu7Yee+wxn+YBAAAAlBqLlzednzDi559/vqRn2pOknTt3qlOnTgXaIyMjderUKVMxTRVPR44cUZ06dZyPFy1apFatWumOO+5QXFychg0bpm+++cZUQiVl4sSJatu2rU9zAAAAAOAb1apV0+7duwu0b9y4UVdeeaWpmKaKp/LlyzurtdzcXK1du1Y9evRw7g8PD1daWpqphErCrl27tGPHDvXs2dOt41NSUhQdHa19+/Z5N7ESMnDgQL3yyiu+TgMAAACXmlLoeSorhg0bpkcffVTffPONLBaL/vjjD7333nt67LHH9OCDD5qKaap4atGihWbNmqXvvvtOEydO1OnTp9WnTx/n/t9++01Vq1Y1lZC7Dh06pLvvvluVK1dWaGiomjRpoi1btkiSHnvsMU2ePNntWBMnTtTNN9/s0pu2fv169enTRzExMbJYLFq0aNFF40yePFkJCQkKDw9XdHS0brnlFu3cudPlmNOnT2vEiBGqXbu2QkNDdc011yg5Odmj5/fMM89o4sSJPi1QAeBykGUtp/eufF4z31qiGStX6uXVq5UWGenrtAAAbnjyySd155136rrrrlNGRoY6deqkoUOH6v7779fDDz9sKqapqconTpyoHj16qFWrVjIMQ7fddptat27t3L9w4UK1b9/eVELuSE1NVfv27dW1a1ctW7ZMVapU0a5du1SxYkV98sknuuqqq3TVVVfpq6++umiszMxMzZ49WytWrHBpP3PmjJo1a6YhQ4a4jO+6kHXr1ikxMVEJCQnKzc3VU089pe7du+vnn39W+fLlJUlDhw7V9u3b9c477ygmJkbvvvuuunXrpp9//lk1atS46POTpMaNG6tu3bp69913i7zXNDs72zmjiCSlp6e79RwAAH9yWAJ0IKyx9OefOJ0LYJUPAJcub86KV9Zm27NYLHr66ac1evRo7d69WxkZGYqLiyvWkhOm/gK0atVKO3bs0FdffaUKFSq4LEB16tQpPfTQQ15ZlCrPSy+9pNjYWM2ZM8fZdsUVV0iS/vOf/2j+/Pn66KOPlJGRoXPnzikiIkJjx44tNNbSpUsVHBxcYHxUz5493b7tL8/y5ctdHs+dO1fR0dH69ttv1alTJ509e1YLFizQJ5984hy8Nn78eH366aeaPn26XnjhhYs+vzx9+vTR/PnziyyeJk+e7PNJOwAAAABfeffdd9WvXz+VK1dOcXFxJRLT9DpPVapU0c0331ygSKpQoYIeffRRNW/evLi5FWnx4sVq1aqV+vfvr+joaMXHx2vWrFmSzhcNBw8e1L59+/TPf/5Tw4YNK7Jwks4vnNWyZUuv5Jl3W12lSpUknR8fZrfbFRIS4nJcaGioNm7c6Hx8oeeXp3Xr1tq8ebNL71J+Y8aMUVpamnM7ePBgST41AAAAXIpKYcxTWZmqfOTIkYqOjtadd96ppUuXym63Fztmse49OH36tPbv36/U1FQZhlFgf2FTA5aEPXv2aPr06Ro1apSeeuopJScn65FHHlFQUJAGDRrkUaz9+/crJiamxHN0OBwaMWKE2rdv71wTKzw8XO3atdOECRPUqFEjVa1aVe+//76+/vpr1atXz3muO88vJiZGOTk5OnLkiGrXrl3g+sHBwQoODi7x5wUAAIDLW3JysiIiInydxkUdPnxYy5cv1/vvv68BAwaoXLly6t+/v+666y5dc801pmKaKp5SUlI0fPhwLViwoNAKzjAMWSyWEqnuCuNwONSqVSvnysDx8fHavn27ZsyY4VI8DR48+KKxzp49W6AnqCQkJiZq+/btLj1KkvTOO+9oyJAhqlGjhmw2m1q0aKE77rhD3377rfMYd55faGiopPNjtgAAAACJMU/5BQQEqHfv3urdu7cyMzO1cOFCzZs3T127dlXNmjX122+/eR7TTCLDhg3Tp59+qkceeUQdO3Z0TmRQWqpXr17gvsVGjRppwYIFHseKiopSampqSaUmSRo+fLiWLFmi9evXq2bNmi776tatq3Xr1unMmTNKT09X9erVdfvtt7vMNe/O8zt58qSk87dPAgAAAChauXLl1KNHD6Wmpmr//v365ZdfTMUxVTytXLlSI0eO1Msvv2zqosXVvn37AlOA//rrr4XevnYx8fHxevfdd0skL8Mw9PDDD2vhwoVau3ZtgUke8itfvrzKly+v1NRUrVixwuW1dOf5bd++XTVr1lRUVFSJ5A4AAAA/4M31mMpYz5MkZ4/Te++9p9WrVys2NlZ33HGHPv74Y1PxTBVP5cqVc1kTqbSNHDlS11xzjSZNmqQBAwZo8+bNmjlzpmbOnOlxrB49emjMmDFKTU116UHLyMhwWZF479692rZtmypVqqRatWoVGisxMVHz5s3TJ598ovDwcB05ckSSFBkZ6bzNbsWKFTIMQw0aNNDu3bs1evRoNWzYUPfdd59Hz2/Dhg3q3r27x88XAAAAuBwMHDhQS5YsUbly5TRgwAA9++yzateuXbFimppt7+6779bChQuLdeHiSEhI0MKFC/X++++rcePGmjBhgqZOnaq77rrL41hNmjRRixYt9OGHH7q0b9myRfHx8YqPj5ckjRo1SvHx8S4z982dO1cWy58l+PTp05WWlqYuXbqoevXqzu2DDz5wHpOWlqbExEQ1bNhQ9957rzp06KAVK1YoMDDQ7eeXlZWlRYsWadiwYR4/XwAAAPg5L860V5bYbDZ9+OGHOnz4sKZNm1bswkky2fN02223ad26dbrhhhv097//XbGxsbLZbAWOa9GiRbETLEre4K+SMHbsWI0ePVrDhg2T1Xq+nuzSpUuhMwjmt3fvXpep2i92vCQNGDBAAwYMuOhxF3p+c+bMUevWrQusTQUAAADgvPfee6/EY5oqnjp06OD89+eff15gv7dn2ytpvXr10q5du3To0CHFxsa6fd6yZcs0bdo0L2ZWuMDAQL3++uulfl0AAABc2kpjtr2EhATZbDYlJiYqMTHROxcrIatXr9bq1at17NgxORwOl31vvvmmx/FMFU9z5swxc9olbcSIER6fs3nz5pJPxA1Dhw71yXUBAACAsrLO03PPPafnn39erVq1UvXq1V2G25hlqnjydCFaAAAAAKWA2facZsyYoblz5+qee+4psZimJozI7/Dhw/r+++915syZksgHAAAAAIotJydH11xzTYnGNF08ffLJJ2rYsKFq1qypFi1a6JtvvpEknThxQvHx8T6djQ8AgJJgNXLV8NRXarx8kZosWKCWH3+soHPnfJ0WAMANQ4cO1bx580o0pqnb9j799FP169dP7dq105133qnx48c790VFRalGjRqaO3eu+vbtW1J5AgBQ6kIcmep74J+KGPmFbHuzVPncOUWEhfk6LQCAG7KysjRz5kytWrVKTZs2dVkaSJJeffVVj2OaKp6ef/55derUSWvWrFFKSopL8SRJ7dq10xtvvGEmNAAAAACTSmO2vbLihx9+UPPmzSVJ27dvd9lndvIIU8XT9u3bL1ipVa1aVceOHTOVEAAAAAAU15o1a0o8pqniqVy5checIGLPnj2qXLmy6aQAAAAAmMBse4X6/fffJUk1a9YsVhxTE0Z07dpVb731lnJzcwvsO3LkiGbNmqXu3bsXKzEAAAAAl56EhATFxcUpKSnJ16lckMPh0PPPP6/IyEjVrl1btWvXVoUKFTRhwoQCC+a6y1TP08SJE9W2bVslJCSof//+slgsWrFihb744gu98cYbMgxD48aNM5UQAAAAAJNKoeeprCyS+/TTT2v27Nl68cUX1b59e0nSxo0bNX78eGVlZWnixIkexzRVPDVo0EAbN27Uo48+qmeffVaGYWjKlCmSpC5duigpKUl16tQxExoAgEtGlrWcltV8SAH/uleWM3YFGYY6jhypiPR0X6cGALiIt956S//5z3900003OduaNm2qGjVq6KGHHiq94kmSrr76aq1atUqpqanavXu3HA6HrrzySlWpUsVsSAAALikOS4B2VLhGuuHPtpzHH/ddQgBwMV6cba+sjXk6efKkGjZsWKC9YcOGOnnypKmYphfJzVOxYkUlJCSoTZs2FE4AAAAALgnNmjXTtGnTCrRPmzZNzZo1MxXTdM+TJK1fv1579uxRamqqDMNw2WexWDRy5MjihAcAAADgCWbbc3r55ZfVq1cvrVq1Su3atZMkff311zp48KCWLl1qKqap4mnbtm26/fbbtXv37gJFUx6KJwAAAAC+0rlzZ/36669KSkrSjh07JEn9+vXTQw89pJiYGFMxTRVPQ4cO1bFjxzRjxgy1adNGkZGRpi4OAAAAoOQYXhzz5LWxVF4UExNjamKIopga8/TTTz/pqaee0rBhw9S0aVPnvOl/3QAAAACgNO3atUt33HGH0guZ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2+TJk4s8tmfPnnrhhRfUt2/fQve/+uqrGjZsmO677z7FxcVpxowZKleunN58880Cx1atWlXNmjXThg0bLpjfRx99pDp16kiS/vGPf6hmzZo6cuSIjhw5omPHjql27dqmhxeZKp769eunGTNmOAdfSecXxZWklStXau7cuerfv7+phAAAAACYZXh5O38XWlpamnMbM2aMqUxzcnL07bffqlu3bs42q9Wqbt266euvv5Z0foa806dPSzq/aPH69evVoEGDC8ZNS0tT+fLlJUlfffWVJk6c6LzVr1KlSpo8ebLWrl1rKmdTxdNzzz2n6tWrq3nz5rr33ntlsVj00ksvqUOHDurZs6eaNm2qp556ylRCvnDq1Cm1atVKzZs3V+PGjTVr1ixfpwQAAABckiIiIly24OBgU3FOnDghu93unEo8T9WqVXXkyBFJ0v79+9WxY0c1a9ZMHTt21MMPP3zBBXAl6aqrrnKOmwoPDy8wnOj06dNyOBymcjY1215kZKQ2bdqkV155RR9//LFCQkK0bt061a1bV+PGjdPo0aMVGhpqKiFfMDMFIgAAAHDJ8bPZ9lq3bq1t27Z5dM7IkSP12GOPqWrVqhozZoweeeQRvf7662rUqJF27typRx99VP369TOVj+lFckNDQ/XMM8/omWeeMRvikmFmCsSUlBQ1atRImzdvdt5TWVoGDhyohIQE/eMf/yjV6wIAAAAlJSoqSjabrcAEEEePHlW1atVMxx08eLBOnjypXr16yTAM2e12de/e3bn/pptu0r/+9S9TsU3dtldWHTp0SHfffbcqV66s0NBQNWnSRFu2bJHk+RSIEydO1M033+xSOE2ePFkJCQkKDw9XdHS0brnlFu3cudPlPHema7xYrs8884wmTpyotLQ08y8GAAAA/I7FYnh1k6SEhATFxcUVOYOeu4KCgtSyZUutXr3a2eZwOLR69Wq1a9euWLFHjRqlQ4cO6a233tLzzz+vF154QbNnz9aOHTu0cOFChYWFmYrrVs/TkCFDPA5ssVg0e/Zsj8/zltTUVLVv315du3bVsmXLVKVKFe3atUsVK1aU9OcUiEePHlW/fv102223Fbj/Mk9mZqZmz56tFStWuLSvW7dOiYmJSkhIUG5urp566il1795dP//8s3PQWt50jUOGDCmyu/BiuTZu3Fh169bVu+++q8TExJJ6iQAA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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "============================================================\n", - "SUMMARY\n", - "============================================================\n", - "Did not converge (black): 12 (28.6%)\n", - "Spiky converged (red): 10 (23.8%)\n", - "Smooth converged (color): 20 (47.6%)\n", - "============================================================\n", - "\n" - ] - } - ], - "source": [ - "# Load both metrics\n", - "reduction_threshold = 0.6\n", - "conv_grid, conv_std = load_sweep_results_grid_convergence(\n", - " sweep_dir, k_values, hidden_dims, reduction_threshold=reduction_threshold\n", - ")\n", - "stability_grid, stability_std = load_sweep_results_grid_spikiness(\n", - " sweep_dir, k_values, hidden_dims\n", - ")\n", - "\n", - "# Parameters\n", - "spikiness_threshold = 0.3\n", - "\n", - "# Create modified grid for plotting\n", - "# Strategy: Use a modified colormap and data array\n", - "plot_grid = conv_grid.copy()\n", - "\n", - "# Create mask for spiky converged runs\n", - "spiky_mask = np.zeros_like(conv_grid, dtype=bool)\n", - "for i in range(len(hidden_dims)):\n", - " for j in range(len(k_values)):\n", - " converged = not np.isnan(conv_grid[i, j])\n", - " spiky = stability_grid[i, j] > spikiness_threshold\n", - " if converged and spiky:\n", - " spiky_mask[i, j] = True\n", - "\n", - "# Plot\n", - "fig, ax = plt.subplots(figsize=(10, 6.5))\n", - "\n", - "# First: plot convergence grid with viridis_r (will handle black for NaN)\n", - "cmap_conv = plt.cm.viridis_r.copy()\n", - "cmap_conv.set_bad(color=\"black\")\n", - "im = ax.imshow(plot_grid, aspect=\"equal\", cmap=cmap_conv, norm=LogNorm())\n", - "\n", - "# Second: overlay red patches for spiky converged runs\n", - "for i in range(len(hidden_dims)):\n", - " for j in range(len(k_values)):\n", - " if spiky_mask[i, j]:\n", - " # Draw red square\n", - " rect = plt.Rectangle(\n", - " (j - 0.5, i - 0.5),\n", - " 1,\n", - " 1,\n", - " facecolor=\"red\",\n", - " edgecolor=\"darkred\",\n", - " linewidth=2,\n", - " alpha=0.9,\n", - " )\n", - " ax.add_patch(rect)\n", - "\n", - " # # Add convergence value in white text\n", - " # conv_val = conv_grid[i, j]\n", - " # ax.text(\n", - " # j,\n", - " # i,\n", - " # f\"{int(conv_val)}\",\n", - " # ha=\"center\",\n", - " # va=\"center\",\n", - " # fontsize=8,\n", - " # color=\"white\",\n", - " # fontweight=\"bold\",\n", - " # )\n", - "\n", - "# Formatting\n", - "ax.set_xlabel(\"Sequence Length (k)\", fontsize=12)\n", - "ax.set_ylabel(\"Hidden Dimension\", fontsize=12)\n", - "ax.set_xticks(range(len(k_values)))\n", - "ax.set_xticklabels(k_values)\n", - "\n", - "ytick_labels = [f\"$6^{i+1}$ ({val:,})\" for i, val in enumerate(hidden_dims)]\n", - "ax.set_yticks(range(len(hidden_dims)))\n", - "ax.set_yticklabels(ytick_labels)\n", - "ax.invert_yaxis()\n", - "\n", - "# Add theory boundary\n", - "x_step = np.arange(len(k_values)) - 0.5\n", - "y_step = np.minimum(x_step, len(hidden_dims))\n", - "ax.step(\n", - " x_step,\n", - " y_step,\n", - " where=\"post\",\n", - " color=\"cyan\",\n", - " linewidth=3,\n", - " linestyle=\"--\",\n", - " label=\"Theory boundary\",\n", - ")\n", - "\n", - "# Custom legend\n", - "from matplotlib.patches import Patch\n", - "\n", - "legend_elements = [\n", - " Patch(facecolor=\"black\", label=\"Did not converge\"),\n", - " Patch(\n", - " facecolor=\"red\",\n", - " edgecolor=\"darkred\",\n", - " linewidth=2,\n", - " label=f\"Spiky (frac_up > {spikiness_threshold})\",\n", - " ),\n", - " Patch(facecolor=\"yellow\", label=\"Smooth convergence\"),\n", - " plt.Line2D(\n", - " [0], [0], color=\"cyan\", linewidth=3, linestyle=\"--\", label=\"Theory boundary\"\n", - " ),\n", - "]\n", - "ax.legend(\n", - " handles=legend_elements,\n", - " loc=\"upper center\",\n", - " bbox_to_anchor=(0.5, -0.12),\n", - " fontsize=10,\n", - " frameon=True,\n", - " ncol=4,\n", - ")\n", - "\n", - "plt.colorbar(im, ax=ax, label=f\"Steps to {reduction_threshold*100}% Convergence\")\n", - "ax.set_title(\"Convergence Speed & Spikiness Combined\", fontsize=13, fontweight=\"bold\")\n", - "plt.tight_layout()\n", - "plt.show()\n", - "\n", - "# Print summary\n", - "n_not_converged = np.sum(np.isnan(conv_grid))\n", - "n_converged_spiky = np.sum(spiky_mask)\n", - "n_converged_smooth = np.sum(~np.isnan(conv_grid)) - n_converged_spiky\n", - "total = conv_grid.size\n", - "\n", - "print(f\"\\n{'='*60}\")\n", - "print(f\"SUMMARY\")\n", - "print(f\"{'='*60}\")\n", - "print(\n", - " f\"Did not converge (black): {n_not_converged:3d} ({100*n_not_converged/total:.1f}%)\"\n", - ")\n", - "print(\n", - " f\"Spiky converged (red): {n_converged_spiky:3d} ({100*n_converged_spiky/total:.1f}%)\"\n", - ")\n", - "print(\n", - " f\"Smooth converged (color): {n_converged_smooth:3d} ({100*n_converged_smooth/total:.1f}%)\"\n", - ")\n", - "print(f\"{'='*60}\\n\")" - ] - }, - { - "cell_type": "markdown", - "id": "2f5cbbf5", - "metadata": {}, - "source": [ - "### Curve plot: Convergence steps vs Sequence Length $k$ for different hidden dimensions\n", - "- x-axis: sequence length $k$\n", - "- y-axis: number of steps to convergence\n", - "- different curves for different hidden dimensions" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "adddc2c6", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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jGOPPRa333671c2iGnLjjTfisccew1tvvWV1U6iGXX/99fjrX/+KF1980eqm0ARy3XXX4fHHH8e2bdsghLC6OVQjzj//fLS0tODee+/N3/bRj34UdXV1+M1vflPWOTi9vIr09PQAMJIlotHSNA0PPfQQotEoVq5caXVzqMasWrUK5513Hs4880yrm0I1bNu2bZg6dSra2tpw2WWXob293eomUY354x//iPe973342Mc+hubmZixbtgz/8R//YXWzqIalUin85je/wVVXXcWEm0bkpJNOwjPPPIOtW7cCAN5++2289NJLOPfcc8s+B+d7VQld13Hdddfh5JNPxjHHHGN1c6gGbdiwAStXrkQikYDX68Wjjz6KhQsXWt0sqiEPPfQQ1q5dizfeeMPqplANO+GEE3D//fdj/vz56OjowHe/+12ccsopeOedd+Dz+axuHtWIHTt24K677sKXv/xlfP3rX8cbb7yBa6+9Fg6HA1dccYXVzaMa9Nhjj6G7uxtXXnml1U2hGnP99dcjHA7j6KOPhqqq0DQN3//+93HZZZeVfQ4m3VVi1apVeOedd/DSSy9Z3RSqUfPnz8dbb72Fnp4e/O53v8MVV1yB559/nok3lWXPnj344he/iL/85S9wuVxWN4dqWOEn/0uWLMEJJ5yAmTNn4pFHHuFyFyqbrut43/veh1tuuQUAsGzZMrzzzju4++67mXTTqNx7770499xzMXXqVKubQjXmkUcewW9/+1s8+OCDWLRoEd566y1cd911mDp1atn9EZPuKvCFL3wBjz/+OF544QVMnz7d6uZQjXI4HJgzZw4AYMWKFXjjjTfw05/+FPfcc4/FLaNa8Oabb+LgwYNYvnx5/jZN0/DCCy/gZz/7GZLJJFRVtbCFVKuCwSDmzZuH7du3W90UqiFTpkwZ8KHxggUL8Pvf/96iFlEt2717N55++mn893//t9VNoRr0la98Bddffz0uueQSAMDixYuxe/du3HrrrUy6a4GUEtdccw0effRRPPfcc5g1a5bVTaIJRNd1JJNJq5tBNeKDH/wgNmzYUHTbpz/9aRx99NH42te+xoSbRi0SieDdd9/F5ZdfbnVTqIacfPLJA8qobt26FTNnzrSoRVTL7rvvPjQ3N+O8886zuilUg2KxGBSleCs0VVWh63rZ52DSbaFVq1bhwQcfxB/+8Af4fD7s378fABAIBFBXV2dx66iW3HDDDTj33HPR2tqK3t5ePPjgg3juuefw1FNPWd00qhE+n2/AfhIejweNjY3cZ4JG5F/+5V9wwQUXYObMmdi3bx++853vQFVVXHrppVY3jWrIl770JZx00km45ZZb8PGPfxyvv/46fv7zn+PnP/+51U2jGqPrOu677z5cccUVLF9Io3LBBRfg+9//PlpbW7Fo0SKsW7cOt912G6666qqyz8HIs9Bdd90FADj99NOLbr/vvvu4yQONyMGDB/H3f//36OjoQCAQwJIlS/DUU0/hrLPOsrppRHSEee+993DppZeis7MTkyZNwvvf/368+uqrmDRpktVNoxpy3HHH4dFHH8UNN9yA733ve5g1axZuv/32EW1cRAQATz/9NNrb20eUIBEVuuOOO/Ctb30Ln//853Hw4EFMnToV//iP/4hvf/vbZZ+DdbqJiIiIiIiIKoR1uomIiIiIiIgqhEk3ERERERERUYUw6SYiIiIiIiKqECbdRERERERERBXCpJuIiIiIiIioQph0ExEREREREVUIk24iIiIiIiKiCmHSTURERERERFQhTLqJiIiIiIiIKoRJNxEREREREVGFMOkmIiKiI95zzz0HIQRuvPFG084ppcSKFSvwoQ99aMB93/jGNyCEwMsvvzzkObZs2QKbzYY777zTtHYREdH4YtJNRERVKRqN4pZbbsHy5cvh9XrhdDoxffp0nHLKKbjhhhvw7rvvWt3EI86uXbsghMA555xjdVNGrBJJ9XB+9atfYe3atfje97434L5169ZBURQce+yxQ55j/vz5uPTSS/Hd734Xvb29FWopERFVEpNuIiKqOr29vTjppJPwjW98A729vfjUpz6Ff/mXf8F5552HSCSCH/zgB3j22WetbibRoHRdx4033ohTTjkFJ5544oD7161bh/nz58Ptdg97rq9+9as4ePAg/v3f/70STSUiogqzWd0AIiKi/m6//XasX78en/nMZ/Dzn/8cQoii+3fu3IlkMmlR64iG9+STT2LXrl34xje+MeC+jo4O7N+/Hx/84AfLOtfixYuxZMkS/Md//AduuOEGKArHTIiIagl7bSIiqjqvvPIKAGDVqlUDEm4AmDVrFo4++ugBt7/wwgu44IIL0NTUBKfTiblz5+Kb3/wmYrHYgGM1TcMPf/hDzJkzBy6XC3PmzMGtt96KHTt2QAiBK6+8Mn/s/fffDyEE7r///gHnGW7acrltKjzPmjVrcNZZZ8Hn8yEQCODiiy/Grl27Bj3/RRddhJaWFjidTsyYMQMf+chH8NJLL43p+pilkq8/k8ng1ltvxezZs4f8Hd54440444wzAADf/e53IYTI/yt13pFc/8Hcd999EELgox/96ID71q1bBwBYvnx50e2bN2/GokWL4PV68dBDDxXd9/GPfxy7d+/mDA8iohrEkW4iIqo6jY2NAICtW7cOu+Y156677sKqVasQDAZxwQUXoLm5GWvWrMH3v/99PPvss3j22WfhcDjyx//DP/wDfvnLX2LWrFlYtWoVEokEbrvttmE3thqJkbYJAN544w386Ec/whlnnIF//Md/xLp16/DYY49hw4YNeOedd+ByufLH/vSnP8WXvvQl1NXV4eKLL0Zrayv27t2Ll156Cb/73e/w/ve/f0xtqfbXf9VVV+HXv/412trasGrVKiSTSfzbv/1b/kObnNNPPx27du3CAw88gNNOOw2nn356/r5gMDjq5x+MlBLPPvss5s+fj/r6+gH3l0q6H374YXzmM5/BlClT8Oqrr+KYY44peszKlSsBAM8880zZI+RERFQlJBERUZX5wx/+IAFIn88n//mf/1k+9dRT8vDhw4Me/7e//U3abDa5dOnSAcfdeuutEoD813/91/xtzz77rAQgly5dKiORSP729957TzY1NUkA8oorrsjfft9990kA8r777hvw3Llzfec73zGlTQDkQw89VHT85ZdfLgHI//zP/8zf9tZbb0lFUeTUqVPlzp07i47XdV3u3bt31G0ZzM6dOyUAefbZZw97bKVf/9NPPy0ByGOPPVZGo9H87fv27ZMtLS0DfoeD/Z5G+/zDvXYA8rLLLit5/0c+8hEphJDd3d0ylUrJa665RgKQF154oezu7i75mJ6eHglAnnrqqWW1gYiIqgenlxMRUdW58MIL8ZOf/ARSSvzkJz/B2WefjaamJsyZMwdf+MIXsG3btqLj77nnHmQyGdxxxx35UfKcr371q5g0aRL+8z//M3/br371KwDAt7/9bXg8nvzt06ZNwxe/+EVTXsNI25Rz6qmn4hOf+ETRbVdddRUAYxS28Py6ruPmm2/GUUcdVXS8EAJTp04dc1vGotKv/ze/+Q0A43dYuBnZlClTxvQ7LPf5h/Lee+8BAFpaWkrev27dOrS1tSEcDuPUU0/F6tWrcdNNN+Gxxx5DIBAo+Ri/3w+Xy5U/NxER1Q5OLycioqr05S9/GZ/97Gfxpz/9CS+//DLWrFmD1157DatXr8a9996Lhx9+GBdeeCEA4NVXXwUAPPXUU3jmmWcGnMtut2Pz5s35n99++20AwCmnnDLg2FK3jcZI25SzYsWKAbdNnz4dANDd3Z2/7fXXXweAkjWgzWrLWFT69ed+h4VT6HNOPvnkUbV5JM8/lM7OTgADp67nzrFz507Mnj0by5cvh67r+N///V+cffbZw563oaEBhw8fLqsNRERUPZh0ExFR1fL5fPjYxz6Gj33sYwCAnp4efP3rX8edd96Jq6++Gnv37oXD4UBXVxcA4Pvf/35Z5+3p6YGiKGhqahpw32CjkyM10jbl+P3+AbfZbMbbtaZp+dt6enoghMCUKVMq1paxqPTrD4fDFfkdlvv8Q6mrqwMAJBKJAffl1nOHQiF0dXXhW9/6VlkJNwDE4/GySowREVF14fRyIiKqGYFAAD/72c8wc+ZMHD58GBs2bADQlyiFw2FIKQf9V3geXddLjhoeOHBgwG25Ek2ZTGbAfT09PSXbOtI2jVQwGISUEh0dHcMeW+m2WPGcfr9/RL/D8TRp0iQAfR88FMol3b/4xS+wcuVK3HLLLXjiiSeGPaeu6+jp6cmfm4iIageTbiIiqilCiKJ12ABwwgknAOib0jycpUuXAgBefPHFAfeVui23A/XevXsH3JdLovobaZtG6vjjjwcA/PnPfx722Eq3xYrnzP0O//rXvw64r9QO9KqqAih/tHosFi1aBEVRsGXLlgH35eLlxBNPxGOPPYYZM2bgkksuyU+XH8y2bdug6zoWL15ckTYTEVHlMOkmIqKqc8899wy6adVjjz2GTZs2IRgM5ssqff7zn4fNZsM111yD9vb2AY/p7u4uSo4vv/xyAMD3vvc9RKPR/O179+7FT3/60wGPX7FiBYQQeOihh4qmDG/btq3k8aNp00j90z/9E1RVxTe/+U3s3r276D4pJfbt2zdubSml0s952WWXATB+h/F4PH/7/v37S/5OGhoaAAB79uwZ9XOWKxgMYsmSJVizZg10XS+6b+3atWhpacGUKVPQ3NyM//mf/4GiKDj//POLfmf9vfbaawCA0047raJtJyIi83FNNxERVZ0nn3wS//RP/4Q5c+bg5JNPxtSpUxGNRrFu3Tq8+OKLUBQFd955J5xOJwDgmGOOwZ133onPfe5zmD9/Pv7u7/4Os2fPRm9vL3bs2IHnn38eV155Je6++24AwBlnnIFPf/rTuO+++7B48WJcfPHFSCaTePjhh3HiiSfi8ccfL2rP1KlTcemll+LBBx/EihUrcM455+DgwYN49NFHcc455+D3v//9gNcw0jaN1OLFi3H77bfj2muvxaJFi3DRRRdh5syZ2L9/P1544QWcd955uP322yvSlg0bNuDKK68sed/RRx+N66+/vuKv/8wzz8QnP/lJPPjgg1i8eDEuuugiJJNJPPLIIzjhhBPyyWxhu6ZOnYqHHnoITqcT06dPhxAC11xzzaA7ho/FxRdfjO985zt49dVXcdJJJwEw1mRv2bIFZ555Zv64Y445Bg899BAuuOACXHDBBXjxxRdLrtv+y1/+ApvNhvPPP9/0thIRUYWNQ1kyIiKiEdm8ebP80Y9+JM866yw5a9Ys6XK5pMvlkrNnz5ZXXHGFXLNmTcnHvf766/KSSy6RU6dOlXa7XTY1Ncnly5fL66+/Xm7atKno2EwmI2+99VbZ1tYmHQ6HbGtrk7fccovcvn37gBrPUkoZi8XktddeK1taWqTT6ZRLliyRv/3tb4et/1xum4Y6T64+dv825R53/vnny4aGBulwOOT06dPlRz/6UfnXv/51TNenlFw7hvp32mmnjdvrT6fT8qabbpKzZs0q+h2+9tprEoD84he/WHT8q6++Kk877TTp8/ny7c3VOB/t9R/M3r17pc1mk5/73OeKnh+A/NrXvjbg+DvuuEMCkB/+8IelpmlF90WjUen1euVFF11U9vMTEVH1EFKavHMKERFRDdu1axdmzZqFK664Avfff7/VzaFR+MUvfoHPfvaz+ZF2q1x++eV44oknsHv3bvh8vlGfJ/d6nn/+eZx66qkmtpCIiMYD13QTERFRTdq/f/+AHdD37t2Lm2++GaqqWj4V++abb0Y8Hscdd9wx6nNkMhnccsstuPDCC5lwExHVKK7pJiIiopr0gx/8AE888QROOeUUNDc3o729HY8//jh6e3tx4403YsaMGZa2b+bMmXjggQfGVMKsvb0df//3f5/f/I+IiGoPk24iIiKqSeeccw42btyIJ554AqFQCC6XC0uWLMHnP/95fPKTn7S6eQCAj3/842N6fFtbG2688UZzGkNERJbgmm4iIiIiIiKiCuGabiIiIiIiIqIKYdJNREREREREVCFMuomIiIiIiIgqhEk3ERERERERUYUw6SYiIiIiIiKqECbdRERERERERBXCpJuIiIiIiIioQph0ExEREREREVUIk24iIiIiIiKiCmHSTURERERERFQhTLqJiIiIiIiIKuT/A2RmbKLRYIQ2AAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "(
,\n", - " )" - ] - }, - "execution_count": 138, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "def plot_convergence_vs_k(\n", - " conv_grid,\n", - " k_values,\n", - " hidden_dims,\n", - " save_path=None,\n", - " show=True,\n", - " log_x=True,\n", - " log_y=True,\n", - " reduction_threshold=0.9,\n", - "):\n", - " \"\"\"\n", - " Plot steps to convergence vs sequence length k for different hidden dimensions.\n", - "\n", - " Args:\n", - " conv_grid: 2D array (len(hidden_dims), len(k_values)) with convergence steps\n", - " k_values: List of k (sequence length) values\n", - " hidden_dims: List of hidden dimension values\n", - " save_path: Where to save the plot\n", - " show: Whether to display the plot\n", - " log_x: Whether to use log scale for x-axis\n", - " log_y: Whether to use log scale for y-axis\n", - " reduction_threshold: Threshold used for convergence\n", - " \"\"\"\n", - " fig, ax = plt.subplots(figsize=(10, 6))\n", - "\n", - " # Use a nice sequential colormap for different widths\n", - " colors = plt.cm.plasma(np.linspace(0.15, 0.95, len(hidden_dims)))\n", - "\n", - " for i, (h, color) in enumerate(zip(hidden_dims, colors)):\n", - " # Extract convergence steps for this hidden dim across all k values\n", - " steps_for_h = conv_grid[i, :]\n", - "\n", - " # Only plot converged points\n", - " converged_mask = ~np.isnan(steps_for_h)\n", - " k_converged = np.array(k_values)[converged_mask]\n", - " steps_converged = steps_for_h[converged_mask]\n", - "\n", - " if len(steps_converged) > 0:\n", - " # Plot with line and markers\n", - " ax.plot(\n", - " k_converged,\n", - " steps_converged,\n", - " color=color,\n", - " marker=\"o\",\n", - " markersize=7,\n", - " linewidth=2.5,\n", - " label=f\"h={h:,}\",\n", - " markeredgewidth=0.5,\n", - " markeredgecolor=\"white\",\n", - " )\n", - "\n", - " # Formatting\n", - " ax.set_xlabel(\"Sequence Length ($k$)\", fontsize=14)\n", - " ax.set_ylabel(\"Steps to Convergence\", fontsize=14)\n", - " ax.set_title(\n", - " f\"Steps to {reduction_threshold*100}% Convergence vs Sequence Length $k$\",\n", - " fontsize=16,\n", - " )\n", - " if log_y:\n", - " ax.set_yscale(\"log\")\n", - " if log_x:\n", - " ax.set_xscale(\"log\")\n", - " ax.grid(True, alpha=0.3, which=\"both\", linestyle=\"--\", linewidth=0.5)\n", - " ax.legend(fontsize=11, framealpha=0.9, loc=\"best\")\n", - "\n", - " # Make k values discrete on x-axis\n", - " ax.set_xticks(k_values)\n", - " ax.set_xticklabels(k_values)\n", - "\n", - " plt.tight_layout()\n", - "\n", - " if save_path:\n", - " plt.savefig(save_path, dpi=150, bbox_inches=\"tight\")\n", - " print(f\"Saved to {save_path}\")\n", - "\n", - " if show:\n", - " plt.show()\n", - " else:\n", - " plt.close()\n", - "\n", - " return fig, ax\n", - "\n", - "\n", - "reduction_threshold = 0.9\n", - "conv_grid, conv_std = load_sweep_results_grid_convergence(\n", - " sweep_dir,\n", - " k_values,\n", - " hidden_dims,\n", - " reduction_threshold=reduction_threshold,\n", - ")\n", - "\n", - "\n", - "plot_convergence_vs_k(\n", - " conv_grid=conv_grid,\n", - " k_values=k_values,\n", - " hidden_dims=hidden_dims,\n", - " save_path=None,\n", - " show=True,\n", - " log_x=False,\n", - " log_y=True,\n", - " reduction_threshold=reduction_threshold,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "3e814b11", - "metadata": {}, - "source": [ - "### Curve plot : Normalized Convergence Steps vs Sequence Length for different hidden dimensions\n", - "- x-axis: sequence length\n", - "- y-axis: normalized convergence steps ($\\text{steps} / |G|^k$)\n", - "- different curves for different hidden dimensions $H$" - ] - }, - { - "cell_type": "code", - "execution_count": 140, - "id": "e116a0e1", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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QixcuNDo0CiKaJqGRYsWISMjg9sWUo0MGzYML730Elq3bo2OHTti586dePXVVzFmzJhqn4MZV4/Nnz8fAJCenl7u+KJFi7j4A1VLZmYmfve73+HkyZNwuVzo0qUL1qxZg0GDBhkdGhFdIH755RfceeedOHv2LBISEtC3b198++23SEhIMDo0ihI9e/bEJ598gqeffhrPP/88UlJSMGvWrBotYkS0bt06HD16tEaFEhEAzJ49G88++ywefPBBZGZmIikpCePHj8dzzz1X7XNwn24iIiIiIiKiCOE+3UREREREREQRwqKbiIiIiIiIKEJYdBMRERERERFFCItuIiIiIiIioghh0U1EREREREQUISy6iYiIiIiIiCKERTcRERERERFRhLDoJiIiIiIiIooQFt1EREREFWzYsAGSJGHq1Km1ds4VK1ZAkiR88803YV3H6/Wibdu2uP3222stJiIiijwW3UREFBUKCgowffp0dOvWDQ6HA1arFS1btkS/fv3w9NNP46effjI6xAtSmzZtYLPZjA4jLG3atEGbNm3q5FperxdPPfUUrrvuOvTu3Tusc5jNZvzxj3/E3//+d3z77be1HCEREUWKyegAiIiIzic/Px99+/bFrl270K5dO9x1111o0qQJsrKysG3bNsycOROpqalITU01OlSikP72t7/hwIEDeOONN3SdJyMjA5MnT8azzz6LtWvX1lJ0REQUSSy6iYio3ps1axZ27dqFe++9FwsXLoQkSeVeP3z4MIqLiw2Kjuj85s+fj1atWuGqq67SdR6TyYQRI0Zg9uzZOHjwINq1a1dLERIRUaRwejkREdV7//rXvwAAEyZMCCq4ASAlJQUdOnQIOp6ZmYnf//73aNeuHaxWK5o2bYrbbrsNe/bsCXmdLVu2YMCAAYiNjUWTJk1wxx134NixY0hPTw+67ujRoyFJEn7++eeg80ydOhWSJGHDhg1Br23atAnDhg1D06ZNYbVa0b59ezzzzDPweDzl2pV91nfHjh0YNGgQnE4nXC4XbrnllpDXBYBDhw7hvvvuQ0pKCqxWKxITE5Geno5333037FhqixAC77zzDvr06YO4uDjExMSgR48eeOedd4Lalu3DJUuW4PLLL4fdbkfz5s3x6KOPorCwMOg9Pp8PM2bMQGpqKmw2G9q1a4cZM2bg0KFDkCQJo0ePBgD8/PPPkCQJR44cwZEjRyBJUuBfqGera9L/oezZswc7duzAbbfdFjJ/Q8nNzcWAAQMgyzJmz55d7rXbb78dQggsXry42jEQEZFxWHQTEVG916RJEwDAjz/+WO33/PTTT+jevTtmzZqF1NRUPPzww7j++uuxevVq/OY3v8HWrVvLtf/yyy9x9dVXY+vWrfjtb3+L++67D4cPH0afPn2QnZ1dK9/H/PnzkZ6ejq+//hpDhw7FI488gpYtW+Kll17CoEGDUFJSEvSe7du3o3///rBYLBg/fjx69OiBFStWYODAgSgqKirXdsuWLejatSveeustdOjQAY899hhuvfVWFBYW4vXXX9cdix5CCIwaNQpjx47FmTNnMHLkSNx7770oKCjA2LFj8cQTT4R835w5c3DfffehY8eOeOCBB9CoUSP83//9H+69996gtmPGjMHkyZMBlP6BZvDgwXjttdcwceLEcu3i4+MxZcoUuFwuuFwuTJkyJfAvPT29XNua9H9lvvzySwDAb37zm2q1P3nyJPr3749vv/0WS5cuxcMPP1zu9e7du8NsNgfOS0RE9ZwgIiKq51auXCkACKfTKR5//HGxZs0akZWVVeV7evfuLRRFEatXry53fP/+/cLpdIrOnTsHjqmqKtq2bSskSRKbN28OHNc0TYwcOVIAEBV/ZWZkZAgA4vDhw0HXnjJligAg1q9fHzj2n//8R5hMJnHZZZcFxT5jxgwBQPzlL38JHFu/fn3gusuWLSvX/u677xYAxNKlSwPHioqKRIsWLYQsy2LVqlVBMR07dizsWKqSnJwsrFbredstXLhQABD33HOPKCkpCRwvLi4Ww4YNEwDEjh07Asf9fehyucS+ffsCxz0ej7j44ouFLMvi+PHjgePr1q0TAMTll18uCgoKAsdPnDghmjVrJgCIjIyMoNiTk5NDxlvT/q/K8OHDBQBx4MCBSq8zZcoUIURpfrZp00Y4nU6xdu3aSs/ZtWtXYTabRVFRUbViICIi4/BONxER1Xs33ngjXnnlFQgh8Morr+C6665D06ZN0a5dOzz00EM4cOBAufY7d+7EN998g4yMDFx33XXlXrv44osxbtw47N69OzDNfMuWLTh06BBuuOEG9O3bN9BWkiRMnz4diqLo/h4WLFgAn8+H2bNnB+7c+z311FNISEjA0qVLg97Xv39/3HHHHeWOjRkzBkDp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wgsviJSUFGGxWETbtm3F9OnTxdatWwUA8eijj5Zrn5+fL8aNGyeaN28uFEUp19/h9n9lHnjgAaEoijhx4kS545VdR9M0MWHCBAFA3HrrreX2Nk9PTxeJiYnljhERUf0lCVGLK6UQERE1QOnp6di4cWOtLi5Gdeett97CuHHjAnf3jbB//3506tQJU6dOxR//+Mewz3PgwAGkpaVh6tSpeO6552oxQiIiihQ+001EREQNwqlTp4L+MHL8+HG8+OKLUBQFN9xwg0GRAWlpabj33nvx2muvIT8/P+zzPP/882jevDkef/zxWoyOiIgiic90ExERUYMwc+ZMfPbZZ+jXrx8SExNx9OhRfPrpp8jPz8fUqVPRqlUrQ+ObNm1aYM93/4rmNeH1epGWlobRo0cHrdhPRET1F6eXExERnQenl0eH1atX49VXX8UPP/yA7Oxs2Gw2dOnSBQ8++CBGjhxpdHhERHSBYtFNREREREREFCF8ppuIiIiIiIgoQlh0ExEREREREUUIi24iIiIiIiKiCGHRTURERERERBQhLLqJiIiIiIiIIoRFNxEREREREVGEsOgmIiIiIiIiihAW3UREREREREQRwqKbiIiIiIiIKEL+HwcJp6ZkQe+TAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "(
,\n", - " )" - ] - }, - "execution_count": 140, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "def plot_convergence_vs_k_normalized(\n", - " conv_grid,\n", - " k_values,\n", - " hidden_dims,\n", - " p: int = 100, # Vocabulary size\n", - " batch_size: int = 1000, # Batch size used in training\n", - " save_path=None,\n", - " show=True,\n", - " log_x=False,\n", - " log_y=True,\n", - " reduction_threshold=0.9,\n", - "):\n", - " \"\"\"\n", - " Plot fraction of data space seen to convergence vs sequence length k.\n", - "\n", - " Normalizes steps to convergence by the data space size (p^k) to show\n", - " what fraction of the data space needs to be seen for convergence.\n", - "\n", - " Args:\n", - " conv_grid: 2D array (len(hidden_dims), len(k_values)) with convergence steps\n", - " k_values: List of k (sequence length) values\n", - " hidden_dims: List of hidden dimension values\n", - " p: Vocabulary size (data space per token)\n", - " batch_size: Batch size used during training\n", - " save_path: Where to save the plot\n", - " show: Whether to display the plot\n", - " log_x: Whether to use log scale for x-axis\n", - " log_y: Whether to use log scale for y-axis\n", - " reduction_threshold: Threshold used for convergence\n", - " \"\"\"\n", - " fig, ax = plt.subplots(figsize=(10, 6))\n", - "\n", - " # Use a nice sequential colormap for different widths\n", - " colors = plt.cm.plasma(np.linspace(0.15, 0.95, len(hidden_dims)))\n", - "\n", - " for i, (h, color) in enumerate(zip(hidden_dims, colors)):\n", - " # Extract convergence steps for this hidden dim across all k values\n", - " steps_for_h = conv_grid[i, :]\n", - "\n", - " # Only plot converged points\n", - " converged_mask = ~np.isnan(steps_for_h)\n", - " k_converged = np.array(k_values)[converged_mask]\n", - " steps_converged = steps_for_h[converged_mask]\n", - "\n", - " if len(steps_converged) > 0:\n", - " # Normalize by data space size for each k\n", - " # samples_seen = steps * batch_size\n", - " # fraction = samples_seen / p^k\n", - " fractions = []\n", - " for k_val, steps_val in zip(k_converged, steps_converged):\n", - " data_space_size = p**k_val\n", - " samples_seen = steps_val * batch_size\n", - " fraction = samples_seen / data_space_size\n", - " fractions.append(fraction)\n", - "\n", - " # Plot with line and markers\n", - " ax.plot(\n", - " k_converged,\n", - " fractions,\n", - " color=color,\n", - " marker=\"o\",\n", - " markersize=7,\n", - " linewidth=2.5,\n", - " label=f\"h={h:,}\",\n", - " markeredgewidth=0.5,\n", - " markeredgecolor=\"white\",\n", - " )\n", - "\n", - " # Formatting\n", - " ax.set_xlabel(\"Sequence Length (k)\", fontsize=14)\n", - " ax.set_ylabel(\"Data points seen / $p^k$ to convergence\", fontsize=14)\n", - " ax.set_title(\n", - " f\"Data Efficiency to {reduction_threshold*100}% Convergence\",\n", - " fontsize=16,\n", - " )\n", - "\n", - " if log_y:\n", - " ax.set_yscale(\"log\")\n", - " if log_x:\n", - " ax.set_xscale(\"log\")\n", - " else:\n", - " # Make k values discrete on x-axis\n", - " ax.set_xticks(k_values)\n", - " ax.set_xticklabels(k_values)\n", - "\n", - " ax.grid(True, alpha=0.3, which=\"both\", linestyle=\"--\", linewidth=0.5)\n", - " ax.legend(fontsize=11, framealpha=0.9, loc=\"best\")\n", - "\n", - " plt.tight_layout()\n", - "\n", - " if save_path:\n", - " plt.savefig(save_path, dpi=150, bbox_inches=\"tight\")\n", - " print(f\"Saved to {save_path}\")\n", - "\n", - " if show:\n", - " plt.show()\n", - " else:\n", - " plt.close()\n", - "\n", - " return fig, ax\n", - "\n", - "\n", - "reduction_threshold = 0.9\n", - "conv_grid, conv_std = load_sweep_results_grid_convergence(\n", - " sweep_dir,\n", - " k_values,\n", - " hidden_dims,\n", - " reduction_threshold=reduction_threshold,\n", - ")\n", - "\n", - "\n", - "plot_convergence_vs_k_normalized(\n", - " conv_grid=conv_grid,\n", - " k_values=k_values,\n", - " hidden_dims=hidden_dims,\n", - " p=10, # Your vocabulary size\n", - " batch_size=1000, # Your batch size\n", - " save_path=None,\n", - " show=True,\n", - " log_x=False,\n", - " log_y=True,\n", - " reduction_threshold=reduction_threshold,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "e0f758af", - "metadata": {}, - "source": [ - "### Curve plot: Loss vs Training Steps for different sequence lengths, fixed hidden dimension\n", - "- x-axis: # training steps\n", - "- y-axis: training loss\n", - "- different curves for different sequence lengths" - ] - }, - { - "cell_type": "code", - "execution_count": 141, - "id": "7e809783", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAJOCAYAAACqS2TfAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzsnXeY3NT197+a3md2XdZed4Mppplm03szgUAogRCIgYRAAiQEQgL8QoAU4IVAaA4txEAIhBIMoYVuO2CHYsBgcMHGxt3rMm2nj3TfP5bRTpNG0kg70vh8nsewo3PuuWfOfveM7qhxjDEGgiAIgiAIgiAIgiB0x9bqBAiCIAiCIAiCIAiiXaFFN0EQBEEQBEEQBEEYBC26CYIgCIIgCIIgCMIgaNFNEARBEARBEARBEAZBi26CIAiCIAiCIAiCMAhadBMEQRAEQRAEQRCEQdCimyAIgiAIgiAIgiAMghbdBEEQBEEQBEEQBGEQtOgmCIIgCIIgCIIgCIOgRTdBEISFGDt2LDiOw8MPP9zqVNqGlStXguM41f/OPfdcQ/I599xzdf0dz5o1CxzH4bDDDtMlnpHE43H84Q9/wJQpUxAOh+F0OtHV1YXddtsN55xzDu6//36kUqlWp9kSfvGLX8Bms+HDDz+s2H7YYYeB4zjMmjWrNYkB+Mc//oEf/OAH2GOPPTB06FA4nU6Ew2FMnjwZN910E3p7e2XHC4KARx55BEcddRSGDBkCt9uN4cOH44gjjsBf/vKXGv+jjjoKoVAIGzZsMOotEQRB6Iqj1QkQBEEQRCsJBAKYNm1azfZly5bh3Xffhd/vx2mnnVZjP+iggwYivW2GJUuW4KijjsKaNWvgdrsxZcoUdHd3I5vNYtGiRXjsscfw2GOP4cADD8Suu+4qjrv++utxww034LrrrsP111/fujdgIIsWLcI999yDU089Ffvss0+r06nh3nvvxdy5c7Hzzjtjr732QmdnJzZu3Ih58+bhgw8+wN/+9jfMnj0b3d3dNWPj8Ti+/e1vY86cOQiFQjjggAMQiUSwdu1afPzxx0gkEvjpT39aMebmm2/Gvvvui6uvvhozZswYqLdJEAShGVp0EwRBENs0gwcPrntU+eGHH8a7774raTeKm266CVdddRWGDx+uS7zJkydj0aJF8Pl8usQzirPPPhtr1qzB4YcfjieffBJDhgypsK9atQqPPPIIAoFAizJsHVdeeSWKxaJpv1S47bbbMGHCBHR2dlZs37JlC04++WS88847uOKKK/DEE09U2BljOPnkkzFnzhxceOGF+NOf/lTx+83n8/j0009r5ttnn31wwgkn4JFHHsFll12GPfbYw5g3RhAEoRN0ejlBEARBmIjhw4djp512Qjgc1iWez+fDTjvthNGjR+sSzwiWL18unjZ933331Sy4AWD06NG49tprMXbs2AHOrrUsXboUL7/8Mvbbbz/ssssurU6nLlOmTKlZcAPAoEGDcOONNwIAXnvttRr7jBkzMGvWLBx77LG47777ar5Qcblckkf2f/jDH4IxhjvvvFOHd0AQBGEstOgmCIJoc9asWYNLL70UEyZMgMfjQTgcxoEHHoj7778fPM/XHfP000/jqKOOwqBBg+B0OjFo0CBMnDgRF1xwQc2Rp3g8jt/85jfYbbfd4Pf74Xa70d3djQMPPBC//e1vUSgUGua4ePFicByHjo4OZLNZSb999tkHHMfh+eefF7etX78eP//5z7HDDjvA4/HA5/Nh1KhROPLII/GnP/1JYZXUUX7d9cKFC3HGGWdg+PDhsNvt4tHIQqGAxx57DN///vex0047IRQKwev1Yscdd8TPfvYzrFu3rmHscq6//npwHIfrr78emzZtwsUXX4xRo0bB5XJh1KhRuPTSSxGLxWriSV3TXbqWfezYsWCM4YEHHsDee+8Nv9+PcDiMY445BvPmzZOswcKFC3Hqqadi8ODB8Pl82G233XDHHXdAEATx3gMrV65UVM+NGzeKPw8dOlTRGADgOA433HADAOCGG26Qvea+WCzir3/9Kw477DB0dnbC7XZj3Lhx+MlPfoLVq1fXxC6vWzqdxjXXXIPtt98eHo8H3d3d+OEPf4i1a9fWzWv+/Pk444wzMHLkSLhcLoRCIYwfPx6nnnpqhXaVMH36dDDGFN1D4JNPPsEpp5yCwYMHw+12Y+LEibjtttvAGFM1p544HH0nVbrd7hrbXXfdBaDvSL5avvWtb2Hw4MF44oknsHXr1uaSJAiCMBg6vZwgCKKN+eCDD3Dcccdh69atGD16NE4++WTE43HMmjULc+fOxcyZM/Hvf/8bLpdLHPO73/0O1113HRwOBw444ACMGDEC8Xgcq1atwkMPPYRddtkFu+++OwAgnU7joIMOwsKFCzFkyBAceeSR8Pv92LBhAxYvXoy5c+fi8ssvRyQSkc1zp512wv7774958+bhueeew5lnnlnj89lnn2H+/Pno6urCt771LQDAhg0bsM8++2DdunUYPXo0jjvuOHg8Hqxbtw6ffPIJ5s+fj1/+8pf6FbSKuXPn4qKLLsLw4cNxyCGHIJPJIBgMAuhbSJ5zzjkIh8PYeeedsfvuuyOVSuGTTz7B3XffjX/+85+YO3cutt9+e1Vzrl69GnvttRcKhQIOPPBAZLNZvPvuu7jnnnvw3nvv4d1334XT6VQV87zzzsPjjz+Ogw8+GCeccAI++eQTvP7665gzZw5mz56NKVOmVPjPnj0bU6dORSaTwXbbbYejjz4aW7Zswa9//Wv873//UzU3gIqj8HfeeSeuu+46ReOmTZuGTz75BAsWLMAee+yBSZMmibbya+6TySS+/e1vY9asWQgEAth7770xZMgQfPbZZ7jvvvvw9NNP4/XXX8eee+5ZM0c+n8eRRx6JTz/9FIcddhj22msvvPPOO/jb3/6Gl19+GXPmzMGECRNE/zfffBNTp05FoVDAHnvsgf333x88z2Pt2rV46aWXwPM8TjrpJMW1ee655wD03TxMjldffRW33367+PtYv3493nnnHfzyl7/E6tWrcccddyieUy+SyaT4JdS3v/3tCtvGjRuxYMEC2O12HHDAAfjqq6/w1FNPYeXKlQgEApgyZQpOOumkit5UjtPpxGGHHYZnnnkGr776Kr73ve8Z/XYIgiC0wwiCIAjLMGbMGAaAzZgxo6FvNpsV/S+66CKWz+dF2/Lly9nYsWMZAHbNNddUjPF6vSwQCLDFixfXxFy5ciVbtGiR+PqRRx5hANjUqVMr4jPGGM/zbNasWSyXyyl6bw8++CADwI499ti69l/84hcMALviiivEbTfccAMDwH784x8zQRAq/PP5PHvjjTcUzV2PGTNmMABszJgxNbZp06YxAAwAu+qqqxjP8zU+iUSCPf/88zXvP5/Ps6uvvpoBYMcff7xk7Orf8XXXXSfOee6557JsNivaVq1axUaMGMEAsMcff7xi3Ntvv80AsEMPPbRi+4oVK8R4Y8aMYUuWLBFtxWKRnX/++QwAO+aYYyrGpdNpca4rrrii4r1//vnnrKurS4y7YsWKmvcnxUknnSSOmzhxIvvlL3/JnnzySbZs2TLZcaW6XHfddZI+Z511FgPATjjhBLZx48YK25///GcGgE2YMIEVi0Vxe6luANj222/Pvv76a9GWyWTYqaeeygCw/fbbryLe4YcfzgCwxx57rCaPWCzG5s2bJ/t+ylm2bBkDwIYMGSLpc+ihh4p53nfffRW2N998k3Ecx+x2O1u9enWFrfz9qfk3bdo0yVxeffVVNm3aNHbOOeewY445hgWDQQaAHXfccSwWi1X4vvbaawwAGzp0KLvrrruY0+msmWv8+PFswYIFkvPdfvvtDAD74Q9/KFNFgiCI1kOLboIgCAuhZtH997//nQFg3d3dFQu0Es888wwDwILBIMtkMowxxnp6ehgAtvvuuyvK55ZbbmEA2O23367qfdQjkUgwn8/HbDYbW7NmTYUtn8+zIUOGMABs4cKF4vaf/vSnDAB79tlnm56/GiWL7h122KFioaaG7u5uZrPZWCKRqBtbatE9cuRIlkqlauLdfPPNDAA7//zzK7YrWXT/+9//rom3fv16BoC53e6KL1QeffRRsS7VX7Qwxtg999yjadGdSCTY2WefzTiOq1l8jRw5kl199dVs69atNeMaLbq/+OILxnEc6+7urql1ieOPP54BYC+88IK4rXxR+txzz9WM2bhxI/P5fAwAe/fdd8XtEydOZADq5qqWp59+mgFghxxyiKRPadF9yimn1LUfd9xxDAB79NFHK7YvWrSITZs2TfW/Bx98UDKX0hcY5f/OOusstmHDhhrfJ554ggFgDoeDAWCnnXYa++yzz1gymWTz5s1jU6ZMYQDY8OHD2ebNm+vO9+qrrzIAbM8995TMiSAIwgzQNd0EQRBtSum5vWeeeWbd6ylPOeUUdHR0IJlMYv78+QCAIUOGYOzYsfj0009xxRVX4IsvvpCdY9999wUA3HLLLXj00UeburYyGAzitNNOgyAIePTRRytsL730EjZt2oTJkydX3Exq8uTJAICrrroKzz77bMPnAevNySefDLvdLuuzYMEC3H777bj00ktx/vnn49xzz8W5556LYrEIQRCwbNkyVXMeeeSRde9EvvPOOwOA5HXGUjgcDhx33HE124cNG4aOjg7kcjls2bJF3D579mwAwOmnn173NPbvf//7quYvEQwG8fe//x3Lly/H7bffjtNOOw3jx48H0HdfgptuugmTJk1SfJ14iZdffhmMMUydOlU89b+a0vXuc+fOrbFFIpGaU6OBvmvPS3Urf0Z2SZPf//738c4776BYLKrKt5zSte6DBg1q6HviiSfW3S6li5122gkPP/yw6n8/+tGPJHO47LLLwBhDPp/HsmXLcNttt+GVV17BxIkTMWfOnApf9s115sViEfvvvz+efvpp7LrrrggEAthvv/3w+uuvo6urC+vXr6/7rO7yupTfE4AgCMKM0KKbIAiiTSntZI8bN66uneM40Va+Q/7oo49i6NChuP3227HLLrtg0KBBOP744/HnP/8Zmzdvrohx2GGH4de//jV6enowbdo0DB48GDvuuCPOP/98PP/88xAEQVXO559/PgDU3ESs9Cze8847r2L7Oeecg+9///tYunQpTj31VEQiEey+++746U9/irfeekvV3FqQu5N2KpXCKaecgkmTJuGKK67APffcgxkzZuCRRx7BI488gp6eHgBAIpFQNafUXchDoRAAyN6Irh7Dhw+XvAa8Xsw1a9YAkH7vkUikqTuvjxs3Dr/4xS/w9NNPY/ny5Vi5ciWuvfZauN1urFq1ChdffLGqeF999RUA4KGHHqq40Vr5v1/96lcAgE2bNtWML90UTipXoL8mQN8j3/baay+88sorOPjggxEKhXDQQQfhN7/5DRYtWqQq93g8DqD/9yCH3rpoBqfTie222w6XX345XnnlFUSjUZx99tnIZDKiT/kXIBdeeGFNjGAwiLPPPhsA8MYbb9Sdp/TeotGonukTBEHoDt1IjSAIgqjg4IMPxsqVK/HSSy9h9uzZmDt3Ll599VW88soruO666zBz5kwceeSRov/NN9+Miy66CC+88ALeeecdvPvuu5gxYwZmzJiBfffdF2+//Tb8fr+iuQ855BBst912WLp0KebOnYsDDjgAPT09ePnll+HxeGpusGaz2fDYY4/hmmuuwUsvvYR3330X7777Lu69917ce++9OPHEEzFz5syGR6O14vV6JW1XX301Zs6ciZ122gk333wz9t13XwwePFi8MdQBBxyAefPmqb6ztM2m7/flWuNJLUQb2dQyZswY/O53v0NHRwcuv/xyvPbaa8hkMrK1L6f0xc+kSZMaPs+5+oZxSin/HQ4bNgwffvghZs+ejTfeeAPvvvuueIO7G2+8ETfddBN+/etfK4pbugGhki9m1P4eFy9ejJtvvlnVGKDvBnVyR7urmTJlCiZOnIjP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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "(
,\n", - " )" - ] - }, - "execution_count": 141, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "from pathlib import Path\n", - "\n", - "\n", - "def plot_loss_curves_fixed_width(\n", - " sweep_dir: str,\n", - " k_values: list,\n", - " hidden_dim: int = 77760,\n", - " seed: int = 0,\n", - " save_path: str = None,\n", - " show: bool = True,\n", - " log_x: bool = True,\n", - " log_y: bool = True,\n", - "):\n", - " \"\"\"\n", - " Plot loss curves for different sequence lengths k with fixed hidden dimension.\n", - "\n", - " Args:\n", - " sweep_dir: Path to sweep directory\n", - " k_values: List of k values to plot (e.g., [2, 3, 4, 5, 6, 7, 8])\n", - " hidden_dim: Fixed hidden dimension (default: 77760)\n", - " seed: Which seed to plot (default: 0)\n", - " save_path: Where to save the plot\n", - " show: Whether to display the plot\n", - " log_x: Whether to use log scale for x-axis\n", - " log_y: Whether to use log scale for y-axis\n", - " \"\"\"\n", - " sweep_path = Path(sweep_dir)\n", - "\n", - " # Create figure\n", - " fig, ax = plt.subplots(figsize=(10, 6))\n", - "\n", - " # Use a nice sequential colormap (plasma, magma, cividis, YlOrRd, etc.)\n", - " colors = plt.cm.plasma(\n", - " np.linspace(0.15, 0.95, len(k_values))\n", - " ) # Avoid too light/dark\n", - "\n", - " for k, color in zip(k_values, colors):\n", - " run_dir = sweep_path / f\"k{k}_h{hidden_dim}\" / f\"seed_{seed}\"\n", - " loss_file = run_dir / \"train_loss_history.npy\"\n", - "\n", - " if not loss_file.exists():\n", - " print(f\"Warning: No data found for k={k}, h={hidden_dim}\")\n", - " continue\n", - "\n", - " # Load loss history\n", - " loss_history = np.load(loss_file)\n", - " steps = np.arange(len(loss_history))\n", - "\n", - " # Plot\n", - " ax.plot(steps, loss_history, color=color, lw=2.5, label=f\"k={k}\")\n", - "\n", - " # Formatting\n", - " ax.set_xlabel(\"Training Steps\", fontsize=14)\n", - " ax.set_ylabel(\"Training Loss\", fontsize=14)\n", - " ax.set_title(f\"Loss vs Training Steps (h={hidden_dim:,})\", fontsize=16)\n", - " if log_x:\n", - " ax.set_xscale(\"log\")\n", - " if log_y:\n", - " ax.set_yscale(\"log\")\n", - " ax.grid(True, alpha=0.3, which=\"both\", linestyle=\"--\", linewidth=0.5)\n", - " ax.legend(fontsize=11, framealpha=0.9, loc=\"best\")\n", - "\n", - " plt.tight_layout()\n", - "\n", - " if save_path:\n", - " plt.savefig(save_path, dpi=150, bbox_inches=\"tight\")\n", - " print(f\"Saved to {save_path}\")\n", - "\n", - " if show:\n", - " plt.show()\n", - " else:\n", - " plt.close()\n", - "\n", - " return fig, ax\n", - "\n", - "\n", - "plot_loss_curves_fixed_width(\n", - " sweep_dir=sweep_dir,\n", - " k_values=[2, 3, 4, 5, 6, 7, 8],\n", - " hidden_dim=6**2,\n", - " seed=0,\n", - " save_path=None,\n", - " show=True,\n", - " log_x=True,\n", - " log_y=True,\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 102, - "id": "e5cd8b97", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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C+effz522GEHeDwetLW1YejQoTjnnHNKtKuGCRMmgDGmag2BOXPm4Oyzz0afPn3g9XoxfPhw/O1vf6t5i7dRTJ48GQ8++CB+9rOf4eSTT67p/8ADDwDIX8k3igcffBAAcPXVV1dMuM3g9ddfx/LlyzFmzJiqE+5aXHTRRRBFEY888ogJoyMIYnuBrnQTBEE0kC+//BInnngitm7disGDB+PMM89ENBrF5MmTMX36dEyaNAmvvfYaPB6P1Ob222/H+PHj4XK5cOihh2LQoEGIRqNYuXIlnnjiCey1117Yd999AeRvJR0zZgzmzZuHvn374phjjkEgEMD69euxYMECTJ8+Hddeey3C4bDiOPfYYw8ccsghmDFjBl555RX86Ec/qvD55ptvMGvWLHR0dOCUU04BAKxfvx4HHngg1q5di8GDB+PEE0+Ez+fD2rVrMWfOHMyaNQu/+c1vjEtoGdOnT8ell16KAQMG4PDDD0cqlUJrayuA/ETypz/9KUKhEPbcc0/su+++SCQSmDNnDh588EE8//zzmD59OoYNG6apz1WrVuGAAw5ALpfDYYcdhnQ6jWnTpuGhhx7C559/jmnTpmmebFx88cV47rnn8IMf/ACnnnoq5syZg/fffx9Tp07FlClTMHr06BL/KVOm4KSTTkIqlcIuu+yC4447Dlu2bMENN9yAzz77TFPfQP4qdoH7778f48ePV9Vu7NixmDNnDubOnYsRI0Zgv/32k2zFz9zH43GcfvrpmDx5MoLBIEaOHIm+ffvim2++waOPPoqXXnoJ77//Pvbff/+KPrLZLI455hh8/fXXOPLII3HAAQfg008/xZNPPom33noLU6dOLXke98MPP8RJJ52EXC6HESNG4JBDDoEgCFizZg3efPNNCIKAM844Q3VuCrdnH3vssYp+7777Lu69917p81i3bh0+/fRT/OY3v8GqVatw3333qe5TD11dXbjkkkvQ0dGhqq8NGzZg7ty5cDqdOPTQQ7F06VK8+OKLWL58OYLBIEaPHo0zzjijpDbVQhAEfPjhhwCAww8/HOvXr8fzzz+PhQsXwuv1Yv/998c555yj+IjChg0bcPvtt2PNmjXw+XzYY489cMopp5RotJh3331X6o/nebz66quYNm0aUqkUhgwZgjPOOEPxTpPjjjsOQP5z/utf/6r6vRIEQZTACIIgCMPYaaedGAA2ceLEmr7pdFryv/TSS1k2m5VsS5YsYUOGDGEA2M0331zSpqWlhQWDQbZgwYKKmMuXL2fz58+XXj/99NMMADvppJNK4jPGmCAIbPLkySyTyah6b48//jgDwE444YSq9muuuYYBYNddd5107LbbbmMA2P/93/8xURRL/LPZLPvggw9U9V2NiRMnMgBsp512qrCNHTuWAWAA2I033sgEQajwicVi7NVXX614/9lslt10000MADv55JNlY5d/xuPHj5f6vOiii1g6nZZsK1euZIMGDWIA2HPPPVfS7uOPP2YA2BFHHFFyfNmyZVK8nXbaiS1cuFCy8TzPLrnkEgaAHX/88SXtksmk1Nd1111X8t6//fZb1tHRIcVdtmxZxfuT44wzzpDaDR8+nP3mN79hL7zwAlu8eLFiu0Jexo8fL+tzwQUXMADs1FNPZRs2bCix/f3vf2cA2K677sp4npeOF/IGgA0bNoytWLFCsqVSKXbOOecwAOzggw8uiXfUUUcxAOzZZ5+tGEdnZyebMWOG4vspZvHixQwA69u3r6zPEUccIY3z0UcfLbF9+OGHjOM45nQ62apVq0psxe9Py39jx46tOo5f/vKXDACbNGmSdKyg5T/+8Y8V/u+99x4DwPr168ceeOAB5na7K/oaOnQomzt3rup8LVq0SGr7zDPPsGAwWBGzb9++7MMPP6xoq5QPl8vFrrnmGpbL5SraHXrooQwAu/XWW9n+++9f0dbhcLBrr722oj4VEEWRhcNhBqDiMyIIglALTboJgiAMRMuk+1//+hcDwAYOHFgyQSvw3//+lwFgra2tLJVKMcYY27hxIwPA9t13X1XjueuuuxgAdu+992p6H9WIxWLM7/czh8PBVq9eXWLLZrOsb9++DACbN2+edPzyyy9nANjLL79cd//lqJl077bbbiUTNS0MHDiQORwOFovFqsaWm3TvsMMOLJFIVMT7y1/+wgCwSy65pOS4mkn3a6+9VhFv3bp1DADzer0lP6g888wzUl7Kf2hhjLGHHnpI16Q7FouxCy+8kHEcVzFx2WGHHdhNN93Etm7dWtGu1qT7u+++YxzHsYEDB1bkusDJJ5/MALDXX39dOlY8CXvllVcq2mzYsIH5/X4GgE2bNk06Pnz4cAag6li18tJLLzEA7PDDD5f1KUy6zz777Kr2E088UZqEFjN//nw2duxYzf89/vjjFX28++67DAD70Y9+VHJcadL9n//8R5rQAmDnnnsu++abb1g8HmczZsxgo0ePZgDYgAED2ObNm9Wki82YMUP6zNxuNzviiCPYl19+yeLxOJszZ470OQeDQbZo0aKStrNnz2ZXX301mzJlClu3bh1LJBLs66+/Ztdcc430g8C4ceMq+tx9992l/nr37s2effZZtmnTJrZq1Sp29913M4/HwwCwO+64Q3bchxxyCAPAXn31VVXvkyAIohy6vZwgCKJBFPbt/dGPflR15dyzzz4b7e3tiEQimDVrFg477DD07dsXQ4YMwddff43rrrsOP//5zzF8+HDZPg466CAAwF133YXevXvj1FNPRa9evXSNt7W1Feeeey6eeeYZPPPMM7jpppsk25tvvolNmzZh1KhRJYtJjRo1Cg8//DBuvPFGMMZw/PHH9+jq1meeeSacTqeiz9y5c/Hhhx9i2bJlSCQSEEURQP4ZY1EUsXjx4qq3NctxzDHHVF2JfM899wQA2eeM5XC5XFW3SOrfv7+kjy1btqB///4A8reWA8B5551X9Tb2n/zkJ7jyyis1jQHIf/7/+te/cPvtt+OVV17B9OnTMXv2bCxduhSrV6/GnXfeiX//+9+YMmWKpgWn3nrrLTDGcNJJJ0m3/pdz5JFH4q233sL06dNx6qmnltjC4TBOP/30ijb9+vXDiSeeiJdffhmTJ0+WnucdNWoUvvvuO/zkJz/BzTffjIMPPhgul77TocKz7r17967pe9ppp1U9vueee+Kdd96p0IWeVbqrEY1G8fOf/xx9+/aVnqdWA9v2nDnP8zjkkEPw0ksvSbaDDz4Y77//PnbddVesW7cODz/8sKpF9FjRs+uDBg3Cu+++K9W+ESNG4LXXXsN+++2HefPm4S9/+QueeOIJyX///fev+B7us88+uPfeezFmzBicc845ePzxx3H55ZeXPMZQ6DOXy+G5557D8ccfL9l+85vfQBRF3HDDDbjzzjvxq1/9CoFAoGLchc+3eG0DgiAILdBCagRBEA2icJK98847V7VzHCfZik/In3nmGfTr1w/33nsv9tprL/Tu3Rsnn3wy/v73v2Pz5s0lMY488kjccMMN2LhxI8aOHYs+ffpg9913xyWXXIJXX31VmmCq5ZJLLgGAisnAxIkTAeSfPS7mpz/9KX7yk59g0aJFOOeccxAO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+Pe//y35FXP//fdX/SHs66+/xmmnnSbtSV++x/qwYcNw4YUXIpvNYty4cdKt4kC+nhbu/jn33HMxcODAivjffvstotEodtttt4o7jgiCINRCt5cTBEGYwB//+Ec8+uijsvaHH34YBxxwAP773//ixBNPxCOPPIK33noLBx98MOLxOD766COk02mccMIJGD9+vNQuEolg3Lhx0gq9hYWivv/+e3z11VfgOA5333239Iz0lClTcP/996NPnz7Yf//90a9fP8TjcXz22WfYuHEjBg0aJC1SpYWLL74Y7777Lu6//34A3Ve/y3n55ZcxduxYDBw4EPvtt5+02va0adMQjUax9957Y9y4cZr7N4Lx48fj3HPPxS233IIXX3wRe+21FzZu3IhPPvkEP/jBDzBw4EBMnz69IWOrB7/fj2effRannHIK7rrrLrz88ss48MADsXXrVkyePBlnnHEGPv/8c6xcuVK6Cl0LxhgmT56MyZMnIxAIYP/998egQYOQzWaxbNky6W6F/fbbD/fdd19J2xNOOAGBQACvvPIKxowZg1133RVOpxOHHXaYdHfExIkT0dnZibfffhu77747RowYgZ133lm6+jp37lxks1nMnz+/4hbfQw45BKIoYvfdd8fRRx8Nv9+PTz/9FGvXrkW/fv3wzDPPlPj/6U9/wvXXX4899tgDe+65J1paWrB27Vp8+umn4HkeP/vZz6Qr2Go488wz8cADD+D999/HsGHDVLezA3vssQcef/xxXHLJJTjttNNw4IEHYsiQIZg3bx4WLFgAp9OJRx55BPvss09Ju+IfesoXAezTpw9eeOEFnH766bj00kvx4IMPYs8998SSJUvw1VdfAQBuueUWnHzyySXtxo8fj+uuu06qew6HQ2ojiiIGDx6M119/vepOEA8++CC+/fZbvPPOOxg2bBgOPvhgpNNpfPbZZ+jq6sKIESNk63Xhinzhqj9BEIQuzN+VjCAIYvuhsE93rf8+/vhjqc3KlSvZFVdcwYYOHco8Hg9rbW1lhxxyCHvkkUdYLpcriR+Lxdh9993HzjrrLLbrrruyYDDIAoEA22233djPfvYzNnPmzBL/r776it14441szJgxbNCgQczj8bC+ffuykSNHsjvuuEP1/rrlpNNp1qtXLwaAcRzHli5dWtVv6tSp7Oqrr2ajRo1i/fv3Zx6Ph/Xv358d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YerUqQCAAQMGOHrCDXDSXXJs3rwZF110EZqbm+FyufDss8/m+axZswYjR45ERUUFzjjjDLz11ltp24EDBzB06ND030OHDsX+/futSJ1YRLEaIeWNkfrYtm0bkskkhg8fbnLWxEqM0EhnZyfGjx+PYcOG4ZZbbkFDQ4NF2RMrMEIjN998M+677z6LMiZWY4RGXC4Xpk2bhsmTJ+OJJ56wKHNiBcXq44MPPkAoFMJFF12E008/Hffee6+F2euDk+4SIxKJYPz48VizZk1B+1NPPYWbbroJK1euxDvvvIPx48dj1qxZOHjwoMWZErugRogcRunj8OHDWLhwIX76059akTaxECM0UldXhx07dmD37t148skn0d7eblX6xAKK1cgf/vAHnHjiiTjxxBOtTJtYiBHjyOuvv45t27bhueeew7333ou//e1vVqVPTKZYfSQSCWzZsgU//vGPsXXrVrzyyit45ZVXrLwE7QikZAEg/P73v896bcqUKcKyZcvSfyeTSaG5uVm47777BEEQhDfeeEO49NJL0/YbbrhBeOKJJyzJl1iPHo2IbNiwQbjiiiusSJPYhF59xGIxYerUqcIvf/lLq1IlNlHMGCJy3XXXCevWrTMzTWIjejSyYsUKYdiwYcKIESOEgQMHCjU1NcJdd91lZdrEQowYR26++WbhF7/4hYlZErvQo48333xTmDlzZtp+//33C/fff78l+eqFT7rLiHg8jm3btmHGjBnp19xuN2bMmIGtW7cCAKZMmYJ3330X+/fvR09PD1566SXMmjXLrpSJxajRCDl2UaMPQRDQ2tqK888/HwsWLLArVWITajTS3t6O7u5uAEBXVxc2b96Mk046yZZ8ifWo0ch9992Hffv2Yc+ePXjggQdw7bXX4o477rArZWIxajQSiUTS40hPTw/+9Kc/4Qtf+IIt+RJrUaOPyZMn4+DBg+jo6EAqlcLmzZtxyimn2JWyKpy945xo4tNPP0UymURjY2PW642NjXj//fcBAF6vFw8++CDOO+88pFIpfPvb3+aJsscQajQCADNmzMCOHTsQiUQwbNgwrFu3DmeeeabV6RKLUaOPN954A0899RTGjRuX3oP1+OOP49RTT7U6XWIDajSyd+9eLFmyJH2A2je+8Q3q4xhC7X2GHLuo0Uh7ezsuu+wyAEcqIlx77bWYPHmy5bkS61E7n7n3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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "====================================================================================================\n", - "UPWARD SPIKE METRICS (h=46656)\n", - "====================================================================================================\n", - "\n", - "Metric Definitions:\n", - " frac_upward : Fraction of steps where loss INCREASED\n", - " upward_p95 : 95th percentile of upward jumps (instability)\n", - " upward_p999 : 99.9th percentile of upward jumps\n", - " upward_max : Worst upward spike\n", - " late_upward_p95 : 95th percentile of upward jumps in last 20%\n", - " spike_to_progress_ratio : Mean upward / mean downward (higher = more unstable)\n", - " downward_p95 : 95th percentile of downward jumps (learning speed)\n", - "\n", - "----------------------------------------------------------------------------------------------------\n", - " k n_steps frac_upward upward_p95 upward_p999 upward_max late_upward_p95 spike_to_progress_ratio downward_p95\n", - " 2 14 0.1538 0.8295 0.8610 0.8617 0.0000 1.7123 0.9516\n", - " 3 27 0.2308 0.9435 1.0187 1.0202 0.6624 1.6713 0.7162\n", - " 4 30 0.1379 0.6896 0.7532 0.7545 0.0000 2.1959 0.6382\n", - " 5 69 0.1471 0.2967 0.3654 0.3668 0.1959 1.8415 0.3025\n", - " 6 14512 0.4615 0.3540 0.7633 0.9866 0.4424 1.1389 0.3230\n", - " 7 1000001 0.4743 0.2740 0.5846 0.8646 0.2769 1.0960 0.2765\n", - " 8 1000001 0.4212 0.0144 0.0556 0.1694 0.0218 1.0074 0.0143\n", - "====================================================================================================\n", - "\n" - ] - } - ], - "source": [ - "def compute_spikiness_metrics_upward_only(loss_history):\n", - " \"\"\"\n", - " Compute spikiness focusing ONLY on upward jumps (loss increases).\n", - "\n", - " This separates:\n", - " - Fast learning (large downward jumps) = STABLE\n", - " - Instability (upward jumps) = UNSTABLE/SPIKY\n", - " \"\"\"\n", - " log_loss = np.log10(loss_history + 1e-10)\n", - " log_changes = np.diff(log_loss) # Can be positive or negative\n", - "\n", - " # Separate upward (bad) from downward (good)\n", - " upward_spikes = log_changes[log_changes > 0] # Loss INCREASES\n", - " downward_drops = log_changes[log_changes < 0] # Loss DECREASES\n", - "\n", - " metrics = {}\n", - "\n", - " # Count how many steps are upward vs downward\n", - " metrics[\"n_upward\"] = len(upward_spikes)\n", - " metrics[\"n_downward\"] = len(downward_drops)\n", - " metrics[\"frac_upward\"] = (\n", - " len(upward_spikes) / len(log_changes) if len(log_changes) > 0 else 0\n", - " )\n", - "\n", - " if len(upward_spikes) > 0:\n", - " # Metrics based ONLY on upward spikes (instability)\n", - " metrics[\"upward_p95\"] = np.percentile(upward_spikes, 95)\n", - " metrics[\"upward_p999\"] = np.percentile(upward_spikes, 99.9)\n", - " metrics[\"upward_max\"] = np.max(upward_spikes)\n", - " metrics[\"upward_mean\"] = np.mean(upward_spikes)\n", - " metrics[\"upward_std\"] = np.std(upward_spikes)\n", - " else:\n", - " # Perfectly monotonic decrease (never went up!)\n", - " metrics[\"upward_p95\"] = 0.0\n", - " metrics[\"upward_p999\"] = 0.0\n", - " metrics[\"upward_max\"] = 0.0\n", - " metrics[\"upward_mean\"] = 0.0\n", - " metrics[\"upward_std\"] = 0.0\n", - "\n", - " if len(downward_drops) > 0:\n", - " # For reference: how fast is it learning?\n", - " metrics[\"downward_p95\"] = np.percentile(\n", - " np.abs(downward_drops), 95\n", - " ) # Large drops = fast\n", - " metrics[\"downward_mean\"] = np.mean(np.abs(downward_drops))\n", - " else:\n", - " metrics[\"downward_p95\"] = 0.0\n", - " metrics[\"downward_mean\"] = 0.0\n", - "\n", - " # Ratio: upward spikes vs downward progress\n", - " if metrics[\"downward_mean\"] > 0:\n", - " metrics[\"spike_to_progress_ratio\"] = (\n", - " metrics[\"upward_mean\"] / metrics[\"downward_mean\"]\n", - " )\n", - " else:\n", - " metrics[\"spike_to_progress_ratio\"] = (\n", - " np.inf if metrics[\"upward_mean\"] > 0 else 0.0\n", - " )\n", - "\n", - " # Late-stage upward spikes (last 20%)\n", - " cutoff = int(0.8 * len(log_changes))\n", - " late_changes = log_changes[cutoff:]\n", - " late_upward = late_changes[late_changes > 0]\n", - "\n", - " if len(late_upward) > 0:\n", - " metrics[\"late_upward_p95\"] = np.percentile(late_upward, 95)\n", - " metrics[\"late_upward_max\"] = np.max(late_upward)\n", - " else:\n", - " metrics[\"late_upward_p95\"] = 0.0\n", - " metrics[\"late_upward_max\"] = 0.0\n", - "\n", - " return metrics\n", - "\n", - "\n", - "def plot_loss_curves_with_upward_metrics(\n", - " sweep_dir: str,\n", - " k_values: list,\n", - " hidden_dim: int = 36,\n", - " seed: int = 0,\n", - " save_path: str = None,\n", - " show: bool = True,\n", - " log_x: bool = True,\n", - " log_y: bool = True,\n", - "):\n", - " \"\"\"Plot loss curves with metrics focused on upward spikes only.\"\"\"\n", - " sweep_path = Path(sweep_dir)\n", - "\n", - " fig, ax = plt.subplots(figsize=(10, 6))\n", - " colors = plt.cm.plasma(np.linspace(0.15, 0.95, len(k_values)))\n", - "\n", - " metrics_data = []\n", - "\n", - " for k, color in zip(k_values, colors):\n", - " run_dir = sweep_path / f\"k{k}_h{hidden_dim}\" / f\"seed_{seed}\"\n", - " loss_file = run_dir / \"train_loss_history.npy\"\n", - "\n", - " if not loss_file.exists():\n", - " print(f\"Warning: No data found for k={k}, h={hidden_dim}\")\n", - " continue\n", - "\n", - " loss_history = np.load(loss_file)\n", - " steps = np.arange(len(loss_history))\n", - "\n", - " ax.plot(steps, loss_history, color=color, lw=2.5, label=f\"k={k}\")\n", - "\n", - " # Compute upward-only metrics\n", - " metrics = compute_spikiness_metrics_upward_only(loss_history)\n", - " metrics[\"k\"] = k\n", - " metrics[\"n_steps\"] = len(loss_history)\n", - " metrics_data.append(metrics)\n", - "\n", - " # Formatting\n", - " ax.set_xlabel(\"Training Steps\", fontsize=14)\n", - " ax.set_ylabel(\"Training Loss\", fontsize=14)\n", - " ax.set_title(f\"Loss vs Training Steps (h={hidden_dim:,})\", fontsize=16)\n", - " if log_x:\n", - " ax.set_xscale(\"log\")\n", - " if log_y:\n", - " ax.set_yscale(\"log\")\n", - " ax.grid(True, alpha=0.3, which=\"both\", linestyle=\"--\", linewidth=0.5)\n", - " ax.legend(fontsize=11, framealpha=0.9, loc=\"best\")\n", - "\n", - " plt.tight_layout()\n", - "\n", - " if save_path:\n", - " plt.savefig(save_path, dpi=150, bbox_inches=\"tight\")\n", - " print(f\"Saved to {save_path}\")\n", - "\n", - " if show:\n", - " plt.show()\n", - " else:\n", - " plt.close()\n", - "\n", - " # Print metrics\n", - " df = pd.DataFrame(metrics_data)\n", - " col_order = [\n", - " \"k\",\n", - " \"n_steps\",\n", - " \"frac_upward\",\n", - " \"upward_p95\",\n", - " \"upward_p999\",\n", - " \"upward_max\",\n", - " \"late_upward_p95\",\n", - " \"spike_to_progress_ratio\",\n", - " \"downward_p95\",\n", - " ]\n", - " df = df[col_order]\n", - "\n", - " print(\"\\n\" + \"=\" * 100)\n", - " print(f\"UPWARD SPIKE METRICS (h={hidden_dim})\")\n", - " print(\"=\" * 100)\n", - " print(\"\\nMetric Definitions:\")\n", - " print(\" frac_upward : Fraction of steps where loss INCREASED\")\n", - " print(\" upward_p95 : 95th percentile of upward jumps (instability)\")\n", - " print(\" upward_p999 : 99.9th percentile of upward jumps\")\n", - " print(\" upward_max : Worst upward spike\")\n", - " print(\" late_upward_p95 : 95th percentile of upward jumps in last 20%\")\n", - " print(\n", - " \" spike_to_progress_ratio : Mean upward / mean downward (higher = more unstable)\"\n", - " )\n", - " print(\n", - " \" downward_p95 : 95th percentile of downward jumps (learning speed)\"\n", - " )\n", - " print(\"\\n\" + \"-\" * 100)\n", - "\n", - " pd.set_option(\"display.max_columns\", None)\n", - " pd.set_option(\"display.width\", None)\n", - " pd.set_option(\"display.float_format\", \"{:.4f}\".format)\n", - " print(df.to_string(index=False))\n", - " print(\"=\" * 100 + \"\\n\")\n", - "\n", - " return fig, ax, df\n", - "\n", - "\n", - "# Call it:\n", - "fig, ax, metrics_df = plot_loss_curves_with_upward_metrics(\n", - " sweep_dir=sweep_dir,\n", - " k_values=[2, 3, 4, 5, 6, 7, 8],\n", - " hidden_dim=6**6,\n", - " seed=0,\n", - " save_path=None,\n", - " show=True,\n", - " log_x=True,\n", - " log_y=True,\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 103, - "id": "bd0b5026", - "metadata": {}, - "outputs": [], - "source": [ - "def load_sweep_results_grid_spikiness(\n", - " sweep_dir: str,\n", - " k_values: list,\n", - " hidden_dims: list,\n", - "):\n", - " \"\"\"\n", - " Compute fraction of training steps where loss increased (instability).\n", - "\n", - " Returns:\n", - " grid: 2D array with mean frac_upward across seeds\n", - " std_grid: 2D array with standard deviations\n", - " \"\"\"\n", - " sweep_path = Path(sweep_dir)\n", - "\n", - " grid = np.full((len(hidden_dims), len(k_values)), np.nan)\n", - " std_grid = np.full((len(hidden_dims), len(k_values)), np.nan)\n", - "\n", - " for i, h in enumerate(hidden_dims):\n", - " for j, k in enumerate(k_values):\n", - " exp_name = f\"k{k}_h{h}\"\n", - " exp_dir = sweep_path / exp_name\n", - "\n", - " if not exp_dir.exists():\n", - " continue\n", - "\n", - " frac_upwards = []\n", - " for seed_dir in exp_dir.glob(\"seed_*\"):\n", - " loss_file = seed_dir / \"train_loss_history.npy\"\n", - " if loss_file.exists():\n", - " loss_history = np.load(loss_file)\n", - " log_loss = np.log10(loss_history + 1e-10)\n", - " log_changes = np.diff(log_loss)\n", - "\n", - " # Fraction of steps where loss went UP\n", - " frac_upward = np.sum(log_changes > 0) / len(log_changes)\n", - " frac_upwards.append(frac_upward)\n", - "\n", - " if frac_upwards:\n", - " grid[i, j] = np.mean(frac_upwards)\n", - " std_grid[i, j] = np.std(frac_upwards) if len(frac_upwards) > 1 else 0.0\n", - "\n", - " return grid, std_grid" - ] - }, - { - "cell_type": "code", - "execution_count": 106, - "id": "6d858f63", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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27dX+/btlZycrDZt2igmJkZDhgxhaVTAiYzyUIoDB7QY5Z6TihkyBAD/c/eX6Xt/iU5OTtZnn33mrJAseHp6KioqSosXL9bp06fN548cOaLly5ff9/7r169r8+bNab539/6yZctanP/iiy905coV8+vvvvtOZ86csXrOQlRUlObNm6cVK1bohRdesHszt39r166dTp06pRkzZqR678aNG7p27ZqkO5Oi/61KlSqSZF6e9MKFCxbve3l5KTQ0VCaTSbdu3cqUeAHAlVEhAID/qVOnjvLmzauuXbuqf//+MhgM+vLLLx/akB17jBw5Uj/99JMiIyP18ssvKyUlRZ988onCwsK0a9euDO+9fv266tSpo1q1aqlp06YKDg7W5cuXtXjxYm3YsEGtW7dWeHi4xT358uXT448/ru7du+vcuXOaMmWKSpUqpd69e1sdc+vWrRUbG6suXbrIz89Pn3/+uT2PbuGFF17QggUL1KdPH61Zs0aRkZFKSUnRgQMHtGDBAq1cuVIREREaPXq01q9fr+bNm6tYsWKKj4/XZ599pqJFi5pXJ2rcuLEKFSqkyMhIBQYGav/+/frkk0/UvHlziwnVAByPZUcdg4QAAP4nf/78Wrp0qV5//XUNHTpUefPmVefOndWwYUM1adLE2eFJkqpVq6bly5dr0KBBGjZsmIKDgzV69Gjt37//vqsg5cmTRzNmzNCPP/6o2NhYnT17Vp6enipbtqzef//9NJcRffvtt/XHH39o/PjxunLliho2bKjPPvvMpl2dpTs7SF+5ckWvvPKK/Pz8rNrTISMeHh5avHixPvjgA33xxRdatGiRcubMqRIlSui1114zTy5++umndfz4cc2aNUvnz59XgQIFVK9ePY0aNUr+/v6SpJdeeklff/21Jk+erKtXr6po0aLq37+/hg4d+kAxAkBWYTC50k9fAAC7tG7dWnv37k015t9ea9euVYMGDfTtt9/queeey5Q2AcBaiYmJ8vf317xdocrpm/ZCAw/D9Ssp6lBlnxISEuTn5+ewfp2NOQQAkMXcuHHD4vXhw4e1bNkym5b2BICswCgPhx/uiCFDAJDFlChRQt26dVOJEiV04sQJTZ06VV5eXnrjjTecHRoAIAsiIQCALKZp06b65ptvdPbsWXl7e6t27doaN25cqk3EACCrSzEZlGJy3O7BjuzLlZAQAEAW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IfDy8tKHH36o8ePH688//5QklSxZ0u4AAAAAAFjPZDJpx44d+vPPP/X888/L19dXXl5ejksI7sqZM6cqVqxo7+0AAABAxpy0MZkrO3HihJo2baq4uDglJSWpUaNG8vX11YQJE5SUlKRp06bZ3KZVCUGbNm00e/Zs+fn5qU2bNhleu3DhQpuDAAAAAHB/r732miIiIvT7779bTCJ+5pln1Lt3b7vatCoh8Pf3l8FgMP/tiq5fv67y5curbdu2mjhxorPDAQAAADLdhg0b9Ouvv8rLy8vifEhIiE6dOmVXm1YlBLGxsWn+7UpiYmJUq1YtZ4cBAACATGP43+HI/lyb0WhUSkpKqvN//fWX3VsA2LwPwY0bN3T9+nXz6xMnTmjKlCn66aef7AogMxw+fFgHDhxQs2bNrLr+woULCggI0PHjxx9uYJmkQ4cOmjRpkrPDAAAAgJM1btxYU6ZMMb82GAy6evWqRowYoaeeesquNm1OCFq1aqUvvvhCknT58mXVqFFDkyZNUqtWrTR16lS7grDGqVOn1LlzZ+XPn185cuRQxYoVzTsjDxo0SOPHj7e6rZiYGLVq1UohISHmc+vXr1fLli0VFBQkg8GgxYsX37ed8ePHq3r16vL19VVAQIBat26tgwcPWlxz5coVDRgwQMWKFVOOHDlUp04dbdu2zabnGzp0qGJiYpSQkGD1MwIAAGR5jtyUzNETmO00adIkbdq0SaGhobp586aef/5583ChCRMm2NWmzQnBzp079cQTT0iSvvvuOxUqVEgnTpzQF198oY8++siuIO7n0qVLioyMVPbs2bV8+XLt27dPkyZNUt68efXDDz+oTJkyKlOmjFVtXb9+XTNnzlTPnj0tzl+7dk2VK1fWp59+anVc69atU9++fbVlyxb9/PPPunXrlho3bqxr166Zr+nVq5d+/vlnffnll9q9e7caN26sqKgoizFeGT2fJIWFhalkyZL66quvrI4NAAAAj56iRYvq999/19tvv62BAwcqPDxc7777rn777TcFBATY1abNy45ev37dPD7pp59+Ups2beTh4aFatWrpxIkTdgVxPxMmTFBwcLDF/IXixYtLkv7zn/9o3rx5+vbbb3X16lXdunVLfn5+Gj58eJptLVu2TN7e3qnmGzRr1szqIUd3rVixwuL17NmzFRAQoB07dqhu3bq6ceOGvv/+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v7+/+fDz89Pq1au1fft28/s7duzQ6tWr5e/vn2mBPUyenp7mDzEpKUkmk0kmU8b/BFy4cEEBAQE6fvy4AyK01KFDB02aNMnh/QIAAMC1NGnSxOJ7eGawKiGIjY01H4GBgWrXrp2OHTumhQsXauHChTp69Kg6dOigAgUKZGpwD+rUqVPq3Lmz8ufPrxw5cqhixYrmD/Dy5cuqXLmyihYtqsGDB9839piYGLVq1cpiudXx48erevXq8vX1VUBAgFq3bq2DBw9a3Ld+/Xq1bNlSQUFBMhgMWrx4sc2xDh06VDExMUpISLD/wwAAAECW17x5cw0ePFgjR47U999/ryVLllgc9rB5UvGsWbO0ceNGeXp6ms95enoqOjpaderU0fvvv29XIJnt0qVLioyMVIMGDbR8+XIVLFhQhw8fVt68eSVJefLk0e+//65z586pTZs2eu655xQYGJhmW9evX9fMmTO1cuVKi/Pr1q1T3759Vb16dd2+fVtvv/22GjdurH379ilXrlySpGvXrqly5crq0aNHukOv7hdrWFiYSpYsqa+++kp9+/ZNs42kpCQlJSWZX9u7Ux0AAABcV+/evSVJo0ePTvWewzYmu337tg4cOKCyZctanD9w4ECqZY+cacKECQoODlZsbKz5XPHixVNdFxgYqMqVK2vDhg167rnn0mxr2bJl8vb2Vq1atSzOr1ixwuL17NmzFRAQoB07dph3c27WrJmaNWv2wLG2bNlS8+bNSzchGD9+vEaNGpVhPwAAAMjaHsb3bZtXGerevbt69uypyZMna+PGjdq4caMmTZqkXr16qXv37pkeoL2WLFmiiIgItW3bVgEBAQoPDzevJnTu3DlduXJFkpSQkKD169enSnDutWHDBlWrVu2+fd4d0nN3J7nMiPWuGjVqaOvWrRZVgHsNGTJECQkJ5uPkyZM2xQAAAOByTE443JDNFYKJEyeqUKFCmjRpks6cOSNJKly4sAYPHqzXX3890wO019GjRzV16lRFR0fr7bff1rZt29S/f395eXmpfPnyevHFF82TiV999VVVrFgx3bZOnDihoKCgDPszGo0aMGCAIiMjFRYWlmmxdu3aVZIUFBSk5ORknT17VsWKFUvVhre3t7y9vW3qFwAAAK7vo48+0osvvigfHx999NFHGV7bv39/m9u3OSHw8PDQG2+8oTfeeMM8Tt3P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ZIiefvppi+t69eqlggULys/PT08++aR+//13i7beffddBQYGytfXVz179tRbb71l8Yt2/fr1NWDAAIt7WrdubfGlNCkpSYMGDVKRIkWUK1cu1axZU2vXrjW/f3dYy8qVK1W+fHnlzp1bTZs21ZkzZyzanTVrlipUqCBvb28VLlxY/fr1s+lZbPWf//xH5cuXl4+Pj8qVK6fPPvvM/N7x48dlMBi0cOFCNWjQQDlz5lTlypW1efNmizZmzJih4OBg5cyZU88884wmT55sHsIze/ZsjRo1Sr///rsMBoMMBoNmz55tvvf8+fN65plnlDNnTpUuXVpLlizJMN4FCxaocuXKKlKkSLrX/P3334qIiNAzzzyjpKQkSVKjRo108eJFrVu3zsZPCACyNhICAI+s3LlzK3fu3Fq8eLH5S19a2rZtq/j4eC1fvlw7duxQ1apV1bBhQ128eFHSnS+YI0eO1Lhx47R9+3YVLlzY4kuxtfr166fNmzdr3rx5+uOPP9S2bVs1bdpUhw8fNl9z/fp1TZw4UV9++aXWr1+vuLg4DRo0yPz+1KlT1bdvX7344ovavXu3lixZolKlSln9LLb6+uuvNXz4cMXExGj//v0aN26chg0bpjlz5lhc984772jQoEHatWuXypQpo44dO5p/ad+0aZP69Omj1157Tbt27VKjRo0UExNjvrd9+/Z6/fXXVaFCBZ05c0ZnzpxR+/btze+PGjVK7dq10x9//KGnnnpKnTp1yvB5NmzYoIiIiHTfP3nypJ544gmFhYXpu+++k7e3tyTJy8tLVapU0YYNG+z6rAA8BCY5uELg7Ad2DhICAI+sbNmyafbs2ZozZ47y5MmjyMhIvf322/rjjz/M12zcuFFbt27Vt99+q4iICJUuXVoTJ05Unjx59N1330mSpkyZop49e6pnz54qW7asxo4dq9DQUJtiiYuLU2xsrL799ls98cQTKlmypAYNGqTHH39csbGx5utu3bqladOmKSIiQlWrVlW/fv20evVq8/tjx47V66+/rtdee01lypRR9erVzZUJa57FViNGjNCkSZPUpk0bFS9eXG3atNHAgQP1+eefW1w3aNAgNW/eXGXKlNGoUaN04sQJHTlyRJL08ccfq1mzZho0aJDKlCmjV155Rc2aNTPfmyNHDuXOnVvZsmVToUKFVKhQIeXIkcP8frdu3dSxY0eVKlVK48aN09WrV7V169Z0Yz5x4oSCgoLSfO/gwYOKjIxUkyZNFBsbK09PT4v3g4KCdOLECZs/JwDIykgIADzSnn32WZ0+fVpLlixR06ZNtXbtWlWtWtU8JOX333/X1atXlT9/fnNFIXfu3Dp27Jj+/PNPSdL+/ftVs2ZNi3Zr165tUxy7d+9WSkqKypQpY9HPunXrzP1IUs6cOVWyZEnz68KFCys+Pl6SFB8fr9OnT6thw4Zp9mHNs9ji2rVr+vPPP9WzZ0+L9saOHZuqvUqVKlnEfDde6c6X8Bo1alhc/+/XGbm37Vy5csnPz8/cdlpu3LghHx+fNM8/8cQTatOmjT788EMZDIZU1+TIkUPXr1+3OjYAeBSwDwGAR56Pj48aNWqkRo0aadiwYerVq5dGjBihbt266erVqypcuLDFWP67Mlqm8t88PDxk+tdktFu3bpn/vnr1qjw9PbVjx45Uv0rnzp3b/Hf27Nkt3jMYDOZ27/3VPC2Z9Sz3tifdGf//74To389wb9x3v2gbjUab+0xLWp9JRm0XKFBAly5dSnXe29tbUVFRWrp0qQYPHpzmHIOLFy9aJGQAnIydih2ChACA2wkNDTUvs1m1alWdPXtW2bJlU0hISJrXly9fXv/3f/+nLl26mM9t2bLF4pqCBQtaTP5NSUnRnj171KBBA0lSeHi4UlJSFB8fryeeeMKuuH19fRUSEqLVq1eb272XNc9ii8DAQAUFBeno0aPq1KmT3e2ULVtW27Ztszj379deXl5KSUmxu497hYeHa9++fanOe3h46Msvv9Tzzz+vBg0aaO3atamGFu3Zs0fPPfdcpsQBAFkFCQGAR9aFCxfUtm1b9ejRQ5UqVZKvr6+2b9+u9957T61atZIkRUVFqXbt2mrdurXee+89lSlTRqdPn9aPP/6oZ555RhEREXrttdfUrVs3RUREKDIyUl9//bX27t2rEiVKmPt68sknFR0drR9//FElS5bU5MmTdfnyZfP7ZcqUUadOndSlSxdNmjRJ4eHh+vvvv7V69WpVqlRJzZs3t+qZRo4cqT59+iggIEDNmjXTlStXtGnTJr366qtWPUt6jh07pl27dlmcK126tEaNGqX+/fvL399fTZs2VVJSkrZv365Lly4pOjraqphfffVV1a1bV5MnT1bLli31yy+/aPny5RZDdkJCQswxFC1aVL6+vubJvrZq0qSJevXqpZSUlFSVDE9PT3399dfq2LGjnnzySa1du1aFChWSdGfFpFOnTikqKsqufgE8BEajpMypNlrfn/thDgGAR1bu3LlVs2ZNffDBB6pbt67CwsI0bNgw9e7dW5988omkO8NPli1bprp166p79+4qU6aMOnTooBMnTigwMFDSnVVwhg0bpjfeeEPVqlXTiRMn9PLLL1v01aNHD3Xt2lVdunRRvXr1VKJEiVS/4sfGxqpLly56/fXXVbZsWbVu3Vrbtm3TY489ZvUzde3aVVOmTNFnn32mChUqqEWLFuZViqx5lvRER0crPDzc4vjtt9/Uq1cv/ec//1FsbKwqVqyoevXqafbs2SpevLjVMUdGRmratGmaPHmyKleurBUrVmjgwIEW4/yfffZZNW3aVA0aNFDBggX1zTffWN3+vzVr1kzZsmXTqlWr0nw/W7Zs+uabb1ShQgU9+eST5vkI33zzjRo3bqxixYrZ3TcAZEUG078HvQIA7mvkyJFavHhxql/VYZ3evXvrwIEDD22Jz08//VRLlizRypUrrbo+OTlZpUuX1ty5cxUZGflQYgJgvcTERPn7+yuqYE9l8/ByWL+3jcla9fdMJSQkyM/Pz2H9OhtDhgAAD93EiRPVqFEj5cqVS8uXL9ecOXPs2svBWi+99JIuX76sK1euyNfX977Xx8XF6e233yYZAOCWSAgAAA/d1q1b9d577+nKlSsqUaKEPvroI/Xq1euh9ZctWza98847Vl9fqlQpiw3eAMCdMGQIAAAALsU8ZKhAD8cPGTo/y+2GDDGpGAAAAHBjDBkCAACAazKaJDlwMIvRPQfOUCEAAAAA3BgVAgAAALgkk8kok8lxm4U5si9XQoUAAAAAcGMkBAAAAIAbY8gQAAAAXJPJ5NiJvm66Gj8VAgAAAMCNUSEAAACAazI5eNlRKgQAAAAA3A0JAQAAAODGGDIEAAAA12Q0SgYH7g3APgQAAAAA3A0VAgAAALgmJhU7BBUCAAAAwI1RIQAAAIBLMhmNMjlwDoGJOQQAAAAA3A0JAQAAAODGGDIEAAAA18SkYoegQgAAAAC4MSoEAAAAcE1Gk2SgQvCwUSEAAAAA3BgJAQAAAODGGDIEAAAA12QySXLg3gAMGQIAAADgbqgQAAAAwCWZjCaZHDip2ESFAAAAAIC7oUIAAAAA12QyyrFzCBzYlwuhQgAAAAC4MRICAAAAwI2REAAAAMAlmYwmhx/2+PTTTxUSEiIfHx/VrFlTW7duzfD6b7/9VuXKlZOPj48qVqyoZcuW2dVvZiEhAAAAAOw0f/58RUdHa8SIEdq5c6cqV66sJk2aKD4+Ps3rf/31V3Xs2FE9e/bUb7/9ptatW6t169bas2ePgyP/h8HkrusrAQAAwCUlJibK399f9dVK2QzZHdbvbdMtrdUPSkhIkJ+fn1X31KxZU9WrV9cnn3wiSTIajQoODtarr76qt956K9X17du317Vr17R06VLzuVq1aqlKlSqaNm1a5jyIjagQAAAAAHZITk7Wjh07FBUVZT7n4eGhqKgobd68Oc17Nm/ebHG9JDVp0iTd6x2BZUcBAADgkm7rluTAsSy3dUvSnQrFvby9veXt7Z3q+vPnzyslJUWBgYEW5wMDA3XgwIE0+zh79mya1589e/ZBQn8gJAQAAABwKV5eXipUqJA2nnX8ZNvcuXMrODjY4tyIESM0cuRIh8fiKCQEAAAAcCk+Pj46duyYkpOTHd63yWSSwWCwOJdWdUCSChQoIE9PT507d87i/Llz51SoUKE07ylUqJBN1zsCCQEAAABcjo+Pj3x8fJwdRoa8vLxUrVo1rV69Wq1bt5Z0Z1Lx6tWr1a9fvzTvqV27tlavXq0BAwaYz/3888+qXbu2AyJOGwkBAAAAYKfo6Gh17dpVERERqlGjhqZMmaJr166pe/fukqQuXbqoSJEiGj9+vCTptddeU7169TRp0iQ1b95c8+bN0/bt2zV9+nSnPQMJAQAAAGCn9u3b6++//9bw4cN19uxZValSRStWrDBPHI6Li5OHxz8Le9apU0dz587V0KFD9fbbb6t06dJavHixwsLCnPUI7EMAAAAAuDP2IQAAAADcGAkBAAAA4MZICAAAAAA3RkIAAAAAuDESAgAAAMCNkRAAAAAAboyEAAAAAHBjJAQAAACAGyMhAAAAANwYCQEAAADgxkgIAAAAADdGQgAAAAC4sf8HtPcUBFfKcWAAAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Compute stability grid\n", - "stability_grid, stability_std = load_sweep_results_grid_spikiness(\n", - " sweep_dir, k_values, hidden_dims\n", - ")\n", - "\n", - "# Plot\n", - "plt.figure(figsize=(8, 6.5))\n", - "plt.imshow(stability_grid, aspect=\"equal\", cmap=\"viridis\") # , norm=LogNorm())\n", - "plt.xlabel(\"Sequence Length (k)\")\n", - "plt.ylabel(\"Hidden Dimension\")\n", - "ytick_labels = [f\"$6^{i+1}$ ({val:,})\" for i, val in enumerate(hidden_dims)]\n", - "plt.yticks(range(len(hidden_dims)), ytick_labels)\n", - "plt.xticks(range(len(k_values)), k_values)\n", - "plt.gca().invert_yaxis()\n", - "plt.colorbar(label=\"Training Spikiness\")\n", - "plt.title(\"Training Spikiness\")\n", - "plt.tight_layout()\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "298e758e", - "metadata": {}, - "source": [ - "# Varying group size (num frequencies)" - ] - }, - { - "cell_type": "code", - "execution_count": 60, - "id": "74cd5103", - "metadata": {}, - "outputs": [], - "source": [ - "def load_sweep_results_grid_convergence_3d(\n", - " sweep_dir: str,\n", - " k_values: list,\n", - " hidden_dims: list,\n", - " num_frequencies: int,\n", - " reduction_threshold: float = 0.99,\n", - "):\n", - " \"\"\"\n", - " Load sweep results and compute steps to convergence for 3D sweeps over k, h, and f.\n", - "\n", - " This function is designed for sweeps that include num_frequencies as a parameter,\n", - " using directory naming format: k{k}_h{h}_f{f}\n", - "\n", - " Convergence is defined as reaching `reduction_threshold` loss reduction\n", - " (e.g., 0.99 = 99% reduction from initial loss).\n", - "\n", - " If convergence is not reached, the grid point is set to NaN (blacked out).\n", - "\n", - " Args:\n", - " sweep_dir: Path to the sweep directory\n", - " k_values: List of k (sequence length) values\n", - " hidden_dims: List of hidden dimension values\n", - " num_frequencies: Number of frequencies (f parameter)\n", - " reduction_threshold: Fraction of loss reduction to consider converged\n", - "\n", - " Returns:\n", - " grid: 2D array with mean steps to convergence (NaN if didn't converge)\n", - " std_grid: 2D array with standard deviations across seeds\n", - " \"\"\"\n", - " sweep_path = Path(sweep_dir)\n", - "\n", - " grid = np.full((len(hidden_dims), len(k_values)), np.nan)\n", - " std_grid = np.full((len(hidden_dims), len(k_values)), np.nan)\n", - "\n", - " for i, h in enumerate(hidden_dims):\n", - " for j, k in enumerate(k_values):\n", - " exp_name = f\"k{k}_h{h}_f{num_frequencies}\"\n", - " exp_dir = sweep_path / exp_name\n", - "\n", - " if not exp_dir.exists():\n", - " continue\n", - "\n", - " # Collect convergence steps from all seeds\n", - " convergence_steps = []\n", - " for seed_dir in exp_dir.glob(\"seed_*\"):\n", - " loss_file = seed_dir / \"train_loss_history.npy\"\n", - " if loss_file.exists():\n", - " loss_history = np.load(loss_file)\n", - " initial_loss = loss_history[0]\n", - "\n", - " if initial_loss > 0:\n", - " # Compute reduction at each step\n", - " reductions = 1 - loss_history / initial_loss\n", - "\n", - " # Find first step where reduction >= threshold\n", - " converged_mask = reductions >= reduction_threshold\n", - " if np.any(converged_mask):\n", - " step = np.argmax(converged_mask) # First True\n", - " convergence_steps.append(step)\n", - " # else: Never converged - don't add to list\n", - "\n", - " if convergence_steps:\n", - " grid[i, j] = np.mean(convergence_steps)\n", - " std_grid[i, j] = (\n", - " np.std(convergence_steps) if len(convergence_steps) > 1 else 0.0\n", - " )\n", - " # else: No seeds converged - grid[i,j] remains NaN (blacked out)\n", - "\n", - " return grid, std_grid" - ] - }, - { - "cell_type": "markdown", - "id": "418d1ac0", - "metadata": {}, - "source": [ - "## num_freq = 2" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "01cf6f19", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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XLlypUBFLgB06dIFM2bMwNatWwEAEokEDx8+xKRJk9CjRw+V85XnqPY7iYiIiKjQtD1G18zMTGFTp9B99uwZsrOzYW1trdBubW1dqKEFuRYuXIi0tDRYWVnh9evXaNmyJVxcXGBqaopZs2apHZc9ukRERERiK0aLOxREQECASsebm5sjMjISJ0+exKVLl5CWlob69evDx8enUHmw0CUiIiKij7K0tISOjg4SExMV2hMTE2FjY6Ox8zRr1gzNmjXTWDwWukRERERi0vLDaB4eHtDR0UFgYCACAwPVCqWnp4cGDRogKipKvlyvTCZDVFQURo0aVehUf/zxxzzbJRIJDAwM4OLighYtWkBHR0eluCx0iYiIiEqw6OhohYfR8pOWlobbt2/LX9+7dw9xcXGwsLBApUqVEBQUBH9/fzRs2BCenp4IDw9Henq6fBaGwvjhhx/w9OlTZGRkoFy5nKklX758CSMjI5iYmCApKQlVqlTBkSNHlGaR+Bg+jEZEREQkoqKyYMT58+fh7u4Od3d3ADmLOLi7u8tnTujduzcWLFiAqVOnol69eoiLi8OBAweUHlBTx+zZs+Hh4YFbt27h+fPneP78OW7evAkvLy8sXrwYDx8+hI2NDcaPH69SXPboEhERERFatWoFQRA+esyoUaM0MlThQ9999x127NgBZ2dneZuLiwsWLFiAHj164O7du5g3b57KU42pXehmZWUhKSkJMplMob1SpUrqhiQiIiIqfbQ8Rrc4SEhIwLt375Ta3717J5++zM7ODq9evVIprspDF27duoXmzZvD0NAQjo6OqFy5MipXrgwnJydUrlxZ1XBEREREpEUeHh5wdXVFRESE2Knkq3Xr1hg+fDguXLggb7tw4QJGjhyJNm3aAAAuX76scq2pco9uQEAAdHV1sXfvXtja2kIiKUa/LhAREREVMcK/mzbiAgV/GE1Ma9asQf/+/dGgQQOUKVMGQE5vrre3N9asWQMAMDExwcKFC1WKq3KhGxcXh5iYGNSoUUPVtxIRERHRh0r50AVBEJCVlYU9e/bg4cOHuHHjBgCgevXqqF69uvy41q1bqxxb5ULX1dUVz549U/lEREREREQfEgQBLi4uuHr1qlJxW1gqj9GdO3cuvv32Wxw9ehTPnz9HamqqwkZEREREKpBocSsGpFIpqlatiufPn2s8tso9urlrDnt7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1tbWCu3W1ta4fv06AODUqVPYsmUL6tatKx/fu2nTJtSpU0f95AuJhS4RERGRiHIfHtNGXAAwMzNTKHS1pVmzZpDJPu+UZp/CoQtERERE9FGWlpbQ0dFBYmKiQntiYiJsbGxEyurTWOgSERERiUhHImhtAwAPDw+4urrmO5tCQejp6aFBgwaIioqSt8lkMkRFRaFx48aFvgfawqELRERERCVYdHR0gYYupKWl4fbt2/LX9+7dQ1xcHCwsLFCpUiUEBQXB398fDRs2hKenJ8LDw5Geni6fhaEoYqFLREREJCIpZJBCC0sAqxjz/PnzaN26tfx1UFAQAMDf3x/r169H79698fTpU0ydOhVPnjxBvXr1cODAAaUH1IoSFrpEREREhFatWkEQPv5Q3KhRozBq1KjPlFHhsdAlIiIiEpG2Z10ozfgwGhEREZGIdCDT2gZo5mG04oo9ukREREQlWEEfRiuJWOgSERERiYhDF7SHQxeIiIiIqERijy4RERGRiHQkMuhIND+9mDZiFjcsdDXsVkYF6En1xE6jyDl230XsFIqsW71CxU6BiIioROLQBSIiIiIRSSBAqoVNAs0tAVxcsUeXiIiIqATjrAtEREREJAqO0dUeFrpEREREIpJKZJBqoSjVRszihmN0iYiIiKhEYo8uERERkYh0AOhA84s76Gg8YvHDHl0iIiIiKpFY6BIRERGJKHeMrjY2gNOLEREREVEJxenFiIiIiEgUOhC0NEZX8zGLGw5dICIiIqISiT26RERERCLiPLraw0KXiIiISERSyKADLRS6WohZ3HDoAhERERGVSOzRJSIiIhKRVCJAKtH8g2PaiFncsEeXiIiIqATjPLpEREREJAodLY3RzY1ZmufRZY8uEREREZVI7NElIiIiEpGORAYdLUwFpo2YxQ17dImIiIioRGKPLhEREZGIpBAg1cJyvdqIWdyw0CUiIiISEYcuaA+HLhARERFRicQeXSIiIiIRSSHTynK9XAKYPbpEREREJRoXjCAiIiIiUUgB6GhjCeB//88FI4iIiIiIShj26BIRERGJKGcJYIlW4pZ27NElIiIiohKJPbpEREREIpJKZJBKNN+jK+U8uix0iYiIiMTEoQvaw6EL73n06BG+/vprlC9fHoaGhqhTpw7Onz8vdlpEREREpAb26P7r5cuXaNq0KVq3bo39+/ejQoUK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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Example using the new 3D sweep (k, h, f)\n", - "new_sweep_dir = \"/home/facosta/group-agf/sweeps/sweep_mlp_scaling_20251212_172318\"\n", - "\n", - "# Define parameter values for the new sweep\n", - "k_values_new = [2, 3, 4, 5, 6, 7, 8]\n", - "hidden_dims_new = [6, 36, 216, 1296, 7776, 46656]\n", - "num_frequencies = 2 # Set this to the frequency value you want to visualize\n", - "\n", - "# Load convergence data for a specific frequency\n", - "reduction_threshold = 0.5\n", - "conv_grid_new, conv_std_new = load_sweep_results_grid_convergence_3d(\n", - " new_sweep_dir,\n", - " k_values_new,\n", - " hidden_dims_new,\n", - " reduction_threshold=reduction_threshold,\n", - " num_frequencies=num_frequencies,\n", - ")\n", - "\n", - "# Plot the heatmap\n", - "plt.figure(figsize=(8, 6))\n", - "cmap = plt.cm.viridis_r.copy()\n", - "cmap.set_bad(color=\"black\")\n", - "plt.imshow(conv_grid_new, aspect=\"equal\", cmap=cmap, norm=LogNorm())\n", - "\n", - "plt.xlabel(\"Sequence Length (k)\")\n", - "plt.ylabel(\"Hidden Dimension\")\n", - "plt.xticks(range(len(k_values_new)), k_values_new)\n", - "plt.yticks(range(len(hidden_dims_new)), hidden_dims_new)\n", - "plt.gca().invert_yaxis()\n", - "\n", - "plt.colorbar(label=f\"Steps to {reduction_threshold*100}% Convergence\")\n", - "plt.title(f\"Steps to Convergence (f={num_frequencies}, black = did not converge)\")\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "ec9b06b2", - "metadata": {}, - "source": [ - "## num_freq = 3" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "32e86647", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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vkf3fbt370ZSUhL8/Pzy3L969WrUrFkTzZo1yzfG6tWr0b9/f4Ve3nv37uH06dMwMDDArl278Pz5c3z77bd48eIF1q5dm2ec0NBQzJgxo1DXQ0RERCRIczZtxC3titUtWL16NTp37gw7OzulfW/evMFvv/320d7cs2fP4vr160rHyGQySCQS/Prrr2jcuDG6dOmChQsXYv369fn26gYFBSE5OVm+xcXFFe7iiIiIqHSSaHEr5YpNofvw4UMcOXIEw4YNy3P/9u3bkZ6ejkGDBuUb45dffkG9evXQsGFDhXZbW1vY29vDzMxM3lazZk0IgoB///03z1j6+vowNTVV2IiIiIiKGnd3d7i6uiI8PFzsVD67YjN0Ye3atbCyskLXrl3z3L969Wp0795d6eG1XKmpqdi6dStCQ0OV9jVv3hzbtm1Damqq/CG2W7duQSqVomLFipq7CCIiIqIPaHsJ4KioqFLbIVcsenRlMhnWrl0LX19f6Ooq1+Z37tzByZMn8+3tBYAtW7YgKysLX3/9tdK+/v37o3z58hg8eDCuXbuGkydPYtKkSRgyZIjCWF4iIiIiKj6KRaF75MgRPHr0CEOGDMlz/5o1a1CxYkV06NAh3xirV69Gz549Ua5cOaV9xsbGiIiIQFJSEho1aoQBAwagW7du+PnnnzV1CURERER5y10CWBtbKVcshi506NABgiDkuz8kJAQhISEfjfHXX399dH+NGjUQERGhVn5EREREVPQUix5dIiIiopKMy/8CWVlZOHLkCFasWIHXr18DAJ48eYLU1FS1YxaLHl0iIiIiKrkePnyITp064dGjR8jIyED79u1hYmKCuXPnIiMjA8uXL1crLnt0iYiIiMTEeXQxbtw4NGrUCK9evVKYCKBHjx6IjIxUOy57dImIiIhIVKdOncJff/0FPT09hXYnJyc8fvxY7bgsdImIiIhEpO15dIsDmUyG7OxspfZ///0XJiYmasfl0AUiIiIiMXHoAjp06ICwsDD5a4lEgtTUVAQHB6NLly5qx2WPLhERERGJasGCBejYsSNcXV3x9u1b9O/fH7dv34alpSV+//13teOy0CUiIiISEYcuABUrVsTFixexZcsWXLx4EampqRg6dCgGDBhQqFVqWegSERERkeh0dXUxYMAADBgwQGMxOUaXiIiISEwco4vQ0FCsWbNGqX3NmjWY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v6ioqAINLU1NTcWdO3fkr+/fv4/Y2FhYWFigUqVKCAgIgK+vLxo1aoTGjRsjLCwMaWlp8lkYCiMsLKzQMfKicqELAElJSVi9ejWuX78OAKhVqxaGDBkCMzMzjSZHREREVOIVkTG658+fV5jZICAgAADg6+uLdevWoW/fvnj27BmmTZuGp0+fol69ejh48KDSA2rq8PX1LXSMvKi8YMT58+fh7OyMn376CS9fvsTLly+xcOFCODs7IyYmRhs5EhEREZGWtWnTBoIgKG3r1q2THzN69Gg8fPgQGRkZ+Pvvv+Hh4aGx89+9exfff/89+vXrJ1+E4sCBA7h69araMVUudCdMmIDu3bvjwYMH2LlzJ3bu3In79+/jiy++wPjx49VOhIiIiKg0yh2jq42tuDhx4gTq1KmDv//+Gzt37kRqaioA4OLFiwgODlY7rlo9upMnT4au7v+PetDV1cV3332H8+fPq50IERERUakk0eKGnIfRXF1d813atygIDAzEDz/8gIiICOjp6cnb27Vrh3PnzqkdV+Uxuqampnj06JHSymhxcXEwMTFROxEiIiIi0ryCPowmpsuXL+O3335TareysirUQmUq9+j27dsXQ4cOxZYtWxAXF4e4uDhs3rwZw4YNQ79+/dROhIiIiKhU0nKPbnFQrlw5xMfHK7VfuHAB9vb2asdVuUf3xx9/hEQiwaBBg5CVlQUAKFOmDEaNGoU5c+aonQgRERERlU5fffUVJk+ejG3btkEikUAmk+HMmTOYOHEiBg0apHZclQtdPT09LFq0CKGhobh79y4AwNnZGWXLllU7CSIiIqLSStsLRhQHISEh8Pf3h4ODA7Kzs+Hq6ors7Gz0798f33//vdpx1ZpHFwDKli2LOnXqqH1iIiIiItI+TayMpm16enpYtWoVpk6diitXriA1NRX169dH1apVCxW3QIVuz549sW7dOpiamqJnz54fPXbnzp2FSoiIiIioVNHyghHF4WG006dPo0WLFqhUqRIqVaqksbgFKnTNzMwgkUjk/yYiIiIi0pR27drB3t4e/fr1w9dffw1XV1eNxC1Qobt27do8/01EREREhVRElgAW05MnT7B582b8/vvvmDNnDurWrYsBAwagX79+qFixotpxVZ5e7M2bN0hPT5e/fvjwIcLCwnD48GG1kyAiIiIqrbgyGmBpaYnRo0fjzJkz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Am7fvg1zc3OxUyMiIqISTEciaGV6MW3ELG5Y6P7P3Llz4eDggLVr18rbKleunO/xGRkZyMjIkL9OSUnRan5EREREpBoOXfifPXv2oFGjRujTpw+srKxQv359rFq1Kt/jQ0NDYWZmJt8cHBw+Y7ZERERUUuQuAayNrbRjofs/9+7dw7Jly1C1alUcOnQIo0aNwtixY7F+/fo8jw8KCkJycrJ8i4uL+8wZExEREdHHcOjC/8hkMjRq1AghISEAgPr16+PKlStYvnw5fH19lY7X19eHvr7+506TiIiIShgdiQw6WpheTIfTi7FHN5etrS1cXV0V2mrWrIlHjx6JlBERERERFQYL3f9p3rw5bt68qdB269YtODo6ipQRERERlQZSLS3/mztGl0sAEyZMmIBmzZohJCQEPj4++Oeff7By5UqsXLlS7NSIiIioBJNCgBSanwosN2ZpXgKYPbr/4+7ujl27duH3339H7dq1MWvWLISFhWHAgAFip0ZEREREamCP7nu++OILfPHFF2KnQURERKUIH0bTHvboEhEREVGJxB5dIiIiIhHpQICOFsboaiNmccMeXSIiIiIqkdijS0RERCSinFkXND+eVhszORQ37NElIiIiohKJPbpEREREIsqZdUE7cUs7FrpEREREIuLDaNrDoQtEREREVCKxR5eIiIhIRBKJAKlE872vEi3ELG7Yo0tEREREJRJ7dImIiIhEpAMZdLQUt7Rjjy4RERERlUjs0SUiIiISEWdd0B726BIRERGVYO7u7nB1dUV4eLjYqXx27NElIiIiEpFUS7Mu5MaMioqCqampxuMXByx0iYiIiETEoQvaw6ELRERERFQisUeXiIiISETs0dUe9ugSERERUYnEHl0iIiIiEUklOZs24pZ27NElIiIiohKJPbpEREREIpJqaYyulGN02aNLRERERCUTe3SJiIiIRCSFdnoe2ZvJQpeIiIhIVDqSnE0bcUs7FvtEREREVCKxR5eIiIhIRDqQQAea737VRszihoWuhghCzpONmWnvRM6kaJKlvxU7BSIionzl/hynkoWFroa8fv0aALC+yx8iZ0JERESqev36NczMzEQ5Nx9G0x4WuhpiZ2eHuLg4mJiYQCIR/08FKSkpcHBwQFxcHExNTcVOp0jhvckf703eeF/yx3uTP96b/BWleyMIAl6/fg07OztR8yDtYKGrIVKpFBUrVhQ7DSWmpqaif4gUVbw3+eO9yRvvS/54b/LHe5O/onJvxOrJzaUjkUBHC51k2ohZ3LBXm4iIiIhKJPboEhEREYlICgmkWpghQRsxixv26JZQ+vr6CA4Ohr6+vtipFDm8N/njvckb70v+eG/yx3uTP94b+lwkAufTICIiIvrsUlJSYGZmhoc37GBqovm+x5TXMjjWeILk5OQiMRZaDBy6QERERCQiDl3QHg5dICIiIiKN6NGjB8zNzdG7d2+xUwHAQpeIiIhIVLnTi2lj+9zGjRuHDRs2fPbz5oeFLhERERFpRJs2bWBiYiJ2GnIsdEuQ0NBQuLu7w8TEBFZWVvD29sbNmzfFTqtIWLZsGerWrSufnLxp06Y4cOCA2GkVSXPmzIFEIsH48ePFTkV006dPh0QiUdhq1KghdlpFxuPHj/H111+jfPnyMDQ0RJ06dXD+/Hmx0xKdk5OT0veNRCKBv7+/2KmJLjs7G1OnTkXlypVhaGgIZ2dnzJo1C6X9uXipFv9TxcmTJ9GtWzfY2dlBIpFg9+7dSseEh4fDyckJBgYG8PDwwD///KOhu6AdLHRLkBMnTsDf3x/nzp1DREQE3r17hw4dOiAtLU3s1ERXsWJFzJkzB9HR0Th//jzatWuHL7/8ElevXhU7tSIlKioKK1asQN26dcVOpcioVasW4uPj5dvp06fFTqlIePXqFZo3b44yZcrgwIEDuHbtGhYsWABzc3OxUxNdVFSUwvdMREQEAKBPnz4iZya+uXPnYtmyZViyZAmuX7+OuXPnYt68eVi8eLHYqRGAtLQ0uLm5ITw8PM/9W7ZsQUBAAIKDgxETEwM3Nzd07NgRiYmJnznTguOsCyXIwYMHFV6vW7cOVlZWiI6ORqtWrUTKqmjo1q2bwuvZs2dj2bJlOHfuHGrVqiVSVkVLamoqBgwYgFWrVuGHH34QO50iQ1dXFzY2NmKnUeTMnTsXDg4OWLt2rbytcuXKImZUdFSoUEHh9Zw5c+Ds7IzWrVuLlFHR8ddff+HLL79E165dAeT0fv/+++9FvldQ27Q960JKSopCu76+fp5zGHfu3BmdO3fON97ChQsxfPhwDB48GACwfPly7N+/H2vWrEFgYKAGM9cc9uiWYMnJyQAACwsLkTMpWrKzs7F582akpaWhadOmYqdTZPj7+6Nr167w8vISO5Ui5fbt27Czs0OVKlUwYMAAPHr0SOyUioQ9e/agUaNG6NOnD6ysrFC/fn2sWrVK7LSKnMzMTGzatAlDhgyBRIQHg4qaZs2aITIyErdu3QIAXLx4EadPn/5ocUWF5+DgADMzM/kWGhqqcozMzExER0cr/IyQSqXw8vLC2bNnNZmuRrFHt4SSyWQYP348mjdvjtq1a4udTpFw+fJlNG3aFG/fvoWxsTF27doFV1dXsdMqEjZv3oyYmBhERUWJnUqR4uHhgXXr1qF69eqIj4/HjBkz0LJlS1y5cqVIPWwhhnv37mHZsmUICAjAf//7X0RFRWHs2LHQ09ODr6+v2OkVGbt370ZSUhL8/PzETqVICAwMREpKCmrUqAEdHR1kZ2dj9uzZGDBggNipiUpHIoWORPN9jzr/+90qLi5OYcEIdVake/78ObKzs2Ftba3Qbm1tjRs3bshfe3l54eLFi0hLS0PFihWxbds2UTuVWOiWUP7+/rhy5QrHE76nevXqiI2NRXJyMrZv3w5fX1+cOHGi1Be7cXFxGDduHCIiImBgYCB2OkXK+71MdevWhYeHBxwdHbF161YMHTpUxMzEJ5PJ0KhRI4SEhAAA6tevjytXrmD58uUsdN+zevVqdO7cGXZ2dmKnUiRs3boVv/76K3777TfUqlULsbGxGD9+POzs7Er1903O0AXNF7pS5Dzkl/sg9udw5MiRz3KegmKhWwKNHj0a+/btw8mTJ1GxYkWx0yky9PT04OLiAgBo2LAhoqKisGjRIqxYsULkzMQVHR2NxMRENGjQQN6WnZ2NkydPYsmSJcjIyICOjo6IGRYd5cqVQ7Vq1XDnzh2xUxGdra2t0i+JNWvWxI4dO0TKqOh5+PAhjhw5gp07d4qdSpExadIkBAYG4quvvgIA1KlTBw8fPkRoaGipLnRTXsuKfFxLS0vo6OggISFBoT0hIaFIP8fAQrcEEQQBY8aMwa5du3D8+HE+GPIJMpkMGRkZYqchOk9PT1y+fFmhbfDgwahRowYmT57MIvc9qampuHv3LgYOHCh2KqJr3ry50vSFt27dgqOjo0gZFT1r166FlZWV/MErAtLT0yGVKvZc6ujoQCbTTqFX1Onp6cHGxgaODR9o7RympqZo3LgxpFIp/P391Z7mTk9PDw0bNkRkZCS8vb0B5PwcjYyMxOjRozWYsWax0C1B/P398dtvv+GPP/6AiYkJnj59CgAwMzODoaGhyNmJKygoCJ07d0alSpXw+vVr/Pbbbzh+/DgOHTokdmqiMzExURrHbWRkhPLly5f68d0TJ05Et27d4OjoiCdPniA4OBg6Ojro16+f2KmJbsKECWjWrBlCQkLg4+ODf/75BytXrsTKlSvFTq1IkMlkWLt2LXx9faGryx+1ubp164bZs2ejUqVKqFWrFi5cuICFCxdiyJAhYqcmCgMDA9y/fx+ZmZlaO4eenl6Bh6WlpqYq/MXq/v37iI2NhYWFBSpVqoSAgAD4+vqiUaNGaNy4McLCwpCWliafhaFIEqjEAJDntnbtWrFTE92QIUMER0dHQU9PT6hQoYLg6ekpHD58WOy0iqzWrVsL48aNEzsN0fXt21ewtbUV9PT0BHt7e6Fv377CnTt3xE6ryNi7d69Qu3ZtQV9fX6hRo4awcuVKsVMqMg4dOiQAEG7evCl2KkVKSkqKMG7cOKFSpUqCgYGBUKVKFWHKlClCRkaG2KmRIAjHjh3Ls47w9fWVH7N48WKhUqVKgp6entC4cWPh3Llz4iVcABJBKOXLkRARERFRicR5dImIiIioRGKhS0REREQlEgtdIiIiIiqRWOgSERERUYnEQpeIiIiISiQWukRERERUIrHQJSIiIqISiYUuEREREZVILHSJiEoIiUSC3bt3q/y+mzdvwsbGBq9fvwYArFu3DuXKlcv3+GvXrqFixYpIS0tTM1Mios+DhS4RyT179gyjRo1CpUqVoK+vDxsbG3Ts2BFnzpwRO7UiQ91iUpOmT5+OevXqaSxeUFAQxowZAxMTkwId7+rqiiZNmmDhwoUay4GISBtY6BKRXK9evXDhwgWsX78et27dwp49e9CmTRu8ePFC7NRISx49eoR9+/bBz89PpfcNHjwYy5YtQ1ZWlnYSIyLSABa6RAQASEpKwqlTpzB37ly0bdsWjo6OaNy4MYKCgtC9e3eF44YNG4YKFSrA1NQU7dq1w8WLFxVizZkzB9bW1jAxMcHQoUMRGBio0APZpk0bjB8/XuE93t7eCsVWRkYGJk6cCHt7exgZGcHDwwPHjx+X78/98/qhQ4dQs2ZNGBsbo1OnToiPj1eIu2bNGtSqVQv6+vqwtbXF6NGjVboWVf3yyy+oWbMmDAwMUKNGDSxdulS+78GDB5BIJNi5cyfatm2LsmXLws3NDWfPnlWIsWrVKjg4OKBs2bLo0aMHFi5cKB9KsG7dOsyYMQMXL16ERCKBRCLBunXr5O99/vw5evTogbJly6Jq1arYs2fPR/PdunUr3NzcYG9vn+8xz549Q6NGjdCjRw9kZGQAANq3b4+XL1/ixIkTKt4hIqLPh4UuEQEAjI2NYWxsjN27d8uLmbz06dMHiYmJOHDgAKKjo9GgQQN4enri5cuXAHIKp+nTpyMkJATnz5+Hra2tQrFXUKNHj8bZs2exefNmXLp0CX369EGnTp1w+/Zt+THp6en48ccfsXHjRpw8eRKPHj3CxIkT5fuXLVsGf39/jBgxApcvX8aePXvg4uJS4GtR1a+//opp06Zh9uzZuH79OkJCQjB16lSsX79e4bgpU6Zg4sSJiI2NRbVq1dCvXz95z+iZM2fwzTffYNy4cYiNjUX79u0xe/Zs+Xv79u2L//znP6hVqxbi4+MRHx+Pvn37yvfPmDEDPj4+uHTpErp06YIBAwZ89HpOnTqFRo0a5bs/Li4OLVu2RO3atbF9+3bo6+sDAPT09FCvXj2cOnVKrXtFRPRZCERE/7N9+3bB3NxcMDAwEJo1ayYEBQUJFy9elO8/deqUYGpqKrx9+1bhfc7OzsKKFSsEQRCEpk2bCt9++63Cfg8PD8HNzU3+unXr1sK4ceMUjvnyyy8FX19fQRAE4eHDh4KOjo7w+PFjhWM8PT2FoKAgQRAEYe3atQIA4c6dO/L94eHhgrW1tfy1nZ2dMGXKlDyvtSDXkhcAwq5du/Lc5+zsLPz2228KbbNmzRKaNm0qCIIg3L9/XwAg/PLLL/L9V69eFQAI169fFwRBEPr27St07dpVIcaAAQMEMzMz+evg4GCF+/l+bt9//738dWpqqgBAOHDgQL7X4+bmJsycOVOhbe3atYKZmZlw48YNwcHBQRg7dqwgk8mU3tujRw/Bz88v39hERGJjjy4RyfXq1QtPnjzBnj170KlTJxw/fhwNGjSQ/2n84sWLSE1NRfny5eU9wMbGxrh//z7u3r0LALh+/To8PDwU4jZt2lSlPC5fvozs7GxUq1ZN4TwnTpyQnwcAypYtC2dnZ/lrW1tbJCYmAgASExPx5MkTeHp65nmOglyLKtLS0nD37l0MHTpUId4PP/ygFK9u3boKOefmC+TMgNC4cWOF4z98/THvxzYyMoKpqak8dl7evHkDAwODPNtbtmyJnj17YtGiRZBIJErHGBoaIj09vcC5ERF9brpiJ0BERYuBgQHat2+P9u3bY+rUqRg2bBiCg4Ph5+eH1NRU2NraKoyVzfWx6ag+JJVKIQiCQtu7d+/k/05NTYWOjg6io6Oho6OjcJyxsbH832XKlFHYJ5FI5HENDQ0/moOmruX9eEDO+NoPC/0Pr+H9vHMLSJlMpvI585LXPflYbEtLS7x69UqpXV9fH15eXti3bx8mTZqU5xjely9fKvyiQURU1LDQJaKPcnV1lU+n1aBBAzx9+hS6urpwcnLK8/iaNWvi77//xqBBg+Rt586dUzimQoUKCg+NZWdn48qVK2jbti0AoH79+sjOzkZiYiJatmypVt4mJiZwcnJCZGSkPO77CnItqrC2toadnR3u3buHAQMGqB2nevXqiIqKUmj78LWenh6ys7PVPsf76tevj2vXrim1S6VSbNy4Ef3790fbtm1x/Phx2NnZKRxz5coV9O7dWyN5EBFpAwtdIgIAvHjxAn369MGQIUNQt25dmJiY4Pz585g3bx6+/PJLAICXlxeaNm0Kb29vzJs3D9WqVcOTJ0+wf/9+9OjRA40aNcK4cePg5+eHRo0aoXnz5vj1119x9epVVKlSRX6udu3aISAgAPv374ezszMWLlyIpKQk+f5q1aphwIABGDRoEBYsWID69evj2bNniIyMRN26ddG1a9cCXdP06dPxzTffwMrKCp07d8br169x5swZjBkzpkDXkp/79+8jNjZWoa1q1aqYMWMGxo4dCzMzM3Tq1AkZGRk4f/48Xr16hYCAgALlPGbMGLRq1QoLFy5Et27dcPToURw4cEBh6ICTk5M8h4oVK8LExET+kJiqOnbsiGHDhiE7O1up51lHRwe//vor+vXrh3bt2uH48eOwsbEBkDODxOPHj+Hl5aXWeYmIPguxBwkTUdHw9u1bITAwUGjQoIFgZmYmlC1bVqhevbrw/fffC+np6fLjUlJShDFjxgh2dnZCmTJlBAcHB2HAgAHCo0eP5MfMnj1bsLS0FIyNjQVfX1/hu+++U3h4KjMzUxg1apRgYWEhWFlZCaGhoQoPo+UeM23aNMHJyUkoU6aMYGtrK/To0UO4dOmSIAj//8DU+3bt2iV8+LG2fPlyoXr16vIYY8aMUelaPgQgz+3UqVOCIAjCr7/+KtSrV0/Q09MTzM3NhVatWgk7d+4UBOH/H0a7cOGCPN6rV68EAMKxY8fkbStXrhTs7e0FQ0NDwdvbW/jhhx8EGxsbha9Vr169hHLlygkAhLVr18pz+/BBOTMzM/n+vLx7906ws7MTDh48KG/78N6+e/dO6Nmzp1CzZk0hISFBEARBCAkJETp27JhvXCKiokAiCB8MlCMi0rDp06dj9+7dSr2gVDDDhw/HjRs3tDaVV3h4OPbs2YNDhw4V6PjMzExUrVoVv/32G5o3b66VnIiINIFDF4iIipgff/wR7du3h5GREQ4cOID169erNRdxQY0cORJJSUl4/fp1gZYBfvToEf773/+yyCWiIo+FLhFREfPPP/9g3rx5eP36NapUqYKff/4Zw4YN09r5dHV1MWXKlAIf7+LiorDwBhFRUcWhC0RERERUInHBCCIiIiIqkVjoEhEREVGJxEKXiIiIiEokFrpEREREVCKx0CUiIiKiEomFLhERERGVSCx0iYiIiKhEYqFLRERERCXS/wHGWchtnX//zQAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Example using the new 3D sweep (k, h, f)\n", - "new_sweep_dir = \"/home/facosta/group-agf/sweeps/sweep_mlp_scaling_20251212_172318\"\n", - "\n", - "# Define parameter values for the new sweep\n", - "k_values_new = [2, 3, 4, 5, 6, 7, 8]\n", - "hidden_dims_new = [6, 36, 216, 1296, 7776, 46656]\n", - "num_frequencies = 3 # Set this to the frequency value you want to visualize\n", - "\n", - "# Load convergence data for a specific frequency\n", - "reduction_threshold = 0.5\n", - "conv_grid_new, conv_std_new = load_sweep_results_grid_convergence_3d(\n", - " new_sweep_dir,\n", - " k_values_new,\n", - " hidden_dims_new,\n", - " reduction_threshold=reduction_threshold,\n", - " num_frequencies=num_frequencies,\n", - ")\n", - "\n", - "# Plot the heatmap\n", - "plt.figure(figsize=(8, 6))\n", - "cmap = plt.cm.viridis_r.copy()\n", - "cmap.set_bad(color=\"black\")\n", - "plt.imshow(conv_grid_new, aspect=\"equal\", cmap=cmap, norm=LogNorm())\n", - "\n", - "plt.xlabel(\"Sequence Length (k)\")\n", - "plt.ylabel(\"Hidden Dimension\")\n", - "plt.xticks(range(len(k_values_new)), k_values_new)\n", - "plt.yticks(range(len(hidden_dims_new)), hidden_dims_new)\n", - "plt.gca().invert_yaxis()\n", - "\n", - "plt.colorbar(label=f\"Steps to {reduction_threshold*100}% Convergence\")\n", - "plt.title(f\"Steps to Convergence (f={num_frequencies}, black = did not converge)\")\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "44a4e9c7", - "metadata": {}, - "source": [ - "## num_freq = 4" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "e77f1a4e", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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0kns6BIRERFJiOvoag8LXSIiIiIpCdDO79hlWohZwnDqAhERERHpJHZ0iYiIiKTE5cW0hh1dIiIiItJJ7OgSERERSYg3o2kPO7pEREREpJPY0SUiIiKSkgDtPNyBDV12dImIiIh0mZ+fH7y9vREZGSl1Kh8cO7pEREREUtLyqguxsbGwtLTUfPwSgIUuERERkYREvbxNG3FLO34ERERERKST2NElIiIikhIfGKE17OgSERERkU5iR5eIiIhIQqKQt2kjbmnHji4RERER6SR2dImIiIikxDm6WsOOLhERERHpJHZ0Nez2qwxYvOK/H970ILec1CkUWxm5xlKnUGyZPs6VOgUiIu3jI4C1hoUuERERkYREQYCohWkG2ohZ0rD1SEREREQ6iR1dIiIiIinpQTutR7Yz+REQERERkW5iR5eIiIhIQpyjqz3s6BIRERGRTmJHl4iIiEhKXF5Ma9jRJSIiIiKdxI4uERERkYREIW/TRtzSjoUuERERkZQEIW/TRtxSjlMXiIiIiEgnsaNLREREJCERWpq6oPmQJQ47ukRERESkk9jRJSIiIpISlxfTGnZ0iYiIiEgnsaNLREREJCU9IW/TRtxSjh1dIiIiItJJ7OgSERERSYgPjNAeFrpEREREUuLNaFrDqQtEREREpDGZmZlwc3NDaGio1Kmwo0tEREQkJV2bujB37lw0aNBAmpO/gR1dIiIiItKIa9eu4fLly+jQoYPUqQBgoUtEREQkLUHQ3qaCo0ePonPnznB2doYgCNi+fbvSMZGRkXB3d4eJiQn8/f1x+vRphf2hoaEIDw9/n09Do1joEhERERGeP38OX19fREZGFrh/w4YNCAkJQVhYGOLi4uDr64t27dohJSUFAPD777+jSpUqqFKlyodM+604R5eIiIhIQtqeo5uenq4wbmxsDGNjY6XjO3To8NYpB4sXL8bw4cMxePBgAMDy5cuxa9curFq1ClOnTsWpU6ewfv16bNq0CRkZGXj16hUsLS0xc+ZMzV2UitjRJSIiItJhrq6usLKykm/qTC3Izs7G2bNnERAQIB/T09NDQEAATp48CQAIDw9HUlISbt++jW+++QbDhw+XtMgF2NElIiIikpaW19FNSkqCpaWlfLigbu67PHr0CLm5uXBwcFAYd3BwwOXLl98rTW1ioUtEREQkIW1PXbC0tFQodD+EoKCg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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Example using the new 3D sweep (k, h, f)\n", - "new_sweep_dir = \"/home/facosta/group-agf/sweeps/sweep_mlp_scaling_20251212_172318\"\n", - "\n", - "# Define parameter values for the new sweep\n", - "k_values_new = [2, 3, 4, 5, 6, 7, 8]\n", - "hidden_dims_new = [6, 36, 216, 1296, 7776, 46656]\n", - "num_frequencies = 4 # Set this to the frequency value you want to visualize\n", - "\n", - "# Load convergence data for a specific frequency\n", - "reduction_threshold = 0.5\n", - "conv_grid_new, conv_std_new = load_sweep_results_grid_convergence_3d(\n", - " new_sweep_dir,\n", - " k_values_new,\n", - " hidden_dims_new,\n", - " reduction_threshold=reduction_threshold,\n", - " num_frequencies=num_frequencies,\n", - ")\n", - "\n", - "# Plot the heatmap\n", - "plt.figure(figsize=(8, 6))\n", - "cmap = plt.cm.viridis_r.copy()\n", - "cmap.set_bad(color=\"black\")\n", - "plt.imshow(conv_grid_new, aspect=\"equal\", cmap=cmap, norm=LogNorm())\n", - "\n", - "plt.xlabel(\"Sequence Length (k)\")\n", - "plt.ylabel(\"Hidden Dimension\")\n", - "plt.xticks(range(len(k_values_new)), k_values_new)\n", - "plt.yticks(range(len(hidden_dims_new)), hidden_dims_new)\n", - "plt.gca().invert_yaxis()\n", - "\n", - "plt.colorbar(label=f\"Steps to {reduction_threshold*100}% Convergence\")\n", - "plt.title(f\"Steps to Convergence (f={num_frequencies}, black = did not converge)\")\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "aa9ae86c", - "metadata": {}, - "source": [ - "## num_freq = 5" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "0ce18ab9", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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TJiA0aNHIyYmRmHBiPXr12PmzJlqJ0JERERUGml71oWSsGBEZmYm7OzslNptbW2RmZmpdlyVC91p06ahUqVKWLFiBX755RcAQI0aNRAWFob+/furnQgRERERlU6NGzdGcHAwNm7cKB8h8PLlS8yZM0c++YE61JpHt3///ixqiYiIiDRBW+NpS9AY3eXLl6Njx45wdnaGl5cXAODSpUswMTHBoUOH1I7LJbyIiIiIxCT5b9NG3BLC09MT8fHx2Lx5M65duwYAGDhwIAYPHgxTU1O14xap0LWyssKNGzdgbW2NcuXKvXPxiGfPnqmdDBERERGVPidPnkSTJk0wcuRIhfacnBycPHkSLVq0UCtukQrd7777DhYWFgDyupaJiIiISDO0NRVYSZperHXr1nj48CFsbW0V2lNTU9G6dWv53LqqKlKh6+fnV+DXREREREQfShCEAkcMPH36FGZmZmrHLfIY3bS0tCIdV9ynryAiIiIqTkrzEN3evXsDACQSCfz9/WFsbCzfl5ubi7///htNmjRRO36RC92yZcu+c2xufiWubtcyEREREZUuUqkUQF4daWFhofDgmZGRERo1aqQ0blcVRS50jx8/Lv9aEAR07twZP//8M5ycnNQ+OREREVFpV5rH6IaFhQEA3NzcMGnSpA8aplCQIhe6LVu2VHitr6+PRo0aoVKlShpNiIiIiIg0x9vbG/r6+ggMDERgYKDY6RQoODhYK3E5jy4RERGRiPKWANZGj27e/5eEJYC1RU/sBIiIiIiItOGDenTf9XAaEREREb1fXo+uduKWdkUudPOnf8j36tUrfP7550qDhnft2qWZzIiIiIhKAT2JAD0tDF0QSsDDaO+SkpKCsmXLflCMIg9dkEqlCtunn34KR0dHpXYiIiIiIlUsXrwYW7dulb/u378/ypcvDycnJ1y6dEntuEXu0c2f/oGIiIiINKc0Ty+Wb/Xq1di8eTMAICIiAhEREThw4AC2bduGyZMn4/Dhw2rF5awLRERERCSqpKQkuLi4AAD27duH/v37o3379nBzc4OPj4/acTnrAhEREZGI8nt0tbGVFOXKlUNiYiIA4ODBg/D19QWQt0jZh6y6yx5dIiIiIhJV7969MWjQIFSpUgVPnz5Fp06dAAAXL16Eu7u72nFZ6BIRERGJiNOLAd999x3c3NyQmJiIb775Bubm5gCA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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Example using the new 3D sweep (k, h, f)\n", - "new_sweep_dir = \"/home/facosta/group-agf/sweeps/sweep_mlp_scaling_20251212_172318\"\n", - "\n", - "# Define parameter values for the new sweep\n", - "k_values_new = [2, 3, 4, 5, 6, 7, 8]\n", - "hidden_dims_new = [6, 36, 216, 1296, 7776, 46656]\n", - "num_frequencies = 5 # Set this to the frequency value you want to visualize\n", - "\n", - "# Load convergence data for a specific frequency\n", - "reduction_threshold = 0.5\n", - "conv_grid_new, conv_std_new = load_sweep_results_grid_convergence_3d(\n", - " new_sweep_dir,\n", - " k_values_new,\n", - " hidden_dims_new,\n", - " reduction_threshold=reduction_threshold,\n", - " num_frequencies=num_frequencies,\n", - ")\n", - "\n", - "# Plot the heatmap\n", - "plt.figure(figsize=(8, 6))\n", - "cmap = plt.cm.viridis_r.copy()\n", - "cmap.set_bad(color=\"black\")\n", - "plt.imshow(conv_grid_new, aspect=\"equal\", cmap=cmap, norm=LogNorm())\n", - "\n", - "plt.xlabel(\"Sequence Length (k)\")\n", - "plt.ylabel(\"Hidden Dimension\")\n", - "plt.xticks(range(len(k_values_new)), k_values_new)\n", - "plt.yticks(range(len(hidden_dims_new)), hidden_dims_new)\n", - "plt.gca().invert_yaxis()\n", - "\n", - "plt.colorbar(label=f\"Steps to {reduction_threshold*100}% Convergence\")\n", - "plt.title(f\"Steps to Convergence (f={num_frequencies}, black = did not converge)\")\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "f8585f79", - "metadata": {}, - "source": [ - "### Grid plot: Convergence vs k for different num_frequencies, across different hidden dimensions\n" - ] - }, - { - "cell_type": "code", - "execution_count": 65, - "id": "97c43fc0", - "metadata": {}, - "outputs": [], - "source": [ - "def plot_convergence_vs_k_grid_by_frequency(\n", - " sweep_dir: str,\n", - " k_values: list,\n", - " hidden_dims: list,\n", - " num_frequencies_values: list,\n", - " reduction_threshold: float = 0.99,\n", - " figsize=(18, 12),\n", - " log_x=False,\n", - " log_y=True,\n", - " save_path=None,\n", - " show=True,\n", - "):\n", - " \"\"\"\n", - " Create a grid of plots showing convergence vs k for different frequencies.\n", - "\n", - " Each subplot corresponds to a different hidden dimension.\n", - " Within each subplot, different curves represent different num_frequencies values.\n", - "\n", - " Args:\n", - " sweep_dir: Path to the sweep directory\n", - " k_values: List of k (sequence length) values\n", - " hidden_dims: List of hidden dimension values (one subplot per hidden dim)\n", - " num_frequencies_values: List of num_frequencies values to compare\n", - " reduction_threshold: Threshold for convergence definition\n", - " figsize: Figure size tuple\n", - " log_x: Whether to use log scale for x-axis\n", - " log_y: Whether to use log scale for y-axis\n", - " save_path: Where to save the plot\n", - " show: Whether to display the plot\n", - "\n", - " Returns:\n", - " fig, axes: Matplotlib figure and axes objects\n", - " \"\"\"\n", - " sweep_path = Path(sweep_dir)\n", - "\n", - " # Determine grid layout (2x3 or 3x2 based on number of hidden dims)\n", - " n_plots = len(hidden_dims)\n", - " if n_plots == 6:\n", - " nrows, ncols = 2, 3\n", - " elif n_plots == 4:\n", - " nrows, ncols = 2, 2\n", - " else:\n", - " # General case: aim for squarish layout\n", - " ncols = int(np.ceil(np.sqrt(n_plots)))\n", - " nrows = int(np.ceil(n_plots / ncols))\n", - "\n", - " fig, axes = plt.subplots(nrows, ncols, figsize=figsize)\n", - " axes_flat = axes.flatten() if n_plots > 1 else [axes]\n", - "\n", - " # Use a nice colormap for different frequencies\n", - " colors = plt.cm.viridis(np.linspace(0.15, 0.85, len(num_frequencies_values)))\n", - "\n", - " for idx, h in enumerate(hidden_dims):\n", - " ax = axes_flat[idx]\n", - "\n", - " # For each frequency, plot convergence vs k\n", - " for f_idx, num_freq in enumerate(num_frequencies_values):\n", - " convergence_steps_for_k = []\n", - " k_values_converged = []\n", - "\n", - " for k in k_values:\n", - " exp_name = f\"k{k}_h{h}_f{num_freq}\"\n", - " exp_dir = sweep_path / exp_name\n", - "\n", - " if not exp_dir.exists():\n", - " continue\n", - "\n", - " # Collect convergence steps from all seeds\n", - " convergence_steps = []\n", - " for seed_dir in exp_dir.glob(\"seed_*\"):\n", - " loss_file = seed_dir / \"train_loss_history.npy\"\n", - " if loss_file.exists():\n", - " loss_history = np.load(loss_file)\n", - " initial_loss = loss_history[0]\n", - "\n", - " if initial_loss > 0:\n", - " reductions = 1 - loss_history / initial_loss\n", - " converged_mask = reductions >= reduction_threshold\n", - " if np.any(converged_mask):\n", - " step = np.argmax(converged_mask)\n", - " convergence_steps.append(step)\n", - "\n", - " # Take mean across seeds if any converged\n", - " if convergence_steps:\n", - " k_values_converged.append(k)\n", - " convergence_steps_for_k.append(np.mean(convergence_steps))\n", - "\n", - " # Plot this frequency's curve\n", - " if len(k_values_converged) > 0:\n", - " ax.plot(\n", - " k_values_converged,\n", - " convergence_steps_for_k,\n", - " color=colors[f_idx],\n", - " marker=\"o\",\n", - " markersize=6,\n", - " linewidth=2,\n", - " label=f\"f={num_freq}\",\n", - " markeredgewidth=0.5,\n", - " markeredgecolor=\"white\",\n", - " )\n", - "\n", - " # Formatting for this subplot\n", - " ax.set_xlabel(\"Sequence Length (k)\", fontsize=11)\n", - " ax.set_ylabel(\"Steps to Convergence\", fontsize=11)\n", - " ax.set_title(f\"h = {h:,}\", fontsize=13, fontweight=\"bold\")\n", - "\n", - " if log_y:\n", - " ax.set_yscale(\"log\")\n", - " if log_x:\n", - " ax.set_xscale(\"log\")\n", - " else:\n", - " # Make k values discrete on x-axis\n", - " ax.set_xticks(k_values)\n", - " ax.set_xticklabels(k_values)\n", - "\n", - " ax.grid(True, alpha=0.3, which=\"both\", linestyle=\"--\", linewidth=0.5)\n", - " ax.legend(fontsize=9, framealpha=0.9, loc=\"best\")\n", - "\n", - " # Hide any unused subplots\n", - " for idx in range(n_plots, len(axes_flat)):\n", - " axes_flat[idx].axis(\"off\")\n", - "\n", - " # Overall title\n", - " fig.suptitle(\n", - " f\"Convergence vs Sequence Length by Number of Frequencies\\n\"\n", - " f\"({reduction_threshold*100:.0f}% Loss Reduction Threshold)\",\n", - " fontsize=16,\n", - " fontweight=\"bold\",\n", - " y=0.995,\n", - " )\n", - "\n", - " plt.tight_layout()\n", - "\n", - " if save_path:\n", - " plt.savefig(save_path, dpi=150, bbox_inches=\"tight\")\n", - " print(f\"Saved to {save_path}\")\n", - "\n", - " if show:\n", - " plt.show()\n", - " else:\n", - " plt.close()\n", - "\n", - " return fig, axes" - ] - }, - { - "cell_type": "code", - "execution_count": 66, - "id": "acd00a0a", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Saved to convergence_vs_k_by_frequency_grid.pdf\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAABv4AAASuCAYAAAAK4l72AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs3Xd8U1XjBvAnSZMmaVZpgbLassseMkT2EpmiiOIEUdRX8XVvEXErDlBRnDhe91bUnwMBRUCWIMoQEWSW2TYdaZtxfn/UXHKzmranTVue7+fTD725596cPD25OdyTe49GCCFARERERERERERERERERHWaNt4VICIiIiIiIiIiIiIiIqKq48AfERERERERERERERERUT3AgT8iIiIiIiIiIiIiIiKieoADf0RERERERERERERERET1AAf+iIiIiIiIiIiIiIiIiOoBDvwRERERERERERERERER1QMc+CMiIiIiIiIiIiIiIiKqBzjwR0RERERERERERERERFQPcOCPiIiIiIiIiIiIiIiIqB7gwB8RERGp7NmzB3PmzMGwYcPQtGlTGI1GGI1GNG/eHKNGjcKjjz6KPXv2xLuaRLXG7t27cfPNN6NHjx6w2+3Q6/VISUlB27ZtMXjwYMycORMvvPACiouL411VqgbLli2DRqNRfjIzM+NdpVplyJAhqnx2794tbd+7d+9W7XvIkCHS9l1VmZmZqroZjcawn52vvfaaqty0adNqvrKVFFz3e++9N95VipslS5Zg7NixaNy4MRISEpRMJk6cGNP2we+TaD/XX399tb4Wqjp+JhAREVG8JcS7AkRERFQ7lJSU4NZbb8Vzzz0Hj8cTsn7//v3Yv38/vv32Wzz66KM4fvx4HGpJVLt89tlnuOCCC1BUVKR6/Pjx4zh+/Dj++usv/PjjjwCAsWPHonnz5vGoJpF0Go1G+T0jI0PqgF59VFJSgnvvvRevvvpqvKtCkn3//fcYNWoUfD5fvKtCRERERASAA39EREQEoLi4GCNHjsSKFStUj1utVvTq1QsWiwWHDx/Gpk2bUFxczJNbRAAOHDiACy+8UDXo17p1a7Rt2xYJCQnIzs7GH3/8AZfLFcdaElFt8cYbb+DWW29FVlZWvKtCEr388suqflGrVq3QtWtX6HQ69OnTp1L77NWrFzIyMsKu6969e6X2STVn0qRJyu+NGjWKY02IiIjoZMWBPyIiIsLMmTNVg34ajQb33HMPbr/9dhiNRuVxl8uFd955B/PmzYtDLYlql/feew+FhYXK8ty5c3HzzTerypSWluKnn37C//73P+j1+pquIhHVIl6vF3fddRc++uijeFeFJDp06JBq+auvvkL79u2rtM9rrrmmTt32ldQ+/PDDeFeBiIiITnKc44+IiOgk9/vvv2PRokWqx+bMmYN7771XNegHACaTCdOnT8fatWvD7mvJkiW48MIL0bp1ayQlJcFoNCI9PR1nn302Pvroo7BXCoabIyg7OxvXXXcdWrZsicTERKSlpeHSSy/F/v37Vdt27txZNX9STk5OyP6/+eYb1f6vvPJK1XqPx4O3334bEyZMQPPmzWE0GmG1WtGlSxfccsst2LdvX9jXGjx/kxACL730Evr27QubzRYyl9W+fftw+eWXo2nTpkhMTESrVq1w4403IicnB9OmTVPta9myZSHPJ6ueAPDRRx9h6NChsNvtMJlMOOWUU/Dmm2+G3R4AhBD4/PPPMWXKFLRu3RoWiwUmkwnp6ekYPXo0nn/++bDb/fTTT5g6dSratm0Li8UCo9GIli1bYurUqRHbUCRr165VvY5zzz03bLnzzz9fVW7VqlXKum+++QbnnnsuWrVqBbPZDIPBgLS0NHTt2hUXX3wx5s+fj/z8/Jjr9Oeff6qWhw8fHlLGYDBg+PDhWLRoERo3bhx2PwcPHsTs2bNx6qmnokGDBtDr9UhNTcWIESPwyiuvwO12R6zD559/jsGDB8NqtcJqtaJfv37K3zLaHEP33nuvav1rr72mWh/r3Gk7d+5U5jd0OBxKpuPGjcOHH34IIUTINlV5zwfav38/Zs+ejf79+yM1NVWZW7Fr1664+uqrsX379pBtcnNzMXfuXAwePFjZpkGDBhgwYACeeuop1UBuTalMncL9fUpKSvD444+jW7duMJlMsNvtOOOMM7B69eqIz/3VV19hyJAhFWo/gccSv3/++adCc1qtXLkSEyZMQEpKCoxGIzp16oSnnnoqbHupKLfbjblz56JLly4wmUxISUnBpEmTsGnTJlW5K664QlXn7777LmRfhw8fhl6vV8r07t27yvX7+OOPK3T8K+/zIXiOyeDBonDbf/311xg6dChsNhuSk5Mxfvx4bNy4EUDZ8f65555D9+7dYTKZkJqaismTJ4cc7yI5cuQIrr32WmRkZCAxMREtWrTAtddeiyNHjkTcRtZxZNeuXZg2bRqaNWuGhISECg+crV27FpdffjmysrJgtVphMBjQpEkTjBkzBosWLUJpaamqvH9evuC/SVZWVsRjq0zhjgMFBQW466670L59exiNxpD3osvlwsKFCzFq1CikpaXBYDDAbrejV69emDNnDo4dOxbx+f744w9MnjwZDRs2hNFoRFZWFubMmQOXyxV1Ls/y2igQvq8SLJ7HysLCQjz//PMYPXq00o+z2Wxo06YNLrjgAnz77beq8rEcDyv72f/LL79g6tSpaN++PZKSkqDX69GwYUN07NgR5557LubOnYvs7OyIr4WIiIhOEoKIiIhOanfffbcAoPw0bNhQFBcXV2gfJSUl4rzzzlPtJ9zP0KFDRU5OjmrbRYsWqcqMGTNGpKSkhN0+IyNDtf28efNU659//vmQul144YWqMuvWrVPWHThwQPTp0ydqna1Wq/jss89C9puRkaEqd/HFF4dsu2vXLiGEEL///rto2LBh2P23atVKjBgxQvXY0qVLVc8ls56XXHJJxH089dRTIdsfPnxYDB48OOpzZ2RkqLZxu93i0ksvjbqNRqMRs2bNCnm+aLp3765sbzQaQ9qS0+kUJpNJKdO5c2dl3dy5c8ttnwDE5s2bY67Pf//7X9W23bt3F++99544dOhQzPv4+OOPhc1mi1qnPn36iOzs7JBt77///ojbXHHFFVH/RrNnz1atX7RokWr9rl27VOsHDx4c8vwLFiwQBoMhat1Hjx4tCgsLVdtV5T0fuA+z2Rz1uYNf008//STS0tKibtO2bVuxffv2WP50iqVLl0bNOprK1in479O5c2fRs2fPsNsnJiaK1atXhzz3Y489Vqn2E8v7KLB88PHjv//9r9BoNGG3u+666yqUfXAOvXv3FkOGDImYw9dff61su23bNlU9JkyYELL/+fPnq/bx8ssvx1y34GNvYA4jRoxQygW/H6ZOnaraz9SpU1Xrgz8fgttfedtPnDgxbD4mk0n88ssvYtKkSWHXN2jQQOzevVu17+C6X3jhhaJp06Zht09PT1c+EwPJOo5MmDAh5FganEUkPp9P3HDDDeW2627duol//vlH2a68z8Zwx6FIgvcVy3bB7b9bt26iS5cuEd+LW7ZsEe3atYta37S0NLFy5cqQ5/r2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rzzB79VFixYpt9z86quv8Morr0itW1UsWbIEX3/9tbK8adMm1ecDcCL/eB5HAg0fPlzVllevXq2a727//v2YO3euahvZfZiaENiXEELgmmuuUd1C0++3337DrFmzsHDhQuWx4PfME088obrS9IEHHgi7L7/gNrxixQpl8DA7OxtXX311xG3jeazUarUhfbArr7xSubW8X3Z2dszzPlblsx8Ann76aSxbtkw5XhsMBrRq1Qpnn302WrdurZQrKSlBbm5uTHUiIiKiekoQERHRSa+oqEgMGDBAAFD9WK1WMWzYMDFhwgRx6qmnCqPRKAAIu92u2n7q1Kmq7RISEkS/fv3E4MGDhclkUq0bOnSoattFixap1s+ePTukfoHrMzIywr6GZcuWhdQfgEhKShJ5eXkh5UtKSkSnTp1UZRMTE8Vpp50mzjzzTDF06FDRtGlTZd3UqVNV22dkZKi2jcTj8YiOHTuG1GnYsGGie/fuYeu8dOnSGqvn7NmzVesXLVqkrHO73aJHjx4h9WvXrp0YO3asGDx4sLBYLCF/kxkzZoRs061bNzF+/Hhx+umni3bt2gmtVhv171meadOmhc3uoosuClvebrcLACIlJUX0799fTJgwQYwZM0Y0adJEtX337t1jrsP999+v2rZVq1Zi5MiRYvz48aJbt24hdbvuuutU2y9fvlwkJCSoyjRp0kSMHDlSjBs3TvTu3VuYzeaw7WLZsmVCo9Gotk1PTxejRo1StYdI75t//vlH+Rv4f0wmk2jWrFnYXAcPHqza/q233gopk5mZKc444wwxZswY0b17d5GYmKis27Vrl7JtVd/zH3zwQdhj1YABA8T48eNF+/btQ9ry9u3bhcViUW3ToEEDMXToUDFhwgRx2mmnKW0keNvyLF26VLVfs9ksJk2aFPHn999/r3Kddu3aFfXvI4QQgwcPVpUJ/BusWLEi5O+fkZEhRo0aJdLS0sptP0KIkGNDu3btxMSJE8WkSZPE66+/HlM9hIitPUQSnIP/p3379uL0008XKSkpqscdDofIzs4Ou685c+aE7Eej0Yi//vor5voECj72Br/ul19+OWzdg4/hK1asCNveGzduHNP2wZ/PgccRIcr/+0T7DAn+2wEQWq1W9O3bVwwePFh1DAAgTjvtNNX21X0ciVXw5yAA0bNnTzF8+HBhs9lUj2dlZYni4uIKZRiL4H3EcgyK5Tjgd/To0ZD3tsViEYMGDRITJkwQgwYNEqmpqWHzPHbsmGqd/700cuTIkP5NpAzatGkT0k7S09OFTqcLu32geB4rd+7cqdo3UNbH7dmzpxg/frzo3bu3SEhICHnfRTt+VuWz39+3sNlsom/fvmL8+PFi3LhxomXLlqr9paamCo/HE7E9EBERUf3HgT8iIiISQghRXFwsrr322ognYQJ/kpOTQ7Y955xzyt1u0KBB4tixY6ptZQ38CSGUE/6BP9OnT49Yfu/evaJXr17l1huAuOyyy1TbxjrwJ4QQv//+u2jYsGHY/fpPUAc+9vPPP9dYPaMN/AkhRHZ2dthB4Wh/k9LSUnHJJZfEVN/WrVtHzS6SlStXht3fjz/+GLZ88Im7cD8mk0ksWbIk5jo88MADMb1GAGLYsGGioKAgZB/vv/9+yInlSD8//fSTatv77rsvYtkbb7yx3PfNddddF3ZbjUYjZs6cqXos3MnSp59+WhgMhpjqvmfPHmU7Ge/5l156KeRLBcE/wW152bJlYQe1wv28+eabYf/m4QQP/JX3EzyAW5k6VfVkthBCPProoxGf67///a9quW3btiH7X7BgQcTtb7rpppjrIXPgr3v37hGPlQaDQSxevDjivo4ePao62Q5AjBw5Mua6BCtv4M/j8YT9zAoeQBBCiDPPPDPsa9Lr9eKqq66Kun1NDvxNnDgxZLDV/9O8eXPx999/h7y26jyOxMrn84Uc88L9dO7cOeygXl0Y+BNCiM2bN4u2bdvGlPX999+v2vbbb79VvvwV/DNgwADRu3fvqBl89NFHIV9W8f9MmjQp5AsrweJ5rFy1apVo0aJF1OesyMCfEJX/7A/3paLgH51OV6HPMCIiIqqfeKtPIiIiAgAkJibi6aefxs6dOzF79mwMHjwYaWlpSExMhMFgQLNmzTBy5Eg8/PDD2LhxY8i2H3zwAb755hucf/75aNmyJUwmk7LdmWeeiffeew9Lly5FgwYNqu01hJvbLdxtPv2aN2+O1atX491338VZZ52F9PR0GI1G6PV6pKamok+fPrjmmmvw+eef4/nnn690vTp16oQNGzbgsssuQ1paGgwGA1q2bImbb74Za9asQVFRkap88G2xaqqe4TRu3BjLly/Hxx9/jMmTJyMzMxMmkwmJiYlo3rw5Ro0ahVtvvVW1jV6vx+uvv44VK1Zg+vTp6NChAywWC3Q6HWw2Gzp37oyLLroIr776qnI7xorq169fyFyGHTp0wMCBA8OWf/PNN3HLLbdg4MCByMzMhNVqhU6ng91uR/fu3XH99ddj8+bNIbdAjObWW2/FkiVLcPfdd2PUqFFo3bo1LBYLtFotTCYTMjMzcdZZZ+Hdd9/F999/r5pXzW/y5MnYvn077rvvPgwYMAApKSlISEiA0WhERkYGRo0ahfvvvx+bN2/GgAEDVNvOmjULn332GQYOHIikpCRYLBb069cP77zzDp544oly6//UU0/hqaeeQseOHWEwGOBwODB69GgsX75cNcdZJNdeey22bt2K2267Db1790ZycjJ0Oh3MZjNat26NCRMm4PHHH8fff/8d820NY3X55Zdj+/btuPvuu3HqqaeiQYMGSEhIQHJyMjp37oyrrroK/fr1U20zePBgbNu2DU899RSGDx+ORo0aQa/XIzExEc2aNcPQoUNx1113YfXq1bjooouk1jeSeNbp1ltvxZdffonBgwfDYrGo2s9///tfVdngYxIAXH311XjuuefQo0cP1a1348lut+Onn37CnDlzkJWVhcTERCQnJ2PixIlYvXo1xo4dG3HblJSUkNteX3XVVdVWV51OhwceeCCmsu+99x5mzZqF1q1bK8f9c845B+vXr8d5551XbXWsqG7dumHTpk24/PLL0axZM+j1ejRr1gxXX3011q1bF3ZuvHgeR/w0Gg2eeeYZrFq1CtOnT0e7du2QlJQEvV6Pxo0bY9SoUXjppZewbt06ZGZmVksdakLnzp2xadMmvPTSSxgzZgyaNm2KxMRE5XX2798fN910E5YsWYI777xTte3IkSOxdu1anHPOOUhJSUFiYiKysrLwwAMPYMmSJeUeA84++2x8+eWXGDBgAMxmM8xmM3r37o1XXnkFH3zwgTL/bSTxPFaeeuqp2LJlC5599lmcfvrpSj/OYrGgdevWmDJlSoVvW17Zz/558+bh7rvvxogRI9CqVSvY7XZotVpYLBZ06tQJM2bMwLp162rsM4yIiIhqL40Q/050QkRERETVIi8vDz6fD8nJySHr/u///g9jx46Fz+cDALRp0wY7duyo6SpSPRQ412JGRgZ2794dv8pQrbN37140bdoUOp1O9bjX68Wll16KN998U3nsgQcewF133VXTVaxxkydPxocffggAaNasGXbv3o2EhIQ414qo9hsyZAiWL1+uLO/atatOD5ISERER1XX8XwwRERFRNfv1118xcuRI9O/fH+3bt0ejRo2Qn5+PzZs344cfflCVfeihh+JUSyI6mcyaNQuLFy/G0KFD0axZM1itVhw6dAjfffedapC4adOmmDlzZvwqWs1eeuklHDt2DL/++qsy6AcAN998Mwf9iIiIiIioTuL/ZIiIiIhqgMfjwfLly1XfiA9kNBrx+OOPY/LkyTVcMyI6WR07dkw12BWsffv2+Pjjj2G322uwVjXrwQcfxD///KN6rH///rjmmmviVCMiIiIiIqKq4cAfERERUTXr2LEj7r33Xvz000/YsWMHjh49Co/HA7vdjvbt22PYsGGYPn06MjIy4l1VIjpJTJ8+HWazGatWrcKBAweQk5MDvV6PRo0aoXv37pg4cSKmTJmCxMTEeFe1RhgMBqSnp+O8887D7bffXu6cY0RERERERLUV5/gjIiIiIiIiIiIiIiIiqge08a4AEREREREREREREREREVUdB/6IiIiIiIiIiIiIiIiI6gEO/BERERFRvbNjxw4kJiZCo9FAp9Nhy5YtqvWvvfYaNBpNuT9GozHic3g8Hrz44osYPnw4GjVqBIPBgCZNmmDcuHF4//33I263Zs0ajB8/Hg0aNIDBYEDLli1x0003IT8/P2z5/fv3w263Q6PR4I033qhcIACmTZumem333ntvpfdVF2VmZob9G2u1WlitVmRlZeHiiy/GkiVL4lK/4L/PsmXL4lKPyli2bJmq7tOmTYt3lcoV6zEg3I//9QXvoz69p3bv3q16bUOGDKnR5w9+v1ZU4LaZmZmqdf/3f/+nrEtNTUVOTo6kWhMRERER1Q4c+CMiIiKieueGG25AaWkpAGDy5Mno2LGj1P0fPnwYffv2xZVXXokffvgBR44cgdvtRnZ2Nr788kucd955GDNmDIqKilTbrVixAgMGDMDixYuRn5+PlJQU7N69G08++SSGDBmi1DnQzJkz4XQ6MXLkSFxyySVSXwcBQggUFBRg+/bt+N///ocRI0bgxhtvjHe1aoV7771XNYDy2muvxbtKRFV2xhlnoE+fPgCAY8eO4Z577olzjYiIiIiI5EqIdwWIiIiIiGT6/vvv8eWXXyrLd911V7nbTJo0KezjBoMh5DGv14szzzwTGzZsUB5r2bIlOnXqhPXr1+PgwYMAgK+//hqXXXYZ3nnnHaXc3XffDbfbDZ1Oh3Xr1qFbt264+eab8cQTT2DDhg149913VYN7n3zyCT799FOYzWa88MIL5b94itmgQYPQsGFDOJ1OrFu3TnXVz1NPPYVzzjkHp512WhxrWHc0bNhQ9R7q3bt3HGsTm8zMzLDv+48++ki1PHr0aJjNZtVjdeH1UXR33nknJk6cCAB4/vnncc011yArKyu+lSIiIiIikoQDf0RERERUrzz++OPK76eccgq6dOlS7jYffvhhzPt/8803sXr1amV51KhR+OKLL6DX61FQUIABAwZg06ZNAIB3330XV199NQYOHAgAWLt2LQCga9eu6NatGwDgkksuwRNPPAGg7Dag/oG//Px8XHvttQCAOXPmoGXLljHXkco3Z84c5faFeXl56NmzJ/7++29l/VdffcWBvxh16tSpQu+h2mDIkCFhb18ZfFvJ5557LuRWkVT3jR07Fg0bNsSRI0fg9Xoxf/58PP/88/GuFhERERGRFLzVJxERERHVG3/++Se+/fZbZfniiy+W/hyvvPKKavnOO++EXq8HAFgsFlx//fWq9S+//HKlnueOO+7A/v370bNnT9xwww2V2odMa9euxeWXX46srCxYrVZlTsMxY8Zg0aJFYW9TCgC//PILpk6divbt2yMpKQl6vR4NGzZEx44dce6552Lu3LnIzs5WbbN3717cfPPN6NGjBxwOBxISEpCcnIw2bdpg9OjRuOeee/Drr79Ke212ux3jxo1TPXb06NGwZT0eD95++21MmDABzZs3h9FohNVqRZcuXXDLLbdg3759EZ9n7969uOyyy9C0aVMYjUa0adMGd9xxBwoKCqLWL5b51oYMGaIqs3v37pAybrcbb731FiZOnIj09HSYTCYkJSUhMzMTZ511Ft577z0AJ27xOWfOHNX2l156adhbf8Y6x19l2lC4fTudTsyaNQtZWVkwGo1ITU3FOeecg23btkXNsSYcP34cN910E1q1aoXExESkpaXh0ksvxf79+0PKhruV6saNG3HOOeegcePG0Ol0IfMG7ty5U/XeMBgMSEtLw7hx4/Dhhx9CCBG2Xt988w3OPfdctGrVCmazWdmua9euuPjiizF//vyI84z6eTwezJ8/Hz169IDZbIbdbscZZ5yh+iJEsGPHjuGhhx7CgAED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/fffDwB44YUXYDAYMH78eHz99deqcu+//z7efvttLF68GAkJ1del//777+FyuVR1P//885XlFi1a4JZbblFdifTFF1/gyiuvBABkZGTgr7/+AgC89dZbsNlsaN++Pdq0aYOWLVuicePGIfMwBl5RtnbtWtx3333o0qUL2rRpgzZt2iApKQljx46t8mv78ccfQx5r1KgR3n77bQwfPjxk3SeffKJa3rFjB84991zVYwaDASUlJQCA7777DiUlJUhMTMR3332nKjdjxgy0a9dOWb7iiivwxBNPYMeOHZV+PdF8/PHHquXHHnsM/fr1Uz2WkpKimvNMlqq2oWDNmjXD3XffrSz753jzXzUYbi69mtK3b1/V/IYTJkxQrS+vbsOHD8fVV1+teiwxMRHr1q3Dnj17lMfMZjNmzZqlKnfgwAHV8hdffIFTTjkFqampSEpKUq68e/bZZ1FYWIg2bdqgbdu2SE9PR0ZGBmbMmBG1bkajEY8//jh0Oh0AoH379mjfvj02b94MACgtLcXRo0fRpEkT+Hy+kGPmo48+CqPRCKDs6t9HH30Ur732mnL17i+//IIjR46gYcOGUevh9Xrxww8/qB576KGHlHlWzWYz7rvvvpAykQRedX3o0KGYtiEiIiIiqu048EdERERE9YJ/sM7PZrNFLHv22Wfj7LPPVj1mMpkwY8YMpKSkYNKkScrj33//PdxuN/R6PRwOh2qboqKikH0H3trOL3i7SK688kq4XC5MnToVI0aMwDPPPKMM+t1555245ZZb8Pjjj+PBBx/EN998g+eeew7//e9/Y9p3ZezevVu13KVLl5Ay/ttZ+u3atUv5/b777sOFF14IIQS2b9+O66+/XllnMpnQr18/TJs2DRdddJFyS8ObbroJH374IXJzc+F0OjF79mxlG51Oh65du+Kcc87Bf//7X1gsFgmv8oTDhw/jP//5D7799tuQ21gGvi4AIYN5wUpKSnDgwAG0bNlSdYtNIDRH/203q2vgz39bRb9Yb6koQ1XbULAePXqEDHbb7XZl4E/2bWAronfv3qplu92uWvYPCkcyZMiQsI8H57F//3589NFHUffl38ZgMGDWrFm4/fbbAQBr1qzBmjVrlHI2mw2DBg3CFVdcgfHjx0fcX5s2bZCcnKx6LNLrO3bsmPL38Nehffv2qrIOhwPp6enKFwOEENi9e3e5A39Hjx5VHXcNBoNqEB0AOnfuHHUfgQI/JwJvMUxEREREVJdp410BIiIiIiIZggfXAq/+q4gRI0aolv1XsgBAq1atlCtLgLITxcGDf8FX9WRmZipXukTz+uuvY8mSJWjYsCGeeOIJACfmDPOfvHc4HLjrrruU+c+Cr+SSLfjqRf/gXKzOP/98rFmzBjNmzEDbtm2h1Z7474fL5cIPP/yASy65BDfddJPyeFZWFn7//XfceeedOOWUU1TZeb1e/Prrr7jrrrswbNgwZf60yli6dClKS0uxfv169OzZU3l8x44dmDRpUpX27RduEFgGj8cT8lhtvVqpqm0oWEpKSshj/qvQ4i24bhWtV9OmTaXVJbDt3XbbbViyZAkuvPBCZGRkqP4GTqcTixcvxoQJE/D0009H3F9Fci/vqufaJC8vT/k9eGCTiIiIiKiu4sAfEREREdULZrMZVqtVWfYP1oXjdrsjrgt3tZH/qpDExET07dtXtS7w6hmg7JZ1gQYNGhS50gF19Q9+zZs3TznJ7r99X2pqqjIAZjKZQtZXl5YtW6qW/bf1C/Tbb79F3aZXr1548cUX8eeff8LlcmHnzp344IMPVIMczz33HIqLi5XlZs2a4cEHH8S6detQWFiI/fv347vvvsPAgQOVMmvXrsVPP/1Upden1+vRs2dPfP7556qrBzds2IBXXnkl6utavXo1hBBRf/xXHqWnp6u2/f3330PqsmXLloj19A/0+h07dky1fODAAezcuTPi9q1atVItL1++PGLZQFUdpAPktKGTReDAeKDgPM4444xy257/SwN+w4YNw//+9z/s3r0bhYWF2L59OxYtWqRq908++aSU15Gamqrab2lpKf78809VmdzcXNXtSzUaTchVtpH2bTabVfsOvlL2jz/+iLmugZ8TaWlpMW9HRERERFSbceCPiIiIiOqNU045Rfl9y5YtEa88ad++PRYsWIDc3FzV4wcOHMB//vMf1WM9evRAUlKSsnzZZZep1j/88MPKQGJ+fj6eeuop1frLL7+83HrfeOONOHbsGM444wxccMEFyuP+qxhzcnKUK9C8Xq9yW9PqvkJl+PDhMJlMyvLq1avx/vvvK8v79+/H3LlzVduMGzdO+f3pp5/GsmXLlCvUDAYDWrVqhbPPPhutW7dWypWUlCh/i08++QQfffQRCgoKAJQNhjRt2hQjRoxQDfwBUObmqqpmzZqprjoEgPvvv191a8bg+dpuuOEGHD58OGRff/31Fx599FHcd999ymPBV5G+9NJLyi0OAeDll18OGRgJlJqaqhr82759O5YuXQqgrM1dccUVUQezJ06cqFq+9dZbsWrVKtVjubm5+OCDD1SPBf7tgcrNn1fVNkRAz5490axZM2X522+/xRtvvBFSrri4GF999RXOPfdc7Nu3T3n8oYcewpo1a5TjoclkQrt27XD++eejUaNGSjlZ7yetVosxY8aoHrv99tuV95PP58Mdd9yhui1rnz59yr3NJ1B2lWHwLVHvuusupf27XC7V7YGjOXLkiOpK2eBbtRIRERER1VWc44+IiIiI6o1hw4Zh2bJlAMpu4bZ161Z07NgxpNyuXbswc+ZMXH/99ejSpQuaN2+OY8eOYcOGDaorzwCEnES++OKLsXDhQuXKvm+//Rbt27dHp06dsG7dOtXJ8ylTpoQMVgX7/vvv8eabbyIpKQkLFy5UrRsxYgTWrVsHl8uF119/HdOnT8frr7+u1HH48OGxBRPG+++/H/bKMwBo1KgRnnvuOTRo0AC33nor5syZo6w777zz8OijjyI5ORlr165V3VI1KysLl156qbL86quvYtOmTbDZbOjQoQMaNWoEIQT++OMP1ZWVqampykn/5cuXY/78+TAYDMjKykKzZs1gMBiwd+9ebNiwQVXPDh06VPr1B7v++usxf/58ZQBy3759eOmllzBz5kwAwLRp0/D0008rVxOtWrUK6enpOOWUU9CwYUM4nU5s375duQpz6tSpyr7POusstGvXThncO3r0KLp3746+ffsiLy8P69evj1o3g8GAQYMG4fvvvwdQdivF4cOHo0WLFjh48GDUQT+gbN7E119/HXv37gVQNpdh//790blzZ2RkZOD48ePYsGED+vbti8mTJyvbZWVlqfZz//33Y/ny5coVsP/73//KvY1tVdsQlQ2kPfbYY7jwwgsBlA2cTZ06FbNnz0ZWVha0Wi0OHDiArVu3KoNrjz32mLL9Y489hrvuugspKSnIyspCSkoKPB4Pfv31Vxw8eFApJ/P9NHv2bCxevFi5FfKnn36KVq1aoUuXLtixY4dq3kmtVouHH3445n3feuut+Prrr5WBzA8//BBr1qxBhw4dsHnz5pivhF65cqVqOXiAnoiIiIiozhJERERERPXEli1bBADl56mnngpbLrBMpJ/ExETx7LPPht3+0KFDokePHlG3Hz16tCgsLIxa36KiItG6deuIdT1y5IjIyMhQ9pmWlqb8npGRIY4ePRpzNlOnTo3pdfv37efz+cTMmTPL3aZz585i165dqufs1q1budvpdDrx5ptvKttcd911MdXxyiuvjPm1CyFUOQIQS5cuDSkzZ84cVZmmTZsKl8ulrN+7d6/o1atXTPW77LLLVPveuHGjaNCgQdiymZmZYujQoVHrt3r1amEwGMJuP2DAgJD2GPy32L59u+jUqVPUOg8ePFi1jcvlEunp6RHL5+fnCyGEWLp0qerxqVOnqvZTlTZU3r7D/W2rIrhOwfUJtGjRIlXZ2bNnR91f4PtKCCFmz56tWr9o0aKodXv66acjtoHgnz179ijb2e32csubTCaxZMkSZZtdu3ZFbRtCCDF48OCoWX3zzTcR23zg877xxhsh+y7vb3rfffdF3Of06dOj5u53zTXXKGWSkpJETk5O1PyJiIiIiOoK3uqTiIiIiOqNDh06YOTIkcry//73v7Dltm3bhocffhhjx45Fy5YtYTabodPp4HA40KtXL9x66634448/cM0114TdvlGjRlizZg0WLlyIIUOGICUlBXq9Ho0bN8aYMWPw7rvv4ssvv1TNRRXOfffdh507d6J3797473//G7I+NTUVq1evxuWXX44mTZrg6NGjaNKkCS6//HKsXr1ameuvOmk0GjzzzDNYtWoVpk+fjnbt2iEpKUl5vaNGjcJLL72EdevWhczRNW/ePNx9990YMWIEWrVqBbvdDq1WC4vFgk6dOmHGjBlYt24dLrroImWbq666Co899hjOOussZGVlITU1FQkJCTCZTGjZsiUmTZqETz/9NOTqSBmuv/561e1TDxw4gBdeeEFZbt68OVavXo13330XZ511FtLT02E0GqHX65Gamoo+ffrgmmuuweeff47nn39ete9u3bphw4YNmDZtGho3bgyDwYDMzExcf/31WL9+fcg8gMH69u2LH3/8EaNGjYLNZoPRaESXLl3w+OOP44cfflCuwoukXbt22LBhA15//XWMHz8ezZs3R2JiIsxmMzIyMnDmmWfiqquuUm1jNBrxww8/YMqUKUhLS4NOp4s1SpWqtCE64dprr8XWrVtx2223oXfv3khOToZOp4PZbEbr1q0xYcIEPP744/j777/RokULZbs333wTt9xyCwYOHIjMzExYrVbodDrY7XZ0794d119/PTZv3oxhw4ZJre/pp5+Obdu24f7770e/fv2QnJyMhIQE2Gw29OzZE7feeiu2bt2Kiy++uML7njVrFj777DMMHDgQSUlJSEpKQt++ffHaa6+FzM8ZjtvtxnvvvacsX3zxxcqtlYmIiIiI6jqNEBEmPiEiIiIiqoO+++47nH766cryb7/9hi5dusSxRkREVJt8+umnOOusswCUzRv4+++/h9zaloiIiIioruIVf0RERERUr4wcORJjxoxRlh988ME41oaIiGqbhx56SPn9P//5Dwf9iIiIiKhe4RV/RERERFTv7NixA507d0ZpaSm0Wi02b96Mjh07xrtaREQUZ19//bXy5ZCUlBTs2LFDdYtfIiIiIqK6jgN/RERERERERERERERERPUAb/VJREREREREREREREREVA9w4I+IiIiIiIiIiIiIiIioHuDAHxEREREREREREREREVE9wIE/IiIiIiIiIiIiIiIionqAA39ERERERERERERERERE9QAH/oiIiIiIiIiIiIiIiIjqAQ78EREREREREREREREREdUDHPgjIiIiIiIiIiIiIiIiqgc48EdERERERERERERERERUD3Dgj4iIiIiIiIiIiIiIiKge4MAfERERERERERERERERUT3AgT8iIiIiIiIiIiIiIiKieoADf0RERERERERERERERET1AAf+iIiIiIiIiIiIiIiIiOoBDvwRERERERERERERERER1QMc+CMiIiIiIiIiIiIiIiKqBzjwR0RERERERERERERERFQPcOCPiIiIiIiIiIiIiIiIqB7gwB8RERERERERERERERFRPcCBPyIiIiIiIiIiIiIiIqJ6gAN/RERERERERERERERERPUAB/6IiIiIiIiIiIiIiIiI6gEO/BERERERERERERERERHVAxz4IyIiIiIiIiIiIiIiIqoHOPBHRCete++9FxqNBhqNBtOmTYt3dYiIiIjign0iIiIiIvaJiKj+4MAfEVEd8Mknn2Ds2LFo1KgRDAYD0tLScNppp2H27NnxrhoRERFRtbvxxhsxaNAgNGvWDEajEYmJiWjevDkmTJiAzz//POJ22dnZuOWWW9CpUyckJSXBarWibdu2mDJlCtatW1eDr4CIiIio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S9JqtVLPnj2lOXPmSJ988klC21deeUWaOHGiZDAYJKvVKo0dO1b6zW9+I4XDYbnN2rVrpTFjxkharVYaOnSo9M4770ijR4+W5s6dG/dejz32mFRUVCSZTCbp0ksvlT766CMJgLRq1Sq5TSwWk5588klpxIgRklarlXJzc6UpU6ZIjz/+uNxm0aJFkslkSuirzWaTFi1aFPfYc889J40cOVLSarVSt27dpHPOOUfav3+//HxFRYV0/fXXS4WFhZJWq5V69+4tXXLJJdL69eubzLCkpEQCkPBHpVLJbVauXCnNnDlTMplMkslkkoYPHy794he/kJxOpyRJkrRq1SoJgLRp06a49z7//POlmTNnxj321FNPSUVFRZJer5dmzpwprVy5UgIgvfHGG3Kbbdu2STNmzJAsFosEQHr++eflvt5yyy1x77dixQoJgLR3794mf85zzz1XuvLKK+MeS5b/ihUrJLVaLT300EPyY7feeqs0Y8aMJt+fiIgoE7FWYq3EWomIiKhxrJVYK7FWIuo4CkmSpI4YYCQias6YMWMwZswYLFu2LN1d6ZT++c9/4oYbbsDevXvRp0+fdtvO22+/jSuvvBJVVVUwGo0tfl0kEkFxcTEeeeQRXHvtte3WPyIiomzFWql9sVYiIiLKbqyV2hdrJaLsoWy+CRERZZvq6mrcfvvtePPNN/HJJ5/g0UcfxZ133onzzz+/XYszADjnnHMwaNAg/OMf/2jV615++WWYzWZceeWV7dQzIiIiolqslYiIiIgax1qJKLtxjT8iok5Io9Fg9+7dePnll+F0OtGjRw9cc801ePTRR9t92wqFAk8//TS2bt3aqtcplUo899xzUKv5q4mIiIjaF2slIiIiosaxViLKbpzqk4iIiIiIiIiIiIiIiKgT4FSfRERERERERERERERERJ0AB/6IiIiIiIiIiIiIiIiIOgEO/BERERERERERERERERF1Ahz4IyIiIiIiIiIiIiIiIuoEOPBHRERERERERERERERE1Alw4I+IiIiIiIiIiIiIiIioE+DAHxEREREREREREREREVEnwIE/IiIiIiIiIiIiIiIiok6AA39EREREREREREREREREnQAH/oiIiIiIiIiIiIiIiIg6AQ78EREREREREREREREREXUCHPgjIiIiIiIiIiIiIiIi6gQ48EdERERERERERERERETUCXDgj4iIiIiIiIiIiIiIiKgT4MAfEWW0Bx54AAqFAgqFAvPmzUt3d4iIiIgyDuslIiIiItZERER1OPBHRJSit956C/Pnz8eoUaOgVqtTKjL//e9/y++Vl5cHjUaD7t2744wzzsAbb7yR9DVerxe///3vMWbMGJhMJhiNRowcORIPPvggPB5Po9vavXs3br75ZgwcOBAGgwF2ux1Dhw7FvHnzsHv37lb3nYiIiCiZ+ifhmvqzbNmyZt9r3759LXqvWbNmya+ZN29ei16zevXqhO2xXiIiIqL2Ul5ejm7dusXVI/v27UvatrKyEnfffTeGDx8Ok8kEi8WCgQMH4qc//Sk2b97cqu1Go1E8//zzOOWUU9CtWzfodDr06tULs2fPxtKlS+PaNlfHde/ePeVtEJF46nR3gIgo2z333HN48803hbzXDTfcgGAwGPfYsWPHsHLlSqxcuRL3338/fv/738c9N3PmTHz33Xdxr9m2bRu2bduGFStWYNWqVcjJyYl7fvny5bjqqqsQCATkxwKBAFwuF3788Udccskl6N+/v5CfiYiIiKglNBpNWt+r4WtYLxEREVF7kSQJ1113Haqrq5ttu27dOpx33nlwOBxxj+/atQu7du3C9OnTMWHChBZtt6amBhdccAE++eSTuMfLy8tRXl6OmpoaLFiwoOU/SJq2QURN48AfEVGKioqKcOmll2LChAl4//33sWrVqpTeb+zYsbjmmmswYsQIHDp0CA899BD27t0LAPjjH/+IG264AX369AEA3HffffKgX58+ffDII4/AaDTioYcewubNm7F161bceeedcVfQb9u2TT6JpVQqcdVVV+Gcc85Bt27dUFFRgc8++6zRK7aIiIiIWmv+/Pk49dRTEx5fuXIlfve73wEAzGYzzjrrrGbfq7CwEJ9++mnC48FgEOeeey78fj8A4LLLLpOfu//++3HDDTckvOaFF17AP/7xDwBASUkJJk+eLD/HeomIiIja09KlS7Fy5Uro9fq4i4waqqysxIUXXigP+p177rn46U9/ivz8fBw5cgSbN29GcXFxi7d78803ywNyffv2xW233YZhw4YhEAhg586dqKqqavS1TzzxBMaOHRv3WLKLrVLZBhGJwYE/IsoqmzZtwn333YeNGzdCpVJhzpw5ePLJJ5GXl9fsa4PBIDZt2tTibU2cOBE6na7Zdk8++aT89ffff9/i90/m9ddfx9lnnx332KhRozB+/HgAQCwWwxdffCEP/NW/0/C3v/0tLr/8cgBAt27dMG3aNADASy+9hMcee0zO6MEHH5SLyt/85jd44IEH4rZ39dVXp/QzEBERUXplWr1UXFyc9ITUfffdJ389f/78hBkKktHpdJg+fXrC488995w86JeXl4drr71Wfm7gwIEYOHBgXPtoNIprrrlG/v7222+HWn3iv8esl4iIiLJfptVEdbZv346FCxcCAB555BHccccdjbb985//jKNHjwIA5s6dmzA1+k9/+tMW93Hbtm146aWXANTWSxs3bkR+fn6LXz9y5MikdZjIbRCRGBz4I6KssXHjRrzyyisIhULyY//973/hcrnw/vvvN/v6iooKzJgxo8Xb27t3rzzA1lEaDvoBwODBg+O+N5vN8tf1p3kwmUxJ20QiEaxbtw4XXXQRQqEQ3n33Xfk5vV6PCRMm4Mcff4Rer8fs2bPx4IMPYtiwYUJ+HiIiIupY2VIvbdq0Sb5zT6VS4c4772z1e9T3+OOPy18vWLCg2RNvy5cvl9fQsdlscXcEsl4iIiLKfplaE0UiEVx99dXw+/24/vrrcf755zc58Ld8+XL56169emHGjBn45ptvoFAoMGXKFPz2t7/FlClTWtTHFStWyF+PGzcOCxcuxCeffILDhw9jwIABuP7663H77bdDqVQmff3VV1+No0ePQq1WY/Dgwbj88stx++23x9VdqW6DiMTgJ4yIssaOHTswc+ZMvPXWW1i0aJH8+AcffIDt27ensWft69VXX5W/ttlsOPnkk+Xvhw4dKn9dWlqKQ4cOweFwYPHixXHvUXdia+fOnfLV8ADwq1/9Cl9++SW8Xi+OHTuG1157DZMmTWr1wtBERESUGbKlXvrzn/8sf33xxRendLHV+++/L099bjQa8X//93+t2v7PfvYzWCwW+XvWS0RERNkvU2uiuqVZ+vXrhyVLljTZ1uv1Ys+ePfL3Dz/8MNatWwe32y0PYJ588sl4++23W7Ttb775Rv76/fffxwsvvIADBw4gGAziu+++w1133YUrr7yy0dcfOnQIwWAQXq8XX331FRYuXIjZs2fH1U2pboOIxODAHxFlje7du+PNN9/EueeeiwceeABDhgyRn9uxY0ezr+/Tpw8kSWrxn46+2y+ZNWvW4LbbbpO/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1q0bTj31VLz44ot444034maZass2iEg8hdRe87gQEVFSN998M55++mkoFAqsXbsW06dPT3eXiIiIiDIK6yUiIiKi1quqqpIvTjrttNOwcuXKNPeIiNKBd/wREXWwjz76CEDtCS2exCIiIiJKxHqJiIiIqPXqaiiTyYRnn302zb0honThwB8RUQcqKyvDrl27UFxcjEceeSTd3SEiIiLKOKyXiIiIiNrm448/BgD84Q9/iFsrkIi6Fk71SURERERERERERERERNQJ8I4/IiIiIiIiIiIiIiIiok6AA39EREREREREREREREREnYA63R3IBn369IHVaoVSqUROTg5WrVrV4tfGYjGUl5fDYrFAoVC0Yy+JiIgoU0iShJqaGvTs2RNKZee/zmrv3r2YP38+qqqqoFKp8Nlnn8FkMrXotayViIiIup6uViulgrUSERFR15RKvcSBvxbasGEDzGZzq19XXl6OoqKidugRERERZboDBw6gd+/e6e5Gu5s3bx5+//vfY8aMGaiuroZOp2vxa1krERERdV1dpVZKBWslIiKirq0t9RIH/tqZxWIBUPuPY7VaW/Qav98Pg8HQnt3qUpinOMxSHGYpFvMUh1mK4Xa7UVRUJNcBndl3330HjUaDGTNmAAByc3Nb9fq21ErJcN8VgzmKwyzFYZZiMEdxmGXqulKtlCrWSpmHWYrBHMVhlmIwR3GYpRip1EudfuBv7dq1WLx4Mb788ktUVFRgxYoVuOCCC+LalJaWYvHixaisrMTo0aPx5JNPYtKkSfLzCoUCM2fOhFKpxB133IGrrrqqxduvm4bBarW2uECLRqMpFXMUj3mKwyzFYZZiMU9xmKVY2TAdU6q10s6dO2E2m3Huuefi0KFDuOSSS3Dfffe1ePttqZWS4b4rBnMUh1mKwyzFYI7iMEtxsqFWSjfWSpmHWYrBHMVhlmIwR3GYpVhtqZc6/cCf1+vF6NGjMX/+fFx00UUJz7/66qu466678PTTT2Py5MlYsmQJzjjjDGzfvh15eXkAgHXr1qFXr16oqKjAqaeeipEjR2LUqFFJtxcMBhEMBuXv3W53+/xgRERERAKkWitFIhF8+umn2LJlC/Ly8jBnzhxMnDgRp512WtLtsVYiIiIial5paSlKS0sRjUYBAA6HA9FoFDabDR6PB9FoFGq1GkajUa6n6u6u8Pv9ABDX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y5ZkD2vYYP/1vvvSl74kjxkzRtZqtXJubq78pS99SS4vL0/2sFLWK6+8IhcVFck6nU6eOnWq/Pvf/z7ZQ0ppb775pgxAPnbsWLKHktJcLpd81113yfn5+bJer5cvuugi+Uc/+pEcDAaTPbRhh7WTOKydBg7rpr5hzSQWayYxWCuJwVppcLFeEoO10sBhrdQ3rJXEYq0kDuul/hNVKylkWZb7PQ1JREREREREREREREREREmlvPAuRERERERERERERERERDTUceKPiIiIiIiIiIiIiIiIaBjgxB8RERERERERERERERHRMMCJPyIiIiIiIiIiIiIiIqJhgBN/RERERERERERERERERMMAJ/6IiIiIiIiIiIiIiIiIhgFO/BERERERERERERERERENA5z4IyIiIiIiIiIiIiIiIhoGOPFHRD32t7/9DaWlpbBarbBYLCgsLMQ3v/lNNDQ0JHtoKWHcuHG44447kj2MDh599FG89tprca/3d6z33HMPbrjhhtiff/KTn8BsNnf7nttuuw233XZbn7+TiIgo2Vgr9Q9rJdZKREQ0vLFW6h/WSqyViHqKE39E1CMPPfQQvva1r2Hx4sV4/vnn8fzzz+PWW2/Fnj17cPbs2WQPj/qoqwKtP86ePYv169fjvvvu69X77r33Xjz77LM4ceKE0PEQERENBtZKwxNrJSIiIjFYKw1PrJWIhiZ1sgdARKnht7/9LW6++Wb8z//8T+y1NWvW4J577oEkSUkcGQ01Tz31FCZNmoQ5c+b06n0TJ07EwoULsX79ejz66KMDMzgiIqIBwlqJeoq1EhERjUSslainWCsR9R+f+COiHmlpacGYMWMSblMqO55KnnnmGcyYMQN6vR65ubn40Y9+hGg02mGfjz/+GHPmzIFer0dRURFef/11zJo1CzfffHNsn6VLl+LKK6/s8L4DBw5AoVBg27ZtsddkWcZvfvMbTJ48GTqdDhdddBH+3//7fx3e19YS4NChQ1i0aBGMRiOKiorw5ptvxv08zz77LEpKSqDX65GVlYXLL78cFRUVse3V1dX46le/iqysLBgMBlxyySXYu3dvt/n11ObNm1FWVgaDwYBRo0bhO9/5Drxeb2z7tm3boFAo8NZbb+Gmm25CWloaCgoK8NBDD8V91lNPPYWCggIYjUasWrUK+/fvh0KhwDPPPAOgte1CRUUF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t33RokXYtGkTrrjiChgMBjz66KMdtjc2NsLn8/WqsCYiIhoKWCu1Yq3UPdZKREQ0UrFWasVaqXuslYjE4MQfEfVIcXExrrrqKlx66aUYM2YMampq8Pjjj+PcuXOxIsBms+HBBx/ED37wA1RXV2Pp0qVQqVQ4deoUNm7ciBdffBFGoxHf+973sH79eqxZswb33XcfWlpa8MADD8TdjXP99dfjT3/6E+68805cc801+Pjjj/HCCy902Gfy5Mm4/fbb8bWvfQ333HMPysrKEA6Hcfz4cbz77rsJi5KuWK1WPPDAA7j33nshSRLWrl0LSZLw7rvv4sYbb8TcuXNx9913429/+xuWLFmCu+66C/n5+WhsbMTOnTsxduxYfP/73+/2O06ePBn3MyiVSlx33XV45JFHcNNNN8Hr9eKKK66AyWRCRUUFNm/ejF/84heYPHlyj3+W//qv/8LatWtx22234YYbbsD+/fvxl7/8JfZ9bQoLC/HOO+/grbfeQnp6OsaPH9+vu6JKS0uhVquxd+/ehAUa0Np3/6WXXsI111wDo9GIX/ziF7FtbT3nFy1a1OcxEBERJQNrJdZKPcFaiYiIRirWSqyVeoK1EpEgMhFRD6xfv16+7LLL5NzcXFmr1cpjx46VL7vsMvmdd96J2/fvf/+7PG/ePNlgMMgWi0UuKSmRf/zjH8vhcDi2z/vvvy/PmjVL1mq1cmFhofzqq6/KM2fOlNetW9fhsx566CE5Ly9PNplM8g033CBv3bpVBiC/++67sX0kSZIfe+wxuaioSNZqtXJGRoa8YMEC+ZFHHont88ADD8gmkylurFarVX7ggQc6vPbnP/9ZLi4ulrVarZyZmSlfeeWVckVFRWx7bW2t/I1vfEMeM2aMrNVqZbvdLl9//fXyRx991G2GBQUFMoC4/1QqVWyfLVu2yEuWLJFNJpNsMpnk6dOny//+7/8uOxwOWZZl+d1335UByLt37+7w2WvXrpWXLFnS4bUnnnhCzsvLk/V6vbxkyRJ5y5YtMgD55Zdfju1z+PBhefHixXJaWpoMQH766adjY7399ts7fN6GDRtkAPLp06e7/Tmvuuoq+aabburwWqL8N2zYIKvVavnBBx+MvXbnnXfKixcv7vbziYiIhiLWSqyVWCsRERF1jbUSayXWSkSDRyHLsjwYE4xERBcya9YszJo1C88880yyhzIs/elPf8I3v/lNnD59GuPGjRuw73nllVdw0003ob6+Hkajscfvi0QiyM/Px69+9St8/etfH7DxERERpSrWSgOLtRIREVFqY600sFgrEaUO5YV3ISKiVNPc3Iy77roLGzduxDvvvINf//rX+P73v4+1a9cOaHEGAFdeeSUmT56MP/7xj71633PPPQez2YybbrppgEZGRERE1Iq1EhEREVHXWCsRpTau8UdENAxpNBqcPHkSzz33HBwOB0aNGoWvfe1r+PWvfz3g361QKPDkk0/ik08+6dX7lEol/vznP0Ot5j9NRERENLBYKxERERF1jbUSUWpjq08iIiIiIiIiIiIiIiKiYYCtPomIiIiIiIiIiIiIiIiGAU78EREREREREREREREREQ0DnPgjIiIiIiIiIiIiIiIiGgY48UdEREREREREREREREQ0DHDij4iIiIiIiIiIiIiIiGgY4MQfERERERERERERERER0TDAiT8iIiIiIiIiIiIiIiKiYYATf0RERERERERERERERETDwP8PZkUKz1b1G50AAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "(
,\n", - " array([[,\n", - " ,\n", - " ],\n", - " [,\n", - " ,\n", - " ]],\n", - " dtype=object))" - ] - }, - "execution_count": 66, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Example usage: Create grid plot\n", - "new_sweep_dir = \"/home/facosta/group-agf/sweeps/sweep_mlp_scaling_20251212_172318\"\n", - "\n", - "k_values_new = [2, 3, 4, 5, 6, 7, 8]\n", - "hidden_dims_new = [6, 36, 216, 1296, 7776, 46656]\n", - "num_frequencies_values = [2, 3, 4, 5] # All frequency values to compare\n", - "\n", - "plot_convergence_vs_k_grid_by_frequency(\n", - " sweep_dir=new_sweep_dir,\n", - " k_values=k_values_new,\n", - " hidden_dims=hidden_dims_new,\n", - " num_frequencies_values=num_frequencies_values,\n", - " reduction_threshold=0.5,\n", - " figsize=(18, 12),\n", - " log_x=False,\n", - " log_y=True,\n", - " save_path=None,\n", - " show=True,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "85c094f2", - "metadata": {}, - "source": [ - "## p=2 experiments" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "3a80c6fc", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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GzduRHx8PIQQuHz5MhYvXowuXboUOZ4FCxaorF4MAFFRUfjzzz8xcuTIXPVHjx6N7777Dvfv38erV6+waNEidOjQAWZmZrC2toaDgwP8/PyQkpKClJQU+Pn5oWrVqtIKzwAQHByM7t27l8AVISIiIiKiN6LplY+5+nHZSmqjo6Oxdu1aREVFSdNzzczMMGbMmBJpv1u3boiNjcWVK1cAZK0kvHXrVtSuXRvm5ubo1asXPvjgA6xevbrI8cTExMDNzU2ln59//hlt27bNcyXmmTNnokOHDmjcuDHs7e3x8uVLbNmyRdq/b98+nD9/HnZ2drC1tcXp06dVVjo+efIk5HI52rZtWyLXhIiIiIiISJvJhBBC00G8Tdu2bYO/vz927NhRIu01bNgQISEhqFChQom0V5guXbpg2rRp6NSpU5HqJyYmwsLCAnevV4HcvEx9h1HunE8z0nQIBOBUcv6P/aK369dbzTUdAgGwGxSt6RAIQGDy5sIrEZUjCQkJZX5tmOy/szs6ToaerqHG4sjITEXQjW+04pqVljK7+nFpGThwIAYOHFhi7eV8huzbcPjw4bfaHxERERER0etq1KgBuVwOHR0dKBQKlds837Zyl9QSERERERHRm/vzzz+lJ7xoEpNaIiIiIiIidWl6sSYuFFW2FooiIiIiIiKi0nXixAn06NEDVapUgUwmg7+/f646fn5+qFGjBoyMjNCyZUucPn1aZb9MJkP79u3h6uqKX3/99S1FnjcmtUREREREROVIcnIyGjduDD8/vzz379ixA1OmTMH8+fNx/vx5NG7cGF26dMGTJ0+kOqGhoTh37hwCAgKwdOlSXLp06W2FnwunHxMREREREalJyGQQGpwCnN13YmKiSrmhoSEMDfNelblr167o2rVrvm1+/fXX8Pb2xieffAIAWLduHX7//Xds2LABM2fOBADY2dkBAGxtbdGtWzecP38ejRo1euPzUQdHaomIiIiIiLScvb09LCwspG3ZsmVqtZOWloZz586hY8eOUpmOjg46duyIU6dOAcga6X3x4gUAICkpCceOHUP9+vXf/CTUxJFaIiIiIiIidelAs0OFIus/d+/eVXlObX6jtIWJjY1FZmYmKleurFJeuXJlXL9+HQDw+PFj9OnTBwCQmZkJb29vuLq6qtVfSWBSS0REREREpOXkcrlKUluaatWqhYsX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/P7772jZsiUAIDIyEi4uLkU+DyIiIiIieredOXOm3A5olbmR2nHjxiEsLAxHjhzJdzRSXT169EBwcLBKWUZGBlJSUpCRkQGlUomUlBSVR/CMHj0a3333He7fv49Xr15h0aJF6NChgzSKu2DBAmk15KSkJGzcuBHx8fEQQuDy5ctYvHgxunTpAgCwtraGg4MD/Pz8kJKSgpSUFPj5+aFq1arS431u3ryJiIgIRERE4KeffoK5uTkiIiLQpEkTKabg4GB07969RK8NERERERGpQdPPqOVCUWUrqY2OjsbatWsRFRUlTfc1MzPDmDFjSqT9bt26ITY2FleuXJHKFi9eDGNjYyxZsgT79++HsbGxNB0YyLo/tkOHDmjcuDHs7e3x8uVLbNmyRdofExMDNzc3AFkrE2/duhW1a9eGubk5evXqhQ8++ACrV6+W6u/btw/nz5+HnZ0dbG1tcfr0aWklYxMTE1StWlXaKlasCJlMhqpVq0qLRp08eRJyuRxt27YtkWtCRERERESkzWSiqPNo3xHbtm2Dv78/duzYUSLtNWzYECEhIahQoUKJtFeYLl26YNq0aejUqVOR6icmJsLCwgJ/X6sMc/My9R1GuRORaqnpEAjA6Ze1NR0C/evXKFdNh0AAak14qukQCMChB2s0HQJRmZKQkFDmp9Jm/53t3nIu9PSMNBZHRkYKQsIXa8U1Ky1l7p7a0jZw4EAMHDiwxNp7/Rmzpe3w4cNvtT8iIiIiIsqf0MnaNNl/ecdLQERERERERFqr3I3UEhERERERlRhNL9bEhaI4UktERERERETai0ktERERERERaS1OPyYiIiIiIlKTkGVtmuy/vONILREREREREWktJrVERERERERaztXVFc7OzvDz89N0KG8dpx8TERERERGpq4ysfnzmzBnI5XLNxaFBHKklIiIiIiIircWRWiIiIiIiInXJ/t002X85x5FaIiIiIiIi0lpMaomIiIiIiEhrcfoxERERERGRmoRMBqHBhaI02XdZwZFaIiIiIiIi0lpMaomIiIiIiEhrcfpxOZGkFIBSaDqMci1F6Gs6BAKQKfhdXlmRnq6r6RAIAPT4pwAR0RvRgWaHCvmnDS8BERERERERaS9+PUtERERERKQmLhSleRypJSIiIiIiIq3FpJaIiIiIiIi0FqcfExERERERqUv276bJ/ss5jtQSERERERFpOVdXVzg7O8PPz0/Tobx1HKklIiIiIiJSk5BlbZrsHwDOnDkDuVyuuUA0iCO1REREREREpLWY1BIREREREZHW4vRjIiIiIiIidclkWZsm+y/nOFJLREREREREWotJLREREREREWktTj8mIiIiIiJSk4CGVz/WXNdlBkdqiYiIiIiISGtxpJaIiIiIiEhdsn83TfZfzr1TI7Xp6elwc3ODpaUldu/eDQB4/Pgx3nvvPbRv3x5t2rTBlStXNBwlERERERERlZR3aqRWT08Pu3fvxvr166Uya2trhIaGQkdHByEhIVi+fDn+7//+T4NREhERERERUUl5p0ZqZTIZbG1tVcp0dXWho5N1mvHx8WjcuHGBbWzfvh1eXl6lFuOb6Ny5M4KCgjQdBhERERERZdORaX4r57QqqU1NTYW3tzdq1qwJc3NzODk5YcOGDYUeFxkZiffeew/jx49H+/bt862nVCoxe/ZszJs3Tyq7f/8+evfujQoVKsDa2hpeXl54+vRpvm2sWbMGzZs3h6GhIXr37p1r/61bt9C1a1coFArY2dlhxYoVRT63OXPmYPr06YWeLxERERERUXmhVUltRkYGbG1tERQUhMTERGzatAlTp05FYGBggcc5Ozvjzz//xIEDBzB+/Ph86x08eBBWVlZo2LChVObj4wMAiI6Oxp07d5CSkoIJEybk20aVKlUwd+5ceHt759qXmZmJnj17omnTpnjy5AmOHTuGNWvWYOvWrUU6t3bt2iE+Ph5hYWEFni8REREREVF5oVVJrampKRYtWoTatWtDJpOhVatW8PDwQGhoaL7HpKamSq8tLS1hYmKSb92AgAB4enqqlN2+fRteXl4wMzODubk5BgwYgMuXL+fbRt++fdG7d29YW1vn2hcVFYWoqCjMnz8f+vr6qFu3LkaOHIkffvihSOcmk8ng6emJgICAfPsnIiIiIqK3R8g0v5V3Wr1QVEpKCk6fPo1BgwZJZV5eXjh79izMzMxw+vRp9OnTBzNnzoSOjg6EEPj666/zbS8iIgJjxoxRKZsyZQp27dqFDz74AEIIbNu2DT169FArXqVSCQAQQqiUXbp0qUjnBmSNOhc0Mp2amqqSyCcmJqoVKxERERERkTbQ2qRWCIFRo0bB0dERffv2lcp37tyZq+7x48eL1GZcXBzkcrlKmZubG3788UcoFAoAQOvWrTFr1iy1Yq5bty5q1KgBX19fLFq0CDdv3sSGDRtyJZ75nRsAyOVyxMXF5dvHsmXLsHDhQrXiIyIiIiKiYuJzajVOq6YfZxNCYOzYsYiKioK/v7+0uvGbUigUKgmmUqlEp06d4ObmhqSkJCQlJcHNzQ2dO3dWq319fX3s27cPFy5cgJ2dHT7++GN88sknqFChglSnsHNLTEyUEuy8zJo1CwkJCdJ29+5dtWIlIiIiIiLSBlqX1Aoh4OPjg/DwcAQGBsLCwqLE2nZxccH169el98+fP0d0dDQmTJgAExMTmJiYYPz48QgPD0dsbKxafdSvXx+BgYGIjY1FREQEUlNTpRWZi3JukZGRcHFxybd9Q0NDyOVylY2IiIiIiN5trq6ucHZ2hp+fn6ZDeeu0LqkdN24cwsLCcOTIkQJHLNXRo0cPBAcHS++tra3h4OAAPz8/pKSkICUlBX5+fqhataq0ENSCBQvg7u4uHZORkYGUlBRkZGRAqVQiJSUFaWlp0v5Lly4hOTkZaWlp2LNnDzZs2IC5c+cW+dyCg4PRvXv3Ej1vIiIiIiJSj6YXicpeKOrMmTOIjIyUnt5SnmhVUhsdHY21a9ciKioK1atXh5mZGczMzHIt7qSubt26ITY2FleuXJHK9u3bh/Pnz8POzg62trY4ffq0yurDMTExcHNzk94vXrwYxsbGWLJkCfbv3w9jY2OV6co7d+5EtWrVoFAosGrVKvj7+6NRo0ZFOreTJ09CLpejbdu2JXK+RERERERE2k4mci7FS9i2bRv8/f2xY8eOItVv2LAhQkJCVO6LLS1dunTBtGnT0KlTpyIfk5iYCAsLC5y/Wglm5lr1HcY752paJU2HQAAuvKyh6RDoX1uuttB0CASg7gz1bqehknUoZrWmQyAqUxISEsr8bXTZf2e36rYIevpGGosjIz0Ffx301YprVlq0dvXj0jJw4EAMHDiwyPULemZtSTt8+PBb64uIiIiIiIpAJsvaNNl/OcehOyIiIiIiItJaHKklIiIiIiJSU87FmjTVf3nHkVoiIiIiIiLSWkxqiYiIiIiISGtx+jEREREREZG6ZP9umuy/nONILREREREREWktJrVERERERESktTj9mIiIiIiISE1c/VjzOFJLREREREREWosjtUREREREROqSybI2TfZfznGkloiIiIiIiLQWk1oiIiIiIiLSWpx+TEREREREpCYuFKV5HKklIiIiIiIircWkloiIiIiIiLQWpx+XEy+U+hBKfoehSSlCX9MhEIB0oavpEOhfQsn5UmWBePFC0yEQEWk32b+bJvsv55jlEBERERERkdbiSC0REREREZGahE7Wpsn+yzteAiIiIiIiItJaTGqJiIiIiIhIa3H6MRERERERkbq4UJTGcaSWiIiIiIiItBaTWiIiIiIiItJaTGqJiIiIiIjUJGSa3wDA1dUVzs7O8PPz0+wF0QDeU0tERERERKTlzpw5A7lcrukwNIJJLRERERERkbpksqxNk/2Xc5x+TERERERERFqLSS0RERERERFpLU4/JiIiIiIiegOCM4A1iiO1REREREREpLWY1BIREREREZHW4vRjIiIiIiIidcn+3TTZfzn3To3Upqenw83NDZaWlti9ezcA4NSpU2jdujXat2+PDz74APHx8ZoNkoiIiIiIiErMO5XU6unpYffu3Zg0aZJUVr16dRw9ehTHjx9Hjx494Ofnp7kAiYiIiIjonSJkmt/Ku3cqqZXJZLC1tVUpq1KlCkxMTAAABgYG0NMreMb19u3b4eXlVWoxvqnOnTsjKChI02EQERERERGVCVqV1KampsLb2xs1a9aEubk5nJycsGHDhiId++zZM6xduxYjR47Mt45SqcTs2bMxb968XPtevXoFBwcHWFpaFthPeno6xo0bB4VCASsrK4wfPx4ZGRnS/lu3bqFr165QKBSws7PDihUrcrUREBAAFxcXmJqaokqVKli3bp20b86cOZg+fXoRzpiIiIiIiOjdp1VJbUZGBmxtbREUFITExERs2rQJU6dORWBgYIHHvXz5Ev3798f//vc/WFtb51vv4MGDsLKyQsOGDXPt8/X1RfXq1QuNcfHixQgNDUVkZCSuXr2KkydPYunSpQCAzMxM9OzZE02bNsWTJ09w7NgxrFmzBlu3bpWOP3ToEMaOHYvVq1cjMTERV69ehbu7u7S/Xbt2iI+PR1hYWKGxEBERERFRKZOVga2c06qk1tTUFIsWLULt2rUhk8nQqlUreHh4IDQ0NN9jMjIy8NFHH2H8+PF47733Cmw/ICAAnp6eucrPnTuHQ4cOYcaMGYXGuGHDBsydOxe2trawtbXFnDlz8PPPPwMAoqKiEBUVhfnz50NfXx9169bFyJEj8cMPP0jHz5s3D76+vnB3d4euri4UCgWcnJyk/TKZDJ6enggICMiz/9TUVCQmJqpsRERERERE7yqtSmpfl5KSgtOnT6NRo0ZSmZeXFzZv3oxFixbh888/x7Zt23DixAl8++23cHd3x8qVK/NtLyIiQiWBBLKSYm9vb/j5+cHAwKDAeOLi4nDv3j24uLhIZS4uLoiJiUFCQgKUSiUAQAgh7Vcqlbh06RIAIDk5GefOncP9+/dRp04d2NjYoH///nj48KFKP87OzoiIiMgzhmXLlsHCwkLa7O3tC4yZiIiIiIhIm2ntc2qFEBg1ahQcHR3Rt29fqXznzp256g4ZMqRIbcbFxUEul6uUrVy5Ek2aNEG7du0QEhJS4PFJSUkAoHLfbfbrFy9eoG7duqhRowZ8fX2xaNEi3Lx5Exs2bJBGU+Pi4iCEgL+/P44cOYIKFSpgzJgxGDx4MI4ePSq1KZfLERcXl2cMs2bNwpQpU6T3iYmJTGyJiIiIiEqJplcg5urHWprUCiEwduxYREVFISgoCDo6JTPgrFAoVKbr3rx5E+vWrcOFCxeKdLyZmRkAICEhQbp3NyEhAQBgbm4OfX197Nu3D5MnT4adnR2qVq2KTz75BOvXr1c5fsKECdL9uwsXLoSjoyOSk5NhamoKICtRVSgUecZgaGgIQ0PD4p46ERERERGRVtK66cdCCPj4+CA8PByBgYGwsLAosbZdXFxw/fp16X1oaCgeP36MOnXqwNraGr169UJiYiKsra0RHh6e63iFQoGqVauqTA2OiIiAvb29FGf9+vURGBiI2NhYREREIDU1Fe3btweQNapbrVq1fM87W2RkpMoUZyIiIiIi0hBNLxLFkVrtS2rHjRuHsLAwHDlyJN/RSnX16NEDwcHB0nsvLy/cvHkTERERiIiIwE8//QRzc3NERESgSZMmAIAFCxaorE78ySefYMmSJXj06BEePXqEpUuXYtSoUdL+S5cuITk5GWlpadizZ4+0sFS20aNH47vvvsP9+/fx6tUrLFq0CB06dJBGcQEgODgY3bt3L9FzJyIiIiIi0kZaldRGR0dj7dq1iIqKQvXq1WFmZgYzMzOMGTOmRNrv1q0bYmNjceXKFQCAiYkJqlatKm0VK1aETCZD1apVpUWjYmJi4ObmJrUxb948tG7dGvXq1UO9evXg5uaG2bNnS/t37tyJatWqQaFQYNWqVfD391dZ6GrmzJno0KEDGjduDHt7e7x8+RJbtmyR9p88eRJyuRxt27YtkXMmIiIiIiLSZjKRc14rYdu2bfD398eOHTuKVL9hw4YICQlBhQoVSjmyLF26dMG0adPQqVOnItVPTEyEhYUFjl+2g5m5Vn2H8c75O72SpkMgAJde5j3Fn96+bVeaazoEAlB33G1Nh0AADsf9rOkQiMqUhISEXAu4ljXZf2e7DF4CXQMjjcWRmZaCiP+boxXXrLRo5UJRpWngwIEYOHBgketfvny5FKPJ7fDhw2+1PyIiIiIiorKMQ3dERERERESktThSS0REREREpC5Nr0DM1Y85UktERERERETaiyO1REREREREahIyGYRMc8Olmuy7rOBILREREREREWktJrVERERERESktTj9mIiIiIiISF1cKErjOFJLREREREREWosjtURERERERGoSsqxNk/2XdxypJSIiIiIiIq3FpJaIiIiIiIi0FqcfExERERERqYsLRWkcR2qJiIiIiIhIazGpJSIiIiIiIq3F6cdERERERETq4vRjjWNSW068EIZQCg7Ma1KKUl/TIRCAdKGr6RCIyhSZubmmQyAAiNN0AERE2otJLRERERERkZr4nFrN49AdERERERERFdvLly9RvXp1TJs2TaNxMKklIiIiIiKiYluyZAlatWql6TCY1BIREREREalNVgY2Dbhx4wauX7+Orl27aiaAHJjUEhERERERlSMnTpxAjx49UKVKFchkMvj7++eq4+fnhxo1asDIyAgtW7bE6dOnVfZPmzYNy5Yte0sRF4xJLRERERERUTmSnJyMxo0bw8/PL8/9O3bswJQpUzB//nycP38ejRs3RpcuXfDkyRMAwL59+1CnTh3UqVPnbYadL65+TEREREREpKaysvpxYmKiSrmhoSEMDQ3zPKZr164FThv++uuv4e3tjU8++QQAsG7dOvz+++/YsGEDZs6cib/++gvbt2/Hrl27kJSUhPT0dMjlcvj6+pbMSRUTR2qJiIiIiIi0nL29PSwsLKRN3anBaWlpOHfuHDp27CiV6ejooGPHjjh16hQAYNmyZbh79y7++ecfrFq1Ct7e3hpLaAGO1BIREREREalPg4s1Sf0DuHv3LuRyuVSc3yhtYWJjY5GZmYnKlSurlFeuXBnXr19XO8zSxKSWiIiIiIhIy8nlcpWk9m0ZPnz4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mqisdHzy5EnI5XK0bdv2jc+XiIiIiIjobapatSouXryIHTt24OLFi0hKSsLIkSPx8ccfqywcVRwyIUShI9YDBw7EjBkzij3lNSIiAl9++WWJJbVvw7Zt2+Dv748dO3YUqX7Dhg0REhKCChUqlHJkWbp06YJp06ahU6dORaqfmJgICwsLHLhUC6bmWr3Ytdb7J8268EpU6q6+qlp4JXordl9toukQCIDTrKeaDoEAHIpZrekQiMqUhISEMn9/aPbf2fV8lkLX0EhjcWSmpuCa32ytuGalpUgjteompS4uLlqV0AJZCfzAgQOLXL80plgX5PDhw2+1PyIiIiIiopKybNkyVK5cGSNGjFAp37BhA54+fYoZM2YUu00O3REREREREdFbsX79ejg5OeUqr1+/vtq3lL7RI30iIyNx+/ZtxMXFIa9ZzEOHDn2T5omIiIiIiMq2MvKcWm3x6NEj2Nra5iqvWLEiHj58qFabaiW1t27dwuDBg3H69Ok8k1kga2lmJrVERERERESlz9XVFbq6uvDx8YGPj4+mw8mXvb09wsLCULNmTZXysLAwVKlSRa021UpqP/30U1y+fBmrV69G27ZtS/zROkRERERERNpAyLI2TfYPAGfOnNGKhaK8vb0xadIkpKenw9PTEwBw9OhRfP7555g6dapabaqV1IaFhWH27NkYP368Wp0SERERERFR+TN9+nQ8e/YMY8eORVpaGgDAyMgIM2bMwKxZs9RqU62k1traGhYWFmp1SEREREREROWTTCbDl19+iXnz5uHatWswNjaGo6MjDA0N1W5TrdWPx4wZg//7v/9DZmam2h0TERERERFpPVkZ2LSQmZkZXF1d0aBBgzdKaIEijtTu2bNH5X3dunWRmZmJxo0bY8SIEbC3t4eurm6u4/r27ftGwREREREREdG7Izk5GcuXL8fRo0fx5MkTKJVKlf23b98udptFSmr79esHmUwmrXSc8/W0adPyPEYmk3Ekl4iIiIiIiCSjRo3C8ePHMWTIENja2kIme/Oh5iIltcHBwW/cERERERER0bumrKx+rC3++OMP/P7773BzcyuxNouU1LZv377EOiQiIiIiIqLySaFQwMrKqkTbVGuhKCIiIiIiIoLmF4nSspHaL774Ar6+vnj58mWJtVmkpLZLly44ceJEsRsPDg5Gly5din0cERERERERFZ2rqyucnZ3h5+en6VAK9NVXX+Hw4cOoXLkyGjZsiKZNm6ps6ijS9OPatWujU6dOqFWrFgYMGIAOHTqgSZMmMDMzU6n34sULnDt3DkFBQdi1axeio6MxcuRItQIjIiIiIiKiojlz5gzkcrmmwyhU7969S7zNIiW1a9euxfTp0/Htt99i7dq1+OKLLyCTyWBlZQWFQgEhBOLi4hAXFwchBKysrPDxxx9j4sSJqFmzZokHTUREREREVCZoegqwlk0/nj9/fom3WaSkFgBq1qyJ1atXY9WqVTh58iROnTqF69ev49mzZwCAChUqwMnJCa1bt0abNm2gr69f4sGS+l4pDSBT5n6WML09KcJA0yEQgAwllxIoK5Qp/J1UFhyKWa3pEIiIqJyJj4/H7t27cevWLUyfPh1WVlY4f/48KleuDDs7u2K3V+SkVjpATw8eHh7w8PAodmdERERERERUfl26dAkdO3aEhYUF/vnnH3h7e8PKygp79uxBTEwMNm/eXOw2OWRBRERERESkpuzn1Gpy0yZTpkzB8OHDcePGDRgZGUnl3bp1U2txYoBJLREREREREb0lZ86cwaeffpqr3M7ODo8ePVKrzWJPPyYiIiIiIqJ/caGoYjE0NERiYmKu8r///hsVK1ZUq02O1BIREREREdFb0bNnTyxatAjp6ekAAJlMhpiYGMyYMQMffvihWm0yqSUiIiIiIqK34quvvkJSUhIqVaqEV69eoX379nBwcIC5uTmWLFmiVpucfkxERERERKQuTj8uFgsLCxw5cgShoaG4dOkSkpKS0LRpU3Ts2FHtNt8oqX3x4gWio6MRFxcHIUSu/e3atXuT5omIiIiIiOgd1KZNG7Rp06ZE2lIrqX327BnGjRuH3377DZmZmbn2CyEgk8ny3EdEREREREQly9XVFbq6uvDx8YGPj4+mw8nX//73vzzLZTIZjIyM4ODggHbt2kFXV7fIbaqV1Hp7e2P//v2YMGEC2rZtC4VCoU4zREREREREWk3Tz4rN7vvMmTOQy+WaC6SIvvnmGzx9+hQvX76U8si4uDiYmJjAzMwMT548Qa1atRAcHAx7e/sitalWUhsYGIjJkydjxYoV6hxORERERERE5dDSpUvxww8/4KeffkLt2rUBADdv3sSnn36K0aNHw83NDR999BEmT56M3bt3F6lNtZJaExMT1KhRQ51DiYiIiIiI3h1cKKpY5s6di99++01KaAHAwcEBq1atwocffojbt29jxYoVxXq8j1qP9Bk8eDD27t2rzqFERERERERUTj18+BAZGRm5yjMyMvDo0SMAQJUqVfDixYsit6nWSG2/fv1w/PhxvP/++xg9ejTs7e3zvJG3adOm6jRPRERERERE7yAPDw98+umn+Omnn9CkSRMAwIULF/DZZ5/B09MTAHD58mXUrFmzyG2qldTmXHr5yJEjufZz9WMiIiIiIioPyspCUdri559/xpAhQ9CsWTPo6+sDyBql7dChA37++WcAgJmZGb766qsit6lWUrtx40Z1Dit16enpcHd3x9WrV/HTTz+hX79+AIAff/wRGzduhIGBATZs2IBatWppOFIiIiIiIqLyRQiBtLQ0BAQEICYmBlFRUQCAunXrom7dulI9Dw+PYrWrVlI7bNgwdQ4rdXp6eti9ezfWr18vlT1//hw//fQTwsLCcOHCBcycORM7d+7UYJRERERERPTO4EJRRSaEgIODA65evZorkX0Tai0UlVNSUhKuXbuGa9euISkpqSRiUptMJoOtra1K2enTp+Hu7g49PT24urpK3wbkZ/v27fDy8irNMN9I586dERQUpOkwiIiIiIiIikVHRweOjo549uxZybar7oFnzpyBh4cHFAoFGjRogAYNGkChUMDT0xNnz54tyRglqamp8Pb2Rs2aNWFubg4nJyds2LChwGOeP38uPdQXAJRKZb51lUolZs+ejXnz5klla9asQfPmzWFoaIjevXsXGmN6ejrGjRsHhUIBKysrjB8/Xlrdqzjxv3r1Cg4ODrC0tFQpnzNnDqZPn15oHERERERERGXN8uXLMX36dFy5cqXE2lRr+nF4eDjc3d1hYGCAUaNGoV69egCAa9euYdu2bWjXrh1CQkLQokWLEgsUyLqB2NbWFkFBQahVqxbCw8PRtWtXVK1aFZ07d87zGIVCgUuXLknv81qlOdvBgwdhZWWFhg0bSmVVqlTB3LlzERQUhHv37hUa4+LFixEaGorIyEgAQNeuXbF06VL4+voWK35fX19Ur14dsbGxKuXt2rVDfHw8wsLC4ObmVmg8RERERERUyrRoCrCmDR06FC9fvkTjxo1hYGAAY2Njlf3Pnz8vdptqJbVz5syBnZ0dQkNDYWNjo7JvwYIFcHNzw5w5c/JcGflNmJqaYtGi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IiIiIqJ306xZs7B9+3Y8ePAAnTp1wrfffotevXrBxMRE7TbVSmqbNm2KH3/8ER4eHggICMCLFy/Qo0cPaf+tW7dQuXJltYMiIiIiIiKid8+JEycwffp0eHl5wdraukTaVCupXbJkCbp06YLmzZtDCIF+/fqhRYsW0v69e/fCzc2tRAIkIiIiIiIqszT8nFptm34cFhZW4m2qldQ2b94c169fx59//glLS0u0b99e2hcfH4+xY8eqlBEREREREREBwI0bNxAcHIwnT55AqVSq7PP19S12e2oltQBQsWJF9OrVK1e5paUlJk6cqG6zRERERERE2kPTizVp2Ujtjz/+iM8++wzW1tawsbGBTPbfCchksreb1ALAixcvEB0djbi4OAghcu1v167dmzRPRERERERE75DFixdjyZIlmDFjRom1qVZS++zZM4wbNw6//fYbMjMzc+0XQkAmk+W5j4iIiIiIiMqnuLg49O/fv0TbVCup9fb2xv79+zFhwgS0bdsWCoWiRIMiIiIiIiLSBkLDC0Vl9+3q6gpdXV34+PjAx8dHcwEVon///ggMDMSYMWNKrE21ktrAwEBMnjwZK1asKLFAqHQlKo2QodTVdBjlWqpSX9MhEIB0wc9BWWHwmJ+JsqCz/BNNh0AAAhM3ajoEItJyZ86cgVwu13QYhXJwcMC8efPw119/oWHDhtDXV/17YMKECcVuU62k1sTEBDVq1FDnUCIiIiIiIiqnfvjhB5iZmeH48eM4fvy4yj6ZTPb2ktrBgwdj7969GDt2rDqHExERERERvRu4+nGx3Llzp8TbVCup7devH44fP473338fo0ePhr29PXR1c0/pa9q06RsHSERERERERO+e7Cfo5HysjzrUSmrbtGkjvT5y5Eiu/Vz9mIiIiIiIygWZyNo02b+W2bx5M1auXIkbN24AAOrUqYPp06djyJAharWnVlK7cSMXMyAiIiIiIqLi+frrrzFv3jyMGzcObm5uAIDQ0FCMGTMGsbGxmDx5crHbVCupHTZsmDqHERERERERUTn23Xff4fvvv8fQoUOlsp49e6J+/fpYsGDB20tqc3r48CGePHkCBwcHmJqavmlzREREREREWqOsPKdWWzx8+BDvvfdervL33nsPDx8+VKtNHXWD2bdvH5ycnFC1alU0bdoU4eHhAIDY2Fg0adIEe/fuVbdpIiIiIiIiegc5ODhg586ducp37NgBR0dHtdpUa6R2//796Nu3L1q3bo1BgwZhwYIF0j5ra2vY2dlh06ZN6NOnj1pBERERERER0btn4cKFGDBgAE6cOCHdUxsWFoajR/+/vTuPq6ra/z/+3hwBEQQHUENQTM3CkZTMzKkcrtccciBvVg7lrUTNvFbSt5xyzJxKyqsNZv28lXVzvOVQTqUVapZezTS10EqcAMEA4ezfH+a5IWCwVfY5ntezx348PHvt/VmfczD1c9baa31SaLFbHJZGaidMmKDWrVvrs88+U3x8fIH2Fi1a6Ouvv7aUEAAAAAB4DMMNDg/Sq1cvffnllwoNDdXSpUu1dOlShYaG6quvvrI8KGpppHb37t2aOXNmke1Vq1ZVSkqKpYQAAAAAANeupk2b6u23375i8SyN1JYrV06ZmZlFth88eFCVK1e2nBQAAAAAeAS7R2k9ZKT2559/1qhRo5Senl6gLS0tTU888YSOHTtmKbalorZdu3Z68803lZubW6Dt119/1YIFC9SxY0dLCQEAAAAAri0zZ85Uenq6goODC7SFhITozJkzl5wNfCmWitpJkybpyJEjio2N1T//+U8ZhqHVq1frmWeeUcOGDWWapsaOHWspIQAAAADAteXjjz/OtzftxR544AGtXLnSUmxLRW29evX02WefqXLlynr22WdlmqamT5+uyZMnq2HDhtq8ebOioqIsJQQAAAAAnuLCPrV2Hp7g0KFDqlGjRpHtEREROnz4sKXYlhaKkqT69etr3bp1On36tA4cOCCn06nrr79eYWFhVkMCAAAAAK5BAQEBOnz4cJGF7eHDhxUQEGAptuWi9oKKFSsqNjb2csMAAAAAAK5RzZs311tvvaXWrVsX2r5o0SLdcsstlmJfVlG7adMmHTx4UKdPn5ZpmvnaDMPQ448/fjnhAQAAAMC92b0CsYdMPx41apQ6dOigkJAQPfHEE6pataok6dixY3r++ee1cOFCrVmzxlJsS0Xtzp07dc899+jAgQMFitkLKGr/Z8CAAVq8eLH8/Pxc59auXasWLVpIkubOnauFCxdq165d6ty5s5YuXeq6LiUlRY8//rg2btyo9PR01a5dW+PHj1e3bt1K+20AAAAAgCXt2rVTYmKiHnvsMc2aNUvBwcEyDENpaWny9fXVSy+9pDvuuMNSbEtF7UMPPaSUlBTNmzdPzZs3V0hIiKXOvcmQIUM0e/bsQtvCw8P1zDPPaN26dTpy5Ei+toyMDMXExGjatGkKDw/XqlWr1LdvXyUlJSk6OroUMgcAAABQJEZqi+3hhx/WXXfdpffee881QHrDDTeod+/eioiIsBzXUlH73//+VxMmTNDgwYMtd4z/6dmzp6TzI+AXF7XXX3+9Ro0a5XrdtWtX1atXT1988QVFLQAAAACPUr169Ss+o9fSlj5169aVYXjQVwJuYNGiRapUqZLq16+vGTNmyOl0WoqTkpKivXv3qlGjRoW2Z2dnKz09Pd8BAAAAANcqS0XtuHHjlJiYqKNHj17pfK5Jw4cP1759+3T8+HG99tprmjNnjubMmVPiODk5Oerbt6/i4uLUrFmzQq+ZMmWKQkJCXEdkZOTlpg8AAACgKIZp/+HlLE0/7tmzp7KyslSvXj3deeedioiIkMPhyHeNYRiWCrdr0c033+z69a233qrRo0dr0aJFJRp2z8nJUe/evVWuXDktWLCgyOsSEhI0cuRI1+v09HQKWwAAAADXLEtF7caNG/Xoo4/q7NmzWrFiRaHXUNQWzcenZAPkOTk56tOnj3JycrRs2bJ8qyhfzN/fX/7+/pebIgAAAAB4BEvTj4cNG6bg4GCtXr1aqampcjqdBY68vLwrnavHeu+995Seni7TNLVt2zZNnTpVvXr1crXn5uYqKytLubm5cjqdysrKUk5OjiTp3LlziouLU2ZmppYuXUrBCgAAALgRU5Jp2Hj8nkdsbKyio6OVmJho58dRIrt371ZiYqJefPFFbd++3XIcS0XtgQMH9MQTT6hDhw4KDg623Lm3mDt3rmrUqKHy5curX79+GjJkiP7xj3+42idOnKiAgABNmjRJK1asUEBAgDp27ChJ2rJli5YtW6bPP/9coaGhCgoKUlBQkCZPnmzX2wEAAADgZpKSkrRnzx7Fx8fbnUqxJCYm6s4779TGjRu1fv163XHHHZo0aZKlWJamH9evX19paWmWOvRGmzZtumT7uHHjNG7cuELb2rRpI9Pk4W8AAAAAnis5OTnfWj9z587Vf//7X4WGhkqStm7dqm7duun//u//Shzb0kjtCy+8oH/+85/66quvrNwOAAAAAPAi7du315w5c1wDdpUrV9bHH3+s7OxsnTlzRuvWrVNYWJil2JZGamfMmKHy5curRYsWio6OVo0aNQpd/XjZsmWWkgIAAAAAXDuSkpI0evRoNW/eXPPnz9f8+fN1//3364EHHpBhGLrpppv05ptvWoptqaj99ttvZRiGatSooYyMDO3Zs6fANYZhWEoIAAAAADyG8fthZ/8eIDg4WC+//LK2bNmiAQMG6I477tDmzZuVl5envLw8VahQwXJsS0Xt4cOHLXcIAAAAAPBOt912m7Zt26YpU6YoJiZGM2fOVJcuXS4rpqWiFgAAAACA4srNzdX8+fO1d+9eNW7cWE8//bTuuecePfLII1q4cKHmzp2rqlWrWopdrKL2p59+kiTVqFEj3+s/c+F6AAAAALgWXdgv1s7+PcGDDz6opKQkdevWTW+88Ya+/fZbvfjii/r000/12muvqUWLFnriiSf06KOPljh2sYraqKgoGYah3377TX5+fq7XfyYvL6/ECQEAAAAAri3Lli3T1q1bddNNN+ns2bNq2LChXnzxRUnnC96uXbtqxIgRV6+off3112UYhnx9ffO9BgAAAACvZpjnDzv79wBVq1bVmjVrVLt2bX366aeqXLlyvvYqVapo8eLFlmIXq6gdMGDAJV8DAAAAAFCUuXPnql+/fho5cqSuu+46vffee1csNgtFAQAAAACuqg4dOujYsWM6ceKEwsLCrmhsn5LecOzYMT377LNq3ry5QkND5e/vr9DQUN16660aN26cUlJSrmiCAAAAAOC2DDc4PIRhGAoLC1NaWpr27dunffv2KS0t7bLjlqioXb9+vaKjozVp0iTt3r1bkZGRuuWWWxQZGaldu3ZpwoQJql+/vj777LPLTgwAAAAAcO149dVXFR0drUqVKik6Ojrfr1977TXLcYs9/fjEiROKi4uTr6+vFi9erN69e6tMmf/dnpubqyVLlmjEiBHq1auX9uzZU+DhXwAAAACA95k+fbrGjRun4cOHq1OnTq49aY8dO6Y1a9boscce0+nTpzVq1KgSxy52UbtgwQKlp6dr27ZtatiwYcFAZcrob3/7m6KjoxUbG6tXX31VTz31VIkTAgAAAACPYfcUYA+Zfjx37ly98cYbiouLy3f+pptuUtu2bdW4cWM98cQTloraYk8/XrNmjbp27VpoQftHjRs3Vrdu3fTxxx+XOBkAAAAAwLUnJSXlkrVkw4YNdeLECUuxi13U7t27V7fddluxrm3ZsqX27t1rKSEAAAAA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y5Ytatasmb755hsNHjxYc+fO1UMPPSQfHx/NmTPH7vRwFZ09e1bjx4+/akXt9OnT1bdvX4WEhJT43piYGDVr1kwzZsy4CpkBALxBGbsTAACUjkmTJikkJERJSUmqUKFCvraUlBR7koLH+/rrr/XNN99cVlEaFxensWPH6uWXX77sqdAAAO/DSC0AeIkffvhB9evXL1DQSlKVKlUKnHv77bfVtGlTBQQEqFKlSurbt6+Sk5MLXDd//nzVrl1bAQEBuuWWW7R582a1bdtWbdu2dV2zcOFCGYahw4cP57v3wrTdi0cQv/zyS/3lL39RSEiIypUrpzZt2ujzzz/Pd82FZzYPHDigAQMGqEKFCgoJCdHAgQN19uzZQt/PLbfconLlyqlixYpq3bq11qxZk++ajz76SK1atVJgYKDKly+vLl266L///W+BWFalpqZqxIgRioyMlL+/v+rUqaNp06bJ6XS6rjl8+LAMw9ALL7zg+mz9/f0VGxurpKSkAjGXLFmi6OholS1bVg0aNNCHH36oAQMGKCoqyhUvLCxMkjR+/HgZhiHDMDRu3Lh8cY4ePaoePXooKChIYWFhGjVqlPLy8v70PS1dulR+fn5q3br1n177448/qk6dOmrQoIGOHTvmOt+hQwdlZmZq7dq1fxoDAICLUdQCgJeoWbOmtm/frt27d//ptZMmTdIDDzygunXraubMmRoxYoQ++eQTtW7dWqmpqa7rXnvtNT388MOqVq2ann/+ebVs2VLdunUrtPgtrk8//VStW7dWenq6xo4dq8mTJys1NVV33HGHvvrqqwLXx8XF6cyZM5oyZYri4uK0cOFCjR8/Pt8148eP1/333y9fX19NmDBB48ePV2RkpD799FPXNW+99Za6dOmioKAgTZs2Tc8++6z27Nmj22+/vUAxbsXZs2fVpk0bvf3223rggQf04osvqmXLlkpISNDIkSMLXL948WJNnz5dDz/8sCZOnKjDhw+rZ8+eOnfunOuaVatW6Z577pGvr6+mTJminj176sEHH9T27dtd14SFhemVV16RJN19991666239NZbb6lnz56ua/Ly8tSpUydVrlxZL7zwgtq0aaMZM2Zo/vz5f/q+tmzZogYNGsjX1/eS1/3www9q3bq1ypcvrw0bNqhq1aqutujoaAUEBBT44gIAgGIxAQBeYc2aNabD4TAdDofZokUL88knnzRXr15t5uTk5Lvu8OHDpsPhMCdNmpTv/K5du8wyZcq4zufk5JhVqlQxmzRpYmZnZ7uumz9/vinJbNOmjevcG2+8YUoyDx06lC/m+vXrTUnm+vXrTdM0TafTadatW9fs1KmT6XQ6XdedPXvWrFWrltmhQwfXubFjx5qSzEGDBuWLeffdd5uVK1d2vd6/f7/p4+Nj3n333WZeXl6+ay/0cebMGbNChQrm4MGD87X/+uuvZkhISIHzF7vwPpYsWVLkNc8995wZGBhofv/99/nOjx492nQ4HOZPP/1kmqZpHjp0yJRkVq5c2Tx16pTrumXLlpmSzBUrVrjONWzY0IyIiDDPnDnjOrdhwwZTklmzZk3XuePHj5uSzLFjxxbIq3///qYkc8KECfnOx8TEmE2bNr3k+zZN04yIiDB79epV4PyFn8/x48fNvXv3muHh4WZsbGy+9/RHN9xwg9m5c+c/7Q8AgIsxUgsAXqJDhw7aunWrunXrpm+++UbPP/+8OnXqpOrVq2v58uWu6/7973/L6XQqLi5OJ06ccB3VqlVT3bp1tX79eknStm3blJKSokceeUR+fn6u+wcMGGBpwSBJ2rlzp/bv3697771XJ0+edPWdmZmpO++8U5s2bco3VVeSHnnkkXyvW7VqpZMnTyo9PV3S+emxTqdTY8aMkY9P/r/2DMOQJK1du1apqan629/+lu89OxwONW/e3PWeL8eSJUvUqlUrVaxYMV8f7du3V15enjZt2pTv+nvuuUcVK1bM974k6eDBg5Kkn3/+Wbt27dIDDzyQ7znUNm3aqGHDhiXOr7DP8UJfl3Ly5Ml8eV5s9+7datOmjaKiorRu3boir73wuQAAUFIsFAUAXiQ2Nlb//ve/lZOTo2+++UYffvihZs2apd69e2vnzp2Kjo7W/v37ZZqm6tatW2iMC9NMf/zxR0kqcJ2vr6+uv/56S/nt379fktS/f/8ir0lLS8tXGNWoUSNf+4W206dPKzg4WD/88IN8fHwUHR39p/3ecccdhbYHBwcX7w1cwv79+/Xtt9+6nm+92MWLdV3qfUn/+/zr1KlTIFadOnW0Y8eOYudWtmzZAnlVrFjR1defMU2zyLauXbuqatWqWr169SUXgTJN0/UlAwAAJUFRCwBeyM/PT7GxsYqNjdUNN9yggQMHasmSJRo7dqycTqcMw9BHH30kh8NR4F4rq9MWVaxcvBDRhVHY6dOnq0mTJoXec3H/heUoXbrQutiFft966y1Vq1atQHuZMpf/16XT6VSHDh305JNPFtp+ww035Ht9Jd5XcRXVV3FUrlz5ksVvr1699Oabb+r//b//p4cffrjI606fPl3kFykAAFwKRS0AeLlmzZpJkn755RdJUu3atWWapmrVqlWg0PqjmjVrSjo/AvnHEc5z587p0KFDaty4sevchVHGPy4yJf1vtPGC2rVrSzo/Mtq+fXuL7yi/2rVry+l0as+ePUUWyhf6rVKlyhXrt7A+MjIyrlj8C5//gQMHCrRdfO5qjoDeeOONOnToUJHt06dPV5kyZTRkyBCVL19e9957b4FrcnNzlZycrG7dul21PAEA1y6eqQUAL7F+/fpCR/n+85//SJLq1asnSerZs6ccDofGjx9f4HrTNHXy5ElJ54vhsLAwzZs3Tzk5Oa5rFi5cWKB4vVA0/vG50by8vAKr6zZt2lS1a9fWCy+8oIyMjAK5Hj9+vLhv16VHjx7y8fHRhAkTCjyPe+H9derUScHBwZo8eXK+1YUvp9+LxcXFaevWrVq9enWBttTUVOXm5pYoXnh4uBo0aKBFixbl+6w2btyoXbt25bu2XLlyrn6utBYtWmj37t3Kzs4utN0wDM2fP1+9e/dW//798z2/fcGePXuUlZWl22677YrnBwC49jFSCwBeYtiwYTp79qzuvvtu3XjjjcrJydGWLVv07rvvKioqSgMHDpR0vgCdOHGiEhISdPjwYfXo0UPly5fXoUOH9OGHH+rvf/+7Ro0aJV9fX02cOFEPP/yw7rjjDt1zzz06dOiQ3njjjQLP1NavX1+33nqrEhISdOrUKVWqVEnvvPNOgULOx8dHr776qjp37qz69etr4MCBql69uo4ePar169crODhYK1asKNH7rlOnjv7v//5Pzz33nFq1aqWePXvK399fSUlJCg8P15QpUxQcHKxXXnlF999/v26++Wb17dtXYWFh+umnn7Rq1Sq1bNlSc+fO/dO+PvjgA3333XcFzvfv319PPPGEli9frrvuuksDBgxQ06ZNlZmZqV27dun999/X4cOHFRoaWqL3NnnyZHXv3l0tW7bUwIEDdfr0ac2dO1cNGjTIV+gGBAQoOjpa7777rm644QZVqlRJDRo0UIMGDUrUX2G6d++u5557Ths3blTHjh0LvcbHx0dvv/22evToobi4OP3nP//JN7q/du1alStXTh06dLjsfAAAXsiuZZcBAKXro48+MgcNGmTeeOONZlBQkOnn52fWqVPHHDZsmHns2LEC13/wwQfm7bffbgYGBpqBgYHmjTfeaMbHx5v79u3Ld93LL79s1qpVy/T39zebNWtmbtq0yWzTpk2+LX1M0zR/+OEHs3379qa/v79ZtWpV8+mnnzbXrl2bb0ufC77++muzZ8+eZuXKlU1/f3+zZs2aZlxcnPnJJ5+4rvnjljF/VNT2Qa+//roZExNj+vv7mxUrVjTbtGljrl27Nt8169evNzt16mSGhISYZcuWNWvXrm0OGDDA3LZt2yU/2wtb+hR1bN682TTN81sHJSQkmHXq1DH9/PzM0NBQ87bbbjNfeOEF19ZKF7b0mT59eoF+VMi2PO+884554403mv7+/maDBg3M5cuXm7169TJvvPHGfNdt2bLFbNq0qenn55cvTv/+/c3AwMACfV34fIujUaNG5oMPPljo/X/8+Zw9e9Zs06aNGRQUZH7xxReu882bNzfvu+++YvUFAMDFDNO8CitOAAC8Wtu2bSVJGzZssDUPb9WkSROFhYVp7dq1pdLfW2+9pfj4eP3000+qUKFCie7duXOnbr75Zu3YsaPIZ54BALgUnqkFAMBDnTt3rsAU7g0bNuibb75xfbFQGvr166caNWooMTGxxPdOnTpVvXv3pqAFAFjGSC0A4IpjpLZ0HD58WO3bt9d9992n8PBwfffdd5o3b55CQkK0e/duVa5c2e4UAQC46lgoCgAAD1WxYkU1bdpUr776qo4fP67AwEB16dJFU6dOpaAFAHgNRmoBAAAAAB6LZ2oBAAAAAB6LohYAAAAA4LEoagEAAAAAHouiFgAAAADgsShqAQAAAAAei6IWAAAAAOCxKGoBAAAAAB6LohYAAAAA4LEoagEAAAAAHuv/A1pUzmw524MGAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "============================================================\n", - "CONVERGENCE SUMMARY (p=2 scaling)\n", - "============================================================\n", - "Converged: 67 (63.8%)\n", - "Did not converge: 38 (36.2%)\n", - "Total experiments: 105\n", - "============================================================\n", - "\n" - ] - } - ], - "source": [ - "# Define sweep directory and parameters\n", - "sweep_dir = \"/home/facosta/group-agf/sweeps/p2_scaling_sweep_20251215_205347\"\n", - "\n", - "# Parameters from p2_scaling_sweep.yaml\n", - "k_values = [2, 3, 4, 5, 6, 7, 8]\n", - "hidden_dims = [\n", - " 4,\n", - " 8,\n", - " 16,\n", - " 32,\n", - " 64,\n", - " 128,\n", - " 256,\n", - " 512,\n", - " 1024,\n", - " 2048,\n", - " 4096,\n", - " 8192,\n", - " 16384,\n", - " 32768,\n", - " 65536,\n", - "]\n", - "\n", - "# Load convergence data\n", - "reduction_threshold = 0.6 # 90% loss reduction\n", - "conv_grid, conv_std = load_sweep_results_grid_convergence(\n", - " sweep_dir, k_values, hidden_dims, reduction_threshold=reduction_threshold\n", - ")\n", - "\n", - "\n", - "from matplotlib.colors import LogNorm\n", - "\n", - "# Plot the heatmap\n", - "plt.figure(figsize=(10, 8))\n", - "cmap = plt.cm.viridis_r.copy()\n", - "cmap.set_bad(color=\"black\")\n", - "plt.imshow(conv_grid, aspect=\"auto\", cmap=cmap, norm=LogNorm())\n", - "\n", - "plt.xlabel(\"Sequence Length (k)\", fontsize=12)\n", - "plt.ylabel(\"Hidden Dimension (h)\", fontsize=12)\n", - "plt.xticks(range(len(k_values)), k_values)\n", - "\n", - "# Create y-tick labels with both power notation and actual values for larger dims\n", - "ytick_labels = []\n", - "for h in hidden_dims:\n", - " if h >= 1024:\n", - " power = int(np.log2(h))\n", - " ytick_labels.append(f\"$2^{{{power}}}$ ({h:,})\")\n", - " else:\n", - " ytick_labels.append(f\"{h}\")\n", - "\n", - "plt.yticks(range(len(hidden_dims)), ytick_labels, fontsize=9)\n", - "plt.gca().invert_yaxis()\n", - "\n", - "# Add theoretical boundary line (h > p^(k-1), where p=2)\n", - "# For p=2: boundary at h = 2^(k-1), so h=1,2,4,8,16,32,64\n", - "x_step = np.arange(len(k_values)) - 0.5\n", - "# Find y index where h = 2^(k-1) for each k\n", - "y_boundary = []\n", - "for i, k in enumerate(k_values):\n", - " boundary_h = 2 ** (k - 1)\n", - " # Find closest hidden_dim index\n", - " try:\n", - " y_idx = hidden_dims.index(boundary_h)\n", - " except ValueError:\n", - " # If exact match not found, find closest\n", - " y_idx = np.argmin(np.abs(np.array(hidden_dims) - boundary_h))\n", - " y_boundary.append(y_idx)\n", - "\n", - "plt.step(\n", - " x_step,\n", - " y_boundary,\n", - " where=\"post\",\n", - " color=\"red\",\n", - " linewidth=3,\n", - " linestyle=\"--\",\n", - " label=r\"Theory boundary ($h > 2^{k-1}$)\",\n", - ")\n", - "\n", - "plt.legend(loc=\"upper left\", fontsize=11, frameon=True)\n", - "plt.colorbar(label=f\"Steps to {reduction_threshold*100:.0f}% Convergence\")\n", - "plt.title(\n", - " f\"p=2 Scaling: Steps to {reduction_threshold*100:.0f}% Convergence\\n(black = did not converge)\",\n", - " fontsize=13,\n", - " fontweight=\"bold\",\n", - ")\n", - "plt.tight_layout()\n", - "plt.show()\n", - "\n", - "# Print summary statistics\n", - "n_not_converged = np.sum(np.isnan(conv_grid))\n", - "n_converged = np.sum(~np.isnan(conv_grid))\n", - "total = conv_grid.size\n", - "\n", - "print(f\"\\n{'='*60}\")\n", - "print(f\"CONVERGENCE SUMMARY (p=2 scaling)\")\n", - "print(f\"{'='*60}\")\n", - "print(f\"Converged: {n_converged:3d} ({100*n_converged/total:.1f}%)\")\n", - "print(f\"Did not converge: {n_not_converged:3d} ({100*n_not_converged/total:.1f}%)\")\n", - "print(f\"Total experiments: {total:3d}\")\n", - "print(f\"{'='*60}\\n\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "b1e10a36", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "gagf-PDhBFja6-py3.12", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.2" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/gagf/rnns/seq_mlp_group_size.ipynb b/gagf/rnns/seq_mlp_group_size.ipynb deleted file mode 100644 index 76e6ac7..0000000 --- a/gagf/rnns/seq_mlp_group_size.ipynb +++ /dev/null @@ -1,1564 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "c8c5c4b6", - "metadata": {}, - "source": [ - "# MLP Scaling: $H$ vs $|G|$ \n", - "\n", - "Hidden neurons vs group size scaling experiments." - ] - }, - { - "cell_type": "markdown", - "id": "155908c2", - "metadata": {}, - "source": [ - "## Set up" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "7fc4c5b6", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "The autoreload extension is already loaded. To reload it, use:\n", - " %reload_ext autoreload\n", - "The jupyter_black extension is already loaded. To reload it, use:\n", - " %reload_ext jupyter_black\n", - "Working directory: /home/facosta/group-agf/gagf\n", - "Directory added to path: /home/facosta/group-agf\n", - "Directory added to path: /home/facosta/group-agf/gagf\n" - ] - } - ], - "source": [ - "# autoreload\n", - "%load_ext autoreload\n", - "%autoreload 2\n", - "# jupyter black formatter\n", - "%load_ext jupyter_black\n", - "\n", - "import subprocess\n", - "import os\n", - "import sys\n", - "\n", - "gitroot_path = subprocess.check_output(\n", - " [\"git\", \"rev-parse\", \"--show-toplevel\"], universal_newlines=True\n", - ")\n", - "\n", - "os.chdir(os.path.join(gitroot_path[:-1], \"gagf\"))\n", - "print(\"Working directory: \", os.getcwd())\n", - "\n", - "sys_dir = os.path.dirname(os.getcwd())\n", - "sys.path.append(sys_dir)\n", - "print(\"Directory added to path: \", sys_dir)\n", - "sys.path.append(os.getcwd())\n", - "print(\"Directory added to path: \", os.getcwd())\n", - "\n", - "import yaml\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "from pathlib import Path" - ] - }, - { - "cell_type": "markdown", - "id": "9831010d", - "metadata": {}, - "source": [ - "## Specify experiment directory" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "b9f8fc25", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "True\n" - ] - } - ], - "source": [ - "# sweep_dir = \"/home/facosta/group-agf/sweeps/onehot_scaling_sweep_20251215_175955\"\n", - "sweep_dir = \"/home/facosta/group-agf/sweep_results/onehot_scaling_sweep_20260112_022012\"\n", - "print(os.path.exists(sweep_dir))" - ] - }, - { - "cell_type": "markdown", - "id": "d8342c22", - "metadata": {}, - "source": [ - "### Steps to Convergence" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "bc6dd932", - "metadata": {}, - "outputs": [], - "source": [ - "def load_sweep_results_grid_convergence_p_h(\n", - " sweep_dir: str,\n", - " k: int,\n", - " p_values: list,\n", - " hidden_dims: list,\n", - " reduction_threshold: float = 0.99,\n", - " max_p: int = None,\n", - "):\n", - " \"\"\"\n", - " Load sweep results and compute steps to convergence for p vs hidden_dim sweep.\n", - "\n", - " Updated for experiment naming: k{k}_p{p}_h{h}\n", - " Only loads completed experiments (checks for run_summary.yaml).\n", - "\n", - " Convergence is defined as reaching `reduction_threshold` loss reduction\n", - " (e.g., 0.99 = 99% reduction from initial loss).\n", - "\n", - " If convergence is not reached, the grid point is set to NaN (blacked out).\n", - "\n", - " Args:\n", - " sweep_dir: Path to the sweep directory\n", - " k: Sequence length parameter (2, 3, or 4)\n", - " p_values: List of p (group size) values\n", - " hidden_dims: List of hidden dimension values\n", - " reduction_threshold: Fraction of loss reduction to consider converged\n", - " max_p: Maximum p value to include (filters incomplete experiments)\n", - "\n", - " Returns:\n", - " grid: 2D array with mean steps to convergence (NaN if didn't converge)\n", - " Shape: (len(hidden_dims), len(p_values))\n", - " std_grid: 2D array with standard deviations across seeds\n", - " \"\"\"\n", - " sweep_path = Path(sweep_dir)\n", - "\n", - " grid = np.full((len(hidden_dims), len(p_values)), np.nan)\n", - " std_grid = np.full((len(hidden_dims), len(p_values)), np.nan)\n", - "\n", - " for i, h in enumerate(hidden_dims):\n", - " for j, p in enumerate(p_values):\n", - " # Filter by max_p if specified\n", - " if max_p is not None and p > max_p:\n", - " continue\n", - "\n", - " exp_name = f\"k{k}_p{p}_h{h}\"\n", - " exp_dir = sweep_path / exp_name\n", - "\n", - " if not exp_dir.exists():\n", - " continue\n", - "\n", - " # Check if experiment is completed (has run_summary.yaml)\n", - " seed_dir = exp_dir / \"seed_0\"\n", - " if not seed_dir.exists() or not (seed_dir / \"run_summary.yaml\").exists():\n", - " continue # Skip incomplete experiments\n", - "\n", - " # Collect convergence steps from all seeds\n", - " convergence_steps = []\n", - " for seed_dir in exp_dir.glob(\"seed_*\"):\n", - " loss_file = seed_dir / \"train_loss_history.npy\"\n", - " if loss_file.exists():\n", - " loss_history = np.load(loss_file)\n", - " initial_loss = loss_history[0]\n", - "\n", - " if initial_loss > 0:\n", - " # Compute reduction at each step\n", - " reductions = 1 - loss_history / initial_loss\n", - "\n", - " # Find first step where reduction >= threshold\n", - " converged_mask = reductions >= reduction_threshold\n", - " if np.any(converged_mask):\n", - " step = np.argmax(converged_mask) # First True\n", - " convergence_steps.append(step)\n", - " # else: Never converged - don't add to list\n", - "\n", - " if convergence_steps:\n", - " grid[i, j] = np.mean(convergence_steps)\n", - " std_grid[i, j] = (\n", - " np.std(convergence_steps) if len(convergence_steps) > 1 else 0.0\n", - " )\n", - " # else: No seeds converged - grid[i,j] remains NaN (blacked out)\n", - "\n", - " return grid, std_grid" - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "id": "9a87f24d", - "metadata": {}, - "outputs": [], - "source": [ - "def load_sweep_results_grid_final_loss_p_h(\n", - " sweep_dir: str,\n", - " k: int,\n", - " p_values: list,\n", - " hidden_dims: list,\n", - " max_p: int = None,\n", - "):\n", - " \"\"\"\n", - " Load sweep results and compute final training loss for p vs hidden_dim sweep.\n", - "\n", - " Updated for experiment naming: k{k}_p{p}_h{h}\n", - " Only loads completed experiments (checks for run_summary.yaml).\n", - "\n", - " Args:\n", - " sweep_dir: Path to the sweep directory\n", - " k: Sequence length parameter (2, 3, or 4)\n", - " p_values: List of p (group size) values\n", - " hidden_dims: List of hidden dimension values\n", - " max_p: Maximum p value to include (filters incomplete experiments)\n", - "\n", - " Returns:\n", - " grid: 2D array with mean final training loss (NaN if experiment incomplete)\n", - " Shape: (len(hidden_dims), len(p_values))\n", - " std_grid: 2D array with standard deviations across seeds\n", - " \"\"\"\n", - " sweep_path = Path(sweep_dir)\n", - "\n", - " grid = np.full((len(hidden_dims), len(p_values)), np.nan)\n", - " std_grid = np.full((len(hidden_dims), len(p_values)), np.nan)\n", - "\n", - " for i, h in enumerate(hidden_dims):\n", - " for j, p in enumerate(p_values):\n", - " # Filter by max_p if specified\n", - " if max_p is not None and p > max_p:\n", - " continue\n", - "\n", - " exp_name = f\"k{k}_p{p}_h{h}\"\n", - " exp_dir = sweep_path / exp_name\n", - "\n", - " if not exp_dir.exists():\n", - " continue\n", - "\n", - " # Check if experiment is completed (has run_summary.yaml)\n", - " seed_dir = exp_dir / \"seed_0\"\n", - " if not seed_dir.exists() or not (seed_dir / \"run_summary.yaml\").exists():\n", - " continue # Skip incomplete experiments\n", - "\n", - " # Collect final losses from all seeds\n", - " final_losses = []\n", - " for seed_dir in exp_dir.glob(\"seed_*\"):\n", - " loss_file = seed_dir / \"train_loss_history.npy\"\n", - " if loss_file.exists():\n", - " loss_history = np.load(loss_file)\n", - " if len(loss_history) > 0:\n", - " final_loss = loss_history[-1] # Last value\n", - " final_losses.append(final_loss)\n", - "\n", - " if final_losses:\n", - " grid[i, j] = np.mean(final_losses)\n", - " std_grid[i, j] = np.std(final_losses) if len(final_losses) > 1 else 0.0\n", - " # else: No seeds found - grid[i,j] remains NaN (blacked out)\n", - "\n", - " return grid, std_grid" - ] - }, - { - "cell_type": "code", - "execution_count": 78, - "id": "3bb53f80", - "metadata": {}, - "outputs": [], - "source": [ - "def load_training_loss_curves_p(\n", - " sweep_dir: str,\n", - " k: int,\n", - " hidden_dim: int,\n", - " p_values: list,\n", - "):\n", - " \"\"\"\n", - " Load training loss histories for different group sizes (p) with fixed k and hidden_dim.\n", - "\n", - " Args:\n", - " sweep_dir: Path to the sweep directory\n", - " k: Sequence length parameter (fixed)\n", - " hidden_dim: Hidden dimension (fixed)\n", - " p_values: List of p (group size) values to plot\n", - "\n", - " Returns:\n", - " curves: Dictionary mapping p -> list of loss histories (one per seed)\n", - " Each loss history is a numpy array\n", - " \"\"\"\n", - " sweep_path = Path(sweep_dir)\n", - "\n", - " curves = {}\n", - "\n", - " for p in p_values:\n", - " exp_name = f\"k{k}_p{p}_h{hidden_dim}\"\n", - " exp_dir = sweep_path / exp_name\n", - "\n", - " if not exp_dir.exists():\n", - " continue\n", - "\n", - " # Check if experiment is completed\n", - " seed_dir = exp_dir / \"seed_0\"\n", - " if not seed_dir.exists() or not (seed_dir / \"run_summary.yaml\").exists():\n", - " continue # Skip incomplete experiments\n", - "\n", - " # Collect loss histories from all seeds\n", - " loss_histories = []\n", - " for seed_dir in exp_dir.glob(\"seed_*\"):\n", - " loss_file = seed_dir / \"train_loss_history.npy\"\n", - " if loss_file.exists():\n", - " loss_history = np.load(loss_file)\n", - " if len(loss_history) > 0:\n", - " loss_histories.append(loss_history)\n", - "\n", - " if loss_histories:\n", - " curves[p] = loss_histories\n", - "\n", - " return curves" - ] - }, - { - "cell_type": "code", - "execution_count": 72, - "id": "bf14dee1", - "metadata": {}, - "outputs": [], - "source": [ - "def load_sweep_results_grid_final_val_loss_p_h(\n", - " sweep_dir: str,\n", - " k: int,\n", - " p_values: list,\n", - " hidden_dims: list,\n", - " max_p: int = None,\n", - "):\n", - " \"\"\"\n", - " Load sweep results and compute final validation loss for p vs hidden_dim sweep.\n", - "\n", - " Updated for experiment naming: k{k}_p{p}_h{h}\n", - " Only loads completed experiments (checks for run_summary.yaml).\n", - "\n", - " Args:\n", - " sweep_dir: Path to the sweep directory\n", - " k: Sequence length parameter (2, 3, or 4)\n", - " p_values: List of p (group size) values\n", - " hidden_dims: List of hidden dimension values\n", - " max_p: Maximum p value to include (filters incomplete experiments)\n", - "\n", - " Returns:\n", - " grid: 2D array with mean final validation loss (NaN if experiment incomplete)\n", - " Shape: (len(hidden_dims), len(p_values))\n", - " std_grid: 2D array with standard deviations across seeds\n", - " \"\"\"\n", - " sweep_path = Path(sweep_dir)\n", - "\n", - " grid = np.full((len(hidden_dims), len(p_values)), np.nan)\n", - " std_grid = np.full((len(hidden_dims), len(p_values)), np.nan)\n", - "\n", - " for i, h in enumerate(hidden_dims):\n", - " for j, p in enumerate(p_values):\n", - " # Filter by max_p if specified\n", - " if max_p is not None and p > max_p:\n", - " continue\n", - "\n", - " exp_name = f\"k{k}_p{p}_h{h}\"\n", - " exp_dir = sweep_path / exp_name\n", - "\n", - " if not exp_dir.exists():\n", - " continue\n", - "\n", - " # Check if experiment is completed (has run_summary.yaml)\n", - " seed_dir = exp_dir / \"seed_0\"\n", - " if not seed_dir.exists() or not (seed_dir / \"run_summary.yaml\").exists():\n", - " continue # Skip incomplete experiments\n", - "\n", - " # Collect final validation losses from all seeds\n", - " final_losses = []\n", - " for seed_dir in exp_dir.glob(\"seed_*\"):\n", - " loss_file = seed_dir / \"val_loss_history.npy\"\n", - " if loss_file.exists():\n", - " loss_history = np.load(loss_file)\n", - " if len(loss_history) > 0:\n", - " final_loss = loss_history[-1] # Last value\n", - " final_losses.append(final_loss)\n", - "\n", - " if final_losses:\n", - " grid[i, j] = np.mean(final_losses)\n", - " std_grid[i, j] = np.std(final_losses) if len(final_losses) > 1 else 0.0\n", - " # else: No seeds found - grid[i,j] remains NaN (blacked out)\n", - "\n", - " return grid, std_grid" - ] - }, - { - "cell_type": "code", - "execution_count": 69, - "id": "42ce6ffd", - "metadata": {}, - "outputs": [], - "source": [ - "# Define parameter values from the sweep config\n", - "# Filter to p <= 55 for completed experiments\n", - "p_values = [5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70]\n", - "hidden_dims = [80, 160, 240, 320, 400, 480, 560, 640, 720, 800, 880, 960, 1040, 1120]\n", - "k_values = [2, 3] # , 4] # Different k values to plot separately" - ] - }, - { - "cell_type": "markdown", - "id": "7bf99dee", - "metadata": {}, - "source": [ - "### Plot steps to convergence grid" - ] - }, - { - "cell_type": "code", - "execution_count": 70, - "id": "522570f5", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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J9SpUweDBw9Gjx498O233wIAXF1dkZaWhri4OFndjx49gqurq9btWltbw9HRUTYRERERkenI7ANjqKkwDhw4gE6dOsHNzQ0qlQobN27Mscz8+fPh6ekJGxsbNGnSRNYHHHh5G1ndunVRvnx5hIaGonTp0nocLf0xgflPcnIyzMzkh8Pc3BwajQYAkJ6ejvT09DyXadCgASwtLbF7926p/MqVK7h79y78/PyKeQ+IiIiI6HWRvQ91amqq1uWSkpJQt25dzJ8/X2v56tWrMWLECIwfPx6nT59G3bp1ERgYiMePH0vLODs749y5c7h16xZWrlxp9EeEsA/Mfzp16oQpU6agYsWKqFmzJs6cOYPvvvsOffv2BQA4OjrC398foaGhsLW1hYeHB/bv34/ly5fju+++AwA4OTmhX79+GDFiBEqWLAlHR0cMGTIEfn5+HIGMiIiI6FVlyOez/LedChUqyGaPHz8eEyZMyLF4+/btZYNSZffdd9+hf//+CAkJAQAsXLgQf/75J37++WeMGTNGtqyLiwvq1q2LgwcP4r333tNzR3THBOY/c+fORXh4OD7//HM8fvwYbm5u+PTTTzFu3DhpmVWrViEsLAy9evVCbGwsPDw8MGXKFHz22WfSMt9//z3MzMzQrVs3pKamIjAwED/++KMxdomIiIiIXlH37t2TdT2wtrYudB1paWk4deoUwsLCpHlmZmZo166dNILuo0ePUKJECTg4OCA+Ph4HDhzAwIED9d8BPTCB+Y+DgwNmz56N2bNn57qMq6srli5dmmc9NjY2mD9/fq7NdERERERE+iqKvtNPnjyBWq2Gi4uLbL6LiwsuX74MALhz5w4GDBggdd4fMmQIateurdd29cUEhoiIiIhID6/ygywbN26Ms2fPGnaj+WAnfiIiIiKi11Dp0qVhbm6eo1N+XiPoKgETGCIiIiIifagMPBURKysrNGjQQDaCrkajwe7duxU9gi5vISMiIiIiekUlJibi+vXr0utbt27h7NmzKFmyJCpWrIgRI0YgODgYDRs2ROPGjTF79mwkJSVJo5IpERMYIiIiIiI9CLOXk6G2VRgnT55EmzZtpNcjRowAAAQHByMyMhI9evTAv//+i3HjxiEmJgb16tXDtm3bcnTsVxImMEREREREr6jWrVtDCJHnMoMHD8bgwYMNFJH+mMAQEREREemjiPum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7485c+a8wsiJiIiIiN4cbIH5lxAlz2a1bVOzZk38+eef5RESERERERkBjoHRLbbAEBERERGR0WALDBERERFRGUihhAw6aoHR0XEMGVtgiIiIiIjIaDCBISIiIiIio8EuZEREREREZSCVCEglupneWFfHMWRsgSEiIiIiIqPBFhgiIiIiojKQ6XAQv66OY8jYAkNEREREREaDLTBERERERGUgkygh09ENJnV1HEPGFhgiIiIiIjIabIEhIqNR/dQT1N8ZD5u4TH2HUiSlkOg7hELlCMO7fuVyM0XfIRARlYoUAlLoaBYyHR3HkDGBISKjUP3UE3QbFQmZgj/cREREbzImMERkFOrvjGfyQkREBoljYHTL8PoQEBFpYReXru8QSA8eVbXRdwhERGRg2AJjoJ4orZGeY5gfT3KOlb5DKFKa0kzfIRRKaYDjD/J7orDWdwgasoRhfh/o1VHIpPjv+01x+7m9vkPRKkdp2N/jmFhnfYdQKImpYV9FFumG/5tjc9NwY8zJzNB3CPQaM9yaT0RUhExLGeLryPUdhlaGOEg+vxwDn2Qgztke+7t4IKJ5dX2HQkRUJCmUkOroBpO6Oo4hYwJDREYrvo4cK35+V99haPVCYa7vEAqVauDxPcpg1zEiItKOCQwRERERURlIAcgkuppGmfgeEBERERGR0WALDBERERFRGcighAy6GVso4xgYtsAQEREREZF2cXFx6NixIzw8PNCoUSP89ttv+g6JLTBERERERGUhlSghleimBUaq4xtZmpiYYOnSpWjSpAni4+PRvHlzfPDBB7C21t8tF5jAEBERERGRVi4uLnBxcQEAODs7w8HBAU+ePNFrAsMuZEREREREZZA7BkZ3j5I4duwYunXrhipVqkAikWDXrl0aZVauXIlatWrBwsICrVq1wtmzZ7Xu68KFC8jJyUH16vq9RxcTGCIiIiKi19SLFy/QuHFjrFy5Uuv6bdu2YeLEiQgODkZ4eDgaN24MHx8fJCYmqpV78uQJ/P39sW7dOl2EXSh2ISMiIiIiMjKpqalqz83NzWFurnmT4i5duqBLly4F7ue7777DyJEjMWzYMADAmjVr8Mcff+DHH3/EtGnTAACZmZnw8/PDtGnT8M4775TjqygdtsAQEREREZWBTCJ0+gCA6tWrQy6Xqx7z588vcdxZWVm4cOECOnfurFomlUrR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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Load convergence data for each k value separately\n", - "reduction_threshold = 0.90\n", - "max_p = 70 # Only visualize completed experiments (p <= 55)\n", - "\n", - "from matplotlib.colors import LogNorm\n", - "\n", - "# Create separate plots for each k value\n", - "for k in k_values:\n", - " conv_grid, conv_std = load_sweep_results_grid_convergence_p_h(\n", - " sweep_dir,\n", - " k,\n", - " p_values,\n", - " hidden_dims,\n", - " reduction_threshold=reduction_threshold,\n", - " max_p=max_p,\n", - " )\n", - "\n", - " # Filter p values - only show p <= max_p\n", - " p_values_filtered = [p for p in p_values if p <= max_p]\n", - "\n", - " # Plot convergence heatmap: p (group size) vs hidden_dim\n", - " plt.figure(figsize=(12, 8))\n", - " cmap = plt.cm.viridis_r.copy()\n", - " cmap.set_bad(color=\"black\")\n", - " # Set extent to align cells with tick positions\n", - " # extent: [left, right, bottom, top] in data coordinates\n", - " plt.imshow(\n", - " conv_grid[:, : len(p_values_filtered)],\n", - " aspect=\"equal\",\n", - " cmap=cmap,\n", - " norm=LogNorm(),\n", - " )\n", - "\n", - " plt.xlabel(\"Group Size $|G|$\", fontsize=14)\n", - " plt.ylabel(\"Hidden Dimension $H$\", fontsize=14)\n", - " plt.xticks(\n", - " range(len(p_values_filtered)), p_values_filtered, rotation=45, ha=\"center\"\n", - " )\n", - "\n", - " # Set y-axis ticks (hidden dimensions)\n", - " plt.yticks(range(len(hidden_dims)), hidden_dims)\n", - " plt.gca().invert_yaxis()\n", - "\n", - " # Theory boundaries\n", - " x_step = np.arange(len(p_values_filtered) + 1) - 0.5\n", - "\n", - " # Upper boundary: H = (k+1)*2^{k-1} * |G|\n", - " upper_boundary_coeff = (k + 1) * (2 ** (k - 1)) * reduction_threshold\n", - " y_step_upper = [\n", - " min(\n", - " len(hidden_dims) - 1,\n", - " (\n", - " # Find the first H that satisfies H >= upper_boundary_coeff * p\n", - " np.argmax(np.array(hidden_dims) >= upper_boundary_coeff * p)\n", - " if upper_boundary_coeff * p <= max(hidden_dims)\n", - " else len(hidden_dims) - 1\n", - " ),\n", - " )\n", - " for p in p_values_filtered\n", - " ]\n", - " y_step_upper.append(y_step_upper[-1]) # Extend for step plot\n", - " # Convert to edge positions (subtract 0.5 to place at bottom edge of cells)\n", - " y_step_upper = [y - 0.5 for y in y_step_upper]\n", - "\n", - " # Lower boundary: H = 2^{k-1} * |G|\n", - " lower_boundary_coeff = 2 ** (k - 1) * reduction_threshold\n", - " y_step_lower = [\n", - " min(\n", - " len(hidden_dims) - 1,\n", - " (\n", - " # Find the first H that satisfies H >= lower_boundary_coeff * p\n", - " np.argmax(np.array(hidden_dims) >= lower_boundary_coeff * p)\n", - " if lower_boundary_coeff * p <= max(hidden_dims)\n", - " else len(hidden_dims) - 1\n", - " ),\n", - " )\n", - " for p in p_values_filtered\n", - " ]\n", - " y_step_lower.append(y_step_lower[-1]) # Extend for step plot\n", - " # Convert to edge positions (subtract 0.5 to place at bottom edge of cells)\n", - " y_step_lower = [y - 0.5 for y in y_step_lower]\n", - "\n", - " plt.step(\n", - " x_step,\n", - " y_step_upper,\n", - " where=\"post\",\n", - " color=\"red\",\n", - " linewidth=4,\n", - " linestyle=\"-\",\n", - " label=f\"Upper boundary ($H$ = $(k+1) \\\\cdot 2^{{k-1}} |G| x {reduction_threshold}$ = {upper_boundary_coeff * reduction_threshold} * |G|) \",\n", - " )\n", - "\n", - " plt.step(\n", - " x_step,\n", - " y_step_lower,\n", - " where=\"post\",\n", - " color=\"white\",\n", - " linewidth=4,\n", - " linestyle=\"-\",\n", - " label=f\"Lower boundary ($H$ = $2^{{k-1}} |G| x {reduction_threshold}$ = {lower_boundary_coeff * reduction_threshold} * |G|) \",\n", - " )\n", - "\n", - " # Place legend outside the plot area\n", - " plt.legend(\n", - " loc=\"upper center\", bbox_to_anchor=(0.5, -0.12), fontsize=12, frameon=True\n", - " )\n", - "\n", - " plt.colorbar(label=f\"Steps to {reduction_threshold*100}% Convergence\")\n", - " plt.title(\n", - " f\"Steps to {reduction_threshold*100}% Convergence: Group Size $|G|$ vs Hidden Dimension $H$\\n($k={k}$, black = did not converge, p ≤ {max_p})\",\n", - " fontsize=14,\n", - " fontweight=\"bold\",\n", - " )\n", - " plt.tight_layout()\n", - " plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "28e479df", - "metadata": {}, - "source": [ - "### Final Training Loss\n", - " " - ] - }, - { - "cell_type": "code", - "execution_count": 74, - "id": "06fb5f82", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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JiK33Xab0/yVD31mzqOor2VubZptLz09Pds5X5l69uyZ5z9pV8y87saMGZPrta1WrZqxb98+p32u/lDtaoqMjDS17RVmE5HHHnvMqe2PP/443/saRv5fk4W9ZmYTkdtvv93l8e666y6XXyq4MnLkSMd+FStWNA4dOmTq2lytoInIM888k+u2t912m5GSkpKvuAwj54Tht99+M4KDg42QkBDj+PHj+W4vr3ZdOXTokNM5fPfdd07rJ0yY4Fh3ww03ZDtGQf4+XCnORCS396ru3bvn+F5ldj/DMPcaMfteXJhrumPHDqdtOnfunOf1dLWuRYsW2eIMCgoy/vOf/xgRERHZ1lWoUME4c+aMx65ZQV63eX2mKOj7aVH/nq/461//akgyvvzyyxy36dChg8vXK0q2EnFr1po1a/Tnn39mW963b1/VqFGjwO198803uvfee9WgQQMtWbLE0bFqyZIlmjlzpqpWrSqr1aobb7xRrVq1UlRUlMqVK6fU1FTt3r1bq1evlmEYWrBggR577LFcS5Hu8vXXX6t169a64447dOHCBdWsWVOSiv088nMti6O9119/XV9//bVjv8aNG+vuu+/WDz/8oFWrVhX4PMx477339OqrrzrmGzZsqHvvvVcnT57UokWLlJWVpd9//129evXSTz/9JD+/y3+OV99+0KlTJ7Vv314XLlzQiRMn9M033+jSpUuO9QXZtrDWr1/v+Ll8+fLq1atXodpz9Zo0e82KwsaNGzVgwADVrFlTy5cv13//+19J0qpVq/Tee+9p4MCBebZx9S0Ff/75p2644QY1bdpUMTExatGihTp06KC6desWKK5rb8+UpNmzZ+v48eOSJD8/P9WrV0/S5U7yV9+62aVLF9166606ffq0Fi1apJSUFH399dcaPXq03nnnnQLFca1//etfunDhgkaOHGnqfbYg6tSpo7Zt22rLli2SpKVLlyo2Ntax/t///rfj58GDBzt+Lq6/D1f/c86dO2eqrWvfq5o1a6YePXpo3759WrFiRZHvV1SvkaJ+b3clJiZGTZo00Q8//CBJ2rJli7KysmSz2QrUzu7duzV06FCFhITozTffVEZGhlJTU3X33XfLz89Pjz/+uNLT0/XPf/5T0uXBOObPn69x48ZJcv81K6rXbVG8nxbV73nXrl2SpLfeekuLFy92uc327dtlsVi4Nau08XQmZMa136TkNF2dVRfk25NRo0Y51u3Zs8dp3apVq5z2PXbsmLFs2TLjzTffNF5++WXjpZdeMqpVq+bY/toypKcqIr169TKysrJybLcg51Ec1zK/FZH8tlevXj3H8lq1ajndNjJo0KAcXye5KWhFpEmTJjnG8NZbbzm1tWLFCse6sLAwx/JTp05la/fw4cOmtr3CbEWkbNmyjv1atWrltO7aW2NctZ+f16TZa1YUFZFp06Y59klKSjIqVqzoWHfrrbfm6xplZGQYLVu2zPV9qU2bNsaePXuc9ivI+8KUKVMc21ksFmPhwoWOdc2aNXOsGzhwoNN+H330kWOdn59fjrcFXiunykXDhg0NSS5vz1u3bp3x/PPPO00bNmzIV7s5WbhwoSP+yMhIx21vV39rbrPZjN9//92xj5m/D1fy+z8nt/fmnH7HV79X1a1b1+mWl6FDh+b4XmV2P7OvkcL8n8zPNc3p/bRPnz5O212pVBTk/9DUqVMd6x544AGndS+99JJj3c033+z0/uSpa1aQ121u18HM+2lR/54N4/L7YmBgYL7+burWrZuvNlFy+OTwvcXt8ccfd/x85ZvGK65863X27Fn16NFD0dHRuu+++zRixAj9/e9/19ixY/X77787tv/tt9/cE3QennnmGacRR64o7vPIz7Us6vZSUlJ04MABx/L7779fZcqUccxf/Y1pcbl48aJ+/PHHHGO49tv1qzsw33bbbY6fb7rpJnXv3l2jRo3Su+++q0OHDum6664zte0VR48elXH5tkzTQxAXxXj1174mC3PNisKAAQMcP4eFhalnz56O+Svf5uXFz89PGzZs0Pjx4xUZGelym2+++UZ33HGH/vjjjwLH+M9//lMTJkxwzM+cOVODBg2SdPn67dmzx7Fu8eLFTkOj9unTx7EuMzPT0THUDLvdrgMHDshqtSomJibb+nnz5mnSpElO09XvJ2bcd999js7up0+f1oYNGyQ5V0O6dOni9A2tmb8Pd7r2vap3794KDAx0zD/44INFul9RvkaK+r09J0YRDAF+9fW4dsSmq8/56oFerpyDJ65ZUbxui+r9tCh+zz/99JPS0tJ0zz33OP73XDt9/PHHki4P8IHSpUQkIgsWLHD5wm7fvr2p9q5+o7r6zV26/A9Ykh5++GF99tlnebaVlpZmKoaiVr9+fZfLi/s88nMti7q9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AQAAQOlhkXu+ivfuUbm9AhURAAAAAG5HRQQAAAClh5sfaIicUREBAAAA4HYkIgAAAADcjluzAAAAUGowfK/3oCICAAAAwO2oiAAAAKD0sPxvcsdxkCsqIgAAAADczicTkfPnz2vUqFGKjo5WmTJldMsttyguLs5pm/379+uuu+5SeHi4goODFRMTo+PHjzvWp6amavjw4apQoYJCQkLUu3dvnT592t2nAgAAAHe6MnyvOybkyicTkUceeUTr1q3Te++9p71796pz587q1KmTfv/9d0nS4cOH1aZNG9WvX1+bNm3Sjz/+qAkTJigoKMjRxujRo7V69Wp9/PHH2rx5s06ePKlevXp56pQAAACAUsXn+ohcunRJy5cv13/+8x+1bdtWkjRx4kStXr1ac+fO1dSpU/WPf/xDd955p1588UXHfnXq1HH8nJSUpPnz52vp0qW6/fbbJUkLFizQjTfeqG3btunmm29270kBAADALQzr5ckdx0HufO4SZWZmKisry6m6IUllypTRN998I7vdrs8++0w33HCDunTposqVK6t169ZauXKlY9udO3cqIyNDnTp1ciyrX7++atasqa1bt+Z47LS0NCUnJztNAAAAAArO5xKR0NBQxcbGasqUKTp58qSysrL0/vvva+vWrTp16pTOnDmjlJQUzZw5U127dtXatWt17733qlevXtq8ebMkKT4+XgEBASpXrpxT25GRkYqPj8/x2DNmzFB4eLhjqlGjRnGeKgAAAIoafUS8hs8lIpL03nvvyTAMVatWTYGBgXrjjTf0wAMPyGq1ym63S5LuvvtujR49Wk2bNtW4cePUo0cPzZs3r1DHHT9+vJKSkhzTiRMniuJ0AAAAgFLHJxOROnXqaPPmzUpJSdGJEye0Y8cOZWRk6LrrrlPFihXl5+enBg0aOO1z4403OkbNioqKUnp6uhITE522OX36tKKionI8bmBgoMLCwpwmAAAAAAXnk4nIFcHBwapSpYrOnTunL7/8UnfffbcCAgIUExOjAwcOOG37yy+/KDo6WpLUokUL+fv7a/369Y71Bw4c0PHjxxUbG+vWcwAAAID7GBb3Tcidz42aJUlffvmlDMNQvXr1dOjQIY0dO1b169fX4MGDJUljx45V37591bZtW3Xo0EFr1qzR6tWrtWnTJklSeHi4Hn74YY0ZM0YREREKCwvTyJEj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21ERAQAAQKnBAw29BxURAAAAAG5HRQQAAAClB31EvAYVEQAAAABuRyICAAAAwO24NQsAAAClBp3VvQcVEQAAAABuR0UEAAAApQed1b0GFREAAAAAbkdFBAAAAKUGfUS8BxURAAAAAG5HRQQAAAClB31EvAYVEQAAAABu53OJSFZWliZMmKDatWurTJkyqlOnjqZMmSLDMBzbGIah5557TlWqVFGZMmXUqVMnHTx40KmdhIQE9e/fX2FhYSpXrpwefvhhpaSkuPt0AAAA4EaGxeK2CbnzuUTkhRde0Ny5c/Xmm29q//79euGFF/Tiiy9q9uzZjm1efPFFvfHGG5o3b562b9+u4OBgdenSRampqY5t+vfvr59++knr1q3Tp59+qi1btujRRx/1xCkBAAAApY7P9RH57rvvdPfdd6t79+6SpFq1aunf//63duzYIelyNWTWrFl69tlndffdd0uSFi9erMjISK1cuVL9+vXT/v37tWbNGsXFxally5aSpNmzZ+vOO+/Uyy+/rKpVq7o8dlpamtLS0hzzycnJxXmqAAAAQInlcxWRW265RevXr9cvv/wiSfrhhx/0zTffqFu3bpKkI0eOKD4+Xp06dXLsEx4ertatW2vr1q2SpK1bt6pcuXKOJESSOnXqJKvVqu3bt+d47BkzZig8PNwx1ahRozhOEQAAAMXF4sYJufK5isi4ceOUnJys+vXry2azKSsrS9OmTVP//v0lSfHx8ZKkyMhIp/0iIyMd6+Lj41W5cmWn9X5+foqIiHBs48r48eM1ZswYx3xycjLJCAAAAGBCvhORixcvqmzZssUZS7589NFHWrJkiZYuXaqGDRtqz549GjVqlKpWrapBgwYV67EDAwMVGBhYrMcAAABA8eGBht4j34lIeHi46tWrp2bNmqlFixZq3ry5mjdvrpCQkOKML5uxY8dq3Lhx6tevnySpUaNGOnbsmGbMmKFBgwYpKipKknT69GlVqVLFsd/p06fVtGlTSVJUVJTOnDnj1G5mZqYSEhIc+wMAAAAoPvlORCpVqqSff/5ZP//8s5YuXSpJslgsqlOnjlq0aOGUnISHhxdbwBcvXpTV6ty1xWazyW63S5Jq166tqKgorV+/3pF4JCcna/v27Ro2bJgkKTY2VomJidq5c6datGghSdqwYYPsdrtat25dbLEDAADAw3igodfIdyJy8uRJ/fbbb9qxY4fi4uK0Y8cObd++XQcPHtTBgwf14YcfOratXbu2Izl56qmnijTgnj17atq0aapZs6YaNmyo3bt369VXX9WQIUMkXU6ORo0apalTp+r6669X7dq1NWHCBFWtWlX33HOPJOnGG29U165dNXToUM2bN08ZGRkaMWKE+vXrl+OIWQAAAACKToE6q1evXl3Vq1dXr169JEkDBgzQ0qVL9dFHH2n37t3avXu39uzZo19//VW//vqrli1bVuSJyOzZszVhwgQ9/vjjOnPmjKpWraq//vWveu655xzbPPXUU7pw4YIeffRRJSYmqk2bNlqzZo2CgoIc2yxZskQjRoxQx44dZbVa1bt3b73xxhtFGisAAAC8DBURr1Eko2b17t1bvXv3dsz/8ccfjsSkqIWGhmrWrFmaNWtWjttYLBZNnjxZkydPznGbiIgIxy1mAAAAANyrWIbvrVSpkjp37qzOnTsXR/MAAACAKYya5T187oGGAAAAAHwfiQgAAAAAt8t3InL8+PHijAMAAAAofhY3TshVvvuI1KpVS1FRUYqJiVGrVq3UunVrpaSkFGdsAAAAAEqofCcizZo1008//aTVq1dr9erVslj+P82777771LRpUzVt2lTNmjVTtWrViiVYAAAAoDDorO498p2I7Ny5UxkZGdq7d6927dqlnTt3ateuXfrxxx/1ySef6JNPPnEkJxUqVHAkJS+88EKxBQ8AAADANxVo+F5/f381b95czZs31yOPPCJJysrK0k8//aSdO3c6kpMffvhBX331ldavX08iAgAAAO/BAw29RqGfI2Kz2dS4cWM1btxYgwcPliTZ7Xbt379fO3fuLHSAAAAAAEqeYnmgodVqVcOGDdWwYcPiaB4AAAAwhT4i3oPniAAAAABwu2KpiAAAAABei2qFV6AiAgAAAMDtqIgUgcAkQ7YAw9NhuHTh+gxPh5Anm6cDyEOW3bvz9XS7t19B75dm562wMBKzyno6hDwFW9M8HUKugoxMT4eQK5sly9Mh5Oqi4Z3/g6/m76W/41TD7ukQUIrx3xcAAAClB8P3eg3v/qoXAAAAQIlERQQAAAClBsP3eg/TiUh6erpWrlypuLg4JSYmKisr+/2jFotF8+fPL1SAAAAAAEoeU4nIsWPHdMcdd+jw4cMycukgRiICAAAAr0IfEa9hKhEZPXq0Dh06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WBz9SAAAAADkbMuWLXrppZe0c+dOnTp1SitWrNA999zjtM2cOXP00ksvKT4+Xk2aNNHs2bOdHjSel8TERLVr104HDx7USy+9pIoVKxbxWeSfqUTk2LFjuuOOO3T48OFcsygSEQAAAHgVdw2t+79jJCcnOy0ODAxUYKDrATQuXLigJk2aaMiQIerVq1e29R9++KHGjBmjefPmqXXr1po1a5a6dOmiAwcOqHLlypKkpk2bKjMzM9u+a9euVdWqVVWuXDn98MMPOn36tHr16qX77rvPY4/cMJWIjB49WocOHdKAAQM0ZMgQVa9eXX5+3OUFAAAAXK1GjRpO888//7wmTpzocttu3bqpW7duObb16quvaujQoRo8eLAkad68efrss8/0r3/9S+PGjZMk7dmzJ19xRUZGqkmTJvr6669133335bjdmDFjcm3njz/+yNfxXDGVPWzYsEEdO3bUokWLTB8YAAAAKOlOnDihsLAwx3xO1ZC8pKena+fOnRo/frxjmdVqVadOnbR169Z8tXH69GmVLVtWoaGhSkpK0pYtW3IcBfeK3bt359lu27Zt83X8a5lKROx2u+nxggEAAIDSIiwszCkRMevPP/9UVlZWttuoIiMj9d///jdfbRw7dkyPPvqoo5P6yJEj1ahRo1z32bhxo+mY82IqEWndurX2799f1LEAAAAAxao0j5rVqlWrfN+65Q6mniMyc+ZMbdiwQcuWLSvqeAAAAABco2LFirLZbDp9+rTT8tOnTysqKspDURWOqYrIZ599pg4dOqhv375q166dmjdv7rLkZLFYTD/gBAAAAChybh41q6gEBASoRYsWWr9+vWNIX7vdrvXr12vEiBFFezA3MZWIXN3Tf9OmTdq0aZPL7UhEAAAAgPxJSUnRoUOHHPNHjhzRnj17FBERoZo1a2rMmDEaNGiQWrZsqVatWmnWrFm6cOGCYxQtX2MqESnOTisAAABAafT999+rQ4cOjvkrQ+cOGjRICxcuVN++ffXHH3/oueeeU3x8vJo2bao1a9Z47DkghWUqEWnXrl1RxwEAAAAUPy++Nat9+/a5PixckkaMGOGRW7F+/PFHl8stFouCgoJUs2bNAg9NzFMIAQAAAOSqadOmslhyzq78/f3Vt29fvf322woKCspXm6ZGzZKkzMxMvfbaa2rVqpXCwsKcnqy+Z88ePf744/rll1/MNp+r33//XQ8++KAqVKigMmXKqFGjRvr+++9dbvvYY4/JYrFo1qxZTssTEhLUv39/hYWFqVy5cnr44YeVkpJSLPECAADAS1j+fwjf4pzcUnVxoxUrVuj666/XO++8oz179mjPnj165513VK9ePS1dulTz58/Xhg0b9Oyzz+a7TVMVkUuXLqlz58767rvvVLFiRYWFhenChQuO9bVr19aCBQsUERGhqVOnmjlEjs6dO6dbb71VHTp00BdffKFKlSrp4MGDKl++fLZtV6xYoW3btqlq1arZ1vXv31+nTp3SunXrlJGRocGDB+vRRx/V0qVLizReAAAAwNdNmzZNr7/+urp06eJY1qhRI1WvXl0TJkzQjh07FBwcrL/97W96+eWX89WmqYrI9OnT9e2332rGjBmKj4/XI4884rQ+PDxc7dq105dffmmm+Vy98MILqlGjhhYsWKBWrVqpdu3a6ty5s+rUqeO03e+//66RI0dqyZIl8vf3d1q3f/9+rVmzRv/85z/VunVrtWnTRrNnz9YHH3ygkydPFnnMAAAA8BIWN04lyN69exUdHZ1teXR0tPbu3Svp8u1bp06dynebphKRDz/8UB06dNBTTz0li8Xi8n6x6667TsePHzfTfK5WrVqlli1b6v7771flypXVrFkzvfvuu07b2O12DRgwQGPHjlXDhg2ztbF161aVK1dOLVu2dCzr1KmTrFartm/fnuOx09LSlJyc7DQBAAAAJV39+vU1c+ZMpaenO5ZlZGRo5syZql+/vqTLhYCCjOBl6tas48eP69577811m9DQUCUlJZlpPle//vqr5s6dqzFjxuiZZ55RXFycnnjiCQUEBGjQoEGSLldN/Pz89MQTT7hsIz4+XpUrV3Za5ufnp4iICMXHx+d47BkzZmjSpElFdzIAAABwK0cfDjccpySZM2eO7rrrLlWvXl2NGzeWdLlKkpWVpU8//VTS5c/pjz/+eL7bNJWIhIaG6syZM7luc/jwYVWqVMlM87my2+1q2bKlpk+fLklq1qyZ9u3bp3nz5mnQoEHauXOnXn/9de3atSvXnv1mjB8/3jGesyQlJyerRo0aRXoMAAAAwNvccsstOnLkiJYsWeIYkOr+++/XX/7yF4WGhkqSBgwYUKA2TSUiN998s1avXq3ExESVK1cu2/oTJ07o888/z7NqYkaVKlXUoEEDp2U33nijli9fLkn6+uuvdebMGdWsWdOxPisrS3/72980a9YsHT16VFFRUdkSqczMTCUkJCgqKirHYwcGBhZ4fGQAAAB4ETc/RyQmJkY2m03Dhw/X8OHD3XDg4hMaGqrHHnusyNozlYiMHTtWHTp0UMeOHfXGG28oMzNTknTx4kVt3bpVI0eOVGZmplP1oKjceuutOnDggNOyX375xdF5ZsCAAerUqZPT+i5dumjAgAEaPHiwJCk2NlaJiYnauXOnWrRoIUnasGGD7Ha7WrduXeQxAwAAoHSKi4tTWFiYp8MoEgcPHtTGjRt15swZ2e12p3XPPfdcgdszlYi0bdtWb775pp588km1bdvWsfxKWcZms+mtt95yfMgvSqNHj9Ytt9yi6dOnq0+fPtqxY4feeecdvfPOO5KkChUqqEKFCk77+Pv7KyoqSvXq1ZN0uYLStWtXDR06VPPmzVNGRoZGjBihfv36uRzqFwAAACjN3n33XQ0bNkwVK1ZUVFSUUxcIi8XivkREkoYNG6b27dtr3rx52r59uxISEhQWFqbWrVvr8ccfdzlaVVGIiYnRihUrNH78eE2ePFm1a9fWrFmz1L9//wK1s2TJEo0YMUIdO3aU1WpV79699cYbbxRLzAAAAPASFuPy5I7jlCBTp07VtGnT9PTTTxdZm6YTEelyZeH1118vqljyrUePHurRo0e+tz969Gi2ZRERETy8EAAAAMiHc+fO6f777y/SNk09RwQAAADwRVeG73XHVJLcf//9Wrt2bZG2WaiKSFZWln777TedPHlSGRkZLre5ug8JAAAAAN9Tt25dTZgwQdu2bVOjRo3k7+/vtD6n5/flxlQiYrfbNX36dL3++utKSEjIddusrCwzhwAAAACKnpuH7y0p3nnnHYWEhGjz5s3avHmz0zqLxeK+RGT8+PF66aWXVLlyZQ0ePFhVqlSRn1+hiisAAAAAvNSRI0eKvE1T2cOiRYtUr149xcXFKSQkpKhjAgAAAIoHFRGvYSoRSUlJ0YMPPkgSAgAAAJRQY8aM0ZQpUxQcHJzng8pfffXVArdvKhFp3LixTp48aWZXAAAAwGPcNaJVSRg1a/fu3Y4BqXbv3p3jdlc/3LAgTCUi//jHP3T//fdr165dat68uakDAwAAAPBeGzdudPlzUTGViHTv3l0LFy5Ut27ddNddd6lJkyYKCwtzue3AgQMLFSAAAACAksdUIpKWlqbVq1frzz//1Pz58yVlL8kYhiGLxUIiAgAAAO9BZ3VTLly4oJkzZ2r9+vU6c+aM7Ha70/pff/21wG2aSkTGjBmjJUuWqHHjxrrvvvsYvhcAAAAowR555BFt3rxZAwYMUJUqVUz3C7maqezh448/VosWLbR161YSEAAAAPgOKiKmfPHFF/rss8906623FlmbVjM7paamqkOHDiQhAAAAQClQvnx5RUREFGmbpjKJFi1a6NChQ0UaiC9LD7HIFuidaa811VSu6VbWMMPTIeQqy+7d19Bi8fLr5wPjF1q9/BpmGDZPh+DzAixZng4hV3bDu99nMrz7T8Qnvnm+aKR7OgSXLhr2vDcqaSzG5ckdx5EUExMjm82m4cOHa/jw4cV/3GIyZcoUPffcc1q0aJHKli1bJG2aSkSmT5+ujh076tNPP1WPHj2KJBAAAACgpImLi8txdFlf8sorr+jw4cOKjIxUrVq15O/v77R+165dBW7TVCKybt06tW/fXnfffbduv/32HIfvtVgsmjBhgplDAAAAAEXOkJseaFj8h3Cre+65p8jbNJWITJw40fHz+vXrtX79epfbkYgAAAAAvu/5558v8jZNJSLF8WRFAAAAAKWHqUSkXbt2RR0HAAAAAC8SERGhX375RRUrVlT58uVzfXZIQkJCgdtn/F0AAAAA2bz22msKDQ2VJM2aNavI289XIjJkyBBZLBZNnz5dkZGRGjJkSL4at1gsmj9/fqECBAAAAIoMDzTMt0GDBrn8uajkKxFZuHChLBaLnn76aUVGRmrhwoX5apxEBAAAAChZUlNTlZ7u/GwcM0MU5ysROXLkiCSpWrVqTvMAAACALzEsbhq+twRURK524cIFPf300/roo4909uzZbOuzsgr+4Nh8JSLR0dG5zgMAAAAouZ566ilt3LhRc+fO1YABAzRnzhz9/vvvevvttzVz5kxTbdJZHQAAAKWHxbg8ueM4Jcjq1au1ePFitW/fXoMHD9Ztt92munXrKjo6WkuWLFH//v0L3KapROT333/XypUrFRcXpz///FOSVKlSJcXExOjee+9VlSpVzDQLAAAAwAslJCTouuuuk3S5P8iV4XrbtGmjYcOGmWqzwInI888/rxdffFHp6ekyDOdMb/Hixfr73/+u8ePH80R1AAAAeB9GzTLluuuu05EjR1SzZk3Vr19fH330kVq1aqXVq1erXLlyptosUCLyj3/8QzNmzFBgYKAefPBBtW/fXlWrVpUknTx5Uhs3btTHH3+siRMnKisrSxMnTjQVFAAAAADvMXjwYP3www9q166dxo0bp549e+rNN99URkaGXn31VVNtWoxryxo5+PXXX1WvXj3VrFlTX3zxhW644QaX2/3yyy/q0qWLfv/9dx04cEC1a9c2FZgvSE5OVnh4uOqPmC5bYJCnw3HpQk27p0PIk7VyqqdDyFXZsmmeDiFXVcKSPR1CriqXOe/pEPJUJci7r2Gkv3fHFx3wp6dDyFOw1bv/jstZL3o6hFxF2i55OoRc+fvAN8+hVpunQ3Ap+bxdteqfUlJSkqnhV33Jlc9tNV6dImuZ4v/cZr+UqhNjJpTYa3vs2DHt3LlTdevWVePGjU21Yc3vhosWLZLdbtd7772XYxIiSTfccIPef/99ZWZmavHixaaCys3EiRNlsVicpvr16ztts3XrVt1+++0KDg5WWFiY2rZtq0uX/v9NNCEhQf3791dYWJjKlSunhx9+WCkpKUUeKwAAAODrMjIy1LFjRx08eNCxLDo6Wr169TKdhEgFuDXr22+/1U033aRbbrklz21vvfVWNWrUSF9//bXpwHLTsGFDffXVV455P7//P42tW7eqa9euGj9+vGbPni0/Pz/98MMPslr/P+fq37+/Tp06pXXr1ikjI0ODBw/Wo48+qqVLlxZLvAAAAICv8vf3148//ljk7eY7Edm/f7/uvPPOfDfcqlUrffHFF6aCyoufn5+ioqJcrhs9erSeeOIJjRs3zrGsXr16jp/379+vNWvWKC4uTi1btpQkzZ49W3feeadefvllR58XAAAAlEB0VjflwQcf1Pz5800/M8SVfCciiYmJqly5cr4brly5shITE83ElKeDBw+qatWqCgoKUmxsrGbMmKGaNWvqzJkz2r59u/r3769bbrlFhw8fVv369TVt2jS1adNG0uWKSbly5RxJiCR16tRJVqtV27dv17333pvjcdPS0pSW9v/3GScne/d92wAAAEBRyMzM1L/+9S999dVXatGihYKDg53Wm+mwnu9E5NKlSwoMDMx3wwEBAU79MopK69attXDhQtWrV0+nTp3SpEmTdNttt2nfvn369ddfJV3uR/Lyyy+radOmWrx4sTp27Kh9+/bp+uuvV3x8fLaEys/PTxEREYqPj8/12DNmzNCkSZOK/JwAAADgJjzQsEBsNptOnTqlffv2qXnz5pIuD051NYvFXPnH556s3q1bN8fPjRs3VuvWrRUdHa2PPvpIN954oyTpr3/9qwYPHixJatasmdavX69//etfmjFjRqGOPX78eI0ZM8Yxn5ycrBo1ahSqTQAAAJRcMTExstlsGj58uIYPH+7pcArsygC7GzduLPK2C5SIvP/++9q2bVu+tj106JCpgAqqXLlyuuGGG3To0CHdfvvtkqQGDRo4bXPjjTfq+PHjkqSoqCidOXPGaX1mZqYSEhJy7HdyRWBgYIGqQgAAAPAybu4jEhcXVyKH7y0KBUpEDh06VKAEw2yZpiBSUlJ0+PBhDRgwQLVq1VLVqlV14MABp21++eUXRyUlNjZWiYmJ2rlzp1q0aCFJ2rBhg+x2u1q3bl3s8QIAAAC+5J///KdCQkJy3eaJJ54ocLv5TkSOHDlS4MaLw9///nf17NlT0dHROnnypJ5//nnZbDY98MADslgsGjt2rJ5//nk1adJETZs21aJFi/Tf//5Xy5Ytk3S5OtK1a1cNHTpU8+bNU0ZGhkaMGKF+/foxYhYAAEAJZ1guT+44Tkkxb9482Ww5P5TTYrEUbyISHR1d4MaLw2+//aYHHnhAZ8+eVaVKldSmTRtt27ZNlSpVkiSNGjVKqampGj16tBISEtSkSROtW7dOderUcbSxZMkSjRgxQh07dpTValXv3r31xhtveOqUAAAAAK/1/fffF2j03Pzyuc7qH3zwQZ7bjBs3zuk5IteKiIjg4YUAAAClEaNmFUhxdrWw5r0JAAAAgNLoyqhZxYFEBAAAAIBLzz//fJ4d1c3yuVuzAAAAANPcPHyvr3v++eeLrW0qIgAAAADcjooIAAAASg2L5fLkjuMgd1REAAAAALgdFREAAACUHgzf6zVMJyLp6elauXKl4uLilJiYqKysrGzbWCwWzZ8/v1ABAgAAAHC/Zs2a5fs5Irt27Spw+6YSkWPHjumOO+7Q4cOHcx1bmEQEAAAAXoVRs/LtnnvuKdb2TSUio0eP1qFDhzRgwAANGTJE1atXl58fd3kBAAAAJUVxDt0rmUxENmzYoI4dO2rRokVFHQ8AAABQfKiIeA1TiYjdblezZs2KOhYAAAAAXigrK0uvvfaaPvroIx0/flzp6elO6xMSEgrcpqnhe1u3bq39+/eb2RUAAACAj5k0aZJeffVV9e3bV0lJSRozZox69eolq9WqiRMnmmrTVEVk5syZatu2rZYtW6b77rvP1IFLkoxQyR7k6ShcM/y9f+i4rEweZ1MYAbbsI9ahZMny8vq+t8cnSaHWS54OIVdWi93TIeTqvOHd/UCrWr3/fdCey+A+npTboEMll/G/yR3HKTmWLFmid999V927d9fEiRP1wAMPqE6dOmrcuLG2bdumJ554osBtmnpn+eyzz9ShQwf17dtX7dq1U/PmzRUWFpZtO4vFogkTJpg5BAAAAAAvER8fr0aNGkmSQkJClJSUJEnq0aOH6c/7phKRq8svmzZt0qZNm1xuRyICAAAAr0JndVOqV6+uU6dOqWbNmqpTp47Wrl2r5s2bKy4uToGBgabaNJWIbNy40dTBAAAAAPiee++9V+vXr1fr1q01cuRIPfjgg5o/f76OHz+u0aNHm2rTVCLSrl07UwcDAAAAPMliMWSxFH//jSvHiImJkc1m0/DhwzV8+PBiP25xmTlzpuPnvn37qmbNmtq6dauuv/569ezZ01Sb3t37DAAAAPBhcXFxLvtS+7rY2FjFxsYWqg3TiUhmZqZmz56tf//73/rvf/+rixcvKjMzU5K0Z88evfPOOxo1apRuuOGGQgUIAAAAFKkS1n/DXQ4ePKiNGzfqzJkzstudR/t77rnnCtyeqUTk0qVL6ty5s7777jtVrFhRYWFhunDhgmN97dq1tWDBAkVERGjq1KlmDgEAAADAS7z77rsaNmyYKlasqKioKFks/5/NWSwWU4mIqQc4TJ8+Xd9++61mzJih+Ph4PfLII07rw8PD1a5dO3355ZdmmgcAAACKxZU+Iu6YSpKpU6dq2rRpio+P1549e7R7927HtGvXLlNtmkpEPvzwQ3Xo0EFPPfWULBaLU0Z0xXXXXafjx4+bCgoAAACA9zh37pzuv//+Im3TVCJy/PhxtWzZMtdtQkNDHQ86AQAAAOC77r//fq1du7ZI2zTVRyQ0NFRnzpzJdZvDhw+rUqVKpoICAAAAigUPNDSlbt26mjBhgrZt26ZGjRrJ39/faf0TTzxR4DZNJSI333yzVq9ercTERJUrVy7b+hMnTujzzz/Xvffea6Z5AAAAAF7knXfeUUhIiDZv3qzNmzc7rbNYLO5LRMaOHasOHTqoY8eOeuONNxzD9l68eFFbt27VyJEjlZmZqTFjxphpHgAAACgWFsvlyR3HKUmOHDlS5G2aSkTatm2rN998U08++aTatm3rWB4aGipJstlseuutt9SiRYuiiRIAAABAiWL6gYbDhg1T+/btNW/ePG3fvl0JCQkKCwtT69at9fjjj6thw4ZFGScAAABQeBbj8uSO4/i4MWPGaMqUKQoODs7zTqdXX321wO2bTkQk6cYbb9Trr79emCYAAAAAeKHdu3crIyPD8XNOXD3KIz9MDd/rTWbOnCmLxaJRo0Y5lsXHx2vAgAGKiopScHCwmjdvruXLlzvtl5CQoP79+yssLEzlypXTww8/rJSUFDdHDwAAAHfigYb5t3HjRiUkJMgwDG3cuDHHacOGDabaz1dFZMiQIaYat1gsmj9/vql98yMuLk5vv/22Gjdu7LR84MCBSkxM1KpVq1SxYkUtXbpUffr00ffff69mzZpJkvr3769Tp05p3bp1ysjI0ODBg/Xoo49q6dKlxRYvAAAA4Euuv/56nTp1SpUrV5Yk9e3bV2+88YYiIyML3Xa+EpGFCxe6XG6xWGQY2bO9K8uLMxFJSUlR//799e6772rq1KlO67777jvNnTtXrVq1kiQ9++yzeu2117Rz5041a9ZM+/fv15o1axQXF+d4MOPs2bN155136uWXX1bVqlVdHjMtLU1paWmO+eTk5GI5NwAAABQPRs0qmGs/63/++eeaMWNGkbSdr1uzjhw54jQdPnxYPXr0UIUKFTRlyhRt2rRJ+/fv16ZNmzR58mRVqFBBPXv21MGDB4skSFeGDx+u7t27q1OnTtnW3XLLLfrwww+VkJAgu92uDz74QKmpqWrfvr0kaevWrSpXrpzT0+E7deokq9Wq7du353jMGTNmKDw83DHVqFGjyM8LAAAAKA3yVRGJjo52mp85c6a2b9+uH374QVWqVHEsr1evntq2bavBgwerWbNmWrZsmZ566qmijVjSBx98oF27dikuLs7l+o8++kh9+/ZVhQoV5Ofnp7Jly2rFihWqW7eupMt9SK6Ul67w8/NTRESE4uPjczzu+PHjnUYMSE5OJhkBAABAiWWxWLJ1RjfbOf1apkbNmj9/vvr06eOUhFytWrVq6tOnj959990iT0ROnDihJ598UuvWrVNQUJDLbSZMmKDExER99dVXqlixolau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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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Ch07doS/vz9cXFzg5+eHdu3aYfXq1cjNzdXbPzg4GJ06dQIAbNq0CWfPnrVG2EREVI7wOSJERCXQuHFjnD9/HkBe0vFkwlG1alVUqFABly5dskJ0//n3339Ro0YNtGrVCvXq1UPlypXx4MED/PTTT7h58yZCQ0Px008/QaH47/uorVu3om/fvgCA3r17Y/v27dYKn4iIygEmIkRERjpx4gTatWsHAKhfvz5+//13vfK7d+/C398fgwYNwjfffGONECU6nQ4ajQZOTk562zUaDbp3747Dhw9j586dCA8Pl8qys7NRpUoVqNVqKJVK3LhxA9WrV7d06EREVE7w1iwiIiOtXr1a+rlfv34FyvNvZ2revLne9t9//x0NGzaEh4cHvvvuO/MG+f8UCkWBJAQAHBwc8OKLLwIArl27plfm7OyM5557DgCg1Wqxdu1a8wdKRETlFhMRIiIj7d27V/q5bdu2BcoNJSIbN25EcHAwcnNzcfLkSasPBNfpdNizZw8A4JlnnilQHhISIv28b98+i8VFRETlj4O1AyAisge3bt3CrVu3pPWWLVsW2OfMmTMQBAHNmjVDbm4u3n33XSxduhTPP/881q1bBy8vryLbWLRoEVJTU42O6YUXXih2UHxOTg5mz54NURRx//59HDhwAL///juGDh2Krl27Ftg/ODhY+vnUqVPIyckx2LNCRERUWkxEiIiMcP36delnJycn+Pr6Ftjn7NmzqF27NtRqNXr06IHTp09jxowZ0pS+xVm0aBFu3rxpdEw1a9Y0KhGZNm2atC4IAt577z3MmTPH4P6PjwnJysrCnTt3ULNmTaNjIiIiMhYTESIiI/zzzz/SzxUqVChQnpqaisTERNSpUwfNmzeHTqfD7t27ERYWZnQbN27cMEWoejw8PCCKInQ6He7cuYMdO3bggw8+QGxsLHbv3g2VSqW3f8WKFfXW//nnHyYiRERkFhwjQkRkAvnjQx48eIB///0XkZGRJUpCzE2hUKB69eoYNWoUVq5ciePHj2PWrFkF9uNEikREZCnsESEiMkKlSpWknx88eFCgPD8R+fLLLzFv3jzMnj0brVu31psetzjmGCNiSGhoKADg8OHDBcpSUlL01itXrlzi+omIiIzBRISIyAi1a9eWfs7JyUFycjKqVKkibctPRNq0aYNt27ahdevWGDhwII4dO4YmTZoY1YY5xogYcufOHQCAo6NjgbLbt29LP7u4uMDf37/E9RMRERmDt2YRERmhZs2aqFatmrR+5swZvfIzZ87A19cXVatWRZUqVbBjxw4oFAo899xz0gf/4ty4cQOiKBq9vP7664XWdenSJWRmZhbYnpmZiaioKABAr169CpT/+uuv0s+tWrXijFlERGQ2TESIiIzUrVs36efY2Fjp50ePHuHKlSt6vRPPPPMMvvvuO9y9exe9e/c2mBSY06ZNm+Dn54devXph9OjRmDRpEgYPHoyAgADs2bMHHTp0wPjx4wsc9/h5de/e3ZIhExFROcNEhIjISMOGDZN+3rx5s/Tzb7/9Bq1WW+A2qZ49e2LRokU4c+YMXn31Veh0OkuFiueeew4DBw7ErVu38O233+KTTz7BTz/9hMaNG+Pzzz/HwYMH4erqqndMdnY2du7cCSBvcHtERITF4iUiovJHEDlFChGR0Z555hlcvHgRQF4C0qhRIytHZDpbt25F3759AeQlMjt27LByREREVJaxR4SIqAQefzjg4sWLrRiJ6eWfjyAIeudJRERkDuwRISIqoTZt2uDUqVNwcnJCYmJimZhZKi4uDq1atQIADBgwAN99952VIyIiorKOiQgREREREVkcb80iIiIiIiKLYyJCREREREQWx0SEiIiIiIgszsHaAdgznU6HO3fuwNPTE4IgWDscIiIiohIRRREPHz6Ev78/FIqy//10VlYWcnJyLNaek5MTXFxcLNaevWEiUgp37txBjRo1rB0GERERUancvn0b1atXt3YYZpWVlQUv1wrIQZbF2vTz80NiYiKTkUIwESkFT09PAEC16R9CYaMvMOeqGdYOoVhVVOnWDqFIfm4PrR1Ckaq6pFk7hCJVdrLt6wcAlRxsO8YKCtv+O/ZSPrJ2CMXyUljug4ccHoLG2iEUyVNh273+roKjtUMolpvCydohGKRO1yGw+Q3pM01ZlpOTgxxkoT16wQHmf81okItjSbuRk5PDRKQQTERKIf92LIWLCxSutvkCU7pprR1CsRzcc60dQpEc3bKtHUKRnF1t+x+wi5Ptv824Oth2jG5KpbVDKJK70vZv5/Cw8VtOPAUbj8/GExE3G79+AOBm46/B8nSLuYPgDAdLJK+iAuBDMopk238VRERERERUJtn214BERERERCYkKASL9AAJogDY/o0pVsUeESIi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ERERkfnYVSJSq1Yt+Pn54cCBA9I2tVqNU6dOISQkBACwZMkSnDt3DgkJCUhISMDu3bsBABs3bsSsWbMAACEhITh69Chyc/97qNC+fftQv359VKhQwYJnREREREQWZYmpey01IN7O2dytWenp6bh27Zq0npiYiISEBPj4+CAgIADjxo3DzJkz8dRTT6FWrVqYPHky/P398cILLwAAAgIC9Orz8PAAANSpUwfVq1cHALz66quYNm0a3njjDUycOBEXLlzA4sWLsXDhQsucJBERERFROWdzicivv/6KLl26SOtRUVEAgIiICKxZswbvv/8+MjIyMGLECKSmpqJ9+/bYs2cPXFxcjG7Dy8sLe/fuRWRkJFq0aIFKlSphypQpRU7dS0RERET2TxQEiBborbBEG/bO5hKRzp07QxTFQssFQcD06dMxffp0o+qrWbOmwfoaN26MX375RXacREREREQkn80lIkREREREZqOAZUZJF/69Ov0/uxqsTkREREREZQN7RIiIiIio/LDUjFYcI1IsJiJEREREpuaVhsyD3aRVF4Uj4J1mxYCIbA8TESIiIiJTc9BCV//qf+sKJ+vFQmSjOEaEiIiIiMoPCz/QMDg4GEFBQVi2bJmVT9z2sEeEiIiIiMhM4uLioFKprB2GTWIiQkRERETlBwer2wzemkVERERERBbHHhEiIiIiU9Moobhe+791hSNQJxFw0FovJgIAiIIA0QK9FZZow94xESEiIqKyJ9sJSPeQf3yFB4DCwKOxcxyBh57FHi6k+MDt2f1623TnWwOVUuTHRFTGMBEhIiKiMke5txtcRy6XfXz6b82AigWTBuWvLeD68sbShEbWpoBlBicYyGNJH8eIEBERERGRxbFHxAQUuQIUStu8D1CjYa5ZWgp+pUFEZqa19bcZ2/wXZ1dElZpPVrcVnDXLZjARISIiIrsj3PdB5SYX9LYVdjuVtYmqNIizpnOgOtETmIgQERFRmaMN3Z+XmMhV4YHhelvGl7xerzS4OSnlx0JURjERISIiorLHOQdwNkPviFOuzF4XJiI2Q4CFbs0yfxP2jgMIiIiIiIjI4tgjQkRERETlBh9oaDvYI0JERERERBbHHhEiIiIiKj8EWOareJ0F2rBz7BEhIiIiIiKLYyJCREREROVH/gMNLbEACA4ORlBQEJYtW2blE7c9vDWLiIiIiMhM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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Load final training loss data for each k value separately\n", - "max_p = 70 # Only visualize completed experiments (p <= 55)\n", - "\n", - "from matplotlib.colors import LogNorm\n", - "\n", - "# Create separate plots for each k value\n", - "for k in k_values:\n", - " loss_grid, loss_std = load_sweep_results_grid_final_loss_p_h(\n", - " sweep_dir,\n", - " k,\n", - " p_values,\n", - " hidden_dims,\n", - " max_p=max_p,\n", - " )\n", - "\n", - " # Filter p values - only show p <= max_p\n", - " p_values_filtered = [p for p in p_values if p <= max_p]\n", - "\n", - " # Plot final loss heatmap: p (group size) vs hidden_dim\n", - " plt.figure(figsize=(12, 8))\n", - " cmap = plt.cm.viridis_r.copy()\n", - " cmap.set_bad(color=\"black\")\n", - " # Set extent to align cells with tick positions\n", - " # extent: [left, right, bottom, top] in data coordinates\n", - " plt.imshow(\n", - " loss_grid[:, : len(p_values_filtered)],\n", - " aspect=\"equal\",\n", - " cmap=cmap,\n", - " norm=LogNorm(),\n", - " )\n", - "\n", - " plt.xlabel(\"Group Size $|G|$\", fontsize=14)\n", - " plt.ylabel(\"Hidden Dimension $H$\", fontsize=14)\n", - " plt.xticks(\n", - " range(len(p_values_filtered)), p_values_filtered, rotation=45, ha=\"center\"\n", - " )\n", - "\n", - " # Set y-axis ticks (hidden dimensions)\n", - " plt.yticks(range(len(hidden_dims)), hidden_dims)\n", - " plt.gca().invert_yaxis()\n", - "\n", - " # Theory boundaries\n", - " x_step = np.arange(len(p_values_filtered) + 1) - 0.5\n", - "\n", - " # Upper boundary: H = (k+1)*2^{k-1} * |G|\n", - " upper_boundary_coeff = (k + 1) * (2 ** (k - 1))\n", - " y_step_upper = [\n", - " min(\n", - " len(hidden_dims) - 1,\n", - " (\n", - " # Find the first H that satisfies H >= upper_boundary_coeff * p\n", - " np.argmax(np.array(hidden_dims) >= upper_boundary_coeff * p)\n", - " if upper_boundary_coeff * p <= max(hidden_dims)\n", - " else len(hidden_dims) - 1\n", - " ),\n", - " )\n", - " for p in p_values_filtered\n", - " ]\n", - " y_step_upper.append(y_step_upper[-1]) # Extend for step plot\n", - " # Convert to edge positions (subtract 0.5 to place at bottom edge of cells)\n", - " y_step_upper = [y - 0.5 for y in y_step_upper]\n", - "\n", - " # Lower boundary: H = 2^{k-1} * |G|\n", - " lower_boundary_coeff = 2 ** (k - 1)\n", - " y_step_lower = [\n", - " min(\n", - " len(hidden_dims) - 1,\n", - " (\n", - " # Find the first H that satisfies H >= lower_boundary_coeff * p\n", - " np.argmax(np.array(hidden_dims) >= lower_boundary_coeff * p)\n", - " if lower_boundary_coeff * p <= max(hidden_dims)\n", - " else len(hidden_dims) - 1\n", - " ),\n", - " )\n", - " for p in p_values_filtered\n", - " ]\n", - " y_step_lower.append(y_step_lower[-1]) # Extend for step plot\n", - " # Convert to edge positions (subtract 0.5 to place at bottom edge of cells)\n", - " y_step_lower = [y - 0.5 for y in y_step_lower]\n", - "\n", - " plt.step(\n", - " x_step,\n", - " y_step_upper,\n", - " where=\"post\",\n", - " color=\"magenta\",\n", - " linewidth=3,\n", - " linestyle=\"--\",\n", - " label=f\"Upper boundary ($H$ ≥ $(k+1) \\\\cdot 2^{{k-1}} |G|$)\",\n", - " )\n", - "\n", - " plt.step(\n", - " x_step,\n", - " y_step_lower,\n", - " where=\"post\",\n", - " color=\"red\",\n", - " linewidth=3,\n", - " linestyle=\"--\",\n", - " label=f\"Lower boundary ($H$ ≥ $2^{{k-1}} |G|$)\",\n", - " )\n", - "\n", - " # Place legend outside the plot area\n", - " plt.legend(\n", - " loc=\"upper center\", bbox_to_anchor=(0.5, -0.12), fontsize=12, frameon=True\n", - " )\n", - "\n", - " plt.colorbar(label=\"Final Training Loss\")\n", - " plt.title(\n", - " f\"Final Training Loss: Group Size $|G|$ vs Hidden Dimension $H$\\n($k={k}$)\",\n", - " fontsize=14,\n", - " fontweight=\"bold\",\n", - " )\n", - " plt.tight_layout()\n", - " plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "93d367cb", - "metadata": {}, - "source": [ - "### Training Loss Curves by Group Size\n" - ] - }, - { - "cell_type": "code", - "execution_count": 82, - "id": "5ed8f9c0", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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up3pM2fXX3e1iRDCfnJ4uRDC561fv56+ffsyZMgQCgsLadWqFVqtlgsuuIA+ffoQFxdHREQERqOR7du38+WXX6KqKu+99x6TJ0+mT58+Dte5YcMGrrvuOjp37sxHH31kvbruRx99xLx582jevLnHYr744ousX7/eWi45OZlrr72WnTt38sUXXzhcrzM+/PBDFixYYH2dlJTEddddx4kTJ3j//fcxm80cP36c66+/nt27d6PX63nttdesyw8ePJjLLruMwsJCjh49yoYNGyguLrapw9Hla/LTTz9Zn0dGRjJq1Cgn37Vzqls/27ZtyyWXXMK6desA+Pjjj+nXr5+1zCeffGJ9PmnSJOvzJUuW2JyCMWzYMPr37096ejrvv/8+BQUFrF+/npkzZ/Lmm28C7mvHulRu5+uvv96leNW1Gzi37rnLL7/8wsSJE2nVqhWffvope/fuBeCLL77gww8/5JZbbqkzRo8ePazPT58+TYcOHejWrRu9e/emZ8+eDBo0iHbt2jmUV+VTdQBefvlljhw5AoBer6djx46Ac+uQs959910KCwu55557aNmypUux6uLsZ8pdnw9n+vXuu+/m6quv5v7777dOGzt2LL169QIgPDwccF+f2bv+emubIYSooL5H/UKI84eze7qvv/561Ww2V7vs4cOH1RUrVqivvPKK+vzzz6vz589X4+PjrWWfeOKJWmPXNH3GjBnWeTt27LCZ98UXX9QZz5WYHTt2tE5PTEy0OWTz1ltvrXGvXU2c2dPdtWvXGnN49dVXbeKtXLlSVVVVDQsLs047efJklZgHDx60ee3o8jUJCgqyxunbt69dZSzcsae7pvVz8eLFNnuOLIejbtq0yTpdp9Opx48ft5bp3r27dd4tt9xiE2/ZsmXWeXq93nqItTPt6Mye7ort3KdPH5t5lQ/trS62ve3mzLrnrj3dTz/9tHVebm6uGh0dbZ3Xv39/u9qprKxM7dWrV617EgcMGKDu2LHDplxt25LKnnzySetyGo1GXbx4sXWeM+tQXWraI52UlKQC1Z5msHr1avWxxx6zefz88892xa2JM58pd21nnO1XVVXr3P4622fOrr/uahMhhP3klmFCCJ/38MMPo9Xabq6ysrK4+uqrSUhIYPTo0UybNo3Zs2dz//33c/z4cetyx44dc6rOKVOmWJ9b9iBZZGdneyxmQUEB+/bts06/8cYbCQwMtL6uuAfHU4qKivjzzz9rzKHy3j7LxYMGDhxondalSxdGjBjBjBkzeOuttzhw4ABt2rSxKefo8r6quvUTYPTo0daLRqWnp/Pzzz8Dtnvkhg0bZj3CoaioiB07dljnffDBBza3GhozZox1nslkYtOmTYBz7Xjo0CHU8lPMnLqFkTvuI11duzm77rnLxIkTrc/DwsIYOXKk9fW2bdvsiqHX6/n555+ZM2cOTZs2rXaZDRs2MGTIEDIzMx3O8e233+Y///mP9fW8efO49dZbAefXIWcoisK+ffvQarX07t27yvzXX3+duXPn2jwqbpud4ehnCty3nfFUv7qzz+xdfxvLtleIhkQG3UIIn9epU6cq0+644w6+/vrrOsuWlJQ4VWfFW0r5+/vbzFMUxWMxc3JybKZXvt2SN26/lJ2dbXN/5cpfMIODgwkJCbFZHsoPWbzooouA8h9FvvnmG1588UX+9a9/0b59e8aOHWvTdo4uX5P4+Hjr87///tvpe0NXLmfvulPd+gnl7VTxC/PHH3+MoigsXbrUOu3222+3Pq/c7nWxfLF3VzvWpWI779+/3ybX2NhY5s+fz/z58wkKCrIrXnXt5uy6V5Gz/Qjl76OiivUXFxfbHSs0NJSUlBROnjzJrl27eOedd7j11lttrtydmZlZ5fZTdVm1ahWTJ0+2vp45c6bN1eSdXYeckZGRgclkIiIiAoPBUGX+ihUrrD/sDB8+HCi/4rcrHP1MgXs/H57oV3f2mb3rr7e2GUKIc+ScbiGEzwsODrZ5XVhYyFdffWV9fcUVV/Dmm2+SkJCATqejT58+bN682aU6K36JdMdePXtjWs7xs8jIyLB5ferUKbfkUpvIyEg0Go31i2Dl22wVFhZSUFBgszxAy5Yt+f333zlw4ACbNm1i//79pKam8vnnn2MymVi2bBlXXnmldW+9o8vX5IorrmD//v1A+RfYzz//3O7zuivuaa18HqMlZl0qr58VTZo0iXfeeQeAlStXMmbMGE6cOAFAdHS0zZ6oiIgIm7LXXHONzR6pyiznmLqrHetSsZ3PnDnDF198wbXXXgtAVFQUs2fPBsr3vBYVFdUZr7p2c3bdc0c/QvnnreK5yRXrDwgIqPJjWV00Go31VmC33347jz/+OG3btrUOaBzJbd26dYwfPx6z2QzATTfdxAsvvGCzjLPrkDMsRyAUFRWhKEq1R3tYbNmyhZCQkCpH+DjDkc8UeObz4c5+dWef2bv+emubIYSooB4OaRdCnKecPae7suPHj9vMX7BggXXe3r17VX9//xrPV7X3nO7KKs6reE6eI+d02xuz4jnd7du3t7ndi7fO6e7WrZvd59WuWrVKVdXy89SrO0f3mmuusS47bdo063RHl6/Jrl27bG5lFRcXV+15laWlpepbb71lc8uwF1980ea9WK5IbDQaq1x5uKZzuuvSoUMH67KtW7e2Pq98iyxVtW33/v37V3uboJycHPWTTz6xvnamHZ05p7u6dt6+fXuV5Zo0aVJtbHvbzZl1z5l+rC4nd5zTvXjxYvX1119Xc3Nzq8zLyMhQ9Xq9NeZDDz1kV/vs3LlTDQ8Pt84bNmxYjbf9cmYdqktN5163a9dOBdT169fXWPbQoUMqlF992964dXHkM+Wu7Yyz/aqqqs286m7H5WyfObv+uqtNhBD2kz3dQogGJzY2loiICOuh2E899ZT1UMd3333X6UPKfcVdd91l3Wu4f/9++vXrx9VXX83OnTv5/PPPXY4/d+5cXnnllSrTmzdvbr06+n333Wc9P/DQoUP07t3b5grSFh06dGDEiBFA+VV5c3NzGTRoEPHx8URFRXHw4EG++eYb6/IV9+o4unxNkpKSePLJJ3n44YeB8qMBevXqxdVXX0337t3RaDQcOHCA77//nvT0dAYPHmwtW/lc1P79+3PppZeybds2Dhw4UGfd9pg0aRJz5swBIC0tzWZ6Zffffz833XQTAL/++ivJycmMHDmSyMhIsrKy2L59Oxs2bKBZs2aMGzcOcF871qWmdh4+fDg9e/bEYDCQlpZGXl6eS/U4s+65qx8feeQR9u7dS0JCAitWrOD06dPWeXfddZddMdLS0pg7dy4zZsxgwIABdOvWjaioKLKyslixYgUmk8m67JVXXllnvLy8PK688krr1csNBgP9+vXjxRdftFlu+PDhJCUlObUOOWvq1KnMnDmTKVOm8P3339OsWTOb+WazmRUrVgCuH1pekSOfKXd9Plzp1/j4eA4fPgzACy+8QFZWFoGBgXTv3p0rrrjCbX1m7/rrrW2GEKKC+h71CyHOH+7a062qqjpv3jybZSyPLl26qD179mzQe7pru0/38OHDbV6vXbu22vapqPKe7poela/6XNe9kps3b25zr+SKe+ire0RFRamHDh1yevm6vPjiizZHOdT0qLxXraa2vuqqq6rdQ+ronu7jx4/b7CEG1B49etS4/Jw5cxzqK2fa0Zk93Rb2tjOgzpo1y1rOkXZzdN1TVcf7sbqcRowYUW2MESNG2H2f7rrugWx53HXXXTblamqfytvNmh4VtyGOrkP2vqfKnx2z2ayOGzdOBdSgoCB19OjR6kMPPaTOmjVLHTNmjBoXF6cCamRkpLp69Wq749bFkc+Uu7YzzvarqqrqzJkzq1126tSp1mWc6TNn1193b3uFEHWTC6kJIRqkBx98kEWLFtGhQwcMBgNxcXHcddddrF271uZCSw2RwWDgu+++48EHH6RFixb4+fnRsWNH/vvf//LII4/YLOvJvREvvPACq1ev5oYbbqB58+YYDAZCQkLo1q0b//nPf/jzzz9JSkqyLv/MM88wefJkevbsSVxcHAaDgaCgIDp16sSUKVPYunUrCQkJTi9fl3vvvZe0tDQef/xxBgwYQExMDHq9nqCgIC644ALuvvtu1qxZUyXmF198wZ133klMTAz+/v4kJyfz9ttvV3s0gDOaN2/OsGHDbKbVdq5kSkoKv/76KzfffDOtW7fG398fg8FAfHw8Q4cOJSUlxeae2e5ux7rU1M6BgYG0atWKIUOG8Pjjj7Nt27Yq5xzby9F1D9zTj5999hlPPPEEbdu2xc/Pj8TERB577DE+/fRTu6/tMGPGDFasWMGUKVPo06cPrVq1IjAwED8/P+Lj47nmmmv49NNPXb5Hdm0cXYecpdVq+eSTT1i6dCkDBw5kzZo1zJ8/n7feeotdu3ZxxRVX8L///Y+jR4/aHGHiKkc+U+76fLjSr08//TTTp0+nRYsW6HS6auO7o8/sXX+9vc0QQoBGVZ28zKsQQgiPKS4utrlVksXs2bOtA5mQkBCysrLw8/PzdnpCNAqLFy+2GazJV6LqPf7448ydO5e0tDSbuzD4atzzhay/QjQcck63EEL4oEGDBtGmTRsGDhxIy5Ytyc7O5rvvvrO5H+2///1vGXALIYQQQvg4GXQLIYQPMhqNfPLJJzaD7IpGjBjB008/7eWshBBCCCGEo+ScbiGE8EHTpk1j2LBhxMfHW++v2qJFC0aNGsWKFSv46quvHL5nsBBCCCGE8D45p1sIIYQQQtRozZo1rFmzhhkzZrj14o2eiiuEEL5GBt1CCCGEEEIIIYSHyOHlQgghhBBCCCGEh8igWwghhBBCCCGE8BAZdAshhBBCCCGEEB4ig24hhBBCCCGEEMJDZNAthBBCCCGEEEJ4iAy6hRBCiGr069cPjUaDv78/x48ft5n3f//3f2g0Gn777bd6yk74ss2bN6PRaNBoNIwbN66+0xFCCFHPZNAthBBCVLJy5Uo2btwIwIQJE4iPj7eZv337drRaLd26dauH7M45fvw4CxcuZOjQobRq1Qo/Pz/i4uK44YYb+OOPP9xeX8+ePdFoNBw6dKjGZZo3b45Op6OgoMDt9dfkf//7H//+97/p1asX/v7+aDQaFi9eXGe5lStXMmTIEJo0aUJAQACtW7dm/PjxHD16tNrlN2/ezFVXXUVERATBwcFcdNFFLFu2rMpyvXv35tJLLwVg2bJlbN++3aX3J4QQomGT+3QLIYQQlSQnJ5OamgqUD7ArD66bNWtGZGQke/bsqYfsznnooYd49tlnadu2LZdddhkxMTHs37+fVatWoaoqH3/8MWPHjnVLXaWlpYSGhhIREUF6enq1yxw9epRWrVrRqVMn/vrrL7fUa4/ExEQOHz5MdHQ0wcHBHD58mPfee4/bbrut2uVVVWXy5Mm8+eabtG3blmHDhhEaGsqJEydYu3YtH330EQMGDLAp88svvzBs2DACAgIYN24coaGhfPrppxw+fJjnn3+e++67z2b5lStXcv311wMwcuRIvvjiC4+8dyGEEL5PX98JCCGEEL7kt99+sw64O3bsWGXAffLkSU6dOsUVV1xRD9nZ6tOnD2vWrLHuVbVYv349V1xxBXfffTejRo3C39/f5bpSU1MpLS2lT58+NS6zadMmAHr06OFyfY54++23ad++PQkJCcybN485c+bUuvxLL73Em2++yZQpU3jppZfQ6XQ2800mU5XXd911F1qtlnXr1lnXiUcffZQ+ffrw8MMPM3r0aBISEqxlrrrqKsLCwsjLy+Obb77h2LFjtGjRwj1vWAghRIMih5cLIYQQFbz33nvW5zfccEOV+ZZDhSsPLPfu3UtSUhIhISEsWbLEs0medf3111cZcAMMHDiQQYMGkZ2dbf0BwVXbtm0DqHXQvXnzZqD8MHRvGjx4sM2AtzbFxcXMnTuXNm3a8OKLL1YZcAPo9bb7JH7++WcOHjzIhAkTbH6ECQ8P5+GHH6a0tJT333/fpoy/vz9XX301AGazucp8IYQQ5w8ZdAshhBAV/PDDD9bnF198cZX51Q26ly5dSu/evSkrK2Pjxo0+cfEsg8EAVB1AOmvr1q0A9O3bt8Zl6mtPtyN++OEHsrOzGTVqFGazmc8++4x58+bx+uuvc+DAgWrLrFmzBoChQ4dWmTds2DAA1q5dW2Vev379rM9Xr17thuyFEEI0RHJ4uRBCCHHWkSNHOHLkiPV1r169qiyzbds2NBoN3bt3p6ysjPvuu4+XX36Za665hg8++IDw8PBa61i4cCE5OTl25zRq1CiHL9h25MgRfvzxR5o1a8aFF17oUNmaWPZ0v/rqq3zwwQfVLvPHH3+g0WjqHHR7ow1qYvnxQKfTkZyczN9//22dp9VqmTlzJs8//7xNmf379wPQvn37KvHi4uIICQmxLlNR7969rc//+OMPSktL8fPzc8v7EEII0XDIoFsIIYQ46+DBg9bnfn5+NG3atMoy27dvp02bNuTl5XHllVeyadMmnnzySettxOqycOFCDh8+bHdOiYmJDg04y8rKmDhxIiUlJTz77LPVHj7tKJPJxJ9//gnA559/Xuuy7dq1IywsrNZlPN0GtcnIyABgwYIF9OjRg02bNnHBBRewfft2/vWvf/HCCy/Qtm1b7r77bmuZ3NxcgBp/UAkLC7MuU1HFc7iNRiMnTpwgMTHRLe9DCCFEwyGHlwshhBBnZWZmWp9HRkZWmZ+Tk0NaWhpQfgj133//zTfffMMjjzxi14Ab4NChQ6iqavejpitwV0dRFG677TbWrVvHXXfdxcSJE+0uW5vdu3dTUlLCqFGjasxz+fLlgH3nc3uyDeqiKApQ/qPKqlWr6N27NyEhIQwcOJDly5ej1Wp54YUX3FJXkyZNbF5XXL+EEEKcP2TQLYQQQtjJcj53dnY2p0+fZurUqdZzeuuboijcfvvtfPzxx9x88828/vrrbottOSS7e/fuNS5jaRtvX0TNUZa91b169aJ58+Y287p06UKbNm04ePCgzeHvljLV7c0GyMvLq3YvuNyVVQghBMjh5UIIIYRVdHS09Xl2dnaV+ZaB5dtvv838+fNJSUmhb9++jBgxwu46PHE+s6IoTJo0iQ8++IDx48ezePFitFr3/a5uGXTXlkdNV3WvTn2e092xY0cAIiIiqp1vmV5cXGx9bjmXe//+/VV+VDh16hQFBQXVXtX9zJkzNq9jYmJcyFwIIURDJYNuIYQQ4qw2bdpYn5eWlpKRkUFsbKx1mmVgedFFF7Fq1Sr69u3LuHHj2LBhA127drWrDnefz1xxwD127Fg+/PDDWs/jrngY/HvvvWfXoduWi6jVtqd7x44dgP2D7vo6p3vQoEEA/PXXX1XmlZWVceDAAYKDg20GyJdeeinPPPMMP/zwQ5Ur03///ffWZSo7evSo9XlAQECVPetCCCHOD3J4uRBCCHFWYmIi8fHx1teWwWbF102bNqVZs2bExsby5ZdfotVqufrqqzlx4oRddbjzfGbLIeUffPABN954I//73//ccuG0isxmMzt37qRJkya0bNmy2mUyMjI4efIkrVu3rvZc+Mrq85zutm3bMnToUA4cOMDbb79tM2/evHnk5ORw3XXX2dxq7YorrqBNmzZ8/PHH1h8XoPxw85SUFPz8/Ljllluq1LVlyxbr8z59+siVy4UQ4jwle7qFEEKICgYPHsz7778PwO+//86VV14JlB9uvG/fPgYPHmxdtkuXLixZsoSRI0cycuRI1q9fT1BQkNdyfeKJJ3j//fcJCQmhQ4cOPPXUU1WWcfXQ7L/++ovi4uJq71luUd/nc7/99tts2LABgNTUVOs0y/21BwwYwJ133mld/tVXX+Xiiy/mrrvuYtWqVXTq1Int27fz888/k5CQwPz5823i6/V63n77bYYNG8Yll1zCuHHjCA0N5dNPP+Xw4cM8//zz1V6V/Pfff7c+HzJkiJvftRBCiIZCBt1CCCFEBbfffrt10L1ixQrmzp0LwJ9//onZbK4ygB0+fDgLFy7knnvuYcKECXz22WduPZ+6NocOHQKgoKCAp59+utplKh6abbldFpTfp9qeQbK7z+f2hA0bNlj7zOLXX3/l119/tb6uOOhu27YtW7Zs4dFHH+W7777jhx9+IC4ujqlTp/Loo4/anFJgMWjQIDZs2MBjjz3G0qVLKSsr48ILL+TZZ59l7NixVZYvKSnhq6++Asrv/33rrbe66+0KIYRoYDSqXFpTCCGEsNGlSxd2794NlA+2L7zwwnrOyD2WLVtmHSDee++9vPjii/WcUeO1cuVKrr/+egCuvvpqvvzyy3rOSAghRH2Rc7qFEEKISix7t4FGNTBdu3YtAE2bNuWJJ56o52waN8t6o9FobNYnIYQQ5x8ZdAshhBCV3HDDDfTt2xeADz/80O6LpPk6y6B7/vz51d5XWrjH5s2brW09ZsyYejvsXgghhG+Qw8uFEEIIIYQQQggPkT3dQgghhBBCCCGEh8igWwghhBBCCCGE8BAZdAshhBBCCCGEEB4ig24hhBBCCCGEEMJD9PWdQEOkKAonTpwgNDQUjUZT3+kIIYQQQgghhPAyVVXJz8+nefPmaLU178+WQbcTTpw4QcuWLes7DSGEEEIIIYQQ9ezo0aO0aNGixvky6HZCaGgoUN64YWFhdpdTFIXMzExiYmJq/SXEHeWcrUvYaujt6Cv5ezMPT9XlrriuxvHWdsRX1p3GoKG3pa/k39C3I+6MKduR809Db0tfyV+2I+6JJWOac/Ly8mjZsqV1fFgTGXQ7wXJIeVhYmMODbqPRSFhYmMMrqKPlnK1L2Gro7egr+XszD0/V5a64rsbx1nbEV9adxqCht6Wv5N/QtyPujCnbkfNPQ29LX8lftiPuiSVjmqrqOuXYdzMXQgghhBBCCCEaOBl0CyGEEEIIIYQQHiKDbiGEEEIIIYQQwkPknG4hhBBCCCF8kKqqmEwmysrKKCsrw2g0+vR5rTVRFMUn8vdmHp6oy50xXYnlbFlnytX3uqPT6dDr9S7fJloG3UIIIYQQQviY0tJSTp48SVFREaqqoigK+fn5Ln/5rw++kr838/BEXe6M6UosZ8s6U84X1p2goCCaNWuGn5+f0zFk0C2EEEIIIYQPURSFtLQ0dDodzZs3x2AwYDab3bLHrT5Y9tjXd/7ezMMTdbkzpiuxnC3rTLn6XHdUVaW0tJTMzEzS0tJo376903vbZdDtAkVRUBTFoeUtv9Y4Wo+j5ZytS9hq6O3oK/l7Mw9P1eWuuK7G8dZ2xFfWncagobelr+Tf0Lcj7owp25HGz2g0YjabadGiBUFBQQCUlZVhMBjqOTPn+Ur+3szDE3W5M6YrsZwt60y5+lx3AgIC0Ov1HD58mJKSEvz9/W3m27t9k0G3AxYtWsSiRYswm80AZGZmYjQa7S6vKAq5ubmoqurw+Q+OlnO2LmGrobejr+TvzTw8VZe74roax1vbEV9ZdxqDht6WvpJ/Q9+OuDOmbEcav7KyMuvOHZPJhKqq1u+fDXVPty/k7808PFGXO2O6EsvZss6U84V1x/JZPH36dJXBf35+vl0xZNDtgKlTpzJ16lTy8vIIDw8nJiaGsLAwu8srioJGoyEmJsbhf3KOlnO2LmGrobejr+TvzTw8VZe74roax1vbEV9ZdxqDht6WvpJ/Q9+OuDOmbEcaP6PRSH5+Pnq9Hr3+3Nd1X9hT7Apfyd+beXiiLnfGdCWWs2WdKVef645er0er1dKkSRMCAgJs5lV+XWMMTyR2vtBqtQ7/E9FoNF4r52xdwlZDb0dfyd+beXiqLnfFdTWOt7YjvrLuNAYNvS19Jf+Gvh1xZ0zZjjRuWq0WjUZjfaiqat3L11D3dPtC/t7MwxN1uTOmK7GcLetMOV9Ydyyfw+q2ZfZu22QLKIQQQgghhBBCeIgMuoUQQgghhBBusWbNGhITE71eVnif9LX9ZNAthBBCCCGE8KjU1FRuueUW4uPj8ff3JyEhgREjRrBixQqP1/34449bDw/28/NDq9XSqVMnj9d7vkpNTWXixIn10tevvfYaycnJhIWFERYWRr9+/fj222+t8y3rQsWHN9YFGXQLIYQQQgghPGbFihX069cPrVbLkiVLOHDgAF9//TWDBw/miSeeQFVVj+eQlJTEiRMnOHLkCCdOnGDDhg0er/N8tGLFCnr16lVtXz/55JMe7+sWLVowb948tm7dypYtW7j88su59tpr2b17t3WZpKQkTp48aX14Y12QC6kJIYQQQgghPGL79u1MmDCBlJQUZs+ebb0YVsuWLenSpQszZszwygWy9Ho9cXFxmEwm9Hp9g7wgna/bvn0748eP59lnn2XWrFnW6Za+nj59uvX2X54ycuRIm9dPP/00r732Ghs3biQpKQk4ty54k+zpFkIIIYQQQnjEzJkzGTBgADNmzKh2vr2D35SUFEJCQmp9HDlypMby+/fvJz4+no4dO3LzzTfXuqxwjqWvKw64K3Kmr0NDQ4mMjCQ0NNTuvrYwm80sWbKEwsJC+vXrZ52+f/9+mjdvTps2bbjpppu8si7Inm4hhBBCCCF83L39/o+c9Fyv1xsZF8Grm591quzhw4dZu3YtS5YssU4rLi4mLi7OusdzypQpPPfcc3XGmjx5MmPGjKl1mebNm1c7vW/fvixevJgOHTpw7Ngxnn76aQYOHMiuXbsIDQ114B15x7U/vMNpY2GV6SqAqoJGg6v76auLFR0QzOdD73AqnqWvly5dap1Wua/vvvtuUlJS6oxVsa9VVa326ISa+hrKzynv168fRqORkJAQVq5cSefOnYFz60LHjh05efIkc+fO9cq6IINuIYQQQgghfFx2ei5Zx8/UdxoOSU1NBaBPnz7WaQaDga1bt6KqKsnJyXTo0MGuWFFRUURFRTmVx/Dhw4HyAVznzp25+OKLSUxMZNmyZdxxh3ODTE86bSzkVHF+fafhEE/1dU2D7tp07NiRHTt2kJuby4oVK7j11ltZu3YtnTt3tq4LAMnJyfTt25eEhASPrwsy6BZCCCGEEMLHRTYNd3nvplP1xkU4XTY/v3zgqNefG3Lo9XratWtHWloaRqORrl272hUrJSWlzr2ke/bsoVWrVnXGioiIoEOHDhw4cMCuur0tOiC42une2NPtLF/qaz8/P9q1awdAz5492bx5My+++CJvvPFGlWW9tS7IoFsIIYQQQggf99LvTze4C4BZLly1YcMGRo8ebTNv165daLVaunTpYlcsVw4vr6ygoICDBw8yceJEu5b3tpoO8XZmr29N3BkLbPt63LhxNvNc6WtnDi+vTFEUSkpKqp3nrXVBBt1CCCGEEEIIt0tOTmbkyJFMnz6dgoICBg4ciKqq7Nixg/nz59OpUycCAwPtiuXK4eWzZ89m5MiRtGrViqNHj/Lkk0+i0+kYP368U/FEVZa+vvfeeykqKqJ///4oilKlr00mU52xXDm8fM6cOQwfPpxWrVqRn5/Pxx9/zJo1a/j++++Bc+tCQkICJ06c4LHHHvPKuiCDbiGEEEIIIYRHLF++nBdeeIGFCxcyffp0DAYDnTt3ZvTo0UyePNkrORw7dozx48eTlZVFTEwMAwYMYOPGjcTExHil/vPF8uXLWbBgAQsWLGDatGn10tcZGRnccsstnDx5kvDwcJKTk/n+++8ZMmQIUH/rggy6hRBCCCGEEB7h7+/PnDlzuP/+++vt8HjL1dPdfUi1sGXp6zlz5lQ7X1VVj+fwzjvv1Dq/4pX0vUnu0y2EEEIIIYQQQniIDLqFEEIIIYQQQggPkcPLG6H1n27kTHoO+fn5hIaGopXDZ5ymqGqDbkdfyd+beXiqLkVVKSgoIDQ01KVD0tQK+TkTR1VVCgos5e3/3VRVFfILCgizs15VVcnLzycsLKz6dqxmWvWL1VBXhekVF9HYTK84o/ZlrJOsr22nazSaCvMqxNBobJY5N/3ca43GNq5GAxqt9lwcjQat9mxZDWjPzsMaTyUnN4fsqDx0eh1arfbccloNWp22vLzW8leDVqtFqzs737pM+bSKD93Zv3KYpBDCVyQmJjJjxgyvlxXeJ31tPxl0N0LL5n/O3k2+ed9BIYQQ7mcZmOv0uvKBvU6LTq+1TtMbdOgMenR6LXqDHr2fHr1BZ/PX4GeZXv7c4G/A4G9A76enzFxKZJMI/IP88Qvwwy/AgH+gX/nrQD8CgvwICA4gINgf/yB/AoLLHzqdrr6bRgjhZTIQO39IX9tPBt1CCCFEA6coKopixlRmru9UbBj8DQSGBBAUGkBASABBoYEEhweVP8KCCIkMJiQyhLCoEEIrPMKahBIeHYpfgF99vwUhhBDCZTLoboRufvRGcjJzyc/LIzQsDK0Dh6AKW4qqNOh29JX8vZmHp+pSFIW8vDzCwsJcPrzclTjO5qEoCvl5+YSG2XdYuqoq5OVWX091Vx+t9oKkNVyltGL5iouoti/qXMb6XLV9Xd30c/POBSyfXqFshWWsZVTb8hVfq4p67rkKqqJY4yvKuWUURaGwsIjAwABUpcJ8RTn7V0VRlfJ4iorZrNjOMyvlD0U599ysYLb8NVWYZjLb/DWVnftrLjNhNimUlZowl5lQFM9fRbaspIyykjLysvKdKh8Q7E94dBiRcRFExIYTGO5PfOtmNGkeRZPmkUTHRxEdH0V4TFj5YftCCCGED5JBdyPU96oeKIpCRkYGsbGx8kXEBQ29HX0lf2/m4am63BXX1TjOlne0nK+sO42Br7al2WzGXGY+Owg3WwfjpSUmTKUm64DZWFTC6YzTBAUEU1ZioqS4lNLiUutfY1EJJUUlGAtLMBYZMRZWeF1YgrHQSFG+EWOBEWNRiUM5lpfPJP1wZq3L6Q06ols0IaZFE+JaxxLfrhnx7eOIb9+M+PbNCAoNdKWphBBCCJfIoFsIIYQ4D+l0OnQ6XZ2HcLvzRwOzyUxhXhGFuUUU5hSRn11AQXYh+WcKyM8uJP9MPvlnCsjNyifvdD65p/PIycirc0+5qczMqbQMTqVlkLr+ryrzo5pF0uqCeBIuaEFCUksSk1qS2KUloZEhLr0fIYQQwh4y6BZCCCGEV+j0OsKiQgmLCnWonKnMRHZ6Dgf2/INq1JCTnkvWiWxOH8/i9IkznD52hsxjWeSfKai2/JmT2Zw5mc2On3fZTI+Oj6J1cgLtu7fmgos60KlvOyJiwp1+f0IIIUR1ZNAthBBCCJ+mN+hp0jwKs95U6x734kIjJw+mc3z/yXOPA6c4uvc4OZl5VZY/ffwMp4+fYfO3263TYltF07ZbIgnJ8Vx6fX/adk2UW7IJIYRwiQy6hRBCCNEoBAYH0CY5gTbJCVXm5Z7O4/CeYxzefZS0XUc5tOsIaalHKMgptFku48hpMo6c5vcvtrDkqc+Jioug2+Vd6DaoCz2HdiW2ZbS33o4QQohGQgbdQgghhGj0wqPDSL6kM8mXdLZOU1WVzKOn2bvpAHt+/5t9mw9wcMchiguM1mXOnMrh54838PPHGwBI6NyC3ld2p++IHnQZ0Am9Qb5KCSGEqJ38pxBCCCHEeUmj0RDbKobYVjFcMrofUH7huMN7jrFu1W/8/fs//LluD8bCc1ddP7znGIf3HGPFgi8JjQph0Lj+DL31Mjr0aiuHoQshhKiW79y7RAghhBCinmm1WhI6t2DYnZfx5JcPsfLMYhZueIpbHhtD534d0GrPDazzzxTwxavfM63vHO7sMpMlz67i9Ikz9Zi9EPVvzZo1JCYmer2s8D7pa/vJoFsIIYQQogZ6g56kizsy8bEbefHXp1me/g5zPprOZeP64xdgsC535K/jvDPnI25qNZmHR6Sw6dvtqKpaj5kL4VtSU1O55ZZbiI+Px9/fn4SEBEaMGMGKFSs8Xve6desYOXIk8fHx+Pn5sWrVqirLLFq0iMTERAICAujbty+bNm3yeF6NVWpqKhMnTqyXvq5o3rx5aDQaZsyYYTO9PvpaBt1CCCGEEHYKaxLK5eMH8H8fz2DZqbeZ9dZkLhx4gXW+oqhs/nY7/zcihbsunMV37/5MaUlZPWYsRP1bsWIF/fr1Q6vVsmTJEg4cOMDXX3/N4MGDeeKJJzz+A1VhYSFdu3bllVdeqXb+0qVLmTVrFo899hjbtm2ja9euDBs2jIyMDI/m1RitWLGCXr16VdvXTz75pNd+jNy8eTNvvPEGycnJNtPrq69l0C2EEEII4YTgsCCG33EFC9Y+wfv7X+amR24gttW5q5sf3nOMF+58jYltpvLZi19TapTBtzj/bN++nQkTJvDUU0+xePFiBg4cSMuWLenSpQszZ85k586dHr8ewvDhw3nqqae47rrrqp2/YMEC7rrrLiZNmkTnzp15/fXXCQoK4t133/VoXo3N9u3bGT9+PM888wzvv/9+lb7esWOHV659UVBQwE033cRbb71FZGSkzbz66msZdAshhBBCuKh52zhue2IcHxx8hcc/u5+k/h2t886czOaN+z5gdv8n+PL1H2TPtzivzJw5kwEDBlQ5xNfC3kFYSkoKISEhtT6OHDnicH6lpaVs3bqVwYMHW6dptVoGDx7M77//7nC885mlr2fNmlXtfGf6OjQ0lMjISEJDQ+3u66lTpzJixAibPoX67Wu5erkQQgghhJvodDr6j+pD/1F92PP7PpbN/5xfV20GIPtkDq9Me4elz67i1rljGTzxEnQ6XT1nLBqKWTcuIvt0AeDdq+RHxYTw0srpTpU9fPgwa9euZcmSJdZpxcXFxMXFYTabAZgyZQrPPfdcnbEmT57MmDFjal2mefPmDud4+vRpzGYzTZs2tZnetGlT9u7d63A8d5iy5QWyS/OrnafivjWgcqxIv1Be7XWfU7Esfb106VLrtMp9fffdd5OSklJnrIp9raoqJpMJvV5vM2ivqa+XLFnCtm3b2Lx5c5V59dnXMugWQgghhPCAzv068vhnD3Bw5yEW/2cJG7/aCkDm0Syev/1VPlv4NVNenETXS5PqOVPREGSfLiArPa++03BIamoqAH369LFOMxgMbN26FVVVSU5OpkOHDnbFioqKIioqyiN5+prs0nxOl+bWdxoO8VRf1zTors7Ro0eZPn06q1evJiAgwMl34hky6BZCCCGE8KC2XROZu+oBNq7ewtcv/cimb7cD8M+fh5k96HGG3HIpdz03kcjY8HrOVPiyyOiQs8+8v6fbWfn55Xtr9fpzQw69Xk+7du1IS0vDaDTStWtXu2KlpKTUuZd0z549tGrVyqEco6Oj0el0pKen20xPT08nLi7OoVjuEukXWuM8T+/pdpYv9PXWrVvJyMigR48e1mlms5l169bxyiuvUFhYWG99LYNuIYQQQggvaNO1FU9++RCp6//ijdkfsH/rPwCs/mAtv3+xhdtTJjDiX4PRauWSO6KqBcun2rW3z5ckJZUfxbFhwwZGjx5tM2/Xrl1otVq6dOliVyxPHV7u5+dHz549+emnnxg1ahQAiqLw008/MW3aNIfjuUNNh3g7ste3Lu6MBbZ9PW7cOJt5rvS1I4eXX3HFFdY97haTJk2iU6dOPPjgg/j7+9dbX8ugWwghhBDCi7pemsTLG1P45q2fePfhjynIKaQgp5CXprzF719u4cH3pxEeHVbfaQrhsuTkZEaOHMn06dMpKChg4MCBqKrKjh07mD9/Pp06dSIwMNCuWK4cXl5QUMCBAwest6tKS0tjx44dREVF0apVK2bNmsWtt95Kr1696NOnDwsXLqSwsJBJkyY5Vd/5yNLX9957L0VFRfTv3x9FUar0tclkqjOWs4eXh4aGVhnYBwcH06RJE+v0+uprGXQLIYQQQniZTqdj5OShDLi+L289+CGr318LwOZvtzO5+/08+ME9dBtk314hIXzZ8uXLeeGFF1i4cCHTp0/HYDDQuXNnRo8ezeTJk72Sw5YtWxg0aJD19X33le9JvvXWW1m8eDFjx44lMzOTRx99lFOnTtGtWze+++67KhfcErVbvnw5CxYsYMGCBUybNq1e+rou9dXXMugWQgghhKgnkbHhPPDeNC4fP5BnJ75ETmYep4+f4YHBTzB+znXcMneMXOFcNGj+/v7MmTOH+++/v94Oj7/ssstQVbXWvabTpk2rt8PJGwtLX8+ZM6fa+ZYjDbxpzZo1VabVR1/LSUNCCCGEEPWs19CuvLZ9Pt0GlZ8XqaoqH6d8xmOjnqMwr6iesxNCCOEKGXQLIYQQQviA6OZRzPvhP9zxzE1odeVf0f74ehsz+j9C+uHMes5OCCGEs2TQLYQQQgjhI3Q6HeMeHMUz3z1CaGQwAId2H+Wei+ZwYHtaPWcnRN0SExOZMWOG18sK75O+tp8MuoUQQgghfEyPKy7kpY3PEN++GQDZ6bk8MOQJ/vnzcD1nJkTtZCB2/pC+tp8MuoUQQgghfFCL9s146ben6XxxRwDyzxTw4JAn+HvLwXrOTAghhCNk0C2EEEII4aPCmoSS8s3DdOrbHoCczDxmD3qczV/vqN/EhBBC2E0G3UIIIYQQPiw4LIhnvv0/ugzoBEBJcSkv//tdfl21qZ4zE0IIYQ8ZdAshhBBC+LiQiGCeXf0oQ265FABVUXnmppfYuWZ3PWcmhBCiLjLoFkIIIYRoAPz8Dcx+dwpX3DwQgLKSMh4d9SwHdshVzYUQwpfJoFsIIYQQooHQarXMemsyXa/oDEBRXjEPD3+ak2np9ZyZEEKImsigWwghhBCiAdEb9Ex743YuOHtxtez0XP5vxDPkZxfUc2ZCCCGqI4NuIYQQQogGJiDInye+fIiWHZsDcHTvcZ4Y/TylxtJ6zkwIIURlMugWQgghhGiAwqJCePrrh4mICQNgxy+7mTv6eUpLyuo5MyGEEBXJoFsIIYQQooFq1qYpcz9/kIBgfwA2fbOdhf9+o56zEuezNWvWkJiY6PWywvukr+0ng24hhBBCiAas80UdePrrhwkIKh94r/5gLT99tL6esxLCVmpqKrfccgvx8fH4+/uTkJDAiBEjWLFihcfrXrduHSNHjiQ+Ph4/Pz9WrVplM//xxx9Ho9HYPDp16uTxvBqr1NRUJk6cWC99XdG8efPQaDTMmDHDOq2++vq8HXRfd911REZGMnr06PpORQghhBDCJcmXdGbmm/+2vn5pyltyRXPhM1asWEG/fv3QarUsWbKEAwcO8PXXXzN48GCeeOIJVFX1aP2FhYV07dqVV155pcZlkpKSOHnypPWxYcMGj+bUWK1YsYJevXpV29dPPvmkx/vaYvPmzbzxxhskJydXmVcffa33eA0+avr06dx+++28//779Z2KEEIIIYTLLp8wkM3f7+DHD9dRlF/MC3e8xnM/PopWe97uYxE+YPv27UyYMIGUlBRmz56NRqMBoGXLlnTp0oUZM2ZYp3nK8OHDGT58eK0DPr1eT1xcnEfzaOy2b9/O+PHjefbZZ5k1a5Z1uqWvp0+fjtls9ngeBQUF3HTTTbz11ls89dRTVebXR1+ft1vhyy67jNDQ0PpOQwghhBDCbaa9fAexraIB2LlmN18s+r6eMxLnu5kzZzJgwACbQ3wrsnfAnZKSQkhISK2PI0eOOJ3n/v37ad68OW3atOGmm25yKdb5ytLXFQfcFTnT16GhoURGRhIaGmp3X0+dOpURI0YwePDgaufXR1/75J7udevWMX/+fLZu3crJkydZuXIlo0aNsllm0aJFzJ8/n1OnTtG1a1defvll+vTpUz8JCyGEEEL4gOCwIO57ZwoPDnkCgHfmfETfq3vQrHXTes5MuGravf8jO6cQ8Oxe4cqiIoN5/dXbnCp7+PBh1q5dy5IlS6zTiouLiYuLs+7xnDJlCs8991ydsSZPnsyYMWNqXaZ58+ZO5dm3b18WL15Mx44dOXnyJHPnzmXgwIHs2rWrXnbSLdp/PwWm7KozVFA5uwa4uhpUEytEH8nU9vOdCmfp66VLl1qnVe7ru+++m5SUlDpjVexrVVUxmUzo9XqbQXtNfb1kyRK2bdvG5s2bq51fX33tk4Nuy3kXt99+O9dff32V+UuXLmXWrFm8/vrr9O3bl4ULFzJs2DD27dtHbGwsAN26dcNkMlUp+8MPPzj9gRRCCCGE8HU9rriQkZOH8uXrP2AsKmHhv99g3vf/8fghvMKzsrMLOZ1VUN9pOCQ1NRXAZseYwWBg69atqKpKcnIyHTp0sCtWVFQUUVFRHslz+PDh1ufJycn07duXhIQEli1bxh133OGROmtTYMomr+yM1+t1haf6uqZBd3WOHj3K9OnTWb16NQEBAdUuU1997ZODbst5FzVZsGABd911F5MmTQLg9ddf5+uvv+bdd9/loYceAmDHjh1uy6ekpISSkhLr67y8PAAURUFRFLvjKIqCqqoOlXG2nLN1CVsNvR19JX9v5uGputwV19U43tqO+Mq60xg09Lb0lfwb+nbEnTHtiTUpZTwbv95K5tEstv2YyuoP1zL45ktcykW2I95jaTvLAyAyMtjbO7mB8j3djlz8yrKsqqrW78x6vd46XafT0bZtW9LS0jAajSQnJ9uUqfi3opSUFJ555pla6969ezetWrVyKM/qhIeH06FDB/bv3+/Shb9qez+1CdFHlu+Gri4m7lsNKscK0UfanWvF5Sr2tU6nq7Gvu3bt6tG+3rJlCxkZGfTo0cM6zWw2s27dOl555RWMRiM6nc6mjD19bfkcVjf2s3f75pOD7tqUlpaydetW5syZY52m1WoZPHgwv//+u0fqfOaZZ5g7d26V6ZmZmRiNRrvjKIpCbm4uqqo6dFETZ8o5W5ew1dDb0Vfy92YenqrLXXFdjeOt7YivrDuNQUNvS1/Jv6FvR9wZ095Yt80bw/ybXgPg7Tkf0XFAG/yD/GQ70gCUlZWhKAomkwmTyYSqqixcMA6dTlcvRyxUd/RoTSyHEptMJjp27AjA2rVrueGGG4Bz5/Xu3LkTrVZLp06drPErlq3szjvvrPYI2IpiY2NrzdUyqLK0a00KCgo4ePAgEyZMcOi9V67L8n4c7bN/JVZ/CLYlpjvWg5pi2fN+LWUty1bu67Fjx9osb+nrjh07WtvE3r62DHa1Wq1NntX19aWXXsq2bdtspt1111107NiR2bNnW/eaV2RPX5tMJhRFISsrC4PBYDMvPz+/2jKVNbhB9+nTpzGbzTRtantuUtOmTdm7d6/dcQYPHszOnTspLCykRYsWLF++nH79+lW77Jw5c2wuCJCXl0fLli2JiYkhLCzM7joVRUGj0RATE+PwPzlHyzlbl7DV0NvRV/L3Zh6eqstdcV2N463tiK+sO41BQ29LX8m/oW9H3BnT3liDx8ay7uM/+OPrbWSfzGH9x5uY8PD1sh1pAIxGI/n5+ej1evT6c1/XK3/h90WWPYl6vZ4ePXowcuRIZs2aRVFREZdccgmKorBjxw6ef/55OnXqZHMebcWylcXGxlpPI3VUQUEBBw4csL4+evQou3btIioqilatWjF79mxGjhxJQkICJ06c4PHHH0en03HTTTdVm4sjPNFn7ozpSixL21Tu65KSEvr371+lr8PCwigrK8NgMDjU15YydYmMjCQyMtJmWkhICNHR0XTr1g3Aqb7W6/VotVqaNGlS5bD1mg5jrxLDrqUaoR9//NHuZf39/fH3968yXavVOvxPRKPReK2cs3UJWw29HX0lf2/m4am63BXX1Tje2o74yrrTGDT0tvSV/Bv6dsSdMe2NdddzE9n83Q4Us8KSZ1Zyyeh+tOjQTLYjPs6yV8/yUFXVupfP18/Nr5zn8uXLeeGFF3jxxReZMWMGBoOBzp07M3r0aCZPnmzzfjz1Hrdu3cqgQYOsr++77z4Abr31VhYvXszx48eZMGECWVlZxMTEMGDAADZu3Oj0IB/wSJ+5M6YrsSqWrVh++fLlLFiwgP/+97/cc889Vfq64rL21u2O92z5HAFO9bWlfHXbMnu3bQ1u0B0dHY1OpyM9Pd1menp6utxbTwghhBCigoQLWnDNlGGsevlbSopLSZmwkIW/Vr1vrRCe4u/vz5w5c7j//vvtuhiWJ1x22WXW83KruyhXxaurC+dZ+rriacAVuXJ+vLPWrFlj87q++rrB/ezo5+dHz549+emnn6zTFEXhp59+qvHwcCGEEEKI89Udz9xEQucWABzccYil81bVb0JCCHGe8clBd0FBATt27LBegTwtLY0dO3ZYb1w+a9Ys3nrrLd5//33++usv7r77bgoLC61XMxdCCCGEEOUCgvx5+OMZ6PTl51Auf+FLsk/l1nNWQghx/vDJQfeWLVvo3r073bt3B8oH2d27d+fRRx8FYOzYsTz//PM8+uijdOvWjR07dvDdd99VubiaEEIIIYSANskJjJw8FICSohJWPPtVPWckGqvExERmzJjh9bLC+6Sv7adR6+Pg+gYuLy+P8PBwcnNzHb56eUZGBrGxsQ5fLdSRcvv+PEphfjE52TlEREbYfe6MM+fYOHNajrfO5XHu/diWUVSFnOxsIiIj0WpqaHsvtYEzzaaqKtnZ2URGRnr0IjZ1vR9FVcg+k01k1Ll2dGo1sKOQqiicyc4mKjISjVbrtnVUUZRa29LeehRF5cyZM0RFRTnVJyoq2WfOEBkVVfM6WU1uiqpw5kw2UVG1rMsV61GdyNOHPwvOJOdMPVqtBjSa8r9Y/qpknSm/YItOd/biSFpNhQuzaEBTXtZ64aRK8zUabKZ5k7P/uxpyHp6oy50xnY2VezqPW9vfQ2FuERqthg//WUTTVjEeq9dX1p2GyGg0kpaWRuvWrQkICKjxXOSGwlfy92YenqjLnTFdieVsWWfK+cK6U/nzWJG948IGdyE1X1LdDdLrWt5yrzlH63Gk3KtzV/H3n0cdqkMIIUTDUXFwXz4QLx+UazUatHoter0OnU6LTq9Fq9Oh02vR67XodFq0Z+fp9RXm67ToDWfnV15ep6XMVEpYRCj+/gYMfnr8/PUY/PX4+Rsw+Onw8zOcfV3+0J9dxs/PgH+ggcBgfwKD/KyHNzvD2f+hvlKXO2M6Gys0KoTr7r2K/z25AlVR+eatH7l17ti6CzpZrzf7rLGxtJ3lAVT529D4Sv7ezMMTdbkzpiuxnC3rTLn6Xncsn8Pqxn72bt9k0O2ARYsWsWjRIuvN3DMzMzEajXaXVxSF3NxcVFV1eE+3I+VMZWV2xxZCCNHwKIoKqCjm+s7EMXo/HQGBBgKC/PAPNBAQ6Gd9HhTsT3BYACFhAeV/wwMJDrU8DyAw2A9jaZHD/0Od4ez/a2/FdCVW71Fd+TjlMxSzwjdv/8iQf12C3mDfjyGO1uuJdjxflJWVoSgKJpMJk8mEqqrW758NdU+3L+TvzTw8UZc7Y7oSy9myzpTzhXXHZDKhKApZWVlV7heen59vVwwZdDtg6tSpTJ061XoYQUxMjMOHl2s0GmJiYhwedDtSbvjYi8g8mUNRURFBQUF2raBO/W7k1K9izlTjnXqqK6SqKkXFRQQFVt+OTr0fZ1rbyTZQVZXi4mICAwPtWw+ce0N2xS0qLibobB5O9am9y1V4z06poaLa2tLRX2uLi40EBAQ4/s/j7C+txUYjgXaWt6SmomIsLiYgMBBNHYdaq5TXYyw2EhDoWD0OceGXdQ9X41xunP01XFHLP3+KiqKqqIpCsdGIn8GvfDlFRbEsY13e8igfUKuKUmW+Uk1s1LOxFBUVFcWsYjYrmE0KitmM2aRgNiuYTGaUs88t8+uDqdRMQamZglz7f7CuSG/QERoeRGhEIOFRwTRpGk50XIVH03CaxIUT0STYpUGes/+vvRXTlVixsbFcdHVPfvt8Mznpeexdd5DLxw/wSL2eaMfzhdFoJD8/H71ej15/7ut65S/8DY2v5O/NPDxRlztjuhLL2bLOlKvPdUev16PVamnSpEmVw8srv64xhicSO19Ud4P0utR0Y3V3lrv6povlPCo3aejt6Cv5N/RzMd0Z19U43ro2hK+sO42BL7alqqooFQbg1r8mc4Vp5YP2slITGRmZhASFYTKZKSsxUVpiorSkjLJSE2Wlltdnp5VUnFaGsbgMY1EJxUWlGAvL/xYXllBcVEJJsWNHZpnKzGSfzif7dO17FnR6LU1iw6yD8ZhmEbRoE0OL1rG0aBNDeFRwnT8mOfv/2lsxXYk18u6h/Pb5ZgDeuv9D+gzvTlhUqEfq9UQ7ng+0Wu25azyc/bHass421D3dvpC/N/PwRF3ujOlKLGfLOlPOF9adc9dYqbots3fbJoNuIYQQ4jyj0WjQ6XXl51j7176soigER+k88qOB2axQUlw+CC/IM5KfW0RBbhF52UXk5xaRn3P2kVtMXnYh2Vl5FBeUkp9bjLGotOa4JoWMEzlknMipdn5IeCAtWsfQsk35ILxVu1gS2sfRtIVnLzrpK7pfcSHdBndhx4+7OHMqhzdmf8D9706t77SEEKLRkkG3EEIIIeqFTqclKCSAoJAAmjQNr3XZykcMFBeWkJWeS+apXE7X8MjLLqw2VkFuMXt3HGHvjiM20/0DDSS0jyOhXSxxiREMGNKNlm1jG+SexdpoNBomPTuWhy//h8LcIn78YC23zh1LbMvo+k5NCCEaJRl0CyGEEKLBCQz2p0WbWFq0ia1xmdKSMk6fyiP92BmOpWVy9J8Mjv2TyfG0zGr3gpcUl/H3n0etdwD5cMFPRMWGkty3LV0vakty33Y0axXVKAbhUc0iuH7GCD6cuxxFUfn27Z8cupK5EEII+8mgWwghhBCNkp+/geYJTWie0ITu/dvbzDMWlXL80GmO/pPBkf3pHNp/isN/n+LkkTM2F+w7k5HPmi93sObLHQDENo8guW9bki8qH4jHNo/05ltyqytvv5yPnvr07JXMf+KmR25Ab5CvhkII4W6yZRVCCCHEeScgyI+2nZvTtnNzm+nG4lL+2XuCjT+n8s/udHZvPWRz/njGiRx+XLmVH1duBSCuZRQ9+rdn4FVdubBPG3S6hnNOeHR8FP2u6cWvKzdx5mQ2v67azKU39qvvtIQQotFpOP8ZhBBCCCE8LCDQj05dW3HVTb154u3bWb5lLi8sncItM4fR7eJ2+Pnb7q84dfQM3yz5gzm3vMnEgU/z+pOf89f2w87dgrEejJw81Pp86bMrG0zewnetWbOGxMREr5cV3id9bT8ZdAshhBBC1EBv0NG5RyLjp1zBM+//i+Vbn+DZ//2bm+4ZTJferdEbdNZlszPz+fyDX5k1ZhGTLp/He89/y9GDGfWYfd16DE6mXffWAOzflsbW1X/Wc0aisUpNTeWWW24hPj4ef39/EhISGDFiBCtWrPB43c888wy9e/cmLCyM+Ph4rrvuOvbt22ezzKJFi0hMTCQgIIC+ffuyadMmj+fVWKWmpjJx4sR66evHH3/c5nZ7Go2GTp062SxTH30th5e7QFEUFEVxaHlVVR0q42w5Z+sSthp6O/pK/t7Mw1N1uSuuq3G8tR3xlXWnMWjobekr+fvKdkRv0NKld2u69G7NhGmDMRaVsmnNX6z7eieb1+7DVGYGIP1YNsve+IVlb/xC5x4JjLptAG2SY9ySvzu3I1qtlnEPjeKpsf8FYMm8lfQYfKFb6vWVdachsrSd5QFU+eurqstzxYoV3HzzzYwbN45PPvmExMREcnNzWb16NU888QTXX3+99X7klcu6w9q1a5kyZQq9e/fGaDTy2GOPMXToUHbv3k1wcDBLly5l1qxZvPbaa/Tt25eFCxcybNgw9u7dS2xszRdrrIsn3o87Y7oSq2IZe/v6ySef5JprrnG4bkeXTUpKYvXq1dZper3eWtaZvrZ8Dqsb+9m7fZNBtwMWLVrEokWLMJvL/6FmZmZiNBrtLq8oCrm5uaiq6tB9QJ0p52xdwlZDb0dfyd+beXiqLnfFdTWOt7YjvrLuNAYNvS19JX9f3o506tWMTr2acXP+ZWxbf5CNP+7lr21HUMzlX/L2bDvMnm2Had46iutuv5gel7RHq3X+Cuju3o60vziRuDYxnPonk51rdrNlzXZadY53uV5fWXcaorKyMhRFwWQyYTKZUFXV+v3T16+eb8nTZDIBsH37diZMmMBTTz3FzJkzrfk3a9aMTp06MW3aNGuZymXd5csvvwSwtuObb75JixYt2LRpEwMHDmTBggXccccdTJw4EYBXXnmFb775hrfffpsHHnjAqTo90WfujOlKLEtZSz9V7uuUlBRmzJhhXd7S11OnTkVRFMrKyuzua0fzVBQFnU5HdLTtLRAt9TjT1yaTCUVRyMrKwmAw2MzLz8+vMyeQQbdDpk6dytSpU8nLyyM8PJyYmBjCwsLsLq8oChqNhpiYGIe/LDtaztm6hK2G3o6+kr838/BUXe6K62ocb21HfGXdaQwaelv6Sv4NYjsSC4ltW3H9bYPIySpgzZc7+GHFZg7vTwfgRNoZFv3nK1p3asY1Ey9mwJXJBIX4ey+/WspfP/1qXp3+HgDrP9nEzDf+7XK9vrLuNERGo5H8/Hz0ej16/bmv65W/8Psina78lAtL3g888AADBgxg5syZdeZfuWxFKSkpPPPMM7WW3717N61ataozx6KiIgBiYsqPPtm2bRtz5syxqXfw4MFs2rSp2lwc4Yk+c2dMV2JZ2qZyX8+ePbvGMmVlZRgMBo/1tVar5cCBAyQkJBAQEEC/fv1ISUmhVatWlJaWOtXXer0erVZLkyZNCAgIsJlX+XVNZNDtAq1W6/A/EY1G47VyztYlbDX0dvSV/L2Zh6fqcldcV+N4azviK+tOY9DQ29JX8m9I25GomDCuv/0Srps0kM1r9/K/F1ezf9cxANL2nuTF//uUN57+ktF3XsqN/7oMP3/Hvvi6ezsy7LZBLP7PEoryivn5o/XcNe9mwpqEulyvr6w7DY1Wq7U5J1VVVe54ehln8orw9n7uqPBgPnj8JruXt+yN1Gg0HD58mLVr17JkyRLrdKPRSFxcnHXv5ZQpU3juueeqlK3s7rvvZuzY2u8lHx8fX+veUMthwjNnzqR///5ceOGFnDhxArPZTFxcnE3Zpk2bsnfvXqf3KKuqWuv7qc3mE9dTaj5dQ1xw18EOlWP56aLp3fwzO8qpNu+pYl8vXbrUOq+4uNimr++++25SUlKsZSr+rahiX6uqislkQq/X2yxbU19fdNFFLF68mI4dO3Ly5Enmzp3LJZdcwq5du8jPz3eqry2fw+q2ZfZu22TQLYQQQgjhIRqNhj6XXUDPgR348fM/+PrDLdbBt7GolP+9tJqfP9/GlMdG0XNgx3rLMyg0kCsnXc5nL35NqbGM79/7hRtnX1Nv+YiqzuQWkplTWN9pOCQ1NRWAPn36WKcZDAa2bt2KqqokJyfToUMHu2JFRUURFRXlck733nsvu3btYsOGDS7H8pRS82lKzOn1nYZDPNXXNQ26azJ8+HDr8+TkZPr27UtCQgLLli2zmedtMugWQgghhPAwjUZD14vbMPjavhzYdZzvlm9i9adbMJsUThzO4pHb32HAlRfyr4dHEtMsol5yHHn3UD578WsAvnrjB26YdbXsofYhUeHBoNHUy55uZ1nOd6142K5er6ddu3akpaVhNBrp2rWrXbFSUlKse0lrsmfPnloPL582bRrffPMNa9eupUWLFgBER0ej0+lIT7cd5KanpxMXF2dXbu7mp4uucZ6n93Q7y9f62iIiIoIOHTpw4MCBeu1rGXQLIYQQQniJRqOhY9dWdOzaimtvGcCix1aya0saABu+S2XLun3cfO8Qrr1lgM3tyLyhRYfmdL/iQrb/lMqJg+ls+zGVXkPt+5IsPO/dR8bavbfPVyQlJQGwYcMGRo8ebTNv165daLVaunTpYlesyZMnM2bMmFqXad68ebXTVVXlnnvuYdWqVaxevZrWrVtb5/n5+dGzZ09++uknRo0aBZRfj+Cnn35i2rRpduXmbjUd4u3oXt/auDMW2Pb1uHHjbOa50tc15VlTX1dWUFDAwYMHmThxYr32tQy6hRBCCCHqQWKHOJ77eDI/rdrG2/O+IvdMIcaiUt6e9zU/fraVaU9cT1LPRK/mNHLyULb/VH6Y6NdvrpZBt3BJcnIyI0eOZPr06RQUFDBw4EBUVWXHjh3Mnz+fTp06ERgYaFcsVw4vnzp1Kh9//DGrVq0iNDSUU6dOodFoCA8PJzAwkFmzZnHrrbfSq1cv+vTpw8KFCyksLGTSpElO1Xc+svT1vffeS1FREf3790dRlCp9bc+V6V05vHz27NmMHDmShIQETpw4wWOPPYZOp2P8+PEA9dbXMugWQgghhKgnGo2Gwdf1pO/lF/D+gu/55pONqKrKob9Pcf/417j+9oHcMnOYwxdac1a/a3oRFRfBmVM5/P7FFs6cyiYqLtIrdYvGafny5bzwwgssXLiQ6dOnYzAY6Ny5M6NHj2by5MleyeG1114DYNCgQTbT33vvPW677TbGjh1LZmYmjz76KKdOnaJbt2589913NG3a1Cv5NRbLly9nwYIFLFiwgGnTptVLXx87dozx48eTlZVFTEwMAwYMYOPGjcTExADUW1/LoFsIIYQQop6Fhgcxbe51DLmhF4se+4z9u46jqiqfvrOOrev/5v7nx9HmAvsOp3SF3qBn6G2DWDJvJWaTmR8Wr2HcQ9d5vF7RePn7+zNnzhzuv//+ejs8XlVV69+a9ppOmzat3g4nbywsfT1nzpxq51v6wZOWLFlS5zL10ddydQwhhBBCCB/RMbkl/11xD3c8OMJ6Tvehv08x/YaX+fyDX73ypfWqO6+wPv/2nZ+8UqcQQjRmsqfbBYqioCiKQ8urqupQGWfLOVuXsNXQ29FX8vdmHp6qy11xXY3jre2Ir6w7jUFDb0tfyb+hb0ccianRwPW3D6RH//Y8/8BS0vaexFRm5vUnP+fA7mP86+GrPbodaZoYQ7dBXdjxyy5OHEzn4M5DtElOkO2IF1nazvIAqvz1VTXlaU/+3niP3mxHT9TlzpiuxKpYxpHyzqzP9b3uWz6H1Y397N2+yaDbAYsWLWLRokXWG7xnZmZiNBrtLq8oCrm5uaiq6tAtOJwp52xdwlZDb0dfyd+beXiqLnfFdTWOt7YjvrLuNAYNvS19Jf+Gvh1xJmZQpJY5i27ks7d+5bslWwH48bOtbNvwNzfcfREXXZ7kse1I8hWd2PHLLgB+WrqOkLhhsh3xorKyMhRFwWQyYTKZUFXV+v3T169e3qJFC+655x6bC2bZm391Zd3Jm+3oibrcGdOVWJay8fHxDvVXxTrt7WtfWPdNJhOKopCVlYXBYHt9Dcut0uqiUX395zIflJeXR3h4ONnZ2YSFhdldTlEUMjMziYmJcfjLsqPlnK1L2Gro7egr+XszD0/V5a64rsbx1nbEV9adxqCht6Wv5N/QtyOuxlz79U5efHgFJcYyADRaDfc9N4ZBI7t7JJf0w5nc0rb8nMeOvdvx0u9Py3bEi4xGI4cOHaJ169YEBAQA5QPxyl/4GxJfyd+beXiiLnfGdCWWs2WdKVff647RaCQtLY3ExETr59EiLy+PyMhIcnNzax0Xyp5uF2i1Wof/iWg0Gq+Vc7YuYauht6Ov5O/NPDxVl7viuhrHW9sRX1l3GoOG3pa+kn9D3464EnPQyO50TG7FK499xvZf96MqKgseWIbBoOeSqxy/rVdduTRr3ZQ2yQn88+dh9m0+QHZ6LpFNw2U74iVarRaNRmN9qKpq3cvn63u6q+Mr+XszD0/U5c6YrsRytqwz5Xxh3bF8Dqvbltm7bZMtoBBCCCFEA9A8oQlPvXsHw8f2BUBRVJ6d9Qkbvkv1SH39RvayPv9t1SaP1CGEEOcDGXQLIYQQQjQQWq2WKY9fyyVXdwFAMSvMm/kRP3++ze11DRx9kfX5L0t+dXt8IYQ4X8igWwghhBCiAdFqtdx6/xCGXN8TALNJYf7sJSx74xe31tMmOYFWF8QDkLr+LzKOnHZrfCGEOF/IoFsIIYQQooHRajXc89QNXDX+3N7o957/lhVvr3VbHRqNhsvHD7S+lr3dQgjhHBl0CyGEEEI0QDqdlmlzr+O2+660Tnvn2a/5ZslGt9UxaHx/6/N1y39zW1whhDifyKBbCCGEEKKB0mg0jJ18ObfMHGad9sqjK1nz5Xa3xG/eNo4OvdoCcGD7IU79k+GWuEIIcT6RW4Y1Qj/+tJusrHwKCgoICQlx6PL6Tl2K38mr9zt72X9nbxbgTH2qqpa3Y+hRh8trnMzUqS6ooZCiqhTk5xMSehxtdcs423cOFlRVhfz8fMLCTjjVD46UUVSF/Lx8QsNOOH9Lrmren+U9hIaeRKOpGtfeFFVVJS8vj7CwU2dvQeFYboqqkp+XT1hYusO36cjLzyPcznLn8ky33irDGc7f3cOZ9cTJmjz83hTF0pan0Wo1OPvetFpNhduW1PaXKtN1Wi0arQatRoNGy9m/Z5c5+7ymv6gqubnFBAYa8fPTo9NprQ/hO8bdfTlF+UZWvL0WVVWZf/9SIqJD6davncuxL72xH39vOQjApq+2k3xRF5djCiHE+UQG3Y3QZ6u2sHfvyfpOQwghRCOm0YBer0On06LXlw/C9TodOr3ta4NBh7+/Hj+/8oe/vx7/s8/9/PX4+xnw89Ph52+wTrcs7++vJ8DfQFCwH4EBBoqKjEREmPD3NzTIexV7kkaj4fYHrqKosIRvPtmIYlZ4ZvpHvLzqXmKbR7oU+9IxF/PWg/8DYOMX27jzqYnuSFkIIc4bMugWQgghhMNUFcrKzJSVmb1et16vJSjIn+AgP4KC/AkJ8Sc8PIiwsEDCwwIJCz/7NyyI8PBAIsKDaNIkBD+/xv21R6PRMOWxUWQcz2bLun3kZRfy1NQPmP/JFPwDDE7HbZoQQ6c+7di76QBH95wg4+hp4hJi3Zi5aEzWrFnDbbfdxqFDh7xaVnjfmjVrmDRpkvS1HRr3f5/z1J2TLiU3r4jc3DzCw8OqPRS2eqpT9anOFTtb1vt1OvI+zx0WGub0XhVn32N5WadLAmfzz88jLDTs7GGtnquztvd57lDlqu3o7r60HH4dGhZa/SH1TtZpeQ+hoaEOfKYqlD+bq6qoZw9TDy0/dLfugjbOHT4firaOPCr2iapWqLeOdVlVKx5O79j7VZ3cjjhdrB4+X46+R1VVKcgvICQ0xOnTThRVRVVVVEVFUcvXI1VVUSx/rfNs/5orL6dUjFPNX5Uqy5rNCsXFRnQ6PWazgsmklP81K5hNZkwVpplNCiaz+dxrs0JpqQlFcemDXoXJpJCXV0xeXrFD5cLCAomODiG6SSjR0aHlz6NDiY0Jo2lsGE2bhhPgwuDUF+h0Wh5YMJ57r3uJU0fPsH/XcV559DNmPTvGpaMD+gzvwd5NBwDY/lMqw2+/wl0pi/NEamoq//3vf/n55585ffo0cXFxdOnShUmTJjF69GiP1v3MM8/w2WefsXfvXgIDA7n44ot59tln6dixIwCPP/44c+fOtSnTsWNH9u7d69G8GqvU1FSee+65Kn192223MWrUKI/WXVdf1ldfy6DbBYqioCiKQ8uXf5Gxv4wz5bp1a4WiKGRmZhITE+P0ea2CBt+OvpK/N/PwVF3uiutqHGfLO1rOV9adxqCht6U78jeZzJSUmCgtM1FaYrJ9XmqitPTsNMvz0vJ5paUmjMYyiopLKSwsIScnH5MJiopLKSospaiolMKiErv3tlsG6v/8k1njMuHhgcTGhhER7k/LljE0bxZJYmI0iQnRREQEOfX+wfnvAM7ECg4N4JFXJnLfuFcpKS7jx5VbaX9hC66+qZ/TuXS7PIkPzn5P3bb6T4bdNsjlPEXNLG1neQBV/vqq6vJcsWIFN998M+PGjeOTTz4hMTGR3NxcVq9ezRNPPMH111+PRqPx2Htcu3YtU6ZMoXfv3hiNRh577DGGDh3K7t27CQ4ORlVVkpKSWL16tbWMXq93OQ9PvB93xnQlVuUf9i1q6+snn3ySa665xuG6HV22tr50pq8tn8Pqxn72bt9k0O2ARYsWsWjRIszm8n/umZmZGI1Gu8srikJubi6qqjr8ZdnRcs7WJWw19Hb0lfy9mYen6nJXXFfjeGs74ivrTmPQ0NvS3flrNBAQAAEBGgg1APbtWbbkER4eXiWPkhITBQUl5Ocbya/wtyC/hPwCI7m5RrKziziTXUh2djFmc81fknJzi8nNLd+DvnnLEZt5YWEBtGwRSYsWEbSIjyAxsQkJraLQ6737mbInVnCUjkkPDOH1ud8A8ObTXxLRNIAOyfFO5RKZGE5AiD/GghK2/vgnp06dqrNsQ1/361NZWRmKomAymTCZTGePOin//unr1zOw5GkymQDYvn07EyZM4KmnnmLmzJnW/Js1a0anTp2YNm2atUzlsu7y5ZdfAljb8c0336RFixZs2rSJgQMHoigKOp2O6Ohom3Ku5OGJPnNnTFdiWcpa2qdyX6ekpDBjxgzr8pa+njp1KoqiUFZWZndfO5pnXX3pTF+bTCYURSErKwuDwfZ/Vn5+fp05gQy6HTJ16lSmTp1KXl4e4eHhxMTEEBYWZnd5RVHQaDRO7aFytJyzdQlbDb0dfSV/b+bhqbrcFdfVON7ajvjKutMYNPS29JX83fcZVMnNK+L06QJOn87n9Ol8MjLySc/IJT0jj4z0PLLOFFR7SHxenpHde06ye8+5i5UG+Bu44IJmdElqQVJSPBd0ak5wsL/H8nck1sgJsWQcLeCzd9dhNiu89tjXvPjZPUTHhjqVS9dLk/jj623kZxVQmG6kbddEt+QpqjIajeTn56PX69Hrz31dr/yF3xfpdDoAa94PPPAAAwYMYObMmXXmX7lsRSkpKTzzzDO1lt+9ezetWrWqM8eioiIAYmJi0Ov1aLVaDhw4QEJCAgEBAfTr14+UlBS7YtXFE33mzpiuxLL0U+W+nj17do1lysrKMBgMHuvruvrSmb62rCNNmjQhICDAZl7l1zXGsGspUS2tVuvwP5HyW7h4p5yzdQlbDb0dfSV/b+bhqbrcFdfVON7ajvjKutMYNPS29JX83ZGHVgtNokJpEhVKxw7Nql2mtLSMvXsPYTIbOHEih7RDmRw6dJpDhzLJzimyWdZYUsb2HUfYvuPI2fga2rSJpUtSPBd2aUnXrq2Iigx2W/4W9sa6/f7h/LP3BDt+O0DO6QKeufcj5n34L6dy6TE4mT++3gbAzl920757G7flKWxptVrrLQIth13f9MYysgocu46BO0SHBrFs2k12L2/ZG6nRaDh8+DBr165lyZIl1ulGo5G4uDjr3sspU6bw3HPPVSlb2d13383YsWNrrTs+Pr7WvaGWw4RnzpxJ//79ufDCCwG46KKLWLx4MR07duTkyZPMnTuXSy65hF27dhEaGmr3e69cV23vpzbK6etBqf40GB1OXwal7ljaGLTRn9VZruJ7A9u+Xrp0qXVecXGxTV/ffffdpKSkWMtU/FtRxb5WVRWTyYRer7dZtqa+rqsvnenrc7frrLots3fbJoNuIYQQQogK9HodsbGhxMbG0qN7os287OxCDh0+TVpaJnv+OsGuXcfIyMyzzlcUlQMH0jlwIJ1Vn5cPUBMTo7n8sgvo3as5sV6+6LdOr+Oh/97Evde9SMaJHPbuOMIbT33JmGn9HY7V/YoLrc+3/ZTK6Fkj3ZmqqMPpgiIy8grrOw2HpKamAtCnTx/rNIPBwNatW1FVleTkZDp06GBXrKioKKKiolzO6d5772XXrl1s2LDBOm348OHW58nJyfTt25eEhASWLVvGHXfc4XKdDlMyQUmvdpY7Ty5wZyxP9XVNg+6a1NWX9dXXMugWQgghhLBTZGQwkZHBdO+WwPXXlU9Lz8hl167j7Np1jF27j/FPWobN1fEPHTrNu4vX8/6HWjp2iCOpczxDBnehXbumXsk5PCqY/7x6C/eNfZXSEhPfLv2Dpglh3HiHY1cgb3VBPBFNw8hJzyN13R7KSssw+Pn+4c6NRXRIkNN3QHCp3lDnLyBoOd+14iHEer2edu3akZaWhtFopGvXrnbFSklJse4lrcmePXtqPUx42rRpfPPNN6xdu5YWLVrUuFxERAQdOnTgwIEDduXmdtqYGmepuG+wXCVWLfXWxdf62qKuvvRWX8ugWwghhBDCBU1jw2l6eThXXN4ZgIJCI3/tOcGOP4+wfcdh9u07iaqC2ayw568T7PnrBMs/3UzX5JZcPqgz/S5qR3S0c4ew2qtdUgvuefIGXnhgKQAfLfyZ/oO70qK1/bveNRoNSQM68uunmzEWlrD3jwNcOPACT6UsKvl48li79/b5iqSkJAA2bNhQ5bZgu3btQqvV0qVLF7tiTZ48mTFjxtS6TPPmzaudrqoq99xzD6tWrWL16tW0bt261jgFBQUcPHiQiRMn2pWbu9V0iLeqqpgd2OtbG3fGAtu+HjdunM08V/q6pj3dNfV1ZXX1pbf6WgbdQgghhBBuFBIcQO/ebejdu/yc55Mnc/jiy22sXb+XU6fOHYq+88+j7PzzKAtf+p6+fdty3TU96dmzNVqtZwZVg6/ryd4dR/j6498pKzXz0iOf8ez//u3QF+6kgeWDboBtP/4pg25Rq+TkZEaOHMn06dMpKChg4MCBqKrKjh07mD9/Pp06dSIwMNCuWK4cXj516lQ+/vhjVq1aRWhoKKdOnUKj0RAeHk5gYCCzZ89m5MiRJCQkcOLECR577DF0Oh3jx493qr7zkaWv7733XoqKiujfvz+KolTpa3uuCO/K4eV19WV99bUMuoUQQgghPKhZswjuuvMyrr2mM/7+Iazb8DefrdzC0aNnAFBV2LjxIBs3HqRFfCSjRvVkxPCu+Pu7/9DtOx8cwZa1e0k/nk3qpn/4btkmho/ta3f5pAHnzsncunont86t/cJWQixfvpwXXniBhQsXMn36dAwGA507d2b06NFMnjzZKzm89tprAAwaZHt/+ffee4/bbruNY8eOMX78eLKysoiJiWHAgAFs3LiRmBjnD7c+Hy1fvpwFCxawYMECpk2bVi99XVdf1ldfy6BbCCGEEMJLwsODuHZkD665ujv796fz629/8/0Pu6wXYzt2PJtXFv3IRx//zrgxfRl5dXcCAtw3+A4I8mPaE9fxnzveBeCdZ7+mz2WdaNI03K7yUc0jadW5BUf2HGPfpgPkZxcQGhnitvxE4+Pv78+cOXO4//776+3wePXsRRZq2mu6ZMkSr+fUGFn6es6cOdXOV1V3XXe9ZnX1ZX31tdy/QQghhBDCyzQaDR06xDHptkv46MPJzH3sOrp3S7DOz84u5LU3fuamia/x4f9+5fTpfLfV3WNAB/pfWX7+eWG+kVfnfu5Q+V5Dyy+GpCgq235MdVteQgjRWMmgWwghhBCiHul0WgYO6MgL88fz1hu3c8nAjtZ52TlFvPf+esbf/BrvLl6H2ay4pc5x91xKRJPyPdS/rd7Fjt/tv3KvZdANsOW77W7JRwghGjMZdAshhBBC+Ii2bWJ5/NHreOfNO7js0k5YjoA1mxX+99FvTJ/1EXv3nXS5npCwQCbdf+5+tW+lfGn3gL7LwAvwO3vI+9bVf3rlkFHRcCQmJjJjxgyvlxXeJ31tPxl0CyGEEEL4mNatY3j0kVF89OHdjBvT13pF8z17jjPt3g956ZU1nM5y7ZDzy6/tTrukeAD+2XuSHz/bYlc5/0A/kvp3AiDzWBYZR067lIdoXGQgdv6QvrafDLqFEEIIIXxUXNNw/nXXIF76783EN4+0Tt/4xyFuv/Mdfli9y+nYWq2Wu+ZcbX39/n+/p6jAaFfZCwecu1VY6vq/nM5BCCHOBzLoFkIIIYTwcZ07x/Pu23cy/Z6hRIQHAVBUVMq8577itdd/orS07nvfVie5b1suHtIFgOzMfJa89rNd5ZIGdLI+37Vhr1N1CyHE+UJuGeYCRVFQFPsvaKIoCqqqOlTG2XLO1iVsNfR29JX8vZmHp+pyV1xX43hrO+Ir605j0NDb0lfyb+jbEXfE1Ok0jLy6GwMHtOfFl79j/YaDACz/dDPrNuzjztsvPXseeO23ZKqcy6T7r2TTmr8wlZlZ8dZaul7Ulu7929darmPvtmh1WhSzQuqGv6p9X76y7jRElrazPIAqfxsaX8nfm3l4oi53xnQllrNlnSlX3+uO5XNY3djP3u2bDLodsGjRIhYtWoTZbAYgMzMTo9G+w7CgvFNyc3NRVRWt1v6DDJwp52xdwlZDb0dfyd+beXiqLnfFdTWOt7YjvrLuNAYNvS19Jf+Gvh1xZ0xFURg3pgtt20Tz4UebMJtV0tPzePqZL1n945/cefvFhIT4252LPhCuue0iPnvrV1RVZd7Mj5n3ySSCQwNqLZd4YQv+2XGEI3uOcXBvGqFRwR57z+ebsrIyFEXBZDJhMplQVdX6/bM+7nPtKl/J35t5eKIud8Z0JZazZZ0p5wvrjslkQlEUsrKyMBgMNvPy8+27toYMuh0wdepUpk6dSl5eHuHh4cTExBAWFmZ3eUVR0Gg0xMTEOPxl2dFyztYlbDX0dvSV/L2Zh6fqcldcV+N4azviK+tOY9DQ29JX8m/o2xF3xrTEmjC+Pf0uuoC3313L5i1pAGzafJiTJ/OZl3IjTZuG253LpFkjOPL3abas3UdBbjE71h/mutsG1lqu26UX8s+OIwBkHjhD26tbe+w9n2+MRiP5+fno9Xr0+nNf1yt/4W9ofCV/b+bhibrcGdOVWM6WdaZcfa47er0erVZLkyZNCAiw/TGy8usaY3gisfOFVqt1+J+IRqPxWjln6xK2Gno7+kr+3szDU3W5K66rcby1HfGVdacxaOht6Sv5N/TtiDtjWmK1bx/Hs8+MZe26vfx34Xfk5Rs5euwM9874iMceHUWXpBZ25aLVavn3wyPZsnYfAN8u+YPrJ11SZc9SxXJdBnTisxe/BuCvjfu5+JreHn3P5xOtVotGo7E+VFW19kVD3dPtC/l7Mw9P1OXOmK7EcrasM+V8Yd2xfA6r25bZu22TQXcj9N3vf3E6p5CCgnxCQo45tIK6si5rcK6ws3W69rmz/4NekJ9PSOiJsx84V2r0bvug0aCqCvn5BYSGnkSjceAHG6errL5keR75hIaeqjEPp9eDSq8VVT1bVzra2oI68Q8mPy+P0LCM2uPWwvLFKS8vj7CwTKc+m6qikpefR1hoJhpt3eUt652iKuTn5RMalonWjnVBxZLnaYf/yTn7T9GVj7Tz64+bVrxanOvzM9Z/3B6u0racVoNWU/4o/9JQ/ld39q9Wozm7zNkfk63LUn6bKhVycrLJNWrQ6bTn4mm15WU05dP1Oi16ne7s3/KHTqdtkAOEhujSSzrRsUMcD8xZxrFjZ8g6U8DM+z5m+r1DufqqbnbFaNEmlq4XtWXnxoMcTzvNzo0H6davXY3LX9Cvg/X5nt/3ufoWhBCi0ZJBdyO0dPV2dv9zqr7TEEIIIdBpNdYBuXVwrq86QPcz6An0NxDgd/avv4HAs48APwP+fjrKSozERp8hKMCvwjy9zbKBAQZ05+le1bi4CF5eeDOPzV3Jn6lHMZsV/rvwO5pEhdDvopoHzxVdNf4idm4sv0Dbu899zQtLp2Lwq/7rYnTzKOISYzh1KJN9mw5gKjOhN8hXSyGEqEy2jEIIIYTwGLOiYlbMlJSZvVKfRgMhgf6EBgcQFlT+NzTIn7DgAEKD/YkKCyYmIpjoyBBiIoKJiQghwN83zjN1h/DwIF6YP55XX/+Jlau2oqrwVMoX/Pf5CXToEFdn+YuHdKFlm1iO/pPB/l3H+WTRT9wyc1iNy3e+uCOnDmVSUlzKwZ2H6dirrTvfjhBCNAoy6G6E7h49gNz8InJz8wgPD7P7sGIVFy7D72RRZy/978oNAxy9RUH5YaFhzh+GivNt6+ydESzFVEU5l7+de36cvh1DLcXOHdocWu2hze5sH5s+q/Fwd+dujZGXn09oaKhzh8uerfPc4e+hdh2mXjnT8sPL8wkLDa3z8PKKb/PcIf6hdW4TLLfGyHfi/Tr92XR2W+DSZss7dZ47TSXU6cPgnf5YquXvU1VUFLX8oapgtt7K6extUNSzt8FULcuWr6vlt0dRKSwqIiAgANU6XbUua1YVzGYVk9mMyaxYH+YKz01m87nXprOvlQplTAqlJvcMylUV8otKyC8q4YSdZUIC/YmJDCY6IoToiGCiw4MJ9oOObYpo0TSSZk1C8WtAe3B1Oi1T7x7MmTOFrF23l+LiUmY/+AnPPzu+zoG33qDj/hfGMfPGVzCbFJa/tYYREy6iSQ0XZevcryM/f7wBgL9+/1sG3YI1a9Zw2223cejQIa+WFcKXNZz/IMJufTq3QlEUMjIyiI2NlYuXuKCht6Ov5O/NPDxVl7viuhrH2fKOlvOVdacxaOht6a38FUWlpMxEcUkZxSVlGM/+tTwvMpaScfoMBv9ASkrPLldaeTkTBcUl5BUaywfehUbMSt2/WBQUl1BQXELaiTOV5mwByveex0aG0ia+Ce1aRtOuRTTtWsaQ2CwKg17ngdZwnVar4cH7R3Amu4DU1GMUFJQw+8FPmD9vHO3bN621bPsuLbjutoGseHstpjIzq97/lTseuKraZTv1OXfY+v7t/7j1PYjGJTU1lf/+97/8/PPPnD59mri4OLp06cKkSZMYPXq0R+t+7bXXeO2116yD+aSkJB599FGGDx9uXWbRokXMnz+fU6dO0bVrV15++WX69Onj0bzE+UMG3UIIIYSod1qtxnpednWcGfyrqkqhsZT8wvIBeG6hkTN5RZzOLiAzp5DTOQVk5hRwOqeQzOwCjKWmGuJA+pl80s/k83vqIet0nU5LYrNI2rWIoV2LaNq3iqFzmzgiQgIdfv+eEBBgYN7TY3jo/5ZVGHgv4YnHr6NZXO23ublu0kBWvb8BU5mZbz7ZyLi7Lycw2K/Kcq0vbIVWp0UxKxzYluaptyIauBUrVnDzzTczbtw4lixZQmJiIrm5uaxevZonnniCG264waMXXWzRogXz5s2jXbt2lJWV8dFHH3Httdeyfft2kpKSWLp0KbNmzeL111+nb9++LFy4kGHDhrFv3z5iY2M9lpc4f8igWwghhBCNkkajISTQn5BAf5pFh9W6rKqqFBaXcjqnkFNZefyddoz8EpWTp/M4npnLkVPZ5BeV2JQxmxUOHsvi4LEsvq8wvWXTCLq0bcaFbZvROymBVk0j3P/m7BQY6Me8p8fw8CPL2fnnUQoLS3jgoWXcfttFjB1T82AiKjaMwdf15LtlmygqMPLt0j+4/vaBVZbzC/AjoXML0lKPcGj3UUqNpfgFVB2ci/PX9u3bmTBhAikpKcyePds6uG7ZsiVdunRhxowZHr/LwciRI4Hyz7nJZOLpp5/m9ddfZ+PGjSQlJbFgwQLuuusuJk2aBMDrr7/O119/zbvvvstDDz3k0dzE+UEG3UIIIYQ472k0GkKC/AkJ8qdVXASJMQE2e9VVVSUju4ADRzM5cOw0B46e5sCxTA6dzMZsVmxiHU3P4Wh6Dt/+9hcAzWPC6ZvUigtaRnJFaAShwbXvZXa3wEA/Up66kcefWMnmLWmYzQpvv/s7nTq1onu3xBrL3XDHJXy/fDOqqrJq8XpG3tyv2uXa9WhNWuoRFLNCWuoROva270rp4vwwc+ZMBgwYwIwZM6qdb++AOyUlhZSUlFqX2bNnD61atap1GbPZzIoVKygsLKRfv36UlpaydetW5syZY11Gq9UyePBgfv/9d7tyE6IuMugWQgghhKiDRqOhaVQoTaNC6d+1jXV6mcnMoZNnOHA0k72HM9h18CR7D2VQVuHCcCcyc1m5JpWVwLMfb6Bb++Zc1rMdV/TuQHREiFfytwy8X3n1Rz7/YhuqqpLyzJe8+frtREYGV1umRZtYLhrcmd9X7yYrPY81X+6g68CqA5r23duw+v21AOzfliaDbg+5fsUSsoqKvF5vdHAwX4y72amyhw8fZu3atSxZssQ6rbi4mLi4OMzm8s/IlClTeO655+qMNXnyZMaMGVPrMs2bN69xXmpqKv369cNoNBISEsLKlSvp3LkzJ06cwGw207Sp7bUOmjZtyt69e+vMSwh7yKBbCCGEEMJJBr2O9i1jaN8yhuEXdwagtMzE/qOZbN17jI2ph9jx93FMZ/eGm80KW/ceY+veYyz4eA3dO7RgcN+OXN6rPVFhQR7NVafTMm3KYI4cOc32HUfIOlPIM89+xbyUMWhruBvCjXddxu+rdwPw+fsbSB4wvsoy7Xu0tj4/sE0upuYpp4sKSS8srO80HJKamgpgc0Eyg8HA1q1bUVWV5ORkOnToYFesqKgooqKinM6lY8eObN++nTNnzrBy5UpuvfVW1q5dS0REhNMxhbCXDLqFEEIIIdzIz6AnqU0zkto045arelNkLGXLniP8snkvOw9mcCwjByi/QNu2fcfYtu8Yz3/4M707t+Kq/hdwWc/2NV5QzlU6nZY5D17NXZPfJTfXyJataSxZtpEJ46o/dPyC7gl07NqKfTuPkLbvFH/vPE7TobZ7BNt0TUSj0aCqKn9vPeiRvAVEBwW7dPtSp+sNrv5ICHvk5+cDoNefG3Lo9XratWtHWloaRqORrl272hXL1cPL/fz8aNeuHSaTiT59+rBlyxZefPFFXn75ZXQ6Henp6TbLp6enExdX973thbCHDLqFEEIIITwoKMCPAd3a0KF5CLGxsaSdPMOPf+xj9aa/OXIqGyi///kfuw/zx+7DhAb9wpjB3Rg7pAcRoe6/EnpUVAhTJl/CvOd+QFXh3ffWcWGXFlzYpWW1y18z8WLm7zwCwI+fbmfg0B627y80kITOLTi0+yj//HlELqbmIZ+NHoder/f4RcfcKSkpCYANGzZUuS3Yrl270Gq1dOnSxa5Yrh5eXpmiKJSUlODn50fPnj356aefGDVqlHXeTz/9xLRp0+yOJ0RtZNAthBBCCOFFbeOjaXt9NP+67mL2H8lk9abyAfiJzFwA8otKeOeLP/jou62MuiyZm67sSdOoULfmcGGX5kwY34+PPv4dRVF5KuULXl90W7Xndw8cnszb874i+3QB29Yf4PSpXGKbR9os07F3Ow7tPorZZObAjkN0vsi+Q4ZF45acnMzIkSOZPn06BQUFDBw4EFVV2bFjB/Pnz6dTp04EBtr3w5Irh5fPmTOH4cOH07JlS7Kzs1m2bBlr1qzh++/L7zswa9Ysbr31Vnr16kWfPn1YuHAhhYWF1quZC+Eq+250KYQQQggh3Eqj0dAhIZapNw5k5XO38+bDY7mqf2d0uvKvZ8ZSE0t+2MZ197/DU+/+wOGTZ9xa/y039yf5wvK925mZ+Tz0f8soLCypspzBT8+VY/sCoJhVvvlkY5VlOvY5d/G0fZsOuDVP0bAtX76cGTNmsHDhQnr06MFFF13ESy+9xOjRo1m/fr1XcsjIyOCWW26hU6dOXHnllWzZsoXvv/+eIUOGADB27Fief/55Hn30Ubp168aOHTv47rvvqlxcTQhnyZ5uIYQQQoh6ptFo6NYhnm4d4pl8/cV89N1WVq1NpaTUhMms8MW6XXy5fheX9mjHv6+7mGA3fIPT6bQ88vA1TL33AzIz89m/P50nn/6clKdurHJhtRHjL2LZG79gNil8t2wTE6YNxq/CeeedKg66N8ugW5zj7+/PnDlzuP/+++vt8Ph33nkHOHef7urymDZtmhxOLjxG9nQLIYQQQviQuCZh3HfTIL54/k4mjexLSKA/UH7htTVbD3Dzox/y5hdbMJaUuVxXdHQozz4zlrDQ8nuHb9r8D58sqXpv4iZNw+k/tPzc29wzhaz75k+b+a0vbIXh7CD8rz/2u5yXEEI0JrKn2wWKoqAoikPLq6rqUBlnyzlbl7DV0NvRV/L3Zh6eqstdcV2N463tiK+sO41BQ29LX8m/oW9HnIkZHhLAv6/rx81X9mDV2l188v02TucWYlZUvvrtb1L/yeQ/dwylS9tmLuXSqmUUj/zftTw4ZymqCu+9v56+fdvSpnWMTbkRN/WzDra/+OBXBl3Tzbq3UKvT0r5Ha/b8/jcnDpwi6+QZwmPCfGLdaYgsfWR5AFX++qqa8rQnf2+8R2+2oyfqcmdMV2I5W9aZcvW97ls+h9WN/ezdvsmg2wGLFi1i0aJFmM1mADIzMzEajXaXVxSF3NxcVFVFq7X/IANnyjlbl7DV0NvRV/L3Zh6eqstdcV2N463tiK+sO41BQ29LX8m/oW9HXI05pEdLLunSjM9/3ceyn3dRWmbm8Kls7nx6KYO6J3L7iB6EhwQ4nUuL+ECuu7Yrn63aiaKovPX2T8ycfrlNuSbxAcS3juJ42hn27zrGxjV/0jbp3IC/dfdW7Pn9bwB++2YTPYcn+8S60xCVlZWhKAomkwmTyYSqqtbvn75+9fIWLVpwzz33YDKZrNPszb+6su7kzXb0RF3ujOlKLGfLOlPOF9Z9k8mEoihkZWVhMNjeztFyW7y6yKDbAVOnTmXq1Knk5eURHh5OTEwMYWFhdpdXFAWNRkNMTIzDX5YdLedsXcJWQ29HX8nfm3l4qi53xXU1jre2I76y7jQGDb0tfSX/hr4dcVfMaWObc9WAC3nkta/550T57cZ+2X6IHQfSeeCWKxjUs10dEWrO5Y7bL2ftugNknSlk85YjZOeY6dihmU25oWN68t6zqwH444e/6Tfo3D2W+wztwdev/gjAkdQTDL91sE+sOw2R0WgkPz8fvV5vc4/ryl/4fVG7du2YNWtWtfPqyr+2su7kzXb0RF3ujOlKLGfLOlOuPtd9vV6PVqulSZMmBATY/rhZ+XWNMTyR2PlCq9U6/E9Eo9F4vNxHv23nZE4+hUWFBAcFgwM/CmkcWbhKjk4XdbpeT9epqqq1HW1+XXOyXm+3r6qqFBUWERwc5NSvg678olixpKqqFBYWEhwcXHdMF+t0qC6bamtftjxuAcHBITbLOpquqpzLz5kvoaqqUFhYSEhIiEPvT1VVCgoK7C6nqiqFBYUEhxyxLu/s+uDK79LuWge9VWd1zrX98Vpj10/71r2Mqqrk5xcQGnri3KHEGg1ajRatFrQaLTqtBq1Gg06rRaPR2LwuX9Yy7eyyZ+dXXEan1Zwtq0Wv1eKn15U/dDoMeh36sxf2cuZ/qDOc/X/tjZht4qN5fuowft1zirdW/U5eYQnZ+cXMWfQVwy7qxP0TLycsuPYvgtXlEhjoz8039efFl38A4Ln537Do5VsICvK3LnPRkE4seXktxUWl/P7THu41q+gNOgAuHHgBGo0GVVXZvWEv2rPrg7f6rDGxtJ3loaqqy9vi+uQr+XszD0/U5c6YrsRytqwz5Xxh3bF8Dqvbltm7bZNBdyP05fa9pB47Vd9pCCGEEG6lgbODcT0GXfnA3KDTWaf563UEGPQE+/sR5GcgyN+PIH8DQX7lr89NL38eHhhAeFAA4YEBBBjq56rKztLrtNx4RTcG9+nIM4t/ZN32gwB8v3EvqQdP8uy0kXRMiHU47lXDu/LFl9tJO5TJ4SNZPL/gWx59ZJR1vp+/gd6XdWLdN39SkFvMn38cpMeA8ntyh0aGkNilJWmpRzi44xBF+cVuea9CCNHQyaBbCCGEEA2CCpSYzJSYzG6P7afXERboXz4QDwwgSK+leZNIokODiQ4NIjokmLiIUOLCQ4kKDvSZAXqT8GDm33sN3/72F8//7xcKiks4kZnLnU99woO3DObqgUkOxTMYdDzx+PVMnrqYwsIS1qzdy4irDtGzR6J1mf7DLrReUO3X71Otg26Azv06kpZ6BEVRSfvzMDHto9zyPoUQoiGTQXcj9Nh1V1BgLCE7O5vIyEi09h6+4UKdrlxMUHWyZm/UqSoqOTnZREREorHcs9TJep19n+D8e1UUhZycHCIiItBoHDu0z535qqq9ebhep6Iq5ObkEh4RjtbO92zPe1UVlZzcHCLCI6zrgjP9Ut4WuYSHh59bpxygKCq5uTmEh0c4fEhXTk4O4eHhDl1IzbK8s1cMdW274sL6UA911kRRVPLycgkLC69y72NX6/XGdltVFXJz8wgPD0Oj0Z67iquqYlZVFEXFrCooSvm08tflV3m1zFcqvTaryrllz843n71as1lVMZkVSk1mysxmSk1mSk0mSk1mCo1GVI22wvSzD7OZMpMZkwtXyS41mTmdX8Tp/KJzEw8eq3ZZf72OuPBQmkWE0iwijOaRYbSJiaR1TBSJ0ZH4G7z79Uqj0XBV/8706NSCh175kj1p6ZSUmXnine/5+2gmM8df6tD2Ij4+knumDmHec18B8NrrP/HGa5OspyP0uqQj/gEGSoxlrP8ulbseHklAoB8AiV1aWuMc3nNMBt0u8vUrlQtxPnDH51AG3Y3QBc1jURSFjCADsbGxch6VCxRFISPDv8G2Y3n+gfWef3keGV7Jw1N1uSuuq3GcLe9oOW/2WWPX0NvSV/K3Jw+zomAsM1FUUkpRaRmFZ/8WlZRRWFpKUUkZRaWlFJaUUVBSQl5xCblFRnKLjeQWGctfFxspLq39/tclJjOHs3I4nJVTZZ5GAy0iw2kdE0XrmEjaxEbRJiaKjnHR7miGWsU1CePNh8fywkdrWLmmfE/0kh+2YTYrzL55kEMD78FXJLFy1Rb2/X2Kf9Iy+fb7P7nqymQAAoL86D/sQn7+fBv5OUWs/nQLI2++GIDEJNtBd69rk934Ds8flotGFRUVERgYWM/ZCHF+Kyoq/zHWlYu5yaBbCCGEEI2CTqsl2N+PYH8/l+IUl5Sy/8hRNP5BnCkqJqugiMz8Qk7l5HMyJ5+TufmcyM6jqJrBuarC0TO5HD2Ty7p9adbpeq2WNtER9Grbku4J8XRLaEbzCPvvgGIvP4OeObcN5oLWTXlm8WpUFZb/tIOC4hIeuX0oBr3OrjharYa7J1/BjFkfAfDee+u47JKO1vk33HEJP3++DYBP31nLVeP6otPrSKgw6D60+6gb39n5RafTERERQUZGBgCBgYGYzWb0+oZ17QELVVUxmUz1nr838/BEXe6M6UosZ8s6U64+1x1VVSkqKiIjI4OIiAh0Ovu2n9WRQbcQQgghRAX+Bj2xocG17lVXVZV8YwkncvI5mpXDP5lnSMs4wz+Z2aRlnqkyIDcpCn9nnOHvjDN8/PtOAOLCQ+jWqjk9Epsz6IK2NI903yB81KUX4qfXMfft71BV+Pa3v8jMLuDZaSMJDrTvR4nkC1tyycCOrFu/j+ycIj76ZCPXjrwAgDYXNKfnwA5sXf836cey2bRmL/0GJxEZG054dCi5p/M5sqf6w/OFfeLi4gDIyMgoP6VDUaxXNW9ofCV/b+bhibrcGdOVWM6WdaacL6w7ERER1s+js2TQLYQQQgjhII1GQ1hgAGGBAXRqFmMzT1VV0vMKSMs8wz8Z2ew7lcnOwyc5mJFlcx7+qdwCvkv9m+9S/yblyzUkxTdlQIdELm7fiuSWzfCzc690Ta7q35lAfwOPvvENJWVmtvx1lLtSlvLirOvsjvGvuwbx+8YDlJWZWfHpZnp2jyM2tvyq6NfeOoCt6/8G4JtPNtJvcPlF2xKSWvLn2j2cOZVDQXYhsY5fRF1Qvo41a9aM2NhYSkpKyMrKokmTJg32NBVfyN+beXiiLnfGdCWWs2WdKVff647BYHBpD7eFDLqFEEIIIdxIo9EQF15+pfN+7RKA8i+O/xw9xkmjmR1HTrLz7KPiHvHdx9PZfTydN375gyA/A5d0bM2onp3p1y4Bvc65L5uDerVnUcSN3LdwFbkFRv45nsW9L3zGk3dchj1j4ebNIhg3pi8ffvQbZrPCe+9vpHv38quV9xjQgdj4SDKOZ7N1/d+cOnqGuJZRJHQuH3QDHP/7JG06tnYqd1FOp9MREBCAwWAgICCgwQ66fSF/b+bhibrcGdOVWM6Wdaacr6w7rmq4mQshhBBCNCAh/n70b5/APUMu5u07buD3R6ew4p6buGfIxXSstLe8qLSM71L/ZvLiVQx+9m1e+HY9BzOynKo3uV1z3nlkPM2iyw9fTztxhsffW0NhcYld5SeM70fz5hEA/LU3nZ1/lp+rrdNpGT62L1C+d/+nVVsB24upHdt3yqmchRCiMZFBtxBCCCFEPdDrtFzQPJbJl/fls3tv5pc5d5Fy4zBGdutEZPC5K1Zn5hfy7rotXPPfD5jw6hK+2rGXMrNj9ypvFRfJqw+MJjoiGIADx84w+6UvMNZxpXYAf38Dk24daH29dNkf1udXjOphfb72q52oqkqrC+Kt007sl0G3EELIoFsIIYQQwgfEhoVwbY/OzBs7nF/m3MXLE69hcFI79BUOqdx59CRzln/PTe99yes//0FWQVEtEW3Fx0bw8uwbCAsOAGD7vuM89c4Pdt2D9rJLLyCuaTgAm7ekceBAOgAxzSJI6pUIwNF/Mji071SlQXe63fkJIURjJYNuIYQQQggfY9DpuLxzW168eSS/zLmLh66+lA4V7vWdVVjMop82csW8t3lkxQ+cyMmzK27bFtH8d+YoAvzKL+vzwx/7ePeLP+ooVX4o+Y2je1tfL6mwt/vSEd2sz9d+s5PIphGEnN2jLnu6hRBCBt1CCCGEED4tKiSIif178Nm9N/P+v25kcFJbtGdvnVNmNrNy626ufmExr6z+rdp7h1eW1CaO+8ZdjOXuO2+s/I0fN/1dZ7lhQy8kLLR8L/matX9x4mQOAAOuvNB6K58/ft6DRqOx7u0+czKHovxiR9+yEEI0KjLoFkIIIYRoADQaDb1at+C/E67mw9uu5rYBPQgL8AegxGTmtZ//YOSCxXy1Y2+dh4z37dyCu2/ob3099+3v+PtwRq1lAgIMDBtafp9uRVFZvnwTAJHRoXS4sAUAh/ad4vSpXFpd0MJa7uje446/WSGEaERk0C2EEEII0cDEhYVw3/CBfP/A7dzSv4f1vO9TuQU8uPRbbn5jKalHaz+0e+LwXlzVvzMAJaUm5rz6FQV1XNF8yJBOBAQYAPj2+z/JySk/p7znJR2ty2xd/7fNoPuIDLqFEOc5uU93IzTh02WkZqSjqgoajRaNs4GcLlg5jHsCadwQxvFcVBRVPXsY37my7sgF3NPEtb0nFexeD9z1nmp6V4qi2H1/RVdzsdTl1nVPrfAenAh7LhcVs6Kg02pxdg1QFDNarc6h0mqlcnW1sQooZgWtrrZ1x3c+2+CebY1nclExmxV0Osf73C3bCBfflIqK2WxGr3P9K4NGo0GrAZ1Gi0ajQXf2Uf5ci1YDWq0WnUaD1uZRPq+stIyggAC0Gg16rRY/nQ6DTlf+V6vDoCuf5ldhmmUZy/MAvZ4gg8H6CDQYCNKXP/fT6VxuL28LCwzgwasvZUzfC3nu63Ws25cGwI7DJxn36ifc2OdCZg8fSMjZPeIVaTQaHr5tMP8cz2LvoXSOpufwzHs/8tTdV9XYDiHB/oy4qiuffraF0lITqz7fym23DqTXJR35+JUfAdi6fh9XXNnZWuboXzLoFkKc32TQ3QgVm8ooLCut7zSEEEKIBkWn0RBoMBBsMBCo09EkOIRw/wAiAgIICwgg4uzzqMBAooOCiQ4KIjooiHD/gHofrLeOieK120axft8hnvt6Lf9kngFg+aZUNvx9iCeuH8LF7ROqlPMz6Hlmyghufux/FBaXsnrTPnp0asENl3etsa4bruvFqs+3YTYrfLZqC6Nv6E2H5JaEhAdSkFvMlnX7mDD5Muvyx/4+4fb3K4QQDYkMuhuhlmHhFJaVYjaZ0el1Tu39sef2IXbFcUuU8j0tLsdwMoTZbEJXYQ+P296Tm9q41jrO7qHS6WpfDzzf3/bv6XO5r1Uwn92j6w4V87G0pcMxKr0lxen8VDv3QFdX8lw5e5q48p7x6ua7gzs+2+D859smhgdzceRIj4oZeSIXh2Ngyd/1QaWigqKqqKqKWVUwW5+XH1VU38yqSkFpKQWl5T9cH8qz74rgBq2W6KAgYoNDSIiIIDE8ktaRkSRGRNI6IoIw/wBPpm1jYMdELmrXkiUbd/LSD+UXVjuZk89d737G2L7JPDDiUvx0tutifGwE/7l9KA8t+gqA/368hi5tm9ExIbbaOmJjwxgyOInvvk+loKCEpcs3ccekS+g/tAvfL99McWEJf+85gV+AgVJjmRxeLoQ478mguxF6afjVKIpCRkYGsbGxTnzRExYNvR19JX9v5uGputwV19U4zpZ3tJyvrDuNQUNvS2/lr6rlP3uYFQXl7CDcMhhXVAWTWSEjM4PIqCag0WBSFMoUM6VmM2WKQqnZRJlZKX9tNlNiNp+bX+F5cZmJIlMZxWVlFFV4lL8upchURmFpGfklRopMJrtyL1MUThYUcLKggJ3pVc+jjgoIJDEigriAQDrFxdEmsglJMbG0Cg/3yB5yg07HxP49uLxzW/7z6Wr+OHgUgKV//Mn2wyeYP3Y4IZXKXN67A2OHdGfp6u2Umsw8/OpXvP/4TYQEVj0sHeCWm/vz40+7MZkUPv1sM6Nv6M2wG/vw/fLN/8/efYfHcZyHH//OXke5QwcI9l7Eqi6qWbIsS7JlyU1yL3FsR6HjJE4cl1iKW9x/ceyEiR07cq+yHcmSLFm9UxRJsYi9AySIXq73nd8fC97hBIAEDgfwALyf5+Gjvbvdd2b37kb3YmZnAHj0D9uYuWQGx3Y1c+pwO6lkCrtDfnYKIaYnaf2EEEIIcc4pZY3HMYYZTWKaJim3h7qysgn7411FdTWhZBJ/LEpfPIY/FqcvFqU7GqErcvpfmM7+/3ZHIkOOT+iJRelps5bN+tPxo5nnfS43q+rqWVVfz6q6BlbX19NY7i3Yecys9PHDv3grv9m8i2899AyxZIqDbV28479+xd9eeyHvrsvtyf747VfxyuFT7D1m3d/97796ms/9xfVDxm5oqOANN63lvj++TCyW5JFHX+Ftb7mI2QvqOHG0g91bjnH+eQ0c29VMOpWm9Wg7s5fOLNi5CSHEZCJJtxBCCCHEEJw2GzUOBzUlJSPaP55K0eTv43hfL8f7+jjW15vZbg+HBu3vj8d47kQTz51oyjw3o6ycCxtncsGMRq6aO495FZVjOgfDULzzsjVctGAm//CrP3G4vZtoMsXX/vwicWz85WsuzuzrsNv4yl+/kXff9TPC0QR/fGY3b7pyJasXNw4Z+823XsB9f3wZgAcf3Mnb3nIRr7l5LT/7ziNW2SWezL7N+1ok6RZCTFuSdAshhBBCFIDLbmdJdQ1LqmsGvRaMxdh+7CgBm8Hhnh52d7Szq6ONrkgkZ7/WUJD7D+7n/oP7AVhd38B18xeyfvYc1jbM6F9NY/QW1dfw679+J1994Cl+v2U3AN/+8/P0RWP8ww1XZoa5N9b6uOOtl/Otnz8JwNd++hg//fx7sNsGjy6YM7uaNatns3PXCZpPdPPK7pNccNXSTNLtD2UndZW1uoUQ05kk3WNgmiamaY5qf631qI7J97h8yxK5Jvt1LJb6T2Q9xqusQsUda5yJakeK5bMzFUz2a1ks9Z/s7YjHbmdxRSW1tbUYi6wEVmtNWzhkJeDt7exob2VHWyvRAfeS72pvY1d7G//24vM0lpdz69Ll3LJkGWV51M9lt/Evt1xLo6+M/3jsRQB+9Mw2+sJR7rrltZnE+s2vWcX9z+7hQFMHh0908etHXuZdrz9/yOty042r2bnLumf8z4+8wt//7fV4K0sJ9IZpPt6d2a95f8s5/wxNZsXyPcxXsdR/srcjhYw5lliS02SNtF6SdI/Cxo0b2bhxI+l0GoDOzk5isdiIjzdNE7/fj9Z61BMgjfa4fMsSuSb7dSyW+k9kPcarrELFHWuciWpHiuWzMxVM9mtZLPWf7O3IcDFtwJoyL2vKvLx34WJSpsmhvl62trfx+IkmDvb1ZvY9FQzyX1tf4r+2vsQyXwVvWLCI18+dT5nTOaq6vGn5XOKhAD94cS8a+L9te+noC/C5G9bjtFv31H/4jWv55H89gtbwg/97gbULqqgqdw86hyWLK3G77cRiKZ5+Zj/vuG0NKy6czYuP7iceTaI8bnQ0xpFdx+jo6BjzdZyuiuV7mK9iqf9UbUcmOpbkNFnBYHBE+0nSPQobNmxgw4YNBAIBfD4ftbW1eL0jn/DENE2UUtZfuUf5AR3tcfmWJXJN9utYLPWfyHqMV1mFijvWOBPVjhTLZ2cqmOzXsljqP9nbkdHEbGxo4Oply/kH4GTAzwsnT/DIkcM823ycdP/Savv9fezfvpXv7d7FbStW8v41a5nl9Y24LrddvJrFc+fwmd89Qipt8vyRk9z1pxf47nveSJnbRV1dHbde3cr/PfUK0USKnz+6hy//1Y1DnsMVly/lscf3EIkkON4UYv11q3jxUWt4fGlDFaFjp2g93EFtbe05X898siqW72G+iqX+06kdGc9YktNkud0jWxJSku4xMAxj1G++UmrCjsu3LJFrsl/HYqn/RNZjvMoqVNyxxpmodqRYPjtTwWS/lsVS/8nejuQTc05FJXMqKnnHytV0hsPcd2Aff9i3h/3dXQCEkwl+tPNlfrJrOzcsXMxfrLuA82cMPfHZq+tyw+qlVJSW8PGf3080kWTLsZPc8dP7+OFfvBWP08GGt1/J0y8foScQ4Ymth9i85zwW1pcMOofrXnsejz2+B4BHH9vD3214XbYgtzWZWjQUo/tUL3WzB9/vLkamWL6H+SqW+k/HdmQ8YklOYxlpnYqv5kIIIYQQYpDa0lL+8vwLeeCd7+XHr7uRd563CpfN6j8xteZPhw/ytnt+xVt/+0seOnwQrYdawCzX+sVzufsv34bPY/XW7Ghq5R9//SdSaRNvqZuP335VZt9v/fxJ4snBa5dfcP48qqpKAXhh0yG0oViw3Er8YwkT+u8Vb9pzYmwXQAghJilJuoUQQgghJpkllVV86ZrreP4vPswnLr08Z1mz7W2tbPjT/bz1t79iR1vrWWOtnt3A//7lWyl1WfeGP7XvKF+49zG01ty4fjnnL50FQEunn98/tXfQ8TabwY2vXw2AaWoeengXF161NPO68li93U17T+Z/wkIIMYnJ8PIp6Os7n+BYsJt4PI7rsAvF6O+fKsQtV/mUOzjGGI8f44lorYnH47iPuPOuTEGuQ54htNbEY3FcR10YaoxDosdwrEYTi8XxHHOP6T0ZyZFaa2KxGO5hy8q3/P64x8d2DmjrWuQb5/T5eZrco/psaTSxaAz3gOPOVLzWEItFcTd5ht2vGL7jhWisCnGH6ZmuhXXto7hPeIbdrxja3OGO1mii0Siek8PXPxNjHN8PrTWRaJSSk54zlmMoA7sysBkGNqWwGwa2Ac/ZVf/jVz1vU9n9DRTRQIgGI06J3YnH7sBjc+Du/6/LZs976a5Cq/KU8LGLL+XD51/I/Qf387/bt3Ggf+j5jvZW3vrbX/Ke1Wv5x8uuoNzlGjbO8sY6vvvem/mrH91LMp3mD1v3UFNWyt++/nL+6X2v5d13/Yx02uR3T+3ltusvYlZ97vrhb7hpDb/89Sa0hgcf2sGnNlzPb79vLTumSkvRobAk3UKIaUuS7iloc0cTO3tOnetqCCGEEFOWy2a3EnGbnVK7E6/Tjc/ppsLpyWz7HNZ2pctDjasEIx6nWpsY4zDQ0GW387YVK3nr8vN4qukYX3/uGQ72dKOBn+3awSNHDvP511zL6xcuHjbGpQvn8LXbXs8//vpPaA3/89RL1JSX8O7163jX68/nZ3/aSipt8p/3PMfXPnZzzrENDRVcdOECXtpylPb2AFE0FdVl9HWHUCUeUIrmfZJ0CyGmJ0m6hRBCCCFGKZ5OEU8Pvr/5bGxKUesuo95TTp2njAZPOQ0lXuaUVTKvrJI5ZZWUOYbvkT4bpRTXzFvAlXPm8ZOd2/m3Tc8RTaVoD4e448E/cuOiJdx15WuGPf6G1UvpDkX5yv1WL/XXH3yalbMa+ODNl/DAc3vp7Z9UbeehFtYsnplz7BvfsJaXthwF4E9/3sUVN6zigV9sQhkGqrSE5n0taK1lBnMhxLQjSfcU9IMrbyORTtHV1UVNTU1eM/2NZPKVs8YYc4TCxLAC5RfJ1CZdXd3U1FSjxjg8G6xhmmOOMYoQpjbp7uqmuqZ60PDygtRlpPUwTbq7u6murh70eSzEZ21gXfSAstSoP/vD18U6hx6qq6vO+J062+mYesC1GOYzdab3xjQ1PT3dVFVVYxhn/uE6MIppmvR091B1lvq/ev/K6qoxD6MtSFtQoM9JIYz2u2O9Zz1UVVVl3rNCnE4hvsNWnDMzTZPenh4qq4b/7EzE/zO0Nunp6aWqqnLY9lij0VqT0pq0aZLSJmltkjKt/w7czvxXm/376szzSTNFbyCAze0klk4RTaeIpZNEU0liA7aj6SSxdJJQMkE4lRjReaa1pi0apC06/NquNe5S5pZVstRXx5qqRtZUN7LQWzOq76LdMPjQugu4YeFi7nrqcZ48biXDDx0+yAsnmvjEugt5d13dkMe+e/1a2gNB/vfpraRNzT/9+k/c8zfv5qNvvoyv/eRxAH5w7yb+85NvyznusksXUV1dRnd3iE2bDvP5T76RB36xCQBVVkqorYNgTwhvdfmIz0MIIaYCSbqnoGp3qbWmnStKnae8KKfXnyxM08TujlNX4puU19E0TVzhBHWlFed8XUxPJEldWeWErItZEk1RVz6y5HI0cUujaerKB//hYLRxysYQxzRNymNp6ryjO940TTpiJnXekf0hbrT7i+GZpklHAuoq6ibltTRNk46kQV3lua2/VQ/bhNTDNE06Ojqoqxt5WUkzTSARI5CM4U/E6EtECSSs7d54hPZoiBN9XfSZSdpjQbpj4WH/0NAVC9MVC7Ot6yS/PPIyAGV2J6uqGllb3ciqyhnMNJ0MnTLnmun18sObb+WBQwf4wlNP0BOL4o/H+ZcXn6fbTPO3l6wfsuf546+7nG3HW9jR1MrJ3gD/+Ks/8e/vfAM/vn8zbT0hXtrTzI6DLaxdku3tttkMbrphNT/7xQuYpubwqR7KfB5C/iiqfy3bk4daWSFJtxBimpGkWwghhBBijByGjWp3KdXu0iFff3UinzTTdMbCdESDnAz7aQ710hTqoSnUS1Owl45YKOf4UCrBpo7jbOo4nnluxk4vlzfM4zUzFnFF/XzKne4hy1ZKcfOSZVw+ew5fePpJ7j+4H4DvvvQiezs7+fp1r6eyf4bx0+w2g2/efhNv/89f0BeJ8fyhJr7z2Avcdu15fPd3mwGrt3vjP+X2dt900xp+8atNmVnMF69uZPuzR1A2GzgdtBxqZcWlS0Z1bYUQYrKTpFsIIYQQYoI5DBuNJV4aS7ysrZ456PVgMs7unlZ29ZxiR/cpdvWcGjQkvTUa4HfHdvG7Y7uwK4MLamZx9YxFvH7WUuaVVw2KWeUp4d9ffxMra+v42vPPoIHHjh3hLb/9JT9/89uZ6fXm7N9Y6eU777mZD/3w96RMk5+/sIO/u+ZCZtX5ONnhZ8veZrYfOMm6/iXFAOrrfFx80QJe3HyEzs4gay6el3lNud2cOtw2tgsnhBCT0OQb5yaEEEIIMcWVO1xcVj+Pjy5fz39f8Taef9PHef7mv+G/Ln8rH1l6KedXzMBty/adpLTJ5s5mvrHrCV77p//mTY/8L9/f9wLtr0rUlVJ8aN0FfOvK11Dp7l8/29/Hbb/7FUd6ugfV48L5s7jz1mszjzc+8zJvuOa8zOMf3vfioGNu6F+zGyCYNrNle9y0HD77uuFCCDHVSNIthBBCCDEJNJR4ef2sZXxy9TX8x5qb2HrL3/Pjq9/JBxZfxLyy3J7tPb1tfGPXk1x1/3/yiRfvY9erlhK9bMZM7rv9XSyotNbbbg2FuP13v2F3R/ugct920SreeekaAJJpk2eam5lZZ/WKn+7tHuiiC+fjcNgAOHy8G3epNRu7crs5eVCSbiHE9CNJtxBCCCHEJOSy2bmyYQF3nn89j7/hDh676Q4+teZaVlY2ZPZJaZP7mnbz5kd/xG2P/4SHTuzD7J9tvrHcy6/f+g7Oq7WmZOuJRXnXH37LSy2D19P+xI1XMrPSSrS3Hm9h7rLsNG6v7u32eJysWT0HgO7uMHNXWsPnld1Oy9HOolqNQAghJoIk3UIIIYQQU8D88io+suwy7rv+Qzzxhr/mjuXrqXRmJ0jb1nWSj73wB974yA95svMYptbUlJTwi7fcxoWNVmIcSiR4/72/56njx3Jilzgd3HXrtZye5/zRQ0fw1ZUAVm/3pleO5+x/6aULM9vO6uzkctGUJtiTO0mcEEJMdTKR2hTUFe8jnkrSnegjHbWddS3f4Y1tbV4rwthjAIxxmWArRh51MU2TrmQAYo6CLlFTiOsykmtimpqeZBAj7jrD56AQ7/PZ69GXCmGLu4etR6E+K1pr/KkwjkSwoO+ZNk38qTDORHBE638Pdz6maRJIRXAmQiOq36ujmNokmIrgSoaGXed7UAylME2TYDqKOxke8ZJho9l/pAry2S+idmUk3x/TNImm44RTsSGvZWHOpkDXZYgQ2jSJmQli6ThKj/AzNw7timlqEmaSeDqJoUcWP996mNokYaZImEls2LApY8Tft2Ixt6ySf1x9DR9bcQX3Ne3mRwe3cCjQCcChQBef2/sEvzi1h79beRWvbVzMT255K3/9pz/ydNNx4ukUH3ngXr59/U28YcnSTMz1i+byocvX8MPndwIQLdPoDuu9+n+/eJJfffl9OOzWsPL1ly3mPzc+BkBThx+NtZ9yu2k91iFrdQshphVJuqegL+z+EfuDzdaDo+e2LlPGkXNdgTEqlvofngJlFSruWOPke/yhcd5fDG+yX8uD57oC/SayHgPKUihsyhjwL5uMn37Ormy4bE5chsP6Z3PiNpy4bA6choN0LElVpAK33YnLcOK2OfE6SvH1//M6Simzewqa4LvtDm5fuI7bFqzl2bajfHfPs2zvbgFgX187H33uHtZVz+TOda/j+2+8lU/8+U/86fBBUqbJxx9+gHAywW3nrcrEe8cFy9nb3ssLh5vpjcaYO9dLV1OA5rZeHnxuD7e+xppEraHex5rVs9m56wSdXSGcHjtEUyiPm7ZjHSy9cOGQ9RVCiKlIkm4hhBBCiLPQaFI6TUqnxxao58wvGyi8/Ql4lbOcGlcFNa4Kal0+alw+6lxVNLqrR12sUoqrZizkyoYFPHXqMN/a+QT7g10AbO9u4a2P/ZiPLLuMb15/A+UuF7/Z8woa+OcnHmW218dls+dk4nzixivY9J+/RGto11GUDYw0PLxpfybpBnj99avYuesEAK56L4njPSiHgyO7T3D12y8b9TkIIcRkJUn3FHRB1TJmuKuJxeO4XS5UHmMoCzHFiS5IFApSmXzrotHEY3FcbhcKVZBzKshVGeEkNBqIx2O4XO4hB1lO2PusIR6P43K5CjeWdqhitLbes3gCl8uZ19DS4c5Go0nE4zhdrrPGPeM10Zp4IoHL6RzB+ObBcfSAazmSr/bpj4pV/wTOEV6XV+9fNJ/9QkWZ0HZFk0gkcDqdvPoLULB2sgCGm9xKA8lEAofTedZPTuHOZujPfiKZwOlwjuyzP5bStSaZTOJwONBo0trE1CbpzL/0gO3sc8n+IenJMSTmJpq+ZIi+ZIjmyOCZxE+rtnuZ197A7JJ65pTUs6R8NvPLGnEaZ/5pp5Ti6hkLWWaU8UrKz//b/TSHA11o4Pv7N/FYy0H+5fzr8djt/HjndtJa8zcPPcB973wPM0rLAFjaUMvbL1rFb196hVgyhafWjm5Lsf3gSTp6g9RVWkPHr7xyCd/57iPEEynidqv3XgEH+xNxIYSYLiTpnoI+MP9GTNOko6ODurq6gt6POd1M9utYLPWfyHqMV1mFijvWOPkeP9rjiuWzMxVM9mtZLPWfTO1IWpsk0kliZoJ4OkncTBBNxWnr7sDjLSWpU8TNJJFUjEAyjD8ZzvzXnwxltmNmYtgyulMBunsDbOvNjoG3KYP5pTNYVDaLZd45XFS1nDp35ZDHK6W4buYSrpm5mLsPbObbu58maZocCXbz/qd/xSdWvYar5szlmeYmemJR7njwj/z6Lbdljv/Hm65i0+FmTvT4iao0Tg84ovDo5oO8+4YLAPC4naxe3ciWrc0kUiYOlx0VT9Fy4izd/UIIMcVI0i2EEEIIUUA2ZeCxu/DgyjxnmiYVURd1VSNL5LXWRNIxOuN9dMX9dMX9dMZ7aY12cyLSQXO4nYgZzzkmrU0Oh1o4HGrh4bbNAMwtqefCquVcVLWMVb4FOG2OnGMcho2PLl/PlQ0LuGvbw2zvbkED/++Vp1hb1UiDr4Q2f4TdHe186vE/85m1FwJQ6nLyhbe8jr/44e8ASJaDPQa/e3wHt79uHXabdY7nr5vNlq3WPDOmx4ERT9Hnz623EEJMdZJ0CyGEEEIUGaUUpXYPpXYP80pn5Lxmmibt7e04K0toiXVxNNTCweBJDoVO0hxuwxwwuL4p0k5TpJ3fn3wKt+FkbeVirqu7gIW6LifmisoGfvva9/Nfe5/n27ufBmBHzylcJTacCQeJKDx46CAlKL76+psAuGThbK5dsZAn9h5B2xTJUk1Lp58/v7ifN1y+AoC1a2ahlHV7gC5xQF+UFAb+nhC+qrLxvIRCCFE0JOkWQgghhJhklFJUOsupdvtYXZGdCTyWTnA0dIqXew+ypWcf+wNNmSQ8ZiZ4sXsPL3bvodzm4XWhi7ix8dJMUm8oxcfOu4JVVTP48vZHORrsJm6msflMDG3HjNm459ABrl28lNcvWgzAP9xwJc/sP0bKNEmWgj0CP33wJW5avxwAn8/DsmWN7Nt3CtNpR9sUKq3Z/Nhurr/t0gm+akIIcW5MvpvLhBBCCCHEkNw2Jyt883jPvOv5zvl/yz2Xf4nPrXgfr2+4mCpndm3sYDrKH1qe4cNbvsEntv8Hz3e+QlqbAFw9YyEPvP4vuWm2lTintQZfEjwpAP75yUfpikQAmFdbye2X9M9YbiiS5XDsVA9HTnZlylq3dm5m23Rbw9u3PVssa9AJIcT4k6RbCCGEEGKK8jpKubpuHf+47J386rLP87XVf8XVtWuxK1tmn1f8R/n8nrv5i81f5f9OPkMkFcNls/Pvl97KOxeuA6zZ4JU3BaVJeqIRPvv4I5kZ7//6tZfidVv3r6c8kLbDk9sOZ+KvWzsns3066T70ysnxPnUhhCgaknQLIYQQQkwDhjK4oGopn13+Xr67aAN/vfBWZpdk7+0+Fevivw7/H+/f/K882rYFQym+dMGN/PWKyzP7qLI0lKd47Nhh7tm7G4CKUg8fvfaS/h0UCS88ufVQ5pjzVszE6bTuaDTddjTQdqqPaFgmVBNCTA9yT/cU9OOjX+RU9CimaWJ0F+jvKnms9X3GcOO5WHOBnK6jaZoYPYW4jgW+hiMJpyFtmth6jBEVX/j3JRsvnU5j67WdYd/RRBueBsy0idFrjGD/0Z3vSM7h7Gt4g5lOY/TaRlb6q99orbP1GM33MnOcfcTre58u58z7F/67XOztw2jrp4F0OoWtzz70kQVuX6Gw74oG0qk0dn/hfjLk8x5rNOlUGpvfNiGfEauskX1fzk5hYGCmNK6QC5uyYyib9Q8btv7t7H8dOJQTh+HEYbhwKCd2w3rsMjy4jVJiySTOhKLU4cVpuFGjrGi5zcMtM67klllXsq3nAL87+RQv9y8/1pcM8Y39v+R3J57iLxa8gX9Y9RqqnCV8ecej1tmUpNGG5ovPPMGls2Yzx1fBuy5bw6827eBkbwDTpTjY1sWh5k58bnA67aw8byYvb28Chw3tMNBJk/07mll3+eJCXGAhhChqknRPQdF0mHA6YD1In9u6TBnmua7AGBVL/SeyHuNVVqHijjVOvseP9rhi+exMBZO9PS6W+k9kPcajrFQBY/Va/7EpOx5bGSW2ckrs5Xgd1fgc1fgcNf3/qqlw1lBi8w5Kzg1lcFH1ci6qXs6x0Cl+dvzPPNu1C4Cj4VN87pUf8Jq6dfz1ojfjc7r49EsPkkaj3CYRHeUfHnmIX7/1dpx2O+9ev46vP2jNfJ70wK8efZm/utkann7JJQutpBswPU6MZIy9Lx+XpFsIMS1I0j0FeR1VVKbqrV4q29l6qc5On32XUQYsbERd+Bpy+qwzvaa2kfSani1aIY0sotZgmmkM4+yfg0Jfx1e/zafrMYaII97TNM2zroObz/mOJG4h4wxZRz3g+NF8KDOfhZHX/2z1HI9vXqGjjk/7MHrDXctxqV/B21jQ2kSpQt2Rln/9TK0xXtWYjdd7rLUede/x8LFMTEzSupAZd1Zapwil+gil+uAMI7bdtlLqXXOoc83Ck6xgUXgls0sX4zTcAMwva+SulR9kS89+fnLsIQ4ErfW1n+rYzraeA3x88dv46srruHPvE8TNNMqTZltfMz/cvpWPXnAxbzp/Bd9++DkS6TSpEvjz5v28/eql1NXB+ssW89/fewIAs8QBgRj7dzaPy/UQQohiI0n3FPTueZ/CNE06Ojqoq6srSJIwXU3261gs9Z/IeoxXWYWKO9Y4+R4/2uOK5bMzFUz2a1ks9Z/s7cjpmDW11aCsRNnExNQp0jqN2f8vrdOkdZKEGSelEyTNBEmdIGUmSJhx4maESDJIT6gT7UwRNcNEUyEi6SDRdIiEGRu2DrF0mKbIPpoi+wB4JnQPBgb17rnMLl3CnJKlLCxbzUVVy7iwcimPtW/lvw/fSzAVIZiK8K/7fsq1FWv58gU38MktD1pBy1N8a/vTvH7hYuZVVHLjmqXc9/JeMBSREs2DLxxk+aJ5zGysZO7cGpqautAuO9pQ7N/RXNA/bgghRLGSpFsIIYQQYoIYyoZhGNhx5B3jTH8USJgxAske/Iku/Mku+pJdBJLd9CY66YyfwJ/szo2FSWvsGK2xY7zU/WcAZrjns9R7AUvKz+cHF/0T/334Xp7u3AHAE307OJZs592LV/KLQ7tRCtJlCT75zIPc86b3sOG6S3l41wHiKau3+/4th9hw+zWUelysv2wRTU1doBRmiYOQP0rL8S5mza/N+1oIIcRkIEm3EEIIIcQU4TTc1LgaqXE1Dvl6LB2mLdrE4c69BO2dnIwepD12Aj1gAofTSfhTHb+jzF7BKt8lLCy7jF80bSFupjgWbqXV6OaGuct5uKkFpWBbpIl7Du7i7UtW89fXXca3H34OlMLvSPKnF/by9teu47JLF/GrX78IWPd120IJ9m1vkqRbCDHlSdIthBBCCDFNuG2lzClZhttTlekpj6ejnIwe5lhoNweCL3MqeiSzfyjVx0s9Vg/41bUNHAs6ORzRxMwEB2M7WVbVwP6eJEopPvfyn7hy5nzefdlafvjUFoKxOGk3PPzSft7+2nUsX9aI224QS5mYHgdawf4dzbzuLReeq8shhBATYvLdXCaEEEIIIQrGZfOwsGwV1zW8kw2Lv8mnl/8vb5m1geXei7Gr7DD4vmQble5mLq5qZ6anD5tKk3C0UV8eBTQpleZdj/0ct8POuy5bYx2kFC+3tREMx7DZDBbNrrKeNxTa7WD/DplMTQgx9UlP9xiYpolpjnw9HdM00VqP6ph8j8u3LJFrsl/HYqn/RNZjvMoqVNyxxpmodqRYPjtTwWS/lsVS/8nejhQy5ni3I6U2H+sqrmFdxTXE01EOBLfxUs+fMxOwaRLM9CSodwU5FfPSjkarFB2BcppiPXx71zO859Lz+eFTW0hrTcKjeeilfbzt6jWsWzOb3ce6rHq47Bw/0Eo4GMVT6srvYkwTxfI9zFex1F/akcLEkpwma6T1kqR7FDZu3MjGjRtJp62FOzs7O4nFhp8l9NVM08Tv96O1HvWsw6M5rjX5/4iZTaRTKY632FFjWuyqX8EnFi10wMLGO33NtNakUimaWuxFNrvqyOqiNaRSSZpaHCNYOm4c35P+69jcYmfMa9idjWZAWWeq3ejqcfpaNg97LUf6nmSvxZk/U0O/NvLjX33c2eo/2v3H430cn+/xuaY1JFNJTgy6lsXdDmbiaU0yleRki2P8v79n0n8drXqM1/vb3/ajSSaSnEw6xlhO9thCxFQ4UMoO2kYiYdKeLMVQDpRyoLADdlT/PwMXhirBoCTzX5sqwaAUTA+BQGDEvysaWMKbypbQ6jjG1sCfadK70ZjYDZM5JX3Uu4K0OCtQStPh9/Jf+59jlbuCK+bN5OljJ0EpfvLcNq5aPoMly2vhXiuu6bZj9mm2PLebZetm53VNpot8f0MWi2Kp/0TWYzzKKmTMscSaqJxmrPWcCMFgcET7SdI9Chs2bGDDhg0EAgF8Ph+1tbV4vd4RH2+aJkopamtrR/0BHc1xJ9qOE03vAhuFW/K2OJa6PTdskNBM3mtQLPW3QXyi6jFeZRUq7ljj5Hv8aI+byPdsqpvs19IGsWKo/0TWww6xQnesFDKmHSJ5xlI4sHkqCOpaHFThNKpw2uvw2Gfjts/CY5+Dy9aAoXJ/JtaYNTQ45+HwwVNd97Cj72k0GpctzYKybhrcAfY76zjUWc+d+5/kZ7e8k6e//UtQ0BQOUlLu4+Ira+Cu+8HjspYOA9qOB7jq9XVjvyZTWL6/IYtFsdR/IusxHmUVMuZYYk1UTjPWek4Et9s9ov0k6R4DwzBG/eYrpcb9uOLo2xFCCCFEMdIkSdFJKNkJyaH3UTgoccylxLGQMudSfK51lDlWopSiyl3H2+Z8nCtqb+HPbT/jYPBlAErsSdZVt1DlirClZQ6/PbWLRk8pp2JhtIIfP7WNj7/hCkrTacIASqFddvZsPY5xR/H9mC42+f6GLBbFUv+JrMd4lFXImGOJNRE5zVjLmggjrZMk3VPQ+TN+ccY1PEdL60J3KUyeeKZp0tnZOaa/rulzeL6mqQfUfyL/HJNbx7Fex9F8Bk1t0tXZSU1tLYYarqzRvydW3C5qamuGiDua98Skq6uLmpqaM1yL4eOZpklnVxe1Zzz+1dE0pqnp6uqkpmZkn4XR7j92xd0ujKUdNLVJd1cX1TUDPzvFfb4DmaZJV3cXNdUj/8y9WiHaQdM06e7uorq6Zpw+k7ltf3d3N9XV1QU7Z22adHV3U1NdjconpjYxSaJ1irQZp7ung4qKclBptE5gkkLrJKZOonWStI6S1mFSZpi0Gc5sp8wAiXQP8WQnKfxAepj6JwknDxNOHqYz8uf+ZxUuNY++noup8lxBtftS3j//cxwL7eEPJ79PT+IkSsG88l7qFoX4fVOK1y27gFM7jgHwx+37+PgbrqDO6+JYfy+96bbzypajJBMpHE75WSqEmJqkdZuCDOUEZWIoZ/+/Mf5VaBp3nStMDOXBZpQU5V/XzsbExKbC2I3SczucCxObimI3yidkOJdNxXAY3oKWZcWN4zB8Y4prKhObSuCwVeQVx1QmdpXEYasc3ZCu/uOcIzxutPuL4ZmmiV1pXLbiHBp3NqZp4lAKl33sf8Qdez0M3BNQD6sse0HLMk0Tp3IUJKZpmkSNWirc+cU6/Yf52toaTEIk0t3E021Ek81EUyeIpk4SSR4jkjyGzukK18T1MU6FjnEq9BvAwOc6n9qSa/nogr/n/taH2dX3KIayer2vm7ePQx0OVLoMbVO0hkMc7+xl0Zxqjh3vs+ricRD3xziw8wQrL5o/pusihBDFSpJuIYQQQohpSCkDh1GBw1ZBKQvBc3nO66ZOEU01E4y/gj++A39sO6HkQbK94yb++Fb88a3Q+w1WeK7C5VvPMz0vUWpP4TBMltbvgEsXc2BLAwD/9ecXuGhpI4/uboUyj3Vft6HY+eJhSbqFEFOWJN1CCCGEEGIQQ9kpdSyg1LGAhrJbME2TtvbjOLxN9MZeoCf6DJHU8cz+3dFnqOAZriqr5EjcS0CXgDJYvugQdkLs2bqQx/Yd4ca1F6K6/OgyDyiF6XGwZ9vxYeshhBCTnSTdQgghhBBiRAxVQrXnampLrwH+mXDyKF2Rx2gJ/ppYqgWACmcvFzh7iZl2WpMVNMerWbyolVJXgi0vLGNnMozq9qPnWb3fpsdB8+GOc3hWQggxviTpnoJ09AFId+AhBJEydMHWVS3+dXkLHk+beAgX+DrChF1LrfEQhEh5fvUv1DmbA+oxLvdi5q4J7iYI0TzPeaiYANocEHcM5zDW+uUcP4p6jLhcNcr9R2IytB3jGLNQn50BIQvvDEFNjZsARL3oUU1gVuCKmhoXQYh5x///a1rjwg8xXx5lDRfTxEWgv/6j/RwMbo/yj3X6+AjEq9GGA3AAdlAOUPb+bSeosv5/Jahhyil1LKDU9xFme/+CrsgTnAj8GH98GwBuI8V8VxeznD0cj9dizDZhPfxxewnKHwbTBMNAu+x0t/gJB6OUlntGfz5CCFHkJOmegnTkx5DcRTlA6NwvqzrZTfbrWCz1n8h6eAGChS+rUHHHGiff40d73Hhdx+losl/LYqm/DyAwMfUYj7IKGXOssXwA/pEfr1UJqFKqcEOPF9PwglELtjqUUYcyaql1NFBb9x8Eky0cD/yY9tBD2AwThzJZ7G6n0dFH6dw4AEcWlGMPRsFXinbY0Iai+XAHy9fNzfOMhBCieEnSLYQQQgghzkxHQEesH46pV730ql3LlJeV9nk49FraoscoL+khpKHUFuei0qM0LOrD9dWFHP6XEKav1IrhtNF8uF2SbiHElCRJ9xSkyv4ene7DH/Dj8/pQBRmGNx79Cue6z+TstE7jDwTweb3DDq3LI2qB4pw9ptZ6QP1H+zkoXD21qQkEA3jLy1EFX1/31Wvhni7Lm39ZQ5y61iaBYNA6h7w+C7ogcXKPH/n5aT3gugx7nB7l/iMqeQzHTvaY/ZHH/NnJiVaQOo0mpjY1wVCQ8rLRfH8LX09tmtl6jPP/17TWeZZ1tpghysvKxlx/rc0BsfJpR9IEQ32Ul7pRKo3WKSAJOgmkQKdAx/oT7RDosPXPDGOaQQwigHmGAgKQ3MXSUlhq5dSkNYS0JmBCta2bhvP9bPrCPJ77QS3aNDBddpoPt+dzOYQQouhJ0j0FKdflaNMkHugAdx1qEq4LWywm+3Uslvpr0yQW7MDrGf96jFdZhYo71jj5Hj/a4ybyPZvqJvu11KZJNNRBecm5b0cmqh7jUVYhY441Vub4Uuv4kf4JwDRNujo6qKutRakImB2Q7rT+a3ai0ychdRxSx8A8lXOsTYFPgc+A2cByR4pVlx5mzewg3/v89ZguO02HJOkWQkxNknQLIYQQQoiRUwpllINRDvaF2acH7KJ1FJ04xtGWJ9jW9mcuqGtlQVkg87pDwQw73Dq3nRt/+HPufXgFm+5PI4QQU5Ek3UIIIYQQoqCU8qAdyygrqeKB9no+s7WZRfNbubzxJFeUtbK+vA2XYQ3Hd9k0t79hD7det49UL9jKP4yyzzrHZyCEEIUjSbcQQgghhBg3b1t+Hs+faOZoUx2pEs1zwRk429LcVraP19U3U2fTGApcLhPiv0LHf4v2vBlV9gmUreZcV18IIcZs8t1cJoQQQgghJo3XLVhEudOFadro7fQBkNA2fty7iu8eOo/nYgYnUtZka5Y0RH+H7roeHf4pWhf/xKtCCHEmknQLIYQQQohx47bbedPSZQD4OzxEo04A7HbNi12LeL5nIfuTNjbF4VgSUrr/56kOoYNfRvf9FdrsPVfVF0KIMZOkWwghhBBCjKv3rV7Xv2UQbK/G7O+8ttck2bJ5GS+H5xEyHTSlFZvjJl26Mntw/El01y3oxJYJr7cQQhSCJN1CCCGEEGJcLa6u5so5cwEIBgz8vSUAKAU9s2wc2TKLreH5xEw7SRS7430cZQWoKiuA2YbueS869N8y3FwIMelI0i2EEEIIIcbdB9de0L+l8J/ykkjZAHB5kxxom0Hn0Sp2ROaS1NbzzbF9HGQdOC7uP85Eh76N9n8KrRMTfwJCCJEnSbqFEEIIIcS4u2ruPOZXWMPG06aN7u6yzGvOC0McuX8uwaSbHZE5pLW16vep6BMc1otRZX9DZiXw2L3o3o+idWyiT0EIIfIiSbcQQgghhBh3hlK8f83pe7sViXYPwajLes2hia9J0fpUA4F0Ca9EZ6P7E++ToV/SzjxUxXcBa38Sz6P7/h6tUxN/IkIIMUqSdAshhBBCiAnx5mUrKHE4gP7ebn8padNKrtV5MU5sbsAVqKM7Vc6+2IzMcQe7v0DUthRV9RNQpdaT8cfRgbvkHm8hRNGTpFsIIYQQQkyIcpeLNy2xlg/ThkJ1OfBHPAAoA7g0SvD+87ArJ63JStqS1rreKR1kV8dfk7YvRVX8J2Al7kR/hw59+xyciRBCjJwk3UIIIYQQYsLcvnJ19kHYhj/izvZ2r45xpDXMa+tvB2B/dAYx07r3O5I8wpHeb6Jcl6N83yRzj3f4e+joAxN5CkIIMSqSdAshhBBCiAmzuq6eOd7+Hmy3gdFjz+ntDl7Wy/qam2n0LCCNjZcjDYATgJbgr+iOPovy3IQq/+dMTO3/LDr+/ISfixBCjIQk3UIIIYQQYsIopbhp8dL+B2DrtOMPe0il+3+WLk/wzIFd3Nz4YQCipoumxJzM8fu6PkMy3Qcl7wX3m/ufjaH7NqBTxyfsPIQQYqQk6RZCCCGEEBPqDYuXZLZThoKwQW+4JPPc3U1/YnbJEpaWXwjA4ZgTw2Yl6ol0Jwd6vohSCuX7Eriusw7SEbT/H9A6OXEnIoQQIyBJtxBCCCGEmFArauuYd3rN7jKFo9VOMOoikbIB0O7uZpf/CNc1vLP/CMWWUBl2wwtAR/hBuiNPo5QT5fsW2OZZuyVfQYc2TvDZCCHEmUnSLYQQQgghJpRSKtvbrYCIAQmDvrAns889zU/S6JnPSt96APqSMdL2GzKvH+r9OqZOoowSVMW3ALv1Qvj76OS+CToTIYQ4O0m6hRBCCCHEhMvc143V223vshOKuTL3dm/u2UtTuI3r6t+B6v/J+nzvccqd1uznkeQRTgV/A4ByrEaV3XE6Gtr/abQZmbiTEUKIM5CkWwghhBBCTLhl1TVU9ufFqVJw9NghrTIzmQPcc+JJat2zWFt5NQDRdBg/l2ReP9r3HyTTfutB6UfBtrA/4D508EsTch5CCHE2knQLIYQQQogJp5RiTTQ7eVrKprH12QhEXZl1ux9v30ZX3M+1dW/HwLrf+/mel6kpudE6xuzjuH9jfzwnquK7oEqtgNE/oJMHJ/CMhBBiaJJ0CyGEEEKIc2J9SS2YGoBUGSi/Da0NAlG39ZxOc+/JZ6hyNXBhlTVLecKM0ZlejqGsfU4GfkEkeQwA5ViMKvtYf3SNDn1nYk9ICCGGIEm3EEIIIYQ4J+Y01OBuCgNgOsEZtYMJgYgHbeXi3H/qBcKpGFfVvRmj/6frpp7nmVn+fgA0KQ73fD0btOTdYNRZ2/FH0clXJux8hBBiKJJ0CyGEEEKIc6KyoYKSnd3ZJ2wKI2AjbRoEYy4AIukYD7W+SKWzjtUVVwIQTYdoTtTitFnJdVf0SXqiLwCglHvApGqgA19E6/QEnZEQQgwmSbcQQgghhDgnqhoqKN3dm3kcd6ax9Vr3bvsHLB/2h5NPkzLTXFOfvbf7ua6HmOXdkNnnUM9Xs8m15+1gm29tJ3dC5BfjfCZCCDE8SbqFEEIIIcQ5UdVQgbMrhr03AUCqBJRfQQqSaTvRuBOAzngfL/Xso8bVyIXV2Xu7m+NOyp2rAAgnD9Ia+j+gf1I131cz5ejQRrQZmshTE0KIDEm6hRBCCCHEOeGtKccwFGXbuqwnFCiHga3PDkBfxJ3Z97G2LQBcXnNz5rmtPY+zsPKfMo+P9n0HUyetUM7zwd2/r+5Fh+8ez1MRQohhSdIthBBCCCHOCZvNhq/WS/mLHZnnkqUaW481hDyacGBoKwF/sXsPgWSYGlcjC8tWA9CdaOVYNEi15xoAEukOuiJPZGKpsr8FrOOJ/Aht9kzAWQkhRC5JuoUQQgghxDlTUefD2RXD0WP1UKc9QARUTAGK3oiVNCd1mqc6tgNwVe2bM8c/3PpTGspuyzxuCf46s63sc6Ck/zUdRoe+N74nI4QQQ5CkWwghhBBCnDOV9T4APIez91wrFLZeK9kOxrJDzB9t2wrAovI1rPKtByCSDtIUTeKxzwGgN/YCfbGt2Vilfw2qf1K2yC/Q6bbxOxkhhBiCJN1CCCGEEOKcqayvAKDklezSYWm3xuifxTyRsoNpLR+2P9jE4WALAFfU3prZ/+W+J5nr+0jm8ZHef8tsK1sdlLy3/1ESHfnVOJyFEEIMT5JuIYQQQghxzlTU9fd07+1GpaznUuWgEgoVsn6qdoXsmf3vPvYgADM9C2lwzwXgROQgaWM1JY6FAPjj2wjG92WOUSXvJXNvd/S3aJ0Yz1MSQogcknQLIYQQQohz5nRPt5HW+KJWYqztCqU1tp7+IeZRN05lDTPf0rOPg8ETKKW4pPqGTJxnOu9lVvl7Mo9bgtkebWWrB/frrAdmN8QeHs9TEkKIHJJ0CyGEEEKIc+b0Pd0Ac5LZ+7dNh8bWZwMTNIrekCfz2hPt2wBYV3kN5fZKAPYGNuNyXoZNlQDQFv4jKTOYOUaVZBNyHfkJWuvxOSEhhHgVSbqFEEIIIcQ5c3p4OcDSqCOznSoBZSqMPuve7s6wwuj/6fpkx3bS2sRhOLm05sbMMTv6NtFQdgsApo7SFrovW5DjQrAvtbaTr0BswGtCCDGOJOkWQgghhBDnzMCe7preBPaItZ0uVWhMbH4r6Ta1QaW9FoCeRIBdfUcAOL/y2kwy/nLvE8wouz0Tr8n/A9JmFAClFKr8HzOv6eB30Do9ficmhBD9JOkWQgghhBDnzMCkO9QZYJa9PPuiAiNkg/6R4D0RW+al00PMvY4qlngvACCQ7KE1HqHaczUA8XQbJwI/zoZzXQ3OK6wHZgsknhuHMxJCiFySdAshhBBCiHNm4PDy3vY+Lq6fmXlsujQqrVAR6yfr0d44bsMJwLOdO0mY1nTnF1a+NnPM1p7HWFT5KU7/zG0J/jqnR1uVvDuzrSO/LvwJCSHEq0jSLYQQQgghzhm7w055VRkAve1+rpg/D5W0XkuWg0ZjBK2frBrFLPcsAMLpGFu6rWXBlngvyEyotj+wFVNV5fR290SfzxbouhqMems7/iQ63TbepyiEmOYk6RZCCCGEEOdUVUMFAH3tfhbPrsUZsJ7XdgVobIHssPJYYsAs5h3WEHObsnF+5TUAmKTZ3vsUjeVvy+x3KvS7zLZSdlTJbf2PTHTkt4U/ISGEGECSbiGEEEIIcU5V9ifdsUicBm8J7pDKvKbt2hpebo0kZ2dnHz6H1TP+YvdewqkYABdUZYeYb+t5nCr3VTht1sRrXZHHSaS7swV63k7mZ3D0t2idGp8TE0IIJOkWQgghhBDn2OmeboBgV5DFpVWZydNSZaBQ1oRqgD8RZ1HJPAASZpIXul4BoNo1gwWlKwHoSpziRPQwDaW3AqBJcSp4T6YMZWsAl9UzjtkB8cfH7+SEENNewZPueDxOMpksdNiCOnHiBK95zWtYsWIFq1ev5p577jn7QUIIIYQQYlxU1ldktnvb+lg+sx57yHqc9ihMm8bWmx1i/kpnOLP9RPvLme0Lq67LbG/teYzG8ts4/XP3ZOBnpM145nVV8q7Mtg7/AK11oU5HCCFy5JV0P/PMM9x111309fVlnuvu7ubGG2+krKwMn8/Hpz/96ULVseDsdjv//u//zt69e3nkkUf4u7/7O8Lh8NkPFEIIIYQQBTewp7unrY/Fc7L3dQOYTo3ht+GK2wHY3xug0uEF4OXeg3TH/QCs8F2C21YKwO6+F1BGNXUl1wOQMLvojDySDeq8AuxLre3kLkjuGJ+TE0JMe3kl3d/61rf45S9/SUVFRea5f/iHf+DPf/4z8+fPp6Kigm9+85v89rfFOTHFjBkzWLt2LQANDQ3U1NTQ09NzbislhBBCCDFNVQ5Iunvb+lg0uwanP/u66bCGmKc7Tv90VTQ4rVnMTUweat0MgMNwsbbiKgCSOsGuvmeZ6c0uEdYZeTSzrZRClXwg81hH7yvsSQkhRL+8ku7t27dzxRVXZB7HYjF++9vfcv3113Pw4EEOHDjAnDlz+O///u+8KvXMM89w880309jYiFKKe++9d9A+GzduZN68ebjdbi655BJeeumlvMratm0b6XSa2bNn53W8EEIIIYQYm9ye7l4Wz67FFgMjYT2X9mi00hjh7E/XWLwEA2vCtQdOvUDatNbizh1i/jg+1/k4DGs5sZ7os6TNWLZg9+sBd3/AP6F1ovAnJ4SY9vJKuru7u5k5c2bm8aZNm4jFYnzwgx8EoLy8nDe+8Y0cOHAgr0qFw2HWrFnDxo0bh3z9N7/5DZ/4xCf4l3/5F15++WXWrFnD61//ejo6OjL7rF27lpUrVw76d+rUqcw+PT09vO997+N//ud/8qqnEEIIIYQYu1ff013tK6XaW5rt7TaU1dsdUzj6f77u6enm0urzAOhO+HnFfxSAGZ75zPQsBOBU9AhtsWZqSqxJ09I6Qnf0qUxZyigDd/+s57oP4s+O2zkKIaYvez4HeTwegsFg5vGTTz6JUoqrr74681xZWRm9vb15VerGG2/kxhtvHPb1f/u3f+PDH/5wJsn/3ve+x4MPPsjdd9+duZd8x44dZywjHo9z66238ulPf5r169efdd94PDvxRiBg3WRkmiamaY7klDL7a61HdUy+x+Vblsg12a9jsdR/IusxXmUVKu5Y40xUO1Isn52pYLJfy2Kp/2RvRwoZcyq2IxV13sx2T1sfpmmyaHYNrafCxGr74zk0toSBEbFBiUlbNMgq7zpe6N4NwPNdr7DaZyXbF1S+lpboEQC2dj/G+sqbaA39AYBTwT9Q47k+W7jrZog9CFhDzLXzmhGd30Qqlu9hvoql/tKOFCaW5DRZI61XXkn3okWLePjhh4nH4yil+PWvf82KFStoaGjI7NPc3ExdXV0+4c8okUiwbds2PvOZz2SeMwyD6667jk2bNo0ohtaaD3zgA1x77bW8973vPev+X/3qV/nCF74w6PnOzk5isdgQRwzNNE38fj9aawxj5IMM8jku37JErsl+HYul/hNZj/Eqq1BxxxpnotqRYvnsTAWT/VoWS/0neztSyJhTsR0x0yaGzcBMm3Sc7KKjo4O5deVsOpjdR9us2cVTAQ0l1nPNHWFsGKQxea59J28puwylFA3mUuw4SJFke+/TrDNeh506UnTQE3uWU+0HsKvK/shLqKECgz50/Am6Oo6iKRvxdZkIxfI9zFex1F/akcLEkpwma2BH9JnklXR/+MMf5iMf+QiLFi3C6XRy/PhxvvnNb+bss23bNlasWJFP+DPq6uoinU5TX1+f83x9fT379+8fUYznn3+e3/zmN6xevTpzv/jPfvYzVq1aNeT+n/nMZ/jEJz6ReRwIBJg9eza1tbV4vd4hjxmKaZoopaitrR31B3S0x+Vblsg12a9jsdR/IusxXmUVKu5Y40xUO1Isn52pYLJfy2Kp/2RvRwoZc6q2IxV1Pnpaewl2h6irq+M1Fy3jnif3YCQ0phPSbtABja3XTrohBcBzfa2sqV3Ey30H6UoF6PZEWeGdB8Cq1OVs73uKhI7S6W6i0X0LzYEfACaU7qKu7O3ZwoNvhOjPUSSoLd8OnreO+LpMhGL5HuarWOov7UhhYklOk+V2u0e0X15J94c+9CEOHTrE//7v/xKNRrnjjjv4u7/7u8zrmzZt4uDBg/zlX/5lPuHH3RVXXDGqIQoulwuXyzXoecMwRv3mK6Um7Lh8yxK5Jvt1LJb6T2Q9xqusQsUda5yJakeK5bMzFUz2a1ks9Z/s7UghY07FdqSy3kq6+zoCKKVYs3gmTrsNeyhFogqwKbQDjLiBV7sJqBg7e05x25LLebnP6hJ/rH0rKysWAHBh9XVs73sKgF19z/CWmbf2J93QHX2cWd7bM2Vrzy3o6M+tB/H7MUoHJORFoli+h/kqlvpLO1KYWJLTWEZap7xqrpTi61//Ol1dXXR1dfGf//mfOQVecMEF9Pb25iTihVJTU4PNZqO9vT3n+fb29pzh7UIIIYQQYvIor7KGdKdTaaKhGE6HndULZ+AIZ/cx7dYQc6PPlnkulSjBbTgBeLJjO0nT6gWfW7KcSod1q+OR0C6UMQuXzRop2R19lkB8dzawYzXY5lnbic3odOt4nKIQYpoalz8XOJ1OfD4fdnteHelnjX3BBRfw+OOPZ54zTZPHH3+cyy67rODlCSGEEEKI8Xc66QYI9oQAuPC8OThC2X10/y/XSGcq89yWrhbW16y0nk/H2B9oAqxOolUV1hK3JiZ7/JuZ5T09l4/J4d5vZGIopVCeN50uBaL3F/DMhBDTXV5J9yuvvMLdd9+dmcUbyAwznzlzJosWLeJ73/te3pUKhULs2LEjMwP5sWPH2LFjB83NzQB84hOf4Ac/+AE/+clP2LdvH3fccQfhcDgzm7kQQgghhJhcvFXlme3TSffCWTXYoqCsJbgx3RqNRkUM3IbVubOpvYnzK5dkjt3eeyizvaY/6QbY1fcss70fwG2fBYA/tpWUOSCjd78ps6lj96G1LtzJCSGmtbyS7i9/+cvceeedlJdnG8fPfvazfP/73ycYDHLixAk2bNjAo48+mleltm7dyrp161i3bh1gJdnr1q3jrrvuAuD222/nW9/6FnfddRdr165lx44dPPzww4MmVxNCCCGEEJPDwJ7uQH/SvWBmNQqFvX+IuelUaBsoFLVYv0O742HKjMrMsS/3Zqc8r3fPpc41G4CmyH4CyT6qPVcBoEnTF9uW2VfZ54DjfOtB6hCkRjZBrxBCnE1eSfdLL73ENddcg1IKgFQqxY9+9CMuvvhiOjo6OHbsGLW1tXznO9/Jq1Kvec1r0FoP+vfjH/84s8/HPvYxmpqaiMfjbN68mUsuuSSvsoQQQgghxLnnHWJ4eWOtD5tSOUPMTYf1X+1Xmede7mpntse6f3tf4Dh9CesApRSrc3q7n6PSfWnmcW8sd7nZ7BBz0NE/jvGMhBDCklfS3dnZyezZszOPt2zZQiAQ4K/+6q9wu900NjZyyy23sHPnzoJVVAghhBBCTF1D3dNtMwzqvaWZnm7rSWvYd9eJaOapx1oOZu7rNtE837Ur89rqiisz21bSfTGnfwK3hx/A1MlsbPeNZBb3id2P1ukCnJkQYrrLa6Yzu91OPB7PPH7qqadQSnHNNddknquurqarq2vsNSxipmmOaukx0zTRWo/qmHyPy7cskWuyX8diqf9E1mO8yipU3LHGmah2pFg+O1PBZL+WxVL/yd6OFDLmVG1HyipLM9uB7kDmuLkzKjl5MAgaUGA6+u+1Tihmuny0xP3s7m3jM97L+Q1PAPBUxw5ubLB6tCsddczyLOJk9DCtsWN0x4PUeK6lK/oYiXQnHaE/U1d6U3/JPnBeBYknwOxAx19EO8/9RL3F8j3MV7HUX9qRwsSSnCZrpPXKK+meN28eTz75ZObxPffcw/z585k7d27muZaWFqqrq/MJX7Q2btzIxo0bSaetv3p2dnYSi8VGfLxpmvj9frTWo15IfrTH5VuWyDXZr2Ox1H8i6zFeZRUq7ljjTFQ7Uiyfnalgsl/LYqn/ZG9HChlzqrYjKZXtcW4/2UlHRwcA8xt9bNqvsEU16RJIu0ErjdKKZI8J/bl6S7ufOkcFHck+dvYd5tCpY/js1ovzbWs5yWEAXjz1Z1Z6bgIeA+BE770QvjBTtour8fUn79G+3xJk4VnrPt6K5XuYr2Kpv7QjhYklOU1WMBgc0X55Jd3vfe97+eQnP8kll1yCy+Vi586d/PM//3POPrt27WLx4sX5hC9aGzZsYMOGDQQCAXw+H7W1tXi93hEfb5omSilqa2tH/QEd7XH5liVyTfbrWCz1n8h6jFdZhYo71jgT1Y4Uy2dnKpjs17JY6j/Z25FCxpyq7UhkQbYjIx03qauz7tFef8ESfvnEbhwhSJcASuEtdxEMJOjtjGeS7lMkuKbhfH5z4gk0mgO08sa69QBcmrye5w78Ho3mSGo7b6x/P62nqkiaPYT1NqprfdiUywqkb4Gub4IO4VFP46n+Ahgj/703Horle5ivYqm/tCOFiSU5TZbb7R7Rfnkl3R/72Md46aWX+N3vfofWmptuuonPfvazmdf37NnDzp07+cIXvpBP+EnDMIxRv/lKqQk7Lt+yRK7Jfh2Lpf4TWY/xKqtQcccaZ6LakWL57EwFk/1aFkv9J3s7UsiYU7Ed8dZkE9tQbyhzzIr5MwBw+iFm5eEYbgUBUNFs3H3+dj4x91J+c8LqpX62aydvmmVNolbhqmF+6XkcDe+mJ9FGW6KZ6pLX0Bb6A6aOEIhvobrkqv5IJZjuN0H0l6AjqPjvUaUfGtH5jqdi+R7mq1jqL+1IYWJJTmMZaZ3yqrnL5eI3v/kNvb29+P1+HnjggZwsv76+nu3bt/Pxj388n/BCCCGEEGKaKR94T3dPdrryshIXpYYNRwhUynquy4hZ63XHFfb+n7N7e9tZWDaTRk8NALv6jtCbyA79zJ1Q7VlqPNm5iLqi2dsmAVTpezPbMou5EGKsxvTnAq/Xm7NW92k1NTWsWbMGn883lvBCCCGEEGKacHlcuDxOIDt7+WkNZSUorXD6rccppTGd1nrd5abV8XMi3EdHLMTVtWsBaxbz5zqzs5iv9F2GTVmDPHf1PU+F+1IU1vpjXZEn0Vpn9lX2hWBf0V/YPnS6u+DnK4SYPsaUdIfDYX7xi1/wyU9+ko9+9KN88pOf5Be/+AXhcPjsBwshhBBCCDHA6WXDXp10z6mxOnIGrtdtc1s/Y1Uw+3P2vqbdXF23NvP4+a5XMtseexmLy6zXgqkeTkabqXRfAkA83Uowkd0XANfl2e1E7nreQggxGnnd0w3w+9//no985CP09fXl/mVQKSoqKvjBD37AW97yloJUUgghhBBCTH3lVWV0tfQMSrqXzK7hyaMnc9brdpXaiQeShFpS0D+48g/HdvHhpZdS7fTRnfCzL3CctDaxKSsxX11xJfuDWwFriPnFvhvoiT0HQEvw13hdqzPxlXM9OvwDAHTiBZTnjeN12kKIKS6vnu4XXniBd7zjHYTDYf7yL/+SX/7ylzz55JP86le/4sMf/jCRSIR3vOMdbNokfxUUQgghhBAjc7qnOxFLEovEM8+ft7ARAFsMVMrq7In13+BtJAyWltUCcCjQRWskwHm+eQBE0nGOhVozcZb7LsLRP0v5bv8mqj3XY1NWme3hB0ibkWxlnBcC/TOax5/P6WQSQojRyCvp/spXvoLL5WLz5s18//vf5x3veAdXX301t99+O9/73vfYvHkzTqeTr3zlK4WurxBCCCGEmKJ8Ndm5ggLd2UnQZs2qwoimUCjsEQVATKfRhpUIV+uyzL5bu05ynnd+5vHewLHMttNws9x3MQDRdIhjkUPUld4AgKnjBOLZe8CVcvUn3oDZCulsHCGEGI28hpdv2rSJ22+/nTVr1gz5+urVq7ntttu47777xlS5YmeaJqZpjmp/rfWojsn3uHzLErkm+3UslvpPZD3Gq6xCxR1rnIlqR4rlszMVTPZrWSz1n+ztSCFjTuV25HRPN0Bfh5+amVUAVNSUYQ8nSXjs2COQ7F9dzHRavd/R7jT0L6SzrbOZdyxenomzs+8wb5yxPvN4lfdydvU9C8Cu3ue4oupCWkO/A6A3thWf6+JshZzrIfE8ADr6ELr0jhGfSyEVy/cwX8VSf2lHChNLcpqskdYrr6Q7EolQX19/xn3q6+uJRCJn3Gey2bhxIxs3biSdTgPQ2dlJLBYb8fGmaeL3+9Faj3oh+dEel29ZItdkv47FUv+JrMd4lVWouGONM1HtSLF8dqaCyX4ti6X+k70dKWTMqdyO2D22zHbzkRN4Z1rLiGmtccZNEpBzX7fDY8OMmRw/3odaBhrY3H6cj8xcQ4nhImLG2dq9n1PtrdiVFdunG3EqDwkdZX9gCxc5rsjE6wy+SEn8bZnHBhdTjUKhSYV/R0/4LYAa0bkUUrF8D/NVLPWXdqQwsSSnyQoGg2ffiTyT7nnz5vHoo4+ecfj4448/zrx58/IJX7Q2bNjAhg0bCAQC+Hw+amtr8Xq9Iz7eNE2UUtTW1o76Azra4/ItS+Sa7NexWOo/kfUYr7IKFXescSaqHSmWz85UMNmvZbHUf7K3I4WMOZXbkRlzGjLbRtpGXV1d5rHP6SIEOAZOplbmINobJxpLMa+0imPhHg6HenBXeLm4egVPdW4nYsbpcIZYW7k4c9zSxAW84n+OuI6SLLXhTNeRSHcQMXdSWe3AYavs37MOei+D5AvYaaGusgMcq0Z0LoVULN/DfBVL/aUdKUwsyWmy3G73iPbLK+m+7bbb+NKXvsT73/9+vvrVr9LY2Jh5rbW1lc985jNs27aNO++8M5/wk4ZhGKN+85VSE3ZcvmWJXJP9OhZL/SeyHuNVVqHijjXORLUjxfLZmQom+7UslvpP9nakkDGnajviq8l2ZgS6QznH1ZZ7aCGJkVIYMRPTrQiacWxoFIpGo4Jj9Fi93V0nWF+zkqc6twOwuXcv51cvzcQ6z3cJr/itWcu39j7KRd4bORH4CZoE7ZH7meP7QGZf7bkRnXzBepB4HMM19O2V461Yvof5Kpb6SztSmFiS01hGWqe8av6pT32Kiy66iJ/97GcsWLCAlStX8trXvpaVK1cyf/58fvrTn3LRRRfxqU99Kp/wQgghhBBiGvIOmEgt2J27bNiMquxrp9frTpom+nQXUiA77PvZtqNcVLU8s1TYi117c2YfX+q9gDJ7BQB7Ai9i2C/NvNYReSi3Uq7XkhlSHntYZjEXQoxaXkl3SUkJzzzzDJ///OeZNWsWe/fu5cknn2Tv3r3MmjWLL3zhCzz99NN4PJ5C11cIIYQQQkxRA2cv93cFcl6rq/OhktakRfZwNsG2eayfsyeagjgN677t59uOUebwsMq3AIBTsS6aI+2ZY5yGm2vrb8883h86RqljEQCB+C5SZvY+TWWrAecl1oP0cUjIkrhCiNHJu4/e5XJx1113cfjwYfx+PydOnMDv93P48GHuvPNOXC5XIesphBBCCCGmOG/1gKS7O3eCotoZFdhi1trc9mj2+XKfdU9lR1+IlRUzAGiJ+GkJ+7m0+rzMfpu69+TEW1NxBQZWkr4vsJVK92X9r5j0xjbn7KtK3pnZ1tE/5HFmQojprCAD48vLy5k5cybl5dmG8oMf/CB2e163jAshhBBCiGlouHW6AepnVWJErRVk7FFQaWuYd8xIZfZpMLL3hG/pbM5Jul/syk263bZS5pdZr/cm2jFsSzKv9UZf1Zvtei2oEms7sVmGmAshRmVc70aXBkkIIYQQQoxUibcEm93qfQ505SbdDbOqMj3dSisc/aPP/ck42rB+c6pQ9qftls4TzCypZU6JtcztvsBx/Inc+8SXlK/LbHelnKj+nu+e2As5+ynlBEf/vmY7pJvHcppCiGmm+KaAE0IIIYQQ05JSCm91GTD4nu76WVXYwtlebceAnNx0WP/taA1j7588bUunlRif7u020bzUsy8n5tzSFZnt5shxvK7VAESSR4ml2nLr5rw4+yDx/GhPTQgxjUnSLYQQQgghisbpZcNePXu5r6qUUj1gArVY9jWv17qv+0BLFysqrbW+jwS76YqFubh6eWa/bT0HcmI2eubjUE4AmsL7qHRfnnmtK/J4bsVcV2U2dfSB0Z6WEGIak6RbCCGEEEIUjdPLhsUicWKReOZ5pRSNNT7ov5fbFs8m4J5Sq6s7kUqzwF2deX5b1wlWeOdRYrMm+N3aux9Tm5nXbcrO7BLrXu6+ZCcOR3a4+anQPbm3StpXgG2htZ3cik6dLMTpCiGmAZnpbAxM08Q0zbPvOGB/rfWojsn3uHzLErkm+3UslvpPZD3Gq6xCxR1rnIlqR4rlszMVTPZrWSz1n+ztSCFjTvV2pLyyNLPt7wrgnJVNohtmVWLr6SRd5sBIYCXgNkVUZYede+KOzPZLHc28rnEJayoWsal7D/5kmEOBEywun53ZZ3H5Oo6GdwNwJNxOuXM1wcQuQol9hBKHMkuJAeB+E4S/DYCO3ocuvWNU55avYvke5qtY6i/tSGFiSU6TNdJ6SdI9Chs3bmTjxo2k09bMmZ2dncRisbMclWWaJn6/H601hjHyQQb5HJdvWSLXZL+OxVL/iazHeJVVqLhjjTNR7UixfHamgsl+LYul/pO9HSlkzKnejtjctsx285ETaGc689hb5cZ+Ikm6zIFSCkdIk/RBdyyCSymUVnSfDKE8oIFNrUfpaOxgqX0mm7BmL3/qxDZ8NdmlbevTizPbO7uf5TrvFQTZZZXf+QjV9uyM6AbrqcFKulPhP9ATfguQ7XEfL8XyPcxXsdRf2pHCxJKcJisYDJ59J0aRdJeUlIyqAslkclT7TwYbNmxgw4YNBAIBfD4ftbW1eL3esx/YzzRNlFLU1taO+gM62uPyLUvkmuzXsVjqP5H1GK+yChV3rHEmqh0pls/OVDDZr2Wx1H+ytyOFjDnV25HaGTWZbadyUldXl3k8c249thcPZR5bSbdCAza3gRnVHO0MsmRVLQf8nRwK9eCp9HFN+YX8uP0RAPYnWvjwgJh11NEYXsCp2FE6Us34fG+jvdt6LeXYTV3tXw+oXR30XgTJLdg5QV1lOzhWj/jc8lUs38N8FUv9pR0pTCzJabLcbveI9htx0l1XV4dS4/+XvMnEMIxRv/lKqQk7Lt+yRK7Jfh2Lpf4TWY/xKqtQcccaZ6LakWL57EwFk/1aFkv9J3s7UsiYU7kdKa8qy2yH/dGcYytryrFFs0PJnX6IzLS2K6pK6GkJc7LHz80Vizng78REs6PnFFfPWMhMTy0t0U72Bo4TNROU2rM/lldWXMaptqMAHI124DCqSJo99MU2g0ph9E+2BqA9t6KTW6wH8QcwXGtHfG5jUSzfw3wVS/2lHSlMLMlpLCOt04iT7uPHj+dbFyGEEEIIIUakvDKbdAd7c2cwr6guw4gOvWxYwpEdhl6ps/eFb+ls5uoZC1lbsYiWaCcmJkdDLayqWJjZ5zzfZTzS9gsA9gW2cKXvStrC95HWEXpjm6n2XJktyH0DBO4ETEhsGevpCiGmgeL7c4EQQgghhJi2ygZMpBbqDee8VlFdhi2Whv5ZxZVWOAPWdlc8glbWdqovO+v4zp5TACwsm5l57kioJSdujauROpc1udqJyEHK3JdlXuuKPJazrzLKwd4/uVrqIFqPfH4fIcT0JEm3EEIIIYQoGgNnLx/U011TjtJgxKxebdOucPZYswdrwOwfw3mkpYdatxVnT28bWmsWlc/KxDkSOjWo3GXei/rjaNoTLgxlTbbWGXkcrV81Q3HmPu40JPfmdZ5CiOlDkm4hhBBCCFE0ygYMLx+qpxuwersBDIVjQF5eXm4lyq+caGNFRQMA/kSMloif+aUzMPpnGn91TzfA8v6kG2C3fwtV7vUAJNKdBBKv5OyrBk6eltg8mtMTQkxDknQLIYQQQoiiMbCnO9SXm3S73A48pa6cydRs0ezrXp81OVokkaTR6cs8v7unDbfNycySWsBKuvf4j+XEnl2yhCpnff/ruyh1XpJ5rSvyRG4lnVdkNnXsfrTWCCHEcCTpFkIIIYQQRaPsDMPLASpryrBFBiTdA2+pHjBFsD2WXe97d28rADc2XAqAieaHR+/PiauUYm3lawBriHlnKluPvlhub7ayzwLH+daD1GFI7TvreQkhpi9JuoUQQgghRNEoqxh+IjXon0wtnE26FQpX2vpJ25PMZuCB7nhme09vGwBvmXUVM9zVAOwPNJM0s3EAFpetzWy3xNopsc+3YsVfIW1GcvZVnlsy2zr6x5GdnBBiWpKkWwghhBBCFA27w46nzBomHhwy6S7HPmB4uelQuPp388djGHbrvu1DJ7qpdHoA2N0/mZrNsLHCNw+AlE7TFG7LiT3DMx+bsrrLmyMHqXBfDIAmhT++Pbci7hsAh7UdewCt0wghxFAk6RZCCCGEEEXl9BDz0BDDyytqylBpjRGzEm/TrlCd2SR8Rl05AEc7elnqqwOgJx6hLWot6r24LDuL+cHgyZzYDsNJo8fq3e6Kt1DiXJV5rTf2Us6+yqgE11XWA7NDJlQTQgzLfvZdBnvmmWfOuo9hGHi9XhYtWkRJSUk+xQghhBBCiGmovLKMzhPdhHrDaK1RSmVeq2usAMAWSWG67dYM5n6T031JZV43nAoAUGNkZ0Lf09vGjBJvztJhh0IngEtzyp5bspwTkUMAtCey/VN9r0q6AZTnTej44wDo2AMo1/r8T1oIMWXllXS/5jWvyWn8zsQwDF73utfxzW9+k/POOy+f4oqWaZqYpnn2HQfsr7Ue1TH5HpdvWSLXZL+OxVL/iazHeJVVqLhjjTNR7UixfHamgsl+LYul/pO9HSlkzOnQjpy+rzuZSBENx3CXuDKvNcyqAqykO2ltYh8wCj1uZId5q3D29+ozrUe4dsYiFpQ0YmBgYrK1Zz/pdDrnd+0K76U812Xdo707sJtlznlEU8cJxF8hmQphMwZ0JjmuBlUCOgKxxzDLPg8qr5/XZ1Qs38N8FUv9pR0pTCzJabJGWq+8WoW77rqLl156iYcffpilS5eyfv166uvraW9vZ9OmTezfv58bb7yRhQsX8vLLL/Pwww+zadMmNm/ezJIlS/Ipsihs3LiRjRs3kk5bjXlnZyexWOwsR2WZponf70drjWGMfGR/PsflW5bINdmvY7HUfyLrMV5lFSruWONMVDtSLJ+dqWCyX8tiqf9kb0cKGXM6tCOOkuxP1OOHmqiaUZF57Cq3EmRbPJtcGwmFGxsx0pwM+dFoFIqekxGcVTYSZpoHmvbwkcY12A2D5SWz2RNpoi3Ww5YTrzDP3ZCJ5dQ+vEY1AbObI6FXWFWxnCjH0SRpan+KMtuFOXX1cglungTdR2/nYyQ5f1TnOhLF8j3MV7HUX9qRwsSSnCYrGAyOaL+8ku7Xvva1fO1rX+Puu+/mAx/4wKDXf/KTn3DHHXfwmc98hu9+97v8/Oc/533vex9f/vKX+elPf5pPkUVhw4YNbNiwgUAggM/no7a2Fq/XO+LjTdNEKUVtbe2oP6CjPS7fskSuyX4di6X+E1mP8SqrUHHHGmei2pFi+exMBZP9WhZL/Sd7O1LImNOhHaluqMpsu+0e6urqMo9LPdZvLyOWTbq1XVGVdHLKESWYTFBT6iIcTtLUFeB1q5bw4Il9+FNxDhPmqrqFXJu6kD2HmwDYZ57i4rrVOeUvT1/M5p6H0JjgngunJy73HKSu4qbcysZugsCTAFR6dkL5DaM615Eolu9hvoql/tKOFCaW5DRZbrd7RPvllXTfeeed3HzzzUMm3ADvf//7eeCBB/jc5z7HU089xXve8x7uvvtunnjiiXyKK1qGYYz6zVdKTdhx+ZYlck3261gs9Z/IeoxXWYWKO9Y4E9WOFMtnZyqY7NeyWOo/2duRQsac6u1I+YBlwyKBaM7x5b4SvJWl9Eazow21DezdaejvsK6vKedouIeuUIRLq+by4AlrHe1Xett4TeNi1teu5D8O/956zn9kUP2WeNexuechAE7FTU7fGe6PvzRoX+2+Ch0wABOSz2EYnxnVuY5UsXwP81Us9Zd2pDCxJKexjLROedV827ZtLF269Iz7LF26lG3btmUer127ls7OznyKE0IIIYQQ00jpgKQ73Dd42bAZc6ox4mnQGrBmME+ciGZed5Rm+5WMmC2zvb+vA4AaV0XOet2JdDIn/vzS8zJLhx0MH8ZjnwdY63WnzNwZ1ZVRCY7+nvLUIXS6dVTnKoSY+vJKup1OJzt27DjjPtu3b8fhcGQep9NpSktLz3CEEEIIIYQQ2YnUAEJ9kUGvN86tRmkwEtYkRqZN4ejNTmgUNrNJdHdXFLfNSqD39bVnnl9VsRCApE5xINicE99l8zC3ZBkAvYl2SpxrAGu97iFnMXddmX0Qf3pkJymEmDbySrqvu+46HnroIb7+9a+TTOb+ZTCZTPLNb36Thx9+mOuvvz7z/N69e5kzZ87YaiuEEEIIIaa83KR7cE/36WXDMvd12xS2BFQ5rfsrT4atydQA9rS0s8RXC0BzqJdwMgHAKt+CTLxX/EcHlbG4fF1muzuVXXqsO/rs4Ao7r8ps6vgQrwshprW8ku5vfOMb1NfX89nPfpY5c+Zw880386EPfYibb76ZuXPn8ulPf5q6ujq+/vWvA9DW1sb27du5+eabC1p5IYQQQggx9ZRWZJflGirprq73AWCLpTLPmXbFXKc1yVo0laKszFpmbEdTK8t89QBo4FDAut0xJ+nuG5x0L/NelNl+vvsVFE4AOsIPYepE7s6OVaAqre3EC+hXvy6EmNbySrrnzp3L1q1bede73kVfXx8PPvggP/rRj3jwwQfp7e3lXe96F1u2bGHu3LkANDQ00NXVxZe+9KWCVl4IIYQQQkw95ZXZnuWh7umuqrOSa1tkQNLtUNQlszMJ19VZMfzRGD7Dk3n+WLAHgEZPDVXOcgD2Bo6RNrOzoQPUuWdxQeVrAYjpNIZ9JQBJs3dQb7dSBriusB7oMCS2j+JshRBTXd5TwDU2NvKzn/0Mv9/Pzp07efbZZ9m5cyd+v5+f/exnzJo1q5D1FEIIIYQQ00TZgJ7uYO/gpLumfoik264oDajsTq7sdiyY3e94f9KtlGKVz7qvO5KOcyR8alA551ddm9kOmDMz232xrYP2Va4BQ8xjDw1xVkKI6WrM8647nU5WrVrF5ZdfzqpVq3A6nYWolxBCCCGEmKZyZi/3j7ynO9Uep6R/It+uRHYCNn9vPLPdFOrNbK8cMMR89xBDzGe456GwkvdT8eyQ8WD8lcGVdl0Dqv+PBbH/Q5uBoU9OCDHtFN9iZ0IIIYQQYlo72+zlVbXl1tq9CRObNV8apl3R2RFkcZW1FFhHJIxW1ovd3RFO93uf7ukGWN0/gznALv+RQeW4bB6qnTMAOBVrx2VrBCCY2IPWucPRleEFz63WAx2F+JMjP2EhxJSWd9L92GOPcdNNN1FbW4vD4cBmsw36Z7fbzx5ICCGEEEKIATxlbgzDSpOHmkjNZrdRUVOGAhxxK/nVdkVHZyCTdAOU90+mdqLLT2OJNfna8VAPun9973mlDZTZrfu9d/uPZp4faGaJlZindBKbzZqvKK0jhBL7B+2r3G/IbOv4E6M7aSHElJVXVvz73/+e22+/HdM0mTt3LsuWLZMEWwghhBBCFIRSitKKUoI9oSEnUgPrvu7eziA6mAC3lTgnMZnpLs/s4/N5CAUTdATCrC2tpSXiJ5iM0xYNMqPEi6EMVvrm82L3XvzJMM2RDuaW1ueUs7h8HTv7rInT/Gkvjv7nOyNPUO46L7dSjnWgKkD3QfxptBlGGaUIIaa3vDLlL37xi3g8Hu677z6uvfbasx8ghBBCCCHEKJRXWkn3UMPLwVo27NDuFlQ8O8zbtCl8qezPW4fbltme667iRZoAeLzlIO9ZfCFg3df9YvdeAHb7jwxKupeWX4CBgYnJwXCY8/onSO+KPMqCyr/J2VcpO9p9PUR/CzoC8UfA8+Y8r4AQYqrIa3j5gQMHeMc73iEJtxBCCCGEGBenJ1ML9YWHHPadmUxtQNKtbQpnKDtredzIvjbfnh12/tDJ7NDw0zOYw9DrdZfYy5lbugKAtkQvHscyq17JA0STJwbtrzxvydYn+n/DnZ4QYhrJq6e7urqakpKSs+84xZmmiWmao9pfaz2qY/I9Lt+yRK7Jfh2Lpf4TWY/xKqtQcccaZ6LakWL57EwFk/1aFkv9J3s7UsiY06UdKfVZvzXNtEk4EKGk3JPzenWdNYzciGfjaxuE28N4XS4C8Ti9iWjmtY7WMHNKK2gO97Gls5lIMo7b5mBhaSMuw0ncTPCK/+iQ9V1WfiHHwrsBiOo5gJW0d4QfZbb3A7k729aAbS6kmyDxImayGWxjW0q3WL6H+SqW+ks7UphYktNkjbReeSXdb3vb23jsscdIpVLT6l7ujRs3snHjRtJp66+mnZ2dxGKxER9vmiZ+vx+tNYYx8kEG+RyXb1ki12S/jsVS/4msx3iVVai4Y40zUe1IsXx2poLJfi2Lpf6TvR0pZMzp0o44PNnfmE2Hm6meWZnzut1j9Wgbidzh5ceOtzN/hZed8U564zHKbDbSac1jew5x3voamsN9pLVm87GDLPfWArDQPYO9kSY64r3sbTlEjcOXU1ZtOru02A5/J2v7b9NuDTyKK3bToLqXcD1l/ACAUPcvifCBUZ//QMXyPcxXsdRf2pHCxJKcJisYDI5ov7wy5q985Sts3bqV22+/nW9/+9vMmTMnnzCTzoYNG9iwYQOBQACfz0dtbS1er3fEx5umiVKK2traUX9AR3tcvmWJXJP9OhZL/SeyHuNVVqHijjXORLUjxfLZmQom+7UslvpP9nakkDGnSztSXZ9Nst12D3V1dTmvz19k9R4brxpe3tMb47yGmezs6gRg2dw69hxtpyMY4XrPQuAwAK1Ggqv7Y14QXcreJut+71N2PyvqFueUVUcdyxIXsj+4le50HKWq0LqHmN5Dda0Pm3LlVj79Luj+IaApMx6hrPofQZ27/3eca8VSf2lHChNLcpost9s9ov3ySrpXrVpFMpnkxRdf5N5776WiogKfzzdoP6UUR44MXvNwqjAMY9RvvlJqwo7LtyyRa7Jfx2Kp/0TWY7zKKlTcscaZqHakWD47U8Fkv5bFUv/J3o4UMuZ0aEdKvdlbGaOh2KAYNQ3Wb0+V0tiANNbw8tbWPtZXr8nsN7POx56j7QCY4ez93vv6OjIxV1UsgqZHANgTOMb1My4eVJ/La9/E/uBWQBGjARc9mDpOMLGDKs9luTsbMzGdl0PiOTBPotLbUc6LRn0NBiqW72G+iqX+0o4UJpbkNJaR1imvmpumid1uZ86cOcyZMwev14vWetC/Yh17L4QQQgghilvJgKQ7EogOer2mvj/pBlz9P2lNmyIYjDHLkx2JmDSyv0cjfcnM9t7etsz2cu9cbP090UNNpgYwu2QxBtZs6O2J7KzogfjOIffPnVDtD0PuI4SYHvLq6T5+/HiBqyGEEEIIIURWiTc7cVokMHjZsDKfB6fLTiKewpZIg1OBodAKvInsT9xTkUBmu6nDz5zZlTSHetnv7yBtmtgMA7fNyZLy2ewLNHEi2kFvIkilszynPIfhYoZnPi3Rw5yKR5jTv2B3ODnMqE73dRAoAx2C2EPo8s/Jmt1CTFPF10cvhBBCCCGmvdOzl8PQPd1KqcyyYTqU7cE27YpQd4S5vgoA9nV1Ue8rA+BwezcrKqx1uGPpFEeD3ZnjBi4dtts/dG/3/P6lwyKmE6uPHSLDJN1KucH9BuvB6TW7hRDTkiTdQgghhBCi6AwcXh4eIumG7BBzMxDPPKdtcKq1jzUNDQDE0ykaaqxe62AszhxPdoK2vb3tme3VFdkZyh849cKQa4Ovq7zGKgODuLbqF04eReuhb6mUNbuFEDDC4eVf/OIXUUqxYcMGqqqq+OIXvzii4Eop7rzzzjFVUAghhBBCTD9nG14OUFVv9XQbsQHLhtkVp071sWbZDP54wFpP21ma/clbns7ONrynr41bWAnAuool1Lkq6Yj38nLvQV7xH2V1Rbb3G6DBM5dGz0JORY8QSBnUOsDUUULJg5Q7lw2uoGMt2OZD+hgkXkSnTqLsY1uzWwgx+Ywo6f785z+PUorbb7+dqqoqPv/5z48ouCTdQgghhBAiH6U5SfdwPd1W0m2LpzLPmXbFqdZerq3PzmAeJfu6LZ4d6LlnwGRqTpuDd829jn8/eA8AB4LNg5JusIaYn4oeoTddQq3DWqP3eN9/saruu4P2VUqB51Z06NvWE7F7oexjw56zEGJqGlHS/eSTTwJk1uM+/VgIIYQQQojxkDt7+TA93f33dBvR3LW6W1v7WFJdk3muLxXLbPf0xqj3lNEeDbGntw2ttZUcAwvKZmb2a4l0DlnmnNJlPN91Py2JKha7QyjCdEYeIZo8gccxe/ABnlsh9O+ARseeQEnSLcS0M6Kk++qrrz7jYyGEEEIIIQpp4PDy8DBJd3X/Pd1GWuOy24in0ph2RXd3iFKHg8byck4Fg7SGgmg0CkVzdx8rF86gPXqIYDJOc7iPuWXWfd4zPdlEvSXaNWSZc0qWAmBi0GPOp9rYDWhagr9mUdUnB+2vbDPQtvmQPgqpA2idQClnXtdECDE5yURqQgghhBCi6JTmJN1DDy+vrsuux11us/qStA2SKZNAIMriqmoAQskEbpf1elNXL+dVNmSO293Tmtn2Okopt1s97C3RoXu6vY4qKp3WDOgHBvwtoDe2efiTcazq30hCct/w+wkhpqS81uk+LZVKceDAAfr6+kin00Puc9VVV42lCCGEEEIIMQ25y7ITng13T/fpnm4A1+kJxJVC26C7J8Tiqmqebjpu7VtVyqnWAC29AZb56jLH7e5t4w1zVmQez/TUsj/YRGe8j3g6gcs2uFd6TslSehPtRE2N0zaHRLqZUGIfaTOGzXAP2l85VqFj9wGgI3ejnN8Z8XUQQkx+eSXdWmvuuusu/uM//oNgMHjGfYdLxoUQQgghhBiOzWajpNxDJBgd9p7u6vpsT7cRTWV+2Zp2RXdXiEX9Pd0ApWUuAFKmSVOTP/P87t5sTzfAzJIa9gebADgebmOpd86gcueULGVn3zMAJKkHmtGkCCZ2U+G+cHBF3ddB8FtADGIPoZMfRTlWDN5PCDEl5ZV0f+lLX+Jf//Vfqaio4H3vex+zZs3Cbh9Tp7kQQgghhBA5Srynk+6he7pdbgdlPg8hf5SUPw7V/UPM7crq6Z6VvUe7rrqUQ4esIeO/fGYnteeV0hkLD5pM7TzvfB5v3wbAy70Hh0y6F5atzmx3JDW1/Tds+uMvD5l0K1sjlP8DOvivVv2CX4fK/0Up+f0sxHSQ1zf97rvvZu7cuWzdupXq6uqzHyCEEEIIIcQolXg90DL88HKAmnofIX+UWGcYqq3h5qZN0dMT5vKqpZn9ehMxLlowiy1HT9IZDHOBt57O2DH8iRgnw35ml1UAcMGAY17uPcA75143qMxa90yqnTPoTrRyNOKntsx63h/bAb5Bu1s8b4XQd0CHILEJor+HkttHdT2EEJNTXhOptbW1ceutt0rCLYQQQgghxs3pZcMiwSimaQ65z+llw3QokXnOtCu6uoOUu1zMKLMy4kM93cyvqczs0+jIZsevDBhiPsNdTYO7CoA9/mPE0tm4Ay3zWj3aIdOBUlY9/fHtaK2H3F8ZZSjvFzOPdeyBIfcTQkw9eSXd8+fPJxAIFLouQgghhBBCZAxcNiwaig25T0W1lVQb8TSGYQ0R1zbo6QkDsLjKGmIeiMepHBCvguz2ju6WzLZSivMrlwCQ1Gle6TsyZLnLvBedPoKYtspImj1EkkeHPyH3G8A219pObEGb/uH3FUJMGXkl3XfccQcPPPAAHR0dha6PEEIIIYQQwKuWDfMPPZmar6oUAAXUlFs9zqZd0dllTfY7cDI1HCq7Gc3eZfly18mcmOdXDhxifnDIcueWLsdjsxL+U/Fs73ZP9Nlhz0cpBa7TK/uYkNw97L5CiKkjr3u6b7nlFp599lnWr1/PXXfdxfnnn4/X6x1y3zlzBk8+MVWYpjnsUKfh9tdaj+qYfI/LtyyRa7Jfx2Kp/0TWY7zKKlTcscaZqHakWD47U8Fkv5bFUv/J3o4UMuZ0akc85dmkO9QbomZm1aB9yitKMttVJW46/GEwFK0dfkzTZFFV9pioTma2u3ojzC+r4lioh929bUSTCVz9a32v8S1EodBotvUeGPIcFIoFpSvZE3iR9qST+a7+uNFnmVn+vuFPypadtVxH70c7LjvrdSiW72G+iqX+0o4UJpbkNFkjrVdeSff8+fNRSqG15oMf/OCw+ymlSKVS+RRRlDZu3MjGjRszy6B1dnYSiw091Gkopmni9/vRWmMYIx9kkM9x+ZYlck3261gs9Z/IeoxXWYWKO9Y4E9WOFMtnZyqY7NeyWOo/2duRQsacTu3IwMm9W5pbKakbYg1se3Z5WteA+6m7AxGam1uoJtu7fdLfk9k+2t7F8lXVHAv1kDTTPH9sPyu92fW757nrORZr41i4lUOnjuGzlw4qu9acB7xI2HShdSlKhfHHttPe3oZSQ5+zjUYyfe+xP9ATey0pVp3xOhTL9zBfxVJ/aUcKE0tymqyzLZ99Wl5J9/ve977MsgrTyYYNG9iwYQOBQACfz0dtbe2wPfxDMU0TpRS1tbWj/oCO9rh8yxK5Jvt1LJb6T2Q9xqusQsUda5yJakeK5bMzFUz2a1ks9Z/s7UghY06ndqS6LttL7ba7qaurG7TPzDkNmW2fM5uUm3ZFPGHn4oWL4IlHAGiPx6grL6UjGKapx8/19Rfwp/ZDAPTYzJz4F4dXcOxEGwAnbD0srps/qOw18fU8dejXgCJKJSWEMQlTVhWm1LFw6JPS1dBVCboXgCrXveB77RmvQ7F8D/NVLPWXdqQwsSSnyXK7B/8hcCh5Jd0//vGP8zlsyjEMY9RvvlJqwo7LtyyRa7Jfx2Kp/0TWY7zKKlTcscaZqHakWD47U8Fkv5bFUv/J3o4UMuZ0aUdKfdmh47FwfMg4FVVlmW1nOtvTre1w6lQfS5fMoKG0jLZwiEM9PVwxaxZP7DtKMJaglOwP5mOhnpz4F1Qt4zcnngBgd+AY1824iFerdc/E66gikOyhPZHODDEPJV6h3LV4mLMy0NX3oLv6lyKLP4HSHShbwzD7W4rle5ivYqm/tCOFiSU5jWWkdSq+mgshhBBCCEHuPd3hYdbqPj2RGoAtmh1qbtoUJ1us4eSL+5e59cdjLGysycbsyy4HdjTQlRN3aflsVP/Q9IPBE0OWrZRiQak1NLw35cw8H0jsPMNZgbLPgdIN/Y/S6Mhvzri/EGJyk6RbCCGEEEIUpYGzl0eDQyfd3sps0p32xzPbpl1x8qSVdA+cwdznzfZuHz/Vh7t/8rSjwez93gAldjezS6zh5sfCrSTMoecpWlK+DoBA2sPpW8oD8VfOfGKAKrkdsFkPIj9Cp06ecX8hxOQ1ouHl1157LUopfvKTnzBr1iyuvfbaEQVXSvH444+PqYJCCCGEEGJ6GtjTHRmmp7vc58lM8Bvpi1DZ6KE3GEXbFS0t1n3TSwYk3SmbRinQGg61dTN/URX7+jpoDvWSNNM4DFtm3yXls2mOtJPSaY6FTrHUO3hVnpUV63mi/bd0JU4RNvd/CpkAAI/cSURBVF2U2eKEEgdImzFsxvD3eypbA9pzO0R/CTqC7vs4VP9u2AnYhBCT14iS7qeeegqlFJFIJPN4JKbjZGtCCCGEEKIwSgb0dEeG6em22W2U+TwE+yL4e8PMXDvXSrptitZ2PwCLqrNJ93F/L40VXlp6Axzt7OHSdTPY19dBSps0h3pZ6M0OP19aPpvH2rcC1nrdQyXdNmVndeWVPNH+GwJpD2W2OJoU3dGnqCu94Yznp8r/Hp14AdLHIbUb4o+C+/Ujvj5CiMlhRH9KM02TdDrNkiVLMo9H8u/00lpCCCGEEEKMVklOT3dk2P28ldaEa/6eMLPqfJnnuwNh4vEkiwf0dB/u6WZBrTUrejieoN5ZnnntaLA7J+4l1edltp/tHP4+7Tkl1m/k9mR2VZsm//8Mu/9pyvChvJ/NPNaRX5z1GCHE5CPjV4QQQgghRFEaOLw8GooNu5+vfwbzaDhOQ1U28TXtivaOAF6Xm/pSa59DPd3Mr63M7OM2HZnto4HcpHuGp5pFZTOt40In6YkHhix/lseaqbwnXUbUtJL4YGIPiXTPkPvncF4NtnnWduJFdPyFsx8jhJhUJOkWQgghhBBFqXQEw8sBKquzy4b53NlZxE2bor3NGmJ+ure7LxajcsBSZHpAB/qRVyXdAOsql2S2D4WGnuzMYy9jTslSQNGRHDCLefzMs5iDdTumKnlHtj7Br5z1GCHE5JLXOt2nxWIxtmzZwqlTp4jH40Pu8773vW8sRQghhBBCiGlqJBOpAVTVZXu3S1V2IjRtV7T2J90Xz5zFcyeaAGhNBDP7+HsHLBsWHJx0n+7pBjgSauGS6hVD1uHS6ptojhwgkM7W2R9/mZqSa4atd0bJ+yDy6/57uw+izR6UUXX244QQk0LeSffGjRu588478fv9Q76utUYpJUm3EEIIIYTIi8vjxLAZmGnzzD3dtdn7sp1pndk27Yq2/snUblq8hH978XkAtnW0ZvY50eWnscHLqUiAg/5OUqaJ3cgOBl34qqR7OAvLrPW6+9LZXvTOyOMsqPjEWScXVsqOdl0LkbsB0F03Q+1zMimxEFNEXsPL//CHP/A3f/M3zJ49m29961torbnlllv4yle+wg033IDWmre+9a3cfffdha6vEEIIIYSYJpRSmcnUztjTXZvt6U4HE9ht1k9cbYP2/qR7QWUVS6qtmcn3dLZTVWbFPdrRw7rqWQCEUwn29rblxJ7lqcVpWPd9HwyeGLYOpXYfJTYvCe0gkLbqE0keIZw8OLJzdV6UfWB2QvypER0nhCh+eSXd//7v/05dXR2bNm3i7//+7wFYu3Ytn/rUp3jwwQf5+c9/zr333svcuXMLWlkhhBBCCDG9nF42LHrGnu7sPd29XUFqK63Hpk3R3R3KvLaqrh4ADdTXWL3j3aEIKytmZPbZ3NmcE9tm2FhaPhuAtlgPHbHeIeuglKLebS0p1pbM9nb3xbad+QRPc10D9pWZhzr8PbTWZzhACDFZ5JV079q1ize96U2UlGQblIHLg73rXe/i2muv5Ytf/OLYayiEEEIIIaat0fZ093YGmVHd/9hQdPVkk+5FVdn7pMvKXJnterJJ+9auwb3ZaysWZ7a39x4ath4NbqvDKZh2Z54bcU+3MlDVvwN7f1nJ7ZDcMqJjhRDFLa+kO5lMUltbm3ns8Xjo6+vL2WfNmjW8/PLLY6qcEEIIIYSY3jzlVgIbi8RzOnkGGjiRWk9HgPqq7D3eXf5wZnvRgPW6VXaScaKBNG6bNdXRq5cNA1hXmU26d/QNn3RfUHUtBjZCA5LuUOLAsPu/mlIGqvSjmcc69P0RHyuEKF55Jd2NjY20tmYnoJg7dy7bt2/P2aepqQm7fUyTowshhBBCiGmuxJsdWRkbZq1uX1UphmFNOtbbFaS+Opt0R5JJolFrhvLFA5LuGNkE/pWTbcwrs3rBm0O9pEwzJ/4y71zchpWl7+g9NOyw7xme+VxacyMpbMT61//2x18mnDw6spMFcN8ENusecxLPokP/M/JjhRBFKa+k+6KLLsrpxb7hhht4/vnn+epXv8qePXv4/ve/zx/+8AcuuuiiM0QRQgghhBDizErKBwzVHmaIuc1mUFFjDRHv6QxSN6CnW9sUPT1Wb/csrw93f6dQZzSMw2YtL7azuZV55VbSndImJ8N9OfEdhp2VvgUAdCX8tEQ7h63vxVWvt+qRKs08d6z3O2c/0X5K2VGlH87WP/QtSO4f8fFCiOKTV9L99re/nXg8zvHjxwH4zGc+w6xZs/jc5z7H6tWrueOOOygrK+Mb3/hGIesqhBBCCCGmmZLybE/3mSZTO31fd29XiNqKbMJr2hTd/fd1G0oxx+sD4GQwwPIZ1u2Sxzp7meHODlE/HuoZFH9t5aLM9q6+I8PWo9rVgIGNw/H6zHOjGWIOgOetYJuTfez/KIrg8PsLIYpaXkn3m9/8Zvbt28e8efMAqK2tZceOHXzta1/jIx/5CF/5ylfYvXs3q1atKmRdhRBCCCHENOMZQU83QGX/bORm2qR0wC2O2gY9AyZTm9WfdCfSaRbPqskGiGXXxD4WHJx0L/NmV+U5Fm4d9PpphrLhc1ST1HbCZv/M66mTaG0Oe8yrKeVEVd8LyqorZjsl3DPi44UQxSWvm66bm5txOp00NDRknqusrOSTn/xkwSomhBBCCCHE6dnL4Sw93XXZIeWOZPaea/2qZcPm+HyZ7fqq7Kzlob5EZvtAX8eg+HNLsr97m8Jtg14fqMJZS2+yg0jaTqkBmiTxdAdue8MZjxtIGWVQ8R/o3vcB4OH/IP0hMOrPcqQQotjk1dM9f/58PvvZzxa6LkIIIYQQQuQYOJFaJDj0RGqQu2xYIhTHabfu1371Wt2ne7oBSkuzy4a1nApiV9ZP4+3dLYPiVzjL8DmsYetNkbMn3QDR/snUAGKpk2c8ZijKdak1sRpg4IfQ10YdQwhx7uWVdFdWVlJdXX32HYUQQgghhBiDgROpRQKRYfcb2NPd2xmktsLqxdY2aDnVm3ltYE+3PxmjscJK1ved6GBZRR0AhwNd+BODe9VP93b3JIIEkuFBr59W4ehPunV2XbJRzWA+gPLeBarCehB/EJ06nFccIcS5k1fSfeWVV7J58+ZC10UIIYQQQogcnpzh5cP3dFcO6Onu6QzSWNefXBuK5pbsPdoDe7qb/X4unD/Tip1MUaOyw813dJ8aVMaCssbM9rae4SdHW+q9EIBgOlv3nuizw+5/JsqogoFrdwe+gNbJvGIJIc6NvO7p/upXv8qll17KF7/4RT772c9O2/W4TdPENEc+KYZpmmitR3VMvsflW5bINdmvY7HUfyLrMV5lFSruWONMVDtSLJ+dqWCyX8tiqf9kb0cKGXO6tSO5E6lFho1XWZNNmLs7/NTPzD5uafeTSqUxDMWsci+GUphac6C7i09fcAV/3L4PgM7WCPSPON/f186V9fNzylhfvZJ7W6zk+dG2LVxdu3bIusx0L+Sy6jewqfsBEqYNp5GmO/osyVQEm+Ee8pgzMZ23ovR3UCoGic3o3r9FV/znqOOcK9KOFF/MscSSnCZrpPXKK1v+xje+wapVq/jCF77A97//fdasWUN9fT1KqZz9lFL87//+bz5FFKWNGzeyceNG0uk0AJ2dncRiw//F9dVM08Tv96O1xjBGPsggn+PyLUvkmuzXsVjqP5H1GK+yChV3rHEmqh0pls/OVDDZr2Wx1H+ytyOFjDnd2pF4Kvtbq6uti46OwZOcAZgqntluO9FF5YLsbOMxM8WBg8eprrLuyZ5b7uVYwM+Brk5mljioKfPQFYrSdKIP+lcG29Nxko7K3LLqdTnV9nK6U0Fe7j1IU+sJPDYXQ1nGejbxJ7pS5TQ6+zB1lMNtv6LS/oZRXwPTNDFi76Ku5G4AdOJxujv2YlJzliOLg7QjU6sdkZwmKxgc2VJ+I066bTYbn//857nzzjv58Y9/nHm+tbWV1tahl02Yakn3hg0b2LBhA4FAAJ/PR21tLV6v9+wH9jNNE6UUtbW1o/6Ajva4fMsSuSb7dSyW+k9kPcarrELFHWuciWpHiuWzMxVM9mtZLPWf7O1IIWNOt3akb3b2R60yDerq6obcr8JXmdmOBBOcP7sB2A1YM5jHYtlj1zXO5FjAT1pr+mwGK2fN4Kn9R0lGsrOen0yEhyxrfWAV97e+QBqTU04/l1WvHLI+ddQxM7KAzqSfRmcfAK2pb9BYcwnlzhWjugamadLZ+T607QVUej8KTY36IFQ/Bkb52QOcY9KOTK12RHKaLLd7ZCNXRpx0a63R2mqIjh07ll+tphjDMEb95iulJuy4fMsSuSb7dSyW+k9kPcarrELFHWuciWpHiuWzMxVM9mtZLPWf7O1IIWNOp3akrKI0sx0NxYaN5fa4KPN5CPmj9HQGaajOdoyYNkVLSx8XnG8NF19d38Af9u8FYHdnB4sbqnlq/1GUqah2lNKdDHMk2I1SatBIzouql3N/6wsAbOs9yOW1q4et+5Ly83m641DOcx2RP+JzD52on4lSBsr3/6DnjYAG7YfwtzB8Xxp1rHNB2pHiizmWWJLTWEZap7yGl8+dO/fsOwkhhBBCCDFGnhGu0w1QWVNOyB+lrztEfVW2B1jboKMjkHm8si671vX+rk4urZuVeexTbroJE0rGaYsGmVGSO6pxTcWizPbh0JmXAVtTcSXPdP4f28NzWFfaDEBfbOsZjzkj+0Io/UsI/8B6HPsT2vs5lBp6iLsQojgU358LhBBCCCGE6FeSM5HamZNuX/8927FIgoqSbCJqrdWdHaa+oDI7FP14Xy8L66oyj52J7NraO4eYwbzE7qbOZR3fHG7PjAQdSq17Fm9o/At60uWE0lZ9gol9pMzQsMecjSr7R7D3D0/XQYj8PO9YQoiJMaqk+9XDa4QQQgghhBhP7lJ35jfo2Xq6K6qzM5YnI0nKPFaiq22Kru5solvh9lDZfy/m8b5e5tdmk249YF6kLZ3NQ5Yzt9TqKQ+nY3QnAkPuc9pFVdfjMjz0pUv6nzEJxHee8ZgzUUqhfF8BVH99v46O/D7veEKI8TeqpPvzn/88NpttxP+m61JiQgghhBCiMJRSmWXDImdYpxtyk+6+7hAN1dYQc22Dzs7c5Hh+hdVb3RoKoRVUlVrD2CM9KU53M23pOjFkOXNKssPTmyPtZ6yToQxqXbPoS2XvTR/TEHNAOVaA562ZxzrwGXT4J2OKKYQYP6PKir1eLxUVFeNUFSGEEEIIIQYrKfcQCUSJBCJn3G9g0u3vse7rPnyyC5Sioyd3SPe8ikpebrNW4Gnq62VGRTk94SjdfVEWrarlUKCT/X3txNMpXLbcn8xzShoy2wcDzZxfueSM9apyNXAgVpJ53BcfW9INoMo/hU4dhuQOAHTwq+B+I8pWPebYQojCGlXS/fd///fcdddd41UXIYQQQgghBjk9mVr0LD3dp+/pBvB3h6kbMJlaOJEkGk3g8TgBmD/gvu5jfX3MqPCyp6UDU2vmlVZxKNBJWmuOBrpZXpnt2QZYW5mdTO2Zzp28Y+51Z6xXtbOBuHYQNR14jCSB+E5MncBQzrOc+fCU4YOqX6N73gPJrYAJ8ceg5Pa8YwohxodMpCaEEEIIIYpaqbc/6Q7FME1z2P18VbnDy189g3lnV/aG7Xm+gUl3Lw2+7L61tmzyftDfOaicRk8Ni8usGc8PhU5yMjJ4n4GqXVbPeF/K6u02dZyO8ENnPGYklDJQ5Z/KPNaBO9GJl8ccVwhRWJJ0CyGEEEKIona6p1trTSwcH3a/QcPLq7OJtGlTdA1Iuue/agbzGRXZfcvM7MznB/wdQ5Z1Td35me2nO7afsf5zSpYDDJhMDQ73fou0eeaJ4UbEsRqcV2Ue6p53oFND34suhDg3JOkWQgghhBBFbeCyYZEzzGA+cHh5X0+YGQOSbm1XdA+YwXyuryKzfbyvl8bK7HrcRtyW2d7XN/REaVfXrc1sP9N55tnIq10N1Lpm0ZasIKmtn9+JdAfBxJ4zHjcSSilU+SdzntP+f0Knu8YcWwhRGJJ0CyGEEEKIolbizfYQn2nZsP/f3n2HR3KU+QP/Vk/UjCYojKRdrVabk9cbHNYR25h1AoMNNsmcseEMh1k4ogHDgeEAmyMfsEfwmR8mHWADxjhhbJxxtnedNketVlmaKE3s/v3RUs+MJksTerTfz/Pw0N1TVf2qdyj0qqqr0ka6R4KY73Fp5+pIdzLptpvNaLer5Q+MjaG7xa19tvvwMFqtagL/9NBhjMejGfdqszZhaWOnWj/Uh4lE7hF4AFjlPAkyJOwLJ98P90dezlunWMK0EsLxueSF2PNQhs6BEn6oLO0T0ewUnXTLssxF1IiIiIio6hoaU0a6/bmT7kZXAySD+uvt2HAAnqZGGKTJ/awNwPBIIK381LZho+EJtLsbtSnmz+w7grPalwIAIok4Hu3bn/V+U+91K1BwINiX92dY6TgRAOBLNGjX/NHyJN0AIOzvh3Bcn3Ilqm4lpiTKdg8imhmOdBMRERGRrtkcyUQ13/RySZLQ1KqOXo8NB2CQJHjc6rlsTH+nGwAWpWyFe8jnxflrlwMA4rKMtkRyavpTg4ey3m9qpBsA9gV78/4MC+2rYDM4EJKtSCjqHwL8kZfy1imVsL8PouWO5AV5FMrI5VDkYM46RFR5TLqJiIiISNcaUpLuiWD+bcOa29R3s73DQSTiCXS2TU4xlwT6h/xpZadvG3b68m7tPDiSnFK+PzCS9V7LSki6DcKADU1nQ4FAIKGO3IfjPYglxvLWK5UwrYFwfSN5If4qlLGroShKWe9DRMVj0k1EREREupY60l1or+7WdjXJlmUFo0MBdLa5tc8GxrJPLweAA95RHN/VoZ3vPjKCJrN6333+7IuSLW6crx3vCx4t8FMAJzefBwDwp04xL9N73WmsbwHMpybPYy9BGXs/p5oT1QiTbiIiIiLSNWtjcauXA0BLe3IV8pEBP+a1Js/HAhNIJJL7fC9yp+/V7WqwYlGrem3H0SEsdjQDAPonAgjGMhdKsxutmG9tVeuHjiKh5N5DHADarF3otq2CL2XrsMHx2e/XPZ0QRkjNvwQMXcmL0SegjH2AI95ENcCkm4iIiIh0LXXLsHyrlwNAS3tyxfKRQT86WpJJd0ICvN5x7bzL6YIk1PerD3q9AIB1k6PdsUQCzYbkFmQHAqNZ77fUoU4xj8gx9I4PFfxZLl1wLYbjDm3rsP7gXxGM7ipYbyZE0/9LvxB9HAj9tCL3IqLcmHQTERERka41FLmQGgC0tKWOdPvQ1pTcRkwxpC+mZjEa0elQyx8cG4OiKGlTzKVI8lflXFPMUxdT2xs8UuhHQZu1Cwvta9EbVUfRFcSwb+zbBevNhDAuhHB8Pu2aEvw+FDlUkfsRUXZMuomIiIhI10p5p3v69PK25uQq5IoBGBj0pZVfMrmYWjAWxc7hIW2kGwCCvph2vC/HYmorHMkp3Dv82Vc5n67D2o0DEQ8mZJMa58RjCMcLvxM+I7arpiXeMpSxD0IJ/w1KvKcy9ySiNEy6iYiIiEjXUqeXF36nO2V6+bSRbtkg0NefnnS/ftES7fi2117Big4PzEYDAOBoX3JUfL8/e9K9yrFQO97pP5w3tikd1kWQIaEv6p68omBo/IGi6pZKCAFhv3pyKzF1Kj1iz0LxfhTK8BugJAYqcl8iSmLSTURERES6lr5lWP6ku7UjZaR70I8Giwk2izqirBgE+vq8aeUvWbkaFoMRAHDf3j0wGw1YM78NANA3EIBJUhPwfTmSbofJhq4GtfzuQA9GIr6s5VKtdZ2GRqMbg/GUWCceLVhvNoRpDUTjJzKuK6GfQ4k8ASWRffo8Ec0ek24iIiIi0rWGlNXLC+3TbWu0wmRWk2jvSBAAtCnmigEZSbfLasXaNjVp7g8FEYxGtfe6BQTazOpI+aHgKOJy9tXJT2heAQCQIeN/999V+OcxNuKk5s0IyRaE5clYw88gIef/2WbN/gHAdEL6tfH/B2XsfVBG3gZFiWavR0SzwqSbiIiIiHStoYR3uoUQcDWrq477RtUFw7Rtw4TAkX5vRp3UrcMOecewrmte8t4JMwAgKidwIMd73f/SfQEskjqa/tzozqK25VrSeDwAgZG4mtTLSgTeyLMF682GEAZILb+DaHsWELb0D+V+IPZaRe9PdKxi0k1EREREuma2mGA0qdO8C73TDQDuFjWR9Y2GIMty2nvd/SN+yHJ6UpyadB/0etMWU1NSFvp+abQv+/3MjTjOtRgA4I0FMRL1F4xxoW0FzJIVI/HkQm8j45WdYj5FSC6Ixk9lXFdG3wF55O3qdHPu501UNky6iYiIiEj3pka7C+3TDSSTbjkhI+ibgCcl6Y7JMkZGAmnlF7vd2vFBnxedTU4029X7jQwk7/fSaO4VxpelbB22L9hbMEaTZMHxrjMwFrdj6m8AIxOPFaxXNrb3APYtmddj26GMvQ+IVjEWojmOSTcRERER6d7UtmHjBaaXA9CmlwPqaHeLK3muGAR6joymle92ubXjg94xCCG097onxhJTa35j20juZDptv+5A4f26AeCctsuQgAm+hDrVeyJ+AKMTTxRVd7aEkCA5PgbR9iKypQRK5B9ViYPoWMCkm4iIiIh0b2oxtWJGul0tyZFt70gQre7UpBsZSXfq9PJ9o+pnU+91C1nAY1Lb2+0byrmY2sqUrcNe8u0rGCMANFs68LYFH8ZQyirm+8a+W1TdchGSHaL9RcC4Ov2D8d9C7l8FOfAtTjUnmiUm3URERESkew2Te3VHJqJIxBN5y7qa0ke605JuSeDItKTbbjajy6nu7717dBiyoqS9190oq/fOt5ja/IZWtJrVNl7zHURMjhf1c61xnYreaAuisvrOejC6C4qS/+crNyEaIJpuAezXTPtEBkI3QxlYCSXyVFVjIppLmHQTERERke6lrmAeDuWfYu6ePtLtSp7LBoGentGMOitbWgEA47EYenw+LGtv0T6TwslfmXd4B7PeUwiB9U3L1PjkKF7zHcwb4xSrwYZWSxe8k1PMFcRwJPDrouqWkzC0QjRel/NzZey9kAPfh5Loh6IUnm1ARElMuomIiIhI92wpSXeh97pTk27faBDNruT2WNmmlwPAqlaPdrxrZAgehx0NZnUbsAlvctR6ly970g0Am5qTU7QfH34pb4ypFtiWY0I2a+d7Rm9ENDFcdP1yEUJk7uOdKvQ/UIbOgjJ4OhQ5lLscEaVh0k1EREREujc1vRwovG3Y9IXUTEYD3JNJuyIJDAz4MrYNW9Xaqh3vHB6GEAILW9wAgNHh5P1eHevPed9TWtbAKNRp4k+NvFrgJ0o6oen1iCimtGtjE08XXb+chOtrgP2DEK33QOrYDeH+n8xCSgiY+B0UJfv77USUjkk3EREREemerTE50l1oMbXp08sBoGVytFsxAAlZQTCYPlq+vDmZdO/3qiPhi1rdAAA5AjSb1frbR45CzrGwmN3YgBWOLgBAf3gUE/FIwZ8LABY3HocW62lp18bCNUq6jcsgOT4NYVSnygvrZoi2pwFhTyunBP4LysAqKBF1tXUl9hqURO4t1YiOZUy6iYiIiEj3rHaLdjwRzD+93NWcPr0cQPK9biEAAfj96Yn7QpdL2xrswNgYAKC7RV3VXECg29oMAPDHwjkXUwOALlubdtw7MZQ3zlSr3W/BK+MLtPOxsH4WLhNSE6T2FwHjqozPlLFrIY++D8rIpVCGzoMc+G/I3k9DiRe3gjvRsYBJNxERERHpntWenF4eGY/mL2szw9KgTtf2jqjvHrdM2zZsetJtMRqxYHIF8wPeMSiKgoWTI90A0ITke+Ev5tmve0FD8t3wIyUk3QtsKzAQd8Ebn9qz+xDC8dxT2WtBtNyR5WoYiE7tLR4DQluB8J1QfP9RxciI9M1Y6wDqmSzLkHPs1ZirvKIoJdWZab2Z3ovS1ftz1Ev81YyjUvcqV7uzbada/YhevjtzQb0/S73EX+/9SDnbPFb7EYstudDYeHCiYLuuZjsGe73wjgQhyzJanMmkWTYIeL2hjDYWud3o8fsQjEYxGAyiu9mlfWaaSP7a/NTAIbyt+/is953fkJym3hMaLPrndxiaYJXsGEvY4TaOAwBGx/+JjsZLdfO/QwCA7d+A8Z8WLhd7HnJ0F2BYBllRdBE/+5HytMWcJqnYuJh0l2Dr1q3YunUrEgl178ShoSGEw/mnN6WSZRk+nw+KokCSip9kMJN6M70Xpav356iX+KsZR6XuVa52Z9tOtfoRvXx35oJ6f5Z6ib/e+5Fytnms9iMxOTm6PdQ3hMHB3KuIA4DdaQF6gYA3hP6+flgMyV+OFUngSO8gBgedaXU6LMnR9BcO7sdiezLp9vWPw+wxICon8M/+/RgYGFBX+56mIWLQjneMHsBgQ/44UzUb5mE0PojFFnWE/Kj375DGT9fN/w5V74QZS6GgAQpscONjkBDMXnT0zQjhvYjJnYiPKxhUzock1S79YD9SnraY0yQFAoGiyjHpLsGWLVuwZcsW+P1+uFwueDweOJ3OwhUnybIMIQQ8Hk/JX9BS6830XpSu3p+jXuKvZhyVule52p1tO9XqR/Ty3ZkL6v1Z6iX+eu9HytnmsdqPeDqS07bNBjPa2trylAZa25twYMcAFAWwmhuxaEGH9pliAABTRhtr5s0H9uwCAHgBLO/ugsNqQSAcwWBgAiet7sI/Bw9iIBJCxG7GwsamjPu2KC1o7GlAMD6BHROH0eJphUEU9/NvNJyNe/r2IKZIMAkZAeUZeDwtUBShi/8dJr0l5fg5INEPSK1A6AfA+M/SStrxS0AC3I2AbItBsr0dkNxVjXYK+5HytMWcJslqtRYuBCbdsyJJUsn/+EKIqtWb6b0oXb0/R73EX804KnWvcrU723aq1Y/o5bszF9T7s9RL/PXej5SzzWOxH2loTH+nu1Cb7pTF1ALecXiakueKQSAQCGe0saS5WTs+5PPCYDCgu9WNV44M4Kg3gFMaOvFPHAQA7A+OYpGzJeO+EiRsbFqBx4a2IxifwJ7gEaxxLSrqZzzd8ybElSiO+m5Em8kPRQliJPwgWhvO183/DrOS5qv/7fw0lMb3Q/F+HIhmLgQnjX8HGP8ehPNGoOFSiCL/GFFO7EfK0xZzGlWxMekvciIiIiKiaVIXUguHCm/F5Zq2bVhr6kJqEuDzZ247tsSdTLr3T65gfnzKCPnzO5JbYu33517BfKN7uXa8J3ikYKypzvS8BeNK8p6vDH0MMdlfUhu1JKRmCNe3Afu/5SghQ/F/DsrgqZBHr4SixKsaH1EtMOkmIiIiIt2zpiykFg4VXlPH1ZxMstWkO32ke/rq5QAwz+GAxaBOBD3gVZPuD517CmxmdSX0Q0e8Wtl9ebYNW2yfpx0fCpW2ArkkDFjQeHHatdGJx0pqo9aEoQ2S41MQ7a9CtNwFOG7KLKR4gejTwMTvqx4fUbUx6SYiIiIi3Usb6S6wZRgAuFtS9+oOocFigs2qJs+ylD3ploTAIrcbAHDY50VcltHqsOOidSsnb5xcOC3fXt0L7e3a8eHxgYKxTre++SK8OtGpnY+G6yvpniKECcK0Amh4KwL4SNYyiv8rkH2fhzL+OygJfW2RRlQuTLqJiIiISPesdot2HB4vPNLtnja9HABaXOrot2IAvL7xrPUWu9XF0WKyjB6/DwCwplNdcE3IAo2SGse+PNPLnSY7mkwOAKWPdANAu3UhhOF4JBQ1yR+ZeLrkNvRmAu8APC8D5tOzfHg7FP+XoIx9CACgKMXvDkRUD5h0ExEREZHupSXdRbzT7WxK7svtGw0BADpaJnedkQQGhvxQFCWj3oqW5D7bO4bUrbvWzE+ucm6X1Wnuo5FxDIdzbJUFoNuuvpftjQUxHPEVjHe6k1veiGBCHd2Py/04Gv1dyW3ojjBBav4FRMsfs38efw1y/wooA+sgB74FRS5uOyYivWPSTURERES6V/JCak3Jd7oDXnVUu9OT3Hc7GI0hEMgcUT3Ok0ywXxtS99heMc8Dg6SOOidCybI7vLn34F7l7NaOX/UdKBjvdCc3b0ZcJP8A4JV/jPFYaYuy6ZUwHQ/RvjN/odDNUAZPhBL+W3WCIqogJt1EREREpHvpI92Fpx873MmRbn+WpFsxAP39mSPQa1L27n51SH0f22oyYmmbuj2YfzSZ8O/w5n5fe23KNmEzSbolYUBbw+vSru32/rjkdvRKCAkwri1YTvF+FLL/G1ASvVWIiqgymHQTERERke4ZTUYYjAYAxY10N9gtMJrU8oExdXh6flsy6ZaNAv0D3ox68xsdcFvVUfXXJqeXA8n3ujGe/PX5tbHcSfdq5yIIqKPjT468AlmRC8Y83Wntn8WhiEc7Hw3X/7vdqYTr64D5VKDh7ep/5zL+cyi+66sXGFGZMekmIiIiorowNdodGS+cdAshtNHubCPdslGgL8tItxACKyff6x4aD8EfUUfVp97rFmEBk1B/hX5uuCfre+GAupjaCU0rAAD94VG8MoPRbrPBircvvQuhxOR2afJRJOS5s8iYMK2G1PxLSK6vq//dsRui9b7shaNPQR55OxR5tLpBEpUBk24iIiIiqgtTSXcxI90A4JxMurO9060YBPr7si9wtqSpWTveP6bu172mU90GTCgCLVBXRu8b96N3PPciaZvbT9KOnx0t8A5zDo1GN+JiPgBAEgoOB3MkpXOEMC6BcN4IGJZkfhjbDmXwVK5uTnWHSTcRERER1YWpxdSKTronF1OLhGOIhGNw2q2wWdVRY3Wk25u13tS2YQCwf0wdWV05zwNJqNPFRSD5K/Qzg4dz3n9j03Lt+GXvvqJizsZpSW6z1Ru4c8bt1AthuxyS5z6I1nuzF4i+WN2AiGaJSTcRERER1YXkSHdxI53O1MXUxkIQQsDjntyrW8q+kBqQPtJ9wKuOdNvMJiz2qMn42GDy/i+N9uW8f4vFhc4G9Z3sXYHDCCeiRcU9XVfjG7U9u8Ox56EoiRm1U2+EcSmE61sZ15WxqyD7Pg858D3I3s9ACf0S8tiHoES31yBKosKYdBMRERFRXZhKuuOxBOKxeMHyjpS9uqemmDe7Jq9JAn0DvqzvZC9uSh3pHtOOp97rVkJCu/bKWO6kGwDWuZeqMSsJ7PQfKhhzNgvtx2E0ru4xLiGMV0e+N6N26pFouATC83DmBxO3A6EfA+E7oAS+BkT+ASXwzarHR1QMJt1EREREVBdK3avb6U7u1e2bXMG82Zm8FknEMTYWyqjX5XTBKKm/Jh/yJpPu7lY1GRcJgVaT2s4O7wDicu6VyY93Jd9NfmmGU8zNkhUOabN2PhD8OcZjuae1zzXCMB+i+bbCBWPPQpGDlQ+IqERMuomIiIioLlhtZu241L26tZFuZ/KaImVfwdwoSeh0qCPLh/3J0fDOJqdWps3oUONIxLHPP5wzhqmRbgB42Tfz97pXWq9CT1Sd9i6QwJHAH2fcVj0S5vWA7erCBcd/VfFYiErFpJuIiIiI6kLaSPd44fej09/pnja9HIBiAPpzLKbW5VRXOg9Go/CG1QQ/Nem2xy3a8Stj/TljaLc2o92ijpC/5j+EqFx4Wnw2doMLMJyinR8N/XNG7dQzyfl5iPZdEI7PAoYFWcsowe9BCd8LJdGbczs3ompj0k1EREREdcFqSya6xYx0u5pTppePqtOOW6aNdOdaTK3Lldxe7LBfLdPZnLyGlPe6X82TdAPA8ZOj3VE5ht2BmU8LP9PzPsiTC6rJiZcQjud/n3wuEkJA2P8VkucfkDp2Zy2jeD8GZej1UAZWQgn/o8oREmVi0k1EREREdWFqITWguHe6mzwO7XhsWE26m13JRFwxIOv0cgBYmJJ09/i8AACPww6jQf31+aVdA9rnhRZTO96VnGL+mu9gwbhzWWhfjXE5OcX+xcEvzrituUK4vo98KY3i/RDkwH9XLR6ibJh0ExEREVFdaJ7XhPnLOrBkfTeMJkPB8k2tyaTbOxxQ28gY6fZmrdvldGvHh3xqYm6QJHRNjnaLhIAd6h8BXho9irHIeM44VjiSU6H3h44WjDsXgzAijGRbE9HH0B+8a8btzQWi4Y0QnicgmvK8yx3aCjnwLSC2rWpxEaVi0k1EREREdeEd112CW3f/ED998dtYtWl5wfLulkbteCxL0i0bsi+kBqSPdB/yJVcw/9Drk+9VWwImAEBMlnH34ddyxrHQ1g5p8tfuA8HZTQnvdn0UEdmone8e/fas2psLhKEFMG8CLOfkLhS6GRh7F2z4ddXiIprCpJuIiIiI5iST2aitYD46NJl0py6kJgGDg34kEplbfi12p+zVPTqqHV+8cTVWT+7XHTqaXBTt0f79OeMwG0zosnkAAD3jA4jLiZn8OACAU1ovgrvxM9p5XO5DNDEy4/bmCiEEpKafQbS/DNG+K2e5RvwM8H8WsvfTUBIDOcsRlROTbiIiIiKas6ammI8NB6AoCqxmE+xW9b1oRRJIJGQMjwQy6tnNZsxrVOvuGxtLWwl7TaeadGNCwGZQ2yr0XveyRnVaeExJ4KmRV2f1M23yvAd9seQ083sPXYKeUPZFxY41QljUxdacN+QuFP4LEL4TyugVUOKHoQR/AiV+qHpB0jGHSTcRERERzVlTi6lFJmKYmFx8bWq0W5l8Lby/L/sU86VN6r7YvkgYwxPJd7ZXzVNHrQUEOkxq+wMTQQxMZCbvU97QcZJ2fG/fUzP5UTQGYURn43nauUMawn1H/h2yMvMR9LlG2N4D0b4TwnE9YFyTvVCiB8rwZijB70Lxfbq6AdIxhUk3EREREc1ZTa3J97q9I5MrmE+91y0JKAD6ciymtrS5WTvelzLFfCrpBgBrNLma+CujuUe7T2xagWazus/3y779SMxiijkAnNb24bTzLtNhDIVnvkjbXCSEBGF/H6TWOyBa/py/cGw7FCXzNQOicmDSTURERERzVnPKtmHae92pK5gbgJHJZHy65c0t2vErg8n3f1emJN1hXzJ53usfzhmHJCSsdS0GAEwkIjgQmt2CahaDExbzadq5WUrgF/s/AJmJY1bCdBzQthNBXJOzjDKwCrL/xipGRccKJt1ERERENGe5W1L26tYWU0vZq1sSGB7OnnRvnDdfO36hLzmKbLeYsbDFDQAYHEjW3evPv6DZcZNJNwC86j9YOPgCTun4CYbj3dr5PJMXI5HZJfNz3TjeCzTmed97/BeQ+1dAiT4LJfo8R7+pLJh0ExEREdGc5WpOJtj+sRCAzJHu4dHs72KvaG5Bo1mdPv5839G0xdSmppjHxpPX9ucZ6QaAFY4u7fhAcPZTwY2SFW9Y8L+QFQEAaDEG4YtxJfOCDF0Fiyij74Ey+m4oA6ugBH9ahaBoLmPSTURERERzlrMpmWD7x9TF0NKSbknknF5ukCRs7JgHABgaD6EvmEzOT16irh4uZAGHZAEA7A2MpCXm0y22z9OOZzu9fEqLdSHiQm23QYphZOKhsrQ7p5lPAQyLC5ebpAS/A9n7SW4xRjPGpJuIiIiI5ixnU8pIt3dypHvaXt25km4AWO1p0473piym9oY1y5KFJtSR5mAsgkf69+Vsy25sQJtF3f/7YKg/b4JeCo/9bdrxWOhWRBKhsrQ7ZwkTROtdEG1PQbS/BlguLFwnfBeUkcsgj14F2fd5KIrMqedUNCbdRERERDRnOd3JBDvgVUe6W1Lf6TaoI92ynD0BXtaUXMF8z2hy6na7qxFL29TPooPJuj/bmX87sKnR7vFEGEMRb5E/RX4e2/kYi6s/p1mE8PejXytLu3OZECYIqRlCGCHc3y+ukjwIRJ8EJm5Xp50PnQElNrs91+nYwKSbiIiIiOYshzuZYPsm3+luTUm6ZYOALCvw+sYz6gLAspQVzPeNpr8v3TW5mBpGJDhNVgCF3+teYEuOnPdO5C9bLLfZgyPR5B8HRiYeRlSOlKXtY4EQEkTzbaVXlEegeD8GRfaWPSaaW5h0ExEREdGc1ehqgBDq9O/AWJaR7snfhoeHsy+mtjTHSDcALGhS990WEGgzq/uBD4dDiCZy78Hd2dCqHfdODBX7Y+TlMDZhNG7H1Gz1TtMYto3+qSxtHyuEeT2E+ycQ7v+GaN8F0f4aRPNvCldMHIYyuEld8Tx+uPKBUl1i0k1EREREc5bBIKHR1QAgOdJtMRvhtKuLnykGNSEfGvJnre+wWNBhVxPqfWOjae9hdza5tGObUFc5VwAMhrMn8ADQaUvu8d07Xp6kWwgBs6FJG+2WhIKD3lsgK7mTf8okrOdCWC+CEEKddm4+GaL1nqLrK8ObIY++F0r8EBC6BSa8UMFoqZ4w6SYiIiKiOW1qBfOpd7oBoNWtJtKKQU2UBwayJ91Acoq5NxzGyMSEdr1zcqQbAIxxg3bcN567rQUNyaT78eGXEJXjRf4U+b1j4cdxMNKB+OTQfZPhCHZ4HyhL28cyYVwG0b4TMB5XXIXoU1CGzwNC30ITPg54/xVK/AiU+P6Kxkn6xqSbiIiIiOY05+R73aFAGPGYOvrbOvWutxCAAAYG8yXdySnme1OmmHc2J0e69/cmVzbPl3S3WlyYPznFvD88ikcHtxX/g+Sx3LER1635JeyWswAABqGgP/DfZWn7WCeEBNHyB4jWByB17IZo31585egTUIbPhTJ8IWTvJ6DIISgK37c/1jDpJiIiIqI5zZG6grkv2wrmwMCAL2f91MXUUpPu5e0tWOxRtwALBWLa9XxJtyQkXL3oIu18V6B87wHbjA4sdl0LbSF2eR9iidyxUPGEMEEYF04eN0C0/AUwriqtkfDdUAY3Qhk8A0r8QAWiJL1i0k1EREREc5orda/uycXUPJPTywF1BfP8I93Zk26DJOHDbzgNACAiyV+rd3oH88ZzQtMK7Xh/8Gih8EvSbjsefTF1JF0A+NXeN2I00l/WexAgTKshtd4J0fip0isrfijDF0BJDJQ/MNIlJt1ERERENKc5mjL36m51p65gLjCYJ+lOXcF879ho2mfHdbYDAMSEgEFRF2XbNtKbNx6XuREtZnVq+ku+fRiNlG802iAMMKe8f7zAPIIXxx4qW/s0jf19EI2fhHD+p7rquaf4Z60MvQ5KfC+U8d9DCf4MihKFkuAfSOYiJt1ERERENKc5U6aXT61g3uJOn14+NhZCNJp9UbMWmw3NVnUF9L3Ttg3rbHLCKEkQELDG1BXMD4e8GA4H88Z0nGuRdvzrQ/cX/8MU4U1d30JYNgIAjELG4MS2srZPSUKYIRo/BGF7l7rquaETouXOousrw2+E4v8ilOC3oQyshTJ0FuTA9ysXMNUEk24iIiIimtOcKdPLA1416U6dXq5tG5Zjr24AWDq5mNpgKAR/JKxdNxokLJhcUC3uT24n9s+Bg3ljet/iN2rHuwM9hX6EkjSaXOhofLt23oY7EYmXZ3syKkyYVgGeVzCKrYDtX0tvIPQ/2qGihNO2qaP6xKSbiIiIiOa01JHuqXe606eXq/89PJQ76U5/rzt9inl3ixsAIHuFdu3Bo3vyxrTA1obWySnmA+HRvGVnYmHjG7RjIWQ8ceRMxBLest+HchBGxHE80HidOu285U8Qbc9BuL5ZVHV56FzIo1dCGVgHZfRdULjnel1j0k1EREREc5ojLelWR7pbU1Yvl4sY6c61mBoALGx1AwCkoAS7QZ1i/kjfPsTk/IlSm1Vd+dwbCyKSiBb6MUrS0nAmggln2rXtw98q6z2oOEIICNNaCMkJ0XApROs9hSsljgDRp9Xj2IvqsewHwOS7HjHpJiIiIqI5zdWcsnr55EJqVosJ9gY1Qdaml+cZ6V7ibtKOD/m8aZ8talU/ExBYZvUAAAKxCJ4byj9tvN2aXKBtMOLNXXAGhBAYwPlp1/wTt5f1HjQzwrgMou2pkuooY1cDw5vQhtcDSrhgedIXJt1ERERENKc53KlbhoW046n3uqemlw8N515FvNvt1o4Peb3pn7UmP/Mkku+KP3R0b9642q3JRL4SU8xf53krQglL2rWJWF/Z70OlE1IzhOcRCMdnIVr/BqljN4Tn8eIqD22oaGxUfky6iYiIiGhOc7gatOOpLcOAlBXMJQFF5J9e3ulwwiDUEfHpI93dLcnkGf7kr9fbRvNvHTa/oVU7PhAqfzK8ynkSTp33s7Rr9xy+ApHERNnvRaUThnkQ9n+FMC6ePG8DjGuKqqvI5f8jDVUOk24iIiIimtNMZiNsjVYAyS3DgPT3uhVD/oXUTAYDOh3qO9KHfN60FaU7XA5YTeoWXTt7hrDApi6QtsM7gIQs52xzpWOhdrzLf7iUH6loHtupaedNhqN4bPDWityLZk80/QTC+ZWCq54rg6dCCZd3qzmqHCbdRERERDTnTa1gnjrS7UmZdi5LIu9IN5CcYh6MRjE6kRwtliSBU5epCfRwYBzzLWrSPR6P4WAw94hkt60dVkl9r3yn/1AJP83shMb/B7KSfU9yqi1h6ICwvRuS87MQnn8C5lNzllW8H6liZDQbTLqJiIiIaM5zTi6mFvRNIJFQR5/bW5KreytGgbGxEGKx3KtDL05ZTG33yHDaZ+evXa4d7zuQTLR3eAdztmeQDFjh6AIADETG0DcxkrPsbDSaVqWdOwwRDIQerci9qHyEoRVS8y/V5DsHZZyL49UDJt1ERERENOdNjXTLsoKgTx2lnt+aTLplg4CiACOjwZxtHNfWrh2/PDiQ9tl5a5djQZPann8suf3XoTwj3QBwQvNK7fiFsV2FfowZWd16Y8a1l0Z/lqUk6ZEwtEI0/ybrZ4r/85D7V0AJboXCVc11i0k3EREREc15Le3JBHugV02E56Uk3YpB/e9873Ufn5J0vzTQn/aZzWzC1qsuBQCIaPJX7EOBsbxxndi0Qjt+2bs/b9mZcliOw7qOu9ETSW5RZpJfxPN970Ewuqci96TyEuaTgebc+3srwf+GMrAOSvRFKJHHoCjcz1tPmHQTERER0Zy3YEmbdnxk/xAAoKM1fXo5kH8F82XNLWgwqgumvTTYn/l5ewvetH4VRERo1w6H8ifdSxs7YRRqxr83eKTQjzFjrdZl8Dg+iOF4ckszX+Q5HPbdXLF7UpkZl2AQDwGuH+csooy+E8rYvwLhv1QxMCqESTcRERERzXldSzza8eF96nvWjQ0WOO3qPtayYTLpHsq9V7dRkrCiRd3mq9fvRySeuRjZgmYXhCyAmHpeaKTbJBnRbe8AAPSMDyKciOYtPxtnt12Go7H5adf6Q0zO6osBsLy+YCnF97kqxELFOiaTbq/Xi5NOOgkbNmzA2rVrcfPN/AsfERER0VzWtTQ5NfzIvuTiZh2Ti6kpBkBB/pFuAOhyqSuTKwB6A5kJeufke90iov6aPRgOwhvJvy/2ssZOAIAMBS/7KjPFHADsRic+tupOvDTepV1LKIa07c+oPoi2p/KubA4Aipz7D0hUXcdk0u1wOPDoo49i27ZtePrpp3HjjTdiZKQyq0USERERUe21L2iC0aRO4z6cJemGEFAkYCjPO90AsNDp1o57fL6Mz6eSbmki+Wv2iyP5p42f3LxaO76z97G8ZWdLCIFVTe/FyOQ0c4NIwBet3nZlVB5Cap5c2fzJnGWUwZMg+z4HJcb39mvtmEy6DQYDbDZ1BctIJAJFUfgXPiIiIqI5zGCQ0LlInRred3hE+93P7WjQyiiSwOhoKG87UyPdAHDYn5l0z59KuoPJX7OfH86fdJ/ZejyazQ4AwEvefZAVOW/52Tq3/Z2YkC3a+U4fp5jXK2FoAUwn5S4w8ScoI2+CosSqFxRl0GXS/eijj+LNb34z5s+fDyEE7rjjjowyW7duxaJFi2C1WnHKKafgmWeeKekeXq8X69evx4IFC3DdddehtbW1TNETERERkR65W9XENh5LYCIUAQA0pSbdBsDnH8/bxkJnMunu8XkzPu9scsJsNEAKGbRrL4705m1T3a97IQBgPBHBQDj/e+CzZZYsOL7pEu18fPx/EI5n/gGB6oPU8luI1nsgnJlbw2nGf8lBxhrSZdIdCoWwfv16bN26Nevnv//97/HJT34SN9xwA1544QWsX78eF1xwAQYHk1OFpt7Xnv6fo0ePAgDcbje2b9+OAwcO4Le//S0GBgay3ouIiIiI5oZGZzLBDvrV96zdjekj3T5vgaTb5daO945l7sFtkCQs9jRDxAVETF2cbbdvqGBsS+zJBc4OhI4WLD9bC+ynpJ3vGPt5xe9JlSOMyyBsl0M03ZL1cyXwX1AGVkIefD2U4E+rHB0Zax1ANhdddBEuuuiinJ9/97vfxQc+8AG8733vAwD85Cc/wd13342f//zn+Nzn1JX6tm3bVtS92tvbsX79ejz22GO4/PLLs5aJRCKIRCLaud+vLkogyzJkufjpP7IsQ1GUkurMtN5M70Xp6v056iX+asZRqXuVq93ZtlOtfkQv3525oN6fpV7ir/d+pJxtsh+ZuUZXMsH2jYXQ2uGCq9GqXVMkIBAMIxaLw2DIPjbVYbejuaEBoxMTeP7oUcTicRik9LJLPE3Y1TcEERZQTApGI+O48cW/43Pr35AztkWTK5gDwP5gH05tPk47r8SzbDStSjsfGb8bsvyxsrWfSi/fhWOiHzGdAVgvB8K352ikF0rwO5At75lxfMxpkoqNS5dJdz7RaBTPP/88rr/+eu2aJEnYvHkznnwy90ICqQYGBmCz2eBwOODz+fDoo4/i2muvzVn+pptuwle+8pWM60NDQwiHw0XHLssyfD4fFEWBJBU/yWAm9WZ6L0pX789RL/FXM45K3atc7c62nWr1I3r57swF9f4s9RJ/vfcj5WyT/cjMGUzJ6bVHDh2Fo8UIJJIDK4okoCjA/v09cKUk6NNtaPHgH0cOIxCN4PHdu7C6uSXt83ab+r60CEuAQ/2l/Jbdz+AtzUvRarFlbbMhnJyOfmDsCAatyRmclXqWbcbPYTD+DQCApPTgzv2fx4n2D8MkzGW7B6Cf78Kx0498AFYsRSN+BgnZX1UIDv0MXt9FM4qPOU1SIJB/4cUpdZd0Dw8PI5FIoL29Pe16e3s7du7cWVQbhw4dwgc/+EFtAbWPfvSjOP7443OWv/766/HJT35SO/f7/ejq6oLH44HT6Sw6dlmWIYSAx+Mp+Qtaar2Z3ovS1ftz1Ev81YyjUvcqV7uzbada/YhevjtzQb0/S73EX+/9SDnbZD8yc20dyeTYKCxoa2vDolDKSNVkmGazHW1tudf7OXvpMvzjyGEAwMFIGGe3taV9fsKyRfjFUy9DGpeQSLk+YpKxZlrZKba4AzioHvswgbaUcpV6lm24Ci/vvx3txr0AAKfxz9ilHIdz299TtnsA+vkuHFv9yPvU/wyuyvqpU/oJwu43o9XTNqOkmzmNymq1Fi6EOky6y2HTpk1FTz8HAIvFAovFknFdkqSS//GFEFWrN9N7Ubp6f456ib+acVTqXuVqd7btVKsf0ct3Zy6o92epl/jrvR8pZ5vsR2bG2WTXjkOBMCRJQpMzeU2ZDNPvD+eNeWWrRzs+EvBnlD2+S50qLo0ZIC0UkIU6wr4vMIKz5y/LHpvZjkZjA4LxCWz37YU3FkSzJTm4U6ln6bG9CYj+t3b+/NhvsHn+lWW9B6Cf78Kx1o8ojddBCX4r62dG0QtJWjqj+JjTqIqNSX+RF9Da2gqDwZCx8NnAwAA6Ojpy1CIiIiKiY13qQmoBr7qQWvrq5erCZ15f/sXUFqTMdDySZduwNmcjWh02CAi4Djdq1/cUWFDNYUxOPf/urt/nLVsur5/3QRyNurVzl2EcL3v/yZWu5wjR+AGI9p2A7f0ZnzXjg8DQKVAS+VfXp9mru6TbbDbjxBNPxIMPPqhdk2UZDz74IE477bQaRkZEREREeuZwJ5PawGRi3WAxwWJS36eeGun2+SbyttNub4RxcoTryOQCu9Ot75oHABj3xbVre/0jedtd41ykHT89+hq80WDe8uVgEEb0RJPT7psM4/jd4W9hp//Zit+bqkMICcK8IfuHig+K97qqxnMs0mXSHQwGsW3bNm0K+IEDB7Bt2zYcPqy+O/PJT34SN998M2699Vbs2LED1157LUKhkLaaORERERHRdA5XMukOTibWQgi4Jke7FUkd6fYVGOk2SBLmN6p7fudKus8/foXavixgnXyj8+h4/r2w3919Xtr5du+evOXLJShbEJ/8i4PHFMAZjXtwf9+PqnJvqhLLuYDphOyfxZ6DEnu1uvEcY3SZdD/33HPYuHEjNm7cCEBNsjdu3IgvfelLAIB3vvOd+Pa3v40vfelL2LBhA7Zt24b77rsvY3E1IiIiIqIpqVuGBVISa49bnQKuSIACoOdI5v7b03U6XWo70Qj8kczdbF6/egmEmsPDEFNH0gcmAojJiYyyU7rt7fj86uT71INhb8E4yuEN7e+GN578g4RVisFjOFyVe1N1CGGGaP4/dap5FsrYlipHdGzR5UJq55xzTsH3SD7ykY/gIx/5SJUiIiIiIqJ650hJuoP+5BRyT9Pke9dCQDEAL73cU7Ct9Pe6/VjjSV/F2G4xo83RiAF/EImwApjUhL5/PICuRnfOdj2W5GfDUW/BOMrh9W1vxwFbJ57r/3e0mtQp7W5D4T88UH0RQgAQgOcRKENnp38oH4US+SeE5fSaxDbX6XKkm4iIiIio3BrsFkgG9dffgDdzpBtQF1MbHPRjYDD/VPBCi6kBQGezWiY2kdyWrNAU89aUpHsokr9suQghsMRxBg4nNsEXV/8wYZUi+HvfL6pyf6ouYZgH2D+dcV0ZuxpKor8GEc19uhzprheyLEOW5cIFU8orilJSnZnWm+m9KF29P0e9xF/NOCp1r3K1O9t2qtWP6OW7MxfU+7PUS/z13o+Us032I7PjcDXANxpC0DehxeZxZ24b9sorR+A5x5Gznal3ugHgsM+X9efsdDvxAo5CRIV27ZXRPpzc2pWz3SZT8g8Aw2Gv9vtmNZ7lu7s+jYd6r4AL6iwAX+gHSCT+BULMfm95PXwX2I+ktGV9D6TQtzOuK95PQGn6TUXimIs5TbFxMekuwdatW7F161YkEuq7OENDQwiHM9/hyUWWZfh8PiiKUvJG8qXWm+m9KF29P0e9xF/NOCp1r3K1O9t2qtWP6OW7MxfU+7PUS/z13o+Us032I7PTYDfDNxqC3xvC4OAgAMBiSP7iLBsEAAW7dvXguDUtOVoB7IlknT0D/Vpbqdxm9VdtEU7+/D9+7Qmc5+yCWTLkbNtpsMGfGMfgxCgGBwer9iwNsKPTdBoU3AsAaDaGsK33Bsw3fWRyavLM6OW7wH4kva2g/+dY5p62lVjs+azf5XLEMRdzmkAgUFQ5Jt0l2LJlC7Zs2QK/3w+XywWPxwNnytSiQmRZhhACHo+n5C9oqfVmei9KV+/PUS/xVzOOSt2rXO3Otp1q9SN6+e7MBfX+LPUSf733I+Vsk/3I7LhbHOjvGcNEKIqW5hYYjAYs7Y5on0/t1T3mjaKtrS1nO2sbku+Hj8ZjWcuu7u4EnnkFUlDCfIMLRxM+jMXCGDUrWNecu+2OIy3wB8cxGg/C1dIEkzBU7VlaI9fghYF7tXOffDuarV3odn1wxm3q5bvAfiSzLcW4ASK+Le2zfN/72cQxF3Maq9VauBCYdM+KJEkl/+MLIapWb6b3onT1/hz1En8146jUvcrV7mzbqVY/opfvzlxQ789SL/HXez9SzjbZj8xc6rZh48EoXM12tLckB1GUyQHoI71jeeOe53DAJEmIyTKO+P1Zy75uxSIYJQlxWcbEQAJoVa/v8g1hQ+uCnG1329uxO9gDBQp6w0NYYp9ftWfpblgLu/3LCIW+rF074PserNYLMK9h8Yzb1ct3gf1IelvC+Z/A6FumXUfBVwqY06iKjUl/kRMRERERVUhj2grm6mJqbU3J96iNDeqY1JEjo3l30zFIErpdbgDA7pFh7B0dySjT3GjDKUvV97eD3ph2facv//TdRfZ52vGTI6/kLVsJq1znYTCW/j77UyP35ihNdc24AsJ5Y9olZfCUGgUzdzHpJiIiIqJjRupId8CrLhjWYDGhscECABBG9dfjUCgCb8oK59m8/bi1ANStwH710rasZVZ0qMPb0kTy1+5Xx/KvEN1t79COf3nwbxgIV3f7Lpe5FXHjG9KuvTj2UFVjoOoRtsvTLyg+KHKoNsHMUUy6iYiIiOiY0Vhgr+6oLGNqfHtoOP8iSe86bh0MkwuMPd17JGuZrhYXAEAkBFqM6irpL40exUQ8lrU8AKxzLYU7ZRXzXx+6P28clfDWri9gXOnUzk9r3IeEHMlTg+qZaPxE+gXFX5tA5igm3URERER0zEgf6U6OZE9NMU8oCjC5ULfPN4F8HBYLVnvURaf2jAzDH8nc1aar2a0dtwt1ynZMlvH8cE/OdhuMFvzPiZ+CNPmr+nbv3rxxVILd6MQa91u1c4sI4dWhT1Y9DqoO0XgtIFLWNhg6G4qiz2266hGTbiIiIiI6ZjjcyZHugC+ZdHtS3uuWJ1cw9/nyTy8HgBPnzQegTjHf1p85bXxqpBsApGBym7Dto0fztuuxurHa2Q0AGIiMIZQofpvaclnkvjbtfHjiAUTiQ1WPg6rEvCn9PHxHTcKYi5h0ExEREdExo9GZMr3clzm9HEiuYF5M0r3Gk9xe6aB3LOPzeS4n7BYzAGDPweRiawcDmWWnW9qYnN59OJx/8bVKkETmRkcHAndXPQ6qDuH4VNq5MsF/63LhlmGzIMsyZLn4aReyLENRlJLqzLTeTO9F6er9Oeol/mrGUal7lavd2bZTrX5EL9+duaDen6Ve4q/3fqScbbIfmR17StLt94a0+FrdyWnn6l7dCsa84wXjb7fZteO+QCCjvCSAfzl9A3760DNARGjXDwRGCra9yJZcUO1odLgmz1KS2iHLA9p5X+AOdDdeCIsh/17OqfTyXWA/UqAtadqWcLFXst6LOU1SsXEx6S7B1q1bsXXrViQSCQDA0NAQwuHip/rIsgyfzwdFUUreSL7UejO9F6Wr9+eol/irGUel7lWudmfbTrX6Eb18d+aCen+Weom/3vuRcrbJfmR2ovHk6PXwwBgGB9URZItIaNenRroHBka0z3MxRaLa8aGR4azlN3Q0AQCELNCgGDEh4tjvy142lTnl18y+oFq+2s+y2/if2B/5CIRQF35T5B14uveNWG65DQZhL1BbpZfvAvuRwm2l/SlFGcPY4D2I4aSyxDEXc5pAIP9ii1OYdJdgy5Yt2LJlC/x+P1wuFzweD5xOZ+GKk2RZhhACHo+n5C9oqfVmei9KV+/PUS/xVzOOSt2rXO3Otp1q9SN6+e7MBfX+LPUSf733I+Vsk/3I7Jik5Eh3LKKgrU1NM1ZFkzHKRnVEOhKB9nkuDa7kO9u+RDxreYsj+fuiJWHChDEOXzwCk6sRTRZbRvkpy+0JYHJR9HFDDG1tbTV4lm2wTdyGV4cu1a7ICMHg2IU224VFtaCX7wL7kSLaiv0BGHuHdtqETwJtO8sSx1zMaaxWa1HlmHTPgiRJJf/jCyGqVm+m96J09f4c9RJ/NeOo1L3K1e5s26lWP6KX785cUO/PUi/x13s/Us422Y/MnNOdHJ2NReNabIvnt8BokBBPyJBNatLt908UjN1ptcJmMmE8FsNAKJi1fJPdBofVgkA4AnkCgLqIOQ6HfGhpaMwoP6XN2qwdj8YDNXuWLQ1LM67F5Ehd/l7KfqRAW5YNmD5hOtu9mNOoio1Jf5ETEREREVWIyWzE/z31Jfz1tZtw4y8+kLxuNGDRfDXJlY0CCgCfP/+WYYCaELTb1cR5IBjMWa6zSR3tDgeS09gPBEZyFQcA2I1WWCV1EbZXxw8hKscLxlMJRsmMUMKcdq1n/OWaxEJUj5h0ExEREdExxd3SCKPJkHF9+QKPeiAEZJMoavVyAOhoVJPuUCwGfySStczU1mFKOLmY2mvegaxlpwgh4LG6tfPbex4qKp5KWNH6o7Tz8Xjm9mg0R0x7V1+RQzUKZO5g0k1EREREBGBZV6t2LBsFvN5xRCKxgvUWOJPvdR/2ebOW2bBQ3c9bpCTd/2/3M+gJZi8/5U3zTtOO/zbwDBRFKRhPJaxwnoXt48u081CMSfdcJdw/TjtXBk+DIo/WKJq5gUk3ERERERGA1pT3vZXJ35KPHvUWrLfY3aQd7x/LnpycsrQLACCiIu36A0d35237sq5zsNa5BADQHx7Fq74DBeOpBCEE3rPoK9p5ODFckzio8oTl1GlXwlCCP61JLHMFk24iIiIiIgBOe8pKxJO/JR/pLTzCt6QpmXQf8I5lLbOywwNngwUCAo2DyRXUByYKbzl00bxTtOMHB58vWL5Smq0rtWOPcQD39PxHzUbeqcrie2sdQV1j0k1EREREhPSkW5HUEene3uxJdKolTclVxvePZS8vSQKblqij3dGRZKI6MF446T6j9XjteG+gt2D5SjFKDkAk/8BgiP8Rjw/9pWbxUAUZutPPo4/VJo45gkk3EREREREAZ2NyBFrRRroLJ91dThckoSbpB3JMLwegJd0ilpxiXsxId4PBAqdB3c97OOItWL6SWqzJd8xNQkaP77uQlUSeGlSPhO1dtQ5hTmHSTUREREQEwJVlpPvw4fzbegGAxWhE1+Riage8YzmnXJ+xXB09FLKAYTKr7y8i6QaAZqO6ufdoNICEXLskd1XL9WnnHaYB9IT21Cgaqhil8AKCVDxjrQOoZ7IsQ5anbx+fv7yiKCXVmWm9md6L0tX7c9RL/NWMo1L3Kle7s22nWv2IXr47c0G9P0u9xF/v/Ug522Q/Ujk2q0k7NloMAOLYvacfkUgMpixbjKVa7G7CIZ8XoVgM/YEA2ie3EUu1sMWFhS0uHB7xQY4ogFUd6U4kEhBCZGlVJcsymkwOHIwMQIaMkYgfrRZXzvKVZJJacer8B/HU0Tdo13b5/owu22dz1tHLd4H9SAltmV4H4LvpdRJBQNiY06QoNi4m3SXYunUrtm7dikRC/evi0NAQwuFw0fVlWYbP54OiKJCk4icZzKTeTO9F6er9Oeol/mrGUal7lavd2bZTrX5EL9+duaDen6Ve4q/3fqScbbIfqSy71YRQOAbDZJIdjcbx3PO7sHRJa9567WaLdvzCwf04sa0ja7mTutpxeMQHERVQrArCiThePLwPCxqcOduWZRn2hFk739N/AHLD/FJ+rDIzwim9C375dwCAkfE/4UDf22A3ZP9DgF6+C+xHSmmrBQ5chAbcq10JDP0cE3gHc5oUgUBxM1WYdJdgy5Yt2LJlC/x+P1wuFzweD5zO3B3kdLIsQwgBj8dT8he01HozvRelq/fnqJf4qxlHpe5VrnZn2061+hG9fHfmgnp/lnqJv977kXK2yX6kstwOG0Jhn/ZONwD09Y3jtFPb8tY7rnM+sGcnAMALoK0te/kLNq7Bn7bthhQ0QHaqo2TbI6M4oXtZ1vKA+iznjbYCE+p5yBrP2X61NCU+hSd61aTbYZjAPaGfYsuyb2ctq5fvAvuRUtv6HjCYTLod1j44nG3MaVJYrdbChcCke1YkSSr5H18IUbV6M70Xpav356iX+KsZR6XuVa52Z9tOtfoRvXx35oJ6f5Z6ib/e+5Fytsl+pHKcjVb0DvkQjiVgAyAAHDo8UvBnWN6cHAnfPtiP90gbspbbtKQLQgCSzwDMV9+bfbh/H/511fS9kdMtSxnZftG7B+fP21TUz1MpFskJf8IOpyEEmxTDUHgfYkoEFkND1vJ6+S6wHymtLaX1HijDb1RPwn+EcN0ISZKY00wqNib9RU5EREREVCNT24YpiqJm3AD6+30F623omIcGozqe9fDBA5BzLKZmNhrRbLdBRAQMcfVX8eeHjyCSiOdtf4VtAaySOsX8udGdkJXav+MaSCTfgT/HuRPbBq6BwpXM5xbhTj+f+L+ahFHvmHQTEREREU1KXcHcYleT3L5+b8F6FqMRp3ctBAAMj49j1/BQzrItjTYICEgB9VfxSCKO54Z68rZvFAZscKtT0L2xIPYHjxaMqdIMhgVp56Hoc9g+cnONoqGKkOxpp4r/yzUJo94x6SYiIiIimtTstGnHTa1qwjE46EciUXhkeWNHcgr4AW/u/b1bGifv4Uv+Kn7n4VcKtn9i80rt+LnRnQXLV9qG5rdnXNsfeKIGkVDlWDIv5ZjFQbkx6SYiIiIimtTW7NCO7S71/eR4XMbwSOFVirtcydW7j/j9OctNJd2SzwCbQR1N/9uRXTn3955yUtMq7fjPvY/WfIr5StdbM64NhAdqEAlVihBZ0kWZ/8alYtJNRERERDSprSm5v7bZlnxnua/PW7DuAkdyV5sj/tzvgU8l3UIRCHvVd7kDsQiCsUje9uc3tGK+VV2wbTQawG09DxWMqZIMkgXzG9857WoEewLbahEOVYsSrXUEdYdJNxERERHRpNSRbhiFdjg4mHvkesqC1JHuQO7yrY6U92RjKfcIBwve4/XtJ2jHr/j2FyxfaStbvpJ2bpHi+POR/6lRNFQR9g+mnycO1yaOOsakm4iIiIhoUupId1ROTt8eHimcELc22GAxqCuYH/HlHulucybvIeIpSfdE4Xu8d9EF2nH/xGjB8pUmhMDqlpu080WWYSQSPYjK4RpGReUkOT4NWM5PXgh+o3bB1Ckm3UREREREkzwpSXcwkpxGO1JE0i2EQJdTnWJ+2O9DQs7+zvXq+Z5knZSR7qEiRrolIWFBg1r/4Hg/DoVq/35to2VN2vnqhqMYjfTXKBqqCKk5eZzYC4CLqZWCSTcRERER0SST0aCtYO4LJUdri0m6AWBZcwsAIJpI4HCO97oXtTZpx6lJdzEj3QBgnVx8DQC+vfO3RdWpJJPkSjt3SGEMRXprFA1VgrC9K+28CdcA3JO9aEy6iYiIiIhStLeo73WPBSa08bzh4cKrlwPA8pYW7Xj3yHDWMgZJQodrckQ9ZXr5Y/37IRexHdM691LteGeg9u/XWgztGdeOTtT+fXMqH2FKn81gwh4g+kiNoqk/xloHUM9kWYacY9pQrvKKopRUZ6b1ZnovSlfvz1Ev8Vczjkrdq1ztzradavUjevnuzAX1/iz1En+99yPlbJP9SOW1uRuxAwOQFQUOdwOC3gkMjwSL+lmWN6ck3cPDOG/x0qzlvn/FxXjXj38HKSypM3UF8PjAAfzHs/fgayddlFZ2+rN86/yz8Kcjj2qfh+MRmCUT9ORA8FXEE3FIQtLNd4H9SHnbkuUQUOH8RC/fnVyKjYtJdwm2bt2KrVu3IpFQp1IMDQ0hHC5+kQhZluHz+aAoCiSp+EkGM6k303tRunp/jnqJv5pxVOpe5Wp3tu1Uqx/Ry3dnLqj3Z6mX+Ou9Hylnm+xHKq/RatCOGxwmBL0TGBkJor9/AJIk8tQEWpH8/KnDB/H27sVZy3nMApdtXIk/vrgLhgEjEh3q1mH3H9mJf194YlrZbM/yNOdqPOnfAQDY0bsX8ywtqKUu0zfQE/scAEAIIB5/Gl9/7b14b8tXYIFdF98F9iOza6tt2rnPF0UsMFjRe+q9HwkEipsBw6S7BFu2bMGWLVvg9/vhcrng8XjgdDoLV5wkyzKEEPB4PCX/n1yp9WZ6L0pX789RL/FXM45K3atc7c62nWr1I3r57swF9f4s9RJ/vfcj5WyT/UjldXd6AOwGANjdNgz1+JFIyLBaHXC7bXnrtno8aLfbMRAK4bmBAdjcbjSazVnLLvCoibKx36Ql3WOxMNytLTBLycQ/27NcFOrUku4Jm4K2lukpUXW14RL4+n8Pf/RFAMCahqN4PNCIPtNubGq6QBffBfYjs2zL92Yg8lft1G3bDeG8rKL31Hs/YrVaiyrHpHsWJEkq+R9fCFG1ejO9F6Wr9+eol/irGUel7lWudmfbTrX6Eb18d+aCen+Weom/3vuRcrbJfqSyOpqTgypGS3La9uhoCM3NjdmqaCQA5y9djl+9tA0xOYGne4/gvKXLspbtbFIXIBMQWGVtx86wuhL5cCSEBXZ3Wtnpz3KJY7722Wv+Azjds7bon69SEkr6QnCNhjDu7rsFyxs3QAiDLr4L7Edm3pZifxeUlKRbhG+F5P5CRe850zrVUmxM+ouciIiIiKiG2lIS687uZnzv21fgl//vg+jubi2q/imdC7TjXTkWUwOAhS3u5ElydzL0jxeesrrenUzk7+h9DMHYRFGxVVJcTo+7UVJfw/zr0ZtrEQ6Vm+mkjEtK6Fc1CKT+MOkmIiIiIkrR1uzQjiNyAuvXL8SCBc0wmQx5aiUtS1lMbc/oSM5yC1vdyfuMJxdk6p8onHQ3mR1Y41w0GWMM9/Q9WVRsldTReGna+TLrINqNXuwLvVSbgKishMhcz0AJfLUGkdQfJt1ERERERCk87uRId9+wv+T6i9xNMEwmKPvyJN2uBitcDeo7oQF/RLveG8q+v/d0Vy66QDveF6z9vtjdrmvQZntj2rW1NjUuWdHn6tNUGtH0s4xrCv9tC2LSTURERESUwmI2omNyr+7D/WNQitg7O5XZYEC32w0A2Dc2lnfv7cWeJgCAfzQ5v/zhvr1F3We9exkMQv11/mCov6QYK8EoObC27XuwGrvSrrcbfTgS21WjqKiszGdlXos+U/046gyTbiIiIiKiabrnNQMAAuMRjPrHS67f5XQDACKJOMYmcr9vfcKiTgCACAu0m9VE/9mhwxiNFL6nSTKiq0Fdtfzw+AAScqLkOCtBTEsx1tqO4C/eH6J3Yl+NIqJyEUICbB9Ou6aMvbdG0dQPJt1ERERERNN0dzRpx4f6x0qu32pLbi02MpE7gd60RF10TUCgNaFOa1cAvDZW3Mh1p80DAIgrCQxHi5uWXmkGkX0bpZ/uu77kWQOkQ6bVGZeU6PM1CKR+MOkmIiIiIpqmu6NZOz7cN1py/dSke3g8d9K9prNdO5ZTir3mHSjqPvOsyUXb+iZyvz9eTcuar8+45jSMQ4GMXx/6Rg0iorIyb864pIy+uwaB1A8m3URERERE03TPm91Id0tDcSPdzfYGNFrMAIDQaEy7vmOsyKS7IZl07/AfKjXMimiynpp5zRACAOz0P4vBcE+1Q6JyEgIh/EvGZTnw3zUIpj4w6SYiIiIimma+x6Ud948U3sJrulabXTvON9IthND26x4YDGFqU6aDweJG11NHun9+4G5EE7E8patDCIHjPN9Lu2aTkgvFjUUHqx0SlVkI12S5uLX6gdQJJt1ERERERNO0NSW3DRsYLT3pbrE1aMcjeZJuAFrSLRSBBpgAAHv9w0XdZ5WzO+38Vf/B4oOsoHb7G3HK/Lu1c5uU3BLNFyvuZyM9k4DGL2RcVZRwDWLRPybdRERERETTmE1GtLjU0eqBkdL36m5tSH2nO5S37JrONu04EVYXGhuPx/Cpp+4seB+HyYYPLnmLdv6X3sdKDbVi7OZlMAj1jxdu4wRajepz/EvvTxGVmZzVPduVmddCv6h6GPWASTcRERERURZTe3UP+0KIxUvbjit1evlQgZHud526XjuOhZOre99x6GUEooWT09e3n6Dt1/3E8Ms4EOwrKdZKMhmS78avt/VAXZsd2BvYXqOIqJxE82/SzpXgd6EokRylj13GWgdQz2RZhizLJZVXFKWkOjOtN9N7Ubp6f456ib+acVTqXuVqd7btVKsf0ct3Zy6o92epl/jrvR8pZ5vsR6qnrakRrwJQFGBg1I/5ra6CdaY0Wa2wGAyIJBI47PPmfQ4NJiPOO24Z/v7qXijG9C21Xhg+gjPaFuV9ls0mB85rPxn39T8NANju3YNuW3vWstVmktwII7lwWqMURlBuQDCW/5lUAvuR8rSVWlcynpjxuTJ4JpSWvwGSe9b31Hs/UmxcTLpLsHXrVmzduhWJhPqXzqGhIYTDxU+NkWUZPp8PiqJAkoqfZDCTejO9F6Wr9+eol/irGUel7lWudmfbTrX6Eb18d+aCen+Weom/3vuRcrbJfqR6nA0G7Xjn3h4Y5dJG8LoaHdjr8+KgdwxH+/thzPMcnGb1XsZhI2KNyUXHHju8G8thK/gsT7OsxH1Qk+5tg7txqnFFSbFWihw3p52vbTiCp0LLMejrw2C8uguqsR8pT1vT65rxX3Djs8kCig/h4S/Cjy/O+p5670cCgeLWe2DSXYItW7Zgy5Yt8Pv9cLlc8Hg8cDqdRdeXZRlCCHg8npL/T67UejO9F6Wr9+eol/irGUel7lWudmfbTrX6Eb18d+aCen+Weom/3vuRcrbJfqR6ujvbAewCAMRgRFtbW/4K06xsa8NenxcJRUHYYsaSpuacZZfMawNe3AXJa8Amx0I8EzgMABiSI2hrayv4LJvkZpgOGxFT4jgQHSg51krpHZCAlL9V2A3qHxQkq1L1GNmPlKetzLqXAIOfTStjxd9hbfvhrO+p937EarUWVY5J9yxIklTyP74Qomr1ZnovSlfvz1Ev8Vczjkrdq1ztzradavUjevnuzAX1/iz1En+99yPlbJP9SHW0uJKLoflDkZJ/jqVNye287t23Bx/ddFrOsvOb1KnrAgJnWpdpSffRcT8kSSr4LC2SGcsdC/Ca/yCOhocRTEzAabJnLVtNLQ1nwBd5NuP6EyN/xWhsAFd0fwaSqN73g/1IedqaXjfbJGshIhCiIW+9SsdZacXGpL/IiYiIiIh0wN2YTBh8wYmS658wb752fPMLzyEUjeYsu6g1ueDYoUEvmi1qwn903Ff0/VanbB/24tjuUkKtmIWuf4XHdqF2LisCU4up7fA/g0OhHTWKjMpp+oJqAKAMrIfsv7EG0egPk24iIiIioixcjmTS7Q2UnnS/bmE3NrTPAwAEo1HsGR3JWXZRa5P2zvfu/iF02tSR74GJAKJycSunb2perR3/vf+5kuOtBEmYcVzr92CTTpg8V2BMGRf945EfQVGUXNWpTgjzyYDIstDg+C+gJPqrH5DOMOkmIiIiIsoidaTbO4ORbiEE3rg8uaDZ3jxJt9lowJI29Z3vA0NjmGdT1w1SAPSPF7dP+Iam5XBNTinfEzxScryVZEKrdrzQknwOY9EB7PRnTj+n+iPaHs3+gTxW3UB0iEk3EREREVEW7lmOdAPA8ubke917x0bzll3RoSamcVlGg2LSrh8tMumWhIT5DWobo1E/oolYqeFWjMNwpna82DIEi0jG9s/hu2oREpXZ9Pe3pyjhe6ocif4w6SYiIiIiyqLBYoLJqG7lNZORbgBYlpp0j+Qe6QaAdV0d2nFsIjkFu7eE97rbrckV0gcj+hlhtEvp+zl3mZPPYn/oFcRl/fyBgMos9NNj/hUCJt1ERERERFkIIeBuVLcE8s1wpHuewwGH2QIA2D7Qlzf5WNc1TzseHU3e72io+KS7IyXpfnzopVJCrSiDaEw777aMYGpBNQB4YvjOKkdE1aQMrARCN9c6jJph0k1ERERElMPUYmreYHhGo3WSEDhpficAYGRiAvvzTDFfOc+DRosZAPDa/iHtem+R08sBYEFDcu/rP/c+ioSSbTOn2mhpODft3Joyxfwl7+PVDocqQLQ9DZhzbI0X+g4EgtUNSCeYdBMRERER5TC1mFosnsB4eGZToE/pXKAdP3e0N2c5s9GAC9epC69FxpMrlu/2DRZ9r7PbNqDNom4/NhoNYIf/YInRVs7a1h+mnX9o6ee04/7wIXijw9UOicpMSE2Qmm+F1JF9yzor/lbliPSBSTcRERERUQ5pi6nN8L3u1a0e7fiwP/9U8X85fSOEAJAADGH1V/WXx/qxzVvctktWgxlXL75IO39i6OXSA64QISSsaP6Sdh5NHME862Lt/L6+W2sRFlWMNeNKA/5Ugzhqj0k3EREREVEOK7vbcMpx3Tj/1JUwSGJGbXQ0OrTj/mD+6bXLO1px4qJOCAhIA0bt+q96thd9v1Na1kCa/DX/n8OvlBhtZdnNy7XjwdB9WNy4RjvvmzhQi5CoQkTbIxnXjOipQSS1x6SbiIiIiCiHq960CT+87jJ87UNvQkeLc0ZtzHMkk+6+QKBg+flu9T7SmAEei7oA2bNjvYjLxb2f7TTZcZxLHUE+Gh7GSKT4hdgqzW05CVaD+o67L/ICzmm7TPtsOHoUjw3dUaPIqNyE1ARYL878QIlXP5gaY9JNRERERFRBjWaztoJ5X7Bw0t3uUhNtAYGFVvX97ISiYDBcuO6U1c5u7XhXQD+ji0JIcFk3AgBkJYJdw/+O1FXM7+v7JaJyuEbRUbkJ55cyL078svqB1BiTbiIiIiKiCpvXqCbSfcFAwVXQPY7k9lp2mLXjIyVsHbYqJel+auTVoutVg920TDv2hp9Ghyn95/rKK1dgMKyfPxTQzAnJDeH8RvrF4DdrE0wNMekmIiIiIqqwqSnm0UQCw+Pjecu2Oe3asTFh0I6PjpeQdDsWasf39j2FbWN7iq5baVbjgrTz5TZbRpm/9P60WuFQpUn2wmXmOCbdREREREQVtqKlVTt+vu9o3rLtzuRINyLJxdt6Shjp9ljdaed39z1ZdN1KazB2pZ0vtK9LW8UcAA6GXsOrvqeqGRZVTOZaBEpMXwv8VRqTbiIiIiKiCts0Pzm6+0xv/qnTnpSkOx5KJiyvjPaVdM/z2k/WjnvHh0qqW0mN5pVp5yapEYvsazLKcbR7jlASmZdG3gZFLn6NgnpnLFyEcpFlGXKRq0hOlVcUpaQ6M60303tRunp/jnqJv5pxVOpe5Wp3tu1Uqx/Ry3dnLqj3Z6mX+Ou9Hylnm+xH6tOJ8+Zpx9v6+/M+l2a7FUIAigKEfDE0L7BhNDKOZ4YOIxqPwygVN27278svw98HngUA+GKhmv1bTP8uCFhgNy1HKKZOeU/IUUQSmVPuQ3EfwvEJmCVLReKopLncj5Rc17Aq62XF/w0ozq+W915VVmxcTLpLsHXrVmzduhWJhPrXmqGhIYTDxa+uKMsyfD4fFEWBVGRnOdN6M70Xpav356iX+KsZR6XuVa52Z9tOtfoRvXx35oJ6f5Z6ib/e+5Fytsl+pH61NjRgeGICh31jGBwczFvW3WDF2HgYA74A1q9uw0ORgwjGo3hi/w6sdnqKvudiawcOhPsxFBnDkf6jMEvV//U/23ehXVyP/Xg/AOBo8P8QiLw9a92D/XvgNrZVLI5Kmcv9SOl1G2HFp+HEt9OuxsP/xGg4//8O9N6PBIrYAhBg0l2SLVu2YMuWLfD7/XC5XPB4PHA6i9+vUZZlCCHg8XhK/j+5UuvN9F6Urt6fo17ir2YclbpXudqdbTvV6kf08t2ZC+r9Weol/nrvR8rZJvuR+rXQ5cbwxARGw2E4mprQYDLlLNvhdmJsPIyx8TBe17kRDw0fBADsigdwdttxRd9z+VgXDoT7oQAYawjjeNeSWf4Upcv2XYgmDNjfmyyz0HIb9kTWABBpdccbRrCiaW3F4qiUudyPzKzuNZAjGyH53qNdMUpAW2v+P6jovR+xWq1FlWPSPQuSJJX8jy+EqFq9md6L0tX7c9RL/NWMo1L3Kle7s22nWv2IXr47c0G9P0u9xF/v/Ug522Q/Up+6XG680K++l90XCmJZc0vOsm1OO3YcBRKyggWmJu368yM9kKTTi77n+qZluH9yivl2716sb1pWoEZlTP8uWETmz77C1oKA7MLJLefjzsn3uf/Y+0O0WudjoX1lRvlyxFFJc7kfmVFdy4kI42xY8Yh6LvcWVV/P/UixMekvciIiIiKiOWhBygzJHn/+lciXtiWT0v+9/3mYJXXrsJ5g8SuYA8AG93Lt+LGh7QX3CK8WISSc2nl/2rXXe87ER1Z8Byc3n4e1rtO06z/ddz36Jw5WOUKqhChOTTtX4odrFEl1MekmIiIiIqqCBU6Xdtzjy588v/fME9DhUlcxj8USaDE1AAD6Jvwl3bPN2oQ1zkUAgIPj/XhkaFtJ9SvJZupOOw/HjwAAJCFhnft1aZ/d0fvjqsVFlSNhLP1C+C+1CaTKmHQTEREREVXBYndymvi+sdG8ZT0OO35w5VtwyQlrcOsH3455DQ4AQDAWQSBa/EK+APDOhW/Qjn9z8H7djHYDwEnzbtOOB0J3QZncXsphbEorNxLpr2pcVBkJLEi/IOy1CaTKmHQTEREREVXB8pR3uPeOjhQsf1xnO258+wVoMJvQbknu3X10vLTR7tNb16aNdveM518xupqclnWwm1YAAGLyGJ7vvwKKoqDR5E4rN544dvZ0nssiSJ/BoMR21CiS6mLSTURERERUBU0NDWhpsAEA9hSRdKdqsyRHBP9nxxNIlLhv8abm1drxvmBvnpLVZzct1Y79kW2IySNoNLprFxBVkAGwvDF5yunlRERERERUTita1NHu4fFxjE1MFF3vrNbk+893HX4Ndx1+raT7Lm3s1I736izptpkWp53H5XGYJUtGucFwT7VCokqyfzztVE+vO1QKk24iIiIioipJ3SaslNHuVY5WfO3Ei7Tzl8f6SrrvckfyXdpXfPtLqltpNtOitPOEnH0q+Q93fwKPD/0FvlhpswRIZwwdaaeK77M1CqR6mHQTEREREVXJshLf6051Rvsi7bivxPe6WywudNnaAAA7/YcRipe2GFslWYzz0s7jOZJuGTLu7bsVf+rZWo2wqFKEOf08fEdNwqgmJt1ERERERFWyYoYj3QDQNrmCOQD0l5h0A8B69zIAavK6K6Cf/ZEd5jVp5z2BXwEA3rpgC0SWdGVvcFs1wqKKstY6gKpi0k1EREREVCWpI91P9hyGXML7rGbJgFaruqDattGjmIjHSrr3SsdC7fiz23+MuJwoqX6lGKVGtNvfop0Pjz+AiXgvTmp+A/7juFvx5vkfyKjTN3GgmiFSmQnPQ2nnilLad7neMOkmIiIiIqqSFpsNG9rV6dS7R0fwyKHSksd5DU7t+EevPV5S3RWOrrRzPY12t9kuSDsPRF4CAFgNdqxzn5lR/kd7PoWEoo8/GlDphKEl/YKin9cdKoFJNxERERFRFb13/Qbt+NXB0vbMXuRo1o5fG+svqe5ie/q703sCR0qqX0kttrNgkpI/WyCa3L/ZZnTg4vnXZNT5W98vqxIbVYiwJY+V8drFUQVMuomIiIiIqmh5yhTzHr+vpLr/teli7bg3VFpdIQR+cMLHtfO9Qf0k3ZIw4+T5f9TOA5FX0z4/rfWN+Ozq/0279sTwXznaXddSFlSLba9dGFXApJuIiIiIqIq6XC7t+EiJSbfFYMQyZysAYF9gBKFYtKT6S+zzIEEAAP7W/wwOhQZKql9JFsM8mCQ3AGA0/HjG/s1OUzPetfDTadduPfDVY2Kf5zlJ8SYPgz+uXRxVwKSbiIiIiKiKnBYrnBYLgNJHugGg055M2tf96VsYDoeKrmsxmCGE0M5/tOePeUpXlxACjSkrmR/0ZSZix7tPR2fDUu18X/AlPDjwO/xz+C4klHhV4qQyMZ2YPE55tWAuYtJNRERERFRlXU41ce4LBBCX5ZLqLnWkL0L1RH9pi7G9ad7p2vE27x5MxCMl1a+kBmNysbdQdHfWMo3GprTzhwZvw91Hf44Xxx6uZGhUZqIhuWI9oo/VLpAqYNJNRERERFRlCyaT7oSioC8QKKnu1Ss2pZ0PhYMl1b9q8YVp5zsCh0qqX0lLmj6uHQ+O3wtf+MWMMud1vDtr3b/3/7ZSYVElzPFtwlIx6SYiIiIiqrJ3Hnc8bjr3PPzqrZej1WYrXCFFp92FX5/zHu18OFL89HIAcJrs+MyqK7Tz13wHS6pfSWZDMyyG5Crr2wben/HO9ryGxdjUcsH0qjBLlorHR2UkOQuXmSOMtQ6AiIiIiOhYc86ixbOq32q1a8elvNM9ZbVzkXasp1XMAcBpWYeh8T4AQEIZR0IJwSga08o0m9sz6pmYdNcX60WA7zO1jqIqONJNRERERFRnUpPug4HRkuvPszbDKAwAgN6J4bLFVQ7N1tPSzmNy5mJzMTlz1XaOdNcXIY6dfy8m3UREREREdcZlboA0uQr5iyO92Oktbesvg2TAvAZ1QbaDoT48MfRy2WOcqTb7RWnn8URm0h3PknT3jO/B0Yn9FYuLKmsub/3G6eWzIMsy5BJWm5RlGYqilFRnpvVmei9KV+/PUS/xVzOOSt2rXO3Otp1q9SN6+e7MBfX+LPUSf733I+Vsk/3IsSfXs5RTkpS/H9mNFU5PSe0uaPCgZ3wQAPDlV3+OL6x+L87yrJ99wNOU+l0wCCdaGt6AkYkHAQCR+AjspvS661yvwyNDf8qou3XPp/GV4/4ASWSOLbIfKU9blepDlNgeKMZlZYuzGoqNi0l3CbZu3YqtW7cikUgAAIaGhhAOh4uuL8syfD4fFEWBJBU/yWAm9WZ6L0pX789RL/FXM45K3atc7c62nWr1I3r57swF9f4s9RJ/vfcj5WyT/cixJ9ezfEfncfhD76sAgJ6xYQwODpbU7mb7Bjw58qp2/kjvC1ilzMtTY2Zm8l0wxJcDUJPul4auwWLzT9AgrU4pYUGXaRV6Yjsz6j5/5FF0W9ZkXGc/Up62ytmHtKV8Hhn9Knz4VtnirIZAkTsPMOkuwZYtW7Blyxb4/X64XC54PB44ncWvuifLMoQQ8Hg8JX9BS60303tRunp/jnqJv5pxVOpe5Wp3tu1Uqx/Ry3dnLqj3Z6mX+Ou9Hylnm+xHjj25nuWH7WdrSXdIktHW1pariaza0IavOW34j1duBgD4xUTJbRRjJt8FS+QsDA78RDv3Sr9Cd9v/ppU51Xwheo5kJt13+n6Er669vSxxzNRc7kfK2ocMuQHFCwCwGMbQ1tJWuI6OWK3Wosox6Z4FSZJK/scXQlSt3kzvRenq/TnqJf5qxlGpe5Wr3dm2U61+RC/fnbmg3p+lXuKv936knG2yHzn2ZHuWbTaHdjwcDs3oOZ/SugY2gwXjiQhGov6K/VuV+l1oajgx7Xws/ERG3ePcp+Kp0RUIxX0Yjaa/0x5HLOvCauxHytNWufoQxfExKP6vqB8m9mVtT8/9SLEx6S9yIiIiIiIqyGIwwmY0AQCeG+7BaGR8Ru14LG4AwFDEq6vFrFobXp92HpeDaecmyYx/W3oTPrXqx7i869/TPvPHRioeH5WB9c3JY9OGmoVRaUy6iYiIiIjqlM1o1o5v2fX0jNposzYDAKJyDDsDh8sSVzksafpE2vkR/28yyojJFdwXNKQvwLXd+1jlAqPyEY6Uk0TNwqg0Jt1ERERERHVqpSv5Duy2kd4ZtXFay3Ha8f/s+ZNuRrsbzSuxquVr2rkv8mLOshaDLe38HwO/x02vvR+B2FjF4qPZU/9oMvmHo9j2msZSSUy6iYiIiIjq1PdOvUQ73uMbnlEbb2g/ETaDuiDUzsBhjEb9ZYmtHOY1Xg6DUBPqidiBnOWcpmbYja60a8G4F3cfvaWi8VEZiKnZGvr4Y08lMOkmIiIiIqpTLVY7TmtbBAAYiYQwHA6V3IbNaMUFHZu088PjpW09VklCCFgM7QCASGIw7yj8Fd3XZVx72ffPisVGZaIk39VXZP38waecmHQTEREREdWxlS6PdrzfP7MFxLrt7drx4fGBPCWrz2JUY0so44jJoznLLWhYnvV6JDFRkbioAiL/qHUEFcGkm4iIiIiojl2x7AT8/tz3YttbP4VNbQtn1Ea3rUM7PhTqL1doZdFg7NaOh8YfzFnOKJmyXv/PV9+DcGJmK7tTFRgWJ4+nrVA/VzDpJiIiIiKqY0udrTjJ0wWH2TrjNhamjHT36Gyku8V2lna8a+SLSMi5E+iz2y7Len2n/9myx0VlYkj+wUcJ/GcNA6kcJt1ERERERMc4p8kOt6kRALDNuxf/9uy3EE3EahyVymZcnHbeF/xTzrKva70EJzSdi1XOk9Ouj0T1NXpPKaJP1jqCimPSTUREREREOLFppXa8P3QUDw/l3qKrmsyG5rTzA94f5izbYGzEZV0fwZWLrsclnR/SrkcT4YrFR7Mjmn9f6xAqjkk3ERERERHhw8vfmnaul3e7jVL6VmBW44Ki6nXbV2nHocTcXBV7LhDmjckTqS13wTrGpJuIiIiIiOA02fHfGz+mnfdNzGwl9HITQoLDfLx2bjMtKaqe3ejUjl8cewhjUX29q04pphZTU+bmjAQm3UREREREBABY6eiCQagpwr7gUcTkeI0jUh3f9gPteCB0J6KJ4YJ1bAZH2vlP911f9rioTJTJ/eUVf9692OsVk24iIiIiIgIAGCSDtn3Y0fAwLn/iiwgnojWOCjAIW9r54z1nIC6H8taRhCHtPJTw4w+j38TzY7m3HaMakQeTx9HHahdHhTDpJiIiIiIizUnNyQXVxhNhvOzdV8NoVAbJlnFtZOKRktsZiB/EHb0/LkdIVCFK9Plah1B2TLqJiIiIiEjzxnmnpZ17Y8EaRZIkCXPGNUVJFKy3uf3dWa/HZX1sh0aTjKu1Q2Foz1OwPjHpJiIiIiIiTafNg3d0naudj0b1ufK3gsJJ9+vb345/W3pTxvWoPDcX7KpXovHj2rGS6KtdIBXCpJuIiIiIiNKc1nKcdjwWDdQwkqQu5/vSzo/4fwlZKTxivdC+EssbN6Rdi8gT5QyNZsu0Inkc31m7OCqESTcREREREaVpMidX/h7VSdK9cFrSHYi+iv7gnUXVXe7YmHa+J7ANwZi3XKHRbEnzAWFXj+OHahtLBTDpJiIiIiKiNM3m5B7XeplebjG2Y0P7z9Ou7Rz5fFF1m8zp7wn/pfcn+MaOa7DD90zZ4qOZE0IAU7MWEgdrGkslGGsdABERERER6UuD0YJ3L9wMl8mOBba2WoejaW44I+OarESzLrSWymVqybimQMavD30DX1/3p7LFR7OR3JpOkUMQkr2GsZQXk24iIiIiIsrw/iVvqnUIRRmbeAottrPylpnfsKRK0VBZJA4A0tpaR1E2nF5ORERERER1Y63nB2nn40W8AyyEwOdW/TzrZ4qilCUumqWGy5PHiSO1i6MCmHQTEREREVHdaLNfkHa+Z/RriCUKv3duNzqxwLQy4/qh8R1li41mTphPT54kemsXSAUw6SYiIiIiorpiM6VPF395aEtR9c53Xp1xjauY64TUqh0q8mgNAyk/Jt1ERERERFRXOhvfmXbuDRe3Crnd4ILL1Jp2bSIRKltcNAtSU/I4+nzt4qgAJt1ERERERFRX4srME+XTWy5OOw/Ex2YbDpWD1Jw8jr0wp9615+rlRERERERUV0ySO+3cKBxF1z299WLMty3G3/t/C6epBR5LZ5mjo5kQBg/S0uyJPwHWt9YqnLJi0k1ERERERHVlXuNlOOL/FcbjBwAACWUciqJACFFU/SWNx+Pflt1UyRBplhT/9XMm6eb0ciIiIiIiqisGyYpTOu+B07IRAKAgAVkJ1zgqKi9TrQMoGybdRERERERUd4SQYE6ZZp6YxXvepA/C8cXkScObaxdImTHpJiIiIiKiumSQku9yx+TCe3WTzllS9uqe+FPt4igzvtM9C7IsQ5blksorilJSnZnWm+m9KF29P0e9xF/NOCp1r3K1O9t2qtWP6OW7MxfU+7PUS/z13o+Us032I8eeen+WlYzfnLK388j4E2hwLKpJHNW4l176kcr2Ic1pZ3r/7hcbF5PuEmzduhVbt25FIpEAAAwNDSEcLv7dEVmW4fP5oCgKJKn4SQYzqTfTe1G6en+Oeom/mnFU6l7lane27VSrH9HLd2cuqPdnqZf4670fKWeb7EeOPfX+LCsZfzieXDht79jXYJ44ryZxVONeeulHKt2HtKUcDw++DK/PqtvvfiAQKKock+4SbNmyBVu2bIHf74fL5YLH44HT6Sy6vizLEELA4/GU/AUttd5M70Xp6v056iX+asZRqXuVq93ZtlOtfkQv3525oN6fpV7ir/d+pJxtsh859tT7s6xk/NLEiRgaukU7b261wyjZqx5HNe6ll36k4n3IYPKwtUmBIty6/e5brdaiyjHpngVJkkr+xxdCVK3eTO9F6er9Oeol/mrGUal7lavd2bZTrX5EL9+duaDen6Ve4q/3fqScbbIfOfbU+7OsVPyttrPSzqNyP8zG5VWPo1r30ks/Usk+JHXCtqQMQoj5uv3uFxuT/iInIiIiIiIqgiRM6HZ9SDuPJAZqGA2VXXxnrSMoCybdRERERERUtyyG5FvA0fhgnpJUd8b/t9YRlAWTbiIiIiIiqlupSXckwaS73gnXd1LOogCUWoVSNnynm4iIiIiI6pbdvBxdzvfDYmiD23pyrcOh2bJeCPg+lXIhVrNQyoVJNxERERER1S2baRGWN3+21mFQmQhhShvbluCvWSzlwunlREREREREpEsN+HOtQ5g1Jt1ERERERESkSwLjtQ5h1ph0ExERERERkX4YV2qHcayoYSDlwaSbiIiIiIiIdEPYrko540JqREREREREROVjOQOi6WdQlAZEvI5aRzNrTLqJiIiIiIhIN4RhHmCYB0WWoaD+917n9HIiIiIiIiKiCmHSTURERERERFQhTLqJiIiIiIiIKoRJNxEREREREVGFMOkmIiIiIiIiqhAm3UREREREREQVwqSbiIiIiIiIqEKYdBMRERERERFVCJNuIiIiIiIiogph0k1ERERERERUIUy6iYiIiIiIiCqESTcRERERERFRhTDpJiIiIiIiIqoQJt1EREREREREFcKkm4iIiIiIiKhCmHQTERERERERVQiTbiIiIiIiIqIKYdJNREREREREVCFMuomIiIiIiIgqhEk3ERERERERUYUw6SYiIiIiIiKqECbdRERERERERBXCpJuIiIiIiIioQph0ExEREREREVUIk24iIiIiIiKiCmHSTURERERERFQhxloHUI8URQEA+P3+kurJsoxAIACr1QpJKv7vHTOpN9N7Ubp6f456ib+acVTqXuVqd7btVKsf0ct3Zy6o92epl/jrvR8pZ5vsR4499f4s9RI/+5HytMWcJmkqH5zKD3Nh0j0DgUAAANDV1VXjSIiIiIiIiKiWAoEAXC5Xzs+FUigtpwyyLOPo0aNwOBwQQpRU9+STT8azzz5b8j1Lref3+9HV1YWenh44nc6S70dJM/030wu9xF/NOCp1r3K1O9t2qtGPsA8pL73873Cm9BJ/vfcj5WyT/cixRy//O5wpvcTPfqQ8bTGnUSmKgkAggPnz5+cdiedI9wxIkoQFCxbMqK7BYJjRF2am9ZxOpy6/oPVkps9eL/QSfzXjqNS9ytXubNupZj/CPqQ89PK/w5nSS/z13o+Us032I8cevfzvcKb0Ej/7kfK0xZwmKd8I9xT9TYyf47Zs2VLVejR79f7s9RJ/NeOo1L3K1e5s22E/Un/q/dnrJf5670fK2Sb7kWNPvT97vcTPfqQ8bbEPKQ2nl89Rfr8fLpcLPp9Pt38VIiL9Yh9CRLPFfoSIZmuu9CMc6Z6jLBYLbrjhBlgsllqHQkR1iH0IEc0W+xEimq250o9wpJuIiIiIiIioQjjSTURERERERFQhTLqJiIiIiIiIKoRJNxEREREREVGFMOkmIiIiIiIiqhAm3cegu+66CytXrsTy5cvxv//7v7UOh4jq0Fvf+lY0NTXh8ssvr3UoRFSHenp6cM4552DNmjVYt24dbrvttlqHRER1xOv14qSTTsKGDRuwdu1a3HzzzbUOKS+uXn6MicfjWLNmDR566CG4XC6ceOKJ+Oc//4mWlpZah0ZEdeThhx9GIBDArbfeittvv73W4RBRnenr68PAwAA2bNiA/v5+nHjiidi9ezfsdnutQyOiOpBIJBCJRGCz2RAKhbB27Vo899xzus1pONJ9jHnmmWdw3HHHobOzE42Njbjoootw//331zosIqoz55xzDhwOR63DIKI6NW/ePGzYsAEA0NHRgdbWVoyOjtY2KCKqGwaDATabDQAQiUSgKAr0PJbMpLvOPProo3jzm9+M+fPnQwiBO+64I6PM1q1bsWjRIlitVpxyyil45plntM+OHj2Kzs5O7byzsxO9vb3VCJ2IdGK2/QgRUTn7keeffx6JRAJdXV0VjpqI9KIcfYjX68X69euxYMECXHfddWhtba1S9KVj0l1nQqEQ1q9fj61bt2b9/Pe//z0++clP4oYbbsALL7yA9evX44ILLsDg4GCVIyUivWI/QkSzVa5+ZHR0FO9973vxs5/9rBphE5FOlKMPcbvd2L59Ow4cOIDf/va3GBgYqFb4pVOobgFQ/vznP6dd27Rpk7JlyxbtPJFIKPPnz1duuukmRVEU5YknnlAuvfRS7fOPfexjym9+85uqxEtE+jOTfmTKQw89pFx22WXVCJOIdGym/Ug4HFZe97rXKb/85S+rFSoR6dBsfheZcu211yq33XZbJcOcFY50zyHRaBTPP/88Nm/erF2TJAmbN2/Gk08+CQDYtGkTXnnlFfT29iIYDOLee+/FBRdcUKuQiUhniulHiIjyKaYfURQFV199Nc4991xceeWVtQqViHSomD5kYGAAgUAAAODz+fDoo49i5cqVNYm3GMZaB0DlMzw8jEQigfb29rTr7e3t2LlzJwDAaDTiO9/5Dl7/+tdDlmV85jOf0e0qf0RUfcX0IwCwefNmbN++HaFQCAsWLMBtt92G0047rdrhEpEOFdOPPPHEE/j973+PdevWae9y/upXv8Lxxx9f7XCJSGeK6UMOHTqED37wg9oCah/96Ed13X8w6T4GveUtb8Fb3vKWWodBRHXsgQceqHUIRFTHzjzzTMiyXOswiKhObdq0Cdu2bat1GEXj9PI5pLW1FQaDIWMRgYGBAXR0dNQoKiKqJ+xHiGi22I8Q0WzMxT6ESfccYjabceKJJ+LBBx/UrsmyjAcffJDTPomoKOxHiGi22I8Q0WzMxT6E08vrTDAYxN69e7XzAwcOYNu2bWhubsbChQvxyU9+EldddRVOOukkbNq0Cd///vcRCoXwvve9r4ZRE5GesB8hotliP0JEs3HM9SE1Xj2dSvTQQw8pADL+c9VVV2llfvjDHyoLFy5UzGazsmnTJuWpp56qXcBEpDvsR4hottiPENFsHGt9iFAURalumk9ERERERER0bOA73UREREREREQVwqSbiIiIiIiIqEKYdBMRERERERFVCJNuIiIiIiIiogph0k1ERERERERUIUy6iYiIiIiIiCqESTcRERERERFRhTDpJiIiIiIiIqoQJt1EREREREREFcKkm4iISOeEEDjnnHNm1cbDDz8MIQS+/OUvlyUmIiIiKg6TbiIioiIIIUr6DxWmKAp+/etf49xzz0VLSwvMZjPa29uxceNGfPjDH8YjjzySVv7qq6+GEAIHDx6sTcBEREQzYKx1AERERPXghhtuyLj2/e9/Hz6fL+tn5bRjxw7YbLZZtbFp0ybs2LEDra2tZYpq9t7//vfjF7/4BZqamnDxxRejs7MTExMT2L59O2655Rb4/X6cffbZtQ6TiIhoVoSiKEqtgyAiIqpHixYtwqFDh8D/Ky3dY489hrPOOgsbNmzAI488AqfTmfa51+vFa6+9htNPP127dvXVV+PWW2/FgQMHsGjRoipHTERENDOcXk5ERFRGBw8ehBACV199NXbs2IG3vvWtaGlpSZsW/ec//xnvfve7sWzZMthsNrhcLrzuda/DH//4x6xtZnune2qq9YEDB/CDH/wAq1atgsViQXd3N77yla9AluW08rne6V60aBEWLVqEYDCIj33sY5g/fz4sFgvWrVuH22+/PefP+M53vhPNzc1obGzE2WefjUcffRRf/vKXIYTAww8/XPA5PfnkkwCAq666KiPhBgC3252WcC9atAi33norAGDx4sXaNP7pz+XAgQO45pprsHDhQlgsFsybNw9XX301Dh06lHGPqfpHjhzBu9/9brS2tsJms+GMM87AAw88kFHe5/PhS1/6EtasWYPGxkY4nU4sW7YMV111Vdb2iYiIAE4vJyIiqoi9e/fi1FNPxfHHH4+rr74aIyMjMJvNAIDrr78eZrMZZ555JubNm4ehoSHceeeduPzyy/GDH/wAH/3oR4u+z3XXXYdHHnkEF198MS644ALccccd+PKXv4xoNIqvf/3rRbURi8Vw/vnnY2xsDJdddhnGx8fxu9/9Du94xztw33334fzzz9fK9vb24vTTT0dfXx8uvPBCbNy4Ebt27cJ5552Hc889t+i4W1paAAC7d+8uqvzHP/5x/OIXv8D27dvxsY99DG63GwDSRryffvppXHDBBQiFQrj44ouxfPlyHDx4EL/5zW9w77334sknn8SSJUvS2h0bG8MZZ5wBj8eDa665BkNDQ/j973+PCy+8ELfffjsuvfRSAOr75xdccAGefvppnHHGGbjwwgshSRIOHTqEO++8E1deeSW6u7uL/vmJiOgYohAREdGMdHd3K9P/r/TAgQMKAAWA8qUvfSlrvX379mVcCwQCyvHHH6+4XC4lFAqlfQZAOfvss9OuXXXVVQoAZfHixcrRo0e160NDQ4rb7VYcDocSiUS06w899JACQLnhhhuy/gyXXHJJWvkHHnhAAaBccMEFaeX/5V/+RQGgfP3rX0+7fsstt2g/90MPPZT1507V09OjOJ1ORQihXHHFFcptt92mHDx4MG+dqZ/5wIEDGZ9Fo1Fl0aJFisPhUF544YW0zx577DHFYDAoF198cdr1qXivuOIKRZZl7fr27dsVs9mseDweZXx8XFEURXnppZcUAMqll16ace9wOKwEAoGCPzMRER2bOL2ciIioAjo6OvCFL3wh62fTR1sBoLGxEVdffTV8Ph+effbZou/zxS9+EfPmzdPOW1tbcckllyAQCGDXrl1Ft/O9731PG4kHgDe84Q3o7u5OiyUSieC2225DW1sbPvWpT6XVf9/73oeVK1cWfb8FCxbgj3/8I7q6uvDb3/4Wb3/727Fo0SK0tbXhne98J/7xj38U3RYA3HXXXTh48CCuu+46bNy4Me2zM888E5dccgnuuece+P3+tM8MBgNuvPHGtBXn161bhyuvvBJDQ0O455570so3NDRk3NtisaCxsbGkeImI6NjB6eVEREQVsH79+rQkNtXg4CC+8Y1v4N5778WhQ4cwMTGR9vnRo0eLvs+JJ56YcW3BggUA1MXIiuF2u7F48eKs7Uy9ew0Au3btQiQSwUknnQSLxZJWVgiB008/vaREf/Pmzdi3bx8efvhhPProo3j++efx+OOP4w9/+AP+8Ic/4Prrr8eNN95YVFtPPfWUFmO2vcj7+/shyzJ2796Nk046Sbu+cOHCrNPCX/e61+GWW27Biy++iMsuuwyrV6/GunXr8H//9384cuQILr30UpxzzjnYsGEDJIljGERElBuTbiIiogpob2/Pen10dBQnn3wyDh8+jDPOOAObN2+G2+2GwWDAtm3b8Je//AWRSKTo+2RbhMxoVP/vPZFIFNWGy+XKet1oNKYtyDY1StzW1pa1fK6fOR+j0YjNmzdj8+bNAIB4PI5f/OIXuPbaa3HTTTfh8ssvxwknnFCwndHRUQDAb37zm7zlQqFQUTFPXff5fFqc//jHP/DlL38Zf/zjH7WRfo/Hg4985CP4whe+AIPBUDBOIiI69vBPs0RERBWQOl051S233ILDhw/jq1/9Kh5//HH88Ic/xFe/+lV8+ctfxqmnnlrlKEszleAPDg5m/XxgYGDW9zAajbjmmmtwxRVXAAAeeuihkmL761//CkVRcv5n+r7fuWKeup76B4mWlhb88Ic/RG9vL1577TX86Ec/QnNzM2644QZ885vfLPlnJSKiYwOTbiIioirat28fAOCSSy7J+Oyxxx6rdjglWblyJSwWC55//vmM0XhFUdKmos9Wtnekp0aSs43gn3LKKQBQcgyHDx/Out3X1L/F9PfDAfUPKqtXr8aWLVvw97//HQBw5513lnRfIiI6djDpJiIiqqKp94cff/zxtOu//e1vMxbt0huLxYLLL78cAwMD+P73v5/22S9/+Uvs3Lmz6Lbuu+8+/OUvf0E8Hs/4bO/evbjtttsAqIugTWlubgYA9PT0ZNS55JJLsHDhQnz3u9/Fo48+mvF5LBbLeOaAmsB//vOfh6Io2rWXXnoJv/rVr+DxePDGN74RgLo3+dQ+66mmRsStVmu+H5eIiI5hfKebiIioiq688kr813/9Fz760Y/ioYceQnd3N7Zv344HH3wQb3vb2/CnP/2p1iHmddNNN+GBBx7A5z73OTzyyCPaPt133XUXLrzwQtx3331FLSy2c+dOfOITn0BrayvOOussLF26FIqiYO/evbjnnnsQjUZx7bXXaiPYAHDuuefi29/+Nj74wQ/isssug91uR3d3N6688kpYLBbcfvvtuOiii3D22Wfj3HPPxfHHHw8hBA4dOoTHHnsMLS0tGX8YWLduHR5//HGcfPLJ2Lx5s7ZPdzwex89+9jNttfJt27bhbW97GzZt2oQ1a9ago6MDvb29uOOOOyBJEj7xiU+U90ETEdGcwaSbiIioihYsWIBHHnkEn/nMZ/DAAw8gHo/jhBNOwP3334+enh7dJ91dXV148skn8dnPfhb3338/HnnkEZx44om4//77tdHpbIu7Tfee97wHjY2N+Nvf/oaXX34Zf//73xEOh9Ha2orzzz8fV199NS677LK0OhdddBG++c1v4uabb8Z3vvMdxGIxnH322bjyyisBACeffDK2b9+Ob33rW7jnnnvwxBNPwGKxoLOzE5deeine/e53Z8TR1NSEu+++G5/+9Kdx8803Y3x8HBs3bsRXvvIVnHfeeVq5k046CZ/97Gfx8MMP4+6774bX60VHRwc2b96M6667Tvfv4xMRUe0IJXU+FREREdEMnXnmmXjyySfh8/nqYt9qIQTOPvtsPPzww7UOhYiI5jC+001EREQl6evry7j261//Gk888QQ2b95cFwk3ERFRtXB6OREREZVk7dq12LhxI9asWaPtL/7www/D4XDg29/+dq3DIyIi0hUm3URERFSSD33oQ/jrX/+K5557DqFQCB6PB1dccQW++MUvYtWqVbUOj4iISFf4TjcRERERERFRhfCdbiIiIiIiIqIKYdJNREREREREVCFMuomIiIiIiIgqhEk3ERERERERUYUw6SYiIiIiIiKqECbdRERERERERBXCpJuIiIiIiIioQph0ExEREREREVUIk24iIiIiIiKiCvn/U/wkWADnzPgAAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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Ro3Cueeei9raWvTo0QNGoxEnnXQSRo4cifT0dMTHx8Nms2H79u3473//C1EU8frrr+OWW27ByJEjFa9zw4YNuOSSSzBo0CC89dZb0tV133rrLSxatAgZGRkBi/n000/ju+++k9plZ2fjoosuwk8//YSPPvpI8XrVePPNN7F06VLpeVZWFi655BIcOXIEb7zxBpqbm/Hnn3/i0ksvxS+//AKTyYQXXnhBqj9hwgScddZZqK2txaFDh7BhwwbU19e7rENpfW++/vpr6XFCQgIuvvhila9aHU/js0+fPjjjjDOwfv16AMDbb7+N0aNHS23eeecd6fHMmTOlx8uXL3c5BWPSpEkYM2YMCgsL8cYbb6Cmpgbfffcd7rjjDrz00ksAtNuO/rTdzpdeemm74nnaboC6saeVb7/9FtOnT0ePHj2watUq7NmzBwDw0Ucf4c0338S1117rN8app54qPS4pKUH//v1xyimnYMSIERg2bBjOPvts9O3bV1FebU/VAYBnn30WBw8eBACYTCYMGDAAgLoxpNZrr72G2tpa3HbbbejevXu7Yvmj9j2l1ftDTb/OmjULF1xwAe6++25p2RVXXIHhw4cDAOLi4gBo12dyx2+wPjOIyInes34iOnGo3dN96aWXis3NzR7rFhQUiCtXrhSfe+45ccmSJeLixYvFrl27Sm3/+c9/+oztbfncuXOlsh07driUffTRR37jtSfmgAEDpOWZmZkuh2zOmDHD6147b9Ts6R4yZIjXHJ5//nmXeKtXrxZFURRjY2OlZUePHnWLuW/fPpfnSut7ExkZKcUZNWqUrDYOWuzp9jY+ly1b5rLnyHE46ubNm6XlYWFh4p9//im1GTp0qFR27bXXusRbsWKFVGYymaRDrNVsRzV7up2388iRI13K2h7a6ym23O2mZuxptaf7kUcekcoqKyvF5ORkqWzMmDGytlNjY6M4fPhwn3sSx44dK+7YscOlna/PkrYeeughqZ7BYBCXLVsmlakZQ/542yOdlZUlAvB4msGXX34pzps3z+XfN998IyuuN2reU1p9zqjtV1EU/X7+qu0zteNXq21CRPLxlmFEFPLuv/9+GI2uH1elpaW44IIL0LNnT1x++eWYPXs27rrrLtx99934888/pXqHDx9Wtc5bb71VeuzYg+RQXl4esJg1NTX47bffpOV/+ctfEBERIT13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IiIiIiKiAOHh5UREREREREQBwkk3ERERERERUYBw0k1EREREREQUIJx0ExEREREREQUIJ91EREREREREAcJJNxERkQejR4+GwWCAxWLBn3/+6VL2wAMPwGAw4Pvvv9cpOwplW7ZsgcFggMFgwJVXXql3OkREpDNOuomIiNpYvXo1Nm3aBAC4+uqr0bVrV5fy7du3w2g04pRTTtEhu1Y2mw25ubk444wzkJGRAavVivT0dIwZMwavv/46GhsbNV3fsGHDYDAYcODAAa91MjIyEBYWhpqaGk3X7ct//vMf3HzzzRg+fDgsFgsMBgOWLVvmt93q1atx7rnnIikpCVarFb169cJVV12FQ4cOeay/ZcsWnH/++YiPj0dUVBROO+00rFixwq3eiBEjcOaZZwIAVqxYge3bt7fr9RERUcfG+3QTERG1kZ2djZ07dwJomWC3nVx36dIFCQkJ2L17tw7ZtSopKUH37t0xcuRI9O/fHykpKSgvL8enn36KgoICTJw4EZ9++imMxvb/jb2hoQExMTGIj49HYWGhxzqHDh1Cjx49MHDgQPz666/tXqdcmZmZKCgoQHJyMqKiolBQUIDXX38d1113ncf6oijilltuwUsvvYQ+ffpg0qRJiImJwZEjR7Bu3Tq89dZbGDt2rEubb7/9FpMmTYLVasWVV16JmJgYrFq1CgUFBViyZAnuvPNOl/qrV6/GpZdeCgCYOnUqPvroo4C8diIiCn0mvRMgIiIKJd9//7004R4wYIDbhPvo0aM4duwYxo8fr0N2rhITE1FZWYnw8HCX5U1NTTj33HPxxRdf4NNPP8WUKVPava6dO3eioaEBI0eO9Fpn8+bNAIBTTz213etT4pVXXkG/fv3Qs2dPLFq0CPfdd5/P+s888wxeeukl3HrrrXjmmWcQFhbmUt7U1OT2/KabboLRaMT69eulMfHggw9i5MiRuP/++3H55ZejZ8+eUpvzzz8fsbGxqKqqwieffILDhw+jW7du2rxgIiLqUHh4ORERkZPXX39denzZZZe5lTsOFW47sdyzZw+ysrIQHR2N5cuXBzbJ44xGo9uEGwBMJhMuueQSAEB+fr4m69q2bRsA+Jx0b9myBUDLYejBNGHCBJcJry/19fVYsGABevfujaefftptwg20bD9n33zzDfbt24err77a5Y8wcXFxuP/++9HQ0IA33njDpY3FYsEFF1wAAGhubnYrJyKiEwcn3URERE6++OIL6fHpp5/uVu5p0v3uu+9ixIgRaGxsxKZNm3S/eJYgCPjss88AAIMHD9Yk5tatWwEAo0aN8lpHrz3dSnzxxRcoLy/HxRdfjObmZrz//vtYtGgRXnzxRa9/oFi7di0AYOLEiW5lkyZNAgCsW7fOrWz06NHS4y+//FKD7ImIqCPi4eVERETHHTx4EAcPHpSeDx8+3K3Otm3bYDAYMHToUDQ2NuLOO+/Es88+iwsvvBD//ve/ERcX53MdTz31FCoqKmTndPHFF/u9YFtDQwMWLlwIURRRWlqKr7/+Gnv27MHMmTM1Owzesaf7+eefx7///W+Pdf73v//BYDD4nXQHYhvI5fjjQVhYGLKzs/H7779LZUajEXfccQeWLFni0mbv3r0AgH79+rnFS09PR3R0tFTH2YgRI6TH//vf/9DQ0ODxyAQiIurcOOkmIiI6bt++fdLj8PBwpKWludXZvn07evfujaqqKpx33nnYvHkzHnroIek2Yv489dRTKCgokJ1TZmamrEn3ggULpOcGgwF33XUXHn30Udnr8aWpqQk///wzAODDDz/0Wbdv376IjY31WScQ20CuoqIiAMDSpUtx6qmnYvPmzTjppJOwfft2/O1vf8MTTzyBPn36YNasWVKbyspKAPD6B5XY2FipjjPnc7htNhuOHDmCzMxMTV4HERF1HDy8nIiI6Lji4mLpcUJCglt5RUUF9u/fD6DlEOrff/8dn3zyCf7+97/LmnADwIEDByCKoux/3q7A7Sw6OhqiKKK5uRmHDh1CXl4eXnnlFZx11lmoqqqS9+J9+OWXX2C323HxxRd7zfO9994DIO987kBsA7kEQQDQ8keVDz74ACNGjEB0dDTGjRuH9957D0ajEU888YQm60pKSnJ57jy+iIjoxMFJNxERkUyO87nLy8tRUlKCnJwc6ZzeUGA0GtGtWzfMmjULL730EjZu3IhHHnmk3XEdh2QPHTrUax3Htgn2RdSUcuytHj58ODIyMlzKBg8ejN69e2Pfvn0uh7872njamw0AVVVVHveC866sREQE8PByIiIiSXJysvS4vLzcrdwxsXzllVewePFiLFy4EKNGjVJ0S65gnc/suOiX4yJg7eGYdPvKw9tV3T3R85zuAQMGAADi4+M9ljuW19fXS48d53Lv3bvX7Y8Kx44dQ01NjcerupeVlbk8T0lJaUfmRETUUXHSTUREdFzv3r2lxw0NDSgqKkJqaqq0zDGxPO200/DBBx9g1KhRuPLKK7FhwwYMGTJE1jqCdT7zkSNHAABms9llufNh8K+//rqsQ7cdF1Hztad7x44dAORPuvU6p/vss88GAPz6669uZY2NjcjPz0dUVJTLBPnMM8/Eo48+ii+++MLtyvSff/65VKetQ4cOSY+tVqvbnnUiIjox8PByIiKi4zIzM9G1a1fpuWOy6fw8LS0NXbp0QWpqKv773//CaDTiggsukCa5/mh5PvPu3btRV1fntryurg65ubkAgPPPP19WXt40Nzfjp59+QlJSErp37+6xTlFREY4ePYpevXp5PBe+LT3P6e7Tpw8mTpyI/Px8vPLKKy5lixYtQkVFBS655BKXe3WPHz8evXv3xttvvy39cQFoOdx84cKFCA8Px7XXXuu2rh9//FF6PHLkSF65nIjoBMU93URERE4mTJiAN954AwDwww8/4LzzzgPQcrjxb7/9hgkTJkh1Bw8ejOXLl2Pq1KmYOnUqvvvuO0RGRgYt1xUrVmDp0qUYO3YsMjMzERsbiz///BOffvopSktLMW7cONxxxx3tWsevv/6K+vp6j/csd9D7fO5XXnkFGzZsAADs3LlTWuY4tH7s2LG48cYbpfrPP/88Tj/9dNx000344IMPMHDgQGzfvh3ffPMNevbsicWLF7vEN5lMeOWVVzBp0iScccYZuPLKKxETE4NVq1ahoKAAS5Ys8XhV8h9++EF6fO6552r8qomIqKPgpJuIiMjJ9ddfL026V65cKd2K6+eff0Zzc7PbYc6TJ0/GU089hdtuuw1XX3013n//fRiNwTmQzLGH/fvvv8cPP/yAmpoaxMXFITs7G1deeSWuv/56lz22jttlAS33qZYzSdb6fO5A2LBhg9RnDhs3bsTGjRul586T7j59+uDHH3/Egw8+iM8++wxffPEF0tPTkZOTgwcffNDllAKHs88+Gxs2bMC8efPw7rvvorGxESeffDIee+wxXHHFFW717XY71qxZA6DlAnczZszQ6uUSEVEHYxB5aU0iIiIXgwcPxi+//AKgZbJ98skn65yRNlasWCFNEG+//XY8/fTTOmfUea1evRqXXnopgJY/jvz3v//VOSMiItILz+kmIiJqw7F3G0Cnmpiu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K1aswA03qJtkBlKJrRbH6qv1TkMRR1+PHDlSWuboa1EUkZ2drbivfU26fRkwYAB27NiByspKrFy5EjNmzMC6deswaNAg3cYCJ91ERERERCEuIT1eUX0t93SrVV3dMnE0mVqnHCaTCX379sUff/wBm82GIUOGyIq1cOFCLFy40Ged3bt3o0ePHn5jxcfHo3///sjPz5e17mBLtkYpqq/lnm61fPX1/v37YbPZkJ2dLStWe/s6PDwcffv2BQAMGzYMW7ZswdNPP41//etfbnWDNRY46SYiIiIiCnF5mxfJ3tunZA+hnLpqrzjtuHDVxo0b3e7JvGvXLhiNRgwePFhWrPYcXt5WTU0N9u3bh+nTp8uqH2xKD/FWs0dY7V5kbxx9vWHDBlx11VUuZY6+dtTxp72Hl7clCALsdrvHsmCNBU66iYiIiIhIc9nZ2Zg6dSpyc3Nht9sxduxYCIKAHTt2YPHixRgwYAAiIiJkxWrP4eV33XUXpk6dip49e+LIkSOYN28ewsLC3CaHpF52djamTJmCOXPmoL6+HmPGjHHp64EDByruazV/GLjvvvswefJk9OjRA9XV1Xj77bexdu1afP755wD0GwucdBMRERERUUCsWLECS5YswZNPPonbbrsNZrMZgwYNwmWXXYYbb7wxKDkcPnwYV111FUpLS5GSkoKxY8di06ZNSElJCcr6TxTLly/HM888g6VLl2L27NlSX19++eW4+eabg5JDUVERrr32Whw9ehRxcXHIzs7G559/jnPPPReAfmOBk24iIiIiIgoIi8WCe+65Bw888IDL3krHXsxgcL6iNgWOxWLBfffdh/vvv9+tLFj9/eqrr/os12ss8D7dRERERERERAHCSTcRERERERFRgPDw8k7ou1WbUFZYgerqasTExMDo6cIDMi5G4O+CBXKuZ+ArhiCKqKmuRkxsDAwG73//8bceX1farKqqQmxcrM/4vtbhiBEXFydje7SUC6KA6qoqxMTGwui8Xg/NpRxjY2EwGDyuw7mO0ej+OkRRQGVVFeJiW16ncwhBFFFV2bINpHFgMLTErKxErJfXFei+lxNEFAW/217WRTV81NFiHaIoorKyEnHxca797RLEQ5uKljaOfjeFmxBuMcMUboLZYoI53ASzxQyjyYg6ey2SkgSP/U9ERBRKMjMzMXfu3KC3peBjX8vHSXcntGLx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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Plot training loss curves for different group sizes\n", - "# Specify the hidden dimension to use\n", - "hidden_dim = 160 # Change this to plot different hidden dimensions\n", - "\n", - "# Use all available p values (or filter as needed)\n", - "p_values_to_plot = [p for p in p_values if p <= 55] # Adjust max_p as needed\n", - "\n", - "# Create separate plots for each k value\n", - "for k in k_values:\n", - " # Load training loss curves for different p values\n", - " curves = load_training_loss_curves_p(\n", - " sweep_dir,\n", - " k,\n", - " hidden_dim,\n", - " p_values_to_plot,\n", - " )\n", - "\n", - " if not curves:\n", - " print(f\"No data found for k={k}, H={hidden_dim}\")\n", - " continue\n", - "\n", - " # Create plot\n", - " plt.figure(figsize=(10, 8))\n", - "\n", - " # Plot each group size as a separate curve\n", - " # Use a colormap to distinguish different p values\n", - " colors = plt.cm.viridis(np.linspace(0, 1, len(curves)))\n", - "\n", - " for i, (p, loss_histories) in enumerate(sorted(curves.items())):\n", - " # Plot mean curve with shaded error bars\n", - " # Find the maximum length to align all curves\n", - " max_len = max(len(hist) for hist in loss_histories)\n", - "\n", - " # Pad shorter histories with NaN or last value\n", - " aligned_histories = []\n", - " for hist in loss_histories:\n", - " if len(hist) < max_len:\n", - " padded = np.full(max_len, np.nan)\n", - " padded[: len(hist)] = hist\n", - " aligned_histories.append(padded)\n", - " else:\n", - " aligned_histories.append(hist)\n", - "\n", - " aligned_histories = np.array(aligned_histories)\n", - "\n", - " # Compute mean and std across seeds\n", - " mean_loss = np.nanmean(aligned_histories, axis=0)\n", - " std_loss = np.nanstd(aligned_histories, axis=0)\n", - "\n", - " # Create step array (1-indexed for log scale)\n", - " steps = np.arange(1, len(mean_loss) + 1)\n", - "\n", - " # Plot mean curve\n", - " plt.loglog(\n", - " steps,\n", - " mean_loss,\n", - " color=colors[i],\n", - " linewidth=2,\n", - " label=f\"$|G|={p}$\",\n", - " )\n", - "\n", - " # Plot shaded error region (optional, can be commented out if too cluttered)\n", - " # plt.fill_between(\n", - " # steps,\n", - " # mean_loss - std_loss,\n", - " # mean_loss + std_loss,\n", - " # color=colors[i],\n", - " # alpha=0.2,\n", - " # )\n", - "\n", - " plt.xlabel(\"Training Steps\", fontsize=14)\n", - " plt.ylabel(\"Training Loss\", fontsize=14)\n", - " plt.title(\n", - " f\"Training Loss Curves: Group Size $|G|$ vs Steps\\n($k={k}$, $H={hidden_dim}$)\",\n", - " fontsize=14,\n", - " fontweight=\"bold\",\n", - " )\n", - " plt.legend(loc=\"best\", fontsize=10, ncol=2)\n", - " plt.grid(True, alpha=0.3, which=\"both\")\n", - " plt.tight_layout()\n", - " plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 73, - "id": "96be1620", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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iIiKRoE+5L6+vlCr1QgODkZwcLBx6i4lymwLeX6ioqIQHR2Nrl27yvOcnZ3RunVrHD9+XJ734MEDjBw5Et9++y3s7OxylXP8+HF06NABVlZW8ryAgABcvnwZT548ybP+hQsXwtnZWZ6qVq1qoD0jIiIiMk0RERG4ePEik3EdzDIhj46OBgC4u7trzXd3d5eXCSHw1ltv4Z133kHLli3zLEdXGdnr0GXatGmIj4+Xp9u3b+u9L0RERERUupXZLivFtXz5cjx9+hTTpk0zeNnW1tawtrY2eLlEREREhWLMGwMJXtRZELNsIffw8ADwvEtKdg8ePJCXHThwAMePH4e1tTUsLCxQq1YtAEDLli0RFBQkl6OrjOx1EBERERHlxywTcm9vb3h4eGD//v3yvISEBISHh8PPzw8AsGzZMvz111+IjIxEZGQkdu3aBQD44YcfMH/+fACAn58fjhw5gvT0dLmcvXv3om7duihXrpwR94iIiIioCIw15KExLx4txcpsl5XExERcvXpVfh4VFYXIyEi4urqiWrVqmDhxIubNm4fatWvD29sbM2bMgKenJ1555RUAQLVq1bTKc3BwAADUrFkTVapUAQC8+eabmD17NoYPH44pU6bg/PnzWLp0KT7//HPj7CQRERERlXplNiE/deoUOnXqJD+fPHkyACAoKAhhYWF4//33kZSUhFGjRiEuLg7t2rXD7t27YWNjU+g6nJ2d8fvvvyM4OBgtWrRAhQoVMHPmzHyHPCQiIiJSmpAkCCO1XBurntKszCbkHTt2hBAiz+WSJGHOnDmYM2dOocqrXr26zvIaN26MP/74Q+84iYiIiMi8ldmEnIiIiIjyoILxriTMu32U/p9ZXtRJRERERGQq2EJOREREZG6MOfoJ+5AXiC3kREREREQKYkJORERERKQgdlkhIiIiMjfssmJS2EJORERERKQgtpATERERmRu2kJsUtpATERERESmILeREREREZkZIktFuaW+sekoztpATERERESmILeRERERE5kYF4zXLCiPVU4qxhZyIiIiISEFsITchUrIaklArHYZOz1ItlQ6hQBYWGqVDKNXsLdKUDqFAThYpSoeQr/hMO6VDyFddm/tKh1AgR5Vpv8aZwrT7wlZUm3Z8ABCTmaR0CDo9zTSz7xCOsmJS2EJORERERKQgJuRERERERApilxUiIiIi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bt06JcMgIiIiohIWEREBJycnpcMoNo1Gg6tXryImJgYajUZrWYcOHfQqU9GEXKPRoFmzZkqGQERERERUKCdOnMCbb76Jmzdv5upuLUmSzmshC0PRhLx169a4dOmSkiEQERERmR2OsqKfd955By1btsSvv/6KSpUqQZIMs3OKJuSLFi1Chw4dsHnzZrz22mtKhkJERERElK8rV65g8+bNqFWrlkHLVTQh//XXX9GpUyf0798f/v7+aN68uc6+RZIkYcaMGQpESERERFQGcZQVvbRu3RpXr14tWwl5aGio/PjQoUM4dOiQzvWYkBMRERGR0saNG4d3330X0dHRaNSoESwtLbWWN27cWK9yFU3IDx48qGT1RERERESFFhgYCAAYNmyYPE+SJAghSu9Fnf7+/kpWT0RERGSe2GVFL1FRUSVSLu/CQ0RERERUCF5eXiVSrqpESi2CjIwMfP7552jVqhWcnJy07tQZGRmJMWPG4N9//y2Ruu/evYtBgwahfPnysLW1RaNGjXDq1Cmd677zzjuQJAlLlizRmh8bG4uBAwfCyckJLi4uGD58OBITE0skXiIiIiKDkP4b+rCkp7LUQg4A165dw7hx49C1a1d07doV48ePx7Vr14pVpqIJ+bNnz9CpUye89957uHnzJpycnLQGWff29sbatWuxfv16g9f95MkTvPDCC7C0tMRvv/2Gixcv4tNPP0W5cuVyrbt161acOHECnp6euZYNHDgQFy5cwN69e7Fz504cOXIEo0aNMni8RERERKSsPXv2wMfHBydPnkTjxo3RuHFjhIeHo0GDBti7d6/e5SqakC9YsADHjh3DwoULER0djREjRmgtd3Z2hr+/P/bs2WPwuj/66CNUrVoVa9euRatWreDt7Y3u3bujZs2aWuvdvXsX48aNw8aNG3NdSXvp0iXs3r0b//vf/9C6dWu0a9cOy5cvx/fff4979+4ZPGYiIiIig5CMPJURU6dOxaRJkxAeHo7PPvsMn332GcLDwzFx4kRMmTJF73IVTch/+OEHdOrUCe+//z4kSdJ5t6MaNWrg1q1bBq97+/btaNmyJV5//XW4ubmhWbNm+Prrr7XW0Wg0GDx4MEJCQtCgQYNcZRw/fhwuLi5o2bKlPK9r165QqVQIDw/Ps+7U1FQkJCRoTURERERk2i5duoThw4fnmj9s2DBcvHhR73IV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UTh69CicnJyKNE93UFAQRo0ahQULFqB27dro0aMHRASbN2/GzZs3MXr0aAQFBenqly9fHn379sW6devQqFEjdOzYEfHx8fj555/RsWNHgwcRcwUHB2P06NH47bffEBgYiLNnz2L79u3w9PQs1DznO3bswLBhw1CtWjW0aNEC5cuXR2pqKiIjI3Hw4EEolUp8++23sLW1zbON2NhYTJo0CUqlEv7+/vjkk08M6jw6Q03t2rXx7bff4t1330XNmjXx6quvws/PDw8ePMA///yD/fv3Y8CAAViyZEmB8RszevRo/P3339iwYQOqVauGV199FdWqVUNWVhZu3ryJAwcOIDY2Fu7u7ggJCTFpG0RE9BghIiqmiIgIGTp0qPj7+4uTk5NYW1uLt7e3vPzyy/LFF19IXFycXv29e/cKAJk+fXq+7a5YsUKaNGkiDg4O4uDgIE2aNJEVK1YYrZuWliajR48Wb29vsbW1lbp168ratWuNbuvRsoMHD0rr1q3F0dFRXFxcpHv37nLp0qVC7ff58+dl7ty58sorr4ivr6/Y2dmJnZ2d+Pn5SVhYmBw/ftxgnZiYGAEgYWFheu/zexk7TkePHpXQ0FApX768WFtbi6enpzRs2FDef/99iY6OLlT806dPFwASExNjsOynn36S4OBg8fT0FJVKJc7OzhIQECBvvPGGrFmzRh4+fFjkNomIyDiFiIlP/xARPaX27duHtm3bYvr06Ua/lv55MWPGDMycORMxMTGoUqVKqW2TiOhZxzHkREREREQWxISciIiIiMiCmJATEREREVkQZ1khoudOmzZtTP7ynGdJ7swtbm5upbpNIqJnHR/qJCIiIiKyIA5ZISIiIiKyICbkREREREQWxISciIiIiMiCmJATEREREVkQE3IiIiIiIgtiQk5EREREZEFMyImIiIiILIgJORERERGRBTEhJyIiIiKyICbkREREREQWxISciIiIiMiCmJATEREREVkQE3IiIiIiIgtiQk5EREREZEFWlg6Anl0iAo1GA7VabelQiIioBFlbW0OlUlk6DKJnBhNyKnEigqSkJCQkJECj0Vg6HCIiegLc3Nzg4+MDhUJh6VCInnpMyKnExcbGIikpCS4uLnBxcYGVlRU/sImInhEigrS0NMTHxwMAypUrZ+GIiJ5+TMipRGk0GiQnJ8PLywuenp6WDoeIiJ4A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OHCgeHp6ipOTkwQHB8v58+elcuXKEhYWVqTjlJmZKe7u7uLq6lqk8/urr74SJycnvSkY586dKwAkKirK6Dq+vr7SrFmzQrW/d+/eQk2fCECio6Pzbat169b5rl8aGJuu8MqVKzJgwAApX768WFlZiaurqzRu3FgmTZokp0+fLnQ7IiKTJ0+WSpUqiVarfQLRP1ueh897InNRiJSWkbf0LMjIyEBMTAx8fX2L/SUhRKWJWq1G+fLl0aVLFyxfvrzQ6yUnJ6Nq1aqYO3eubpYWMl2VKlUwYMCAQn/zZlHayczMRJUqVfD+++9jzJgxxQv0OcDPe6KSw3nIiYgKYcuWLUhISED//v2LtJ6rqysmTZqEL774wujMLlR6rFy5EtbW1kWet5+IqLiYkBMR5ePvv//Gd999h3HjxqFBgwZo3bp1kduYPHmybgYaKr2GDRuG69evG52KkojoSeJfByKifCxevBjvvvsuypYti9WrV1s6HCIiegZxDDmVKI4pJCJ6PvDznqjksIeciIiIiMiCmJATEREREVkQE3IiIiIiIgtiQk5EREREZEFMyImIiIiILIgJOT0RnLyHiOjZxs95opLDhJxKlLW1NRQKBVJTUy0dChERPUFpaWkAcj73iah4rCwdAD1bVCoVXF1dkZCQgMzMTLi4uMDKygoKhcLSoRERUQkQEaSlpSE+Ph5ubm5QqVSWDonoqccvBqISJyJITk5GfHw8NBqNpcMhIqInwM3NDT4+PuxwISoBTMjpiRERaDQaqNVqS4dCREQlyNramj3jRCWICTkRERERkQXxoU4iIiIiIgtiQk5EREREZEFMyImIiIiILIgJORERERGRBTEhJyIiIiKyICbkREREREQWxISciIiIiMiC/g+sX7xbO887FwAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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eiSvy4qtrS1sbW0LJmAiIiKinKhUgIn6kIN9yHPEM5SN2NhYdOrUCTY2Nti+fTvs7Ox01vv5+eHChQt4/PixvGz//v3QaDTw8fExdbhEREREVAgV2RbyuLg4XL9+XZ6PiIhAeHg43NzcUL58eURFReHOnTt48OABAODq1asAUlu2PTw85GT85cuXWL9+vc7NlyVLloRarUanTp3g4+ODAQMG4IsvvkBkZCQmT56MoKAgtoATERGR+eKDgcxKkU3IT58+jbZt28rz48aNAwAEBAQgJCQE27dvR2BgoLy+b9++AIBp06YhODgYZ8+eRWhoKACgcuXKOmVHRETA29sbarUaO3fuxLBhw+Dn5wdHR0cEBARgxowZBX14RERERFREFNmEvE2bNhBCZLn+vffew3vvvWfw/mm8vLywe/duQ0IkIiIiUoYkASoTtVxr2UKeE/YhJyIiIiJSEBNyIiIiIiIFFdkuK0RERESknySpIJlo2ENT1VOY8QwRERERESmILeRERERElkZlwps6OexhjthCTkRERESkILaQExEREVkaUz4YyGQPICq82EJORERERKQgtpATERERWRq2kJsVtpATERERESmILeRERERElkalSp1MU5mJ6im8eIaIiIiIiBTEhJyIiIiISEHssmJObLSpkxlK0Zr/327JwrxjTDL7+NRKh5AjlSSUDoEKmArm/Rqb/7vE/KUIM/2eM9O4Cgxv6jQr5p0hEBEREREVcUzIiYiIiCyNhP9ayQt8Uvpgdd29exdt2rSBj48P6tSpg02bNikdErusEBEREZHlsLKywuLFi1GvXj1ERkaiYcOGeO211+Do6KhcTIrVTERERETKsOA+5KVLl0bp0qUBAB4eHihRogSioqIUTcjZZYWIiIiIzMaxY8fQrVs3eHp6QpIkbNu2LdM2y5cvh7e3N+zs7NCkSROcOnXKoLrOnDmDlJQUlCtXLp9R5w9byImIiIgsjUpKnUwitZ7Y2Fidpba2trC1tc209YsXL1C3bl0MGjQIPXv2zLT+p59+wrhx47By5Uo0adIEixcvhr+/P65evYpSpUoBAOrVq4fk5ORM++7btw+enp4AgKioKAwcOBCrVq3K9xHmFxNyIiIiIipwGVuhp02bhuDg4EzbdenSBV26dMmynIULF2LIkCEIDAwEAKxcuRK7du3Cd999h4kTJwIA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wYMHmDZtGtRqNd555x1IkoTx48dj2rRpqFu3LurVq4e1a9fi77//xubNmwGktpZ37twZQ4YMwcqVK5GUlIQRI0agb9++HGGFiIiIzJqQUidT1VVUVKtWDVevXoW3tzfq1q2Lb775Bt7e3li5ciVKly5tcLkmT8i9vLxMXaVe9+7dwzvvvIOnT5+iZMmSaNGiBU6ePImSJUsCSO0jFB8fj7FjxyIqKgp169bF/v37UalSJbmMDRs2YMSIEWjfvj1UKhV69eqFpUuXKnVIRERERFSARo8ejYcPHwIApk2bhs6dO2PDhg2wsbFBSEiIweUq0mXFHPz44485bjNx4kSdccgzcnNz40OAiIiIqPDhKCt58tZbb+H9999Hv3795K7UDRs2xO3bt/H333+jfPnyKFGihMHlW+woK0REREREufHs2TN07doV5cuXx9SpU+Uhsh0cHNCgQYN8JeMAE3IiIiIiomwdPHgQN2/exODBg7F+/XpUqVIF7dq1w8aNG3Ue9mgoJuRERERElkYy8VQEeHl5ITg4GDdv3sT+/fvh6emJIUOGoHTp0ggKCsKZM2cMLpsJORERERFRHrRr1w7r169HZGQk5s6dix9//DFfw15b7E2dRERERJZKklInU9VVFEVERCAkJAQhISGIiYlBhw4dDC6LLeRERERERLkQHx+P9evXo127dqhSpQrWrVuHwYMHIyIiAnv27DG4XLaQExEREVkaDnuYJ6dOncJ3332Hn376CfHx8ejRowf27NmD9u3bG+WJ8oon5ImJidi2bRvCwsIQHR2NlJSUTNtIkoTVq1crEB0RUeGWWNwKv1yvBwBwU8cpGwwRUSHVtGlT1K1bFzNnzkS/fv1QrFgxo5avaEJ++/ZtdOzYETdu3IAQWf/1xISciIiIyIhMOfpJEehDfvr0aTRo0KDAylc0IR87diyuX7+OAQMGYNCgQShbtiysrBRvtCciIiIikhVkMg4onJAfOnQI7du3x9q1a5UMg4jIaKRkAeuYzF3vcivJWQVho+d+e62AzTPDy012UgEOBu9OREUNW8jNiqIJuVarRf369ZUMgYjIqJxuxqPja1cN3v/Y+kp40tQ503KbZyl4vclFg8sNXeqNV934CyQRkTlSdNjDJk2a4MqVK0qGQERERESkKEWbS+bNm4dWrVph8+bNeOutt5QMxSwIGwFha55D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sGDBAp3yRxPyjh076t0+NjZWb33gvx75U6dOVShGAOjatStkMu1baWQyGbp27YpLly7h9OnTePbZZ0ttY+rUqRg3bhx27dqFqKgonDhxAv/88w9WrlyJtWvX4scff0T//v0Njunq1asYMGAAFAoFfvvtN3h7e2utP3r0KICi3v19+/bpbK9QKHD+/HmD9/cwtVqNCxcuQCaT6f3ZrFq1Clu3btUq+/77743aFxER/YcJOREZxdvbGwkJCbh9+7bOjYvz58/X3Ij4ww8/YMSIESW2oU9mZiZkMpne3mlvb29IkoTMzMyKHUAp+y8uz8jIMKgdJycnDBkyBEOGDNFs98477+DLL7/E2LFjcevWLYPGdGdkZCAkJAR3797Fr7/+ipYtW+rUKZ73+8MPPzQotvJISUmBUqlErVq19I4N/+mnnzT/f/7557Fz5060b9++0uMgIqppOMsKERnlqaeeAgDs37/f6Db0zUwCAM7OzlCr1XofKJSSkgIhBJydnTVlxb3cSqVSp35pSXVycnKp5cbOFe7i4oIVK1agfv36SEtLw5kzZ8rcRqlUYsiQITh37hyWLVuGvn376q1XfNyZmZkQQpT4Mkbx0JicnByo1epS6544cQKOjo5o2rSpUfsiIqL/MCEnIqOEhYVBJpNhzZo1SEtLq9S227ZtCwA649AfLnt4VhM3NzcARTOEPKp4+Is+f//9t07iqVarERUVBUmS0Lp163JG/h9JkuDg4GBw/YiICOzZswcTJ05EREREifU6deoE4L+hK5XJxcUFjRo1Ql5eHqKiokqsd+3aNaSmpqJt27Y6Q36IiKj8+E5KREZp0qQJZsyYgZSUFPTt27fEubv1TedXlrCwMADAggULtIamZGRkaMamF9cBgPbt20OSJPzwww/Iy8vTlF+6dKnU6REvXryIr776Sqvsq6++wsWLFxESElLmdI6rV6/G8ePH9a7btm0bEhIS4OrqihYtWpTaztKlS7F69Wo8//zz+Oyzz0qtO2HCBFhZWWHixIla00QWS09PL/VDSFnCw8M1+7lz547OepVKpRm6wuEqRESVg2PIichoH374IQoKCvDpp58iICAAQUFBaN26Nezt7ZGSkoK4uDgcO3YMjo6O5ZqnOygoCBMnTsTy5cvRokULDBo0CEIIbN26FTdv3sSkSZMQFBSkqe/r64sRI0Zg06ZN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lggAIi4uTu82fn5+onPnzga1v3//foOmTwQgEhISSm2rR48epW5vCfRNV3jlyhUxatQo4evrK6ysrISLi4vo0KGDmDFjhjhz5ozB7QghxMyZM0W9evWEWq2ugugfLzXh/Z7IVCQhLGXkLT0O8vLykJiYCD8/vwo/JITIkiiVSvj6+qJfv35Yu3atwdtlZGSgYcOGWLJkiWaWFjJegwYNMGrUKIOfvFmedvLz89GgQQPMmjULkydPrligNQDf74kqD+chJyIywLZt25CamorQ0NBybefi4oIZM2bg448/1juzC1mOdevWQaFQlHvefiKiimJCTkRUin/++QdfffUVpk6dirZt26JHjx7lbmPmzJmaGWjIco0fPx7Xr1/XOxUlEVFV4l8HIqJSREZG4s0334SXlxe+++47c4dDRESPIY4hp0rFMYVERDUD3++JKg97yImIiIiIzIgJORERERGRGTEhJyIiIiIyIybkRERERERmxISciIiIiMiMmJBTleDkPUREjze+zxNVHibkVKkUCgUkSUJ2dra5QyEioiqUk5MDoOh9n4gqxsrcAdDjRS6Xw8XFBampqcjPz4ezszOsrKwgSZK5QyMiokoghEBOTg5SUlLg6uoKuVxu7pCIqj0+GIgqnRACGRkZSElJgUqlMnc4RERUBVxdXeHj48MOF6JKwIScqowQAiqVCkql0tyhEBFRJVIoFOwZJ6pETMiJiIiIiMyIN3USEREREZkRE3IiIiIiIjNiQk5EREREZEZMyImIiIiIzIgJORERERGRGTEhJyIiIiIyIybkRERERERm9P8AKwUkc57Y0gQAAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Load final validation loss data for each k value separately\n", - "max_p = 60 # Only visualize completed experiments (p <= 55)\n", - "\n", - "from matplotlib.colors import LogNorm\n", - "\n", - "# Create separate plots for each k value\n", - "for k in k_values:\n", - " loss_grid, loss_std = load_sweep_results_grid_final_val_loss_p_h(\n", - " sweep_dir,\n", - " k,\n", - " p_values,\n", - " hidden_dims,\n", - " max_p=max_p,\n", - " )\n", - "\n", - " # Filter p values - only show p <= max_p\n", - " p_values_filtered = [p for p in p_values if p <= max_p]\n", - "\n", - " # Plot final validation loss heatmap: p (group size) vs hidden_dim\n", - " plt.figure(figsize=(12, 8))\n", - " cmap = plt.cm.viridis_r.copy()\n", - " cmap.set_bad(color=\"black\")\n", - " # Set extent to align cells with tick positions\n", - " # extent: [left, right, bottom, top] in data coordinates\n", - " plt.imshow(\n", - " loss_grid[:, : len(p_values_filtered)],\n", - " aspect=\"equal\",\n", - " cmap=cmap,\n", - " norm=LogNorm(),\n", - " )\n", - "\n", - " plt.xlabel(\"Group Size $|G|$\", fontsize=14)\n", - " plt.ylabel(\"Hidden Dimension $H$\", fontsize=14)\n", - " plt.xticks(\n", - " range(len(p_values_filtered)), p_values_filtered, rotation=45, ha=\"center\"\n", - " )\n", - "\n", - " # Set y-axis ticks (hidden dimensions)\n", - " plt.yticks(range(len(hidden_dims)), hidden_dims)\n", - " plt.gca().invert_yaxis()\n", - "\n", - " # Theory boundaries\n", - " x_step = np.arange(len(p_values_filtered) + 1) - 0.5\n", - "\n", - " # Upper boundary: H = (k+1)*2^{k-1} * |G|\n", - " upper_boundary_coeff = (k + 1) * (2 ** (k - 1))\n", - " y_step_upper = [\n", - " min(\n", - " len(hidden_dims) - 1,\n", - " (\n", - " # Find the first H that satisfies H >= upper_boundary_coeff * p\n", - " np.argmax(np.array(hidden_dims) >= upper_boundary_coeff * p)\n", - " if upper_boundary_coeff * p <= max(hidden_dims)\n", - " else len(hidden_dims) - 1\n", - " ),\n", - " )\n", - " for p in p_values_filtered\n", - " ]\n", - " y_step_upper.append(y_step_upper[-1]) # Extend for step plot\n", - " # Convert to edge positions (subtract 0.5 to place at bottom edge of cells)\n", - " y_step_upper = [y - 0.5 for y in y_step_upper]\n", - "\n", - " # Lower boundary: H = 2^{k-1} * |G|\n", - " lower_boundary_coeff = 2 ** (k - 1)\n", - " y_step_lower = [\n", - " min(\n", - " len(hidden_dims) - 1,\n", - " (\n", - " # Find the first H that satisfies H >= lower_boundary_coeff * p\n", - " np.argmax(np.array(hidden_dims) >= lower_boundary_coeff * p)\n", - " if lower_boundary_coeff * p <= max(hidden_dims)\n", - " else len(hidden_dims) - 1\n", - " ),\n", - " )\n", - " for p in p_values_filtered\n", - " ]\n", - " y_step_lower.append(y_step_lower[-1]) # Extend for step plot\n", - " # Convert to edge positions (subtract 0.5 to place at bottom edge of cells)\n", - " y_step_lower = [y - 0.5 for y in y_step_lower]\n", - "\n", - " plt.step(\n", - " x_step,\n", - " y_step_upper,\n", - " where=\"post\",\n", - " color=\"red\",\n", - " linewidth=3,\n", - " linestyle=\"--\",\n", - " label=f\"Upper boundary ($H$ ≥ $(k+1) \\\\cdot 2^{{k-1}} |G|$)\",\n", - " )\n", - "\n", - " plt.step(\n", - " x_step,\n", - " y_step_lower,\n", - " where=\"post\",\n", - " color=\"blue\",\n", - " linewidth=3,\n", - " linestyle=\"--\",\n", - " label=f\"Lower boundary ($H$ ≥ $2^{{k-1}} |G|$)\",\n", - " )\n", - "\n", - " # Place legend outside the plot area\n", - " plt.legend(\n", - " loc=\"upper center\", bbox_to_anchor=(0.5, -0.12), fontsize=12, frameon=True\n", - " )\n", - "\n", - " plt.colorbar(label=\"Final Validation Loss\")\n", - " plt.title(\n", - " f\"Final Validation Loss: Group Size $|G|$ vs Hidden Dimension $H$\\n($k={k}$, black = incomplete experiment, p ≤ {max_p})\",\n", - " fontsize=14,\n", - " fontweight=\"bold\",\n", - " )\n", - " plt.tight_layout()\n", - " plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "d3111eeb", - "metadata": {}, - "source": [ - "### Training Instability" - ] - }, - { - "cell_type": "code", - "execution_count": 75, - "id": "d743a392", - "metadata": {}, - "outputs": [], - "source": [ - "def load_sweep_results_grid_spikiness_p_h(\n", - " sweep_dir: str, k: int, p_values: list, hidden_dims: list, max_p: int = None\n", - "):\n", - " \"\"\"\n", - " Compute fraction of training steps where loss increased (instability) for p vs h sweeps.\n", - "\n", - " Updated for experiment naming: k{k}_p{p}_h{h}\n", - " Only loads completed experiments (checks for run_summary.yaml).\n", - "\n", - " Args:\n", - " sweep_dir: Path to the sweep directory\n", - " k: Sequence length parameter (2, 3, or 4)\n", - " p_values: List of p (group size) values\n", - " hidden_dims: List of hidden dimension values\n", - " max_p: Maximum p value to include (filters incomplete experiments)\n", - "\n", - " Returns:\n", - " grid: 2D array with mean frac_upward across seeds\n", - " Shape: (len(hidden_dims), len(p_values))\n", - " std_grid: 2D array with standard deviations\n", - " \"\"\"\n", - " sweep_path = Path(sweep_dir)\n", - "\n", - " grid = np.full((len(hidden_dims), len(p_values)), np.nan)\n", - " std_grid = np.full((len(hidden_dims), len(p_values)), np.nan)\n", - "\n", - " for i, h in enumerate(hidden_dims):\n", - " for j, p in enumerate(p_values):\n", - " # Filter by max_p if specified\n", - " if max_p is not None and p > max_p:\n", - " continue\n", - "\n", - " exp_name = f\"k{k}_p{p}_h{h}\"\n", - " exp_dir = sweep_path / exp_name\n", - "\n", - " if not exp_dir.exists():\n", - " continue\n", - "\n", - " # Check if experiment is completed\n", - " seed_dir = exp_dir / \"seed_0\"\n", - " if not seed_dir.exists() or not (seed_dir / \"run_summary.yaml\").exists():\n", - " continue # Skip incomplete experiments\n", - "\n", - " frac_upwards = []\n", - " for seed_dir in exp_dir.glob(\"seed_*\"):\n", - " loss_file = seed_dir / \"train_loss_history.npy\"\n", - " if loss_file.exists():\n", - " loss_history = np.load(loss_file)\n", - " log_loss = np.log10(loss_history + 1e-10)\n", - " log_changes = np.diff(log_loss)\n", - "\n", - " # Fraction of steps where loss went UP\n", - " frac_upward = np.sum(log_changes > 0) / len(log_changes)\n", - " frac_upwards.append(frac_upward)\n", - "\n", - " if frac_upwards:\n", - " grid[i, j] = np.mean(frac_upwards)\n", - " std_grid[i, j] = np.std(frac_upwards) if len(frac_upwards) > 1 else 0.0\n", - "\n", - " return grid, std_grid" - ] - }, - { - "cell_type": "code", - "execution_count": 77, - "id": "683b555c", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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rRuAjG4Ax44dw/Dhw/NdjlKpzLFfx9KlSzFmzBgMHToUH330ERo2bAgXFxdYWVnhzZs3uHXrFs6cOYObN29i+PDhsvpP5yu5yJygbubMmXBycsp2K1JOBEGQphInIiIiIqKcBQYGwt/fHw0bNkTjxo2xaNEiJCQkICAgAADQr18/uLq6YtasWQAy5mBr2LAhKleujJSUFBw4cAAbNmzAihUr1Jbftm1bXLp0CWfOnMHWrVuxadMmPHr0CElJSShdujTq16+Pfv36wc/PT2UW74LIV3Kxdu1aCIKAMWPGwMnJCWvXrs1X4UwuiIiIiMiQ6LrPRUH06tULL1++xMSJExEVFYV69erh4MGDUifviIgImJj8N9hrQkIChg4diidPnqBYsWKoUaMGNm7ciF69euVaT4sWLdCiRYsCx5cfgpiPDgqPHj0CALi6usLMzEx6nB9ubm7yozNwcXFxsLe3h7XFRAiCVd4HEBG9h2ooSuo7hDzFCupvETAUZtqb01YjiouGfRe1m8JG3yHkKUFI13cIaqWLSTgmDkVsbOx7P39X5ve2a379YJtLfwNNeZuairqb1hvFtc0qX+8W7yYI73PCQERERETvMaWQseiiHiOk0Z9KRFHEvXv38PjxY00WS0RERERERYCs5GLXrl3o168f3rx5I617+PAh6tSpgxo1asDd3R29e/eGQqHQWKBERERERGTYZN1EuWLFCjx//lylF/no0aNx8+ZNfPjhh3j9+jW2b9+Otm3bYuDAgRoLloiIiIioMAy5Q/f7QFbLxa1bt9C4cWPp8du3b/HHH3+gV69eOHr0KC5cuICaNWvit99+01igRERERESkGZcvX8b169elx7///ju6deuGH374AampqbLLlZVcREdHq8wUeObMGaSnp6NPnz4AAHNzc3z00Ud48OCB7MCIiIiIiDQts+VCF4sh+/rrr3H37l0AwL///ovevXujePHi2L59O77//nvZ5cpKLuzs7PD69Wvp8YkTJ2BiYoKWLVtK68zNzZGQkCA7MCIiIiIi0o67d++iXr16AIDt27ejVatW2Lx5M9auXYudO3fKLldWclGjRg3s27cPr1+/RkxMDDZv3gxPT0+VPhiPHj2SJvwgIiIiIjIEbLnIIIoilEolAODo0aPo2LEjAKB8+fJ49eqV7HJlJRcjR45EZGQkypUrhwoVKuDZ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REREREbmgw8+wO3bt1GiRAm0atUKAwcOhLe3d6E6cwNMLoiIiIjIiLDlIsPgwYPh7e2N2rVra7RcJhdEREREREZm2LBh0t+Zg8dqYgJsjhZFREREREZDFAWISh0sBt5yAQDBwcGoXbs2rKysYGVlhdq1a+PXX38tVJmyWy5SU1OxZ88eXLx4ETExMVAoso/fLAgCgoODCxUgERERERFp1sSJE7FgwQKMGDECXl5eAICQkBCMHj0aERERmDp1qqxyZSUXjx49wkcffYQHDx4gtzn4mFwQERERkSFhn4sMK1aswOrVq9GnTx9pXZcuXVCnTh2MGDFCt8nF6NGjcf/+ffTt2xf9+/dHuXLlYGbG7htEREREREVBWloaGjZsmG29p6cn0tPTZZcrKyM4fvw42rZti3Xr1smumIiIiIhI10QxY9FFPYasb9++WLFiBRYsWKCyftWqVfDz85NdrqzkQqlUon79+rIrJSIiIiIi/QoODsbhw4fRtGlTAEBoaCgiIiLQr18/BAYGSvu9m4DkRlZy0aRJE9y+fVvOoUREREREpGc3btxAgwYNAAAPHjwAAJQuXRqlS5fGjRs3pP0KOjytrORi9uzZaNWqFXbs2IFPP/1UThGkI7FCqr5DyJO9aKHvEIioEJSCgbf9A3BRWus7hFy9MknSdwi5KiUW03cIubIWDb/fp6H+n5gY4awESlGAUgedrXVRR2GcOHFCK+XK+m/8448/0KZNG/Tq1Qve3t5o0KAB7Ozssu0nCAImTJhQ6CCJiIiIiMjwyUouJk+eLP198uRJnDx5Uu1+TC6IiIiIyJAY+1C09evXV3urk729PapVq4ZRo0bBw8NDdvmykgttNaMQEREREZH2dOvWTe36mJgYXL58GfXr18fx48fRvHlzWeXLSi68vb1lVUZEREREpFc6armAgbZcTJo0KdftP/74IyZOnIhjx47JKt/4evEQEREREZFan3/+Oa5fvy77eNnJRXp6OhYuXIjGjRvDzs5OZYbuq1evYujQobh7967swIiIiIiINC2zz4UulqLI1NQUSqVS9vGybotKSkpCu3btcO7cOZQuXRp2dnZISEiQtlesWBFr1qxByZIlMX36dNnBERERERGR7uzatUv3HbpnzpyJs2fPYvbs2QgKCsKUKVMwbdo0abu9vT28vb1x6NAhJhdEREREZDCMfbSoJUuWqF0fGxuLsLAw/PHHH/jzzz9lly8rudi6dSvatGmD77//HoD6mfsqVaqEK1euyA6MiIiIiIg0a+HChWrX29nZoXr16jh9+jS8vLxkly8ruYiIiMAnn3yS6z62traIjY2VFRQREREREWleeHi4VsuXlVzY2trixYsXue7z4MEDlClTRlZQRERERETaICoFiGruutFGPcZI1mhRTZs2xb59+xATE6N2++PHj3HgwAG0atWqMLEREREREVERIiu5CAoKwps3b9C2bVucPXsW6enpAIDExEQcO3YMvr6+SE9PR2BgoEaDJSIiIiIqDEMfinb58uVwd3eHlZUVmjRpggsXLuS47+rVq9GyZUuUKFECJUqUgI+PT67764Ks5KJVq1ZYtmwZrl+/jlatWmHmzJkAMm6XateuHe7fv4+ff/4Znp6eGg2WiIiIiOh9tXXrVgQGBmLSpEm4fPky6tatC19f3xy7I5w8eRJ9+vTBiRMnEBISgvLly6Ndu3Z4+vSpjiP/j+xJ9IYMGYJr165h+PDhaNSoESpXroz69etj8ODBuHLlCr766itNxklEREREVGi6brmIi4tTWVJSUnKMbcGCBRg4cCACAgLg4eGBlStXonjx4vjtt9/U7r9p0yYMHToU9erVQ40aNfDrr79CqVTi2LFjavfv3r074uLiAADr16/PNRa5ZHXozlSzZk0sXrxYU7EQEREREb1Xypcvr/J40qRJmDx5crb9UlNTERYWhnHjxknrTExM4OPjg5CQkHzVlZiYiLS0NJQsWVLt9v379yMhIQF2dnYICAhA+/bt4ejomP+TyYdCJReGYPbs2Rg3bhxGjRqFRYsWAQCioqIQFBSEI0eO4O3bt6hevTp+/PFH9OjRQzouOjoaI0aMwL59+2BiYoIePXpg8eLFsLGx0dOZEBEREZG26XoSvcePH8POzk5ab2lpqXb/V69eQaFQwMnJSWW9k5MT/vnnn3zVOWbMGLi4uMDHx0ft9ho1amDcuHFo06YNRFHEtm3bVGLLql+/fvmq8135Si769+8vq3BBEBAcHCzr2Py4ePEifvnlF9SpU0dlfb9+/RATE4O9e/eidOnS2Lx5M3r27IlLly6hfv36AAA/Pz88e/YMR44cQVpaGgICAjBo0CBs3rxZa/ESERERkXGxs7PL8Qu8Js2ePRtbtmzByZMnYWVlpXaflStXIjAwEH/88QcEQcD48ePVToYtCIJ2k4u1a9eqXS8IAkRRzHG9NpOL+Ph4+Pn5YfXq1Zg+fbrKtnPnzmHFihVo3LgxAGD8+PFYuHAhwsLCUL9+fdy+fRsHDx7ExYsX0bBhQwDA0qVL0bFjR8yfPx8uLi5q60xJSVG5Ny3znjUiIiIiKhqUIqDUQcuFMvtX5FyVLl0apqameP78ucr658+fw9nZOddj58+fj9mzZ+Po0aPZfnTPqlmzZjh//jyAjFuu7t69q/HbovLVoTs8PFxlefDgAT7++GOUKlUK06ZNw8mTJ3H79m2cPHkSU6dORalSpdC5c2fcu3dPo8FmNWzYMHTq1Elts0+zZs2wdetWREdHQ6lUYsuWLUhOTkbr1q0BACEhIXBwcJASCwDw8fGBiYkJQkNDc6xz1qxZsLe3l5Z376EjIiIiIpLDwsICnp6eKp2xMztne3l55Xjc3LlzMW3aNBw8eFDlu21ewsPDtTLhdb5aLtzc3FQez549G6Ghobh27RrKli0rra9evTpatWqFgIAA1K9fHzt27MD333+v2YgBbNmyBZcvX8bFixfVbt+2bRt69eqFUqVKwczMDMWLF8fu3btRpUoVABl9Mt7N0szMzFCyZElERUXlWO+4ceNU5u6Ii4tjgkFEREREGhEYGAh/f380bNgQjRs3xqJFi5CQkICAgAAAGbf+u7q6YtasWQCAOXPmYOLEidi8eTPc3d2l77E2NjZ59iN2c3NDTEwMgoODcfv2bQCAh4cHBgwYAHt7e9nnIGso2uDgYPTs2VMlscjK1dUVPXv2xOrVq2UHlpPHjx9j1KhR2LRpU473k02YMAExMTE4evQoLl26hMDAQPTs2RPXr18vVN2WlpbSfXO6un+OiIiIiDTHkCfR69WrF+bPn4+JEyeiXr16uHr1Kg4ePCh18o6IiMCzZ8+k/VesWIHU1FR8+umnKFu2rLTMnz8/z7ouXbqEypUrY+HChYiOjkZ0dDQWLlyIypUr4/LlywWOPZOs0aKePHmS4xf7TFZWVnjy5ImsoHITFhaGFy9eoEGDBtI6hUKB06dPY9myZbhz5w6WLVuGGzduoFatWgCAunXr4q+//sLy5cuxcuVKODs7Z5uMJD09HdHR0Xne00ZEREREpC3Dhw/H8OHD1W47efKkyuOHDx/Krmf06NHo0qULVq9eDTOzjJQgPT0dX331Fb755hucPn1aVrmyWi7KlSuH3bt3Izk5We32xMRE7N69G+XKlZMVVG7atm2L69ev4+rVq9LSsGFD+Pn54erVq0hMTASQ0UklK1NTUyiVSgCAl5cXYmJiEBYWJm0/fvw4lEolmjRpovGYiYiIiMgwGHLLhS5dunQJY8aMkRILIKObwPfff49Lly7JLldWcvHVV1/h33//RfPmzfH777/j9evXAIDXr19jz549aNGiBR4+fIiBAwfKDiwntra2qF27tspibW2NUqVKoXbt2qhRowaqVKmCr7/+GhcuXMCDBw/w008/4ciRI+jWrRuAjMn/2rdvj4EDB+LChQs4e/Yshg8fjt69e+c4UhQRERER0fvCzs4OERER2dY/fvwYtra2ssuVdVtUUFAQ7t69izVr1qB79+4AMloKMlsGRFFEQEAAgoKCZAcml7m5OQ4cOICxY8eic+fOiI+PR5UqVbBu3Tp07NhR2m/Tpk0YPnw42rZtK02it2TJEp3HS0RERES6I4qAqNRNPYasV69eGDBgAObPn49mzZoBAM6ePYugoCD06dNHdrmykgsTExMEBwejX79+WLduHf7++2/ExsbC3t4edevWRd++faVhX3Xh3fvPqlatip07d+Z6TMmSJTlhHhEREREZpfnz50uT5aWnpwPI+JF+yJAhmD17tuxyZSUXmby9veHt7V2YIoiIiIiIdEZX/SEMvc+FhYUFFi9ejFmzZuHBgwcAgMqVK6N48eKFKrdQyQURERERERVdxYsXxwcffKCx8vKVXPTv319W4YIgIDg4WNaxRERERESaphQFKHXQqqCLOgxRvpKLtWvXql0vCAJENb1VMtczuSAiIiIiMh75Si7Cw8NVHiuVSowaNQrnz5/HqFGj0LJlSzg5OeH58+c4ffo0lixZAi8vLyxcuFArQRMRERERkeHJV3Lh5uam8nj27NkIDQ3FtWvXULZsWWl99erV0apVKwQEBKB+/frYsWMHvv/+e81GTEREREQkEzt0a5esDt3BwcHo2bOnSmKRlaurK3r27InVq1czuSAiIiIiMkD37t3DiRMn8OLFC2m+ukwTJ06UVaas5OLJkyewsrLKdR8rKys8efJEVlBERERERNrAlosMq1evxpAhQ1C6dGk4OztDEP6LVxAE3SYX5cqVw+7duzFt2jS1SUZiYiJ2796N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uBVKuw9MrHKUGw/FI8ftD81sNzePTKz29CR1DgmVMSmKM1JgfIWqgkhTnJAGw94LUcybnE9ERE8fJhdERERE9MyQf/8riuM8izihm4iIiIiILII9F0RERET0zOCci8LFngsiIiIiIrII9lwQERER0TNDCymim+hxzgUREREREZHZ2HNBRERERM8MUbIehX4c3f88W9hzQUREREREFsHkgoiIiIiILILDooiIiIjomcEJ3YWLPRdERERERGQR7LkgIiIiomeIQIqkV4E9F0RERERERGYrlsnF/v370bVrV5QtWxaKomDr1q0Gdc6dO4du3brBy8sLbm5uaNy4MW7cuKHbnpaWhuHDh6NkyZJwd3dHz549ERMTU4SvgujpdU9xh6/jPPg6zoOH08fwcPoY8Yq7tcMiIiKCtggfz6JimVwkJyejbt26WLZsmdHtV65cQcuWLREYGIi9e/ciKioK06ZNg7Ozs67Oe++9hx07duD777/Hvn37cOfOHfTo0aOoXgIRERER0VOnWM656Ny5Mzp37mxy+/vvv4+XX34Z8+fP15VVqVJF9+/ExESsXr0aGzduxIsvvggAWLNmDWrWrInDhw+jWbNmhRc8EREREVkNV4sqXMWy5yInWq0W//nPf1C9enUEBwfDz88PTZs21Rs6dezYMWRmZqJDhw66ssDAQFSoUAEREREm205PT0dSUpLeg4iIiIiIsjx1yUVsbCwePXqEuXPnolOnTvj999/RvXt39OjRA/v27QMAREdHw9HREd7e3nr7li5dGtHR0SbbnjNnDry8vHSP8uXLF+ZLISIiIiILkyJ8PIueuuRCq82aPvPqq6/ivffeQ7169TBp0iS88sorWLFiRYHanjx5MhITE3WPmzdvWiJkIiIiIqKnQrGcc5ETX19f2NvbIygoSK+8Zs2aOHjwIADA398fGRkZSEhI0Ou9iImJgb+/v8m2nZyc4OTkVChxEz1NHEWNTnIWAJD573oZv6hqIkN56t5yiIiI6DFP3V96R0dHNG7cGBcuXNArv3jxIipWrAgAaNiwIRwcHLB792707NkTAHDhwgXcuHEDzZs3L/KYiZ42HkjD1+oNemUBjlMQDy5HS0RE1qVVBFqFE7oLS7FMLh49eoTLly/rnl+9ehUnTpxAiRIlUKFCBYwfPx69e/dG69at0a5dO+zcuRM7duzA3r17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15X16dNH6tSpI25ubhIUFCRbtmyx2u+JrV+DRI/jsKgi5u/vj2XLliEoKAh9+/aFRqPB5s2b8cknn+Dzzz/H7NmzsWXLFpw5c8baoQIAHB0dERMToxuuJSKoWrUq5s+fj8DAQPzwww/YsWOHVWJTq9X4/PPP4e7ujnr16gEAQkJCMHXqVHz88cfo3r07BgwYgMjISKvEly0zMxNqtRopKSkAgNTUVADA3Llz0a5dOyxfvhyXL18GUPTd7iVLlkSnTp3g5uaGmTNnokmTJrh79y7eeecdfPHFF8jMzERISAiuXLlilfgAwMXFBffv34evry8AQKvVokGDBvj222+hVquxatUqnDx5ssjjArJ+tlOmTIGbmxu6desGAOjRowdGjRqFoUOHon379ggPD0dsbKxV4suWnp5u09dgx44deQ2aQUSQkZFRLK5BlUoFV1dX3LlzB0DW+zcAhIeHo0ePHtizZw/++usvANb5GXt5eSEkJATVqlVDWFgYGjVqhIcPH2LatGn466+/UKNGDYwZMwaHDh2ySowuLi64d++ezV2DREZZL695tt2+fVsmT54su3fvFhH9rsyqVavK+PHjrRWajlqtloyMDBkwYIC89tprkpaWJlqtVjQajYiIXLlyRZo3by69e/e2WowXL16UIUOGSLNmzaR8+fLy8ssvy7lz5yQlJUWOHj0q5cqVk9DQUKvFl61x48bSrl073fO0tDTdvxs1aiR9+vQp8piyf44iImPGjJHSpUtLly5dJDo6Wq9erVq1JCwsrIij+5+HDx9Ku3btZOjQoSKSdV1mZmaKSNY38s8995yMGjXKavEdO3ZMgoODpWPHjhIYGCidOnWS48ePy/Xr1+U///mPODo6yuTJk4s8rjt37siZM2d0zxs1amRT1+CdO3fk5MmTuufvvfeezV2D2b8jSUlJ0q5dO3n33XdFxHauQbVaLSIiR48eleDgYAkODrapazA5OVnS09N1z7t16yb169eXhIQEERHdORQR6dy5s971WZQxpqSk6J4vWbJEgoKCpGPHjnL79m29uq1atdINaS4qN2/elCNHjoharbbJa5DIGCYXVpSYmKj3xqvVaiU+Pl6aN28uGzZssFpc2X+wsu3du1fs7Oz0hkBl19m7d6+oVCo5ffq01eK7fPmyvPXWW9KlSxc5f/683rbt27eLoihy4cKFIovv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2b59u962sWPHSuvWra1+J+niEOPjtmzZIoqiyMGDB60dClGuOCyKDGSv0KLVatGnTx8oioK33noL27dvx5UrV3DkyBGrrkiRW3z//PMPnJ2drRafSqXSrXCT/RwApk+fjtmzZyMyMlK3+gjjM61ixYq6bn6tVouMjAy4u7vj+eeft3JkWWw1vuyfa0BAAAYMGIDSpUvj559/RkBAAAICAqAoCurWrQsnJyebjs+av8Nly5bFpEmTdDEoigIRwf3791GqVCnUr1/farHlJb66detaNb5GjRrh119/RZs2bbBq1SpUrlxZNywrMzMT1atXh1qt1q10xBhz98orr+Cll17C8uXL0aBBA7i4uFg7JCLTrJnZkG3TarW6b25efPFFKVGiRJFMjs4rW44vu3dgxowZMmTIEFmwYIE4OTkVyeT3vLD1+IyZNm2aVKhQQW94ly2xtfgyMjJk9erVuhV4bOlbWBHbj8+Y6dOnS7Vq1YyuKGQLbC2+ffv2SdmyZaVJkyYyaNAgeeutt8TLy6tIVybLTXGIMducOXPE09NT7t69a+1QiHJk/a8nyWYpigKNRoPx48djz549OHHiRJFMjs4rW44vuzfAwcEBX375JTw9PXHw4EE0aNDAypFlsfX4Hvf9999j3759+O6777Br1y5Uq1bN2iHpsdX4HBwc0L9/f93PuqjusZFXth7f47777jvs2bMH33//PXbv3m1zE2dtNb7WrVvjzz//xPr163H48GFUq1YNBw8eRO3ata0dmk5xiFH+7Wl+55138MMPP+juDUJkqxSRIrgjERVbGo0Ga9euRcOGDVGvXj1rh2PA1uM7evQomjRpgtOnT+tuAmZLbD0+IOtmVx988AFmzpyJmjVrWjscA7YeHxVcVFQUpkyZgnnz5hXpyl95ZevxAVlDBwEU6cpk+WXrMYoIUlJSeKM8snlMLihX8tj4fFtk6/ElJyfb9B8DW48PyBoDbStjn42x9fio4DIyMqy2VHhe2Hp8RPTsYHJBREREREQWYZt9f0REREREVOwwuSAiIiIiIotgckFERERERBbB5IKIiIiIiCyCyQUREREREVkEkwsiIiIiIrIIJhdERERERGQRTC6IiJ4C165dg6Io6N+/v7VDwcyZM6EoCq5du2bTbRIRkeUxuSAim3XixAkMHToUQUFB8PT0hKOjI/z9/fHSSy9h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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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QK1atdCkSZNcyzZt2hTvvfcejh07JjuwnNSsWROPHj2SluPHj0v7wsPD0a5dO7Rt2xanT5/GmTNnMHz4cCgU/51qQEAArly5gv3792P37t04evQoBg0apJNYiYiIiIiMTdGiRaVxFmXKlMHt27elfRkTNsmR58uirl27hg4dOuS54oYNG+LPP/+UFVRuzM3N4ezsrHHfmDFjMHLkSIwbN07aVrVqVenxtWvXsHfvXpw5cwb169cHACxZsgQdOnTAvHnzpDEkREQGlaqE9aX0aQKFJ7EAALFlacAyz78JERGRBqKon8HWb817ZHQaN26M48ePo3r16ujQoQM+//xzXLp0Cdu2bUPjxo1l15vnv1JxcXFwdHTMc8WOjo6Ii4uTE1Oubt68CRcXF1SoUAEBAQGIjo4GADx58gQRERFwdHREkyZN4OTkBB8fnyw9G8WKFZMSCwDw9fWFQqFAREREju0mJycjISFBbSEi0gUhNQ22By7A9sAFKNZEQ7EmGkhSGjosIiJ6R8yfPx+NGjUCAEyZMgWtW7fGpk2bUL58eYSGhsquN889F4mJibCysspzxZaWlmrjHLSlUaNGWLNmDapWrYpHjx5hypQpaN68OS5fvox///0XQPq4jHnz5sHT0xPr1q1D69atcfnyZVSuXBkxMTFZkiRzc3OUKFECMTExObY9a9YsTJkyRevnRERERET6walo01WoUEF6XLRoUaxYsUIr9Ra6/vX27dvjo48+Qu3ateHn54c9e/YgLi4OmzdvhkqVfhfbzz77DEFBQahbty4WLFiAqlWr4qeffipw2+PHj0d8fLy03Lt3r8B1EhERERHp28SJE3H48GEkJSVptd583efil19+walTp/JU9tatW7ICyq9ixYqhSpUquHXrFt5//30AQI0aNdTKVK9eXbp0ytnZGU+ePFHbn5aWhtjY2GzHcWSwsrLKV+8NERERERkX9lykCw8Px/z585GWloYGDRrAx8cHLVu2RNOmTWFjYyO73nwlF7du3cpX0iAIun9SX716hdu3b6NPnz4oX748XFxccP36dbUyN27cQPv27QEA3t7eiIuLQ2RkJLy8vAAAhw4dgkqlkq47IyIiIiJ6l+3fvx9paWmIiIjA0aNHceTIESxevBjJyclo0KCB2pjl/MhzchEVFSWrAW374osv0LlzZ7i7u+Phw4eYNGkSzMzM0Lt3bwiCgJCQEEyaNAl16tSBp6cn1q5di3/++QdbtmwBkN6L0a5dOwwcOBArVqxAamoqhg8fjl69enGmKCIiIqJ3HHsu/mNubo6mTZuidOnSKFGiBOzs7LBjxw78888/8uvMa0F3d3fZjWjT/fv30bt3bzx//hylS5dGs2bNcOrUKZQuXRoAMHr0aCQlJWHMmDGIjY1FnTp1sH//flSsWFGqY/369Rg+fDhat24NhUIBf39/LF682FCnRERERESkVytXrkRYWBiOHDmC5ORkNG/eHC1btsQ333yD2rVry643X5dFGYONGzfmWmbcuHFq97l4W4kSJbBhwwZthkVEREREhQB7LtINHjwYpUuXxueff46hQ4fC1tZWK/UWutmiiIiIiIioYLZt24aAgABs3LgRpUuXRpMmTfDVV19h3759ePPmjex6C13PBRERERERFUy3bt3QrVs3AEB8fDyOHTuG3377DZ06dYJCoZA9RS2TCyIiIiIyGbws6j/Pnz/HkSNHEBYWhrCwMFy5cgXFixdH8+bNZdfJ5IKIiIiIyMS89957uHbtGooXL44WLVpg4MCB8PHxKdBgboDJBRERERGZEPZcpBs8eDB8fHxQq1YtrdbL5IKIiIiIyMQMGzZMeiyKIgDt3ACbs0URERERkckQRQGiSg+LkfdcAEBoaChq1aoFa2trWFtbo1atWvjxxx8LVKfsnouUlBTs2LEDZ86cQVxcHJRKZZYygiAgNDS0QAESEZkisYgVnn35IQCguOddA0dDRETvmokTJ2L+/PkYMWIEvL29AQDh4eEYM2YMoqOjMXXqVFn1ykou7t69izZt2uD27dtSN4omTC6IiIiIyJhwzEW65cuXY9WqVejdu7e0rUuXLqhduzZGjBih3+RizJgxuHXrFvr06YN+/frBzc0N5uYcvkFEREREVBikpqaifv36WbZ7eXkhLS1Ndr2yMoJDhw6hdevWWLt2reyGiYiMikoFISlV9uGilQVgpmEYmyhCSEyRX68lf7ghItImUUxf9NGOMevTpw+WL1+O+fPnq21fuXIlAgICZNcr66+WSqVC3bp1ZTdKRGRszGJfovhP+2UfH9+rBVLLOWbZLiSmoOTSXbLrTejSGMj6wxIREVGBhYaGYt++fWjcuDEAICIiAtHR0ejbty+Cg4Olcm8nIDmRlVw0atQI165d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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Load spikiness data for each k value separately\n", - "max_p = 70 # Only visualize completed experiments\n", - "\n", - "# Create separate plots for each k value\n", - "for k in k_values:\n", - " spike_grid_p, spike_std_p = load_sweep_results_grid_spikiness_p_h(\n", - " sweep_dir, k, p_values, hidden_dims, max_p=max_p\n", - " )\n", - "\n", - " p_values_filtered = [p for p in p_values if p <= max_p]\n", - "\n", - " # Plot\n", - " plt.figure(figsize=(12, 8))\n", - " # Set extent to align cells with tick positions\n", - " plt.imshow(\n", - " spike_grid_p[:, : len(p_values_filtered)],\n", - " aspect=\"equal\",\n", - " cmap=\"plasma\",\n", - " extent=[-0.5, len(p_values_filtered) - 0.5, len(hidden_dims) - 0.5, -0.5],\n", - " )\n", - " plt.xlabel(\"Group Size $|G|$\", fontsize=14)\n", - " plt.ylabel(\"Hidden Dimension $H$\", fontsize=14)\n", - " plt.xticks(\n", - " range(len(p_values_filtered)), p_values_filtered, rotation=45, ha=\"center\"\n", - " )\n", - " plt.yticks(range(len(hidden_dims)), hidden_dims)\n", - " plt.gca().invert_yaxis()\n", - "\n", - " # Theory boundaries\n", - " x_step = np.arange(len(p_values_filtered) + 1) - 0.5\n", - "\n", - " # Upper boundary: H = (k+1)*2^{k-1} * |G|\n", - " upper_boundary_coeff = (k + 1) * (2 ** (k - 1))\n", - " y_step_upper = [\n", - " min(\n", - " len(hidden_dims) - 1,\n", - " (\n", - " np.argmax(np.array(hidden_dims) >= upper_boundary_coeff * p)\n", - " if upper_boundary_coeff * p <= max(hidden_dims)\n", - " else len(hidden_dims) - 1\n", - " ),\n", - " )\n", - " for p in p_values_filtered\n", - " ]\n", - " y_step_upper.append(y_step_upper[-1])\n", - " # Convert to edge positions (subtract 0.5 to place at bottom edge of cells)\n", - " y_step_upper = [y - 0.5 for y in y_step_upper]\n", - "\n", - " # Lower boundary: H = 2^{k-1} * |G|\n", - " lower_boundary_coeff = 2 ** (k - 1)\n", - " y_step_lower = [\n", - " min(\n", - " len(hidden_dims) - 1,\n", - " (\n", - " np.argmax(np.array(hidden_dims) >= lower_boundary_coeff * p)\n", - " if lower_boundary_coeff * p <= max(hidden_dims)\n", - " else len(hidden_dims) - 1\n", - " ),\n", - " )\n", - " for p in p_values_filtered\n", - " ]\n", - " y_step_lower.append(y_step_lower[-1])\n", - " # Convert to edge positions (subtract 0.5 to place at bottom edge of cells)\n", - " y_step_lower = [y - 0.5 for y in y_step_lower]\n", - "\n", - " plt.step(\n", - " x_step,\n", - " y_step_upper,\n", - " where=\"post\",\n", - " color=\"red\",\n", - " linewidth=3,\n", - " linestyle=\"--\",\n", - " label=f\"Upper boundary ($H$ = $(k+1) \\\\cdot 2^{{k-1}} |G|$)\",\n", - " )\n", - "\n", - " plt.step(\n", - " x_step,\n", - " y_step_lower,\n", - " where=\"post\",\n", - " color=\"white\",\n", - " linewidth=3,\n", - " linestyle=\"--\",\n", - " label=f\"Lower boundary ($H$ = $2^{{k-1}} |G|$)\",\n", - " )\n", - "\n", - " plt.legend(\n", - " loc=\"upper center\", bbox_to_anchor=(0.5, -0.12), fontsize=12, frameon=True\n", - " )\n", - "\n", - " plt.colorbar(label=\"Fraction of Upward Steps (Spikiness)\")\n", - " plt.title(\n", - " f\"Training Instability: Group Size $|G|$ vs Hidden Dimension $H$\\n($k={k}$)\",\n", - " fontsize=14,\n", - " fontweight=\"bold\",\n", - " )\n", - " plt.tight_layout()\n", - " plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "772517ad", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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HJfvERERERER0dcjGkBiHvuqAzBUUvcBQHwex1UFYKyk7iOAOAXlGZfuEX2BmJQiIiIiIiKir8cAADvz2LcJgAAldZMBLM/juA4A7iqpWwhgZh7HJSrhuHyPiIiIiIiIiIiKHGdKEREREREREX3pDAAYFXcQlFszBL/iDqFQxMQA8w2yb8eZUkRERERERERfMgMAS8FpJ/TFkQmCIBR3ECVRTEwMDAwMEB0N6OsXdzRERERERERUIErLRufpGYEJKSpRYmIAAwMgOjoa+lkkVfixJSIiIiIiotInGqmbmqe3GqmzigqD3v+/CprO/7+ISiEmpYiIiIiIiKj0SUTmp+zl9el4RFQouKcUEREREREREREVOSaliIiIiIiIiIioyDEpRURERERERERERY5JKSIiIiIiIiIiKnJMShERERERERERUZFjUoqIiIiIiIiIiIock1JERERERERERFTkSnRSav78+ZDJZBgzZoxYFhYWht69e8PCwgI6OjqoW7cudu3aJekXGRmJnj17Ql9fH4aGhujfvz9iY2OLOHoiIiIiIiIiIlKmxCalrly5gj///BO1atWSlPfp0wfBwcHYv38/goKC0LFjR3Tp0gU3btwQ2/Ts2RN3797F8ePHcfDgQZw9exaDBg0q6ksgIiIiIiIiIiIlSmRSKjY2Fj179sRff/0FIyMjSd3FixcxcuRINGjQAJUqVcK0adNgaGiIa9euAQDu37+PI0eOYPXq1XB2doarqyv++OMPbN26Fa9fvy6OyyEiIiIiIiIiogxKZFJq+PDh8Pb2hru7e6a6hg0bYtu2bYiMjERKSgq2bt2K+Ph4uLm5AQACAwNhaGiI+vXri33c3d2hoqKCy5cvKz1nQkICYmJiJC8iIiIiIiIiIiocasUdQEZbt27F9evXceXKFYX127dvR9euXWFiYgI1NTVoa2tjz549qFKlCoDUPafMzMwkfdTU1GBsbIywsDCl5503bx5mzpxZcBdCRERERERERERKlaiZUi9evMDo0aOxadMmaGpqKmwzffp0REVF4cSJE7h69SrGjRuHLl26ICgoKF/nnjJlCqKjo8XXixcv8jUeEREREREREREpV6JmSl27dg0RERGoW7euWJacnIyzZ89i6dKlCA4OxtKlS3Hnzh1Ur14dAFC7dm2cO3cOy5Ytw8qVK2FhYYGIiAjJuElJSYiMjISFhYXSc8vlcsjl8sK5MCIiIiIiIipa6gCaKCgjohKjRCWlmjdvnmnGk6+vL+zt7TFp0iTExcUBAFRUpBO8VFVVkZKSAgBwcXFBVFQUrl27hnr16gEATp06hZSUFDg7OxfBVRAREREREVGxMwQQUMwxEFGWSlRSSk9PDzVq1JCU6ejowMTEBDVq1MDnz59RpUoVDB48GL/88gtMTEywd+9eHD9+HAcPHgQAVKtWDS1btsTAgQOxcuVKfP78GSNGjEC3bt1gZWVVHJdFREREREREREQZlKg9pbKjrq6OQ4cOwdTUFG3atEGtWrWwYcMGrF+/Hl5eXmK7TZs2wd7eHs2bN4eXlxdcXV2xatWqYoyciIiIiIiIiIjSkwmCIBR3ECVRTEwMDAwMEB0N6OsXdzRERERERERERF+GmBjAwACIjo6GfhZJlS9qphQREREREREREZUOTEoREREREREREVGRK1EbnRMREREREREViA8AJmcomw9ArxhiISKFmJQiIiIiIiKi0icewPIMZX5gUoqoBOHyPSIiIiIiIiIiKnJMShERERERERERUZFjUoqIiIiIiIiIiIoc95QiIiIiIiIiqTf56KsLQEtJ3VsAQh7H1Qago6QuEkCygnMRUYnGpBQRERERERFJmeWj71IAw5XUVUPek0UzkLpRuSKNAdzL47hEVGy4fI+IiIiIiIiIiIocZ0oRERERERFR6WcAwKi4gyCSminzK+4QCkU84gHMz7YdZ0oRERERERFR6WaA1GWFnJZBVKLwV5KIiIiIiIikIvLRVzeLuvvI30bnypxD5o3O0zMC//olKoH4a0lERERERPS1SgCwP0NZWwCmhXS+MoU0rnEhjUtEhYpJKSIiIiIioq9VDIAuGcoiUHhJKSKidLinFBERERERERERFTkmpYiIiIiIiIiIqMgxKUVEREREREREREWOSSkiIiIiIiIiIipyTEoREREREREREVGRY1KKiIiIiIiIiIiKHJNSRERERERERERU5Ep0Umr+/PmQyWQYM2aMWObm5gaZTCZ5DRkyRNLv+fPn8Pb2hra2NszMzDBhwgQkJSUVcfRERERERERERKSMWnEHoMyVK1fw559/olatWpnqBg4ciFmzZonH2tra4s/Jycnw9vaGhYUFLl68iNDQUPTp0wfq6uqYO3dukcRORERERERERERZ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YWGYNm0ahg8fzqQTERERERHljhaA4cUdBBFR6VSiklLZuX79Oi5fvgwAqFKliqQuJCQEFSpUgKqqKg4ePIihQ4fCxcUFOjo66Nu3L2bNmlUcIRMRERERERERkQIlPikVEBAg/uzm5gZBELLtY2Njg0OHDhViVERERERERERElB8laqNzIiIiIiIiIiL6OjApRURERERERERERY5JKSIiIiIiIiIiKnIlfk8pIiIiIiKiYvMWQLUMZfcBlCmGWIiIShkmpYiIiIiIiJQRkJqYylhGRET5xuV7RERERERERERU5JiUIiIiIiIiIiKiIsfle0REREREVPCiASTmsa86AEMldR8AxOdxXFUAxkrqPgKIU1CecekeEREVGCaliIiIiIio4A0AsDOPfZsACFBSNxnA8jyO6wDgrpK6hQBm5nFcIiLKkxwv34uLU/TPBkRERERERERERLmX45lSBgYGsLOzQ506dVCvXj3UrVsXdevWha6ubmHGR0REREREX5CZMj8AQCdsR3Xcy9MYT8/YYL3MV2GdF/6BE67kadyIe6ZYIRuusK4JTsMNZ7IfxACAUZ5OT0REGeQ4KWVqaop79+7h3r172Lx5MwBAJpOhcuXKqFevniRRZWBgUGgBExERERERFYd4yKG5NIGboBARFRCZIAhCThu/fPkS//77L65cuYJ///0Xly9fFpf1yWQysV3FihXFRNXEiRMLPuoiEBMTAwMDA0RHA/r6xR0NEREREdGXIW2mlBzxUEVynsZIhgoSoKWwTgMJUENSnsZNgQzx0FZYp45EqONzlv0/QRM/CrPzdG4iIkXSvjNLm3jEYz7mIzo6GvpZJFVyleMvV64cypUrh44dOwIAevfujc2bN2P79u24ceMGbty4gZs3b+K///7Df//9h507d36xSSkiIiIiIsq7BGgWyriJkCMR8gIf9zM08BkaBT4uEREpVyATT318fODj4yMev3nzRkxSERERERFRKReN1KftIXUvKQA4gLaFlpgiIqLSoVBWQ5uamsLDwwMeHh6FMTwREREREZUkiQB2pv6Ytrn5IXgXXzxERPRFUCnuAIiIiIiIiIiI6OvDpBQRERERERERERW5HCelnj9/XphxEBERERERERHRVyTHe0pVqFABFhYWcHJyQoMGDeDs7IzY2NjCjI2IiIiIiIiIiEqpHCel6tSpg7t37+LAgQM4cOAAZDKZWNepUyc4OjrC0dERderUQdmyZQslWCIiIiIiIiIiKh1ynJS6du0aPn/+jKCgIFy/fh3Xrl3D9evXcfv2bezevRu7d+8WE1UmJiZigurnn38utOCJiIiIiIiIiOjLlKuNztXV1VG3bl0MGDAAK1aswOXLlxEbG4ubN29izZo1GDp0KJydnfHx40ecOHECv/zyS64DWrFiBWrVqgV9fX3o6+vDxcUFhw8fFuufPHmCDh06wNTUFPr6+ujSpQvCw8MlY0RGRqJnz57Q19eHoaEh+vfvz6WGREREREREREQlSL6fvqeqqopatWrB19cXS5cuxcWLF/HhwwcEBQVh3bp1uR6vXLlymD9/Pq5du4arV6+iWbNmaNeuHe7evYuPHz/Cw8MDMpkMp06dwoULF5CYmIg2bdogJSVFHKNnz564e/cujh8/joMHD+Ls2bMYNGhQfi+ViIiIiIiIiIgKiEwQBKG4g8iOsbExFi5cCGtra7Rq1Qrv37+Hvr4+ACA6OhpGRkY4duwY3N3dcf/+fTg4OODKlSuoX78+AODIkSPw8vLCy5cvYWVllaNzxsTEwMDAANHRwP+fioiIiIiIFHkDwExatBATEAedYgmnMM0Q/Io7BCIqRWbK/Io7hEIRj3jMx3xER0eL+RtF8j1TqjAlJydj69at+PjxI1xcXJCQkACZTAa5XC620dTUhIqKCs6fPw8ACAwMhKGhoZiQAgB3d3eoqKjg8uXLRX4NRERERERERESUWY43Oi9KQUFBcHFxQXx8PHR1dbFnzx44ODjA1NQUOjo6mDRpEubOnQtBEDB58mQkJycjNDQUABAWFgYzM+k/06ipqcHY2BhhYWFKz5mQkICEhATxOCYmpnAujoiIiIiIiIiISuZMKTs7O9y8eROXL1/G0KFD0bdvX9y7dw+mpqbYsWMHDhw4AF1dXRgYGCAqKgp169aFikr+LmXevHkwMDAQX9bW1gV0NURERERERERElFGJnCmloaGBKlWqAADq1auHK1euYMmSJfjzzz/h4eGBJ0+e4O3bt1BTU4OhoSEsLCxQqVIlAICFhQUiIiIk4yUlJSEyMhIWFhZKzzllyhSMGzdOPI6JiWFiioiIiIiIiIiokJTIpFRGKSkpkqV1AFCmTBkAwKlTpxAREYG2bdsCAFxcXBAVFYVr166hXr16YpuUlBQ4OzsrPYdcLpfsVUVERERERDmkDqBJ6o9Pz9gAAJJL5qIMIiIqQUpcUmrKlClo1aoVypcvjw8fPmDz5s0ICAjA0aNHAQDr1q1DtWrVYGpqisDAQIwePRpjx46FnZ0dAKBatWpo2bIlBg4ciJUrV+Lz588YMWIEunXrluMn7xERERERUS4YAghI/XG9zLcYAyEioi9JiUtKRUREoE+fPggNDYWBgQFq1aqFo0ePokWL/2vvvqOjLvb/j782lAiEXQgQQhekBuk1IE16UbmiiCIgVTGgwBUwChIswEW9CiJgQcCrCD/1goAClysEVDoSaqSJUkMosqGlz+8PvtlLIAnJJtnNLs/HOXsOOzOf2fewmWTzzsx8OkqSDh48qNDQUF28eFH33nuvXn31VY0ePTpVH19++aVGjBih9u3by8fHR7169dLMmTPdMRwAAAAAAACkwWKMMc5cGB8fr2XLlmn79u26dOmSkpKSbu/cYtG8efOyHaQ7xMTEyGazyW6XrFZ3RwMAAAB4hsmWMHeHkKsmmTB3hwDAi3jr98xYxWqapslut8uaQVLFqZVSf/75pzp27KijR48qo5yWJyelAAAAAAAAkHucSkqNHj1aR44cUb9+/TRo0CCVL19e+fPnuZ2AAAAAAAAAyKOcyiStW7dO7du318KFC3M6HgAAAAAAANwFnEpKJScnq0GDBjkdCwAAAABPdFnSyzf+2U3fS5L+qw6Kl6/7YgIA5HlOJaWaNWumyMjInI4FAAAAgCeKlTT7xj+baLskKVxtSUoBADLk48xF06ZN07p16/TNN9/kdDwAAAAAAAC4Czi1Uur7779Xu3bt9MQTT6hNmzZq2LBhmrf4s1gsmjhxYraDBAAAAAAAgHdxKikVFhbm+Hd4eLjCw8PTbEdSCgAAAMjAuWxc6yepUDp15yUZJ/stLKlIOnUXJSWl83oAAGSRU0mp9evX53QcAAAAwN0nIBvXzpIUkk5dLTmfKJokKSydulaSDjjZLwAAt3AqKdWmTZucjgMAAAAAAAB3EaeSUgAAAACQLps09vzb/LYBAHcwyYS5O4RcERMjTbPduV22fkz88ssvWrBggSIiIhQTEyOr1aoGDRqof//+euCBB7LTNQAAAABPZNONrYUkpAAAd2Axxjh1BOLo0aM1c+ZMpVxusVhS/fvFF1/UP//5z5yL1MViYmJks9lkt0tp3FgQAAAAyD5vOej8ZsVFQgoA7nIxMZLNJtntdlkzSKo49eNi4cKFmjFjhqpXr65JkyapXbt2Kl26tKKjo7V+/XpNnjxZM2bMUP369dW/f3+nBwEAAAB4hThJy28pe1hSqVx6vZK51K9/LvULALgrObVSqnnz5jp9+rT27t0rm+32TYJ2u1116tRR2bJltWXLlhwJ1NVYKQUAAIAcc06332kvWrmXlAIAwI0yu1LKx5nO9+/fr169eqWZkJIkm82mXr16af/+/c50DwAAAAAAAC/nVFIqMywWS251DQAAAAAAAA/nVFKqdu3a+vbbb3XlypU06y9fvqxvv/1WtWvXzlZwAAAAAAAA8E5OJaWeffZZnTx5UsHBwfr22291/vx5SdL58+f1zTffqEWLFjp58qSGDx+eo8ECAAAAAADAOzh1972BAwdq165dmjVrlnr37i1J8vHxUXJysiTJGKORI0dqwIABORcpAAAAAAAAvIZTd99L8dNPP2nBggWKiIhQTEyMrFarGjRooAEDBqhVq1Y5GafLcfc9AAAA5BjuvgcAuItk9u57Tq2UStGqVSuPTz4BAAAAAADA9XLt7nvOmjNnjurWrSur1Sqr1arg4GCtWrUqVZvNmzfrwQcfVJEiRWS1WtW6dWtdv37dUX/x4kX17dtXVqtVxYoV0+DBg9M9lB0AAAAAAACul6mVUoMGDZLFYtGUKVNUunRpDRo0KFOdWywWzZs3L0sBlS9fXtOmTVO1atVkjNHChQv1yCOPaNeuXapdu7Y2b96sLl26KDQ0VB988IHy58+v3bt3y8fnf/m1vn376syZM1q7dq0SEhI0cOBADRs2TIsWLcpSLAAAAAAAAMgdmTpTysfHRxaLRZGRkapevXqqBFCGnVssSkpKynaQ/v7+evvttzV48GA1b95cHTt21BtvvJFm28jISAUFBWn79u1q3LixJGn16tXq1q2bTp48qbJly2bqNTlTCgAAADmGM6UAAHeRHD1T6tixY5KkcuXKpXqe25KSkvT111/r6tWrCg4OVnR0tLZu3aq+ffuqRYsWOnr0qGrWrKm33npLDzzwgKQbW/uKFSvmSEhJUocOHeTj46OtW7fqb3/7W5qvFRcXp7i4OMfzmJiY3B0cAAAAAADAXSxTSalKlSpl+Dyn7d27V8HBwYqNjZWfn5+WLl2qoKAgbdmyRZIUFhamd955R/Xr19fnn3+u9u3ba9++fapWrZqioqIUEJD6z1D58+eXv7+/oqKi0n3NqVOnavLkybk6LgAAAAAAANyQowedG2N0+PBhnThxIlv91KhRQxEREdq6dauGDx+uAQMG6MCBA0pOTpYkPfvssxo4cKAaNGig9957TzVq1NBnn32WrdcMDQ2V3W53PLI7BgAAAAAAAKTPqaTUv//9b/Xv319//fWXo+yPP/5Q3bp1VbNmTd17773q06eP0+dJFSxYUFWrVlWjRo00depU1atXTzNmzFCZMmUkSUFBQana16pVS8ePH5ckBQYGKjo6OlV9YmKiLl68qMDAwHRf09fX13HHv5QHAAAAAAAAcodTSak5c+YoIiJCxYsXd5SNHj1a+/fvV7t27VS3bl19/fXX2V69lCI5OVlxcXG69957VbZsWR08eDBV/aFDhxxbCoODg3Xp0iXt3LnTUb9u3TolJyerWbNmORIPAAAAkCUldONg85sfJdwaEQAAbpepM6VudeDAAXXt2tXx/PLly/r+++/1xBNP6KuvvlJCQoIaNGigzz77TEOHDs1S36GhoeratasqVqyoy5cva9GiRQoPD9eaNWtksVg0duxYTZo0SfXq1VP9+vW1cOFC/fbbb/rmm28k3Vg11aVLFw0dOlRz585VQkKCRowYoT59+mT6znsAAABAjvIRd9oDAOAWTiWlbt0K9/PPPysxMVFPPvmkJKlAgQLq2LGjvvzyyyz3HR0drf79++vMmTOy2WyqW7eu1qxZo44dO0qSRo0apdjYWI0ePVoXL15UvXr1tHbtWt13332OPr788kuNGDFC7du3l4+Pj3r16qWZM2c6M1QAAAAAAADkAqeSUlarVRcuXHA8X79+vXx8fNSqVStHWYECBXT16tUs9z1v3rw7tnn55Zf18ssvp1vv7++vRYsWZfm1AQAAAAAA4BpOnSlVs2ZNrVixQhcuXNClS5e0aNEiNWrUKNUZU3/++adKly6dY4ECAAAAAADAeziVlHrhhRd0+vRplS9fXhUrVtSZM2c0fPjwVG22bNmievXq5UiQAAAAAAAA8C5Obd/r1auXPvzwQ8dWuz59+uiZZ55x1G/YsEExMTHq0qVLjgQJAAAAeLR4SZtuKWshqaAbYgEAII+wGGOMu4PIi2JiYmSz2WS3S1aru6MBAACARzsnKeCWsmhxRz4AgFeKiZFsNslut8uaQVLFqe17AAAAAAAAQHaQlAIAAAAAAIDLOXWmlCTFx8dr2bJl2r59uy5duqSkpKTb2lgsFse5UwAAAAAAAEAKp5JSf/75pzp27KijR48qoyOpSEoBAAAgW+IkxWTj+hJKe29AvCR7NvotrrQ/SSdK+iuN8vPZeC0AALyUU0mp0aNH68iRI+rXr58GDRqk8uXLK39+pxddAQAAAGlbLql3Nq5P7zDxTZLaZaPffZJqp1F+UNL92egXAIC7iFOZpHXr1ql9+/ZauHBhTscDAAAAAACAu4BTB50nJyerQYMGOR0LAAAAcHew6cYWQAAA7mJOJaWaNWumyMjInI4FAAAA8H42SbOUjVsOAQDgHSwmo5PK07Fz5061bt1aCxcu1GOPPZYbcbldTEyMbDab7HbJanV3NAAAAHcpbznoPDPXAgDgJWJiJJtNstvtsmaQVHHqx+H333+vdu3a6YknnlCbNm3UsGHDNF/EYrFo4sSJzrwEAAAAIPkq7YPKs6tgLvWbP5f6BQDACzm1UsrHJ3O7/iwWi5KSkrIcVF7ASikAAAAXOycp4Jay9O6eBwAA8qxcXSm1fv16pwMDAAAAAAAAnEpKtWnTJqfjAAAAAAAAwF3EqbvvAQAAAAAAANnhdFIqMTFR7733npo2bSqr1ar8+f+36CoiIkLPP/+8Dh06lCNBAgAAAAAAwLs4tX3v+vXr6tSpkzZt2qSSJUvKarXq6tWrjvrKlStr/vz58vf315tvvpljwQIAAAAAAMA7OLVSasqUKfrll180depURUVFaciQIanqbTab2rRpozVr1uRIkAAAAAAAAPAuTiWllixZonbt2mncuHGyWCyyWCy3talSpYqOHz+e5b7nzJmjunXrymq1ymq1Kjg4WKtWrXLUP/vss7rvvvtUqFAhlSpVSo888oh+++23VH0cP35c3bt3V+HChRUQEKCxY8cqMTEx6wMFAAAAAABArnAqKXX8+HE1btw4wzZFixaV3W7Pct/ly5fXtGnTtHPnTu3YsUMPPvigHnnkEe3fv1+S1KhRI82fP1+RkZFas2aNjDHq1KmTkpKSJElJSUnq3r274uPjtWnTJi1cuFALFizQa6+9lvWBAgAAAAAAIFc4daZU0aJFFR0dnWGbo0ePqlSpUlnu+6GHHkr1/K233tKcOXO0ZcsW1a5dW8OGDXPU3XvvvXrzzTdVr149/fHHH7rvvvv0n//8RwcOHNB///tflS5dWvXr19cbb7yh8ePHKywsTAULFsxyTAAAAAAAAMhZTq2Uat68uVasWKFLly6lWX/ixAn98MMPat26dXZiU1JSkhYvXqyrV68qODj4tvqrV69q/vz5qly5sipUqCBJ2rx5s+rUqaPSpUs72nXu3FkxMTGO1VYAAAAAAABwL6eSUmPHjtVff/2l9u3b65dffnGc13Tt2jX9+OOP6ty5sxITEzVmzBingtq7d6/8/Pzk6+ur5557TkuXLlVQUJCjfvbs2fLz85Ofn59WrVqltWvXOlZARUVFpUpISXI8j4qKSvc14+LiFBMTk+oBAAAAAACA3OFUUqp169aaNWuW9u7dq9atW2vKlCmSbmzr69Spk44cOaLZs2erUaNGTgVVo0YNRUREaOvWrRo+fLgGDBigAwcOOOr79u2rXbt2acOGDapevbp69+6t2NhYp14rxdSpU2Wz2RyPlJVXAAAAAAAAyHkWY4xx9uLIyEjNnTtXW7du1cWLF2W1WtWsWTM9//zzql27do4F2aFDB91333366KOPbquLj49X8eLF9emnn+rJJ5/Ua6+9puXLlysiIsLR5tixY6pSpYp+/fVXNWjQIM3XiIuLU1xcnON5TEyMKlSoILtdslpzbCgAAABIzzlJAbeURUvK+jGlAADAjWJiJJtNstvtsmaQVHHqoPMUtWrV0owZM7LTRaYkJyenShjdzBgjY4yjPjg4WG+99Zaio6MVEHDjU83atWtltVpTbQG8la+vr3x9fXM+eAAAAAAAANwmW0mp3BAaGqquXbuqYsWKunz5shYtWqTw8HCtWbNGv//+u5YsWaJOnTqpVKlSOnnypKZNm6ZChQqpW7dukqROnTopKChI/fr10/Tp0xUVFaUJEyYoJCSEpBMAAEBe5idpVhplAADAK2UrKZWUlKSTJ0/q9OnTSkhISLNNVu/AFx0drf79++vMmTOy2WyqW7eu1qxZo44dO+r06dP66aef9P777+uvv/5S6dKl1bp1a23atMmxKipfvnxauXKlhg8fruDgYBUpUkQDBgzQ66+/np2hAgAAILcVkhTi7iAAAICrOHWmVHJysqZMmaIZM2bo4sWLGbZNSkpyOjh3iomJkc1m40wpAAAAAACALMjVM6VCQ0P19ttvKyAgQAMHDlSZMmWUP3+e2wkIAAAAAACAPMqpTNLChQtVo0YNbd++XX5+bPQHAAAAAABA1vg4c9GVK1fUvXt3ElIAAAAAAABwilNJqbp16+r06dM5HQsAAAAAAADuEk4lpV599VUtW7ZMv/76a07HAwAAgLvVeUmlbnmcd2tEAAAgFzl1plT37t21YMECde3aVQ8//LDq1auX7mnq/fv3z1aAAAAAuEsY3Z6EyvJ9ogEAgKdwKikVFxenFStW6Pz585o3b54kyWKxpGpjjJHFYiEpBQAAAAAAgNs4lZQaM2aMvvzyS9WtW1ePPfaYypQpo/z5neoKAAAA2WGXFO/ktQUkFUun7rKkWCf7zSfJP526q5KupVPHVj0AAO4qTmWSvv76azVq1EibN28mGQUAAOBOQyR94+S1bSSFp1P3sqTZTvYbJGl/OnVvS5rsZL8AAMCrOHXQeWxsrNq1a0dCCgAAAAAAAE5xKqvUqFEjHTlyJKdjAQAAAP7HJqm4u4MAALjbZEuYu0NAFsUqVtK0O7ZzaqXUlClTtHr1aq1cudKZywEAAICM2STNkpN/QgUAAJ7AqR/za9euVdu2bfXII4/owQcfVL169WS1Wm9rZ7FYNHHixGwHCQAAgHR8KufPfiqQQd00SWFO9psvg7qxkkIy0UdxkZACAMDLWYwxJqsX+fhkboGVxWJRUlJSloPKC2JiYmSz2WS3S2nk2wAAAAAAgAuwfc/zxCpW0zRNdrs9zUVMKZz6+9P69eudDgwAAABOsuvG3fZu9qlubHUDAADwME4lpdq0aZPTcQAAAOBO4iV9c0uZs1v3AAAA3Mypg84BAAAAAACA7MjUSqlBgwbJYrFoypQpKl26tAYNGpSpzi0Wi+bNm5etAAEAAAAAAOB9MnXQuY+PjywWiyIjI1W9enUOOgcAAHCHc5ICbimLllTKDbEAAOAiHHTueXL0oPNjx45JksqVK5fqOQAAAAAAAOCMTCWlKlWqlOFzAAAAAAAAICs46BwAAAAAAAAu51RS6tSpU/rwww/1zDPPqEePHurRo4cGDhyo2bNn68yZM9kKaM6cOapbt66sVqusVquCg4O1atUqR31sbKxCQkJUokQJ+fn5qVevXjp79myqPo4fP67u3burcOHCCggI0NixY5WYmJituAAAAAAAAJBzMrV972aTJk3S9OnTFR8fr1vPSP/888/10ksvKTQ0VBMnTnQqoPLly2vatGmqVq2ajDFauHChHnnkEe3atUu1a9fW6NGj9f333+vrr7+WzWbTiBEj9Oijj+qXX36RJCUlJal79+4KDAzUpk2bdObMGfXv318FChTQlClTnIoJAAAAAAAAOStTd99L8eqrr2rq1Kny9fVV79691bZtW5UtW1aSdPr0aa1fv15ff/214uPjNXHiRIWFheVIkP7+/nr77bf12GOPqVSpUlq0aJEee+wxSdJvv/2mWrVqafPmzWrevLlWrVqlHj166PTp0ypdurQkae7cuRo/frzOnTunggULZuo1ufseAADIc7j7HgDgLsTd9zxPZu++l+nte7///rumT5+uypUra/fu3Vq4cKEGDhyozp07q3Pnzho4cKA+//xz7d69WxUrVtSUKVOyfZe+pKQkLV68WFevXlVwcLB27typhIQEdejQwdGmZs2aqlixojZv3ixJ2rx5s+rUqeNISElS586dFRMTo/3792crHgAAAAAAAOSMTCelFi5cqOTkZP3rX/9S9erV021XvXp1ffHFF0pMTNTnn3/uVFB79+6Vn5+ffH199dxzz2np0qUKCgpSVFSUChYsqGLFiqVqX7p0aUVFRUmSoqKiUiWkUupT6tITFxenmJiYVA8AAAAAAADkjkwnpX755Rfdf//9atGixR3btmzZUnXq1NFPP/3kVFA1atRQRESEtm7dquHDh2vAgAE6cOCAU31l1tSpU2Wz2RyPChUq5OrrAQAAAAAA3M0ynZSKjIxU06ZNM91x06ZN9dtvvzkVVMGCBVW1alU1atRIU6dOVb169TRjxgwFBgYqPj5ely5dStX+7NmzCgwMlCQFBgbedje+lOcpbdISGhoqu93ueJw4ccKp2AEAAAAAAHBnmU5KXbp0SQEBt56smb6AgIDbkkfOSk5OVlxcnBo1aqQCBQroxx9/dNQdPHhQx48fV3BwsCQpODhYe/fuVXR0tKPN2rVrZbVaFRQUlO5r+Pr6ymq1pnoAAADkKQUktbnlUcCtEQEAADgtf2YbXr9+Xb6+vpnuuGDBgrp+/XqWAwoNDVXXrl1VsWJFXb58WYsWLVJ4eLjWrFkjm82mwYMHa8yYMfL395fVatXIkSMVHBys5s2bS5I6deqkoKAg9evXT9OnT1dUVJQmTJigkJCQLMUPAACQ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UA0aNNA333yjcePG5WzEAAAAAAAA8Hg+zlw0b9489e7dO1VC6mblypVT79699cknn2QrOAAAAAAAAHgnp5JSJ0+e1D333JNhm3vuuUcnT550KigAAAAAAAB4N6eSUuXLl9fSpUsVGxubZv21a9e0dOlSlS9fPlvBAQAAAAAAwDs5lZQaMmSIfv/9d7Vs2VLfffedLly4IEm6cOGCli1bpgceeEB//PGHhg4dmuW+p06dqiZNmqho0aIKCAhQz549dfDgwTTbGmPUtWtXWSwWLVu2LFXd8ePH1b17dxUuXFgBAQEaO3asEhMTsxwPAAAAAAAAcl6mDjq/1dixY3Xo0CHNnz9fjz76qCTJx8dHycnJkm4kiwYOHKixY8dmue8NGzYoJCRETZo0UWJiol555RV16tRJBw4cUJEiRVK1ff/992WxWG7rIykpSd27d1dgYKA2bdqkM2fOqH///ipQoICmTJnixIgBAAAAAACQkyzGGOPsxRs2bNDChQu1Z88e2e122Ww21atXT/369VPbtm1zJMBz584pICBAGzZsUOvWrR3lERER6tGjh3bs2KEyZcpo6dKl6tmzpyRp1apV6tGjh06fPq3SpUtLkubOnavx48fr3LlzKliw4B1fNyYmRjabTXa7ZLXmyFAAAMgbzkkKuKUsWlIpN8QCpGOyJczdIQAAACfFKlbTNE12u13WDJIqTq2UStGmTRu1adMmO13ckd1ulyT5+/s7yq5du6annnpKH374oQIDA2+7ZvPmzapTp44jISVJnTt31vDhw7V//341aNAgV2MGAAAAAABAxrKVlMptycnJGjVqlFq2bKn777/fUT569Gi1aNFCjzzySJrXRUVFpUpISXI8j4qKSvOauLg4xcXFOZ7HxMRkN3wAAAAAAACkI08npUJCQrRv3z79/PPPjrLly5dr3bp12rVrV46+1tSpUzV58uQc7RMAAAAAAABpy1RSatCgQbJYLJoyZYpKly6tQYMGZapzi8WiefPmORXYiBEjtHLlSm3cuFHly5d3lK9bt05Hjx5VsWLFUrXv1auXWrVqpfDwcAUGBmrbtm2p6s+ePStJaW73k6TQ0FCNGTPG8TwmJkYVKlRwKnYAAAAAAABkLFMHnfv4+MhisSgyMlLVq1eXj49P5jq3WJSUlJSlgIwxGjlypJYuXarw8HBVq1YtVX1UVJTO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GF32HDp0yPj6+ppXX33VGGNMfHy8Wb58ufn444/Nd999Z65cueLmCLNn//795t577zU7duxIVT5+/HhTp04dM336dHP16lU3RZc958+fN1WrVjUNGjRwlA0cONA0atTIlClTxrRu3drs2rXLIz/IXrt2zfTo0cOEhIQ4ynbu3GkaN25sOnToYP7973+7Mbrsi4yMNIULFzavvPKKMcaYhIQEEx4ebpYuXWo2btzo5uiyz1vnnTfPOWOYd57uzz//NJUqVTL//e9/U5V/8MEHJjg42Dz//PPm3LlzborOeZcuXTItWrQwFSpUcJT16dPH1KlTxxQpUsQEBQWZb7/91iO/pxjDvPN0zDvPnHfG8N558ns3YcIE06lTp1RlM2fONCVKlDDjx483UVFRboos69i+l8OCg4N14cIFfffdd+rRo4f27t2rmjVrqn379po5c6beeecdHT9+3N1hOqVgwYI6e/asY6+qMUZVq1bV9OnTVbNmTX3zzTdasWKFm6PMusTERM2aNUt+fn6qX7++JKlnz56aMGGCpkyZor/97W8aOHCgdu3a5d5AsyEhIUGJiYm6du2aJOn69euSpGnTpqldu3aaM2eOjhw5IsnzlrKWKFFCXbp0UZEiRRQWFqamTZvqzJkzevbZZzV79mwlJCSoZ8+eOnr0qCTPGl+hQoV08eJFlSxZUpKUnJyshg0b6l//+pcSExP18ccfa/fu3W6O0jkJCQl65ZVXVKRIET388MOSpEcffVQvvviinnvuObVv314jRoxQdHS0myN1XlxcnFfOuxIlSqhTp05eOeck7513xhjFx8d7/bzz8fFR4cKFdfr0aUk3fsZL0ogRI/Too49q/fr1+uWXXyR51temzWZTz549Va1aNQ0YMECNGzfW5cuXNXHiRP3yyy+qUaOGxowZo02bNknyrLFJN+bdhQsXvG7eSTdufPTKK6+ocOHCzDt51temt8876cbW2EKFCnnle/fII4+oatWqXvvepXyulP73vo0cOVJvvfWWZs2apaVLl0q68f00z3NPLsx7nT592vTv398UKlTIdOzY0Zw/f95R9+WXX5pixYqZH374wY0ROicxMdHEx8ebgQMHmscee8zExsaa5ORkk5SUZIwx5ujRoyY4ONg88cQTbo7UOYcOHTLDhg0zzZs3NxUqVDDdunUzkZGR5tq1a2bHjh2mXLlypn///u4OM1uaNGli2rVr53geGxvr+Hfjxo1Nnz593BFWtqR8/RljzJgxY0zp0qVN9+7db/vLQO3atc2AAQNcHF32Xb582bRr184899xzxpgb8zAhIcEYc2MVTvny5c2LL77oxgizZ+fOnaZz586mU6dOpmbNmqZLly7m119/NX/++af5/vvvTcGCBU1oaKi7w8yS06dPm/379zueN27c2Gvm3enTp83u3bsdz0ePHu1Vcy7l+0lMTIxp166dGT58uDHGe+ZdYmKiMcaYHTt2mM6dO5vOnTt7zby7evVqqmMSHn74YdOgQQNz6dIlY4xxvH/GGNO1a9dUczKvu3r1qrl27Zrj+cyZM01QUJDp1KmTOXXqVKq2rVq1cqzW9xQnTpww27dvN4mJiV45706cOGGOHTtmDhw44HXz7lY9evTwmnl3q/fff9+r5l1SUlKqz9CPP/64qVOnjle8d0lJSSY+Pt7x/KOPPjLVq1f3mvfuZjNmzDBFixZ1jOvmn4OTJ082fn5+5vjx4+4KL0tISuWCU6dOmdDQUPPjjz8aY1Lvf69atept503lZSkfYlOEh4ebfPnypdqql9ImPDzc+Pj4mH379rk0RmfdOrYjR46Yfv36me7du5vffvstVd3y5cuNxWIxBw8edGWITrty5YqJiYkxdrvdUfbrr7+agIAA8+STTzrKUn7ojBkzxjz00EMuj9NZaY3PGGPeeecd8+233zrmXMp73KtXL/PYY4+5PE5nXLhwwURGRjq+1lasWGEsFov59ttvjTGpf9guWrTIFC9e3KP2jV+4cMEcOHDAMcciIyNNy5YtTceOHc2xY8dStZ01a5YpWbKkOXHihEdsBTt58qQpUaKE+dvf/mY2b95sjDFm165dpmTJkh4/79IamzHGTJ8+3ePnnDE33qcePXo4tmp//fXXXjXvdu3aZbp3724uX75sjLlxto23zLu9e/ea7t27mw0bNjjev3PnzpnKlSubjh073nam5/vvv29atWp122eAvOjmsd28xWThwoVm+fLljl8qU76nvPDCC6Z9+/ZuidUZ+/btMxUqVHCcsfTVV1951bzbt2+fKV++vBk1apQxxpjt27d7zbw7ceKEWbJkifn222/Nr7/+aozxnnmX1tiM8Z55t3//ftOvXz/Trl07M3DgQPPDDz+Y6OhoU69ePdOuXTuPfu9u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slgsqeqPHTumuLi4VGUFChRQzZo1XRlmliUnJ2vIkCGaP3++goODtWDBAlWvXv22ditXrtRbb71FQgoAAC/B9j0AAOARDh06pLffflulSpXS6tWr00xISVLDhg21du1a3XvvvY6y8PBwWSwWhYWFadOmTerUqZOKFSt2W1Jn/vz5atasmfz8/OTn56dmzZppwYIFt73GggULZLFY0qy7+bXSKvv555/Vtm1bFS1aVMWKFVOvXr105MiRTP0fbN68WZIUEhJyW+ySVLly5dsSUGmdKXXvvffKYrGk+7g59hQbN27UQw89pJIlS8rX11fVqlXThAkTdO3atUzFnpH3339f8+fP1wMPPKAff/wxzYSUJPXo0UMbN27M9usBAIC8gZVSAADAIyxcuFBJSUl69tlnVapUqTu2z5//9o85mzZt0pQpU9SuXTsNGzZMx48fd9S98MIL+uCDD1SuXDkNHjxYkvTtt99q4MCB2rVrl2bMmJHtMWzZskVTp05Vly5dNHLkSO3fv19Lly7VTz/9pC1btqhKlSoZXl+iRAlJNxJ09evXdzqOUaNG6dKlS7eVf/XVVzp06JAKFy6cqnzOnDkKCQlRsWLF9NBDDykgIEA7duzQW2+9pfXr12v9+vUqWLCgU7GcOnVKr732mvz8/LRo0SIVKlQow/YFChRw6nUAAEDeQ1IKAAB4hJRVQu3atXO6j7Vr1+qzzz7TwIEDU5Vv3LhRH3zwgWrVqqXNmzc7zl8KCwtT8+bNNXPmTD322GNq1aqV8wOQtGbNGs2dO1fPPvuso+yjjz7Sc889pxdffFErVqzI8PrHH39cX3zxhYYMGaJt27apU6dOatSokSNZlVmjRo26rWzx4sU6fPiwmjVrppEjRzrKDxw4oBdeeEF169bVjz/+mOq1pk2bptDQUH3wwQf6+9//nqUYUnz22We6evWqRo4cqQoVKjjVBwAA8EwkpQAAgEeIioqSJJUtW/a2uvDwcIWHh6cqa9u2rdq2bZuqrGHDhrclpKQbq7CkG0momw8EL168uCZNmqS+fftqwYIF2U5KVa9eXUOHDk1VNnToUL377rv6/vvvde7cuQxXgT388MN69913NWnSJL377rt69913JUn33XefunTpohdffFHVqlXLclybN2/WwIEDVaFCBX333XepVit99NFHSkxM1AcffHBb8mvcuHH6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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Load both metrics for each k value separately\n", - "reduction_threshold = 0.99\n", - "spikiness_threshold = 0.1\n", - "max_p = 55 # Only visualize completed experiments\n", - "\n", - "# Create separate plots for each k value\n", - "for k in k_values:\n", - " conv_grid_p, conv_std_p = load_sweep_results_grid_convergence_p_h(\n", - " sweep_dir, k, p_values, hidden_dims, \n", - " reduction_threshold=reduction_threshold,\n", - " max_p=max_p\n", - " )\n", - " spike_grid_p, spike_std_p = load_sweep_results_grid_spikiness_p_h(\n", - " sweep_dir, k, p_values, hidden_dims, max_p=max_p\n", - " )\n", - " \n", - " p_values_filtered = [p for p in p_values if p <= max_p]\n", - "\n", - " # Create categorical grid: 0=black (no conv), 1=purple (spiky), 2=yellow (smooth)\n", - " category_grid = np.full((len(hidden_dims), len(p_values_filtered)), 0.0) # Start with 0 (black)\n", - "\n", - " for i in range(len(hidden_dims)):\n", - " for j in range(len(p_values_filtered)):\n", - " converged = not np.isnan(conv_grid_p[i, j])\n", - "\n", - " if converged:\n", - " spiky = spike_grid_p[i, j] > spikiness_threshold\n", - " if spiky:\n", - " category_grid[i, j] = 1.0 # Purple (spiky)\n", - " else:\n", - " category_grid[i, j] = 2.0 # Yellow (smooth)\n", - " # else stays 0.0 (black, did not converge)\n", - "\n", - " # Plot\n", - " fig, ax = plt.subplots(figsize=(12, 8))\n", - "\n", - " # Custom colormap: black -> purple -> yellow\n", - " from matplotlib.colors import ListedColormap\n", - "\n", - " colors = [\"black\", \"purple\", \"yellow\"]\n", - " cmap = ListedColormap(colors)\n", - "\n", - " # Set extent to align cells with tick positions\n", - " im = ax.imshow(\n", - " category_grid, \n", - " aspect=\"auto\", \n", - " cmap=cmap, \n", - " vmin=0, \n", - " vmax=2,\n", - " extent=[-0.5, len(p_values_filtered) - 0.5, len(hidden_dims) - 0.5, -0.5]\n", - " )\n", - "\n", - " ax.set_xlabel(\"Group Size $|G|$\", fontsize=14)\n", - " ax.set_ylabel(\"Hidden Dimension $H$\", fontsize=14)\n", - "\n", - " # Set x-axis ticks (p values)\n", - " ax.set_xticks(range(len(p_values_filtered)))\n", - " ax.set_xticklabels(p_values_filtered, rotation=45, ha=\"center\")\n", - "\n", - " # Set y-axis ticks (hidden dimensions)\n", - " ax.set_yticks(range(len(hidden_dims)))\n", - " ax.set_yticklabels(hidden_dims)\n", - " ax.invert_yaxis()\n", - "\n", - " # Theory boundaries\n", - " x_step = np.arange(len(p_values_filtered) + 1) - 0.5\n", - " \n", - " # Upper boundary: H = (k+1)*2^{k-1} * |G|\n", - " upper_boundary_coeff = (k + 1) * (2 ** (k - 1))\n", - " y_step_upper = [\n", - " min(\n", - " len(hidden_dims) - 1,\n", - " (\n", - " np.argmax(np.array(hidden_dims) >= upper_boundary_coeff * p)\n", - " if upper_boundary_coeff * p <= max(hidden_dims)\n", - " else len(hidden_dims) - 1\n", - " ),\n", - " )\n", - " for p in p_values_filtered\n", - " ]\n", - " y_step_upper.append(y_step_upper[-1])\n", - " # Convert to edge positions (subtract 0.5 to place at bottom edge of cells)\n", - " y_step_upper = [y - 0.5 for y in y_step_upper]\n", - "\n", - " # Lower boundary: H = 2^{k-1} * |G|\n", - " lower_boundary_coeff = 2 ** (k - 1)\n", - " y_step_lower = [\n", - " min(\n", - " len(hidden_dims) - 1,\n", - " (\n", - " np.argmax(np.array(hidden_dims) >= lower_boundary_coeff * p)\n", - " if lower_boundary_coeff * p <= max(hidden_dims)\n", - " else len(hidden_dims) - 1\n", - " ),\n", - " )\n", - " for p in p_values_filtered\n", - " ]\n", - " y_step_lower.append(y_step_lower[-1])\n", - " # Convert to edge positions (subtract 0.5 to place at bottom edge of cells)\n", - " y_step_lower = [y - 0.5 for y in y_step_lower]\n", - "\n", - " ax.step(\n", - " x_step,\n", - " y_step_upper,\n", - " where=\"post\",\n", - " color=\"red\",\n", - " linewidth=3,\n", - " linestyle=\"--\",\n", - " label=f\"Upper boundary ($H$ ≥ $(k+1) \\\\cdot 2^{{k-1}} |G|$)\",\n", - " )\n", - " \n", - " ax.step(\n", - " x_step,\n", - " y_step_lower,\n", - " where=\"post\",\n", - " color=\"blue\",\n", - " linewidth=3,\n", - " linestyle=\"--\",\n", - " label=f\"Lower boundary ($H$ ≥ $2^{{k-1}} |G|$)\",\n", - " )\n", - "\n", - " # Create custom legend\n", - " from matplotlib.patches import Patch\n", - "\n", - " legend_elements = [\n", - " Patch(facecolor=\"black\", label=\"Did not converge\"),\n", - " Patch(facecolor=\"purple\", label=f\"Spiky (frac_up > {spikiness_threshold})\"),\n", - " Patch(facecolor=\"yellow\", label=\"Smooth convergence\"),\n", - " plt.Line2D([0], [0], color=\"r\", linewidth=3, linestyle=\"--\", label=f\"Upper boundary ($H$ ≥ $(k+1) \\\\cdot 2^{{k-1}} |G|$)\"),\n", - " plt.Line2D([0], [0], color=\"b\", linewidth=3, linestyle=\"--\", label=f\"Lower boundary ($H$ ≥ $2^{{k-1}} |G|$)\"),\n", - " ]\n", - "\n", - " ax.legend(handles=legend_elements, loc=\"upper left\", fontsize=11, frameon=True)\n", - "\n", - " ax.set_title(\n", - " f\"Convergence & Spikiness: $|G|$ vs $H$ ($k={k}$)\\nThresholds: {reduction_threshold*100}% convergence, {spikiness_threshold} spikiness (p ≤ {max_p})\",\n", - " fontsize=14,\n", - " fontweight=\"bold\",\n", - " )\n", - " plt.tight_layout()\n", - " plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "53ed6f4f", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAABTYAAAMUCAYAAACGnng/AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs3XlcFdX/x/H3ZXcDtwRxwS03yg03yjVNNJdMKy1TvmraYpuWmZVrpZWlmZl+LXPLytQytTJNczfNBbfS1FRMBXcQVECY3x/8mK9XUAG5d+Dyej4e83gwc87M+czcYbx+OHOOzTAMQwAAAAAAAACQh7hZHQAAAAAAAAAAZBWJTQAAAAAAAAB5DolNAAAAAAAAAHkOiU0AAAAAAAAAeQ6JTQAAAAAAAAB5DolNAAAAAAAAAHkOiU0AAAAAAAAAeQ6JTQAAAAAAAAB5DolNAAAAAAAAAHkOiU0AAAAAAAAAeQ6JTQAAAAAAAAB5DolNAMjnZs6cKZvNZi657XjIuux+Bjfa72bH4/NGmtx8L4wcOVI2m01HjhzJE8fNrbLzGR85csRun9WrVzt0v7wkN//OOBPXAQBwO0hsAoATVahQwe7Le2YWV/zPnNVWr15td41nzpxpSRy5IQZHy63nePbsWb3//vtq06aNAgMD5ePjI29vb5UuXVrNmjXT4MGDtW7dOhmGYXWolvnmm28UFhYmf39/eXp6ys/PTxUrVlSLFi304osv6pdffrE6xBz3119/6aWXXlKtWrXk6+srLy8vBQQEqE2bNpo4caLOnTtndYjZlpnn3vXJxJEjRzo9zrzk+mtqs9nk5eUlPz8/VapUSa1bt9aoUaN07Ngxq0NFDgkJCbnlHzMCAwPl7u6uuLg45wUGAPmYh9UBAACs1aBBA40bNy7XHg/Ok53PLi9+3tOmTdOgQYMUHx+friwqKkpRUVFat26dPvjgA508eVIBAQEWRGmtXr16ac6cOXbbYmNjFRsbqyNHjmjNmjU6evSowsLCzPK8eC+kMQxDr7/+usaNGyfDMNSkSRM1b95cRYoUUVRUlNasWaOXXnpJw4YN0/Hjx1WkSBGrQ7ZEXv6MnSUpKUlJSUmKjY3V4cOHtXLlSr311lsaNmyYhg0bJje3//Ur4XqmyivXITExUXv27FGpUqVUoUKFDOscO3ZMJ0+eVPXq1VW4cGHnBggA+RSJTQBwojfeeEMxMTHm+vnz5zVmzBhz/f7771ebNm3s9qlcufItjxsbGytfX99sxRQcHKzg4OBs7euM48F5svPZ5bXPe9y4cXr11VfNdZvNppYtW6px48YqXLiwzp07p4iICK1fv15XrlzJ0rFv5/cwN1m2bJldUjMkJERhYWEqXLiwTp8+re3bt2vTpk3p9str90KalJQUPfnkk5oxY4ZCQ0M1c+ZMVa1aNV29pUuX6p133sm3SU0p737GztKtWzfVr19fMTEx2r59u3755RclJycrOTlZI0eOVFRUlKZMmWLW53qmyivXYffu3UpMTFTDhg1vWGfLli2SpHr16jkrLACAAQCwzOHDhw1J5jJixIgM682YMcOuXnx8vPH6668bFStWNDw8PIwXX3zROHv2rDF48GDjvvvuM4KCgozChQsbnp6eRqlSpYzWrVsbs2fPNlJSUm557Bttv3LlivH2228bd955p+Hl5WWUKVPGePnll40rV65k6ni3c0zDMIz4+HjjtddeM8qVK2d4e3sbNWvWNKZMmWL8888/dsf87bffbnndf/vtN7t9ZsyYkWNxzpgxw2jevLlRokQJw8PDwyhatKhRtWpV49FHHzUmT55sGIZhNG/e3O741y9BQUHm8bLzuV4ff2JiovHWW28ZlStXNry9vY2KFSsao0aNMhISEjL12WXlM02TmXMcPny4uV62bFkjOTnZ7th79uyx2+f33383y4KCgszt4eHhN/6wr/Hnn38a7u7u5n4lSpQwNmzYkGHdixcvGp9++qlx4cKFG55rRr+H1/r111+Nrl27GmXKlDG8vLyMIkWKGHXr1jWGDx9unD171q7uiBEjMvz8DSP9c+Lae/z6mC5fvmwMHz7cqFSpkuHl5XXDz/pmBg4caB6vSpUqxtWrV9PViYmJMdavX2+37Wb3ybWf142W638P165da3Tr1s0oV66cef0aN25sfPLJJ0ZiYmKmz8cw/nd9Dx8+nK7sww8/NCQZTZo0MS5dunTT41zf7s2Oe70333zTPNcKFSqkK//rr7/srse11zczz5VbudVzzzBu/W/SzT7j+Ph4Y8iQIUbZsmXNZ/Qnn3xyy2d0dvczjKzdI7fzXM/uNf3zzz+NihUr2tX5+eefM3U9ry+7cOGC8fzzzxsBAQFGwYIFjRYtWhibN282DMMwDh06ZHTt2tUoWrSoUbhwYSMsLMzYvXt3hjE765pl5Z692XVIk5XnqSM+a8MwjGnTphmSjNGjR9+wzpAhQwxJxocffpilYwMAso/EJgBYKLuJzaZNm9qtv/jii8bu3btvmTjo3bv3LY99o+1NmjTJ8Jg9e/bM1PFu55iJiYnpzjlt6dix4y3/83u9rCY2MxvntcmpjBZ/f3/DMLKW2MzO53p9/O3bt89wv06dOtklRZ2d2Dxx4oTh6elpbvvxxx/tjn1t4rNmzZp2ZdlJbD799NN2McyfPz9T+93oXDP6PUwzaNCgm55/mTJljD179pj1cyqxed9992Xqs76Z559/3tyvZMmSxsGDB7N1fa6V1cTm66+/ftO6TZs2NeLi4jIVl2HcOAH577//GoUKFTIKFy5sREZGZvp4tzpuRg4ePGh3Dhs3brQrHzZsmFlWtWrVdG3c6rlyK45MbN7sGX398+fa+ze7+xlG1u+R7D7Xb/eabtmyxa5OmzZtbnk9MyoLCQlJF6uPj4/xww8/GMWLF09XVqJECePUqVOWXLOs3rO3Smxm9XnqiM/aMAzjqaeeMiQZv/zyyw3rtGzZMsP7FQDgOLyKDgB50Lp169SoUSPdf//9io+PV/ny5eXm5qYaNWqoYcOGCggIUNGiRXXlyhXt2LFDS5YskWEYmjFjhp5++umbvkZ1I+vXr9dDDz2kmjVrau7cuebA+XPnztW7776rwMBAhx1z4sSJWrdunblfrVq19OCDD2rnzp1avHhxltt1VJzXvmLYunVrtWjRQvHx8Tp27JjWr1+vy5cvS5KeeeYZdejQQYMHDzbrp73CKEl+fn7m9pz4XH/66Sf17NlT5cuX18KFC7Vv3z5J0uLFizVnzhz16tUr5y7W/8vMOZYuXVpdu3bVN998I0n6/PPP9cADD5j158+fb/7cu3fv245p5cqV5s/FihVTly5dbut4Gf0eStKcOXM0fvx4s15wcLAeeughnThxQrNmzVJycrKOHz+uLl26aO/evfLwyLmvY7/99tttf9bXvkJ55swZVa1aVXXq1FGDBg0UEhKili1bqkqVKlmK6/phOCRp0qRJioyMlCR5eHioWrVqklInLbp2iI6wsDDde++9io6O1qxZsxQXF6d169Zp4MCBmjZtWpbiuN4XX3yh+Ph4Pf/88ypXrtxtHetWKleurGbNmmnt2rWSpK+++kqhoaFm+ddff23+fO39ntnnSlYtW7ZMZ86csdt2/vz5bB3r+md03bp11aFDB+3Zs0fff/99ju+XE/eII/5Ny0iDBg1Uu3Zt7dy5U5K0du1aJScny93dPUvH2bFjh/r166fChQvrk08+UVJSkq5cuaIHH3xQHh4eevbZZ5WYmKjPP/9cUuoEadOnT9drr70mybnXLCfv2Zx4nubUZ719+3ZJ0qeffqrZs2dnWGfz5s2y2Wy8ig4AzmR1ZhUA8rPs9tjs0qVLutd20xw9etRYsGCB8cknnxgffPCBMW7cOKNMmTLmvte/QpXZXnovvfSSWRYREWFXtnjx4lse73aOWa1aNXN7hQoV7F4XDQ8Pv2mvnoxktcdmZuP09fU1t588eTJdu4cOHbJbv1kM18vK53p9/O+8845ZFhMTY5QsWdIsu/fee2+4362236osM+e4YcMGs9zT09OIiooyDMO+p6qHh4e5PU12emwWLFjQ3Kdhw4Z2Zde/BpzRsTP7e1i7du0b3q+ffvqp3TG+//57wzByrsdmZj/rm0lKSjLq169/0x5STZo0MSIiIuz2y8zrpGneeusts57NZjNmzpxpltWtW9cs69Wrl91+3377rd19cf0rqDdyo56VwcHBhqQMhyRYsWKFMWLECLtl1apVmTrujcycOdOM39/f33zN/9pefe7u7sbx48fNfbL6XLmR6597mVky22Pz2md0lSpV7F7x7dev3w3v3+zul517JLvP9axc0xs9xx999FG7emk9KbPybH377bfNsscee8yubNy4cWZZ48aN7Z5RVlyzrN6zN7sO2XmeOuKzTkpKMry9vTP1e1OlSpVMHRMAkDP+Ny0fACDPeP311+1mVpVSe2d06NBBQUFBevjhh/Xcc8/plVde0eDBg3X8+HGz3r///putNp999lnz57SeVWmy28snM8eMi4vT/v37ze2PPPKIChQoYK7nRE++W8nsuTdt2tT8+a677lL79u310ksv6bPPPtPBgwdVqVKlLLedE59rz549zZ99fX3VsWNHcz2tB4pV7rnnHrNnS1JSkmbOnCnJvrfmAw88IH9/f7v9jhw5IiN1SB1zn6yw2WzZjjlNRr+Hly5d0q5du8z16+/X63tMZjQJz+3Iic/aw8NDq1at0tChQ9Nd9zTr16/X/fffr9OnT2c5xs8//1zDhg0z1999912Fh4dL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2Wef1S+//KLSpUvblScnJ2vBggWScvaPAL1799bQoUMlye7174zu96w+V6zQt29fc0iBgwcPKjQ0VB07dtSePXv03Xff5fh+zrxHsiJtpvnY2Fjt2LFDy5Yts/t9GTBggNq0aeO0eK7lzGuWk/dsdp6nOS05OVk7d+5UiRIl7HrEX+vUqVM6efKkKlaseMOeowAAxyCxCQAuwMPDQ6+99ppee+01Samv2b777ruSUgfur1ixovkaVV70wgsv6IcfftC6deskpfacSOs90a5dO/38889m3ZzoUXU7oqKi7CYCuVbx4sX15JNPmutdunTRhAkTJEn//POPhg8fLin1P7+tWrXKsc+1efPmGY6F2L59+3STL+S0W51jmrJly6pz585mEklKTfbldG+roUOHqlChQnr11VeVkJCg5ORkLV261O6V/2tlZyy8J554Qjt27ND48eMlpU46sXfvXrs6gYGB+u6778zeqKGhoWratKl5j0dHR+vbb7+VlDp50rUJgZt54IEHcuyzvnLlin799Vf9+uuvGZb369dPzZs3v+Vxzp07p5MnT5rrSUlJGjlyZLp6JUuWVHBwsB5//HHt2bNHY8eOlSTt27dP+/bty1LsmfXCCy9o8+bN+uabb1SlShU98MADqlKlihITE/Xvv/9q7dq1ioqKUrFixXI0adKrVy+9+eabdj2y69WrZ9c77VpZea5Y4aWXXtKiRYvMnq87duwwX8tt0aKFVq9enaP7OfMeyYp58+bZjZeaxsPDQyNGjDD/qGIFZ1+znLpns/M8zWl//fWXLl++fNMeoYyvCQDW4VV0AHARQ4YM0eTJk1W1alV5enoqICBA/fr105o1a+wG18+LPD09tWzZMg0ZMkRly5aVl5eXqlWrpgkTJujNN9+0q2tlz6WxY8fq6aefVkhIiAICAuTp6amCBQuqevXqevbZZ7Vt2zYFBQWZ9d955x29+OKLKlu2rN0r0tfKic/1559/1rBhw1SxYkV5eXmpQoUKGjFihBYuXOjQseWkzJ1jmmsnEZJybtKgjNo5fPiwRo4cqSZNmuiOO+6Qh4eHChQooPLly+v+++/XyJEjtX379nRjQGbWhx9+qBUrVqhr164KDAyUp6enChcurDp16mjYsGHatWtXuqTt4sWL9eSTT+qOO+6Qt7e3atWqpc8//1yffPJJptv97rvvNHr0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P3Xt2lWff/65kyNDTjtvS/8FFnmPn+FldQhOYciwOgSHyw+f5b9WB+AE521XrA7B4ZJtrv/7KEmXbVetDsHhihneVocAi5QrV85ufcSIERo5cqTdtjNnzig5OVn+/v522/39/bVv374bHjsmJkZlypRRQkKC3N3d9emnn+r++++/aTyXL1+Wr6+vub5x40b17dvXXK9UqZKioqJudVoAchESmwByLZstd8+mCAAAAODGjh07ZpdI9PbOuSR3kSJFFBERobi4OK1cuVKDBg1SpUqV1KJFixvuExQUpG3btikoKEhnzpzR3r17de+995rlUVFRN+x4ASB3IrEJwBLBwcFauHCh3nrrLRUuXDhd+cWLF7Vw4UIFBwdbEB0AAADgOq59PdxZ7UmSr6+vXWIzIyVLlpS7u7uio6PttkdHRysgIOCG+7m5ualKlSqSpDp16uivv/7S2LFjb5rYDA8P14ABA7R3716tWrVK1atXV0hIiFm+ceNG3XXXXbc6PQC5CGNsArDEU089pX///VehoaFauHChzpw5Iyn1VZQFCxbonnvu0b///qtnnnnG4kgBAAAAOIqXl5dCQkLsxrZMSUnRypUrFRoamunjpKSkZDiG57VeffVV9evXT9999518fHw0f/58u/INGzbosccey9oJALAUPTYBWKJ3797asWOHPvnkEz366KOSUv/qmpKSIil1EPDnn39e4eHhVoYJAAAA5HmGkbo4s72sGDRokMLDw1W/fn01bNhQH330keLj49W7d29JUq9evVSmTBmNHTtWkjR27FjVr19flStXVkJCgn766SfNmTNHU6ZMuWk7bm5uGj16tEaPHp1h+fWJTgC5H4lNAJb5+OOP9cgjj2jmzJmKiIhQbGysfH19VbduXYWHh6tp06ZWhwgAAADAwbp166bTp09r+PDhioqKUp06dbRs2TJzQqHIyEi5uf3vhdP4+Hg9++yz+vfff1WgQAFVr15dX375pbp163bDNgzDYAx/wAXZDMOZf7cBAKSJjY2Vn5+fynmMkZvNx+pwHOasm+vP3Jsf5IeZtCUp5OodVofgcClWB+AEe93PWR2Cw+WHmbSTlT/+m5IfPktXnhU9xbii40lvKCYm5pZjSVoh7fvmzh69VMTLef+WX0xMVO25s3PVdalZs6aGDx+uLl26yOsm1+LAgQMaP368goKC9Npr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WV6xYkXNmDFDxYsX19tvv21hpAAAAEDeZhg2J08elLtfRR8zZowGDBigcuXKKTk5WTVr1lRycrIef/xxvfnmm1aHByAL6LEJwBJjxozRhg0bNHbsWEVFRenJJ5+0K/fz81Pz5s31yy+/WBQhAAAAAFfk5eWlzz77TP/884+WLl2qL7/8Uvv27dOcOXPk7u5udXgAsoDEJgBLzJs3Ty1bttSrr74qm80mmy39X3UrVaqkyMhIC6IDAAAAXEdaj01nLrnZ6NGjdenSJZUrV04PPPCAHn30Ud155526fPmyRo8ebXV4ALKAxCYAS0RGRqp+/fo3rVOkSBHFxMQ4KSIAAAAA+cGoUaMUFxeXbvulS5c0atQoCyICkF0kNgFYokiRIjp16tRN6xw6dEh33HFHjrednJysYcOGqWLFiipQoIAqV66st956S4ZhmHXi4uL03HPPqWzZsipQoIBq1qypqVOn2h3nypUrGjBggEqUKKHChQura9euio6OzvF4AQAAAOQcwzAyfGNs586dKl68uAURAcguJg8CYInGjRtryZIlunDhgooWLZqu/NixY/rpp5/00EMP5Xjb7733nqZMmaJZs2YpODhYW7duVe/eveXn56cXXnhBkjRo0CCtWrVKX375pSpUqKDly5fr2WefVWBgoDp16iRJGjhwoH788UfNnz9ffn5+eu6559SlSxdt2LAhx2MGAAAAsstISV2c2V5uVKxYMXMYrKpVq9olN5OTkxUXF6enn37awggBZBWJTQCWGDx4sFq2bKlWrVrp448/1tWrVyWlvv6xadMmPf/887p69aoGDRqU421v3LhRDz74oNq3by9JqlChgr7++mtt2bLFrk54eLhatGghSerfv7/++9//asuWLerUqZNiYmI0ffp0ffXVV7rvvvskSTNmzFCNGjX0+++/q3HjxjkeNwAAAIDs++ijj2QYhvr06aNRo0bJz8/PLPPy8lKFChUUGhpqYYQAsorEJgBLNGvWTJ988olefPFFNWvWzNxepEgRSZK7u7s+/fRThYSE5Hjb99xzj6ZNm6a///5bVatW1c6dO7V+/XqNHz/ers7ixYvVp08fBQYGavXq1fr77781YcIESdK2bduUlJSk1q1bm/tUr15d5cuX16ZNmzJMbCYkJCghIcFcj42NzfFzAwAAAK7n7Al9cuvkQeHh4ZKkihUr6t5775WHBykRIK/jtxiAZZ555hm1aNFCU6dO1ebNm3Xu3Dn5+vqqUaNGevbZZxUcHOyQdl977TXFxsaqevXqcnd3V3Jyst555x316NHDrDNp0iT1799fZcuWlYeHh9zc3PTZZ5+ZSdioqCh5eXmle43e399fUVFRGbY7duxYBiMHAAAALHL16lUlJyerefPm5rbo6GhNnTpV8fHx6tSpk5o0aWJhhACyisQmAEvVqFFDEydOdGqb3377rebOnauvvvpKwcHBioiI0EsvvaTAwEDzr7iTJk3S77//rsWLFysoKEhr167VgAEDFBgYaNdLMyuGDh1q92p9bGysypUrlyPnBAAAANwIPTZT9evXT15eXvrvf/8rSbp48aIaNGigK1euqHTp0powYYJ++OEHPfDAAxZHCiCzSGwCyHcGDx6s1157Td27d5ck3X333Tp69KjGjh2r8PBwXb58Wa+//rq+//57cxzOWrVqKSIiQh988IFat26tgIAAJSYmppv8KDo6WgEBARm26+3tLW9vb4efHwAAAID0NmzYoE8++cRcnz17tpKTk3XgwAH5+flpyJAhGjduHIlNIA8hsQnAUsnJyfr333914sQJJSUlZVjn2jE4c8KlS5fk5uZmt83d3V0pKanTNyYlJSkpKemmdUJCQuTp6amVK1eqa9eukqT9+/crMjKSAccBAACAXOj48eO68847zfW07/JpkwiFh4drxowZVoUHIBtIbAKwREpKisaMGaOJEyfq3LlzN62bnJyco2137NhR77zzjsqXL6/g4GDt2LFD48ePV58+fSRJvr6+at68uQYPHqwCBQooKChIa9as0ezZs80Jhvz8/NS3b18NGjRIxYsXl6+vr55//nmFhoYyIzoAAAByFV5FT+Xj46PLly+b67///rvGjRtnVx4XF2dFaACyicQmAEsMHTpU48aNU6lSpdS7d2+VLl3aabMSTpo0ScOGDdOzzz6rU6dOKTAwUE899ZSGDx9u1vnmm280dOhQ9ejRQ+fOnVNQUJDeeecdPf3002adCRMmyM3NTV27dlVCQoLCwsL06aefOuUcAAAAAGRNnTp1NGfOHI0dO1br1q1TdHS07rvvPrP80KFDCgwMtDBCAFllMwzDsDoIAPlPQECAihUrpj/++EOFCxe2OhxLxMbGys/PT2U835GbzcfqcBzmvC3B6hAc7q7kElaH4HB73M9aHYJT1L16h9UhOJy33K0OweF+94iyOgTkgAJG/uiDcdl21eoQHO7O5KJWh+AwycZl7Up+WTExMfL19bU6nHTSvm+ubfOCCns6b6z3uKQENVv+ca67LmvWrFG7du1UunRpnTx5Uo899pimT59ulj/77LOKj4/XrFmzLIwSQFbkj28LAHKduLg4PfHEE/k2qQkAAADAuZo3b65t27Zp+fLlCggI0COPPGJXXqdOHTVs2NCi6ABkB4lNAJaoVauWTpw4YXUYAAAAgMtjjM3/qVGjhmrUqJFhWf/+/Z0cDYDb5XbrKgCQ89544w0tWrRI27dvtzoUAAAAAACQB9FjE4Al2rdvr5kzZ6pdu3bq1KmTateufcPxd3r16uXk6AAAAAAAQG5HYhOAJRISErRkyRKdOXPGHLDbZrN/ZcUwDNlsNhKbAAAAwG3gVXQArorEJgBLDBo0SHPnzlWtWrX08MMPq3Tp0vLw4JEEAAAAAAAyhywCAEvMnz9fISEh2rRpEwlNAAAAwJEMm5TixF6U9NgE4CRkEwBY4sqVK2rZsiVJTQAAAAAOV6xYsXRDX93IuXPnHBwNgJxCRgGAJUJCQnTw4EGrw8gVLtgSMv0lKy8qZnhbHYLDHXO7aHUIyCEH3C9YHYLDxdmSrA4BwDXyw7+T7nKzOgQHyhvnxhib0kcffWT+fPbsWb399tsKCwtTaGioJGnTpk365ZdfNGzYMIsiBJAdJDYBWGLMmDFq1aqVli5dqg4dOlgdDgAAAAAXFh4ebv7ctWtXjR49Ws8995y57YUXXtAnn3yiX3/9VQMHDrQiRADZQGITgCVWrFihFi1a6MEHH9R9992n2rVry9fXN109m83GX00BAAAA5JhffvlF7733Xrrtbdu21WuvvWZBRACyi8QmAEuMHDnS/HnlypVauXJlhvVIbAIAAAC3h1fR7ZUoUUI//PCDXn75ZbvtP/zwg0qUKGFRVACyg8QmAEv89ttvVocAAAAAIB8aNWqUnnzySa1evVqNGjWSJG3evFnLli3TZ599ZnF0ALKCxCYASzRv3tzqEAAAAIB8wTBSF2e2l5v95z//UY0aNfTxxx/ru+++kyTVqFFD69evNxOdAPIGEpsAAAAAACBfSEpK0lNPPaVhw4Zp7ty5VocD4DaR2ATgFH369JHNZtOYMWPk7++vPn36ZGo/m82m6dOnOzg6AAAAwIU5eYxN5eIxNj09PbVw4ULG8QdcBIlNAE4xc+ZM2Ww2DRkyRP7+/po5c2am9iOxCQAAACAnde7cWYsWLdLAgQOtDgXAbSKxCcApDh8+LEkqU6aM3ToAAAAAONOdd96p0aNHa8OGDQoJCVGhQoXsyl944QWLIgOQVSQ2AThFUFDQTdcBAAAAOIbh5FfRnfraezZMnz5dRYsW1bZt27Rt2za7MpvNRmITyEPcrA4AAJwtOTlZw4YNU8WKFVWgQAFVrlxZb731loxrpm80DEPDhw9X6dKlVaBAAbVu3VoHDhywO865c+fUo0cP+fr6qmjRourbt6/i4uKcfToAAAAAsuDw4cM3XP755x+rwwOQBfTYxP+xd+dxNpf9H8ff39kZs1hnkBCyb1kHWSJEC6koIUkpu6L0s6vILYlE3IoW0cYdSQlDZd/XbAnFGEwzgzHr+f7+cM+5O80ZZs7MnDPnzOvZ43vfznVd5/p+rjPzPXPmM9f1vQCX+PPPP7VixQrt2LFDly5dkiSVLFlSjRo1UteuXVW6dOk8O/ebb76puXPnavHixapZs6Z27typvn37KiQkxPrX2WnTpmnWrFlavHixKlasqLFjx6pDhw46fPiwAgICJEk9e/bU+fPntXbtWqWkpKhv37569tlntWTJkjyLHQAAAMguZmwC8FSG+fcpSgDgBOPHj9e0adOUnJysf74FGYYhf39/jR49Os92Krz//vsVFhZmsylRt27dVKhQIX3yyScyTVNlypTRiy++qJdeekmSFBcXZ930qEePHjpy5Ihq1KihHTt2qGHDhpKkNWvWqFOnTvrjjz9UpkyZW8YRHx+vkJAQBfqNk2EE5MlY84Oipr+rQ8hzFnn+j9I4I9nVIThFEdPX1SHkuatGiqtDALKkkFkw5mAEyNvVIeS5MEvgrRu5qTTzuvakDVdcXJyCg4NdHU4G6Z831949SoE+zvtMdi01Sff+NC3fvi6S9Mcff+ibb77RmTNnlJxs+zlnxowZLooKQHYVjE8LAPKN//u//9OUKVPk7++vJ598Uq1bt7YmAc+dO6cNGzboiy++0IQJE5SWlqYJEybkegzNmjXT/PnzdezYMd15553at2+ffv75Z+sHmFOnTikqKkrt2rWzPickJERNmjTRli1b1KNHD23ZskWhoaHWpKYktWvXTl5eXtq2bZu6du2a4bxJSUlKSkqyPo6Pj8/1sQEAAAD/xIxNW+vWrdODDz6oO+64Q7/++qtq1aql33//XaZp6q677nJ1eACygcQmAKf57bffNG3aNFWsWFHfffed7rzzzgxt+vbtqzFjxqhDhw5644031KdPH1WsWDFX43jllVcUHx+vatWqydvbW2lpaXr99dfVs2dPSVJUVJQkKSwszOZ5YWFh1rqoqCiVKlXKpt7Hx0fFihWztvmnKVOmaOLEibk6FgAAAADZM3r0aL300kuaOHGigoKC9NVXX6lUqVLq2bOnOnbs6OrwAGQDmwcBcJrFixfLYrHo448/tpvUTHfnnXfqk08+UWpqqj766KNcj+Pzzz/Xp59+qiVLlmj37t1avHixpk+frsWLF+f6uf5u9OjRiouLsx5nz57N0/MBAAAAyOjIkSPq3bu3pBuTE65fv64iRYpo0qRJevPNN10cHYDsYMYmAKf55ZdfVKtWLTVr1uyWbZs3b67atWvrp59+yvU4Ro4cqVdeeUU9evSQJNWuXVunT5/WlClT1KdPH4WHh0uSLly4YLOJ0YULF1SvXj1JUnh4uKKjo236TU1NVUxMjPX5/+Tv7y9/f8+/3yQAAADyF9NiyLQ4cSm6E8/liMDAQOt9NUuXLq2TJ0+qZs2akmTd2BSAe2DGJgCnOXLkiBo3bpzl9o0bN9avv/6a63EkJCTIy8v27c/b21sWi0WSVLFiRYWHh2vdunXW+vj4eG3btk0RERGSpIiICMXGxmrXrl3WNuvXr5fFYlGTJk1yPWYAAAAAuaNp06b6+eefJUmdOnXSiy++qNdff11PP/20mjZt6uLoAGQHMzYBOE1sbGyG+1LeTKlSpRQbG5vrcTzwwAN6/fXXdfvtt6tmzZras2ePZsyYoaefflrSjZ3Zhw0bptdee01VqlRRxYoVNXbsWJUpU0ZdunSRJFWvXl0dO3ZU//79NW/ePKWkpGjQoEHq0aNHlnZEBwAAAJzFNJ27oY9pOu1UDpkxY4auXr0qSZo4caKuXr2qZcuWqUqVKuyIDrgZEpsAnOb69evZWort5+en69ev53ocs2fP1tixY/XCCy8oOjpaZcqU0XPPPadx48ZZ24waNUrXrl3Ts88+q9jYWLVo0UJr1qxRQECAtc2nn36qQYMGqW3btvLy8lK3bt00a9asXI8XAAAAQO654447rP8ODAzUvHnzXBgNgJwgsQmgwAkKCtLMmTM1c+bMTNsYhqFJkyZp0qRJmbYpVqyYlixZkgcRAgAAALnHNA0nz9jM3/fYHDdunNq0aaOIiAibiQsA3A+JTQBO9cknn2jr1q1ZanvixIk8jgYAAABAQbNlyxbNmDFDqampatSokVq1aqXWrVurefPmKlSokKvDA5ANJDYBONWJEyeylbA0jPz9114AAAAA7mXt2rVKTU3Vtm3btGnTJm3cuFGzZs1SUlKSGjVqZN1YCED+R2ITgNOcOnXK1SEAAAAABQ5L0TPy8fFR8+bNVbJkSRUrVkxBQUFasWKFfv31V1eHBiAbSGwCcJry5cu7OgQAAAAABdz8+fMVGRmpjRs3KikpSXfffbdat26tMWPGqE6dOq4OD0A2kNgEAAAAAMCDMWPT1oABA1SyZEm9+OKLeuGFF1SkSBFXhwTAQV6uDgAAAAAAAMBZvv76a/Xs2VNLly5VyZIl1axZM7366qv64YcflJCQ4OrwAGQDMzYBAAAAAECB0aVLF3Xp0kWSFBcXp59++klffPGF7r//fnl5eSkxMdG1AQLIMhKbAAAAAAB4MJaiZ3T58mVt3LhRkZGRioyM1KFDh1S0aFHdfffdrg4NQDaQ2AQA5Km/jCRXhwBk2VUjxdUhAPiv8pZgV4fgFHEF4OfkNQ9+b02T547Nk9WuXVtHjhxR0aJF1bJlS/Xv31+tWrVi4yDADZHYBAAAAADAgzFj09aAAQPUqlUr1apVy9WhAMghEpsAAAAAAKDAGDhwoPXfpmlKkgwjfydjAdjHrugAAAAAAHiw9Bmbzjzyu4ULF6pWrVoKCAhQQECAatWqpX//+9+uDgtANjFjE4DLJCcna8WKFdqxY4diY2OVlpaWoY1hGFq4cKELogMAAADgicaNG6cZM2Zo8ODBioiIkCRt2bJFw4cP15kzZzRp0iQXRwggq0hsAnCJ06dP695779XJkyetyz/sIbEJAAAAIDfNnTtXCxYs0OOPP24te/DBB1WnTh0NHjyYxCbgRkhsAnCJ4cOH68SJE+rVq5eefvpp3XbbbfLx4S0JAAAAyG2maci0sHlQupSUFDVs2DBDeYMGDZSamuqCiAA4iiwCAJdYv3692rZtq8WLF7s6FAAAAAAFSK9evTR37lzNmDHDpnz+/Pnq2bOni6IC4AgSmwBcwmKxqH79+q4OAwAAAPB4zt7QJ7/P2JRubB70ww8/qGnTppKkbdu26cyZM+rdu7dGjBhhbffP5CeA/IXEJgCXaNKkiY4cOeLqMAAAAAAUMAcPHtRdd90lSTp58qQkqUSJEipRooQOHjxobWcY+T9BCxR0JDYBuMTUqVPVsmVLffnll3rkkUdcHQ4AAADgsUzzxuHM8+VnGzZscHUIAHIJiU0ALvHtt9+qTZs26t69u1q1aqW77rpLwcHBGdoZhqGxY8fm+vkrVKig06dPZyh/4YUXNHnyZI0fP14//PCDzpw5o5IlS6pLly6aPHmyQkJCrG3PnDmj559/Xhs2bFCRIkXUp08fTZkyhU2QAAAAAABwAn77BuASEyZMsP47MjJSkZGRdtvlVWJzx44dSktLsz4+ePCg7r33Xj366KM6d+6czp07p+nTp6tGjRo6ffq0BgwYoHPnzunLL7+UJKWlpalz584KDw/X5s2bdf78efXu3Vu+vr564403cj1eAAAAADlTv359u8vLQ0JCdOedd2ro0KGqUaOGCyID4CgSmwBcwtXLP0qWLGnzeOrUqapUqZJatWolwzD01VdfWesqVaqk119/XU8++aRSU1Pl4+OjH374QYcPH9aPP/6osLAw1atXT5MnT9bLL7+sCRMmyM/Pz9lDAgAAAOyymIYsTtzQx5nnyo4uXbrYLY+NjdXu3btVv359rV+/Xs2bN3duYAAcRmITgEu0atXK1SFYJScn65NPPtGIESMyvUF4XFycgoODrcvMt2zZotq1ayssLMzapkOHDnr++ed16NAhuzu+JyUlKSkpyfo4Pj4+l0cCAAAAIDPjx4+/af3//d//ady4cVq3bp2TIgKQU16uDgAAXG3FihWKjY3VU089Zbf+0qVLmjx5sp599llrWVRUlE1SU5L1cVRUlN1+pkyZopCQEOtRrly53BkAAAAAcBOmaTj9cEdPPPGEDhw44OowAGQDiU0ALpOamqq3335bjRs3tpkNKUl79+7VCy+8oGPHjuV5HAsXLtR9992nMmXKZKiLj49X586dVaNGDZv7gjpi9OjRiouLsx5nz57NUX8AAAAAco+3t7csFourwwCQDSxFB+AS169fV/v27bV582aVKFFCwcHBunbtmrW+YsWK+vDDD1WsWDG99tpreRbH6dOn9eOPP+rrr7/OUHflyhV1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jR07Vh988IEqVKigqKgoRUVF6erVq1k6386dO/Xyyy/Lx+d/d+fz8fHRqFGjtHPnzuwFD8ClSGwCcIlnnnlGv/32m5o3b67//Oc/unz5siTp8uXLWrFihVq0aKHff/9d/fv3d3GkAAAAAPJS9+7dNX36dI0bN0716tXT3r17tWbNGuuGQmfOnNH58+et7efOnavk5GQ98sgjKl26tPWYPn16ls4XHBysM2fOZCg/e/asgoKCcmdQAJyCzYMAuMTIkSN17Ngxffjhh3r44YclSV5eXrJYLJIk0zTVt29fjRw50pVhAgAAAG7PVZsHZcegQYM0aNAgu3WRkZE2j3///XcHovqf7t27q1+/fpo+fbqaNWsmSfrll180cuRIPf744znqG4BzkdgE4BJeXl5auHChevfurcWLF2v//v2Ki4tTSEiI6tatq169eql169auDhMAAACAh5k+fboMw1Dv3r2VmpoqSfL19dXzzz+vqVOnujg6ANlBYhOAS7Vq1UqtWrVydRgAAAAACgg/Pz+98847mjJlik6ePClJqlSpkgoXLuziyABkF4lNAAAAAAA8mDssRXeFwoULq3bt2q4OA0AOkNgE4BRPP/20Q88zDEMLFy7M5WgAAAAAAIC7I7EJwCkWLVpkt9wwDJmmmWl5XiU2//zzT7388sv67rvvlJCQoMqVK+vDDz9Uw4YNM7QdMGCA3n//fb399tsaNmyYtTwmJkaDBw/WypUr5eXlpW7duumdd95RkSJFcj1eAAAAwFGmKZkW554PAJyBxCYApzh16pTNY4vFoqFDh2rr1q0aOnSo7r77boWFhenChQvatGmTZs2apYiICL399tu5Hstff/2l5s2bq02bNvruu+9UsmRJHT9+XEWLFs3Qdvny5dq6davKlCmToa5nz546f/681q5dq5SUFPXt21fPPvuslixZkusxAwAAAAAAWyQ2AThF+fLlbR5PnTpV27Zt0759+1S6dGlredWqVdWyZUv17dtX9evX15dffqlRo0blaixvvvmmypUrpw8//NBaVrFixQzt/vzzTw0ePFjff/+9OnfubFN35MgRrVmzRjt27LDO8pw9e7Y6deqk6dOn202EAgAAAK7APTYBeCoSmwBcYuHChXrsscdskpp/V7ZsWT322GNasGBBric2v/nmG3Xo0EGPPvqoNm7cqLJly+qFF15Q//79rW0sFot69eqlkSNHqmbNmhn62LJli0JDQ22Wrrdr105eXl7atm2bunbtmqsxAwAAAMg9x48f14YNGxQdHS2LxXad/rhx41wUFYDsIrEJwCX++OMPBQQE3LRNQECA/vjjj1w/92+//aa5c+dqxIgRevXVV7Vjxw4NGTJEfn5+6tOnj6Qbszp9fHw0ZMgQu31ERUWpVKlSNmU+Pj4qVqyYoqKi7D4nKSlJSUlJ1sfx8fG5NCIAAAAAWbVgwQI9//zzKlGihMLDw2UY/5thahgGiU3AjZDYBOASt912m5YvX67JkyfbTXAmJCRo+fLluu2223L93BaLRQ0bNtQbb7whSapfv74OHjyoefPmqU+fPtq1a5feeecd7d692+ZDTk5NmTJFEydOzLX+AAAAgKywmIYsTlwe7sxzOeK1117T66+/rpdfftnVoQDIIS9XBwCgYHrmmWf022+/qXnz5vrPf/6jy5cvS5IuX76sFStWqEWLFvr9999tlofnltKlS6tGjRo2ZdWrV9eZM2ckST/99JOio6N1++23y8fHRz4+Pjp9+rRefPFFVahQQZIUHh6u6Ohomz5SU1MVExOj8PBwu+cdPXq04uLirMfZs2dzfWwAAAAAbu6vv/7So48+6uowAOQCZmwCcImRI0fq2LFj+vDDD/Xwww9Lkry8vKz3tzFNU3379tXIkSNz/dzNmzfX0aNHbcqOHTtm3eCoV69eateunU19hw4d1KtXL/Xt21eSFBERodjYWO3atUsNGjSQJK1fv14Wi0VNmjSxe15/f3/5+/vn9nAAAACAm2LzIFuPPvqofvjhBw0YMMDVoQDIIRKbAFzCy8tLCxcuVO/evbV48WLt379fcXFxCgkJUd26ddWrVy+1bt06T849fPhwNWvWTG+88YYee+wxbd++XfPnz9f8+fMlScWLF1fx4sVtnuPr66vw8HBVrVpV0o0Znh07dlT//v01b948paSkaNCgQerRowc7ogMAAAD5WOXKlTV27Fht3bpVtWvXlq+vr019ZvfZB5D/kNgE4FKtWrVSq1atnHrORo0aafny5Ro9erQmTZqkihUraubMmerZs2e2+vn00081aNAgtW3bVl5eXurWrZtmzZqVR1EDAAAAjmHGpq358+erSJEi2rhxozZu3GhTZxgGiU3AjZDYBFAg3X///br//vuz3P7333/P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uttdj+n+OcbZs2ercOHCql27tvz9/a3t3PF6lKT9+/erefPmGjRokKZOnWotNwxDEyZMkGma6tatm1tfk/bGaBiGEhMTVb16dVWvXt3a1t2vSQDArbErOgAUIEuXLtWGDRv0xRdfaN26dapfv76rQ8qWa9euaciQIbJYLGrUqJEGDRqkl156SSNHjlTJkiUl3dgU4ZNPPtHLL78sb29vBQUFKT4+XitXrtRdd93l4hHcWmZjHDVqlDW5mT6LSJIOHTqkzz77TLNnz9bPP/+s2rVruzL8LImJidHjjz+uatWq6Z133rGWt2nTRrVr19asWbOsZVeuXNFrr72mmJgYBQQE6Pnnn7fOnsrPsjLGv38d165dq9mzZ2vHjh1avXq1W1ybly5dUrdu3VS/fn3NnDlT0o3vzfvuu08TJ05U4cKFlZiYqJ07d2rYsGEqW7asgoKCdP78eX3//fduPcZOnTpp7NixKlSokIoXL67bb79dknTy5EktXrzYej3WrFnThdFnT1pammJiYtSiRQutX79e27dv15QpU1SnTh2dOHFCYWFh+ve//61JkyYpNjbWra7HdJmNsV69ejp06JBKly6tL7/8Ut9//73mzJnjVtejJEVFRal+/fqqW7eu1qxZo7S0NL300ks6evSoTp8+reeff161atXSgQMH9NJLL7nlNZnZGI8fP66TJ0/queeeU4cOHazJzd9++02LFi1yy2sSAJA17vPnVQBAjtWoUUOffPKJfvrpJ7f8cO/l5aUGDRqoePHi6t69u0qUKKEePXpIkjW56eXlpd69e6tly5Y6c+aMEhISVLt2betS0fzuZmNMT26mJ8N+//13vfTSSzp27Jg2btzoFklN6cau0rGxsXrkkUck3UhGe3l5qWLFioqJiZF0I3lkmqaCgoL05ptv2rRzB1kZY/rX0TRNVaxYUTVq1NC0adNUrVo1l8WdHYZhqGPHjtYxStJrr72mH374QefPn1dsbKxq1KihGTNmaP/+/dq3b59M01TTpk1Vvnx5F0aedZmN8fvvv1dUVJQuX76sGjVqaOzYsQoPD9eLL76offv2acOGDW73Huvl5aWSJUuqUaNGOnjwoLp27Sp/f3/16dNHiYmJmjlzpoKCgvSvf/1Lkntdj+luNsakpCT1799f0o3bflSvXt2trsd0EREROnv2rP7zn/9o3rx5SklJUb169VSxYkXNnDlTbdq00cyZM9WqVSv9+uuvbndNSpmPsUKFCpo1a5YOHjyocePG6erVq3r11Vfd9poEAGSRE+/nCQDIB5KSklwdQo6kb4SQbunSpaZhGOZLL71kXrx40TTNGxtbuNsmCH93szGm726fmppqRkdHm6dOnXLLsR47dsz67/QNLMaMGWP26tXLpt3fN9xxtw0fsjrGa9eumaaZcbModxAfH2/992effWYahmEuW7bMvHz5shkZGWk2bNjQHDdunAsjzLmbjXHjxo1mo0aNzIkTJ5rJycnm+vXrM2xa4m569+5tvvLKK6Zpmma/fv3MokWLmjVq1DCffvppm8123O16/LubjXH79u2mabrn9WiaN3Z87927t1moUCHz3nvvtf7MME3T/OSTT8yQkBBz5cqVLoww5242xk8//dQMDQ01v/vuO9M0TXPDhg1uf00CAG6OGZsAUMD8/Z5+7ij9PplpaWny8vJS9+7dZZqmnnjiCRmGoWHDhmn69Ok6ffq0PvroIxUuXNgt7ov2d1kd46lTp/TZZ58pICDAxRFnX5UqVSTdmPWVvoGFaZqKjo62tpkyZYr8/f01ZMgQ+fj4uN3XMatj9PPz09ChQ93qPoXpgoKCrP+OiIjQzp07rbd8aNWqlcLCwrR7925XhZcrbjbGli1bqlSpUtq5c6d8fX3Vpk0bV4WZY+Z/b41wzz336NSpU3rhhRe0evVq7dq1S3v37tXIkSPl5+en+vXry9/f3+2uRylrY/T19VXt2rXd8n1VurFBzpQpU1S2bFm1a9dOxYsXt467Z8+emjBhgjZu3Kj777/f1aE67GZjfOKJJzR+/HitX79eHTt2VOvWrV0dLgAgj7nfJ2gAAPS/HWstFot69OghwzDUq1cvffPNNzp58qR27NjhNpsFZeZWY9y+fbvb/vKdzsvLy+Zek+lLW8eNG6fXXntNe/bsccuE398VhDFKUvny5a3LWS0Wi5KTk1WkSBHVqVPHxZHlHk8eY/r3Z8WKFdW3b1+FhYVp1apVqlixoipWrCjDMFS3bl2bDXbcTVbH6O7vq2XKlNErr7xiHYdhGDJNUzExMSpZsqRb3EvzVm41xrp167o4QgCAs7B5EADAraX/GDMMQ23bttXevXsVGRnpNvebzApPH2P6vfomTJig8+fPq0qVKhozZow2b97sFhs+ZUVBGOM/jRs3TosXL9aPP/5onb3qaTxxjCkpKfr444/VsGFD1alTxyYp7ykKwhjtGT9+vD777DOtXbvWre6pmR0FYYwAAFvuPz0AAFCgGYahtLQ0jRw5Uhs2bNDevXs9JuGXztPHmD6D0dfXVwsWLFBwcLB+/vlnj0r4FYQxpvviiy+0ceNGLV26VGvXrvWYhN/fefIYfX199dRTT1m/Zz0x4VcQxvh3S5cu1YYNG/TFF19o3bp1HpnwKwhjBADY515bGQIAkImaNWtq9+7dHrEkNDOePsYOHTpIkjZv3qyGDRu6OJq8URDGWKNGDV28eFE//fSTRyx5tcfTx+huu507oiCMMV2NGjX0559/euz3q1QwxggAsI+l6AAAj1AQlhIWhDFeu3bN7e+NeisFYYwpKSnWDZM8VUEYIzxHcnKy228eeCsFYYwAgIxIbAIAAAAAAABwOwVnDQYAAAAAAAAAj0FiEwAAAAAAAIDbIbEJAAAAAAAAwO2Q2AQAAAAAAADgdkhsAgAAAAAAAHA7JDYBAAAAAAAAuB0SmwAAAAAAAADcDolNAAAAAAAAAG6HxCYAAABc7vfff5dhGHrqqadcHYomTJggwzD0+++/5+s+AQAACjoSmwAAAHlk7969GjBggGrUqKHg4GD5+fkpPDxc9957r9566y1dvHjR1SHmmWvXrumNN97QXXfdpSJFisjf31+33Xab7r77bo0ePVonT550dYg5cuTIEQ0bNkx16tSx+dq2b99e77zzjmJiYlwdIgAAgMfzcXUAAAAAnsZisWjUqFF666235O3trZYtW6p9+/YKDAxUdHS0tmzZopdeeknjx4/X0aNHVbZsWVeHnKuuXLmiFi1aaP/+/apcubKefPJJFS9eXJcuXdL27ds1depUVapUSZUqVbI+p2zZsjpy5IhCQkJcGPmtmaapV199Vf/6179kmqZatGihVq1aKSgoSFFRUdq4caOGDRumsWPH6s8//1RQUJCrQwYAAPBYJDYBAABy2f/93//prbfe0l133aVly5apcuXKGdrs3r1bL7/8sq5fv+6CCPPWzJkztX//fj3zzDOaP3++DMOwqT916pSSkpJsynx9fVWtWjVnhpltFotFzzzzjD788ENFRERo0aJFuvPOOzO0W7VqlV5//XWSmgAAAHmMpegAAAC56NixY/rXv/6lkiVLas2aNXaTmpJ01113ae3atapQoYK1LDIyUoZhaMKECdq8ebPat2+v0NDQDInBDz/8UE2aNFGRIkVUpEgRNWnSRIsWLcpwjkWLFskwDLt1fz+XvbKff/5ZrVu3VlBQkEJDQ9WtWzedOHEiS6/Bli1bJEkDBw7MELskVaxYMUMS0949NitUqCDDMDI9/h57uk2bNumBBx5QiRIl5O/vrypVqmjMmDFKSEjIUuw3M3PmTH344Ydq0aKF1q1bZzepKUn333+/Nm3alOPzAQAA4OaYsQkAAJCLFi9erLS0ND333HMqWbLkLdv7+GT8OLZ582a98cYbatOmjZ599lmdOXPGWjdkyBDNnj1bZcuWVb9+/SRJX331lfr27as9e/bonXfeyfEYtm7dqilTpqhjx44aPHiwDh06pOXLl+unn37S1q1bdccdd9z0+cWLF5d0I8lbr149h+MYNmyYYmNjM5R/9tlnOnbsmAoXLmxTPnfuXA0cOFChoaF64IEHVKpUKe3cuVOvv/66NmzYoA0bNsjPz8+hWP7880+NGzdORYoU0ZIlS1SoUKGbtvf19XXoPAAAAMg6EpsAAAC5KH22Yps2bRzuY+3atfrggw/Ut29fm/JNmzZp9uzZql69urZs2WK9H+WECRPUtGlTzZo1S4888ojuvvtuxwcg6fvvv9e8efP03HPPWcvef/99DRgwQEOHDtXKlStv+vxHH31Un3zyiZ555hlt375d7du3V4MGDawJz6waNmxYhrKlS5fq+PHjatKkiQYPHmwtP3z4sIYMGaI6depo3bp1NueaOnWqRo8erdmzZ+vFF1/MVgzpPvjgA127dk2DBw9WuXLlHOoDAAAAuYvEJgAAQC6KioqSJJUpUyZDXWRkpCIjI23KWrdurdatW9uU3XXXXRmSmtKN2aDSjUTm3zfZKVq0qMaPH6+ePXtq0aJFOU5s3nnnnerfv79NWf/+/fXWW2/p22+/1cWLF286G/XBBx/UW2+9pfHjx+utt97SW2+9JUmqVKmSOnbsqKFDh6pKlSrZjmvLli3q27evypUrp//85z82sybff/99paamavbs2RkSqKNGjdKMGTP02WefOZzYXLZsmSSpR48eGep+/PFH/fzzzzZlrVq1ylFyGwAAALdGYhMAAMBJIiMjNXHixAzl/0xsNmrUyO7z9+zZY7e99L8Zonv37s1RjJLUvHlzeXnZ3ordy8tLzZs31/Hjx7Vv3z61a9fupn2MGDFC/fv315o1a7R582bt3LlT27Zt05w5c7Rw4UItW7ZMDz74YJZj+v3339WlSxf5+vpq1apVCgsLs6nfunWrpBuzTdetW5fh+b6+vvr111+zfL6/s1gsOnr0qLy8vOx+bebNm6evvvrKpuzjjz926FwAAADIOhKbAAAAuSgsLExHjhzRuXPnMmyQM2HCBOuGN0uXLtXjjz+eaR/2xMfHy8vLy+5sybCwMBmGofj4+JwN4CbnTy+Pi4vLUj9BQUF69NFH9eijj1qf9+qrr+q9995Tv3799Oeff2bpnpdxcXHq3LmzLl++rJUrV6p27doZ2sTExEiSXn/99SzFlh3R0dFKTU1VsWLF7N4788svv7T+u1OnTvruu+/UoEGDXI8DAAAAttgVHQAAIBc1a9ZMkrRhwwaH+7C3k7gkBQcHy2Kx6OLFixnqoqOjZZqmgoODrWXpsy5TU1MztL9ZcvLChQs3Lf/7MvjsCAkJ0bvvvqvy5cvr0qVLOnDgwC2fk5qaqkcffVSHDx/WzJkzdd9999ltlz7u+Ph4maaZ6eGI9CXvCQkJslgsN227c+dOFSlSRFWrVnXoXAAAAMg6EpsAAAC5qE+fPvLy8tL8+fN16dKlXO27fv36kpThPp1/L/v7LuRFixaVdGNH739KX9Zuzy+//JIhgWexWLR582YZhqG6detmM/L/MQxDgYGBWW4/aNAgrV27VoMHD9agQYMybdekSRNJ/1uSnptCQkJUuXJlJSYmavPmzZm2O336tC5evKj69etnWMoPAACA3McnLgAAgFx05513atSoUYqOjtZ9992nEydO2G0XGxub7b779OkjSZo4caLNkvO4uDjrvTvT20hSgwYNZBiGli5dqsTERGv58ePH9c4772R6nmPHjmnBggU2ZQsWLNCxY8fUuXPnm24cJN3YyGfHjh1261asWKEjR44oNDRUtWrVumk/b731lt5//3116tRJb7/99k3bvvDCC/Lx8dHgwYN15syZDPWxsbE3TebeysCBA63nOX/+fIb6tLQ065J0lqEDAAA4B/fYBAAAyGWvv/66kpOTNWPGDFWrVk0tW7ZU3bp1VbhwYUVHR2v//v3avn27ihQpYjPD8lZatmypwYMHa/bs2apVq5a6desm0zT11Vdf6Y8//tCQIUPUsmVLa/syZcro8ccf15IlS9SgQQN17NhR0dHRWr58uTp27Jhhw5t0HTp00JAhQ7R69WrVrFlThw4d0sqVK1WiRImbJkTTfffddxowYIAqV66s5s2bq0yZMrp27Zr27Nmjn376SV5eXnrvvffk7++faR9RUVEaNWqUvLy8VK1aNU2ePDlDm7/vKF+rVi299957ev7551W1alV16tRJlSpV0pUrV/Tbb79p48aNeuqppzRv3rxbxm/PkCFDtG3bNi1dulSVK1dWp06dVLlyZSUnJ+uPP/7Qpk2bFBUVpaJFi6pz584OnQMAAADZQ2ITAAAgl3l5eemtt97Sk08+qXnz5mnTpk3asWOHkpKSVKxYMdWsWVP/+te/1Lt3b5UqVSpbfc+aNUv169fX3LlzNX/+fElSzZo1NWnSJPXt2zdD+3//+98qUaKEli1bpjlz5qhq1aqaP3++ypQpk2lis2nTphozZozGjBmjWbNmydvbW126dNG0adN0xx133DLGN998U82bN9fatWu1adMm6wzHsmXLqk+fPho8ePAtZzUmJiZal8PPmDEj03Z/3yG+f//+qlevnmbMmKFNmzZp5cqVCgkJ0e23367hw4fbzGbNLi8vL3322Wfq2rWrPvjgA0VGRmr58uUqXLiwypUrp7Zt2+q+++5Tly5dsrXUHgAAAI4zTEfvog4AAACPEhkZqTZt2mj8+PHW3dsLogkTJmjixIk6deqUKlSokG/7BAAAKOi4xyYAAAAAAAAAt0NiEwAAAAAAAIDbIbEJAAAAAAAAwO2weRAAAAAk3diIh9uv/29DotDQ0HzdJwAAQEHH5kEAAAAAAAAA3A5L0QEAAAAAAAC4HRKbAAAAAAAAANwOiU0AAAAAAAAAbofEJgAAAAAAAAC3Q2ITAAAAAAAAgNshsQkAAAAAAADA7ZDYBAAAAAAAAOB2SGwCAAAAAAAAcDskNgEAAAAAAAC4HRKbAAAAAAAAANwOiU0AAAAAAAAAbofEJgAAAAAAAAC3Q2ITAAAAAAAAgNshsQkAAAAAAADA7ZDYBAAAAAAAAOB2SGwCAAAAAAAAcDskNgEAAAAAAAC4HRKbAAAAAAAAANyOT3afkJaWppSUlLyIBQAAAAAAAEAB5uvrK29v7yy1zXJi0zRNRUVFKTY21tG4AAAAAAAAAOCmQkNDFR4eLsMwbtouy4nN9KRmqVKlVLhw4Vt2DAAAAAAAAABZZZqmEhISFB0dLUkqXbr0TdtnKbGZlpZmTWoWL14851ECAAAAAAAAwD8UKlRIkhQdHa1SpUrddFl6ljYPSr+nZuHChXMhPAAAAAAAAACwLz0Heat9frK1KzrLzwEAAAAAAADkpazmILOV2AQAAAAAAACA/IDEJgAAAAAAAAC3Q2ITAAAAAAAAgNshsQkAAAAA8HjHjx9XgwYNcqWv5557TmXLlmUfCgBOx3uZLRKbAAAAAACPt2vXLjVs2DBX+urZs6d2796dK30BQHbwXmaLxCYAAACQTU899ZRq1aplt27YsGGqUKGCcwPKgZuNJb+JjY2VYRhatGiRq0ORJDVu3Fhz5syxKRs7dqz8/PyUnJycof3IkSMVGBgoi8XisvhWrVolwzAUGxubp+c+ceKEBgwYoHr16snHxyfT77H+/furf//+OTrXF198oYceeki33XabAgMDVa9ePX3wwQcyTdOm3e7du63JgLlz56pt27Y6f/68Q+ds2bKlwsLC7Nb9/vvvMgxDv//+e4Y60zS1aNEitWzZUiEhIfLz81P58uXVu3dvbd68+aZ95MZrVdBNmDBBRYoUcXUYOeZO79sS791ZxXuZYwpcYnPChAkyDEOGYcjLy0shISGqXbu2Bg0apCNHjmRoX6FCBQ0aNOimfbriIp0wYYLNNwuQVzzlh//f/fO6zsoHg9atW+v+++/P69By3aOPPqqRI0fmuJ+VK1eqbt26CggI0J133qkPP/zQpv6XX35RiRIlFB8fn+NzFUQ3u87+WZf+4eDLL7/M1jkcfV5u4trLvltde/akf63/eTRt2tSm3b333qvXX389xzECBdXy5cv1+++/6+mnn7Yp37dvn6pVqyY/P78Mz9m3b59q1qwpL6+8/zUss/j27NmjihUrKjQ0NE/Pf+jQIX377beqXLmyatSokWm7l19+WR999JGOHz/u8LlmzJihwoUL66233tLKlSt13333qX///po0aZJNu127dql69ep68skndeTIEa1Zs0alS5d2+LzZlZSUpM6dO+vZZ59VrVq19PHHH+uHH37QqFGjtHfvXrVt21ZpaWmZPj83XiugoMvP7928lznGJ6cduHId/j+z1llVqFAhrV+/XpJ05coVHThwQPPnz9eCBQu0cOFCPfnkk9a2y5cvV9GiRXMl3tw0ceJEFSlSRM2aNXN1KMimicZEl517vDneZefOTxy5rt977z15e3vnUUR5Y/fu3Vq5cqV+++23HPXz888/q2vXrnrmmWc0c+ZMrV+/Xv369VNQUJAeeeQRSVLz5s1Vs2ZNvfXWW5o40XXf4//jqp9Njv1cyo7SpUtry5YtuvPOO/P8XLmNay97snLt3cwbb7yhNm3aWB8HBQXZ1L/66qt6+OGH9cILL+TLzzrIPaZpKjk5Wf7+/q4OJd/Ijddk5syZevzxx1WoUCGb8v3796tFixZ2n7N//36n/bEms/j27t2r+vXrO9RnZGSk2rRpk6Xfwx544AE99NBDkm78IWvnzp1221WuXFnNmzfXnDlzNHPmTIfiWrlypUqUKGF9fM899+jy5cuaMWOGxo4da01G7NmzRwMGDNDo0aPVs2fPDP3cddddOnPmTIbyhg0bas2aNQ7F9ne9e/fWpk2btHHjRkVERFjLW7durQEDBmjBggU3/ZmXG68V3Afv3Rl5+ns372WOKXAzNiXJy8tLTZs2VdOmTXXvvfdqxIgR2rt3r1q0aKF+/frZ/CJSv359t1pK5MmuX7/u6hDgIRy5rmvUqKGqVavmTUB55J133lGHDh1UpkyZHPUzefJkNWnSRPPmzVObNm00efJk9ejRQ+PGjbNp169fP82dO1cpKSk5Oh9uzt/fX02bNlWxYsVcHUq2ce1lT1avvcxUqVLF+nmnadOmqlmzpk19mzZtVLRoUS1evDhHceLW0mcnf/fdd6pVq5YCAgLUoEEDbd26NVtt0m3ZskX33HOPAgMDFRISoieeeELR0dEZ+lq9erXq1q0rf39/rVy58pZx3urcX3/9terVq6eAgACVKVNGI0aMUGJiok0be7Os9+7dK8MwFBkZaRNfZGSk6tevr8DAQDVu3Fi7du3KENOCBQtUoUIFFS5cWG3bttWJEyfsvh4PPvigypQpY1269/HHH9u0sfeafP755zIMI8OMkb/++kuFChXSe++9l+lrderUKf30008Z/sgQFxen06dPq06dOhmec/HiRV24cEF169bNtN/Nmzdr4cKF+vPPPzNtkxWZxSdlTGzu2bNH5cuXV7du3XTt2rUcnffvsjOz6dFHH9Wnn36q1NRUh87190RAuvr16ys+Pt46pt9++03ly5dXeHh4pp9Vdu/erUuXLmU4ciMRsHr1an3++eeaM2eOTSIgnbe3twYMGHDLfnL6WuHWbvZe99NPP8kwDJ08edLa/oEHHpBhGDp06JC17PHHH1fnzp1t+s2L9+6s/My41Xt3Vt63/x5fbrx3Z+V9O7PXxJPfu3kvc0yBTGzaExAQoNmzZys5OVn//ve/reX2lqJn5QOWPYZhaNq0aZowYYLCwsJUokQJ9e3bN8MHiAMHDqhDhw7WN7xHHnnEJtuePkt25MiR1uVlf3/D+aekpCSNGTNGd9xxh/z9/XXbbbfpqaeesmlzqze7yMhIGYahtWvX6oknnlBQUJDKly+vadOmWdssWrRIPj4+unDhgk3fMTEx8vPz0/vvv28tu9WbevoyukWLFql///4qXry4GjduLOnGm86TTz6poKAglSpVSq+++qreeuutDLOHY2Nj9cILL6h06dLy9/dXgwYN9MMPP2T6OsFxt/qe7devn+6++27r40uXLsnLy0uNGjWyll29elW+vr764osvMj3PoUOH1KlTJxUvXlyFCxdW1apVbb4Hs/pL4a1uMWGxWPTMM8+oRIkS1tkF//yBn748+MCBA2rRooUKFy6sWrVq6fvvv8/Q36JFi1SnTh0FBASobNmy+r//+z+bqfmxsbHq37+/ypYtq4CAAJUrV049evTIcr09165d01dffZWlWV03k5SUpA0bNujRRx+1Ke/Ro4eOHDlic6+ULl26KDY2VqtXr87ROXFz9paUJycna8iQISpWrJhCQ0P13HPPacmSJXbviZOYmKhBgwapaNGiKl26tF566aVbfqDg2svf115OPProoyQ2neT8+fN64YUXNHLkSH3++efy9/dXhw4dbD7/ZKXNli1b1Lp1a4WEhGjZsmWaP3++duzYYZ0Zl+7cuXMaMmSIhg8frjVr1qhevXo5iu+bb77RI488oho1amjFihUaNWqU5s2bZ7PSKTuioqI0ZMgQ6/kSExPVtWtXm1/SVq1apWeffVZt2rTR8uXL1bZt2wzXhCSdPn1azZs317///W+tXLlS3bp1U79+/TJ8b//zNWncuLHKli2rDz74wKbdkiVLJElPPPFEpvGvW7dOPj4+1s+n6fbv3y9JuuOOOxQbG2tzbNmyRZLs/uKc7sqVKxozZoxuu+021a5dWyNHjtS6devs3vPtZjKLLyLtz1UAAB8OSURBVD4+XqdOnbImNpcsWaIWLVroqaee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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAABTYAAAMUCAYAAACGnng/AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs3XlcFdX/x/H3ZVcR3BLEBbfcKDfcKNc0EU0t7ZuWKaFpi21aZlbuqaWlWZpmmZpfK0vN1Mo9d9NccE1TU3EDc4NABYT5/eGP+XoFFBDuCLyej8c8HnfmnDnnM3OHET+cmWMzDMMQAAAAAAAAAOQiTlYHAAAAAAAAAACZRWITAAAAAAAAQK5DYhMAAAAAAABArkNiEwAAAAAAAECuQ2ITAAAAAAAAQK5DYhMAAAAAAABArkNiEwAAAAAAAECuQ2ITAAAAAAAAQK5DYhMAAAAAAABArkNiEwAAAAAAAECuQ2ITAAAAAAAAQK5DYhMA8rmZM2fKZrOZy93WHjIvq99Bevvdqj2+b6S4m6+FYcOGyWaz6dixY7mi3btVVr7jY8eO2e2zZs2aHN0vN7mbf2YcifMAALgTJDYBwIHKly9v98t7Rpa8+J85q61Zs8buHM+cOdOSOO6GGHLa3XqM58+f19ixY9W6dWv5+fnJw8ND7u7uKlWqlJo2baoBAwZo/fr1MgzD6lAt89133yk4OFg+Pj5ydXWVt7e3KlSooObNm+vVV1/VsmXLrA4x2/3555967bXXVLNmTXl5ecnNzU2+vr5q3bq1Jk6cqAsXLlgdYpZl5L53czJx2LBhDo8zN7n5nNpsNrm5ucnb21sVK1ZUq1atNHz4cJ04ccLqUJFNAgMDb/vHDD8/Pzk7Oys2NtZxgQFAPuZidQAAAGvVr19f48aNu2vbg+Nk5bvLjd/3tGnT1L9/f8XFxaUqi4yMVGRkpNavX68PP/xQZ86cka+vrwVRWqtHjx6aPXu23baYmBjFxMTo2LFjWrt2rY4fP67g4GCzPDdeCykMw9Dbb7+tcePGyTAMNW7cWM2aNVPhwoUVGRmptWvX6rXXXtPgwYN16tQpFS5c2OqQLZGbv2NHSUxMVGJiomJiYnT06FGtWrVKI0eO1ODBgzV48GA5Of1vXAnn87rcch4SEhK0d+9elSxZUuXLl0+zzokTJ3TmzBlVq1ZNnp6ejg0QAPIpEpsA4EDvvPOOoqOjzfWLFy9q9OjR5vrDDz+s1q1b2+1TqVKl27YbExMjLy+vLMUUEBCggICALO3riPbgOFn57nLb9z1u3Di9+eab5rrNZlOLFi3UqFEjeXp66sKFCwoPD9eGDRt09erVTLV9Jz+Hd5OlS5faJTUDAwMVHBwsT09P/fPPP9qxY4c2b96car/cdi2kSE5O1rPPPqsZM2YoKChIM2fOVJUqVVLVW7JkiUaNGpVvk5pS7v2OHaVLly6qV6+eoqOjtWPHDi1btkxJSUlKSkrSsGHDFBkZqSlTppj1OZ/X5ZbzsGfPHiUkJKhBgwbp1tm6daskqW7duo4KCwBgAAAsc/ToUUOSuQwdOjTNejNmzLCrFxcXZ7z99ttGhQoVDBcXF+PVV181zp8/bwwYMMB46KGHDH9/f8PT09NwdXU1SpYsabRq1cr4+uuvjeTk5Nu2nd72q1evGu+9955x7733Gm5ubkbp0qWN119/3bh69WqG2ruTNg3DMOLi4oy33nrLKFu2rOHu7m7UqFHDmDJlivH333/btfnbb7/d9rz/9ttvdvvMmDEj2+KcMWOG0axZM6N48eKGi4uLUaRIEaNKlSrGE088YUyePNkwDMNo1qyZXfs3L/7+/mZ7Wfleb44/ISHBGDlypFGpUiXD3d3dqFChgjF8+HAjPj4+Q99dZr7TFBk5xiFDhpjrZcqUMZKSkuza3rt3r90+v//+u1nm7+9vbg8NDU3/y77B/v37DWdnZ3O/4sWLGxs3bkyz7r///mt89tlnxqVLl9I91rR+Dm+0cuVKo3Pnzkbp0qUNNzc3o3DhwkadOnWMIUOGGOfPn7erO3To0DS/f8NIfZ+48Rq/OaYrV64YQ4YMMSpWrGi4ubml+13fSr9+/cz2KleubFy7di1VnejoaGPDhg122251ndz4faW33PxzuG7dOqNLly5G2bJlzfPXqFEjY9KkSUZCQkKGj8cw/nd+jx49mqrso48+MiQZjRs3Ni5fvnzLdm7u91bt3uzdd981j7V8+fKpyv/880+783Hj+c3IfeV2bnffM4zb/5t0q+84Li7OGDhwoFGmTBnzHj1p0qTb3qOzup9hZO4auZP7elbP6f79+40KFSrY1fn1118zdD5vLrt06ZLx8ssvG76+vkbBggWN5s2bG1u2bDEMwzCOHDlidO7c2ShSpIjh6elpBAcHG3v27EkzZkeds8xcs7c6Dykycz/Nie/aMAxj2rRphiRjxIgR6dYZOHCgIcn46KOPMtU2ACDrSGwCgIWymths0qSJ3fqrr75q7Nmz57aJg7CwsNu2nd72xo0bp9lm9+7dM9TenbSZkJCQ6phTlvbt29/2P783y2xiM6Nx3picSmvx8fExDCNzic2sfK83x9+uXbs09+vQoYNdUtTRic3Tp08brq6u5raff/7Zru0bE581atSwK8tKYvP555+3i+GHH37I0H7pHWtaP4cp+vfvf8vjL126tLF3716zfnYlNh966KEMfde38vLLL5v7lShRwjh8+HCWzs+NMpvYfPvtt29Zt0mTJkZsbGyG4jKM9BOQJ0+eNAoVKmR4enoaERERGW7vdu2m5fDhw3bHsGnTJrvywYMHm2VVqlRJ1cft7iu3k5OJzVvdo2++/9x4/WZ1P8PI/DWS1fv6nZ7TrVu32tVp3br1bc9nWmWBgYGpYvXw8DB++ukno1ixYqnKihcvbpw9e9aSc5bZa/Z2ic3M3k9z4rs2DMN47rnnDEnGsmXL0q3TokWLNK9XAEDO4VF0AMiF1q9fr4YNG+rhhx9WXFycypUrJycnJ1WvXl0NGjSQr6+vihQpoqtXr2rnzp1avHixDMPQjBkz9Pzzz9/yMar0bNiwQY899phq1KihOXPmmC/OnzNnjt5//335+fnlWJsTJ07U+vXrzf1q1qypjh07ateuXVq0aFGm+82pOG98xLBVq1Zq3ry54uLidOLECW3YsEFXrlyRJL3wwgt65JFHNGDAALN+yiOMkuTt7W1uz47v9ZdfflH37t1Vrlw5zZ8/XwcOHJAkLVq0SLNnz1aPHj2y72T9v4wcY6lSpdS5c2d99913kqQvv/xSbdu2Nev/8MMP5uewsLA7jmnVqlXm56JFi6pTp0531F5aP4eSNHv2bI0fP96sFxAQoMcee0ynT5/WrFmzlJSUpFOnTqlTp07at2+fXFyy79ex33777Y6/6xsfoTx37pyqVKmi2rVrq379+goMDFSLFi1UuXLlTMV182s4JOnTTz9VRESEJMnFxUVVq1aVdH3Sohtf0REcHKwHH3xQUVFRmjVrlmJjY7V+/Xr169dP06ZNy1QcN/vqq68UFxenl19+WWXLlr2jtm6nUqVKatq0qdatWydJ+uabbxQUFGSWf/vtt+bnG6/3jN5XMmvp0qU6d+6c3baLFy9mqa2b79F16tTRI488or179+rHH3/M9v2y4xrJiX/T0lK/fn3VqlVLu3btkiStW7dOSUlJcnZ2zlQ7O3fuVO/eveXp6alJkyYpMTFRV69eVceOHeXi4qIXX3xRCQkJ+vLLLyVdnyBt+vTpeuuttyQ59pxl5zWbHffT7Pqud+zYIUn67LPP9PXXX6dZZ8uWLbLZbDyKDgCOZHVmFQDys6yO2OzUqVOqx3ZTHD9+3Jg3b54xadIk48MPPzTGjRtnlC5d2tz35keoMjpK77XXXjPLwsPD7coWLVp02/bupM2qVaua28uXL2/3uGhoaOgtR/WkJbMjNjMap5eXl7n9zJkzqfo9cuSI3fqtYrhZZr7Xm+MfNWqUWRYdHW2UKFHCLHvwwQfT3e92229XlpFj3Lhxo1nu6upqREZGGoZhP1LVxcXF3J4iKyM2CxYsaO7ToEEDu7KbHwNOq+2M/hzWqlUr3ev1s88+s2vjxx9/NAwj+0ZsZvS7vpXExESjXr16txwh1bhxYyM8PNxuv4w8Tppi5MiRZj2bzWbMnDnTLKtTp45Z1qNHD7v9vv/+e7vr4uZHUNOT3sjKgIAAQ1KaryRYsWKFMXToULtl9erVGWo3PTNnzjTj9/HxMR/zv3FUn7Ozs3Hq1Clzn8zeV9Jz830vI0tGR2zeeI+uXLmy3SO+vXv3Tvf6zep+WblGsnpfz8w5Te8+/sQTT9jVSxlJmZl763vvvWeWPfnkk3Zl48aNM8saNWpkd4+y4pxl9pq91XnIyv00J77rxMREw93dPUM/N5UrV85QmwCA7PG/afkAALnG22+/bTezqnR9dMYjjzwif39/Pf7443rppZf0xhtvaMCAATp16pRZ7+TJk1nq88UXXzQ/p4ysSpHVUT4ZaTM2NlYHDx40t//nP/9RgQIFzPXsGMl3Oxk99iZNmpif77vvPrVr106vvfaavvjiCx0+fFgVK1bMdN/Z8b12797d/Ozl5aX27dub6ykjUKzywAMPmCNbEhMTNXPmTEn2ozXbtm0rHx8fu/2OHTsm4/ordcx9MsNms2U55hRp/RxevnxZu3fvNtdvvl5vHjGZ1iQ8dyI7vmsXFxetXr1agwYNSnXeU2zYsEEPP/yw/vnnn0zH+OWXX2rw4MHm+vvvv6/Q0FBJ189feHi4Wfb111/LZrOZyxNPPGGWXbt2zZyoIyuSk5N18OBBOTk5qX79+qnKp06dquHDh9stN/7MZcXjjz9uTj4UFRWl1atXS7IfrRkcHGw3giwn7ivZ6eZ7dOfOneXu7m6uP/3009m6X3ZdIznxb1p6DMO44zZuPB83z8h94zHfOOFgynE4+pxl1zWbXffT7Piu9+3bp/j4eD366KPmvz03Lyn/bgUGBmaoTQBA9iCxCQC5ULVq1VJt69Wrl37++efb7hsfH5+lPm/8j9SN//mUricIcqrNS5cu2W339fW95XpOyOixT5kyRY0aNZJ0PSH5yy+/aOLEierTp4/uvfdedenSJdPnKju+15IlS9qt35isunLlSpaviezyyiuvmJ+nT58uyT6x2bNnz2zpp3Tp0ubnQ4cO2SUbSpYsqXHjxmncuHEqWLBghtpL6+fw4sWLdu3enBgsVKiQPD097erf7OYkSGa+n+z6rgsXLqzRo0frzJkz2rt3r6ZPn67Q0FC7GcH/+ecfu9nTM2LhwoV6/vnnzfV+/frZzVJ/8/m7nawkVlOcPXtW165dU5EiReTq6pqqfN68eWbCIiQkRNKdJywKFSpkl0T65ptvlJycrLlz55rbbr7ec+K+IkkzZsxIlZg5evRoptu5+R59q2swO/bLrmskJ/5NS89ff/1lfvbw8FDx4sUz3caNyW43N7d0y258FDvlOBx9zrLrms2O+2lm4r6V7du3S7r+uoT07Ny5UxKJTQBwNN6xCQC5UKFChezW4+LitGTJEnO9ZcuWmjZtmvz9/eXs7KwGDRrojz/+uKM+b/yPf3aMdstomze+b1K6noy4UWRkZLbEcisZPfayZctq8+bNOnz4sLZu3apDhw5pz549+umnn3Tt2jV9//33atOmTYZHmWbX93r27Fm79wdGRUWZnz08PFL9R8/RunbtqgEDBuiff/7RoUOHNGnSJP3555+Sric72rVrly39tGzZUocOHZIkXbhwQYsWLVLHjh0lScWKFdMbb7wh6foIwsuXL9+2vZt/DqXr7+602Wzmf8ZvPNfS9e80NjbWrr4ku5GfN79/LiXmjMju79pmsykgIEABAQHq2bOnhg0bpkqVKpnJgMzEtm7dOj355JNKSkqSJHXr1k0fffSRXZ0iRYrYrXfo0MFu9NfN7uQ9dikjvy5fvqzk5ORUo29vtG3bNnl6eqYa7ZUVYWFhZgL/xx9/1BNPPKHTp09LkkqUKGE3ylbK/vtKdrvdPfrmn4E73S+7rpGc+DctLdu2bTPfrylJzZo1u+W1lp60ku8pbveeXkefs+y6ZrN6P81q3LeSktisXbt2unVSEpu8XxMAHIsRmwCQB0RHR5vJAklq166dKlasKGdnZx08eNDuUa7cpnDhwnbJhAULFighIcFcnzFjhhVhpWnXrl1KTk5W5cqV9dRTT2no0KGaN2+e3YQ4Nz4OfON/RtNKpGXX93rjqLqYmBgtXrzYXM/pkSW3O0bp+gia3r17m+s3TjjUvXv3NP/TXr58efMxymeeeSZDsbz00kt2E3Y8//zzdo9nZoeCBQuqVq1a5voPP/xgl6i8ecKJBx54QJJ94uGff/7RkSNHJF0frfnhhx9muP/s+K5nzZqlzz//XDExManKChUqZJeUuTlhkp7du3erQ4cOunr1qqTrj1vPmDEjVZKhUKFCdomD8+fP69VXX9Ubb7xht/Tu3VtlypRRQEBAhvpPi7e3typXrqyrV69q06ZN6dY7fvy4/vnnH9WpUydLCambPfjgg6pSpYqk6z/jffv2Ncu6deuWajReZu8rjnbzPXr+/Pl2I4P/+9//Zut+jrxG7tTBgwfVtWtXu239+/d3eByOPmfZdc1m9X6aE1LivdWIzZR/T0hsAoBjMWITAPKAkiVLqkiRIuajfe+99575mOVXX31l+aPGd6p3797maLpDhw4pKChIjzzyiHbt2qWffvrJ4uj+p0uXLoqOjlaLFi1UunRpFStWTEeOHNEvv/xi1rkxEVS6dGkdP35ckvTRRx/p/PnzKlCggOrUqaOWLVtm2/f67rvv6sCBA/L399e8efPsZkK+MaGYE253jCleeOEFjR07VteuXTOTX1L2vkM1ICBAI0eO1Ntvvy3p+mjfevXqKSQkRIGBgXJ1ddXRo0fTTOhlxuuvv26+6/LYsWOqX7++3Sy+KapUqWKORr35HY8PPvigmjVrph07dujw4cMZ7js7vuujR49q+PDheu2119S4cWPVrl1bxYoV0/nz5zVv3jxdu3bNrNumTZvbthcTE6M2bdqYs6K7uroqKChIEydOtKsXEhKigIAADRgwQN26dZMkbdy4UTVr1lT79u1VtGhRnT9/Xjt37tSGDRtUqlSpVEmjzOrbt6/69eunF198UcuWLVOpUqXsypOSkjRv3jxJ2ftHgLCwMA0aNEiS7B7/Tut6z+x9xQq9evUyXylw+PBhBQUFqX379tq7d68WLFiQ7fs58hrJjJSZ5mNiYrRz504tXbrU7uelb9++at26tcPiuZEjz1l2XrNZuZ9mt6SkJO3atUvFixe3GxF/o7Nnz+rMmTOqUKFCuiNHAQA5g8QmAOQBLi4ueuutt/TWW29Juv6Y7fvvvy/p+ov7K1SoYD5GlRu98sor+umnn7R+/XpJ10dOpIyeCAkJ0a+//mrWzY4RVXciMjLSbiKQGxUrVkzPPvusud6pUydNmDBBkvT3339ryJAhkq7/57dly5bZ9r02a9YszXchtmvXLtXkC9ntdseYokyZMnr00UfNJJJ0PdmX3aOtBg0apEKFCunNN99UfHy8kpKStGTJErtH/m+UlXfhPf3009q5c6fGjx8v6fqkE/v27bOr4+fnpwULFpijUYOCgtSkSRPzGo+KitL3338v6frkSTcmBG6lbdu22fZdX716VStXrtTKlSvTLO/du7eaNWt223YuXLigM2fOmOuJiYkaNmxYqnolSpRQQECAnnrqKe3du1djxoyRJB04cEAHDhzIVOwZ9corr2jLli367rvvVLlyZbVt21aVK1dWQkKCTp48qXXr1ikyMlJFixbN1qRJjx499O6779qNyK5bt67d6LQbZea+YoXXXntNCxcuNEe+7ty503wst3nz5lqzZk227ufIayQz5s6da/e+1BQuLi4aOnSo+UcVKzj6nGXXNZuV+2l2+/PPP3XlypVbjgjl/ZoAYB0eRQeAPGLgwIGaPHmyqlSpIldXV/n6+qp3795au3at3cv1cyNXV1ctXbpUAwcOVJkyZeTm5qaqVatqwoQJevfdd+3qWjlyacyYMXr++ecVGBgoX19fubq6qmDBgqpWrZpefPFFbd++Xf7+/mb9UaNG6dVXX1WZMmXsHpG+UXZ8r7/++qsGDx6sChUqyM3NTeXLl9fQoUM1f/78HH23nJSxY0xx4yRCUvZNGpRWP0ePHtWwYcPUuHFj3XPPPXJxcVGBAgVUrlw5Pfzwwxo2bJh27NiR6h2QGfXRRx9pxYoV6ty5s/z8/OTq6ipPT0/Vrl1bgwcP1u7du1MlbRctWqRnn31W99xzj9zd3VWzZk19+eWXmjRpUob7XbBggUaMGKFKlSpl+bt+7bXXNG/ePL344otq0KCBypUrpwIFCsjNzU2lS5dWhw4dNH/+fE2bNi1T5yQzRo8erY0bN+rpp59WhQoV5O7uLldXV5UuXVqtW7fW6NGjtWrVqjvux8nJSd9++63mzp2rJk2aaM2aNRo3bpy++OIL7d27Vy1bttR///tfnThxQq1atcqGI7vOz89PwcHBdtvSG52c2fuKFVxdXbV8+XINGDBApUuXNu/RH330kb788sts309y3DWSWc7OzipcuLAqVKigli1bavjw4Tp27Jjeffddy//w5qhzlt3XbFbup9mJ92sCwN3NZmRmijwAACxy5coVc7KPG73xxhtm8snT01Pnz59P9Y465A5nzpxR6dKlZRiGChQooNOnT1v+iO3dbubMmXYJMX6tS9uwYcM0fPhwHT161G6G5Lu1XQAAAGQMj6IDAHKFFi1aqGLFimrSpInKli2rixcvaunSpXaPuj333HMkNXOhNWvWKC4uThMnTjQTc926dSOpCQAAAOCWSGwCAHKFq1ev6ttvv033nV3t2rXTqFGjHBwVskOLFi3s1osWLaqhQ4daFA0AAACA3IJ3bAIAcoWXXnpJwcHBKl26tDw8POTu7m434cySJUvk7u5udZi4A0WLFlXbtm21du1alSlTxupwAAAAANzleMcmAAAA8rQ1a9ZozZo1eu2117L1FQc51S4AAAAyhsQmAAAAAAAAgFyHR9EBAAAAAAAA5DokNgEAAAAAAADkOiQ2AQAAAAAAAOQ6JDYBAAAAAAAA5DokNgEAAAAAAADkOiQ2AQD4f0FBQbLZbHJ3d9epU6fsyt555x3ZbDZt2rTJougca+bMmbLZbOaS0/tlF6v7zw7Hjh2zO4Y1a9aYZVk9vlu1CSB3+eOPP8yf5a5du1odDgAAliKxCQCApB9//FG///67JOmpp55S6dKl7cp37twpJycn1a5d24Lo/ufq1avq37+/mjZtKj8/P3l4eMjX11cPPvigZsyYocTEREvjA+7EjcnXmTNnWh0OkCnly5e3u4bTWjZs2HDH+9SvX1/NmjWTJH3//ffauXOnw44RAIC7jYvVAQAAcDcYOnSo+fnVV19NVb5z505VrVpVBQsWdGRYqcTGxmrKlClq0KCB2rVrp3vuuUcXL17Ur7/+qp49e+q7777Tr7/+Kicn/naZF9WvX1/jxo2zOgwAFnv11Ve1du1aGYahoUOHatGiRVaHBACAJUhsAgDyvU2bNmnPnj2SpKpVq6YalXnmzBlFRkaqZcuWFkRnr1ixYoqOjpabm5vd9mvXrunhhx/W8uXL9euvv6pdu3YWRYicFBAQoICAAKvDQC4VExMjLy8vq8PIF9L7A0SFChWyZZ+2bdvKy8tLMTEx+uWXX3Ty5EmVKVMma8ECAJCLMZwDAJDvzZgxw/zcuXPnVOUpj/nVrVvXbvuBAwcUEBAgT09Pfffddzkb5P9zcnJKldSUJBcXFz322GOSpMOHD2d7v4mJiXrvvfdUuXJleXh4qGLFihoxYoQSEhIy3MaFCxf05ptvqmXLlipfvrwKFy4sNzc3+fj46OGHH9bs2bNlGEaa+/7xxx8KCwtT5cqVVbBgQXl6eqpKlSoKCwvTkSNHMtT/a6+9Zj7a6ezsrK+++irDseeEy5cv66233lLZsmXl4eGhgIAATZ48Od1zIN3+HZtZafNWbu4vPj5eo0aNUpUqVeTu7q4yZcrojTfeUHx8fJr7r1q1So8//rjKlCkjd3d3eXl5qW7duho6dKguXLhg1mvevHmq4wkLCzP7LV++fIZjzuy1ktEYs3o+Bg8ebNZPK0F14MABuzY3btxoV75+/Xp17dpV5cqVM+MLCgrS5MmTU7164ub4Ll++rHfeeUcVK1aUq6urhgwZYta9fPmyBg0apHLlypnXytSpU3X06NHbvo81MzFl1c3HcvXqVQ0dOlSVKlWSu7t7lu5BGXHx4kUtXLhQr776qmrWrKl169ZlqZ033ngjzeXm15xkdR93d3c98sgjkqSkpCTNmjUrS3ECAJDrGQAA5HPlypUzJBmSjCVLlqQqf++99wxJxm+//WZu++677wxPT0/j3nvvNfbs2ePAaNOWlJRkhISEGJKMlStX3nF7M2bMMM+JJKNdu3Z26ylLhw4djOTk5HT3u9GePXvSbOPGJSwsLFUsw4cPN2w2W7r7/Pjjj7ftf8CAAeY2Z2dnY86cORk6D/7+/reN+cZlxowZGWo3ISHBaNKkSZpt3Hyub7zubnV+s9rmrdzcX+PGjdNsv3v37qn27d+//y3PVenSpY29e/cahmEYzZo1u2Vdf3//DMWbmWslszFm9XwcPnzYrmzTpk12MQwePNgsq1Klil3Z22+/fcv4mjRpYsTGxqYb383Xw6uvvmoYxq2vlfbt29/yWslsTFl187E89NBDafZ38z0os6Kjo40lS5YYr7/+ulG3bl3DyckpSz8rhmF/v6hYsaLh6upqFC5c2Khfv74xZswYIy4uLlv2SfHpp5+a+zZr1iwLRw8AQO7Ho+gAgHwtIiJCERER5nq9evVS1dmxY4dsNpvq1KmjxMREvf766/r000/VoUMHff311/L29r5lHx9//LEuXbqU4ZgeffTR205SlJCQoNGjR8swDJ0/f16rVq3SgQMHFBYWliOPzP/yyy/q3r27ypUrp/nz5+vAgQOSpEWLFmn27Nnq0aPHbdtwcnJS9erV1aBBA/n6+qpIkSK6evWqdu7cqcWLF8swDM2YMUPPP/+8GjRoIEn64Ycf7N5/WrBgQXXt2lX+/v46evSoFi9efNt+Bw8ebD7i6erqqm+//TbNkbmONHHiRK1fv95cr1Onjh555BHt3btXP/74413T5s02bNigxx57TDVq1NCcOXN07NgxSdKcOXP0/vvvy8/PT5I0e/ZsjR8/3twvICBAjz32mE6fPq1Zs2YpKSlJp06dUqdOnbRv3z698MILeuSRRzRgwABzny5dupg/j7f7GZMyf61kNkYXl9S/NmfkfFSqVElNmzY1R/598803CgoKMtv49ttvzc9hYWHm5++++06jR48214ODg/Xggw8qKipKs2bNUmxsrNavX69+/fpp2rRpaZ6T9evXq2HDhnr44YcVFxencuXKSUp9rdSsWVMdO3bUrl27bvmuxuyIKat+++23O74HSVJcXJw2btyo3377TatXr9b27duVlJRkV8ff318PPPCAHnjgAdWqVStL8f7999+Sro92/+OPP/THH39o9uzZWrNmje65555s2ad+/frm5y1btighISHNEf0AAORpVmdWAQCw0urVq80RL25ubmnWqVChglGpUiUjIiLCaNSokeHk5GSMHDkyw6OEcmLU37///mu3j81mM9544w0jMTExM4efrptHS40aNcosi46ONkqUKGGWPfjgg+nul5bjx48b8+bNMyZNmmR8+OGHxrhx44zSpUub+4wYMcKsW7duXXN7oUKFjIMHD9q1FRsba0RFRaXb/8iRI83P7u7uxuLFizN1HqZNm2aMGzcuw8uNo/tupWrVqmZclStXNq5evWqW9e7dO90RY7c6v1lt81Zu7u+1114zy8LDw+3KFi1aZJbVqlXL3F6+fHnj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mD59uu677z55eHjIw8ND9913n7788kurwwKQSYzYBGCJhg0b6s8//8yRtmNjY3X48GFz/ejRowoPD1exYsVUrlw5vfbaa3rvvfd07733qkKFCho8eLD8/Pz06KOPSpLKlStn156np6ckqVKlSipTpowk6amnntLw4cPVq1cvDRw4UHv37tXEiRNv+b4eAAAAANYbMmSIxo8fr5dfftkc3LB582b169dPERERGjFihMURAsgoEpsALPH++++radOmmjdvnh5//PFsbXvbtm1q0aKFuZ7yXsvQ0FDNnDlTb775puLi4tSnTx9dunRJjRs31tKlS+Xh4ZHhPry9vbV8+XL17dtXgYGBKlGihIYMGaI+ffpk67EAAAAAd4rJg+xNmTJFX3zxhZ588klzW4cOHVSzZk29/PLLJDaBXITEJgBL/Pzzz2rRooW6dOmiZs2aqW7duvLy8kpVz2azafDgwZlqu3nz5redaX3EiBEZ/oWlfPnyabZXs2ZNrV+/PlOxAQAAALBWYmKi6tWrl2p7YGCgrl27ZkFEALKKxCYASwwbNsz8vGbNGq1ZsybNellJbAIAAAD4H0Zs2uvevbumTJmi8ePH222fNm2aunXrZlFUALKCxCYAS/z2229WhwAAAAAgn5o+fbqWL1+uRo0aSZK2bNmiiIgI9ejRw3yVlaRUyU8AdxcSmwAs0axZM6tDAAAAAJAP7d27V3Xr1pUkHTlyRJJUokQJlShRQnv37jXr2Wx398hTACQ2AQAAAADI04xkm4xkBz6K7sC+soKnx4C8w8nqAADkbxs3blTv3r1Vv359Va1aVfXr11efPn20YcMGq0MDAAAA4CCTJ09W+fLl5eHhoYYNG2rr1q3p1l2wYIHq1aunIkWKqFChQqpdu7Zmz56d5b6PHz+u/fv3Kzk5OcttALAGiU0AlunXr5+aNm2q6dOna/v27Tp8+LC2b9+uL7/8Us2aNbN7tw0AAACALDJsjl8yYe7cuerfv7+GDh2qHTt2qFatWgoODtbZs2fTrF+sWDG988472rx5s3bv3q2wsDCFhYVp2bJlt+znq6++SvXOzD59+qhixYq6//77dd999+nEiROZih2AtUhsArDErFmzNHHiRN17772aM2eOTp8+rWvXrunMmTP65ptvVKVKFU2cOFFff/211aECAAAAyEHjx49X7969FRYWpho1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iYmxWwAAAAAAQNaQ2ARgif3796tBgwbm+r///quff/5ZXbp00cqVK7V161ZVr149RxKbhQsXVlBQkEaOHKnTp08rKSlJ//3vf7V582adOXNGZ8+eVWxsrN5//321adNGy5cv12OPPaZOnTpp7dq1kqTIyEi5ubmpSJEidm37+PgoMjIyzX7HjBkjb29vcylbtmy2HxsAAACAW9uxY4f27Nljrv/000969NFH9fbbbyshIcHCyABkFolNAJa4cOGCfH19zfUNGzbo2rVrevLJJyVJrq6uevjhh3XkyJEc6X/27NkyDEOlS5eWu7u7PvnkEz355JNycnJScnKyJKljx47q16+fateurbfeekuPPPKIpk6dmuU+Bw0apOjoaHPJ6feIAgAAABKPot/sueee019//SVJ+vvvv9W1a1cVLFhQP/zwg958802LowOQGSQ2AVjCy8tL58+fN9d/++03OTk5qUmTJuY2V1dXxcXF5Uj/lSpV0tq1axUbG6sTJ05o69atSkxMVMWKFVWiRAm5uLioRo0advtUr17dnBXd19dXCQkJunTpkl2dqKgou4Ttjdzd3eXl5WW3AAAAAHCsv/76S7Vr15Yk/fDDD2ratKm++eYbzZw5U/Pnz7c2OACZQmITgCWqVaumxYsX6/z587p06ZK++eYbBQYG2r1z8/jx4/Lx8cnROAoVKqRSpUrp4sWLWrZsmTp27Cg3NzfVr19fBw8etKv7119/yd/fX5IUGBgoV1dXrVq1yiw/ePCgIiIiFBQUlKMxAwAAAJnj6NGad/eITcMwzKe0Vq5cqbZt20qSypYtq3PnzlkZGoBMcrE6AAD50yuvvKL//Oc/KlOmjDky87333rOr8/vvv6tu3bo50v+yZctkGIaqVq2qw4cPa8CAAapWrZrCwsIkSQMGDFCXLl3UtGlTtWjRQkuXLtXixYu1Zs0aSZK3t7d69eql/v37q1ixYvLy8tLLL7+soKAgNWrUKEdiBgAAAHDn6tWrp/fee0+tWrXS2rVrNWXKFEnS0aNHc3xgBYDsRWITgCU6d+6syZMna/r06ZKkrl276plnnjHL165dq5iYGLVp0yZH+o+OjtagQYN08uRJFStWTJ07d9aoUaPk6uoqSXrsscc0depUjRkzRq+88oqqVq2q+fPnq3HjxmYbEyZMkJOTkzp37qz4+HgFBwfrs88+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kqQZM2aoevXq+v3339WoUaNsjxsAAABA1n388ccyDEM9e/bU8OHD5e3tbZa5ubmpfPnyCgoKsjBCAJlFYhOAJZo2bapJkybp1VdfVdOmTc3thQsXliQ5Ozvrs88+U2BgYLb3/cADD2jatGn666+/VKVKFe3atUsbNmzQ+PHj7eosWrRIPXv2lJ+fn9asWaO//vpLEyZMkCRt375diYmJatWqlblPtWrVVK5cOW3evDnNxGZ8fLzi4+PN9ZiYmGw/NgAAAOBmjp7Q526dPCg0NFSSVKFCBT344INycSElAuR2/BQDsMwLL7yg5s2ba+rUqdqyZYsuXLggLy8vNWzYUC+++KICAgJypN+33npLMTExqlatmpydnZWUlKRRo0apW7duZp1PP/1Uffr0UZkyZeTi4iInJyd98cUXZhI2MjJSbm5uqR6j9/HxUWRkZJr9jhkzhpeRAwAAABa5du2akpKS1KxZM3NbVFSUpk6dqri4OHXo0EGNGze2MEIAmUViE4ClqlevrokTJzq0z++//15z5szRN998o4CAAIWHh+u1116Tn5+f+VfcTz/9VL///rsWLVokf39/rVu3Tn379pWfn5/dKM3MGDRokN2j9TExMSpbtmy2HBMAAACQHkZsXte7d2+5ubnp888/lyT9+++/ql+/vq5evapSpUppwoQJ+umnn9S2bVuLIwWQUSQ2AeQ7AwYM0FtvvaWuXbtKku6//34dP35cY8aMUWhoqK5cuaK3335bP/74o/kezpo1ayo8PFwffvihWrVqJV9fXyUkJKSa/CgqKkq+vr5p9uvu7i53d/ccPz4AAAAAqW3cuFGTJk0y17/++mslJSXp0KFD8vb21sCBAzVu3DgSm0AuQmITgKWSkpJ08uRJnT59WomJiWnWufEdnNnh8uXLcnJystvm7Oys5OTr0zcmJiYqMTHxlnUCAwPl6uqqVatWqXPnzpKkgwcPKiIigheOAwAAAHehU6dO6d577zXXU36XT5lEKDQ0VDNmzLAqPABZQGITgCWSk5M1evRoTZw4URcuXLhl3aSkpGztu3379ho1apTKlSungIAA7dy5U+PHj1fPnj0lSV5eXmrWrJkGDBigAgUKyN/fX2vXrtXXX39tTjDk7e2tXr16qX///ipWrJi8vLz08ssvKygoiBnRAQAAcFfhUfTrPDw8dOXKFXP9999/17hx4+zKY2NjrQgNQBaR2ARgiUGDBmncuHEqWbKkwsLCVKpUKYfNSvjpp59q8ODBevHFF3X27Fn5+fnpueee05AhQ8w63333nQYNGqRu3brpwoUL8vf316hRo/T888+bdSZMmCAnJyd17txZ8fHxCg4O1meffeaQYwAAAACQObVr19bs2bM1ZswYrV+/XlFRUXrooYfM8iNHjsjPz8/CCAFkFolNAJaYNWuWqlatqj/++EOenp4O7btw4cL6+OOP9fHHH6dbx9fX97aPoXh4eGjy5MmaPHlyNkcIAAAAZB9GbF43ZMgQhYSE6Pvvv9eZM2f0zDPPqFSpUmb5jz/+qAcffNDCCAFkFolNAJaIjY3V008/7fCkJgAAAID8qVmzZtq+fbuWL18uX19f/ec//7Err127tho0aGBRdACygsQmAEvUrFlTp0+ftjoMAAAAIM9jxOb/VK9eXdWrV0+zrE+fPg6OBsCdcrp9FQDIfu+8844WLlyoHTt2WB0KAAAAAADIhRixCcAS7dq108yZMxUSEqIOHTqoVq1a8vLySrNujx49HBwdAAAAAAC425HYBGCJ+Ph4LV68WOfOndP06dMlSTab/SMrhmHIZrOR2AQAAADuAI+iA8irSGwCsET//v01Z84c1axZU48//rhKlSolFxduSQAAAHlGcrJsVxPldOV/SS7DyUmGu1ua1W3xCbIlJ2epq1u2m5AoW1JS1tq12WR4uKfdbmKinK7EZ6ldAED2IIsAwBI//PCDAgMDtXnzZhKaAAAAeYz7/uPyXLVTTvGJdtsvV/TXhdbN0tyn6NrNKvj38Sz1F1/KR/90DE6zzHvLDnnuO5ildhOLeiuqS8c0ywqH71Ph7buz1K7DGTYp2YGjKBmxCcBByCYAsMTVq1fVokULkpoAAAB5TXJymklNwEpFixZN9eqr9Fy4cCGHowGQXcgoALBEYGCgDh8+bHUYd4X7rhWXi62A1WHkmHNOV60OIcc5O2XtsbncxL1g/njULuJQWatDyHHl7j1hdQg57lq8q9UhIBsUL/OP1SE4hGuBBKtDyHa2uPh0k5pGkpMSr6b9yLiR5JTlPpOTbem2m3wH7RpG+u0mXXOWc5ZbdizesSl9/PHH5ufz58/rvffeU3BwsIKCgiRJmzdv1rJlyzR48GCLIgSQFSQ2AVhi9OjRatmypZYsWaJHHnnE6nAAAAAA5GGhoaHm586dO2vEiBF66aWXzG2vvPKKJk2apJUrV6pfv35WhAggC0hsArDEihUr1Lx5c3Xs2FEPPfSQatWqJS8vr1T1bDYbfzUFAADI5U4+2llJHh4ynNIf4/jPg010LuiBrHVgS39U5oXA+rpYu24W201/5GH0fTUVW/leaf73WWsbllm2bJk++OCDVNvbtGmjt956y4KIAGQViU0Alhg2bJj5edWqVVq1alWa9UhsAgAA5H5JHh5K9rj1q3cMNzcZOdC34eomIwfeUGG4uirZyImIsx+PotsrXry4fvrpJ73++ut223/66ScVL17coqgAZAWJTQCW+O2336wOAQAAAEA+NHz4cD377LNas2aNGjZsKEnasmWLli5dqi+++MLi6ABkBolNAJZo1qyZ1SEAAAAA+YJhXF8c2d/d7JlnnlH16tX1ySefaMGCBZKk6tWra8OGDWaiE0DuQGITAAAAAADkC4mJiXruuec0ePBgzZkzx+pwANwhEpsAHKJnz56y2WwaPXq0fHx81LNnzwztZ7PZNH369ByODgAAAMjDHPyOTd3F79h0dXXV/PnzeY8/kEeQ2ATgEDNnzpTNZtPAgQPl4+OjmTNnZmg/EpsAAAAAstOjjz6qhQsXql+/flaHAuAOkdgE4BBHjx6VJJUuXdpuHQAAAAAc6d5779WIESO0ceNGBQYGqlChQnblr7zyikWRAcgsEpsAHMLf3/+W6wAAAMgjnJ10zb+4uZp41VWyOVkYEAwHP4ru0Mfes2D69OkqUqSItm/fru3bt9uV2Ww2EptALsK/LgDynaSkJA0ePFgVKlRQgQIFVKlSJY0cOVLGDdM3GoahIUOGqFSpUipQoIBatWqlQ4cO2bVz4cIFdevWTV5eXipSpIh69eql2NhYRx8OAADAXcXwcFVsj8bmEhnyiJLd3a0OCzAdPXo03eXvv/+2OjwAmcCITQCWOHXqlBYuXKg//vhD586dkyTdc889ql+/vh577DGVKlUqx/r+4IMPNGXKFM2aNUsBAQHatm2bwsLC5O3tbf51duzYsfrkk080a9YsVahQQYMHD1ZwcLD2798vDw8PSVK3bt105swZrVixQomJiQoLC1OfPn30zTff5FjsAAAAQGYxYhNAXkViE4DDDR06VGPHjlVCQoLdKElJ+vrrr/XGG29o0KBB/8fencfZXPZ/HH+fM6sZs1hnkBDC2HeDLDchWkRCQpIiS7gj+lmTyC1ZEilFd0nbzR1JCUNl7Fv2JaEYY2lmbLOe7++PuZ06zRlmzsycM+fM69nje9/OdV3f6/u5xnyPM5+5ru+VZzsVbtmyRY888og6deokSSpfvrw++eQTbd++XVL6bM3Zs2dr3LhxeuSRR6xxhYWFaeXKlerRo4cOHz6stWvXaseOHWrQoIEkad68eerYsaNmzpyp0qVL50nsAAAAAHLut99+01dffaUzZ84oOTnZpm7WrFkuigpAdpHYBOBU//d//6dp06bJz89PTz75pFq1amVNAp47d04bN27U559/rkmTJiktLU2TJk3K9RiaNm2qRYsW6dixY7r33nu1b98+/fjjj9YPMKdOnVJMTIzatm1rPSckJESNGzdWdHS0evTooejoaIWGhlqTmpLUtm1bmc1mbdu2TY8++miG6yYlJSkpKcn6OiEhIdfHBgAAAPwdMzZtrV+/Xg8//LDuueceHTlyRDVq1NCvv/4qwzBUr149V4cHIBtIbAJwml9++UUzZsxQhQoV9M033+jee+/N0KZfv34aN26c2rdvr9dee019+/ZVhQoVcjWOMWPGKCEhQVWrVpWXl5fS0tI0depU9erVS5IUExMjSQoLC7M5LywszFoXExOjkiVL2tR7e3uraNGi1jZ/N23aNE2ePDlXxwIAAAAge8aOHasXX3xRkydPVlBQkL788kuVLFlSvXr1UocOHVwdHoBsYPMgAE6zdOlSWSwW/fvf/7ab1Lzl3nvv1UcffaTU1FR9+OGHuR7HZ599po8//ljLli3T7t27tXTpUs2cOVNLly7N9Wv91dixYxUfH289zp49m6fXAwAAAJDR4cOH1adPH0npkxNu3rypwoUL65VXXtHrr7/u4ugAZAczNgE4zU8//aQaNWqoadOmd2zbrFkz1axZUz/88EOuxzFq1CiNGTNGPXr0kCTVrFlTp0+f1rRp09S3b1+Fh4dLki5cuGCzidGFCxdUp04dSVJ4eLhiY2Nt+k1NTdWVK1es5/+dn5+f/NgRFAAAeLqkFBXacMj60nytkK7UbyjDx9eFQRVshsUkw+LEpehOvJYjAgMDrc/VLFWqlE6ePKnq1atLknVjUwDugRmbAJzm8OHDatSoUZbbN2rUSEeOHMn1OG7cuCGz2fbtz8vLSxaLRZJUoUIFhYeHa/369db6hIQEbdu2TZGRkZKkyMhIxcXFadeuXdY2GzZskMViUePGjXM9ZgAAAHdhSrXIb+ev1iP4yGGZ0tJcHRZg1aRJE/3444+SpI4dO+qf//ynpk6dqqefflpNmjRxcXQAsoMZmwCcJi4uLsNzKW+nZMmSiouLy/U4HnroIU2dOlV33323qlevrj179mjWrFl6+umnJUkmk0nDhw/Xq6++qsqVK6tChQoaP368Spcurc6dO0uSqlWrpg4dOmjAgAFauHChUlJSNGTIEPXo0YMd0QEAAJCvGIZzN/QxDKddyiGzZs3StWvXJEmTJ0/WtWvX9Omnn6py5crsiA64GRKbAJzm5s2b2VqK7evrq5s3b+Z6HPPmzdP48eP1/PPPKzY2VqVLl9Zzzz2nCRMmWNuMHj1a169f17PPPqu4uDg1b95ca9eulb+/v7XNxx9/rCFDhqhNmzYym83q2rWr5s6dm+vxAgAAAMg999xzj/XPgYGBWrhwoQujAZATJDYBFDhBQUGaPXu2Zs+enWkbk8mkV155Ra+88kqmbYoWLaply5blQYQAAABA7jEMk5NnbObvZ2xOmDBBrVu3VmRkpM3EBQDuh8QmAKf66KOPtHXr1iy1PXHiRB5HAwAAAKCgiY6O1qxZs5SamqqGDRuqZcuWatWqlZo1a6ZChQq5OjwA2UBiE4BTnThxIlsJS5Mpf/+2FwAAAIB7WbdunVJTU7Vt2zZt3rxZmzZt0ty5c5WUlKSGDRtaNxYCkP+R2ATgNKdOnXJ1CAAAAECBw1L0jLy9vdWsWTOVKFFCRYsWVVBQkFauXKkjR464OjQA2UBiE4DTlCtXztUhAAAAACjgFi1apKioKG3atElJSUm677771KpVK40bN061atVydXgAsoHEJgAAAAAAHowZm7YGDhyoEiVK6J///Keef/55FS5c2NUhAXAQiU0AAAAAcDaLReakZJl8kyRJhp+35O1lt6npepLDlzF8vSWfTPq9kSQZDvbr4yX52v9x0nQz2bFOASf5z3/+o82bN2v58uWaOHGi6tatq1atWqlVq1Zq3ry5AgICXB0igCwisQkAAAAATlTo6CmFbNohc3KKtex61wZKiShjt33IrLUOX+tGh5pKbniP3bqgBRtkvuFYEjKxRRUltqxqt67wUjZeQf7WuXNnde7cWZIUHx+vH374QZ9//rkefPBBmc1mJSYmujZAAFlGYhMAAAAAnMViyZDUBPIaS9Ezunz5sjZt2qSoqChFRUXp4MGDKlKkiO677z5XhwYgG0hsAoCLFTZ85C0fV4eRZ341Jbg6hDxnMrs6gryXeN3f1SE4RZFi8a4OIc+lJHvu+80thUOvuTqEPOcV7PmzicxmB9dI53OmxCS7Sc28SzzlTb+GkXnyygjwk/4yE9Ti6yOfohbJfDPX43C1ZBLUbqlmzZo6fPiwihQpohYtWmjAgAFq2bIlGwcBbojEJgAAAAAgT1j8vBXfoqFkLgC/BczHmLFpa+DAgWrZsqVq1Kjh6lAA5BCJTQAAAABwofiBbWQJzXyzkrgRDzjct5HJBj+SlDCwTc42D8rE1b73SZb0jo1CPrqZEOTYRYA8MnjwYOufDSP9e9Vkyt/JWAD2kdgEAAAAABcyCvlmuiO6JBmBfnlz3YA86reQb570C8cxYzOjxYsX680339Tx48clSZUrV9bw4cP1zDPPuDgyANlBYhOAyyQnJ2vlypXasWOH4uLilJaWlqGNyWTS4sWLXRAdAAAAAE80YcIEzZo1S0OHDlVkZKQkKTo6WiNGjNCZM2f0yiuvuDhCAFlFYhOAS5w+fVr333+/Tp48aV3+YQ+JTQAAAAC5acGCBXr33XfVs2dPa9nDDz+sWrVqaejQoSQ2ATdCYhOAS4wYMUInTpxQ79699fTTT+uuu+6StzdvSQAAAEBuMwyTDAtL0W9JSUlRgwYNMpTXr19fqampLogIgKPIIgBwiQ0bNqhNmzZaunSpq0MBAAAAUID07t1bCxYs0KxZs2zKFy1apF69erkoKgCOILEJwCUsFovq1q3r6jAAAAAAj8fmQRktXrxY3333nZo0aSJJ2rZtm86cOaM+ffpo5MiR1nZ/T34CyF9IbAJwicaNG+vw4cOuDgMAAABAAXPgwAHVq1dPknTy5ElJUvHixVW8eHEdOHDA2s5kyv8JWqCgI7EJwCWmT5+uFi1a6IsvvtBjjz3m6nAAAAAAj2UY6Yczr5efbdy40dUhAMglJDYBuMTXX3+t1q1bq3v37mrZsqXq1aun4ODgDO1MJpPGjx+f69cvX768Tp8+naH8+eef15QpUzRx4kR99913OnPmjEqUKKHOnTtrypQpCgkJsbY9c+aMBg0apI0bN6pw4cLq27evpk2bxiZIAAAAAAA4AT99A3CJSZMmWf8cFRWlqKgou+3yKrG5Y8cOpaWlWV8fOHBA999/v7p166Zz587p3LlzmjlzpiIiInT69GkNHDhQ586d0xdffCFJSktLU6dOnRQeHq4tW7bo/Pnz6tOnj3x8fPTaa6/lerwAAMAzGIX8dOGZLtbXfkE3ZQT4ujAioOCoW7eu3eXlISEhuvfee/XCCy8oIiLCBZEBcBSJTQAu4erlHyVKlLB5PX36dFWsWFEtW7aUyWTSl19+aa2rWLGipk6dqieffFKpqany9vbWd999p0OHDun7779XWFiY6tSpoylTpuill17SpEmT5OvLDygAAMAOk0lGgL/1pRFocWEwKCgshkkWJ27o48xrZUfnzp3tlsfFxWn37t2qW7euNmzYoGbNmjk3MAAOI7EJwCVatmzp6hCskpOT9dFHH2nkyJGZPiA8Pj5ewcHB1mXm0dHRqlmzpsLCwqxt2rdvr0GDBungwYN2d3xPSkpSUlKS9XVCQkIujwQAAABAZiZOnHjb+v/7v//ThAkTtH79eidFBCCnzK4OAABcbeXKlYqLi9NTTz1lt/7SpUuaMmWKnn32WWtZTEyMTVJTkvV1TEyM3X6mTZumkJAQ61G2bNncGQAAAABwG4Zhcvrhjp544gn9/PPPrg4DQDaQ2ATgMqmpqXrzzTfVqFEjm9mQkrR37149//zzOnbsWJ7HsXjxYj3wwAMqXbp0hrqEhAR16tRJERERNs8FdcTYsWMVHx9vPc6ePZuj/gAAAADkHi8vL1ksPB4CcCcsRQfgEjdv3lS7du20ZcsWFS9eXMHBwbp+/bq1vkKFCvrggw9UtGhRvfrqq3kWx+nTp/X999/rP//5T4a6q1evqkOHDgoKCtKKFSvk4+NjrQsPD9f27dtt2l+4cMFaZ4+fn5/8/PxyMXoAAAAgC5w9i9JNZ2z+5z//YfMgwM2Q2ATgEq+99pp++uknTZ8+XaNGjdLkyZM1ZcoUa31ISIhatmypb7/9Nk8Tmx988IFKliypTp062ZQnJCSoffv28vPz01dffSV/f3+b+sjISE2dOlWxsbEqWbKkJGndunUKDg7mwxAAAMhcWpp8z1+yvvQOSFRq2WKSF4vpgLw2d+5cu+Xx8fHatWuXvv76a33zzTdOjgpATpDYBOASn376qVq3bq3Ro0dLkt1Ne+655x7t2bMnz2KwWCz64IMP1LdvX5tl8AkJCWrXrp1u3Lihjz76SAkJCdaNfkqUKCEvLy+1a9dOERER6t27t2bMmKGYmBiNGzdOgwcPZlYmAADIlCkpRUX/Y7sxSdyIB2QE8vkByGtvvvmm3fLg4GBVqVJFmzdvVmRkpJOjApATJDYBuMSZM2f06KOP3rZNUFCQ4uPj8yyG77//XmfOnNHTTz9tU757925t27ZNklSpUiWbulOnTql8+fLy8vLS6tWrNWjQIEVGRiowMFB9+/bVK6+8kmfxAgAAAI5w9oY++XXzoFOnTrk6BAC5jMQmAJcICgpSbGzsbducPHlSJUqUyLMY2rVrJ8MwMpS3atXKbvnflStXTmvWrMmL0AAAAAAAwB3wIBcALtGkSROtWrVKcXFxduvPnj2rNWvWqEWLFs4NDAAAAPAwt2ZsOvMAAGcgsQnAJUaNGqU//vhDbdq00U8//aTU1FRJ0o0bN7R+/Xq1b99eqampGjlypIsjBQAAAAAA+RFL0QG4RIsWLfTWW2/phRdesJmVGRQUJEny8vLS22+/rfr167sqRAAAAMAjGBaTDDubdebl9QDAGZixCcBlBg0apH379mnIkCFq2LChKlasqLp162rgwIHas2ePnnnmGVeHCAAAAMADdOnSRQkJCZKkDz/8UElJSS6OCEBuILEJwKWqVaumOXPmaOvWrTp27Jh27typ+fPnq3r16q4ODQAAAICTzJ8/X+XLl5e/v78aN26s7du3Z9r23Xff1X333aciRYqoSJEiatu27W3bS9Lq1at1/fp1SVK/fv0UHx+fq/EDcA2WogMAAAAA4MGcvaFPdq/16aefauTIkVq4cKEaN26s2bNnq3379jp69KhKliyZoX1UVJR69uyppk2byt/fX6+//rratWungwcPqkyZMnavUbVqVY0dO1atW7eWYRj67LPPFBwcbLdtnz59shU/ANchsQnAKZ5++mmHzjOZTFq8eHEuRwMAAPK1NEOmG4nWl0aAv/12qWkyJac4fBmjkJ9k77mDaWkyJeWgX39fyWxncZzFInMiy1+Bv5s1a5YGDBigfv36SZIWLlyor7/+Wu+//77GjBmTof3HH39s8/q9997Tl19+qfXr12ealFy4cKFGjhypr7/+WiaTSePGjZPJzv1vMplIbAJuhMQmAKdYsmSJ3XKTySTDMDItJ7EJAEDBYtpyUV7/PqWwm2nWsphhT9ht63fqdxX55keHr3XhmS52k6a+5y+p6H/WO9zvpV4dlVosNEO59x8JKv7xGof7BRyVn2dsJicna9euXRo7dqy1zGw2q23btoqOjs5SHzdu3FBKSoqKFi2aaZumTZtq69at1v6PHTtmdzYoAPdCYhOAU5w6dcrmtcVi0QsvvKCtW7fqhRde0H333aewsDBduHBBmzdv1ty5cxUZGak333zTRRE7z1VzirxNvB27s1Il/3B1CHnO7JXxFxCeKCnJ19Uh5Dln/mDrKiUqxLg6hDxn9kt1dQh5I82Q+aNTMv0lqSlJhYpdtdvcO+Zmji5XqOg1GYEZZ2Z6JdzIUb9+oTfkU8wrQ7k5zX6/PoUTpcKWHF0zP7t+McTVIeQZS4rn/r3lhlub9dzi5+cnPz8/m7JLly4pLS1NYWFhNuVhYWE6cuRIlq7z0ksvqXTp0mrbtm2W2p86dUolSpTIUlsA+Rs/SQNwinLlytm8nj59urZt26Z9+/apVKlS1vIqVaqoRYsW6tevn+rWrasvvvhCo0ePdna4AADAFa6nynQj7c7tPIjh7y0V4scy5C1XzdgsW7asTfnEiRM1adKkXL3W9OnTtXz5ckVFRcnfP5PHVvxNuXLlFBcXp8WLF+vw4cOSpIiICPXv318hIZ6biAc8EbuiA3CJxYsX6/HHH7dJav5VmTJl9Pjjj+vdd991cmQAAADOYfh7K+mRapIXP5bBM509e1bx8fHW46/LzW8pXry4vLy8dOHCBZvyCxcuKDw8/Lb9z5w5U9OnT9d3332nWrVqZTmunTt3qmLFinrzzTd15coVXblyRW+++aYqVqyo3bt3Z7kfAK7HrwYBuMRvv/12x9+o+vv767fffnNSRAAAID+6OqRVpnWpVcKUMLqdw30bhew/fiKtbNGc9evvY7fcUizQpl/D30fegR76WAFAUnBwcKY7j9/i6+ur+vXra/369ercubOk9MdWrV+/XkOGDMn0vBkzZmjq1Kn69ttv1aBBg2zFNWLECD388MN699135e2dnhZJTU3VM888o+HDh2vz5s3Z6g+A65DYBOASd911l1asWKEpU6bYTXDeuHFDK1as0F133eWC6AAAQH5hBNzm2bfeXjK8Mz7LMse8zTK8/e7cLru8zDIC86Bf4A4shmRx4lJ0SzYfzT1y5Ej17dtXDRo0UKNGjTR79mxdv37dukt6nz59VKZMGU2bNk2S9Prrr2vChAlatmyZypcvr5iY9GcrFy5cWIULF77j9Xbu3GmT1JQkb29vjR49OttJUgCuxZoHAC7xzDPP6JdfflGzZs303//+V5cvX5YkXb58WStXrlTz5s3166+/asCAAS6OFAAAAEBe6t69u2bOnKkJEyaoTp062rt3r9auXWvdUOjMmTM6f/68tf2CBQuUnJysxx57TKVKlbIeM2fOzNL1goODdebMmQzlZ8+eVVBQUO4MCoBTMGMTgEuMGjVKx44d0wcffKAuXbpIksxmsyyW9J0lDcNQv379NGrUKFeGCQAAALg9V20elB1DhgzJdOl5VFSUzetff/3Vgaj+1L17d/Xv318zZ85U06ZNJUk//fSTRo0apZ49e+aobwDORWITgEuYzWYtXrxYffr00dKlS7V//37Fx8crJCREtWvXVu/evdWqVStXhwkAAADAw8ycOVMmk0l9+vRRamr6c259fHw0aNAgTZ8+3cXRAcgOEpsAXKply5Zq2bKlq8MAAAAAUED4+vpqzpw5mjZtmk6ePClJqlixogICAlwcGYDsIrEJAAAAAIAHc4el6K4QEBCgmjVrujoMADlAYhOAUzz99NMOnWcymbR48eJcjgYAAAAAALg7EpsAnGLJkiV2y00mkwzDyLQ8rxKbv//+u1566SV98803unHjhipVqqQPPvhADRo0yNB24MCBeuedd/Tmm29q+PDh1vIrV65o6NChWrVqlcxms7p27ao5c+aocOHCuR4vAAAA4CjDkAyLc68HAM5AYhOAU5w6dcrmtcVi0QsvvKCtW7fqhRde0H333aewsDBduHBBmzdv1ty5cxUZGak333wz12P5448/1KxZM7Vu3VrffPONSpQooePHj6tIkSIZ2q5YsUJbt25V6dKlM9T16tVL58+f17p165SSkqJ+/frp2Wef1bJly3I9ZgAAAAAAYIvEJgCnKFeunM3r6dOna9u2bdq3b59KlSplLa9SpYpatGihfv36qW7duvriiy80evToXI3l9ddfV9myZfXBBx9YyypUqJCh3e+//66hQ4fq22+/VadOnWzqDh8+rLVr12rHjh3WWZ7z5s1Tx44dNXPmTLuJUAAAcAf+XrL0u1uSlHQhWJJk+PIjC5BTPGMTgKfiUwIAl1i8eLEe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EpsAAAAAAAAA3A6JTQAAABdjL0cg/+B+BADAfZDYBIACIC0tTRI/rMF9eer3blxcnCTJZDK5NhAgG7gfAQBAfkFiEwA83N69e9W5c2fduHGjwP6w5mk/hJ84cUI7duxwdRh56vz589q+fbu+/fZbpaWleeT37t69e/XQQw9p//79rg7FqTztfjxz5oyOHDni6jDyFPejZ+OeBAC4MxKbAODB9u3bp6ZNm6p69eoKCAiwlnvaDzG3HDt2TC+99JL69eunOXPm6Pjx45LSZ994ypj37t2r+vXra+/eva4OJc/s379fkZGR6t27t7p3764aNWrok08+0ZUrV1wdWq7Zt2+fGjVqpMjISNWqVcumzlO+V0+cOKHp06dr7Nix+uSTT3Tt2jVJnnU/7tmzRw0aNNCBAwdcHUqe4X70jO9ViXsSAOCZSGwCgIfav3+/mjVrpiFDhmj69OnW8uTkZI+cbXPo0CE1atRI+/fv19WrVzVx4kQ9//zzeu+99yR5xg9u+/btU7NmzfTMM89owIABrg4nT1y8eFHdu3dXr1699M033+jQoUOqXbu2pkyZorlz5+rixYuuDjHHDh48qMjISI0dO1YzZsyQYRi6cuWKTp06JckzlsEePHhQDRs21Nq1a7Vlyxb16dNHTz31lL799ltJnnM/3nfffXryySf12GOPuTqcPMH96Bn3o8Q9CQDwXCbD3f8FAwBkEBMTo7p166p27dpau3at0tLS9OKLL+r48eM6efKknnvuOXXo0EFVq1Z1dai5Ijk5Wf3791ehQoW0aNEiSekzU8aNG6fTp0+rZ8+eGjZsmIujzJnjx4+rZs2aevHFF/Xqq68qJSVFa9euVUxMjMLCwtSmTRsFBga6OswcO3TokDp16qQvvvhC9evXt5aPGTNGa9asUe/evTV48GCbGcju5PLly2rSpImCgoK0e/duSdLTTz+t/fv369y5c6pcubLmzJmj2rVru21C5ebNm3r88cdVrlw5vfXWW5Kk3bt367nnnlNoaKief/55Pfrooy6OMmeOHDmi+vXra/jw4Zo6dapSU1P1008/6Y8//lCxYsV03333uTrEXMH96P73o8Q96Un3JAAgI2ZsAoCHioyM1OXLl/Xf//5XDz74oH7++WdVrVpVbdq00dy5czVz5kydOXPG1WHmCl9fX124cMH6g6dhGKpUqZJmzJih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k/bGaDKZlJiYqGrVqqlatWrWtu5+TwIA7oxd0QGgAFm+fLk2btyozz//XOvXr1fdunVdHVK2XL9+XcOGDZPFYlHDhg01ZMgQvfjiixo1apRKlCghKX1ThI8++kgvvfSSvLy8FBQUpISEBK1atUr16tVz8QjuLLMxjh492prcvDWLSJIOHjyoTz75RPPmzdOPP/6omjVrujL8LLly5Yp69uypqlWras6cOdby1q1bq2bNmpo7d6617OrVq3r11Vd15coV+fv7a9CgQdbZU/lZVsb417/HdevWad68edqxY4fWrFnjFvfmpUuX1LVrV9WtW1ezZ8+WlP69+cADD2jy5MkKCAhQYmKidu7cqeHDh6tMmTIKCgrS+fPn9e2337r1GDt27Kjx48erUKFCKlasmO6++25J0smTJ7V06VLr/Vi9enUXRp89aWlpunLlipo3b64NGzZo+/btmjZtmmrVqqUTJ04oLCxM7733nl555RXFxcW51f14S2ZjrFOnjg4ePKhSpUrpiy++0Lfffqv58+e71f0oSTExMapbt65q166ttWvXKi0tTS+++KKOHj2q06dPa9CgQapRo4Z+/vlnvfjii255T2Y2xuPHj+vkyZN67rnn1L59e2ty85dfftGSJUvc8p4EAGSN+/x6FQCQYxEREfroo4/0ww8/uOWHe7PZrPr166tYsWLq3r27ihcvrh49ekiSNblpNpvVp08ftWjRQmfOnNGNGzdUs2ZN61LR/O52Y7yV3LyVDPv111/14osv6tixY9q0aZNbJDWl9F2l4+Li9Nhjj0lKT0abzWZVqFBBV65ckZSePDIMQ0FBQXr99ddt2rmDrIzx1t+jYRiqUKGCIiIiNGPGDFWtWtVlcWeHyWRShw4drGOUpFdffVXfffedzp8/r7i4OEVERGjWrFnav3+/9u3bJ8Mw1KRJE5UrV86FkWddZmP89ttvFRMTo8uXLysiIkLjx49XeHi4/vnPf2rfvn3auHGj273Hms1mlShRQg0bNtSBAwf06KOPys/PT3379lViYqJmz56toKAg/etf/5LkXvfjLbcbY1JSkgYMGCAp/bEf1apVc6v78ZbIyEidPXtW//3vf7Vw4UKlpKSoTp06qlChgmbPnq3WrVtr9uzZatmypY4cOeJ296SU+RjLly+vuXPn6sCBA5owYYKuXbuml19+2W3vSQBA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k02/efHenZV/M+703p2V9+2/xpcb791Zed/O7Gviye/dvJc5pkAmNu3x9/fXvHnzlJycrPfee89abm8pelY+YNljMpk0Y8YMTZo0SWFhYSpevLj69euX4QPEzz//rPbt21vf8B577DGbbPutWbKjRo2yLi/76xvO3yUlJWncuHG655575Ofnp7vuuktPPfWUTZs7vdlFRUXJZDJp3bp1euKJJxQUFKRy5cppxowZ1jZLliyRt7e3Lly4YNP3lStX5Ovrq3feecdadqc39VvL6JYsWaIBAwaoWLFiatSokaT0N50nn3xSQUFBKlmypF5++WW98cYbGWYPx8XF6fnnn1epUqXk5+en+vXr67vvvsv06wTH3el7tn///rrvvvusry9duiSz2ayGDRtay65duyYfHx99/vnnmV7n4MGD6tixo4oVK6aAgABVqVLF5nswqz8U3ukRExaLRc8884yKFy9unV3w93/wby0P/vnnn9W8eXMFBASoRo0a+vbbbzP0t2TJEtWqVUv+/v4qU6aM/u///s9man5cXJwGDBigMmXKyN/fX2XLllWPHj2yXG/P9evX9eWXX2ZpVtftJCUlaePGjerWrZtNeY8ePXT48GGbZ6V07txZcXFxWrNmTY6uiduzt6Q8OTlZw4YNU9GiRRUaGqrnnntOy5Yts/tMnMTERA0ZMkRFihRRqVKl9OKLL97xAwX3Xv6+93KiW7duJDad5Pz583r++ec1atQoffbZZ/Lz81P79u1tPv9kpU10dLRatWqlkJAQffrpp1q0aJF27NhhnRl3y7lz5zRs2DCNGDFCa9euVZ06dXIU31dffaXHHntMERERWrlypUaPHq2FCxfarHTKjpiYGA0bNsx6vcTERD366KM2P6StXr1azz77rFq3bq0VK1aoTZs2Ge4JSTp9+rSaNWum9957T6tWrVLXrl3Vv3//DN/bf/+aNGrUSGXKlNH7779v027ZsmWSpCeeeCLT+NevXy9vb2/r59Nb9u/fL0m65557FBcXZ3NER0dLkt0fnG+5evWqxo0bp7vuuks1a9bUqFGjtH79ervPfLudzOJLSEjQqVOnrInNZcuWqXnz5nrqqaf0xRdfKDAwMFvXyS1NmzbVpUuXtHfv3lzr88cff1SZMmWss9VvPRyAGw8AAB7OSURBVJPu888/16xZs7Rx48Zcu1ZW/Otf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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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EaBv374aMWKEJNk9/p3S9Z7R+4oV+vfvb75S4MiRIwoKClLnzp114MABffvtt9m+nyOvkYxInGk+IiJCe/fu1apVq+x+XwYNGqR27do5LJ7bOfKcZec1m5n7aXaLi4vTvn37VLJkSbsR8bc7f/68zp49q8qVK6c6chQAkDNIbAJAPuDi4qLXXntNr732mqSEx2zfeecdSQkv7q9cubL5GFVe9OKLL+q7777T5s2bJSWMnEgcPdGhQwf9+OOPZt3sGFGVFWFhYXYTgdyuRIkSevrpp831bt266YMPPpAk/f333xo1apSkhH/8tmnTJts+15YtW6b4LsSOHTsmm3whu93pGBOVL19eXbt2NZNIUkKyL7tHW40YMUJFihTRq6++qujoaMXFxWnlypV2j/zfLjPvwnvyySe1d+9eTZ48WVLCpBMHDx60q+Pn56dvv/3WHI0aFBSk5s2bm9f4uXPn9M0330hKmDzp9oRAWh588MFs+6xv3rypn376ST/99FOK5QMGDFDLli3v2M7ly5d19uxZcz02NlZjxoxJVq9UqVIKCAjQE088oQMHDmjixImSpD///FN//vlnhmJPrxdffFE7duzQ119/rWrVqunBBx9UtWrVFBMTo3/++UebNm1SWFiYihcvnq1Jkz59+ujNN9+0G5HdoEEDu9Fpt8vIfcUKL730kpYtW2aOfN27d6/5WG6rVq20YcOGbN3PkddIRixcuNDufamJXFxcNHr0aPOPKlZw9DnLrms2M/fT7PbHH3/oxo0baY4I5f2aAGAdHkUHgHxi+PDhmjZtmqpXry5XV1f5+vpqwIAB2rhxo93L9fMiV1dXrVq1SsOHD1f58uXl5uamGjVq6IMPPtCbb75pV9fKkUsTJ07UM888o8DAQPn6+srV1VWFCxdWzZo19dxzz2n37t3y9/c3648fP16DBw9W+fLl7R6Rvl12fK4//vijRo4cqcqVK8vNzU2VKlXS6NGjtWTJkhx9t5yUvmNMdPskQlL2TRqUUj/Hjh3TmDFj1KxZM5UuXVouLi4qVKiQKlasqAceeEBjxozRnj17kr0DMr3ef/99rV27Vt27d5efn59cXV3l6empevXqaeTIkfrtt9+SJW2XL1+up59+WqVLl5a7u7vq1Kmjzz77TFOnTk13v99++63GjRunqlWrZvqzfumll7R48WI999xzaty4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6najn8uVK2f+EeD999/XpUuXVKhQIdWvX19t2rRJs8+MXiuZjTEr+vbtqxEjRkiyH1V6+2zoiYYNG6ZevXpJkrZu3ao6deqoc+fOKl68uC5duqS9e/dqy5YtKlu2rHr27JmhOAYMGKBXXnlFknT48GEFBQWpU6dO2rdvn7777rtU98vJmO4kq/egRH/99ZfdawJu5+rqquDgYAUHBys+Pl579+6Vv79/uto9efKkhgwZomHDhqlDhw6qUqWKLl68qEWLFpn/f5GkJ5980ny8PTP73G7Xrl3mz40bN2ZGdABAwWTNqz0BAMg9bp8FeNSoUeb269evG87OzkZwcLBd/R9++MFwdnY2GjRoYERFRTk63BSlNXmQbptcIr0TsiSduKNVq1YpThDSsWNHu9nh05o86J133kmxjbvvvtsIDAw010NCQuz2GzNmTJqTltw+q3Zq/W/atMnw8PAwt9etW9e4cuVKus5FToiJiTHuvffeFI8n6blO76zomW0zLXea5T6ta2vo0KFpTi7j5+eXbBb52yfTuX0ZNGhQuuLNyLWSmRizcj4MwzBOnz5tODs729Vr0KBBqsczYsSINOOTZPj7+6c7vkQxMTFG8+bNU2yvQ4cOdusbN27MUkzpOS8pSXosqU08lvQedCe3Tx6UniW9vysffPDBHdtq0aKFce3atSztc7snnnjCrPfWW2+l+xwAAJCfOAkAgALu9kk7Fi9ebP7822+/KS4uLtlj4R06dNCHH36oPXv26Iknnkh19E9ucPv785ydnTP9yOaPP/6okSNHqnLlynJzc1OlSpU0evRoLVmyJN3vixs+fLimTZum6tWry9XVVb6+vhowYIA2btwoT0/PVPcbPXq0fvnlF4WEhKhKlSry8PBQ4cKFVaVKFfXu3Vt33333Hftu3ry5vv76azk7O0uS9u3bpwcffFBRUVHpOwHZzNXVVWvWrNGwYcNUrlw581HT999/P9VRuVa0mRXvv/++1q5dq+7du8vPz0+urq7y9PRUvXr1NHLkSP3222/JHqEeP368Bg8erPLly5ufVUZk9FrJTIxZ4efnl2zysZRGayaaMGGCtm7dqieffFKVK1eWu7u7XF1dVa5cObVr104TJkzQunXrMhyHq6urVq1apeHDh6t8+fLmtfLBBx/ozTfftKub9N2aGY0pu+5BiY/MV61aNdP3oJz0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LV68WI888ojV4SAnRbpZHUHOc0p9AiwAAACr8Si6vZCQEKtDAJBNSGwCsMT333+v1q1bq0ePHmrZsqUaNGggLy+vZPVsNptGjhxpQYQAAAAA8qujR49qzpw5Onr0qKZMmaIyZcroxx9/VMWKFRUQEGB1eADSicQmAEuMGTPG/HnDhg3asGFDivVIbAIAAABZYxiOHUVp5PKHWTZu3KgOHTrovvvu06ZNmzR+/HiVKVNG+/bt06xZs7R48WKrQwSQTiQ2AVji559/tjoEAAAAAAXQa6+9prfffltDhw5V0aJFze3333+/pk6damFkADKKxCYAS7Rs2dLqEAAAAICCwbAlLI7sLxfbv3+/vvzyy2Tby5Qpo4sXmT4QyEucrA4AAAAAAADAUYoVK6azZ88m2753716VK1fOgogAZBaJTQCWuXXrlj744AM1btxYXl5ecnH5/0HkoaGheu655/TXX39ZGCEAAACA/KZnz54aPny4wsLCZLPZFB8fr61bt+qVV15Rnz59rA4PQAbwKDoAS9y4cUPt2rXTtm3bVKpUKXl5eSkqKsosr1y5subMmaMSJUro7bfftjBSAAAAIG8zDJuDJw/K3Y+iT5gwQYMGDVKFChUUFxen2rVrKy4uTk888YTefPNNq8MDkAGM2ARgiQkTJmjr1q2aOHGiwsLC9PTTT9uVe3t7q2XLllq9erVFEQIAAADIj9zc3PTpp5/q77//1sqVK/X555/rzz//1IIFC+Ts7Gx1eAAygMQmAEssXLhQrVu31quvviqbzSabLflfdatUqaKTJ09aEB0AAACQfySO2HTkkpuNGzdO169fV4UKFfTggw/qscce01133aUbN25o3LhxVocHIANIbAKwxMmTJ9WwYcM06xQtWlTh4eEOiggAAABAQTB27FhFRkYm2379+nWNHTvWgogAZBaJTQCWKFq0qM6fP59mnaNHj6p06dLZ3ndcXJxGjhypypUrq1ChQqpatareeustGYZh1omMjNTzzz+v8uXLq1ChQqpdu7ZmzJhh187Nmzc1aNAglSxZUp6enurevbvOnTuX7fECAAAAyD6GYaT4xNi+fftUokQJCyICkFlMHgTAEk2bNtWKFSt09epVFStWLFn5qVOn9MMPP+jhhx/O9r7/+9//avr06Zo3b54CAgK0a9cu9e3bV97e3nrxxRclSUOHDtX6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nlX//v3Vvn17Va1a1d6h5oi4uDj17dtXBQsW1KJFiyQljUwZO3aszp8/r2effVbDhg2zc5TZc/r0adWsWVOvvvqq3nzzTcXHx2vjxo0KDw+Xv7+/WrduLS8vL3uHmW3Hjh1Tx44d9fnnn6tevXqW8tGjR2vDhg3q2bOnBg8ebDUC2ZFcv35djRs3lre3t/bv3y9J6tOnjw4fPqxLly6pcuXKmjNnjmrXru2wCZW//vpLzzzzjMqVK6f33ntPkrR//371799ffn5+GjRokDp37mznKLPnxIkTqlevnoYPH64pU6YoISFBP//8s/78808VK1ZMDz/8sL1DzBHcj45/P0rck850TwIAUmLEJgA4qaCgIF2/fl1fffWVHnvsMR05ckRVq1ZV69atNXfuXM2YMUMXLlywd5g5wt3dXVeuXLF88DQMQ5UqVdL06dNVtWpVff7551q3bp2do8y6hIQEvffeeypcuLDq1KkjSerUqZPGjh2rt956S507d1ZwcLAOHDhg30BzQHx8vBISEnT79m1JSR/IJWnatGlq1aqVFixYoDNnzkhyzCmixYoVU/v27eXl5aWJEyeqYcOGunz5svr376/3339f8fHx6tSpk86ePSvJMftYsGBBRUZGqnjx4pIks9mshx56SP/73/+UkJCgRYsW6dChQ3aOMuvi4+P1+uuvy8vLS0888YQk6amnntLLL7+sAQMGqHXr1hoyZIgiIiLsHGn2xcbGOv392LZtW6e+HyXnvicNw1BcXFy+uScBAKkwAABO6dKlS0avXr2MggULGo888ohx7do1S92KFSsMPz8/Y8OGDXaMMGckJCQYcXFxRnBwsPH0008bd+7cMcxms5GYmGgYhmGcPXvWCAoKMrp162bnSLPn1KlTxksvvWQ0btzYKFu2rNGhQwfj+PHjxu3bt429e/caZcqUMXr16mXvMHNEgwYNjFatWlke37lzx/J1/fr1je7du9sjrGxL/pk0DMMYOXKk4e/vb3Ts2NEIDw+3Oq969epG7969bRxdzrlx44bRqlUrY8CAAYZhJN2j8fHxhmEYxtGjR4377rvPePnll+0YYfbt27fPaNeundG2bVujatWqRvv27Y39+/cb58+fN7755hvD3d3dGDNmjL3DzJJLly4ZR48etTyuX7++092Ply5dMg4dOmR5PGLECKe8H5Nfc2JiYoxW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WSQ2AQAAclB4eLgkqXTp0inqQkNDFRoaalXWsmVLtWzZ0qrsoYceSpHUlJJGg0pJicx/b7JTpEgRTZgwQT169NCyZcuyndh88MEH1a9fP6uyfv36aebMmfrmm2909erVdEejPvHEE5o5c6YmTJigmTNnaubMmZKkihUrqn379nr55ZdVuXLlTMcVFham4OBglS1bVl999ZXVqMkPPvhACQkJmjdvXooE6qhRozRr1ix98sknWU5sfvrpp5Kk7t27p6j74Ycf9NNPP1mVtWjRIlvJbQAAANwbiU0AAAAbCQ0N1aRJk1KU353YbNCgQarPP3DgQKrnS/+MED148GC2YpSkpk2bysXFeil2FxcXNW3aVKdPn9ahQ4fUpk2bdNsYOXKk+vXrp40bN2rHjh3au3evdu3apfnz52vJkiX69NNP9cQTT2Q4pt9++02dOnVSgQIFtH79evn7+1vV79y5U1LSaNPNmzeneH6BAgV04sSJDF/v38xms06ePCkXF5dU/20WLlyoL774wqrsf//7X5auBQAAgIwjsQkAAJCD/P39dfz4cV26dCnFBjkTJ060bHizatUqPfvss2m2kZqYmBi5uLikOlrS399fJpNJMTEx2etAOtdPLo+Ojs5QO97e3uratau6du1qed7rr7+u999/X3379tUff/yRoTUvo6Oj1bFjR12/fl3r1q1TzZo1U5wTGRkpSZoyZUqGYsuMiIgIJSQkqGjRoqmunfn5559bvu7QoYO+/fZb1atXL8fjAAAAgDV2RQcAAMhBTZo0kSRt3bo1y22ktpO4JPn4+MhsNuvq1asp6iIiImQYhnx8fCxlyaMuExISUpyfXnLyypUr6Zb/exp8Zvj6+uq9995TuXLldO3aNR05cuSez0lISFDXrl117NgxzZ49W48++miq5yX3OyYmRoZhpHlkRfKU99u3b8tsNqd77t69e1W4cGFVqVIlS9cCAABAxpHYBAAAyEG9e/eWi4uLFi1apGvXruVo23Xr1pWkFOt0/rvs37uQFylSRFLSjt53S57Wnpqff/45RQLPbDZrx44dMplMql27diYj/4fJZJKXl1eGzx8yZIg2bdqkoUOHasiQIWme16hRI0n/TEnPSb6+vqpUqZLu3LmjHTt2pHne+fPndfXqVdWtWzfFVH4AAADkPN5xAQAA5KAHH3xQo0aNUkREhB599FGdOXMm1fOioqIy3Xbv3r0lSZMmTbKach4dHW1ZuzP5HEmqV6+eTCaTVq1apTt37ljKT58+rTlz5qR5nVOnTmnx4sVWZYsXL9apU6fUsWPHdDcOkpI28tmzZ0+qdWvXrtXx48fl5+enGjVqpNvOzJkz9cEHH6hDhw5699130z130KBBcnNz09ChQ3XhwoUU9VFRUekmc+9l8ODBlutcvnw5RX1iYqJlSjrT0AEAAGyDNTYBAABy2JQpUxQXF6dZs2apatWqat68uWrXrq1ChQopIiJChw8f1u7du1W4cGGrEZb30rx5cw0dOlTz5s1TjRo11KVLFxmGoS+++EK///67hg0bpubNm1vOL126tJ599lmtXLlS9erVU/v27RUREaE1a9aoffv2KTa8SdauXTsNGzZMGzZsUPXq1XX06FGtW7dOxYsXTzchmuzbb7/VgAEDVKlSJTVt2lSlS5fWrVu3dODAAf34449ycXHR+++/Lw8PjzTbCA8P16hRo+Ti4qKqVatq8uTJKc75947yNWrU0Pvvv6+BAweqSpUq6tChgypWrKgbN27o119/1bZt2/TCCy9o4cKF94w/NcOGDdOuXbu0atUqVapUSR06dFClSpUUFxen33//Xdu3b1d4eLiKFCmijh07ZukaAAAAyBwSmwAAADnMxcVFM2fO1PPPP6+FCxdq+/bt2rNnj2JjY1W0aFFVr15d77zzjnr16qWSJUtmqu25c+eqbt26WrBggRYtWiRJql69ut544w0FBwenOP+///2vihcvrk8//VTz589XlSpVtGjRIpUuXTrNxGbjxo01duxYjR07VnPnzpWrq6s6deqk6dOn64EHHrhnjG+//baaNm2qTZs2afv27ZYRjmXKlFHv3r01dOjQe45qvHPnjmU6/KxZs9I87987xPfr10916tTRrFmztH37dq1bt06+vr66//77NWLECKvRrJnl4uKiTz75RJ07d9aHH36o0NBQrVmzRoUKFVLZsmXVunVrPfroo+rUqVOmptoDAAAg60xGVldRBwAAgFMJDQ1Vq1atNGHCBMvu7fnRxIkTNWnSJJ07d07ly5fPs20CAADkd6yxCQAAAAAAAMDhkNgEAAAAAAAA4HBIbAIAAAAAAABwOGweBAAAAElJG/Gw/Po/GxL5+fnl6TYBAADyOzYPAgAAAAAAAOBwmIoOAAAA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8ssvVadOHXl6eqp06dIaOXKk7ty5Y3VOaqOsDx48KJPJpNDQUKv4QkNDVbduXXl5ealhw4bat29fipgWL16s8uXLq1ChQmrdurXOnDmT6vfjiSeeUOnSpS1T9/73v/9ZnZPa9+Szzz6TyWRKMWLkzz//VMGCBfX++++n+b06d+6cfvzxxxR/ZIiOjtb58+dVq1atFM+5evWqrly5otq1a6fZ7o4dO7RkyRL98ccfaZ6TEWnFJ6VMbB44cEDlypVTly5ddOvWrWxd998yM7Kpa9euWrFihRISErJ0rX8nApLVrVtXMTExlj79+uuvKleunAICAtJ8r7J//35du3YtxZETiYANGzbos88+0/z5860SAclcXV01YMCAe7aT3e8V7i2917off/xRJpNJZ8+etZz/+OOPy2Qy6ejRo5ayZ599Vh07drRqNzdeuzPyO+Ner90Zed3+d3w58dqdkdfttL4nzvzazWtZ1uTLxGZqPD09NW/ePMXFxem///2vpTy1qegZeYOVGpPJpOnTp2vixIny9/dX8eLFFRwcnOINxJEjR9SuXTvLC97TTz9tlW1PHiUbEhJimV727xecu8XGxmrs2LF64IEH5OHhofvuu08vvPCC1Tn3erELDQ2VyWTSpk2b9Nxzz8nb21vlypXT9OnTLecsW7ZMbm5uunLlilXbkZGRcnd31wcffGApu9eLevI0umXLlqlfv34qVqyYGjZsKCnpRef555+Xt7e3SpYsqddff10zZ85MMXo4KipKgwYNUqlSpeTh4aF69erp+++/T/P7hKy7189s37599fDDD1seX7t2TS4uLmrQoIGl7ObNmypQoIBWr16d5nWOHj2qDh06qFixYipUqJCqVKli9TOY0Q+F91piwmw268UXX1Tx4sUtowvu/oWfPD34yJEjatasmQoVKqQaNWrou+++S9HesmXLVKtWLXl6eqpMmTL6v//7P6uh+VFRUerXr5/KlCkjT09PlS1bVt27d89wfWpu3bqlL774IkOjutITGxurrVu3qmvXrlbl3bt31/Hjx63WSunUqZOioqK0YcOGbF0T6UttSnlcXJyGDRumokWLys/PT/3799fKlStTXRPnzp07GjJkiIoUKaJSpUrp1VdfvecbCu69vH3vZUfXrl1JbNrI5cuXNWjQIIWEhOizzz6Th4eH2rVrZ/X+JyPnhIWF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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Load both convergence and spikiness data for each k value separately\n", - "reduction_threshold = 0.99\n", - "max_p = 55 # Only visualize completed experiments\n", - "\n", - "# Create separate plots for each k value\n", - "for k in k_values:\n", - " conv_grid_p, conv_std_p = load_sweep_results_grid_convergence_p_h(\n", - " sweep_dir,\n", - " k,\n", - " p_values,\n", - " hidden_dims,\n", - " reduction_threshold=reduction_threshold,\n", - " max_p=max_p,\n", - " )\n", - " spike_grid_p, spike_std_p = load_sweep_results_grid_spikiness_p_h(\n", - " sweep_dir, k, p_values, hidden_dims, max_p=max_p\n", - " )\n", - "\n", - " p_values_filtered = [p for p in p_values if p <= max_p]\n", - "\n", - " # Mask spikiness grid: only show spikiness for converged runs\n", - " spike_grid_masked = spike_grid_p.copy()\n", - " for i in range(len(hidden_dims)):\n", - " for j in range(len(p_values_filtered)):\n", - " if np.isnan(conv_grid_p[i, j]):\n", - " # Did not converge - set to NaN (will be black)\n", - " spike_grid_masked[i, j] = np.nan\n", - "\n", - " # Plot with masked spikiness\n", - " plt.figure(figsize=(12, 8))\n", - "\n", - " # Use colormap with black for NaN\n", - " cmap_spike = plt.cm.plasma.copy()\n", - " cmap_spike.set_bad(color=\"black\")\n", - "\n", - " # Set extent to align cells with tick positions\n", - " plt.imshow(\n", - " spike_grid_masked[:, : len(p_values_filtered)],\n", - " aspect=\"auto\",\n", - " cmap=cmap_spike,\n", - " vmin=0,\n", - " vmax=0.5,\n", - " extent=[-0.5, len(p_values_filtered) - 0.5, len(hidden_dims) - 0.5, -0.5],\n", - " )\n", - " plt.xlabel(\"Group Size $|G|$\", fontsize=14)\n", - " plt.ylabel(\"Hidden Dimension $H$\", fontsize=14)\n", - " plt.xticks(\n", - " range(len(p_values_filtered)), p_values_filtered, rotation=45, ha=\"center\"\n", - " )\n", - " plt.yticks(range(len(hidden_dims)), hidden_dims)\n", - " plt.gca().invert_yaxis()\n", - "\n", - " # Theory boundaries\n", - " x_step = np.arange(len(p_values_filtered) + 1) - 0.5\n", - "\n", - " # Upper boundary: H = (k+1)*2^{k-1} * |G|\n", - " upper_boundary_coeff = (k + 1) * (2 ** (k - 1))\n", - " y_step_upper = [\n", - " min(\n", - " len(hidden_dims) - 1,\n", - " (\n", - " np.argmax(np.array(hidden_dims) >= upper_boundary_coeff * p)\n", - " if upper_boundary_coeff * p <= max(hidden_dims)\n", - " else len(hidden_dims) - 1\n", - " ),\n", - " )\n", - " for p in p_values_filtered\n", - " ]\n", - " y_step_upper.append(y_step_upper[-1])\n", - " # Convert to edge positions (subtract 0.5 to place at bottom edge of cells)\n", - " y_step_upper = [y - 0.5 for y in y_step_upper]\n", - "\n", - " # Lower boundary: H = 2^{k-1} * |G|\n", - " lower_boundary_coeff = 2 ** (k - 1)\n", - " y_step_lower = [\n", - " min(\n", - " len(hidden_dims) - 1,\n", - " (\n", - " np.argmax(np.array(hidden_dims) >= lower_boundary_coeff * p)\n", - " if lower_boundary_coeff * p <= max(hidden_dims)\n", - " else len(hidden_dims) - 1\n", - " ),\n", - " )\n", - " for p in p_values_filtered\n", - " ]\n", - " y_step_lower.append(y_step_lower[-1])\n", - " # Convert to edge positions (subtract 0.5 to place at bottom edge of cells)\n", - " y_step_lower = [y - 0.5 for y in y_step_lower]\n", - "\n", - " plt.step(\n", - " x_step,\n", - " y_step_upper,\n", - " where=\"post\",\n", - " color=\"red\",\n", - " linewidth=3,\n", - " linestyle=\"--\",\n", - " label=f\"Upper boundary ($H$ ≥ $(k+1) \\\\cdot 2^{{k-1}} |G|$)\",\n", - " )\n", - "\n", - " plt.step(\n", - " x_step,\n", - " y_step_lower,\n", - " where=\"post\",\n", - " color=\"blue\",\n", - " linewidth=3,\n", - " linestyle=\"--\",\n", - " label=f\"Lower boundary ($H$ ≥ $2^{{k-1}} |G|$)\",\n", - " )\n", - "\n", - " # Custom legend\n", - " from matplotlib.patches import Patch\n", - "\n", - " legend_elements = [\n", - " Patch(facecolor=\"black\", label=\"Did not converge\"),\n", - " Patch(facecolor=\"purple\", label=\"Low spikiness (~0)\"),\n", - " Patch(facecolor=\"yellow\", label=\"High spikiness (~0.5)\"),\n", - " plt.Line2D(\n", - " [0],\n", - " [0],\n", - " color=\"red\",\n", - " linewidth=3,\n", - " linestyle=\"--\",\n", - " label=f\"Upper boundary ($H$ ≥ $(k+1) \\\\cdot 2^{{k-1}} |G|$)\",\n", - " ),\n", - " plt.Line2D(\n", - " [0],\n", - " [0],\n", - " color=\"white\",\n", - " linewidth=3,\n", - " linestyle=\"--\",\n", - " label=f\"Lower boundary ($H$ ≥ $2^{{k-1}} |G|$)\",\n", - " ),\n", - " ]\n", - " plt.legend(\n", - " handles=legend_elements,\n", - " loc=\"upper center\",\n", - " bbox_to_anchor=(0.5, -0.12),\n", - " fontsize=11,\n", - " frameon=True,\n", - " ncol=5,\n", - " )\n", - "\n", - " plt.colorbar(label=\"Fraction of Upward Steps (Spikiness)\")\n", - " plt.title(\n", - " f\"Training Instability: Group Size $|G|$ vs Hidden Dimension $H$\\n($k={k}$, black = did not converge, p ≤ {max_p})\",\n", - " fontsize=14,\n", - " fontweight=\"bold\",\n", - " )\n", - " plt.tight_layout()\n", - " plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "3f30eb24", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "gagf", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.12" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/notebooks/2D.ipynb b/notebooks/2D.ipynb index 49d0130..b8bd4b0 100644 --- a/notebooks/2D.ipynb +++ b/notebooks/2D.ipynb @@ -2,7 +2,6 @@ "cells": [ { "cell_type": "markdown", - "id": "14ad894a-55e4-4f86-9e22-b5260504966b", "metadata": {}, "source": [ "# 2D Sequential modular addition with a Quadratic RNN\n", @@ -11,32 +10,20 @@ "- Should have an option to compute loss over all intermediate compositions (this will allow us to train for longer)\n", "- Should create a dataloader that samples online\n", "- Better activation plots\n" - ] + ], + "id": "14ad894a-55e4-4f86-9e22-b5260504966b" }, { "cell_type": "markdown", - "id": "6d1d8a65", "metadata": {}, "source": [ "## Set up" - ] + ], + "id": "6d1d8a65" }, { "cell_type": "code", - "execution_count": 1, - "id": "fd71a9a8", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Working directory: /home/facosta/group-agf/gagf\n", - "Directory added to path: /home/facosta/group-agf\n", - "Directory added to path: /home/facosta/group-agf/gagf\n" - ] - } - ], "source": [ "# autoreload\n", "%load_ext autoreload\n", @@ -60,22 +47,22 @@ "print(\"Directory added to path: \", sys_dir)\n", "sys.path.append(os.getcwd())\n", "print(\"Directory added to path: \", os.getcwd())" - ] + ], + "execution_count": null, + "outputs": [], + "id": "fd71a9a8" }, { "cell_type": "markdown", - "id": "62884979", "metadata": {}, "source": [ "## Imports" - ] + ], + "id": "62884979" }, { "cell_type": "code", - "execution_count": 2, - "id": "80f249f1-6985-4c73-86cd-04e1adac3e8d", "metadata": {}, - "outputs": [], "source": [ "# Core\n", "import numpy as np\n", @@ -103,113 +90,102 @@ "# Misc\n", "from tqdm import tqdm\n", "from typing import Optional" - ] + ], + "execution_count": null, + "outputs": [], + "id": "80f249f1-6985-4c73-86cd-04e1adac3e8d" }, { "cell_type": "markdown", - "id": "7a0ecbbd-ceaf-4bef-af4a-13a22fa70063", "metadata": {}, "source": [ "## RNN Architecture" - ] + ], + "id": "7a0ecbbd-ceaf-4bef-af4a-13a22fa70063" }, { "cell_type": "code", - "execution_count": 3, - "id": "5f63c4dd", "metadata": {}, - "outputs": [], "source": [ "from gagf.rnns.model import QuadraticRNN" - ] + ], + "execution_count": null, + "outputs": [], + "id": "5f63c4dd" }, { "cell_type": "markdown", - "id": "f7e7336b-5c6e-48af-a357-2b2c877f6168", "metadata": {}, "source": [ "## Optimization" - ] + ], + "id": "f7e7336b-5c6e-48af-a357-2b2c877f6168" }, { "cell_type": "code", - "execution_count": 4, - "id": "1035f81c-e877-4655-8640-4e4c3d323af8", "metadata": {}, - "outputs": [], "source": [ - "from gagf.rnns.train import train, test_accuracy" - ] + "from gagf.rnns.train import train" + ], + "execution_count": null, + "outputs": [], + "id": "1035f81c-e877-4655-8640-4e4c3d323af8" }, { "cell_type": "markdown", - "id": "0e86c4f6-83a6-4465-abf0-7d104432cc9c", "metadata": {}, "source": [ "## Plotting functions" - ] + ], + "id": "0e86c4f6-83a6-4465-abf0-7d104432cc9c" }, { "cell_type": "code", - "execution_count": 5, - "id": "014e2d10-9550-4fd4-adb7-168a27fda1b3", "metadata": {}, - "outputs": [], "source": [ "from gagf.rnns.utils import (\n", " style_axes,\n", " get_power_2d_adele,\n", " topk_template_freqs,\n", ")" - ] + ], + "execution_count": null, + "outputs": [], + "id": "014e2d10-9550-4fd4-adb7-168a27fda1b3" }, { "cell_type": "markdown", - "id": "54bef8ae", "metadata": {}, "source": [ "## 2D Dataset" - ] + ], + "id": "54bef8ae" }, { "cell_type": "code", - "execution_count": 6, - "id": "2aa4c3fd", "metadata": {}, - "outputs": [], "source": [ "from gagf.rnns.datamodule import (\n", " build_modular_addition_sequence_dataset_2d,\n", " mnist_template_2d,\n", " generate_template_unique_freqs,\n", ")" - ] + ], + "execution_count": null, + "outputs": [], + "id": "2aa4c3fd" }, { "cell_type": "markdown", - "id": "f1c0453e", "metadata": {}, "source": [ "## Experiment Setup" - ] + ], + "id": "f1c0453e" }, { "cell_type": "code", - "execution_count": 7, - "id": "d424edf7-ad00-4836-a57c-6de2b2e06a63", "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAABHYAAAHpCAYAAADnObuxAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAhcRJREFUeJzt3Xd8FHX+x/H3pieQhIQkhEgITQHpoERAJQhHURGUsytFDpWjKOj5AwtF0WA9FD1QTymKiJ4KJ9xhoao0AVFBQEGaQKhCIEDazu8PLitLCsl3N5ls8nr6mIfszHxmPjuZ3Z397Pf7HYdlWZYAAAAAAADgc/zsTgAAAAAAAABmKOwAAAAAAAD4KAo7AAAAAAAAPorCDgAAAAAAgI+isAMAAAAAAOCjKOwAAAAAAAD4KAo7AAAAAAAAPorCDgAAAAAAgI+isAMAAAAAAOCjKOwAKHMpKSlyOBx2pwEAQLm3dOlSORwOjRs3zu5UAJ9mWZbatGmjrl27us3v37+/HA6Hdu7caU9iBo4eParIyEg98sgjdqeCcoLCDlCEvXv3atKkSeratatq166toKAgxcfHq0+fPlq9enWBMXlFi7wpMDBQ1atXV8uWLTVw4EAtXLhQTqezWPsfN26c27YuNFWmi768Y7N06VK7UwEAlBMl+cysbD8wOBwOpaSklMl+zp0CAgJUs2ZN9e7dW8uXLy/1/ZcXCxYs0HXXXae4uDgFBgYqJiZGTZs21T333KN58+bZnV6hpk+fLofDoenTp9uditfNnDlT69ev15NPPml3Kh6Ljo7W8OHD9corr2jXrl12p4NyIMDuBIDybPLkyXr22WdVv359de3aVbGxsfrll180d+5czZ07V++9955uvfXWAmMfeughVa1aVU6nU8eOHdPmzZs1a9Ysvf3222rfvr1mz56t2rVrF7n/gi7ANmzYoHnz5qljx475lpfFBRsAAOXV2LFj882bNGmSjh8/XuAylI7q1atr6NChkqQzZ864rl3+/e9/a86cObr55pttzrB0jR8/XuPGjVNYWJiuv/561alTRzk5Odq0aZPmzJmjn3/+Wb169bI7zUrF6XRq3Lhxuuqqq3TFFVfYnY5XPPjgg3r22Wc1YcIEvfnmm3anA5tR2AGK0LZtWy1dulQdO3Z0m//VV1+pc+fOGjx4sHr37q3g4OB8sQ8//LDi4+Pd5h0+fFjDhw/X7Nmz1a1bN61du1ZVqlQpdP8pKSn5ijXTp0/XvHnzlJKSUqla6AAAcCEFfS5Onz5dx48f5zOzDMXExOQ73v/85z81aNAgPfLIIxW6sLNz5049+eSTSkxM1KpVq5SQkOC2/PTp04W2+kbp+e9//6udO3fqscceszsVr6levbp69Oih2bNn68UXX1RERITdKcFGdMUCinDTTTflK+pI0lVXXaVOnTrp999/148//ljs7cXExOjdd9/VNddcoy1btui1117zZrr64YcfdNttt6lmzZoKCgpSUlKShg0bpiNHjritt3PnTjkcDvXv31+bN2/W9ddfr2rVqikqKkq33367Dh8+LElauXKlOnfurIiICEVFRekvf/mLMjIy3LZ1bt//r7/+WikpKQoPD1e1atXUp08fbdu2rVi5Hz9+XM8++6w6duyohIQEBQUFKSEhQX379tX27dvd1k1JSdH48eMlSZ06dXI1965Tp47begcPHtSIESPUoEEDBQcHKyYmRn369NHGjRtLclgBABVQVlaWXnrpJbVu3VpVqlRReHi4rrrqKv373//Ot27eGBy//vqrXnjhBV1yySUKDQ3VpZdeqvfff9+1vccee0x16tRRSEiImjdvrv/+97/5tpXXZfvMmTMaNWqUateurZCQEDVu3FiTJ0+WZVnFyn/JkiW655571LBhQ1WtWlVVq1bVZZddpjfeeMNtvbzPaUlatmyZWzep87vbzJs3T507d1ZUVJRCQkLUtGlTvfDCC8rNzS1WTkW55557VKVKFe3cuVOHDh1yzZ82bZqSk5NdzyE5OTlfXr///rv8/f11/fXXu83fsGGD67mcf72RkpKi0NBQZWZmus1fvny5evbsqZiYGAUHB+viiy/W448/rlOnTrmtd+71zYoVK9S1a1dVq1btgl341qxZI6fTqZtuuilfUUeSQkND8/1od2738rfeekvNmjVTSEiILrroIo0YMUInTpwocF/Fve7L8/333+vOO+9UrVq1FBwcrJo1a6p79+769NNPJZ09zwcMGCBJGjBgQIHdFs89fx9//HHVr19fgYGBrkJeUeMoFjSWzbldvz799FMlJycrLCxMF110kZ544gnX8AUzZsxQixYtFBoaqtq1a+v5558vcB+FmTZtmhwOh/r06VPiuAudn3lycnKUmpqq+vXrKyQkRA0aNFBqaqp+/fVX13W3t91yyy3KyMjQhx9+6PVtw7fQYgcwFBgYKEkKCCjZy8jPz0+PPfaYFi9erDlz5nht0LN///vfuuWWW+Tn56devXopMTFRP/30k1599VV99tlnWr16taKiotxiduzYofbt2+uyyy7TX/7yF61du1bvv/++9uzZo4kTJ6pr167605/+pHvvvdd1seF0OvX222/n2/+qVauUmpqq7t27a9iwYdq0aZM++eQTffXVV1q1apXq1atXZP6bN2/WmDFj1KlTJ914442qUqWKtmzZovfee08LFizQ+vXrlZSUJEmuD8Zly5apX79+roJOtWrVXNvbvn27UlJS9Ntvv6lr167q3bu3Dh48qI8++kifffaZFi1apOTkZPMDDgDwWZmZmerevbuWLl3qGgMvOztbCxYsUK9evTR58mRXV6JzjRw5UqtXr1bPnj3l7++v999/X3fccYeioqI0efJk/fTTT7ruuut05swZvffee+rVq5c2b96s+vXr59vWLbfcou+++871RfOjjz7S8OHDtXPnTr344osXfA7PPvustm3bpiuuuEI33nijjh07poULF+q+++7T1q1bXduoU6eOxo4dq/HjxyspKcnty2XLli1d/x49erQmTpyoiy66SDfddJMiIyP11Vdf6W9/+5tWr17t1S+OeV/8hw8frsmTJ+uiiy7SwIEDXcdhwIAB+u677/Tyyy9LkqKiotSiRQt99dVXys3Nlb+/v6Szxa08S5YsUYMGDSSd7f61atUqtW/f3q1V9ZQpUzRkyBBVq1ZNPXv2VFxcnNauXaunn35aS5Ys0ZIlSxQUFOSW64oVK/TMM8+oU6dOuvfee7V79+4in1v16tUlSb/88kuJj8tLL72kRYsW6dZbb9V1112nL7/8UpMmTdKqVau0fPly17WnVPLrvo8++kh33HGHLMtSz5491bBhQx08eFCrV6/WW2+9pZ49e6p37946duyY5s2bp169ermdH+fr06ePvv/+e3Xv3l3VqlVT3bp1S/x8z/XJJ5/o888/V+/evdWhQwctWLBAEyZMkGVZioyM1IQJE9SrVy+lpKToo48+0iOPPKIaNWqob9++F9y2ZVlasmSJGjZsmO9auCjFPT/z3HPPPXrnnXdUr149DRkyRJmZmfr73/+ulStXluxglEC7du0kSYsWLXLliErKAlBiu3btsoKDg62aNWtaOTk5bss6duxoSbL2799faPyZM2esgIAAy8/Pz8rOzi7RvqdNm2ZJssaOHeuad/jwYSsiIsK66KKLrJ07d7qtP3v2bEuSNXToUNe8HTt2WJIsSdakSZNc851Op3Xttddakqxq1apZc+fOdS3LysqymjdvbgUEBFhpaWmu+UuWLHFta+rUqW77njp1qiXJuv76693m5x2jcx07dsw6cuRIvue7ePFiy8/Pz/rLX/7iNn/s2LGWJGvJkiUFHqf27dtb/v7+1sKFC93mb9261QoPD7eaNWtWYBwAoGJJSkrK95nz6KOPWpKsJ554wnI6na756enp1mWXXWYFBQVZe/fudc3v16+fJcm65JJLrIMHD7rmr1692vWZeeWVV1onT550LZszZ44lyRo2bJjbvvM+Axs2bGgdO3bMNf/YsWNWw4YNLYfDYX377beu+Xmfs+d+7luWZf3666/5nmt2drb1pz/9yfL397d27drltkyS1bFjxwKP0eeff25Jsrp16+b2HJxOp3X//fdbkqx//etfBcaeL++5ne/tt9+2JFl169a1LMuyli1bZkmyGjdu7HYcjh49al1yySWWJGv58uWu+SNHjrQkWatXr3bN69mzp3XJJZdYiYmJ1u233+6av2jRIkuS9eSTT7rmbdq0yQoICLBatGhhHT582C231NRUS5L1wgsvuOade33z9ttvF+u5W5ZlnThxwqpdu7Ylybruuuusd955x9q6davbeXa+vGuaoKAg6/vvv3fNdzqd1h133JEvt5Je96WlpVlVqlSxqlSpYq1fvz7f/vfs2eP6d9515rRp0wrMNe/8bdmyZYHXbQVd4+XJex3t2LEj3/4CAwOtNWvWuOanp6dbcXFxVlhYmBUfH29t377dtWz37t1WUFBQsa/lNm3aZEmy7rzzzmLnVdLz88svv3Qdl4yMDNf8ffv2WTVq1LAkWf369StWviUVFRVl1a5du1S2Dd9BVyyghLKzs3X33XcrMzNTzz77rOtXo5IIDg5W9erV5XQ6dfToUY9zmjlzptLT05Wamupq1ZLntttuU+vWrV1Nxc9Vv359DR8+3PXY4XDotttukyS1atXKbWC/wMBA/fnPf1ZOTo5++umnfNu65JJLNGjQILd5gwYN0sUXX6wFCxa4NbsuSGRkpKKjo/PN79Spk5o0aaIvv/yyyPhzfffdd1qxYoX69eunbt26FZjnjz/+SJcsAKiEnE6npkyZovr162v8+PFu3UbCw8M1ZswYZWVl6eOPP84X+9hjjyk2Ntb1uG3btqpXr56OHTump59+2m3cvD59+igwMFDff/99gXk88cQTioyMdD2OjIzU448/LsuyNGPGjAs+j4JaSAQEBOj+++9Xbm6uW2uWC3n11VclSW+88Ybbc3A4HJo4caIcDodmz55d7O0dPnxY48aN07hx4zRq1Cj16NFD99xzj/z8/FxdaPKe47hx49yOQ1RUlGug63O7vHTq1EmStHjxYklSbm6uli9frk6dOqlTp075Wu9I7jeVeP3115WTk6PJkye7WtXkeeSRRxQbG1vgc2zdurWre1JxVK1aVXPnzlWTJk20YMEC3X333a6WIj179tQnn3xSaGzfvn3VvHlz12OHw6FnnnlG/v7+bseipNd9M2bMUEZGhh566CG1atUq335r1apV7OeXZ/z48QVet5m66667dPnll7seh4eH6/rrr9epU6c0ePBgt5bfiYmJuvLKK/XTTz8pJyfngtv+7bffJEk1atQodj4lPT/fffddSdKYMWMUFhbmml+zZk098MAD+ba/du1aXX311apevXqhd3l99tln1aBBA1188cXq2LGjtm7dWmCuNWrU0L59+4rdjRMVE12xgBJwOp3q37+/li9frkGDBunuu++2OyVJZ7tBSdLq1avzjUcjnW2SfPjwYR0+fFgxMTGu+c2bN8/XD7pmzZqSVGDz27xl+/bty7esQ4cO8vNzrxX7+fmpQ4cO+uWXX/T999+rS5cuRT6PpUuXatKkSVq9erUOHz7s9mF9ftPoouQdjwMHDhQ4WOaWLVtc/2/atGmxtwsA8H1bt27V77//roSEBNd4befK+yEi77PiXIV9Nv7666/5lvn7+ysuLq7Az0zp7Hh9hc377rvvLvQ0dOLECb3wwguaO3eutm/fnm8MvML2W5BVq1apSpUqBXa1ls6OC1PQ8SjMkSNHXMfW399fMTEx6tWrlx566KF8z7GgO3rmFXE2bNjgmnf11VfL399fS5Ys0ahRo/Tdd9/p+PHjuuaaa3Tq1CnNnDlTmzdvVuPGjbVkyRKFhoa6dbnOuzbI6459vsDAwAKf47nFhuJq1aqVfvzxR61cuVJLlizRunXr9PXXX2v+/PmaP3++7rzz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zBl16NBBs2fP9lpf2Lw7Odx8881q0aKFunfvrkaNGikzM1M7d+7UsmXL1L59ey1cuNAr+ytIt27dNHz4cP3nP/9RkyZNtGnTJn366aeKiYkp1gfasGHDNGzYMLVq1cp1960vvvhClmWpRYsW+X7l6dSpkxwOhx599FFt2rRJkZGRqlatmqvr1ezZs9WpUyfddtttmjRpklq3bq3Q0FDt3r1bK1eu1KFDh0rU1xoAUHGMHz9e69ev1yuvvKIFCxbo6quvVlxcnPbu3asff/xR33//vVauXJmvC4Y3XXLJJWratKn69OkjSfroo4/022+/aeTIkbrsssuKjO3Zs6fq1Kmj5557Ths3blTTpk21detWzZ8/XzfeeGOBXcyuueYaffDBB+rdu7datWolf39/3XDDDWrevLm6d++uJ554Qk899ZQaNGig7t27KykpSUeOHNG2bdv01VdfacKECWrcuLHXnv/VV1+tYcOGafLkya7jYFmW6zgMHz5cV199tVtM1apVdfnll2vlypXy8/Nz+zKb15rn0KFD6tatmwIDA91imzZtqn/84x8aPHiwGjZsqGuvvVb169fXiRMn9Ouvv2rZsmXq37+/R2MoSmcHre7Xr5+GDh2qq6++Wo0aNVJAQIB27dql+fPn6+TJk7ruuut0880354vt1q2b2rVrp9tuu02xsbFatGiR1q5dqyuuuELDhg1zrVfS6764uDjNnDlTt912m9q2basbbrhBDRs21OHDh7V69WrVqVNHc+fOlSS1a9dOoaGhmjRpkn7//XfXD3OPP/54sZ7/gAED9Nxzz2ncuHHasGGD6tevr7Vr12rjxo3q2LGjbT+s3XjjjRo7dqxWrVrlGveoKCU9P7t06aI77rhD7733npo1a6bevXsrMzNTH3zwgZKTk/Xpp5+6DeNgWZYyMzNdY2FlZWXpzJkzCg4OlsPh0IABAzRixAgNHDhQcXFxeuONN5SQkJCvYPnFF19IOvt9BJWcXfdZB3xBv379LElFTtOmTXOL6dixo9vygIAAKyoqymrRooV1zz33WAsXLrRyc3ONc5o2bZolyRo7dmy+ZVu2bLEGDhxoJSUlWUFBQVZUVJTVrFkza/jw4daaNWtc6+3YscOSZPXr1y/fNpYsWVLo9vP2fe5zPnf9r776yurYsaNVpUoVKyIiwrrxxhutX375Jd928o7R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MYqLiooyipOk2NhYo7jo6GijuGrVqhnFhYeHG8VJ5udcSV8Xefz9/Y3iPBEQYPYWZhrnya/spu8fOTk5RnF+fn5GcZ7s07TA4HQ6jeJM85RKnmtubq7xvi6UB4Ud3/Poo4+qf//+xX5dt2nTRm3atNGTTz6padOmlXJ2AABUDoyx84dKW9gBAAAwcd999xnFBQUFGccCAAAUxvwnXQAA4LG8VjumE+w3Z84cnTlzxu40AACoVPJa7Hhj8nUUdgAAsImnRR2KO+XD7bffrvj4eA0cOFBLliyxOx0AACoFp+Xw2uTrKOwAAAB44Ouvv9add96pTz/9VF26dFHt2rU1atQobdy40e7UAABAJVCuCjvLly9Xz549lZCQIIfDoblz57ottyxLY8aMUc2aNRUaGqouXbrol19+sSdZAAA8RIudiqF9+/Z67bXXtG/fPs2bN08dOnTQq6++qhYtWqhly5Z68cUXtX//frvTBACgQsm7K5Y3Jl9Xrgo7GRkZatGihV577bUClz/33HN65ZVXNHXqVK1evVpVqlRRt27d6NcOAPBJFHYqloCAAF1//fWaPXu20tLSNH36dFWvXl2PPPKIateurT/96U969913je8iCQAA/nC2KOONMXbsfiaeK1eFnR49emjChAm68cYb8y2zLEuTJk3S448/rl69eql58+aaOXOm9u3bl69lz7kyMzOVnp7uNgEAAJSmjRs3as2aNfrxxx9lWZYaNWqkI0eOqG/fvqpfv76+/vpru1MEAAAVRLkq7BRlx44dSktLU5cuXVzzIiMjlZycrJUrVxYal5qaqsjISNeUmJhYFukCAHBBtNipWH7++WeNHTtWF198sTp06KAPPvhAd9xxh9auXasff/xR69ev15o1axQdHa3777/f7nQBAPBp3BXrDz5T2ElLS5Mk1ahRw21+jRo1XMsKMnr0aB0/ftw17dmzp1TzBAAAlcvLL7+stm3bqnHjxnr++efVunVr/fvf/9a+ffs0adIktW7d2rXuZZddppEjR2rLli02ZgwAACqSALsTKG3BwcEKDg62Ow0AAPLxRosbWuzYb8SIEerQoYOmTp2qW265RZGRkUWuf9lll+mJJ54oo+wAAKiYrP9N3tiOr/OZwk58fLwk6cCBA6pZs6Zr/oEDB9SyZUubsgIAwByFnYph+/btqlu3brHXb9KkiZo0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+duJaazpl8uyfj1K5q9J03PHk3OurN8/TM85T94DSvr+X5rKc4ubLVu2yOl06vXXX1eDBg20ceNGDRo0SBkZGXrhhRfsTq/CGzVqlJ599tki19m8ebMaNWpUajkEBwcrODi41LYPAIAxL98V6/xWqWPHjtW4ceM8334RTH94OV+lLewAAGA3b46xc/7YJ974Qt69e3d1797d9bhevXraunWrpkyZQmGnDDz00EPq379/kevUq1evWNuKj4/XmjVr3OYdOHDAtQwAAJ/jlGTe9sJ9O5L27NmjiIgI1+zCrqPKww8v56OwAwBABVBWvzIdP35c0dHRXt8u8ouNjVVsbKxXttWuXTs9/fTTOnjwoOLi4iRJX3zxhSIiInTppZd6ZR8AAPiyiIgIt8JOYcrjDy8UdgAAsIk3W+wU91cmT2zbtk2TJ0+mtU45tHv3bh09elS7d+9Wbm6uNmzYIElq0KCBqlatqq5du+rSSy/V3Xffreeee05paWl6/PHHNWTIELpaAQB8kl13xSqPP7wweDIAADbx5l2x8n5lypuK+rI+atQoORyOIqctW7a4xezdu1fdu3fXzTffrEGDBpXqcUHJjRkzRq1atdLYsWN18uRJtWrVSq1atdLatWslnR13a/78+fL391e7du101113qW/fvnryySdtzhwAAENeuSOWl8bpKcTu3bu1YcMGtx9eNmzYoJMnT0qS2w8v33//vT777DOjH15osQMAQCVT0ibE+/btU6dOndS+fXu98cYbpZwdTEyfPl3Tp08vcp2kpCT95z//KZuEAACAxowZoxkzZrget2rVSpK0ZMkSpaSkuH54GTx4sNq1a6cqVaqoX79+Jf7hhcIOAAA28WZXrJIoSRPivXv3qlOnTmrTpo2mTZtmy10XAQAA8vHyXbFKQ1n98EJhBwAAFGjv3r1KSUlRUlKSXnjhBR06dMi1jDspAQAAlA8UdgAAsIldLXaK64svvtC2bdu0bds21apVq8z2CwAAcEE+0GKnrNCeGgAAm3hz8OTS0L9//zLfJwAAQLE4vTj5OAo7AAAAAAAAPoquWAAA2KS8d8UCAAAorxyWJYcXroO8sQ27UdgBAMAmFHYAAAAMMcaOC12xAAAAAAAAfFSlbbETFhamoKCgEsUEBJgfruzsbKO43NxcoziHw2EU5wmn02zUKdNjYxonSVlZWUZx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Crbw5Lht2LBBfn5+iouLK+Osywe+Y5jjO0fR+O6B89Fi539Gjhypfv366bLLLlPbtm01adIkZWRkaMCAAXanZquHH35YPXv2VFJSkvbt26exY8fK399ft99+u92plbmTJ0+6/WqwY8cObdiwQdHR0apdu7YefPBBTZgwQRdffLHq1q2rJ554QgkJCerdu7d9SZehoo5PdHS0xo8frz59+ig+Pl7bt2/XI488ogYNGqhbt242Zl36hgwZovfee0/z5s1TeHi4q99zZGSkQkNDFRkZqYEDB2rkyJGKjo5WRESEhg0bpnbt2umKK66wOfvSd6Hjs337dr333nu69tprVb16df3www8aMWKErr76ajVv3tzm7AFUVLt379bRo0e1e/du5ebmugrKDRo0UNWqVdW1a1ddeumluvvuu/Xcc88pLS1Njz/+uIYMGVJpuxytXLlSq1evVqdOnRQeHq6VK1dqxIgRuuuuuxQVFWV3erbhO0bx8J0jP757oETsvi1XeTJ58mSrdu3aVlBQkNW2bVtr1apVdqdku1tvvdWqWbOmFRQUZF100UXWrbfeam3bts3utGyxZMkSS1K+qV+/fpZlnb3t4BNPPGHVqFHDCg4Otjp37mxt3brV3qTLUFHH59SpU1bXrl2t2NhYKzAw0EpKSrIGDRrkdpvYiqqgYyLJmjZtmmud06dPW3/961+tqKgoKywszLrxxhut/fv325d0GbrQ8dm9e7d19dVXW9HR0VZwcLDVoEED629/+5t1/PhxexMHUKH169evwPemJUuWuNbZuXOn1aNHDys0NNSKiYmxHnroISs7O9u+pG22bt06Kzk52YqMjLRCQkKsxo0bW88884x15swZu1OzHd8xLozvHPnx3QMl4bAsyyr98hEAAAAAAAC8jTF2AAAAAAAAfBSFHQAAAAAAAB9FYQcAAAAAAMBHUdgBAAAAAADwURR2AAAAAAAAfBSFHQAAAAAAAB9FYQcAAAAAAMBHUdgBAAAAAADwURR2AAAAAHjFuHHj5HA4dPjwYbtT0Zo1axQUFKRdu3a5zX/++edVr149+fv7q2XLlvYkVwFMnTpVtWvXVmZmpt2pAJUehR0AAAAAFc5jjz2m22+/XUlJSa55n3/+uR555BF16NBB06ZN0zPPPGNjhr6tf//+ysrK0uuvv253KkClF2B3AgAAAADgTRs2bNCXX36pFStWuM1fvHix/Pz89NZbbykoKMim7CqGkJAQ9evXTy+99JKGDRsmh8Nhd0pApUWLHQAAAAAVyrRp01S7dm1dccUVbvMPHjyo0NDQCxZ1nE6nzpw5U5opVgi33HKLdu3apSVLltidClCpUdgBKrElS5bI4XDok08+ybfsvffek8Ph0MqVK23IDAAAVBS7du1SgwYN1LRpUx04cOCC6//6669yOBz6+9//nm/ZihUr5HA4NHv27CK3MXfuXF1zzTVurUgcDoemTZumjIwMORwOORwOTZ8+3bVs6NChmjVrlpo0aaLg4GAtXLhQkrR3717dc889qlGjhoKDg9WkSRO9/fbb+fb522+/qXfv3qpSpYri4uI0YsQIffbZZ3I4HFq6dKlrvTp16qh///754lNSUpSSkuI2LzMzU2PHjlWDBg0UHBysxMREPfLII/nGtcnLf+7cuWratKkrz7zncK69e/dq4MCBSkhIUHBwsOrWravBgwcrKyurxMe+TZs2io6O1rx58/KtD6Ds0BULqMRSUlKUmJioWbNm6cYbb3RbNmvWLNWvX1/t2rWzKTsAAODrtm/frmuuuUbR0dH64osvFBMTc8GYevXqqUOHDpo1a5ZGjBjhtmzWrFkKDw9Xr169Co3fu3evdu/erdatW7vNf+edd/TGG29ozZo1+uc//ylJat++vWv54sWL9cEHH2jo0KGKiYlRnTp1dODAAV1xxRWuwklsbKz++9//auDAgUpPT9eDDz4oSTp9+rQ6d+6s3bt3a/jw4UpISNA777yjxYsXF/dQ5eN0OnXDDTfo66+/1r333qvGjRvrxx9/1N///nf9/PPPmjt3rtv6X3/9tT7++GP99a9/VXh4uF555RX16dNHu3fvVvXq1SVJ+/btU9u2bXXs2DHde++9atSokfbu3at//etfOnXqlNGxb926tb755hvj5wnACywAldro0aOt4OBg69ixY655Bw8etAICAqyxY8falxgAAPA5Y8eOtSRZhw4dsjZv3mwlJCRYl19+uXX06NESbef111+3JFmbN292zcvKyrJiYmKsfv36FRn75ZdfWpKsTz/9NN+yfv36WVWqVMk3X5Ll5+dnbdq0yW3+wIEDrZo1a1qHDx92m3/bbbdZkZGR1qlTpyzLsqxJkyZZkqwPPvjAtU5GRobVoEEDS5K1ZMkS1/ykpKQCn0PHjh2tjh07uh6/8847lp+fn/XVV1+5rTd16lRLkvXNN9+45R8UFGRt27bNNe/777+3JFmTJ092zevbt6/l5+dnffvtt/n273Q6Lcsq+bG/9957rdDQ0HzzAZQdumIBlVzfvn2VmZmpf/3rX655c+bMUU5Oju666y4bMwMAAL5q48aN6tixo+rUqaMvv/xSUVFRJYq/5ZZbFBISolmzZrnmffbZZzp8+PAFr0+OHDkiSSXeZ8eOHXXppZe6HluWpY8++kg9e/aUZVk6fPiwa+rWrZuOHz+u9evXS5L+85//qGbNmvrzn//sig8LC9O9995bohzO9eGHH6px48Zq1KiR276vueYaSco3rk2XLl1Uv3591+PmzZsrIiJCv/76q6SzLYDmzp2rnj176rLLLsu3v7xuayU99lFRUTp9+rROnTpl/FwBeIbCDlDJNWrUSJdffrnbh/esWbN0xRVXqEGDBjZmBgAAfFXPnj0VHh6uzz77TBERESWOr1atmnr27Kn33nvPNW/WrFm66KKLXIWNC7Esq0T7rFu3rtvjQ4cO6dixY3rjjTcUGxvrNg0YMEDS2cGYpT/GETr/zlANGzYsUQ7n+uWXX7Rp06Z8+77kkkvc9p2ndu3a+bYRFRWl33//3fV80tPT1bRp0yL3W9Jjn3ecuSsWYB/G2AGgvn376oEHHtBvv/2mzMxMrVq1Sq+++qrdaQEAAB/Vp08fzZgxQ7NmzdJ9991ntI2+ffvqww8/1IoVK9SsWTP9+9//1l//+lf5+RX923TeeDJ5BY3iCg0NdXvsdDolSXfddZf69etXYEzz5s1LtA+p8AJIbm6u/P393fbfrFkzvfTSSwWun5iY6Pb43NhzlbTAJZXs2P/+++8KCwvLd/wAlB0KOwB02223aeTIkZo9e7ZOnz6twMBA3XrrrXanBQAAfNTzzz+vgIAA10C+d9xxR4m30b17d8XGxmrWrFlKTk7WqVOndPfdd18wrlGjRpKkHTt2lHif54qNjVV4eLhyc3PVpUuXItdNSkrSxo0bZVmWW+Fm69at+daNiorSsWPH8s3ftWuX6tWr53pcv359ff/99+rcubNXWsPExsYqIiJCGzduvOC6JTn2O3bsUOPGjT3OD4A5umIBUExMjHr06KF3331Xs2bNUvfu3Yt11woAAICCOBwOvfHGG/rzn/+sfv366d///neJtxEQEKDbb79dH3zwgaZPn65mzZoVq4XMRRddpMTERK1du9YkdRd/f3/16dNHH330UYHFkEOHDrn+fe2112rfvn1uYxaeOnVKb7zxRr64+vXra9WqVcrKynLNmz9/vvbs2eO23i233KK9e/fqzTffzLeN06dPKyMjo0TPx8/PT71799ann35a4LE5t2VPSY79+vXr3e4uBqDsUdgBIOlsk9sffvhBP//8M4MmAwAAj/n5+endd99V165ddcsttxjd+rtv3746fPiwlixZUqLrk169emnx4sVG3ZDONXHiRNWsWVPJycl68MEH9cYbb2jixIm65ZZb3MbPGTRokBo0aKC+fftq1KhRevnll3X11VcrLCws3zb/8pe/6MCBA+revbumTp2qv/3tbxo0aJDbwMeSdPfdd+vaa6/V/fffr9tvv12vvvqqXn75ZQ0ePFi1atXS5s2bS/x8nnnmGcXFxaljx44aMWKE3njjDY0fP15NmzbV8ePH3dYtzrFft26djh49WuTt5wGUPgo7ACSdHeQwKipKkZGRuuGGG+xOBwAAVACBgYH617/+pSuuuEK9evXS6tWrSxTfpk0bNWnSRH5+frrzzjuLHXfPPfdo7969+uabb0qaspsaNWpozZo1GjBggD7++GMNHTpUL7/8so4ePapnn33WtV5YWJgWLVqkrl27avLkyZowYYKuvPJKPffcc/m22a1bN7344ov6+eef9eCDD2rlypWaP3++atWq5baen5+f5s6dq4kTJ+rHH3/Uww8/rPHjx+vbb7/VAw884BpEuSQuuugirV69Wn/+8581a9YsDR8+XDNnzlRKSkq+IlRxjv2HH36o2rVrF3tAawClw2F5WsYGUCHk5OQoISFBPXv21FtvvWV3OgAAAJKkVq1aKTo6WosWLSpRXOfOnZWQkKB33nmnlDK7sKVLl6pTp05asmSJUlJSbMvDVFHHPjMzU3Xq1NGoUaP0wAMP2JAdgDy02AEgSZo7d64OHTqkvn372p0KAACAJGnt2rXasGGD0fXJM888ozlz5mjXrl2lkFnFd6FjP23aNAUGBur+++8v48wAnI8WO0Alt3r1av3www966qmnFBMTo/Xr19udEgAAqKBOnz6dbyyX80VHR+vnn3/WunXr9OKLL+rw4cP69ddfFRISUkZZeo8vttjZuHFjhTj2QGVCix2gkpsyZYoGDx6suLg4zZw50+50AABABTZnzhzVrFmzyGnFihX617/+pQEDBig7O1uzZ8+msFCGOPaA76HFDgAAAIAysX//fm3atKnIddq0aaOoqKgyyggAfB+FHQAAAAAAAB9FVywAAAAAAAAfRWEHAAAAAADAR1HYAQAAAAAA8FEUdgAAAAAAAHwUhR0AAAAAAAAfRWEHAAAAAADAR1HYAQAAAAAA8FH/D/vqVPuDHFV7AAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], "source": [ "from gagf.rnns.utils import plot_2d_power_spectrum, plot_2d_signal, get_power_2d\n", "\n", @@ -234,31 +210,23 @@ "plot_2d_power_spectrum(axes[1], power_2d, fx, fy, title=\"Template Power Spectrum\")\n", "plt.tight_layout()\n", "plt.show()" - ] + ], + "execution_count": null, + "outputs": [], + "id": "d424edf7-ad00-4836-a57c-6de2b2e06a63" }, { "cell_type": "code", - "execution_count": 8, - "id": "1a643405", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Dataset shapes:\n", - " X: torch.Size([100000, 3, 784]) (N, k, p1*p2)\n", - " Y: torch.Size([100000, 784]) (N, p1*p2)\n", - " Flattened dimension: 784\n" - ] - } - ], "source": [ "# Build sequence data\n", "device = \"cuda\" if torch.cuda.is_available() else \"cpu\"\n", "k = 3 # sequence length\n", "mode = \"sampled\"\n", - "num_samples = 100000\n", + "# TEST_MODE: Reduce num_samples for faster automated testing\n", + "import os\n", + "TEST_MODE = os.environ.get(\"NOTEBOOK_TEST_MODE\", \"0\") == \"1\"\n", + "num_samples = 1000 if TEST_MODE else 100000 # Reduced in test mode\n", "\n", "X_seq_2d, Y_seq_2d, sequence_xy = build_modular_addition_sequence_dataset_2d(\n", " p1, p2, template_2d, k, mode=mode, num_samples=num_samples\n", @@ -272,32 +240,32 @@ "print(f\" X: {X_seq_2d_t.shape} (N, k, p1*p2)\")\n", "print(f\" Y: {Y_seq_2d_t.shape} (N, p1*p2)\")\n", "print(f\" Flattened dimension: {p_flat}\")" - ] + ], + "execution_count": null, + "outputs": [], + "id": "1a643405" }, { "cell_type": "markdown", - "id": "624d77d9", "metadata": {}, "source": [ "### Train 2D model" - ] + ], + "id": "624d77d9" }, { "cell_type": "code", - "execution_count": 9, - "id": "4b53c4ac", "metadata": {}, - "outputs": [], "source": [ "from gagf.rnns.main import main" - ] + ], + "execution_count": null, + "outputs": [], + "id": "4b53c4ac" }, { "cell_type": "code", - "execution_count": 10, - "id": "474b1423", "metadata": {}, - "outputs": [], "source": [ "config = {\n", " \"data\": {\n", @@ -324,389 +292,31 @@ " },\n", " \"device\": \"cuda\",\n", "}" - ] + ], + "execution_count": null, + "outputs": [], + "id": "474b1423" }, { "cell_type": "code", - "execution_count": 11, - "id": "38b78194", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Experiment directory: runs/20251027_100715\n", - "Using device: cuda\n", - "Generating data...\n", - " X: torch.Size([100000, 3, 784]), Y: torch.Size([100000, 784])\n", - "Setting up model and training...\n", - "Training for 5 epochs...\n", - "[RNN] Epoch 5/5 | loss 1.000000 | acc 0.12%\n", - "Saving results to runs/20251027_100715...\n", - " ✓ All results saved\n", - "Plotting training loss...\n", - " ✓ Saved loss plot to runs/20251027_100715/training_loss.pdf\n", - "Plotting model predictions over time...\n", - " ✓ Saved predictions plot to runs/20251027_100715/predictions_over_time.pdf\n", - "Training complete!\n", - " Final loss: 1.000000\n", - " Final accuracy: 0.12%\n", - " Training time: 7.69s\n" - ] - }, - { - "data": { - "text/plain": [ - "(QuadraticRNN(),\n", - " [0.9999999403953552,\n", - " 0.9999999397993088,\n", - " 0.9999999403953552,\n", - " 0.9999999386072159,\n", - " 0.9999999409914017,\n", - " 0.9999999397993088],\n", - " [0.116, 0.11, 0.115, 0.114, 0.113, 0.118],\n", - " [{'W_in': tensor([[ 6.5797e-07, 1.8532e-07, -6.1140e-07, ..., 6.3257e-07,\n", - " -6.2770e-08, -1.8367e-08],\n", - " [ 5.4173e-08, 1.7025e-08, 4.3758e-07, ..., 3.9975e-07,\n", - " 4.8185e-07, 4.8165e-07],\n", - " [ 3.3109e-07, 2.4579e-07, 1.4045e-07, ..., -6.4122e-07,\n", - " -2.7117e-07, -2.7401e-07],\n", - " ...,\n", - " [-1.5307e-07, -3.7666e-07, 3.1178e-07, ..., -2.1770e-07,\n", - " 6.7906e-07, -1.2324e-07],\n", - " [ 2.4522e-07, -1.6872e-07, 4.4785e-07, ..., 3.3524e-07,\n", - " 5.3272e-08, -3.2938e-07],\n", - " [-6.3873e-08, 1.4652e-08, 9.5008e-07, ..., 2.3405e-08,\n", - " -3.3868e-07, 3.7979e-07]]),\n", - " 'W_mix': tensor([[ 1.7053e-06, -1.2593e-06, -2.8932e-06, ..., 1.5234e-06,\n", - " 1.6407e-06, -1.7395e-06],\n", - " [-1.2016e-06, 1.4667e-06, -3.4799e-07, ..., -7.0537e-07,\n", - " -4.4375e-07, 1.2312e-06],\n", - " [-1.4049e-07, 5.9811e-07, -1.7702e-06, ..., 4.1204e-07,\n", - " -1.3694e-06, -3.3824e-07],\n", - " ...,\n", - " [-1.4534e-06, 3.2715e-08, -9.0453e-07, ..., 1.4836e-06,\n", - " -1.4919e-06, 2.1928e-06],\n", - " [-7.0099e-07, -3.5396e-06, 3.1732e-06, ..., -1.8225e-06,\n", - " 1.6552e-06, 1.4846e-06],\n", - " [ 1.2563e-07, -9.5296e-07, -3.7973e-06, ..., 6.3969e-08,\n", - " 1.7109e-06, 4.5209e-07]]),\n", - " 'W_drive': tensor([[ 2.2924e-07, 5.1642e-07, -8.4751e-08, ..., -2.3114e-07,\n", - " 4.8208e-08, 4.7618e-08],\n", - " [ 5.9184e-08, -3.4594e-07, 4.7867e-07, ..., 3.5120e-07,\n", - " 3.4486e-07, -5.0262e-07],\n", - " [ 1.3268e-07, 3.2403e-08, 3.3042e-07, ..., 1.4262e-07,\n", - " -2.0400e-07, -2.9189e-07],\n", - " ...,\n", - " [ 7.6388e-07, -2.9164e-07, 1.5844e-07, ..., -4.3701e-07,\n", - " -2.2302e-07, -3.6437e-07],\n", - " [-4.4010e-07, -1.7550e-07, 2.5558e-07, ..., 5.4253e-08,\n", - " -2.9931e-07, -9.4788e-08],\n", - " [-1.8941e-07, -2.4585e-07, -5.8856e-07, ..., 6.1552e-07,\n", - " 8.4162e-07, -5.7561e-07]]),\n", - " 'W_out': tensor([[-7.3537e-07, -1.1184e-06, 6.6942e-07, ..., -4.2011e-07,\n", - " 5.1076e-07, 8.5217e-07],\n", - " [-6.2694e-07, -5.7284e-07, -7.8664e-07, ..., 7.9512e-07,\n", - " -1.5653e-06, 1.5890e-06],\n", - " [ 1.7567e-06, 5.1760e-07, -8.3656e-07, ..., 1.1637e-06,\n", - " -1.5926e-08, -2.0356e-07],\n", - " ...,\n", - " [ 1.4392e-06, 1.6571e-06, -4.3215e-06, ..., 7.0617e-07,\n", - " 3.4299e-06, -1.3388e-06],\n", - " [-3.6370e-07, -8.8647e-07, -1.3498e-06, ..., 1.1081e-06,\n", - " 1.1543e-06, -8.6673e-09],\n", - " [-1.3403e-06, 6.0712e-07, 1.3655e-06, ..., -1.4893e-06,\n", - " -1.8698e-07, 2.5483e-06]])},\n", - " {'W_in': tensor([[ 6.5797e-07, 1.8532e-07, -6.1140e-07, ..., 6.3257e-07,\n", - " -6.2770e-08, -1.8367e-08],\n", - " [ 5.4173e-08, 1.7025e-08, 4.3758e-07, ..., 3.9975e-07,\n", - " 4.8185e-07, 4.8165e-07],\n", - " [ 3.3109e-07, 2.4579e-07, 1.4045e-07, ..., -6.4122e-07,\n", - " -2.7117e-07, -2.7401e-07],\n", - " ...,\n", - " [-1.5307e-07, -3.7666e-07, 3.1178e-07, ..., -2.1770e-07,\n", - " 6.7906e-07, -1.2324e-07],\n", - " [ 2.4522e-07, -1.6872e-07, 4.4785e-07, ..., 3.3524e-07,\n", - " 5.3272e-08, -3.2938e-07],\n", - " [-6.3873e-08, 1.4652e-08, 9.5008e-07, ..., 2.3405e-08,\n", - " -3.3868e-07, 3.7979e-07]]),\n", - " 'W_mix': tensor([[ 1.7053e-06, -1.2593e-06, -2.8932e-06, ..., 1.5234e-06,\n", - " 1.6407e-06, -1.7395e-06],\n", - " [-1.2016e-06, 1.4667e-06, -3.4799e-07, ..., -7.0537e-07,\n", - " -4.4375e-07, 1.2312e-06],\n", - " [-1.4049e-07, 5.9811e-07, -1.7702e-06, ..., 4.1204e-07,\n", - " -1.3694e-06, -3.3824e-07],\n", - " ...,\n", - " [-1.4534e-06, 3.2715e-08, -9.0453e-07, ..., 1.4836e-06,\n", - " -1.4919e-06, 2.1928e-06],\n", - " [-7.0099e-07, -3.5396e-06, 3.1732e-06, ..., -1.8225e-06,\n", - " 1.6552e-06, 1.4846e-06],\n", - " [ 1.2563e-07, -9.5296e-07, -3.7973e-06, ..., 6.3969e-08,\n", - " 1.7109e-06, 4.5209e-07]]),\n", - " 'W_drive': tensor([[ 2.3400e-07, 5.2063e-07, -8.1081e-08, ..., -2.2835e-07,\n", - " 5.0673e-08, 4.9574e-08],\n", - " [ 6.7850e-08, -3.3431e-07, 4.9293e-07, ..., 3.5516e-07,\n", - " 3.5023e-07, -4.9489e-07],\n", - " [ 1.4566e-07, 4.3751e-08, 3.3967e-07, ..., 1.5603e-07,\n", - " -1.9099e-07, -2.8005e-07],\n", - " ...,\n", - " [ 7.6660e-07, -2.8948e-07, 1.5946e-07, ..., -4.3722e-07,\n", - " -2.2206e-07, -3.6271e-07],\n", - " [-4.5091e-07, -1.8506e-07, 2.4889e-07, ..., 5.0382e-08,\n", - " -3.0664e-07, -1.0445e-07],\n", - " [-1.7859e-07, -2.3409e-07, -5.7509e-07, ..., 6.3068e-07,\n", - " 8.5431e-07, -5.6434e-07]]),\n", - " 'W_out': tensor([[-7.3298e-07, -1.1176e-06, 6.7028e-07, ..., -4.1980e-07,\n", - " 5.1286e-07, 8.5749e-07],\n", - " [-6.2484e-07, -5.7189e-07, -7.8558e-07, ..., 7.9536e-07,\n", - " -1.5631e-06, 1.5937e-06],\n", - " [ 1.7583e-06, 5.1841e-07, -8.3547e-07, ..., 1.1638e-06,\n", - " -1.3837e-08, -1.9982e-07],\n", - " ...,\n", - " [ 1.4407e-06, 1.6566e-06, -4.3216e-06, ..., 7.0608e-07,\n", - " 3.4314e-06, -1.3344e-06],\n", - " [-3.6183e-07, -8.8647e-07, -1.3496e-06, ..., 1.1082e-06,\n", - " 1.1561e-06, -3.5255e-09],\n", - " [-1.3383e-06, 6.0756e-07, 1.3661e-06, ..., -1.4892e-06,\n", - " -1.8500e-07, 2.5538e-06]])},\n", - " {'W_in': tensor([[ 6.5797e-07, 1.8532e-07, -6.1140e-07, ..., 6.3257e-07,\n", - " -6.2770e-08, -1.8367e-08],\n", - " [ 5.4173e-08, 1.7025e-08, 4.3758e-07, ..., 3.9975e-07,\n", - " 4.8185e-07, 4.8165e-07],\n", - " [ 3.3109e-07, 2.4579e-07, 1.4045e-07, ..., -6.4122e-07,\n", - " -2.7117e-07, -2.7401e-07],\n", - " ...,\n", - " [-1.5307e-07, -3.7666e-07, 3.1178e-07, ..., -2.1770e-07,\n", - " 6.7906e-07, -1.2324e-07],\n", - " [ 2.4522e-07, -1.6872e-07, 4.4785e-07, ..., 3.3524e-07,\n", - " 5.3272e-08, -3.2938e-07],\n", - " [-6.3873e-08, 1.4652e-08, 9.5008e-07, ..., 2.3405e-08,\n", - " -3.3868e-07, 3.7979e-07]]),\n", - " 'W_mix': tensor([[ 1.7053e-06, -1.2593e-06, -2.8932e-06, ..., 1.5234e-06,\n", - " 1.6407e-06, -1.7395e-06],\n", - " [-1.2016e-06, 1.4667e-06, -3.4799e-07, ..., -7.0537e-07,\n", - " -4.4375e-07, 1.2312e-06],\n", - " [-1.4049e-07, 5.9811e-07, -1.7702e-06, ..., 4.1204e-07,\n", - " -1.3694e-06, -3.3824e-07],\n", - " ...,\n", - " [-1.4534e-06, 3.2715e-08, -9.0453e-07, ..., 1.4836e-06,\n", - " -1.4919e-06, 2.1928e-06],\n", - " [-7.0099e-07, -3.5396e-06, 3.1732e-06, ..., -1.8225e-06,\n", - " 1.6552e-06, 1.4846e-06],\n", - " [ 1.2563e-07, -9.5296e-07, -3.7973e-06, ..., 6.3969e-08,\n", - " 1.7109e-06, 4.5209e-07]]),\n", - " 'W_drive': tensor([[ 2.4401e-07, 5.3211e-07, -6.9428e-08, ..., -2.3268e-07,\n", - " 4.9404e-08, 5.1358e-08],\n", - " [ 7.6822e-08, -3.2239e-07, 5.0715e-07, ..., 3.5814e-07,\n", - " 3.5538e-07, -4.8684e-07],\n", - " [ 1.5512e-07, 5.3900e-08, 3.4950e-07, ..., 1.5804e-07,\n", - " -1.8740e-07, -2.7512e-07],\n", - " ...,\n", - " [ 7.6600e-07, -2.9037e-07, 1.5836e-07, ..., -4.4002e-07,\n", - " -2.2475e-07, -3.6538e-07],\n", - " [-4.5941e-07, -1.9226e-07, 2.4429e-07, ..., 4.5691e-08,\n", - " -3.1361e-07, -1.1287e-07],\n", - " [-1.6700e-07, -2.2124e-07, -5.6072e-07, ..., 6.4185e-07,\n", - " 8.6488e-07, -5.5363e-07]]),\n", - " 'W_out': tensor([[-7.3010e-07, -1.1166e-06, 6.7100e-07, ..., -4.2005e-07,\n", - " 5.1501e-07, 8.6168e-07],\n", - " [-6.2216e-07, -5.7087e-07, -7.8463e-07, ..., 7.9493e-07,\n", - " -1.5611e-06, 1.5976e-06],\n", - " [ 1.7605e-06, 5.1928e-07, -8.3444e-07, ..., 1.1631e-06,\n", - " -1.1869e-08, -1.9655e-07],\n", - " ...,\n", - " [ 1.4425e-06, 1.6569e-06, -4.3220e-06, ..., 7.0650e-07,\n", - " 3.4344e-06, -1.3310e-06],\n", - " [-3.5946e-07, -8.8597e-07, -1.3498e-06, ..., 1.1084e-06,\n", - " 1.1590e-06, 5.0555e-10],\n", - " [-1.3355e-06, 6.0830e-07, 1.3662e-06, ..., -1.4891e-06,\n", - " -1.8212e-07, 2.5581e-06]])},\n", - " {'W_in': tensor([[ 6.5797e-07, 1.8532e-07, -6.1140e-07, ..., 6.3257e-07,\n", - " -6.2770e-08, -1.8367e-08],\n", - " [ 5.4173e-08, 1.7025e-08, 4.3758e-07, ..., 3.9975e-07,\n", - " 4.8185e-07, 4.8165e-07],\n", - " [ 3.3109e-07, 2.4579e-07, 1.4045e-07, ..., -6.4122e-07,\n", - " -2.7117e-07, -2.7401e-07],\n", - " ...,\n", - " [-1.5307e-07, -3.7666e-07, 3.1178e-07, ..., -2.1770e-07,\n", - " 6.7906e-07, -1.2324e-07],\n", - " [ 2.4522e-07, -1.6872e-07, 4.4785e-07, ..., 3.3524e-07,\n", - " 5.3272e-08, -3.2938e-07],\n", - " [-6.3873e-08, 1.4652e-08, 9.5008e-07, ..., 2.3405e-08,\n", - " -3.3868e-07, 3.7979e-07]]),\n", - " 'W_mix': tensor([[ 1.7053e-06, -1.2593e-06, -2.8932e-06, ..., 1.5234e-06,\n", - " 1.6407e-06, -1.7395e-06],\n", - " [-1.2016e-06, 1.4667e-06, -3.4799e-07, ..., -7.0537e-07,\n", - " -4.4375e-07, 1.2312e-06],\n", - " [-1.4049e-07, 5.9811e-07, -1.7702e-06, ..., 4.1204e-07,\n", - " -1.3694e-06, -3.3824e-07],\n", - " ...,\n", - " [-1.4534e-06, 3.2715e-08, -9.0453e-07, ..., 1.4836e-06,\n", - " -1.4919e-06, 2.1928e-06],\n", - " [-7.0099e-07, -3.5396e-06, 3.1732e-06, ..., -1.8225e-06,\n", - " 1.6552e-06, 1.4846e-06],\n", - " [ 1.2563e-07, -9.5296e-07, -3.7973e-06, ..., 6.3969e-08,\n", - " 1.7109e-06, 4.5209e-07]]),\n", - " 'W_drive': tensor([[ 2.4383e-07, 5.3495e-07, -6.3601e-08, ..., -2.4372e-07,\n", - " 3.8866e-08, 4.2276e-08],\n", - " [ 8.3179e-08, -3.1157e-07, 5.2182e-07, ..., 3.5555e-07,\n", - " 3.5587e-07, -4.8224e-07],\n", - " [ 1.6228e-07, 6.2187e-08, 3.5792e-07, ..., 1.5697e-07,\n", - " -1.8710e-07, -2.7342e-07],\n", - " ...,\n", - " [ 7.6721e-07, -2.9008e-07, 1.5770e-07, ..., -4.3856e-07,\n", - " -2.2354e-07, -3.6468e-07],\n", - " [-4.6467e-07, -1.9599e-07, 2.4308e-07, ..., 4.2544e-08,\n", - " -3.1863e-07, -1.1888e-07],\n", - " [-1.5501e-07, -2.0825e-07, -5.4635e-07, ..., 6.5439e-07,\n", - " 8.7685e-07, -5.4167e-07]]),\n", - " 'W_out': tensor([[-7.2612e-07, -1.1153e-06, 6.7222e-07, ..., -4.2096e-07,\n", - " 5.1657e-07, 8.6323e-07],\n", - " [-6.1854e-07, -5.6955e-07, -7.8316e-07, ..., 7.9385e-07,\n", - " -1.5596e-06, 1.5989e-06],\n", - " [ 1.7634e-06, 5.2029e-07, -8.3294e-07, ..., 1.1619e-06,\n", - " -1.0501e-08, -1.9570e-07],\n", - " ...,\n", - " [ 1.4443e-06, 1.6566e-06, -4.3226e-06, ..., 7.0641e-07,\n", - " 3.4365e-06, -1.3291e-06],\n", - " [-3.5674e-07, -8.8574e-07, -1.3499e-06, ..., 1.1081e-06,\n", - " 1.1613e-06, 2.4606e-09],\n", - " [-1.3322e-06, 6.0896e-07, 1.3665e-06, ..., -1.4897e-06,\n", - " -1.7982e-07, 2.5600e-06]])},\n", - " {'W_in': tensor([[ 6.5797e-07, 1.8532e-07, -6.1140e-07, ..., 6.3257e-07,\n", - " -6.2770e-08, -1.8367e-08],\n", - " [ 5.4173e-08, 1.7025e-08, 4.3758e-07, ..., 3.9975e-07,\n", - " 4.8185e-07, 4.8165e-07],\n", - " [ 3.3109e-07, 2.4579e-07, 1.4045e-07, ..., -6.4122e-07,\n", - " -2.7117e-07, -2.7401e-07],\n", - " ...,\n", - " [-1.5307e-07, -3.7666e-07, 3.1178e-07, ..., -2.1770e-07,\n", - " 6.7906e-07, -1.2324e-07],\n", - " [ 2.4522e-07, -1.6872e-07, 4.4785e-07, ..., 3.3524e-07,\n", - " 5.3272e-08, -3.2938e-07],\n", - " [-6.3873e-08, 1.4652e-08, 9.5008e-07, ..., 2.3405e-08,\n", - " -3.3868e-07, 3.7979e-07]]),\n", - " 'W_mix': tensor([[ 1.7053e-06, -1.2593e-06, -2.8932e-06, ..., 1.5234e-06,\n", - " 1.6407e-06, -1.7395e-06],\n", - " [-1.2016e-06, 1.4667e-06, -3.4799e-07, ..., -7.0537e-07,\n", - " -4.4375e-07, 1.2312e-06],\n", - " [-1.4049e-07, 5.9811e-07, -1.7702e-06, ..., 4.1204e-07,\n", - " -1.3694e-06, -3.3824e-07],\n", - " ...,\n", - " [-1.4534e-06, 3.2715e-08, -9.0453e-07, ..., 1.4836e-06,\n", - " -1.4919e-06, 2.1928e-06],\n", - " [-7.0099e-07, -3.5396e-06, 3.1732e-06, ..., -1.8225e-06,\n", - " 1.6552e-06, 1.4846e-06],\n", - " [ 1.2563e-07, -9.5296e-07, -3.7973e-06, ..., 6.3969e-08,\n", - " 1.7109e-06, 4.5209e-07]]),\n", - " 'W_drive': tensor([[ 2.5346e-07, 5.4735e-07, -4.9489e-08, ..., -2.4986e-07,\n", - " 3.5229e-08, 4.1686e-08],\n", - " [ 9.1264e-08, -2.9748e-07, 5.4045e-07, ..., 3.4826e-07,\n", - " 3.5385e-07, -4.7777e-07],\n", - " [ 1.6642e-07, 6.9174e-08, 3.6656e-07, ..., 1.4912e-07,\n", - " -1.9225e-07, -2.7545e-07],\n", - " ...,\n", - " [ 7.6602e-07, -2.9171e-07, 1.5592e-07, ..., -4.3979e-07,\n", - " -2.2566e-07, -3.6766e-07],\n", - " [-4.7065e-07, -1.9960e-07, 2.4288e-07, ..., 3.7183e-08,\n", - " -3.2507e-07, -1.2551e-07],\n", - " [-1.3365e-07, -1.8557e-07, -5.2258e-07, ..., 6.7304e-07,\n", - " 8.9646e-07, -5.2076e-07]]),\n", - " 'W_out': tensor([[-7.2070e-07, -1.1137e-06, 6.7375e-07, ..., -4.2164e-07,\n", - " 5.1851e-07, 8.6424e-07],\n", - " [-6.1399e-07, -5.6826e-07, -7.8106e-07, ..., 7.9283e-07,\n", - " -1.5580e-06, 1.5992e-06],\n", - " [ 1.7666e-06, 5.2109e-07, -8.3056e-07, ..., 1.1606e-06,\n", - " -9.1205e-09, -1.9611e-07],\n", - " ...,\n", - " [ 1.4479e-06, 1.6573e-06, -4.3244e-06, ..., 7.0658e-07,\n", - " 3.4394e-06, -1.3266e-06],\n", - " [-3.5199e-07, -8.8490e-07, -1.3510e-06, ..., 1.1080e-06,\n", - " 1.1642e-06, 4.6765e-09],\n", - " [-1.3268e-06, 6.0991e-07, 1.3663e-06, ..., -1.4900e-06,\n", - " -1.7703e-07, 2.5617e-06]])},\n", - " {'W_in': tensor([[ 6.5797e-07, 1.8532e-07, -6.1140e-07, ..., 6.3257e-07,\n", - " -6.2770e-08, -1.8367e-08],\n", - " [ 5.4173e-08, 1.7025e-08, 4.3758e-07, ..., 3.9975e-07,\n", - " 4.8185e-07, 4.8165e-07],\n", - " [ 3.3109e-07, 2.4579e-07, 1.4045e-07, ..., -6.4122e-07,\n", - " -2.7117e-07, -2.7401e-07],\n", - " ...,\n", - " [-1.5307e-07, -3.7666e-07, 3.1178e-07, ..., -2.1770e-07,\n", - " 6.7906e-07, -1.2324e-07],\n", - " [ 2.4522e-07, -1.6872e-07, 4.4785e-07, ..., 3.3524e-07,\n", - " 5.3272e-08, -3.2938e-07],\n", - " [-6.3873e-08, 1.4652e-08, 9.5008e-07, ..., 2.3405e-08,\n", - " -3.3868e-07, 3.7979e-07]]),\n", - " 'W_mix': tensor([[ 1.7053e-06, -1.2593e-06, -2.8932e-06, ..., 1.5234e-06,\n", - " 1.6407e-06, -1.7395e-06],\n", - " [-1.2016e-06, 1.4667e-06, -3.4799e-07, ..., -7.0537e-07,\n", - " -4.4375e-07, 1.2312e-06],\n", - " [-1.4049e-07, 5.9811e-07, -1.7702e-06, ..., 4.1204e-07,\n", - " -1.3694e-06, -3.3824e-07],\n", - " ...,\n", - " [-1.4534e-06, 3.2715e-08, -9.0453e-07, ..., 1.4836e-06,\n", - " -1.4919e-06, 2.1928e-06],\n", - " [-7.0099e-07, -3.5396e-06, 3.1732e-06, ..., -1.8225e-06,\n", - " 1.6552e-06, 1.4846e-06],\n", - " [ 1.2563e-07, -9.5296e-07, -3.7973e-06, ..., 6.3969e-08,\n", - " 1.7109e-06, 4.5209e-07]]),\n", - " 'W_drive': tensor([[ 2.4933e-07, 5.4711e-07, -4.5331e-08, ..., -2.6557e-07,\n", - " 1.8764e-08, 2.5930e-08],\n", - " [ 9.5709e-08, -2.8571e-07, 5.5806e-07, ..., 3.3498e-07,\n", - " 3.4705e-07, -4.7673e-07],\n", - " [ 1.7308e-07, 8.0382e-08, 3.8061e-07, ..., 1.3855e-07,\n", - " -1.9940e-07, -2.7823e-07],\n", - " ...,\n", - " [ 7.6586e-07, -2.9299e-07, 1.5365e-07, ..., -4.3874e-07,\n", - " -2.2557e-07, -3.6870e-07],\n", - " [-4.7628e-07, -2.0209e-07, 2.4451e-07, ..., 3.1565e-08,\n", - " -3.3208e-07, -1.3254e-07],\n", - " [-1.1061e-07, -1.6128e-07, -4.9764e-07, ..., 6.9302e-07,\n", - " 9.1853e-07, -4.9653e-07]]),\n", - " 'W_out': tensor([[-7.1148e-07, -1.1106e-06, 6.7682e-07, ..., -4.2211e-07,\n", - " 5.2144e-07, 8.6406e-07],\n", - " [-6.0577e-07, -5.6524e-07, -7.7743e-07, ..., 7.9197e-07,\n", - " -1.5550e-06, 1.5985e-06],\n", - " [ 1.7729e-06, 5.2329e-07, -8.2690e-07, ..., 1.1593e-06,\n", - " -6.2355e-09, -1.9717e-07],\n", - " ...,\n", - " [ 1.4530e-06, 1.6574e-06, -4.3259e-06, ..., 7.0745e-07,\n", - " 3.4424e-06, -1.3247e-06],\n", - " [-3.4493e-07, -8.8407e-07, -1.3514e-06, ..., 1.1087e-06,\n", - " 1.1677e-06, 5.8573e-09],\n", - " [-1.3186e-06, 6.1136e-07, 1.3671e-06, ..., -1.4897e-06,\n", - " -1.7337e-07, 2.5621e-06]])}])" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], "source": [ "main(config)" - ] + ], + "execution_count": null, + "outputs": [], + "id": "38b78194" }, { "cell_type": "code", - "execution_count": 13, - "id": "31005b99", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[RNN] Epoch 5/5 | loss 1.000000 | acc 0.15%\n" - ] - } - ], "source": [ "from gagf.rnns.train import train\n", "\n", - "batch_size = 1000\n", + "# TEST_MODE: Reduce batch_size and hidden_dim for faster automated testing\n", + "import os\n", + "TEST_MODE = os.environ.get(\"NOTEBOOK_TEST_MODE\", \"0\") == \"1\"\n", + "batch_size = 100 if TEST_MODE else 1000 # Reduced in test mode\n", "seq_dataset_2d = TensorDataset(X_seq_2d_t, Y_seq_2d_t)\n", "seq_loader_2d = DataLoader(\n", " seq_dataset_2d, batch_size=batch_size, shuffle=True, drop_last=False\n", @@ -714,7 +324,7 @@ "\n", "# Model - note p is now p1*p2\n", "template_torch = torch.tensor(template_2d, device=device, dtype=torch.float32).flatten()\n", - "hidden_dim_2d = 36 # Scale up for larger input dimension\n", + "hidden_dim_2d = 12 if TEST_MODE else 36 # Reduced in test mode\n", "rnn_2d = QuadraticRNN(\n", " p=p_flat,\n", " d=hidden_dim_2d,\n", @@ -731,7 +341,10 @@ " rnn_2d.parameters(), lr=learning_rate, betas=(0.9, 0.999), weight_decay=weight_decay\n", ")\n", "\n", - "epochs = 5\n", + "# TEST_MODE: Set to reduce epochs for automated testing\n", + "import os\n", + "TEST_MODE = os.environ.get(\"NOTEBOOK_TEST_MODE\", \"0\") == \"1\"\n", + "epochs = 2 if TEST_MODE else 5\n", "\n", "loss_hist_2d, acc_hist_2d, param_hist_2d = train(\n", " rnn_2d,\n", @@ -739,36 +352,25 @@ " criterion,\n", " optimizer,\n", " epochs=epochs,\n", - " verbose_interval=5,\n", + " verbose_interval=max(1, epochs),\n", " grad_clip=0.1,\n", ")" - ] + ], + "execution_count": null, + "outputs": [], + "id": "31005b99" }, { "cell_type": "markdown", - "id": "aaf7af30-5f5e-4ea5-8425-1da1efc1fa69", "metadata": {}, "source": [ "## Loss Plot" - ] + ], + "id": "aaf7af30-5f5e-4ea5-8425-1da1efc1fa69" }, { "cell_type": "code", - "execution_count": 14, - "id": "d1037a02", "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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5PV+paWlxnZwcLCpGMd2jvFAW/Jf//Vfys/Pl1S3kJMvblc1i/MjUOf77783tvfv368DBw4oJCREb7/9tg4ePKjXXntNK1as0O7du7Vp0yZFRkZKqrtD7O6771ZlZeV577u1nx9JugF4NGnSJB09elRLlizRLbfcou7duyswMFAhISHq16+fHn74YX311VdOK0WuXbtWq1evbsFRAxdG165d9eijj+rRRx/VI488op/+9KcaNmyY/P39VVRUpKlTp2rMmDE6dOiQ1/s6d+6csR0QEGAqxjH5KC8v93oMQGvzn//8R6+//rqkutcEXX/99Rds35wfgf/j7i6OVatWuX0H9/XXX6+1a9eqXbu6dPTIkSN64403znvfrf38SNINwKPOnTsbk2JjAgIC9Morr+i6664z6p599lmrhwa0uD59+uiFF17QCy+8oBdffFGvvfaaduzYoePHj+vee++VJH388ccaPny49u3b59W+goKCjG2zVwTqV3OVzH/7D1wszp49q4ceekiS1KVLF6eFCy8Ezo/A/3E8R0nSiBEjdNtttzXafsSIEbr99tuN8ltvveWTfbfG8yNJNwCfadeunRYsWGCU9+/fr8zMzBYcEdByunbtqhUrVhjPmRYVFWnKlCmqqak57z7r3ykqmf9W3rGdYzzQFvzmN7/RsWPHJEnPPfeccbtqa8P5EZeChueYphJud222bt3qk323xvMjSTcAnxo1apTat29vlHlFES51zzzzjMLCwiTV/T3861//Ou++unTpYmzn5uaaisnJyTG2IyIiznvfQGuzZ88e/eUvf5FUd6vqzJkzW3hETeP8iLbO8RwlSZdffrnHGMe3DJSUlKikpMTrfbfG8yOvDAPgU+3bt1dkZKSys7MlSQUFBS08IqBlhYSEaOTIkdqwYYMk6fPPP9eECRPOq6/+/fsb28ePHzcVc+LECWPbcUEn4GK3b98+Y0GyEydOaPjw4Y22rV9kTZKys7Od2v7ud7/T+PHjrRvo/4/zI9q6hucYM1ePG77Vo6Sk5Lze9NHaz48k3QB8znEhjQ4dOrTgSIDWITw83Nh2fK1JczleEfj6669VXV0tf/+mT+V79uxxGw+0JUeOHNGRI0dMta2srNSOHTuMsmNCbjXOj2jLrrzySqeymRXBG17Z7tSp03ntu7WfH7m9HIBPfffddyouLjbKXbt2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p4qKivTxxx+rsLBQNTU1+tOf/qQTJ07onXfekc1mc9tfTU2N7rzzTr333ntGXUBAgEaMGKFevXqpffv2ysnJ0e7du5Wdna3a2lpVVlY2ebz79+/XU089pdLSUkVHR+u6665Tly5ddOrUKW3atEnl5eWqqanRnDlzNHDgQLerv5eUlOiGG27QyZMnJdUl+9dcc40GDBig0NBQlZWV6dSpU/rqq69UUFDQ5HgAABcROwAAaJOSkpLskuyS7AsWLPC6v/j4eKO/gIAAe7t27ezPPfecvaamxqndgQMH7FdccYXRNjY21l5YWOi2z88//9zu5+dntL3lllvsOTk5Tm3OnTtnnzt3rtFGkv25555rdJzz5s1zavuzn/3MXlBQ4Lbtjh077Pfcc499//79Lp85/vsFBgba/fz87M8995y9qqrKqd2JEyfsV155pdH2+uuvd7uvP/3pT0abyy+/3J6enu62XW1trf2LL76wP/zww/YTJ040epwAgIsDt5cDANBGOd4e3dz3dC9atEgRERFOdY63l0vSH//4R82bN89tfE5OjgYOHGhcsf3d736nRYsWubRLSkrSJ598IkkaOXKkPv74YwUEBLjt8xe/+IX+/Oc/S5LCwsKUmZmpjh07OrU5dOiQBgwYoNraWknSM888oyeffNLMIbtw/PeTpOXLl2v27Nlu2+7fv1+DBg2S3W6XzWbTqVOnFBcX59Tmjjvu0D//+U9J0kcffaQbbrjhvMYFALi4kHQDANBGNUwam+Po0aPq1auXU51j0t27d28dOnRI/v6NP6n2l7/8RT//+c8lSV27dlVmZqbTLeEHDx50eo56z549uuaaaxrt7+zZs+rVq5eRyC9btkwPPfSQU5uHH35Yy5YtkyQNHz5cW7dubfQ2dE8c//0GDhyoffv2Ndn+2muvNRY/W7t2rX7yk584ff7jH/9YH330kSRp7969uuqqq85rXACAiwurlwMAgGabNm1akwm3JM2YMcNY8CwrK0sZGRlOn3/88cfG9tVXX91kwi1JHTp00NSpU93G19uwYYOx/bOf/ey8E+6G7rzzTo9tHMfvbkX0Hj16GNv1XwwAANo+km4AAC4BCxYskN1uN/3T8Cp3QyNGjPC4z/DwcPXv398of/nll06fO5ZHjhxp6jh++MMfGtt79uxx+iw3N9cp2b3++utN9WnGwIEDPbbp0qWLsV1cXOzy+V133WVsL1u2TMOGDdOLL76ow4cP+2aQAIBWiaQbAAA0W8+ePZvdLj8/3+kzx3J8fLyp/hy/DGi4wndubq6xHRgYqK5du5rq04xOnTp5bNO+fXtju6qqyuXzm266SY899phR3rlzp372s5/psssuU2xsrO644w698MILyszM9M2gAQCtAkk3AABotpCQEFPtOnToYGyXlJQ4fVZaWuq23fn251gODQ011Z9ZvrpN/c9//rPeffddl0XtcnNz9c9//lOPPfaYevbsqTvuuEMnTpzwyT4BAC2LpBsAADRbWVmZqXZnz541thuuNO6YGDu2O9/+HMuOCX1rc9ttt2nHjh06fvy4Xn31VT300ENOC8rZ7Xb985//VGJiog4dOtSCIwUA+AJJNwAAaDazV2FPnjxpbEdGRjp9FhUV1ez+HJ/ZbthfTEyMsV1RUaHs7GxTfbaUnj176p577tGyZct04MABnThxQgsXLjTuIjh9+rSSk5NbeJQAAG+RdAMAgGbbvn27xzbff/+90tPTjXJiYqLT546rfW/dutXUfh3bNewvJibG6ZnvTZs2meqztejRo4fmz5+vl156yaj7z3/+o4qKihYcFQDAWyTdAACg2dasWaOampom27zxxhtGm7i4OKeVzCVpzJgxxvaXX37p8T3YZWVlevPNN93G17vllluM7RdffFF2u73JPlujiRMnGttVVVUqLCxswdEAALxF0g0AAJrtyJEj+n//7/81+nlubq4WLVpklB944AGXxcgSEhI0atQoo/yzn/3M7arf9X77298qLy9PkhQWFqZp06a5tHn88cfVrl3d/95s27ZNzz77rLkDugAarrbeGMdb8tu1a+f0KjIAwMWHpBsAADRbQECA5s2bp+eff161tbVOnx08eFA33nijkSDHxMTov/7rv9z288wzz8jPz0+S9Omnn2ry5MlGXL3Kyko99dRTTkn+ggUL3K5Q3q9fP/3yl780yk899ZQee+yxRq8Wf/HFF7r33nt14MABE0ftnREjRmjatGn617/+pcrKSrdtDh06pJkzZxrlsWPHKiAgwPKxAQCs49/SAwAAANb78MMPTV9plepeCZaSktLo5ykpKXr88cf1+OOPa8mSJfrRj36k0NBQHTp0SJ999pmRiPv7++vvf/+7IiIi3PYzcuRI/fGPf9TcuXMlSR988IF69uyp66+/Xj169FBRUZE+/vhjnT592oi57bbbGk3iJekPf/iD0tPT9cEHH0iSXnjhBb300ksaMWKEevfuLX9/f+Xk5Gj37t3GYmuPP/646X+b81VVVaU1a9ZozZo1Cg4O1qBBg9SnTx+FhYWpqKhI3333nXbt2mW0Dw4O1pIlSywfFwDAWiTdAABcAnbu3KmdO3eabt+pU6cmk+5bb71VgYGB+sUvfqHMzEynZ63rde7cWX//+981bty4Jvf1q1/9SuHh4UpOTlZxcbEqKiq0YcMGl3Z+fn762c9+pueee67J92b7+/vr/fff1+9+9zs999xzqqioUGVlpbZs2aItW7a47TcoKKjJMfqC4yvNysvLtWPHDu3YscNt2969e2vVqlUaNGiQ5eMCAFiLpBsAAJyXOXPm6LrrrtOyZcu0ceNGZWZmSpJ69eqln/zkJ3rssccUFxdnqq8HHnhAt956q15++WX961//0qFDh1RYWKiOHTuqR48euuGGG3T//fc7vc+6Ke3atdP//M//aM6cOVq5cqU++ugjHT58WAUFBfL391d0dLSuuOIKjR07Vnfffbe6det23v8OZu3du1fbt2/Xxx9/rC+++EIZGRnKyspSWVmZQkJCFBsbq6uvvloTJ07UXXfdpcDAQMvHBACwns1+MS7rCQAALrhevXrp+PHjkqSjR486vZ4LAAC4x0JqAAAAAABYhKQbAAAAAACLkHQDAAAAAGARkm4AAAAAACxC0g0AAAAAgEVIugEAAAAAsAivDAMAAAAAwCJc6QYAAAAAwCIk3QAAAAAAWISkGwAAAAAAi5B0AwAAAABgEZJuAAAAAAAsQtINAAAAAIBFSLoBAAAAALAISTcAAAAAABYh6QYAAAAAwCL/H9sMVenr0eODAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], "source": [ "# --- Plot RNN training loss only ---\n", "fig, ax = plt.subplots(1, 1, figsize=(10, 6))\n", @@ -812,33 +414,22 @@ "plt.tight_layout()\n", "# plt.savefig(\"rnn-loss.pdf\", bbox_inches=\"tight\")\n", "plt.show()" - ] + ], + "execution_count": null, + "outputs": [], + "id": "d1037a02" }, { "cell_type": "markdown", - "id": "d4f01b69", "metadata": {}, "source": [ "## Prediction Plot" - ] + ], + "id": "d4f01b69" }, { "cell_type": "code", - "execution_count": 16, - "id": "11e29014", "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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ADVIklwsSTIAAGRIkgEAapTEtziSZAAAyJAkAwDUIOckF0uSDAAAGZJkAIAaJEkuliQZAAAyJMkAADVIklwsSTIAAGRIkgEAapAkuViSZAAAyJAkAwDUIElysSTJAACQIUkGAKhBkuRiSZIBACBDkgwAUIMkycWSJAMAQIYkGQCgBkmSiyVJBgCADEkyAEANkiQXS5IMAAAZkmQAgBokSS6WJBkAADIkyQAANUiSXCxJMgAAZEiSAQBqkCS5WJJkAADIkCQDANQgSXKxJMkAAJAhSQYAqEGS5GJJkgEAIEOSDABQgyTJxZIkAwBAhiQZAKAGSZKLJUkGAIAMSTIAQA2SJBdLkgwAQEWuuOKK+Nd//dcYNGhQbL311nHcccfF3Llze3taFVEkAwDUqI1pct4/3fXoo4/GeeedF4899ljMnj071q9fH0ceeWSsXLmygGfdM3I53WL58uXx6quvxt/+9rcOX9jDDjssj90AAFCFHnjggU1u33zzzbH11lvHk08+WbN1YEVF8uLFi2PSpEnxk5/8JJqbm9s93traGqVSqcPHAAAoX0+ck7xs2bJN7m9oaIiGhoYuf3/p0qURETFs2LD8J9dDKiqSzz333Lj77rvjs5/9bLzvfe+LoUOH5jUvAAB62ciRIze5PW3atJg+ffpmf6elpSUmT54chx56aOy1114Fzq5YFRXJDz30UHzuc5+Lr33ta3nNBwCABD2RJC9YsCCampra7k9Jkc8777x45pln4le/+lUhc+spFRXJ/fv3j5133jmnqQAAUE2ampo2KZK7MmnSpLjnnntizpw5scMOOxQ4s+JVdHWL008/Pe6444685gIAQKKirmxRTkLd2toakyZNijvuuCN+/vOfx6hRowp61j2noiT5xBNPjEcffTSOPvro+MQnPhEjR46Murq6duP233//SnYDAEAVO++88+KWW26JO++8MwYNGhSLFi2KiIjBgwdHv379enl25amoSB47dmzbf8+ePbvd465uAQBQjGrquHf99ddHRMS4ceM2uf+mm26Ks846K6dZ9ayKiuSbbropr3kAAFCj3o5trCsqks8888y85gEAQDdUU5L8dpRLx72IiBUrVsSCBQsi4u/X1Bs4cGBemwYAgB5V0dUtIiKeeOKJGD9+fAwdOjT22muv2GuvvWLo0KHx/ve/P37729/mMUcAADKq6eoWb0cVJcmPP/54jBs3Lurr6+Occ86JPfbYIyIi/vjHP8att94ahx12WDzyyCNx4IEH5jJZAADoCRUVyRdeeGG8853vjF/96lex7bbbbvLY9OnT49BDD40LL7ywwytfAABQPuckF6ui0y0ef/zxmDhxYrsCOSJim222iU984hPx2GOPVbILAADocRUlyX369IkNGzZ0+nhzc3P06VPxac8AAGRIkotVUQV7yCGHxHXXXRevvvpqu8fmz58f3/72t+PQQw+tZBcAANDjKkqSL7/88jjssMPi3e9+d3z4wx+O3XffPSIi5s6dG3feeWdstdVWccUVV+QyUQAA/kGSXKyKiuT99tsvHn/88bjwwgvjrrvuilWrVkVERP/+/ePoo4+OSy+9NPbcc89cJgoAAD2l4mYie+65Z9xxxx3R0tISb731VkREjBgxwrnIAAAFkiQXK7eOe3369Iltttkmr80BAECv6VaRfMkll0SpVIoLL7ww+vTpE5dcckmXv1MqleLiiy8ue4IAALQnSS5Wt4rk6dOnR6lUii9+8YtRX18f06dP7/J3FMkAANSabhXJLS0tm70NAEDPkCQXy7frAAAgo6Iiua6uLm655ZZOH7/tttuirq6ukl0AANCBjUlyUT9buoqK5K5ewObm5iiVSpXsAgAAelzFl4DrrAhetmxZPPjggzF8+PBKdwEAQIZzkovV7SR5xowZUVdXF3V1dVEqleL0009vu/3PP0OHDo0f/vCH8dGPfrSIeQMAQGG6nSQfeOCB8elPfzpaW1vj29/+dnzgAx+I3XfffZMxpVIpBgwYEGPGjInjjz8+t8kCAPB3kuRidbtInjBhQkyYMCEiIlauXBkTJ06Mgw8+OPeJAQBAb6nonOSbbropr3kAANANkuRiVXR1i2uvvTaOOuqoTh+fMGFCXH/99ZXsAgAAelxFRfL3vve92HPPPTt9fM8994zvfOc7lewCAIAOuE5ysSoqkl966aXYY489On383e9+d7z00kuV7AIAAHpcReck19fXx6JFizp9/PXXX48+fXS+BgAogsS3OBVVsAcffHDcfPPNsXz58naPLV26NG666SZXvgAAoOZUlCRPmzYtDj/88Nh3331j8uTJ8Z73vCciIp555pmYOXNmvP7663HLLbfkMlEAAP7B1S2KVVGRfNBBB8Xdd98dEydOjPPPP7+tRXVra2uMGjUq7rrrrnjve9+by0QBAKCnVFQkR0R84AMfiBdffDH+7//+r+1LeqNHj47999+/rWgGACBfkuRiVVwkR0T06dMnxowZE2PGjMljcwAA0Ku6VSTPmTMnIiIOO+ywTW53ZeN4AADyIUkuVreK5HHjxkWpVIrVq1dHfX192+3OtLa2RqlUiubm5oonCgAAPaVbRfIvfvGLiPj79ZH/+TYAAD1LklysbhXJhx9++GZvAwDA20EuX9wDAKBnSZKL1a0i+WMf+1i3d1AqleL73/9+t38PAAB6S7eK5J///Oftvqi3atWqeOuttyIiYujQoRER8be//S0iIkaMGBEDBgzIY54AAPwTSXKx+nRn8Lx58+KVV15p+7n33nujb9++8eUvfznefPPNWLx4cSxevDjefPPN+NKXvhT19fVx7733FjV3AAAoREXnJH/mM5+JCRMmxKWXXrrJ/cOHD4/LLrss3nzzzfjMZz4TDz/8cEWTBABgU5LkYnUrSc567LHHYv/99+/08f322y8ee+yxSnYBAAA9rqIiediwYXH//fd3+vh9990XQ4YMqWQXAAB0YGOSXNTPlq6iInnixIlxzz33xIc+9KF4+OGHY968eTFv3ryYPXt2/Md//Efcf//98clPfjKvuQIAQI+o6Jzkiy66KNauXRtXXXVV3HPPPZtueKutYurUqXHRRRdVNEEAANpzTnKxKm4m8tWvfjXOP//8mD17dsyfPz8iInbaaac44ogjYvjw4RVPEAAAelouHfeGDx8ep5xySh6bAgAggSS5WBWdkxwR0dzcHD/+8Y9j4sSJ8eEPfzj+8Ic/RETE0qVL47//+7/jjTfeqHiSAADQkyoqkpcsWRKHHnponHrqqXHrrbfGXXfd1dZ9b+DAgfHZz342rrnmmlwmCgDAP7i6RbEqKpKnTp0azz77bDz44IPx8ssvb/KC1tXVxYknnhj33XdfxZMEAICeVFGR/NOf/jQ+85nPxAc+8IEolUrtHt99991j3rx5lewCAIAOSJKLVVGRvHTp0hg1alSnj69fvz42bNhQyS4AAKDHVXR1i9GjR8dTTz3V6eMPPfRQ7LnnnpXsAgCADri6RbEqSpLPOeecuPHGG+O2225rezFLpVKsXbs2LrzwwnjggQdi4sSJuUwUAAB6SkVJ8vnnnx/PPvtsnHLKKTFkyJCIiDj11FNj8eLFsWHDhpg4cWJ8/OMfz2OeAAD8E0lysSoqkkulUnz3u9+NM888M26//fZ44YUXoqWlJUaPHh0f+chH4rDDDstrngAA0GPKLpJXrVoVp59+epxwwglx2mmnxdixY/OcFwAAmyFJLlbZ5yT3798/Hn744Vi1alWe8wEAgF5X0Rf3xo4dG7/5zW/ymgsAAIlcJ7lYFRXJ3/rWt+KXv/xlXHTRRfHnP/85rzkBAECvquiLe/vss09s2LAhrrjiirjiiitiq622ioaGhk3GlEqlWLp0aUWTBABgU85JLlZFRfKJJ56Y1zwAAKBqlFUkr1mzJu68885417veFe94xzvigx/8YGy33XZ5zw0AgM2Q+Ban20Xym2++GYcccki88sor0draGqVSKfr37x933HFHHHHEEUXMEQAAelS3v7j31a9+NebNmxef+9zn4p577olvfvOb0djYqP00AEAPcnWLYnU7SX7ooYfijDPOiKuvvrrtvm222SZOPfXUmDt3brzrXe/KdYIAANDTup0kz58/v113vbFjx0Zra2u88cYbuU0MAIDOSZKL1e0iee3atdHY2LjJfRtvb9iwIZ9ZAQBALyrr6hbz5s2Lp556qu32xusgv/DCCzFkyJB24/fff//yZgcAQIdcJ7lYZRXJF198cVx88cXt7v/0pz+9ye2NV79obm4ub3YAANALul0k33TTTUXMAwCAbpAkF6vbRfKZZ55ZxDwAAKBqVNSWGgCA3iFJLla3r24BAABvd5JkAIAaJEkuliQZAAAyJMkAADVIklwsSTIAAGRIkgEAapAkuViSZAAAyFAkAwDUoI1JclE/3TVnzpw49thjY/vtt49SqRQ//elP83/SPUiRDABAxVauXBn77LNPXHfddb09lVw4JxkAoAZV2znJEyZMiAkTJhQwm96hSAYAoEPLli3b5HZDQ0M0NDT00mx6ltMtAABqUE+ckzxy5MgYPHhw288VV1zRy8+650iSAQDo0IIFC6Kpqant9paSIkcokgEAalJPnJPc1NS0SZG8JXG6BQAAZEiSAQBqULVd3WLFihXx4osvtt1+5ZVX4umnn45hw4bFjjvumOf0eoQiGQCAiv32t7+N8ePHt92eMmVKRESceeaZcfPNN/fSrMqnSAYAqEHVliSPGzeusPn0BuckAwBAhiQZAKAGVVuS/HYjSQYAgAxJ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rilTpsSZZ54ZBxxwQBx44IExc+bMWLlyZZx99tmF7vd//ud/4qmnnoqlS5e2e59LpVJcfPHFZW23KopkAAC6p5qS5IiIk08+Od566634yle+EosWLYp99903HnjggXZf5svLX//61zjmmGPif//3f6O1tTVKpVLbvDf+dyVFsuskAwCQi0mTJsWrr74aa9eujccffzwOOuigwvb1+c9/Pn7/+9/HLbfcEi+//HK0trbGgw8+GH/605/ik5/8ZOy7777x2muvlb19RTIAQA3amCQX9VPt7rvvvpg4cWKcfPLJbedz9+nTJ3bddde47rrrYuedd47JkyeXvX1FMgAANWfJkiXxnve8JyIiBg4cGBERK1asaHv8yCOPjAcffLDs7SuSAQBq0JaeJG+//faxaNGiiPj7l3m33nrr+N3vftf2+MKFCyv6MqQv7gEAUHPe9773xezZs+PCCy+MiL9/cfBrX/ta1NXVRUtLS8ycOTOOOuqosrdfVUXyunXrurzkS96XQyq3VWFnUi/1Ul9fnzQu9ZI1qZdDSr1kTeplk1IvXZS6vdRPfKmXp4rI/3qvqcdgb11bNHV7qcdW6nuSemz17ds313FdrRndOVa6Yo1qzxrVMWtU5dvbUtaoiPLXqWq7ukVPu+CCC2L27Nmxdu3aaGhoiOnTp8ezzz7bdjWLww47LK699tqyt19VRTIAAKSoq6uLKVOmtN0eOnRoPPzww7FkyZKoq6urqIlUhHOSAQBq0pZ+TvJee+0V++yzT1x++eXx4osvtt0/ZMiQigvkCEUyAAA16Prrr4/hw4fHV77ylXjXu94VY8aMiauuuipeffXVXLavSAYAqEFbepI8ceLE+NnPfhYLFy6Ma665JgYMGBBTp06NXXbZJd773vfGNddco5kIAABbpm222SYmTZoUc+bMifnz58fXv/71KJVKccEFF8ROO+1U9nYVyQAANWhLT5I7st1228V73vOe2GOPPaJ///7JV0npiKtbAABQs1pbW+ORRx6J2267Le644474y1/+EkOHDo2PfvSjcfLJJ5e9XUUyAEAN2tKvk/zLX/4y/vM//zNuv/32ePPNN6OpqSmOO+64OPnkk+OII45Iukb15iiSAQCoOYcffngMHDgwjj322Dj55JPj6KOPTm6ElKKqiuTVq1d32Tkn9ZNN3h2CUjsT5d0hKLWjT+r2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PvnkcnYFAAA9rqwi+YEHHogvfvGLsXbt2jj33HNj1113jYiIF154Ib73ve9Fv3794qKLLopXX301brjhhjj11FOjrq4uTjzxxFwnDwCwpZIkF6vsIrmxsTEef/zxqK+v3+SxT3/60zFu3Lh47LHH4sorr4xPfvKTccABB8SVV16pSAYAoCaUdWG+H/3oR3Hqqae2K5AjIhobG+O0006LH/zgB223Tz/99HjuuecqmykAAG02JslF/WzpyiqSV65cGW+88Uanj7/++uuxYsWKtttDhgzJ/SLoAABQlLJOt3j/+98fM2fOjIMPPjg++MEPbvLY3XffHddcc03827/9W9t9Tz/9dOy8885dbrdv375ddh5K7UqT+gkotdNRapeq1atXJ41Lldr5Z8OGDbmOS+2ilTou9Xnk3bGpO2NTj4XUYzDvDmh5d0pLlfrepcr7b7irLxHned12a1R71qjKxnVnrDWqY7W+RqWO6WwOzkkuTllF8re+9a0YP358fOhDH4p3vvOdMXr06IiIeOmll2LhwoWx0047xbXXXhsREWvWrIn58+fHOeeck9+sAQCgQGUVyTvuuGP84Q9/iFmzZsWDDz4Yr776akRE7LHHHjF58uSYOHFiDBgwICL+fk7yfffdl9+MAQCICIlvkbpdJK9Zsya+853vxL777htTpkyJKVOmFDEvAADoNd3+4l5jY2N88YtfjLlz5xYxHwAAEri6RbHKurrFXnvtFfPmzct5KgAAUB3KKpIvu+yyuOGGG+Lhhx/Oez4AACSQJBer7KtbDBs2LI466qgYNWpUjBo1Kvr167fJmFKpFHfeeWcukwQAgJ5UVpH8+9//PkqlUuy4447R3NwcL774YrsxeV6bFACATblOcrHKKpKdjwwAwNtZWUUyAAC9S5JcrIqL5OXLl8fSpUs7bAu54447dmtbffr06bJNZmpbztTTPVJboOa9vXXr1uW6vTVr1uS6vdS2nKktblOfb2oL2d78401t5Zp6zKS+1r11ClNqy9fU9y61dW3q801dE/JgjSp/e9aonmON6tiWsEaRr7KL5Ouvvz6+8Y1vxMsvv9zpmNQDEgCA7pEkF6usS8DNmjUrzjvvvNh1113j0ksvjdbW1pg8eXJMnTo1tt1229hnn33i+9//ft5zBQCAHlFWkXzttdfGUUcdFffff3984hOfiIiIY445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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", @@ -893,37 +484,22 @@ ")\n", "\n", "plt.show()" - ] + ], + "execution_count": null, + "outputs": [], + "id": "11e29014" }, { "cell_type": "markdown", - "id": "b744c04c", "metadata": {}, "source": [ "## Prediction Power Spectrum Plot" - ] + ], + "id": "b744c04c" }, { "cell_type": "code", - "execution_count": 21, - "id": "43a6b047", "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Computing power spectra: 0%| | 0/6 [00:00" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], "source": [ "from matplotlib.ticker import FormatStrFormatter\n", "\n", @@ -1059,30 +624,22 @@ "# No legend; plots are closer via reduced hspace and smaller figure height\n", "plt.savefig(\"train-loss.pdf\", bbox_inches=\"tight\")\n", "plt.show()" - ] + ], + "execution_count": null, + "outputs": [], + "id": "6ba47465-6ab8-41dd-8b2d-242a27217866" }, { "cell_type": "markdown", - "id": "2f2b63f9", "metadata": {}, "source": [ "## Plot reference Fourier modes (irreps of G)" - ] + ], + "id": "2f2b63f9" }, { "cell_type": "code", - "execution_count": 23, - "id": "6f3db659-353d-40b2-94cf-37ed2153f0b0", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Saved 10 mode images (and .npy arrays) to: fourier_modes/\n" - ] - } - ], "source": [ "import os\n", "import numpy as np\n", @@ -1166,22 +723,14 @@ " np.save(npy_path, img)\n", "\n", "print(f\"Saved {len(tracked_freqs)} mode images (and .npy arrays) to: {out_dir}/\")" - ] + ], + "execution_count": null, + "outputs": [], + "id": "6f3db659-353d-40b2-94cf-37ed2153f0b0" }, { "cell_type": "code", - "execution_count": 264, - "id": "996520ee-f19f-48a4-b453-a22274a91661", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Saved vertical stack with RIGHT labels and spacing (no edge clipping): fourier_modes/fourier_modes_stacked_rightlabel_spaced.png\n" - ] - } - ], "source": [ "# ---- Save one tall, vertically stacked image (labels on RIGHT) with extra whitespace\n", "# and safe padding so thick borders aren't trimmed ----\n", @@ -1251,63 +800,22 @@ "plt.close(fig)\n", "\n", "print(f\"Saved vertical stack with RIGHT labels and spacing (no edge clipping): {stack_path}\")" - ] + ], + "execution_count": null, + "outputs": [], + "id": "996520ee-f19f-48a4-b453-a22274a91661" }, { "cell_type": "markdown", - "id": "5932a60e-e3d1-4011-946e-54dfae1a62f6", "metadata": {}, "source": [ "## W_out Plot" - ] + ], + "id": "5932a60e-e3d1-4011-946e-54dfae1a62f6" }, { "cell_type": "code", - "execution_count": 26, - "id": "44adb93e-a396-4b7c-8350-056934a49ddd", "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], "source": [ "# ========= Inputs you already have =========\n", "# param_hist_2d : list of state-dicts with key \"W_out\"\n", @@ -1430,33 +938,22 @@ " handles=handles, ncol=4, frameon=True, loc=\"center\", title=\"Dominant frequency\"\n", ")\n", "plt.show()" - ] + ], + "execution_count": null, + "outputs": [], + "id": "44adb93e-a396-4b7c-8350-056934a49ddd" }, { "cell_type": "markdown", - "id": "d3232d4a-d65e-4282-be33-00da055ebb98", "metadata": {}, "source": [ "## W_mix Plot" - ] + ], + "id": "d3232d4a-d65e-4282-be33-00da055ebb98" }, { "cell_type": "code", - "execution_count": 27, - "id": "6caf85e2-4706-4695-8499-16aad2a3061d", "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAvEAAAGPCAYAAADV+I/NAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAWlNJREFUeJzt3Xd8VFX+//H3nfROgIQOoRcBpYhSBRWUtaOIa9e167piwYIK6P5Qd7/i16+9gm1dRMC2YkfpoiIIClKkhN6STAqpM78/MMEswznJTHLDwOv5eOShzGfu59xMJief3Jz7OY7f7/cLAAAAQNjw1PUJAAAAAKgeingAAAAgzFDEAwAAAGGGIh4AAAAIMxTxAAAAQJihiAcAAADCDEU8AAAAEGYo4gEAAIAwQxEPAAAAhJnIuj4BhJ93331XM2bMkCQ5jqPY2Fg1bNhQnTp10rBhw9SsWbOK5z788MNauXJlwDwTJkxQ+/btKz328ccf680339TgwYN13XXXHXTMH/N5PB7Fx8eradOm6t69u4YOHaqkpKSa+jQBICjMkQDcQBGPoERHR2vs2LGSpMLCQm3atElfffWVZs+ereuuu04DBgyoeG6HDh10ySWXHJSjRYsWBz02f/58SdLixYt11VVXKSoq6qDnlOfz+/3Ky8vT6tWr9cknn+iLL77QPffco5YtW9bUpwkAQWGOBFDbKOIRFMdxKl0h6tatm4YOHap//vOfevHFF9W+fXs1atRIkpSQkHDQ1aRAtm3bpvXr16tr165asWKFfvzxR/Xp0+eg5/13vp49e+rUU0/Vgw8+qCeffFL//Oc/5fGwUgxA3WGOBFDb+C5GjYmOjtYVV1yh0tJSzZ49u9rHz58/X47j6JprrlFKSkrFFaeqaNiwoc477zxt27ZNK1asqPbYAFDbmCMB1CSKeNSo5s2bq379+lq7dm3FY36/X2VlZZU+fD7fQccuWLBAHTt2VHp6uk488UQtXbpUBQUFVR67W7dukqQ1a9aE/okAQC1gjgRQU1hOgxpXv359ZWdnV/x76dKluuyyyyo9x+Px6M0336z497p167R9+3adccYZkqR+/frp008/1eLFizV48OAqjdugQQNJqjQ2ABxumCMB1ASKeNQKx3Eq/r9jx44H/YD6bwsWLFBERIROOOEESVL79u2Vnp6u+fPnV/kHlN/vP2hsADgcMUcCCBVFPGrc3r171bhx44p/x8fHq02bNod8vs/n08KFC9WlSxc5jqP8/HxJUq9evfTJJ58oKytLqampVRpXkurVqxfaJwAAtYg5EkBNoIhHjdq8ebP27t2rQYMGVfmYn3/+WdnZ2crOzta11157UHzBggUVf0I2+emnnySpSl0eAKAuMEcCqCkU8agxxcXFmjJliqKiojRkyJAqH7dgwQLFxMTojjvuOKjt2RtvvKH58+dbf0Dt3r1bM2fOVLNmzXTMMccEdf4AUJuYIwHUJIp4BMXv91d0OCgsLFRmZqa++uor7dy5UzfccIPS0tIqnpufnx+wG0KjRo0UGxur7777Tn369FHXrl0Pes5JJ52k119/XVu3blXTpk0r5fP7/crPz9fq1av15ZdfKjIyUrfeeiv9jwHUOeZIALWNIh5BKS4u1rhx4yRJsbGxSktL0zHHHKPRo0dX2lJcklavXl3x3D+66aabFB0drYKCAg0cODDgOP369dNbb72l+fPna+TIkZXyOY6j+Ph4NWnSRKeffjpbigM4bDBHAqhtjr/8dnUAAAAAYYG/qQEAAABhhiIeAAAACDMU8QAAAECYoYgHAAAAwgxFPAAAABBmaDGJKrn//vs1aNAgDRs2rNbG2LFjh15//XVt3LhRubm5SkhIUIcOHTRq1Cg1adLkoOfPmTNHs2bN0tatWxUTE6O2bdtq9OjRio6Ols/n01133aXzzjtPAwYMqLVzBgCJORKA+yjiYfXdd99p9+7dGjx4cK2OU1RUpJSUFI0aNUoNGjRQdna23n//ff3973/XI488ouTk5Irnvvfee/rwww91zjnnqH379srNzdWKFSvk8/kkSR6PR2eddZamT5+uvn37KiIiolbPHcDRizkSQF2giIfVrFmz1LdvX0VHR9fqOC1bttR1111X6bHWrVvrjjvu0PLly9W/f39J0tatWzV9+nTdcccdOu644yqe26dPn0rH9u3bV6+99pqWLFmi448/vlbPHcDRizkSQF2giIfRzp079euvv+rCCy+seOzhhx9WbGysBg0apHfeeUd79+5V27Ztde2116pRo0Y1On757oKlpaUVj33zzTdKS0ur9MMpkJiYGPXo0UNz587lBxSAWsEcCaCuUMTD6Oeff5bH41Hbtm0rPb5x40Z99NFHuuiii+Tz+fTmm2/qmWee0UMPPVTxHJ/PJ9uGwI7jyOOpfH+1z+eTz+dTVlaWpk6dqgYNGlT6AbN27Vq1aNFCM2fO1Keffqr8/Hy1bdtWl156qdq1a1cpV/v27fXuu+/K5/MdNA4AhIo5EkBdoYiH0bp169SkSRNFRUVVejw/P18TJ06sWINZWFioF154QXv27FGDBg0kSbfddpt2795tzD9o0CDdcMMNlR577rnnNH/+fElSo0aNdN999yk+Pr4inp2drfXr1yszM1NXXXWVoqOj9f777+uRRx7RpEmTlJKSUvHcVq1aad++fdq6dauaN28e/AsBAAEwRwKoKxTxMMrOzq50s1S5Vq1aVXq8WbNmkqS9e/dW/IC68847K/2JN5DyPwX/0ciRI3X66adrz549mjVrliZOnKhx48apYcOGkiS/36/CwkLddtttatmypaT9V5P+9re/6bPPPtPIkSMPyp+VlcUPKAA1jjkSQF2hiIdRSUmJIiMPfpskJCRU+nf5c0pKSioea968eZX+VPzf0tPTlZ6errZt2+rYY4/V7bffrg8//FBXXXVVxdiJiYkVP5wkKTExUa1atdLmzZsDnldxcbHxPAAgGMyRAOoKRTyMEhISrH/uPZRg/1T8RzExMWratKl27NhR8Vjz5s0r/fuP/vgDUpIKCgokBb6aBQChYo4EUFco4mHUtGlT/fLLL0EdG+yfiv+ooKBAmZmZlVqj9ejRQ9988402bNigjIwMSVJubq42bNig4cOHVzp+165dkqTGjRsH8RkAgBlzJIC6QhEPow4dOmjGjBmVbsaqqj/+Kbcq3n33Xe3bt08dOnRQcnKydu3apU8++UQlJSWVfvD07t1bbdq00ZNPPqkLL7yw4qatyMhIDR06tFLO9evXq1mzZgHXrAJAqJgjcTSYM2eO/vnPf+qHH37Qtm3bNHPmTJ177rm1OuaWLVt09913a9asWSooKFC7du00efJk9e7du1bHDScU8TDq0qWLEhMTtWzZMp188sm1Olbr1q318ccfa+7cuSoqKlJqaqo6deqkv/3tb5V6K3s8Ho0ZM0ZvvvmmXnnlFZWWlqpjx4568MEHVa9evUo5ly5detAGJwBQU5gjcTTIz8/Xscceq6uvvlojRoyo9fGysrLUv39/DRkyRLNmzVJaWprWrFmj1NTUWh87nDh+2101OOq9+eab2rBhg+6///66PpVq2bx5s+655x5NmjRJ6enpdX06AI5QzJE4mjiOc9CV+KKiIo0dO1Zvv/22srOz1bVrVz322GMaPHhwUGPcc889mj9/vubOnVszJ32EYmcHWJ1xxhlat26dNm7cWNenUi3/+c9/NHDgQH44AahVzJE42t1yyy1auHCh/v3vf+unn36qaIO6Zs2aoPJ98MEH6t27t0aOHKn09HT16NFDL730Ug2fdfijiIdVamqqrr/+enm93ro+lSrz+Xxq1KiRLrjggro+FQBHOOZIHM02bdqkyZMna9q0aRo4cKDatm2rO++8UwMGDNDkyZODyvnbb7/pueeeU/v27fXpp5/qxhtv1K233qrXXnuths8+vLGcBgAAAFXy38tp/vOf/+jMM888aG+EoqIijRgxQlOnTtWqVavUuXNnY967775bjz76qCQpOjpavXv31oIFCyrit956q7777jstXLiwZj+hMMaNrQAAAAhKXl6eIiIi9MMPPygiIqJSLDExUZLUpk0brVy50pjnj92dmjRpoi5dulSKd+7cWdOnT6+hsz4yUMQDAAAgKD169FBZWZl27typgQMHBnxOdHS0OnXqVOWc/fv316+//lrpsdWrV6tVq1YhneuRhiIeAAAAh5SXl6e1a9dW/Hv9+vVaunSp6tevrw4dOuiSSy7R5Zdfrscff1w9evTQrl279OWXX6p79+4644wzqj3e6NGj1a9fP02cOFEXXnihFi9erBdffFEvvvhiTX5aYY818ahTRUVFeuSRR3TvvfcqJiamrk8HAA47zJOoa19//bWGDBly0ONXXHGFpkyZopKSEv3973/X66+/ri1btqhhw4Y68cQTNWHCBHXr1i2oMT/66CPde++9WrNmjVq3bq3bb79d1157baifyhGFIh51yuv1KiUlRTk5OewYCAABME8CCIQWkwAAAECYoYgHAAAAwkyVbmz1+XzaunWrkpKS5DhObZ8TjiLlm6OE0yYpCA9+v1+5ublq2rSpPJ7av17BPInawjyJ2uL2PFmusLBQxcXFQR8fHR2t2NjYGjyj8FSlNfGbN29WixYt3DgfAKhRmZmZat68ea2PwzwJIFy5NU9K+wv4BnGJKlBZ0DkaN26s9evXH/WFfJWuxCclJUmSfn3qTiXFBb4zPnfjDmue/CvGGeP1YiKMcUlK8W4yxstSGhvjvkj7F3z+5lxjfGCa/bdV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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], "source": [ "# =========================\n", "# Config\n", @@ -1737,22 +1234,14 @@ "\n", "plt.savefig(outfile, bbox_inches=\"tight\", dpi=200)\n", "plt.show()" - ] + ], + "execution_count": null, + "outputs": [], + "id": "6caf85e2-4706-4695-8499-16aad2a3061d" }, { "cell_type": "code", - "execution_count": 28, - "id": "acd308eb-032e-46e2-8a55-582e2d06a793", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Saved 2 files like 'Wmix_grouped_by_Wo_freq_labeled_t####_tight.pdf' (tight, no labels/legend).\n" - ] - } - ], "source": [ "# =========================\n", "# Save tight heatmaps (keep separators + rectangles; no labels/legend)\n", @@ -1815,33 +1304,22 @@ "print(\n", " f\"Saved {len(steps)} files like '{base}_t####_tight{ext}' (tight, no labels/legend).\"\n", ")" - ] + ], + "execution_count": null, + "outputs": [], + "id": "acd308eb-032e-46e2-8a55-582e2d06a793" }, { "cell_type": "markdown", - "id": "3493ec18-299a-4642-94ec-a13723c80882", "metadata": {}, "source": [ "## Phase Plot" - ] + ], + "id": "3493ec18-299a-4642-94ec-a13723c80882" }, { "cell_type": "code", - "execution_count": 235, - "id": "d0a2b283-bb8b-4145-9519-3af401532cc4", "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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V407REREdG8sXuuR27dv44svvsCqVatqjQbp2rUrFi1ahJkzZ+r9/Dd9XlTXlJKSgu+//x7r1q1DcXGxxnOenp74+OOPMXXqVBaxiZqoiooK/PDDD/jss89qjQZp3749FixYgHnz5un9Jq9NJWfn5ORgzZo1+Omnn5Cdna3xnKOjI9599108//zzOrFJJhE1PKVSiS1btmDZsmW4evWqxnN2dnYIDg7GggUL9H6T16aSs4uKirBp0yZ89913uHLlisZz1tbWeOWVV/Daa6+xiE1ERNQEsHitB8rLy7Fq1Sp89tlnKCgo0HhuwoQJWLx4MUaOHKmXHXt1aSqLarWioiJs3LgRq1atqrW49vX1xeeff46RI0dKFB0RNTSlUolffvkFy5YtQ2ZmpsZzAwcOxOLFizFlypQmkd+Appezq6qq8Pvvv2PlypWIjIzUeM7d3R2ffPIJnnzySV54JGoiBEHA3r178dZbbyEhIUHjOS8vLyxatAjPPPOM3jeHqDW1nK1SqbBv3z6sXLkShw4d0njOwcEB7777Ll544QXePUNERKTH+JuXDlMoFFi7di08PDywdOlSsXBtYmKCBQsW4PLly9izZw9GjRrVZArXTZGNjQ0WLVqEpKQk7N69G0OGDBGfi4qKwqhRozBq1ChERUVJGCURPSpBELBr1y54e3tjzpw5YuFaJpNh+vTpCA8Px6lTp/DEE080iYJBU2ViYoKZM2eK/78ee+wx8bnU1FTMmDEDffr0wYEDB2rNLSci/XL69GkMHToUEydO1Chcjxo1CgcOHEBiYiJeeOGFJlO4booMDAwwYcIEHDx4EImJiQgODoaRkREAID8/H0uWLEGXLl3w66+/QqlUShwtERERPQwWr3WQIAj466+/0L17dwQHB+P69esAqhdns2bNQnJyMr7//nt4eHhIHCnVh4GBASZOnIhjx45h79696Nmzp/jcv//+iz59+uDJJ59EcnKyhFES0cM4ceIE/P39MXnyZFy4cEE8Pn78eMTGxmLr1q3o27evhBFSfclkMgwcOBB//vknwsPDMWLECPG5mJgYjB07FsOHD0d4eLiEURLRw0hMTMSkSZMwaNAgjbnWfn5+OHLkCA4ePIjRo0ezOUTPdO3aFT///DMuXryI6dOni8fT0tLw7LPPwsfHB//88w8vPBIREekZFq91zNGjR9G/f388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2rUrbG1t23S/RETGrLa29qbG7Nu5quV6LC0tb2rM5lUwREREpEsMr0lvBEFAeXm5eJB96dKlZpeXaz9XKpWQy+XNLkvXXqZuaWkJNze325qXlYiIbt6V6wkUFhaipKQEjY2NzcZr7ecymazFeG1qagpzc3O4urre1rysRER0a7TrCRQWFqKoqAgKhaLVY22NRgMzM7NWj7WdnZ3FYNrOzo5zUhMREZHkGF4TERERERERERERkcGRS10AEREREREREREREdHVGF4TERERERERERERkcFheE1EREREREREREREBofhNREREREREREREREZHIbXRERERERERERERGRwGF4TERERERERERERkcFheE1EREREREREREREBofhNREREREREREREREZHIbXRERERERERERERGRwGF4TERERERERERERkcFheE1EREREREREREREBofhNenUihUr0K9fP9ja2sLW1hbDhg3Djh07buu55s6di9dffx0ffvghhgwZAhsbG7i4uOCee+7BuXPn2rhyIqKOieM2EZHx4JhNRERE7R3Da9IpT09PLF26FHFxcTh16hRGjx6NqVOnIjk5+ZaeR61WY+vWrYiMjER0dDSefPJJHD9+HHv27IFSqcT48eNRW1uro++CiKjj4LhNRGQ8OGYTERFReycTBEGQugjqWBwdHfHJJ5/g0UcfRWBgINLS0lp93Ndff41FixYBAA4fPowZM2YgPz8fMpms2eNKS0vh4uKC6OhojBw5Uuf1ExF1NBy3iYiMB8dsIiIiak/YeU16o1ar8euvv6K2thbDhg0DAPzxxx8AgH379qGwsBBZWVmQy+XYsGEDFixYIH5tVFQUIiIiWhxMA0BlZSWApgN1IiJqOxy3iYiMB8dsIiIiao8YXpPOJSYmonPnzrCwsMDChQuxadMm9O7dGwBQXFwMU1NThIWFwc3NDZcuXYJGo8GIESNgYWEhPsdff/2FyMjIFs+t0WjwzDPPICwsDH369NHb90RE1J5x3CYiMh4cs4mIiKg9M5W6AGr/AgICEB8fj8rKSmzcuBGzZ89GdHQ0evfujcTERPj7+4sHzwkJCXBxcYGrq6v49ampqSgoKMCYMWNaPPeTTz6JpKQkHDlyRG/fDxFRe8dxm4jIeHDMJiIiovaM4TXpnLm5OXr06AEACA4OxsmTJ7Fs2TJ89913OHv2LPr27Ss+NiEhodltoOkyxnHjxsHS0rLZ9kWLFmHr1q04dOgQPD09df+NEBF1EBy3iYiMB8dsIiIias84bQjpnUajgUKhAACcPXsW/fr1E+9LSEhodhtouoxx6tSp4m1BELBo0SJs2rQJ+/fvh6+vr34KJyLqoDhuExEZD47ZRERE1J4wvCadeuWVV3Do0CFkZWUhMTERr7zyCg4ePIiHHnoIGo0GycnJzQ6gL168CB8fH/F2SUkJTp06hSlTpojbnnzySaxbtw7r16+HjY0NioqKUFRUhPr6en1+a0RE7RLHbSIi48Exm4iIiNo7ThtCOlVSUoJZs2ahsLAQdnZ26NevH3bt2oVx48YhPT0ddXV1zQ6o+/bti7feegvBwcEICwvDli1bEBISAicnJ/ExK1asAACMGjWq2b7WrFmDOXPm6OPbIiJqtzhuExEZD47ZRERE1N7JBEEQpC6C6FoiIyMxfPhwvPjii1KXQkREN4HjNhGR8eCYTURERIaO04aQQRs+fDhmzpwpdRlERHSTOG4TERkPjtlERERk6Nh5TUREREREREREREQGh53XRERERERERERERGRwGF4TERERERERERERkcFheE1EREREREREREREBofhNREREREREREREREZHIbXRERERERERERERGRwGF4TERERERERERERkcFheE1EREREREREREREBofhNREREREREREREREZHIbXRERERERERERERGRwGF4TERERERERERERkcFheE1EREREREREREREBofhNREREREREREREREZHIbXRERERERERERERGRwGF4TERERERERERERkcFheE1EREREREREREREBofhdTsXEhKC5cuXi7dPnTqFuXPnIjAwEHK5HFOmTLnt5z558iTmzZuHHj16oFOnTujZsydeeeUV1NbWNnvcuHHj8P7779/2fubMmYM5c+bc9tfrgkwmu+ZHYWGh1OUREREREREREREZPVOpCyDd2bRpE7KysjBv3jxx29GjR3H48GEMHToU9fX1d/T8v/32G9LT0/Hiiy/C398fycnJePPNN3HixAns379ffNyrr76K++67D0888QQcHBzuaJ+GIiYmpsW2WbNmwdraGu7u7hJURERERERERERE1L4wvG7HvvzyS8ycORNWVlbitqeeegqLFy8GAIwaNeqOnv+ll16Cs7OzeHvUqFFwcHDAQw89hLi4OAQHBwMA7r77bjg4OGDt2rV45pln7mifhiI0NLTZ7aysLKSnp+Pjjz+WqCIiIiIiIiIiIqL2hdOGtFOZmZk4fPgw7r///mbb5fK2+ye/MrjWGjhwIACgoKCg2fbp06dj7dq1bbbvm3Hw4EHIZDLs2bMHDz74IGxsbODt7a2TgHn9+vWQyWSYOXNmmz83ERERERERERFRR8Twup3at28fTE1NERISotf9HjlyBADQq1evZtvvuusuxMfHo7S0VK/1AMDChQvh7++PTZs2ISIiAi+99BJ27twp3i8IAlQq1Q0/rueXX37ByJEj4enpqetvh4iIiIiIiIiIqENgeN1OnTx5Ev7+/rCwsNDbPi9duoS3334bU6dORc+ePZvd179/fwBAbGys3urRmjZtGt5++22MHTsWX3/9NXx8fLBx40bx/rVr18LMzOyGH1lZWa0+/9mzZ5GUlIQHH3xQT98RERERERERERFR+8c5r9upwsLCVqf10BWlUokHHngAALBixYoW9zs5OYl16dv48ePFz2UyGQIDA5GXlydui4iIwMmTJ2/4PB4eHq1u//nnn2FmZtZiihYiIiIiIiIiIiK6fQyv26mGhga9dV0LgoB58+YhNjYWhw8fhru7e4vHaGupr6/XS01Xsre3b3bb3NwcFRUV4m1HR0fY2dnd8HlMTVv+uQiCgF9//RWTJk2Co6PjnZZKREREREREREREf+O0Ie2Uo6Njs4BWl/773//i999/x6ZNm8TpQa6mraVLly56qelW3Mm0IUeOHEFOTg6nDCEiIiIiIiIiImpj7LxupwICAnDgwAGd72fp0qX44osv8PPPP2PMmDHXfJw2+A0ICNB5TbfqTqYNWb9+PTp37ozIyEhdlEZERERERERERNRhMbxup8LCwvDuu+8iLy8Pnp6e4vbS0lJER0eLn9fU1IiLF06ePBmdOnUCAIwaNQpZWVnXXKQQaApuX3nlFTz88MPw9fXF8ePHxfu6d+/ebM7tU6dOoXPnzhgwYEAbfpdto0uXLrfVEa5SqbBx40bcc889sLKy0kFlREREREREREREHRfD63Zq1KhR6NKlC3bs2IEFCxaI25OTkzF9+vRmj9XezszMhI+PDwCgtrYWbm5u193H7t27AQDr1q3DunXrmt23Zs0azJkzR7y9Y8cO3HvvvTAxMbndb8ng7Nq1C5cuXeKUIURERERERERERDogEwRBkLoI0o3nn38eZ86cwf79+2/p6+rr62Fvb4+ffvoJ//73v++4jvLycri5uWHPnj0YOXLkLX+9NgT/8ccf77gWIiIiIiIiIiIiMg5csLEd++9//4sTJ04gISHhlr7u5MmT8PPzw/33398mdXz99dcICwu7reCaiIiIiIiIiIiIOiZOG9KOubu748cff0Rpaektfd3IkSORmpraZnU4Ojriq6++arPnIyIiIiIiIiIiovaP4XU7d/X81lJYtGiR1CUQERERERERERGRkeGc10RERERERERERERkcDjnNREREREREREREREZHIbXRERERERERERERGRwGF4TERERERERERERkcFheE1EREREREREREREBofhNREREREREREREREZHIbXRERERERERERERGRwGF4TERERERERERERkcFheE1EREREREREREREBsdU6gKIrmXu3Lno2rUrrK2t8eeffyItLQ1WVla466678NFHHyEgIEDqEomIiIiIiIiIiEhH2HlNBkmtVmPr1q2IjIxEdHQ0nnzySRw/fhx79uyBUqnE+PHjUVtbK3WZREREREREREREpCMyQRAEqYugjiUwMBBpaWmt3vf1119j0aJFOHz4MGbMmIH8/HzIZLJmjyktLYWLiwuio6MxcuRIfZRMREREREREREREesbOa9K7P/74AwCwb98+FBYWIisrC3K5HBs2bMCCBQsAAFFRUYiIiGgRXANAZWUlAMDR0VF/RRMREREREREREZFeMbwmvSsuLoapqSnCwsLg5uaGS5cuQaPRYMSIEbCwsAAA/PXXX4iMjGzxtRqNBs888wzCwsLQp08ffZdOREREREREREREesIFG0nvEhMT4e/vLwbVCQkJcHFxgaurKwAgNTUVBQUFGDNmTIuvffLJJ5GUlIQjR47otWYiIiIiIiIiIiLSL4bXpHdnz55F3759xdsJCQnNbkdFRWHcuHGwtLRs9nWLFi3C1q1bcejQIXh6euqtXiIiIiIiIiIiItI/ThtCenf27Fn069dPvJ2QkNDs9l9//YWpU6eKtwVBwKJFi7Bp0ybs378fvr6+eq2XiIiIiIiIiIiI9I/hNemVRqNBcnJys7D64sWL8PHxAQCUlJTg1KlTmDJlinj/k08+iXXr1mH9+vWw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168fdu3aZRBThdTU1ODIkSPIyMhAaGgo+vXrx85YI2Rra4uRI0eia9euOHr0KFJSUgwiJB49ejQ2bdoEc3NzAMC6devw+OOPQ6PRSFwZERERERERERF1VAyv/1ZTU4PJkycjMzMTABAYGIg9e/ZIvjjj1d3Wd999N5ycnCStie6MXC5HQEAARowYYVBd2BMnTsTvv/8unhRZtWoVlixZInFVRERERERERETUUTG8BqDRaDBr1iwkJiYCALp37459+/bBxcVF0rpqampw9OhRdlu3U3Z2dgbXhT116lSsX79enIrm7bffxh9//CFpTURERERERERE1DExvAbwzjvvYNOmTQCaAsVt27bB3d1dsnoEQUBGRgYOHjwIW1tbdlu3Y611YVdUVEha0/Tp0/HRRx+Jt2fNmoWEhAQJKyIiIiIiIiIioo6ow4fXGzZswLvvvgugKUj87bffEBAQIFk9KpUKJ0+exIULFzB06FB2W3cQV3ZhHzlyBNnZ2ZLW8/zzz+ORRx4BANTV1SEyMhIlJSWS1kRERERERERERB1Lhw6vz5w5g9mzZ4u3P/nkE0yYMEGyeurq6nD48GEolUqMGjUKzs7OktVC+qftwh46dCiSk5ORlJQk2YKJMpkM33//PUJCQgAAOTk5uP/++9HY2ChJPURERERERERE1PF02PC6uLgYU6dORX19PQBg9uzZePbZZyWr5/Lly4iOjkaXLl0wbNgwmJubS1YLScvZ2Rnh4eEoKSnB8ePHJQuMLS0tsWnTJnh4eAAADh8+jEWLFkEQBEnqISIiIiIiIiKijqVDhteNjY2YNm0acnNzAQChoaH49ttvIZPJJKknKysLMTExCAwMRL9+/cTF8qjjsra2xogRI2BiYoJDhw6hurpakjo8PDywefNmWFhYAABWrlyJb775RpJaiIiIiIiIiIioY+lwKakgCHjiiSdw9OhRAEDXrl3x559/wtLSUu+1aDQanD17FqmpqQgNDYWPj4/eayDDZWZmhpCQEHh4eODQoUMoLi6WpI4hQ4Zg1apV4u3Fixdj//79ktRCREREREREREQdh0zoYHMAfP3113j66acBNE2LcPjwYQwePFjvdTQ2NuLkyZNobGzE0KFD0alTJ73XIBWNRgOFQoGGhgY0NDRAoVBApVJBEARoNBqo1Wqkp6fD398fpqamkMvlMDMzg6WlpfhhZmYmWae8FPLy8hAfH49evXqhe/fuknzvL7/8Mj766CMAgKOjI2JjY9G9e3e910FERERERERERB1Dhwqv9+7di4kTJ0KtVgMA1q9fj5kzZ+q9jpqaGsTExMDOzg6DBg2Cqamp3mvQNUEQUF1djcrKSlRUVKCmpkYMqhUKBQDA3NxcDKNNTU0hk8kgk8kgCALy8/Ph4eEBmUwGjUaDxsZGMexWq9WQy+WwsLCApaUlrKysYGtrC3t7e9jZ2UnSRa8P5eXliI2NhbOzMwYMGKD36WXUajWmTp2Kbdu2AQB69+6NmJgY2Nra6rUOIiIiIiIiIiLqGDpMeF1aWoqgoCCUlpYCAF555RV88MEHeq+jqqoKx44dg5eXF3r37t0uuoe1QXVFRYUYVldWVgKAGCrb2Ng065y2sLC4ZviqVCqxfft2TJ48GWZmZq3ef2Xndn19PaqqqsSQ3NLSUgyy7e3t4eDgIM7ZbOwaGhpw/Pj/s3ff8XXXdf//H58zcrL3OGnSZrRpuveALigUUBD0UhEv9UJZ4kDUi8uv4sKN66filiEol14qolIQEGhLW7ro3k1H0jS72Ttnfn5/pDmmpZSOfD4naZ/32y23npOcfl6vk5zmj+d59fXeSFxcHHPmzMHpdNpav6Ojg8suu4z9+/cD/QedPvHEE7b2ICIiIiIiIiIil4ZLJry+5ZZb+Mtf/gLA9ddfz7PPPmv75GpbWxsbNmyguLiY0tJSW2sPtVAoRFNTE/X19dTX1xMIBCJh8cCfiYmJ5/U9fqvw+q3+bnt7eyREb2tro7u7m9TUVLxeL16vl6SkpBH9poHf72fDhg3ExMQwb9482wPsw4cPM3v2bDo6OgB47rnnuOGGG2ztQURERERERERELn6XRHj91FNP8b73vQ+AjIwM9u7dS05Ojq09tLa2smHDBkpKSigpKbG19lDx+Xw0NDRQX1/P8ePHiYmJiQTCmZmZQ/ZmwIWE16fT19cX6buxsRGPx4PX6yUnJ2dI+7ZTIBBg48aNOBwO5s+fb/vqmd/+9rfccccdAOTm5rJ3717S0tJs7UFERERERERERC5uF314ffz4cSZPnkxTUxMA//d//8f73/9+W3tobW1l/fr1kcP2RpJQKERtbS3Hjh2jubmZlJSUSGCdnJxsyQTzUIfXg4VCIRobGyMT46FQiLy8PAoKCkhNTR1RE9nBYJBNmzZhmiaXXXaZrQG2aZrccMMNvPDCCwDceuut/O53v7OtvoiIiIiIiIiIXPwu+vD65ptv5q9//SsA7373u/nrX/9qa0DZ1tYWCa6Li4ttq3uhOjs7OXr0KFVVVXg8HgoKCsjLyyMuLs7y2laG14OZpklraytVVVVUV1cTHx9PQUEBo0ePtrTuUAoGgydNYNu5QqS6upopU6ZE9psvX76cG2+80bb6IiIiIiIiIiJycbuow+u//OUv3HLLLUB01oV0dHSwbt06SkpKGDdunG11z5dpmhw/fpzy8nKampoYNWoUhYWFpKen2xr42xVeDxYMBqmpqeHo0aN0dXVRUFBAUVERCQkJttS/EIFA4KQd2HauQXniiSe47bbbAPB6vezdu5f09HTb6ouIiIiIiIiIyMXrog2vT10X8qc//SkSZNuhs7OTdevWUVRUNOwPZzRNk7q6Og4cOIDf76ewsJDCwkJiY2Oj0k80wusBA9PY5eXl1NXVkZuby4QJE0hMTLS1j3MVCARYv349cXFxzJkzx7YA2zRNbrzxRv75z38C8KEPfYgnn3zSltoiIiIiIiIiInJxuyjDa9M0ufnmm3n66acBeM973sNTTz1l2/Swz+dj9erV5OfnM2nSJFtqnq/Gxkb27dtHb28vpaWljBkzxtbVE6cTzfB6sN7eXsrKyqiqqmLMmDGUlpZGLdA/G36/n3Xr1pGens706dNtq1tTU8PkyZMj60OeeeYZbrrpJtvqi4iIiIiIiIjIxemiDK///Oc/Rw5lzMzMZO/evWRnZ9tSOxwOs379emJjY5k9e/awPQCwra2N/fv309LSQklJCcXFxbYe+HcmwyW8HtDZ2cmBAwdoaGiguLiYkpKSYdHX6fT09LBmzRpKS0spKiqyre7vfvc7PvKRjwBaHyIiIiIiIiIiIkPDvuW4NmloaOCTn/xk5P4vfvEL24Jr0zTZtWsXwWCQGTNmDMvguru7my1btvDaa6+RnJzMNddcw/jx44dNcD0cJSUlMXfuXBYuXEhraysvv/wyhw8fJhQKRbu1N4iPj2fu3Lns3buXxsZG2+reeuut3HDDDQDU19dz77332lZbREREREREREQuThddeP2JT3yC5uZmAN773vfyvve9z7baFRUV1NfXM3/+/GEXBpumyaFDh1i1ahVOp5Orr76ayZMnExMTE+3WRoy0tDQWLFjAnDlzqK6u5tVXX6WlpSXabb1BRkYGU6dOZcuWLXR3d9tS0zAMHn74YVJTUwH4wx/+wDPPPGNLbRERERERERERuThdVOH1qlWr+Nvf/gb0rwv5xS9+YVvtgd3R8+bNIy4uzra6Z6Ozs5O1a9dSWVnJggULmDlz5rDrcaQwDIPs7GyWLFnCmDFjWL9+PXv37h12U9gFBQXk5+ezadMmAoGALTVHjRrFQw89FLn/3//93/j9fltqi4iIiIiIiIjIxeeiCa9N0+QLX/hC5P4Pf/hD29aFdHd3s3nzZqZOnTqs9vyapsnhw4dZvXo16enpLF26dFj1N5I5HA5KSkq44ooraGpqGpZT2JMnTyY2NpZt27Zh12r7//qv/+Lqq68GoLy8nEceecSWuiIiIiIiIiIicvG5aA5s/Nvf/sZ73vMeAKZMmcKOHTtwOp2W1w0EAqxdu5bs7GymTJlieb2z1dXVxfbt2/H5fMycOZOMjIxot3TWhtuBjW8lHA5z5MgRysrKKCoqYsKECba89s6G3+9nzZo15OXlMXHiRFtqbtmyhblz5wKQnZ3NkSNHSExMtKW2iIiIiIiIiIhcPC6KyetgMMgXv/jFyP0HH3zQlvDQNE22bt1KbGwskyZNsrze2aqsrOTVV18lLS2NK6+8ckQF1yPRwBT2kiVLaGpqYvXq1XR2dka7LQBiYmKYP38+5eXl1NTU2FJzzpw53HzzzQAcP36cH//4x7bUFRERERERERGRi8tFEV4/8cQTlJWVAbBo0SJuuOEGW+oeOnSIrq4u5syZg8MR/W9lOBxm165d7Nu3j/nz5zNlypRhd3DkxSw5OZnFixeTk5PDmjVrOH78eLRbAiApKYnZs2ezfft2urq6bKn5rW99K/IG0g9+8AMaGxttqSsiIiIiIiIiIheP6CeuF6i3t5evfe1rkfvf/e53MQzD8rodHR0cPHiQWbNmERMTY3m9t+L3+9m4cSNNTU0sWbKErKysaLd0SXI4HEyePJlp06bx+uuvc/jwYdv2TZ+J1+tlzJgxbN++3ZZ+xo8fzx133AH0Hxj6ne98x/KaIiIiIiIiIiJycRnx4fXPfvazyDqEG2+8kYULF1peMxwOs337doqKiobFAYgdHR2sWbMGp9PJ4sWLSUhIiHZLl7zRo0ezcOFCjhw5wvbt2wmFQtFuiUmTJuHz+SgvL7el3gMPPEBcXBwAv/zlL6msrLSlroiIiIiIiIiIXBxGdHjd2trKgw8+CIBhGLZNdx4+fJhgMMiECRNsqXcm9fX1rF27lry8PObNmzciDji8VKSlpbFkyRI6OztZt24dfX19Ue3H5XIxY8YM9u/fb8v6kFGjRvHpT38a6P+fAQ888IDlNUVERERERERE5OIxosPr733ve7S1tQFw6623MmXKFMtrDl4XYsehkGdSXl7Oli1bmDFjBhMnTrRlXYqcm7i4OBYtWkRCQsJpD3Js9Af4WWUDH9xZzvt2HOa+A8fY1GZdsJyZmUlBQYFt60M+//nPk5aWBsDvf/979uzZY3lNERERERERERG5OIzY8LqmpoaHHnoIgJiYGL7+9a9bXjMcDrNt2zaKiooigVy0HDp0iAMHDrBgwQLy8vKi2oucmdPpZNasWYwZM4bXXnuN9vZ2AB6rbmTJpgM8VNnApvYutnX08MzxNj64q5z/3HmE1kDQkn4mTpyIz+fjyJEjllx/sNTUVO6//34ATNPki1/8ouU1RURERERERETk4jBiw+tvfOMbkTUMn/zkJykoKLC85qFDhwiHw1FdF2KaJmVlZRw+fJgFCxYMi53b8tYMw2DixIkUFxezbt06/niokgfL6wi8yfTz5vZubt9TgS8cHvJeXC4XM2fO5MCBA2+YBLfCPffcQ35+PgDPPvssr732muU1RURERERERERk5BuR4XVlZSWPPfYYAElJSbZMc3Z0dHDo0CFmzpwZ1XUhBw8epKKigoULF5Kamhq1PuT8lJaWUjSuBMf+XeQFfWd87O7OXv7Z2G5JHxkZGbatD4mLi+NrX/ta5L52X4uIiIiIiIiIyNkYkeH1z3/+c0KhEACf/exnyczMtLTewLqQ4uLiqK4LOXToEOXl5SxYsIDk5OSo9SEXZl9yBq/EpnJ3Vz3ekB+AsGkSCL8xRP5DbbNlfUycOBG/32/L+pAPf/jDjBs3DoCVK1eya9cuy2uKiIiIiIiIiMjINuLC6+7ubh599FGgf9f1Jz7xCctrHjt2jGAwSGlpqeW13syRI0c4dOiQguuLwO6uXl6NTWGNJ5mPddaRHPLTFzbxnybA3t/da1kfLpeLGTNmcODAAXy+M0+BD0Wte++9N3L/pz/9qaX1RERERERERERk5HNFu4Fz9fvf/562tjYA/vM//5OcnBxL6wWDQQ4cOMDUqVOjti6ktraW/fv3s3DhQlJSUqLSw1AJBoN0dHTQ1dWFz+ejr68v8hEIBAiHw5E1FqtXr8bpdOLxeIiNjSU2NhaPx0NcXBxJSUkkJiZiGEaUn9H5eyU2lVac9IUBhwkYnDp7bfFGDzIzM8nMzOTgwYNMnTrV0lof+chH+PKXv0xHRwd/+MMf+O53v2v5/5oQEREREREREZGRa0SF1+Fw+KSJzU9/+tOW1ywvLycuLo5Ro0ZZXut02tvb2b59O7NmzYrqypLzYZombW1ttLS00NbWRnt7O52dnXg8HhITEyOBdGpqKrGxscTExOBwOAiFQmzatIlJkybhcDhOCrk7Ozvp7e2ls7MTwzBITU0lJSWF1NRUMjMziYuLi/bTfkuTEvt7DJiwJiaRODNEfDhM0OnE5Tg5jJ+QGGt9P5MmsXr1asaOHUt8fLxldZKSkrjjjjv48Y9/TF9fHw8//LAt++pFRERERERERGRkMkyrT2sbQv/6179429veBsCSJUtYvXq1pfX8fj8vv/wy8+bNIysry9Jagx33BegOhUkMB9m+fh0FBQVRXVlyLkKhEI2NjdTX11NfX08oFCIjI+OkkDk2NvaME9OBQIDnn3+e66+/HrfbfdrHhMNhOjs7I6F4a2sr7e3tpKSk4PV68Xq9JCcnD8vJ7O5giBnr99IVCgNgAO/va8ZlGPwt/uRJ5AfH53OzN93ynrZt24ZpmsyePdvSOuXl5YwbNw7TNMnLy6OiouJNf8YiIiIiIiIiInJpG1GT1z//+c8jt+2Yuj506BBpaWm2BNemafKP4238vraJ3Z29OE2Tj3XVExfrITk7OlPfZ8s0TY4fP86xY8doaGjA4/Hg9XqZPXs2GRkZOBxDv1rd4XCQkpJy0hoVn89HQ0MD9fX1HDp0iJiYGPLy8igoKCAxMXHIezgfgbDJt8rrIvcNwOMwWBubyqc7a6lzxrDB07/TfHJiHDdmpdrS14QJE1ixYgXjxo2zdDVNcXExN910E8888ww1NTX84x//4Oabb7asnoiIiIiIiIiIjFwjZvK6urqagoICwuEw+fn5HDhyhJVtPRzt9eE2DOalJjArOWHI6vX29rJixQoWLVpEamrqkF33dMKmyX8fqOK5xrbI597T3URByMfPk3IJGA6+Om4U/zVqeO0H9vv9VFZWUlFRQTgcZsyYMeTn55OUlHRBE89nM3n9VkKhEE1NTRw7doz6+nrS09MpLi7G6/VGbRq7MxjisweOsbm9GwC3YdAeDEX2XBcF+rirq55HE3NISs/gN5MLyYyx7/2l3bt3093dzWWXXWZpnRUrVrBs2TIArrnmGl566SVL64mIiIiIiIiIyMg0YiavH3/8ccLh/jULM29+P1duPUxrIHjSYyYnxvHA2FHMSrnwELusrIycnBzLg2uAXxw7flJwfbmvg6mBbn6SnIff6J9a/sbhWkriY7ksNfoTxD6fj4MHD1JZWUlqaipTpkzB6/VaMmF9vpxOJzk5OeTk5ODz+aisrGTXrl3s2bOH0tJSRo8ebWuIXe8L8Il9lRzp6QNgWlI8D00cQ18ozP/VtbCxvQt/OI4j8S7uaannqpLJJNoYXAOMHz+eV155hebmZjIyMiyrs3TpUoqLiykvL+fll1+moqKCoqIiy+qJiIiIiIiIiMjINHzSxjMIh8M89thjABiGwc7Ll70huAbY29XLf+2u4PW2rguq19nZSVVVFRMnTryg67yVyl4fq5o7eLS6kYEB+Nygn5t6WngiMYc2x7/DSxP4bU2Tpf28lUAgwIEDB3j55Zfp6elh0aJFLFq0iFGjRg2r4PpUHo+H8ePHc80111BaWkpZWRmrVq2ivr4eO/7jwYHuXj60qzwSXF+VkczDkwtJd7sYFRvDfUVenpoxjmdmlXD/5bMoyM+L7KC2k8fjYdy4cezdu9fS2g6HgzvvvDNyf+DftoiIiIiIiIiIyGDDN3Ec5OWXX6ayshKAuHkLcefkvuljfeEwnztYTfgCwrf9+/czZswYy/Ykv9bayQd3lnP15jJu21NBgz9IT9gkEArx/p5G/hiXwX4j5g3P4dWWDlpOE9pbLRwOU15eziuvvEJjYyOXX3458+fPt2UqfSg5HA7GjBnDVVddRWFhIdu3b+e1116jpaXFspob2rq4ffdRGv0BAD6Qm8EPS0cT53zzf3pTpkwhEAhw+PBhy/p6M2PHjqWnp4f6+npL63zkIx/B6XQC/f+rIhi0/3UtIiIiIiIiIiLD24gIrx955JHI7aR3vDty2zTN04bUNX1+Xm3pPK9aHR0dNDQ0UFpael5//638pb6F2/dUsKm9fzp8oHsTWOZrpwODje4EwkBv2CQQNiNTsGETmvz2hnwdHR2sXbuWiooKZs6cyaJFiyxdKWEHp9NJcXExy5YtIysri/Xr17N79+4hD1D/0dDKPfsq6Q6FALiv0Mv/K/LifIt1JU6nk5kzZ1JWVkZn5/m9js+Xy+WipKSEsrIyS6evc3NzufHGGwGora3l+eeft6yWiIiIiIiIiIiMTMM+vG5paeGZZ54BwJWeQcKCJZGvDQS8vaHwSSEvwOrW8wv9jhw5Qn5+PrGxsRfU9+kc7O7jK4dqCA/KBAdizPyQn7f5Ong6Nu2kv+M3TXzmv59bwhkmdodSOBzm4MGDrFmzhszMTK688sqoHnZoBbfbzYQJE7jyyitpa2vj1Vdfpbm5+YKva5omvzp2nAcO1xA0TdwOgx+UjubWvMyz/v6lp6dTVFTE9u3bbV8fUlBQQE9Pj6UT6QB33XVX5Pbjjz9uaS0RERERERERERl5hn14/cILL0QmYlOWXY/hcke+FhyYSKY/5O0Jm/SFwwRNk+5g6Jxr+Xw+qqurGTt27JD0fqr/rW0mdEoQ6QAcpsmHe5t4KSaZaqcHE4gx/h1sh8z+kH60J4a82BhLehuss7OTtWvXUlVVxYIFC5g8eXJkxcPFKDExkUWLFlFYWMiGDRvYvXs3odC5v34AAmGTrx2u5ddVxwFIdjl5eHIh12amnPO1JkyYEJX1IS6Xi4KCAo4cOWJpneuuu47s7GwAXnrpJfr6+iytJyIiIiIiIiIiI8uwD6+fffbZyO3Cq6456Wtuw8BtGAyeZQ2Z4Aub/Kupgx9W1HOw++wDscrKStLT00lOTr7Qtk/ruca2k+6HTZPesElpqI8Q8Lzn3wGniUGcw8BpDNyHWn+An1Y2EAhbN4nb0NDAmjVryMjI4MorryQ9Pd2yWsOJYRiMGzeOK664gubmZtavX3/OYWp3MMS9+yv5x/FWAEZ5Yvj91GJmJSecV0/RXB9SVFREQ0MDPT09ltVwOp284x3vAKCnp4eVK1daVktEREREREREREaeYR1e+/1+XnjhBQDS0tK4/dqrT/q6wzCIcfSHvLEOA9egFNsEnqxt4uYdh7llxxH+UNt8xsMOw+EwFRUVFBcXW/FUCJsmHadMg/tNEwcmNQ43P0rwEhq0UsLExDAMPIZBjGEQ53AQ6zB4rLqRD+8up7LXN6T9mabJ4cOH2bx5M9OnT2fKlCkX9bT1m0lKSmLx4sXEx8ezevVq2trazurvNfoD3LangvVt/bvMJyXG8ftpRRTFey6on2itD4mPjycnJ4eKigpL6wzsvQZYvny5pbVERERERERERGRkGdbh9dq1a+no6ADg+uuv5/352aS63xioGoaB0zDwOBzEOwzmpyRwWeq/p10PdPfy/Yo6rtlcxqf3H2Nlc8cbppfr6+txOBx4vV5LnovDMEhyndy72zDID/kJGA4Cxsk/ioF58lS3i3sLcnhx9njGJ/Tv4d7b1cstO4/wj4bWIQk0Q6EQ27Zt48iRIyxcuJD8/PwLvuZI5nQ6mTVrFsXFxbz22mvU1NSc8fGHe/r40K5yyk5M+S9OS+LRKYVkxbjP+PfO1oQJE+jt7aW2tnZIrne2iouLOXbs2HmvUDkb11xzDR5Pf8D/7LPP2r7fW0REREREREREhq9hHV4PnsS86aabSHe7eHRyESmuN58InpeayB+mF/PolCKenz2eT4zJJv/EnuigafJqSwefPXCMZVvK+F55Hfu7ejFNk8rKSsaMGWPpgYTXn7L3uCTYx6e7G3CfqDm4ctA0cQJXpifxtqwUxifG8odpxXxoVAYAvaEwDxyu4f8drH7DRPe5CAQCbNiwge7ubq644grS0tLe+i9dAgzDoKSkhDlz5rBjx4433f+8ub2bj+yuoN4XAOA9Oen8ZMIYEoZwat3pdDJhwgT2799POBwesuu+lYyMDGJiYqirq7OsRkJCAsuWLQOgtraWbdu2WVZLRERERERERERGlmEbXpumGQmvXS4X1113HQAzkuN5dlYJd+VnkeZ2RR4/KTGOb5Xk8bupRZHgMC82hrtHZ/PcrBIen1rEu3LSIl9rCwT5Y10z7995hHdvO8hf23qJzx1l6XP60KgMHAMJtWlyQ28ra2JTCDudxBj9q04izx/oDIV5uqGVd249yKPVjcQ4HHyuKJdfTSokM6b/ub/U1M57tx9mS3v3OfczEFw7HA4WLFhAbGzsBT/Hi43X62XBggWUlZVx6NChk772QmMbH9t7lM4Tbx58qiCHr4zNxeUY+jdARo8ejWEYVFZWDvm134xhGBQUFFheU6tDRERERERERETkdAxzmP4//T179jB16lQAli1bxssvv/yGx4RMk/ZgCPdpVnK8md5QmJUtHSw/3samtm5MTILBIGHTJC4mhoVpidyYlcqV6UnEOIY+23+ytolvHK5lsr+b9/Q082BKPr046D0xUWuc+Bj8Q3EaEGMY/HRiAe/ITgWgJRDkgcM1rGnpPPH3DG7Pz+Tjo7Nxn0V4OhBcu91u5s2bN6z2WwcCAZ5//nmuv/563O6hWb1xodrb21m/fj3jxo1j3LhxPF7TxEOVDQC4DIOvj8uL/GysUltby65du1i2bBkul+ut/8IQ8Pl8vPTSSyxdupTExERLatTU1ERW1cycOVPT1yIiIiIiIiIiAgzjyetTV4acjtMwSHe7zjq4BohzOrghK5XfTC7kxTnj+dSYbNKDflxOJyHTZE1LJ58rq+LqzWV850gtezp7hnQP73+NyuRXk8bwH752Xo5NxW84CJhhDMBtQNyJAyhjBq0vCZnQGzZ54HANvaH+kDvd7eKnE8bwxeJRxDgcmJg8Vt3IrWdxmGMwGGTTpk24XK5hF1wPVykpKVx++eUcOHSI/7dtfyS4TnQ6+eWkAsuDa4Dc3Fzi4+PfdIWJFTweD16v19Lp67y8PObMmQPA9u3bqaqqsqyWiIiIiIiIiIiMHMM2vH722WcjtwevFRhKXo+b/4h3cr+/mSenFfNeb3okCO8IhvhzfQsf3FXOf2w/zOM1TTT6A0NSt6S7nTyPiy9dPovvjc8nxjCId/QfOOkwDEwghEmsAa5BQ9S1vgDXbSljZXMHpmliGAa35Kbz5+ljI4c57nuLwxxN02THjh2Ypqng+hzFJCXz3KgSlrf1Eg6HyYlx88TUIuanWjORfCrDMJg0aRKHDx/G7/fbUhP6V5bU1tZaepji4H/jzz33nGV1RERERERERERk5BiW4XV9fT2bNm0CYOrUqRQWFlpay5uTw4yURL4ydhSvzCnl+6WjWZiWhOPE9HNFr4+fHK3n2i0H+cS+Sl5sbKcvdH4H54XDYQ4cOMCECRMoTYqnKN6DwzBOOijSb5qETOg7kRV6jH//oBr8QT574Bj37D/GsRMT1sXxHv4wrZj/GpUJ/Pswx8+VvfEwx0OHDtHS0sK8efNsWz1xMWjyB7lzTwUbu3243W4yfD38qjiLkgR794RnZmaSnp7+hv3bVsrKysLn89HZ2WlZjcH/u0J7r0VEREREREREBIZpeP3Pf/4zMuX5ZitDhkp9fT1erzdyP9bp4LrMFH45qYCX5oznM4VeiuM9AIRNk3WtnXz+YBXLtpTxjcO17DzHtSI1NTU4nU7y8vIA8JyyV9s0TQZvrA6a4DP7f1BuA+Kd/Y9/rbWT/9h+mJ9XNtAbChPjcPA/Rd6TDnN8ubn/MMfNJw5zrKur4+DBg8yfPx+Px3Ou36pLVmWvj1t3l7O3qxeAhRnJ/H+5yZRv22rrBPSA0tJSjh49SjAYtKWe0+kkKyuL+vp6y2pMnz6d0aNHA7By5UpLg3IRERERERERERkZhmV4PXhtgFUrQwA6Ozvp6ekhOzv7tF/PinFzW14mf5sxjj9MK+b9uRkkn1gr0hkM8XRDC7fuKued2w/zaHUj9b4zrxUxTZPy8nKKi4sjk9Yl8R4y3P+egDaM/vUhsQ4D56AUO0j/7usPj8rgndlp/Z8zTR6pbuQ/th+OrBJZkJbIUzPGcUV6EgAN/gB37TnK98oqeX3bNmbNmkVKSsr5fssuOds7evjQrnJq+vpD6puyU/n5xAJmTZpIcnIymzdvJhw+vyn885WWlkZiYiLHjh2zrabX67U0vDYMI/Jv3e/3n/aAVhERERERERERubQMu/DaNE3WrVsHQEZGBnPnzrWsVkNDA5mZmW+5PsMwDKYkxXN/cS4r5pbyw9LRLElPwnkigK7s9fGzygbetuUgH917lOeOt0UOVhystbWVrq6uyIQpQIzDwc3e9Dc81mkYxJ4IsQd+SG6HweM1TWzt6Objo7OZmBAHQJ3Pf9IqkXS3i4cmjOFLY0fhOXGY4+O1zTyWmk8gLeM8v1uXnpeb2rlrb0Vk9crdo7P5xrg83I7+NS+zZ8+mr6+Pw4cP29qXYRgUFxdTXl5u6R7qwXJycmhra6Ovr8+yGtdff33k9vr16y2rIyIiIiIiIiIiI8OwC6+rq6tpbGwEYM6cOTgc1rV46sqQsxHjcHBNZgo/m1jAS3NKua/QS0l8/95jE5NNbV186VA1V28u44FDNWxr744EjBUVFYwZMwa3233SNT86OityjVP1h9gG2TGuyGOq+/z8quo4YPJ+b3pkGnzwKpG+sMn7vOn8afpY8ghhAJU4z3iYo/zb/9Y287myagJhE6dh8LVxeXxiTPZJu8ldLhezZs3i4MGDdHR02NrfqFGjCAaDkX8rVouNjSU1NZWGhgbLagx+o2rr1q2W1RERERERERERkZFh2IXXg0Or2bNnW1bH7/fT0tJyzuH1YJkxLm7Ny+SpGWP50/SxfCA3g9QTK0C6QyH+cbyV2/ZU8I5th/hFRR176hooKCh4w3WSXU7+ML2YK9KTTtp3PWBmcgLLZ5Xw/OzxfKE4l7QTNfZ39/Gn+hZK4j1ckda/JmTwKpFVzR2k9nXz0dYqPpTbP909+DDH9oA9O5NHkrBp8v2KOn5QUYeJSbzTwc8mjuE/ctJO+/i0tDSKi4vZtm2bretDnE4nY8aMobKy0raaVq8Oyc7OJj8/H8D276eIiIiIiIiIiAw/Z96XEQV2hdcNDQ0kJycTFxd3wdcyDIOJiXFMTIzjvwu9rG3tZPnxNta2dhI0Tar7/Pyy6jjhBC9rjjVzY1aIazKTSXA6I9dId7t4bEoRFT0+nm1so9kfJMnl5G2ZyUxJio887j9zM7gpK5Xf1zbzu9omekNhtnb0ADAvJZFGf4CKXh91Pj+fOXCMcb5uPlU0li9NKGRpaxdfOVxNkz/Iy83t7Ors4dvj85mbknDB34OLQV8ozJcOVfNKc/8UdVaMm59NHMPExDO/RkpLS6mvr+fQoUOUlpba0SoABQUFrFy5kr6+PmJjTz+5P5S8Xi8HDx4kFArhHPTaHUqzZ8+murqajo4Ojhw5QklJiSV1RERERERERERk+LtkJ6/PZ2XI2XA7DK7KSOYnE8fw8txSPl+Uy4SEWELB/sBvS3s3Dxyu4erNZXzlUDWvt3URHrTCoyjew70FOXy9JI//KfKeFFwPSHA5+fiYbJ6bNZ7352bgOrHK4vX2Lo71+piRFE+C00kwGGSf4ea+9jC/OHacmcnx/PU0hzk+dLSBQDi6a0SCwSAdHR20tbXR0tICQEdHB93d3basOGkLBPno3qOR4LoozsPvpxa9ZXAN/VPQM2fO5NChQ3R1dVndakRCQgLp6elUVVXZUi8pKQmPx2PpqpLB/+a1OkRERERERERE5NJmmMNo+bFpmni9Xo4fP056ejpNTU0n7RgeKuFwmBdeeIGFCxeSmpo65Nc/VWdnJ/+3+jXaJ07nheYOmk9Z15HrieHG7FRuzEphTJznnK9/rNfHz48d519N7ZHPeQyDuJ5Omj3xOE/sDc/1xPD5Ii9XpCXy1+Nt/LCiHt+J1QyTEuP47vh8Cs6j/rkKhUK0tbXR1tZGe3s7bW1tdHZ24nQ6cTqdOBwO+vr6cLvdBINBHA4HqamppKSkkJqaSmpqKomJiUP22qjq8/PJfZVU9voAmJOSwI8njInsEj9b27dvJxQKMWfOnCHp62wcO3aMiooKrrjiClvq7d69m1AoxIwZMyy5/j//+U/e8Y53APA///M//OAHP7CkjoiIiIiIiIiIDH/DKryurq5m9OjRAFxzzTW89NJLltRpbW1lw4YNvP3tb7ckHD/VoUOHaG5u5rLLLiMYNlnf1sXy422saukgeMq3f2ZyPO/MTuOajGQSzzE83dPZw08qG9jc3k0gGMQMm6TFeYhxOGgJBCP7tBelJfH5Ii9BEz5/sIqD3X0AxDkdfKEol3dmp1ryfWlra6OyspKamppIID04lI6NjcUwDAKBAM8//zzXX389TqeTzs7Ok4Lu9vZ2EhMTGTNmDPn5+Xg85x+47+ns4VP7j9Fy4g2Ft2Wm8M2SPGLO46DQ3t5eVqxYwaJFi2x5UwTA5/Pxr3/9i2uuuWZIVuC8lfr6evbu3cvVV19t2fVzc3MBWLp0KStXrrSkjoiIiIiIiIiIDH/Daue1XStD2traSE21JqA9nfr6+kgo73IYLElPYkl6Eu2BIC80tbP8eBt7u3oB2N7Rw/aOHh4sr+PqjGRuyk5lXkoCzrPodUpSPI9MLmRVQzPf3H2YprgEukNhuoIhElxOfGGTkGnyWmsnG9u6uD0/i8cmF/JIdRO/P7E/+4HDNaxt7eSrY0eR4r7wl4dpmtTX13PkyBHa2trIy8tj/vz5pKenn9X33+FwkJKSQkpKSuRzwWCQ2tpajh07xv79+xk9ejRjx44lMTHxnHpb3dLJ/yurou/E9PlteZncW5CD4zxfF3FxcRQVFbFv3z4WLFhwXtc4Vx6Ph7S0NBoaGigsLLS8XmpqKl1dXQQCAdxu95Bf3+v1MmrUKGpra9m2bRumadr271RERERERERERIaXYbXz2u7w2g4+n4/W1tbT7tdOcbt4f24Gf5w+lr/NHMdH8jLJiukPBH3hMM83tvGxvUd5+5aD/LSygaMn1lqciWEYpNYe4/tpbh4cP5pcTwyGYdATChMIh/E4HARMk6Bp8nDVcd63s5xZyfH8alJBpPYrzR3cvOMIm9u7L+i5d3d3s379enbu3ElOTg7XXnstM2fOJCMj44ICSZfLxZgxY1i0aBGLFy8mFArx6quvcuDAAcIngui38ue6Fj5z4Bh94TAOw+CLxaP4TKH3vIPrASUlJbS2tlq6F/pUXq+X+vp6W2rFxsYSGxtLe3v7Wz/4PA38229vb+fIkSOW1RERERERERERkeHtkgyv29vbbQuvGxoaSElJITY29oyPGxsfy2cLvbw4ezy/mFTAdZkpuB39QWqDP8Bj1Y28c9sh/mtXOU/Vt9AZDJ32Oj09PdTU1DBp4gTekZ3K8lnj+FxRLikuFw7D6N9xfWJTSdCEOp+fzxw4xh/rWvjJhNFDcpijaZqUl5ezatUqEhMTufrqqykpKSEmJuacrnM2UlJSmDVrFosXL6auro7Vq1efMVgNmyYPHW3gO+W1hE0Tj8PBjyeM5pbc9CHpJyYmhnHjxnHw4MEhud7Z8Hq9NDY2EgwG3/rBQyA1NdWW8Bp0aKOIiIiIiIiIyKVs2ITXpmlGgqq0tDTLViCEQiE6OjpOWkNhpfr6+tNOXb8Zl8NgUVoS3y8dzaq5E/jK2FFMS4qPfH1XZw/fOlLL0s0H+H9lVbzW2klo0N7siooKcnJySEhIACDG4eBDozL45+wS7szPwuNw4HYYmKZJMGyeWCUCa1s7+fDuCkrjY/lckRePw4GJyW9rGrl1d3nkMMO30tPTw/r16zl8+DDz589n+vTplqyXOFVKSgpXXHEFubm5rF279rRT2P5wmC8equG3Nf1T0WluF49NKeTK9OQh7aWwsJCWlhY6OjqG9LpvJjExkbi4ONumvVNSUmhra7Ps+gqvRUREREREREQEhlF4XVtbS0NDA9AfXlm157ajowOXy0V8fPxbP/gChUIhjh8/fk7h9WBJLifv9abz5LRinpnVHz7nnFjtEQib/KupnU/uq+S6LQf58dF6Dnb2UFlZSXFx8Wmv9amCHP45u4T35KTjcjiIdRq4DegLh+kKhfGbJg9XN/K/tS18piCHkvj+gxD3dfXyvh1H+HtDK2c637OtrY3Vq1eTkJDA0qVLycrKOq/nfb4cDgcTJkxg0aJF1NbW8vrrrxMK9U+odwZDfHxfJS80tgEwJtbD76cWMTVp6F8HHo+H/Px8ysvLh/zap2MYhq2rQ1JTUxVei4iIiIiIiIiI5YZNeL1z587Ibav3XaekpNhyCFxzczMxMTEkJ1/4ZG9hnIdPFeTwwpzx/GZyIddnpeJx9P/4Gv0Bnqhp4t3bD/FQbCYv+w3aA6dfIZEV4+ar40bx9IxxXJWRjMMwSHA68BgGXcEQPaEwtT4/36uoIyvGzTuzUoH+gPtrh2v4n7Kq0167ubmZdevWMW7cOGbMmGHLtPWbSU1NZfHixQQCATZs2MCxrh5u3V3OlhM7vKcnxfP7aUWMifNY1kNhYSHV1dW2rfLwer00NDSc8c2FoZKSkhI5tNEKubm55ObmAif/XhARERERERERkUvLsAmvq6urI7fHjh1rWR079123tbWRlpY2pEG50zC4LDWRB8fns3JuKV8bl8es5P4VIaFQiGqXh+9W1HHV5jLuO3CM1S2dp91ZXRTv4ccTxvD7acXMTI7H7TBIcjowgPZAiL6wyfq2Lv7Z1M51mSlkuF1A/2GO791xhNfbuk56nhs3bmTSpEmUlJQM2XO9EG63m8svv5wq08EtW/ZT3tO/9mRZRjIPTy4k7cTzsUpqaioJCQnU1NRYWmdwPZ/PR19fn+W14uLi8Hg8lq5FGfgd0NzcTG9vr2V1RERERERERERk+Bo24XVtbW3k9qhRoyyr09bWZmt4bWWtRJeT/8hJ4/GpRfx18hiu7msnP7Z/mjhomrzS3MG9+yu5dksZP6yo52D3G4PN6UnxPD6liJ9OLGBcQhxxTgfJLgeBcJiWQP8k9r+a2nEZBqUJsZimyXF/gI/ureShow20dnSyYcMGSktLKSoqsuy5no9Nnb085EqlzTTwBwJ8MDeD75eOJtZp/cveMAxGjx590uvaSi6Xi6SkJEvXeQxm9eqQwb8D6urqLKsjIiIiIiIiIiLD17AJrwcHVAMrA4bawGGNdoXX7e3tth0MGdPeyvsSnLwwt5RHpxRxU3YqcSdC2pZAkCdrm7h5x2Fu2XGEP9Y20zJo9YdhGFyRnsRTM8by9XF55HpiSHI5SXI66A6FaQuGqPb5KevuY0ycBydG5DDH/9xahsM7inHjxtnyPM/WPxpa+dT+Y/SGw8TExPAfwS7eSy9OG9bFDPB6vTQ1NVm2XuNUKSkptLe321LL6vB68O8AhdciIiIiIiIiIpcma3cnnAM7wuvu7m4cDocthzX6/X56enpsC8rr6+vxer04DIO5KQnMTUngC8UhXmnu4NnjbWw+se/5QHcvByp6+f+O1rM4LYmbslNZnJaE22HgNAzelZPG2zJT+L/6Fh6rbsQVCNIXNmkPhHA7DEK9fpwGxDsdtPf5OWoafLXPTU9DK+/KTrVll/iZmKbJr6sa+XXVcQDcDoMHS/KZYeawadMmcnJySEhIsKWXxMRE4uPjaWxstPR/EwxITU2lsbHR8joAycnJlh4QqfBaRERERERERESG3eS1w+EgOzvbkhp9fX3ExsbaErC2tbURHx9PTEyM5bVCoRCNjY14vd6TPp/gdPLO7DQenVLE87PH84kx2eTH9vcTNE1WtXTw2QPHWLaljO+V17G/qxfTNIl1OrgtL5PnZ4/ntvwskt1O0t1OHPRPcXcGw3QEQoRDQUynm95Q6IyHOdolEDZ54HBtJLhOdjl5ZHIR12SmkJWVxejRo9m+fbsthxoO8Hq9loa8g1k9DT1YbGyspfu1FV6LiIiIiIiIiMiwC69zcnJwOp2W1BgIr+1g527txsZGPB4PSUlJb/qYvNgY7h6dzXOzSnh8ShHvykkj4cT3uS0Q5I91zbx/5xFu3nGE39c00eQPkuxy8tlCL8/NGs9/5KST4naR6nISNE1ag0F8TheGw8BnQujEju1TD3O0S1cwxD37K3nmeGvk+T554jDKAZMnT6a3t5eKigrb+vJ6vTQ0NNgSmKekpNh2aGNsbCw+n49wOGzJ9bXzWkREREREREREhkV4HQqFItOpVq0MAXvDazv3XTc3N5OVlXVWE+WGYTArJYGvj8tjxdxSvjM+n/mpiRj0/91DPX38f0fruXZLGZ/aX8lLTe2ku518oySPv0wfy9WZySQZJrGmid+EzlCIkGnSEzLpDoVp8Pn56N5KfnK0nkDYngnn474At+2pYOOJ0HxSYhy/n1pMYZznpMe5XC5mzJjBvn37bNtDnZ6eTigUorOz0/JaLpeLxMREW6avB/4d+Xw+S64/+PeAXYdeioiIiIiIiIjI8DIswuumpiZCoRBgbXjt8/lsC687OztJTk62pdb5TnnHOR3ckJXKw5MLeXHOeD5VkEPBicA3ZJqsaenkc2VVXL25jO8cqcUXDvNQ6WjuDbUzMz6GdLcTj2HQEwrjN8OETGgLhukLh/htdSO37i6nsteacHPA4Z4+PrS7nIPd/dPGS9KTeGxKEZkxp1/nnpWVRUpKCkePHrW0rwGGYZCSkmLbOo/k5GRbgnKHw0FMTIwt4bUmr0VERERERERELk3DIry247BGsHfy2q5apmkOyZS31+Pmzvwsnpk5jt9PK+a93nSSXP1rRTqCIf5c38IHd5Vz4+YDHA7Cz6eN4ycTC5iaFE+qy4kDA184jAl0hcJ0hMLs7uzhfTuO8PeGVkvWZrze1sVHdlfQ4Oufon6fN50fl44h3nnml/W4ceMoLy+3bOXFqVJSUmhvb7elltW7qO2qlZaWhsfT/0aKwmsRERERERERkUvTsAuvB++6HWp9fX2RQMxKoVCIQCBgS3jd09NDMBgcsilvwzCYnhTPV8aO4pU5pXy/dDQL05JwnFhJUtHr43lPCtfvOMLTDa18ND+Lr4wdRUm8h0Sng7BpEjYhYJq0BEI0B4I8cKh6yA9z/GdjGx/fV0lnsH9i/96CHL5YnIvL8darUwYOtjx+/PiQ9XMmF9NBioN5PB7LahmGEXkjS+G1iIiIiIiIiMil6fS7FWw2eKftxTB5PbBKwY6gvK2tjeTkZEsOuYx1OrguM4XrMlNo9Ad4pq6Z3x86SltsAmHTZF1rJ+taO0lyObkqPRmnAc8fb6MxEKQvbGIC3aEwfeH+sHlnRw/fGZ/PvNTE8+7JNE0eq2niZ5UNALgMg2+W5HF9VupZX8MwDEaPHk1VVVUkyLZSamoqu3btwjTNs9pLfiEGDlK0g9VBeW5uLkePHqWpqQm/309MTIxltUREREREREREZPgZdpPXVoXXpmnatvN6YMLb6qASoKuri6SkJMvrZMW4ebsrxNecvfxx+ljen5tB8om1Ip3BEM8cb+VvDa1keNzMT00kzeXEbfQfAxkyoT0Y5lCPj9v3HD3vwxyDYZNvl9dFguskl5NfTy48p+B6QF5eHg0NDZasMzlVYmIioVCI3t5ey2tZOQ19KquD8sG/CwYOdBURERERERERkUvHsAivGxsbI7dzcnIsqREMBgmFQraF1xfbbm3on/JOT0tjSlI89xfnsmJuKT8sHc2S9CScJ4L6mj4/+7p6cRgGozwuPA4j8iLzmSbNgSA/P3acD+46ck6HOfaEwny27BhP1bcAkONx88TUIuamJJzXcxlYs2LX4YZ2hcoD09B2hPJWT14P/l1g14oXEREREREREREZPoZFeO33+yO3rQpi+/r6cDgcuFzWb0qxM1C2a5oc+sPr1NTUyP0Yh4NrMlP42cQCXppTyn2FXkri+3txGNAbNol3Ooh1GDgBAyIHOr7W2sU7th7i6fqWtwxam/xB7thTwZqW/qC5NCGWP0wrZlz8+T9vwzBISUmxdRe1Hes8YmNjCYVCBINDt1/8TLWsDK8Hv64DgcAFX+8Xv/gFhYWFxMbGMn/+fF5//fULvqaIiIiIiIiIiFhnWITXg4Mpt9ttSY1wOIzL5bJllcfFOHltmibt7e2kpKSc9uuZMS5uzcvkqRlj+dP0sXwgN4NUtwuXYZDocpLkckYCbIAw0BgI8pkDVdy99+ibHuZ4tNfHrbvL2dfVv3Lj8tREHp9SRFbMhb9OUlJSaG9vv+DrnA27DlJ0u904HA5bajmdTsLhsGXXH/xG04WG8X/+85/57//+bx544AG2bdvG9OnTue666zTRLSIiIiIiIiIyjJ1zeD1x4kQMwzjtx89//vPzamJwMGXVZHQ4HLYluIb+52NVCH+qgf3aVuvp6SEYDEbWbbwZwzCYmBjH54tzeWVOKT+eMIal6cnEOx1kxLhIdjoYfLRkwDRZ3tjO5Rv381pLx0nX2tHZy3/tKqemr38y/53ZafxsYgEJrqE5nDI1NdW2yWu71oYYhoHb7bZl8towjBETXv/oRz/irrvu4rbbbmPSpEn8+te/Jj4+nt/+9rcX2qaIiIiIiIiIiFjknMPrp59+GoAVK1ZQV1fH0aNHcTgcPPXUU9x1113n1YQd4bVpmraF13bW8vv9toTXXV1dJCQk4HSefXDsdhhclZHMTyaO4eW5pXy+KJcZyQlkxLhIdBoM/g61BEPcvLOcD+88QiBssssVx8cPVNERDAHwsdHZfH3cKNyOofu+JiUl0dXVNWTXOxOPx3PSehwrGYZhy85rq+sMfgPoQtaG+P1+tm7dyrJlyyKfczgcLFu2jA0bNlxQjyIiIiIiIiIiYp1zDq8bGhpwuVwsXLgQr9dLU1MT4XCYxYsXn3eIejGG1w6HPRtZwuGwLbVCodAF/WzS3S4+MCqDP88Yy19njONjo3MYHx9L3KAw2gT+1dLJ2PX7+HVcJn7TxGUYfH1cHh8fkz3kPz+Xy0UoFBrSa74Zh8Nh6ZTyqbUuhvB6+/btkdsHDhw47+s0NTURCoXecBhsTk4O9fX1531dERERERERERGx1jmnkbt372b8+PGRoHrnzp1kZ2e/IRg6F4OnKk3THJLD2U5XwzAMS659qmAwSDgctqWWaZqEQiHLa/n9/iH7/hXFOPl0fgafGJXOhvZu/trQyj+bO/GfCEJNIIRBZyDI76YUcnlKgiXPz+fzEQqFIs/NSg0NDbS1tTFlyhRL60D/ipeWlpa3XPFyobq6uujp6bHstbd27drI7W3btllSQ0REREREREREhq9zDq937drF1KlTI/d37tx50v3zMTg4XLlyJRkZGRd0vTN5/vnnLbv2qQ4dOmRLnVWrVtlSB6z5/r0NWILBS+4kXohNjXx+Xk8bretWY/VP7IUXXrC4wr/Z9frbt28f+/bts6WWVc9pqELxzMxMnE4nDQ0NJ32+oaEBr9c7JDVERERERERERGTonVd4/a53vStyf+fOncyaNevCmhi0jmLJkiUUFBRc0PVOp6WlhZ07d7J06dIhv/apdu/ejcfjYfz48ZbXevHFF1m8eDEJCQmW1qmvr+fIkSMsXLjQshrvBcq6+1i2/QiYJu7cPK6fYl29rq4u1q1bx3XXXWdZjQEHDx6kr6+PadOmWV5r1apVTJ8+nfT0dEvrWP1v6oYbbuAvf/kLAIsWLTrv68TExDB79mxWrFgR+d0VDodZsWIF99xzz1C0KiIiIiIiIiIiFjin8DocDrN3716++tWvRj535MgR3v3ud19YE4PCa8MwTjqobai43W5M07Tk2qdyOp2WPY9TGYaBw+GwvJbH4yEYDFpeZ0qqm0Sng+5giL09PkvrmaaJy+Wy5ecE2FZr4HVudS2Hw2Hpa6+0tDRy+0Lf0Prv//5vPvzhDzNnzhzmzZvHT37yE7q7u7ntttsutE0REREREREREbHIOYXXR44coaen56Tp0alTp/LAAw8we/bs857KHRx+WbU/1+rD5aJVy+Px4Pf7La+TlJREd3c3wWDQskM1B4yNi2FXZy+NgSDtgSApbmvqdXR0kJSUZMm1T+X3+4mLi7Olll2Hk1pdZygPcr3llltobGzkq1/9KvX19cyYMYMXX3zxgnb1i4iIiIiIiIiItc4pESopKXlDKDsU+24HB1ODA6uh5HA4CIfDllz7VG63m76+PltqxcbG2lIrNjYWj8dDR0eH5esoLktJYFdnL2ETXmxq55Zca3agt7e3k5qaasm1T9XX10daWprldUzTxO/32zLhHQ6HcTgcll1/KMNrgHvuuUdrQkRERERERERERhDrkqdzYEd47XQ6CYVCtkxE2xUoQ//ktR21DMMgJSWFtrY2y2tdn/Hvaeh/NXVYVqetrY2UlBTLrj9YX18fHo/H8jp+vx/TNImNjbW8VigUwul0Wnb9oQ6vRURERERERERkZBkW4fXgUK+np8eyGuFw2LK1JIPFxsbi8/ksrzNQy66gPDU11ZbwempiPG7632TY3mnN6yEcDtPR0WHr5LUdgbLP58PlctkS9lodyPf29kZu2xH8i4iIiIiIiIjI8DIswuvBe2fr6+stqeF2u3E6nbYEvXZNQ4P94XVra6vlddwOg6xw/9Rtsz9IvW/o33Bob2/H4XCQkJAw5Nc+VTgcxu/32xJe2zXhPVDLyudUV1cXua3d1CIiIiIiIiIil55hEV7n5uZGbg8OrIaaXUFvXFwcPp/Plh3bSUlJdHRYt1pjsKysLHp7e22Zvh4X7P85BU2T1S1D//yqq6vJzc215WDDjo4OXC6XbeG1XQdD2hVeG4ah8FpERERERERE5BKk8NoCA5OvdqwOSU1NpbOz07Jd4YO5XC5GjRrFsWPHLK81LdjLQKw81Huvw+Ew1dXVjB49ekiv+2YGDoa0Iyi/GCevs7KytPNaREREREREROQSNCzC61GjRkVuWx1e2xEoOxwOYmJibAnKY2NjiYmJsW36urCwkKqqKst3hxeG/bgd/WHv1o7uIT1os6amBrfbTWZm5pBd80zsPhjSjglv6H9zxqpa4XA4skJo8O8HERERERERERG5dAyL8Hrw5HVtba1ldezcD21XLcMwbDtIESAtLY2kpCTLp68TzTDemP5p2/ZgiMM9Q/Omg2maHDlyhLFjx9oyCQ394fXFdjCk1bWam5sjb5AM/v0gIiIiIiIiIiKXjmERXmdkZOB2uwFrJ6/tPEjRzl3UdobXhmEwbtw4Dh06ZPn09dzkeAACpsnGtq4huWZdXR29vb22rQwJh8N0dHTYFl53dHSQnJxseZ1QKEQgELBsRcng3wMKr0VERERERERELk3DIrw2DAOv1wtcHDuvwd5AOSMjg8bGxiFdrXEmubm5pKSksGfPHkvrLExJwGGAacKKITi00efzsWvXLqZMmWLbDuWmpiZiYmJISEiwvFYgEKC7u9uWFSV9fX0YhqHwWkRERERERERELDMswmv4d0DV2Nho2USvXTuvwd7wOjMzk2AwSHt7uy31DMNgxowZ1NbW0tDQYFmd6UnxxBgDe697CIQvLJzfvXs3aWlp5OfnD0V7Z6WhoQGv12vLipK2tjbi4uJsObDR5/Ph8Xgse14Kr0VEREREREREZNiE1wOHspmmaVkgGhsbS29vry0TyikpKfT19dky6e1wOMjOzo4ccGeHuLg4pkyZwo4dOyx7s6E4LoYklxOA7mCYPV29532t2tpajh8/zvTp023bdW2aJvX19eTk5NhSr7293bb1JL29vZbu1h68+14HNoqIiIiIiIiIXJqGTXg9eLrSqtUhA6sburqGZn/ymbjdbhISEmybhvZ6vbaG1wBjxowhOTmZnTt3WvKGgMMwmDUEe697e3vZtWsX06ZNs+0wQ4DOzk58Ph9ZWVm21Gtra7NlZQj0B+VW7tbW5LWIiIiIiIiIiFxS4bXD4SAlJcW2dR52rg7Jycmho6ODnp4eW+pB//qQmTNn0trayt69ey0JsOenJOI0DEKmyWutnef8930+H+vXr8fr9ZKXlzfk/Z1JXV0dWVlZOJ1OW+q1tbXZNnltdS2F1yIiIiIiIiIickmF19C/zsOuaWg7w+uYmBiysrKoqqqypd6A2NhYFixYQHV1NQcOHBjyAHtGcjwxJ7Z87OjspTsUOuu/6/P52LBhA8nJybauC4H+lSFVVVW2BeYDhzXaEV6bpkl7e7ulU96DfwcMHOYqIiIiIiIiIiKXlmETXo8ZMyZy++DBg5bVsTNQTktLo7W11ZYd2wAFBQVUVlbaVm9AQkICCxYs4NixY+zZs2dI609JjCPG0f8y9YXDbGs/u8ny3t5eXnvtNRISEpg9e7atwTVAc3MzgUDAtqnhlpYW2w5r7O3tJRAIWBZem6YZ+R2Qk5Njy3MSEREREREREZHhZ9iE1zNnzozc3rp1q2V1UlNTaW9vtyXgTUtLIxwO09raankt6J9QDYfDlh14eSbJycksWrSIhoYGNm3aRG/v+R+uOFiiy8mEhP491QHTZGP7W++9Pn78OGvWrCE9PZ05c+bgcNj/Mq+oqGD06NG2rQyx82DItrY2kpKSLHtuVVVVNDU1ASf/XhARERERERERkUvLsAmvs7KyGD16NADbtm0jHA5bUicpKYlwOGzLoY0Oh4OcnBzbwmSHw0FRURHl5eW21DtVQkICS5Yswe12s2rVKqqqqobkTYLZKQm4DINg2GRjW/ebPi4QCLB9+3Y2b95MaWkpM2bMsH3iGvonk+vr6ykqKrKlnmmaNDQ02DblbfW+68FvXs2ePduyOiIiIiIiIiIiMrwNm/Aa/h1UdXZ2cvjwYUtqOBwOkpOTbdt7nZOTQ319vS21AAoLC2lubrbt+Z0qJiaG2bNnM3PmTPbu3TskU9jTk+KJcRiYwIHuXpr8wTc85vjx46xcuZLe3l6WLl1KYWFhVIJrgPLycrKzs0lISLClXkdHB36/n4yMDFvqWb3vWuG1iIiIiIiIiIjAMA2vwfrVIXbtvc7JyaGzs5OenrPb1XyhPB4PBQUFHDhwwJZ6byY3N5errroKt9vNihUr2LVrF93dbz41fSbTk+KIORFEB0yTzSdWhwxMHK9bty4ybX355ZcTHx8/ZM/jXPX29lJRUcH48eNtq1lfX092drYtK0pM09TktYiIiIiIiIiI2OKSDa/tmkx2u91kZGTYOn1dWlpKY2Mjzc3NttU8nYEp7EWLFuH3+1m5ciUbNmygpqaGUCh01tcZHRtDdowLAwiETdY2tVFWVsaKFSvYvn07mZmZXHPNNVGdth5QVlZGTk4OaWlpttWsr6/H6/XaUquvr8/ywxoH/u1nZmZGVgmJiIiIiIiIiMilxxXtBgabNWtW5LbV4fWePXswTdOWsNPr9VJfX09xcbHltaB/+nrcuHHs27ePRYsWRT3QTU1NZc6cOfT29lJVVcX+/fvZunUrSUlJpKamkpKSQmpqauQQwIE92aFQiGAwSEdHB0VmkHJM/CGTV2oaeEd8mIkTJ+L1em07FPGtdHZ2UlVVxdKlS22r2dvbS3t7u22HNba2tpKYmGjZ97y6uprGxkag//dBtF+7IiIiIiIiIiISPcMqvM7JySEvL4+amprIoY0Ox9APhyclJeFwOGhtbSU9PX3Ir38qr9fL3r17CQQCuN1uy+sBjB07loqKChoaGmybyn0rcXFxjB8/npKSEnp7e2lra6OtrY2GhgbKysrw+/0nPf5f//oXAImJiRTGpeI2nASBnth48maOJy/OE4Vn8eYOHDjA6NGjSUxMtK1mfX09aWlpeDz2fC8aGxvJysqy7PpaGSIiIiIiIiIiIgOGVXgN/YFVTU0NHR0dHDlyhJKSkiGv4XA4yM7Opq6uzpbwOiEhgZSUFKqrqykqKrK8HvSvKyktLWXPnj1kZmbicg2fH7VhGMTHxxMfH8+oUaOA/nURwWCQUCiE3+9n1apVLFu2jNjYWJxOJ+kdPfxl1xF6AyGCJmxs66ZgGIXXjY2NNDQ0cPXVV9tat6qqivz8fFtqmaZJfX09M2fOtKyGwmsRERERERERERkwrHZeg317r3Nzc2loaLDs+qcqLCyksrIyshLDDkVFRXg8Hvbv329bzfNlGAZut5vY2Fji4uKA/p3ZA+spJiXG4jEMHEb/oY2vnzi0cTgIBAJs376dyZMnR3q3Q0dHBx0dHbbthW5vbycYDJKZmWlZDYXXIiIiIiIiIiIy4JINr7Oysujq6qKry54QNC8vj66uLtra2mypB/2B8MyZM6msrIz64Y0XyuNwMDkpHrdhEAibvN7eTcjGNwLOZN++fSQkJFBYWGhr3aNHjzJq1CjbVtHU19eTnZ1tySofOPmwxvT0dAoKCiypIyIiIiIiIiIiI8MlG1673W4yMzNtm752uVzk5+dz9OhRW+oNSExMZOLEiWzfvp1gMGhr7aE2PSmeGMMgaJq0B0Mc6O6LdkscP36c6upqZs6caevhgsFgkOrqalsD3vr6ekv3p9fU1HD8+HGg//eADmsUEREREREREbm0Dbvw2uv1RvYgb9261dLA1ev1Ul9fb9n1T1VcXExNTQ0+n8+2mgN1PR4Pe/bssbXuUJuWFIfb0R9oBk2TjW3RXR3i8/nYsWMHkyZNIj4+3tbaVVVVxMfH27KzHaC3t5eOjg5ycnIsq/H6669HbmtliIiIiIiIiIiIDLvwGmDx4sVA/07fdevWWVbH6/XS3NyM3++3rMZgycnJpKWlUVlZaUu9AYZhMHv2bOrq6qioqLC19lCamRyP0zBwGhAIm2xs645aL+FwmM2bN5OWlmb7uhDTNCkvL6e4uNi26eT6+nrS09OJiYmxrMY///nPyO2B3wEiIiIiIiIiInLpGpbh9U033RS5/eyzz1pWJz4+nqSkpMiqAjsUFxdTUVFBOBy2rSb0P9d58+axd+9empqabK09VLJi3OR6Yvr3Xpsm2zu76QvZ+32E/vB4165dBINB29eFADQ2NuL3+8nLy7OtptUrQ8LhMM899xzQ/1q96qqrLKslIiIiIiIiIiIjw7AMr9/+9rfjdDoBeOaZZzAtPJjP7tUhXq8Xp9PJsWPHbKs5ICMjg6lTp7J582a6u6M3tXwhpifFEePo33sdCJvs7OyxvYejR49SX1/PvHnzcLlcttY2TZOysjKKi4sj/0asFggEaGpqsjS8fv311yNvIl177bXExsZaVktEREREREREREaGYRlep6WlRdYGHD58mLKyMstqeb1eGhoaCIVCltUYzDAMJk2axIEDB6JygGJBQQF5eXls2rTJtnUpQ2lGcjxuwyBsQsjE9tUhDQ0N7N27l3nz5tm+5xr6J6C7uroYO3asbTUbGxuJj48nMTHRshrLly+P3B78Py9EREREREREROTSNSzDa4Abb7wxctvK1SGpqal4PB5bp69zc3OJi4ujvLzctpqDTZkyhcTERNavX08gEIhKD+drRlI8DsPAdWJ1yMZ2+w5tbGxsZPPmzcycOdO2gxIHM02T/fv3U1paauvE97Fjx8jPz7e0xsC/ccMwuOGGGyytJSIiIiIiIiIiI8OICK8HT2UONcMwKCgo4OjRo5bVOF3NSZMmcejQoahMPzscDubMmUNsbCzr168fURPYJfGxxDocxDj6w+v9XX20B6yfYG9sbGTTpk1Mnz7d1l3Tg1VVVREKhWw9ILK3t5fjx48zZswYy2qUl5ezZ88eAC677DKys7MtqyUiIiIiIiIiIiPHsA2vS0pKmDhxIgDr16+39JDB0aNH09zcbOse6KysLNLS0jh06JBtNQdzOBzMnTt3xAXYLofB1KQ43IZBMGxiYrK5w9q91w0NDWzatIlp06YxevRoS2u9mVAoxIEDB5gwYQIOh33/bCsrK8nOziYuLs6yGoP/Z4VWhoiIiIiIiIiIyIBhG17Dv6evw+Ewzz//vGV1YmNj8Xq9VFZWWlbjdCZNmkRFRQW9vb221h3gdDqZO3cuCQkJrFmzhs7Ozqj0ca6mJ8XjNiBompjApjbrVoccPXo0sirEyunjs+nD7XZbvr5jMNM0OXbsGAUFBZbWGRxeD/4fFyIiIiIiIiIicmkb1uH14ClMK1eHQP9BhseOHSMcDltaZ7DU1FS8Xi8HDhywreapBlaIjBo1ijVr1tDQ0BC1Xs7WjKR4DMPA7TAIhE1LDm0Mh8Ps2rWL/fv3c9lll0VtVQhAIBDg4MGDTJo0CcMwbKt7/PhxTNMkJyfHshptbW2sXr0agOLiYiZNmmRZLRERERERERERGVmGdXh92WWXkZmZCcC//vUvfD6fZbWys7NxuVzU1tZaVuN0Jk6cSE1NDY2NjbbWHWxgB/f06dPZvHkzhw8fxjTNqPXzVqYl9a+wiDlxaOOxPh+1fUO39sTv97NhwwaamppYsmRJ5DUYLXv27CElJcX2XdDl5eUUFhZauqbkxRdfJBjs31l+44032hrOi4iIiIiIiIjI8Dasw2un08kNN9wAQFdXF6+++qpltQzDoKioiCNHjlhW43QSEhKYOHEiO3bsiIR40ZKfn8/ChQs5cuQIW7duHbZ7sFPcLoriPP17r0+E7K+3D830dXNzM6tXr8blcrF48WISEhKG5Lrnq6GhgdraWmbMmGFrsNvZ2UlTU5OtK0O071pERERERERERAYb1uE1nBxo/eMf/7C01pgxY+jq6qKlpcXSOqcqLi4mLi6OvXv32lr3dNLS0rjiiisIhUKsXLmSurq6aLd0WtOT4nEZEDoxIL7xAsPrYDDInj172LBhA0VFRcybNw+32z0EnZ6/QCDAjh07mDJlCvHx8bbWLi8vJy8vj9jYWMtq+P3+yC77lJQUFi9ebFktEREREREREREZeYZ9eH3ttddGArQ///nPlh5u6Ha7GTNmDOXl5ZbVOB3DMJg5cyZVVVVRXR8yIDY2lnnz5jF58mS2b98+LKewZyT37712GhA0+w9tPN9VJy0tLbz66qu0tLRwxRVXMG7cuGGxvmLPnj0kJyfbflCk3++nqqqK4uJiS+ssX76ctrY2AG644Yaov1kgIiIiIiIiIiLDy7APrxMTE7n55psBaG1t5emnn7a0XnFxMXV1dXR3D/0hgGeSkJDApEmThsX6EOgP1EePHs3SpUsJBAKsXLmSiooKWw+0PJPpSf2TyAN7r1sCQQ71nNtO9N7eXnbs2MH69espLCxk8eLFJCUlWdHuOYvWuhCAiooKUlNTSU1NtbTOww8/HLl92223WVpLRERERERERERGnmEfXgPcddddkduPPPKIpbUSEhLIy8vjwIEDltY5naKiIuLj44fF+pABcXFxzJ8/n2nTplFeXs7KlSupqamJ+oGOhXExJLucxDgMguH+Xja1d53V3/X7/ezdu5cVK1YQDAa58sorh820NZy8LiQuLs7W2n6/n8OHDzNhwgRL61RUVPDyyy8D/a/7q666ytJ6IiIiIiIiIiIy8oyI8HrRokWRMG3NmjWUlZVZWm/ChAnU1tbS3t5uaZ1TGYbBjBkzqKqqGla7pg3DYNSoUSxdupSSkhL27NnD6tWrqa+vj1qI7TAMpifFn/QC3tR25ml5v9/PwYMHeeWVV2hvb2fRokXMmTOHxMREa5s9B6ZpsmPHjqisCwE4ePAg6enpZGZmWlrnsccei9y+8847cThGxK8iERERERERERGx0YhIjAzD4M4774zcf/TRRy2tFx8fT1FREfv27bO0zukkJCQwc+ZMtm3bRkdHh+31z8ThcFBQUMCyZcvIy8tjx44drFixgiNHjhAIBGzvZ3pS/IlpaZOwCVs6ugmE3ximd3R0sHPnTl566SUaGhqYM2cOCxYssHwtxvk4ePAgra2tzJo1y/ZJ8J6eHo4ePcqkSZMsrRMMBnn88ccBcDqdWhkiIiIiIiIiIiKnNSLCa4APf/jDxMTEAPC73/0On+/c9hufq/Hjx9PS0kJTU5OldU4nLy+PsWPHsmnTpmF3UCL0B44lJSVce+21lJaWUlNTw7/+9S+2bdvG8ePHCYVCtvQxPal/pYbb0b/3ujcUZndXDwB9fX0cPXqUNWvWsHr1akKhEIsWLWLx4sVkZ2fb0t+5qqur49ChQ8yfPx+Px2N7/bKyMnJzc0lJSbG0zj//+U9qa2sBuPHGG8nNzbW0noiIiIiIiIiIjEwjJrzOzMzk3e9+NwCNjY38+c9/trReTEwM48aNY+/evVFZjVFaWkpKSgqbN28eNocknsrhcDB69GiWLFnCkiVLcLvd7NixgxdeeIHNmzdz7NgxS99kmJwUh9MwIoc2mqbJc4f6A+uXXnqJY8eOkZ+fz3XXXcesWbOG5aT1gI6ODrZt28asWbMsD4/frH51dbXlu64Bfvazn0VuD95nLyIiIiIiIiIiMphhRvvkvXOwbt06Fi1aBMCsWbPYsmWLpasVgsEgr7zyCtOmTWPUqFGW1TlT/bVr15KRkcG0adNsr38+TNOko6OD+vp66urq6OjoICkpidTUVFJTU0lJSSElJQWn0/mm1wgEAjz//PNcf/31uN3u0z6mr6+P9vZ27jzSwGF/iGA4jMOEUjf8rCATr9cblenl8+Hz+VizZg2jR4+2JTw+nU2bNhEXF2f562zPnj1MnToVgHHjxlFWVqZ91yIiIiIiIiIiclquaDdwLhYsWMDs2bPZunUr27ZtOynMtoLL5aK0tJT9+/fj9XptD9lcLhfz589n9erVJCcnU1hYaGv982EYRiSgLi0tpbe3l9bWVtra2qirq+PAgQMEAgHi4+PxeDzExsZGPmJiYjAMIzJpXlVVhWEY+Hw++vr6Tvrw+XwkJCRQFJdOueHEdDrwuJxUGwYZefl4XG8ejg8n4XCYLVu2kJqaSmlpaVR6aGlpobGxkWXLllle66c//Wnk9qc+9SkF1yIiIiIiIiIi8qZG1OQ1wJNPPsmtt94KwHvf+16eeuopS+uFw2FWrlxJSUkJBQUFltZ6M01NTWzcuJG5c+eSk5MTlR6Gimma9Pb20t3dfVIQ3dfXh9/vxzRNQqEQra2tZGRk4HK58Hg8bwi6k5KScLvdvNDYxhcOVuMLh3EYBm7D4KcTC7giPSnaT/UtmabJ9u3baW9vZ/Hixbhc9r+XZJom69atIyMjg4kTJ1paq7m5mfz8fPr6+khKSqK6uprk5GRLa4qIiIiIiIiIyMg1oiavAd73vvfxuc99joaGBv7+979z7NgxxowZY1k9h8PBxIkT2bNnD6NGjXrTNRZWyszMZObMmWzevJn58+eTlZVlew9DxTAM4uPjiY+Pf9PHDKwNmT9//lt+v6cl9V8nxjDwm4ABm9q7hn14bZomu3btoqWlhYULF0YluAaor6+ns7OT+fPnW17rkUceoa+vD4Dbb79dwbWIiIiIiIiIiJzRiPs/+x6Ph49//OMAhEIhfvKTn1hec9SoUSQmJrJ3717La72ZvLw8pk+fzqZNm2hubo5aH8PNKI+brBg3hmGQ5Op/OW9q645yV2dmmiZ79uyhoaGBBQsWEBcXF5U+/H4/O3fuZNKkSZa/KdPX18fPf/5zoP8NjE996lOW1hMRERERERERkZFvxIXXAB/72Mcih/H98pe/pKqqytJ6hmEwc+ZMampqOH78uKW1zmT06NFMmTKFjRs30tTUFLU+hhPDMJie1B/+BsL9G3AO9/TR6A9Es603ZZome/fupba2loULF55xAt1qu3fvJjU11dL/uTDgl7/8JTU1NQDceOONjB071vKaIiIiIiIiIiIyso3I8DonJycyuenz+fja175mec34+HgmTZrEjh07CASiF4wWFhZGAuxoBunDyfQTq0P8YZPQiQ3ur7cPv+nrgVUhtbW1LFq0iISEhKj1Ul9fT0NDA9OnT8cwDEtrtbe38+1vfxvof7PhG9/4hqX1RERERERERETk4jAiw2uA+++/n5SUFACeeOIJ9u3bZ3nNwsJCEhISoro+BKCgoIDp06fz+uuvU19fH9VehoPpyf3htcsA54kcdritDgmHw+zYsYPGxsaoB9d+v58dO3YwZcoUW1aW/OAHP6ClpQWAD3zgA0yfPt3ymiIiIiIiIiIiMvKN2PA6PT2dz3/+80B/MPjlL3/Z8prDZX0I9K8QmTVrFlu2bOHIkSOYphnVfqJpYkIsboeBYRiku/sPPtzY3jVsvid+v5+NGzfS2toa9VUh8O91IaNHj7a8Vn19PT/+8Y8BcLvdfPOb37S8poiIiIiIiIiIXBxGbHgN8OlPf5rc3FwA/v73v7Nx40bLa8bHxzN58uSorw+B/oMkFy5cyKFDh9i+fTuhUCiq/URLjMPB5MT+CeLwicC6wRfgYHdf1APszs5O1qxZg9PpZPHixVE7nHFAXV2dbetCAL75zW/S09MD9O+qLyoqsrymiIiIiIiIiIhcHEZ0eB0fH88DDzwQuf+FL3zBlrCyoKCAxMTEqK8PAUhLS+OKK66gs7OTdevW0dfXF+2WomLGib3Xx/1BOoIhGv1Brt1ykCnr9nLfgWPs7Oyxvaf6+nrWrFlDXl4e8+bNw+12297DYH6/n507d9q2LuTw4cM8/PDDACQmJtryvyNEREREREREROTiMaLDa4Dbb7+dkpISAFavXs2LL75oeU3DMJgxY8awWB8CEBcXF9mjvHr1atra2qLdku2mJ8XTGwrTGgzRFzYxgRAmvnCYZ4638d7th3msutGWXkzT5NChQ2zZsoUZM2YwceJEW6ac34qd60IAvvKVrxAMBgG47777yM7OtqWuiIiIiIiIiIhcHEZ8eO12u/nWt74VuX///fcTDoctrzuwPmTbtm309vZaXu+tOJ1OZs2aRXFxMa+99hpVVVXRbslWXaEQnaEwBjAQE4dMIpP4JvBgeR0vNbVb2kcwGGTbtm2Ul5ezaNEi8vLyLK13to4dO2brupBt27bxpz/9CYCsrCzuu+8+y2uKiIiIiIiIiMjFZcSH1wDvfe97mT17NgA7d+7k//7v/2ypW1BQQE5ODq+//vqw2DdtGAYlJSXMmTOHPXv2sHnzZnw+X7TbssUfa1s4XSR76tsYv6qyblK+qamJVatW0dvbyxVXXEFqaqpltc5FS0sLu3btYu7cubbt3L7//vsjt7/85S+TlJRkS10REREREREREbl4XBThtcPh4Lvf/W7k/le+8hX8fr/ldQ3DYNq0aRiGwY4dO6J+OOAAr9fL0qVLMU2TlStXUltbG+2WLFXR42NLRzfOE+n14MA6dMqPZHdnLwe6h3ZSPhgMsmvXLjZu3EhxcTELFy4kNjZ2SGucr97eXl5//XUmTZpEVlaWLTVXrlzJSy+9BEBhYSF33323LXVFREREREREROTiclGE1wDLli1j2bJlAFRUVPCrX/3KlrpOp5N58+bR1NTE4cOHbal5NmJjY5k7dy5Tp05l586dF/UUdo2v/40Kx4nZ68GrQ8K88Q2Fmr7AkNUemLbu6OjgyiuvZOzYscNivzX0h+qbNm3C6/VSVFRkS81wOMwXvvCFyP1vfvObeDweW2qLiIiIiIiIiMjF5aIJr4GTpq+//OUvc/ToUVvqxsbGMn/+fMrKyqivr7el5tkwDIP8/PyLfgo75kRY7ByUGQ/cNAftvR7gcVx4uHy6aevExMQLvu5QMU2THTt24HQ6I/87wA4//elP2bx5MwDTpk3jAx/4gC11RURERERERETk4nNRhdezZ8/mzjvvBKCrq4s777zTtlUeqampzJw5k61bt9LR0WFLzbM1eAp7x44drF+/nra2tmi3NWSmJsWT7HL2B9X0f4RO/OkwDMxB27ATnA5mJsWfd61wOExlZSUrVqygvb192E1bDzh06BAtLS3MmzcPh8Oef+aHDh3ii1/8YuT+T3/6U9tqi4iIiIiIiIjIxeeiS5Z++MMfkp+fD8CKFSv4zW9+Y1vtvLw8iouLef31123ZuX0uBqawly1bRkpKCq+99hpbtmyhq6sr2q1dsDingymJcfSe5o2KgGnSEw4TOPG1d2WnkeBynnMN0zSpra1l1apVHDp0iMmTJ7No0aJhNW09oK6ujoMHDzJ//nzbVnaEQiFuu+02env794l/6lOf4oorrrCltoiIiIiIiIiIXJwuuvA6JSWFxx57LHL/c5/7nG3rQwAmTJhAUlISmzdvJhwOv/VfsFlMTAyTJ0/m6quvxul0smrVKnbu3ElfX1+0Wztv61u72NDWecYXsy9sku52cW9Bzjlfv6mpibVr17Jr1y6Ki4u56qqryM/PH3bT1gAdHR1s27aNWbNmkZKSYlvdn/70p6xbtw6AsWPH8uCDD9pWW0RERERERERELk4XXXgNcO2113LXXXcB/etD7rjjDtuCZMMwmDVrFn6/n507d9q2tuRcxcXFMXPmTK688kr6+vp45ZVX2L9//4g81PHXVccxMYhzGG/6gnYCOTEuMmJcZ33d1tZWNmzYwKZNm8jJyWHZsmUUFRUN21UYPT09bNy4kbFjxzJq1Cjb6h48ePCkdSG//e1vSUhIsK2+iIiIiIiIiIhcnIZnCjcEfvjDHzJmzBgAVq5caev6ELfbzWWXXUZzczO7du0atgE2QFJSEvPnz2fBggW0tLTw0ksvsX379mG3t/vNVPX52dDWv/rEMPoD7IF5aAf9hznGOwzinA72d/dR1n3mCfNwOExNTQ1r165l3bp1JCUlsWzZMkpLS3G5zj74tltvby/r168nJyeH0tJS2+oOrAsZmNy/9957WbJkiW31RURERERERETk4mWYwzlZvUAvv/wy1157LQAJCQns3r2boqIi2+r39PTw2muvkZuby5QpU4blmolTtbe3U1FRQVVVFenp6RQUFJCbm4vTee57os9XIBDg+eef5/rrr8ftdp/xsetaO/nw7oqTPtcbChMGnAbEnjIl/ctJBVyb+cZ1Gr29vRw7dozKykoMw6CoqIiCgoK3rD8c9PX1sW7dOtLT05kxY4atr7Mf/ehH3HfffQCMGzeOHTt2aOpaRERERERERESGxEUdXgPcfffdPPzwwwAsXbqUV155xda1D93d3bz22mvk5+czadKkERFgA/h8vkiY6/f7GT16NKNHjyYlJcXy53Au4fWW9m7ev/PISZ/zhcMEzf7J61iHcVK/j00p4or0JACCwSDHjx/n2LFjHD9+nOzsbAoKCvB6vSPm5+T3+1m3bh3JycnMmjXL1r7LysqYMWMGfX19GIbBmjVrWLRokW31RURERERERETk4nbRh9cdHR1MnTqVY8eOAfCLX/yCT3ziE7b20NXVxWuvvcbo0aNHVIANYJomzc3NVFZWUl9fj8vlwuv14vV6yczMtGQi+1zC695QmIWb9tMRDEU+FzZNDHjD9znW4WDVjEK6m5qor6+nsbGRuLg48vPzKSgoIC4ubsifi5V8Ph/r168nMTGR2bNn2/qmTCgUYvHixWzYsAGAz3zmM/z4xz+2rb6IiIiIiIiIiFz8LvrwGuCVV17hmmuuAaKzPgT6A+x169YxatSoEbNC5FThcJimE8FvQ0MDPp+PrKwsvF4vOTk5xMbGDkmdcwmvAb55pJbf1TSd9muGaZIb8jM50MMi/CT5eklLS4sE8ImJiSPyZzGw4zolJYVZs2bZfojkD3/4Qz73uc8BUFJSwo4dO4iPj7e1BxERERERERERubhdEuE1wMc//nF+/etfA3D55ZezatUqPB6PrT10d3ezfv16srOzmTZt2ogM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8rnRo0fz2GOPcc0110SxMxERERERERERkaFz8Y+oRlFMTAzf/OY32bRpE1OmTAH69zl/9atf5bLLLjtpKlv6DUxaD9yWfxuYtp46depJwfVdd93Fnj17FFyLiIiIiIiIiMhFReG1DWbPns2WLVv40pe+hNPpBGDbtm3Mnj2bb33rWwQCgSh3KMPdsWPHuO6667j77rvp7OwEID8/nxdffJGHH36Y5OTkKHcoIiIiIiIiIiIytBRe28Tj8fCtb32LjRs3MnnyZKB/CvsrX/mKprDlTZmmySOPPMKUKVN4+eWXI5+/44472LNnD9ddd10UuxMREREREREREbGOwmubzZkzh61bt3L//fdH1mMMTGF//vOfp7W1NcodynCxdetWrr76aj760Y+eNG39wgsv8Oijj5KSkhLlDkVERERERERERKyj8DoKPB4P3/nOd9i4cSOTJk0C+qewv//971NcXMx3v/tdenp6otylRMvBgwd53/vex5w5c1i1alXk87fffjt79uzhbW97WxS7ExERERERERERsYfC6yiaO3cuW7du5Ytf/CIxMTEAtLW1cf/991NSUsLDDz9MMBiMcpdil7q6Oj72sY8xadIknnrqqcjni4qKeP7553nsscc0bS0iIiIiIiIiIpcMhddRFhsby7e//W0OHTrERz7ykcgqkdraWu6++24mT57MX//6V0zTjHKnYpW2tja++MUvMnbsWH7zm98QCoUAyM7O5mc/+xkHDhzg7W9/e5S7FBERERERERERsZfC62FizJgxPP744+zatYt3vvOdkc8fPHiQm2++mfnz57Ny5coodihDrbe3lx/+8IcUFxfz4IMP0tvbC0BiYiJf//rXOXz4MPfcc09kKl9ERERERERERORSovB6mJk8eTL/+Mc/WLduHYsXL458fvPmzVx99dVcd911bNu2LYodyoUKBoM89thjjB8/ns997nORQzpjYmL49Kc/TXl5OV/96ldJSkqKcqciIiIiIiIiIiLRo/B6mFqwYAGrV6/mueeeY+rUqZHPv/TSS8yePZv3vOc9rF27VutERpCenh4efvhhpkyZwp133kl1dTUAhmFw6623UlZWxk9+8hOysrKi3KmIiIiIiIiIiEj0KbwexgzD4IYbbmD79u08+eSTFBYWRr72t7/9jSVLljB79mx+97vf4fP5oteonFFVVRVf+MIXGD16NHfffTdlZWWRr73jHe9g586d/O53vzvp5ysiIiIiIiIiInKpU3g9AjidTj70oQ9x4MABHnroIbxeb+Rr27dv5yMf+QhjxozhgQceoK6uLoqdygDTNFm3bh233HILRUVFfO9736OlpSXy9cWLF7N27VqeffbZkybrRUREREREREREpJ9hau/EiOP3+/nLX/7CQw89xJYtW076mtPp5B3veAd33XUXb3vb23A6nVHq8vwFAgGef/55rr/+etxud7TbOSfNzc08+eSTPPLII+zbt++kr7ndbt7//vdz7733MmfOnCh1KCIiIiIiIiIiMjIovB7BTNNkw4YNPPTQQzz99NOEQqGTvp6fn8/tt9/OHXfcwZgxY6LU5bkbaeG1aZq8+uqrPPLIIzz99NP4/f6Tvp6dnc3HP/5xPvaxj500NS8iIiIiIiIiIiJvTuH1RaKqqoqHH36Y3/72t9TW1p70NcMwWLJkCTfddBM33XQT48aNi1KXZ2ckhNeBQIDXXnuN5cuX88wzz1BRUfGGxyxatIiPfvSjvO9978Pj8UShSxERERERERERkZFL4fVFJhgM8sILL/Dwww/z/PPPEw6H3/CYCRMmRILsyy67bNitFhmu4XVbWxsvvvgiy5cv54UXXqCtre0Nj8nIyODDH/4wd955JxMnTrS/SRERERERERERkYuEwuuLWHV1NY8//jhPPvkkhw4dOu1jMjMzueGGG7jpppu49tprSUxMtLnLNxpO4XV5eTnPPvssy5cvZ82aNQSDwTc8xul0snTpUu644w7+4z/+Q1PWIiIiIiIiIiIiQ0Dh9SXANE3KysoiIez69etPO5EdExPDVVddxY033sh1111HcXExhmHY3m80w2ufz8fWrVt57rnnWL58OXv37j3t41JSUnj729/OTTfdxNve9jbS0tJs7VNERERERERERORip/D6EtTU1MTzzz/P8uXL+de//kVXV9dpH5eWlsasWbOYPXt25MOOQNuu8Lqvr49du3axdetWtm7dyrZt29izZw+BQOC0jy8uLuamm27ixhtvZPHixVGfChcREREREREREbmYKby+xPl8Pl599VWWL1/Os88+S1VV1Rkfn5qa+oZAe+zYsUMaaFsRXvf29p4UVG/dupW9e/eedg3IAMMwuOyyyyL7wSdOnBiVSXQREREREREREZFLkcJriTBNk507d/Lcc8+xceNGtm7dSn19/Vv+vZSUFGbOnElRURG5ubmRj1GjRpGbm4vX6yU2Nvas+zjX8No0Tdrb26mrq6O2tpa6urrIR21tLfv372fv3r2EQqEzXsfhcDBx4kRmz57NFVdcwTve8Q6ys7PPum8REREREREREREZOgqv5Yxqa2tPmlbeunUrdXV153ydtLS0SJg98JGdnY3H48HlcuFyuXC73bhcLgC2bdvGlClTAAgGgwSDQQKBAN3d3W8Ip+vq6ujr6zunfhwOB5MmTTppgnz69OkkJCSc83MTERERERERERGRoafwWs5ZXV0d27ZtOynQrqmpiXZbb8rpdJ42qI6Pj492ayIiIiIiIiIiIvImFF7LkGhpaaGmpua0U9GDP3p7e4e0bnp6+mlXlQy+n5eXd05rS0RERERERERERCT6FF6LbQbvpq6rq6OpqYlAIHDSWpCBPx0OR2SNyOC1IrGxsXi93vPapS0iIiIiIiIiIiIjh8JrERERERERERERERl2HNFuQERERERERERERETkVAqvRURERERERERERGTYUXgtIiIiIiIiIiIiIsOOwmsRERERERERERERGXYUXouIiIiIiIiIiIjIsKPwWkRERERERERERESGHYXXIiIiIiIiIiIiIjLsKLwWERERERERERERkWFH4bWIiIiIiIiIiIiIDDsKr0VERERERERERERk2FF4LSIiIiIiIiIiIiLDjsJrsdSvfvUrpk2bRnJyMsnJyVx++eW88MIL53Wt2267jS9/+cs8+OCDzJ07l6SkJLKzs3nXu95FWVnZEHcuIiIiIiIiIiIi0aTwWiyVn5/Pd7/7XbZu3cqWLVu46qqreOc738nevXvP6TqhUIjnnnuOm266idWrV/PJT36SjRs38vLLLxMIBLj22mvp7u626FmIiIiIiIiIiIiI3QzTNM1oNyGXlvT0dH7wgx9wxx13MHHiRA4cOHDax/3sZz/jnnvuAWDt2rXccsst1NTUYBjGSY9rbGwkOzub1atXs2TJEsv7FxEREREREREREetp8lpsEwqF+NOf/kR3dzeXX345AE8//TQAK1asoK6ujqNHj+JwOHjqqae46667In93+fLl3HjjjW8IrgHa29uB/lBcRERERERERERELg4Kr8Vyu3fvJjExEY/Hw8c+9jH+/ve/M2nSJAAaGhpwuVwsXLgQr9dLU1MT4XCYxYsX4/F4Itd45plnuOmmm95w7XA4zGc+8xkWLlzIlClTbHtOIiIiIiIiIiIiYi1XtBuQi19paSk7duygvb2dv/71r3z4wx9m9erVTJo0id27dzN+/PhIUL1z506ys7PJycmJ/P39+/dTW1vL1Vdf/YZrf/KTn2TPnj289tprtj0fERERERERERERsZ7Ca7FcTEwM48aNA2D27Nls3ryZhx56iN/85jfs2rWLqVOnRh67c+fOk+5D/8qQa665htjY2JM+f8899/Dcc8+xZs0a8vPzrX8iIiIiIiIiIiIiYhutDRHbhcNhfD4fALt27WLatGmRr+3cufOk+9C/MuSd73xn5L5pmtxzzz38/e9/Z+XKlRQVFdnTuIiIiIiIiIiIiNhG4bVY6v7772fNmjUcPXqU3bt3c//99/Pqq6/ywQ9+kHA4zN69e08Kq48cOUJhYWHk/vHjx9myZQvveMc7Ip/75Cc/yf/+7//+/+3coa0CQRSG0f8VQDDbBhgSDCMwWDxmQxVYykDiaGAVtVAAGwoAuc+9BPEky4hz9CRzx36Z3Fwul0wmk/R9n77v83q9xnwaAAAAAPBB1obwUY/HI23b5n6/ZzqdZj6f53q9ZrPZ5Ha75fl8vsXr2WyW4/GYxWKR1WqVruuyXC7TNM3fmdPplCRZr9dvd53P5+z3+zGeBQAAAAB82M8wDMO3h4D/bLfblFJyOBy+PQoAAAAAMCJrQ6haKSW73e7bYwAAAAAAI/PzGgAAAACA6vh5DQAAAABAdcRrAAAAAACqI14DAAAAAFAd8RoAAAAAgOqI1wAAAAAAVEe8BgAAAACgOuI1AAAAAADVEa8BAAAAAKiOeA0AAAAAQHXEawAAAAAAqvML1q4ka9w2H7YAAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], "source": [ "# One figure with a POLAR SUBPLOT per module (tracked (kx, ky)), excluding DEAD and DC-dominant.\n", "# Uses the final checkpoint only (t = -1).\n", @@ -1907,7 +1385,7 @@ " tp = [tracked_power_from_fft2(P, kx, ky, p1, p2) for (kx, ky) in tracked_freqs]\n", " j = int(np.argmax(tp))\n", " kx, ky = tracked_freqs[j]\n", - " if (kx, ky) == (0, 0): # DC has undefined phase → skip\n", + " if (kx, ky) == (0, 0): # DC has undefined phase \u2192 skip\n", " continue\n", " dom_idx[i] = j\n", " phase[i] = phase_at_2d_bin(m, kx, ky, p1, p2)\n", @@ -1961,33 +1439,22 @@ " fig.subplots_adjust(right=0.82, wspace=0.35, hspace=0.35)\n", " # plt.savefig(\"phase_polar_modules_grid.png\", bbox_inches=\"tight\", dpi=170)\n", " plt.show()" - ] + ], + "execution_count": null, + "outputs": [], + "id": "d0a2b283-bb8b-4145-9519-3af401532cc4" }, { "cell_type": "markdown", - "id": "97cdde1e-d4ef-4437-bc1e-5584ab50fd64", "metadata": {}, "source": [ "## Activation Plot" - ] + ], + "id": "97cdde1e-d4ef-4437-bc1e-5584ab50fd64" }, { "cell_type": "code", - "execution_count": 183, - "id": "667c8114-4a0b-480e-9ba2-022122926a8d", "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], "source": [ "paths_xy = sequence_to_paths_xy(sequence_xy, p1, p2)\n", "\n", @@ -2105,7 +1572,7 @@ " # DEAD: weakest first\n", " idxs = sorted(idxs, key=lambda i: l2_norm[i])\n", " else:\n", - " # sort by (phase mod 2π, then -dom_power) for reproducibility\n", + " # sort by (phase mod 2\u03c0, then -dom_power) for reproducibility\n", " idxs = sorted(idxs, key=lambda i: ((phase[i] + 2*np.pi) % (2*np.pi), -dom_pw[i]))\n", " return idxs[:min(max_neurons, len(idxs))]\n", "\n", @@ -2118,7 +1585,7 @@ " sums = sums_lin.reshape(p1, p2)\n", " return sums / np.maximum(counts, 1) # avoid div-by-zero\n", "\n", - "# ========= Plot: one 3×3 figure per module (colorbar on far right) =========\n", + "# ========= Plot: one 3\u00d73 figure per module (colorbar on far right) =========\n", "for m in ordered_mods:\n", " nids = picked[m]\n", " if len(nids) == 0:\n", @@ -2188,23 +1655,26 @@ "\n", " plt.savefig(f\"activations2D_module_{safe}_3x3.png\", bbox_inches=\"tight\", dpi=170)\n", " plt.show()" - ] + ], + "execution_count": null, + "outputs": [], + "id": "667c8114-4a0b-480e-9ba2-022122926a8d" }, { "cell_type": "code", - "execution_count": null, - "id": "be86d544-02bf-4623-b57b-15b16f3248a5", "metadata": {}, + "source": [], + "execution_count": null, "outputs": [], - "source": [] + "id": "be86d544-02bf-4623-b57b-15b16f3248a5" }, { "cell_type": "code", - "execution_count": null, - "id": "b8cbe5d1-9668-405f-b452-ab92dcad91ef", "metadata": {}, + "source": [], + "execution_count": null, "outputs": [], - "source": [] + "id": "b8cbe5d1-9668-405f-b452-ab92dcad91ef" } ], "metadata": { @@ -2228,4 +1698,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} +} \ No newline at end of file diff --git a/notebooks/C_n.ipynb b/notebooks/C_n.ipynb index 66aa61b..3f88ae9 100644 --- a/notebooks/C_n.ipynb +++ b/notebooks/C_n.ipynb @@ -2,18 +2,15 @@ "cells": [ { "cell_type": "markdown", - "id": "51d11caf-0971-4324-b63b-819b714a9c3c", "metadata": {}, "source": [ "# Binary Group Composition with $C_n$" - ] + ], + "id": "51d11caf-0971-4324-b63b-819b714a9c3c" }, { "cell_type": "code", - "execution_count": 9, - "id": "80f249f1-6985-4c73-86cd-04e1adac3e8d", "metadata": {}, - "outputs": [], "source": [ "import numpy as np\n", "import random\n", @@ -29,22 +26,22 @@ "from matplotlib.ticker import FormatStrFormatter\n", "from matplotlib.ticker import FuncFormatter\n", "from matplotlib.ticker import MaxNLocator" - ] + ], + "execution_count": null, + "outputs": [], + "id": "80f249f1-6985-4c73-86cd-04e1adac3e8d" }, { "cell_type": "markdown", - "id": "9fd05577-db56-4d0a-bb93-1d0b48cecaf6", "metadata": {}, "source": [ "## Dataset" - ] + ], + "id": "9fd05577-db56-4d0a-bb93-1d0b48cecaf6" }, { "cell_type": "code", - "execution_count": 10, - "id": "f19bd1ad-9e8f-4720-b317-afe13fafae88", "metadata": {}, - "outputs": [], "source": [ "def one_hot(p):\n", " \"\"\"One-hot encode an integer value in R^p.\"\"\"\n", @@ -96,22 +93,22 @@ " idx += 1\n", " \n", " return X, Y" - ] + ], + "execution_count": null, + "outputs": [], + "id": "f19bd1ad-9e8f-4720-b317-afe13fafae88" }, { "cell_type": "markdown", - "id": "7a0ecbbd-ceaf-4bef-af4a-13a22fa70063", "metadata": {}, "source": [ "## Architecture" - ] + ], + "id": "7a0ecbbd-ceaf-4bef-af4a-13a22fa70063" }, { "cell_type": "code", - "execution_count": 11, - "id": "2cf22b7d-49e7-445b-8742-2e75cd1fa55a", "metadata": {}, - "outputs": [], "source": [ "class TwoLayerNet(nn.Module):\n", " def __init__(self, p, hidden_size, nonlinearity='square', init_scale=1.0, output_scale=1.0):\n", @@ -158,22 +155,22 @@ " x_out *= self.output_scale\n", " \n", " return x_out" - ] + ], + "execution_count": null, + "outputs": [], + "id": "2cf22b7d-49e7-445b-8742-2e75cd1fa55a" }, { "cell_type": "markdown", - "id": "f7e7336b-5c6e-48af-a357-2b2c877f6168", "metadata": {}, "source": [ "## Optimization" - ] + ], + "id": "f7e7336b-5c6e-48af-a357-2b2c877f6168" }, { "cell_type": "code", - "execution_count": 12, - "id": "bc9ba87b-9607-4a4a-9b00-00c15adb2f5a", "metadata": {}, - "outputs": [], "source": [ "import torch\n", "from torch import nn\n", @@ -313,14 +310,14 @@ " raise ValueError(f\"PerNeuronScaledSGD: Unsupported model structure with {model_type}\")\n", " \n", " return None\n" - ] + ], + "execution_count": null, + "outputs": [], + "id": "bc9ba87b-9607-4a4a-9b00-00c15adb2f5a" }, { "cell_type": "code", - "execution_count": 13, - "id": "1035f81c-e877-4655-8640-4e4c3d323af8", "metadata": {}, - "outputs": [], "source": [ "def test_accuracy(model, dataloader):\n", " correct = 0\n", @@ -380,22 +377,22 @@ " print(f\"Epoch {epoch+1}/{epochs}, Loss: {avg_loss:.4f}, Accuracy: {accuracy:.2f}%\")\n", "\n", " return loss_history, accuracy_history, param_history # Return loss history for plotting" - ] + ], + "execution_count": null, + "outputs": [], + "id": "1035f81c-e877-4655-8640-4e4c3d323af8" }, { "cell_type": "markdown", - "id": "0e86c4f6-83a6-4465-abf0-7d104432cc9c", "metadata": {}, "source": [ "## Plotting functions" - ] + ], + "id": "0e86c4f6-83a6-4465-abf0-7d104432cc9c" }, { "cell_type": "code", - "execution_count": 14, - "id": "014e2d10-9550-4fd4-adb7-168a27fda1b3", "metadata": {}, - "outputs": [], "source": [ "def style_axes(ax, numyticks=5, numxticks=5, labelsize=24):\n", " # Y-axis ticks\n", @@ -424,14 +421,14 @@ " ax.spines[spine].set_visible(False)\n", " for spine in [\"left\", \"bottom\"]:\n", " ax.spines[spine].set_linewidth(3)" - ] + ], + "execution_count": null, + "outputs": [], + "id": "014e2d10-9550-4fd4-adb7-168a27fda1b3" }, { "cell_type": "code", - "execution_count": 15, - "id": "20989d96-f34f-4be7-a0f9-4b92fb7f235a", "metadata": {}, - "outputs": [], "source": [ "def get_power(points):\n", " p = len(points)\n", @@ -482,39 +479,22 @@ " ax.plot(xs, curr_val.real, color=color, alpha=alpha)\n", " else:\n", " ax.plot(np.arange(p), points, color=color, alpha=alpha) " - ] + ], + "execution_count": null, + "outputs": [], + "id": "20989d96-f34f-4be7-a0f9-4b92fb7f235a" }, { "cell_type": "markdown", - "id": "e99dae27-f8fe-403a-b70f-0bcaf818cbe7", "metadata": {}, "source": [ "## Gradient Descent Experiment" - ] + ], + "id": "e99dae27-f8fe-403a-b70f-0bcaf818cbe7" }, { "cell_type": "code", - "execution_count": 16, - "id": "bcd15c5a-5745-41ba-b015-48e403160c7e", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Epoch 5000/50001, Loss: 0.1034, Accuracy: 100.00%\n", - "Epoch 10000/50001, Loss: 0.1033, Accuracy: 100.00%\n", - "Epoch 15000/50001, Loss: 0.1033, Accuracy: 100.00%\n", - "Epoch 20000/50001, Loss: 0.1030, Accuracy: 100.00%\n", - "Epoch 25000/50001, Loss: 0.0608, Accuracy: 100.00%\n", - "Epoch 30000/50001, Loss: 0.0010, Accuracy: 100.00%\n", - "Epoch 35000/50001, Loss: 0.0000, Accuracy: 100.00%\n", - "Epoch 40000/50001, Loss: 0.0000, Accuracy: 100.00%\n", - "Epoch 45000/50001, Loss: 0.0000, Accuracy: 100.00%\n", - "Epoch 50000/50001, Loss: 0.0000, Accuracy: 100.00%\n" - ] - } - ], "source": [ "seed = 0 # or any integer you like\n", "random.seed(seed)\n", @@ -522,8 +502,12 @@ "torch.manual_seed(seed)\n", "torch.cuda.manual_seed_all(seed) # if using GPU\n", "\n", + "# TEST_MODE: Reduce p and hidden_size for faster automated testing\n", + "import os\n", + "TEST_MODE = os.environ.get(\"NOTEBOOK_TEST_MODE\", \"0\") == \"1\"\n", + "\n", "# Data Generation using the new function\n", - "p = 11 # Modulus\n", + "p = 11 # Keep same value in TEST_MODE to avoid index errors # Modulus (reduced in test mode)\n", "\n", "# Get base vector\n", "# template = one_hot(p)\n", @@ -545,7 +529,7 @@ "# dataloader = DataLoader(dataset, batch_size=32, shuffle=False)\n", "\n", "# Initialize model\n", - "hidden_size = 200\n", + "hidden_size = 20 if TEST_MODE else 200 # Reduced in test mode\n", "model = TwoLayerNet(p=p, hidden_size=hidden_size, nonlinearity='square', init_scale=1e-5, output_scale=1e0)\n", "\n", "# Create loss function\n", @@ -556,35 +540,27 @@ "optimizer = PerNeuronScaledSGD(model, lr=lr, degree=3) # explicit\n", "\n", "# Train the model\n", - "epochs = 50001\n", - "loss_history, accuracy_history, param_history = train(model, dataloader, loss, optimizer, epochs=epochs, verbose_interval=epochs//10)" - ] + "# TEST_MODE: Set to reduce epochs for automated testing\n", + "import os\n", + "TEST_MODE = os.environ.get(\"NOTEBOOK_TEST_MODE\", \"0\") == \"1\"\n", + "epochs = 2 if TEST_MODE else 50001\n", + "loss_history, accuracy_history, param_history = train(model, dataloader, loss, optimizer, epochs=epochs, verbose_interval=max(1, epochs//10))" + ], + "execution_count": null, + "outputs": [], + "id": "bcd15c5a-5745-41ba-b015-48e403160c7e" }, { "cell_type": "markdown", - "id": "0f48aebc-a439-405a-a057-3f5c24cca91a", "metadata": {}, "source": [ "## Plot Loss" - ] + ], + "id": "0f48aebc-a439-405a-a057-3f5c24cca91a" }, { "cell_type": "code", - "execution_count": 17, - "id": "ff46febe-abb5-459a-bb06-a18a26afb967", "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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5eUFlI0YMUIHDx70H//kJz/R/fffH7J9WVmZxo8f7//k/Uc/+pEeeuihoHozZszQG2+8IUm65JJLtH79eqWkpIS85ne+8x099thjkqTs7GwdOXJEWVlZAXX27NmjsWPHyufzSZIefvhhff/73zd5yUFaf/8k6fHHH9eCBQtC1t2+fbsmTJgg27ZlWZZKS0s1cODAgDo33XST/vrXv0qSXnnlFV111VVdigsAukUPJzYAgD6k9Sfunf0qKSkJul7rHovi4uKgT+7beuyxx/z1Bw0aZPt8voDzH3/8ccBzbt26tcPreTweOz8/319/xYoVQXUWLlzoP3/RRRcFPWdntP7+jR8/Pmz96dOn++s///zzQeevvvpq//lt27Z1OS4A6A6sCgUA6BXmz5+vpKSOp/7dfvvtSkxMlCQdPXpUu3fvDji/fv16/+OJEydq0qRJHV4vMzNT8+bNC9n+rH/84x/+x3fffXe78zA66+abbw5bp3X8oVaaGjp0qP/xihUruiUuAOgqEgsAQJcsWbJEtm0bf40YMaLD61188cVhnzM3N1ejR4/2H7///vsB51sfX3LJJUav49JLL/U/3rp1a8C58vLygDf0V155pdE1TYwfPz5snf79+/sf19TUBJ2/5ZZb/I9XrFih6dOn69e//rX27t3bPUECQCeQWAAAeoVhw4Z1up7b7Q441/p4+PDhRtdrnfC0XTmpvLzc/zg1NVWDBg0yuqaJnJycsHWSk5P9j5uamoLOX3PNNbrnnnv8x5s2bdLdd9+t8847T0VFRbrpppv0q1/9SkeOHOmeoAGgAyQWAIBeISMjw6heZmam/3FtbW3AOY/HE7JeV6/X+tjlchldz1R3Dal67LHH9MwzzwRNpC8vL9df//pX3XPPPRo2bJhuuukmHTp0qFueEwBCIbEAAPQKXq/XqF5dXZ3/cdsVnFq/+W9dr6vXa33cOmnpbW688UZt3LhRBw8e1O9//3vdddddGjdunP+8bdv661//qsmTJ2vPnj09GCmAWEZiAQDoFUw/TT+7GZwk5efnB5wrKCjo9PVaz6Foe73CwkL/44aGBh07dszomj1l2LBh+spXvqIVK1Zox44dOnTokB588EF/b9Dx48e1aNGiHo4SQKwisQAA9Arvvvtu2DonT57Url27/MeTJ08OON96FaW3337b6Hlb12t7vcLCwoA5GK+99prRNXuLoUOH6oEHHtDKlSv9Zf/85z/V0NDQg1EBiFUkFgCAXmHNmjVqaWnpsM5TTz3lrzNw4MCAFaIkadasWf7H77//vj788MMOr+f1evX000+HbH/WnDlz/I9//etfy+6D+8rOnTvX/7ipqUlVVVU9GA2AWEViAQDoFfbt26ef//zn7Z4vLy8P2Gn7jjvuCJoAPWbMGF1xxRX+47vvvjvkakpn/fCHP1RFRYWk0ztvz58/P6jOvffeq4SE038u33nnHf30pz81e0FR0HYVq/a0Hj6WkJAQsIwtAHQXEgsAQK+QkpKi+++/X48++qh8Pl/AuZ07d+rqq6/2JwGFhYX67ne/G/I6Dz/8sH8TvTfffFNf+tKX/O3Oamxs1A9+8IOARGbJkiUhV34aNWqUvve97/mPf/CDH+iee+5p91P/9957T1/72te0Y8cOg1ftzMUXX6z58+fr73//uxobG0PW2bNnj7761a/6j2fPnq2UlJSIxwYg/nS8xSkAAO3429/+ZvyJuXR6OdmlS5e2e37p0qW69957de+99+pnP/uZLrvsMrlcLu3Zs0dvvfWWP9lISkrSk08+qby8vJDXueSSS/STn/xEixcvliS98MILGjZsmK688koNHTpUJ06c0Pr163X8+HF/mxtvvLHdREWSfvzjH2vXrl164YUXJEm/+tWvtHLlSl188cUqLi5WUlKSysrKtGXLFv8E73vvvdf4e9NVTU1NWrNmjdasWaP09HRNmDBBI0eOVHZ2tk6cOKH9+/dr8+bN/vrp6en62c9+FvG4AMQnEgsAQJds2rRJmzZtMq6fk5PTYWJxww03KDU1Vd/5znd05MiRgLkPZ/Xr109PPvmkrr322g6f63/9r/+l3NxcLVq0SDU1NWpoaNA//vGPoHqJiYm6++679cgjj3S4r0RSUpKee+45/ehHP9IjjzyihoYGNTY2asOGDdqwYUPI66alpXUYY3dovRxufX29Nm7cqI0bN4asW1xcrFWrVmnChAkRjwtAfCKxAAD0GgsXLtTll1+uFStW6NVXX/XvGD1ixAh9/vOf1z333KOBAwcaXeuOO+7QDTfcoCeeeEJ///vftWfPHlVVVSkrK0tDhw7VVVddpW984xsB+z10JCEhQf/n//wfLVy4UL/73e/0yiuvaO/evaqsrFRSUpIGDBig888/X7Nnz9aXv/xlDR48uMvfB1Pbtm3Tu+++q/Xr1+u9997T7t27dfToUXm9XmVkZKioqEgTJ07U3Llzdcsttyg1NTXiMQGIX5bdF5e3AADEhBEjRujgwYOSpJKSkoClXQEAfQuTtwEAAAA4RmIBAAAAwDESCwAAAACOkVgAAAAAcIzEAgAAAIBjJBYAAAAAHGO5WQAAAACO0WMBAAAAwDESCwAAAACOkVgAAAAAcIzEAgAAAIBjJBYAAAAAHCOxAAAAAOAYiQUAAAAAx0gsAAAAADhGYgEAAADAsf8fq7fnh1JtbPIAAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], "source": [ "fig, ax = plt.subplots(1, 1, figsize=(8, 6))\n", "ax.plot(list(loss_history), lw=7)\n", @@ -613,33 +589,22 @@ "plt.savefig(\"loss-without-lines.pdf\", bbox_inches=\"tight\")\n", "plt.savefig(\"loss-without-lines.svg\", bbox_inches=\"tight\")\n", "plt.show()" - ] + ], + "execution_count": null, + "outputs": [], + "id": "ff46febe-abb5-459a-bb06-a18a26afb967" }, { "cell_type": "markdown", - "id": "40b851e7-6256-43cd-b9f3-aca38db04917", "metadata": {}, "source": [ "## Power Spectrum of output" - ] + ], + "id": "40b851e7-6256-43cd-b9f3-aca38db04917" }, { "cell_type": "code", - "execution_count": 19, - "id": "68b25ca9-6339-49dd-9d45-577a51798a25", "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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x89+9jOcc8456NWrFxYsWBCW43LTTTdh3rx5qK+vx80334x+/fph6tSpuPHGG3H++efj/PPPx+bNmyW3feCBB/wreQ8aNAgjR44MS0xEulaeLz3FLgAkdvPNs05ERLoQcfXj5cuX4/bbb0dtbW2791VdXY1p06Zh7dq1kt9ku1wuVFVV4ciRI/jvf/+L3/72t3jzzTf5ge+s888/Hzt37sQ///lPfPjhh9i5cyc2bdqErl27okePHpg9ezZuuummoG1MJhOWLVuGV155Bf/5z3+wYcMGJCQk4IorrsCHH36IH374Af/4xz8kH++vf/0revbsiYULF+Lbb79FQkICLr/8crz33nuorKzEn/70J8ntRo4ciT179mDBggVYuXIltm7dCofDgbS0NPTs2RPTp0/H5MmTw3Zc5s6diyuvvBKvvPIKvvrqKyxbtgyJiYnIysrCnDlzcOWVV0pul5aWhiFDhmDz5s145JFHwhYPka4V7ZdvS206TxsREWlJEEVdDtVvs0WLFuGuu+5SvM+oUaOwYcOGZvd1+vRpZGZmBt2Wnp6Oiy66CBkZGXC5XNixYwd27tzpb7dYLPjwww9x/fUK0ym2U1FREdLSgqcULSwsRGpqquT96+vrkZeXh9zcXNilphk1kIbf75133olFixZpHY6qDhw4gL59+yI5ORknT55EXFxc8xsFiKTXAUWRr/8CfP6cdNslDwLXPa9uPEREJCviKhYN0tPTcfHFF/t/Pv30U7z88stt2lenTp0wY8YM3HXXXRg8eHBI+8aNGzFjxgzk5eXB7Xbj9ttvx4EDB5qdZpWoNZ5++mmIooiHHnqo1UkFkWEV/STfpjQPOxERqS7iEotrr70W+fn5/qk9G8j1W1dis9nw9NNP48knn/QveCbliiuuwBdffIHBgwejsrISlZWVmD9/Pv74xz+2+jGJAq1YsQIfffQR9uzZg82bNyMjIwNz5szROiwi9SglFl2ZWBAR6UnEDd7OyMgISSraqnPnzvjd736nmFQ0yMnJCVpTQG56U6LW2L59O15//XXs3bsXV111FdauXYuUlBStwyJST+VJ+bauHGNBRKQnEVex0NLll1/uvyy3kBu1z8yZMzFz5kytw1DNs88+i2effVbrMIi04fX4VoSWYrZxQTciIp2JuIqFlgRB8F/2eDwaRkJEFAFqigHRK90Wn+ZbMZqIiHSDiUUY7dq1y385KytLw0iIiCJATaF8W4L0LHhERKQdJhZh4vV68dZbb/mvX3XVVRpGQ0QUAarPyLclcNY9IiK94RiLMHn11Vexf79vISeTySS7QnRL1dTUtKmNiChiVBfJt8WzYkFEpDdMLMJgz549+PWvf+2/fs899+D8889v1z4TEhLaGxYRkbGxYkFEZCjsCtVO5eXlmDhxIqqrqwEA5557Ll566SWNoyIiigA1ChWLhDT14iAiohZhYtEO9fX1uPHGG3Ho0CEAQFJSEj744IOwVBuqq6tlf/Ly8tq9fwo2ffp0CIIg+dOrVy+twyOKTvUV8m2xndWLg4iIWoRdodrI7XZjypQp+OqrrwAAdrsdK1aswKBBg8Ky//j4eNm22trasDwGNRoxYgTKy8uxcuVKmM1mDBkyBP3790d6ejqGDBmiWhxbt27FM888g2+//RYulwsDBw7EE088gVtvvVW1GIh0w1Ep32ZvfuFSIiJSFxOLNvB6vZg5cyZWrFgBALBYLHj//fcxatQojSOjtioqKsKqVaswa9YszJ07F+np6vffXr9+Pa655hrY7XZMnToViYmJ+N///ocpU6bg+PHjePLJJ1WPiUhT9QqJRQwTCyIivWFi0QYPPvgg3n77bQC+GaAWL16M66+/XuOoqK22bt2Kp556CrNnz8YLL7ygSQxutxv33XcfTCYTvvrqK3+V5Omnn8awYcMwd+5c3HzzzcjOztYkPiJNKFYsktWLg4iIWoRjLFrp8ccfx7///W//9ddeew3Tpk3TMCJqr9WrVwMA7rvvPs1i+OKLL3D48GHcdtttQV2vkpOTMXfuXDidTrz55puaxUekCaUxFuwKRUSkO0wsWuE3v/kN5s+f77/+17/+Fffee692AVFYiKIIAPjkk080i2HDhg0AgHHjxoW0XXPNNQCAL7/8Us2QiLTHrlBERIbCrlAtNG/ePPzhD3/wX3/uuefw2GOPaRdQBzr/6TVweUStw2gVq1nAnueubdO2M2bMwMKFC/Hkk09iwYIFGD58OLp3744BAwZgxowZstvNnz8f5eXlLX6ciRMnyg4EP3jwIADfdMVNZWRkICEhwX8foqgh2xVKAGxc64eISG+YWLTAyy+/jN/+9rf+63PmzMFTTz2lYUQdy+UR4fR4tQ6jldpefMvNzcWCBQvw2GOPIS8vzz+d76OPPtpsYpGfn9/ix8nJyZFNLCoqfF0+kpOl+40nJSX570MUFdxOwF0v3RaTBJhYcCci0hsmFs14/fXX8fjjj/uvP/LII3j++ec1jIjCqaKiAlOmTMHatWsxadIkvPjiixg6dCgyMzNht9sVtz169Kg6QRJFI041S0RkOBGZWIwfPx4FBQVBt50+fdp/edu2bZLfHK9atQrdunXzX9+1axfuu+8+fx/8+Ph4iKKIn//85y2K4xe/+IVk1xbSj3vuuQfr1q3DsmXLMHHiRM3iaKhUyFUlKisr0alTJzVDItKW0sBtjq8gItKliEws9u7dq9hFpaamBj/++GPI7U6nM+h6SUkJvN7GLkE1NTV49dVXWxzHzTffzMRCx/Lz87Fs2TJMnjy5TUlFOMdYNLxODh48iAsvvDCo7fTp06iursawYcNaHSORYbFiQURkOBGZWBC1xLZt2yCKIoYOHdqm7cM5xmLUqFH44x//iLVr12Lq1KlBbZ9++qn/PkRRw1El38aKBRGRLkVkYhGuvu+jR4/2d4OKJlazAKPNROyLuXVSUlIAAMuXL8esWbOQkNC6WWbCOcZi7Nix6NWrF9555x3MmjXLn4BUVFTgD3/4A2w2m+JAcqKI46qTb7PFqxcHERG1WEQmFtQ+bZ221WhGjx6NYcOGYcuWLcjNzcW4ceOQnZ2NtLQ0jB8/Hn369FEtFovFgoULF+Kaa67ByJEjMXXqVCQmJuJ///sf8vPz8eKLLyInJ0e1eIg056qVb7PGqRcHERG1GBMLilpmsxnr16/HggULsGLFCqxZswYVFRXweDyYO3cutm/fjr59+6oWz5gxY7Bx40Y888wz+O9//wuXy4WBAwfi+eefx5QpU1SLg0gXlCoW1lj14iAiohYzVn8XojCLi4vDnDlzsHHjRpSUlMDtduOVV15BXV0dVq5cqXo8w4YNw+rVq1FRUYHa2lps3ryZSQVFJ8WKBRMLIiI9YmJB1ERGRgYAICsrS+NIiKKYYsWCXaGIiPSIiQVRgHnz5uGBBx7AgAEDcMMNN2gdDlH0YlcoIiLDYWJBdJbL5cJrr72GCRMmYN26dc2uvE1EHYiDt4mIDIeDt4nOslqtOHbsmNZhEBHAigURkQGxYkFERPrDwdtERIbDxIKIiPSHg7eJiAyHiQUREekPu0IRERkOEwsiItIfDt4mIjIcJhZERKQ/rFgQERkOEwsiItIfViyIiAyHiQUREemPUsXCxsSCiEiPmFgQEZH+sCsUEZHhMLEgAjB9+nQIgiD506tXL63DI4o+7ApFRGQ4XHmbCMCIESNQXl6OlStXwmw2Y8iQIejfvz/S09MxZMgQVWJYsmQJvv76a3z//ffYtWsXnE4n3njjDcycOVOVxyfSFdmKhQCYbaqGQkRELcPEgghAUVERVq1ahVmzZmHu3LlIT09XPYbf/va3yM/PR9euXZGZmYn8/HzVYyDSDY9T+naLHRAEdWMhIqIWYVcoinpbt27FU089hSeffBIvv/yyJkkFACxcuBBHjx5FUVERHnzwQU1iINIFrxfwuqXbWK0gItItViwo6q1evRoAcN9992kax1VXXaXp4xPphly1AgDMVvXiICKiVmFiQaH+0F35jV2PzDZg7sk2bSqKIgDgk08+wRNPPBHOqIioLTwO+TZLjHpxEBFRqzCxoFAep/ESi3aYMWMGFi5ciCeffBILFizA8OHD0b17dwwYMAAzZsyQ3W7+/PkoLy9v8eNMnDhRtYHgRIbmccm3sWJBRKRbTCwo6uXm5mLBggV47LHHkJeXh7y8PADAo48+2mxi0ZoB1jk5OUwsiFrCrVCxMLNiQUSkV0wsKKpVVFRgypQpWLt2LSZNmoQXX3wRQ4cORWZmJux2u+K2R48eVSdIomijOMaCg7eJiPSKiQVFtXvuuQfr1q3DsmXLMHHiRK3DISKAXaGIiAyKiQVFrfz8fCxbtgyTJ09uU1LBMRZEHYSDt4mIDImJBYUyYleDNsS8bds2iKKIoUOHtukhOcaCqINwulkiIkNiYkGh2jhtq9GkpKQAAJYvX45Zs2YhISGhVdtzjAVRB3ErJRasWBAR6RUTC4pao0ePxrBhw7Blyxbk5uZi3LhxyM7ORlpaGsaPH48+ffqoGs/ChQuxceNGAMCuXbv8t23YsAEAcMUVV+Dee+9VNSYiTXDwNhGRITGxoKhlNpuxfv16LFiwACtWrMCaNWtQUVEBj8eDuXPnYvv27ejbt69q8WzcuBFvvvlm0G3ffPMNvvnmG/91JhYUFTh4m4jIkExaB0Ckpbi4OMyZMwcbN25ESUkJ3G43XnnlFdTV1WHlypWqxrJo0SKIoij7s2jRIlXjIdIMB28TERkSEwuiJjIyMgAAWVlZGkdCFKU4eJuIyJCYWBAFmDdvHh544AEMGDAAN9xwg9bhEEUnDt4mIjIkJhZEZ7lcLrz22muYMGEC1q1b1+zK20TUQTh4m4jIkDh4m+gsq9WKY8eOaR0GESmNsWBXKCIi3WLFgoiI9EVpVigO3iYi0i0mFkREpC/sCkVEZEhMLIiISF8UB28zsSAi0ismFkREpC+sWBARGRITCyIi0hcO3iYiMiQmFkREpC8cvE1EZEhMLIiISF/YFYqIyJCYWBARkb64lbpCMbEgItIrJhZEAKZPnw5BECR/evXqpXV4RNFFqSsUEwsiIt3iyttEAEaMGIHy8nKsXLkSZrMZQ4YMQf/+/ZGeno4hQ4Z0+OOfPHkS77//PlatWoX9+/fj9OnT6Ny5My6//HLMmTMHl1xySYfHQKQbSoO3OcaCiEi3mFgQASgqKsKqVaswa9YszJ07F+np6ao+/t/+9jc8//zz6N27N8aNG4fU1FQcPHgQy5cvx/Lly/HOO+9gypQpqsZEpBnFigVnhSIi0ismFhT1tm7diqeeegqzZ8/GCy+8oEkMw4YNw4YNGzBq1Kig27/++muMHTsWDz30ECZOnIiYGH5bS1GAYyyIiAyJYywo6q1evRoAcN9992kWw6RJk0KSCsDXRWvMmDEoKyvDrl27NIiMSAOKs0IxuSYi0itWLCjETxdcCNGl0BVBhwSrFedt/75N24qiCAD45JNP8MQTT4QzrLCwWn1dPywW/rlSlGBXKCIiQ+InFQohulyGSyzaY8aMGVi4cCGefPJJLFiwAMOHD0f37t0xYMAAzJgxQ3a7+fPno7y8vMWPM3HixFYPBD927Bg+++wzZGZmYuDAga3alsiwOHibiMiQmFhQ1MvNzcWCBQvw2GOPIS8vD3l5eQCARx99tNnEIj8/v8WPk5OT06rEwuVy4Y477oDD4cDzzz8Ps9nc4m2JDE2xKxQrFkREesXEgqJaRUUFpkyZgrVr12LSpEl48cUXMXToUGRmZsJutytue/To0Q6Ly+v1YubMmfjqq69w33334Y477uiwxyLSHTdX3iYiMiImFhTV7rnnHqxbtw7Lli3DxIkTtQ4HgC+puPvuu/HOO+9g+vTp+Oc//6l1SETq4uBtIiJDYmJBUSs/Px/Lli3D5MmT25RUdMQYC6/Xi7vuuguLFy/GtGnTsGjRIphMnLyNogwHbxMRGRITCwohWI33xt2WmLdt2wZRFDF06NA2PWa4x1gEJhVTpkzBW2+9xXEVFJ04eJuIyJCYWFCItk7bajQpKSkAgOXLl2PWrFlISEho1fbhHGPR0P1p8eLFuOWWW7BkyRImFRS9FLtCcYxFOIguF9xFRXAXFQEmM8zJSTAnJcGUmAiB5x4iaiMmFhS1Ro8ejWHDhmHLli3Izc3FuHHjkJ2djbS0NIwfPx59+vRRLZbnnnsOb775JhISEtCnTx/8v//3/0Lu05bpaokMSW7wtmACTMb90OsuKoLj4EE4T5yAt6oKnupqeGtqAI8XEL0QvV7A44UoegGvCHgbbhcB0XddFL2AiMY2UfTdt7l2rxcQRXgdDrjPnPElFGfX8AkiCDAlJPiSjOQkmJOSYUqIhyBIdMkUBOXrUrd5vRDdbohuF+B2Q3S5z153A14vTLGxMMXHwxQf5/s3Lh6CzQqIou+5iPDF3fAD0b8WEQBfO9D43Jr+e/YOwduIgU3h2abJtkHbSxx2orbI+M1cmM9+SaoXTCwoapnNZqxfvx4LFizAihUrsGbNGlRUVMDj8WDu3LnYvn07+vbtq0osDdWP6upqzJs3T/I+rZ2ulsiw5CoWBhy47S4tRdnb76Di44/hOnZM63CaJ4rwVlXBW1UFnDypdTREpCDtySegt69aOCqUolpcXBzmzJmDjRs3oqSkBG63G6+88grq6uqwcuVK1eJYtGgRxLPfyMn9zJw5U7V4iDTj9QCiR7rNYN2gKj7+GIevG4/iv//dGEkFEVE7sWIRIUrfWYrkyZNh69Hdf5unogLlyz6EMyYG3n6h37y7y8sBtxsAYOnaNajNW1fnK9EDMCUkwBSwpoPo9cJTWgrAN2janJwctK2nshKi0/eNo7lzZwgBsxp5HQ7fN2GAr8wdGxscU3Gx74LFAkuT8p6nqhqio96335QUCJbGl6/X6YS3stIXU2wszPHxwfstLfV1BTCZYOncOXi/NTUQ6+p8MSUlISMjAwCQlZUF0e2G5+zMT0KMHebE4HEYLT6GiYkwxTR+2xp0DG02mJOSgmOqqPCvfh5yDOvr4a2u9u23lcfQW1+PsmUfwuZwIGXSTUG/O+eJk6hatw4AEDtkMOKaDGovW7oU3noHzEmJSJk8OaitZvMW1O/dCwBIGj8e1vS0oHgqPv4EAGDvex7ihw8P2rb8w+XwlJdDsFrRefrtQW11O3ei9vvtAIDEsVfC1rNn4zGqrkH5++8DAGzZ2Ui8ckzQtpWrV8N1+gwAoPMd04NeL/U/HUDNt98CAOIvuwz28xq7vYluN0rfWgIAsGakI+m664L2W/XFejjPDtpPueUWmBMaX2vOY8dQ9fkXAIC4Cy9A7KBBQduWLnkbossFc0oKUm6aGNRWs2kT6vf/BABI/tn1Qa8n15lCVK5aBQCw9++P+EuGBW1b/r//wVNZBZM9Bp2mTQtqq/3hB9Tt+BEAkHj11ZLnCACI6ZWLhFGjgrat+GSlr8sMgC53zQxqq9+3DzXfbQYAJIwcgZjevf1tXqcTZW+/AwCwduuGpGvGBW1b9dlncB4/AQDoNHVK0GvYcfgAZOsSZitKFy+G6PHC0qUzkm+4Iai5euM3cBw8CABInngjLJ06+dtcp06hcs2nAIDYgQMQd9FFQduW/fc9eGtrYYqLQ6cptwa11W7bhrpduwEASddeA2tmpr/NXVaGiuUfAQBizj0XCVdcDgAoeuVvKH71VblnQkTUbmX/fQ/mpCTYsnog8aqrgtoqP10LV0EBAKDT7bfBZGv8YsZx+DCqv/oaABB/6SWw9+sXtG3JG4sAAJbUVCRfP6FVMTGxiBC+frru4BtFEd7qaoget3RfWq8XoscrvUNRlG8DGtssofsVA/fb9HED9itKxCR6ff2DBZPEY4sK8QbEJCg8V4kewEEx/eFPf8JL8+djwIABuOHsh5bG/Uo8dsNzldixGHgMFY4DvKH7FVt6/KWOYUO8ksdQhFhbA29dfei2Hrc/YRGdodN9emt820kN7BSdTv+28AZ/2yx6vf42ryN0th9vbQ281dUQbKHfRgfuV3Q3/RZbbGw7m3AG7beuMQEL2a/bFbBfiefaEG9dckib6Ajcb/AxFN2egGMY2p3HW1MD0en09Rlv2uZwNG7b9DXhbW6/tb72pucA+H6X/nhlzhENjx+y37pa+WPoCjyGoY/rb6uvC22rb3yuIa9DV+jv0s9shae6GvB44W2SUAOA6AzYb5NjKHq8ysewVuG5Br4Om/5degP36zuGFStWMKkgog7nra2FYDLBWx96/hbr6xTeAwPe710K74EJ8SFtzWFiESFM8fGAucmv8+wgPCEmRnpQnckEwSzTG04Q5NsAf5sgsV/BZAIatpUY3Nfstmdjk2hsUUyyz1V2v76YXC4X/rVwISZMmIAXXngBdrsdotsdsF+JbRWOoRB4DJWOg0RMgiA0HkOpfSs8V3+b3HONi4fJbAnd1myB6ezMWFIffBteY6b4uNDd2mz+bZsOrhVMJn9bYNXGv9+4eIhOl+SUwYH7FSxNExqhsS0mdJV0U6y9MaamW1qsAfuVeK4N8caG7leICdxv8DEULOaAYxiaKJni4yHabDDFhZ6sTTExjds2/d2ZmttvHESPByZ76PEVbI3PVe4c0fD4IfuNjZM/htbAYxj6VuJvs4cmACZ743MNeR2aJNP/s21WmBMSIHq8MMWF7lewBey3yTEUzCblYxgXF/Rv8H4DXodN/y5NgfuNgbuoCKd/95z8cyAiChNTXNzZXiUS5357rMJ7YMD7vcR7b+N7YOj5sDmCKPW1MelaUVER0tLSgm4rLCxEamqq5P3r6+uRl5eH3Nxc2O2hH5QoOvB1QIZQXQi8eK50W6dc4Bc7VA2ntU4/9xzK3lmqdRjNs1phTUuDJT0dAOCprIC3otLXlVWiekVE+nPOhvWwnu2+rResWBARkX54Q7tV+el81W1PRQXK/7dM8T4x550H+4DzYU3P8I29io+DYLH6KiEmU2NlVjABJsFXvTKZfJUd4ex1wXT2snC2MiM03lcQzrajcdvA9rPjzMxdukhWS4Gz3fIqfUmGp6IS3rra4DtIfR0p+R2l1G0CBKsFgsX3A4sVgtUKwWoBIPi6pNXUBP2IXk9jhVsQfM9HEHwFQ0Fo0uZ7jKDr/n8brja9v9K2bd+m4bogtY1UZZ2olfQ21SzAxIKIiPTEE9rf18+k78Si4pNPFL/tz5w3DymTJ6kYUduYYmJgSk2FRaYKTkQkh9PNEhGRfihVLHS+OF7V2nWybQljxhgiqSAiag8mFkREpB8G7QrlqaxE7fffy7Z3vnOGitEQEWmDiQUREemHYlco/fberd261b+mTVPm1K6IGzZMso2IKJIwsSAiIv1Q7Aql34pF3Y4dsm0JI0fKDpQmIookPNMREZF+KHaF0m/Fou6HHbJt8axWEFGUYGJBRET6YcCuUKLXi7q9e2XbY4cMUS8YIiINMbEgAjB9+nTfStkSP7169dI6PKLoYcCuUK6CUxBrayXbzMnJsPbsqXJERETa0OfXP0QqGzFiBMrLy7Fy5UqYzWYMGTIE/fv3R3p6Ooao8G1jfX095s6di23btuHQoUMoLS1FSkoKevfujXvvvRfTp0+H1arPD1VEYeVVqljoc7pZ5+FDsm0xffoEL5BGRBTBmFgQASgqKsKqVaswa9YszJ07F+np6ao+fnV1Nf7xj39g2LBhmDBhAlJTU1FWVobVq1fj7rvvxrvvvovVq1fDxAGgFOm8Hvk2nU436zh0WLbNdk5vFSMhItIWEwuKelu3bsVTTz2F2bNn44UXXtAkhs6dO6OiogI2my3odrfbjauvvhpr167F6tWrMWHCBE3iI1KNAVfeduQdkW2L6X2OipEQEWmLX39S1Fu9ejUA4L777tMsBpPJFJJUAIDFYsFNN90EADh0SL67BVHEUOwKpc/vwlzHT8i2xfTKVTESIiJt6fMsTZq65O1L4FJ6c9chq8mKzbdvbtO2oigCAD755BM88cQT4Qyr3bxeL9asWQMAGDBggMbREKnAgNPNuk7IJxbWHj1UjISISFv6PEuTplxel+ESi/aYMWMGFi5ciCeffBILFizA8OHD0b17dwwYMAAzZsyQ3W7+/PkoLy9v8eNMnDix2YHgTqcTf/jDHyCKIkpKSvD5559j//79uOuuuzB27NgWPxaRYXmUZoXS31uW6HbDdfq0dKPJBGtmproBERFpSH9naSKV5ebmYsGCBXjssceQl5eHvLw8AMCjjz7abGKRn5/f4sfJyclpUWLxu9/9zn9dEATMnj0bf/zjH1v8OESGptgVSn9jLNyFhYBHesC5JSMdAmdzI6IowsSColpFRQWmTJmCtWvXYtKkSXjxxRcxdOhQZGZmwm63K2579OjRsMeTkJAAURTh9XpRUFCAjz/+GHPnzsWmTZuwatUqJCUlhf0xiXRFcR0L/b1luQsLZdusGaxWEFF00d9ZmkhF99xzD9atW4dly5Zh4sSJWofjZzKZ0KNHDzz00EPo2rUrbr31VsybNw/PP/+81qERdSylWaF0OMbCVVQk22ZJS1MxEiIi7envLE2kkvz8fCxbtgyTJ09uU1LREWMspIwbNw4AsGHDhlZvS2Q4SutY6LErlFJikZqqYiRERNpjYkEhrDp8825OW2Letm0bRFHE0KFD2/SYHTHGQkpBQQEAcOVtig4Gm26WiQURUSP9naVJc22dttVoUlJSAADLly/HrFmzkJCQ0KrtwznGYu/evcjJyUFcXFzQ7bW1tf4pcMePHx+2xyPSLYN1hVIaY8HEgoiijf7O0kQqGT16NIYNG4YtW7YgNzcX48aNQ3Z2NtLS0jB+/Hj06dNHtVjee+89vPTSS7jiiiuQk5ODpKQknDx5EqtXr0ZJSQlGjBiBxx9/XLV4iDSj2BVKf29ZihWLNCYWRBRd9HeW1rkvv/wSS5Yswddff41Tp07B6XQiMzMTgwYNwpQpU3DLLbfAYuFhNQKz2Yz169djwYIFWLFiBdasWYOKigp4PB7MnTsX27dvR9++fVWJ5frrr0dBQQG+/fZbbNq0CdXV1UhOTsagQYMwdepU3H333XxdUXQw2HSznpJS2TZLVyYWRBRd+EmlhUpKSnDHHXdg9erVIW0Nax989NFH+Mtf/oIlS5ao9oGU2icuLg5z5szBnDlz/Lf97W9/w6xZs7By5UrVfo8XXXQRLrroIlUei0jXFFfe1mFiUVYm22bp0lnFSIiItMfEogXKyspw2WWX4cCBA/7bevXqheHDh8Nut+Pw4cP45ptv4HK58P3332P06NH47rvvkJOTo13Q1GYZGRkAgKysLI0jIYpCSmMsTGb14mght8LMcObkZPUCISLSASYWLXDPPff4kwq73Y5//etfuOOOO4Luc/jwYUybNg1bt27FmTNnMHnyZGzbtg2CIGgRMrXRvHnz8Je//AUDBgzADTfcoHU4RNFHcYE8fVUsvA4HxNpayTZTYiJX3SaiqGPSOgC9+/777/Hhhx/6r7/++ushSQUA9O7dG2vXrkXPnj0BANu3b8c777yjWpzUfi6XC6+99homTJiAdevWNbvyNhF1AAOtvO1RqlZ06qReIEREOsHEohnvv/++//KgQYMwbdo02fumpKRg7ty5/usvv/xyh8ZG4WW1WnHs2DG89dZb/u5QRKQyxelm9VUBUBpfYT47nTURUTRhYtGMzZsb13RoyToCEyZM8F/eunUrjh071iFxERFFJMWKhb7GWChXLFJUi4OISC+YWDTjzJkz/svZ2dnN3r979+4wmxvf/L744osOiYuIKCIZaIyFp6JSto0Dt4koGjGxaIYoiq26vyAIQQO29+zZE+6QiIgil4G6Qnmrq2TbzAmJKkZCRKQPTCyakZrauMBRS7o1nTx5Em534zdu+/bt65C4iIgikpEGb1fJJxamRCYWRBR9mFg048ILL/RfXrNmTbP3X7VqVdD10lL5VVmV1NTUKP4QEUUkAyUW3qpq2TZzEhMLIoo+TCyaceONN/ov//DDD/jggw9k71tVVYU//elPIbe1RUJCguxPbm5um/ZJRKR7BkosPFXyYyxM7ApFRFGIiUUzRo8ejcsvv9x/febMmXj33XdD7nf06FFce+21OHLkSNDtdXV1HR4jEVHEMNIYC6WKRWKCipEQEemDvr7+0aklS5bg4osvRnFxMWpqajBt2jQ89dRTuPTSS2G323H48GFs3LgRLpcLcXFxGDFiBD799FMAQGIb+9lWV8u/YRUVFbFqQUSRyauQWOhsViilwdscY0FE0YgVixbIycnBt99+i4EDB/pvO3ToEJYsWYKFCxdi/fr1cLlcSE9Px4oVK9CnTx///VLauEhSfHy84g+F1/Tp0/0zejX96dWrl9bhEUUPr0e+TW/rWChWLJhYEFH0YWLRQueeey527NiBpUuXYvLkycjKyoLdbkdycjKGDh2K3//+99i9ezfGjh2L4uJi/3ZZWVkaRk0tNWLECP/ihmazGRdeeCHuuOMOzJ49G7///e81ien555/3JzffffedJjEQqc5AYyy8nBWKiCiIvs7SOmcymTB16lRMnTpV8X6Ba1dcfPHFHR0WhUFRURFWrVqFWbNmYe7cuUhPT9c0nt27d+OZZ55BfHw8ZwGj6GKgxEJxulkO3iaiKMSKRZiVl5cHrV1x2WWXaRgNtcTWrVvx1FNP4cknn8TLL7+seVLhcrlw5513YsiQIbjppps0jYVIdQZKLJQqFpxuloiiEROLMFu2bBlcLt/gw/79+wetg0H6tHr1agDAfffdp3EkPvPmzcOePXvw+uuvw2zWV59yog5noDEWXrlJNsxmCHa7usEQEemAvr7+MTiHw4F58+b5rz/44IMaRtN2r9x5C7xuhZlZdMhksWLWm++3aVtRFAEAn3zyCZ544olwhtVq27dvx7x58/Dcc8+hf//+msZCpAnFxEI/b1miywXRJX2eNMXHQxAElSMiItKefs7SBieKIh566CH/OhYDBgwwbGLhdbvgcSt0R4gwM2bMwMKFC/Hkk09iwYIFGD58OLp3744BAwZgxowZstvNnz8f5eXlLX6ciRMnYsiQIbLtDocDM2bMwJAhQzBnzpxWPAOiCKLYFUo/FQuvwhpFpthYFSMhItIPJhYtsHbtWnzzzTe48847JacePXz4MH7xi19g5cqVAIDY2Fi8/vrrsFr1Nec6ScvNzcWCBQvw2GOPIS8vD3l5eQCARx99tNnEIj8/v8WPk5OTo5hYPP300zh48CC+//57doGi6GWQMRbe2lrZNlNcnIqREBHph37O0jpWWlqK5557Ds899xz69OmDgQMHokuXLqiqqsJPP/2E7du3++9rt9vx0UcfcTYog6ioqMCUKVOwdu1aTJo0CS+++CKGDh2KzMxM2JvpI3306NGwxbFp0ya8+OKLePbZZzFgwICw7ZfIcERjdIXy1rJiQUTUlH7O0gZx4MABHDhwQLLtoosuwmuvvYYLLrhA5aiore655x6sW7cOy5Ytw8SJEzWJwe12484778SgQYPwf//3f5rEQKQbBhm8zYoFEVEoJhYtcP311+PDDz/E559/js2bN+PUqVMoKipCbGwsMjMzMWzYMNxyyy247rrrYDJxoi2jyM/Px7JlyzB58uQ2JRXhGmNRXV2NgwcPAgBsNpvktsOHDwcAfPjhh5olQESqUOoKJegnsRDr5BMLIY4VCyKKTkwsWiAhIQETJ06Mmg90Jovxxoa0JeZt27ZBFEUMHTq0TY8ZrjEWMTExuOeeeyS3+eqrr3Dw4EHccMMNSE1NRU5OTptiJTKMiBhjEa9iJERE+qGfszTpRlunbTWalJQUAMDy5csxa9YsJCQktGr7cI2xiI2NxcKFCyXbZs6ciYMHD+LXv/41Lr300rA8HpGuGWS6Wc4KRUQUSj9naSKVjR49GsOGDcOWLVuQm5uLcePGITs7G2lpaRg/fjz69OmjdYhE0ccoYyxqOMaCiKgpJhYUtcxmM9avX48FCxZgxYoVWLNmDSoqKuDxeDB37lxs374dffv21TpMougi1xVKMAE6WnROuSsUKxZEFJ040piiWlxcHObMmYONGzeipKQEbrcbr7zyCurq6vzrkmhp0aJFEEWR3aAoesglFjrqBgU00xWKFQsiilJMLIiayMjIAABkZWVpHAlRFJJbx0JviUVtjWybwDEWRBSlmFgQBZg3bx4eeOABDBgwADfccIPW4RBFF68XEL3SbTqaahYARFYsiIhCMLEgOsvlcuG1117DhAkTsG7dumZX3iaiMFNcdVtfiYXiGItYJhZEFJ30VVsm0pDVasWxY8e0DoMoehlkqlkA8NYqVSzYFYqIohMrFkREpA8GWRwPALz19bJtXMeCiKIVEwsiItIHxcRCX12hRIXEQmA3SiKKUkwsiIhIHwyyOB6gXLEQYmJUjISISD+YWBARkT4oDt7WV1copYoFu0IRUbRiYkFERPpgpDEWDoXEghULIopSTCyIiEgflBILva1jUe+QbeMYCyKKVkwsiIhIH4xUsVDqCsXEgoiiFBMLIiLSB6/MqtuA7gZvc1YoIqJQTCyIAEyfPh2CIEj+9OrVS+vwiKKDkSoWDpmuUFYrBLO+kiAiIrXo60xNpJERI0agvLwcK1euhNlsxpAhQ9C/f3+kp6djyJAhqsSQk5OD/Px8ybZRo0Zhw4YNqsRBpBmDrGMhut2AyyXZxm5QRBTNmFgQASgqKsKqVaswa9YszJ07F+np6ZrEkZycjMceeyzk9pycHNVjIVKdQSoWXsWB25wRioiil37O1EQa2bp1K5566inMnj0bL7zwgqaxpKSk4Nlnn9U0BiLNKK5joaOKheJUs6xYEFH04hgLinqrV68GANx3330aR0IU5RRX3tbP92DKi+MxsSCi6KWfMzXpxr9+8SU8HoXZWXTIbDbh/pdHtWlbURQBAJ988gmeeOKJcIbVag6HA4sWLUJBQQGSkpJw8cUX45JLLtE0JiLVGGQdC6WpZgVWLIgoijGxoBAejxdet6h1GK3U9kRoxowZWLhwIZ588kksWLAAw4cPR/fu3TFgwADMmDFDdrv58+ejvLy8xY8zceLEZgeCnz59GnfddVfQbRdffDGWLl2K3r17t/ixiAzJKBULuRmhAAhcdZuIoph+ztREGsnNzcWCBQvw2GOPIS8vD3l5eQCARx99tNnEQm4WJyk5OTmKicVdd92FESNGYMCAAUhISMCBAwfw0ksv4a233sLYsWOxa9cuJCYmtvjxiAzHKLNCOZ2ybYLNqmIkRET6wsSColpFRQWmTJmCtWvXYtKkSXjxxRcxdOhQZGZmwt7MtJFHjx4NayzPPPNM0PUhQ4Zg8eLFAIC33noL//73vzXvqkXUoQxSsfAqJBYmGysWRBS9OHiboto999yDdevWYdmyZfjggw8wefJk9OrVC7GxsRAEQevwAAAPPPAAAOCbb77ROBKiDmaYioX0GhYAINhsKkZCRKQv+vkKiEhl+fn5WLZsGSZPnoyJEye2evuOGGMhpWvXrgCAmpqaVm9LZCiK083q5+1KuSsUEwsiil76OVOTbpjNJrRnMLQWfDG3zrZt2yCKIoYOHdqmxwz3GAs5mzdv9m9PFNEMskCe6FQYvM3EgoiimH7O1KQbbZ221WhSUlIAAMuXL8esWbOQkJDQqu3DOcZi//796NmzJ+Li4kJu/9WvfgUAuO2228L2eES6ZJiuUKxYEBFJYWJBUWv06NEYNmwYtmzZgtzcXIwbNw7Z2dlIS0vD+PHj0adPH9Vieffdd/HSSy9h5MiRyM7ORnx8PA4cOIBVq1bB5XLh17/+NUaOHKlaPESaUBq8raN1LJhYEBFJY2JBUctsNmP9+vVYsGABVqxYgTVr1qCiogIejwdz587F9u3b0bdvX1ViGTNmDPbt24cffvgBX3/9NWpra9G1a1eMHz8eDz/8MMaNG6dKHESaioBZoTjdLBFFM/2cqYk0EBcXhzlz5mDOnDn+2/72t79h1qxZWLlypWqJxahRozBqVHR0QSOSZZgxFqxYEBFJ4XSzRE1kZGQAALKysjSOhCjKGGaMhfx0syauvE1EUYyJBVGAefPm4YEHHsCAAQNwww03aB0OUXQxTGKhULGwsmJBRNGLiQXRWS6XC6+99homTJiAdevWNbvyNhGFmagwzbWeukI5ON0sEZEU/ZypiTRmtVpx7NgxrcMgil4cY0FEZGisWBARkT4oJRZ6mm7WxcSCiEgKEwsiItIHxelm9ZNYcLpZIiJp+qktExFRdDPIOhbsCqVfta5alDvKUeYoQ1m976fcUY5yRzlqXDWodlb7/nU1/lvnroPT44TL44LT64Tb64bFZIHVZIXNbINFsMBkMsEsmGESfP82ECFCFMWgfwE03hZ4uxiwTQvv33Bb4H2C7h+wXcP+O5KowoOo8hhiZDyPdTevQ0Z8Roc/Tmvo50xNRETRzTBjLDjdrFbq3fXYX7ofP5X+hJM1J3Gq+hRO1ZzCmdozKK8vR72nPiyP4/F44PA4APlfNRFJ0M+Zmtrl3f3vYlLsJHRP6O6/rcJRgeWHlsPmtaEvQhd6q3BUwOX1nTW7xnYNaqtz16HGVQMASLQmIsbS+GbpFb0orS8FANhMNiTFJAVtW+mohNPr+0avs70zTEJjjzuH24EqVxUAIN4aj1hLbNC2JXUlECHCIliQYk8Jaqt2VvvfNFJiUmAJ+KDh8rhQ4awAAMRaYhFvjQ/atrS+FF7RC5NgQmd756C2GlcN6tx1AIBkWzKs5sauDG6vG+WOcgCA3WxHgi0haNvy+nK4RTcECOgS2yWoTatjWFxXDACwmqxIjkkOaqt31+PDgx/CaXJi4jkTg9pPVp/EZ/mfAQAGpw7GkLQhQdv+d/9/Ue+pR5ItCTede1NQ29bTW7G3ZC8A4Lrc65AWlxYUz8ojKwEA53U+D5dmXhq07UeHPkK5oxxWkxW39bstqG1X0S5sL9wOALgy60pkJTWuLVLjqsEHBz4AAGQnZWN01uigbdccXYMzNWcAALf3uz3o9XKg7AA2FWwCAAzvNhx9OvXxt7m9bry9720AQHp8Oq7NuTZovxuOb0B+ZT4A4OY+Nwe91o5XHscXx78AAFyQdgEGpg4M2vadfe/A5XUhJSYFN55zY1Dbd6e+w0+lPwEAJvSaEPQ3WVhbiNV5qwEA/bv0x8UZFwdt++HBD1HprITdbMeUvlOC2nYU7sCPRT8CAK7KvkryHAEAucm5GNljZNC2q46sQlFdEQDgzvPvDGrbX7ofm09tBgCM6D4CvVJ6+ducHieW7l8KAOiW0A1XZ18dtO3nxz7HiaoTAIBbz7u18TXcgulml+xdAo/oQWd7Z/ys98+C7vLtyW9xsPwgAOCG3jegk72Tv+10zWl8evRTAMCArgNwYfqFQdu+f+B91LpqEWeNwy19bglq+/7M99hdvBsAcE3ONa2qWHx8+GOU1pfCLJgxvf/0oLY9JXuw7fQ2AMCoHqOQk5zjb6tz1+G9n94DAPRI7IGxPccGbbsufx0KqgsAANP6ToPN3Pi4R8qP4OuTXwMALsm8BH07B5//39zzJgAgNTYV43uND2r76sRXyKvIAwDdnCPe2vMWtpzeggNlB3Cm9gw8okJliyiKfHDgAyTaElU9RzSHiUWEqHXVwiPRjaDGVQOP6IFoEUNKf17RC6/M9I6iKPrbpMp5DW1S24sI2FYUAUGhrYmGNwyvELpfxXib2W9HPVcv2rbfljxme56rVLwNJfM6dx3qhdBv9Txejz8Rakg4A9W4a1Dvrg/6gN7A6XH6t5V63IY2pyf0A1mtuxY1rpqgk55/v97G/brF4A+dgfuV+pay3l3vb2/K7XU37lfiw6x/v26J/Xoa99v0+LvFxv02JIaBat21cHqc0s814BhK/a225BhKfeByeV3+beXOEXL7DUyOQ/brcSm/XhSOocPtkH6uSh8Yz77uql3V8IrekIQaABweh+zr0CN6lI+hq1b2uQb+bjyip1XTzTYcw8AvBxoEHsOmr8PA17fDHfp4Sq/vwN+5yyP/u0mwJoS0BT7XptQ+R5TVl+HvO/6O9w+8L3s+JIpmta5amASTqueI5oQ1sbjgggsAALGxsdiwYQOsVg5iU0ucNQ5micGN8dZ4mEST78RdU4PY2MY3Y5NgknyzAwBBEPxtQmBmELBt4L9B2yJgW0FocRsAmAUzRIgwScwroBhvM/tVjLcdz9UEX0xS2ynttyWPGe7nWlNTAxEirFZrUB/hBmaT2f/tu9UU+rcbb4mHWTAjzhIX0mYz2/zbNn1cQRD8bVIfqOMscXBanZKPaTM17tciBJ+uAvdrN4euOWK32EMqVw0sJkvjfiU+BPn3a5HYr7lxv02Pv0Vo3K/NJP1crSZrs8ew6X5NgqnZY+j2uiWPg9Vk9W8rd46Q269U9c+/X7NV+fWicAxjLDHSz7UFFYsEawI8okcysYgxx8i+Ds2CWfkYWuOC/g0U+LsxC2a4W7FAXsMxlPqbCzyGTV+Hga/vwGpnA6XXd+DvPLAC26ChTeoYBj7XptQ8R+wo3IHHNzzur8ASUag4axzirfGqniOaI4hhHMFiNvtOnOPHj8fHH38crt1SE0VFRUhLSwu6rbCwEKmpqbLbnDp1CuXl5UhKSkJSUhIsFovkh1KKLKIowu12o7KyEpWVlUhJSUFmZqbWYRFJW/Nr4LtXpdtu+BtwwQx145FxdMpU1P34o2Rb7kcfwX5eH8k2apmvTnyFx9Y/JlkVIaJGET94u0uXLigpKUG3bt3CuVsKg4yMDMTGxqKwsBCVlZVah0MqM5vNyMzMRHJycvN3JtKKQdax8CquY8FKfXv8VPoTZn85W7OkwiyYYTFZ4Pa6dTuWQ4AAQRDQ8D/ff4L/9o54vLDv0wBfbBrheXdEjO0V1sSiR48eKCkpQUVFRTh3S2EgCAJSUlKQnJwMj8cDt1vhDZwiisVigdlsNsSJnKJcBEw3a+J0s21W567D4xse90+m0VoCBCTHJCMlJgWd7J2QEpOCzvbOSIlJQUpMCpJikhBvjUeCNcH/b4ItAbGWWNjMNthMtqDugh6vBy6vy59keEWv/9/Ax2w4tzb9wO+/Xeo2NGlTSBQ6KmEg6ghhPVOPHz8eO3bswDfffBPO3VIYCYIAi8UCi0U/b9JERABaNMZCD5Smm+U6Fm33+u7XcbzqeLP3y4jPwKCug9CvSz/0SOiBjPgMdEvohs72zpJjptrKbDJLjksiInlh/XR5991346WXXkJBQQFef/113H333eHcPRERRbIIqFgIXMeiTU5Wn8Tru15XvM9l3S7DI0MewcCuA/kNPpFOSU8700a9evXC/PnzIYoiHnnkEbz77rvh3D0REUUyo1QsWjHdLLXMkr1LJKdobnBLn1vwj6v+gUGpg5hUEOlYWL8COnbsGK699lr8+c9/xty5c3H77bfj5ZdfxtSpU3HhhRciNTU1aLpTJT179gxnaEREpHctWMdCD1qzQB41r9ZV61+oUcr5Xc7H3Evmyk7BTUT6EdYzdU5OTtA3CaIoYsuWLdiyZUur9iMIAgcXExFFG8WKhQESC4sFgokfflvrkyOfoNpVLdv+m0t+E9axE0TUcTrkL1UURd9MBmeTjDAulUFERJHKAF2hRFGE6JIevM1qReuJooil+5fKto/oPgIDUweqGBERtUdYE4uePXuy7yMREbWN1yvfppN1LOSSCgAwWbmGRWt9f+Z7HCo/JNs+te9UFaMhovYKa2Jx9OjRcO6OiIiiiQG6QnF8RXgpVSt6JPTAFd2vUDEaImovdgYlIiJ9YGIRVc7UnMEXx76QbZ/adyoHbBMZDP9iiYhIH4yQWChNNcs1LFrlg4MfwC1K/87tZjsmnjNR3YCIqN2YWBARkT6ICmMsdDLbEisW4eH0OPHBgQ9k28f3Go/kmGQVIyKicFDlK6Ddu3fj+PHjKCsrg9vtxowZM9R4WCIiMhIjVCyYWITF8kPLUVxXLNs+9TwO2iYyog47U+fn5+PPf/4zli5dioqKiqC2ponFmTNnMGvWLIiiiIsuughz5szpqLCIiEivDJBYeBUTC84K1RIurwuv735dtn1I6hD069JPxYiIKFw65Ey9dOlSPPDAA6ipqQlZw0JqOtr09HQUFhbiyy+/xKpVq/Dwww8jISGhI0IjIiK9Ukos9DLdrEJiYWLFokVe3/U6TlaflG2/vd/tKkZDROEU9k6r//vf/zB9+nR/UpGSkoLrrrsOffr0Udzu3nvvBQDU1dVhzZo14Q6LiIj0zuuRb9PLAnlO+XUsBCsTi+Z8e/Jb/HPnP2Xbs5OycXX21SpGREThFNbEory8HPfdd59/5e1nnnkGp06dwsqVK3H11conihtuuAEWi6+A8vnnn4czLCIiMgLFxEIfXaE4xqL1PF4PdhXtwv/77v/h4c8fhluhMnXPgHtg1kkSSUStF9Yz9b/+9S+Ul5f7k4qnnnqqxdsmJiaiX79+2LVrF3788cdwhkVEREZggDEWolNhulkmFn4nqk5g06lN+K7gO2w+vRkVjopmt+md3BvX975eheiIqKOE9Uy9atUqAECXLl3wq1/9qtXbn3feedi1axeOHDkSzrCIiMgIFBMLfXyLrVixiPJ1LLyiFyuPrMTS/Uuxq3hXq7Y1CSb8/vLfw2riAHgiIwtrYvHTTz9BEASMGDECtjZ8c9OpUycACJlFioiIooBo9K5Q0fuh+EDZATz9zdPYU7KnTdvfP+h+DEwdGOaoiEhtYT1Tl5aWAgDS0tLatL3H43tTMelkISQiIlKRAQZvK083G51dodblr8NvNv4Gde66Nm0/5bwpeHjww2GOioi0ENbEIjk5GSUlJaiurm7T9idP+qaf69KlSzjDIiIiIzDCGAuX0qxQ0Vex+PL4l5j95Wx4lVZNl2ERLHhw8IO4f9D9klPRE5HxhPVM3b17dxQXF7dp8LXL5cKmTZsgCEKzU9MSEVEEUqpY6GQdCyglFlFWscivzMf/ff1/rU4qBAgY1WMUHr3gUfTpxPd7okgS1sRizJgx+PHHH7Fnzx7s3LkTgwYNavG2b7zxBiorKyEIAq688spwhkVEREbAioVhiKKIZ799FtWulvVQiDHH4KKMi3BZ5mW4sueV6JHYo4MjJCIthPVMfdttt2H+/PkAgAcffBDr169HTAtmydi9ezfmzJnjC8hiwfTp08MZFhERGYER1rFQSiws0ZNYbDy5EdvObFO8T1psGq7vfT0u73Y5BqcNRow5umfNIooGYR0lfdFFF2HSpEkQRRGbN2/G2LFjsXv3btn719XVYcGCBbjiiiv81Yp7770XPXv2DGdYRERkBLIVCwHQyaQeoku+qhItFQtRFPHKD68o3ue2vrdh5aSVePzCxzEscxiTCqIoEfavgBYuXIi9e/di//792LRpEwYPHoz+/fujrq5xtoibbroJp0+fxo4dO+B0OiGKIgBg6NCheOmll8IdEhERGYHcdLM6mREKYFcoANh2Zhv2l+6XbZ907iT8+pJfqxgREelF2L8CSklJwfr16zF69GiIoghRFLF3717k5eX5Z31YsWIFtmzZAofD4U8qrrzySqxdu7ZFXaeIiCgCyVUsdNINCmiuK5R+4uxIyw4uk21LjknG7ItmqxgNEelJh9SW09PT8fnnn+PNN9/EkCFD/AlG0x8A6NevHxYtWoS1a9eic+fOHREOERHpnSgaI7FwR3dXqEpnJdblr5Ntv3vA3Ui0JaoYERHpSYedrQVBwB133IE77rgDp0+fxqZNm1BQUICKigrEx8cjPT0dl1xyCXJzczsqBCIiMgqlKUuN0hUqClbeXnt0LRweh2SbzWTD5HMnqxwREemJKl8DZWRk4KabblLjoYiIyIiMsIYFOMbii2NfyLaNzR6L5JhkFaMhIr3RxzQbREQU3QywhgUQ3WMsal212Hxqs2z7xHMmqhcMEelSWBOLvLy8cO6OiIiihVESC3f0Viy+LfgWTq9Tsi3JloRhGcNUjoiI9CasZ+vevXujZ8+eGDVqFEaPHo0xY8YgJycnnA9BRESRyCiJRRR3hVp/fL1s28geI2HR0e+JiLQR9rPA8ePHsWTJEixZsgQAghKN0aNHM9EgIqJQioO39dNrVymxQAR3hXJ73fjyxJey7aOzRqsXDBHpVljPgr169cKRI0eCbjt27BjeeustvPXWWwB8iUZDkjF69GhkZ2eHMwQiIjIig1QsEKUrb/9Q+AMqHBWSbVaTFVd0v0LliIhIj8J6tj506BBOnDiBDRs2+H+kEo3Fixdj8eLFAIDs7OygRKNnz57hDImIiIzAIImFclcom4qRqEupG9SwzGGIt8arGA0R6VXYz9Y9evTA9OnTMX36dAC+rlGBiUbTAd75+fl488038eabbwLwJRpjxozBf/7zn3CHRkREeqU03axhEgv9xBlOoihi/TH5xOLKrCtVjIaI9KzDO65mZWXhjjvuwH/+8x8cPnwY+fn5WLRoEWbOnImcnJyQ1biPHj2KRYsWdXRYRESkJ0oVC0FHYyyicOXtw+WHcaL6hGz7qB6jVIyGiPRM9bN1VlYWZsyYgddffx2HDh3C+++/jwEDBgDwrdZNRERRKCIqFpGZWHx27DPZtvO7nI/0+HQVoyEiPVP9bL1jxw6sX78e69evx9dff43KykoAvqRCFEW1w2mz7du347333sNnn32GkydPorS0FF26dEFGRgaGDBmCMWPG4Oqrr0ZGRobWoRIR6V9EjLGIzMRiTd4a2bYxWWNUjISI9K7Dz9a7du0KSiTKysr8bYGJRJcuXYLWv9CrwsJCPPHEE3j77bdD2k6dOoVTp07hhx9+wBtvvIFHHnkECxYs0CBKIiKDEZUqFmb14miGYleoCJxu9mDZQRyuOCzbPrbnWBWjISK9C/tZcO/evf5E4quvvkJJSYm/LTCR6NSpU1AiMXDgwHCHEnbHjh3D6NGjgwagn3feeRg4cCC6dOmC2tpaHD58GDt27EBtba2GkRIRGQwrFrq08shK2bZzUs7BOZ3OUTEaItK7sJ6tMzIyUFRU5L8emEikpKRg5MiR/kRi0KBBhhpTUVFRgTFjxviTijFjxmD+/PkYNGhQyH2dTie++OILVFVVqR0mEZExKY6x0FHFIooSizp3Hf538H+y7dfmXKtiNERkBGFNLAoLC/2Xk5OT/YnE6NGjMWTIEEMlEk3Nnj3bvybHlClT8Pbbb8Nsln6zs9lsuPZannCJiFosEioWEdYV6uPDH6PcUS7bfk3ONeoFQ0SGEPZZoQRBgCAIqK+vR2VlJSorK1FVVQW3Qr9UvduxYwcWLlwIwDer1b///W/ZpIKIiNpAqWIh6Oh8q5BYIIIqFl7Ri7f2viXbfmH6hchJzlEvICIyhLAmFj179vSvR+FwOPDVV1/hueeew5gxY5CSkoKxY8fi//2//4dvvvnGUInGP//5T//lRx55BImJiRpGQ0QUgYxesbBaDV2Vb2rjyY04WnlUtn1G/xnqBUNEhhHWs/XRo0dx9OjRoJW2jx07BgCoq6vz3/bMM88gNjYWl112GcaMGYMxY8bg4osv1mUVwOPxYOnSpf7rkydP1jAaIqIIpZhY6OO9QRRF2cQi0rpBLd6zWLatZ2JPLopHRJLCfibMycnBzJkzMXPmTABAXl6eP6H48ssv/YlGbW0tPv/8c3z++ecAgPj4eFx++eUYM2YMRo8ejWHDhoU7tDbZvXu3f62N5ORk9O7dG263G2+99RaWLFmCPXv2oKysDF27dsWgQYNwww034O6770ZMTIzGkRMRGYgRFsjzyMcYSQO395fux+bTm2Xbp/efDrNOkj0i0pcOP1vn5uYiNzcXd911FwBforF+/Xp/onH8+HEAQHV1NdauXYu1a9dCEATddJXaunWr/3JWVhZOnDiBm2++GVu2bAm6X0FBAQoKCrBmzRr86U9/wgcffICLL75Y7XCJiIzJAOtYRMuMUO/se0e2LcmWhBt736hiNERkJKp/DdSQaNx9990QRRHLli3D7373O+zevRsAdLf6dkPi0+C6667Dnj17AAB9+/b1d+HauXMntm/fDqBxvYuvvvoKF154YZset6ampk1tRESGZIAxFtEwI1StqxZrjsqvtH1Ln1sQZ41TMSIiMhLVz4S7d+8OWkCvYSVuvQ56Ky8v919uSH7i4uKwaNEi3HLLLUH3Xb9+PW699VYUFxejtrYWU6ZMwd69e2Gz2Vr9uAkJCe2Km4jIUIwwxkJp1e0IqVh8duwz1LnrJNssggXT+k5TOSIiMpIOTyz27dsXlEgUFxf726SqE/3798eYMWM6OqwWk6oOLFmyBDfddFPI7WPGjMGKFStwxRVXwOv14vDhw3j77bf93cCIiEiGAcZYRENXqI8OfSTbNjprNNLj01WMhoiMJuxn6wMHDvgTiS+//DJo0TwgNJno16+ff8D26NGj0bVr13CH1C52uz3o+vDhwyWTisD2SZMm4YMPPgAA/Pe//21TYlFdXS3bVlRUhNzc3Fbvk4hItwywjkWkJxYVjgpsO7NNtv3Gczi2goiUhTWx6N69O06fPh10m1Qi0ZBEjB49GqmpqeEMIeyadklSSioC79OQWHz77bdtetz4+HjZttra2jbtk4hIt4wwxsIZ2WMstp3eBq/olWzrYu+Cy7tfrnJERGQ0YT0Tnjp1KuS2vn37BiUSaWlp4XzIDtelS5eg6/379292m379+vkvV1VVoaqqiovqEREpMUJi4Y7sisV3p76TbRudNRpWk/GfIxF1rLCfrc8777ygRCI93dj9Mfv27Rt0vSWDqpsmEUwsiIiawelmNae0dsWlmZeqGAkRGVXYKxZGTySaGjBgQNB1pbEPDaqqqoKuJycnhzUmIqKIozh4Wx+JBRQSC1j1UVVpqzM1Z5BXkSfbPixTH4vWEpG+mcK5s0hLKoDGdTca7N27t9lt9u3b57/cuXNnxfESREQEg3SFitzpZncX75Zt69OpDzrbO6sYDREZVVgTi0g1adIk/+Xly5c3e//A+4wcObIDIiIiijBGSCwUu0K1fr0iPdlbKv+l2UXpF6kYCREZmSpn6wMHDmD79u0oLi72jzfo2rUrLrjgAvTp00eNENrloYcewiuvvAKXy4Vvv/0WK1aswA033CB53y1btmDZsmX+6zNnzlQpSiIiAzNAV6hIXnl7f+l+2bb+XZqftISICOjAxKKyshKvvPIK/vnPf0rOFtWgW7duePDBB/Hoo48iKSmpo8Jpl969e+Phhx/Gyy+/DAC47bbbsHjx4qBKBgB8+eWXuOWWW+Dx+N4gL730UtkEhIiIAihVLPSyjkUEd4U6UHZAtq1v576ybUREgToksdi0aROmTZuG48ePS66uHejkyZN4+umnsXDhQixduhSXXqrPmSeef/55bN++HV9//TVqamowefJk9OvXDxdffDHMZjN27tyJ77//3n//zMxMvPfeexAEQcOoiYgMwggrbyutY2HgxKLWVYvTNacl2ywmC3ql9FI5IiIyqrCfrb///ntcc801qKmp8d9mMpnQp08f5OTkID4+HjU1NTh69CgOHDgAr9e3GE9+fj7GjRuHDRs24IILLgh3WO0WExODjz/+GA899BCWLl0KwDdIO3CgdoNLLrkE77//PrKystQOk4jImBSnm9VJYhGh083mV+bLtvVM7Mn1K4ioxcJ6tna73bjtttv8U7ImJydj7ty5uOuuu9C1a9eQ+5eUlOCNN97AH/7wB1RUVKC6uhq33XYb9uzZA7NZH6XvQMnJyXjnnXfw4IMPYvHixdi4cSNOnjwJj8eD9PR0XHrppbj11lsxceJEViqIiFrDCIO3lbpCGXiMhdI0szlJOeoFQkSGF9Yz4dtvv42DBw9CEAT06tULn332GbKzs2Xv36VLF8yePRu33HILrr76ahw6dAgHDx7E22+/jRkzZoQztLAaOXIkZ3siIgonxcRCHxMYii6nbJuhKxZV8hWLnOQc9QIhIsML69n6o48+8l/+73//q5hUBMrOzsbSpUv93/J/+OGH4QyLiIj0zghjLJS6QtmMm1jIja8AfF2hiIhaKqyJxfbt2yEIAi655JJWj5O48MILcckll0AURfzwww/hDIuIiPTO4IkFDNwVSimxyIzPVDESIjK6sCYWhYWFAID+/ds253XDdg37ISKiKGGA6WYRodPNKiUWGfEZKkZCREYX1sTCevbE6nA42rS90+kM2g8REUUJIwzejsBZoURRZGJBRGET1sQiIyMDoihi8+bNbdq+YbuMDJ7IiIiiimJioY+KhfLK28ZMLKpcVah110q2JdoSEWeNUzkiIjKysCYWV1xxBQDg8OHDeP/991u17QcffOCfUaphP0REFCVE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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], "source": [ "# === SETTINGS ===\n", "p = Y_tensor.shape[1]\n", @@ -716,45 +681,24 @@ "plt.savefig(\"fourier_power_only.pdf\", bbox_inches=\"tight\")\n", "plt.savefig(\"fourier_power_only.svg\", bbox_inches=\"tight\")\n", "plt.show()" - ] + ], + "execution_count": null, + "outputs": [], + "id": "68b25ca9-6339-49dd-9d45-577a51798a25" }, { "cell_type": "markdown", - "id": "5ef2c971-d9f1-41e6-b8eb-4e467496ccfd", "metadata": {}, "source": [ "## Plot outputs" - ] + ], + "id": "5ef2c971-d9f1-41e6-b8eb-4e467496ccfd" }, { "cell_type": "code", - "execution_count": null, - "id": "e333d1ab-1501-434f-86d2-82c10bb58f11", "metadata": { "scrolled": true }, - "outputs": [ - { - "data": { - "image/png": "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l112WVx88cXV+oVbsMiNItndAADYTUUTLPJNsMgNuxsAwN6pYAdvAwAAxUOwAAAAEhMsAACAxAQLAAAgMcECAABITLAAAAASEywAAIDEBAsAACAxwQIAAEhMsAAAABITLAAAgMQECwAAIDHBAgAASEywAAAAEhMsAACAxAQLAAAgMcECAABITLAAAAASEywAAIDEBAsAACAxwQIAAEhMsAAAABITLAAAgMQECwAAIDHBAgAASEywAAAAEhMsAACAxAQLAAAgMcECAABITLAAAAASEywAAIDEBAsAACAxwQIAAEhMsAAAABITLAAAgMQECwAAIDHBAgAASEywAAAAEhMsAACAxAQLAAAgMcECAABITLAAAAASEywAAIDEBAsAACAxwQIAAEhMsAAAABITLAAAgMQECwAAIDHBAgAASEywAAAAEhMsAACAxAQLAAAgMcECAABITLAAAAASEywAAIDEBAsAACAxwQIAAEhMsAAAABITLAAAgMQECwAAIDHBAgAASEywAAAAEhMsAACAxAQLAAAgMcECAABITLAAAAASEywAAIDEBAsAACAxwQIAAEhMsAAAABITLAAAgMQECwAAIDHBAgAASEywAAAAEhMsAACAxAQLAAAgMcECAABITLAAAAASEywAAIDEBAsAACAxwQIAAEhMsAAAABITLAAAgMQECwAAILGiDRY333xzpFKpzF+HDh3yXRIAANRYRRks3n777bj33nvzXQYAAPDfii5YbN68Oa699tooLy/PdykAAMB/K7pg8atf/SrmzJkTERGDBg3KczUAAEBEkQWLefPmxU9/+tOIiBg8eHD069cvzxUBAAARRRQs0ul0XHvttbFx48Y44IAD4re//W2+SwIAAP5b0QSLP/zhDzFlypSIiPjNb34TLVu2zHNFAADAVkURLD7++OP40Y9+FBERvXv3jm9961t5rggAAKioTtINrF27Nv7+979HaWlp9O7dOxc1bePGG2+ML7/8MurVqxd//OMfI5VKVUs/AABAdrI+Y7Fo0aK46KKL4oADDogePXrEqaeemnltypQpccQRR8TEiRMTF/jEE0/ESy+9FBERt9xySxx++OGJtwkAAORWVmcsFi9eHD179oxVq1bFRRddFJ9++mlMmzYt8/oJJ5wQK1eujNGjR8cpp5ySdXGrVq2K733vexERceihh8att96a9baqorS0NKvXAACgpssqWNx+++3x2WefxaRJk+LEE0+MO++8s1KwqFOnTvTu3Tsz2DpbN910U5SUlERExAMPPBD169dPtL1dadSoUbVuHwAA9lZZXQr16quvRv/+/ePEE0/cYZv27dvHJ598knVhf/7zn+ORRx6JiIghQ4ZUutQKAAAoLFmdsVi9enV06NBhp23S6XRs3Lgxm81HaWlpXH/99RER0axZs7j77ruz2s7uWrt27Q5fKykpiY4dO+6ROgAAoNhkFSxatWoVH3zwwU7bzJkzJ9q1a5dVUbfeemssWrQoIiLuueeeaN68eVbb2V0NGzbc4Wvr1q3bIzUAAEAxyupSqH79+sVLL70U77777nZfnzx5crz++utx7rnn7va2Z8yYEf/n//yfiIg49dRTY8iQIdmUCAAA7EFZnbH4yU9+Ek8//XT06dMnhg0bFv/4xz8iIuKVV16JqVOnxm9/+9to3rx5DBs2bLe3/e6770Z5eXlE/PPuUzuydWB3RMSyZcsqtR0+fHicd955u90/AACw+7IKFh06dIhXX301rrjiihg+fHikUqlIp9Nx/vnnRzqdjnbt2sXTTz8dbdq0SVTcggULYsGCBVVqu2nTppg+fXpmvmLoAAAAqlfWT94+4YQT4oMPPogXX3wxpk+fHqtXr479998/TjjhhLjooouiXr16uawTAAAoYKl0Op3OdxHZGjlyZFxzzTUR8dXtbbcO+K4OJSUl0bJly0rLVqxYES1atKi2PncklUrt8T5zpYh3NwAAdiKrwdsAAAAVZXUp1F133VWldqlUKoYPH55NFwAAQBHJKljccccdO31962BuwQIAAGqGrILFhAkTtrt8zZo1MWPGjPiP//iPOOOMM+I73/lOouIAAIDikFWw6Nu37w5fu/DCC2Pw4MHRvXv3GDBgQNaFAQAAxaPa7gp19dVXx5w5c2LmzJnVsfk9zl2hcsNdoQAA9k7Vdleoli1bxvz586tr8wAAQAGplmCxcePGGDduXDRp0qQ6Ng8AABSYrMZYPPzww9tdvmXLlvjkk0/iiSeeiHnz5sX3vve9RMUBAADFIasxFrVq1drudf5bN5VKpWLgwIHx0EMPRf369ZNXWQCMscgNYywAAPZOWZ2xGDFixHaX16pVKw444IA49thjo02bNokKAwAAike13RVqb+OMRW7Y3QAA9k7V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OsQrr7ySuQ1thw4d4vLLL4/LL788LrvssujXr19ceumlOS0WAAAoTFmdsZg3b16cffbZlZ5tsWXLlsx0375947zzzou77747eYUAAEDByypYREQ0adIkM92wYcNYtWpVpdcPO+ywmDt3btaFAQAAxSOrYHHQQQfFkiVLMvOdO3eO6dOnV2rz3nvvRcOGDZNVBwAAFIWsgsVJJ50Ub731Vmb+oosuipkzZ8b1118fY8eOjR//+MfxyiuvRJ8+fXJWKAAAULiyut3sxIkT41e/+lU88MAD0b59+1i7dm307ds3Zs6cGalUKtLpdHTo0CEmTJgQ7du3r4669zi3m80Nt5sFANg7Zf0ci6/bvHlzjBkzJhYsWBDt27ePCy64YK+6FEqwyA3BAgBg75ToydsV1a1bNy655JJcbQ4AACgiWd8VCgAAYKsqnbG46667stp4KpWK4cOHZ7UuAABQPKo0xqLig/B2a+OpVJSVlWW1bqExxiI3jLEAANg7VemMxYQJE6q7DgAAoIhVKVj07du3uusAAACKmMHbAABAYoluNztjxowYNWpUzJw5M9asWRONGzeO7t27x9VXXx3du3fPVY0AAECBy/oBecOGDYvf/e53UV5evs1rtWrViptvvjl+/etfJy6wUBi8nRsGbwMA7J2yuhTq97//fdxzzz3xjW98Ix555JFYtGhRrF+/PhYtWhQPP/xwHHLIIXHPPffE/fffn+t6AQCAApTVGYsjjjgiSktL47333ov99ttvm9fXrFkT3bp1i0aNGsXf/va3nBSab85Y5IYzFgAAe6eszlgsXLgwBgwYsN1QERHRuHHjGDBgQCxcuDBRcQAAQHHIKlh8/Zf7HWnVqlU2mwcAAIpMVsFi4MCB8cwzz8TatWu3+/oXX3wRzzzzTAwcODBRcYsWLYoHH3wwrrzyyjjqqKPigAMOiLp160bTpk3jyCOPjOuvvz4mTZqUqA8AACC5rMZYbNy4MS677LL44IMP4rbbbouTTz45WrVqFcuXL4/JkyfH//pf/ysOPfTQeOqpp6JevXq7XdTMmTPj29/+drz99ttVan/KKafEqFGjol27drvdV1UZY5EbxlgAAOydsgoWtWvXjoivviRu70vujpanUqnYsmXLLrf/xBNPbHO249BDD42uXbtG8+bN4/PPP4+pU6fGkiVLMq8feOCBMXny5OjUqdPuvp0qESxyQ7AAANg7ZfWAvN69e++RL7eHHHJIXHvttXHllVfGQQcdVOm18vLyGDlyZPyP//E/Yt26dbF06dIYPHhwTJ06tai/eAMAQDHK+gF51WnSpEmxcOHCuOqqqzJnR3bkueeei29+85uZ+XHjxsVZZ52V85qcsciNAtzdAADIgawGb1e3vn37xtChQ3cZKiIi+vfvH8cff3xmfuzYsdVZGgAAsB0FGSx210knnZSZXrRoUf4KAQCAGiqrMRYRXz0k7957743Zs2fH0qVLY/Pmzdu0SaVSsWDBgkQFVkXFS4PKysqqvT8AAKCyrILFuHHj4uKLL45NmzZF3bp1o2XLllGnzrab2lPX08+ZMycz3bZt2z3SJwAA8E9ZBYtbbrklateuHU8++WQMGDAgatXK3xVVixcvjtdffz0zf8YZZ+StFgAAqKmyChZ///vf48orr4xLL7001/Xstptvvjlz+VO7du3iggsuyHpbpaWlWb0GAAA1XVbBonXr1tGgQYNc17LbRo0aFc8880xm/he/+EXUr18/6+01atQoF2UBAECNk9U1TIMGDYpXXnklNmzYkOt6quydd96Jb3/725n5gQMHxqBBg/JWDwAA1GRZPSBv8+bN0b9///jyyy/j5z//eRx11FF79Nf+hQsXxoknnhiffvppREQceeSRMXny5Nh///0TbXdnlzuVlJREx44dKy3zgLzd5wF5AAB7p6yfvP3nP/85rrjiilizZs2ON55KxZYtW7IubnuWLVsWvXv3ztzGtlOnTvHmm29GmzZtctrP13nydm4IFgAAe6esxlg8+eSTMXjw4CgvL49OnTpFmzZttnu72VxbtWpV9OvXLxMq2rRpE+PHj6/2UAEAAOxcVmngrrvuisaNG8e4ceOiR48eua5pu7744os466yzYu7cuRER0bx58xg/fvw2lycBAAB7XlaDtxcuXBhXXHHFHgsVpaWlce6558Zf//rXiIhMqDniiCP2SP8AAMDOZRUs2rZtm3l2RHXbsGFDXHjhhTFlypSIiNh3331j7Nixceyxx+6R/gEAgF3LKlhcd9118eKLL8bq1atzXU8lmzdvjgEDBmSerF2/fv0YM2ZMnHTSSdXaLwAAsHuyGmNxySWXxJQpU+Kkk06Kn/zkJ3HUUUft8Fav7dq1y6qwsrKyGDRoULz88stfFVqnTjz11FNxxhlnZLU9AACg+mR1u9latWpFKpWKdDq901ufZnu72XQ6Hddcc02MGjUq099jjz0WV1xxxW5vK1fcbjY33G4WAGDvlNUZi6uvvrpav9z+4Q9/yISKiIjOnTvHm2++GW+++WaV1v/9739fXaUBAADbkVWwGDlyZI7LqGzFihWV5j/44IP44IMPqry+YAEAAHtWVoO3AQAAKspqjMVWn376aTz77LMxb968KC0tjYceeigivhqPsHDhwujWrVvss88+OSs2n4yxyA1jLAAA9k5ZXQoVEXH//ffHD37wg9i4cWNEfPVld2uwWLFiRfTq1SseeOCBuO6663JTKQAAULCyuhTqxRdfjO9+97vRrVu3eOGFF+KGG26o9Pq//Mu/xJFHHhnPP/98LmoEAAAKXFZnLH7zm99Eu3btYsKECdGwYcP461//uk2bbt26xeTJkxMXCAAAFL6szljMmjUrzjvvvGjYsOEO2xx00EGxfPnyrAsDAACKR1bBory8POrWrbvTNitWrIj69etnVRQAAFBcsgoWhx122E4vc9qyZUu88cYb0a1bt6wLAwAAikdWwWLw4MExc+bMuPPOO7d5raysLH74wx/Ghx9+GFdffXXiAgEAgMJX5edY1K5dO+64444YPnx4bN68Oc4888x44403onPnztGgQYOYO3duDBgwIN55551YtGhRnHnmmfHKK68U9TMXKvIci9zwHAsAgL1Tlc9YpNPpzJfCunXrxquvvho/+tGPYtWqVfHee+9FOp2Op59+OlavXh233HJLvPDCC0X9BRgAAKi6rB+QV69evfjZz34WP/3pT2P+/PmxevXq2H///ePwww+P2rVr57JGAACgwGUdLLZKpVLRpUuXXNQCAAAUqd0avO3SJgAAYHuqPHi7Vq1aux0sUqlUbNmyJavCCo3B27lh8DYAwN5pty6F2n///aNJkybVVAoAAFCsditY3HTTTXHbbbdVVy0AAECRyuoBeQAAABUlvisUVCfjSQCAXPCdovo5YwEAACQmWAAAAIlV+VKo8vLy6qwDAAAoYs5YAAAAiQkWAABAYoIFAACQmGABAAAkJlgAAACJCRYAAEBiggUAAJCYYAEAACQmWAAAAIkJFgAAQGKCBQAAkJhgAQAAJCZYAAAAiQkWAABAYoIFAACQmGABAAAkJlgAAACJCRYAAEBiggUAAJCYYAEAACQmWAAAAIkJFgAAQGKCBQAAkJhgAQAAJCZYAAAAiQkWAABAYoIFAACQmGABAAAkJlgAAACJCRYAAEBiggUAAJCYYAEAACQmWAAAAIkJFgAAQGKCBQAAkJhgAQAAJCZYAAAAiQkWAABAYoIFAACQmGABAAAkJlgAAACJCRYAAEBiggUAAJCYYAEAACQmWAAAAIkJFgAAQGKCBQAAkJhgAQAAJCZYAAAAiQkWAABAYoIFAACQmGABAAAkJlgAAACJCRYAAEBiggUAAJCYYAEAACQmWAAAAIkJFgAAQGKCBQAAkJhgAQAAJCZYAAAAiQkWAABAYoIFAACQmGABAAAkVhTBYtOmTfHII4/EueeeG+3bt48GDRpEmzZt4sQTT4y77747Vq5cme8SAQCgRkul0+l0vovYmXnz5sXAgQNj1qxZO2zTsmXLGDFiRJx77rnVVkdJSUm0bNmy0rIVK1ZEixYtqq3PHUmlUnu8z1zZ3d2tJr1XAKD6+E5R/Qo6WCxZsiROOOGEWLp0aUR8tUP06dMnOnfuHCUlJTF+/PhYv359RETUrVs3xo0bF6eddlq11CJY5IZgAQDkg+8U1a9OvgvYmUGDBmVCRfv27WPMmDFx1FFHZV5fuXJlXHHFFfHaa6/F5s2b49JLL40FCxZEkyZN8lQxAADUTAU7xuLll1+OyZMnR0REvXr14sUXX6wUKiIimjdvHmPGjIlOnTpFRMTq1avj17/+9R6vFQAAarqCDRb33XdfZnrIkCHRrVu37bZr2LBh3HXXXZn5P/7xj7Fly5Zqrw8AAPinggwWa9eujddeey0zf8011+y0/YABA6JRo0YR8dVZizfeeKNa6wMAACoryGAxderU2LhxY0R8dUaiR48eO23foEGD6NWrV2b+9ddfr9b6AACAygoyWLz//vuZ6W7dukWdOrseY969e/ftrg8AAFS/ggwW8+fPz0y3b9++Suu0a9cuMz1v3ryc1wQAAOxYQd5udtWqVZnpVq1aVWmd1q1bZ6ZXr16dVb+lpaVZvQYAADVdQQaLtWvXZqb32WefKq1TsV3F9XfH1gHgAADA7inIYLFhw4bMdL169aq0Tv369TPTW5/Gvbcqlqcv5kJNeq816YmgxfxeI2rW+/Ved8x7LQ416b1G7N77rUnvNZv27L6CDBYNGjTITG/atKlK62y9i1RE1c9yfN3OznSUlJREx44ds9ouAADs7QoyWFS8JKmqZx8qtsv2kqaGDRvu8LV169ZltU0AAKgJCvKuUM2aNctML1++vErrfPrpp5nppk2b5rwmAABgxwoyWBx22GGZ6Y8++qhK6yxevDgz3aVLl5zXBAAA7FhBBovDDz88Mz1nzpzYsmXLLteZMWPGdtcHAACqX0EGixNPPDFzl6fS0tJ45513dtp+48aN8dZbb2XmTzvttGqtDwAAqKwgg0WjRo3i9NNPz8yPHDlyp+2fffbZ+PLLLyPiq/EVffr0qc7yAACArynIYBERceONN2amR44cGXPnzt1uu3Xr1sVtt92Wmf+3f/u3qFOnIG92BQAAe62CDRbnnXde9O7dOyK+utTp/PPPj3fffbdSm1WrVsXFF18c//jHPyLiq7MVt9xyyx6vFQAAarpUuoAfQ7hkyZI4/vjjY9myZRHx1RMi+/btG507d46SkpIYP3585vkSderUiXHjxlW6hCqXSkpKomXLlpWWrVixIlq0aFEt/VHzFPMTUD3ZdueK+f16rzvmvRaHmvReIzx5m/wq6GARETFv3rwYOHBgzJo1a4dtWrRoESNGjIjzzjuv2uoQLKhuxXyA9w/3zhXz+/Ved8x7LQ416b1GCBbkV8EPRujSpUtMnz49nnjiiRg9enTMnTs3li9fHk2aNIlOnTrFN7/5zbjmmmuiefPm+S4VAABqrII/Y1EonLGguhXzL0d+Edy5Yn6/3uuOea/FoSa91whnLMivgh28DQAAFA/BAgAASEywAAAAEhMsAACAxAQLAAAgMcECAABITLAAAAASEywAAIDEBAsAACAxwQIAAEhMsAAAABITLAAAgMQECwAAIDHBAgAASEywAAAAEhMsAACAxAQLAAAgMcECAABITLAAAAASEywAAIDEBAsAACAxwQIAAEhMsAAAABITLAAAgMQECwAAIDHBAgAASEywAAAAEhMsAACAxAQLAAAgMcECAABITLAAAAASEywAAIDEBAsAACAxwQIAAEhMsAAAABITLAAAgMQECwAAIDHBAgAASEywAAAAEhMsAACAxAQLAAAgMcECAABITLAAAAASq5PvAoCaJ51O57sEgO1yfILsOWMBAAAkJlgAAACJCRYAAEBiggUAAJCYYAEAACQmWAAAAIkJFgAAQGKCBQAAkJhgAQAAJObJ2wDkTE16anFNeq8AVeGMBQAAkJhgAQAAJOZSKIBq5pIZip19GKgKwQIKhH+4AdiT/LtDrrkUCgAASEywAAAAEhMsAACAxAQLAAAgMcECAABITLAAAAASEywAAIDEBAsAACAxwQIAAEhMsAAAABITLAAAgMQECwAAIDHBAgAASEywAAAAEhMsAACAxAQLAAAgMcECAABITLAAAAASEywAAIDE6uS7gGJRXl6+zbKVK1fmoRIAANjzmjVrFrVq7fi8hGBRRatXr95m2RFHHJGHSgAAYM9bsWJFtGjRYoevuxQKAABITLAAAAASEywAAIDEUul0Op3vIorBli1b4oMPPqi0rGnTpjsdwFJMSktLo2PHjhERsXDhwmjYsGGeK6KY2Z/IJfsTuWR/Ipdq2v60q8HbggUR8dX/GI0aNYqIiLVr1+71/2NQvexP5JL9iVyyP5FL9qfK9o6f2wEAgLwSLAAAgMQECwAAIDHBAgAASEywAAAAEhMsAACAxNxuFgAASMwZCwAAIDHBAgAASEywAAAAEhMsAACAxAQLAAAgMcECAABITLAAAAASEywAAIDEBAsAACAxwQIAAEhMsChymzZtikceeSTOPffcaN++fTRo0CDatGkTJ554Ytx9992xcuXKvbJvcmvRokXx4IMPxpVXXhlHHXVUHHDAAVG3bt1o2rRpHHnkkXH99dfHpEmTct7vxIkTI5VK7dbfGWeckfM6yJ2RI0fu9md67bXX5rwOx6fil83xoeLfyJEjE/VfKPsyVVNWVhbvvvtuPPTQQ3HDDTfEcccdF/Xq1ct8NqecckrW237ttdfi6quvjkMPPTQaNmyY+bdx2LBhMW/evNy9iQLtf7ekKVrvv/9++uijj05HxA7/WrZsmR47duxe1Te5M2PGjPTxxx+/08+x4t8pp5yS/uijj3LW/4QJE6rc99a/008/PWf9k3sjRozY7c/0X//1X3Nag+PT3iGb40PFv1deeSVR/4WwL1M1zz33XHrffffd6WfTt2/f3d7umjVr0pdffvlOt1u3bt30z3/+89y/qQLoPxt1dpI5KGBLliyJ008/PZYuXRoREalUKvr06ROdO3eOkpKSGD9+fKxfvz5WrFgRF198cYwbNy5OO+20ou+b3Jo/f368/fbblZYdeuih0bVr12jevHl8/vnnMXXq1FiyZElEfPULYq9evWLy5MnRqVOnnNZy4IEHRv/+/XfZrkuXLjntl+rTpUuXOP3003fZ7sQTT8xZn45Pe4+DDjoovvOd71S5/Z///Of44IMPIiKiVatWOT27mY99mar7/PPPY926dTnd5ubNm6N///7x+uuvZ5Z17do1unfvHhs2bIjJkyfHsmXLYvPmzfE//+f/jM2bN8dtt9221/SftXwnG7LTu3fvTFpt3759etasWZVeLykpSZ9++umZNk2bNk1/9tlnRd83uTV69Oh0RKQPOeSQ9C9/+cv0kiVLtmlTVlaWfuihhyr9GtSzZ890eXl54v4r/iKZza9JFJ6Kv/IOGTJkj/fv+FQzbdmyJd26devM53rzzTcn3ma+92Wqbutn1apVq/T555+fvvPOO9Mvv/xy+vvf/37W/8YMHz48s26DBg3So0ePrvT6xo0b08OGDcu0SaVS6YkTJ+bsPeW7/2wJFkVo7NixmR2pXr166XfffXe77dauXZvu1KlTpu2Pf/zjou6b3Js4cWJ6xIgR6S1btuyy7bPPPlvp9Ou4ceMS9y9Y7H3y+WXM8anmqvjZR0R69uzZibcpWBSPZcuWbfcy3dtvvz2rf2OWL1+ebtiwYWbdBx54YIdtK16q1KtXr2zKL7j+kzB4uwjdd999mekhQ4ZEt27dttuuYcOGcdddd2Xm//jHP8aWLVuKtm9yr2/fvjF06NCoXbv2Ltv2798/jj/++Mz82LFjq7M02G2OTzXXqFGjMtPHHHNMHHnkkXmshj2tdevW0a5du5xtb9SoUVFaWhoRX10e/G//9m87bPvrX/86atX66uv0tGnTYubMmUXffxKCRZFZu3ZtvPbaa5n5a665ZqftBwwYEI0aNYqIiNWrV8cbb7xRlH1TGE466aTM9KJFi/JXCHyN41PN9fnnn8cLL7yQmR8yZEgeq2Fv8Pzzz2emhw4dGqlUaodt27VrV2mc1nPPPVf0/SchWBSZqVOnxsaNGyPiq1/devTosdP2DRo0iF69emXmKw4CKqa+KQwVD25lZWV5rAQqc3yquZ566qnYsGFDRETUrVs3Bg0alOeKKGYbNmyIt956KzNfldvUnnrqqZnppMeSfPeflLtCFZn3338/M92tW7eoU2fXH2H37t3j//2//7fN+sXUN4Vhzpw5mem2bdvmdNvr16+PF198MWbPnh2rV6+Ohg0bRqtWreKEE06IY445pkr7G4Xl888/jz/96U8xd+7cWLNmTey///5x4IEHRq9evaJbt247/RVudzk+1VwVL4M699xzo0WLFjnvY0/uy+TX/Pnzo7y8PCK++jHtmGOO2eU63bt3z0wnPZbku/+k/EtdZObPn5+Zbt++fZXWqXjdYZIHqeSzb/Jv8eLFlX4JyfWD6t5+++248MILt/vagQceGDfddFN8//vfj7p16+a0X6rPmDFjYsyYMdt97Rvf+Ebccsst8a1vfSsnX8ocn2qmDz74IKZOnZqZr67LoPbkvkx+VTyWtGzZMho0aLDLdSoeS1avXh0lJSVZB9x895+US6GKzKpVqzLTrVq1qtI6rVu3zkyvXr26KPsm/26++ebM5U/t2rWLCy64YI/1vXTp0hg2bFj06dMnli9fvsf6pfp88MEHce2118aFF16YGaSYhONTzfTwww9npps1axbnnXfeHq8h1/sy+ZX0WBKR3+9aSftPSrAoMmvXrs1M77PPPlVap2K7iusXU9/k16hRo+KZZ57JzP/iF7+I+vXr52TbLVq0iBtvvDGee+65+PDDD2PdunWxYcOG+PDDD2PUqFGVrpV/66234oILLoj169fnpG+qR7t27eIHP/hBvPzyy/Hxxx/Hhg0borS0NObPnx/3339/pYccvvTSSzFo0KDMqf9sOT7VPOl0Oh599NHM/KBBg6JevXo57SMf+zL5lfRY8vVtFFv/SQkWRWbrALWIqPIBtOIXwCRfyPLZN/nzzjvvxLe//e3M/MCBA3M2OPK4446LJUuWxH333RcXX3xxdOzYMfbZZ5+oX79+dOzYMa6++uqYPn16DB8+PLPOX/7yl7jnnnty0j+5d/HFF8fChQvj7rvvjnPOOScOPvjgqF+/fuy7775x6KGHxg033BCzZ8+udNemF154IR5//PFE/To+1TyTJk2qdHe6XF8Gla99mfxKeiyJyO93raT9JyVYFJmK19pt2rSpSutsvVNKRNXTb6H1TX4sXLgwLrjggsyB7sgjj4wHHnggZ9tv1KjRLg+cqVQq7rrrrkph5re//a3nDhSoJk2aZO6pviP16tWL//zP/4zevXtnlv3qV79K1K/jU81TcdB2165d49hjj83p9vO1L5NfSY8lEfn9rpW0/6QEiyKz9b7rEVVPpBXbVVy/mPpmz1u2bFn069cvPv3004iI6NSpU4wbNy7233//vNRT8YFmn332WaXb8VF8atWqFbfffntm/r333oslS5ZkvT3Hp5pl3bp1lS7PzOezK3K9L5NfSY8lX99GsfWflGBRZJo1a5aZruog1q1fDCMimjZtWpR9s2etWrUq+vXrFwsWLIiIiDZt2sT48eOjTZs2eaupc+fO0aFDh8x8vm+pR3J9+vSpdJevJJ+p41PN8uyzz8aXX34ZERG1a9eOwYMH57WeXO7L5FfSY0lEfr9rJe0/KcGiyBx22GGZ6Y8++qhK6yxevDgzXXGgWTH1zZ7zxRdfxFlnnRVz586NiIjmzZvH+PHjo2PHjnmuLCoFm5UrV+axEnKhbt260bx588x8ks/U8almqXgZ1JlnnpnXHz0icrsvk18VjyUrVqyoNOZhRyoeS5o2bZroVq/57j8pwaLIHH744ZnpOXPmVOk68xkzZmx3/WLqmz2jtLQ0zj333PjrX/8aERGNGzeOcePGxRFHHJHnyr5S8VaODRs2zGMl5EquPlPHp5pjyZIllZ6pM3To0PwVU4Hj097hsMMOy4ytSafTMWvWrF2uk8tjSb77T0qwKDInnnhiZvR/aWlpvPPOOzttv3HjxkrXop922mlF2TfVb8OGDXHhhRfGlClTIiJi3333jbFjx+Z8QGS21q1bV+nBQQceeGAeqyEXPvzww/jiiy8y80k+U8enmuPRRx/N3NK1SZMmO3yw5p6Uy32Z/GrQoEH07NkzMz9x4sRdrjNp0qTMdNJjSb77T0qwKDKNGjWK008/PTM/cuTInbaveB1q06ZNo0+fPkXZN9Vr8+bNMWDAgMyvgPXr148xY8bESSedlOfK/unxxx/P3PkilUrZn/YC//Vf/5WZbty4cRx99NFZb8vxqeaoeBnU5ZdfXqUnE1e3XO7L5N/FF1+cmd7VseTjjz+O1157bbvrFmv/iaQpOi+99FI6ItIRka5fv376vffe22670tLS9CGHHJJp+6Mf/aio+6Z6bNmyJX3JJZdkPqs6deqkx4wZU+39lpaWpsvKyqrU9u9//3u6WbNmmRrPOuusaq6ObHz55ZdVbjtlypR0gwYNMp/p9ddfn7h/x6e93/Tp0zOfW0Skp02bVi395HtfJjduv/32zOfSt2/fKq+3fPnydMOGDTPrPvjggztsO3DgwEy7Xr165aDq/PefhGBRpHr37p3ZkTp06JCePXt2pddXrlyZ7tevX6ZN06ZN05999tl2t7Vw4cJKB+oRI0bssb7Jr/Ly8vSQIUMyn1WtWrXSo0ePTrzdivvT7bffvt02EyZMSHfp0iV9//33p5cvX77dNlu2bEk/8sgjlUJFvXr10rNmzUpcI7k3YsSIdI8ePdKjRo1Kf/7559tts379+vS9996b3meffTKfaZMmTdJLly7dbnvHJyq68cYbM5/doYceutvrV3V/qo59mT0v22CRTqfTw4cPz6y7zz77pJ988slKr2/atCl9yy23VNqfJk6cuNNttm/fPtN2yJAhe7z/PaHObp/ioCA8/vjjcfzxx8eyZcti0aJFcfTRR0ffvn2jc+fOUVJSEuPHj49169ZFRESdOnXiqaeeiiZNmhR93+TWH/7wh0qXFXTu3DnefPPNePPNN6u0/u9///tE/c+bNy9uvPHG+O53vxuHHHJI/Mu//Es0bdo0atWqFZ9++mlMmzat0t1VateuHQ8//HAcddRRifql+vzlL3+JIUOGRJ06daJLly7RpUuXOOCAA6KsrCw++eSTmDZtWqVr0ffZZ58YM2ZMzu7q4/i099q0aVM88cQTmfnqfnZFvvdlds+5554bS5curbSs4m1Y33nnne1eovbyyy9vd0zM8OHDY8qUKfH666/H+vXr4/LLL4+f/vSn0b1799iwYUO88cYbsWzZskz7O++8M/r27Zuz95Pv/rOW72RD9t5///300UcfXSmtfv2vRYsW6Zdeemmn29ndXwRz2Tf5VfHXnGz+dqRim52dsdidvg477LD0lClTqum/BLkwYsSI3fpMjz/++PTf/va3nW7T8YmtnnnmmUpnVz/++OPd3sbunLHI9b5M9ap4NmB3/hYuXLjDbX7++efpyy67bKfr161bN/2zn/1st2vc1RmL6uh/T3DGooh16dIlpk+fHk888USMHj065s6dG8uXL48mTZpEp06d4pvf/GZcc801le6tvTf0zd6hd+/e8c4778S0adNi6tSpMX/+/Fi1alWsWrUqNm7cGI0bN462bdvGCSecEBdeeGGcffbZkUql8l02OzFw4MA49NBDY+rUqfHWW2/FggULYuXKlbFq1aooLy+Pxo0bR8eOHaNnz55xySWXxMknn1wtdTg+7Z0qnl097bTT4uCDD662vgplXya/GjduHE8++WRcd911MWrUqJg2bVosW7Ys6tatG23bto2zzjor/vVf/7XabvGa7/6zkUqn0+l8FwEAABQ3t5sFAAASEywAAIDEBAsAACAxwQIAAEhMsAAAABITLAAAgMQECwAAIDHBAgAASEywAAAAEhMsAACAxAQLAAAgMcECAABITLAAoChMnDgxUqlU3HHHHfkuBYDtECwAyIlFixZFKpWKs88+O9+lAJAHggUAAJCYYAEAACQmWABQbYYOHRqpVCoWLlwY//Ef/xFdunSJ+vXrR/v27ePOO++M8vLybdZZv359/OhHP4q2bdtGgwYNomvXrvHggw/utJ+FCxfGtddeG+3atYv69etHmzZtYujQofHRRx9l2mzcuDGOPvroqFOnTkyZMqXS+jt7DYCqqZPvAgDY+w0bNiwmTZoU559/fpx11lnx/PPPxx133BGbNm2Kn/3sZ5l25eXlceGFF8b48eOjW7duMWjQoFi1alXcdNNNceqpp25329OnT4+zzjorSktL4/zzz49vfOMbsWjRonjsscfilVdeiWnTpkWnTp2ifv36MXr06Dj22GNj8ODBMXv27GjcuHFERPz7v/97zJ49O+6444446aST9sh/E4C9ThoAcmDhwoXpiEifddZZmWVDhgxJR0S6Y8eO6aVLl2aWl5SUpJs0aZLeb7/90hs3bswsHzFiRDoi0meffXZ6y5YtmeXvvvtuul69eumISN9+++2Z5Zs2bUp36NAhvd9++6VnzJhRqZ7Jkyena9eunT7//PMrLX/ggQfSEZG+/PLL0+l0Oj127Nh0RKRPPvnkSn0CsHtcCgVAtRs+fHi0adMmM9+8efO46KKL4ssvv4z58+dnlj/88MMREfGzn/0sateunVnerVu3uOqqq7bZ7ksvvRSLFi2KYcOGxTHHHFPptZNPPjkuuuiiePnll+OLL77ILL/++uujf//+8eSTT8Yvf/nLGDp0aDRp0iQee+yxSn0CsHtcCgVAtTv22GO3WXbwwQdHRMTnn3+eWTZ79uxo2LBhdO/efZv2vXv3joceeqjSsrfeeisiIubPn7/d51t8+umnUV5eHn//+9/juOOOyyz/z//8z3j77bfjxz/+cUREPPnkk9GuXbvdfl8A/JNgAUC123///bdZVqfOV/8ElZWVZZatWbMm2rZtu91ttGrVaptlq1evjoiIxx57bKf9l5aWVppv2rRp9OnTJ0aPHh0HH3xw9O/ff+dvAIBdcikUAAWjcePGUVJSst3Xli9fvs2yrYHlxRdfjHQ6vcO/vn37VlrvmWeeidGjR0ezZs1iyZIlceutt+b+zQDUMIIFAAXjqKOOitLS0pgxY8Y2r02ePHmbZSeccEJEREybNq3KfSxZsiSuu+66aNGiRcycOTN69uwZd999d7z22mvZFw6AYAFA4dg6QPvWW2+tdInUnDlz4pFHHtmm/UUXXRTt2rWL3/72t/HGG29s8/rmzZvjzTffzMyXl5fHlVdeGZ999lmMGDEi2rZtG4899ljst99+cfXVV8fKlSur4V0B1AzGWABQMIYMGRKPP/54jBs3Lo455pg455xzYvXq1TF69Og488wz46WXXqrUvn79+vH000/HOeecE3379o3TTjstunXrFqlUKj766KOYPHlyNGvWLObNmxcRET//+c9j0qRJ8d3vfjfOO++8iIjo1KlT3HfffXHVVVfFt771rXjhhRf2+PsG2Bs4YwFAwahVq1aMGTMm/v3f/z1Wr14d9957b0ydOjV+97vfxQ9+8IPtrtOjR4+YPXt2fP/734+PP/44Hnjggfiv//qvmDdvXlx88cVx//33R8RXd5C68847o2vXrvGb3/ym0jauvPLKGDx4cLz44otx3333Vfv7BNgbpdLpdDrfRQAAAMXNGQsAACAxwQIAAEhMsAAAABITLAAAgMQECwAAIDHBAgAASEywAAAAEhMsAACAxAQLAAAgMcECAABITLAAAAASEywAAIDEBAsAACCx/w8GfyszZv6JNQAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxYAAAJOCAYAAAAqFJGJAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA/MklEQVR4nO3deZiVdd0/8M+wDoLsiKCIgAKaC6AoYgKKpuISiiVYiqapaI9mZuljikum9lhpv7J8NMEV1FLQVDRUXAAXBEQRMFkkZJFFlH2b8/vDi/MwMMDMfGc4M/B6Xddc17187+/3c865uZn33MvJy2QymQAAAEhQJdcFAAAAlZ9gAQAAJBMsAACAZIIFAACQTLAAAACSCRYAAECyarkugO0rKCiIxYsXF1rWqFGjqFJFLgQAoGIQLCqBxYsXxx577FFo2RdffBFNmjTJUUUAAFCYP3kDAADJBAsAACCZYAEAACQTLAAAgGSCBQAAkEywAAAAkgkWAABAMsECAABIJlgAAADJBAsAACCZYAEAACQTLAAAgGSCBQAAkEywAAAAkgkWAABAMsECAABIJlgAAADJBAsAACCZYAEAACQTLAAAgGSCBQAAkEywAAAAkgkWAABAMsECAABIVi3XBUCFcVO9XFdQcjd9lesKAKDy8X9+uXDGAgAASCZYAAAAyQQLAAAgmWABAAAkEywAAIBkggUAAJBsp3jc7IYNG2Ly5Mnx3nvvxbhx4+K9996LSZMmxbp16yIionv37jFq1Khi9/fll1/GyJEj47XXXouJEyfGp59+GkuXLo38/Pxo0qRJdO7cOU477bT4/ve/H9WrVy+nVwUAAJVHpQ8Ww4YNix/84AexcuXK5L6WL18e/fr1i5dffjnWrl27xfp169bFsmXLYsaMGfHEE0/Er371q3jooYeiW7duyWMDAEBlVumDxdKlS8skVER8Eyz++c9/FlrWtGnTOPzww2PPPfeMdevWxcSJE2PSpEkRETFr1qzo2bNnPPPMM3HqqaeWSQ0AAFAZVfpgsVHTpk2jc+fO2Z+XXnop7rnnnlL11aBBgzjvvPPiggsuiEMPPXSL9W+99Vacd955MXPmzFi/fn384Ac/iE8++SSaNm2a+jIAAKBSqvTB4qSTTorPPvss9tlnn0LL33nnnRL3VaNGjbjxxhvj6quvjrp162613be//e149dVX49BDD42vv/46vv7667j77rvj9ttvL/GYAACwM6j0T4Xac889twgVpdWwYcO4+eabtxkqNtp3333j0ksvzc4///zzZVIDAABURpU+WOTS0UcfnZ2eNWtW7goBAIAcEywS5OXlZac3bNiQw0oAACC3BIsEH374YXa6RYsWOawEAAByS7AopYKCgnjkkUey88cff3wOqwEAgNyq9E+FypV77703pk6dGhERVapUiQEDBiT1t2LFilKtAwCAikCwKIXJkyfHddddl52/8MIL41vf+lZSn3Xq1EktCwAAcsalUCW0dOnS6N27dyxfvjwiIvbff//4/e9/n+OqAAAgt5yxKIHVq1fHd7/73fj0008jIqJu3brx97//vUzONmwMKkVZuHBhtGrVKnkMAAAoL4JFMa1fvz7OPvvseOONNyIiIj8/P5599tk45JBDyqT/2rVrb3XdypUry2QMAAAoLy6FKoaCgoI4//zz49lnn42IiGrVqsVTTz0V3bt3z3FlAABQMQgWxXDppZfGY489FhHfPAHq4YcfjlNPPTXHVQEAQMUhWGzHVVddFffff392/r777ot+/frlsCIAAKh4BIttuP766+Puu+/Ozv/hD3+Iiy66KHcFAQBABSVYbMVtt90Wv/nNb7Lzt9xyS/z0pz/NXUEAAFCBCRZFuOeee+JXv/pVdv4Xv/hF3HDDDTmsCAAAKjbBYjMPPvhgXHXVVdn5yy+/PO68884cVgQAABXfTvE9Fr169Yq5c+cWWjZ//vzs9Lhx46JDhw5bbPfCCy9E8+bNs/Mffvhh/PjHP45MJhMR33y3RCaTiZ/85CfFquPKK6+M/fffvxSvAAAAKredIlh8/PHH8dlnn211/YoVK+KDDz7YYvnatWsLzS9evDgKCgoKbXfvvfcWu46zzjpLsAAAYJfkUigAACDZTnHGYtasWWXST48ePbKXQQEAAMXnjAUAAJBMsAAAAJIJFgAAQDLBAgAASCZYAAAAyQQLAAAgmWABAAAkEywAAIBkggUAAJBMsAAAAJIJFgAAQDLBAgAASCZYAAAAyQQLAAAgmWABAAAkEywAAIBkggUAAJBMsAAAAJIJFgAAQDLBAgAASCZYAAAAyQQLAAAgmWABAAAkEywAAIBkggUAAJBMsAAAAJIJFgAAQDLBAgAASCZYAAAAyQQLAAAgmWABAAAkEywAAIBkggUAAJBMsAAAAJIJFgAAQDLBAgAASCZYAAAAyQQLAAAgmWABAAAkEywAAIBkggUAAJBMsAAAAJIJFgAAQDLBAgAASCZYAAAAyQQLAAAgmWABAAAkEywAAIBkggUAAJBMsAAAAJIJFgAAQDLBAgAASCZYAAAAyQQLAAAgmWABAAAkEywAAIBkggUAAJBMsAAAAJIJFgAAQDLBAgAASFYt1wUAO86U9gfkuoQSO2DqlFyXALDL8f8FpeGMBQAAkEywAAAAkgkWAABAMsECAABIJlgAAADJBAsAACCZYAEAACQTLAAAgGSCBQAAkEywAAAAkgkWAABAMsECAABIJlgAAADJBAsAACCZYAEAACQTLAAAgGSCBQAAkEywAAAAkgkWAABAMsECAABIJlgAAADJBAsAACCZYAEAACQTLAAAgGSCxXa8/vrr8eMf/zjat28f9erVi1q1akXr1q2jd+/eMWTIkFi/fn2uSwQAgJyrlusCKqrFixfHueeeGy+++OIW62bOnBkzZ86M4cOHx+9+97t49NFHo3379jmoEgAAKgbBoghffvlldO3aNT755JPsstatW8dRRx0V+fn5MX369Bg9enSsW7cu3n///ejRo0e8/fbbse++++auaAAAyCHBoggXXnhhNlTk5+fH//7v/8a5555bqM306dOjX79+8d5778WCBQuiT58+MW7cuMjLy8tFyQAAkFPusdjM+++/H88880x2/sEHH9wiVEREtGnTJl5++eXYZ599IiJi/Pjx8fjjj++wOgEAoCIRLDbz1FNPZacPOeSQ6Nev31bb1q9fP/77v/87O3/PPfeUa20AAFBRCRabeeedd7LTvXr12m77U045JTv93nvvxezZs8ulLgAAqMgEi80sWLAgO92yZcvttt9rr72iatWq2flXX321XOoCAICKTLDYTCaTKVH7vLy8QjdsT548uaxLAgCACk+w2EyTJk2y08W5rOnzzz8v9CV5U6ZMKZe6AACgIhMsNnPYYYdlp0eMGLHd9i+88EKh+SVLlpRq3BUrVmzzBwAAKjLBYjPf/e53s9MTJkyIv//971ttu2zZsrjjjju2WFYaderU2epPq1atStUnAADsKILFZnr06BFHH310dv7888+PoUOHbtFu1qxZcdJJJ8WMGTMKLV+1alW51wgAABWNb94uwqOPPhqdO3eORYsWxYoV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hBO22i6TyURBQcE2+3rzzTfjiSeeKH6VOfTFF1/ED3/4wzjssMPizjvvjPfffz/mz58fa9eujXnz5sWECRNi0KBBcd5558Wvf/3rXJcLAAA5UexLoe6888743e9+F08//XScfPLJhdaNHTs2OnToELVq1SpWX6+++mrccsstcfbZZ5es2h1s9uzZ0aNHj5g5c2Z2Wbt27eLggw+ORo0axcqVK2P69OkxceLEWLlyZQ4rBQCA3Cp2sGjevHksX7483nrrrTjxxBOz91hERBx99NFRtWrV2H///SMvLy/eeeedGDFiRHTo0CH23HPPLfpas2ZNVKtWJg+kKjdfffVVHHvssdlQceyxx8bdd98dhxxyyBZt165dG6+++mosW7ZsR5cJAAAVQrF/u+/fv3+0bNkyLrroonjrrbfi9ddfz6677rrrYvz48TF+/PiIiHjxxRdjxIgRERGxxx57RIcOHaJjx47RoUOHaNCgQTz99NPRokWLMn4pZevnP/95zJgxIyIizj777HjssceiatWqRbatUaNGnHTSSTuyPAAAqFBKdNqgR48e8cEHH8R1111XaPmmN2tXqVIl+vbtG506dYr3338/Jk6cGP/617/ipZdeyj4pKpPJxB133FEG5ZePiRMnxgMPPBARES1atIj7779/q6ECAAAoxeNma9euHX/84x+3uv7KK6+MI488Mvr27ZtdtnLlypg4cWJMmjQpFi9eHB07doxevXqVruId4K9//Wt2+vLLL4/dd989h9UAAEDFV+Y3OvzhD3/YYtluu+0WXbt2ja5du5b1cGVuw4YNMWTIkOx8nz59clgNAABUDiX+Houd3UcffRRff/11RETUq1cv2rRpE+vXr49BgwZFz549Y88994yaNWvGXnvtFSeffHL85S9/iTVr1uS4agAAyK3kMxazZ88uizoiIqJ+/fpRt27dMuuvNN57773sdIsWLWLOnDlx1llnxbvvvluo3dy5c2Pu3LkxYsSIuOOOO+Lvf/97dO7ceUeXCwAAFUJysNh3332zN2WnGjhwYNx4441l0ldp/ec//yk0f/LJJ8fkyZMjIqJ9+/bRuXPnqFq1akyaNCn7FKyN33fxxhtvxGGHHVaqcVesWFGqdQAAUBEkB4sbb7yxzIJF9+7dy6SfFEuXLs1Of/TRRxHxzT0igwcPju9973uF2r722mvx/e9/PxYtWhQrV66Ms88+Oz7++OOoUaNGicetU6dOUt0AAJBLycHipptuKoMyKo6izg48+uijccYZZ2yx/Nhjj41nn302vv3tb0dBQUFMnz49Hnvssbjgggt2RKkAAFBhuHl7M/n5+YXmjzrqqCJDxabrzzzzzOz8E088Uapxly9fvtWfjd/+DQAAFZVgsZnNL0naVqgoqs2YMWNKNW7t2rW3+QMAABWZYLGZRo0aFZo/8MADt7vNAQcckJ1etmxZLFu2rMzrAgCAikyw2Ez79u0LzRfnpurNv5lbsAAAYFcjWGzmoIMOKjS/fPny7W6zeZCoV69emdYEAAAVnWCxmVatWkWrVq2y8x9//PF2t5kyZUp2umHDhu6JAABglyNYFGHTpzwNGzZsu+03bdOtW7dyqAgAACo2waIIAwYMiOrVq0fEN095evbZZ7fa9t13342nn346O3/++eeXd3kAAFDhCBZFaNOmTVx22WXZ+XPOOadQeNjo9ddfj1NPPTU2bNgQERFdunSJ008/fYfVCQAAFUXyN2/vrO68884YP358vPnmm7FixYro06dPHHDAAdG5c+eoWrVqTJo0Kd5///1s+2bNmsWTTz4ZeXl5OawaAAByQ7DYipo1a8Zzzz0XAwYMiCFDhkTENzdpb3qj9kZHHnlkPPXUU9GiRYsdXSYAAFQILoXahnr16sXjjz8er7/+elx44YXRrl27qFOnTtSqVSv23Xff6Nu3bzz99NMxduxYoQIAgF2aMxbF0K1bN097AgCAbXDGAgAASCZYAAAAyQQLAAAgmWABAAAkEywAAIBkggUAAJBMsAAAAJIJFgAAQDLBAgAASCZYAAAAyQQLAAAgmWABAAAkEywAAIBkggUAAJBMsAAAAJIJFgAAQDLBAgAASCZYAAAAyQQLAAAgmWABAAAkEywAAIBkggUAAJBMsAAAAJJVy3UBABTf784+NdcllNjVT/wz1yWwA1XGfTTCfgplwRkLAAAgmWABAAAkEywAAIBkggUAAJBMsAAAAJIJFgAAQDLBAgAASCZYAAAAyQQLAAAgmWABAAAkEywAAIBkggUAAJBMsAAAAJIJFgAAQDLBAgAASCZYAAAAyQQLAAAgmWABAAAkEywAAIBkggUAAJBMsAAAAJIJFgAAQDLBAgAASCZYAAAAyQQLAAAgmWABAAAkEywAAIBkggUAAJBMsAAAAJIJFgAAQDLBAgAASCZYAAAAyQQLAAAgmWABAAAkEywAAIBkggUAAJBMsAAAAJIJFgAAQDLBAgAASCZYAAAAyQQLAAAgmWABAAAkEywAAIBkggUAAJBMsAAAAJIJFgAAQDLBAgAASCZYAAAAyQQLAAAgmWABAAAkEywAAIBkggUAAJBMsAAAAJIJFgAAQDLBAgAASCZYAAAAyQQLAAAgmWABAAAkEywAAIBkggUAAJBMsAAAAJJVy3UBFdGiRYti9OjR8e6778aHH34Y06dPj7lz58by5cujevXq0aBBgzjooIOiR48ecd5558Vee+2V65IBACCnBIsinH/++fH8888XuW79+vWxatWqmDt3brz88stx8803x3XXXRc33HBDVKniBBAAALsmwWI7GjduHAcccEC0bNky6tSpEytXroxPP/003n333Vi/fn2sWbMmbrrpppgxY0Y89NBDuS4XAAByQrAoQo8ePeK0006Lnj17xn777VdkmwULFsRVV10VQ4YMiYiIhx9+OE477bQ466yzdmSpAABQIQgWRfj5z3++3TZNmzaNxx57LBYsWBCvvvpqRETcd999ggUAALskNwUkyMvLiwsuuCA7P2HChBxWAwAAuSNYJGrSpEl2etmyZTmsBAAAckewSPTxxx9np/fdd9/cFQIAADkkWCSYO3du3HXXXdl591cAALCrEixKaOXKlfHxxx/H7373u+jYsWPMnTs3IiIOOOCAuPbaa3NcHQAA5IanQm3HW2+9Fcccc8w22/Tq1Ssee+yx2H333Us9zooVK0q1DgAAKgLBIkGDBg3i3nvvjb59+yb3VadOnTKoCAAAckOw2I7mzZvH5ZdfHhERmUwmli1bFtOmTYvx48fHl19+Gf369Yv//d//jb/+9a/Rtm3bHFcLAAC5IVhsR+vWreNPf/rTFsvnzp0b119/fQwePDhee+216NKlS4waNSoOOeSQUo2zfPnyra5buHBhtGrVqlT9AgDAjiBYlFLz5s1j0KBBUbdu3fjjH/8YX375ZfTt2zc+/PDDqFq1aon7q1279lbXrVy5MqVUAAAod54Klej222+PunXrRkTElClT4sUXX8xxRQAAsOMJFol222236Nq1a3Z+9OjROawGAAByQ7AoAw0aNMhOL168OIeVAABAbggWZWDevHnZ6YYNG+awEgAAyA3BItHi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//3fsW7durjxxht3mvFLLNfJhsrjmGOOySbjli1bZiZOnFho/cKFCzM9e/bMtmnYsGHmyy+/rPRjU3JDhgzJRERmv/32y9xxxx2ZOXPmbNFmw4YNmb/97W+F/rrUpUuXTEFBQfL4m/4FszR/nSJ3Nv3rb//+/Xf4+I41O7f169dn9txzz+zn97Of/Sy5z1zvs/yfjZ9F06ZNM6eeemrm5ptvzrzwwguZK6+8stT/J9xwww3ZbfPz8zNDhgwptH7NmjWZa665JtsmLy8vM2rUqDJ7Tbkev6QEC4rl+eefz+60NWrUyEyaNKnIdsuXL8+0bt062/a6666r1GNTOqNGjcoMGjQos379+u22ffrppwudzh0xYkTy+IJF5ZXLX9Ica3Z+m37GEZH54IMPkvsULCqOefPmFXlZ7cCBA0v1f8KCBQsytWvXzm7717/+dattN71U6aijjipN+RVu/NJw8zbF8uc//zk73b9//zj44IOLbFe7du245ZZbsvP33XdfrF+/vtKOTel07949zj///Khatep2255xxhlxxBFHZOeff/758iwNtsqxZuf30EMPZac7duwYhxxySA6roaztueeesc8++5RZfw899FCsWLEiIr65nPfiiy/eatvf/va3UaXKN79Wjx07NiZMmFDpxy8NwYLtWr58ebzyyivZ+QsuuGCb7fv06RN16tSJiIglS5bEG2+8USnHZsc5+uijs9OzZs3KXSHsshxrdn5Lly6NZ599Njvfv3//HFZDZTBs2LDs9Pnnnx95eXlbbbvPPvsUut/qmWeeqfTjl4ZgwXaNGTMm1qxZExHf/KWuc+fO22yfn58fRx11VHZ+0xuOKtPY7DibHiw3bNiQw0rYVTnW7PyefPLJWL16dUREVK9ePc4555wcV0RFtnr16nj77bez88V5TO2xxx6bnU49JuR6/NLyVCi2a8qUKdnpgw8+OKpV2/5u06lTp/jXv/61xfaVaWx2nA8//DA73aJFizLte9WqVfHcc8/FBx98EEuWLInatWtH06ZN48gjj4yOHTsWa58iN5YuXRpPPfVUTJ48Ob766quoW7duNG/ePI466qg4+OCDt/nXu5JyrNn5bXoZVK9evaJJkyZlPsaO3GcpX9OmTYuCgoKI+OaPXx07dtzuNp06dcpOpx4Tcj1+afkfle2aNm1adrply5bF2mbTaxxTvrQll2OzY8yePbvQX1bK+ovq3n333Tj99NOLXNe8efO46qqr4sorr4zq1auX6bikGz58eAwfPrzIdfvvv3/88pe/jB/96Edl8suaY83O7d///neMGTMmO19el0HtyH2W8rXpMWGPPfaI/Pz87W6z6TFhyZIlsXDhwlIH2FyPX1ouhWK7Fi9enJ1u2rRpsbbZc889s9NLliyplGOzY/zsZz/LXv60zz77xGmnnbbDxp47d25cc8010a1bt1iwYMEOG5d0//73v+Oiiy6K008/PXtzYwrHmp3bww8/nJ1u1KhRnHLKKTu8hrLeZylfqceEiNz+/pM6fmkJFmzX8uXLs9O1atUq1jabttt0+8o0NuXvoYcein/84x/Z+dtvvz1q1qxZJn03adIkLrvssnjmmWdixowZsXLlyli9enXMmDEjHnrooULX0L/99ttx2mmnxapVq8pkbNLss88+cfXVV8cLL7wQ//nPf2L16tWxYsWKmDZtWtx7772Fvszwn//8Z5xzzjnZSwZKy7Fm55XJZOLRRx/Nzp9zzjlRo0aNMh0jF/ss5Sv1mLB5H5Vt/NISLNiujTe7RUSxD8ab/nKY8staLsemfI0bNy4uvfTS7Hy/fv3K7GbKww8/PObMmRN//vOfo3fv3tGqVauoVatW1KxZM1q1ahXnnXdevPPOO3HDDTdkt3nvvffid7/7XZmMT+n17t07Zs6cGXfddVecfPLJsffee0fNmjVjt912i7Zt28aAAQPigw8+KPTUpmeffTYef/zxpHEda3Zer7/+eqGnzZX1ZVC52mcpX6nHhIjc/v6TOn5pCRZs16bX9a1du7ZY22x8ukpE8ZN2RRub8jNz5sw47bTTsgfOQw45JP7617+WWf916tTZ7oE4Ly8vbrnllkJh5ve//73vI8ix+vXrZ5/FvjU1atSIBx54II455pjssjvvvDNpXMeandemN20fdNBBcdhhh5Vp/7naZylfqceEiNz+/pM6fmkJFmzXxme1RxQ//W7abtPtK9PYlI958+bFCSecEPPnz4+IiNatW8eIESOibt26Oaln0y86+/LLLws93o+Kq0qVKjFw4MDs/EcffRRz5swpdX+ONTunlStXFrrcMpffXVHW+yzlK/WYsHkflW380hIs2K5GjRplp4t7g+vGXxojIho2bFgpx6bsLV68OE444YSYPn16REQ0a9YsRo4cGc2aNctZTW3atIl99903O++xoZVHt27dCj3NK+Wzc6zZOT399NOxbNmyiIioWrVq/OAHP8hpPWW5z1K+Uo8JEbn9/Sd1/NISLNiudu3aZac/++yzYm0ze/bs7PSmN61VprEpW19//XWceOKJMXny5IiIaNy4cYwcOTJatWqV48qiULBZtGhRDiuhJKpXrx6NGzfOzqd8do41O6dNL4P6zne+k9M/YkSU7T5L+dr0mPDFF18UuudhazY9JjRs2DDpUa+5Hr+0BAu264ADDshOf/jhh8W6Bn38+PFFbl+ZxqbsrFixInr16hXvv/9+RETUq1cvRowYEQceeGCOK/vGpo9+rF27dg4roaTK6rNzrNn5zJkzp9B35Jx//vm5K2YTjjeVQ7t27bL3zmQymZg4ceJ2tynLY0Kuxy8twYLt6tq1a/ZJAytWrIhx48Zts/2aNWsKXad+3HHHVcqxKRurV6+O008/PUaPHh0REbvttls8//zzZX4DZWmtXLmy0BcRNW/ePIfVUBIzZsyIr7/+Ojuf8tk51ux8Hn300ewjXevXr7/VL8rckcpyn6V85efnR5cuXbLzo0aN2u42r7/+enY69ZiQ6/FLS7Bgu+rUqRM9e/bMzg8ePHib7Te9prVhw4bRrVu3Sjk26datWxd9+vTJ/tWwZs2aMXz48Dj66KNzXNn/efzxx7NP0sjLy7PPVCIPPvhgdrpevXrRoUOHUvflWLPz2fQyqLPPPrtY31xc3spyn6X89e7dOzu9vWPCf/7zn3jllVeK3Layjl8qGSiGf/7zn5mIyEREpmbNmpmPPvqoyHYrVqzI7Lffftm21157baUem9Jbv3595qyzzsp+HtWqVcsMHz683MddsWJFZsOGDcVq+8knn2QaNWqUrfHEE08s5+rYlmXLlhW77ejRozP5+fnZz+6SSy5JHt+xZufxzjvvZD+fiMiMHTu2XMbJ9T5L8QwcODD7vnfv3r3Y2y1YsCBTu3bt7Lb333//Vtv269cv2+6oo44qg6pzP35pCBYU2zHHHJPdaffdd9/MBx98UGj9okWLMieccEK2TcOGDTNffvllkX3NnDmz0EF/0KBBO2xsyl9BQUGmf//+2c+jSpUqmSFDhiT3u+k+M3DgwCLbvPbaa5n27dtn7r333syCBQuKbLN+/frMI488UihU1KhRIzNx4sTkGim9QYMGZTp37px56KGHMkuXLi2yzapVqzL33HNPplatWtnPrn79+pm5c+cW2d6xZtd02WWXZT+jtm3blnj74u435bHPUvZKGywymUzmhhtuyG5bq1atzBNPPFFo/dq1azO//OUvC+0vo0aN2mafLVu2zLbt37//Dh+/PFUr8SkOdlmPP/54HHHEETFv3ryYNWtWdOjQIbp37x5t2rSJhQsXxsiRI2PlypUREVGtWrV48skno379+pV+bEruL3/5S6HLENq0aRNvvfVWvPXWW8Xa/k9/+lPS+FOnTo3LLrssfvKTn8R+++0X3/rWt6Jhw4ZRpUqVmD9/fowdO7bQ01iqVq0aDz/8cBx66KFJ45Luvffei/79+0e1atWiffv20b59+2jQoEFs2LAhPv/88xg7dmyha9Rr1aoVw4cPL7On/TjWVH5r166NoUOHZufL+7srcr3PUlivXr1i7ty5hZZt+hjWcePGFXkJ2gsvvFDkPS833HBDjB49Ol599dVYtWpVnH322fHrX/86OnXqFKtXr4433ngj5s2bl21/8803R/fu3cvs9eR6/BLLWaShUpoyZUqmQ4cOhZLx5j9NmjTJ/POf/9xmPyX9K2JZjk352/SvQ6X52ZpN22zrjEVJxmrXrl1m9OjR5fROUBKDBg0q0Wd3xBFHZD7++ONt9ulYs+v5xz/+Uehs6X/+858S91GSMxZlvc+SZtOzASX5mTlz5lb7XLp0aeb73//+NrevXr165rbbbitxjds7Y1Ee45cnZywokfbt28c777wTQ4cOjSFDhsTkyZNjwYIFUb9+/WjdunWceeaZccEFFxR6TvfOMDaVxzHHHBPjxo2LsWPHxpgxY2LatGmxePHiWLx4caxZsybq1asXLVq0iCOPPDJOP/30OOmkkyIvLy/XZRMR/fr1i7Zt28aYMWPi7bffjunTp8eiRYti8eLFUVBQEPXq1YtWrVpFly5d4qyzzopvf/vb5VKHY03ltunZ0uOOOy723nvvchurouyzlK969erFE088ET/+8Y/joYceirFjx8a8efOievXq0aJFizjxxBPjwgsvLLdHvOZ6/JLIy2QymVwXAQAAVG4eNwsAACQTLAAAgGSCBQAAkEywAAAAkgkWAABAMsECAABIJlgAAADJBAsAACCZYAEAACQTLAAAgGSCBQAAkEywAAAAkgkWAABAMsECAABIJlgAQAnNmjUr8vLy4vzzz6/UY5TU9ddfH3l5eTFmzJhclwJUQIIFQAWw8ZfIbf0sXbo012Wyi5swYUJUqVIlOnTokOtSgAqoWq4LAOD/tGnTJn74wx8WuS4/P38HV8PW7LXXXjFlypSoV69erkvZoSZMmBDt2rWL3XbbLdelABWQYAFQgey3335x00035boMtqN69erRvn37XJexQ82bNy/mz58fPXv2zHUpQAXlUiiASmbUqFGRl5cXN910U4wZMya+853vRP369SMvL69QuzfeeCNOO+20aNy4cdSsWTP233//+NWvfhUrV67cos8NGzbEnXfeGfvtt1/k5+fHfvvtF7fffnvMmDFji+v8Bw8eHHl5eTF48OBt1ra54tazaR/jxo2LE044IXbfffeoV69enHHGGTFr1qytvjdvvPFG9O7dO5o2bRo1a9aMFi1axJlnnhlvvfVWRESMHDky8vLy4rLLLity++nTp0eVKlXixBNP3OoYEVu//6E0tW/tvS8oKNjm69zee5nJZKJXr16Rl5cXTzzxRKHtM5lMnHzyyUWu25oJEyZERESnTp0KLZ86dWp861vfijp16sTQoUOL1RewcxIsACqpMWPGRI8ePSIvLy8uvvjiOPvss7Pr/vKXv0SPHj1i9OjRccopp8QVV1wRe++9d9x2221xwgknxNq1awv1dfHFF8e1114bBQUFcfnll8eJJ54Yv//97+PKK68sk1pLWk9ExHvvvRfdunWLGjVqxCWXXBKHH354DBs2LI4//vhYvXr1Fu3vueee6NGjR/zrX/+KE044Ia6++uo47rjj4oMPPoi///3vERHRs2fPaNOmTTz++ONFBqwHHnggMplM/PjHP056vSWpvaTvfXHfy7y8vBg0aFDssccecckll8Rnn32W7ePuu++OESNGxPnnn19ov9mWooLFE088EZ07d45169bF22+/HX379i3R+wTsZDIA5NzMmTMzEZFp06ZNZuDAgVv8jB07Ntv2tddey0REJiIyDz744BZ9TZ48OVOtWrXMoYcemlm0aFGhdbfffnsmIjJ33XXXFv0deuihmeXLl2eXz5kzJ9O4ceNMRGT69++fXT5o0KBMRGQGDRq0xdgb+xo4cGByPRGRGTp0aKH25557biYiMkOGDCm0fOLEiZkqVapkmjdvnpk5c2ahdQUFBZnPP/88O3/nnXdmIiIzePDgQu3WrVuXadasWWaPPfbIrF27dovXtqmNn9em70tpai/pe1/S9zKTyWRefPHFTF5eXqZr166Z9evXZyZMmJCpUaNGZv/9988sW7Zsm69zU2eeeWYmLy8vs3Tp0szatWsz//Vf/5WJiMzpp5+eWbp0abH7AXZeggVABbDxF9Wt/fzhD3/Itt34y2inTp2K7OuKK67IRETmjTfe2GLdhg0bMk2aNMkcdthh2WUXXHBBJiIy//jHP7Zof+uttyYHi5LWs7GPbt26bbX/n/3sZ4WWDxgwYKtBa3NffPFFpkaNGplvf/vbhZYPGzYsExGZa665Zrt9bC9YFLf2kr73JX0vN/rpT3+aiYjMz3/+80z79u0z1atXz4wbN267r3NTrVq1yrRp0yYze/bsTJcuXTJVqlTJ3HrrrZmCgoIS9QPsvNy8DVCBnHjiiTFixIhite3cuXORy99+++2IiHjppZfilVde2WJ99erVY+rUqdn5Dz74ICIijjnmmC3aFrWspEpaz0aHHXbYFsv23nvviIgtHr377rvvRkTEd77zne3W06RJkzjzzDNj6NChMXXq1OxN2A888EBERFx00UXb7WN7ilt7Sd/70r6Xd9xxR4waNSruuuuuiIi48847i6xxa5YuXRozZ86MNm3aRKdOnaKgoCBeeOGF7d6LAuxaBAuASqpp06ZFLl+yZElERNx2223F6uerr76KKlWqROPGjYs9RkmUtJ6N6tatu8WyatW++W9rw4YNhZZ/9dVXkZeXF82aNStW35dcckkMHTo0Hnjggbjrrrti7ty58eKLL0b37t2jbdu2JaozpfaSvvelfS9r1qwZJ598ckycODHy8/NLHJ423l/x5ZdfxpIlS+KGG24QKoAtuHkboJLa/ClQG238pfbrr7+OzDeXvBb5s1G9evWioKAgFi1atEVfCxYs2GJZlSrf/Nexfv36LdZ99dVXyfWURv369SOTycS8efOK1b5Hjx7Rvn37ePjhh2Pt2rUxaNCg2LBhQ/JN2yVV0ve+tO/lO++8E//zP/8TjRo1itWrV8eAAQNKVOfGYPHAAw/EUUcdFb/5zW/i+eefL1EfwM5PsADYyRx55JER8X+XzWzPoYceGhERb7755hbrilrWoEGDiIj4/PPPt1i38RfQlHpK44gjjoiIiJdffrnY21x88cWxcOHCGDZsWDz44IPRoEGD6NOnT3mVWKSSvveleS+XLVsW55xzTlSrVi1GjRoVffr0iSeffDIefPDBYvex8XPt0qVLDBs2LFq0aBF9+/bNXsoFECFYAOx0LrvssqhWrVr813/9V8yePXuL9UuXLi0UAM4999yIiLjllltixYoV2eWff/553HPPPVtsf9hhh0VeXl4MHTq00KNT//3vfxfZvqT1lMall14aVatWjV/96leFHqsa8c13NsydO3eLbfr37x/5+flx1VVXxYwZM+Lcc8/d4d9uXtL3vjTv5WWXXRYzZsyIu+66Kw466KC4//77o0WLFnHFFVfEJ598Uqw6x48fH02bNo1mzZrFHnvsEc8991xUqVIlTj311CLfW2DXJFgA7GQOOuiguPfee+PTTz+Ndu3aRZ8+feIXv/hFDBgwIE488cTYc88947777su2P/bYY+OCCy6IDz74IA4++OC4+uqr4yc/+Ul06NAhunTpskX/zZs3j379+sXUqVPjsMMOi6uvvjrOPffc6NixY5HfylzSekrj4IMPjrvvvjvmzZsX3/rWt+KHP/xhXH/99XHhhRdG27Zt47e//e0W2zRs2DC+973vZX8x3tGXQUWU/L0v6Xv56KOPxqOPPhqnnXZaXH755RHxzRmnRx99NFatWhXnnHNOrFu3bps1rlq1KqZNmxYdOnQoVMfQoUNj3rx5cdpppxX5nSDALmgHPoEKgK3Y+PjSE088cbtti3qka1HefffdTN++fTPNmzfPVK9ePdO4ceNMp06dMtdee21mypQphdquX78+c/vtt2dat26dqVGjRqZ169aZ3/zmN5lPP/20yMeqrly5MnPFFVdkmjZtmqlZs2bmkEMOyTz22GPbrK249Wyrj6095nXTbU899dRMw4YNMzVq1MjsvffemT59+mRGjx5dZPuRI0dmIiLTpUuXbb6Xxa2jNLWX9L3PZIr3Xs6YMSNTt27dTLNmzTILFy7coo/rr78++wjabXn77bczEZH55S9/ucW6//f//l8mIjLf/e53Mxs2bNhmP8DOLy+TSbxjDoCd1qxZs6JVq1bRv3//GDx4cK7LKXN33XVXXHPNNfG3v/0tfvSjH+W6HIBKzaVQAOySVq9eHX/605+iQYMG0bdv31yXA1Dp+R4LAHYpb731Vrz++uvx0ksvxWeffRa333577LbbbrkuC6DSEywA2KWMHDkybr755mjcuHFcddVV8fOf/zzXJQHsFNxjAQAAJHOPBQAAkEywAAAAkgkWAABAMsECAABIJlgAAADJBAsAACCZYAEAACQTLAAAgGSCBQAAkEywAAAAkgkWAABAsv8PXM09cPzon9MAAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", @@ -822,15 +766,18 @@ "\n", "plt.tight_layout()\n", "fig2.savefig(\"template_fft_bar.pdf\", bbox_inches=\"tight\")" - ] + ], + "execution_count": null, + "outputs": [], + "id": "e333d1ab-1501-434f-86d2-82c10bb58f11" }, { "cell_type": "code", - "execution_count": null, - "id": "4ecb1adb-66ed-44a1-9b6a-ef5dcc6dbe11", "metadata": {}, + "source": [], + "execution_count": null, "outputs": [], - "source": [] + "id": "4ecb1adb-66ed-44a1-9b6a-ef5dcc6dbe11" } ], "metadata": { @@ -854,4 +801,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} +} \ No newline at end of file diff --git a/notebooks/dihedral.ipynb b/notebooks/dihedral.ipynb index e120f44..f6a7bca 100644 --- a/notebooks/dihedral.ipynb +++ b/notebooks/dihedral.ipynb @@ -41,7 +41,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "id": "f19bd1ad-9e8f-4720-b317-afe13fafae88", "metadata": {}, "outputs": [], @@ -105,7 +105,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "id": "2cf22b7d-49e7-445b-8742-2e75cd1fa55a", "metadata": {}, "outputs": [], @@ -180,7 +180,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "id": "1035f81c-e877-4655-8640-4e4c3d323af8", "metadata": {}, "outputs": [], @@ -276,7 +276,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "id": "014e2d10-9550-4fd4-adb7-168a27fda1b3", "metadata": {}, "outputs": [], @@ -312,7 +312,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "id": "20989d96-f34f-4be7-a0f9-4b92fb7f235a", "metadata": {}, "outputs": [], @@ -378,320123 +378,10 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "id": "bcd15c5a-5745-41ba-b015-48e403160c7e", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Initialized U with shape torch.Size([18, 10])\n", - "Initialized V with shape torch.Size([18, 10])\n", - "Initialized W with shape torch.Size([18, 10])\n", - "Starting training loop...\n", - "Model set to train mode.\n", - "Epoch 1 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 1: avg_loss appended (2.5625)\n", - "Epoch 1: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=44, total=400)\n", - "Final test accuracy: 11.00%\n", - "Epoch 1: accuracy appended (11.00%)\n", - "Epoch 1: model set back to train mode\n", - "Epoch 1: model parameters saved\n", - "Epoch 2 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 2: avg_loss appended (2.5625)\n", - "Epoch 2: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=44, total=400)\n", - "Final test accuracy: 11.00%\n", - "Epoch 2: accuracy appended (11.00%)\n", - "Epoch 2: model set back to train mode\n", - "Epoch 2: model parameters saved\n", - "Epoch 3 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 3: avg_loss appended (2.5625)\n", - "Epoch 3: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=44, total=400)\n", - "Final test accuracy: 11.00%\n", - "Epoch 3: accuracy appended (11.00%)\n", - "Epoch 3: model set back to train mode\n", - "Epoch 3: model parameters saved\n", - "Epoch 4 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 4: avg_loss appended (2.5625)\n", - "Epoch 4: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=44, total=400)\n", - "Final test accuracy: 11.00%\n", - "Epoch 4: accuracy appended (11.00%)\n", - "Epoch 4: model set back to train mode\n", - "Epoch 4: model parameters saved\n", - "Epoch 5 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 5: avg_loss appended (2.5625)\n", - "Epoch 5: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=44, total=400)\n", - "Final test accuracy: 11.00%\n", - "Epoch 5: accuracy appended (11.00%)\n", - "Epoch 5: model set back to train mode\n", - "Epoch 5: model parameters saved\n", - "Epoch 6 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 6: avg_loss appended (2.5625)\n", - "Epoch 6: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=44, total=400)\n", - "Final test accuracy: 11.00%\n", - "Epoch 6: accuracy appended (11.00%)\n", - "Epoch 6: model set back to train mode\n", - "Epoch 6: model parameters saved\n", - "Epoch 7 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 7: avg_loss appended (2.5625)\n", - "Epoch 7: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=44, total=400)\n", - "Final test accuracy: 11.00%\n", - "Epoch 7: accuracy appended (11.00%)\n", - "Epoch 7: model set back to train mode\n", - "Epoch 7: model parameters saved\n", - "Epoch 8 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 8: avg_loss appended (2.5625)\n", - "Epoch 8: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=44, total=400)\n", - "Final test accuracy: 11.00%\n", - "Epoch 8: accuracy appended (11.00%)\n", - "Epoch 8: model set back to train mode\n", - "Epoch 8: model parameters saved\n", - "Epoch 9 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 9: avg_loss appended (2.5625)\n", - "Epoch 9: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=44, total=400)\n", - "Final test accuracy: 11.00%\n", - "Epoch 9: accuracy appended (11.00%)\n", - "Epoch 9: model set back to train mode\n", - "Epoch 9: model parameters saved\n", - "Epoch 10 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 10: avg_loss appended (2.5625)\n", - "Epoch 10: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 10: accuracy appended (12.00%)\n", - "Epoch 10: model set back to train mode\n", - "Epoch 10: model parameters saved\n", - "Epoch 11 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 11: avg_loss appended (2.5625)\n", - "Epoch 11: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 11: accuracy appended (12.00%)\n", - "Epoch 11: model set back to train mode\n", - "Epoch 11: model parameters saved\n", - "Epoch 12 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 12: avg_loss appended (2.5625)\n", - "Epoch 12: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 12: accuracy appended (12.00%)\n", - "Epoch 12: model set back to train mode\n", - "Epoch 12: model parameters saved\n", - "Epoch 13 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 13: avg_loss appended (2.5625)\n", - "Epoch 13: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 13: accuracy appended (12.00%)\n", - "Epoch 13: model set back to train mode\n", - "Epoch 13: model parameters saved\n", - "Epoch 14 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 14: avg_loss appended (2.5625)\n", - "Epoch 14: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 14: accuracy appended (12.00%)\n", - "Epoch 14: model set back to train mode\n", - "Epoch 14: model parameters saved\n", - "Epoch 15 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 15: avg_loss appended (2.5625)\n", - "Epoch 15: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 15: accuracy appended (12.00%)\n", - "Epoch 15: model set back to train mode\n", - "Epoch 15: model parameters saved\n", - "Epoch 16 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 16: avg_loss appended (2.5625)\n", - "Epoch 16: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 16: accuracy appended (12.00%)\n", - "Epoch 16: model set back to train mode\n", - "Epoch 16: model parameters saved\n", - "Epoch 17 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 17: avg_loss appended (2.5625)\n", - "Epoch 17: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 17: accuracy appended (12.00%)\n", - "Epoch 17: model set back to train mode\n", - "Epoch 17: model parameters saved\n", - "Epoch 18 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 18: avg_loss appended (2.5625)\n", - "Epoch 18: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 18: accuracy appended (12.00%)\n", - "Epoch 18: model set back to train mode\n", - "Epoch 18: model parameters saved\n", - "Epoch 19 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 19: avg_loss appended (2.5625)\n", - "Epoch 19: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 19: accuracy appended (12.00%)\n", - "Epoch 19: model set back to train mode\n", - "Epoch 19: model parameters saved\n", - "Epoch 20 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 20: avg_loss appended (2.5625)\n", - "Epoch 20: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 20: accuracy appended (12.00%)\n", - "Epoch 20: model set back to train mode\n", - "Epoch 20: model parameters saved\n", - "Epoch 21 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 21: avg_loss appended (2.5625)\n", - "Epoch 21: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 21: accuracy appended (12.00%)\n", - "Epoch 21: model set back to train mode\n", - "Epoch 21: model parameters saved\n", - "Epoch 22 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 22: avg_loss appended (2.5625)\n", - "Epoch 22: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 22: accuracy appended (13.00%)\n", - "Epoch 22: model set back to train mode\n", - "Epoch 22: model parameters saved\n", - "Epoch 23 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 23: avg_loss appended (2.5625)\n", - "Epoch 23: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 23: accuracy appended (13.00%)\n", - "Epoch 23: model set back to train mode\n", - "Epoch 23: model parameters saved\n", - "Epoch 24 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 24: avg_loss appended (2.5625)\n", - "Epoch 24: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 24: accuracy appended (13.00%)\n", - "Epoch 24: model set back to train mode\n", - "Epoch 24: model parameters saved\n", - "Epoch 25 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 25: avg_loss appended (2.5625)\n", - "Epoch 25: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 25: accuracy appended (13.00%)\n", - "Epoch 25: model set back to train mode\n", - "Epoch 25: model parameters saved\n", - "Epoch 26 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 26: avg_loss appended (2.5625)\n", - "Epoch 26: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 26: accuracy appended (13.00%)\n", - "Epoch 26: model set back to train mode\n", - "Epoch 26: model parameters saved\n", - "Epoch 27 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 27: avg_loss appended (2.5625)\n", - "Epoch 27: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 27: accuracy appended (12.00%)\n", - "Epoch 27: model set back to train mode\n", - "Epoch 27: model parameters saved\n", - "Epoch 28 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 28: avg_loss appended (2.5625)\n", - "Epoch 28: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 28: accuracy appended (12.00%)\n", - "Epoch 28: model set back to train mode\n", - "Epoch 28: model parameters saved\n", - "Epoch 29 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 29: avg_loss appended (2.5625)\n", - "Epoch 29: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 29: accuracy appended (12.00%)\n", - "Epoch 29: model set back to train mode\n", - "Epoch 29: model parameters saved\n", - "Epoch 30 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 30: avg_loss appended (2.5625)\n", - "Epoch 30: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 30: accuracy appended (12.00%)\n", - "Epoch 30: model set back to train mode\n", - "Epoch 30: model parameters saved\n", - "Epoch 31 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 31: avg_loss appended (2.5625)\n", - "Epoch 31: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 31: accuracy appended (12.00%)\n", - "Epoch 31: model set back to train mode\n", - "Epoch 31: model parameters saved\n", - "Epoch 32 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 32: avg_loss appended (2.5625)\n", - "Epoch 32: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 32: accuracy appended (12.00%)\n", - "Epoch 32: model set back to train mode\n", - "Epoch 32: model parameters saved\n", - "Epoch 33 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 33: avg_loss appended (2.5625)\n", - "Epoch 33: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 33: accuracy appended (12.00%)\n", - "Epoch 33: model set back to train mode\n", - "Epoch 33: model parameters saved\n", - "Epoch 34 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 34: avg_loss appended (2.5625)\n", - "Epoch 34: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 34: accuracy appended (12.00%)\n", - "Epoch 34: model set back to train mode\n", - "Epoch 34: model parameters saved\n", - "Epoch 35 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 35: avg_loss appended (2.5625)\n", - "Epoch 35: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 35: accuracy appended (12.00%)\n", - "Epoch 35: model set back to train mode\n", - "Epoch 35: model parameters saved\n", - "Epoch 36 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 36: avg_loss appended (2.5625)\n", - "Epoch 36: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 36: accuracy appended (12.00%)\n", - "Epoch 36: model set back to train mode\n", - "Epoch 36: model parameters saved\n", - "Epoch 37 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 37: avg_loss appended (2.5625)\n", - "Epoch 37: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 37: accuracy appended (12.00%)\n", - "Epoch 37: model set back to train mode\n", - "Epoch 37: model parameters saved\n", - "Epoch 38 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 38: avg_loss appended (2.5625)\n", - "Epoch 38: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 38: accuracy appended (12.00%)\n", - "Epoch 38: model set back to train mode\n", - "Epoch 38: model parameters saved\n", - "Epoch 39 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 39: avg_loss appended (2.5625)\n", - "Epoch 39: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 39: accuracy appended (12.00%)\n", - "Epoch 39: model set back to train mode\n", - "Epoch 39: model parameters saved\n", - "Epoch 40 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 40: avg_loss appended (2.5625)\n", - "Epoch 40: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 40: accuracy appended (12.00%)\n", - "Epoch 40: model set back to train mode\n", - "Epoch 40: model parameters saved\n", - "Epoch 41 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 41: avg_loss appended (2.5625)\n", - "Epoch 41: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 41: accuracy appended (12.00%)\n", - "Epoch 41: model set back to train mode\n", - "Epoch 41: model parameters saved\n", - "Epoch 42 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 42: avg_loss appended (2.5625)\n", - "Epoch 42: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 42: accuracy appended (12.00%)\n", - "Epoch 42: model set back to train mode\n", - "Epoch 42: model parameters saved\n", - "Epoch 43 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 43: avg_loss appended (2.5625)\n", - "Epoch 43: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 43: accuracy appended (12.00%)\n", - "Epoch 43: model set back to train mode\n", - "Epoch 43: model parameters saved\n", - "Epoch 44 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 44: avg_loss appended (2.5625)\n", - "Epoch 44: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 44: accuracy appended (12.00%)\n", - "Epoch 44: model set back to train mode\n", - "Epoch 44: model parameters saved\n", - "Epoch 45 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 45: avg_loss appended (2.5625)\n", - "Epoch 45: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 45: accuracy appended (12.00%)\n", - "Epoch 45: model set back to train mode\n", - "Epoch 45: model parameters saved\n", - "Epoch 46 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 46: avg_loss appended (2.5625)\n", - "Epoch 46: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 46: accuracy appended (12.00%)\n", - "Epoch 46: model set back to train mode\n", - "Epoch 46: model parameters saved\n", - "Epoch 47 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 47: avg_loss appended (2.5625)\n", - "Epoch 47: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 47: accuracy appended (12.00%)\n", - "Epoch 47: model set back to train mode\n", - "Epoch 47: model parameters saved\n", - "Epoch 48 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 48: avg_loss appended (2.5625)\n", - "Epoch 48: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 48: accuracy appended (12.00%)\n", - "Epoch 48: model set back to train mode\n", - "Epoch 48: model parameters saved\n", - "Epoch 49 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 49: avg_loss appended (2.5625)\n", - "Epoch 49: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 49: accuracy appended (12.00%)\n", - "Epoch 49: model set back to train mode\n", - "Epoch 49: model parameters saved\n", - "Epoch 50 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 50: avg_loss appended (2.5625)\n", - "Epoch 50: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 50: accuracy appended (12.00%)\n", - "Epoch 50: model set back to train mode\n", - "Epoch 50: model parameters saved\n", - "Epoch 51 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 51: avg_loss appended (2.5625)\n", - "Epoch 51: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 51: accuracy appended (12.00%)\n", - "Epoch 51: model set back to train mode\n", - "Epoch 51: model parameters saved\n", - "Epoch 52 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 52: avg_loss appended (2.5625)\n", - "Epoch 52: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 52: accuracy appended (12.00%)\n", - "Epoch 52: model set back to train mode\n", - "Epoch 52: model parameters saved\n", - "Epoch 53 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 53: avg_loss appended (2.5625)\n", - "Epoch 53: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 53: accuracy appended (12.00%)\n", - "Epoch 53: model set back to train mode\n", - "Epoch 53: model parameters saved\n", - "Epoch 54 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 54: avg_loss appended (2.5625)\n", - "Epoch 54: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 54: accuracy appended (12.00%)\n", - "Epoch 54: model set back to train mode\n", - "Epoch 54: model parameters saved\n", - "Epoch 55 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 55: avg_loss appended (2.5625)\n", - "Epoch 55: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 55: accuracy appended (12.00%)\n", - "Epoch 55: model set back to train mode\n", - "Epoch 55: model parameters saved\n", - "Epoch 56 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 56: avg_loss appended (2.5625)\n", - "Epoch 56: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 56: accuracy appended (12.00%)\n", - "Epoch 56: model set back to train mode\n", - "Epoch 56: model parameters saved\n", - "Epoch 57 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 57: avg_loss appended (2.5625)\n", - "Epoch 57: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 57: accuracy appended (13.00%)\n", - "Epoch 57: model set back to train mode\n", - "Epoch 57: model parameters saved\n", - "Epoch 58 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 58: avg_loss appended (2.5625)\n", - "Epoch 58: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 58: accuracy appended (13.00%)\n", - "Epoch 58: model set back to train mode\n", - "Epoch 58: model parameters saved\n", - "Epoch 59 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 59: avg_loss appended (2.5625)\n", - "Epoch 59: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 59: accuracy appended (13.00%)\n", - "Epoch 59: model set back to train mode\n", - "Epoch 59: model parameters saved\n", - "Epoch 60 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 60: avg_loss appended (2.5625)\n", - "Epoch 60: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 60: accuracy appended (13.00%)\n", - "Epoch 60: model set back to train mode\n", - "Epoch 60: model parameters saved\n", - "Epoch 61 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 61: avg_loss appended (2.5625)\n", - "Epoch 61: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 61: accuracy appended (13.00%)\n", - "Epoch 61: model set back to train mode\n", - "Epoch 61: model parameters saved\n", - "Epoch 62 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 62: avg_loss appended (2.5625)\n", - "Epoch 62: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 62: accuracy appended (13.00%)\n", - "Epoch 62: model set back to train mode\n", - "Epoch 62: model parameters saved\n", - "Epoch 63 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 63: avg_loss appended (2.5625)\n", - "Epoch 63: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 63: accuracy appended (13.00%)\n", - "Epoch 63: model set back to train mode\n", - "Epoch 63: model parameters saved\n", - "Epoch 64 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 64: avg_loss appended (2.5625)\n", - "Epoch 64: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 64: accuracy appended (13.00%)\n", - "Epoch 64: model set back to train mode\n", - "Epoch 64: model parameters saved\n", - "Epoch 65 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 65: avg_loss appended (2.5625)\n", - "Epoch 65: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 65: accuracy appended (13.00%)\n", - "Epoch 65: model set back to train mode\n", - "Epoch 65: model parameters saved\n", - "Epoch 66 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 66: avg_loss appended (2.5625)\n", - "Epoch 66: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 66: accuracy appended (13.00%)\n", - "Epoch 66: model set back to train mode\n", - "Epoch 66: model parameters saved\n", - "Epoch 67 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 67: avg_loss appended (2.5625)\n", - "Epoch 67: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 67: accuracy appended (13.00%)\n", - "Epoch 67: model set back to train mode\n", - "Epoch 67: model parameters saved\n", - "Epoch 68 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 68: avg_loss appended (2.5625)\n", - "Epoch 68: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 68: accuracy appended (13.00%)\n", - "Epoch 68: model set back to train mode\n", - "Epoch 68: model parameters saved\n", - "Epoch 69 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 69: avg_loss appended (2.5625)\n", - "Epoch 69: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 69: accuracy appended (13.00%)\n", - "Epoch 69: model set back to train mode\n", - "Epoch 69: model parameters saved\n", - "Epoch 70 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 70: avg_loss appended (2.5625)\n", - "Epoch 70: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 70: accuracy appended (13.00%)\n", - "Epoch 70: model set back to train mode\n", - "Epoch 70: model parameters saved\n", - "Epoch 71 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 71: avg_loss appended (2.5625)\n", - "Epoch 71: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 71: accuracy appended (13.00%)\n", - "Epoch 71: model set back to train mode\n", - "Epoch 71: model parameters saved\n", - "Epoch 72 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 72: avg_loss appended (2.5625)\n", - "Epoch 72: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 72: accuracy appended (13.00%)\n", - "Epoch 72: model set back to train mode\n", - "Epoch 72: model parameters saved\n", - "Epoch 73 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 73: avg_loss appended (2.5625)\n", - "Epoch 73: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 73: accuracy appended (13.00%)\n", - "Epoch 73: model set back to train mode\n", - "Epoch 73: model parameters saved\n", - "Epoch 74 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 74: avg_loss appended (2.5625)\n", - "Epoch 74: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 74: accuracy appended (13.00%)\n", - "Epoch 74: model set back to train mode\n", - "Epoch 74: model parameters saved\n", - "Epoch 75 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 75: avg_loss appended (2.5625)\n", - "Epoch 75: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 75: accuracy appended (13.00%)\n", - "Epoch 75: model set back to train mode\n", - "Epoch 75: model parameters saved\n", - "Epoch 76 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 76: avg_loss appended (2.5625)\n", - "Epoch 76: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 76: accuracy appended (13.00%)\n", - "Epoch 76: model set back to train mode\n", - "Epoch 76: model parameters saved\n", - "Epoch 77 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 77: avg_loss appended (2.5625)\n", - "Epoch 77: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 77: accuracy appended (13.00%)\n", - "Epoch 77: model set back to train mode\n", - "Epoch 77: model parameters saved\n", - "Epoch 78 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 78: avg_loss appended (2.5625)\n", - "Epoch 78: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 78: accuracy appended (13.00%)\n", - "Epoch 78: model set back to train mode\n", - "Epoch 78: model parameters saved\n", - "Epoch 79 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 79: avg_loss appended (2.5625)\n", - "Epoch 79: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 79: accuracy appended (13.00%)\n", - "Epoch 79: model set back to train mode\n", - "Epoch 79: model parameters saved\n", - "Epoch 80 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 80: avg_loss appended (2.5625)\n", - "Epoch 80: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 80: accuracy appended (13.00%)\n", - "Epoch 80: model set back to train mode\n", - "Epoch 80: model parameters saved\n", - "Epoch 81 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 81: avg_loss appended (2.5625)\n", - "Epoch 81: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 81: accuracy appended (13.00%)\n", - "Epoch 81: model set back to train mode\n", - "Epoch 81: model parameters saved\n", - "Epoch 82 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 82: avg_loss appended (2.5625)\n", - "Epoch 82: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 82: accuracy appended (13.00%)\n", - "Epoch 82: model set back to train mode\n", - "Epoch 82: model parameters saved\n", - "Epoch 83 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 83: avg_loss appended (2.5625)\n", - "Epoch 83: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 83: accuracy appended (13.00%)\n", - "Epoch 83: model set back to train mode\n", - "Epoch 83: model parameters saved\n", - "Epoch 84 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 84: avg_loss appended (2.5625)\n", - "Epoch 84: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 84: accuracy appended (13.00%)\n", - "Epoch 84: model set back to train mode\n", - "Epoch 84: model parameters saved\n", - "Epoch 85 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 85: avg_loss appended (2.5625)\n", - "Epoch 85: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 85: accuracy appended (13.00%)\n", - "Epoch 85: model set back to train mode\n", - "Epoch 85: model parameters saved\n", - "Epoch 86 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 86: avg_loss appended (2.5625)\n", - "Epoch 86: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 86: accuracy appended (13.00%)\n", - "Epoch 86: model set back to train mode\n", - "Epoch 86: model parameters saved\n", - "Epoch 87 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 87: avg_loss appended (2.5625)\n", - "Epoch 87: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 87: accuracy appended (13.00%)\n", - "Epoch 87: model set back to train mode\n", - "Epoch 87: model parameters saved\n", - "Epoch 88 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 88: avg_loss appended (2.5625)\n", - "Epoch 88: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 88: accuracy appended (13.00%)\n", - "Epoch 88: model set back to train mode\n", - "Epoch 88: model parameters saved\n", - "Epoch 89 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 89: avg_loss appended (2.5625)\n", - "Epoch 89: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 89: accuracy appended (13.00%)\n", - "Epoch 89: model set back to train mode\n", - "Epoch 89: model parameters saved\n", - "Epoch 90 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 90: avg_loss appended (2.5625)\n", - "Epoch 90: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 90: accuracy appended (13.00%)\n", - "Epoch 90: model set back to train mode\n", - "Epoch 90: model parameters saved\n", - "Epoch 91 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 91: avg_loss appended (2.5625)\n", - "Epoch 91: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 91: accuracy appended (13.00%)\n", - "Epoch 91: model set back to train mode\n", - "Epoch 91: model parameters saved\n", - "Epoch 92 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 92: avg_loss appended (2.5625)\n", - "Epoch 92: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 92: accuracy appended (13.00%)\n", - "Epoch 92: model set back to train mode\n", - "Epoch 92: model parameters saved\n", - "Epoch 93 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 93: avg_loss appended (2.5625)\n", - "Epoch 93: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 93: accuracy appended (13.00%)\n", - "Epoch 93: model set back to train mode\n", - "Epoch 93: model parameters saved\n", - "Epoch 94 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 94: avg_loss appended (2.5625)\n", - "Epoch 94: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 94: accuracy appended (13.00%)\n", - "Epoch 94: model set back to train mode\n", - "Epoch 94: model parameters saved\n", - "Epoch 95 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 95: avg_loss appended (2.5625)\n", - "Epoch 95: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 95: accuracy appended (13.00%)\n", - "Epoch 95: model set back to train mode\n", - "Epoch 95: model parameters saved\n", - "Epoch 96 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 96: avg_loss appended (2.5625)\n", - "Epoch 96: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 96: accuracy appended (13.00%)\n", - "Epoch 96: model set back to train mode\n", - "Epoch 96: model parameters saved\n", - "Epoch 97 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 97: avg_loss appended (2.5625)\n", - "Epoch 97: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 97: accuracy appended (13.00%)\n", - "Epoch 97: model set back to train mode\n", - "Epoch 97: model parameters saved\n", - "Epoch 98 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 98: avg_loss appended (2.5625)\n", - "Epoch 98: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 98: accuracy appended (13.00%)\n", - "Epoch 98: model set back to train mode\n", - "Epoch 98: model parameters saved\n", - "Epoch 99 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 99: avg_loss appended (2.5625)\n", - "Epoch 99: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 99: accuracy appended (12.00%)\n", - "Epoch 99: model set back to train mode\n", - "Epoch 99: model parameters saved\n", - "Epoch 100 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 100: avg_loss appended (2.5625)\n", - "Epoch 100: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 100: accuracy appended (12.00%)\n", - "Epoch 100: model set back to train mode\n", - "Epoch 100: model parameters saved\n", - "Epoch 100/10000, Loss: 2.5625, Accuracy: 12.00%\n", - "Epoch 101 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 101: avg_loss appended (2.5625)\n", - "Epoch 101: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 101: accuracy appended (12.00%)\n", - "Epoch 101: model set back to train mode\n", - "Epoch 101: model parameters saved\n", - "Epoch 102 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 102: avg_loss appended (2.5625)\n", - "Epoch 102: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 102: accuracy appended (12.00%)\n", - "Epoch 102: model set back to train mode\n", - "Epoch 102: model parameters saved\n", - "Epoch 103 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 103: avg_loss appended (2.5625)\n", - "Epoch 103: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 103: accuracy appended (12.00%)\n", - "Epoch 103: model set back to train mode\n", - "Epoch 103: model parameters saved\n", - "Epoch 104 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 104: avg_loss appended (2.5625)\n", - "Epoch 104: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 104: accuracy appended (12.00%)\n", - "Epoch 104: model set back to train mode\n", - "Epoch 104: model parameters saved\n", - "Epoch 105 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 105: avg_loss appended (2.5625)\n", - "Epoch 105: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 105: accuracy appended (12.00%)\n", - "Epoch 105: model set back to train mode\n", - "Epoch 105: model parameters saved\n", - "Epoch 106 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 106: avg_loss appended (2.5625)\n", - "Epoch 106: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 106: accuracy appended (12.00%)\n", - "Epoch 106: model set back to train mode\n", - "Epoch 106: model parameters saved\n", - "Epoch 107 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 107: avg_loss appended (2.5625)\n", - "Epoch 107: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 107: accuracy appended (12.00%)\n", - "Epoch 107: model set back to train mode\n", - "Epoch 107: model parameters saved\n", - "Epoch 108 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 108: avg_loss appended (2.5625)\n", - "Epoch 108: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 108: accuracy appended (12.00%)\n", - "Epoch 108: model set back to train mode\n", - "Epoch 108: model parameters saved\n", - "Epoch 109 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 109: avg_loss appended (2.5625)\n", - "Epoch 109: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 109: accuracy appended (12.00%)\n", - "Epoch 109: model set back to train mode\n", - "Epoch 109: model parameters saved\n", - "Epoch 110 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 110: avg_loss appended (2.5625)\n", - "Epoch 110: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 110: accuracy appended (12.00%)\n", - "Epoch 110: model set back to train mode\n", - "Epoch 110: model parameters saved\n", - "Epoch 111 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 111: avg_loss appended (2.5625)\n", - "Epoch 111: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 111: accuracy appended (12.00%)\n", - "Epoch 111: model set back to train mode\n", - "Epoch 111: model parameters saved\n", - "Epoch 112 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 112: avg_loss appended (2.5625)\n", - "Epoch 112: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 112: accuracy appended (12.00%)\n", - "Epoch 112: model set back to train mode\n", - "Epoch 112: model parameters saved\n", - "Epoch 113 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 113: avg_loss appended (2.5625)\n", - "Epoch 113: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 113: accuracy appended (14.00%)\n", - "Epoch 113: model set back to train mode\n", - "Epoch 113: model parameters saved\n", - "Epoch 114 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 114: avg_loss appended (2.5625)\n", - "Epoch 114: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 114: accuracy appended (14.00%)\n", - "Epoch 114: model set back to train mode\n", - "Epoch 114: model parameters saved\n", - "Epoch 115 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 115: avg_loss appended (2.5625)\n", - "Epoch 115: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 115: accuracy appended (14.00%)\n", - "Epoch 115: model set back to train mode\n", - "Epoch 115: model parameters saved\n", - "Epoch 116 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 116: avg_loss appended (2.5625)\n", - "Epoch 116: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 116: accuracy appended (14.00%)\n", - "Epoch 116: model set back to train mode\n", - "Epoch 116: model parameters saved\n", - "Epoch 117 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 117: avg_loss appended (2.5625)\n", - "Epoch 117: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 117: accuracy appended (14.00%)\n", - "Epoch 117: model set back to train mode\n", - "Epoch 117: model parameters saved\n", - "Epoch 118 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 118: avg_loss appended (2.5625)\n", - "Epoch 118: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 118: accuracy appended (14.00%)\n", - "Epoch 118: model set back to train mode\n", - "Epoch 118: model parameters saved\n", - "Epoch 119 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 119: avg_loss appended (2.5625)\n", - "Epoch 119: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 119: accuracy appended (14.00%)\n", - "Epoch 119: model set back to train mode\n", - "Epoch 119: model parameters saved\n", - "Epoch 120 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 120: avg_loss appended (2.5625)\n", - "Epoch 120: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 120: accuracy appended (14.00%)\n", - "Epoch 120: model set back to train mode\n", - "Epoch 120: model parameters saved\n", - "Epoch 121 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 121: avg_loss appended (2.5625)\n", - "Epoch 121: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 121: accuracy appended (14.00%)\n", - "Epoch 121: model set back to train mode\n", - "Epoch 121: model parameters saved\n", - "Epoch 122 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 122: avg_loss appended (2.5625)\n", - "Epoch 122: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 122: accuracy appended (14.00%)\n", - "Epoch 122: model set back to train mode\n", - "Epoch 122: model parameters saved\n", - "Epoch 123 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 123: avg_loss appended (2.5625)\n", - "Epoch 123: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 123: accuracy appended (14.00%)\n", - "Epoch 123: model set back to train mode\n", - "Epoch 123: model parameters saved\n", - "Epoch 124 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 124: avg_loss appended (2.5625)\n", - "Epoch 124: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 124: accuracy appended (14.00%)\n", - "Epoch 124: model set back to train mode\n", - "Epoch 124: model parameters saved\n", - "Epoch 125 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 125: avg_loss appended (2.5625)\n", - "Epoch 125: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 125: accuracy appended (14.00%)\n", - "Epoch 125: model set back to train mode\n", - "Epoch 125: model parameters saved\n", - "Epoch 126 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 126: avg_loss appended (2.5625)\n", - "Epoch 126: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 126: accuracy appended (14.00%)\n", - "Epoch 126: model set back to train mode\n", - "Epoch 126: model parameters saved\n", - "Epoch 127 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 127: avg_loss appended (2.5625)\n", - "Epoch 127: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 127: accuracy appended (14.00%)\n", - "Epoch 127: model set back to train mode\n", - "Epoch 127: model parameters saved\n", - "Epoch 128 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 128: avg_loss appended (2.5625)\n", - "Epoch 128: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 128: accuracy appended (14.00%)\n", - "Epoch 128: model set back to train mode\n", - "Epoch 128: model parameters saved\n", - "Epoch 129 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 129: avg_loss appended (2.5625)\n", - "Epoch 129: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 129: accuracy appended (14.00%)\n", - "Epoch 129: model set back to train mode\n", - "Epoch 129: model parameters saved\n", - "Epoch 130 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 130: avg_loss appended (2.5625)\n", - "Epoch 130: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 130: accuracy appended (14.00%)\n", - "Epoch 130: model set back to train mode\n", - "Epoch 130: model parameters saved\n", - "Epoch 131 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 131: avg_loss appended (2.5625)\n", - "Epoch 131: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 131: accuracy appended (14.00%)\n", - "Epoch 131: model set back to train mode\n", - "Epoch 131: model parameters saved\n", - "Epoch 132 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 132: avg_loss appended (2.5625)\n", - "Epoch 132: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 132: accuracy appended (14.00%)\n", - "Epoch 132: model set back to train mode\n", - "Epoch 132: model parameters saved\n", - "Epoch 133 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 133: avg_loss appended (2.5625)\n", - "Epoch 133: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 133: accuracy appended (14.00%)\n", - "Epoch 133: model set back to train mode\n", - "Epoch 133: model parameters saved\n", - "Epoch 134 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 134: avg_loss appended (2.5625)\n", - "Epoch 134: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 134: accuracy appended (14.00%)\n", - "Epoch 134: model set back to train mode\n", - "Epoch 134: model parameters saved\n", - "Epoch 135 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 135: avg_loss appended (2.5625)\n", - "Epoch 135: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 135: accuracy appended (14.00%)\n", - "Epoch 135: model set back to train mode\n", - "Epoch 135: model parameters saved\n", - "Epoch 136 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 136: avg_loss appended (2.5625)\n", - "Epoch 136: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 136: accuracy appended (14.00%)\n", - "Epoch 136: model set back to train mode\n", - "Epoch 136: model parameters saved\n", - "Epoch 137 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 137: avg_loss appended (2.5625)\n", - "Epoch 137: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 137: accuracy appended (14.00%)\n", - "Epoch 137: model set back to train mode\n", - "Epoch 137: model parameters saved\n", - "Epoch 138 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 138: avg_loss appended (2.5625)\n", - "Epoch 138: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 138: accuracy appended (14.00%)\n", - "Epoch 138: model set back to train mode\n", - "Epoch 138: model parameters saved\n", - "Epoch 139 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 139: avg_loss appended (2.5625)\n", - "Epoch 139: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 139: accuracy appended (14.00%)\n", - "Epoch 139: model set back to train mode\n", - "Epoch 139: model parameters saved\n", - "Epoch 140 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 140: avg_loss appended (2.5625)\n", - "Epoch 140: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 140: accuracy appended (14.00%)\n", - "Epoch 140: model set back to train mode\n", - "Epoch 140: model parameters saved\n", - "Epoch 141 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 141: avg_loss appended (2.5625)\n", - "Epoch 141: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 141: accuracy appended (14.00%)\n", - "Epoch 141: model set back to train mode\n", - "Epoch 141: model parameters saved\n", - "Epoch 142 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 142: avg_loss appended (2.5625)\n", - "Epoch 142: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 142: accuracy appended (14.00%)\n", - "Epoch 142: model set back to train mode\n", - "Epoch 142: model parameters saved\n", - "Epoch 143 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 143: avg_loss appended (2.5625)\n", - "Epoch 143: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 143: accuracy appended (14.00%)\n", - "Epoch 143: model set back to train mode\n", - "Epoch 143: model parameters saved\n", - "Epoch 144 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 144: avg_loss appended (2.5625)\n", - "Epoch 144: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 144: accuracy appended (14.00%)\n", - "Epoch 144: model set back to train mode\n", - "Epoch 144: model parameters saved\n", - "Epoch 145 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 145: avg_loss appended (2.5625)\n", - "Epoch 145: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 145: accuracy appended (14.00%)\n", - "Epoch 145: model set back to train mode\n", - "Epoch 145: model parameters saved\n", - "Epoch 146 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 146: avg_loss appended (2.5625)\n", - "Epoch 146: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 146: accuracy appended (14.00%)\n", - "Epoch 146: model set back to train mode\n", - "Epoch 146: model parameters saved\n", - "Epoch 147 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 147: avg_loss appended (2.5625)\n", - "Epoch 147: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 147: accuracy appended (14.00%)\n", - "Epoch 147: model set back to train mode\n", - "Epoch 147: model parameters saved\n", - "Epoch 148 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 148: avg_loss appended (2.5625)\n", - "Epoch 148: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 148: accuracy appended (14.00%)\n", - "Epoch 148: model set back to train mode\n", - "Epoch 148: model parameters saved\n", - "Epoch 149 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 149: avg_loss appended (2.5625)\n", - "Epoch 149: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 149: accuracy appended (14.00%)\n", - "Epoch 149: model set back to train mode\n", - "Epoch 149: model parameters saved\n", - "Epoch 150 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 150: avg_loss appended (2.5625)\n", - "Epoch 150: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 150: accuracy appended (14.00%)\n", - "Epoch 150: model set back to train mode\n", - "Epoch 150: model parameters saved\n", - "Epoch 151 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 151: avg_loss appended (2.5625)\n", - "Epoch 151: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 151: accuracy appended (15.00%)\n", - "Epoch 151: model set back to train mode\n", - "Epoch 151: model parameters saved\n", - "Epoch 152 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 152: avg_loss appended (2.5625)\n", - "Epoch 152: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 152: accuracy appended (15.00%)\n", - "Epoch 152: model set back to train mode\n", - "Epoch 152: model parameters saved\n", - "Epoch 153 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 153: avg_loss appended (2.5625)\n", - "Epoch 153: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 153: accuracy appended (15.00%)\n", - "Epoch 153: model set back to train mode\n", - "Epoch 153: model parameters saved\n", - "Epoch 154 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 154: avg_loss appended (2.5625)\n", - "Epoch 154: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 154: accuracy appended (15.00%)\n", - "Epoch 154: model set back to train mode\n", - "Epoch 154: model parameters saved\n", - "Epoch 155 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 155: avg_loss appended (2.5625)\n", - "Epoch 155: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 155: accuracy appended (15.00%)\n", - "Epoch 155: model set back to train mode\n", - "Epoch 155: model parameters saved\n", - "Epoch 156 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 156: avg_loss appended (2.5625)\n", - "Epoch 156: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 156: accuracy appended (15.00%)\n", - "Epoch 156: model set back to train mode\n", - "Epoch 156: model parameters saved\n", - "Epoch 157 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 157: avg_loss appended (2.5625)\n", - "Epoch 157: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 157: accuracy appended (15.00%)\n", - "Epoch 157: model set back to train mode\n", - "Epoch 157: model parameters saved\n", - "Epoch 158 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 158: avg_loss appended (2.5625)\n", - "Epoch 158: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 158: accuracy appended (15.00%)\n", - "Epoch 158: model set back to train mode\n", - "Epoch 158: model parameters saved\n", - "Epoch 159 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 159: avg_loss appended (2.5625)\n", - "Epoch 159: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 159: accuracy appended (15.00%)\n", - "Epoch 159: model set back to train mode\n", - "Epoch 159: model parameters saved\n", - "Epoch 160 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 160: avg_loss appended (2.5625)\n", - "Epoch 160: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 160: accuracy appended (15.00%)\n", - "Epoch 160: model set back to train mode\n", - "Epoch 160: model parameters saved\n", - "Epoch 161 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 161: avg_loss appended (2.5625)\n", - "Epoch 161: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 161: accuracy appended (13.00%)\n", - "Epoch 161: model set back to train mode\n", - "Epoch 161: model parameters saved\n", - "Epoch 162 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 162: avg_loss appended (2.5625)\n", - "Epoch 162: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 162: accuracy appended (13.00%)\n", - "Epoch 162: model set back to train mode\n", - "Epoch 162: model parameters saved\n", - "Epoch 163 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 163: avg_loss appended (2.5625)\n", - "Epoch 163: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 163: accuracy appended (13.00%)\n", - "Epoch 163: model set back to train mode\n", - "Epoch 163: model parameters saved\n", - "Epoch 164 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 164: avg_loss appended (2.5625)\n", - "Epoch 164: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 164: accuracy appended (13.00%)\n", - "Epoch 164: model set back to train mode\n", - "Epoch 164: model parameters saved\n", - "Epoch 165 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 165: avg_loss appended (2.5625)\n", - "Epoch 165: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 165: accuracy appended (13.00%)\n", - "Epoch 165: model set back to train mode\n", - "Epoch 165: model parameters saved\n", - "Epoch 166 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 166: avg_loss appended (2.5625)\n", - "Epoch 166: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 166: accuracy appended (13.00%)\n", - "Epoch 166: model set back to train mode\n", - "Epoch 166: model parameters saved\n", - "Epoch 167 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 167: avg_loss appended (2.5625)\n", - "Epoch 167: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 167: accuracy appended (13.00%)\n", - "Epoch 167: model set back to train mode\n", - "Epoch 167: model parameters saved\n", - "Epoch 168 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 168: avg_loss appended (2.5625)\n", - "Epoch 168: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 168: accuracy appended (13.00%)\n", - "Epoch 168: model set back to train mode\n", - "Epoch 168: model parameters saved\n", - "Epoch 169 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 169: avg_loss appended (2.5625)\n", - "Epoch 169: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 169: accuracy appended (13.00%)\n", - "Epoch 169: model set back to train mode\n", - "Epoch 169: model parameters saved\n", - "Epoch 170 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 170: avg_loss appended (2.5625)\n", - "Epoch 170: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 170: accuracy appended (14.00%)\n", - "Epoch 170: model set back to train mode\n", - "Epoch 170: model parameters saved\n", - "Epoch 171 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 171: avg_loss appended (2.5625)\n", - "Epoch 171: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 171: accuracy appended (14.00%)\n", - "Epoch 171: model set back to train mode\n", - "Epoch 171: model parameters saved\n", - "Epoch 172 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 172: avg_loss appended (2.5625)\n", - "Epoch 172: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 172: accuracy appended (15.00%)\n", - "Epoch 172: model set back to train mode\n", - "Epoch 172: model parameters saved\n", - "Epoch 173 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 173: avg_loss appended (2.5625)\n", - "Epoch 173: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 173: accuracy appended (15.00%)\n", - "Epoch 173: model set back to train mode\n", - "Epoch 173: model parameters saved\n", - "Epoch 174 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 174: avg_loss appended (2.5625)\n", - "Epoch 174: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 174: accuracy appended (15.00%)\n", - "Epoch 174: model set back to train mode\n", - "Epoch 174: model parameters saved\n", - "Epoch 175 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 175: avg_loss appended (2.5625)\n", - "Epoch 175: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=64, total=400)\n", - "Final test accuracy: 16.00%\n", - "Epoch 175: accuracy appended (16.00%)\n", - "Epoch 175: model set back to train mode\n", - "Epoch 175: model parameters saved\n", - "Epoch 176 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 176: avg_loss appended (2.5625)\n", - "Epoch 176: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 176: accuracy appended (17.00%)\n", - "Epoch 176: model set back to train mode\n", - "Epoch 176: model parameters saved\n", - "Epoch 177 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 177: avg_loss appended (2.5625)\n", - "Epoch 177: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 177: accuracy appended (17.00%)\n", - "Epoch 177: model set back to train mode\n", - "Epoch 177: model parameters saved\n", - "Epoch 178 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 178: avg_loss appended (2.5625)\n", - "Epoch 178: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 178: accuracy appended (17.00%)\n", - "Epoch 178: model set back to train mode\n", - "Epoch 178: model parameters saved\n", - "Epoch 179 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 179: avg_loss appended (2.5625)\n", - "Epoch 179: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 179: accuracy appended (17.00%)\n", - "Epoch 179: model set back to train mode\n", - "Epoch 179: model parameters saved\n", - "Epoch 180 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 180: avg_loss appended (2.5625)\n", - "Epoch 180: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 180: accuracy appended (17.00%)\n", - "Epoch 180: model set back to train mode\n", - "Epoch 180: model parameters saved\n", - "Epoch 181 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 181: avg_loss appended (2.5625)\n", - "Epoch 181: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 181: accuracy appended (17.00%)\n", - "Epoch 181: model set back to train mode\n", - "Epoch 181: model parameters saved\n", - "Epoch 182 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 182: avg_loss appended (2.5625)\n", - "Epoch 182: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 182: accuracy appended (17.00%)\n", - "Epoch 182: model set back to train mode\n", - "Epoch 182: model parameters saved\n", - "Epoch 183 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 183: avg_loss appended (2.5625)\n", - "Epoch 183: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 183: accuracy appended (17.00%)\n", - "Epoch 183: model set back to train mode\n", - "Epoch 183: model parameters saved\n", - "Epoch 184 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 184: avg_loss appended (2.5625)\n", - "Epoch 184: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 184: accuracy appended (17.00%)\n", - "Epoch 184: model set back to train mode\n", - "Epoch 184: model parameters saved\n", - "Epoch 185 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 185: avg_loss appended (2.5625)\n", - "Epoch 185: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 185: accuracy appended (17.00%)\n", - "Epoch 185: model set back to train mode\n", - "Epoch 185: model parameters saved\n", - "Epoch 186 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 186: avg_loss appended (2.5625)\n", - "Epoch 186: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 186: accuracy appended (17.00%)\n", - "Epoch 186: model set back to train mode\n", - "Epoch 186: model parameters saved\n", - "Epoch 187 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 187: avg_loss appended (2.5625)\n", - "Epoch 187: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 187: accuracy appended (17.00%)\n", - "Epoch 187: model set back to train mode\n", - "Epoch 187: model parameters saved\n", - "Epoch 188 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 188: avg_loss appended (2.5625)\n", - "Epoch 188: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 188: accuracy appended (17.00%)\n", - "Epoch 188: model set back to train mode\n", - "Epoch 188: model parameters saved\n", - "Epoch 189 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 189: avg_loss appended (2.5625)\n", - "Epoch 189: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 189: accuracy appended (17.00%)\n", - "Epoch 189: model set back to train mode\n", - "Epoch 189: model parameters saved\n", - "Epoch 190 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 190: avg_loss appended (2.5625)\n", - "Epoch 190: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 190: accuracy appended (17.00%)\n", - "Epoch 190: model set back to train mode\n", - "Epoch 190: model parameters saved\n", - "Epoch 191 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 191: avg_loss appended (2.5625)\n", - "Epoch 191: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 191: accuracy appended (17.00%)\n", - "Epoch 191: model set back to train mode\n", - "Epoch 191: model parameters saved\n", - "Epoch 192 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 192: avg_loss appended (2.5625)\n", - "Epoch 192: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 192: accuracy appended (17.00%)\n", - "Epoch 192: model set back to train mode\n", - "Epoch 192: model parameters saved\n", - "Epoch 193 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 193: avg_loss appended (2.5625)\n", - "Epoch 193: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 193: accuracy appended (17.00%)\n", - "Epoch 193: model set back to train mode\n", - "Epoch 193: model parameters saved\n", - "Epoch 194 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 194: avg_loss appended (2.5625)\n", - "Epoch 194: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 194: accuracy appended (17.00%)\n", - "Epoch 194: model set back to train mode\n", - "Epoch 194: model parameters saved\n", - "Epoch 195 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 195: avg_loss appended (2.5625)\n", - "Epoch 195: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 195: accuracy appended (17.00%)\n", - "Epoch 195: model set back to train mode\n", - "Epoch 195: model parameters saved\n", - "Epoch 196 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 196: avg_loss appended (2.5625)\n", - "Epoch 196: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 196: accuracy appended (17.00%)\n", - "Epoch 196: model set back to train mode\n", - "Epoch 196: model parameters saved\n", - "Epoch 197 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 197: avg_loss appended (2.5625)\n", - "Epoch 197: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 197: accuracy appended (17.00%)\n", - "Epoch 197: model set back to train mode\n", - "Epoch 197: model parameters saved\n", - "Epoch 198 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 198: avg_loss appended (2.5625)\n", - "Epoch 198: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 198: accuracy appended (17.00%)\n", - "Epoch 198: model set back to train mode\n", - "Epoch 198: model parameters saved\n", - "Epoch 199 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 199: avg_loss appended (2.5625)\n", - "Epoch 199: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 199: accuracy appended (17.00%)\n", - "Epoch 199: model set back to train mode\n", - "Epoch 199: model parameters saved\n", - "Epoch 200 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 200: avg_loss appended (2.5625)\n", - "Epoch 200: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 200: accuracy appended (17.00%)\n", - "Epoch 200: model set back to train mode\n", - "Epoch 200: model parameters saved\n", - "Epoch 200/10000, Loss: 2.5625, Accuracy: 17.00%\n", - "Epoch 201 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 201: avg_loss appended (2.5625)\n", - "Epoch 201: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 201: accuracy appended (17.00%)\n", - "Epoch 201: model set back to train mode\n", - "Epoch 201: model parameters saved\n", - "Epoch 202 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 202: avg_loss appended (2.5625)\n", - "Epoch 202: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 202: accuracy appended (17.00%)\n", - "Epoch 202: model set back to train mode\n", - "Epoch 202: model parameters saved\n", - "Epoch 203 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 203: avg_loss appended (2.5625)\n", - "Epoch 203: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 203: accuracy appended (17.00%)\n", - "Epoch 203: model set back to train mode\n", - "Epoch 203: model parameters saved\n", - "Epoch 204 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 204: avg_loss appended (2.5625)\n", - "Epoch 204: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 204: accuracy appended (17.00%)\n", - "Epoch 204: model set back to train mode\n", - "Epoch 204: model parameters saved\n", - "Epoch 205 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 205: avg_loss appended (2.5625)\n", - "Epoch 205: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 205: accuracy appended (17.00%)\n", - "Epoch 205: model set back to train mode\n", - "Epoch 205: model parameters saved\n", - "Epoch 206 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 206: avg_loss appended (2.5625)\n", - "Epoch 206: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 206: accuracy appended (17.00%)\n", - "Epoch 206: model set back to train mode\n", - "Epoch 206: model parameters saved\n", - "Epoch 207 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 207: avg_loss appended (2.5625)\n", - "Epoch 207: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 207: accuracy appended (17.00%)\n", - "Epoch 207: model set back to train mode\n", - "Epoch 207: model parameters saved\n", - "Epoch 208 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 208: avg_loss appended (2.5625)\n", - "Epoch 208: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 208: accuracy appended (17.00%)\n", - "Epoch 208: model set back to train mode\n", - "Epoch 208: model parameters saved\n", - "Epoch 209 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 209: avg_loss appended (2.5625)\n", - "Epoch 209: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 209: accuracy appended (17.00%)\n", - "Epoch 209: model set back to train mode\n", - "Epoch 209: model parameters saved\n", - "Epoch 210 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 210: avg_loss appended (2.5625)\n", - "Epoch 210: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 210: accuracy appended (17.00%)\n", - "Epoch 210: model set back to train mode\n", - "Epoch 210: model parameters saved\n", - "Epoch 211 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 211: avg_loss appended (2.5625)\n", - "Epoch 211: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 211: accuracy appended (17.00%)\n", - "Epoch 211: model set back to train mode\n", - "Epoch 211: model parameters saved\n", - "Epoch 212 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 212: avg_loss appended (2.5625)\n", - "Epoch 212: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=64, total=400)\n", - "Final test accuracy: 16.00%\n", - "Epoch 212: accuracy appended (16.00%)\n", - "Epoch 212: model set back to train mode\n", - "Epoch 212: model parameters saved\n", - "Epoch 213 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 213: avg_loss appended (2.5625)\n", - "Epoch 213: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=64, total=400)\n", - "Final test accuracy: 16.00%\n", - "Epoch 213: accuracy appended (16.00%)\n", - "Epoch 213: model set back to train mode\n", - "Epoch 213: model parameters saved\n", - "Epoch 214 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 214: avg_loss appended (2.5625)\n", - "Epoch 214: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=64, total=400)\n", - "Final test accuracy: 16.00%\n", - "Epoch 214: accuracy appended (16.00%)\n", - "Epoch 214: model set back to train mode\n", - "Epoch 214: model parameters saved\n", - "Epoch 215 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 215: avg_loss appended (2.5625)\n", - "Epoch 215: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=64, total=400)\n", - "Final test accuracy: 16.00%\n", - "Epoch 215: accuracy appended (16.00%)\n", - "Epoch 215: model set back to train mode\n", - "Epoch 215: model parameters saved\n", - "Epoch 216 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 216: avg_loss appended (2.5625)\n", - "Epoch 216: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 216: accuracy appended (15.00%)\n", - "Epoch 216: model set back to train mode\n", - "Epoch 216: model parameters saved\n", - "Epoch 217 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 217: avg_loss appended (2.5625)\n", - "Epoch 217: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 217: accuracy appended (15.00%)\n", - "Epoch 217: model set back to train mode\n", - "Epoch 217: model parameters saved\n", - "Epoch 218 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 218: avg_loss appended (2.5625)\n", - "Epoch 218: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 218: accuracy appended (15.00%)\n", - "Epoch 218: model set back to train mode\n", - "Epoch 218: model parameters saved\n", - "Epoch 219 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 219: avg_loss appended (2.5625)\n", - "Epoch 219: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 219: accuracy appended (15.00%)\n", - "Epoch 219: model set back to train mode\n", - "Epoch 219: model parameters saved\n", - "Epoch 220 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 220: avg_loss appended (2.5625)\n", - "Epoch 220: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 220: accuracy appended (15.00%)\n", - "Epoch 220: model set back to train mode\n", - "Epoch 220: model parameters saved\n", - "Epoch 221 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 221: avg_loss appended (2.5625)\n", - "Epoch 221: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 221: accuracy appended (15.00%)\n", - "Epoch 221: model set back to train mode\n", - "Epoch 221: model parameters saved\n", - "Epoch 222 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 222: avg_loss appended (2.5625)\n", - "Epoch 222: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 222: accuracy appended (15.00%)\n", - "Epoch 222: model set back to train mode\n", - "Epoch 222: model parameters saved\n", - "Epoch 223 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 223: avg_loss appended (2.5625)\n", - "Epoch 223: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 223: accuracy appended (15.00%)\n", - "Epoch 223: model set back to train mode\n", - "Epoch 223: model parameters saved\n", - "Epoch 224 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 224: avg_loss appended (2.5625)\n", - "Epoch 224: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 224: accuracy appended (15.00%)\n", - "Epoch 224: model set back to train mode\n", - "Epoch 224: model parameters saved\n", - "Epoch 225 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 225: avg_loss appended (2.5625)\n", - "Epoch 225: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 225: accuracy appended (15.00%)\n", - "Epoch 225: model set back to train mode\n", - "Epoch 225: model parameters saved\n", - "Epoch 226 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 226: avg_loss appended (2.5625)\n", - "Epoch 226: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 226: accuracy appended (15.00%)\n", - "Epoch 226: model set back to train mode\n", - "Epoch 226: model parameters saved\n", - "Epoch 227 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 227: avg_loss appended (2.5625)\n", - "Epoch 227: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 227: accuracy appended (15.00%)\n", - "Epoch 227: model set back to train mode\n", - "Epoch 227: model parameters saved\n", - "Epoch 228 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 228: avg_loss appended (2.5625)\n", - "Epoch 228: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 228: accuracy appended (15.00%)\n", - "Epoch 228: model set back to train mode\n", - "Epoch 228: model parameters saved\n", - "Epoch 229 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 229: avg_loss appended (2.5625)\n", - "Epoch 229: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 229: accuracy appended (15.00%)\n", - "Epoch 229: model set back to train mode\n", - "Epoch 229: model parameters saved\n", - "Epoch 230 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 230: avg_loss appended (2.5625)\n", - "Epoch 230: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 230: accuracy appended (15.00%)\n", - "Epoch 230: model set back to train mode\n", - "Epoch 230: model parameters saved\n", - "Epoch 231 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 231: avg_loss appended (2.5625)\n", - "Epoch 231: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 231: accuracy appended (15.00%)\n", - "Epoch 231: model set back to train mode\n", - "Epoch 231: model parameters saved\n", - "Epoch 232 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 232: avg_loss appended (2.5625)\n", - "Epoch 232: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 232: accuracy appended (15.00%)\n", - "Epoch 232: model set back to train mode\n", - "Epoch 232: model parameters saved\n", - "Epoch 233 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 233: avg_loss appended (2.5625)\n", - "Epoch 233: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 233: accuracy appended (15.00%)\n", - "Epoch 233: model set back to train mode\n", - "Epoch 233: model parameters saved\n", - "Epoch 234 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 234: avg_loss appended (2.5625)\n", - "Epoch 234: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 234: accuracy appended (15.00%)\n", - "Epoch 234: model set back to train mode\n", - "Epoch 234: model parameters saved\n", - "Epoch 235 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 235: avg_loss appended (2.5625)\n", - "Epoch 235: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 235: accuracy appended (15.00%)\n", - "Epoch 235: model set back to train mode\n", - "Epoch 235: model parameters saved\n", - "Epoch 236 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 236: avg_loss appended (2.5625)\n", - "Epoch 236: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 236: accuracy appended (15.00%)\n", - "Epoch 236: model set back to train mode\n", - "Epoch 236: model parameters saved\n", - "Epoch 237 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 237: avg_loss appended (2.5625)\n", - "Epoch 237: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 237: accuracy appended (15.00%)\n", - "Epoch 237: model set back to train mode\n", - "Epoch 237: model parameters saved\n", - "Epoch 238 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 238: avg_loss appended (2.5625)\n", - "Epoch 238: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 238: accuracy appended (15.00%)\n", - "Epoch 238: model set back to train mode\n", - "Epoch 238: model parameters saved\n", - "Epoch 239 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 239: avg_loss appended (2.5625)\n", - "Epoch 239: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 239: accuracy appended (15.00%)\n", - "Epoch 239: model set back to train mode\n", - "Epoch 239: model parameters saved\n", - "Epoch 240 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 240: avg_loss appended (2.5625)\n", - "Epoch 240: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 240: accuracy appended (15.00%)\n", - "Epoch 240: model set back to train mode\n", - "Epoch 240: model parameters saved\n", - "Epoch 241 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 241: avg_loss appended (2.5625)\n", - "Epoch 241: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 241: accuracy appended (15.00%)\n", - "Epoch 241: model set back to train mode\n", - "Epoch 241: model parameters saved\n", - "Epoch 242 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 242: avg_loss appended (2.5625)\n", - "Epoch 242: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 242: accuracy appended (15.00%)\n", - "Epoch 242: model set back to train mode\n", - "Epoch 242: model parameters saved\n", - "Epoch 243 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 243: avg_loss appended (2.5625)\n", - "Epoch 243: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 243: accuracy appended (15.00%)\n", - "Epoch 243: model set back to train mode\n", - "Epoch 243: model parameters saved\n", - "Epoch 244 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 244: avg_loss appended (2.5625)\n", - "Epoch 244: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 244: accuracy appended (15.00%)\n", - "Epoch 244: model set back to train mode\n", - "Epoch 244: model parameters saved\n", - "Epoch 245 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 245: avg_loss appended (2.5625)\n", - "Epoch 245: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 245: accuracy appended (15.00%)\n", - "Epoch 245: model set back to train mode\n", - "Epoch 245: model parameters saved\n", - "Epoch 246 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 246: avg_loss appended (2.5625)\n", - "Epoch 246: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 246: accuracy appended (15.00%)\n", - "Epoch 246: model set back to train mode\n", - "Epoch 246: model parameters saved\n", - "Epoch 247 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 247: avg_loss appended (2.5625)\n", - "Epoch 247: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 247: accuracy appended (15.00%)\n", - "Epoch 247: model set back to train mode\n", - "Epoch 247: model parameters saved\n", - "Epoch 248 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 248: avg_loss appended (2.5625)\n", - "Epoch 248: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 248: accuracy appended (15.00%)\n", - "Epoch 248: model set back to train mode\n", - "Epoch 248: model parameters saved\n", - "Epoch 249 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 249: avg_loss appended (2.5625)\n", - "Epoch 249: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 249: accuracy appended (15.00%)\n", - "Epoch 249: model set back to train mode\n", - "Epoch 249: model parameters saved\n", - "Epoch 250 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 250: avg_loss appended (2.5625)\n", - "Epoch 250: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=64, total=400)\n", - "Final test accuracy: 16.00%\n", - "Epoch 250: accuracy appended (16.00%)\n", - "Epoch 250: model set back to train mode\n", - "Epoch 250: model parameters saved\n", - "Epoch 251 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 251: avg_loss appended (2.5625)\n", - "Epoch 251: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=64, total=400)\n", - "Final test accuracy: 16.00%\n", - "Epoch 251: accuracy appended (16.00%)\n", - "Epoch 251: model set back to train mode\n", - "Epoch 251: model parameters saved\n", - "Epoch 252 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 252: avg_loss appended (2.5625)\n", - "Epoch 252: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=64, total=400)\n", - "Final test accuracy: 16.00%\n", - "Epoch 252: accuracy appended (16.00%)\n", - "Epoch 252: model set back to train mode\n", - "Epoch 252: model parameters saved\n", - "Epoch 253 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 253: avg_loss appended (2.5625)\n", - "Epoch 253: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=64, total=400)\n", - "Final test accuracy: 16.00%\n", - "Epoch 253: accuracy appended (16.00%)\n", - "Epoch 253: model set back to train mode\n", - "Epoch 253: model parameters saved\n", - "Epoch 254 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 254: avg_loss appended (2.5625)\n", - "Epoch 254: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=64, total=400)\n", - "Final test accuracy: 16.00%\n", - "Epoch 254: accuracy appended (16.00%)\n", - "Epoch 254: model set back to train mode\n", - "Epoch 254: model parameters saved\n", - "Epoch 255 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 255: avg_loss appended (2.5625)\n", - "Epoch 255: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=64, total=400)\n", - "Final test accuracy: 16.00%\n", - "Epoch 255: accuracy appended (16.00%)\n", - "Epoch 255: model set back to train mode\n", - "Epoch 255: model parameters saved\n", - "Epoch 256 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 256: avg_loss appended (2.5625)\n", - "Epoch 256: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=64, total=400)\n", - "Final test accuracy: 16.00%\n", - "Epoch 256: accuracy appended (16.00%)\n", - "Epoch 256: model set back to train mode\n", - "Epoch 256: model parameters saved\n", - "Epoch 257 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 257: avg_loss appended (2.5625)\n", - "Epoch 257: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=64, total=400)\n", - "Final test accuracy: 16.00%\n", - "Epoch 257: accuracy appended (16.00%)\n", - "Epoch 257: model set back to train mode\n", - "Epoch 257: model parameters saved\n", - "Epoch 258 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 258: avg_loss appended (2.5625)\n", - "Epoch 258: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=64, total=400)\n", - "Final test accuracy: 16.00%\n", - "Epoch 258: accuracy appended (16.00%)\n", - "Epoch 258: model set back to train mode\n", - "Epoch 258: model parameters saved\n", - "Epoch 259 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 259: avg_loss appended (2.5625)\n", - "Epoch 259: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=64, total=400)\n", - "Final test accuracy: 16.00%\n", - "Epoch 259: accuracy appended (16.00%)\n", - "Epoch 259: model set back to train mode\n", - "Epoch 259: model parameters saved\n", - "Epoch 260 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 260: avg_loss appended (2.5625)\n", - "Epoch 260: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=64, total=400)\n", - "Final test accuracy: 16.00%\n", - "Epoch 260: accuracy appended (16.00%)\n", - "Epoch 260: model set back to train mode\n", - "Epoch 260: model parameters saved\n", - "Epoch 261 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 261: avg_loss appended (2.5625)\n", - "Epoch 261: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=64, total=400)\n", - "Final test accuracy: 16.00%\n", - "Epoch 261: accuracy appended (16.00%)\n", - "Epoch 261: model set back to train mode\n", - "Epoch 261: model parameters saved\n", - "Epoch 262 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 262: avg_loss appended (2.5625)\n", - "Epoch 262: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=64, total=400)\n", - "Final test accuracy: 16.00%\n", - "Epoch 262: accuracy appended (16.00%)\n", - "Epoch 262: model set back to train mode\n", - "Epoch 262: model parameters saved\n", - "Epoch 263 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 263: avg_loss appended (2.5625)\n", - "Epoch 263: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 263: accuracy appended (17.00%)\n", - "Epoch 263: model set back to train mode\n", - "Epoch 263: model parameters saved\n", - "Epoch 264 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 264: avg_loss appended (2.5625)\n", - "Epoch 264: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 264: accuracy appended (17.00%)\n", - "Epoch 264: model set back to train mode\n", - "Epoch 264: model parameters saved\n", - "Epoch 265 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 265: avg_loss appended (2.5625)\n", - "Epoch 265: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 265: accuracy appended (17.00%)\n", - "Epoch 265: model set back to train mode\n", - "Epoch 265: model parameters saved\n", - "Epoch 266 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 266: avg_loss appended (2.5625)\n", - "Epoch 266: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 266: accuracy appended (17.00%)\n", - "Epoch 266: model set back to train mode\n", - "Epoch 266: model parameters saved\n", - "Epoch 267 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 267: avg_loss appended (2.5625)\n", - "Epoch 267: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 267: accuracy appended (17.00%)\n", - "Epoch 267: model set back to train mode\n", - "Epoch 267: model parameters saved\n", - "Epoch 268 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 268: avg_loss appended (2.5625)\n", - "Epoch 268: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 268: accuracy appended (17.00%)\n", - "Epoch 268: model set back to train mode\n", - "Epoch 268: model parameters saved\n", - "Epoch 269 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 269: avg_loss appended (2.5625)\n", - "Epoch 269: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 269: accuracy appended (17.00%)\n", - "Epoch 269: model set back to train mode\n", - "Epoch 269: model parameters saved\n", - "Epoch 270 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 270: avg_loss appended (2.5625)\n", - "Epoch 270: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 270: accuracy appended (17.00%)\n", - "Epoch 270: model set back to train mode\n", - "Epoch 270: model parameters saved\n", - "Epoch 271 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 271: avg_loss appended (2.5625)\n", - "Epoch 271: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 271: accuracy appended (17.00%)\n", - "Epoch 271: model set back to train mode\n", - "Epoch 271: model parameters saved\n", - "Epoch 272 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 272: avg_loss appended (2.5625)\n", - "Epoch 272: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 272: accuracy appended (17.00%)\n", - "Epoch 272: model set back to train mode\n", - "Epoch 272: model parameters saved\n", - "Epoch 273 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 273: avg_loss appended (2.5625)\n", - "Epoch 273: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 273: accuracy appended (17.00%)\n", - "Epoch 273: model set back to train mode\n", - "Epoch 273: model parameters saved\n", - "Epoch 274 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 274: avg_loss appended (2.5625)\n", - "Epoch 274: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 274: accuracy appended (18.00%)\n", - "Epoch 274: model set back to train mode\n", - "Epoch 274: model parameters saved\n", - "Epoch 275 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 275: avg_loss appended (2.5625)\n", - "Epoch 275: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 275: accuracy appended (18.00%)\n", - "Epoch 275: model set back to train mode\n", - "Epoch 275: model parameters saved\n", - "Epoch 276 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 276: avg_loss appended (2.5625)\n", - "Epoch 276: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 276: accuracy appended (17.00%)\n", - "Epoch 276: model set back to train mode\n", - "Epoch 276: model parameters saved\n", - "Epoch 277 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 277: avg_loss appended (2.5625)\n", - "Epoch 277: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 277: accuracy appended (18.00%)\n", - "Epoch 277: model set back to train mode\n", - "Epoch 277: model parameters saved\n", - "Epoch 278 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 278: avg_loss appended (2.5625)\n", - "Epoch 278: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 278: accuracy appended (18.00%)\n", - "Epoch 278: model set back to train mode\n", - "Epoch 278: model parameters saved\n", - "Epoch 279 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 279: avg_loss appended (2.5625)\n", - "Epoch 279: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 279: accuracy appended (18.00%)\n", - "Epoch 279: model set back to train mode\n", - "Epoch 279: model parameters saved\n", - "Epoch 280 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 280: avg_loss appended (2.5625)\n", - "Epoch 280: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 280: accuracy appended (18.00%)\n", - "Epoch 280: model set back to train mode\n", - "Epoch 280: model parameters saved\n", - "Epoch 281 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 281: avg_loss appended (2.5625)\n", - "Epoch 281: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 281: accuracy appended (18.00%)\n", - "Epoch 281: model set back to train mode\n", - "Epoch 281: model parameters saved\n", - "Epoch 282 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 282: avg_loss appended (2.5625)\n", - "Epoch 282: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 282: accuracy appended (18.00%)\n", - "Epoch 282: model set back to train mode\n", - "Epoch 282: model parameters saved\n", - "Epoch 283 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 283: avg_loss appended (2.5625)\n", - "Epoch 283: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 283: accuracy appended (18.00%)\n", - "Epoch 283: model set back to train mode\n", - "Epoch 283: model parameters saved\n", - "Epoch 284 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 284: avg_loss appended (2.5625)\n", - "Epoch 284: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 284: accuracy appended (18.00%)\n", - "Epoch 284: model set back to train mode\n", - "Epoch 284: model parameters saved\n", - "Epoch 285 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 285: avg_loss appended (2.5625)\n", - "Epoch 285: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 285: accuracy appended (18.00%)\n", - "Epoch 285: model set back to train mode\n", - "Epoch 285: model parameters saved\n", - "Epoch 286 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 286: avg_loss appended (2.5625)\n", - "Epoch 286: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 286: accuracy appended (18.00%)\n", - "Epoch 286: model set back to train mode\n", - "Epoch 286: model parameters saved\n", - "Epoch 287 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 287: avg_loss appended (2.5625)\n", - "Epoch 287: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 287: accuracy appended (18.00%)\n", - "Epoch 287: model set back to train mode\n", - "Epoch 287: model parameters saved\n", - "Epoch 288 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 288: avg_loss appended (2.5625)\n", - "Epoch 288: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 288: accuracy appended (18.00%)\n", - "Epoch 288: model set back to train mode\n", - "Epoch 288: model parameters saved\n", - "Epoch 289 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 289: avg_loss appended (2.5625)\n", - "Epoch 289: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 289: accuracy appended (18.00%)\n", - "Epoch 289: model set back to train mode\n", - "Epoch 289: model parameters saved\n", - "Epoch 290 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 290: avg_loss appended (2.5625)\n", - "Epoch 290: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 290: accuracy appended (18.00%)\n", - "Epoch 290: model set back to train mode\n", - "Epoch 290: model parameters saved\n", - "Epoch 291 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5625)\n", - "Epoch 291: avg_loss appended (2.5625)\n", - "Epoch 291: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 291: accuracy appended (18.00%)\n", - "Epoch 291: model set back to train mode\n", - "Epoch 291: model parameters saved\n", - "Epoch 292 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5624)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5624)\n", - "Epoch 292: avg_loss appended (2.5624)\n", - "Epoch 292: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 292: accuracy appended (18.00%)\n", - "Epoch 292: model set back to train mode\n", - "Epoch 292: model parameters saved\n", - "Epoch 293 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5624)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5624)\n", - "Epoch 293: avg_loss appended (2.5624)\n", - "Epoch 293: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 293: accuracy appended (18.00%)\n", - "Epoch 293: model set back to train mode\n", - "Epoch 293: model parameters saved\n", - "Epoch 294 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5624)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5624)\n", - "Epoch 294: avg_loss appended (2.5624)\n", - "Epoch 294: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 294: accuracy appended (18.00%)\n", - "Epoch 294: model set back to train mode\n", - "Epoch 294: model parameters saved\n", - "Epoch 295 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5624)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5624)\n", - "Epoch 295: avg_loss appended (2.5624)\n", - "Epoch 295: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 295: accuracy appended (18.00%)\n", - "Epoch 295: model set back to train mode\n", - "Epoch 295: model parameters saved\n", - "Epoch 296 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5624)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5624)\n", - "Epoch 296: avg_loss appended (2.5624)\n", - "Epoch 296: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 296: accuracy appended (18.00%)\n", - "Epoch 296: model set back to train mode\n", - "Epoch 296: model parameters saved\n", - "Epoch 297 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5624)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5624)\n", - "Epoch 297: avg_loss appended (2.5624)\n", - "Epoch 297: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 297: accuracy appended (18.00%)\n", - "Epoch 297: model set back to train mode\n", - "Epoch 297: model parameters saved\n", - "Epoch 298 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5624)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5624)\n", - "Epoch 298: avg_loss appended (2.5624)\n", - "Epoch 298: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 298: accuracy appended (18.00%)\n", - "Epoch 298: model set back to train mode\n", - "Epoch 298: model parameters saved\n", - "Epoch 299 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5624)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5624)\n", - "Epoch 299: avg_loss appended (2.5624)\n", - "Epoch 299: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 299: accuracy appended (18.00%)\n", - "Epoch 299: model set back to train mode\n", - "Epoch 299: model parameters saved\n", - "Epoch 300 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5624)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5624)\n", - "Epoch 300: avg_loss appended (2.5624)\n", - "Epoch 300: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 300: accuracy appended (20.00%)\n", - "Epoch 300: model set back to train mode\n", - "Epoch 300: model parameters saved\n", - "Epoch 300/10000, Loss: 2.5624, Accuracy: 20.00%\n", - "Epoch 301 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5624)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5624)\n", - "Epoch 301: avg_loss appended (2.5624)\n", - "Epoch 301: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 301: accuracy appended (20.00%)\n", - "Epoch 301: model set back to train mode\n", - "Epoch 301: model parameters saved\n", - "Epoch 302 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5624)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5624)\n", - "Epoch 302: avg_loss appended (2.5624)\n", - "Epoch 302: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=76, total=400)\n", - "Final test accuracy: 19.00%\n", - "Epoch 302: accuracy appended (19.00%)\n", - "Epoch 302: model set back to train mode\n", - "Epoch 302: model parameters saved\n", - "Epoch 303 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5624)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5624)\n", - "Epoch 303: avg_loss appended (2.5624)\n", - "Epoch 303: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=76, total=400)\n", - "Final test accuracy: 19.00%\n", - "Epoch 303: accuracy appended (19.00%)\n", - "Epoch 303: model set back to train mode\n", - "Epoch 303: model parameters saved\n", - "Epoch 304 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5624)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5624)\n", - "Epoch 304: avg_loss appended (2.5624)\n", - "Epoch 304: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=76, total=400)\n", - "Final test accuracy: 19.00%\n", - "Epoch 304: accuracy appended (19.00%)\n", - "Epoch 304: model set back to train mode\n", - "Epoch 304: model parameters saved\n", - "Epoch 305 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5624)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5624)\n", - "Epoch 305: avg_loss appended (2.5624)\n", - "Epoch 305: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=76, total=400)\n", - "Final test accuracy: 19.00%\n", - "Epoch 305: accuracy appended (19.00%)\n", - "Epoch 305: model set back to train mode\n", - "Epoch 305: model parameters saved\n", - "Epoch 306 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5624)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5624)\n", - "Epoch 306: avg_loss appended (2.5624)\n", - "Epoch 306: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=76, total=400)\n", - "Final test accuracy: 19.00%\n", - "Epoch 306: accuracy appended (19.00%)\n", - "Epoch 306: model set back to train mode\n", - "Epoch 306: model parameters saved\n", - "Epoch 307 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5624)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5624)\n", - "Epoch 307: avg_loss appended (2.5624)\n", - "Epoch 307: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=76, total=400)\n", - "Final test accuracy: 19.00%\n", - "Epoch 307: accuracy appended (19.00%)\n", - "Epoch 307: model set back to train mode\n", - "Epoch 307: model parameters saved\n", - "Epoch 308 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5624)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5624)\n", - "Epoch 308: avg_loss appended (2.5624)\n", - "Epoch 308: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 308: accuracy appended (18.00%)\n", - "Epoch 308: model set back to train mode\n", - "Epoch 308: model parameters saved\n", - "Epoch 309 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5624)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5624)\n", - "Epoch 309: avg_loss appended (2.5624)\n", - "Epoch 309: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 309: accuracy appended (18.00%)\n", - "Epoch 309: model set back to train mode\n", - "Epoch 309: model parameters saved\n", - "Epoch 310 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5624)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5624)\n", - "Epoch 310: avg_loss appended (2.5624)\n", - "Epoch 310: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 310: accuracy appended (20.00%)\n", - "Epoch 310: model set back to train mode\n", - "Epoch 310: model parameters saved\n", - "Epoch 311 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5624)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5624)\n", - "Epoch 311: avg_loss appended (2.5624)\n", - "Epoch 311: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 311: accuracy appended (20.00%)\n", - "Epoch 311: model set back to train mode\n", - "Epoch 311: model parameters saved\n", - "Epoch 312 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5624)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5624)\n", - "Epoch 312: avg_loss appended (2.5624)\n", - "Epoch 312: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 312: accuracy appended (20.00%)\n", - "Epoch 312: model set back to train mode\n", - "Epoch 312: model parameters saved\n", - "Epoch 313 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5624)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5624)\n", - "Epoch 313: avg_loss appended (2.5624)\n", - "Epoch 313: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 313: accuracy appended (20.00%)\n", - "Epoch 313: model set back to train mode\n", - "Epoch 313: model parameters saved\n", - "Epoch 314 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5624)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5624)\n", - "Epoch 314: avg_loss appended (2.5624)\n", - "Epoch 314: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=76, total=400)\n", - "Final test accuracy: 19.00%\n", - "Epoch 314: accuracy appended (19.00%)\n", - "Epoch 314: model set back to train mode\n", - "Epoch 314: model parameters saved\n", - "Epoch 315 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5624)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5624)\n", - "Epoch 315: avg_loss appended (2.5624)\n", - "Epoch 315: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=76, total=400)\n", - "Final test accuracy: 19.00%\n", - "Epoch 315: accuracy appended (19.00%)\n", - "Epoch 315: model set back to train mode\n", - "Epoch 315: model parameters saved\n", - "Epoch 316 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5624)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5624)\n", - "Epoch 316: avg_loss appended (2.5624)\n", - "Epoch 316: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=76, total=400)\n", - "Final test accuracy: 19.00%\n", - "Epoch 316: accuracy appended (19.00%)\n", - "Epoch 316: model set back to train mode\n", - "Epoch 316: model parameters saved\n", - "Epoch 317 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5624)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5624)\n", - "Epoch 317: avg_loss appended (2.5624)\n", - "Epoch 317: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=76, total=400)\n", - "Final test accuracy: 19.00%\n", - "Epoch 317: accuracy appended (19.00%)\n", - "Epoch 317: model set back to train mode\n", - "Epoch 317: model parameters saved\n", - "Epoch 318 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5624)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5624)\n", - "Epoch 318: avg_loss appended (2.5624)\n", - "Epoch 318: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=76, total=400)\n", - "Final test accuracy: 19.00%\n", - "Epoch 318: accuracy appended (19.00%)\n", - "Epoch 318: model set back to train mode\n", - "Epoch 318: model parameters saved\n", - "Epoch 319 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5624)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5624)\n", - "Epoch 319: avg_loss appended (2.5624)\n", - "Epoch 319: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=76, total=400)\n", - "Final test accuracy: 19.00%\n", - "Epoch 319: accuracy appended (19.00%)\n", - "Epoch 319: model set back to train mode\n", - "Epoch 319: model parameters saved\n", - "Epoch 320 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5624)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5624)\n", - "Epoch 320: avg_loss appended (2.5624)\n", - "Epoch 320: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=76, total=400)\n", - "Final test accuracy: 19.00%\n", - "Epoch 320: accuracy appended (19.00%)\n", - "Epoch 320: model set back to train mode\n", - "Epoch 320: model parameters saved\n", - "Epoch 321 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5624)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5624)\n", - "Epoch 321: avg_loss appended (2.5624)\n", - "Epoch 321: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=76, total=400)\n", - "Final test accuracy: 19.00%\n", - "Epoch 321: accuracy appended (19.00%)\n", - "Epoch 321: model set back to train mode\n", - "Epoch 321: model parameters saved\n", - "Epoch 322 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5624)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5624)\n", - "Epoch 322: avg_loss appended (2.5624)\n", - "Epoch 322: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 322: accuracy appended (20.00%)\n", - "Epoch 322: model set back to train mode\n", - "Epoch 322: model parameters saved\n", - "Epoch 323 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5624)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5624)\n", - "Epoch 323: avg_loss appended (2.5624)\n", - "Epoch 323: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 323: accuracy appended (20.00%)\n", - "Epoch 323: model set back to train mode\n", - "Epoch 323: model parameters saved\n", - "Epoch 324 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5624)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5624)\n", - "Epoch 324: avg_loss appended (2.5624)\n", - "Epoch 324: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 324: accuracy appended (20.00%)\n", - "Epoch 324: model set back to train mode\n", - "Epoch 324: model parameters saved\n", - "Epoch 325 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5624)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5624)\n", - "Epoch 325: avg_loss appended (2.5624)\n", - "Epoch 325: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 325: accuracy appended (20.00%)\n", - "Epoch 325: model set back to train mode\n", - "Epoch 325: model parameters saved\n", - "Epoch 326 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5624)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5624)\n", - "Epoch 326: avg_loss appended (2.5624)\n", - "Epoch 326: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 326: accuracy appended (20.00%)\n", - "Epoch 326: model set back to train mode\n", - "Epoch 326: model parameters saved\n", - "Epoch 327 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5623)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5623)\n", - "Epoch 327: avg_loss appended (2.5623)\n", - "Epoch 327: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 327: accuracy appended (20.00%)\n", - "Epoch 327: model set back to train mode\n", - "Epoch 327: model parameters saved\n", - "Epoch 328 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5623)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5623)\n", - "Epoch 328: avg_loss appended (2.5623)\n", - "Epoch 328: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=76, total=400)\n", - "Final test accuracy: 19.00%\n", - "Epoch 328: accuracy appended (19.00%)\n", - "Epoch 328: model set back to train mode\n", - "Epoch 328: model parameters saved\n", - "Epoch 329 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5623)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5623)\n", - "Epoch 329: avg_loss appended (2.5623)\n", - "Epoch 329: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=76, total=400)\n", - "Final test accuracy: 19.00%\n", - "Epoch 329: accuracy appended (19.00%)\n", - "Epoch 329: model set back to train mode\n", - "Epoch 329: model parameters saved\n", - "Epoch 330 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5623)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5623)\n", - "Epoch 330: avg_loss appended (2.5623)\n", - "Epoch 330: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=76, total=400)\n", - "Final test accuracy: 19.00%\n", - "Epoch 330: accuracy appended (19.00%)\n", - "Epoch 330: model set back to train mode\n", - "Epoch 330: model parameters saved\n", - "Epoch 331 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5623)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5623)\n", - "Epoch 331: avg_loss appended (2.5623)\n", - "Epoch 331: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 331: accuracy appended (18.00%)\n", - "Epoch 331: model set back to train mode\n", - "Epoch 331: model parameters saved\n", - "Epoch 332 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5623)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5623)\n", - "Epoch 332: avg_loss appended (2.5623)\n", - "Epoch 332: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 332: accuracy appended (17.00%)\n", - "Epoch 332: model set back to train mode\n", - "Epoch 332: model parameters saved\n", - "Epoch 333 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5623)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5623)\n", - "Epoch 333: avg_loss appended (2.5623)\n", - "Epoch 333: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 333: accuracy appended (17.00%)\n", - "Epoch 333: model set back to train mode\n", - "Epoch 333: model parameters saved\n", - "Epoch 334 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5623)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5623)\n", - "Epoch 334: avg_loss appended (2.5623)\n", - "Epoch 334: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 334: accuracy appended (18.00%)\n", - "Epoch 334: model set back to train mode\n", - "Epoch 334: model parameters saved\n", - "Epoch 335 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5623)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5623)\n", - "Epoch 335: avg_loss appended (2.5623)\n", - "Epoch 335: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 335: accuracy appended (17.00%)\n", - "Epoch 335: model set back to train mode\n", - "Epoch 335: model parameters saved\n", - "Epoch 336 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5623)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5623)\n", - "Epoch 336: avg_loss appended (2.5623)\n", - "Epoch 336: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 336: accuracy appended (15.00%)\n", - "Epoch 336: model set back to train mode\n", - "Epoch 336: model parameters saved\n", - "Epoch 337 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5623)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5623)\n", - "Epoch 337: avg_loss appended (2.5623)\n", - "Epoch 337: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 337: accuracy appended (15.00%)\n", - "Epoch 337: model set back to train mode\n", - "Epoch 337: model parameters saved\n", - "Epoch 338 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5623)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5623)\n", - "Epoch 338: avg_loss appended (2.5623)\n", - "Epoch 338: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 338: accuracy appended (15.00%)\n", - "Epoch 338: model set back to train mode\n", - "Epoch 338: model parameters saved\n", - "Epoch 339 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5622)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5622)\n", - "Epoch 339: avg_loss appended (2.5622)\n", - "Epoch 339: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=64, total=400)\n", - "Final test accuracy: 16.00%\n", - "Epoch 339: accuracy appended (16.00%)\n", - "Epoch 339: model set back to train mode\n", - "Epoch 339: model parameters saved\n", - "Epoch 340 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5622)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5622)\n", - "Epoch 340: avg_loss appended (2.5622)\n", - "Epoch 340: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 340: accuracy appended (18.00%)\n", - "Epoch 340: model set back to train mode\n", - "Epoch 340: model parameters saved\n", - "Epoch 341 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5622)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5622)\n", - "Epoch 341: avg_loss appended (2.5622)\n", - "Epoch 341: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 341: accuracy appended (18.00%)\n", - "Epoch 341: model set back to train mode\n", - "Epoch 341: model parameters saved\n", - "Epoch 342 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5622)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5622)\n", - "Epoch 342: avg_loss appended (2.5622)\n", - "Epoch 342: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 342: accuracy appended (18.00%)\n", - "Epoch 342: model set back to train mode\n", - "Epoch 342: model parameters saved\n", - "Epoch 343 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5622)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5622)\n", - "Epoch 343: avg_loss appended (2.5622)\n", - "Epoch 343: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 343: accuracy appended (18.00%)\n", - "Epoch 343: model set back to train mode\n", - "Epoch 343: model parameters saved\n", - "Epoch 344 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5622)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5622)\n", - "Epoch 344: avg_loss appended (2.5622)\n", - "Epoch 344: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 344: accuracy appended (18.00%)\n", - "Epoch 344: model set back to train mode\n", - "Epoch 344: model parameters saved\n", - "Epoch 345 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5622)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5622)\n", - "Epoch 345: avg_loss appended (2.5622)\n", - "Epoch 345: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 345: accuracy appended (18.00%)\n", - "Epoch 345: model set back to train mode\n", - "Epoch 345: model parameters saved\n", - "Epoch 346 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5622)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5622)\n", - "Epoch 346: avg_loss appended (2.5622)\n", - "Epoch 346: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 346: accuracy appended (18.00%)\n", - "Epoch 346: model set back to train mode\n", - "Epoch 346: model parameters saved\n", - "Epoch 347 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5621)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5621)\n", - "Epoch 347: avg_loss appended (2.5621)\n", - "Epoch 347: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 347: accuracy appended (18.00%)\n", - "Epoch 347: model set back to train mode\n", - "Epoch 347: model parameters saved\n", - "Epoch 348 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5621)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5621)\n", - "Epoch 348: avg_loss appended (2.5621)\n", - "Epoch 348: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 348: accuracy appended (18.00%)\n", - "Epoch 348: model set back to train mode\n", - "Epoch 348: model parameters saved\n", - "Epoch 349 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5621)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5621)\n", - "Epoch 349: avg_loss appended (2.5621)\n", - "Epoch 349: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 349: accuracy appended (18.00%)\n", - "Epoch 349: model set back to train mode\n", - "Epoch 349: model parameters saved\n", - "Epoch 350 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5621)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5621)\n", - "Epoch 350: avg_loss appended (2.5621)\n", - "Epoch 350: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 350: accuracy appended (18.00%)\n", - "Epoch 350: model set back to train mode\n", - "Epoch 350: model parameters saved\n", - "Epoch 351 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5620)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5620)\n", - "Epoch 351: avg_loss appended (2.5620)\n", - "Epoch 351: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 351: accuracy appended (18.00%)\n", - "Epoch 351: model set back to train mode\n", - "Epoch 351: model parameters saved\n", - "Epoch 352 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5620)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5620)\n", - "Epoch 352: avg_loss appended (2.5620)\n", - "Epoch 352: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 352: accuracy appended (18.00%)\n", - "Epoch 352: model set back to train mode\n", - "Epoch 352: model parameters saved\n", - "Epoch 353 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5620)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5620)\n", - "Epoch 353: avg_loss appended (2.5620)\n", - "Epoch 353: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 353: accuracy appended (18.00%)\n", - "Epoch 353: model set back to train mode\n", - "Epoch 353: model parameters saved\n", - "Epoch 354 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5620)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5620)\n", - "Epoch 354: avg_loss appended (2.5620)\n", - "Epoch 354: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 354: accuracy appended (18.00%)\n", - "Epoch 354: model set back to train mode\n", - "Epoch 354: model parameters saved\n", - "Epoch 355 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5619)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5619)\n", - "Epoch 355: avg_loss appended (2.5619)\n", - "Epoch 355: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 355: accuracy appended (18.00%)\n", - "Epoch 355: model set back to train mode\n", - "Epoch 355: model parameters saved\n", - "Epoch 356 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5619)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5619)\n", - "Epoch 356: avg_loss appended (2.5619)\n", - "Epoch 356: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 356: accuracy appended (18.00%)\n", - "Epoch 356: model set back to train mode\n", - "Epoch 356: model parameters saved\n", - "Epoch 357 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5619)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5619)\n", - "Epoch 357: avg_loss appended (2.5619)\n", - "Epoch 357: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 357: accuracy appended (18.00%)\n", - "Epoch 357: model set back to train mode\n", - "Epoch 357: model parameters saved\n", - "Epoch 358 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5618)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5618)\n", - "Epoch 358: avg_loss appended (2.5618)\n", - "Epoch 358: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 358: accuracy appended (18.00%)\n", - "Epoch 358: model set back to train mode\n", - "Epoch 358: model parameters saved\n", - "Epoch 359 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5618)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5618)\n", - "Epoch 359: avg_loss appended (2.5618)\n", - "Epoch 359: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 359: accuracy appended (18.00%)\n", - "Epoch 359: model set back to train mode\n", - "Epoch 359: model parameters saved\n", - "Epoch 360 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5617)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5617)\n", - "Epoch 360: avg_loss appended (2.5617)\n", - "Epoch 360: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=64, total=400)\n", - "Final test accuracy: 16.00%\n", - "Epoch 360: accuracy appended (16.00%)\n", - "Epoch 360: model set back to train mode\n", - "Epoch 360: model parameters saved\n", - "Epoch 361 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5617)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5617)\n", - "Epoch 361: avg_loss appended (2.5617)\n", - "Epoch 361: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=64, total=400)\n", - "Final test accuracy: 16.00%\n", - "Epoch 361: accuracy appended (16.00%)\n", - "Epoch 361: model set back to train mode\n", - "Epoch 361: model parameters saved\n", - "Epoch 362 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5616)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5616)\n", - "Epoch 362: avg_loss appended (2.5616)\n", - "Epoch 362: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=64, total=400)\n", - "Final test accuracy: 16.00%\n", - "Epoch 362: accuracy appended (16.00%)\n", - "Epoch 362: model set back to train mode\n", - "Epoch 362: model parameters saved\n", - "Epoch 363 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5616)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5616)\n", - "Epoch 363: avg_loss appended (2.5616)\n", - "Epoch 363: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=64, total=400)\n", - "Final test accuracy: 16.00%\n", - "Epoch 363: accuracy appended (16.00%)\n", - "Epoch 363: model set back to train mode\n", - "Epoch 363: model parameters saved\n", - "Epoch 364 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5615)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5615)\n", - "Epoch 364: avg_loss appended (2.5615)\n", - "Epoch 364: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 364: accuracy appended (17.00%)\n", - "Epoch 364: model set back to train mode\n", - "Epoch 364: model parameters saved\n", - "Epoch 365 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5614)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5614)\n", - "Epoch 365: avg_loss appended (2.5614)\n", - "Epoch 365: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 365: accuracy appended (17.00%)\n", - "Epoch 365: model set back to train mode\n", - "Epoch 365: model parameters saved\n", - "Epoch 366 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5614)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5614)\n", - "Epoch 366: avg_loss appended (2.5614)\n", - "Epoch 366: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 366: accuracy appended (18.00%)\n", - "Epoch 366: model set back to train mode\n", - "Epoch 366: model parameters saved\n", - "Epoch 367 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5613)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5613)\n", - "Epoch 367: avg_loss appended (2.5613)\n", - "Epoch 367: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 367: accuracy appended (18.00%)\n", - "Epoch 367: model set back to train mode\n", - "Epoch 367: model parameters saved\n", - "Epoch 368 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5612)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5612)\n", - "Epoch 368: avg_loss appended (2.5612)\n", - "Epoch 368: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 368: accuracy appended (18.00%)\n", - "Epoch 368: model set back to train mode\n", - "Epoch 368: model parameters saved\n", - "Epoch 369 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5611)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5611)\n", - "Epoch 369: avg_loss appended (2.5611)\n", - "Epoch 369: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 369: accuracy appended (18.00%)\n", - "Epoch 369: model set back to train mode\n", - "Epoch 369: model parameters saved\n", - "Epoch 370 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5610)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5610)\n", - "Epoch 370: avg_loss appended (2.5610)\n", - "Epoch 370: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 370: accuracy appended (18.00%)\n", - "Epoch 370: model set back to train mode\n", - "Epoch 370: model parameters saved\n", - "Epoch 371 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5609)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5609)\n", - "Epoch 371: avg_loss appended (2.5609)\n", - "Epoch 371: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 371: accuracy appended (18.00%)\n", - "Epoch 371: model set back to train mode\n", - "Epoch 371: model parameters saved\n", - "Epoch 372 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5607)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5607)\n", - "Epoch 372: avg_loss appended (2.5607)\n", - "Epoch 372: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 372: accuracy appended (18.00%)\n", - "Epoch 372: model set back to train mode\n", - "Epoch 372: model parameters saved\n", - "Epoch 373 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5606)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5606)\n", - "Epoch 373: avg_loss appended (2.5606)\n", - "Epoch 373: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=76, total=400)\n", - "Final test accuracy: 19.00%\n", - "Epoch 373: accuracy appended (19.00%)\n", - "Epoch 373: model set back to train mode\n", - "Epoch 373: model parameters saved\n", - "Epoch 374 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5604)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5604)\n", - "Epoch 374: avg_loss appended (2.5604)\n", - "Epoch 374: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=76, total=400)\n", - "Final test accuracy: 19.00%\n", - "Epoch 374: accuracy appended (19.00%)\n", - "Epoch 374: model set back to train mode\n", - "Epoch 374: model parameters saved\n", - "Epoch 375 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5602)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5602)\n", - "Epoch 375: avg_loss appended (2.5602)\n", - "Epoch 375: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=76, total=400)\n", - "Final test accuracy: 19.00%\n", - "Epoch 375: accuracy appended (19.00%)\n", - "Epoch 375: model set back to train mode\n", - "Epoch 375: model parameters saved\n", - "Epoch 376 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5600)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5600)\n", - "Epoch 376: avg_loss appended (2.5600)\n", - "Epoch 376: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 376: accuracy appended (17.00%)\n", - "Epoch 376: model set back to train mode\n", - "Epoch 376: model parameters saved\n", - "Epoch 377 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5598)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5598)\n", - "Epoch 377: avg_loss appended (2.5598)\n", - "Epoch 377: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 377: accuracy appended (17.00%)\n", - "Epoch 377: model set back to train mode\n", - "Epoch 377: model parameters saved\n", - "Epoch 378 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5596)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5596)\n", - "Epoch 378: avg_loss appended (2.5596)\n", - "Epoch 378: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 378: accuracy appended (17.00%)\n", - "Epoch 378: model set back to train mode\n", - "Epoch 378: model parameters saved\n", - "Epoch 379 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5593)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5593)\n", - "Epoch 379: avg_loss appended (2.5593)\n", - "Epoch 379: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=68, total=400)\n", - "Final test accuracy: 17.00%\n", - "Epoch 379: accuracy appended (17.00%)\n", - "Epoch 379: model set back to train mode\n", - "Epoch 379: model parameters saved\n", - "Epoch 380 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5590)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5590)\n", - "Epoch 380: avg_loss appended (2.5590)\n", - "Epoch 380: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=64, total=400)\n", - "Final test accuracy: 16.00%\n", - "Epoch 380: accuracy appended (16.00%)\n", - "Epoch 380: model set back to train mode\n", - "Epoch 380: model parameters saved\n", - "Epoch 381 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5586)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5586)\n", - "Epoch 381: avg_loss appended (2.5586)\n", - "Epoch 381: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=64, total=400)\n", - "Final test accuracy: 16.00%\n", - "Epoch 381: accuracy appended (16.00%)\n", - "Epoch 381: model set back to train mode\n", - "Epoch 381: model parameters saved\n", - "Epoch 382 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5582)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5582)\n", - "Epoch 382: avg_loss appended (2.5582)\n", - "Epoch 382: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 382: accuracy appended (15.00%)\n", - "Epoch 382: model set back to train mode\n", - "Epoch 382: model parameters saved\n", - "Epoch 383 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5578)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5578)\n", - "Epoch 383: avg_loss appended (2.5578)\n", - "Epoch 383: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 383: accuracy appended (14.00%)\n", - "Epoch 383: model set back to train mode\n", - "Epoch 383: model parameters saved\n", - "Epoch 384 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5572)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5572)\n", - "Epoch 384: avg_loss appended (2.5572)\n", - "Epoch 384: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 384: accuracy appended (14.00%)\n", - "Epoch 384: model set back to train mode\n", - "Epoch 384: model parameters saved\n", - "Epoch 385 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5566)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5566)\n", - "Epoch 385: avg_loss appended (2.5566)\n", - "Epoch 385: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 385: accuracy appended (14.00%)\n", - "Epoch 385: model set back to train mode\n", - "Epoch 385: model parameters saved\n", - "Epoch 386 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5559)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5559)\n", - "Epoch 386: avg_loss appended (2.5559)\n", - "Epoch 386: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 386: accuracy appended (15.00%)\n", - "Epoch 386: model set back to train mode\n", - "Epoch 386: model parameters saved\n", - "Epoch 387 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5552)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5552)\n", - "Epoch 387: avg_loss appended (2.5552)\n", - "Epoch 387: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 387: accuracy appended (15.00%)\n", - "Epoch 387: model set back to train mode\n", - "Epoch 387: model parameters saved\n", - "Epoch 388 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5542)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5542)\n", - "Epoch 388: avg_loss appended (2.5542)\n", - "Epoch 388: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 388: accuracy appended (14.00%)\n", - "Epoch 388: model set back to train mode\n", - "Epoch 388: model parameters saved\n", - "Epoch 389 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5532)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5532)\n", - "Epoch 389: avg_loss appended (2.5532)\n", - "Epoch 389: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 389: accuracy appended (13.00%)\n", - "Epoch 389: model set back to train mode\n", - "Epoch 389: model parameters saved\n", - "Epoch 390 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5519)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5519)\n", - "Epoch 390: avg_loss appended (2.5519)\n", - "Epoch 390: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 390: accuracy appended (12.00%)\n", - "Epoch 390: model set back to train mode\n", - "Epoch 390: model parameters saved\n", - "Epoch 391 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5505)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5505)\n", - "Epoch 391: avg_loss appended (2.5505)\n", - "Epoch 391: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 391: accuracy appended (12.00%)\n", - "Epoch 391: model set back to train mode\n", - "Epoch 391: model parameters saved\n", - "Epoch 392 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5488)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5488)\n", - "Epoch 392: avg_loss appended (2.5488)\n", - "Epoch 392: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 392: accuracy appended (12.00%)\n", - "Epoch 392: model set back to train mode\n", - "Epoch 392: model parameters saved\n", - "Epoch 393 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5468)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5468)\n", - "Epoch 393: avg_loss appended (2.5468)\n", - "Epoch 393: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 393: accuracy appended (12.00%)\n", - "Epoch 393: model set back to train mode\n", - "Epoch 393: model parameters saved\n", - "Epoch 394 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5444)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5444)\n", - "Epoch 394: avg_loss appended (2.5444)\n", - "Epoch 394: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 394: accuracy appended (12.00%)\n", - "Epoch 394: model set back to train mode\n", - "Epoch 394: model parameters saved\n", - "Epoch 395 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5416)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5416)\n", - "Epoch 395: avg_loss appended (2.5416)\n", - "Epoch 395: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=44, total=400)\n", - "Final test accuracy: 11.00%\n", - "Epoch 395: accuracy appended (11.00%)\n", - "Epoch 395: model set back to train mode\n", - "Epoch 395: model parameters saved\n", - "Epoch 396 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5382)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5382)\n", - "Epoch 396: avg_loss appended (2.5382)\n", - "Epoch 396: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=44, total=400)\n", - "Final test accuracy: 11.00%\n", - "Epoch 396: accuracy appended (11.00%)\n", - "Epoch 396: model set back to train mode\n", - "Epoch 396: model parameters saved\n", - "Epoch 397 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5341)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5341)\n", - "Epoch 397: avg_loss appended (2.5341)\n", - "Epoch 397: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=44, total=400)\n", - "Final test accuracy: 11.00%\n", - "Epoch 397: accuracy appended (11.00%)\n", - "Epoch 397: model set back to train mode\n", - "Epoch 397: model parameters saved\n", - "Epoch 398 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5291)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5291)\n", - "Epoch 398: avg_loss appended (2.5291)\n", - "Epoch 398: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=44, total=400)\n", - "Final test accuracy: 11.00%\n", - "Epoch 398: accuracy appended (11.00%)\n", - "Epoch 398: model set back to train mode\n", - "Epoch 398: model parameters saved\n", - "Epoch 399 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5230)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5230)\n", - "Epoch 399: avg_loss appended (2.5230)\n", - "Epoch 399: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=44, total=400)\n", - "Final test accuracy: 11.00%\n", - "Epoch 399: accuracy appended (11.00%)\n", - "Epoch 399: model set back to train mode\n", - "Epoch 399: model parameters saved\n", - "Epoch 400 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5156)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5156)\n", - "Epoch 400: avg_loss appended (2.5156)\n", - "Epoch 400: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=40, total=400)\n", - "Final test accuracy: 10.00%\n", - "Epoch 400: accuracy appended (10.00%)\n", - "Epoch 400: model set back to train mode\n", - "Epoch 400: model parameters saved\n", - "Epoch 400/10000, Loss: 2.5156, Accuracy: 10.00%\n", - "Epoch 401 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.5064)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.5064)\n", - "Epoch 401: avg_loss appended (2.5064)\n", - "Epoch 401: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=40, total=400)\n", - "Final test accuracy: 10.00%\n", - "Epoch 401: accuracy appended (10.00%)\n", - "Epoch 401: model set back to train mode\n", - "Epoch 401: model parameters saved\n", - "Epoch 402 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.4951)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.4951)\n", - "Epoch 402: avg_loss appended (2.4951)\n", - "Epoch 402: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=40, total=400)\n", - "Final test accuracy: 10.00%\n", - "Epoch 402: accuracy appended (10.00%)\n", - "Epoch 402: model set back to train mode\n", - "Epoch 402: model parameters saved\n", - "Epoch 403 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.4810)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.4810)\n", - "Epoch 403: avg_loss appended (2.4810)\n", - "Epoch 403: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=44, total=400)\n", - "Final test accuracy: 11.00%\n", - "Epoch 403: accuracy appended (11.00%)\n", - "Epoch 403: model set back to train mode\n", - "Epoch 403: model parameters saved\n", - "Epoch 404 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.4634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.4634)\n", - "Epoch 404: avg_loss appended (2.4634)\n", - "Epoch 404: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=44, total=400)\n", - "Final test accuracy: 11.00%\n", - "Epoch 404: accuracy appended (11.00%)\n", - "Epoch 404: model set back to train mode\n", - "Epoch 404: model parameters saved\n", - "Epoch 405 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.4415)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.4415)\n", - "Epoch 405: avg_loss appended (2.4415)\n", - "Epoch 405: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 405: accuracy appended (12.00%)\n", - "Epoch 405: model set back to train mode\n", - "Epoch 405: model parameters saved\n", - "Epoch 406 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.4143)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.4143)\n", - "Epoch 406: avg_loss appended (2.4143)\n", - "Epoch 406: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 406: accuracy appended (12.00%)\n", - "Epoch 406: model set back to train mode\n", - "Epoch 406: model parameters saved\n", - "Epoch 407 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.3808)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.3808)\n", - "Epoch 407: avg_loss appended (2.3808)\n", - "Epoch 407: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=48, total=400)\n", - "Final test accuracy: 12.00%\n", - "Epoch 407: accuracy appended (12.00%)\n", - "Epoch 407: model set back to train mode\n", - "Epoch 407: model parameters saved\n", - "Epoch 408 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.3402)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.3402)\n", - "Epoch 408: avg_loss appended (2.3402)\n", - "Epoch 408: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 408: accuracy appended (14.00%)\n", - "Epoch 408: model set back to train mode\n", - "Epoch 408: model parameters saved\n", - "Epoch 409 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.2925)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.2925)\n", - "Epoch 409: avg_loss appended (2.2925)\n", - "Epoch 409: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 409: accuracy appended (14.00%)\n", - "Epoch 409: model set back to train mode\n", - "Epoch 409: model parameters saved\n", - "Epoch 410 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.2390)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.2390)\n", - "Epoch 410: avg_loss appended (2.2390)\n", - "Epoch 410: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=64, total=400)\n", - "Final test accuracy: 16.00%\n", - "Epoch 410: accuracy appended (16.00%)\n", - "Epoch 410: model set back to train mode\n", - "Epoch 410: model parameters saved\n", - "Epoch 411 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.1835)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.1835)\n", - "Epoch 411: avg_loss appended (2.1835)\n", - "Epoch 411: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=64, total=400)\n", - "Final test accuracy: 16.00%\n", - "Epoch 411: accuracy appended (16.00%)\n", - "Epoch 411: model set back to train mode\n", - "Epoch 411: model parameters saved\n", - "Epoch 412 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.1327)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.1327)\n", - "Epoch 412: avg_loss appended (2.1327)\n", - "Epoch 412: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=60, total=400)\n", - "Final test accuracy: 15.00%\n", - "Epoch 412: accuracy appended (15.00%)\n", - "Epoch 412: model set back to train mode\n", - "Epoch 412: model parameters saved\n", - "Epoch 413 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.0951)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.0951)\n", - "Epoch 413: avg_loss appended (2.0951)\n", - "Epoch 413: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=52, total=400)\n", - "Final test accuracy: 13.00%\n", - "Epoch 413: accuracy appended (13.00%)\n", - "Epoch 413: model set back to train mode\n", - "Epoch 413: model parameters saved\n", - "Epoch 414 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.0764)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.0764)\n", - "Epoch 414: avg_loss appended (2.0764)\n", - "Epoch 414: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 414: accuracy appended (14.00%)\n", - "Epoch 414: model set back to train mode\n", - "Epoch 414: model parameters saved\n", - "Epoch 415 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.0745)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.0745)\n", - "Epoch 415: avg_loss appended (2.0745)\n", - "Epoch 415: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 415: accuracy appended (14.00%)\n", - "Epoch 415: model set back to train mode\n", - "Epoch 415: model parameters saved\n", - "Epoch 416 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.0791)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.0791)\n", - "Epoch 416: avg_loss appended (2.0791)\n", - "Epoch 416: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 416: accuracy appended (14.00%)\n", - "Epoch 416: model set back to train mode\n", - "Epoch 416: model parameters saved\n", - "Epoch 417 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.0781)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.0781)\n", - "Epoch 417: avg_loss appended (2.0781)\n", - "Epoch 417: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 417: accuracy appended (14.00%)\n", - "Epoch 417: model set back to train mode\n", - "Epoch 417: model parameters saved\n", - "Epoch 418 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.0638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.0638)\n", - "Epoch 418: avg_loss appended (2.0638)\n", - "Epoch 418: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 418: accuracy appended (18.00%)\n", - "Epoch 418: model set back to train mode\n", - "Epoch 418: model parameters saved\n", - "Epoch 419 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.0354)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.0354)\n", - "Epoch 419: avg_loss appended (2.0354)\n", - "Epoch 419: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=64, total=400)\n", - "Final test accuracy: 16.00%\n", - "Epoch 419: accuracy appended (16.00%)\n", - "Epoch 419: model set back to train mode\n", - "Epoch 419: model parameters saved\n", - "Epoch 420 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (2.0014)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (2.0014)\n", - "Epoch 420: avg_loss appended (2.0014)\n", - "Epoch 420: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 420: accuracy appended (18.00%)\n", - "Epoch 420: model set back to train mode\n", - "Epoch 420: model parameters saved\n", - "Epoch 421 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.9761)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.9761)\n", - "Epoch 421: avg_loss appended (1.9761)\n", - "Epoch 421: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 421: accuracy appended (14.00%)\n", - "Epoch 421: model set back to train mode\n", - "Epoch 421: model parameters saved\n", - "Epoch 422 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.9681)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.9681)\n", - "Epoch 422: avg_loss appended (1.9681)\n", - "Epoch 422: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=56, total=400)\n", - "Final test accuracy: 14.00%\n", - "Epoch 422: accuracy appended (14.00%)\n", - "Epoch 422: model set back to train mode\n", - "Epoch 422: model parameters saved\n", - "Epoch 423 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.9748)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.9748)\n", - "Epoch 423: avg_loss appended (1.9748)\n", - "Epoch 423: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 423: accuracy appended (20.00%)\n", - "Epoch 423: model set back to train mode\n", - "Epoch 423: model parameters saved\n", - "Epoch 424 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.9859)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.9859)\n", - "Epoch 424: avg_loss appended (1.9859)\n", - "Epoch 424: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 424: accuracy appended (20.00%)\n", - "Epoch 424: model set back to train mode\n", - "Epoch 424: model parameters saved\n", - "Epoch 425 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.9904)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.9904)\n", - "Epoch 425: avg_loss appended (1.9904)\n", - "Epoch 425: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 425: accuracy appended (18.00%)\n", - "Epoch 425: model set back to train mode\n", - "Epoch 425: model parameters saved\n", - "Epoch 426 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.9822)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.9822)\n", - "Epoch 426: avg_loss appended (1.9822)\n", - "Epoch 426: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 426: accuracy appended (18.00%)\n", - "Epoch 426: model set back to train mode\n", - "Epoch 426: model parameters saved\n", - "Epoch 427 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.9627)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.9627)\n", - "Epoch 427: avg_loss appended (1.9627)\n", - "Epoch 427: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=72, total=400)\n", - "Final test accuracy: 18.00%\n", - "Epoch 427: accuracy appended (18.00%)\n", - "Epoch 427: model set back to train mode\n", - "Epoch 427: model parameters saved\n", - "Epoch 428 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.9389)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.9389)\n", - "Epoch 428: avg_loss appended (1.9389)\n", - "Epoch 428: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=76, total=400)\n", - "Final test accuracy: 19.00%\n", - "Epoch 428: accuracy appended (19.00%)\n", - "Epoch 428: model set back to train mode\n", - "Epoch 428: model parameters saved\n", - "Epoch 429 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.9183)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.9183)\n", - "Epoch 429: avg_loss appended (1.9183)\n", - "Epoch 429: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 429: accuracy appended (20.00%)\n", - "Epoch 429: model set back to train mode\n", - "Epoch 429: model parameters saved\n", - "Epoch 430 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.9042)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.9042)\n", - "Epoch 430: avg_loss appended (1.9042)\n", - "Epoch 430: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 430: accuracy appended (20.00%)\n", - "Epoch 430: model set back to train mode\n", - "Epoch 430: model parameters saved\n", - "Epoch 431 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.8944)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.8944)\n", - "Epoch 431: avg_loss appended (1.8944)\n", - "Epoch 431: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 431: accuracy appended (20.00%)\n", - "Epoch 431: model set back to train mode\n", - "Epoch 431: model parameters saved\n", - "Epoch 432 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.8848)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.8848)\n", - "Epoch 432: avg_loss appended (1.8848)\n", - "Epoch 432: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 432: accuracy appended (20.00%)\n", - "Epoch 432: model set back to train mode\n", - "Epoch 432: model parameters saved\n", - "Epoch 433 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.8716)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.8716)\n", - "Epoch 433: avg_loss appended (1.8716)\n", - "Epoch 433: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=84, total=400)\n", - "Final test accuracy: 21.00%\n", - "Epoch 433: accuracy appended (21.00%)\n", - "Epoch 433: model set back to train mode\n", - "Epoch 433: model parameters saved\n", - "Epoch 434 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.8498)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.8498)\n", - "Epoch 434: avg_loss appended (1.8498)\n", - "Epoch 434: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 434: accuracy appended (20.00%)\n", - "Epoch 434: model set back to train mode\n", - "Epoch 434: model parameters saved\n", - "Epoch 435 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.8146)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.8146)\n", - "Epoch 435: avg_loss appended (1.8146)\n", - "Epoch 435: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=88, total=400)\n", - "Final test accuracy: 22.00%\n", - "Epoch 435: accuracy appended (22.00%)\n", - "Epoch 435: model set back to train mode\n", - "Epoch 435: model parameters saved\n", - "Epoch 436 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.7685)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.7685)\n", - "Epoch 436: avg_loss appended (1.7685)\n", - "Epoch 436: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=88, total=400)\n", - "Final test accuracy: 22.00%\n", - "Epoch 436: accuracy appended (22.00%)\n", - "Epoch 436: model set back to train mode\n", - "Epoch 436: model parameters saved\n", - "Epoch 437 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.7223)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.7223)\n", - "Epoch 437: avg_loss appended (1.7223)\n", - "Epoch 437: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=88, total=400)\n", - "Final test accuracy: 22.00%\n", - "Epoch 437: accuracy appended (22.00%)\n", - "Epoch 437: model set back to train mode\n", - "Epoch 437: model parameters saved\n", - "Epoch 438 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.6862)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.6862)\n", - "Epoch 438: avg_loss appended (1.6862)\n", - "Epoch 438: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=88, total=400)\n", - "Final test accuracy: 22.00%\n", - "Epoch 438: accuracy appended (22.00%)\n", - "Epoch 438: model set back to train mode\n", - "Epoch 438: model parameters saved\n", - "Epoch 439 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.6661)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.6661)\n", - "Epoch 439: avg_loss appended (1.6661)\n", - "Epoch 439: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=88, total=400)\n", - "Final test accuracy: 22.00%\n", - "Epoch 439: accuracy appended (22.00%)\n", - "Epoch 439: model set back to train mode\n", - "Epoch 439: model parameters saved\n", - "Epoch 440 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.6650)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.6650)\n", - "Epoch 440: avg_loss appended (1.6650)\n", - "Epoch 440: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=88, total=400)\n", - "Final test accuracy: 22.00%\n", - "Epoch 440: accuracy appended (22.00%)\n", - "Epoch 440: model set back to train mode\n", - "Epoch 440: model parameters saved\n", - "Epoch 441 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.6805)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.6805)\n", - "Epoch 441: avg_loss appended (1.6805)\n", - "Epoch 441: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=84, total=400)\n", - "Final test accuracy: 21.00%\n", - "Epoch 441: accuracy appended (21.00%)\n", - "Epoch 441: model set back to train mode\n", - "Epoch 441: model parameters saved\n", - "Epoch 442 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.6977)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.6977)\n", - "Epoch 442: avg_loss appended (1.6977)\n", - "Epoch 442: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 442: accuracy appended (20.00%)\n", - "Epoch 442: model set back to train mode\n", - "Epoch 442: model parameters saved\n", - "Epoch 443 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.6964)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.6964)\n", - "Epoch 443: avg_loss appended (1.6964)\n", - "Epoch 443: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=88, total=400)\n", - "Final test accuracy: 22.00%\n", - "Epoch 443: accuracy appended (22.00%)\n", - "Epoch 443: model set back to train mode\n", - "Epoch 443: model parameters saved\n", - "Epoch 444 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.6739)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.6739)\n", - "Epoch 444: avg_loss appended (1.6739)\n", - "Epoch 444: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=88, total=400)\n", - "Final test accuracy: 22.00%\n", - "Epoch 444: accuracy appended (22.00%)\n", - "Epoch 444: model set back to train mode\n", - "Epoch 444: model parameters saved\n", - "Epoch 445 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.6488)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.6488)\n", - "Epoch 445: avg_loss appended (1.6488)\n", - "Epoch 445: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 445: accuracy appended (20.00%)\n", - "Epoch 445: model set back to train mode\n", - "Epoch 445: model parameters saved\n", - "Epoch 446 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.6364)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.6364)\n", - "Epoch 446: avg_loss appended (1.6364)\n", - "Epoch 446: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 446: accuracy appended (20.00%)\n", - "Epoch 446: model set back to train mode\n", - "Epoch 446: model parameters saved\n", - "Epoch 447 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.6345)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.6345)\n", - "Epoch 447: avg_loss appended (1.6345)\n", - "Epoch 447: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 447: accuracy appended (20.00%)\n", - "Epoch 447: model set back to train mode\n", - "Epoch 447: model parameters saved\n", - "Epoch 448 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.6327)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.6327)\n", - "Epoch 448: avg_loss appended (1.6327)\n", - "Epoch 448: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 448: accuracy appended (20.00%)\n", - "Epoch 448: model set back to train mode\n", - "Epoch 448: model parameters saved\n", - "Epoch 449 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.6275)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.6275)\n", - "Epoch 449: avg_loss appended (1.6275)\n", - "Epoch 449: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 449: accuracy appended (20.00%)\n", - "Epoch 449: model set back to train mode\n", - "Epoch 449: model parameters saved\n", - "Epoch 450 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.6227)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.6227)\n", - "Epoch 450: avg_loss appended (1.6227)\n", - "Epoch 450: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 450: accuracy appended (20.00%)\n", - "Epoch 450: model set back to train mode\n", - "Epoch 450: model parameters saved\n", - "Epoch 451 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.6216)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.6216)\n", - "Epoch 451: avg_loss appended (1.6216)\n", - "Epoch 451: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 451: accuracy appended (20.00%)\n", - "Epoch 451: model set back to train mode\n", - "Epoch 451: model parameters saved\n", - "Epoch 452 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.6231)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.6231)\n", - "Epoch 452: avg_loss appended (1.6231)\n", - "Epoch 452: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=88, total=400)\n", - "Final test accuracy: 22.00%\n", - "Epoch 452: accuracy appended (22.00%)\n", - "Epoch 452: model set back to train mode\n", - "Epoch 452: model parameters saved\n", - "Epoch 453 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.6242)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.6242)\n", - "Epoch 453: avg_loss appended (1.6242)\n", - "Epoch 453: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=88, total=400)\n", - "Final test accuracy: 22.00%\n", - "Epoch 453: accuracy appended (22.00%)\n", - "Epoch 453: model set back to train mode\n", - "Epoch 453: model parameters saved\n", - "Epoch 454 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.6228)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.6228)\n", - "Epoch 454: avg_loss appended (1.6228)\n", - "Epoch 454: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=88, total=400)\n", - "Final test accuracy: 22.00%\n", - "Epoch 454: accuracy appended (22.00%)\n", - "Epoch 454: model set back to train mode\n", - "Epoch 454: model parameters saved\n", - "Epoch 455 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.6181)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.6181)\n", - "Epoch 455: avg_loss appended (1.6181)\n", - "Epoch 455: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=88, total=400)\n", - "Final test accuracy: 22.00%\n", - "Epoch 455: accuracy appended (22.00%)\n", - "Epoch 455: model set back to train mode\n", - "Epoch 455: model parameters saved\n", - "Epoch 456 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.6109)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.6109)\n", - "Epoch 456: avg_loss appended (1.6109)\n", - "Epoch 456: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=88, total=400)\n", - "Final test accuracy: 22.00%\n", - "Epoch 456: accuracy appended (22.00%)\n", - "Epoch 456: model set back to train mode\n", - "Epoch 456: model parameters saved\n", - "Epoch 457 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.6031)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.6031)\n", - "Epoch 457: avg_loss appended (1.6031)\n", - "Epoch 457: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=88, total=400)\n", - "Final test accuracy: 22.00%\n", - "Epoch 457: accuracy appended (22.00%)\n", - "Epoch 457: model set back to train mode\n", - "Epoch 457: model parameters saved\n", - "Epoch 458 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5972)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5972)\n", - "Epoch 458: avg_loss appended (1.5972)\n", - "Epoch 458: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 458: accuracy appended (20.00%)\n", - "Epoch 458: model set back to train mode\n", - "Epoch 458: model parameters saved\n", - "Epoch 459 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5946)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5946)\n", - "Epoch 459: avg_loss appended (1.5946)\n", - "Epoch 459: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 459: accuracy appended (20.00%)\n", - "Epoch 459: model set back to train mode\n", - "Epoch 459: model parameters saved\n", - "Epoch 460 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5948)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5948)\n", - "Epoch 460: avg_loss appended (1.5948)\n", - "Epoch 460: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 460: accuracy appended (20.00%)\n", - "Epoch 460: model set back to train mode\n", - "Epoch 460: model parameters saved\n", - "Epoch 461 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5957)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5957)\n", - "Epoch 461: avg_loss appended (1.5957)\n", - "Epoch 461: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 461: accuracy appended (20.00%)\n", - "Epoch 461: model set back to train mode\n", - "Epoch 461: model parameters saved\n", - "Epoch 462 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5954)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5954)\n", - "Epoch 462: avg_loss appended (1.5954)\n", - "Epoch 462: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 462: accuracy appended (20.00%)\n", - "Epoch 462: model set back to train mode\n", - "Epoch 462: model parameters saved\n", - "Epoch 463 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5938)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5938)\n", - "Epoch 463: avg_loss appended (1.5938)\n", - "Epoch 463: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 463: accuracy appended (20.00%)\n", - "Epoch 463: model set back to train mode\n", - "Epoch 463: model parameters saved\n", - "Epoch 464 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5914)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5914)\n", - "Epoch 464: avg_loss appended (1.5914)\n", - "Epoch 464: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 464: accuracy appended (20.00%)\n", - "Epoch 464: model set back to train mode\n", - "Epoch 464: model parameters saved\n", - "Epoch 465 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5892)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5892)\n", - "Epoch 465: avg_loss appended (1.5892)\n", - "Epoch 465: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 465: accuracy appended (20.00%)\n", - "Epoch 465: model set back to train mode\n", - "Epoch 465: model parameters saved\n", - "Epoch 466 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5875)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5875)\n", - "Epoch 466: avg_loss appended (1.5875)\n", - "Epoch 466: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 466: accuracy appended (20.00%)\n", - "Epoch 466: model set back to train mode\n", - "Epoch 466: model parameters saved\n", - "Epoch 467 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5862)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5862)\n", - "Epoch 467: avg_loss appended (1.5862)\n", - "Epoch 467: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 467: accuracy appended (20.00%)\n", - "Epoch 467: model set back to train mode\n", - "Epoch 467: model parameters saved\n", - "Epoch 468 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5851)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5851)\n", - "Epoch 468: avg_loss appended (1.5851)\n", - "Epoch 468: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 468: accuracy appended (20.00%)\n", - "Epoch 468: model set back to train mode\n", - "Epoch 468: model parameters saved\n", - "Epoch 469 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5843)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5843)\n", - "Epoch 469: avg_loss appended (1.5843)\n", - "Epoch 469: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 469: accuracy appended (20.00%)\n", - "Epoch 469: model set back to train mode\n", - "Epoch 469: model parameters saved\n", - "Epoch 470 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5839)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5839)\n", - "Epoch 470: avg_loss appended (1.5839)\n", - "Epoch 470: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 470: accuracy appended (20.00%)\n", - "Epoch 470: model set back to train mode\n", - "Epoch 470: model parameters saved\n", - "Epoch 471 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5838)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5838)\n", - "Epoch 471: avg_loss appended (1.5838)\n", - "Epoch 471: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 471: accuracy appended (20.00%)\n", - "Epoch 471: model set back to train mode\n", - "Epoch 471: model parameters saved\n", - "Epoch 472 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5836)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5836)\n", - "Epoch 472: avg_loss appended (1.5836)\n", - "Epoch 472: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 472: accuracy appended (20.00%)\n", - "Epoch 472: model set back to train mode\n", - "Epoch 472: model parameters saved\n", - "Epoch 473 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5828)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5828)\n", - "Epoch 473: avg_loss appended (1.5828)\n", - "Epoch 473: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 473: accuracy appended (20.00%)\n", - "Epoch 473: model set back to train mode\n", - "Epoch 473: model parameters saved\n", - "Epoch 474 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5813)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5813)\n", - "Epoch 474: avg_loss appended (1.5813)\n", - "Epoch 474: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 474: accuracy appended (20.00%)\n", - "Epoch 474: model set back to train mode\n", - "Epoch 474: model parameters saved\n", - "Epoch 475 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5797)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5797)\n", - "Epoch 475: avg_loss appended (1.5797)\n", - "Epoch 475: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 475: accuracy appended (20.00%)\n", - "Epoch 475: model set back to train mode\n", - "Epoch 475: model parameters saved\n", - "Epoch 476 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5786)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5786)\n", - "Epoch 476: avg_loss appended (1.5786)\n", - "Epoch 476: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 476: accuracy appended (20.00%)\n", - "Epoch 476: model set back to train mode\n", - "Epoch 476: model parameters saved\n", - "Epoch 477 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5782)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5782)\n", - "Epoch 477: avg_loss appended (1.5782)\n", - "Epoch 477: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 477: accuracy appended (20.00%)\n", - "Epoch 477: model set back to train mode\n", - "Epoch 477: model parameters saved\n", - "Epoch 478 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5784)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5784)\n", - "Epoch 478: avg_loss appended (1.5784)\n", - "Epoch 478: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 478: accuracy appended (20.00%)\n", - "Epoch 478: model set back to train mode\n", - "Epoch 478: model parameters saved\n", - "Epoch 479 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5785)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5785)\n", - "Epoch 479: avg_loss appended (1.5785)\n", - "Epoch 479: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 479: accuracy appended (20.00%)\n", - "Epoch 479: model set back to train mode\n", - "Epoch 479: model parameters saved\n", - "Epoch 480 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5782)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5782)\n", - "Epoch 480: avg_loss appended (1.5782)\n", - "Epoch 480: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 480: accuracy appended (20.00%)\n", - "Epoch 480: model set back to train mode\n", - "Epoch 480: model parameters saved\n", - "Epoch 481 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5776)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5776)\n", - "Epoch 481: avg_loss appended (1.5776)\n", - "Epoch 481: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 481: accuracy appended (20.00%)\n", - "Epoch 481: model set back to train mode\n", - "Epoch 481: model parameters saved\n", - "Epoch 482 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5769)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5769)\n", - "Epoch 482: avg_loss appended (1.5769)\n", - "Epoch 482: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 482: accuracy appended (20.00%)\n", - "Epoch 482: model set back to train mode\n", - "Epoch 482: model parameters saved\n", - "Epoch 483 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5763)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5763)\n", - "Epoch 483: avg_loss appended (1.5763)\n", - "Epoch 483: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 483: accuracy appended (20.00%)\n", - "Epoch 483: model set back to train mode\n", - "Epoch 483: model parameters saved\n", - "Epoch 484 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5759)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5759)\n", - "Epoch 484: avg_loss appended (1.5759)\n", - "Epoch 484: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 484: accuracy appended (20.00%)\n", - "Epoch 484: model set back to train mode\n", - "Epoch 484: model parameters saved\n", - "Epoch 485 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5756)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5756)\n", - "Epoch 485: avg_loss appended (1.5756)\n", - "Epoch 485: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 485: accuracy appended (20.00%)\n", - "Epoch 485: model set back to train mode\n", - "Epoch 485: model parameters saved\n", - "Epoch 486 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5754)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5754)\n", - "Epoch 486: avg_loss appended (1.5754)\n", - "Epoch 486: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 486: accuracy appended (20.00%)\n", - "Epoch 486: model set back to train mode\n", - "Epoch 486: model parameters saved\n", - "Epoch 487 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5752)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5752)\n", - "Epoch 487: avg_loss appended (1.5752)\n", - "Epoch 487: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 487: accuracy appended (20.00%)\n", - "Epoch 487: model set back to train mode\n", - "Epoch 487: model parameters saved\n", - "Epoch 488 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5750)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5750)\n", - "Epoch 488: avg_loss appended (1.5750)\n", - "Epoch 488: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 488: accuracy appended (20.00%)\n", - "Epoch 488: model set back to train mode\n", - "Epoch 488: model parameters saved\n", - "Epoch 489 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5749)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5749)\n", - "Epoch 489: avg_loss appended (1.5749)\n", - "Epoch 489: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 489: accuracy appended (20.00%)\n", - "Epoch 489: model set back to train mode\n", - "Epoch 489: model parameters saved\n", - "Epoch 490 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5747)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5747)\n", - "Epoch 490: avg_loss appended (1.5747)\n", - "Epoch 490: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 490: accuracy appended (20.00%)\n", - "Epoch 490: model set back to train mode\n", - "Epoch 490: model parameters saved\n", - "Epoch 491 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5743)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5743)\n", - "Epoch 491: avg_loss appended (1.5743)\n", - "Epoch 491: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 491: accuracy appended (20.00%)\n", - "Epoch 491: model set back to train mode\n", - "Epoch 491: model parameters saved\n", - "Epoch 492 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5740)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5740)\n", - "Epoch 492: avg_loss appended (1.5740)\n", - "Epoch 492: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 492: accuracy appended (20.00%)\n", - "Epoch 492: model set back to train mode\n", - "Epoch 492: model parameters saved\n", - "Epoch 493 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5736)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5736)\n", - "Epoch 493: avg_loss appended (1.5736)\n", - "Epoch 493: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 493: accuracy appended (20.00%)\n", - "Epoch 493: model set back to train mode\n", - "Epoch 493: model parameters saved\n", - "Epoch 494 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5733)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5733)\n", - "Epoch 494: avg_loss appended (1.5733)\n", - "Epoch 494: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 494: accuracy appended (20.00%)\n", - "Epoch 494: model set back to train mode\n", - "Epoch 494: model parameters saved\n", - "Epoch 495 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5732)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5732)\n", - "Epoch 495: avg_loss appended (1.5732)\n", - "Epoch 495: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 495: accuracy appended (20.00%)\n", - "Epoch 495: model set back to train mode\n", - "Epoch 495: model parameters saved\n", - "Epoch 496 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5730)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5730)\n", - "Epoch 496: avg_loss appended (1.5730)\n", - "Epoch 496: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 496: accuracy appended (20.00%)\n", - "Epoch 496: model set back to train mode\n", - "Epoch 496: model parameters saved\n", - "Epoch 497 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5729)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5729)\n", - "Epoch 497: avg_loss appended (1.5729)\n", - "Epoch 497: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 497: accuracy appended (20.00%)\n", - "Epoch 497: model set back to train mode\n", - "Epoch 497: model parameters saved\n", - "Epoch 498 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5728)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5728)\n", - "Epoch 498: avg_loss appended (1.5728)\n", - "Epoch 498: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 498: accuracy appended (20.00%)\n", - "Epoch 498: model set back to train mode\n", - "Epoch 498: model parameters saved\n", - "Epoch 499 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5726)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5726)\n", - "Epoch 499: avg_loss appended (1.5726)\n", - "Epoch 499: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 499: accuracy appended (20.00%)\n", - "Epoch 499: model set back to train mode\n", - "Epoch 499: model parameters saved\n", - "Epoch 500 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5724)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5724)\n", - "Epoch 500: avg_loss appended (1.5724)\n", - "Epoch 500: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 500: accuracy appended (20.00%)\n", - "Epoch 500: model set back to train mode\n", - "Epoch 500: model parameters saved\n", - "Epoch 500/10000, Loss: 1.5724, Accuracy: 20.00%\n", - "Epoch 501 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5722)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5722)\n", - "Epoch 501: avg_loss appended (1.5722)\n", - "Epoch 501: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 501: accuracy appended (20.00%)\n", - "Epoch 501: model set back to train mode\n", - "Epoch 501: model parameters saved\n", - "Epoch 502 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5720)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5720)\n", - "Epoch 502: avg_loss appended (1.5720)\n", - "Epoch 502: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 502: accuracy appended (20.00%)\n", - "Epoch 502: model set back to train mode\n", - "Epoch 502: model parameters saved\n", - "Epoch 503 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5718)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5718)\n", - "Epoch 503: avg_loss appended (1.5718)\n", - "Epoch 503: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 503: accuracy appended (20.00%)\n", - "Epoch 503: model set back to train mode\n", - "Epoch 503: model parameters saved\n", - "Epoch 504 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5717)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5717)\n", - "Epoch 504: avg_loss appended (1.5717)\n", - "Epoch 504: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 504: accuracy appended (20.00%)\n", - "Epoch 504: model set back to train mode\n", - "Epoch 504: model parameters saved\n", - "Epoch 505 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5716)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5716)\n", - "Epoch 505: avg_loss appended (1.5716)\n", - "Epoch 505: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 505: accuracy appended (20.00%)\n", - "Epoch 505: model set back to train mode\n", - "Epoch 505: model parameters saved\n", - "Epoch 506 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5715)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5715)\n", - "Epoch 506: avg_loss appended (1.5715)\n", - "Epoch 506: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 506: accuracy appended (20.00%)\n", - "Epoch 506: model set back to train mode\n", - "Epoch 506: model parameters saved\n", - "Epoch 507 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5714)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5714)\n", - "Epoch 507: avg_loss appended (1.5714)\n", - "Epoch 507: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 507: accuracy appended (20.00%)\n", - "Epoch 507: model set back to train mode\n", - "Epoch 507: model parameters saved\n", - "Epoch 508 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5712)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5712)\n", - "Epoch 508: avg_loss appended (1.5712)\n", - "Epoch 508: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 508: accuracy appended (20.00%)\n", - "Epoch 508: model set back to train mode\n", - "Epoch 508: model parameters saved\n", - "Epoch 509 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5711)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5711)\n", - "Epoch 509: avg_loss appended (1.5711)\n", - "Epoch 509: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 509: accuracy appended (20.00%)\n", - "Epoch 509: model set back to train mode\n", - "Epoch 509: model parameters saved\n", - "Epoch 510 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5709)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5709)\n", - "Epoch 510: avg_loss appended (1.5709)\n", - "Epoch 510: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 510: accuracy appended (20.00%)\n", - "Epoch 510: model set back to train mode\n", - "Epoch 510: model parameters saved\n", - "Epoch 511 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5708)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5708)\n", - "Epoch 511: avg_loss appended (1.5708)\n", - "Epoch 511: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 511: accuracy appended (20.00%)\n", - "Epoch 511: model set back to train mode\n", - "Epoch 511: model parameters saved\n", - "Epoch 512 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5707)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5707)\n", - "Epoch 512: avg_loss appended (1.5707)\n", - "Epoch 512: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 512: accuracy appended (20.00%)\n", - "Epoch 512: model set back to train mode\n", - "Epoch 512: model parameters saved\n", - "Epoch 513 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5706)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5706)\n", - "Epoch 513: avg_loss appended (1.5706)\n", - "Epoch 513: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 513: accuracy appended (20.00%)\n", - "Epoch 513: model set back to train mode\n", - "Epoch 513: model parameters saved\n", - "Epoch 514 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5705)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5705)\n", - "Epoch 514: avg_loss appended (1.5705)\n", - "Epoch 514: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 514: accuracy appended (20.00%)\n", - "Epoch 514: model set back to train mode\n", - "Epoch 514: model parameters saved\n", - "Epoch 515 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5704)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5704)\n", - "Epoch 515: avg_loss appended (1.5704)\n", - "Epoch 515: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 515: accuracy appended (20.00%)\n", - "Epoch 515: model set back to train mode\n", - "Epoch 515: model parameters saved\n", - "Epoch 516 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5703)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5703)\n", - "Epoch 516: avg_loss appended (1.5703)\n", - "Epoch 516: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 516: accuracy appended (20.00%)\n", - "Epoch 516: model set back to train mode\n", - "Epoch 516: model parameters saved\n", - "Epoch 517 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5702)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5702)\n", - "Epoch 517: avg_loss appended (1.5702)\n", - "Epoch 517: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 517: accuracy appended (20.00%)\n", - "Epoch 517: model set back to train mode\n", - "Epoch 517: model parameters saved\n", - "Epoch 518 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5701)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5701)\n", - "Epoch 518: avg_loss appended (1.5701)\n", - "Epoch 518: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 518: accuracy appended (20.00%)\n", - "Epoch 518: model set back to train mode\n", - "Epoch 518: model parameters saved\n", - "Epoch 519 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5700)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5700)\n", - "Epoch 519: avg_loss appended (1.5700)\n", - "Epoch 519: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 519: accuracy appended (20.00%)\n", - "Epoch 519: model set back to train mode\n", - "Epoch 519: model parameters saved\n", - "Epoch 520 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5699)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5699)\n", - "Epoch 520: avg_loss appended (1.5699)\n", - "Epoch 520: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 520: accuracy appended (20.00%)\n", - "Epoch 520: model set back to train mode\n", - "Epoch 520: model parameters saved\n", - "Epoch 521 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5698)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5698)\n", - "Epoch 521: avg_loss appended (1.5698)\n", - "Epoch 521: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 521: accuracy appended (20.00%)\n", - "Epoch 521: model set back to train mode\n", - "Epoch 521: model parameters saved\n", - "Epoch 522 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5697)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5697)\n", - "Epoch 522: avg_loss appended (1.5697)\n", - "Epoch 522: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 522: accuracy appended (20.00%)\n", - "Epoch 522: model set back to train mode\n", - "Epoch 522: model parameters saved\n", - "Epoch 523 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5697)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5697)\n", - "Epoch 523: avg_loss appended (1.5697)\n", - "Epoch 523: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 523: accuracy appended (20.00%)\n", - "Epoch 523: model set back to train mode\n", - "Epoch 523: model parameters saved\n", - "Epoch 524 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5696)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5696)\n", - "Epoch 524: avg_loss appended (1.5696)\n", - "Epoch 524: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 524: accuracy appended (20.00%)\n", - "Epoch 524: model set back to train mode\n", - "Epoch 524: model parameters saved\n", - "Epoch 525 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5695)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5695)\n", - "Epoch 525: avg_loss appended (1.5695)\n", - "Epoch 525: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 525: accuracy appended (20.00%)\n", - "Epoch 525: model set back to train mode\n", - "Epoch 525: model parameters saved\n", - "Epoch 526 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5694)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5694)\n", - "Epoch 526: avg_loss appended (1.5694)\n", - "Epoch 526: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 526: accuracy appended (20.00%)\n", - "Epoch 526: model set back to train mode\n", - "Epoch 526: model parameters saved\n", - "Epoch 527 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5694)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5694)\n", - "Epoch 527: avg_loss appended (1.5694)\n", - "Epoch 527: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 527: accuracy appended (20.00%)\n", - "Epoch 527: model set back to train mode\n", - "Epoch 527: model parameters saved\n", - "Epoch 528 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5693)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5693)\n", - "Epoch 528: avg_loss appended (1.5693)\n", - "Epoch 528: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 528: accuracy appended (20.00%)\n", - "Epoch 528: model set back to train mode\n", - "Epoch 528: model parameters saved\n", - "Epoch 529 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5692)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5692)\n", - "Epoch 529: avg_loss appended (1.5692)\n", - "Epoch 529: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 529: accuracy appended (20.00%)\n", - "Epoch 529: model set back to train mode\n", - "Epoch 529: model parameters saved\n", - "Epoch 530 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5691)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5691)\n", - "Epoch 530: avg_loss appended (1.5691)\n", - "Epoch 530: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 530: accuracy appended (20.00%)\n", - "Epoch 530: model set back to train mode\n", - "Epoch 530: model parameters saved\n", - "Epoch 531 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5691)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5691)\n", - "Epoch 531: avg_loss appended (1.5691)\n", - "Epoch 531: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 531: accuracy appended (20.00%)\n", - "Epoch 531: model set back to train mode\n", - "Epoch 531: model parameters saved\n", - "Epoch 532 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5690)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5690)\n", - "Epoch 532: avg_loss appended (1.5690)\n", - "Epoch 532: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 532: accuracy appended (20.00%)\n", - "Epoch 532: model set back to train mode\n", - "Epoch 532: model parameters saved\n", - "Epoch 533 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5690)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5690)\n", - "Epoch 533: avg_loss appended (1.5690)\n", - "Epoch 533: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 533: accuracy appended (20.00%)\n", - "Epoch 533: model set back to train mode\n", - "Epoch 533: model parameters saved\n", - "Epoch 534 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5689)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5689)\n", - "Epoch 534: avg_loss appended (1.5689)\n", - "Epoch 534: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 534: accuracy appended (20.00%)\n", - "Epoch 534: model set back to train mode\n", - "Epoch 534: model parameters saved\n", - "Epoch 535 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5688)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5688)\n", - "Epoch 535: avg_loss appended (1.5688)\n", - "Epoch 535: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 535: accuracy appended (20.00%)\n", - "Epoch 535: model set back to train mode\n", - "Epoch 535: model parameters saved\n", - "Epoch 536 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5688)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5688)\n", - "Epoch 536: avg_loss appended (1.5688)\n", - "Epoch 536: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 536: accuracy appended (20.00%)\n", - "Epoch 536: model set back to train mode\n", - "Epoch 536: model parameters saved\n", - "Epoch 537 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5687)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5687)\n", - "Epoch 537: avg_loss appended (1.5687)\n", - "Epoch 537: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 537: accuracy appended (20.00%)\n", - "Epoch 537: model set back to train mode\n", - "Epoch 537: model parameters saved\n", - "Epoch 538 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5687)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5687)\n", - "Epoch 538: avg_loss appended (1.5687)\n", - "Epoch 538: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 538: accuracy appended (20.00%)\n", - "Epoch 538: model set back to train mode\n", - "Epoch 538: model parameters saved\n", - "Epoch 539 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5686)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5686)\n", - "Epoch 539: avg_loss appended (1.5686)\n", - "Epoch 539: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 539: accuracy appended (20.00%)\n", - "Epoch 539: model set back to train mode\n", - "Epoch 539: model parameters saved\n", - "Epoch 540 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5685)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5685)\n", - "Epoch 540: avg_loss appended (1.5685)\n", - "Epoch 540: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 540: accuracy appended (20.00%)\n", - "Epoch 540: model set back to train mode\n", - "Epoch 540: model parameters saved\n", - "Epoch 541 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5685)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5685)\n", - "Epoch 541: avg_loss appended (1.5685)\n", - "Epoch 541: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 541: accuracy appended (20.00%)\n", - "Epoch 541: model set back to train mode\n", - "Epoch 541: model parameters saved\n", - "Epoch 542 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5684)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5684)\n", - "Epoch 542: avg_loss appended (1.5684)\n", - "Epoch 542: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 542: accuracy appended (20.00%)\n", - "Epoch 542: model set back to train mode\n", - "Epoch 542: model parameters saved\n", - "Epoch 543 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5684)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5684)\n", - "Epoch 543: avg_loss appended (1.5684)\n", - "Epoch 543: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 543: accuracy appended (20.00%)\n", - "Epoch 543: model set back to train mode\n", - "Epoch 543: model parameters saved\n", - "Epoch 544 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5683)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5683)\n", - "Epoch 544: avg_loss appended (1.5683)\n", - "Epoch 544: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 544: accuracy appended (20.00%)\n", - "Epoch 544: model set back to train mode\n", - "Epoch 544: model parameters saved\n", - "Epoch 545 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5683)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5683)\n", - "Epoch 545: avg_loss appended (1.5683)\n", - "Epoch 545: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 545: accuracy appended (20.00%)\n", - "Epoch 545: model set back to train mode\n", - "Epoch 545: model parameters saved\n", - "Epoch 546 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5682)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5682)\n", - "Epoch 546: avg_loss appended (1.5682)\n", - "Epoch 546: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 546: accuracy appended (20.00%)\n", - "Epoch 546: model set back to train mode\n", - "Epoch 546: model parameters saved\n", - "Epoch 547 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5682)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5682)\n", - "Epoch 547: avg_loss appended (1.5682)\n", - "Epoch 547: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 547: accuracy appended (20.00%)\n", - "Epoch 547: model set back to train mode\n", - "Epoch 547: model parameters saved\n", - "Epoch 548 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5682)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5682)\n", - "Epoch 548: avg_loss appended (1.5682)\n", - "Epoch 548: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 548: accuracy appended (20.00%)\n", - "Epoch 548: model set back to train mode\n", - "Epoch 548: model parameters saved\n", - "Epoch 549 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5681)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5681)\n", - "Epoch 549: avg_loss appended (1.5681)\n", - "Epoch 549: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 549: accuracy appended (20.00%)\n", - "Epoch 549: model set back to train mode\n", - "Epoch 549: model parameters saved\n", - "Epoch 550 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5681)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5681)\n", - "Epoch 550: avg_loss appended (1.5681)\n", - "Epoch 550: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 550: accuracy appended (20.00%)\n", - "Epoch 550: model set back to train mode\n", - "Epoch 550: model parameters saved\n", - "Epoch 551 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5680)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5680)\n", - "Epoch 551: avg_loss appended (1.5680)\n", - "Epoch 551: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 551: accuracy appended (20.00%)\n", - "Epoch 551: model set back to train mode\n", - "Epoch 551: model parameters saved\n", - "Epoch 552 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5680)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5680)\n", - "Epoch 552: avg_loss appended (1.5680)\n", - "Epoch 552: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 552: accuracy appended (20.00%)\n", - "Epoch 552: model set back to train mode\n", - "Epoch 552: model parameters saved\n", - "Epoch 553 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5679)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5679)\n", - "Epoch 553: avg_loss appended (1.5679)\n", - "Epoch 553: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 553: accuracy appended (20.00%)\n", - "Epoch 553: model set back to train mode\n", - "Epoch 553: model parameters saved\n", - "Epoch 554 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5679)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5679)\n", - "Epoch 554: avg_loss appended (1.5679)\n", - "Epoch 554: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 554: accuracy appended (20.00%)\n", - "Epoch 554: model set back to train mode\n", - "Epoch 554: model parameters saved\n", - "Epoch 555 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5679)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5679)\n", - "Epoch 555: avg_loss appended (1.5679)\n", - "Epoch 555: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 555: accuracy appended (20.00%)\n", - "Epoch 555: model set back to train mode\n", - "Epoch 555: model parameters saved\n", - "Epoch 556 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5678)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5678)\n", - "Epoch 556: avg_loss appended (1.5678)\n", - "Epoch 556: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 556: accuracy appended (20.00%)\n", - "Epoch 556: model set back to train mode\n", - "Epoch 556: model parameters saved\n", - "Epoch 557 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5678)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5678)\n", - "Epoch 557: avg_loss appended (1.5678)\n", - "Epoch 557: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 557: accuracy appended (20.00%)\n", - "Epoch 557: model set back to train mode\n", - "Epoch 557: model parameters saved\n", - "Epoch 558 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5677)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5677)\n", - "Epoch 558: avg_loss appended (1.5677)\n", - "Epoch 558: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 558: accuracy appended (20.00%)\n", - "Epoch 558: model set back to train mode\n", - "Epoch 558: model parameters saved\n", - "Epoch 559 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5677)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5677)\n", - "Epoch 559: avg_loss appended (1.5677)\n", - "Epoch 559: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 559: accuracy appended (20.00%)\n", - "Epoch 559: model set back to train mode\n", - "Epoch 559: model parameters saved\n", - "Epoch 560 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5677)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5677)\n", - "Epoch 560: avg_loss appended (1.5677)\n", - "Epoch 560: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 560: accuracy appended (20.00%)\n", - "Epoch 560: model set back to train mode\n", - "Epoch 560: model parameters saved\n", - "Epoch 561 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5676)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5676)\n", - "Epoch 561: avg_loss appended (1.5676)\n", - "Epoch 561: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 561: accuracy appended (20.00%)\n", - "Epoch 561: model set back to train mode\n", - "Epoch 561: model parameters saved\n", - "Epoch 562 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5676)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5676)\n", - "Epoch 562: avg_loss appended (1.5676)\n", - "Epoch 562: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 562: accuracy appended (20.00%)\n", - "Epoch 562: model set back to train mode\n", - "Epoch 562: model parameters saved\n", - "Epoch 563 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5676)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5676)\n", - "Epoch 563: avg_loss appended (1.5676)\n", - "Epoch 563: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 563: accuracy appended (20.00%)\n", - "Epoch 563: model set back to train mode\n", - "Epoch 563: model parameters saved\n", - "Epoch 564 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5675)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5675)\n", - "Epoch 564: avg_loss appended (1.5675)\n", - "Epoch 564: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 564: accuracy appended (20.00%)\n", - "Epoch 564: model set back to train mode\n", - "Epoch 564: model parameters saved\n", - "Epoch 565 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5675)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5675)\n", - "Epoch 565: avg_loss appended (1.5675)\n", - "Epoch 565: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 565: accuracy appended (20.00%)\n", - "Epoch 565: model set back to train mode\n", - "Epoch 565: model parameters saved\n", - "Epoch 566 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5674)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5674)\n", - "Epoch 566: avg_loss appended (1.5674)\n", - "Epoch 566: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 566: accuracy appended (20.00%)\n", - "Epoch 566: model set back to train mode\n", - "Epoch 566: model parameters saved\n", - "Epoch 567 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5674)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5674)\n", - "Epoch 567: avg_loss appended (1.5674)\n", - "Epoch 567: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 567: accuracy appended (20.00%)\n", - "Epoch 567: model set back to train mode\n", - "Epoch 567: model parameters saved\n", - "Epoch 568 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5674)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5674)\n", - "Epoch 568: avg_loss appended (1.5674)\n", - "Epoch 568: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 568: accuracy appended (20.00%)\n", - "Epoch 568: model set back to train mode\n", - "Epoch 568: model parameters saved\n", - "Epoch 569 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5673)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5673)\n", - "Epoch 569: avg_loss appended (1.5673)\n", - "Epoch 569: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 569: accuracy appended (20.00%)\n", - "Epoch 569: model set back to train mode\n", - "Epoch 569: model parameters saved\n", - "Epoch 570 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5673)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5673)\n", - "Epoch 570: avg_loss appended (1.5673)\n", - "Epoch 570: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 570: accuracy appended (20.00%)\n", - "Epoch 570: model set back to train mode\n", - "Epoch 570: model parameters saved\n", - "Epoch 571 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5673)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5673)\n", - "Epoch 571: avg_loss appended (1.5673)\n", - "Epoch 571: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 571: accuracy appended (20.00%)\n", - "Epoch 571: model set back to train mode\n", - "Epoch 571: model parameters saved\n", - "Epoch 572 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5673)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5673)\n", - "Epoch 572: avg_loss appended (1.5673)\n", - "Epoch 572: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 572: accuracy appended (20.00%)\n", - "Epoch 572: model set back to train mode\n", - "Epoch 572: model parameters saved\n", - "Epoch 573 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5672)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5672)\n", - "Epoch 573: avg_loss appended (1.5672)\n", - "Epoch 573: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 573: accuracy appended (20.00%)\n", - "Epoch 573: model set back to train mode\n", - "Epoch 573: model parameters saved\n", - "Epoch 574 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5672)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5672)\n", - "Epoch 574: avg_loss appended (1.5672)\n", - "Epoch 574: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 574: accuracy appended (20.00%)\n", - "Epoch 574: model set back to train mode\n", - "Epoch 574: model parameters saved\n", - "Epoch 575 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5672)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5672)\n", - "Epoch 575: avg_loss appended (1.5672)\n", - "Epoch 575: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 575: accuracy appended (20.00%)\n", - "Epoch 575: model set back to train mode\n", - "Epoch 575: model parameters saved\n", - "Epoch 576 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5671)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5671)\n", - "Epoch 576: avg_loss appended (1.5671)\n", - "Epoch 576: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 576: accuracy appended (20.00%)\n", - "Epoch 576: model set back to train mode\n", - "Epoch 576: model parameters saved\n", - "Epoch 577 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5671)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5671)\n", - "Epoch 577: avg_loss appended (1.5671)\n", - "Epoch 577: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 577: accuracy appended (20.00%)\n", - "Epoch 577: model set back to train mode\n", - "Epoch 577: model parameters saved\n", - "Epoch 578 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5671)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5671)\n", - "Epoch 578: avg_loss appended (1.5671)\n", - "Epoch 578: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 578: accuracy appended (20.00%)\n", - "Epoch 578: model set back to train mode\n", - "Epoch 578: model parameters saved\n", - "Epoch 579 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5670)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5670)\n", - "Epoch 579: avg_loss appended (1.5670)\n", - "Epoch 579: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 579: accuracy appended (20.00%)\n", - "Epoch 579: model set back to train mode\n", - "Epoch 579: model parameters saved\n", - "Epoch 580 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5670)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5670)\n", - "Epoch 580: avg_loss appended (1.5670)\n", - "Epoch 580: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 580: accuracy appended (20.00%)\n", - "Epoch 580: model set back to train mode\n", - "Epoch 580: model parameters saved\n", - "Epoch 581 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5670)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5670)\n", - "Epoch 581: avg_loss appended (1.5670)\n", - "Epoch 581: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 581: accuracy appended (20.00%)\n", - "Epoch 581: model set back to train mode\n", - "Epoch 581: model parameters saved\n", - "Epoch 582 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5670)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5670)\n", - "Epoch 582: avg_loss appended (1.5670)\n", - "Epoch 582: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 582: accuracy appended (20.00%)\n", - "Epoch 582: model set back to train mode\n", - "Epoch 582: model parameters saved\n", - "Epoch 583 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5669)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5669)\n", - "Epoch 583: avg_loss appended (1.5669)\n", - "Epoch 583: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 583: accuracy appended (20.00%)\n", - "Epoch 583: model set back to train mode\n", - "Epoch 583: model parameters saved\n", - "Epoch 584 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5669)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5669)\n", - "Epoch 584: avg_loss appended (1.5669)\n", - "Epoch 584: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 584: accuracy appended (20.00%)\n", - "Epoch 584: model set back to train mode\n", - "Epoch 584: model parameters saved\n", - "Epoch 585 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5669)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5669)\n", - "Epoch 585: avg_loss appended (1.5669)\n", - "Epoch 585: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 585: accuracy appended (20.00%)\n", - "Epoch 585: model set back to train mode\n", - "Epoch 585: model parameters saved\n", - "Epoch 586 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5669)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5669)\n", - "Epoch 586: avg_loss appended (1.5669)\n", - "Epoch 586: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 586: accuracy appended (20.00%)\n", - "Epoch 586: model set back to train mode\n", - "Epoch 586: model parameters saved\n", - "Epoch 587 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5668)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5668)\n", - "Epoch 587: avg_loss appended (1.5668)\n", - "Epoch 587: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 587: accuracy appended (20.00%)\n", - "Epoch 587: model set back to train mode\n", - "Epoch 587: model parameters saved\n", - "Epoch 588 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5668)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5668)\n", - "Epoch 588: avg_loss appended (1.5668)\n", - "Epoch 588: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 588: accuracy appended (20.00%)\n", - "Epoch 588: model set back to train mode\n", - "Epoch 588: model parameters saved\n", - "Epoch 589 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5668)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5668)\n", - "Epoch 589: avg_loss appended (1.5668)\n", - "Epoch 589: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 589: accuracy appended (20.00%)\n", - "Epoch 589: model set back to train mode\n", - "Epoch 589: model parameters saved\n", - "Epoch 590 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5668)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5668)\n", - "Epoch 590: avg_loss appended (1.5668)\n", - "Epoch 590: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 590: accuracy appended (20.00%)\n", - "Epoch 590: model set back to train mode\n", - "Epoch 590: model parameters saved\n", - "Epoch 591 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5667)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5667)\n", - "Epoch 591: avg_loss appended (1.5667)\n", - "Epoch 591: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 591: accuracy appended (20.00%)\n", - "Epoch 591: model set back to train mode\n", - "Epoch 591: model parameters saved\n", - "Epoch 592 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5667)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5667)\n", - "Epoch 592: avg_loss appended (1.5667)\n", - "Epoch 592: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 592: accuracy appended (20.00%)\n", - "Epoch 592: model set back to train mode\n", - "Epoch 592: model parameters saved\n", - "Epoch 593 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5667)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5667)\n", - "Epoch 593: avg_loss appended (1.5667)\n", - "Epoch 593: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 593: accuracy appended (20.00%)\n", - "Epoch 593: model set back to train mode\n", - "Epoch 593: model parameters saved\n", - "Epoch 594 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5667)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5667)\n", - "Epoch 594: avg_loss appended (1.5667)\n", - "Epoch 594: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 594: accuracy appended (20.00%)\n", - "Epoch 594: model set back to train mode\n", - "Epoch 594: model parameters saved\n", - "Epoch 595 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5666)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5666)\n", - "Epoch 595: avg_loss appended (1.5666)\n", - "Epoch 595: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 595: accuracy appended (20.00%)\n", - "Epoch 595: model set back to train mode\n", - "Epoch 595: model parameters saved\n", - "Epoch 596 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5666)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5666)\n", - "Epoch 596: avg_loss appended (1.5666)\n", - "Epoch 596: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 596: accuracy appended (20.00%)\n", - "Epoch 596: model set back to train mode\n", - "Epoch 596: model parameters saved\n", - "Epoch 597 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5666)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5666)\n", - "Epoch 597: avg_loss appended (1.5666)\n", - "Epoch 597: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 597: accuracy appended (20.00%)\n", - "Epoch 597: model set back to train mode\n", - "Epoch 597: model parameters saved\n", - "Epoch 598 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5666)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5666)\n", - "Epoch 598: avg_loss appended (1.5666)\n", - "Epoch 598: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 598: accuracy appended (20.00%)\n", - "Epoch 598: model set back to train mode\n", - "Epoch 598: model parameters saved\n", - "Epoch 599 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5666)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5666)\n", - "Epoch 599: avg_loss appended (1.5666)\n", - "Epoch 599: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 599: accuracy appended (20.00%)\n", - "Epoch 599: model set back to train mode\n", - "Epoch 599: model parameters saved\n", - "Epoch 600 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5665)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5665)\n", - "Epoch 600: avg_loss appended (1.5665)\n", - "Epoch 600: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 600: accuracy appended (20.00%)\n", - "Epoch 600: model set back to train mode\n", - "Epoch 600: model parameters saved\n", - "Epoch 600/10000, Loss: 1.5665, Accuracy: 20.00%\n", - "Epoch 601 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5665)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5665)\n", - "Epoch 601: avg_loss appended (1.5665)\n", - "Epoch 601: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 601: accuracy appended (20.00%)\n", - "Epoch 601: model set back to train mode\n", - "Epoch 601: model parameters saved\n", - "Epoch 602 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5665)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5665)\n", - "Epoch 602: avg_loss appended (1.5665)\n", - "Epoch 602: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 602: accuracy appended (20.00%)\n", - "Epoch 602: model set back to train mode\n", - "Epoch 602: model parameters saved\n", - "Epoch 603 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5665)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5665)\n", - "Epoch 603: avg_loss appended (1.5665)\n", - "Epoch 603: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 603: accuracy appended (20.00%)\n", - "Epoch 603: model set back to train mode\n", - "Epoch 603: model parameters saved\n", - "Epoch 604 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5665)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5665)\n", - "Epoch 604: avg_loss appended (1.5665)\n", - "Epoch 604: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 604: accuracy appended (20.00%)\n", - "Epoch 604: model set back to train mode\n", - "Epoch 604: model parameters saved\n", - "Epoch 605 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5664)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5664)\n", - "Epoch 605: avg_loss appended (1.5664)\n", - "Epoch 605: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 605: accuracy appended (20.00%)\n", - "Epoch 605: model set back to train mode\n", - "Epoch 605: model parameters saved\n", - "Epoch 606 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5664)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5664)\n", - "Epoch 606: avg_loss appended (1.5664)\n", - "Epoch 606: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 606: accuracy appended (20.00%)\n", - "Epoch 606: model set back to train mode\n", - "Epoch 606: model parameters saved\n", - "Epoch 607 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5664)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5664)\n", - "Epoch 607: avg_loss appended (1.5664)\n", - "Epoch 607: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 607: accuracy appended (20.00%)\n", - "Epoch 607: model set back to train mode\n", - "Epoch 607: model parameters saved\n", - "Epoch 608 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5664)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5664)\n", - "Epoch 608: avg_loss appended (1.5664)\n", - "Epoch 608: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 608: accuracy appended (20.00%)\n", - "Epoch 608: model set back to train mode\n", - "Epoch 608: model parameters saved\n", - "Epoch 609 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5664)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5664)\n", - "Epoch 609: avg_loss appended (1.5664)\n", - "Epoch 609: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 609: accuracy appended (20.00%)\n", - "Epoch 609: model set back to train mode\n", - "Epoch 609: model parameters saved\n", - "Epoch 610 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5663)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5663)\n", - "Epoch 610: avg_loss appended (1.5663)\n", - "Epoch 610: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 610: accuracy appended (20.00%)\n", - "Epoch 610: model set back to train mode\n", - "Epoch 610: model parameters saved\n", - "Epoch 611 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5663)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5663)\n", - "Epoch 611: avg_loss appended (1.5663)\n", - "Epoch 611: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 611: accuracy appended (20.00%)\n", - "Epoch 611: model set back to train mode\n", - "Epoch 611: model parameters saved\n", - "Epoch 612 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5663)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5663)\n", - "Epoch 612: avg_loss appended (1.5663)\n", - "Epoch 612: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 612: accuracy appended (20.00%)\n", - "Epoch 612: model set back to train mode\n", - "Epoch 612: model parameters saved\n", - "Epoch 613 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5663)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5663)\n", - "Epoch 613: avg_loss appended (1.5663)\n", - "Epoch 613: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 613: accuracy appended (20.00%)\n", - "Epoch 613: model set back to train mode\n", - "Epoch 613: model parameters saved\n", - "Epoch 614 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5663)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5663)\n", - "Epoch 614: avg_loss appended (1.5663)\n", - "Epoch 614: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 614: accuracy appended (20.00%)\n", - "Epoch 614: model set back to train mode\n", - "Epoch 614: model parameters saved\n", - "Epoch 615 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5662)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5662)\n", - "Epoch 615: avg_loss appended (1.5662)\n", - "Epoch 615: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 615: accuracy appended (20.00%)\n", - "Epoch 615: model set back to train mode\n", - "Epoch 615: model parameters saved\n", - "Epoch 616 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5662)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5662)\n", - "Epoch 616: avg_loss appended (1.5662)\n", - "Epoch 616: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 616: accuracy appended (20.00%)\n", - "Epoch 616: model set back to train mode\n", - "Epoch 616: model parameters saved\n", - "Epoch 617 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5662)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5662)\n", - "Epoch 617: avg_loss appended (1.5662)\n", - "Epoch 617: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 617: accuracy appended (20.00%)\n", - "Epoch 617: model set back to train mode\n", - "Epoch 617: model parameters saved\n", - "Epoch 618 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5662)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5662)\n", - "Epoch 618: avg_loss appended (1.5662)\n", - "Epoch 618: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 618: accuracy appended (20.00%)\n", - "Epoch 618: model set back to train mode\n", - "Epoch 618: model parameters saved\n", - "Epoch 619 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5662)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5662)\n", - "Epoch 619: avg_loss appended (1.5662)\n", - "Epoch 619: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 619: accuracy appended (20.00%)\n", - "Epoch 619: model set back to train mode\n", - "Epoch 619: model parameters saved\n", - "Epoch 620 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5662)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5662)\n", - "Epoch 620: avg_loss appended (1.5662)\n", - "Epoch 620: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 620: accuracy appended (20.00%)\n", - "Epoch 620: model set back to train mode\n", - "Epoch 620: model parameters saved\n", - "Epoch 621 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5661)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5661)\n", - "Epoch 621: avg_loss appended (1.5661)\n", - "Epoch 621: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 621: accuracy appended (20.00%)\n", - "Epoch 621: model set back to train mode\n", - "Epoch 621: model parameters saved\n", - "Epoch 622 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5661)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5661)\n", - "Epoch 622: avg_loss appended (1.5661)\n", - "Epoch 622: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 622: accuracy appended (20.00%)\n", - "Epoch 622: model set back to train mode\n", - "Epoch 622: model parameters saved\n", - "Epoch 623 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5661)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5661)\n", - "Epoch 623: avg_loss appended (1.5661)\n", - "Epoch 623: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 623: accuracy appended (20.00%)\n", - "Epoch 623: model set back to train mode\n", - "Epoch 623: model parameters saved\n", - "Epoch 624 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5661)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5661)\n", - "Epoch 624: avg_loss appended (1.5661)\n", - "Epoch 624: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 624: accuracy appended (20.00%)\n", - "Epoch 624: model set back to train mode\n", - "Epoch 624: model parameters saved\n", - "Epoch 625 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5661)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5661)\n", - "Epoch 625: avg_loss appended (1.5661)\n", - "Epoch 625: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 625: accuracy appended (20.00%)\n", - "Epoch 625: model set back to train mode\n", - "Epoch 625: model parameters saved\n", - "Epoch 626 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5661)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5661)\n", - "Epoch 626: avg_loss appended (1.5661)\n", - "Epoch 626: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 626: accuracy appended (20.00%)\n", - "Epoch 626: model set back to train mode\n", - "Epoch 626: model parameters saved\n", - "Epoch 627 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5660)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5660)\n", - "Epoch 627: avg_loss appended (1.5660)\n", - "Epoch 627: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 627: accuracy appended (20.00%)\n", - "Epoch 627: model set back to train mode\n", - "Epoch 627: model parameters saved\n", - "Epoch 628 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5660)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5660)\n", - "Epoch 628: avg_loss appended (1.5660)\n", - "Epoch 628: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 628: accuracy appended (20.00%)\n", - "Epoch 628: model set back to train mode\n", - "Epoch 628: model parameters saved\n", - "Epoch 629 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5660)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5660)\n", - "Epoch 629: avg_loss appended (1.5660)\n", - "Epoch 629: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 629: accuracy appended (20.00%)\n", - "Epoch 629: model set back to train mode\n", - "Epoch 629: model parameters saved\n", - "Epoch 630 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5660)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5660)\n", - "Epoch 630: avg_loss appended (1.5660)\n", - "Epoch 630: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 630: accuracy appended (20.00%)\n", - "Epoch 630: model set back to train mode\n", - "Epoch 630: model parameters saved\n", - "Epoch 631 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5660)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5660)\n", - "Epoch 631: avg_loss appended (1.5660)\n", - "Epoch 631: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 631: accuracy appended (20.00%)\n", - "Epoch 631: model set back to train mode\n", - "Epoch 631: model parameters saved\n", - "Epoch 632 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5660)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5660)\n", - "Epoch 632: avg_loss appended (1.5660)\n", - "Epoch 632: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 632: accuracy appended (20.00%)\n", - "Epoch 632: model set back to train mode\n", - "Epoch 632: model parameters saved\n", - "Epoch 633 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5660)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5660)\n", - "Epoch 633: avg_loss appended (1.5660)\n", - "Epoch 633: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 633: accuracy appended (20.00%)\n", - "Epoch 633: model set back to train mode\n", - "Epoch 633: model parameters saved\n", - "Epoch 634 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5659)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5659)\n", - "Epoch 634: avg_loss appended (1.5659)\n", - "Epoch 634: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 634: accuracy appended (20.00%)\n", - "Epoch 634: model set back to train mode\n", - "Epoch 634: model parameters saved\n", - "Epoch 635 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5659)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5659)\n", - "Epoch 635: avg_loss appended (1.5659)\n", - "Epoch 635: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 635: accuracy appended (20.00%)\n", - "Epoch 635: model set back to train mode\n", - "Epoch 635: model parameters saved\n", - "Epoch 636 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5659)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5659)\n", - "Epoch 636: avg_loss appended (1.5659)\n", - "Epoch 636: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 636: accuracy appended (20.00%)\n", - "Epoch 636: model set back to train mode\n", - "Epoch 636: model parameters saved\n", - "Epoch 637 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5659)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5659)\n", - "Epoch 637: avg_loss appended (1.5659)\n", - "Epoch 637: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 637: accuracy appended (20.00%)\n", - "Epoch 637: model set back to train mode\n", - "Epoch 637: model parameters saved\n", - "Epoch 638 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5659)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5659)\n", - "Epoch 638: avg_loss appended (1.5659)\n", - "Epoch 638: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 638: accuracy appended (20.00%)\n", - "Epoch 638: model set back to train mode\n", - "Epoch 638: model parameters saved\n", - "Epoch 639 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5659)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5659)\n", - "Epoch 639: avg_loss appended (1.5659)\n", - "Epoch 639: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 639: accuracy appended (20.00%)\n", - "Epoch 639: model set back to train mode\n", - "Epoch 639: model parameters saved\n", - "Epoch 640 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5659)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5659)\n", - "Epoch 640: avg_loss appended (1.5659)\n", - "Epoch 640: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 640: accuracy appended (20.00%)\n", - "Epoch 640: model set back to train mode\n", - "Epoch 640: model parameters saved\n", - "Epoch 641 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5658)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5658)\n", - "Epoch 641: avg_loss appended (1.5658)\n", - "Epoch 641: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 641: accuracy appended (20.00%)\n", - "Epoch 641: model set back to train mode\n", - "Epoch 641: model parameters saved\n", - "Epoch 642 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5658)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5658)\n", - "Epoch 642: avg_loss appended (1.5658)\n", - "Epoch 642: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 642: accuracy appended (20.00%)\n", - "Epoch 642: model set back to train mode\n", - "Epoch 642: model parameters saved\n", - "Epoch 643 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5658)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5658)\n", - "Epoch 643: avg_loss appended (1.5658)\n", - "Epoch 643: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 643: accuracy appended (20.00%)\n", - "Epoch 643: model set back to train mode\n", - "Epoch 643: model parameters saved\n", - "Epoch 644 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5658)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5658)\n", - "Epoch 644: avg_loss appended (1.5658)\n", - "Epoch 644: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 644: accuracy appended (20.00%)\n", - "Epoch 644: model set back to train mode\n", - "Epoch 644: model parameters saved\n", - "Epoch 645 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5658)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5658)\n", - "Epoch 645: avg_loss appended (1.5658)\n", - "Epoch 645: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 645: accuracy appended (20.00%)\n", - "Epoch 645: model set back to train mode\n", - "Epoch 645: model parameters saved\n", - "Epoch 646 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5658)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5658)\n", - "Epoch 646: avg_loss appended (1.5658)\n", - "Epoch 646: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 646: accuracy appended (20.00%)\n", - "Epoch 646: model set back to train mode\n", - "Epoch 646: model parameters saved\n", - "Epoch 647 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5658)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5658)\n", - "Epoch 647: avg_loss appended (1.5658)\n", - "Epoch 647: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 647: accuracy appended (20.00%)\n", - "Epoch 647: model set back to train mode\n", - "Epoch 647: model parameters saved\n", - "Epoch 648 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5657)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5657)\n", - "Epoch 648: avg_loss appended (1.5657)\n", - "Epoch 648: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 648: accuracy appended (20.00%)\n", - "Epoch 648: model set back to train mode\n", - "Epoch 648: model parameters saved\n", - "Epoch 649 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5657)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5657)\n", - "Epoch 649: avg_loss appended (1.5657)\n", - "Epoch 649: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 649: accuracy appended (20.00%)\n", - "Epoch 649: model set back to train mode\n", - "Epoch 649: model parameters saved\n", - "Epoch 650 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5657)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5657)\n", - "Epoch 650: avg_loss appended (1.5657)\n", - "Epoch 650: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 650: accuracy appended (20.00%)\n", - "Epoch 650: model set back to train mode\n", - "Epoch 650: model parameters saved\n", - "Epoch 651 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5657)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5657)\n", - "Epoch 651: avg_loss appended (1.5657)\n", - "Epoch 651: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 651: accuracy appended (20.00%)\n", - "Epoch 651: model set back to train mode\n", - "Epoch 651: model parameters saved\n", - "Epoch 652 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5657)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5657)\n", - "Epoch 652: avg_loss appended (1.5657)\n", - "Epoch 652: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 652: accuracy appended (20.00%)\n", - "Epoch 652: model set back to train mode\n", - "Epoch 652: model parameters saved\n", - "Epoch 653 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5657)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5657)\n", - "Epoch 653: avg_loss appended (1.5657)\n", - "Epoch 653: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 653: accuracy appended (20.00%)\n", - "Epoch 653: model set back to train mode\n", - "Epoch 653: model parameters saved\n", - "Epoch 654 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5657)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5657)\n", - "Epoch 654: avg_loss appended (1.5657)\n", - "Epoch 654: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 654: accuracy appended (20.00%)\n", - "Epoch 654: model set back to train mode\n", - "Epoch 654: model parameters saved\n", - "Epoch 655 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5657)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5657)\n", - "Epoch 655: avg_loss appended (1.5657)\n", - "Epoch 655: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 655: accuracy appended (20.00%)\n", - "Epoch 655: model set back to train mode\n", - "Epoch 655: model parameters saved\n", - "Epoch 656 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5656)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5656)\n", - "Epoch 656: avg_loss appended (1.5656)\n", - "Epoch 656: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 656: accuracy appended (20.00%)\n", - "Epoch 656: model set back to train mode\n", - "Epoch 656: model parameters saved\n", - "Epoch 657 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5656)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5656)\n", - "Epoch 657: avg_loss appended (1.5656)\n", - "Epoch 657: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 657: accuracy appended (20.00%)\n", - "Epoch 657: model set back to train mode\n", - "Epoch 657: model parameters saved\n", - "Epoch 658 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5656)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5656)\n", - "Epoch 658: avg_loss appended (1.5656)\n", - "Epoch 658: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 658: accuracy appended (20.00%)\n", - "Epoch 658: model set back to train mode\n", - "Epoch 658: model parameters saved\n", - "Epoch 659 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5656)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5656)\n", - "Epoch 659: avg_loss appended (1.5656)\n", - "Epoch 659: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 659: accuracy appended (20.00%)\n", - "Epoch 659: model set back to train mode\n", - "Epoch 659: model parameters saved\n", - "Epoch 660 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5656)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5656)\n", - "Epoch 660: avg_loss appended (1.5656)\n", - "Epoch 660: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 660: accuracy appended (20.00%)\n", - "Epoch 660: model set back to train mode\n", - "Epoch 660: model parameters saved\n", - "Epoch 661 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5656)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5656)\n", - "Epoch 661: avg_loss appended (1.5656)\n", - "Epoch 661: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 661: accuracy appended (20.00%)\n", - "Epoch 661: model set back to train mode\n", - "Epoch 661: model parameters saved\n", - "Epoch 662 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5656)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5656)\n", - "Epoch 662: avg_loss appended (1.5656)\n", - "Epoch 662: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 662: accuracy appended (20.00%)\n", - "Epoch 662: model set back to train mode\n", - "Epoch 662: model parameters saved\n", - "Epoch 663 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5656)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5656)\n", - "Epoch 663: avg_loss appended (1.5656)\n", - "Epoch 663: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 663: accuracy appended (20.00%)\n", - "Epoch 663: model set back to train mode\n", - "Epoch 663: model parameters saved\n", - "Epoch 664 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5656)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5656)\n", - "Epoch 664: avg_loss appended (1.5656)\n", - "Epoch 664: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 664: accuracy appended (20.00%)\n", - "Epoch 664: model set back to train mode\n", - "Epoch 664: model parameters saved\n", - "Epoch 665 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5655)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5655)\n", - "Epoch 665: avg_loss appended (1.5655)\n", - "Epoch 665: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 665: accuracy appended (20.00%)\n", - "Epoch 665: model set back to train mode\n", - "Epoch 665: model parameters saved\n", - "Epoch 666 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5655)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5655)\n", - "Epoch 666: avg_loss appended (1.5655)\n", - "Epoch 666: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 666: accuracy appended (20.00%)\n", - "Epoch 666: model set back to train mode\n", - "Epoch 666: model parameters saved\n", - "Epoch 667 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5655)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5655)\n", - "Epoch 667: avg_loss appended (1.5655)\n", - "Epoch 667: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 667: accuracy appended (20.00%)\n", - "Epoch 667: model set back to train mode\n", - "Epoch 667: model parameters saved\n", - "Epoch 668 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5655)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5655)\n", - "Epoch 668: avg_loss appended (1.5655)\n", - "Epoch 668: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 668: accuracy appended (20.00%)\n", - "Epoch 668: model set back to train mode\n", - "Epoch 668: model parameters saved\n", - "Epoch 669 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5655)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5655)\n", - "Epoch 669: avg_loss appended (1.5655)\n", - "Epoch 669: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 669: accuracy appended (20.00%)\n", - "Epoch 669: model set back to train mode\n", - "Epoch 669: model parameters saved\n", - "Epoch 670 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5655)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5655)\n", - "Epoch 670: avg_loss appended (1.5655)\n", - "Epoch 670: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 670: accuracy appended (20.00%)\n", - "Epoch 670: model set back to train mode\n", - "Epoch 670: model parameters saved\n", - "Epoch 671 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5655)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5655)\n", - "Epoch 671: avg_loss appended (1.5655)\n", - "Epoch 671: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 671: accuracy appended (20.00%)\n", - "Epoch 671: model set back to train mode\n", - "Epoch 671: model parameters saved\n", - "Epoch 672 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5655)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5655)\n", - "Epoch 672: avg_loss appended (1.5655)\n", - "Epoch 672: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 672: accuracy appended (20.00%)\n", - "Epoch 672: model set back to train mode\n", - "Epoch 672: model parameters saved\n", - "Epoch 673 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5655)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5655)\n", - "Epoch 673: avg_loss appended (1.5655)\n", - "Epoch 673: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 673: accuracy appended (20.00%)\n", - "Epoch 673: model set back to train mode\n", - "Epoch 673: model parameters saved\n", - "Epoch 674 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5654)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5654)\n", - "Epoch 674: avg_loss appended (1.5654)\n", - "Epoch 674: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 674: accuracy appended (20.00%)\n", - "Epoch 674: model set back to train mode\n", - "Epoch 674: model parameters saved\n", - "Epoch 675 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5654)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5654)\n", - "Epoch 675: avg_loss appended (1.5654)\n", - "Epoch 675: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 675: accuracy appended (20.00%)\n", - "Epoch 675: model set back to train mode\n", - "Epoch 675: model parameters saved\n", - "Epoch 676 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5654)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5654)\n", - "Epoch 676: avg_loss appended (1.5654)\n", - "Epoch 676: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 676: accuracy appended (20.00%)\n", - "Epoch 676: model set back to train mode\n", - "Epoch 676: model parameters saved\n", - "Epoch 677 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5654)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5654)\n", - "Epoch 677: avg_loss appended (1.5654)\n", - "Epoch 677: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 677: accuracy appended (20.00%)\n", - "Epoch 677: model set back to train mode\n", - "Epoch 677: model parameters saved\n", - "Epoch 678 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5654)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5654)\n", - "Epoch 678: avg_loss appended (1.5654)\n", - "Epoch 678: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 678: accuracy appended (20.00%)\n", - "Epoch 678: model set back to train mode\n", - "Epoch 678: model parameters saved\n", - "Epoch 679 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5654)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5654)\n", - "Epoch 679: avg_loss appended (1.5654)\n", - "Epoch 679: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 679: accuracy appended (20.00%)\n", - "Epoch 679: model set back to train mode\n", - "Epoch 679: model parameters saved\n", - "Epoch 680 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5654)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5654)\n", - "Epoch 680: avg_loss appended (1.5654)\n", - "Epoch 680: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 680: accuracy appended (20.00%)\n", - "Epoch 680: model set back to train mode\n", - "Epoch 680: model parameters saved\n", - "Epoch 681 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5654)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5654)\n", - "Epoch 681: avg_loss appended (1.5654)\n", - "Epoch 681: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 681: accuracy appended (20.00%)\n", - "Epoch 681: model set back to train mode\n", - "Epoch 681: model parameters saved\n", - "Epoch 682 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5654)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5654)\n", - "Epoch 682: avg_loss appended (1.5654)\n", - "Epoch 682: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 682: accuracy appended (20.00%)\n", - "Epoch 682: model set back to train mode\n", - "Epoch 682: model parameters saved\n", - "Epoch 683 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5654)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5654)\n", - "Epoch 683: avg_loss appended (1.5654)\n", - "Epoch 683: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 683: accuracy appended (20.00%)\n", - "Epoch 683: model set back to train mode\n", - "Epoch 683: model parameters saved\n", - "Epoch 684 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5653)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5653)\n", - "Epoch 684: avg_loss appended (1.5653)\n", - "Epoch 684: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 684: accuracy appended (20.00%)\n", - "Epoch 684: model set back to train mode\n", - "Epoch 684: model parameters saved\n", - "Epoch 685 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5653)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5653)\n", - "Epoch 685: avg_loss appended (1.5653)\n", - "Epoch 685: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 685: accuracy appended (20.00%)\n", - "Epoch 685: model set back to train mode\n", - "Epoch 685: model parameters saved\n", - "Epoch 686 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5653)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5653)\n", - "Epoch 686: avg_loss appended (1.5653)\n", - "Epoch 686: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 686: accuracy appended (20.00%)\n", - "Epoch 686: model set back to train mode\n", - "Epoch 686: model parameters saved\n", - "Epoch 687 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5653)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5653)\n", - "Epoch 687: avg_loss appended (1.5653)\n", - "Epoch 687: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 687: accuracy appended (20.00%)\n", - "Epoch 687: model set back to train mode\n", - "Epoch 687: model parameters saved\n", - "Epoch 688 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5653)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5653)\n", - "Epoch 688: avg_loss appended (1.5653)\n", - "Epoch 688: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 688: accuracy appended (20.00%)\n", - "Epoch 688: model set back to train mode\n", - "Epoch 688: model parameters saved\n", - "Epoch 689 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5653)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5653)\n", - "Epoch 689: avg_loss appended (1.5653)\n", - "Epoch 689: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 689: accuracy appended (20.00%)\n", - "Epoch 689: model set back to train mode\n", - "Epoch 689: model parameters saved\n", - "Epoch 690 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5653)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5653)\n", - "Epoch 690: avg_loss appended (1.5653)\n", - "Epoch 690: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 690: accuracy appended (20.00%)\n", - "Epoch 690: model set back to train mode\n", - "Epoch 690: model parameters saved\n", - "Epoch 691 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5653)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5653)\n", - "Epoch 691: avg_loss appended (1.5653)\n", - "Epoch 691: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 691: accuracy appended (20.00%)\n", - "Epoch 691: model set back to train mode\n", - "Epoch 691: model parameters saved\n", - "Epoch 692 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5653)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5653)\n", - "Epoch 692: avg_loss appended (1.5653)\n", - "Epoch 692: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 692: accuracy appended (20.00%)\n", - "Epoch 692: model set back to train mode\n", - "Epoch 692: model parameters saved\n", - "Epoch 693 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5653)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5653)\n", - "Epoch 693: avg_loss appended (1.5653)\n", - "Epoch 693: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 693: accuracy appended (20.00%)\n", - "Epoch 693: model set back to train mode\n", - "Epoch 693: model parameters saved\n", - "Epoch 694 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5653)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5653)\n", - "Epoch 694: avg_loss appended (1.5653)\n", - "Epoch 694: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 694: accuracy appended (20.00%)\n", - "Epoch 694: model set back to train mode\n", - "Epoch 694: model parameters saved\n", - "Epoch 695 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5652)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5652)\n", - "Epoch 695: avg_loss appended (1.5652)\n", - "Epoch 695: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 695: accuracy appended (20.00%)\n", - "Epoch 695: model set back to train mode\n", - "Epoch 695: model parameters saved\n", - "Epoch 696 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5652)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5652)\n", - "Epoch 696: avg_loss appended (1.5652)\n", - "Epoch 696: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 696: accuracy appended (20.00%)\n", - "Epoch 696: model set back to train mode\n", - "Epoch 696: model parameters saved\n", - "Epoch 697 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5652)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5652)\n", - "Epoch 697: avg_loss appended (1.5652)\n", - "Epoch 697: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 697: accuracy appended (20.00%)\n", - "Epoch 697: model set back to train mode\n", - "Epoch 697: model parameters saved\n", - "Epoch 698 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5652)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5652)\n", - "Epoch 698: avg_loss appended (1.5652)\n", - "Epoch 698: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 698: accuracy appended (20.00%)\n", - "Epoch 698: model set back to train mode\n", - "Epoch 698: model parameters saved\n", - "Epoch 699 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5652)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5652)\n", - "Epoch 699: avg_loss appended (1.5652)\n", - "Epoch 699: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 699: accuracy appended (20.00%)\n", - "Epoch 699: model set back to train mode\n", - "Epoch 699: model parameters saved\n", - "Epoch 700 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5652)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5652)\n", - "Epoch 700: avg_loss appended (1.5652)\n", - "Epoch 700: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 700: accuracy appended (20.00%)\n", - "Epoch 700: model set back to train mode\n", - "Epoch 700: model parameters saved\n", - "Epoch 700/10000, Loss: 1.5652, Accuracy: 20.00%\n", - "Epoch 701 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5652)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5652)\n", - "Epoch 701: avg_loss appended (1.5652)\n", - "Epoch 701: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 701: accuracy appended (20.00%)\n", - "Epoch 701: model set back to train mode\n", - "Epoch 701: model parameters saved\n", - "Epoch 702 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5652)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5652)\n", - "Epoch 702: avg_loss appended (1.5652)\n", - "Epoch 702: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 702: accuracy appended (20.00%)\n", - "Epoch 702: model set back to train mode\n", - "Epoch 702: model parameters saved\n", - "Epoch 703 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5652)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5652)\n", - "Epoch 703: avg_loss appended (1.5652)\n", - "Epoch 703: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 703: accuracy appended (20.00%)\n", - "Epoch 703: model set back to train mode\n", - "Epoch 703: model parameters saved\n", - "Epoch 704 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5652)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5652)\n", - "Epoch 704: avg_loss appended (1.5652)\n", - "Epoch 704: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 704: accuracy appended (20.00%)\n", - "Epoch 704: model set back to train mode\n", - "Epoch 704: model parameters saved\n", - "Epoch 705 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5652)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5652)\n", - "Epoch 705: avg_loss appended (1.5652)\n", - "Epoch 705: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 705: accuracy appended (20.00%)\n", - "Epoch 705: model set back to train mode\n", - "Epoch 705: model parameters saved\n", - "Epoch 706 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5652)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5652)\n", - "Epoch 706: avg_loss appended (1.5652)\n", - "Epoch 706: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 706: accuracy appended (20.00%)\n", - "Epoch 706: model set back to train mode\n", - "Epoch 706: model parameters saved\n", - "Epoch 707 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5651)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5651)\n", - "Epoch 707: avg_loss appended (1.5651)\n", - "Epoch 707: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 707: accuracy appended (20.00%)\n", - "Epoch 707: model set back to train mode\n", - "Epoch 707: model parameters saved\n", - "Epoch 708 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5651)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5651)\n", - "Epoch 708: avg_loss appended (1.5651)\n", - "Epoch 708: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 708: accuracy appended (20.00%)\n", - "Epoch 708: model set back to train mode\n", - "Epoch 708: model parameters saved\n", - "Epoch 709 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5651)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5651)\n", - "Epoch 709: avg_loss appended (1.5651)\n", - "Epoch 709: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 709: accuracy appended (20.00%)\n", - "Epoch 709: model set back to train mode\n", - "Epoch 709: model parameters saved\n", - "Epoch 710 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5651)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5651)\n", - "Epoch 710: avg_loss appended (1.5651)\n", - "Epoch 710: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 710: accuracy appended (20.00%)\n", - "Epoch 710: model set back to train mode\n", - "Epoch 710: model parameters saved\n", - "Epoch 711 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5651)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5651)\n", - "Epoch 711: avg_loss appended (1.5651)\n", - "Epoch 711: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 711: accuracy appended (20.00%)\n", - "Epoch 711: model set back to train mode\n", - "Epoch 711: model parameters saved\n", - "Epoch 712 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5651)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5651)\n", - "Epoch 712: avg_loss appended (1.5651)\n", - "Epoch 712: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 712: accuracy appended (20.00%)\n", - "Epoch 712: model set back to train mode\n", - "Epoch 712: model parameters saved\n", - "Epoch 713 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5651)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5651)\n", - "Epoch 713: avg_loss appended (1.5651)\n", - "Epoch 713: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 713: accuracy appended (20.00%)\n", - "Epoch 713: model set back to train mode\n", - "Epoch 713: model parameters saved\n", - "Epoch 714 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5651)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5651)\n", - "Epoch 714: avg_loss appended (1.5651)\n", - "Epoch 714: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 714: accuracy appended (20.00%)\n", - "Epoch 714: model set back to train mode\n", - "Epoch 714: model parameters saved\n", - "Epoch 715 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5651)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5651)\n", - "Epoch 715: avg_loss appended (1.5651)\n", - "Epoch 715: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 715: accuracy appended (20.00%)\n", - "Epoch 715: model set back to train mode\n", - "Epoch 715: model parameters saved\n", - "Epoch 716 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5651)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5651)\n", - "Epoch 716: avg_loss appended (1.5651)\n", - "Epoch 716: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 716: accuracy appended (20.00%)\n", - "Epoch 716: model set back to train mode\n", - "Epoch 716: model parameters saved\n", - "Epoch 717 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5651)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5651)\n", - "Epoch 717: avg_loss appended (1.5651)\n", - "Epoch 717: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 717: accuracy appended (20.00%)\n", - "Epoch 717: model set back to train mode\n", - "Epoch 717: model parameters saved\n", - "Epoch 718 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5651)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5651)\n", - "Epoch 718: avg_loss appended (1.5651)\n", - "Epoch 718: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 718: accuracy appended (20.00%)\n", - "Epoch 718: model set back to train mode\n", - "Epoch 718: model parameters saved\n", - "Epoch 719 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5651)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5651)\n", - "Epoch 719: avg_loss appended (1.5651)\n", - "Epoch 719: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 719: accuracy appended (20.00%)\n", - "Epoch 719: model set back to train mode\n", - "Epoch 719: model parameters saved\n", - "Epoch 720 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5650)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5650)\n", - "Epoch 720: avg_loss appended (1.5650)\n", - "Epoch 720: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 720: accuracy appended (20.00%)\n", - "Epoch 720: model set back to train mode\n", - "Epoch 720: model parameters saved\n", - "Epoch 721 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5650)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5650)\n", - "Epoch 721: avg_loss appended (1.5650)\n", - "Epoch 721: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 721: accuracy appended (20.00%)\n", - "Epoch 721: model set back to train mode\n", - "Epoch 721: model parameters saved\n", - "Epoch 722 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5650)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5650)\n", - "Epoch 722: avg_loss appended (1.5650)\n", - "Epoch 722: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 722: accuracy appended (20.00%)\n", - "Epoch 722: model set back to train mode\n", - "Epoch 722: model parameters saved\n", - "Epoch 723 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5650)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5650)\n", - "Epoch 723: avg_loss appended (1.5650)\n", - "Epoch 723: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 723: accuracy appended (20.00%)\n", - "Epoch 723: model set back to train mode\n", - "Epoch 723: model parameters saved\n", - "Epoch 724 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5650)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5650)\n", - "Epoch 724: avg_loss appended (1.5650)\n", - "Epoch 724: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 724: accuracy appended (20.00%)\n", - "Epoch 724: model set back to train mode\n", - "Epoch 724: model parameters saved\n", - "Epoch 725 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5650)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5650)\n", - "Epoch 725: avg_loss appended (1.5650)\n", - "Epoch 725: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 725: accuracy appended (20.00%)\n", - "Epoch 725: model set back to train mode\n", - "Epoch 725: model parameters saved\n", - "Epoch 726 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5650)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5650)\n", - "Epoch 726: avg_loss appended (1.5650)\n", - "Epoch 726: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 726: accuracy appended (20.00%)\n", - "Epoch 726: model set back to train mode\n", - "Epoch 726: model parameters saved\n", - "Epoch 727 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5650)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5650)\n", - "Epoch 727: avg_loss appended (1.5650)\n", - "Epoch 727: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 727: accuracy appended (20.00%)\n", - "Epoch 727: model set back to train mode\n", - "Epoch 727: model parameters saved\n", - "Epoch 728 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5650)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5650)\n", - "Epoch 728: avg_loss appended (1.5650)\n", - "Epoch 728: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 728: accuracy appended (20.00%)\n", - "Epoch 728: model set back to train mode\n", - "Epoch 728: model parameters saved\n", - "Epoch 729 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5650)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5650)\n", - "Epoch 729: avg_loss appended (1.5650)\n", - "Epoch 729: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 729: accuracy appended (20.00%)\n", - "Epoch 729: model set back to train mode\n", - "Epoch 729: model parameters saved\n", - "Epoch 730 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5650)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5650)\n", - "Epoch 730: avg_loss appended (1.5650)\n", - "Epoch 730: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 730: accuracy appended (20.00%)\n", - "Epoch 730: model set back to train mode\n", - "Epoch 730: model parameters saved\n", - "Epoch 731 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5650)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5650)\n", - "Epoch 731: avg_loss appended (1.5650)\n", - "Epoch 731: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 731: accuracy appended (20.00%)\n", - "Epoch 731: model set back to train mode\n", - "Epoch 731: model parameters saved\n", - "Epoch 732 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5650)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5650)\n", - "Epoch 732: avg_loss appended (1.5650)\n", - "Epoch 732: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 732: accuracy appended (20.00%)\n", - "Epoch 732: model set back to train mode\n", - "Epoch 732: model parameters saved\n", - "Epoch 733 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5650)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5650)\n", - "Epoch 733: avg_loss appended (1.5650)\n", - "Epoch 733: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 733: accuracy appended (20.00%)\n", - "Epoch 733: model set back to train mode\n", - "Epoch 733: model parameters saved\n", - "Epoch 734 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5649)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5649)\n", - "Epoch 734: avg_loss appended (1.5649)\n", - "Epoch 734: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 734: accuracy appended (20.00%)\n", - "Epoch 734: model set back to train mode\n", - "Epoch 734: model parameters saved\n", - "Epoch 735 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5649)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5649)\n", - "Epoch 735: avg_loss appended (1.5649)\n", - "Epoch 735: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 735: accuracy appended (20.00%)\n", - "Epoch 735: model set back to train mode\n", - "Epoch 735: model parameters saved\n", - "Epoch 736 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5649)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5649)\n", - "Epoch 736: avg_loss appended (1.5649)\n", - "Epoch 736: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 736: accuracy appended (20.00%)\n", - "Epoch 736: model set back to train mode\n", - "Epoch 736: model parameters saved\n", - "Epoch 737 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5649)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5649)\n", - "Epoch 737: avg_loss appended (1.5649)\n", - "Epoch 737: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 737: accuracy appended (20.00%)\n", - "Epoch 737: model set back to train mode\n", - "Epoch 737: model parameters saved\n", - "Epoch 738 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5649)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5649)\n", - "Epoch 738: avg_loss appended (1.5649)\n", - "Epoch 738: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 738: accuracy appended (20.00%)\n", - "Epoch 738: model set back to train mode\n", - "Epoch 738: model parameters saved\n", - "Epoch 739 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5649)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5649)\n", - "Epoch 739: avg_loss appended (1.5649)\n", - "Epoch 739: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 739: accuracy appended (20.00%)\n", - "Epoch 739: model set back to train mode\n", - "Epoch 739: model parameters saved\n", - "Epoch 740 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5649)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5649)\n", - "Epoch 740: avg_loss appended (1.5649)\n", - "Epoch 740: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 740: accuracy appended (20.00%)\n", - "Epoch 740: model set back to train mode\n", - "Epoch 740: model parameters saved\n", - "Epoch 741 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5649)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5649)\n", - "Epoch 741: avg_loss appended (1.5649)\n", - "Epoch 741: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 741: accuracy appended (20.00%)\n", - "Epoch 741: model set back to train mode\n", - "Epoch 741: model parameters saved\n", - "Epoch 742 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5649)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5649)\n", - "Epoch 742: avg_loss appended (1.5649)\n", - "Epoch 742: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 742: accuracy appended (20.00%)\n", - "Epoch 742: model set back to train mode\n", - "Epoch 742: model parameters saved\n", - "Epoch 743 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5649)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5649)\n", - "Epoch 743: avg_loss appended (1.5649)\n", - "Epoch 743: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 743: accuracy appended (20.00%)\n", - "Epoch 743: model set back to train mode\n", - "Epoch 743: model parameters saved\n", - "Epoch 744 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5649)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5649)\n", - "Epoch 744: avg_loss appended (1.5649)\n", - "Epoch 744: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 744: accuracy appended (20.00%)\n", - "Epoch 744: model set back to train mode\n", - "Epoch 744: model parameters saved\n", - "Epoch 745 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5649)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5649)\n", - "Epoch 745: avg_loss appended (1.5649)\n", - "Epoch 745: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 745: accuracy appended (20.00%)\n", - "Epoch 745: model set back to train mode\n", - "Epoch 745: model parameters saved\n", - "Epoch 746 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5649)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5649)\n", - "Epoch 746: avg_loss appended (1.5649)\n", - "Epoch 746: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 746: accuracy appended (20.00%)\n", - "Epoch 746: model set back to train mode\n", - "Epoch 746: model parameters saved\n", - "Epoch 747 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5649)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5649)\n", - "Epoch 747: avg_loss appended (1.5649)\n", - "Epoch 747: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 747: accuracy appended (20.00%)\n", - "Epoch 747: model set back to train mode\n", - "Epoch 747: model parameters saved\n", - "Epoch 748 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5649)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5649)\n", - "Epoch 748: avg_loss appended (1.5649)\n", - "Epoch 748: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 748: accuracy appended (20.00%)\n", - "Epoch 748: model set back to train mode\n", - "Epoch 748: model parameters saved\n", - "Epoch 749 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5648)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5648)\n", - "Epoch 749: avg_loss appended (1.5648)\n", - "Epoch 749: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 749: accuracy appended (20.00%)\n", - "Epoch 749: model set back to train mode\n", - "Epoch 749: model parameters saved\n", - "Epoch 750 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5648)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5648)\n", - "Epoch 750: avg_loss appended (1.5648)\n", - "Epoch 750: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 750: accuracy appended (20.00%)\n", - "Epoch 750: model set back to train mode\n", - "Epoch 750: model parameters saved\n", - "Epoch 751 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5648)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5648)\n", - "Epoch 751: avg_loss appended (1.5648)\n", - "Epoch 751: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 751: accuracy appended (20.00%)\n", - "Epoch 751: model set back to train mode\n", - "Epoch 751: model parameters saved\n", - "Epoch 752 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5648)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5648)\n", - "Epoch 752: avg_loss appended (1.5648)\n", - "Epoch 752: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 752: accuracy appended (20.00%)\n", - "Epoch 752: model set back to train mode\n", - "Epoch 752: model parameters saved\n", - "Epoch 753 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5648)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5648)\n", - "Epoch 753: avg_loss appended (1.5648)\n", - "Epoch 753: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 753: accuracy appended (20.00%)\n", - "Epoch 753: model set back to train mode\n", - "Epoch 753: model parameters saved\n", - "Epoch 754 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5648)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5648)\n", - "Epoch 754: avg_loss appended (1.5648)\n", - "Epoch 754: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 754: accuracy appended (20.00%)\n", - "Epoch 754: model set back to train mode\n", - "Epoch 754: model parameters saved\n", - "Epoch 755 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5648)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5648)\n", - "Epoch 755: avg_loss appended (1.5648)\n", - "Epoch 755: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 755: accuracy appended (20.00%)\n", - "Epoch 755: model set back to train mode\n", - "Epoch 755: model parameters saved\n", - "Epoch 756 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5648)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5648)\n", - "Epoch 756: avg_loss appended (1.5648)\n", - "Epoch 756: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 756: accuracy appended (20.00%)\n", - "Epoch 756: model set back to train mode\n", - "Epoch 756: model parameters saved\n", - "Epoch 757 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5648)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5648)\n", - "Epoch 757: avg_loss appended (1.5648)\n", - "Epoch 757: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 757: accuracy appended (20.00%)\n", - "Epoch 757: model set back to train mode\n", - "Epoch 757: model parameters saved\n", - "Epoch 758 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5648)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5648)\n", - "Epoch 758: avg_loss appended (1.5648)\n", - "Epoch 758: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 758: accuracy appended (20.00%)\n", - "Epoch 758: model set back to train mode\n", - "Epoch 758: model parameters saved\n", - "Epoch 759 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5648)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5648)\n", - "Epoch 759: avg_loss appended (1.5648)\n", - "Epoch 759: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 759: accuracy appended (20.00%)\n", - "Epoch 759: model set back to train mode\n", - "Epoch 759: model parameters saved\n", - "Epoch 760 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5648)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5648)\n", - "Epoch 760: avg_loss appended (1.5648)\n", - "Epoch 760: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 760: accuracy appended (20.00%)\n", - "Epoch 760: model set back to train mode\n", - "Epoch 760: model parameters saved\n", - "Epoch 761 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5648)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5648)\n", - "Epoch 761: avg_loss appended (1.5648)\n", - "Epoch 761: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 761: accuracy appended (20.00%)\n", - "Epoch 761: model set back to train mode\n", - "Epoch 761: model parameters saved\n", - "Epoch 762 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5648)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5648)\n", - "Epoch 762: avg_loss appended (1.5648)\n", - "Epoch 762: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 762: accuracy appended (20.00%)\n", - "Epoch 762: model set back to train mode\n", - "Epoch 762: model parameters saved\n", - "Epoch 763 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5648)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5648)\n", - "Epoch 763: avg_loss appended (1.5648)\n", - "Epoch 763: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 763: accuracy appended (20.00%)\n", - "Epoch 763: model set back to train mode\n", - "Epoch 763: model parameters saved\n", - "Epoch 764 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5648)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5648)\n", - "Epoch 764: avg_loss appended (1.5648)\n", - "Epoch 764: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 764: accuracy appended (20.00%)\n", - "Epoch 764: model set back to train mode\n", - "Epoch 764: model parameters saved\n", - "Epoch 765 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5648)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5648)\n", - "Epoch 765: avg_loss appended (1.5648)\n", - "Epoch 765: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 765: accuracy appended (20.00%)\n", - "Epoch 765: model set back to train mode\n", - "Epoch 765: model parameters saved\n", - "Epoch 766 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5647)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5647)\n", - "Epoch 766: avg_loss appended (1.5647)\n", - "Epoch 766: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 766: accuracy appended (20.00%)\n", - "Epoch 766: model set back to train mode\n", - "Epoch 766: model parameters saved\n", - "Epoch 767 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5647)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5647)\n", - "Epoch 767: avg_loss appended (1.5647)\n", - "Epoch 767: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 767: accuracy appended (20.00%)\n", - "Epoch 767: model set back to train mode\n", - "Epoch 767: model parameters saved\n", - "Epoch 768 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5647)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5647)\n", - "Epoch 768: avg_loss appended (1.5647)\n", - "Epoch 768: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 768: accuracy appended (20.00%)\n", - "Epoch 768: model set back to train mode\n", - "Epoch 768: model parameters saved\n", - "Epoch 769 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5647)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5647)\n", - "Epoch 769: avg_loss appended (1.5647)\n", - "Epoch 769: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 769: accuracy appended (20.00%)\n", - "Epoch 769: model set back to train mode\n", - "Epoch 769: model parameters saved\n", - "Epoch 770 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5647)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5647)\n", - "Epoch 770: avg_loss appended (1.5647)\n", - "Epoch 770: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 770: accuracy appended (20.00%)\n", - "Epoch 770: model set back to train mode\n", - "Epoch 770: model parameters saved\n", - "Epoch 771 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5647)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5647)\n", - "Epoch 771: avg_loss appended (1.5647)\n", - "Epoch 771: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 771: accuracy appended (20.00%)\n", - "Epoch 771: model set back to train mode\n", - "Epoch 771: model parameters saved\n", - "Epoch 772 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5647)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5647)\n", - "Epoch 772: avg_loss appended (1.5647)\n", - "Epoch 772: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 772: accuracy appended (20.00%)\n", - "Epoch 772: model set back to train mode\n", - "Epoch 772: model parameters saved\n", - "Epoch 773 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5647)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5647)\n", - "Epoch 773: avg_loss appended (1.5647)\n", - "Epoch 773: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 773: accuracy appended (20.00%)\n", - "Epoch 773: model set back to train mode\n", - "Epoch 773: model parameters saved\n", - "Epoch 774 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5647)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5647)\n", - "Epoch 774: avg_loss appended (1.5647)\n", - "Epoch 774: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 774: accuracy appended (20.00%)\n", - "Epoch 774: model set back to train mode\n", - "Epoch 774: model parameters saved\n", - "Epoch 775 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5647)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5647)\n", - "Epoch 775: avg_loss appended (1.5647)\n", - "Epoch 775: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 775: accuracy appended (20.00%)\n", - "Epoch 775: model set back to train mode\n", - "Epoch 775: model parameters saved\n", - "Epoch 776 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5647)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5647)\n", - "Epoch 776: avg_loss appended (1.5647)\n", - "Epoch 776: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 776: accuracy appended (20.00%)\n", - "Epoch 776: model set back to train mode\n", - "Epoch 776: model parameters saved\n", - "Epoch 777 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5647)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5647)\n", - "Epoch 777: avg_loss appended (1.5647)\n", - "Epoch 777: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 777: accuracy appended (20.00%)\n", - "Epoch 777: model set back to train mode\n", - "Epoch 777: model parameters saved\n", - "Epoch 778 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5647)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5647)\n", - "Epoch 778: avg_loss appended (1.5647)\n", - "Epoch 778: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 778: accuracy appended (20.00%)\n", - "Epoch 778: model set back to train mode\n", - "Epoch 778: model parameters saved\n", - "Epoch 779 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5647)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5647)\n", - "Epoch 779: avg_loss appended (1.5647)\n", - "Epoch 779: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 779: accuracy appended (20.00%)\n", - "Epoch 779: model set back to train mode\n", - "Epoch 779: model parameters saved\n", - "Epoch 780 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5647)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5647)\n", - "Epoch 780: avg_loss appended (1.5647)\n", - "Epoch 780: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 780: accuracy appended (20.00%)\n", - "Epoch 780: model set back to train mode\n", - "Epoch 780: model parameters saved\n", - "Epoch 781 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5647)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5647)\n", - "Epoch 781: avg_loss appended (1.5647)\n", - "Epoch 781: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 781: accuracy appended (20.00%)\n", - "Epoch 781: model set back to train mode\n", - "Epoch 781: model parameters saved\n", - "Epoch 782 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5647)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5647)\n", - "Epoch 782: avg_loss appended (1.5647)\n", - "Epoch 782: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 782: accuracy appended (20.00%)\n", - "Epoch 782: model set back to train mode\n", - "Epoch 782: model parameters saved\n", - "Epoch 783 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5647)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5647)\n", - "Epoch 783: avg_loss appended (1.5647)\n", - "Epoch 783: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 783: accuracy appended (20.00%)\n", - "Epoch 783: model set back to train mode\n", - "Epoch 783: model parameters saved\n", - "Epoch 784 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5647)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5647)\n", - "Epoch 784: avg_loss appended (1.5647)\n", - "Epoch 784: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 784: accuracy appended (20.00%)\n", - "Epoch 784: model set back to train mode\n", - "Epoch 784: model parameters saved\n", - "Epoch 785 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5646)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5646)\n", - "Epoch 785: avg_loss appended (1.5646)\n", - "Epoch 785: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 785: accuracy appended (20.00%)\n", - "Epoch 785: model set back to train mode\n", - "Epoch 785: model parameters saved\n", - "Epoch 786 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5646)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5646)\n", - "Epoch 786: avg_loss appended (1.5646)\n", - "Epoch 786: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 786: accuracy appended (20.00%)\n", - "Epoch 786: model set back to train mode\n", - "Epoch 786: model parameters saved\n", - "Epoch 787 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5646)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5646)\n", - "Epoch 787: avg_loss appended (1.5646)\n", - "Epoch 787: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 787: accuracy appended (20.00%)\n", - "Epoch 787: model set back to train mode\n", - "Epoch 787: model parameters saved\n", - "Epoch 788 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5646)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5646)\n", - "Epoch 788: avg_loss appended (1.5646)\n", - "Epoch 788: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 788: accuracy appended (20.00%)\n", - "Epoch 788: model set back to train mode\n", - "Epoch 788: model parameters saved\n", - "Epoch 789 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5646)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5646)\n", - "Epoch 789: avg_loss appended (1.5646)\n", - "Epoch 789: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 789: accuracy appended (20.00%)\n", - "Epoch 789: model set back to train mode\n", - "Epoch 789: model parameters saved\n", - "Epoch 790 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5646)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5646)\n", - "Epoch 790: avg_loss appended (1.5646)\n", - "Epoch 790: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 790: accuracy appended (20.00%)\n", - "Epoch 790: model set back to train mode\n", - "Epoch 790: model parameters saved\n", - "Epoch 791 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5646)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5646)\n", - "Epoch 791: avg_loss appended (1.5646)\n", - "Epoch 791: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 791: accuracy appended (20.00%)\n", - "Epoch 791: model set back to train mode\n", - "Epoch 791: model parameters saved\n", - "Epoch 792 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5646)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5646)\n", - "Epoch 792: avg_loss appended (1.5646)\n", - "Epoch 792: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 792: accuracy appended (20.00%)\n", - "Epoch 792: model set back to train mode\n", - "Epoch 792: model parameters saved\n", - "Epoch 793 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5646)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5646)\n", - "Epoch 793: avg_loss appended (1.5646)\n", - "Epoch 793: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 793: accuracy appended (20.00%)\n", - "Epoch 793: model set back to train mode\n", - "Epoch 793: model parameters saved\n", - "Epoch 794 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5646)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5646)\n", - "Epoch 794: avg_loss appended (1.5646)\n", - "Epoch 794: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 794: accuracy appended (20.00%)\n", - "Epoch 794: model set back to train mode\n", - "Epoch 794: model parameters saved\n", - "Epoch 795 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5646)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5646)\n", - "Epoch 795: avg_loss appended (1.5646)\n", - "Epoch 795: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 795: accuracy appended (20.00%)\n", - "Epoch 795: model set back to train mode\n", - "Epoch 795: model parameters saved\n", - "Epoch 796 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5646)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5646)\n", - "Epoch 796: avg_loss appended (1.5646)\n", - "Epoch 796: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 796: accuracy appended (20.00%)\n", - "Epoch 796: model set back to train mode\n", - "Epoch 796: model parameters saved\n", - "Epoch 797 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5646)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5646)\n", - "Epoch 797: avg_loss appended (1.5646)\n", - "Epoch 797: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 797: accuracy appended (20.00%)\n", - "Epoch 797: model set back to train mode\n", - "Epoch 797: model parameters saved\n", - "Epoch 798 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5646)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5646)\n", - "Epoch 798: avg_loss appended (1.5646)\n", - "Epoch 798: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 798: accuracy appended (20.00%)\n", - "Epoch 798: model set back to train mode\n", - "Epoch 798: model parameters saved\n", - "Epoch 799 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5646)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5646)\n", - "Epoch 799: avg_loss appended (1.5646)\n", - "Epoch 799: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 799: accuracy appended (20.00%)\n", - "Epoch 799: model set back to train mode\n", - "Epoch 799: model parameters saved\n", - "Epoch 800 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5646)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5646)\n", - "Epoch 800: avg_loss appended (1.5646)\n", - "Epoch 800: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 800: accuracy appended (20.00%)\n", - "Epoch 800: model set back to train mode\n", - "Epoch 800: model parameters saved\n", - "Epoch 800/10000, Loss: 1.5646, Accuracy: 20.00%\n", - "Epoch 801 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5646)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5646)\n", - "Epoch 801: avg_loss appended (1.5646)\n", - "Epoch 801: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 801: accuracy appended (20.00%)\n", - "Epoch 801: model set back to train mode\n", - "Epoch 801: model parameters saved\n", - "Epoch 802 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5646)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5646)\n", - "Epoch 802: avg_loss appended (1.5646)\n", - "Epoch 802: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 802: accuracy appended (20.00%)\n", - "Epoch 802: model set back to train mode\n", - "Epoch 802: model parameters saved\n", - "Epoch 803 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5646)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5646)\n", - "Epoch 803: avg_loss appended (1.5646)\n", - "Epoch 803: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 803: accuracy appended (20.00%)\n", - "Epoch 803: model set back to train mode\n", - "Epoch 803: model parameters saved\n", - "Epoch 804 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5646)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5646)\n", - "Epoch 804: avg_loss appended (1.5646)\n", - "Epoch 804: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 804: accuracy appended (20.00%)\n", - "Epoch 804: model set back to train mode\n", - "Epoch 804: model parameters saved\n", - "Epoch 805 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5646)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5646)\n", - "Epoch 805: avg_loss appended (1.5646)\n", - "Epoch 805: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 805: accuracy appended (20.00%)\n", - "Epoch 805: model set back to train mode\n", - "Epoch 805: model parameters saved\n", - "Epoch 806 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5645)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5645)\n", - "Epoch 806: avg_loss appended (1.5645)\n", - "Epoch 806: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 806: accuracy appended (20.00%)\n", - "Epoch 806: model set back to train mode\n", - "Epoch 806: model parameters saved\n", - "Epoch 807 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5645)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5645)\n", - "Epoch 807: avg_loss appended (1.5645)\n", - "Epoch 807: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 807: accuracy appended (20.00%)\n", - "Epoch 807: model set back to train mode\n", - "Epoch 807: model parameters saved\n", - "Epoch 808 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5645)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5645)\n", - "Epoch 808: avg_loss appended (1.5645)\n", - "Epoch 808: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 808: accuracy appended (20.00%)\n", - "Epoch 808: model set back to train mode\n", - "Epoch 808: model parameters saved\n", - "Epoch 809 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5645)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5645)\n", - "Epoch 809: avg_loss appended (1.5645)\n", - "Epoch 809: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 809: accuracy appended (20.00%)\n", - "Epoch 809: model set back to train mode\n", - "Epoch 809: model parameters saved\n", - "Epoch 810 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5645)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5645)\n", - "Epoch 810: avg_loss appended (1.5645)\n", - "Epoch 810: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 810: accuracy appended (20.00%)\n", - "Epoch 810: model set back to train mode\n", - "Epoch 810: model parameters saved\n", - "Epoch 811 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5645)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5645)\n", - "Epoch 811: avg_loss appended (1.5645)\n", - "Epoch 811: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 811: accuracy appended (20.00%)\n", - "Epoch 811: model set back to train mode\n", - "Epoch 811: model parameters saved\n", - "Epoch 812 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5645)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5645)\n", - "Epoch 812: avg_loss appended (1.5645)\n", - "Epoch 812: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 812: accuracy appended (20.00%)\n", - "Epoch 812: model set back to train mode\n", - "Epoch 812: model parameters saved\n", - "Epoch 813 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5645)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5645)\n", - "Epoch 813: avg_loss appended (1.5645)\n", - "Epoch 813: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 813: accuracy appended (20.00%)\n", - "Epoch 813: model set back to train mode\n", - "Epoch 813: model parameters saved\n", - "Epoch 814 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5645)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5645)\n", - "Epoch 814: avg_loss appended (1.5645)\n", - "Epoch 814: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 814: accuracy appended (20.00%)\n", - "Epoch 814: model set back to train mode\n", - "Epoch 814: model parameters saved\n", - "Epoch 815 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5645)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5645)\n", - "Epoch 815: avg_loss appended (1.5645)\n", - "Epoch 815: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 815: accuracy appended (20.00%)\n", - "Epoch 815: model set back to train mode\n", - "Epoch 815: model parameters saved\n", - "Epoch 816 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5645)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5645)\n", - "Epoch 816: avg_loss appended (1.5645)\n", - "Epoch 816: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 816: accuracy appended (20.00%)\n", - "Epoch 816: model set back to train mode\n", - "Epoch 816: model parameters saved\n", - "Epoch 817 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5645)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5645)\n", - "Epoch 817: avg_loss appended (1.5645)\n", - "Epoch 817: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 817: accuracy appended (20.00%)\n", - "Epoch 817: model set back to train mode\n", - "Epoch 817: model parameters saved\n", - "Epoch 818 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5645)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5645)\n", - "Epoch 818: avg_loss appended (1.5645)\n", - "Epoch 818: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 818: accuracy appended (20.00%)\n", - "Epoch 818: model set back to train mode\n", - "Epoch 818: model parameters saved\n", - "Epoch 819 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5645)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5645)\n", - "Epoch 819: avg_loss appended (1.5645)\n", - "Epoch 819: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 819: accuracy appended (20.00%)\n", - "Epoch 819: model set back to train mode\n", - "Epoch 819: model parameters saved\n", - "Epoch 820 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5645)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5645)\n", - "Epoch 820: avg_loss appended (1.5645)\n", - "Epoch 820: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 820: accuracy appended (20.00%)\n", - "Epoch 820: model set back to train mode\n", - "Epoch 820: model parameters saved\n", - "Epoch 821 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5645)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5645)\n", - "Epoch 821: avg_loss appended (1.5645)\n", - "Epoch 821: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 821: accuracy appended (20.00%)\n", - "Epoch 821: model set back to train mode\n", - "Epoch 821: model parameters saved\n", - "Epoch 822 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5645)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5645)\n", - "Epoch 822: avg_loss appended (1.5645)\n", - "Epoch 822: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 822: accuracy appended (20.00%)\n", - "Epoch 822: model set back to train mode\n", - "Epoch 822: model parameters saved\n", - "Epoch 823 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5645)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5645)\n", - "Epoch 823: avg_loss appended (1.5645)\n", - "Epoch 823: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 823: accuracy appended (20.00%)\n", - "Epoch 823: model set back to train mode\n", - "Epoch 823: model parameters saved\n", - "Epoch 824 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5645)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5645)\n", - "Epoch 824: avg_loss appended (1.5645)\n", - "Epoch 824: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 824: accuracy appended (20.00%)\n", - "Epoch 824: model set back to train mode\n", - "Epoch 824: model parameters saved\n", - "Epoch 825 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5645)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5645)\n", - "Epoch 825: avg_loss appended (1.5645)\n", - "Epoch 825: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 825: accuracy appended (20.00%)\n", - "Epoch 825: model set back to train mode\n", - "Epoch 825: model parameters saved\n", - "Epoch 826 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5645)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5645)\n", - "Epoch 826: avg_loss appended (1.5645)\n", - "Epoch 826: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 826: accuracy appended (20.00%)\n", - "Epoch 826: model set back to train mode\n", - "Epoch 826: model parameters saved\n", - "Epoch 827 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5645)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5645)\n", - "Epoch 827: avg_loss appended (1.5645)\n", - "Epoch 827: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 827: accuracy appended (20.00%)\n", - "Epoch 827: model set back to train mode\n", - "Epoch 827: model parameters saved\n", - "Epoch 828 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5645)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5645)\n", - "Epoch 828: avg_loss appended (1.5645)\n", - "Epoch 828: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 828: accuracy appended (20.00%)\n", - "Epoch 828: model set back to train mode\n", - "Epoch 828: model parameters saved\n", - "Epoch 829 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5645)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5645)\n", - "Epoch 829: avg_loss appended (1.5645)\n", - "Epoch 829: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 829: accuracy appended (20.00%)\n", - "Epoch 829: model set back to train mode\n", - "Epoch 829: model parameters saved\n", - "Epoch 830 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5644)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5644)\n", - "Epoch 830: avg_loss appended (1.5644)\n", - "Epoch 830: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 830: accuracy appended (20.00%)\n", - "Epoch 830: model set back to train mode\n", - "Epoch 830: model parameters saved\n", - "Epoch 831 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5644)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5644)\n", - "Epoch 831: avg_loss appended (1.5644)\n", - "Epoch 831: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 831: accuracy appended (20.00%)\n", - "Epoch 831: model set back to train mode\n", - "Epoch 831: model parameters saved\n", - "Epoch 832 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5644)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5644)\n", - "Epoch 832: avg_loss appended (1.5644)\n", - "Epoch 832: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 832: accuracy appended (20.00%)\n", - "Epoch 832: model set back to train mode\n", - "Epoch 832: model parameters saved\n", - "Epoch 833 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5644)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5644)\n", - "Epoch 833: avg_loss appended (1.5644)\n", - "Epoch 833: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 833: accuracy appended (20.00%)\n", - "Epoch 833: model set back to train mode\n", - "Epoch 833: model parameters saved\n", - "Epoch 834 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5644)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5644)\n", - "Epoch 834: avg_loss appended (1.5644)\n", - "Epoch 834: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 834: accuracy appended (20.00%)\n", - "Epoch 834: model set back to train mode\n", - "Epoch 834: model parameters saved\n", - "Epoch 835 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5644)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5644)\n", - "Epoch 835: avg_loss appended (1.5644)\n", - "Epoch 835: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 835: accuracy appended (20.00%)\n", - "Epoch 835: model set back to train mode\n", - "Epoch 835: model parameters saved\n", - "Epoch 836 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5644)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5644)\n", - "Epoch 836: avg_loss appended (1.5644)\n", - "Epoch 836: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 836: accuracy appended (20.00%)\n", - "Epoch 836: model set back to train mode\n", - "Epoch 836: model parameters saved\n", - "Epoch 837 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5644)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5644)\n", - "Epoch 837: avg_loss appended (1.5644)\n", - "Epoch 837: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 837: accuracy appended (20.00%)\n", - "Epoch 837: model set back to train mode\n", - "Epoch 837: model parameters saved\n", - "Epoch 838 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5644)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5644)\n", - "Epoch 838: avg_loss appended (1.5644)\n", - "Epoch 838: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 838: accuracy appended (20.00%)\n", - "Epoch 838: model set back to train mode\n", - "Epoch 838: model parameters saved\n", - "Epoch 839 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5644)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5644)\n", - "Epoch 839: avg_loss appended (1.5644)\n", - "Epoch 839: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 839: accuracy appended (20.00%)\n", - "Epoch 839: model set back to train mode\n", - "Epoch 839: model parameters saved\n", - "Epoch 840 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5644)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5644)\n", - "Epoch 840: avg_loss appended (1.5644)\n", - "Epoch 840: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 840: accuracy appended (20.00%)\n", - "Epoch 840: model set back to train mode\n", - "Epoch 840: model parameters saved\n", - "Epoch 841 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5644)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5644)\n", - "Epoch 841: avg_loss appended (1.5644)\n", - "Epoch 841: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 841: accuracy appended (20.00%)\n", - "Epoch 841: model set back to train mode\n", - "Epoch 841: model parameters saved\n", - "Epoch 842 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5644)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5644)\n", - "Epoch 842: avg_loss appended (1.5644)\n", - "Epoch 842: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 842: accuracy appended (20.00%)\n", - "Epoch 842: model set back to train mode\n", - "Epoch 842: model parameters saved\n", - "Epoch 843 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5644)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5644)\n", - "Epoch 843: avg_loss appended (1.5644)\n", - "Epoch 843: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 843: accuracy appended (20.00%)\n", - "Epoch 843: model set back to train mode\n", - "Epoch 843: model parameters saved\n", - "Epoch 844 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5644)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5644)\n", - "Epoch 844: avg_loss appended (1.5644)\n", - "Epoch 844: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 844: accuracy appended (20.00%)\n", - "Epoch 844: model set back to train mode\n", - "Epoch 844: model parameters saved\n", - "Epoch 845 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5644)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5644)\n", - "Epoch 845: avg_loss appended (1.5644)\n", - "Epoch 845: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 845: accuracy appended (20.00%)\n", - "Epoch 845: model set back to train mode\n", - "Epoch 845: model parameters saved\n", - "Epoch 846 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5644)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5644)\n", - "Epoch 846: avg_loss appended (1.5644)\n", - "Epoch 846: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 846: accuracy appended (20.00%)\n", - "Epoch 846: model set back to train mode\n", - "Epoch 846: model parameters saved\n", - "Epoch 847 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5644)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5644)\n", - "Epoch 847: avg_loss appended (1.5644)\n", - "Epoch 847: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 847: accuracy appended (20.00%)\n", - "Epoch 847: model set back to train mode\n", - "Epoch 847: model parameters saved\n", - "Epoch 848 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5644)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5644)\n", - "Epoch 848: avg_loss appended (1.5644)\n", - "Epoch 848: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 848: accuracy appended (20.00%)\n", - "Epoch 848: model set back to train mode\n", - "Epoch 848: model parameters saved\n", - "Epoch 849 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5644)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5644)\n", - "Epoch 849: avg_loss appended (1.5644)\n", - "Epoch 849: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 849: accuracy appended (20.00%)\n", - "Epoch 849: model set back to train mode\n", - "Epoch 849: model parameters saved\n", - "Epoch 850 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5644)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5644)\n", - "Epoch 850: avg_loss appended (1.5644)\n", - "Epoch 850: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 850: accuracy appended (20.00%)\n", - "Epoch 850: model set back to train mode\n", - "Epoch 850: model parameters saved\n", - "Epoch 851 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5644)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5644)\n", - "Epoch 851: avg_loss appended (1.5644)\n", - "Epoch 851: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 851: accuracy appended (20.00%)\n", - "Epoch 851: model set back to train mode\n", - "Epoch 851: model parameters saved\n", - "Epoch 852 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5644)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5644)\n", - "Epoch 852: avg_loss appended (1.5644)\n", - "Epoch 852: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 852: accuracy appended (20.00%)\n", - "Epoch 852: model set back to train mode\n", - "Epoch 852: model parameters saved\n", - "Epoch 853 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5644)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5644)\n", - "Epoch 853: avg_loss appended (1.5644)\n", - "Epoch 853: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 853: accuracy appended (20.00%)\n", - "Epoch 853: model set back to train mode\n", - "Epoch 853: model parameters saved\n", - "Epoch 854 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5644)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5644)\n", - "Epoch 854: avg_loss appended (1.5644)\n", - "Epoch 854: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 854: accuracy appended (20.00%)\n", - "Epoch 854: model set back to train mode\n", - "Epoch 854: model parameters saved\n", - "Epoch 855 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5644)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5644)\n", - "Epoch 855: avg_loss appended (1.5644)\n", - "Epoch 855: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 855: accuracy appended (20.00%)\n", - "Epoch 855: model set back to train mode\n", - "Epoch 855: model parameters saved\n", - "Epoch 856 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5644)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5644)\n", - "Epoch 856: avg_loss appended (1.5644)\n", - "Epoch 856: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 856: accuracy appended (20.00%)\n", - "Epoch 856: model set back to train mode\n", - "Epoch 856: model parameters saved\n", - "Epoch 857 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5643)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5643)\n", - "Epoch 857: avg_loss appended (1.5643)\n", - "Epoch 857: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 857: accuracy appended (20.00%)\n", - "Epoch 857: model set back to train mode\n", - "Epoch 857: model parameters saved\n", - "Epoch 858 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5643)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5643)\n", - "Epoch 858: avg_loss appended (1.5643)\n", - "Epoch 858: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 858: accuracy appended (20.00%)\n", - "Epoch 858: model set back to train mode\n", - "Epoch 858: model parameters saved\n", - "Epoch 859 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5643)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5643)\n", - "Epoch 859: avg_loss appended (1.5643)\n", - "Epoch 859: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 859: accuracy appended (20.00%)\n", - "Epoch 859: model set back to train mode\n", - "Epoch 859: model parameters saved\n", - "Epoch 860 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5643)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5643)\n", - "Epoch 860: avg_loss appended (1.5643)\n", - "Epoch 860: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 860: accuracy appended (20.00%)\n", - "Epoch 860: model set back to train mode\n", - "Epoch 860: model parameters saved\n", - "Epoch 861 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5643)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5643)\n", - "Epoch 861: avg_loss appended (1.5643)\n", - "Epoch 861: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 861: accuracy appended (20.00%)\n", - "Epoch 861: model set back to train mode\n", - "Epoch 861: model parameters saved\n", - "Epoch 862 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5643)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5643)\n", - "Epoch 862: avg_loss appended (1.5643)\n", - "Epoch 862: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 862: accuracy appended (20.00%)\n", - "Epoch 862: model set back to train mode\n", - "Epoch 862: model parameters saved\n", - "Epoch 863 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5643)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5643)\n", - "Epoch 863: avg_loss appended (1.5643)\n", - "Epoch 863: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 863: accuracy appended (20.00%)\n", - "Epoch 863: model set back to train mode\n", - "Epoch 863: model parameters saved\n", - "Epoch 864 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5643)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5643)\n", - "Epoch 864: avg_loss appended (1.5643)\n", - "Epoch 864: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 864: accuracy appended (20.00%)\n", - "Epoch 864: model set back to train mode\n", - "Epoch 864: model parameters saved\n", - "Epoch 865 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5643)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5643)\n", - "Epoch 865: avg_loss appended (1.5643)\n", - "Epoch 865: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 865: accuracy appended (20.00%)\n", - "Epoch 865: model set back to train mode\n", - "Epoch 865: model parameters saved\n", - "Epoch 866 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5643)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5643)\n", - "Epoch 866: avg_loss appended (1.5643)\n", - "Epoch 866: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 866: accuracy appended (20.00%)\n", - "Epoch 866: model set back to train mode\n", - "Epoch 866: model parameters saved\n", - "Epoch 867 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5643)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5643)\n", - "Epoch 867: avg_loss appended (1.5643)\n", - "Epoch 867: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 867: accuracy appended (20.00%)\n", - "Epoch 867: model set back to train mode\n", - "Epoch 867: model parameters saved\n", - "Epoch 868 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5643)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5643)\n", - "Epoch 868: avg_loss appended (1.5643)\n", - "Epoch 868: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 868: accuracy appended (20.00%)\n", - "Epoch 868: model set back to train mode\n", - "Epoch 868: model parameters saved\n", - "Epoch 869 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5643)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5643)\n", - "Epoch 869: avg_loss appended (1.5643)\n", - "Epoch 869: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 869: accuracy appended (20.00%)\n", - "Epoch 869: model set back to train mode\n", - "Epoch 869: model parameters saved\n", - "Epoch 870 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5643)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5643)\n", - "Epoch 870: avg_loss appended (1.5643)\n", - "Epoch 870: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 870: accuracy appended (20.00%)\n", - "Epoch 870: model set back to train mode\n", - "Epoch 870: model parameters saved\n", - "Epoch 871 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5643)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5643)\n", - "Epoch 871: avg_loss appended (1.5643)\n", - "Epoch 871: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 871: accuracy appended (20.00%)\n", - "Epoch 871: model set back to train mode\n", - "Epoch 871: model parameters saved\n", - "Epoch 872 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5643)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5643)\n", - "Epoch 872: avg_loss appended (1.5643)\n", - "Epoch 872: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 872: accuracy appended (20.00%)\n", - "Epoch 872: model set back to train mode\n", - "Epoch 872: model parameters saved\n", - "Epoch 873 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5643)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5643)\n", - "Epoch 873: avg_loss appended (1.5643)\n", - "Epoch 873: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 873: accuracy appended (20.00%)\n", - "Epoch 873: model set back to train mode\n", - "Epoch 873: model parameters saved\n", - "Epoch 874 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5643)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5643)\n", - "Epoch 874: avg_loss appended (1.5643)\n", - "Epoch 874: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 874: accuracy appended (20.00%)\n", - "Epoch 874: model set back to train mode\n", - "Epoch 874: model parameters saved\n", - "Epoch 875 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5643)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5643)\n", - "Epoch 875: avg_loss appended (1.5643)\n", - "Epoch 875: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 875: accuracy appended (20.00%)\n", - "Epoch 875: model set back to train mode\n", - "Epoch 875: model parameters saved\n", - "Epoch 876 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5643)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5643)\n", - "Epoch 876: avg_loss appended (1.5643)\n", - "Epoch 876: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 876: accuracy appended (20.00%)\n", - "Epoch 876: model set back to train mode\n", - "Epoch 876: model parameters saved\n", - "Epoch 877 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5643)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5643)\n", - "Epoch 877: avg_loss appended (1.5643)\n", - "Epoch 877: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 877: accuracy appended (20.00%)\n", - "Epoch 877: model set back to train mode\n", - "Epoch 877: model parameters saved\n", - "Epoch 878 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5643)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5643)\n", - "Epoch 878: avg_loss appended (1.5643)\n", - "Epoch 878: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 878: accuracy appended (20.00%)\n", - "Epoch 878: model set back to train mode\n", - "Epoch 878: model parameters saved\n", - "Epoch 879 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5643)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5643)\n", - "Epoch 879: avg_loss appended (1.5643)\n", - "Epoch 879: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 879: accuracy appended (20.00%)\n", - "Epoch 879: model set back to train mode\n", - "Epoch 879: model parameters saved\n", - "Epoch 880 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5643)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5643)\n", - "Epoch 880: avg_loss appended (1.5643)\n", - "Epoch 880: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 880: accuracy appended (20.00%)\n", - "Epoch 880: model set back to train mode\n", - "Epoch 880: model parameters saved\n", - "Epoch 881 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5643)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5643)\n", - "Epoch 881: avg_loss appended (1.5643)\n", - "Epoch 881: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 881: accuracy appended (20.00%)\n", - "Epoch 881: model set back to train mode\n", - "Epoch 881: model parameters saved\n", - "Epoch 882 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5643)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5643)\n", - "Epoch 882: avg_loss appended (1.5643)\n", - "Epoch 882: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 882: accuracy appended (20.00%)\n", - "Epoch 882: model set back to train mode\n", - "Epoch 882: model parameters saved\n", - "Epoch 883 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5643)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5643)\n", - "Epoch 883: avg_loss appended (1.5643)\n", - "Epoch 883: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 883: accuracy appended (20.00%)\n", - "Epoch 883: model set back to train mode\n", - "Epoch 883: model parameters saved\n", - "Epoch 884 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5643)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5643)\n", - "Epoch 884: avg_loss appended (1.5643)\n", - "Epoch 884: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 884: accuracy appended (20.00%)\n", - "Epoch 884: model set back to train mode\n", - "Epoch 884: model parameters saved\n", - "Epoch 885 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5643)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5643)\n", - "Epoch 885: avg_loss appended (1.5643)\n", - "Epoch 885: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 885: accuracy appended (20.00%)\n", - "Epoch 885: model set back to train mode\n", - "Epoch 885: model parameters saved\n", - "Epoch 886 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5643)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5643)\n", - "Epoch 886: avg_loss appended (1.5643)\n", - "Epoch 886: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 886: accuracy appended (20.00%)\n", - "Epoch 886: model set back to train mode\n", - "Epoch 886: model parameters saved\n", - "Epoch 887 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5642)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5642)\n", - "Epoch 887: avg_loss appended (1.5642)\n", - "Epoch 887: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 887: accuracy appended (20.00%)\n", - "Epoch 887: model set back to train mode\n", - "Epoch 887: model parameters saved\n", - "Epoch 888 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5642)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5642)\n", - "Epoch 888: avg_loss appended (1.5642)\n", - "Epoch 888: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 888: accuracy appended (20.00%)\n", - "Epoch 888: model set back to train mode\n", - "Epoch 888: model parameters saved\n", - "Epoch 889 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5642)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5642)\n", - "Epoch 889: avg_loss appended (1.5642)\n", - "Epoch 889: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 889: accuracy appended (20.00%)\n", - "Epoch 889: model set back to train mode\n", - "Epoch 889: model parameters saved\n", - "Epoch 890 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5642)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5642)\n", - "Epoch 890: avg_loss appended (1.5642)\n", - "Epoch 890: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 890: accuracy appended (20.00%)\n", - "Epoch 890: model set back to train mode\n", - "Epoch 890: model parameters saved\n", - "Epoch 891 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5642)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5642)\n", - "Epoch 891: avg_loss appended (1.5642)\n", - "Epoch 891: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 891: accuracy appended (20.00%)\n", - "Epoch 891: model set back to train mode\n", - "Epoch 891: model parameters saved\n", - "Epoch 892 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5642)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5642)\n", - "Epoch 892: avg_loss appended (1.5642)\n", - "Epoch 892: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 892: accuracy appended (20.00%)\n", - "Epoch 892: model set back to train mode\n", - "Epoch 892: model parameters saved\n", - "Epoch 893 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5642)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5642)\n", - "Epoch 893: avg_loss appended (1.5642)\n", - "Epoch 893: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 893: accuracy appended (20.00%)\n", - "Epoch 893: model set back to train mode\n", - "Epoch 893: model parameters saved\n", - "Epoch 894 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5642)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5642)\n", - "Epoch 894: avg_loss appended (1.5642)\n", - "Epoch 894: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 894: accuracy appended (20.00%)\n", - "Epoch 894: model set back to train mode\n", - "Epoch 894: model parameters saved\n", - "Epoch 895 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5642)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5642)\n", - "Epoch 895: avg_loss appended (1.5642)\n", - "Epoch 895: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 895: accuracy appended (20.00%)\n", - "Epoch 895: model set back to train mode\n", - "Epoch 895: model parameters saved\n", - "Epoch 896 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5642)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5642)\n", - "Epoch 896: avg_loss appended (1.5642)\n", - "Epoch 896: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 896: accuracy appended (20.00%)\n", - "Epoch 896: model set back to train mode\n", - "Epoch 896: model parameters saved\n", - "Epoch 897 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5642)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5642)\n", - "Epoch 897: avg_loss appended (1.5642)\n", - "Epoch 897: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 897: accuracy appended (20.00%)\n", - "Epoch 897: model set back to train mode\n", - "Epoch 897: model parameters saved\n", - "Epoch 898 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5642)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5642)\n", - "Epoch 898: avg_loss appended (1.5642)\n", - "Epoch 898: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 898: accuracy appended (20.00%)\n", - "Epoch 898: model set back to train mode\n", - "Epoch 898: model parameters saved\n", - "Epoch 899 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5642)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5642)\n", - "Epoch 899: avg_loss appended (1.5642)\n", - "Epoch 899: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 899: accuracy appended (20.00%)\n", - "Epoch 899: model set back to train mode\n", - "Epoch 899: model parameters saved\n", - "Epoch 900 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5642)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5642)\n", - "Epoch 900: avg_loss appended (1.5642)\n", - "Epoch 900: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 900: accuracy appended (20.00%)\n", - "Epoch 900: model set back to train mode\n", - "Epoch 900: model parameters saved\n", - "Epoch 900/10000, Loss: 1.5642, Accuracy: 20.00%\n", - "Epoch 901 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5642)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5642)\n", - "Epoch 901: avg_loss appended (1.5642)\n", - "Epoch 901: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 901: accuracy appended (20.00%)\n", - "Epoch 901: model set back to train mode\n", - "Epoch 901: model parameters saved\n", - "Epoch 902 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5642)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5642)\n", - "Epoch 902: avg_loss appended (1.5642)\n", - "Epoch 902: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 902: accuracy appended (20.00%)\n", - "Epoch 902: model set back to train mode\n", - "Epoch 902: model parameters saved\n", - "Epoch 903 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5642)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5642)\n", - "Epoch 903: avg_loss appended (1.5642)\n", - "Epoch 903: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 903: accuracy appended (20.00%)\n", - "Epoch 903: model set back to train mode\n", - "Epoch 903: model parameters saved\n", - "Epoch 904 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5642)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5642)\n", - "Epoch 904: avg_loss appended (1.5642)\n", - "Epoch 904: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 904: accuracy appended (20.00%)\n", - "Epoch 904: model set back to train mode\n", - "Epoch 904: model parameters saved\n", - "Epoch 905 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5642)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5642)\n", - "Epoch 905: avg_loss appended (1.5642)\n", - "Epoch 905: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 905: accuracy appended (20.00%)\n", - "Epoch 905: model set back to train mode\n", - "Epoch 905: model parameters saved\n", - "Epoch 906 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5642)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5642)\n", - "Epoch 906: avg_loss appended (1.5642)\n", - "Epoch 906: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 906: accuracy appended (20.00%)\n", - "Epoch 906: model set back to train mode\n", - "Epoch 906: model parameters saved\n", - "Epoch 907 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5642)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5642)\n", - "Epoch 907: avg_loss appended (1.5642)\n", - "Epoch 907: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 907: accuracy appended (20.00%)\n", - "Epoch 907: model set back to train mode\n", - "Epoch 907: model parameters saved\n", - "Epoch 908 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5642)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5642)\n", - "Epoch 908: avg_loss appended (1.5642)\n", - "Epoch 908: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 908: accuracy appended (20.00%)\n", - "Epoch 908: model set back to train mode\n", - "Epoch 908: model parameters saved\n", - "Epoch 909 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5642)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5642)\n", - "Epoch 909: avg_loss appended (1.5642)\n", - "Epoch 909: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 909: accuracy appended (20.00%)\n", - "Epoch 909: model set back to train mode\n", - "Epoch 909: model parameters saved\n", - "Epoch 910 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5642)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5642)\n", - "Epoch 910: avg_loss appended (1.5642)\n", - "Epoch 910: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 910: accuracy appended (20.00%)\n", - "Epoch 910: model set back to train mode\n", - "Epoch 910: model parameters saved\n", - "Epoch 911 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5642)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5642)\n", - "Epoch 911: avg_loss appended (1.5642)\n", - "Epoch 911: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 911: accuracy appended (20.00%)\n", - "Epoch 911: model set back to train mode\n", - "Epoch 911: model parameters saved\n", - "Epoch 912 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5642)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5642)\n", - "Epoch 912: avg_loss appended (1.5642)\n", - "Epoch 912: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 912: accuracy appended (20.00%)\n", - "Epoch 912: model set back to train mode\n", - "Epoch 912: model parameters saved\n", - "Epoch 913 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5642)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5642)\n", - "Epoch 913: avg_loss appended (1.5642)\n", - "Epoch 913: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 913: accuracy appended (20.00%)\n", - "Epoch 913: model set back to train mode\n", - "Epoch 913: model parameters saved\n", - "Epoch 914 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5642)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5642)\n", - "Epoch 914: avg_loss appended (1.5642)\n", - "Epoch 914: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 914: accuracy appended (20.00%)\n", - "Epoch 914: model set back to train mode\n", - "Epoch 914: model parameters saved\n", - "Epoch 915 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5642)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5642)\n", - "Epoch 915: avg_loss appended (1.5642)\n", - "Epoch 915: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 915: accuracy appended (20.00%)\n", - "Epoch 915: model set back to train mode\n", - "Epoch 915: model parameters saved\n", - "Epoch 916 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5642)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5642)\n", - "Epoch 916: avg_loss appended (1.5642)\n", - "Epoch 916: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 916: accuracy appended (20.00%)\n", - "Epoch 916: model set back to train mode\n", - "Epoch 916: model parameters saved\n", - "Epoch 917 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5642)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5642)\n", - "Epoch 917: avg_loss appended (1.5642)\n", - "Epoch 917: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 917: accuracy appended (20.00%)\n", - "Epoch 917: model set back to train mode\n", - "Epoch 917: model parameters saved\n", - "Epoch 918 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5642)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5642)\n", - "Epoch 918: avg_loss appended (1.5642)\n", - "Epoch 918: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 918: accuracy appended (20.00%)\n", - "Epoch 918: model set back to train mode\n", - "Epoch 918: model parameters saved\n", - "Epoch 919 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5642)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5642)\n", - "Epoch 919: avg_loss appended (1.5642)\n", - "Epoch 919: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 919: accuracy appended (20.00%)\n", - "Epoch 919: model set back to train mode\n", - "Epoch 919: model parameters saved\n", - "Epoch 920 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5642)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5642)\n", - "Epoch 920: avg_loss appended (1.5642)\n", - "Epoch 920: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 920: accuracy appended (20.00%)\n", - "Epoch 920: model set back to train mode\n", - "Epoch 920: model parameters saved\n", - "Epoch 921 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5641)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5641)\n", - "Epoch 921: avg_loss appended (1.5641)\n", - "Epoch 921: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 921: accuracy appended (20.00%)\n", - "Epoch 921: model set back to train mode\n", - "Epoch 921: model parameters saved\n", - "Epoch 922 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5641)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5641)\n", - "Epoch 922: avg_loss appended (1.5641)\n", - "Epoch 922: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 922: accuracy appended (20.00%)\n", - "Epoch 922: model set back to train mode\n", - "Epoch 922: model parameters saved\n", - "Epoch 923 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5641)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5641)\n", - "Epoch 923: avg_loss appended (1.5641)\n", - "Epoch 923: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 923: accuracy appended (20.00%)\n", - "Epoch 923: model set back to train mode\n", - "Epoch 923: model parameters saved\n", - "Epoch 924 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5641)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5641)\n", - "Epoch 924: avg_loss appended (1.5641)\n", - "Epoch 924: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 924: accuracy appended (20.00%)\n", - "Epoch 924: model set back to train mode\n", - "Epoch 924: model parameters saved\n", - "Epoch 925 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5641)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5641)\n", - "Epoch 925: avg_loss appended (1.5641)\n", - "Epoch 925: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 925: accuracy appended (20.00%)\n", - "Epoch 925: model set back to train mode\n", - "Epoch 925: model parameters saved\n", - "Epoch 926 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5641)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5641)\n", - "Epoch 926: avg_loss appended (1.5641)\n", - "Epoch 926: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 926: accuracy appended (20.00%)\n", - "Epoch 926: model set back to train mode\n", - "Epoch 926: model parameters saved\n", - "Epoch 927 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5641)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5641)\n", - "Epoch 927: avg_loss appended (1.5641)\n", - "Epoch 927: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 927: accuracy appended (20.00%)\n", - "Epoch 927: model set back to train mode\n", - "Epoch 927: model parameters saved\n", - "Epoch 928 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5641)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5641)\n", - "Epoch 928: avg_loss appended (1.5641)\n", - "Epoch 928: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 928: accuracy appended (20.00%)\n", - "Epoch 928: model set back to train mode\n", - "Epoch 928: model parameters saved\n", - "Epoch 929 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5641)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5641)\n", - "Epoch 929: avg_loss appended (1.5641)\n", - "Epoch 929: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 929: accuracy appended (20.00%)\n", - "Epoch 929: model set back to train mode\n", - "Epoch 929: model parameters saved\n", - "Epoch 930 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5641)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5641)\n", - "Epoch 930: avg_loss appended (1.5641)\n", - "Epoch 930: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 930: accuracy appended (20.00%)\n", - "Epoch 930: model set back to train mode\n", - "Epoch 930: model parameters saved\n", - "Epoch 931 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5641)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5641)\n", - "Epoch 931: avg_loss appended (1.5641)\n", - "Epoch 931: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 931: accuracy appended (20.00%)\n", - "Epoch 931: model set back to train mode\n", - "Epoch 931: model parameters saved\n", - "Epoch 932 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5641)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5641)\n", - "Epoch 932: avg_loss appended (1.5641)\n", - "Epoch 932: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 932: accuracy appended (20.00%)\n", - "Epoch 932: model set back to train mode\n", - "Epoch 932: model parameters saved\n", - "Epoch 933 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5641)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5641)\n", - "Epoch 933: avg_loss appended (1.5641)\n", - "Epoch 933: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 933: accuracy appended (20.00%)\n", - "Epoch 933: model set back to train mode\n", - "Epoch 933: model parameters saved\n", - "Epoch 934 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5641)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5641)\n", - "Epoch 934: avg_loss appended (1.5641)\n", - "Epoch 934: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 934: accuracy appended (20.00%)\n", - "Epoch 934: model set back to train mode\n", - "Epoch 934: model parameters saved\n", - "Epoch 935 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5641)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5641)\n", - "Epoch 935: avg_loss appended (1.5641)\n", - "Epoch 935: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 935: accuracy appended (20.00%)\n", - "Epoch 935: model set back to train mode\n", - "Epoch 935: model parameters saved\n", - "Epoch 936 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5641)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5641)\n", - "Epoch 936: avg_loss appended (1.5641)\n", - "Epoch 936: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 936: accuracy appended (20.00%)\n", - "Epoch 936: model set back to train mode\n", - "Epoch 936: model parameters saved\n", - "Epoch 937 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5641)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5641)\n", - "Epoch 937: avg_loss appended (1.5641)\n", - "Epoch 937: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 937: accuracy appended (20.00%)\n", - "Epoch 937: model set back to train mode\n", - "Epoch 937: model parameters saved\n", - "Epoch 938 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5641)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5641)\n", - "Epoch 938: avg_loss appended (1.5641)\n", - "Epoch 938: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 938: accuracy appended (20.00%)\n", - "Epoch 938: model set back to train mode\n", - "Epoch 938: model parameters saved\n", - "Epoch 939 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5641)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5641)\n", - "Epoch 939: avg_loss appended (1.5641)\n", - "Epoch 939: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 939: accuracy appended (20.00%)\n", - "Epoch 939: model set back to train mode\n", - "Epoch 939: model parameters saved\n", - "Epoch 940 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5641)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5641)\n", - "Epoch 940: avg_loss appended (1.5641)\n", - "Epoch 940: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 940: accuracy appended (20.00%)\n", - "Epoch 940: model set back to train mode\n", - "Epoch 940: model parameters saved\n", - "Epoch 941 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5641)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5641)\n", - "Epoch 941: avg_loss appended (1.5641)\n", - "Epoch 941: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 941: accuracy appended (20.00%)\n", - "Epoch 941: model set back to train mode\n", - "Epoch 941: model parameters saved\n", - "Epoch 942 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5641)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5641)\n", - "Epoch 942: avg_loss appended (1.5641)\n", - "Epoch 942: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 942: accuracy appended (20.00%)\n", - "Epoch 942: model set back to train mode\n", - "Epoch 942: model parameters saved\n", - "Epoch 943 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5641)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5641)\n", - "Epoch 943: avg_loss appended (1.5641)\n", - "Epoch 943: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 943: accuracy appended (20.00%)\n", - "Epoch 943: model set back to train mode\n", - "Epoch 943: model parameters saved\n", - "Epoch 944 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5641)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5641)\n", - "Epoch 944: avg_loss appended (1.5641)\n", - "Epoch 944: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 944: accuracy appended (20.00%)\n", - "Epoch 944: model set back to train mode\n", - "Epoch 944: model parameters saved\n", - "Epoch 945 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5641)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5641)\n", - "Epoch 945: avg_loss appended (1.5641)\n", - "Epoch 945: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 945: accuracy appended (20.00%)\n", - "Epoch 945: model set back to train mode\n", - "Epoch 945: model parameters saved\n", - "Epoch 946 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5641)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5641)\n", - "Epoch 946: avg_loss appended (1.5641)\n", - "Epoch 946: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 946: accuracy appended (20.00%)\n", - "Epoch 946: model set back to train mode\n", - "Epoch 946: model parameters saved\n", - "Epoch 947 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5641)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5641)\n", - "Epoch 947: avg_loss appended (1.5641)\n", - "Epoch 947: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 947: accuracy appended (20.00%)\n", - "Epoch 947: model set back to train mode\n", - "Epoch 947: model parameters saved\n", - "Epoch 948 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5641)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5641)\n", - "Epoch 948: avg_loss appended (1.5641)\n", - "Epoch 948: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 948: accuracy appended (20.00%)\n", - "Epoch 948: model set back to train mode\n", - "Epoch 948: model parameters saved\n", - "Epoch 949 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5641)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5641)\n", - "Epoch 949: avg_loss appended (1.5641)\n", - "Epoch 949: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 949: accuracy appended (20.00%)\n", - "Epoch 949: model set back to train mode\n", - "Epoch 949: model parameters saved\n", - "Epoch 950 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5641)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5641)\n", - "Epoch 950: avg_loss appended (1.5641)\n", - "Epoch 950: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 950: accuracy appended (20.00%)\n", - "Epoch 950: model set back to train mode\n", - "Epoch 950: model parameters saved\n", - "Epoch 951 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5641)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5641)\n", - "Epoch 951: avg_loss appended (1.5641)\n", - "Epoch 951: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 951: accuracy appended (20.00%)\n", - "Epoch 951: model set back to train mode\n", - "Epoch 951: model parameters saved\n", - "Epoch 952 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5641)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5641)\n", - "Epoch 952: avg_loss appended (1.5641)\n", - "Epoch 952: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 952: accuracy appended (20.00%)\n", - "Epoch 952: model set back to train mode\n", - "Epoch 952: model parameters saved\n", - "Epoch 953 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5641)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5641)\n", - "Epoch 953: avg_loss appended (1.5641)\n", - "Epoch 953: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 953: accuracy appended (20.00%)\n", - "Epoch 953: model set back to train mode\n", - "Epoch 953: model parameters saved\n", - "Epoch 954 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5641)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5641)\n", - "Epoch 954: avg_loss appended (1.5641)\n", - "Epoch 954: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 954: accuracy appended (20.00%)\n", - "Epoch 954: model set back to train mode\n", - "Epoch 954: model parameters saved\n", - "Epoch 955 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5641)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5641)\n", - "Epoch 955: avg_loss appended (1.5641)\n", - "Epoch 955: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 955: accuracy appended (20.00%)\n", - "Epoch 955: model set back to train mode\n", - "Epoch 955: model parameters saved\n", - "Epoch 956 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5641)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5641)\n", - "Epoch 956: avg_loss appended (1.5641)\n", - "Epoch 956: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 956: accuracy appended (20.00%)\n", - "Epoch 956: model set back to train mode\n", - "Epoch 956: model parameters saved\n", - "Epoch 957 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5641)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5641)\n", - "Epoch 957: avg_loss appended (1.5641)\n", - "Epoch 957: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 957: accuracy appended (20.00%)\n", - "Epoch 957: model set back to train mode\n", - "Epoch 957: model parameters saved\n", - "Epoch 958 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5641)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5641)\n", - "Epoch 958: avg_loss appended (1.5641)\n", - "Epoch 958: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 958: accuracy appended (20.00%)\n", - "Epoch 958: model set back to train mode\n", - "Epoch 958: model parameters saved\n", - "Epoch 959 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5641)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5641)\n", - "Epoch 959: avg_loss appended (1.5641)\n", - "Epoch 959: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 959: accuracy appended (20.00%)\n", - "Epoch 959: model set back to train mode\n", - "Epoch 959: model parameters saved\n", - "Epoch 960 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5640)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5640)\n", - "Epoch 960: avg_loss appended (1.5640)\n", - "Epoch 960: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 960: accuracy appended (20.00%)\n", - "Epoch 960: model set back to train mode\n", - "Epoch 960: model parameters saved\n", - "Epoch 961 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5640)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5640)\n", - "Epoch 961: avg_loss appended (1.5640)\n", - "Epoch 961: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 961: accuracy appended (20.00%)\n", - "Epoch 961: model set back to train mode\n", - "Epoch 961: model parameters saved\n", - "Epoch 962 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5640)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5640)\n", - "Epoch 962: avg_loss appended (1.5640)\n", - "Epoch 962: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 962: accuracy appended (20.00%)\n", - "Epoch 962: model set back to train mode\n", - "Epoch 962: model parameters saved\n", - "Epoch 963 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5640)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5640)\n", - "Epoch 963: avg_loss appended (1.5640)\n", - "Epoch 963: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 963: accuracy appended (20.00%)\n", - "Epoch 963: model set back to train mode\n", - "Epoch 963: model parameters saved\n", - "Epoch 964 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5640)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5640)\n", - "Epoch 964: avg_loss appended (1.5640)\n", - "Epoch 964: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 964: accuracy appended (20.00%)\n", - "Epoch 964: model set back to train mode\n", - "Epoch 964: model parameters saved\n", - "Epoch 965 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5640)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5640)\n", - "Epoch 965: avg_loss appended (1.5640)\n", - "Epoch 965: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 965: accuracy appended (20.00%)\n", - "Epoch 965: model set back to train mode\n", - "Epoch 965: model parameters saved\n", - "Epoch 966 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5640)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5640)\n", - "Epoch 966: avg_loss appended (1.5640)\n", - "Epoch 966: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 966: accuracy appended (20.00%)\n", - "Epoch 966: model set back to train mode\n", - "Epoch 966: model parameters saved\n", - "Epoch 967 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5640)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5640)\n", - "Epoch 967: avg_loss appended (1.5640)\n", - "Epoch 967: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 967: accuracy appended (20.00%)\n", - "Epoch 967: model set back to train mode\n", - "Epoch 967: model parameters saved\n", - "Epoch 968 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5640)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5640)\n", - "Epoch 968: avg_loss appended (1.5640)\n", - "Epoch 968: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 968: accuracy appended (20.00%)\n", - "Epoch 968: model set back to train mode\n", - "Epoch 968: model parameters saved\n", - "Epoch 969 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5640)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5640)\n", - "Epoch 969: avg_loss appended (1.5640)\n", - "Epoch 969: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 969: accuracy appended (20.00%)\n", - "Epoch 969: model set back to train mode\n", - "Epoch 969: model parameters saved\n", - "Epoch 970 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5640)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5640)\n", - "Epoch 970: avg_loss appended (1.5640)\n", - "Epoch 970: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 970: accuracy appended (20.00%)\n", - "Epoch 970: model set back to train mode\n", - "Epoch 970: model parameters saved\n", - "Epoch 971 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5640)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5640)\n", - "Epoch 971: avg_loss appended (1.5640)\n", - "Epoch 971: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 971: accuracy appended (20.00%)\n", - "Epoch 971: model set back to train mode\n", - "Epoch 971: model parameters saved\n", - "Epoch 972 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5640)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5640)\n", - "Epoch 972: avg_loss appended (1.5640)\n", - "Epoch 972: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 972: accuracy appended (20.00%)\n", - "Epoch 972: model set back to train mode\n", - "Epoch 972: model parameters saved\n", - "Epoch 973 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5640)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5640)\n", - "Epoch 973: avg_loss appended (1.5640)\n", - "Epoch 973: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 973: accuracy appended (20.00%)\n", - "Epoch 973: model set back to train mode\n", - "Epoch 973: model parameters saved\n", - "Epoch 974 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5640)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5640)\n", - "Epoch 974: avg_loss appended (1.5640)\n", - "Epoch 974: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 974: accuracy appended (20.00%)\n", - "Epoch 974: model set back to train mode\n", - "Epoch 974: model parameters saved\n", - "Epoch 975 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5640)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5640)\n", - "Epoch 975: avg_loss appended (1.5640)\n", - "Epoch 975: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 975: accuracy appended (20.00%)\n", - "Epoch 975: model set back to train mode\n", - "Epoch 975: model parameters saved\n", - "Epoch 976 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5640)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5640)\n", - "Epoch 976: avg_loss appended (1.5640)\n", - "Epoch 976: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 976: accuracy appended (20.00%)\n", - "Epoch 976: model set back to train mode\n", - "Epoch 976: model parameters saved\n", - "Epoch 977 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5640)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5640)\n", - "Epoch 977: avg_loss appended (1.5640)\n", - "Epoch 977: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 977: accuracy appended (20.00%)\n", - "Epoch 977: model set back to train mode\n", - "Epoch 977: model parameters saved\n", - "Epoch 978 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5640)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5640)\n", - "Epoch 978: avg_loss appended (1.5640)\n", - "Epoch 978: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 978: accuracy appended (20.00%)\n", - "Epoch 978: model set back to train mode\n", - "Epoch 978: model parameters saved\n", - "Epoch 979 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5640)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5640)\n", - "Epoch 979: avg_loss appended (1.5640)\n", - "Epoch 979: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 979: accuracy appended (20.00%)\n", - "Epoch 979: model set back to train mode\n", - "Epoch 979: model parameters saved\n", - "Epoch 980 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5640)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5640)\n", - "Epoch 980: avg_loss appended (1.5640)\n", - "Epoch 980: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 980: accuracy appended (20.00%)\n", - "Epoch 980: model set back to train mode\n", - "Epoch 980: model parameters saved\n", - "Epoch 981 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5640)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5640)\n", - "Epoch 981: avg_loss appended (1.5640)\n", - "Epoch 981: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 981: accuracy appended (20.00%)\n", - "Epoch 981: model set back to train mode\n", - "Epoch 981: model parameters saved\n", - "Epoch 982 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5640)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5640)\n", - "Epoch 982: avg_loss appended (1.5640)\n", - "Epoch 982: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 982: accuracy appended (20.00%)\n", - "Epoch 982: model set back to train mode\n", - "Epoch 982: model parameters saved\n", - "Epoch 983 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5640)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5640)\n", - "Epoch 983: avg_loss appended (1.5640)\n", - "Epoch 983: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 983: accuracy appended (20.00%)\n", - "Epoch 983: model set back to train mode\n", - "Epoch 983: model parameters saved\n", - "Epoch 984 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5640)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5640)\n", - "Epoch 984: avg_loss appended (1.5640)\n", - "Epoch 984: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 984: accuracy appended (20.00%)\n", - "Epoch 984: model set back to train mode\n", - "Epoch 984: model parameters saved\n", - "Epoch 985 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5640)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5640)\n", - "Epoch 985: avg_loss appended (1.5640)\n", - "Epoch 985: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 985: accuracy appended (20.00%)\n", - "Epoch 985: model set back to train mode\n", - "Epoch 985: model parameters saved\n", - "Epoch 986 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5640)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5640)\n", - "Epoch 986: avg_loss appended (1.5640)\n", - "Epoch 986: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 986: accuracy appended (20.00%)\n", - "Epoch 986: model set back to train mode\n", - "Epoch 986: model parameters saved\n", - "Epoch 987 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5640)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5640)\n", - "Epoch 987: avg_loss appended (1.5640)\n", - "Epoch 987: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 987: accuracy appended (20.00%)\n", - "Epoch 987: model set back to train mode\n", - "Epoch 987: model parameters saved\n", - "Epoch 988 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5640)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5640)\n", - "Epoch 988: avg_loss appended (1.5640)\n", - "Epoch 988: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 988: accuracy appended (20.00%)\n", - "Epoch 988: model set back to train mode\n", - "Epoch 988: model parameters saved\n", - "Epoch 989 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5640)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5640)\n", - "Epoch 989: avg_loss appended (1.5640)\n", - "Epoch 989: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 989: accuracy appended (20.00%)\n", - "Epoch 989: model set back to train mode\n", - "Epoch 989: model parameters saved\n", - "Epoch 990 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5640)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5640)\n", - "Epoch 990: avg_loss appended (1.5640)\n", - "Epoch 990: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 990: accuracy appended (20.00%)\n", - "Epoch 990: model set back to train mode\n", - "Epoch 990: model parameters saved\n", - "Epoch 991 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5640)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5640)\n", - "Epoch 991: avg_loss appended (1.5640)\n", - "Epoch 991: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 991: accuracy appended (20.00%)\n", - "Epoch 991: model set back to train mode\n", - "Epoch 991: model parameters saved\n", - "Epoch 992 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5640)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5640)\n", - "Epoch 992: avg_loss appended (1.5640)\n", - "Epoch 992: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 992: accuracy appended (20.00%)\n", - "Epoch 992: model set back to train mode\n", - "Epoch 992: model parameters saved\n", - "Epoch 993 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5640)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5640)\n", - "Epoch 993: avg_loss appended (1.5640)\n", - "Epoch 993: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 993: accuracy appended (20.00%)\n", - "Epoch 993: model set back to train mode\n", - "Epoch 993: model parameters saved\n", - "Epoch 994 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5640)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5640)\n", - "Epoch 994: avg_loss appended (1.5640)\n", - "Epoch 994: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 994: accuracy appended (20.00%)\n", - "Epoch 994: model set back to train mode\n", - "Epoch 994: model parameters saved\n", - "Epoch 995 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5640)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5640)\n", - "Epoch 995: avg_loss appended (1.5640)\n", - "Epoch 995: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 995: accuracy appended (20.00%)\n", - "Epoch 995: model set back to train mode\n", - "Epoch 995: model parameters saved\n", - "Epoch 996 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5640)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5640)\n", - "Epoch 996: avg_loss appended (1.5640)\n", - "Epoch 996: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 996: accuracy appended (20.00%)\n", - "Epoch 996: model set back to train mode\n", - "Epoch 996: model parameters saved\n", - "Epoch 997 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5640)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5640)\n", - "Epoch 997: avg_loss appended (1.5640)\n", - "Epoch 997: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 997: accuracy appended (20.00%)\n", - "Epoch 997: model set back to train mode\n", - "Epoch 997: model parameters saved\n", - "Epoch 998 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5640)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5640)\n", - "Epoch 998: avg_loss appended (1.5640)\n", - "Epoch 998: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 998: accuracy appended (20.00%)\n", - "Epoch 998: model set back to train mode\n", - "Epoch 998: model parameters saved\n", - "Epoch 999 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5640)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5640)\n", - "Epoch 999: avg_loss appended (1.5640)\n", - "Epoch 999: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 999: accuracy appended (20.00%)\n", - "Epoch 999: model set back to train mode\n", - "Epoch 999: model parameters saved\n", - "Epoch 1000 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5640)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5640)\n", - "Epoch 1000: avg_loss appended (1.5640)\n", - "Epoch 1000: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1000: accuracy appended (20.00%)\n", - "Epoch 1000: model set back to train mode\n", - "Epoch 1000: model parameters saved\n", - "Epoch 1000/10000, Loss: 1.5640, Accuracy: 20.00%\n", - "Epoch 1001 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5640)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5640)\n", - "Epoch 1001: avg_loss appended (1.5640)\n", - "Epoch 1001: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1001: accuracy appended (20.00%)\n", - "Epoch 1001: model set back to train mode\n", - "Epoch 1001: model parameters saved\n", - "Epoch 1002 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5640)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5640)\n", - "Epoch 1002: avg_loss appended (1.5640)\n", - "Epoch 1002: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1002: accuracy appended (20.00%)\n", - "Epoch 1002: model set back to train mode\n", - "Epoch 1002: model parameters saved\n", - "Epoch 1003 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5640)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5640)\n", - "Epoch 1003: avg_loss appended (1.5640)\n", - "Epoch 1003: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1003: accuracy appended (20.00%)\n", - "Epoch 1003: model set back to train mode\n", - "Epoch 1003: model parameters saved\n", - "Epoch 1004 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5640)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5640)\n", - "Epoch 1004: avg_loss appended (1.5640)\n", - "Epoch 1004: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1004: accuracy appended (20.00%)\n", - "Epoch 1004: model set back to train mode\n", - "Epoch 1004: model parameters saved\n", - "Epoch 1005 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5640)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5640)\n", - "Epoch 1005: avg_loss appended (1.5640)\n", - "Epoch 1005: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1005: accuracy appended (20.00%)\n", - "Epoch 1005: model set back to train mode\n", - "Epoch 1005: model parameters saved\n", - "Epoch 1006 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1006: avg_loss appended (1.5639)\n", - "Epoch 1006: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1006: accuracy appended (20.00%)\n", - "Epoch 1006: model set back to train mode\n", - "Epoch 1006: model parameters saved\n", - "Epoch 1007 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1007: avg_loss appended (1.5639)\n", - "Epoch 1007: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1007: accuracy appended (20.00%)\n", - "Epoch 1007: model set back to train mode\n", - "Epoch 1007: model parameters saved\n", - "Epoch 1008 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1008: avg_loss appended (1.5639)\n", - "Epoch 1008: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1008: accuracy appended (20.00%)\n", - "Epoch 1008: model set back to train mode\n", - "Epoch 1008: model parameters saved\n", - "Epoch 1009 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1009: avg_loss appended (1.5639)\n", - "Epoch 1009: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1009: accuracy appended (20.00%)\n", - "Epoch 1009: model set back to train mode\n", - "Epoch 1009: model parameters saved\n", - "Epoch 1010 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1010: avg_loss appended (1.5639)\n", - "Epoch 1010: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1010: accuracy appended (20.00%)\n", - "Epoch 1010: model set back to train mode\n", - "Epoch 1010: model parameters saved\n", - "Epoch 1011 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1011: avg_loss appended (1.5639)\n", - "Epoch 1011: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1011: accuracy appended (20.00%)\n", - "Epoch 1011: model set back to train mode\n", - "Epoch 1011: model parameters saved\n", - "Epoch 1012 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1012: avg_loss appended (1.5639)\n", - "Epoch 1012: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1012: accuracy appended (20.00%)\n", - "Epoch 1012: model set back to train mode\n", - "Epoch 1012: model parameters saved\n", - "Epoch 1013 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1013: avg_loss appended (1.5639)\n", - "Epoch 1013: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1013: accuracy appended (20.00%)\n", - "Epoch 1013: model set back to train mode\n", - "Epoch 1013: model parameters saved\n", - "Epoch 1014 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1014: avg_loss appended (1.5639)\n", - "Epoch 1014: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1014: accuracy appended (20.00%)\n", - "Epoch 1014: model set back to train mode\n", - "Epoch 1014: model parameters saved\n", - "Epoch 1015 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1015: avg_loss appended (1.5639)\n", - "Epoch 1015: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1015: accuracy appended (20.00%)\n", - "Epoch 1015: model set back to train mode\n", - "Epoch 1015: model parameters saved\n", - "Epoch 1016 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1016: avg_loss appended (1.5639)\n", - "Epoch 1016: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1016: accuracy appended (20.00%)\n", - "Epoch 1016: model set back to train mode\n", - "Epoch 1016: model parameters saved\n", - "Epoch 1017 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1017: avg_loss appended (1.5639)\n", - "Epoch 1017: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1017: accuracy appended (20.00%)\n", - "Epoch 1017: model set back to train mode\n", - "Epoch 1017: model parameters saved\n", - "Epoch 1018 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1018: avg_loss appended (1.5639)\n", - "Epoch 1018: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1018: accuracy appended (20.00%)\n", - "Epoch 1018: model set back to train mode\n", - "Epoch 1018: model parameters saved\n", - "Epoch 1019 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1019: avg_loss appended (1.5639)\n", - "Epoch 1019: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1019: accuracy appended (20.00%)\n", - "Epoch 1019: model set back to train mode\n", - "Epoch 1019: model parameters saved\n", - "Epoch 1020 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1020: avg_loss appended (1.5639)\n", - "Epoch 1020: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1020: accuracy appended (20.00%)\n", - "Epoch 1020: model set back to train mode\n", - "Epoch 1020: model parameters saved\n", - "Epoch 1021 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1021: avg_loss appended (1.5639)\n", - "Epoch 1021: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1021: accuracy appended (20.00%)\n", - "Epoch 1021: model set back to train mode\n", - "Epoch 1021: model parameters saved\n", - "Epoch 1022 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1022: avg_loss appended (1.5639)\n", - "Epoch 1022: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1022: accuracy appended (20.00%)\n", - "Epoch 1022: model set back to train mode\n", - "Epoch 1022: model parameters saved\n", - "Epoch 1023 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1023: avg_loss appended (1.5639)\n", - "Epoch 1023: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1023: accuracy appended (20.00%)\n", - "Epoch 1023: model set back to train mode\n", - "Epoch 1023: model parameters saved\n", - "Epoch 1024 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1024: avg_loss appended (1.5639)\n", - "Epoch 1024: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1024: accuracy appended (20.00%)\n", - "Epoch 1024: model set back to train mode\n", - "Epoch 1024: model parameters saved\n", - "Epoch 1025 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1025: avg_loss appended (1.5639)\n", - "Epoch 1025: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1025: accuracy appended (20.00%)\n", - "Epoch 1025: model set back to train mode\n", - "Epoch 1025: model parameters saved\n", - "Epoch 1026 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1026: avg_loss appended (1.5639)\n", - "Epoch 1026: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1026: accuracy appended (20.00%)\n", - "Epoch 1026: model set back to train mode\n", - "Epoch 1026: model parameters saved\n", - "Epoch 1027 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1027: avg_loss appended (1.5639)\n", - "Epoch 1027: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1027: accuracy appended (20.00%)\n", - "Epoch 1027: model set back to train mode\n", - "Epoch 1027: model parameters saved\n", - "Epoch 1028 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1028: avg_loss appended (1.5639)\n", - "Epoch 1028: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1028: accuracy appended (20.00%)\n", - "Epoch 1028: model set back to train mode\n", - "Epoch 1028: model parameters saved\n", - "Epoch 1029 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1029: avg_loss appended (1.5639)\n", - "Epoch 1029: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1029: accuracy appended (20.00%)\n", - "Epoch 1029: model set back to train mode\n", - "Epoch 1029: model parameters saved\n", - "Epoch 1030 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1030: avg_loss appended (1.5639)\n", - "Epoch 1030: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1030: accuracy appended (20.00%)\n", - "Epoch 1030: model set back to train mode\n", - "Epoch 1030: model parameters saved\n", - "Epoch 1031 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1031: avg_loss appended (1.5639)\n", - "Epoch 1031: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1031: accuracy appended (20.00%)\n", - "Epoch 1031: model set back to train mode\n", - "Epoch 1031: model parameters saved\n", - "Epoch 1032 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1032: avg_loss appended (1.5639)\n", - "Epoch 1032: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1032: accuracy appended (20.00%)\n", - "Epoch 1032: model set back to train mode\n", - "Epoch 1032: model parameters saved\n", - "Epoch 1033 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1033: avg_loss appended (1.5639)\n", - "Epoch 1033: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1033: accuracy appended (20.00%)\n", - "Epoch 1033: model set back to train mode\n", - "Epoch 1033: model parameters saved\n", - "Epoch 1034 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1034: avg_loss appended (1.5639)\n", - "Epoch 1034: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1034: accuracy appended (20.00%)\n", - "Epoch 1034: model set back to train mode\n", - "Epoch 1034: model parameters saved\n", - "Epoch 1035 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1035: avg_loss appended (1.5639)\n", - "Epoch 1035: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1035: accuracy appended (20.00%)\n", - "Epoch 1035: model set back to train mode\n", - "Epoch 1035: model parameters saved\n", - "Epoch 1036 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1036: avg_loss appended (1.5639)\n", - "Epoch 1036: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1036: accuracy appended (20.00%)\n", - "Epoch 1036: model set back to train mode\n", - "Epoch 1036: model parameters saved\n", - "Epoch 1037 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1037: avg_loss appended (1.5639)\n", - "Epoch 1037: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1037: accuracy appended (20.00%)\n", - "Epoch 1037: model set back to train mode\n", - "Epoch 1037: model parameters saved\n", - "Epoch 1038 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1038: avg_loss appended (1.5639)\n", - "Epoch 1038: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1038: accuracy appended (20.00%)\n", - "Epoch 1038: model set back to train mode\n", - "Epoch 1038: model parameters saved\n", - "Epoch 1039 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1039: avg_loss appended (1.5639)\n", - "Epoch 1039: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1039: accuracy appended (20.00%)\n", - "Epoch 1039: model set back to train mode\n", - "Epoch 1039: model parameters saved\n", - "Epoch 1040 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1040: avg_loss appended (1.5639)\n", - "Epoch 1040: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1040: accuracy appended (20.00%)\n", - "Epoch 1040: model set back to train mode\n", - "Epoch 1040: model parameters saved\n", - "Epoch 1041 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1041: avg_loss appended (1.5639)\n", - "Epoch 1041: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1041: accuracy appended (20.00%)\n", - "Epoch 1041: model set back to train mode\n", - "Epoch 1041: model parameters saved\n", - "Epoch 1042 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1042: avg_loss appended (1.5639)\n", - "Epoch 1042: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1042: accuracy appended (20.00%)\n", - "Epoch 1042: model set back to train mode\n", - "Epoch 1042: model parameters saved\n", - "Epoch 1043 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1043: avg_loss appended (1.5639)\n", - "Epoch 1043: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1043: accuracy appended (20.00%)\n", - "Epoch 1043: model set back to train mode\n", - "Epoch 1043: model parameters saved\n", - "Epoch 1044 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1044: avg_loss appended (1.5639)\n", - "Epoch 1044: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1044: accuracy appended (20.00%)\n", - "Epoch 1044: model set back to train mode\n", - "Epoch 1044: model parameters saved\n", - "Epoch 1045 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1045: avg_loss appended (1.5639)\n", - "Epoch 1045: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1045: accuracy appended (20.00%)\n", - "Epoch 1045: model set back to train mode\n", - "Epoch 1045: model parameters saved\n", - "Epoch 1046 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1046: avg_loss appended (1.5639)\n", - "Epoch 1046: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1046: accuracy appended (20.00%)\n", - "Epoch 1046: model set back to train mode\n", - "Epoch 1046: model parameters saved\n", - "Epoch 1047 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1047: avg_loss appended (1.5639)\n", - "Epoch 1047: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1047: accuracy appended (20.00%)\n", - "Epoch 1047: model set back to train mode\n", - "Epoch 1047: model parameters saved\n", - "Epoch 1048 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1048: avg_loss appended (1.5639)\n", - "Epoch 1048: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1048: accuracy appended (20.00%)\n", - "Epoch 1048: model set back to train mode\n", - "Epoch 1048: model parameters saved\n", - "Epoch 1049 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1049: avg_loss appended (1.5639)\n", - "Epoch 1049: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1049: accuracy appended (20.00%)\n", - "Epoch 1049: model set back to train mode\n", - "Epoch 1049: model parameters saved\n", - "Epoch 1050 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1050: avg_loss appended (1.5639)\n", - "Epoch 1050: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1050: accuracy appended (20.00%)\n", - "Epoch 1050: model set back to train mode\n", - "Epoch 1050: model parameters saved\n", - "Epoch 1051 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1051: avg_loss appended (1.5639)\n", - "Epoch 1051: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1051: accuracy appended (20.00%)\n", - "Epoch 1051: model set back to train mode\n", - "Epoch 1051: model parameters saved\n", - "Epoch 1052 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1052: avg_loss appended (1.5639)\n", - "Epoch 1052: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1052: accuracy appended (20.00%)\n", - "Epoch 1052: model set back to train mode\n", - "Epoch 1052: model parameters saved\n", - "Epoch 1053 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1053: avg_loss appended (1.5639)\n", - "Epoch 1053: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1053: accuracy appended (20.00%)\n", - "Epoch 1053: model set back to train mode\n", - "Epoch 1053: model parameters saved\n", - "Epoch 1054 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1054: avg_loss appended (1.5639)\n", - "Epoch 1054: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1054: accuracy appended (20.00%)\n", - "Epoch 1054: model set back to train mode\n", - "Epoch 1054: model parameters saved\n", - "Epoch 1055 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1055: avg_loss appended (1.5639)\n", - "Epoch 1055: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1055: accuracy appended (20.00%)\n", - "Epoch 1055: model set back to train mode\n", - "Epoch 1055: model parameters saved\n", - "Epoch 1056 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1056: avg_loss appended (1.5639)\n", - "Epoch 1056: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1056: accuracy appended (20.00%)\n", - "Epoch 1056: model set back to train mode\n", - "Epoch 1056: model parameters saved\n", - "Epoch 1057 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1057: avg_loss appended (1.5639)\n", - "Epoch 1057: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1057: accuracy appended (20.00%)\n", - "Epoch 1057: model set back to train mode\n", - "Epoch 1057: model parameters saved\n", - "Epoch 1058 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5639)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5639)\n", - "Epoch 1058: avg_loss appended (1.5639)\n", - "Epoch 1058: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1058: accuracy appended (20.00%)\n", - "Epoch 1058: model set back to train mode\n", - "Epoch 1058: model parameters saved\n", - "Epoch 1059 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1059: avg_loss appended (1.5638)\n", - "Epoch 1059: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1059: accuracy appended (20.00%)\n", - "Epoch 1059: model set back to train mode\n", - "Epoch 1059: model parameters saved\n", - "Epoch 1060 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1060: avg_loss appended (1.5638)\n", - "Epoch 1060: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1060: accuracy appended (20.00%)\n", - "Epoch 1060: model set back to train mode\n", - "Epoch 1060: model parameters saved\n", - "Epoch 1061 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1061: avg_loss appended (1.5638)\n", - "Epoch 1061: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1061: accuracy appended (20.00%)\n", - "Epoch 1061: model set back to train mode\n", - "Epoch 1061: model parameters saved\n", - "Epoch 1062 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1062: avg_loss appended (1.5638)\n", - "Epoch 1062: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1062: accuracy appended (20.00%)\n", - "Epoch 1062: model set back to train mode\n", - "Epoch 1062: model parameters saved\n", - "Epoch 1063 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1063: avg_loss appended (1.5638)\n", - "Epoch 1063: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1063: accuracy appended (20.00%)\n", - "Epoch 1063: model set back to train mode\n", - "Epoch 1063: model parameters saved\n", - "Epoch 1064 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1064: avg_loss appended (1.5638)\n", - "Epoch 1064: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1064: accuracy appended (20.00%)\n", - "Epoch 1064: model set back to train mode\n", - "Epoch 1064: model parameters saved\n", - "Epoch 1065 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1065: avg_loss appended (1.5638)\n", - "Epoch 1065: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1065: accuracy appended (20.00%)\n", - "Epoch 1065: model set back to train mode\n", - "Epoch 1065: model parameters saved\n", - "Epoch 1066 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1066: avg_loss appended (1.5638)\n", - "Epoch 1066: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1066: accuracy appended (20.00%)\n", - "Epoch 1066: model set back to train mode\n", - "Epoch 1066: model parameters saved\n", - "Epoch 1067 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1067: avg_loss appended (1.5638)\n", - "Epoch 1067: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1067: accuracy appended (20.00%)\n", - "Epoch 1067: model set back to train mode\n", - "Epoch 1067: model parameters saved\n", - "Epoch 1068 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1068: avg_loss appended (1.5638)\n", - "Epoch 1068: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1068: accuracy appended (20.00%)\n", - "Epoch 1068: model set back to train mode\n", - "Epoch 1068: model parameters saved\n", - "Epoch 1069 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1069: avg_loss appended (1.5638)\n", - "Epoch 1069: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1069: accuracy appended (20.00%)\n", - "Epoch 1069: model set back to train mode\n", - "Epoch 1069: model parameters saved\n", - "Epoch 1070 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1070: avg_loss appended (1.5638)\n", - "Epoch 1070: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1070: accuracy appended (20.00%)\n", - "Epoch 1070: model set back to train mode\n", - "Epoch 1070: model parameters saved\n", - "Epoch 1071 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1071: avg_loss appended (1.5638)\n", - "Epoch 1071: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1071: accuracy appended (20.00%)\n", - "Epoch 1071: model set back to train mode\n", - "Epoch 1071: model parameters saved\n", - "Epoch 1072 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1072: avg_loss appended (1.5638)\n", - "Epoch 1072: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1072: accuracy appended (20.00%)\n", - "Epoch 1072: model set back to train mode\n", - "Epoch 1072: model parameters saved\n", - "Epoch 1073 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1073: avg_loss appended (1.5638)\n", - "Epoch 1073: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1073: accuracy appended (20.00%)\n", - "Epoch 1073: model set back to train mode\n", - "Epoch 1073: model parameters saved\n", - "Epoch 1074 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1074: avg_loss appended (1.5638)\n", - "Epoch 1074: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1074: accuracy appended (20.00%)\n", - "Epoch 1074: model set back to train mode\n", - "Epoch 1074: model parameters saved\n", - "Epoch 1075 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1075: avg_loss appended (1.5638)\n", - "Epoch 1075: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1075: accuracy appended (20.00%)\n", - "Epoch 1075: model set back to train mode\n", - "Epoch 1075: model parameters saved\n", - "Epoch 1076 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1076: avg_loss appended (1.5638)\n", - "Epoch 1076: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1076: accuracy appended (20.00%)\n", - "Epoch 1076: model set back to train mode\n", - "Epoch 1076: model parameters saved\n", - "Epoch 1077 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1077: avg_loss appended (1.5638)\n", - "Epoch 1077: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1077: accuracy appended (20.00%)\n", - "Epoch 1077: model set back to train mode\n", - "Epoch 1077: model parameters saved\n", - "Epoch 1078 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1078: avg_loss appended (1.5638)\n", - "Epoch 1078: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1078: accuracy appended (20.00%)\n", - "Epoch 1078: model set back to train mode\n", - "Epoch 1078: model parameters saved\n", - "Epoch 1079 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1079: avg_loss appended (1.5638)\n", - "Epoch 1079: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1079: accuracy appended (20.00%)\n", - "Epoch 1079: model set back to train mode\n", - "Epoch 1079: model parameters saved\n", - "Epoch 1080 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1080: avg_loss appended (1.5638)\n", - "Epoch 1080: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1080: accuracy appended (20.00%)\n", - "Epoch 1080: model set back to train mode\n", - "Epoch 1080: model parameters saved\n", - "Epoch 1081 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1081: avg_loss appended (1.5638)\n", - "Epoch 1081: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1081: accuracy appended (20.00%)\n", - "Epoch 1081: model set back to train mode\n", - "Epoch 1081: model parameters saved\n", - "Epoch 1082 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1082: avg_loss appended (1.5638)\n", - "Epoch 1082: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1082: accuracy appended (20.00%)\n", - "Epoch 1082: model set back to train mode\n", - "Epoch 1082: model parameters saved\n", - "Epoch 1083 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1083: avg_loss appended (1.5638)\n", - "Epoch 1083: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1083: accuracy appended (20.00%)\n", - "Epoch 1083: model set back to train mode\n", - "Epoch 1083: model parameters saved\n", - "Epoch 1084 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1084: avg_loss appended (1.5638)\n", - "Epoch 1084: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1084: accuracy appended (20.00%)\n", - "Epoch 1084: model set back to train mode\n", - "Epoch 1084: model parameters saved\n", - "Epoch 1085 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1085: avg_loss appended (1.5638)\n", - "Epoch 1085: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1085: accuracy appended (20.00%)\n", - "Epoch 1085: model set back to train mode\n", - "Epoch 1085: model parameters saved\n", - "Epoch 1086 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1086: avg_loss appended (1.5638)\n", - "Epoch 1086: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1086: accuracy appended (20.00%)\n", - "Epoch 1086: model set back to train mode\n", - "Epoch 1086: model parameters saved\n", - "Epoch 1087 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1087: avg_loss appended (1.5638)\n", - "Epoch 1087: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1087: accuracy appended (20.00%)\n", - "Epoch 1087: model set back to train mode\n", - "Epoch 1087: model parameters saved\n", - "Epoch 1088 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1088: avg_loss appended (1.5638)\n", - "Epoch 1088: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1088: accuracy appended (20.00%)\n", - "Epoch 1088: model set back to train mode\n", - "Epoch 1088: model parameters saved\n", - "Epoch 1089 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1089: avg_loss appended (1.5638)\n", - "Epoch 1089: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1089: accuracy appended (20.00%)\n", - "Epoch 1089: model set back to train mode\n", - "Epoch 1089: model parameters saved\n", - "Epoch 1090 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1090: avg_loss appended (1.5638)\n", - "Epoch 1090: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1090: accuracy appended (20.00%)\n", - "Epoch 1090: model set back to train mode\n", - "Epoch 1090: model parameters saved\n", - "Epoch 1091 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1091: avg_loss appended (1.5638)\n", - "Epoch 1091: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1091: accuracy appended (20.00%)\n", - "Epoch 1091: model set back to train mode\n", - "Epoch 1091: model parameters saved\n", - "Epoch 1092 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1092: avg_loss appended (1.5638)\n", - "Epoch 1092: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1092: accuracy appended (20.00%)\n", - "Epoch 1092: model set back to train mode\n", - "Epoch 1092: model parameters saved\n", - "Epoch 1093 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1093: avg_loss appended (1.5638)\n", - "Epoch 1093: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1093: accuracy appended (20.00%)\n", - "Epoch 1093: model set back to train mode\n", - "Epoch 1093: model parameters saved\n", - "Epoch 1094 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1094: avg_loss appended (1.5638)\n", - "Epoch 1094: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1094: accuracy appended (20.00%)\n", - "Epoch 1094: model set back to train mode\n", - "Epoch 1094: model parameters saved\n", - "Epoch 1095 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1095: avg_loss appended (1.5638)\n", - "Epoch 1095: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1095: accuracy appended (20.00%)\n", - "Epoch 1095: model set back to train mode\n", - "Epoch 1095: model parameters saved\n", - "Epoch 1096 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1096: avg_loss appended (1.5638)\n", - "Epoch 1096: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1096: accuracy appended (20.00%)\n", - "Epoch 1096: model set back to train mode\n", - "Epoch 1096: model parameters saved\n", - "Epoch 1097 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1097: avg_loss appended (1.5638)\n", - "Epoch 1097: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1097: accuracy appended (20.00%)\n", - "Epoch 1097: model set back to train mode\n", - "Epoch 1097: model parameters saved\n", - "Epoch 1098 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1098: avg_loss appended (1.5638)\n", - "Epoch 1098: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1098: accuracy appended (20.00%)\n", - "Epoch 1098: model set back to train mode\n", - "Epoch 1098: model parameters saved\n", - "Epoch 1099 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1099: avg_loss appended (1.5638)\n", - "Epoch 1099: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1099: accuracy appended (20.00%)\n", - "Epoch 1099: model set back to train mode\n", - "Epoch 1099: model parameters saved\n", - "Epoch 1100 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1100: avg_loss appended (1.5638)\n", - "Epoch 1100: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1100: accuracy appended (20.00%)\n", - "Epoch 1100: model set back to train mode\n", - "Epoch 1100: model parameters saved\n", - "Epoch 1100/10000, Loss: 1.5638, Accuracy: 20.00%\n", - "Epoch 1101 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1101: avg_loss appended (1.5638)\n", - "Epoch 1101: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1101: accuracy appended (20.00%)\n", - "Epoch 1101: model set back to train mode\n", - "Epoch 1101: model parameters saved\n", - "Epoch 1102 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1102: avg_loss appended (1.5638)\n", - "Epoch 1102: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1102: accuracy appended (20.00%)\n", - "Epoch 1102: model set back to train mode\n", - "Epoch 1102: model parameters saved\n", - "Epoch 1103 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1103: avg_loss appended (1.5638)\n", - "Epoch 1103: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1103: accuracy appended (20.00%)\n", - "Epoch 1103: model set back to train mode\n", - "Epoch 1103: model parameters saved\n", - "Epoch 1104 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1104: avg_loss appended (1.5638)\n", - "Epoch 1104: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1104: accuracy appended (20.00%)\n", - "Epoch 1104: model set back to train mode\n", - "Epoch 1104: model parameters saved\n", - "Epoch 1105 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1105: avg_loss appended (1.5638)\n", - "Epoch 1105: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1105: accuracy appended (20.00%)\n", - "Epoch 1105: model set back to train mode\n", - "Epoch 1105: model parameters saved\n", - "Epoch 1106 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1106: avg_loss appended (1.5638)\n", - "Epoch 1106: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1106: accuracy appended (20.00%)\n", - "Epoch 1106: model set back to train mode\n", - "Epoch 1106: model parameters saved\n", - "Epoch 1107 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1107: avg_loss appended (1.5638)\n", - "Epoch 1107: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1107: accuracy appended (20.00%)\n", - "Epoch 1107: model set back to train mode\n", - "Epoch 1107: model parameters saved\n", - "Epoch 1108 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1108: avg_loss appended (1.5638)\n", - "Epoch 1108: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1108: accuracy appended (20.00%)\n", - "Epoch 1108: model set back to train mode\n", - "Epoch 1108: model parameters saved\n", - "Epoch 1109 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1109: avg_loss appended (1.5638)\n", - "Epoch 1109: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1109: accuracy appended (20.00%)\n", - "Epoch 1109: model set back to train mode\n", - "Epoch 1109: model parameters saved\n", - "Epoch 1110 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1110: avg_loss appended (1.5638)\n", - "Epoch 1110: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1110: accuracy appended (20.00%)\n", - "Epoch 1110: model set back to train mode\n", - "Epoch 1110: model parameters saved\n", - "Epoch 1111 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1111: avg_loss appended (1.5638)\n", - "Epoch 1111: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1111: accuracy appended (20.00%)\n", - "Epoch 1111: model set back to train mode\n", - "Epoch 1111: model parameters saved\n", - "Epoch 1112 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1112: avg_loss appended (1.5638)\n", - "Epoch 1112: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1112: accuracy appended (20.00%)\n", - "Epoch 1112: model set back to train mode\n", - "Epoch 1112: model parameters saved\n", - "Epoch 1113 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1113: avg_loss appended (1.5638)\n", - "Epoch 1113: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1113: accuracy appended (20.00%)\n", - "Epoch 1113: model set back to train mode\n", - "Epoch 1113: model parameters saved\n", - "Epoch 1114 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1114: avg_loss appended (1.5638)\n", - "Epoch 1114: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1114: accuracy appended (20.00%)\n", - "Epoch 1114: model set back to train mode\n", - "Epoch 1114: model parameters saved\n", - "Epoch 1115 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1115: avg_loss appended (1.5638)\n", - "Epoch 1115: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1115: accuracy appended (20.00%)\n", - "Epoch 1115: model set back to train mode\n", - "Epoch 1115: model parameters saved\n", - "Epoch 1116 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1116: avg_loss appended (1.5638)\n", - "Epoch 1116: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1116: accuracy appended (20.00%)\n", - "Epoch 1116: model set back to train mode\n", - "Epoch 1116: model parameters saved\n", - "Epoch 1117 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1117: avg_loss appended (1.5638)\n", - "Epoch 1117: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1117: accuracy appended (20.00%)\n", - "Epoch 1117: model set back to train mode\n", - "Epoch 1117: model parameters saved\n", - "Epoch 1118 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1118: avg_loss appended (1.5638)\n", - "Epoch 1118: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1118: accuracy appended (20.00%)\n", - "Epoch 1118: model set back to train mode\n", - "Epoch 1118: model parameters saved\n", - "Epoch 1119 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1119: avg_loss appended (1.5638)\n", - "Epoch 1119: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1119: accuracy appended (20.00%)\n", - "Epoch 1119: model set back to train mode\n", - "Epoch 1119: model parameters saved\n", - "Epoch 1120 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1120: avg_loss appended (1.5638)\n", - "Epoch 1120: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1120: accuracy appended (20.00%)\n", - "Epoch 1120: model set back to train mode\n", - "Epoch 1120: model parameters saved\n", - "Epoch 1121 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1121: avg_loss appended (1.5638)\n", - "Epoch 1121: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1121: accuracy appended (20.00%)\n", - "Epoch 1121: model set back to train mode\n", - "Epoch 1121: model parameters saved\n", - "Epoch 1122 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5638)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5638)\n", - "Epoch 1122: avg_loss appended (1.5638)\n", - "Epoch 1122: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1122: accuracy appended (20.00%)\n", - "Epoch 1122: model set back to train mode\n", - "Epoch 1122: model parameters saved\n", - "Epoch 1123 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1123: avg_loss appended (1.5637)\n", - "Epoch 1123: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1123: accuracy appended (20.00%)\n", - "Epoch 1123: model set back to train mode\n", - "Epoch 1123: model parameters saved\n", - "Epoch 1124 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1124: avg_loss appended (1.5637)\n", - "Epoch 1124: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1124: accuracy appended (20.00%)\n", - "Epoch 1124: model set back to train mode\n", - "Epoch 1124: model parameters saved\n", - "Epoch 1125 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1125: avg_loss appended (1.5637)\n", - "Epoch 1125: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1125: accuracy appended (20.00%)\n", - "Epoch 1125: model set back to train mode\n", - "Epoch 1125: model parameters saved\n", - "Epoch 1126 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1126: avg_loss appended (1.5637)\n", - "Epoch 1126: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1126: accuracy appended (20.00%)\n", - "Epoch 1126: model set back to train mode\n", - "Epoch 1126: model parameters saved\n", - "Epoch 1127 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1127: avg_loss appended (1.5637)\n", - "Epoch 1127: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1127: accuracy appended (20.00%)\n", - "Epoch 1127: model set back to train mode\n", - "Epoch 1127: model parameters saved\n", - "Epoch 1128 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1128: avg_loss appended (1.5637)\n", - "Epoch 1128: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1128: accuracy appended (20.00%)\n", - "Epoch 1128: model set back to train mode\n", - "Epoch 1128: model parameters saved\n", - "Epoch 1129 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1129: avg_loss appended (1.5637)\n", - "Epoch 1129: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1129: accuracy appended (20.00%)\n", - "Epoch 1129: model set back to train mode\n", - "Epoch 1129: model parameters saved\n", - "Epoch 1130 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1130: avg_loss appended (1.5637)\n", - "Epoch 1130: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1130: accuracy appended (20.00%)\n", - "Epoch 1130: model set back to train mode\n", - "Epoch 1130: model parameters saved\n", - "Epoch 1131 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1131: avg_loss appended (1.5637)\n", - "Epoch 1131: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1131: accuracy appended (20.00%)\n", - "Epoch 1131: model set back to train mode\n", - "Epoch 1131: model parameters saved\n", - "Epoch 1132 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1132: avg_loss appended (1.5637)\n", - "Epoch 1132: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1132: accuracy appended (20.00%)\n", - "Epoch 1132: model set back to train mode\n", - "Epoch 1132: model parameters saved\n", - "Epoch 1133 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1133: avg_loss appended (1.5637)\n", - "Epoch 1133: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1133: accuracy appended (20.00%)\n", - "Epoch 1133: model set back to train mode\n", - "Epoch 1133: model parameters saved\n", - "Epoch 1134 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1134: avg_loss appended (1.5637)\n", - "Epoch 1134: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1134: accuracy appended (20.00%)\n", - "Epoch 1134: model set back to train mode\n", - "Epoch 1134: model parameters saved\n", - "Epoch 1135 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1135: avg_loss appended (1.5637)\n", - "Epoch 1135: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1135: accuracy appended (20.00%)\n", - "Epoch 1135: model set back to train mode\n", - "Epoch 1135: model parameters saved\n", - "Epoch 1136 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1136: avg_loss appended (1.5637)\n", - "Epoch 1136: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1136: accuracy appended (20.00%)\n", - "Epoch 1136: model set back to train mode\n", - "Epoch 1136: model parameters saved\n", - "Epoch 1137 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1137: avg_loss appended (1.5637)\n", - "Epoch 1137: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1137: accuracy appended (20.00%)\n", - "Epoch 1137: model set back to train mode\n", - "Epoch 1137: model parameters saved\n", - "Epoch 1138 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1138: avg_loss appended (1.5637)\n", - "Epoch 1138: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1138: accuracy appended (20.00%)\n", - "Epoch 1138: model set back to train mode\n", - "Epoch 1138: model parameters saved\n", - "Epoch 1139 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1139: avg_loss appended (1.5637)\n", - "Epoch 1139: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1139: accuracy appended (20.00%)\n", - "Epoch 1139: model set back to train mode\n", - "Epoch 1139: model parameters saved\n", - "Epoch 1140 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1140: avg_loss appended (1.5637)\n", - "Epoch 1140: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1140: accuracy appended (20.00%)\n", - "Epoch 1140: model set back to train mode\n", - "Epoch 1140: model parameters saved\n", - "Epoch 1141 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1141: avg_loss appended (1.5637)\n", - "Epoch 1141: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1141: accuracy appended (20.00%)\n", - "Epoch 1141: model set back to train mode\n", - "Epoch 1141: model parameters saved\n", - "Epoch 1142 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1142: avg_loss appended (1.5637)\n", - "Epoch 1142: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1142: accuracy appended (20.00%)\n", - "Epoch 1142: model set back to train mode\n", - "Epoch 1142: model parameters saved\n", - "Epoch 1143 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1143: avg_loss appended (1.5637)\n", - "Epoch 1143: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1143: accuracy appended (20.00%)\n", - "Epoch 1143: model set back to train mode\n", - "Epoch 1143: model parameters saved\n", - "Epoch 1144 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1144: avg_loss appended (1.5637)\n", - "Epoch 1144: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1144: accuracy appended (20.00%)\n", - "Epoch 1144: model set back to train mode\n", - "Epoch 1144: model parameters saved\n", - "Epoch 1145 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1145: avg_loss appended (1.5637)\n", - "Epoch 1145: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1145: accuracy appended (20.00%)\n", - "Epoch 1145: model set back to train mode\n", - "Epoch 1145: model parameters saved\n", - "Epoch 1146 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1146: avg_loss appended (1.5637)\n", - "Epoch 1146: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1146: accuracy appended (20.00%)\n", - "Epoch 1146: model set back to train mode\n", - "Epoch 1146: model parameters saved\n", - "Epoch 1147 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1147: avg_loss appended (1.5637)\n", - "Epoch 1147: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1147: accuracy appended (20.00%)\n", - "Epoch 1147: model set back to train mode\n", - "Epoch 1147: model parameters saved\n", - "Epoch 1148 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1148: avg_loss appended (1.5637)\n", - "Epoch 1148: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1148: accuracy appended (20.00%)\n", - "Epoch 1148: model set back to train mode\n", - "Epoch 1148: model parameters saved\n", - "Epoch 1149 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1149: avg_loss appended (1.5637)\n", - "Epoch 1149: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1149: accuracy appended (20.00%)\n", - "Epoch 1149: model set back to train mode\n", - "Epoch 1149: model parameters saved\n", - "Epoch 1150 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1150: avg_loss appended (1.5637)\n", - "Epoch 1150: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1150: accuracy appended (20.00%)\n", - "Epoch 1150: model set back to train mode\n", - "Epoch 1150: model parameters saved\n", - "Epoch 1151 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1151: avg_loss appended (1.5637)\n", - "Epoch 1151: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1151: accuracy appended (20.00%)\n", - "Epoch 1151: model set back to train mode\n", - "Epoch 1151: model parameters saved\n", - "Epoch 1152 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1152: avg_loss appended (1.5637)\n", - "Epoch 1152: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1152: accuracy appended (20.00%)\n", - "Epoch 1152: model set back to train mode\n", - "Epoch 1152: model parameters saved\n", - "Epoch 1153 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1153: avg_loss appended (1.5637)\n", - "Epoch 1153: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1153: accuracy appended (20.00%)\n", - "Epoch 1153: model set back to train mode\n", - "Epoch 1153: model parameters saved\n", - "Epoch 1154 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1154: avg_loss appended (1.5637)\n", - "Epoch 1154: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1154: accuracy appended (20.00%)\n", - "Epoch 1154: model set back to train mode\n", - "Epoch 1154: model parameters saved\n", - "Epoch 1155 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1155: avg_loss appended (1.5637)\n", - "Epoch 1155: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1155: accuracy appended (20.00%)\n", - "Epoch 1155: model set back to train mode\n", - "Epoch 1155: model parameters saved\n", - "Epoch 1156 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1156: avg_loss appended (1.5637)\n", - "Epoch 1156: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1156: accuracy appended (20.00%)\n", - "Epoch 1156: model set back to train mode\n", - "Epoch 1156: model parameters saved\n", - "Epoch 1157 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1157: avg_loss appended (1.5637)\n", - "Epoch 1157: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1157: accuracy appended (20.00%)\n", - "Epoch 1157: model set back to train mode\n", - "Epoch 1157: model parameters saved\n", - "Epoch 1158 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1158: avg_loss appended (1.5637)\n", - "Epoch 1158: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1158: accuracy appended (20.00%)\n", - "Epoch 1158: model set back to train mode\n", - "Epoch 1158: model parameters saved\n", - "Epoch 1159 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1159: avg_loss appended (1.5637)\n", - "Epoch 1159: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1159: accuracy appended (20.00%)\n", - "Epoch 1159: model set back to train mode\n", - "Epoch 1159: model parameters saved\n", - "Epoch 1160 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1160: avg_loss appended (1.5637)\n", - "Epoch 1160: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1160: accuracy appended (20.00%)\n", - "Epoch 1160: model set back to train mode\n", - "Epoch 1160: model parameters saved\n", - "Epoch 1161 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1161: avg_loss appended (1.5637)\n", - "Epoch 1161: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1161: accuracy appended (20.00%)\n", - "Epoch 1161: model set back to train mode\n", - "Epoch 1161: model parameters saved\n", - "Epoch 1162 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1162: avg_loss appended (1.5637)\n", - "Epoch 1162: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1162: accuracy appended (20.00%)\n", - "Epoch 1162: model set back to train mode\n", - "Epoch 1162: model parameters saved\n", - "Epoch 1163 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1163: avg_loss appended (1.5637)\n", - "Epoch 1163: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1163: accuracy appended (20.00%)\n", - "Epoch 1163: model set back to train mode\n", - "Epoch 1163: model parameters saved\n", - "Epoch 1164 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1164: avg_loss appended (1.5637)\n", - "Epoch 1164: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1164: accuracy appended (20.00%)\n", - "Epoch 1164: model set back to train mode\n", - "Epoch 1164: model parameters saved\n", - "Epoch 1165 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1165: avg_loss appended (1.5637)\n", - "Epoch 1165: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1165: accuracy appended (20.00%)\n", - "Epoch 1165: model set back to train mode\n", - "Epoch 1165: model parameters saved\n", - "Epoch 1166 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1166: avg_loss appended (1.5637)\n", - "Epoch 1166: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1166: accuracy appended (20.00%)\n", - "Epoch 1166: model set back to train mode\n", - "Epoch 1166: model parameters saved\n", - "Epoch 1167 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1167: avg_loss appended (1.5637)\n", - "Epoch 1167: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1167: accuracy appended (20.00%)\n", - "Epoch 1167: model set back to train mode\n", - "Epoch 1167: model parameters saved\n", - "Epoch 1168 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1168: avg_loss appended (1.5637)\n", - "Epoch 1168: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1168: accuracy appended (20.00%)\n", - "Epoch 1168: model set back to train mode\n", - "Epoch 1168: model parameters saved\n", - "Epoch 1169 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1169: avg_loss appended (1.5637)\n", - "Epoch 1169: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1169: accuracy appended (20.00%)\n", - "Epoch 1169: model set back to train mode\n", - "Epoch 1169: model parameters saved\n", - "Epoch 1170 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1170: avg_loss appended (1.5637)\n", - "Epoch 1170: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1170: accuracy appended (20.00%)\n", - "Epoch 1170: model set back to train mode\n", - "Epoch 1170: model parameters saved\n", - "Epoch 1171 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1171: avg_loss appended (1.5637)\n", - "Epoch 1171: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1171: accuracy appended (20.00%)\n", - "Epoch 1171: model set back to train mode\n", - "Epoch 1171: model parameters saved\n", - "Epoch 1172 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1172: avg_loss appended (1.5637)\n", - "Epoch 1172: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1172: accuracy appended (20.00%)\n", - "Epoch 1172: model set back to train mode\n", - "Epoch 1172: model parameters saved\n", - "Epoch 1173 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1173: avg_loss appended (1.5637)\n", - "Epoch 1173: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1173: accuracy appended (20.00%)\n", - "Epoch 1173: model set back to train mode\n", - "Epoch 1173: model parameters saved\n", - "Epoch 1174 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1174: avg_loss appended (1.5637)\n", - "Epoch 1174: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1174: accuracy appended (20.00%)\n", - "Epoch 1174: model set back to train mode\n", - "Epoch 1174: model parameters saved\n", - "Epoch 1175 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1175: avg_loss appended (1.5637)\n", - "Epoch 1175: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1175: accuracy appended (20.00%)\n", - "Epoch 1175: model set back to train mode\n", - "Epoch 1175: model parameters saved\n", - "Epoch 1176 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1176: avg_loss appended (1.5637)\n", - "Epoch 1176: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1176: accuracy appended (20.00%)\n", - "Epoch 1176: model set back to train mode\n", - "Epoch 1176: model parameters saved\n", - "Epoch 1177 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1177: avg_loss appended (1.5637)\n", - "Epoch 1177: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1177: accuracy appended (20.00%)\n", - "Epoch 1177: model set back to train mode\n", - "Epoch 1177: model parameters saved\n", - "Epoch 1178 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1178: avg_loss appended (1.5637)\n", - "Epoch 1178: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1178: accuracy appended (20.00%)\n", - "Epoch 1178: model set back to train mode\n", - "Epoch 1178: model parameters saved\n", - "Epoch 1179 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1179: avg_loss appended (1.5637)\n", - "Epoch 1179: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1179: accuracy appended (20.00%)\n", - "Epoch 1179: model set back to train mode\n", - "Epoch 1179: model parameters saved\n", - "Epoch 1180 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1180: avg_loss appended (1.5637)\n", - "Epoch 1180: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1180: accuracy appended (20.00%)\n", - "Epoch 1180: model set back to train mode\n", - "Epoch 1180: model parameters saved\n", - "Epoch 1181 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1181: avg_loss appended (1.5637)\n", - "Epoch 1181: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1181: accuracy appended (20.00%)\n", - "Epoch 1181: model set back to train mode\n", - "Epoch 1181: model parameters saved\n", - "Epoch 1182 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1182: avg_loss appended (1.5637)\n", - "Epoch 1182: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1182: accuracy appended (20.00%)\n", - "Epoch 1182: model set back to train mode\n", - "Epoch 1182: model parameters saved\n", - "Epoch 1183 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1183: avg_loss appended (1.5637)\n", - "Epoch 1183: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1183: accuracy appended (20.00%)\n", - "Epoch 1183: model set back to train mode\n", - "Epoch 1183: model parameters saved\n", - "Epoch 1184 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1184: avg_loss appended (1.5637)\n", - "Epoch 1184: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1184: accuracy appended (20.00%)\n", - "Epoch 1184: model set back to train mode\n", - "Epoch 1184: model parameters saved\n", - "Epoch 1185 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1185: avg_loss appended (1.5637)\n", - "Epoch 1185: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1185: accuracy appended (20.00%)\n", - "Epoch 1185: model set back to train mode\n", - "Epoch 1185: model parameters saved\n", - "Epoch 1186 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1186: avg_loss appended (1.5637)\n", - "Epoch 1186: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1186: accuracy appended (20.00%)\n", - "Epoch 1186: model set back to train mode\n", - "Epoch 1186: model parameters saved\n", - "Epoch 1187 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1187: avg_loss appended (1.5637)\n", - "Epoch 1187: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1187: accuracy appended (20.00%)\n", - "Epoch 1187: model set back to train mode\n", - "Epoch 1187: model parameters saved\n", - "Epoch 1188 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1188: avg_loss appended (1.5637)\n", - "Epoch 1188: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1188: accuracy appended (20.00%)\n", - "Epoch 1188: model set back to train mode\n", - "Epoch 1188: model parameters saved\n", - "Epoch 1189 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1189: avg_loss appended (1.5637)\n", - "Epoch 1189: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1189: accuracy appended (20.00%)\n", - "Epoch 1189: model set back to train mode\n", - "Epoch 1189: model parameters saved\n", - "Epoch 1190 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1190: avg_loss appended (1.5637)\n", - "Epoch 1190: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1190: accuracy appended (20.00%)\n", - "Epoch 1190: model set back to train mode\n", - "Epoch 1190: model parameters saved\n", - "Epoch 1191 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1191: avg_loss appended (1.5637)\n", - "Epoch 1191: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1191: accuracy appended (20.00%)\n", - "Epoch 1191: model set back to train mode\n", - "Epoch 1191: model parameters saved\n", - "Epoch 1192 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1192: avg_loss appended (1.5637)\n", - "Epoch 1192: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1192: accuracy appended (20.00%)\n", - "Epoch 1192: model set back to train mode\n", - "Epoch 1192: model parameters saved\n", - "Epoch 1193 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1193: avg_loss appended (1.5637)\n", - "Epoch 1193: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1193: accuracy appended (20.00%)\n", - "Epoch 1193: model set back to train mode\n", - "Epoch 1193: model parameters saved\n", - "Epoch 1194 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1194: avg_loss appended (1.5637)\n", - "Epoch 1194: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1194: accuracy appended (20.00%)\n", - "Epoch 1194: model set back to train mode\n", - "Epoch 1194: model parameters saved\n", - "Epoch 1195 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1195: avg_loss appended (1.5637)\n", - "Epoch 1195: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1195: accuracy appended (20.00%)\n", - "Epoch 1195: model set back to train mode\n", - "Epoch 1195: model parameters saved\n", - "Epoch 1196 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1196: avg_loss appended (1.5637)\n", - "Epoch 1196: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1196: accuracy appended (20.00%)\n", - "Epoch 1196: model set back to train mode\n", - "Epoch 1196: model parameters saved\n", - "Epoch 1197 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1197: avg_loss appended (1.5637)\n", - "Epoch 1197: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1197: accuracy appended (20.00%)\n", - "Epoch 1197: model set back to train mode\n", - "Epoch 1197: model parameters saved\n", - "Epoch 1198 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5637)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5637)\n", - "Epoch 1198: avg_loss appended (1.5637)\n", - "Epoch 1198: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1198: accuracy appended (20.00%)\n", - "Epoch 1198: model set back to train mode\n", - "Epoch 1198: model parameters saved\n", - "Epoch 1199 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1199: avg_loss appended (1.5636)\n", - "Epoch 1199: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1199: accuracy appended (20.00%)\n", - "Epoch 1199: model set back to train mode\n", - "Epoch 1199: model parameters saved\n", - "Epoch 1200 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1200: avg_loss appended (1.5636)\n", - "Epoch 1200: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1200: accuracy appended (20.00%)\n", - "Epoch 1200: model set back to train mode\n", - "Epoch 1200: model parameters saved\n", - "Epoch 1200/10000, Loss: 1.5636, Accuracy: 20.00%\n", - "Epoch 1201 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1201: avg_loss appended (1.5636)\n", - "Epoch 1201: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1201: accuracy appended (20.00%)\n", - "Epoch 1201: model set back to train mode\n", - "Epoch 1201: model parameters saved\n", - "Epoch 1202 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1202: avg_loss appended (1.5636)\n", - "Epoch 1202: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1202: accuracy appended (20.00%)\n", - "Epoch 1202: model set back to train mode\n", - "Epoch 1202: model parameters saved\n", - "Epoch 1203 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1203: avg_loss appended (1.5636)\n", - "Epoch 1203: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1203: accuracy appended (20.00%)\n", - "Epoch 1203: model set back to train mode\n", - "Epoch 1203: model parameters saved\n", - "Epoch 1204 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1204: avg_loss appended (1.5636)\n", - "Epoch 1204: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1204: accuracy appended (20.00%)\n", - "Epoch 1204: model set back to train mode\n", - "Epoch 1204: model parameters saved\n", - "Epoch 1205 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1205: avg_loss appended (1.5636)\n", - "Epoch 1205: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1205: accuracy appended (20.00%)\n", - "Epoch 1205: model set back to train mode\n", - "Epoch 1205: model parameters saved\n", - "Epoch 1206 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1206: avg_loss appended (1.5636)\n", - "Epoch 1206: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1206: accuracy appended (20.00%)\n", - "Epoch 1206: model set back to train mode\n", - "Epoch 1206: model parameters saved\n", - "Epoch 1207 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1207: avg_loss appended (1.5636)\n", - "Epoch 1207: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1207: accuracy appended (20.00%)\n", - "Epoch 1207: model set back to train mode\n", - "Epoch 1207: model parameters saved\n", - "Epoch 1208 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1208: avg_loss appended (1.5636)\n", - "Epoch 1208: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1208: accuracy appended (20.00%)\n", - "Epoch 1208: model set back to train mode\n", - "Epoch 1208: model parameters saved\n", - "Epoch 1209 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1209: avg_loss appended (1.5636)\n", - "Epoch 1209: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1209: accuracy appended (20.00%)\n", - "Epoch 1209: model set back to train mode\n", - "Epoch 1209: model parameters saved\n", - "Epoch 1210 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1210: avg_loss appended (1.5636)\n", - "Epoch 1210: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1210: accuracy appended (20.00%)\n", - "Epoch 1210: model set back to train mode\n", - "Epoch 1210: model parameters saved\n", - "Epoch 1211 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1211: avg_loss appended (1.5636)\n", - "Epoch 1211: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1211: accuracy appended (20.00%)\n", - "Epoch 1211: model set back to train mode\n", - "Epoch 1211: model parameters saved\n", - "Epoch 1212 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1212: avg_loss appended (1.5636)\n", - "Epoch 1212: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1212: accuracy appended (20.00%)\n", - "Epoch 1212: model set back to train mode\n", - "Epoch 1212: model parameters saved\n", - "Epoch 1213 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1213: avg_loss appended (1.5636)\n", - "Epoch 1213: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1213: accuracy appended (20.00%)\n", - "Epoch 1213: model set back to train mode\n", - "Epoch 1213: model parameters saved\n", - "Epoch 1214 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1214: avg_loss appended (1.5636)\n", - "Epoch 1214: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1214: accuracy appended (20.00%)\n", - "Epoch 1214: model set back to train mode\n", - "Epoch 1214: model parameters saved\n", - "Epoch 1215 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1215: avg_loss appended (1.5636)\n", - "Epoch 1215: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1215: accuracy appended (20.00%)\n", - "Epoch 1215: model set back to train mode\n", - "Epoch 1215: model parameters saved\n", - "Epoch 1216 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1216: avg_loss appended (1.5636)\n", - "Epoch 1216: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1216: accuracy appended (20.00%)\n", - "Epoch 1216: model set back to train mode\n", - "Epoch 1216: model parameters saved\n", - "Epoch 1217 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1217: avg_loss appended (1.5636)\n", - "Epoch 1217: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1217: accuracy appended (20.00%)\n", - "Epoch 1217: model set back to train mode\n", - "Epoch 1217: model parameters saved\n", - "Epoch 1218 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1218: avg_loss appended (1.5636)\n", - "Epoch 1218: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1218: accuracy appended (20.00%)\n", - "Epoch 1218: model set back to train mode\n", - "Epoch 1218: model parameters saved\n", - "Epoch 1219 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1219: avg_loss appended (1.5636)\n", - "Epoch 1219: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1219: accuracy appended (20.00%)\n", - "Epoch 1219: model set back to train mode\n", - "Epoch 1219: model parameters saved\n", - "Epoch 1220 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1220: avg_loss appended (1.5636)\n", - "Epoch 1220: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1220: accuracy appended (20.00%)\n", - "Epoch 1220: model set back to train mode\n", - "Epoch 1220: model parameters saved\n", - "Epoch 1221 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1221: avg_loss appended (1.5636)\n", - "Epoch 1221: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1221: accuracy appended (20.00%)\n", - "Epoch 1221: model set back to train mode\n", - "Epoch 1221: model parameters saved\n", - "Epoch 1222 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1222: avg_loss appended (1.5636)\n", - "Epoch 1222: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1222: accuracy appended (20.00%)\n", - "Epoch 1222: model set back to train mode\n", - "Epoch 1222: model parameters saved\n", - "Epoch 1223 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1223: avg_loss appended (1.5636)\n", - "Epoch 1223: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1223: accuracy appended (20.00%)\n", - "Epoch 1223: model set back to train mode\n", - "Epoch 1223: model parameters saved\n", - "Epoch 1224 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1224: avg_loss appended (1.5636)\n", - "Epoch 1224: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1224: accuracy appended (20.00%)\n", - "Epoch 1224: model set back to train mode\n", - "Epoch 1224: model parameters saved\n", - "Epoch 1225 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1225: avg_loss appended (1.5636)\n", - "Epoch 1225: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1225: accuracy appended (20.00%)\n", - "Epoch 1225: model set back to train mode\n", - "Epoch 1225: model parameters saved\n", - "Epoch 1226 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1226: avg_loss appended (1.5636)\n", - "Epoch 1226: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1226: accuracy appended (20.00%)\n", - "Epoch 1226: model set back to train mode\n", - "Epoch 1226: model parameters saved\n", - "Epoch 1227 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1227: avg_loss appended (1.5636)\n", - "Epoch 1227: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1227: accuracy appended (20.00%)\n", - "Epoch 1227: model set back to train mode\n", - "Epoch 1227: model parameters saved\n", - "Epoch 1228 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1228: avg_loss appended (1.5636)\n", - "Epoch 1228: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1228: accuracy appended (20.00%)\n", - "Epoch 1228: model set back to train mode\n", - "Epoch 1228: model parameters saved\n", - "Epoch 1229 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1229: avg_loss appended (1.5636)\n", - "Epoch 1229: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1229: accuracy appended (20.00%)\n", - "Epoch 1229: model set back to train mode\n", - "Epoch 1229: model parameters saved\n", - "Epoch 1230 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1230: avg_loss appended (1.5636)\n", - "Epoch 1230: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1230: accuracy appended (20.00%)\n", - "Epoch 1230: model set back to train mode\n", - "Epoch 1230: model parameters saved\n", - "Epoch 1231 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1231: avg_loss appended (1.5636)\n", - "Epoch 1231: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1231: accuracy appended (20.00%)\n", - "Epoch 1231: model set back to train mode\n", - "Epoch 1231: model parameters saved\n", - "Epoch 1232 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1232: avg_loss appended (1.5636)\n", - "Epoch 1232: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1232: accuracy appended (20.00%)\n", - "Epoch 1232: model set back to train mode\n", - "Epoch 1232: model parameters saved\n", - "Epoch 1233 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1233: avg_loss appended (1.5636)\n", - "Epoch 1233: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1233: accuracy appended (20.00%)\n", - "Epoch 1233: model set back to train mode\n", - "Epoch 1233: model parameters saved\n", - "Epoch 1234 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1234: avg_loss appended (1.5636)\n", - "Epoch 1234: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1234: accuracy appended (20.00%)\n", - "Epoch 1234: model set back to train mode\n", - "Epoch 1234: model parameters saved\n", - "Epoch 1235 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1235: avg_loss appended (1.5636)\n", - "Epoch 1235: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1235: accuracy appended (20.00%)\n", - "Epoch 1235: model set back to train mode\n", - "Epoch 1235: model parameters saved\n", - "Epoch 1236 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1236: avg_loss appended (1.5636)\n", - "Epoch 1236: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1236: accuracy appended (20.00%)\n", - "Epoch 1236: model set back to train mode\n", - "Epoch 1236: model parameters saved\n", - "Epoch 1237 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1237: avg_loss appended (1.5636)\n", - "Epoch 1237: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1237: accuracy appended (20.00%)\n", - "Epoch 1237: model set back to train mode\n", - "Epoch 1237: model parameters saved\n", - "Epoch 1238 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1238: avg_loss appended (1.5636)\n", - "Epoch 1238: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1238: accuracy appended (20.00%)\n", - "Epoch 1238: model set back to train mode\n", - "Epoch 1238: model parameters saved\n", - "Epoch 1239 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1239: avg_loss appended (1.5636)\n", - "Epoch 1239: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1239: accuracy appended (20.00%)\n", - "Epoch 1239: model set back to train mode\n", - "Epoch 1239: model parameters saved\n", - "Epoch 1240 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1240: avg_loss appended (1.5636)\n", - "Epoch 1240: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1240: accuracy appended (20.00%)\n", - "Epoch 1240: model set back to train mode\n", - "Epoch 1240: model parameters saved\n", - "Epoch 1241 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1241: avg_loss appended (1.5636)\n", - "Epoch 1241: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1241: accuracy appended (20.00%)\n", - "Epoch 1241: model set back to train mode\n", - "Epoch 1241: model parameters saved\n", - "Epoch 1242 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1242: avg_loss appended (1.5636)\n", - "Epoch 1242: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1242: accuracy appended (20.00%)\n", - "Epoch 1242: model set back to train mode\n", - "Epoch 1242: model parameters saved\n", - "Epoch 1243 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1243: avg_loss appended (1.5636)\n", - "Epoch 1243: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1243: accuracy appended (20.00%)\n", - "Epoch 1243: model set back to train mode\n", - "Epoch 1243: model parameters saved\n", - "Epoch 1244 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1244: avg_loss appended (1.5636)\n", - "Epoch 1244: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1244: accuracy appended (20.00%)\n", - "Epoch 1244: model set back to train mode\n", - "Epoch 1244: model parameters saved\n", - "Epoch 1245 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1245: avg_loss appended (1.5636)\n", - "Epoch 1245: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1245: accuracy appended (20.00%)\n", - "Epoch 1245: model set back to train mode\n", - "Epoch 1245: model parameters saved\n", - "Epoch 1246 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1246: avg_loss appended (1.5636)\n", - "Epoch 1246: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1246: accuracy appended (20.00%)\n", - "Epoch 1246: model set back to train mode\n", - "Epoch 1246: model parameters saved\n", - "Epoch 1247 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1247: avg_loss appended (1.5636)\n", - "Epoch 1247: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1247: accuracy appended (20.00%)\n", - "Epoch 1247: model set back to train mode\n", - "Epoch 1247: model parameters saved\n", - "Epoch 1248 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1248: avg_loss appended (1.5636)\n", - "Epoch 1248: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1248: accuracy appended (20.00%)\n", - "Epoch 1248: model set back to train mode\n", - "Epoch 1248: model parameters saved\n", - "Epoch 1249 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1249: avg_loss appended (1.5636)\n", - "Epoch 1249: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1249: accuracy appended (20.00%)\n", - "Epoch 1249: model set back to train mode\n", - "Epoch 1249: model parameters saved\n", - "Epoch 1250 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1250: avg_loss appended (1.5636)\n", - "Epoch 1250: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1250: accuracy appended (20.00%)\n", - "Epoch 1250: model set back to train mode\n", - "Epoch 1250: model parameters saved\n", - "Epoch 1251 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1251: avg_loss appended (1.5636)\n", - "Epoch 1251: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1251: accuracy appended (20.00%)\n", - "Epoch 1251: model set back to train mode\n", - "Epoch 1251: model parameters saved\n", - "Epoch 1252 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1252: avg_loss appended (1.5636)\n", - "Epoch 1252: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1252: accuracy appended (20.00%)\n", - "Epoch 1252: model set back to train mode\n", - "Epoch 1252: model parameters saved\n", - "Epoch 1253 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1253: avg_loss appended (1.5636)\n", - "Epoch 1253: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1253: accuracy appended (20.00%)\n", - "Epoch 1253: model set back to train mode\n", - "Epoch 1253: model parameters saved\n", - "Epoch 1254 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1254: avg_loss appended (1.5636)\n", - "Epoch 1254: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1254: accuracy appended (20.00%)\n", - "Epoch 1254: model set back to train mode\n", - "Epoch 1254: model parameters saved\n", - "Epoch 1255 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1255: avg_loss appended (1.5636)\n", - "Epoch 1255: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1255: accuracy appended (20.00%)\n", - "Epoch 1255: model set back to train mode\n", - "Epoch 1255: model parameters saved\n", - "Epoch 1256 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1256: avg_loss appended (1.5636)\n", - "Epoch 1256: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1256: accuracy appended (20.00%)\n", - "Epoch 1256: model set back to train mode\n", - "Epoch 1256: model parameters saved\n", - "Epoch 1257 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1257: avg_loss appended (1.5636)\n", - "Epoch 1257: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1257: accuracy appended (20.00%)\n", - "Epoch 1257: model set back to train mode\n", - "Epoch 1257: model parameters saved\n", - "Epoch 1258 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1258: avg_loss appended (1.5636)\n", - "Epoch 1258: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1258: accuracy appended (20.00%)\n", - "Epoch 1258: model set back to train mode\n", - "Epoch 1258: model parameters saved\n", - "Epoch 1259 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1259: avg_loss appended (1.5636)\n", - "Epoch 1259: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1259: accuracy appended (20.00%)\n", - "Epoch 1259: model set back to train mode\n", - "Epoch 1259: model parameters saved\n", - "Epoch 1260 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1260: avg_loss appended (1.5636)\n", - "Epoch 1260: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1260: accuracy appended (20.00%)\n", - "Epoch 1260: model set back to train mode\n", - "Epoch 1260: model parameters saved\n", - "Epoch 1261 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1261: avg_loss appended (1.5636)\n", - "Epoch 1261: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1261: accuracy appended (20.00%)\n", - "Epoch 1261: model set back to train mode\n", - "Epoch 1261: model parameters saved\n", - "Epoch 1262 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1262: avg_loss appended (1.5636)\n", - "Epoch 1262: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1262: accuracy appended (20.00%)\n", - "Epoch 1262: model set back to train mode\n", - "Epoch 1262: model parameters saved\n", - "Epoch 1263 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1263: avg_loss appended (1.5636)\n", - "Epoch 1263: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1263: accuracy appended (20.00%)\n", - "Epoch 1263: model set back to train mode\n", - "Epoch 1263: model parameters saved\n", - "Epoch 1264 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1264: avg_loss appended (1.5636)\n", - "Epoch 1264: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1264: accuracy appended (20.00%)\n", - "Epoch 1264: model set back to train mode\n", - "Epoch 1264: model parameters saved\n", - "Epoch 1265 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1265: avg_loss appended (1.5636)\n", - "Epoch 1265: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1265: accuracy appended (20.00%)\n", - "Epoch 1265: model set back to train mode\n", - "Epoch 1265: model parameters saved\n", - "Epoch 1266 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1266: avg_loss appended (1.5636)\n", - "Epoch 1266: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1266: accuracy appended (20.00%)\n", - "Epoch 1266: model set back to train mode\n", - "Epoch 1266: model parameters saved\n", - "Epoch 1267 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1267: avg_loss appended (1.5636)\n", - "Epoch 1267: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1267: accuracy appended (20.00%)\n", - "Epoch 1267: model set back to train mode\n", - "Epoch 1267: model parameters saved\n", - "Epoch 1268 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1268: avg_loss appended (1.5636)\n", - "Epoch 1268: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1268: accuracy appended (20.00%)\n", - "Epoch 1268: model set back to train mode\n", - "Epoch 1268: model parameters saved\n", - "Epoch 1269 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1269: avg_loss appended (1.5636)\n", - "Epoch 1269: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1269: accuracy appended (20.00%)\n", - "Epoch 1269: model set back to train mode\n", - "Epoch 1269: model parameters saved\n", - "Epoch 1270 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1270: avg_loss appended (1.5636)\n", - "Epoch 1270: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1270: accuracy appended (20.00%)\n", - "Epoch 1270: model set back to train mode\n", - "Epoch 1270: model parameters saved\n", - "Epoch 1271 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1271: avg_loss appended (1.5636)\n", - "Epoch 1271: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1271: accuracy appended (20.00%)\n", - "Epoch 1271: model set back to train mode\n", - "Epoch 1271: model parameters saved\n", - "Epoch 1272 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1272: avg_loss appended (1.5636)\n", - "Epoch 1272: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1272: accuracy appended (20.00%)\n", - "Epoch 1272: model set back to train mode\n", - "Epoch 1272: model parameters saved\n", - "Epoch 1273 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1273: avg_loss appended (1.5636)\n", - "Epoch 1273: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1273: accuracy appended (20.00%)\n", - "Epoch 1273: model set back to train mode\n", - "Epoch 1273: model parameters saved\n", - "Epoch 1274 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1274: avg_loss appended (1.5636)\n", - "Epoch 1274: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1274: accuracy appended (20.00%)\n", - "Epoch 1274: model set back to train mode\n", - "Epoch 1274: model parameters saved\n", - "Epoch 1275 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1275: avg_loss appended (1.5636)\n", - "Epoch 1275: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1275: accuracy appended (20.00%)\n", - "Epoch 1275: model set back to train mode\n", - "Epoch 1275: model parameters saved\n", - "Epoch 1276 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1276: avg_loss appended (1.5636)\n", - "Epoch 1276: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1276: accuracy appended (20.00%)\n", - "Epoch 1276: model set back to train mode\n", - "Epoch 1276: model parameters saved\n", - "Epoch 1277 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1277: avg_loss appended (1.5636)\n", - "Epoch 1277: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1277: accuracy appended (20.00%)\n", - "Epoch 1277: model set back to train mode\n", - "Epoch 1277: model parameters saved\n", - "Epoch 1278 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1278: avg_loss appended (1.5636)\n", - "Epoch 1278: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1278: accuracy appended (20.00%)\n", - "Epoch 1278: model set back to train mode\n", - "Epoch 1278: model parameters saved\n", - "Epoch 1279 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1279: avg_loss appended (1.5636)\n", - "Epoch 1279: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1279: accuracy appended (20.00%)\n", - "Epoch 1279: model set back to train mode\n", - "Epoch 1279: model parameters saved\n", - "Epoch 1280 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1280: avg_loss appended (1.5636)\n", - "Epoch 1280: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1280: accuracy appended (20.00%)\n", - "Epoch 1280: model set back to train mode\n", - "Epoch 1280: model parameters saved\n", - "Epoch 1281 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1281: avg_loss appended (1.5636)\n", - "Epoch 1281: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1281: accuracy appended (20.00%)\n", - "Epoch 1281: model set back to train mode\n", - "Epoch 1281: model parameters saved\n", - "Epoch 1282 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1282: avg_loss appended (1.5636)\n", - "Epoch 1282: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1282: accuracy appended (20.00%)\n", - "Epoch 1282: model set back to train mode\n", - "Epoch 1282: model parameters saved\n", - "Epoch 1283 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1283: avg_loss appended (1.5636)\n", - "Epoch 1283: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1283: accuracy appended (20.00%)\n", - "Epoch 1283: model set back to train mode\n", - "Epoch 1283: model parameters saved\n", - "Epoch 1284 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1284: avg_loss appended (1.5636)\n", - "Epoch 1284: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1284: accuracy appended (20.00%)\n", - "Epoch 1284: model set back to train mode\n", - "Epoch 1284: model parameters saved\n", - "Epoch 1285 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1285: avg_loss appended (1.5636)\n", - "Epoch 1285: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1285: accuracy appended (20.00%)\n", - "Epoch 1285: model set back to train mode\n", - "Epoch 1285: model parameters saved\n", - "Epoch 1286 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1286: avg_loss appended (1.5636)\n", - "Epoch 1286: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1286: accuracy appended (20.00%)\n", - "Epoch 1286: model set back to train mode\n", - "Epoch 1286: model parameters saved\n", - "Epoch 1287 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1287: avg_loss appended (1.5636)\n", - "Epoch 1287: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1287: accuracy appended (20.00%)\n", - "Epoch 1287: model set back to train mode\n", - "Epoch 1287: model parameters saved\n", - "Epoch 1288 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1288: avg_loss appended (1.5636)\n", - "Epoch 1288: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1288: accuracy appended (20.00%)\n", - "Epoch 1288: model set back to train mode\n", - "Epoch 1288: model parameters saved\n", - "Epoch 1289 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1289: avg_loss appended (1.5636)\n", - "Epoch 1289: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1289: accuracy appended (20.00%)\n", - "Epoch 1289: model set back to train mode\n", - "Epoch 1289: model parameters saved\n", - "Epoch 1290 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1290: avg_loss appended (1.5636)\n", - "Epoch 1290: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1290: accuracy appended (20.00%)\n", - "Epoch 1290: model set back to train mode\n", - "Epoch 1290: model parameters saved\n", - "Epoch 1291 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5636)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5636)\n", - "Epoch 1291: avg_loss appended (1.5636)\n", - "Epoch 1291: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1291: accuracy appended (20.00%)\n", - "Epoch 1291: model set back to train mode\n", - "Epoch 1291: model parameters saved\n", - "Epoch 1292 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1292: avg_loss appended (1.5635)\n", - "Epoch 1292: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1292: accuracy appended (20.00%)\n", - "Epoch 1292: model set back to train mode\n", - "Epoch 1292: model parameters saved\n", - "Epoch 1293 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1293: avg_loss appended (1.5635)\n", - "Epoch 1293: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1293: accuracy appended (20.00%)\n", - "Epoch 1293: model set back to train mode\n", - "Epoch 1293: model parameters saved\n", - "Epoch 1294 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1294: avg_loss appended (1.5635)\n", - "Epoch 1294: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1294: accuracy appended (20.00%)\n", - "Epoch 1294: model set back to train mode\n", - "Epoch 1294: model parameters saved\n", - "Epoch 1295 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1295: avg_loss appended (1.5635)\n", - "Epoch 1295: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1295: accuracy appended (20.00%)\n", - "Epoch 1295: model set back to train mode\n", - "Epoch 1295: model parameters saved\n", - "Epoch 1296 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1296: avg_loss appended (1.5635)\n", - "Epoch 1296: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1296: accuracy appended (20.00%)\n", - "Epoch 1296: model set back to train mode\n", - "Epoch 1296: model parameters saved\n", - "Epoch 1297 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1297: avg_loss appended (1.5635)\n", - "Epoch 1297: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1297: accuracy appended (20.00%)\n", - "Epoch 1297: model set back to train mode\n", - "Epoch 1297: model parameters saved\n", - "Epoch 1298 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1298: avg_loss appended (1.5635)\n", - "Epoch 1298: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1298: accuracy appended (20.00%)\n", - "Epoch 1298: model set back to train mode\n", - "Epoch 1298: model parameters saved\n", - "Epoch 1299 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1299: avg_loss appended (1.5635)\n", - "Epoch 1299: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1299: accuracy appended (20.00%)\n", - "Epoch 1299: model set back to train mode\n", - "Epoch 1299: model parameters saved\n", - "Epoch 1300 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1300: avg_loss appended (1.5635)\n", - "Epoch 1300: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1300: accuracy appended (20.00%)\n", - "Epoch 1300: model set back to train mode\n", - "Epoch 1300: model parameters saved\n", - "Epoch 1300/10000, Loss: 1.5635, Accuracy: 20.00%\n", - "Epoch 1301 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1301: avg_loss appended (1.5635)\n", - "Epoch 1301: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1301: accuracy appended (20.00%)\n", - "Epoch 1301: model set back to train mode\n", - "Epoch 1301: model parameters saved\n", - "Epoch 1302 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1302: avg_loss appended (1.5635)\n", - "Epoch 1302: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1302: accuracy appended (20.00%)\n", - "Epoch 1302: model set back to train mode\n", - "Epoch 1302: model parameters saved\n", - "Epoch 1303 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1303: avg_loss appended (1.5635)\n", - "Epoch 1303: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1303: accuracy appended (20.00%)\n", - "Epoch 1303: model set back to train mode\n", - "Epoch 1303: model parameters saved\n", - "Epoch 1304 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1304: avg_loss appended (1.5635)\n", - "Epoch 1304: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1304: accuracy appended (20.00%)\n", - "Epoch 1304: model set back to train mode\n", - "Epoch 1304: model parameters saved\n", - "Epoch 1305 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1305: avg_loss appended (1.5635)\n", - "Epoch 1305: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1305: accuracy appended (20.00%)\n", - "Epoch 1305: model set back to train mode\n", - "Epoch 1305: model parameters saved\n", - "Epoch 1306 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1306: avg_loss appended (1.5635)\n", - "Epoch 1306: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1306: accuracy appended (20.00%)\n", - "Epoch 1306: model set back to train mode\n", - "Epoch 1306: model parameters saved\n", - "Epoch 1307 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1307: avg_loss appended (1.5635)\n", - "Epoch 1307: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1307: accuracy appended (20.00%)\n", - "Epoch 1307: model set back to train mode\n", - "Epoch 1307: model parameters saved\n", - "Epoch 1308 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1308: avg_loss appended (1.5635)\n", - "Epoch 1308: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1308: accuracy appended (20.00%)\n", - "Epoch 1308: model set back to train mode\n", - "Epoch 1308: model parameters saved\n", - "Epoch 1309 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1309: avg_loss appended (1.5635)\n", - "Epoch 1309: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1309: accuracy appended (20.00%)\n", - "Epoch 1309: model set back to train mode\n", - "Epoch 1309: model parameters saved\n", - "Epoch 1310 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1310: avg_loss appended (1.5635)\n", - "Epoch 1310: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1310: accuracy appended (20.00%)\n", - "Epoch 1310: model set back to train mode\n", - "Epoch 1310: model parameters saved\n", - "Epoch 1311 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1311: avg_loss appended (1.5635)\n", - "Epoch 1311: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1311: accuracy appended (20.00%)\n", - "Epoch 1311: model set back to train mode\n", - "Epoch 1311: model parameters saved\n", - "Epoch 1312 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1312: avg_loss appended (1.5635)\n", - "Epoch 1312: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1312: accuracy appended (20.00%)\n", - "Epoch 1312: model set back to train mode\n", - "Epoch 1312: model parameters saved\n", - "Epoch 1313 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1313: avg_loss appended (1.5635)\n", - "Epoch 1313: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1313: accuracy appended (20.00%)\n", - "Epoch 1313: model set back to train mode\n", - "Epoch 1313: model parameters saved\n", - "Epoch 1314 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1314: avg_loss appended (1.5635)\n", - "Epoch 1314: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1314: accuracy appended (20.00%)\n", - "Epoch 1314: model set back to train mode\n", - "Epoch 1314: model parameters saved\n", - "Epoch 1315 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1315: avg_loss appended (1.5635)\n", - "Epoch 1315: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1315: accuracy appended (20.00%)\n", - "Epoch 1315: model set back to train mode\n", - "Epoch 1315: model parameters saved\n", - "Epoch 1316 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1316: avg_loss appended (1.5635)\n", - "Epoch 1316: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1316: accuracy appended (20.00%)\n", - "Epoch 1316: model set back to train mode\n", - "Epoch 1316: model parameters saved\n", - "Epoch 1317 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1317: avg_loss appended (1.5635)\n", - "Epoch 1317: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1317: accuracy appended (20.00%)\n", - "Epoch 1317: model set back to train mode\n", - "Epoch 1317: model parameters saved\n", - "Epoch 1318 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1318: avg_loss appended (1.5635)\n", - "Epoch 1318: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1318: accuracy appended (20.00%)\n", - "Epoch 1318: model set back to train mode\n", - "Epoch 1318: model parameters saved\n", - "Epoch 1319 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1319: avg_loss appended (1.5635)\n", - "Epoch 1319: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1319: accuracy appended (20.00%)\n", - "Epoch 1319: model set back to train mode\n", - "Epoch 1319: model parameters saved\n", - "Epoch 1320 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1320: avg_loss appended (1.5635)\n", - "Epoch 1320: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1320: accuracy appended (20.00%)\n", - "Epoch 1320: model set back to train mode\n", - "Epoch 1320: model parameters saved\n", - "Epoch 1321 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1321: avg_loss appended (1.5635)\n", - "Epoch 1321: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1321: accuracy appended (20.00%)\n", - "Epoch 1321: model set back to train mode\n", - "Epoch 1321: model parameters saved\n", - "Epoch 1322 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1322: avg_loss appended (1.5635)\n", - "Epoch 1322: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1322: accuracy appended (20.00%)\n", - "Epoch 1322: model set back to train mode\n", - "Epoch 1322: model parameters saved\n", - "Epoch 1323 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1323: avg_loss appended (1.5635)\n", - "Epoch 1323: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1323: accuracy appended (20.00%)\n", - "Epoch 1323: model set back to train mode\n", - "Epoch 1323: model parameters saved\n", - "Epoch 1324 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1324: avg_loss appended (1.5635)\n", - "Epoch 1324: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1324: accuracy appended (20.00%)\n", - "Epoch 1324: model set back to train mode\n", - "Epoch 1324: model parameters saved\n", - "Epoch 1325 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1325: avg_loss appended (1.5635)\n", - "Epoch 1325: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1325: accuracy appended (20.00%)\n", - "Epoch 1325: model set back to train mode\n", - "Epoch 1325: model parameters saved\n", - "Epoch 1326 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1326: avg_loss appended (1.5635)\n", - "Epoch 1326: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1326: accuracy appended (20.00%)\n", - "Epoch 1326: model set back to train mode\n", - "Epoch 1326: model parameters saved\n", - "Epoch 1327 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1327: avg_loss appended (1.5635)\n", - "Epoch 1327: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1327: accuracy appended (20.00%)\n", - "Epoch 1327: model set back to train mode\n", - "Epoch 1327: model parameters saved\n", - "Epoch 1328 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1328: avg_loss appended (1.5635)\n", - "Epoch 1328: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1328: accuracy appended (20.00%)\n", - "Epoch 1328: model set back to train mode\n", - "Epoch 1328: model parameters saved\n", - "Epoch 1329 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1329: avg_loss appended (1.5635)\n", - "Epoch 1329: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1329: accuracy appended (20.00%)\n", - "Epoch 1329: model set back to train mode\n", - "Epoch 1329: model parameters saved\n", - "Epoch 1330 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1330: avg_loss appended (1.5635)\n", - "Epoch 1330: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1330: accuracy appended (20.00%)\n", - "Epoch 1330: model set back to train mode\n", - "Epoch 1330: model parameters saved\n", - "Epoch 1331 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1331: avg_loss appended (1.5635)\n", - "Epoch 1331: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1331: accuracy appended (20.00%)\n", - "Epoch 1331: model set back to train mode\n", - "Epoch 1331: model parameters saved\n", - "Epoch 1332 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1332: avg_loss appended (1.5635)\n", - "Epoch 1332: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1332: accuracy appended (20.00%)\n", - "Epoch 1332: model set back to train mode\n", - "Epoch 1332: model parameters saved\n", - "Epoch 1333 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1333: avg_loss appended (1.5635)\n", - "Epoch 1333: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1333: accuracy appended (20.00%)\n", - "Epoch 1333: model set back to train mode\n", - "Epoch 1333: model parameters saved\n", - "Epoch 1334 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1334: avg_loss appended (1.5635)\n", - "Epoch 1334: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1334: accuracy appended (20.00%)\n", - "Epoch 1334: model set back to train mode\n", - "Epoch 1334: model parameters saved\n", - "Epoch 1335 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1335: avg_loss appended (1.5635)\n", - "Epoch 1335: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1335: accuracy appended (20.00%)\n", - "Epoch 1335: model set back to train mode\n", - "Epoch 1335: model parameters saved\n", - "Epoch 1336 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1336: avg_loss appended (1.5635)\n", - "Epoch 1336: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1336: accuracy appended (20.00%)\n", - "Epoch 1336: model set back to train mode\n", - "Epoch 1336: model parameters saved\n", - "Epoch 1337 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1337: avg_loss appended (1.5635)\n", - "Epoch 1337: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1337: accuracy appended (20.00%)\n", - "Epoch 1337: model set back to train mode\n", - "Epoch 1337: model parameters saved\n", - "Epoch 1338 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1338: avg_loss appended (1.5635)\n", - "Epoch 1338: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1338: accuracy appended (20.00%)\n", - "Epoch 1338: model set back to train mode\n", - "Epoch 1338: model parameters saved\n", - "Epoch 1339 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1339: avg_loss appended (1.5635)\n", - "Epoch 1339: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1339: accuracy appended (20.00%)\n", - "Epoch 1339: model set back to train mode\n", - "Epoch 1339: model parameters saved\n", - "Epoch 1340 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1340: avg_loss appended (1.5635)\n", - "Epoch 1340: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1340: accuracy appended (20.00%)\n", - "Epoch 1340: model set back to train mode\n", - "Epoch 1340: model parameters saved\n", - "Epoch 1341 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1341: avg_loss appended (1.5635)\n", - "Epoch 1341: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1341: accuracy appended (20.00%)\n", - "Epoch 1341: model set back to train mode\n", - "Epoch 1341: model parameters saved\n", - "Epoch 1342 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1342: avg_loss appended (1.5635)\n", - "Epoch 1342: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1342: accuracy appended (20.00%)\n", - "Epoch 1342: model set back to train mode\n", - "Epoch 1342: model parameters saved\n", - "Epoch 1343 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1343: avg_loss appended (1.5635)\n", - "Epoch 1343: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1343: accuracy appended (20.00%)\n", - "Epoch 1343: model set back to train mode\n", - "Epoch 1343: model parameters saved\n", - "Epoch 1344 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1344: avg_loss appended (1.5635)\n", - "Epoch 1344: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1344: accuracy appended (20.00%)\n", - "Epoch 1344: model set back to train mode\n", - "Epoch 1344: model parameters saved\n", - "Epoch 1345 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1345: avg_loss appended (1.5635)\n", - "Epoch 1345: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1345: accuracy appended (20.00%)\n", - "Epoch 1345: model set back to train mode\n", - "Epoch 1345: model parameters saved\n", - "Epoch 1346 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1346: avg_loss appended (1.5635)\n", - "Epoch 1346: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1346: accuracy appended (20.00%)\n", - "Epoch 1346: model set back to train mode\n", - "Epoch 1346: model parameters saved\n", - "Epoch 1347 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1347: avg_loss appended (1.5635)\n", - "Epoch 1347: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1347: accuracy appended (20.00%)\n", - "Epoch 1347: model set back to train mode\n", - "Epoch 1347: model parameters saved\n", - "Epoch 1348 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1348: avg_loss appended (1.5635)\n", - "Epoch 1348: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1348: accuracy appended (20.00%)\n", - "Epoch 1348: model set back to train mode\n", - "Epoch 1348: model parameters saved\n", - "Epoch 1349 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1349: avg_loss appended (1.5635)\n", - "Epoch 1349: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1349: accuracy appended (20.00%)\n", - "Epoch 1349: model set back to train mode\n", - "Epoch 1349: model parameters saved\n", - "Epoch 1350 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1350: avg_loss appended (1.5635)\n", - "Epoch 1350: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1350: accuracy appended (20.00%)\n", - "Epoch 1350: model set back to train mode\n", - "Epoch 1350: model parameters saved\n", - "Epoch 1351 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1351: avg_loss appended (1.5635)\n", - "Epoch 1351: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1351: accuracy appended (20.00%)\n", - "Epoch 1351: model set back to train mode\n", - "Epoch 1351: model parameters saved\n", - "Epoch 1352 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1352: avg_loss appended (1.5635)\n", - "Epoch 1352: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1352: accuracy appended (20.00%)\n", - "Epoch 1352: model set back to train mode\n", - "Epoch 1352: model parameters saved\n", - "Epoch 1353 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1353: avg_loss appended (1.5635)\n", - "Epoch 1353: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1353: accuracy appended (20.00%)\n", - "Epoch 1353: model set back to train mode\n", - "Epoch 1353: model parameters saved\n", - "Epoch 1354 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1354: avg_loss appended (1.5635)\n", - "Epoch 1354: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1354: accuracy appended (20.00%)\n", - "Epoch 1354: model set back to train mode\n", - "Epoch 1354: model parameters saved\n", - "Epoch 1355 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1355: avg_loss appended (1.5635)\n", - "Epoch 1355: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1355: accuracy appended (20.00%)\n", - "Epoch 1355: model set back to train mode\n", - "Epoch 1355: model parameters saved\n", - "Epoch 1356 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1356: avg_loss appended (1.5635)\n", - "Epoch 1356: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1356: accuracy appended (20.00%)\n", - "Epoch 1356: model set back to train mode\n", - "Epoch 1356: model parameters saved\n", - "Epoch 1357 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1357: avg_loss appended (1.5635)\n", - "Epoch 1357: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1357: accuracy appended (20.00%)\n", - "Epoch 1357: model set back to train mode\n", - "Epoch 1357: model parameters saved\n", - "Epoch 1358 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1358: avg_loss appended (1.5635)\n", - "Epoch 1358: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1358: accuracy appended (20.00%)\n", - "Epoch 1358: model set back to train mode\n", - "Epoch 1358: model parameters saved\n", - "Epoch 1359 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1359: avg_loss appended (1.5635)\n", - "Epoch 1359: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1359: accuracy appended (20.00%)\n", - "Epoch 1359: model set back to train mode\n", - "Epoch 1359: model parameters saved\n", - "Epoch 1360 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1360: avg_loss appended (1.5635)\n", - "Epoch 1360: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1360: accuracy appended (20.00%)\n", - "Epoch 1360: model set back to train mode\n", - "Epoch 1360: model parameters saved\n", - "Epoch 1361 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1361: avg_loss appended (1.5635)\n", - "Epoch 1361: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1361: accuracy appended (20.00%)\n", - "Epoch 1361: model set back to train mode\n", - "Epoch 1361: model parameters saved\n", - "Epoch 1362 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1362: avg_loss appended (1.5635)\n", - "Epoch 1362: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1362: accuracy appended (20.00%)\n", - "Epoch 1362: model set back to train mode\n", - "Epoch 1362: model parameters saved\n", - "Epoch 1363 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1363: avg_loss appended (1.5635)\n", - "Epoch 1363: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1363: accuracy appended (20.00%)\n", - "Epoch 1363: model set back to train mode\n", - "Epoch 1363: model parameters saved\n", - "Epoch 1364 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1364: avg_loss appended (1.5635)\n", - "Epoch 1364: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1364: accuracy appended (20.00%)\n", - "Epoch 1364: model set back to train mode\n", - "Epoch 1364: model parameters saved\n", - "Epoch 1365 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1365: avg_loss appended (1.5635)\n", - "Epoch 1365: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1365: accuracy appended (20.00%)\n", - "Epoch 1365: model set back to train mode\n", - "Epoch 1365: model parameters saved\n", - "Epoch 1366 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1366: avg_loss appended (1.5635)\n", - "Epoch 1366: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1366: accuracy appended (20.00%)\n", - "Epoch 1366: model set back to train mode\n", - "Epoch 1366: model parameters saved\n", - "Epoch 1367 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1367: avg_loss appended (1.5635)\n", - "Epoch 1367: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1367: accuracy appended (20.00%)\n", - "Epoch 1367: model set back to train mode\n", - "Epoch 1367: model parameters saved\n", - "Epoch 1368 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1368: avg_loss appended (1.5635)\n", - "Epoch 1368: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1368: accuracy appended (20.00%)\n", - "Epoch 1368: model set back to train mode\n", - "Epoch 1368: model parameters saved\n", - "Epoch 1369 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1369: avg_loss appended (1.5635)\n", - "Epoch 1369: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1369: accuracy appended (20.00%)\n", - "Epoch 1369: model set back to train mode\n", - "Epoch 1369: model parameters saved\n", - "Epoch 1370 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1370: avg_loss appended (1.5635)\n", - "Epoch 1370: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1370: accuracy appended (20.00%)\n", - "Epoch 1370: model set back to train mode\n", - "Epoch 1370: model parameters saved\n", - "Epoch 1371 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1371: avg_loss appended (1.5635)\n", - "Epoch 1371: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1371: accuracy appended (20.00%)\n", - "Epoch 1371: model set back to train mode\n", - "Epoch 1371: model parameters saved\n", - "Epoch 1372 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1372: avg_loss appended (1.5635)\n", - "Epoch 1372: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1372: accuracy appended (20.00%)\n", - "Epoch 1372: model set back to train mode\n", - "Epoch 1372: model parameters saved\n", - "Epoch 1373 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1373: avg_loss appended (1.5635)\n", - "Epoch 1373: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1373: accuracy appended (20.00%)\n", - "Epoch 1373: model set back to train mode\n", - "Epoch 1373: model parameters saved\n", - "Epoch 1374 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1374: avg_loss appended (1.5635)\n", - "Epoch 1374: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1374: accuracy appended (20.00%)\n", - "Epoch 1374: model set back to train mode\n", - "Epoch 1374: model parameters saved\n", - "Epoch 1375 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1375: avg_loss appended (1.5635)\n", - "Epoch 1375: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1375: accuracy appended (20.00%)\n", - "Epoch 1375: model set back to train mode\n", - "Epoch 1375: model parameters saved\n", - "Epoch 1376 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1376: avg_loss appended (1.5635)\n", - "Epoch 1376: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1376: accuracy appended (20.00%)\n", - "Epoch 1376: model set back to train mode\n", - "Epoch 1376: model parameters saved\n", - "Epoch 1377 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1377: avg_loss appended (1.5635)\n", - "Epoch 1377: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1377: accuracy appended (20.00%)\n", - "Epoch 1377: model set back to train mode\n", - "Epoch 1377: model parameters saved\n", - "Epoch 1378 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1378: avg_loss appended (1.5635)\n", - "Epoch 1378: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1378: accuracy appended (20.00%)\n", - "Epoch 1378: model set back to train mode\n", - "Epoch 1378: model parameters saved\n", - "Epoch 1379 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1379: avg_loss appended (1.5635)\n", - "Epoch 1379: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1379: accuracy appended (20.00%)\n", - "Epoch 1379: model set back to train mode\n", - "Epoch 1379: model parameters saved\n", - "Epoch 1380 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1380: avg_loss appended (1.5635)\n", - "Epoch 1380: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1380: accuracy appended (20.00%)\n", - "Epoch 1380: model set back to train mode\n", - "Epoch 1380: model parameters saved\n", - "Epoch 1381 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1381: avg_loss appended (1.5635)\n", - "Epoch 1381: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1381: accuracy appended (20.00%)\n", - "Epoch 1381: model set back to train mode\n", - "Epoch 1381: model parameters saved\n", - "Epoch 1382 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1382: avg_loss appended (1.5635)\n", - "Epoch 1382: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1382: accuracy appended (20.00%)\n", - "Epoch 1382: model set back to train mode\n", - "Epoch 1382: model parameters saved\n", - "Epoch 1383 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1383: avg_loss appended (1.5635)\n", - "Epoch 1383: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1383: accuracy appended (20.00%)\n", - "Epoch 1383: model set back to train mode\n", - "Epoch 1383: model parameters saved\n", - "Epoch 1384 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1384: avg_loss appended (1.5635)\n", - "Epoch 1384: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1384: accuracy appended (20.00%)\n", - "Epoch 1384: model set back to train mode\n", - "Epoch 1384: model parameters saved\n", - "Epoch 1385 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1385: avg_loss appended (1.5635)\n", - "Epoch 1385: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1385: accuracy appended (20.00%)\n", - "Epoch 1385: model set back to train mode\n", - "Epoch 1385: model parameters saved\n", - "Epoch 1386 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1386: avg_loss appended (1.5635)\n", - "Epoch 1386: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1386: accuracy appended (20.00%)\n", - "Epoch 1386: model set back to train mode\n", - "Epoch 1386: model parameters saved\n", - "Epoch 1387 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1387: avg_loss appended (1.5635)\n", - "Epoch 1387: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1387: accuracy appended (20.00%)\n", - "Epoch 1387: model set back to train mode\n", - "Epoch 1387: model parameters saved\n", - "Epoch 1388 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1388: avg_loss appended (1.5635)\n", - "Epoch 1388: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1388: accuracy appended (20.00%)\n", - "Epoch 1388: model set back to train mode\n", - "Epoch 1388: model parameters saved\n", - "Epoch 1389 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1389: avg_loss appended (1.5635)\n", - "Epoch 1389: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1389: accuracy appended (20.00%)\n", - "Epoch 1389: model set back to train mode\n", - "Epoch 1389: model parameters saved\n", - "Epoch 1390 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1390: avg_loss appended (1.5635)\n", - "Epoch 1390: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1390: accuracy appended (20.00%)\n", - "Epoch 1390: model set back to train mode\n", - "Epoch 1390: model parameters saved\n", - "Epoch 1391 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1391: avg_loss appended (1.5635)\n", - "Epoch 1391: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1391: accuracy appended (20.00%)\n", - "Epoch 1391: model set back to train mode\n", - "Epoch 1391: model parameters saved\n", - "Epoch 1392 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1392: avg_loss appended (1.5635)\n", - "Epoch 1392: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1392: accuracy appended (20.00%)\n", - "Epoch 1392: model set back to train mode\n", - "Epoch 1392: model parameters saved\n", - "Epoch 1393 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1393: avg_loss appended (1.5635)\n", - "Epoch 1393: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1393: accuracy appended (20.00%)\n", - "Epoch 1393: model set back to train mode\n", - "Epoch 1393: model parameters saved\n", - "Epoch 1394 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1394: avg_loss appended (1.5635)\n", - "Epoch 1394: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1394: accuracy appended (20.00%)\n", - "Epoch 1394: model set back to train mode\n", - "Epoch 1394: model parameters saved\n", - "Epoch 1395 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1395: avg_loss appended (1.5635)\n", - "Epoch 1395: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1395: accuracy appended (20.00%)\n", - "Epoch 1395: model set back to train mode\n", - "Epoch 1395: model parameters saved\n", - "Epoch 1396 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1396: avg_loss appended (1.5635)\n", - "Epoch 1396: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1396: accuracy appended (20.00%)\n", - "Epoch 1396: model set back to train mode\n", - "Epoch 1396: model parameters saved\n", - "Epoch 1397 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1397: avg_loss appended (1.5635)\n", - "Epoch 1397: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1397: accuracy appended (20.00%)\n", - "Epoch 1397: model set back to train mode\n", - "Epoch 1397: model parameters saved\n", - "Epoch 1398 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1398: avg_loss appended (1.5635)\n", - "Epoch 1398: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1398: accuracy appended (20.00%)\n", - "Epoch 1398: model set back to train mode\n", - "Epoch 1398: model parameters saved\n", - "Epoch 1399 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1399: avg_loss appended (1.5635)\n", - "Epoch 1399: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1399: accuracy appended (20.00%)\n", - "Epoch 1399: model set back to train mode\n", - "Epoch 1399: model parameters saved\n", - "Epoch 1400 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1400: avg_loss appended (1.5635)\n", - "Epoch 1400: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1400: accuracy appended (20.00%)\n", - "Epoch 1400: model set back to train mode\n", - "Epoch 1400: model parameters saved\n", - "Epoch 1400/10000, Loss: 1.5635, Accuracy: 20.00%\n", - "Epoch 1401 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1401: avg_loss appended (1.5635)\n", - "Epoch 1401: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1401: accuracy appended (20.00%)\n", - "Epoch 1401: model set back to train mode\n", - "Epoch 1401: model parameters saved\n", - "Epoch 1402 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1402: avg_loss appended (1.5635)\n", - "Epoch 1402: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1402: accuracy appended (20.00%)\n", - "Epoch 1402: model set back to train mode\n", - "Epoch 1402: model parameters saved\n", - "Epoch 1403 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1403: avg_loss appended (1.5635)\n", - "Epoch 1403: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1403: accuracy appended (20.00%)\n", - "Epoch 1403: model set back to train mode\n", - "Epoch 1403: model parameters saved\n", - "Epoch 1404 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1404: avg_loss appended (1.5635)\n", - "Epoch 1404: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1404: accuracy appended (20.00%)\n", - "Epoch 1404: model set back to train mode\n", - "Epoch 1404: model parameters saved\n", - "Epoch 1405 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1405: avg_loss appended (1.5635)\n", - "Epoch 1405: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1405: accuracy appended (20.00%)\n", - "Epoch 1405: model set back to train mode\n", - "Epoch 1405: model parameters saved\n", - "Epoch 1406 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1406: avg_loss appended (1.5635)\n", - "Epoch 1406: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1406: accuracy appended (20.00%)\n", - "Epoch 1406: model set back to train mode\n", - "Epoch 1406: model parameters saved\n", - "Epoch 1407 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5635)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5635)\n", - "Epoch 1407: avg_loss appended (1.5635)\n", - "Epoch 1407: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1407: accuracy appended (20.00%)\n", - "Epoch 1407: model set back to train mode\n", - "Epoch 1407: model parameters saved\n", - "Epoch 1408 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1408: avg_loss appended (1.5634)\n", - "Epoch 1408: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1408: accuracy appended (20.00%)\n", - "Epoch 1408: model set back to train mode\n", - "Epoch 1408: model parameters saved\n", - "Epoch 1409 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1409: avg_loss appended (1.5634)\n", - "Epoch 1409: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1409: accuracy appended (20.00%)\n", - "Epoch 1409: model set back to train mode\n", - "Epoch 1409: model parameters saved\n", - "Epoch 1410 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1410: avg_loss appended (1.5634)\n", - "Epoch 1410: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1410: accuracy appended (20.00%)\n", - "Epoch 1410: model set back to train mode\n", - "Epoch 1410: model parameters saved\n", - "Epoch 1411 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1411: avg_loss appended (1.5634)\n", - "Epoch 1411: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1411: accuracy appended (20.00%)\n", - "Epoch 1411: model set back to train mode\n", - "Epoch 1411: model parameters saved\n", - "Epoch 1412 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1412: avg_loss appended (1.5634)\n", - "Epoch 1412: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1412: accuracy appended (20.00%)\n", - "Epoch 1412: model set back to train mode\n", - "Epoch 1412: model parameters saved\n", - "Epoch 1413 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1413: avg_loss appended (1.5634)\n", - "Epoch 1413: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1413: accuracy appended (20.00%)\n", - "Epoch 1413: model set back to train mode\n", - "Epoch 1413: model parameters saved\n", - "Epoch 1414 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1414: avg_loss appended (1.5634)\n", - "Epoch 1414: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1414: accuracy appended (20.00%)\n", - "Epoch 1414: model set back to train mode\n", - "Epoch 1414: model parameters saved\n", - "Epoch 1415 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1415: avg_loss appended (1.5634)\n", - "Epoch 1415: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1415: accuracy appended (20.00%)\n", - "Epoch 1415: model set back to train mode\n", - "Epoch 1415: model parameters saved\n", - "Epoch 1416 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1416: avg_loss appended (1.5634)\n", - "Epoch 1416: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1416: accuracy appended (20.00%)\n", - "Epoch 1416: model set back to train mode\n", - "Epoch 1416: model parameters saved\n", - "Epoch 1417 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1417: avg_loss appended (1.5634)\n", - "Epoch 1417: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1417: accuracy appended (20.00%)\n", - "Epoch 1417: model set back to train mode\n", - "Epoch 1417: model parameters saved\n", - "Epoch 1418 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1418: avg_loss appended (1.5634)\n", - "Epoch 1418: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1418: accuracy appended (20.00%)\n", - "Epoch 1418: model set back to train mode\n", - "Epoch 1418: model parameters saved\n", - "Epoch 1419 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1419: avg_loss appended (1.5634)\n", - "Epoch 1419: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1419: accuracy appended (20.00%)\n", - "Epoch 1419: model set back to train mode\n", - "Epoch 1419: model parameters saved\n", - "Epoch 1420 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1420: avg_loss appended (1.5634)\n", - "Epoch 1420: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1420: accuracy appended (20.00%)\n", - "Epoch 1420: model set back to train mode\n", - "Epoch 1420: model parameters saved\n", - "Epoch 1421 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1421: avg_loss appended (1.5634)\n", - "Epoch 1421: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1421: accuracy appended (20.00%)\n", - "Epoch 1421: model set back to train mode\n", - "Epoch 1421: model parameters saved\n", - "Epoch 1422 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1422: avg_loss appended (1.5634)\n", - "Epoch 1422: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1422: accuracy appended (20.00%)\n", - "Epoch 1422: model set back to train mode\n", - "Epoch 1422: model parameters saved\n", - "Epoch 1423 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1423: avg_loss appended (1.5634)\n", - "Epoch 1423: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1423: accuracy appended (20.00%)\n", - "Epoch 1423: model set back to train mode\n", - "Epoch 1423: model parameters saved\n", - "Epoch 1424 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1424: avg_loss appended (1.5634)\n", - "Epoch 1424: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1424: accuracy appended (20.00%)\n", - "Epoch 1424: model set back to train mode\n", - "Epoch 1424: model parameters saved\n", - "Epoch 1425 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1425: avg_loss appended (1.5634)\n", - "Epoch 1425: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1425: accuracy appended (20.00%)\n", - "Epoch 1425: model set back to train mode\n", - "Epoch 1425: model parameters saved\n", - "Epoch 1426 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1426: avg_loss appended (1.5634)\n", - "Epoch 1426: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1426: accuracy appended (20.00%)\n", - "Epoch 1426: model set back to train mode\n", - "Epoch 1426: model parameters saved\n", - "Epoch 1427 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1427: avg_loss appended (1.5634)\n", - "Epoch 1427: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1427: accuracy appended (20.00%)\n", - "Epoch 1427: model set back to train mode\n", - "Epoch 1427: model parameters saved\n", - "Epoch 1428 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1428: avg_loss appended (1.5634)\n", - "Epoch 1428: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1428: accuracy appended (20.00%)\n", - "Epoch 1428: model set back to train mode\n", - "Epoch 1428: model parameters saved\n", - "Epoch 1429 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1429: avg_loss appended (1.5634)\n", - "Epoch 1429: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1429: accuracy appended (20.00%)\n", - "Epoch 1429: model set back to train mode\n", - "Epoch 1429: model parameters saved\n", - "Epoch 1430 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1430: avg_loss appended (1.5634)\n", - "Epoch 1430: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1430: accuracy appended (20.00%)\n", - "Epoch 1430: model set back to train mode\n", - "Epoch 1430: model parameters saved\n", - "Epoch 1431 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1431: avg_loss appended (1.5634)\n", - "Epoch 1431: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1431: accuracy appended (20.00%)\n", - "Epoch 1431: model set back to train mode\n", - "Epoch 1431: model parameters saved\n", - "Epoch 1432 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1432: avg_loss appended (1.5634)\n", - "Epoch 1432: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1432: accuracy appended (20.00%)\n", - "Epoch 1432: model set back to train mode\n", - "Epoch 1432: model parameters saved\n", - "Epoch 1433 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1433: avg_loss appended (1.5634)\n", - "Epoch 1433: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1433: accuracy appended (20.00%)\n", - "Epoch 1433: model set back to train mode\n", - "Epoch 1433: model parameters saved\n", - "Epoch 1434 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1434: avg_loss appended (1.5634)\n", - "Epoch 1434: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1434: accuracy appended (20.00%)\n", - "Epoch 1434: model set back to train mode\n", - "Epoch 1434: model parameters saved\n", - "Epoch 1435 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1435: avg_loss appended (1.5634)\n", - "Epoch 1435: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1435: accuracy appended (20.00%)\n", - "Epoch 1435: model set back to train mode\n", - "Epoch 1435: model parameters saved\n", - "Epoch 1436 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1436: avg_loss appended (1.5634)\n", - "Epoch 1436: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1436: accuracy appended (20.00%)\n", - "Epoch 1436: model set back to train mode\n", - "Epoch 1436: model parameters saved\n", - "Epoch 1437 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1437: avg_loss appended (1.5634)\n", - "Epoch 1437: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1437: accuracy appended (20.00%)\n", - "Epoch 1437: model set back to train mode\n", - "Epoch 1437: model parameters saved\n", - "Epoch 1438 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1438: avg_loss appended (1.5634)\n", - "Epoch 1438: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1438: accuracy appended (20.00%)\n", - "Epoch 1438: model set back to train mode\n", - "Epoch 1438: model parameters saved\n", - "Epoch 1439 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1439: avg_loss appended (1.5634)\n", - "Epoch 1439: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1439: accuracy appended (20.00%)\n", - "Epoch 1439: model set back to train mode\n", - "Epoch 1439: model parameters saved\n", - "Epoch 1440 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1440: avg_loss appended (1.5634)\n", - "Epoch 1440: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1440: accuracy appended (20.00%)\n", - "Epoch 1440: model set back to train mode\n", - "Epoch 1440: model parameters saved\n", - "Epoch 1441 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1441: avg_loss appended (1.5634)\n", - "Epoch 1441: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1441: accuracy appended (20.00%)\n", - "Epoch 1441: model set back to train mode\n", - "Epoch 1441: model parameters saved\n", - "Epoch 1442 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1442: avg_loss appended (1.5634)\n", - "Epoch 1442: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1442: accuracy appended (20.00%)\n", - "Epoch 1442: model set back to train mode\n", - "Epoch 1442: model parameters saved\n", - "Epoch 1443 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1443: avg_loss appended (1.5634)\n", - "Epoch 1443: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1443: accuracy appended (20.00%)\n", - "Epoch 1443: model set back to train mode\n", - "Epoch 1443: model parameters saved\n", - "Epoch 1444 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1444: avg_loss appended (1.5634)\n", - "Epoch 1444: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1444: accuracy appended (20.00%)\n", - "Epoch 1444: model set back to train mode\n", - "Epoch 1444: model parameters saved\n", - "Epoch 1445 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1445: avg_loss appended (1.5634)\n", - "Epoch 1445: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1445: accuracy appended (20.00%)\n", - "Epoch 1445: model set back to train mode\n", - "Epoch 1445: model parameters saved\n", - "Epoch 1446 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1446: avg_loss appended (1.5634)\n", - "Epoch 1446: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1446: accuracy appended (20.00%)\n", - "Epoch 1446: model set back to train mode\n", - "Epoch 1446: model parameters saved\n", - "Epoch 1447 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1447: avg_loss appended (1.5634)\n", - "Epoch 1447: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1447: accuracy appended (20.00%)\n", - "Epoch 1447: model set back to train mode\n", - "Epoch 1447: model parameters saved\n", - "Epoch 1448 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1448: avg_loss appended (1.5634)\n", - "Epoch 1448: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1448: accuracy appended (20.00%)\n", - "Epoch 1448: model set back to train mode\n", - "Epoch 1448: model parameters saved\n", - "Epoch 1449 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1449: avg_loss appended (1.5634)\n", - "Epoch 1449: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1449: accuracy appended (20.00%)\n", - "Epoch 1449: model set back to train mode\n", - "Epoch 1449: model parameters saved\n", - "Epoch 1450 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1450: avg_loss appended (1.5634)\n", - "Epoch 1450: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1450: accuracy appended (20.00%)\n", - "Epoch 1450: model set back to train mode\n", - "Epoch 1450: model parameters saved\n", - "Epoch 1451 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1451: avg_loss appended (1.5634)\n", - "Epoch 1451: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1451: accuracy appended (20.00%)\n", - "Epoch 1451: model set back to train mode\n", - "Epoch 1451: model parameters saved\n", - "Epoch 1452 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1452: avg_loss appended (1.5634)\n", - "Epoch 1452: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1452: accuracy appended (20.00%)\n", - "Epoch 1452: model set back to train mode\n", - "Epoch 1452: model parameters saved\n", - "Epoch 1453 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1453: avg_loss appended (1.5634)\n", - "Epoch 1453: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1453: accuracy appended (20.00%)\n", - "Epoch 1453: model set back to train mode\n", - "Epoch 1453: model parameters saved\n", - "Epoch 1454 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1454: avg_loss appended (1.5634)\n", - "Epoch 1454: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1454: accuracy appended (20.00%)\n", - "Epoch 1454: model set back to train mode\n", - "Epoch 1454: model parameters saved\n", - "Epoch 1455 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1455: avg_loss appended (1.5634)\n", - "Epoch 1455: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1455: accuracy appended (20.00%)\n", - "Epoch 1455: model set back to train mode\n", - "Epoch 1455: model parameters saved\n", - "Epoch 1456 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1456: avg_loss appended (1.5634)\n", - "Epoch 1456: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1456: accuracy appended (20.00%)\n", - "Epoch 1456: model set back to train mode\n", - "Epoch 1456: model parameters saved\n", - "Epoch 1457 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1457: avg_loss appended (1.5634)\n", - "Epoch 1457: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1457: accuracy appended (20.00%)\n", - "Epoch 1457: model set back to train mode\n", - "Epoch 1457: model parameters saved\n", - "Epoch 1458 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1458: avg_loss appended (1.5634)\n", - "Epoch 1458: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1458: accuracy appended (20.00%)\n", - "Epoch 1458: model set back to train mode\n", - "Epoch 1458: model parameters saved\n", - "Epoch 1459 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1459: avg_loss appended (1.5634)\n", - "Epoch 1459: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1459: accuracy appended (20.00%)\n", - "Epoch 1459: model set back to train mode\n", - "Epoch 1459: model parameters saved\n", - "Epoch 1460 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1460: avg_loss appended (1.5634)\n", - "Epoch 1460: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1460: accuracy appended (20.00%)\n", - "Epoch 1460: model set back to train mode\n", - "Epoch 1460: model parameters saved\n", - "Epoch 1461 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1461: avg_loss appended (1.5634)\n", - "Epoch 1461: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1461: accuracy appended (20.00%)\n", - "Epoch 1461: model set back to train mode\n", - "Epoch 1461: model parameters saved\n", - "Epoch 1462 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1462: avg_loss appended (1.5634)\n", - "Epoch 1462: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1462: accuracy appended (20.00%)\n", - "Epoch 1462: model set back to train mode\n", - "Epoch 1462: model parameters saved\n", - "Epoch 1463 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1463: avg_loss appended (1.5634)\n", - "Epoch 1463: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1463: accuracy appended (20.00%)\n", - "Epoch 1463: model set back to train mode\n", - "Epoch 1463: model parameters saved\n", - "Epoch 1464 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1464: avg_loss appended (1.5634)\n", - "Epoch 1464: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1464: accuracy appended (20.00%)\n", - "Epoch 1464: model set back to train mode\n", - "Epoch 1464: model parameters saved\n", - "Epoch 1465 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1465: avg_loss appended (1.5634)\n", - "Epoch 1465: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1465: accuracy appended (20.00%)\n", - "Epoch 1465: model set back to train mode\n", - "Epoch 1465: model parameters saved\n", - "Epoch 1466 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1466: avg_loss appended (1.5634)\n", - "Epoch 1466: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1466: accuracy appended (20.00%)\n", - "Epoch 1466: model set back to train mode\n", - "Epoch 1466: model parameters saved\n", - "Epoch 1467 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1467: avg_loss appended (1.5634)\n", - "Epoch 1467: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1467: accuracy appended (20.00%)\n", - "Epoch 1467: model set back to train mode\n", - "Epoch 1467: model parameters saved\n", - "Epoch 1468 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1468: avg_loss appended (1.5634)\n", - "Epoch 1468: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1468: accuracy appended (20.00%)\n", - "Epoch 1468: model set back to train mode\n", - "Epoch 1468: model parameters saved\n", - "Epoch 1469 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1469: avg_loss appended (1.5634)\n", - "Epoch 1469: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1469: accuracy appended (20.00%)\n", - "Epoch 1469: model set back to train mode\n", - "Epoch 1469: model parameters saved\n", - "Epoch 1470 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1470: avg_loss appended (1.5634)\n", - "Epoch 1470: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1470: accuracy appended (20.00%)\n", - "Epoch 1470: model set back to train mode\n", - "Epoch 1470: model parameters saved\n", - "Epoch 1471 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1471: avg_loss appended (1.5634)\n", - "Epoch 1471: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1471: accuracy appended (20.00%)\n", - "Epoch 1471: model set back to train mode\n", - "Epoch 1471: model parameters saved\n", - "Epoch 1472 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1472: avg_loss appended (1.5634)\n", - "Epoch 1472: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1472: accuracy appended (20.00%)\n", - "Epoch 1472: model set back to train mode\n", - "Epoch 1472: model parameters saved\n", - "Epoch 1473 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1473: avg_loss appended (1.5634)\n", - "Epoch 1473: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1473: accuracy appended (20.00%)\n", - "Epoch 1473: model set back to train mode\n", - "Epoch 1473: model parameters saved\n", - "Epoch 1474 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1474: avg_loss appended (1.5634)\n", - "Epoch 1474: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1474: accuracy appended (20.00%)\n", - "Epoch 1474: model set back to train mode\n", - "Epoch 1474: model parameters saved\n", - "Epoch 1475 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1475: avg_loss appended (1.5634)\n", - "Epoch 1475: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1475: accuracy appended (20.00%)\n", - "Epoch 1475: model set back to train mode\n", - "Epoch 1475: model parameters saved\n", - "Epoch 1476 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1476: avg_loss appended (1.5634)\n", - "Epoch 1476: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1476: accuracy appended (20.00%)\n", - "Epoch 1476: model set back to train mode\n", - "Epoch 1476: model parameters saved\n", - "Epoch 1477 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1477: avg_loss appended (1.5634)\n", - "Epoch 1477: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1477: accuracy appended (20.00%)\n", - "Epoch 1477: model set back to train mode\n", - "Epoch 1477: model parameters saved\n", - "Epoch 1478 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1478: avg_loss appended (1.5634)\n", - "Epoch 1478: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1478: accuracy appended (20.00%)\n", - "Epoch 1478: model set back to train mode\n", - "Epoch 1478: model parameters saved\n", - "Epoch 1479 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1479: avg_loss appended (1.5634)\n", - "Epoch 1479: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1479: accuracy appended (20.00%)\n", - "Epoch 1479: model set back to train mode\n", - "Epoch 1479: model parameters saved\n", - "Epoch 1480 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1480: avg_loss appended (1.5634)\n", - "Epoch 1480: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1480: accuracy appended (20.00%)\n", - "Epoch 1480: model set back to train mode\n", - "Epoch 1480: model parameters saved\n", - "Epoch 1481 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1481: avg_loss appended (1.5634)\n", - "Epoch 1481: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1481: accuracy appended (20.00%)\n", - "Epoch 1481: model set back to train mode\n", - "Epoch 1481: model parameters saved\n", - "Epoch 1482 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1482: avg_loss appended (1.5634)\n", - "Epoch 1482: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1482: accuracy appended (20.00%)\n", - "Epoch 1482: model set back to train mode\n", - "Epoch 1482: model parameters saved\n", - "Epoch 1483 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1483: avg_loss appended (1.5634)\n", - "Epoch 1483: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1483: accuracy appended (20.00%)\n", - "Epoch 1483: model set back to train mode\n", - "Epoch 1483: model parameters saved\n", - "Epoch 1484 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1484: avg_loss appended (1.5634)\n", - "Epoch 1484: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1484: accuracy appended (20.00%)\n", - "Epoch 1484: model set back to train mode\n", - "Epoch 1484: model parameters saved\n", - "Epoch 1485 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1485: avg_loss appended (1.5634)\n", - "Epoch 1485: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1485: accuracy appended (20.00%)\n", - "Epoch 1485: model set back to train mode\n", - "Epoch 1485: model parameters saved\n", - "Epoch 1486 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1486: avg_loss appended (1.5634)\n", - "Epoch 1486: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1486: accuracy appended (20.00%)\n", - "Epoch 1486: model set back to train mode\n", - "Epoch 1486: model parameters saved\n", - "Epoch 1487 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1487: avg_loss appended (1.5634)\n", - "Epoch 1487: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1487: accuracy appended (20.00%)\n", - "Epoch 1487: model set back to train mode\n", - "Epoch 1487: model parameters saved\n", - "Epoch 1488 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1488: avg_loss appended (1.5634)\n", - "Epoch 1488: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1488: accuracy appended (20.00%)\n", - "Epoch 1488: model set back to train mode\n", - "Epoch 1488: model parameters saved\n", - "Epoch 1489 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1489: avg_loss appended (1.5634)\n", - "Epoch 1489: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1489: accuracy appended (20.00%)\n", - "Epoch 1489: model set back to train mode\n", - "Epoch 1489: model parameters saved\n", - "Epoch 1490 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1490: avg_loss appended (1.5634)\n", - "Epoch 1490: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1490: accuracy appended (20.00%)\n", - "Epoch 1490: model set back to train mode\n", - "Epoch 1490: model parameters saved\n", - "Epoch 1491 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1491: avg_loss appended (1.5634)\n", - "Epoch 1491: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1491: accuracy appended (20.00%)\n", - "Epoch 1491: model set back to train mode\n", - "Epoch 1491: model parameters saved\n", - "Epoch 1492 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1492: avg_loss appended (1.5634)\n", - "Epoch 1492: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1492: accuracy appended (20.00%)\n", - "Epoch 1492: model set back to train mode\n", - "Epoch 1492: model parameters saved\n", - "Epoch 1493 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1493: avg_loss appended (1.5634)\n", - "Epoch 1493: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1493: accuracy appended (20.00%)\n", - "Epoch 1493: model set back to train mode\n", - "Epoch 1493: model parameters saved\n", - "Epoch 1494 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1494: avg_loss appended (1.5634)\n", - "Epoch 1494: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1494: accuracy appended (20.00%)\n", - "Epoch 1494: model set back to train mode\n", - "Epoch 1494: model parameters saved\n", - "Epoch 1495 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1495: avg_loss appended (1.5634)\n", - "Epoch 1495: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1495: accuracy appended (20.00%)\n", - "Epoch 1495: model set back to train mode\n", - "Epoch 1495: model parameters saved\n", - "Epoch 1496 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1496: avg_loss appended (1.5634)\n", - "Epoch 1496: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1496: accuracy appended (20.00%)\n", - "Epoch 1496: model set back to train mode\n", - "Epoch 1496: model parameters saved\n", - "Epoch 1497 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1497: avg_loss appended (1.5634)\n", - "Epoch 1497: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1497: accuracy appended (20.00%)\n", - "Epoch 1497: model set back to train mode\n", - "Epoch 1497: model parameters saved\n", - "Epoch 1498 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1498: avg_loss appended (1.5634)\n", - "Epoch 1498: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1498: accuracy appended (20.00%)\n", - "Epoch 1498: model set back to train mode\n", - "Epoch 1498: model parameters saved\n", - "Epoch 1499 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1499: avg_loss appended (1.5634)\n", - "Epoch 1499: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1499: accuracy appended (20.00%)\n", - "Epoch 1499: model set back to train mode\n", - "Epoch 1499: model parameters saved\n", - "Epoch 1500 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1500: avg_loss appended (1.5634)\n", - "Epoch 1500: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1500: accuracy appended (20.00%)\n", - "Epoch 1500: model set back to train mode\n", - "Epoch 1500: model parameters saved\n", - "Epoch 1500/10000, Loss: 1.5634, Accuracy: 20.00%\n", - "Epoch 1501 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1501: avg_loss appended (1.5634)\n", - "Epoch 1501: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1501: accuracy appended (20.00%)\n", - "Epoch 1501: model set back to train mode\n", - "Epoch 1501: model parameters saved\n", - "Epoch 1502 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1502: avg_loss appended (1.5634)\n", - "Epoch 1502: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1502: accuracy appended (20.00%)\n", - "Epoch 1502: model set back to train mode\n", - "Epoch 1502: model parameters saved\n", - "Epoch 1503 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1503: avg_loss appended (1.5634)\n", - "Epoch 1503: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1503: accuracy appended (20.00%)\n", - "Epoch 1503: model set back to train mode\n", - "Epoch 1503: model parameters saved\n", - "Epoch 1504 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1504: avg_loss appended (1.5634)\n", - "Epoch 1504: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1504: accuracy appended (20.00%)\n", - "Epoch 1504: model set back to train mode\n", - "Epoch 1504: model parameters saved\n", - "Epoch 1505 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1505: avg_loss appended (1.5634)\n", - "Epoch 1505: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1505: accuracy appended (20.00%)\n", - "Epoch 1505: model set back to train mode\n", - "Epoch 1505: model parameters saved\n", - "Epoch 1506 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1506: avg_loss appended (1.5634)\n", - "Epoch 1506: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1506: accuracy appended (20.00%)\n", - "Epoch 1506: model set back to train mode\n", - "Epoch 1506: model parameters saved\n", - "Epoch 1507 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1507: avg_loss appended (1.5634)\n", - "Epoch 1507: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1507: accuracy appended (20.00%)\n", - "Epoch 1507: model set back to train mode\n", - "Epoch 1507: model parameters saved\n", - "Epoch 1508 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1508: avg_loss appended (1.5634)\n", - "Epoch 1508: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1508: accuracy appended (20.00%)\n", - "Epoch 1508: model set back to train mode\n", - "Epoch 1508: model parameters saved\n", - "Epoch 1509 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1509: avg_loss appended (1.5634)\n", - "Epoch 1509: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1509: accuracy appended (20.00%)\n", - "Epoch 1509: model set back to train mode\n", - "Epoch 1509: model parameters saved\n", - "Epoch 1510 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1510: avg_loss appended (1.5634)\n", - "Epoch 1510: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1510: accuracy appended (20.00%)\n", - "Epoch 1510: model set back to train mode\n", - "Epoch 1510: model parameters saved\n", - "Epoch 1511 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1511: avg_loss appended (1.5634)\n", - "Epoch 1511: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1511: accuracy appended (20.00%)\n", - "Epoch 1511: model set back to train mode\n", - "Epoch 1511: model parameters saved\n", - "Epoch 1512 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1512: avg_loss appended (1.5634)\n", - "Epoch 1512: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1512: accuracy appended (20.00%)\n", - "Epoch 1512: model set back to train mode\n", - "Epoch 1512: model parameters saved\n", - "Epoch 1513 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1513: avg_loss appended (1.5634)\n", - "Epoch 1513: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1513: accuracy appended (20.00%)\n", - "Epoch 1513: model set back to train mode\n", - "Epoch 1513: model parameters saved\n", - "Epoch 1514 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1514: avg_loss appended (1.5634)\n", - "Epoch 1514: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1514: accuracy appended (20.00%)\n", - "Epoch 1514: model set back to train mode\n", - "Epoch 1514: model parameters saved\n", - "Epoch 1515 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1515: avg_loss appended (1.5634)\n", - "Epoch 1515: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1515: accuracy appended (20.00%)\n", - "Epoch 1515: model set back to train mode\n", - "Epoch 1515: model parameters saved\n", - "Epoch 1516 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1516: avg_loss appended (1.5634)\n", - "Epoch 1516: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1516: accuracy appended (20.00%)\n", - "Epoch 1516: model set back to train mode\n", - "Epoch 1516: model parameters saved\n", - "Epoch 1517 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1517: avg_loss appended (1.5634)\n", - "Epoch 1517: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1517: accuracy appended (20.00%)\n", - "Epoch 1517: model set back to train mode\n", - "Epoch 1517: model parameters saved\n", - "Epoch 1518 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1518: avg_loss appended (1.5634)\n", - "Epoch 1518: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1518: accuracy appended (20.00%)\n", - "Epoch 1518: model set back to train mode\n", - "Epoch 1518: model parameters saved\n", - "Epoch 1519 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1519: avg_loss appended (1.5634)\n", - "Epoch 1519: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1519: accuracy appended (20.00%)\n", - "Epoch 1519: model set back to train mode\n", - "Epoch 1519: model parameters saved\n", - "Epoch 1520 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1520: avg_loss appended (1.5634)\n", - "Epoch 1520: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1520: accuracy appended (20.00%)\n", - "Epoch 1520: model set back to train mode\n", - "Epoch 1520: model parameters saved\n", - "Epoch 1521 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1521: avg_loss appended (1.5634)\n", - "Epoch 1521: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1521: accuracy appended (20.00%)\n", - "Epoch 1521: model set back to train mode\n", - "Epoch 1521: model parameters saved\n", - "Epoch 1522 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1522: avg_loss appended (1.5634)\n", - "Epoch 1522: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1522: accuracy appended (20.00%)\n", - "Epoch 1522: model set back to train mode\n", - "Epoch 1522: model parameters saved\n", - "Epoch 1523 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1523: avg_loss appended (1.5634)\n", - "Epoch 1523: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1523: accuracy appended (20.00%)\n", - "Epoch 1523: model set back to train mode\n", - "Epoch 1523: model parameters saved\n", - "Epoch 1524 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1524: avg_loss appended (1.5634)\n", - "Epoch 1524: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1524: accuracy appended (20.00%)\n", - "Epoch 1524: model set back to train mode\n", - "Epoch 1524: model parameters saved\n", - "Epoch 1525 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1525: avg_loss appended (1.5634)\n", - "Epoch 1525: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1525: accuracy appended (20.00%)\n", - "Epoch 1525: model set back to train mode\n", - "Epoch 1525: model parameters saved\n", - "Epoch 1526 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1526: avg_loss appended (1.5634)\n", - "Epoch 1526: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1526: accuracy appended (20.00%)\n", - "Epoch 1526: model set back to train mode\n", - "Epoch 1526: model parameters saved\n", - "Epoch 1527 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1527: avg_loss appended (1.5634)\n", - "Epoch 1527: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1527: accuracy appended (20.00%)\n", - "Epoch 1527: model set back to train mode\n", - "Epoch 1527: model parameters saved\n", - "Epoch 1528 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1528: avg_loss appended (1.5634)\n", - "Epoch 1528: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1528: accuracy appended (20.00%)\n", - "Epoch 1528: model set back to train mode\n", - "Epoch 1528: model parameters saved\n", - "Epoch 1529 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1529: avg_loss appended (1.5634)\n", - "Epoch 1529: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1529: accuracy appended (20.00%)\n", - "Epoch 1529: model set back to train mode\n", - "Epoch 1529: model parameters saved\n", - "Epoch 1530 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1530: avg_loss appended (1.5634)\n", - "Epoch 1530: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1530: accuracy appended (20.00%)\n", - "Epoch 1530: model set back to train mode\n", - "Epoch 1530: model parameters saved\n", - "Epoch 1531 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1531: avg_loss appended (1.5634)\n", - "Epoch 1531: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1531: accuracy appended (20.00%)\n", - "Epoch 1531: model set back to train mode\n", - "Epoch 1531: model parameters saved\n", - "Epoch 1532 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1532: avg_loss appended (1.5634)\n", - "Epoch 1532: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1532: accuracy appended (20.00%)\n", - "Epoch 1532: model set back to train mode\n", - "Epoch 1532: model parameters saved\n", - "Epoch 1533 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1533: avg_loss appended (1.5634)\n", - "Epoch 1533: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1533: accuracy appended (20.00%)\n", - "Epoch 1533: model set back to train mode\n", - "Epoch 1533: model parameters saved\n", - "Epoch 1534 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1534: avg_loss appended (1.5634)\n", - "Epoch 1534: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1534: accuracy appended (20.00%)\n", - "Epoch 1534: model set back to train mode\n", - "Epoch 1534: model parameters saved\n", - "Epoch 1535 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1535: avg_loss appended (1.5634)\n", - "Epoch 1535: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1535: accuracy appended (20.00%)\n", - "Epoch 1535: model set back to train mode\n", - "Epoch 1535: model parameters saved\n", - "Epoch 1536 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1536: avg_loss appended (1.5634)\n", - "Epoch 1536: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1536: accuracy appended (20.00%)\n", - "Epoch 1536: model set back to train mode\n", - "Epoch 1536: model parameters saved\n", - "Epoch 1537 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1537: avg_loss appended (1.5634)\n", - "Epoch 1537: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1537: accuracy appended (20.00%)\n", - "Epoch 1537: model set back to train mode\n", - "Epoch 1537: model parameters saved\n", - "Epoch 1538 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1538: avg_loss appended (1.5634)\n", - "Epoch 1538: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1538: accuracy appended (20.00%)\n", - "Epoch 1538: model set back to train mode\n", - "Epoch 1538: model parameters saved\n", - "Epoch 1539 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1539: avg_loss appended (1.5634)\n", - "Epoch 1539: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1539: accuracy appended (20.00%)\n", - "Epoch 1539: model set back to train mode\n", - "Epoch 1539: model parameters saved\n", - "Epoch 1540 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1540: avg_loss appended (1.5634)\n", - "Epoch 1540: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1540: accuracy appended (20.00%)\n", - "Epoch 1540: model set back to train mode\n", - "Epoch 1540: model parameters saved\n", - "Epoch 1541 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1541: avg_loss appended (1.5634)\n", - "Epoch 1541: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1541: accuracy appended (20.00%)\n", - "Epoch 1541: model set back to train mode\n", - "Epoch 1541: model parameters saved\n", - "Epoch 1542 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1542: avg_loss appended (1.5634)\n", - "Epoch 1542: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1542: accuracy appended (20.00%)\n", - "Epoch 1542: model set back to train mode\n", - "Epoch 1542: model parameters saved\n", - "Epoch 1543 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1543: avg_loss appended (1.5634)\n", - "Epoch 1543: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1543: accuracy appended (20.00%)\n", - "Epoch 1543: model set back to train mode\n", - "Epoch 1543: model parameters saved\n", - "Epoch 1544 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1544: avg_loss appended (1.5634)\n", - "Epoch 1544: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1544: accuracy appended (20.00%)\n", - "Epoch 1544: model set back to train mode\n", - "Epoch 1544: model parameters saved\n", - "Epoch 1545 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1545: avg_loss appended (1.5634)\n", - "Epoch 1545: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1545: accuracy appended (20.00%)\n", - "Epoch 1545: model set back to train mode\n", - "Epoch 1545: model parameters saved\n", - "Epoch 1546 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1546: avg_loss appended (1.5634)\n", - "Epoch 1546: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1546: accuracy appended (20.00%)\n", - "Epoch 1546: model set back to train mode\n", - "Epoch 1546: model parameters saved\n", - "Epoch 1547 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1547: avg_loss appended (1.5634)\n", - "Epoch 1547: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1547: accuracy appended (20.00%)\n", - "Epoch 1547: model set back to train mode\n", - "Epoch 1547: model parameters saved\n", - "Epoch 1548 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1548: avg_loss appended (1.5634)\n", - "Epoch 1548: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1548: accuracy appended (20.00%)\n", - "Epoch 1548: model set back to train mode\n", - "Epoch 1548: model parameters saved\n", - "Epoch 1549 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1549: avg_loss appended (1.5634)\n", - "Epoch 1549: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1549: accuracy appended (20.00%)\n", - "Epoch 1549: model set back to train mode\n", - "Epoch 1549: model parameters saved\n", - "Epoch 1550 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1550: avg_loss appended (1.5634)\n", - "Epoch 1550: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1550: accuracy appended (20.00%)\n", - "Epoch 1550: model set back to train mode\n", - "Epoch 1550: model parameters saved\n", - "Epoch 1551 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1551: avg_loss appended (1.5634)\n", - "Epoch 1551: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1551: accuracy appended (20.00%)\n", - "Epoch 1551: model set back to train mode\n", - "Epoch 1551: model parameters saved\n", - "Epoch 1552 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1552: avg_loss appended (1.5634)\n", - "Epoch 1552: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1552: accuracy appended (20.00%)\n", - "Epoch 1552: model set back to train mode\n", - "Epoch 1552: model parameters saved\n", - "Epoch 1553 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1553: avg_loss appended (1.5634)\n", - "Epoch 1553: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1553: accuracy appended (20.00%)\n", - "Epoch 1553: model set back to train mode\n", - "Epoch 1553: model parameters saved\n", - "Epoch 1554 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5634)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5634)\n", - "Epoch 1554: avg_loss appended (1.5634)\n", - "Epoch 1554: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1554: accuracy appended (20.00%)\n", - "Epoch 1554: model set back to train mode\n", - "Epoch 1554: model parameters saved\n", - "Epoch 1555 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1555: avg_loss appended (1.5633)\n", - "Epoch 1555: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1555: accuracy appended (20.00%)\n", - "Epoch 1555: model set back to train mode\n", - "Epoch 1555: model parameters saved\n", - "Epoch 1556 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1556: avg_loss appended (1.5633)\n", - "Epoch 1556: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1556: accuracy appended (20.00%)\n", - "Epoch 1556: model set back to train mode\n", - "Epoch 1556: model parameters saved\n", - "Epoch 1557 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1557: avg_loss appended (1.5633)\n", - "Epoch 1557: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1557: accuracy appended (20.00%)\n", - "Epoch 1557: model set back to train mode\n", - "Epoch 1557: model parameters saved\n", - "Epoch 1558 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1558: avg_loss appended (1.5633)\n", - "Epoch 1558: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1558: accuracy appended (20.00%)\n", - "Epoch 1558: model set back to train mode\n", - "Epoch 1558: model parameters saved\n", - "Epoch 1559 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1559: avg_loss appended (1.5633)\n", - "Epoch 1559: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1559: accuracy appended (20.00%)\n", - "Epoch 1559: model set back to train mode\n", - "Epoch 1559: model parameters saved\n", - "Epoch 1560 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1560: avg_loss appended (1.5633)\n", - "Epoch 1560: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1560: accuracy appended (20.00%)\n", - "Epoch 1560: model set back to train mode\n", - "Epoch 1560: model parameters saved\n", - "Epoch 1561 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1561: avg_loss appended (1.5633)\n", - "Epoch 1561: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1561: accuracy appended (20.00%)\n", - "Epoch 1561: model set back to train mode\n", - "Epoch 1561: model parameters saved\n", - "Epoch 1562 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1562: avg_loss appended (1.5633)\n", - "Epoch 1562: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1562: accuracy appended (20.00%)\n", - "Epoch 1562: model set back to train mode\n", - "Epoch 1562: model parameters saved\n", - "Epoch 1563 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1563: avg_loss appended (1.5633)\n", - "Epoch 1563: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1563: accuracy appended (20.00%)\n", - "Epoch 1563: model set back to train mode\n", - "Epoch 1563: model parameters saved\n", - "Epoch 1564 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1564: avg_loss appended (1.5633)\n", - "Epoch 1564: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1564: accuracy appended (20.00%)\n", - "Epoch 1564: model set back to train mode\n", - "Epoch 1564: model parameters saved\n", - "Epoch 1565 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1565: avg_loss appended (1.5633)\n", - "Epoch 1565: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1565: accuracy appended (20.00%)\n", - "Epoch 1565: model set back to train mode\n", - "Epoch 1565: model parameters saved\n", - "Epoch 1566 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1566: avg_loss appended (1.5633)\n", - "Epoch 1566: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1566: accuracy appended (20.00%)\n", - "Epoch 1566: model set back to train mode\n", - "Epoch 1566: model parameters saved\n", - "Epoch 1567 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1567: avg_loss appended (1.5633)\n", - "Epoch 1567: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1567: accuracy appended (20.00%)\n", - "Epoch 1567: model set back to train mode\n", - "Epoch 1567: model parameters saved\n", - "Epoch 1568 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1568: avg_loss appended (1.5633)\n", - "Epoch 1568: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1568: accuracy appended (20.00%)\n", - "Epoch 1568: model set back to train mode\n", - "Epoch 1568: model parameters saved\n", - "Epoch 1569 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1569: avg_loss appended (1.5633)\n", - "Epoch 1569: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1569: accuracy appended (20.00%)\n", - "Epoch 1569: model set back to train mode\n", - "Epoch 1569: model parameters saved\n", - "Epoch 1570 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1570: avg_loss appended (1.5633)\n", - "Epoch 1570: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1570: accuracy appended (20.00%)\n", - "Epoch 1570: model set back to train mode\n", - "Epoch 1570: model parameters saved\n", - "Epoch 1571 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1571: avg_loss appended (1.5633)\n", - "Epoch 1571: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1571: accuracy appended (20.00%)\n", - "Epoch 1571: model set back to train mode\n", - "Epoch 1571: model parameters saved\n", - "Epoch 1572 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1572: avg_loss appended (1.5633)\n", - "Epoch 1572: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1572: accuracy appended (20.00%)\n", - "Epoch 1572: model set back to train mode\n", - "Epoch 1572: model parameters saved\n", - "Epoch 1573 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1573: avg_loss appended (1.5633)\n", - "Epoch 1573: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1573: accuracy appended (20.00%)\n", - "Epoch 1573: model set back to train mode\n", - "Epoch 1573: model parameters saved\n", - "Epoch 1574 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1574: avg_loss appended (1.5633)\n", - "Epoch 1574: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1574: accuracy appended (20.00%)\n", - "Epoch 1574: model set back to train mode\n", - "Epoch 1574: model parameters saved\n", - "Epoch 1575 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1575: avg_loss appended (1.5633)\n", - "Epoch 1575: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1575: accuracy appended (20.00%)\n", - "Epoch 1575: model set back to train mode\n", - "Epoch 1575: model parameters saved\n", - "Epoch 1576 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1576: avg_loss appended (1.5633)\n", - "Epoch 1576: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1576: accuracy appended (20.00%)\n", - "Epoch 1576: model set back to train mode\n", - "Epoch 1576: model parameters saved\n", - "Epoch 1577 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1577: avg_loss appended (1.5633)\n", - "Epoch 1577: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1577: accuracy appended (20.00%)\n", - "Epoch 1577: model set back to train mode\n", - "Epoch 1577: model parameters saved\n", - "Epoch 1578 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1578: avg_loss appended (1.5633)\n", - "Epoch 1578: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1578: accuracy appended (20.00%)\n", - "Epoch 1578: model set back to train mode\n", - "Epoch 1578: model parameters saved\n", - "Epoch 1579 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1579: avg_loss appended (1.5633)\n", - "Epoch 1579: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1579: accuracy appended (20.00%)\n", - "Epoch 1579: model set back to train mode\n", - "Epoch 1579: model parameters saved\n", - "Epoch 1580 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1580: avg_loss appended (1.5633)\n", - "Epoch 1580: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1580: accuracy appended (20.00%)\n", - "Epoch 1580: model set back to train mode\n", - "Epoch 1580: model parameters saved\n", - "Epoch 1581 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1581: avg_loss appended (1.5633)\n", - "Epoch 1581: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1581: accuracy appended (20.00%)\n", - "Epoch 1581: model set back to train mode\n", - "Epoch 1581: model parameters saved\n", - "Epoch 1582 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1582: avg_loss appended (1.5633)\n", - "Epoch 1582: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1582: accuracy appended (20.00%)\n", - "Epoch 1582: model set back to train mode\n", - "Epoch 1582: model parameters saved\n", - "Epoch 1583 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1583: avg_loss appended (1.5633)\n", - "Epoch 1583: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1583: accuracy appended (20.00%)\n", - "Epoch 1583: model set back to train mode\n", - "Epoch 1583: model parameters saved\n", - "Epoch 1584 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1584: avg_loss appended (1.5633)\n", - "Epoch 1584: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1584: accuracy appended (20.00%)\n", - "Epoch 1584: model set back to train mode\n", - "Epoch 1584: model parameters saved\n", - "Epoch 1585 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1585: avg_loss appended (1.5633)\n", - "Epoch 1585: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1585: accuracy appended (20.00%)\n", - "Epoch 1585: model set back to train mode\n", - "Epoch 1585: model parameters saved\n", - "Epoch 1586 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1586: avg_loss appended (1.5633)\n", - "Epoch 1586: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1586: accuracy appended (20.00%)\n", - "Epoch 1586: model set back to train mode\n", - "Epoch 1586: model parameters saved\n", - "Epoch 1587 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1587: avg_loss appended (1.5633)\n", - "Epoch 1587: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1587: accuracy appended (20.00%)\n", - "Epoch 1587: model set back to train mode\n", - "Epoch 1587: model parameters saved\n", - "Epoch 1588 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1588: avg_loss appended (1.5633)\n", - "Epoch 1588: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1588: accuracy appended (20.00%)\n", - "Epoch 1588: model set back to train mode\n", - "Epoch 1588: model parameters saved\n", - "Epoch 1589 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1589: avg_loss appended (1.5633)\n", - "Epoch 1589: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1589: accuracy appended (20.00%)\n", - "Epoch 1589: model set back to train mode\n", - "Epoch 1589: model parameters saved\n", - "Epoch 1590 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1590: avg_loss appended (1.5633)\n", - "Epoch 1590: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1590: accuracy appended (20.00%)\n", - "Epoch 1590: model set back to train mode\n", - "Epoch 1590: model parameters saved\n", - "Epoch 1591 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1591: avg_loss appended (1.5633)\n", - "Epoch 1591: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1591: accuracy appended (20.00%)\n", - "Epoch 1591: model set back to train mode\n", - "Epoch 1591: model parameters saved\n", - "Epoch 1592 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1592: avg_loss appended (1.5633)\n", - "Epoch 1592: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1592: accuracy appended (20.00%)\n", - "Epoch 1592: model set back to train mode\n", - "Epoch 1592: model parameters saved\n", - "Epoch 1593 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1593: avg_loss appended (1.5633)\n", - "Epoch 1593: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1593: accuracy appended (20.00%)\n", - "Epoch 1593: model set back to train mode\n", - "Epoch 1593: model parameters saved\n", - "Epoch 1594 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1594: avg_loss appended (1.5633)\n", - "Epoch 1594: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1594: accuracy appended (20.00%)\n", - "Epoch 1594: model set back to train mode\n", - "Epoch 1594: model parameters saved\n", - "Epoch 1595 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1595: avg_loss appended (1.5633)\n", - "Epoch 1595: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1595: accuracy appended (20.00%)\n", - "Epoch 1595: model set back to train mode\n", - "Epoch 1595: model parameters saved\n", - "Epoch 1596 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1596: avg_loss appended (1.5633)\n", - "Epoch 1596: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1596: accuracy appended (20.00%)\n", - "Epoch 1596: model set back to train mode\n", - "Epoch 1596: model parameters saved\n", - "Epoch 1597 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1597: avg_loss appended (1.5633)\n", - "Epoch 1597: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1597: accuracy appended (20.00%)\n", - "Epoch 1597: model set back to train mode\n", - "Epoch 1597: model parameters saved\n", - "Epoch 1598 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1598: avg_loss appended (1.5633)\n", - "Epoch 1598: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1598: accuracy appended (20.00%)\n", - "Epoch 1598: model set back to train mode\n", - "Epoch 1598: model parameters saved\n", - "Epoch 1599 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1599: avg_loss appended (1.5633)\n", - "Epoch 1599: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1599: accuracy appended (20.00%)\n", - "Epoch 1599: model set back to train mode\n", - "Epoch 1599: model parameters saved\n", - "Epoch 1600 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1600: avg_loss appended (1.5633)\n", - "Epoch 1600: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1600: accuracy appended (20.00%)\n", - "Epoch 1600: model set back to train mode\n", - "Epoch 1600: model parameters saved\n", - "Epoch 1600/10000, Loss: 1.5633, Accuracy: 20.00%\n", - "Epoch 1601 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1601: avg_loss appended (1.5633)\n", - "Epoch 1601: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1601: accuracy appended (20.00%)\n", - "Epoch 1601: model set back to train mode\n", - "Epoch 1601: model parameters saved\n", - "Epoch 1602 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1602: avg_loss appended (1.5633)\n", - "Epoch 1602: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1602: accuracy appended (20.00%)\n", - "Epoch 1602: model set back to train mode\n", - "Epoch 1602: model parameters saved\n", - "Epoch 1603 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1603: avg_loss appended (1.5633)\n", - "Epoch 1603: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1603: accuracy appended (20.00%)\n", - "Epoch 1603: model set back to train mode\n", - "Epoch 1603: model parameters saved\n", - "Epoch 1604 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1604: avg_loss appended (1.5633)\n", - "Epoch 1604: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1604: accuracy appended (20.00%)\n", - "Epoch 1604: model set back to train mode\n", - "Epoch 1604: model parameters saved\n", - "Epoch 1605 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1605: avg_loss appended (1.5633)\n", - "Epoch 1605: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1605: accuracy appended (20.00%)\n", - "Epoch 1605: model set back to train mode\n", - "Epoch 1605: model parameters saved\n", - "Epoch 1606 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1606: avg_loss appended (1.5633)\n", - "Epoch 1606: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1606: accuracy appended (20.00%)\n", - "Epoch 1606: model set back to train mode\n", - "Epoch 1606: model parameters saved\n", - "Epoch 1607 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1607: avg_loss appended (1.5633)\n", - "Epoch 1607: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1607: accuracy appended (20.00%)\n", - "Epoch 1607: model set back to train mode\n", - "Epoch 1607: model parameters saved\n", - "Epoch 1608 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1608: avg_loss appended (1.5633)\n", - "Epoch 1608: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1608: accuracy appended (20.00%)\n", - "Epoch 1608: model set back to train mode\n", - "Epoch 1608: model parameters saved\n", - "Epoch 1609 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1609: avg_loss appended (1.5633)\n", - "Epoch 1609: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1609: accuracy appended (20.00%)\n", - "Epoch 1609: model set back to train mode\n", - "Epoch 1609: model parameters saved\n", - "Epoch 1610 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1610: avg_loss appended (1.5633)\n", - "Epoch 1610: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1610: accuracy appended (20.00%)\n", - "Epoch 1610: model set back to train mode\n", - "Epoch 1610: model parameters saved\n", - "Epoch 1611 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1611: avg_loss appended (1.5633)\n", - "Epoch 1611: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1611: accuracy appended (20.00%)\n", - "Epoch 1611: model set back to train mode\n", - "Epoch 1611: model parameters saved\n", - "Epoch 1612 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1612: avg_loss appended (1.5633)\n", - "Epoch 1612: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1612: accuracy appended (20.00%)\n", - "Epoch 1612: model set back to train mode\n", - "Epoch 1612: model parameters saved\n", - "Epoch 1613 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1613: avg_loss appended (1.5633)\n", - "Epoch 1613: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1613: accuracy appended (20.00%)\n", - "Epoch 1613: model set back to train mode\n", - "Epoch 1613: model parameters saved\n", - "Epoch 1614 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1614: avg_loss appended (1.5633)\n", - "Epoch 1614: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1614: accuracy appended (20.00%)\n", - "Epoch 1614: model set back to train mode\n", - "Epoch 1614: model parameters saved\n", - "Epoch 1615 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1615: avg_loss appended (1.5633)\n", - "Epoch 1615: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1615: accuracy appended (20.00%)\n", - "Epoch 1615: model set back to train mode\n", - "Epoch 1615: model parameters saved\n", - "Epoch 1616 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1616: avg_loss appended (1.5633)\n", - "Epoch 1616: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1616: accuracy appended (20.00%)\n", - "Epoch 1616: model set back to train mode\n", - "Epoch 1616: model parameters saved\n", - "Epoch 1617 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1617: avg_loss appended (1.5633)\n", - "Epoch 1617: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1617: accuracy appended (20.00%)\n", - "Epoch 1617: model set back to train mode\n", - "Epoch 1617: model parameters saved\n", - "Epoch 1618 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1618: avg_loss appended (1.5633)\n", - "Epoch 1618: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1618: accuracy appended (20.00%)\n", - "Epoch 1618: model set back to train mode\n", - "Epoch 1618: model parameters saved\n", - "Epoch 1619 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1619: avg_loss appended (1.5633)\n", - "Epoch 1619: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1619: accuracy appended (20.00%)\n", - "Epoch 1619: model set back to train mode\n", - "Epoch 1619: model parameters saved\n", - "Epoch 1620 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1620: avg_loss appended (1.5633)\n", - "Epoch 1620: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1620: accuracy appended (20.00%)\n", - "Epoch 1620: model set back to train mode\n", - "Epoch 1620: model parameters saved\n", - "Epoch 1621 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1621: avg_loss appended (1.5633)\n", - "Epoch 1621: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1621: accuracy appended (20.00%)\n", - "Epoch 1621: model set back to train mode\n", - "Epoch 1621: model parameters saved\n", - "Epoch 1622 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1622: avg_loss appended (1.5633)\n", - "Epoch 1622: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1622: accuracy appended (20.00%)\n", - "Epoch 1622: model set back to train mode\n", - "Epoch 1622: model parameters saved\n", - "Epoch 1623 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1623: avg_loss appended (1.5633)\n", - "Epoch 1623: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1623: accuracy appended (20.00%)\n", - "Epoch 1623: model set back to train mode\n", - "Epoch 1623: model parameters saved\n", - "Epoch 1624 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1624: avg_loss appended (1.5633)\n", - "Epoch 1624: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1624: accuracy appended (20.00%)\n", - "Epoch 1624: model set back to train mode\n", - "Epoch 1624: model parameters saved\n", - "Epoch 1625 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1625: avg_loss appended (1.5633)\n", - "Epoch 1625: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1625: accuracy appended (20.00%)\n", - "Epoch 1625: model set back to train mode\n", - "Epoch 1625: model parameters saved\n", - "Epoch 1626 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1626: avg_loss appended (1.5633)\n", - "Epoch 1626: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1626: accuracy appended (20.00%)\n", - "Epoch 1626: model set back to train mode\n", - "Epoch 1626: model parameters saved\n", - "Epoch 1627 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1627: avg_loss appended (1.5633)\n", - "Epoch 1627: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1627: accuracy appended (20.00%)\n", - "Epoch 1627: model set back to train mode\n", - "Epoch 1627: model parameters saved\n", - "Epoch 1628 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1628: avg_loss appended (1.5633)\n", - "Epoch 1628: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1628: accuracy appended (20.00%)\n", - "Epoch 1628: model set back to train mode\n", - "Epoch 1628: model parameters saved\n", - "Epoch 1629 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1629: avg_loss appended (1.5633)\n", - "Epoch 1629: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1629: accuracy appended (20.00%)\n", - "Epoch 1629: model set back to train mode\n", - "Epoch 1629: model parameters saved\n", - "Epoch 1630 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1630: avg_loss appended (1.5633)\n", - "Epoch 1630: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1630: accuracy appended (20.00%)\n", - "Epoch 1630: model set back to train mode\n", - "Epoch 1630: model parameters saved\n", - "Epoch 1631 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1631: avg_loss appended (1.5633)\n", - "Epoch 1631: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1631: accuracy appended (20.00%)\n", - "Epoch 1631: model set back to train mode\n", - "Epoch 1631: model parameters saved\n", - "Epoch 1632 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1632: avg_loss appended (1.5633)\n", - "Epoch 1632: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1632: accuracy appended (20.00%)\n", - "Epoch 1632: model set back to train mode\n", - "Epoch 1632: model parameters saved\n", - "Epoch 1633 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1633: avg_loss appended (1.5633)\n", - "Epoch 1633: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1633: accuracy appended (20.00%)\n", - "Epoch 1633: model set back to train mode\n", - "Epoch 1633: model parameters saved\n", - "Epoch 1634 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1634: avg_loss appended (1.5633)\n", - "Epoch 1634: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1634: accuracy appended (20.00%)\n", - "Epoch 1634: model set back to train mode\n", - "Epoch 1634: model parameters saved\n", - "Epoch 1635 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1635: avg_loss appended (1.5633)\n", - "Epoch 1635: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1635: accuracy appended (20.00%)\n", - "Epoch 1635: model set back to train mode\n", - "Epoch 1635: model parameters saved\n", - "Epoch 1636 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1636: avg_loss appended (1.5633)\n", - "Epoch 1636: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1636: accuracy appended (20.00%)\n", - "Epoch 1636: model set back to train mode\n", - "Epoch 1636: model parameters saved\n", - "Epoch 1637 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1637: avg_loss appended (1.5633)\n", - "Epoch 1637: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1637: accuracy appended (20.00%)\n", - "Epoch 1637: model set back to train mode\n", - "Epoch 1637: model parameters saved\n", - "Epoch 1638 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1638: avg_loss appended (1.5633)\n", - "Epoch 1638: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1638: accuracy appended (20.00%)\n", - "Epoch 1638: model set back to train mode\n", - "Epoch 1638: model parameters saved\n", - "Epoch 1639 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1639: avg_loss appended (1.5633)\n", - "Epoch 1639: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1639: accuracy appended (20.00%)\n", - "Epoch 1639: model set back to train mode\n", - "Epoch 1639: model parameters saved\n", - "Epoch 1640 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1640: avg_loss appended (1.5633)\n", - "Epoch 1640: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1640: accuracy appended (20.00%)\n", - "Epoch 1640: model set back to train mode\n", - "Epoch 1640: model parameters saved\n", - "Epoch 1641 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1641: avg_loss appended (1.5633)\n", - "Epoch 1641: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1641: accuracy appended (20.00%)\n", - "Epoch 1641: model set back to train mode\n", - "Epoch 1641: model parameters saved\n", - "Epoch 1642 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1642: avg_loss appended (1.5633)\n", - "Epoch 1642: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1642: accuracy appended (20.00%)\n", - "Epoch 1642: model set back to train mode\n", - "Epoch 1642: model parameters saved\n", - "Epoch 1643 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1643: avg_loss appended (1.5633)\n", - "Epoch 1643: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1643: accuracy appended (20.00%)\n", - "Epoch 1643: model set back to train mode\n", - "Epoch 1643: model parameters saved\n", - "Epoch 1644 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1644: avg_loss appended (1.5633)\n", - "Epoch 1644: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1644: accuracy appended (20.00%)\n", - "Epoch 1644: model set back to train mode\n", - "Epoch 1644: model parameters saved\n", - "Epoch 1645 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1645: avg_loss appended (1.5633)\n", - "Epoch 1645: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1645: accuracy appended (20.00%)\n", - "Epoch 1645: model set back to train mode\n", - "Epoch 1645: model parameters saved\n", - "Epoch 1646 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1646: avg_loss appended (1.5633)\n", - "Epoch 1646: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1646: accuracy appended (20.00%)\n", - "Epoch 1646: model set back to train mode\n", - "Epoch 1646: model parameters saved\n", - "Epoch 1647 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1647: avg_loss appended (1.5633)\n", - "Epoch 1647: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1647: accuracy appended (20.00%)\n", - "Epoch 1647: model set back to train mode\n", - "Epoch 1647: model parameters saved\n", - "Epoch 1648 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1648: avg_loss appended (1.5633)\n", - "Epoch 1648: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1648: accuracy appended (20.00%)\n", - "Epoch 1648: model set back to train mode\n", - "Epoch 1648: model parameters saved\n", - "Epoch 1649 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1649: avg_loss appended (1.5633)\n", - "Epoch 1649: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1649: accuracy appended (20.00%)\n", - "Epoch 1649: model set back to train mode\n", - "Epoch 1649: model parameters saved\n", - "Epoch 1650 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1650: avg_loss appended (1.5633)\n", - "Epoch 1650: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1650: accuracy appended (20.00%)\n", - "Epoch 1650: model set back to train mode\n", - "Epoch 1650: model parameters saved\n", - "Epoch 1651 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1651: avg_loss appended (1.5633)\n", - "Epoch 1651: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1651: accuracy appended (20.00%)\n", - "Epoch 1651: model set back to train mode\n", - "Epoch 1651: model parameters saved\n", - "Epoch 1652 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1652: avg_loss appended (1.5633)\n", - "Epoch 1652: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1652: accuracy appended (20.00%)\n", - "Epoch 1652: model set back to train mode\n", - "Epoch 1652: model parameters saved\n", - "Epoch 1653 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1653: avg_loss appended (1.5633)\n", - "Epoch 1653: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1653: accuracy appended (20.00%)\n", - "Epoch 1653: model set back to train mode\n", - "Epoch 1653: model parameters saved\n", - "Epoch 1654 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1654: avg_loss appended (1.5633)\n", - "Epoch 1654: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1654: accuracy appended (20.00%)\n", - "Epoch 1654: model set back to train mode\n", - "Epoch 1654: model parameters saved\n", - "Epoch 1655 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1655: avg_loss appended (1.5633)\n", - "Epoch 1655: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1655: accuracy appended (20.00%)\n", - "Epoch 1655: model set back to train mode\n", - "Epoch 1655: model parameters saved\n", - "Epoch 1656 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1656: avg_loss appended (1.5633)\n", - "Epoch 1656: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1656: accuracy appended (20.00%)\n", - "Epoch 1656: model set back to train mode\n", - "Epoch 1656: model parameters saved\n", - "Epoch 1657 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1657: avg_loss appended (1.5633)\n", - "Epoch 1657: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1657: accuracy appended (20.00%)\n", - "Epoch 1657: model set back to train mode\n", - "Epoch 1657: model parameters saved\n", - "Epoch 1658 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1658: avg_loss appended (1.5633)\n", - "Epoch 1658: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1658: accuracy appended (20.00%)\n", - "Epoch 1658: model set back to train mode\n", - "Epoch 1658: model parameters saved\n", - "Epoch 1659 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1659: avg_loss appended (1.5633)\n", - "Epoch 1659: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1659: accuracy appended (20.00%)\n", - "Epoch 1659: model set back to train mode\n", - "Epoch 1659: model parameters saved\n", - "Epoch 1660 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1660: avg_loss appended (1.5633)\n", - "Epoch 1660: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1660: accuracy appended (20.00%)\n", - "Epoch 1660: model set back to train mode\n", - "Epoch 1660: model parameters saved\n", - "Epoch 1661 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1661: avg_loss appended (1.5633)\n", - "Epoch 1661: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1661: accuracy appended (20.00%)\n", - "Epoch 1661: model set back to train mode\n", - "Epoch 1661: model parameters saved\n", - "Epoch 1662 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1662: avg_loss appended (1.5633)\n", - "Epoch 1662: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1662: accuracy appended (20.00%)\n", - "Epoch 1662: model set back to train mode\n", - "Epoch 1662: model parameters saved\n", - "Epoch 1663 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1663: avg_loss appended (1.5633)\n", - "Epoch 1663: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1663: accuracy appended (20.00%)\n", - "Epoch 1663: model set back to train mode\n", - "Epoch 1663: model parameters saved\n", - "Epoch 1664 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1664: avg_loss appended (1.5633)\n", - "Epoch 1664: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1664: accuracy appended (20.00%)\n", - "Epoch 1664: model set back to train mode\n", - "Epoch 1664: model parameters saved\n", - "Epoch 1665 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1665: avg_loss appended (1.5633)\n", - "Epoch 1665: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1665: accuracy appended (20.00%)\n", - "Epoch 1665: model set back to train mode\n", - "Epoch 1665: model parameters saved\n", - "Epoch 1666 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1666: avg_loss appended (1.5633)\n", - "Epoch 1666: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1666: accuracy appended (20.00%)\n", - "Epoch 1666: model set back to train mode\n", - "Epoch 1666: model parameters saved\n", - "Epoch 1667 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1667: avg_loss appended (1.5633)\n", - "Epoch 1667: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1667: accuracy appended (20.00%)\n", - "Epoch 1667: model set back to train mode\n", - "Epoch 1667: model parameters saved\n", - "Epoch 1668 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1668: avg_loss appended (1.5633)\n", - "Epoch 1668: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1668: accuracy appended (20.00%)\n", - "Epoch 1668: model set back to train mode\n", - "Epoch 1668: model parameters saved\n", - "Epoch 1669 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1669: avg_loss appended (1.5633)\n", - "Epoch 1669: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1669: accuracy appended (20.00%)\n", - "Epoch 1669: model set back to train mode\n", - "Epoch 1669: model parameters saved\n", - "Epoch 1670 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1670: avg_loss appended (1.5633)\n", - "Epoch 1670: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1670: accuracy appended (20.00%)\n", - "Epoch 1670: model set back to train mode\n", - "Epoch 1670: model parameters saved\n", - "Epoch 1671 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1671: avg_loss appended (1.5633)\n", - "Epoch 1671: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1671: accuracy appended (20.00%)\n", - "Epoch 1671: model set back to train mode\n", - "Epoch 1671: model parameters saved\n", - "Epoch 1672 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1672: avg_loss appended (1.5633)\n", - "Epoch 1672: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1672: accuracy appended (20.00%)\n", - "Epoch 1672: model set back to train mode\n", - "Epoch 1672: model parameters saved\n", - "Epoch 1673 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1673: avg_loss appended (1.5633)\n", - "Epoch 1673: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1673: accuracy appended (20.00%)\n", - "Epoch 1673: model set back to train mode\n", - "Epoch 1673: model parameters saved\n", - "Epoch 1674 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1674: avg_loss appended (1.5633)\n", - "Epoch 1674: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1674: accuracy appended (20.00%)\n", - "Epoch 1674: model set back to train mode\n", - "Epoch 1674: model parameters saved\n", - "Epoch 1675 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1675: avg_loss appended (1.5633)\n", - "Epoch 1675: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1675: accuracy appended (20.00%)\n", - "Epoch 1675: model set back to train mode\n", - "Epoch 1675: model parameters saved\n", - "Epoch 1676 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1676: avg_loss appended (1.5633)\n", - "Epoch 1676: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1676: accuracy appended (20.00%)\n", - "Epoch 1676: model set back to train mode\n", - "Epoch 1676: model parameters saved\n", - "Epoch 1677 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1677: avg_loss appended (1.5633)\n", - "Epoch 1677: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1677: accuracy appended (20.00%)\n", - "Epoch 1677: model set back to train mode\n", - "Epoch 1677: model parameters saved\n", - "Epoch 1678 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1678: avg_loss appended (1.5633)\n", - "Epoch 1678: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1678: accuracy appended (20.00%)\n", - "Epoch 1678: model set back to train mode\n", - "Epoch 1678: model parameters saved\n", - "Epoch 1679 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1679: avg_loss appended (1.5633)\n", - "Epoch 1679: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1679: accuracy appended (20.00%)\n", - "Epoch 1679: model set back to train mode\n", - "Epoch 1679: model parameters saved\n", - "Epoch 1680 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1680: avg_loss appended (1.5633)\n", - "Epoch 1680: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1680: accuracy appended (20.00%)\n", - "Epoch 1680: model set back to train mode\n", - "Epoch 1680: model parameters saved\n", - "Epoch 1681 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1681: avg_loss appended (1.5633)\n", - "Epoch 1681: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1681: accuracy appended (20.00%)\n", - "Epoch 1681: model set back to train mode\n", - "Epoch 1681: model parameters saved\n", - "Epoch 1682 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1682: avg_loss appended (1.5633)\n", - "Epoch 1682: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1682: accuracy appended (20.00%)\n", - "Epoch 1682: model set back to train mode\n", - "Epoch 1682: model parameters saved\n", - "Epoch 1683 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1683: avg_loss appended (1.5633)\n", - "Epoch 1683: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1683: accuracy appended (20.00%)\n", - "Epoch 1683: model set back to train mode\n", - "Epoch 1683: model parameters saved\n", - "Epoch 1684 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1684: avg_loss appended (1.5633)\n", - "Epoch 1684: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1684: accuracy appended (20.00%)\n", - "Epoch 1684: model set back to train mode\n", - "Epoch 1684: model parameters saved\n", - "Epoch 1685 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1685: avg_loss appended (1.5633)\n", - "Epoch 1685: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1685: accuracy appended (20.00%)\n", - "Epoch 1685: model set back to train mode\n", - "Epoch 1685: model parameters saved\n", - "Epoch 1686 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1686: avg_loss appended (1.5633)\n", - "Epoch 1686: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1686: accuracy appended (20.00%)\n", - "Epoch 1686: model set back to train mode\n", - "Epoch 1686: model parameters saved\n", - "Epoch 1687 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1687: avg_loss appended (1.5633)\n", - "Epoch 1687: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1687: accuracy appended (20.00%)\n", - "Epoch 1687: model set back to train mode\n", - "Epoch 1687: model parameters saved\n", - "Epoch 1688 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1688: avg_loss appended (1.5633)\n", - "Epoch 1688: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1688: accuracy appended (20.00%)\n", - "Epoch 1688: model set back to train mode\n", - "Epoch 1688: model parameters saved\n", - "Epoch 1689 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1689: avg_loss appended (1.5633)\n", - "Epoch 1689: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1689: accuracy appended (20.00%)\n", - "Epoch 1689: model set back to train mode\n", - "Epoch 1689: model parameters saved\n", - "Epoch 1690 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1690: avg_loss appended (1.5633)\n", - "Epoch 1690: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1690: accuracy appended (20.00%)\n", - "Epoch 1690: model set back to train mode\n", - "Epoch 1690: model parameters saved\n", - "Epoch 1691 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1691: avg_loss appended (1.5633)\n", - "Epoch 1691: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1691: accuracy appended (20.00%)\n", - "Epoch 1691: model set back to train mode\n", - "Epoch 1691: model parameters saved\n", - "Epoch 1692 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1692: avg_loss appended (1.5633)\n", - "Epoch 1692: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1692: accuracy appended (20.00%)\n", - "Epoch 1692: model set back to train mode\n", - "Epoch 1692: model parameters saved\n", - "Epoch 1693 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1693: avg_loss appended (1.5633)\n", - "Epoch 1693: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1693: accuracy appended (20.00%)\n", - "Epoch 1693: model set back to train mode\n", - "Epoch 1693: model parameters saved\n", - "Epoch 1694 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1694: avg_loss appended (1.5633)\n", - "Epoch 1694: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1694: accuracy appended (20.00%)\n", - "Epoch 1694: model set back to train mode\n", - "Epoch 1694: model parameters saved\n", - "Epoch 1695 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1695: avg_loss appended (1.5633)\n", - "Epoch 1695: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1695: accuracy appended (20.00%)\n", - "Epoch 1695: model set back to train mode\n", - "Epoch 1695: model parameters saved\n", - "Epoch 1696 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1696: avg_loss appended (1.5633)\n", - "Epoch 1696: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1696: accuracy appended (20.00%)\n", - "Epoch 1696: model set back to train mode\n", - "Epoch 1696: model parameters saved\n", - "Epoch 1697 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1697: avg_loss appended (1.5633)\n", - "Epoch 1697: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1697: accuracy appended (20.00%)\n", - "Epoch 1697: model set back to train mode\n", - "Epoch 1697: model parameters saved\n", - "Epoch 1698 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1698: avg_loss appended (1.5633)\n", - "Epoch 1698: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1698: accuracy appended (20.00%)\n", - "Epoch 1698: model set back to train mode\n", - "Epoch 1698: model parameters saved\n", - "Epoch 1699 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1699: avg_loss appended (1.5633)\n", - "Epoch 1699: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1699: accuracy appended (20.00%)\n", - "Epoch 1699: model set back to train mode\n", - "Epoch 1699: model parameters saved\n", - "Epoch 1700 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1700: avg_loss appended (1.5633)\n", - "Epoch 1700: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1700: accuracy appended (20.00%)\n", - "Epoch 1700: model set back to train mode\n", - "Epoch 1700: model parameters saved\n", - "Epoch 1700/10000, Loss: 1.5633, Accuracy: 20.00%\n", - "Epoch 1701 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1701: avg_loss appended (1.5633)\n", - "Epoch 1701: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1701: accuracy appended (20.00%)\n", - "Epoch 1701: model set back to train mode\n", - "Epoch 1701: model parameters saved\n", - "Epoch 1702 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1702: avg_loss appended (1.5633)\n", - "Epoch 1702: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1702: accuracy appended (20.00%)\n", - "Epoch 1702: model set back to train mode\n", - "Epoch 1702: model parameters saved\n", - "Epoch 1703 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1703: avg_loss appended (1.5633)\n", - "Epoch 1703: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1703: accuracy appended (20.00%)\n", - "Epoch 1703: model set back to train mode\n", - "Epoch 1703: model parameters saved\n", - "Epoch 1704 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1704: avg_loss appended (1.5633)\n", - "Epoch 1704: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1704: accuracy appended (20.00%)\n", - "Epoch 1704: model set back to train mode\n", - "Epoch 1704: model parameters saved\n", - "Epoch 1705 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1705: avg_loss appended (1.5633)\n", - "Epoch 1705: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1705: accuracy appended (20.00%)\n", - "Epoch 1705: model set back to train mode\n", - "Epoch 1705: model parameters saved\n", - "Epoch 1706 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1706: avg_loss appended (1.5633)\n", - "Epoch 1706: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1706: accuracy appended (20.00%)\n", - "Epoch 1706: model set back to train mode\n", - "Epoch 1706: model parameters saved\n", - "Epoch 1707 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1707: avg_loss appended (1.5633)\n", - "Epoch 1707: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1707: accuracy appended (20.00%)\n", - "Epoch 1707: model set back to train mode\n", - "Epoch 1707: model parameters saved\n", - "Epoch 1708 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1708: avg_loss appended (1.5633)\n", - "Epoch 1708: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1708: accuracy appended (20.00%)\n", - "Epoch 1708: model set back to train mode\n", - "Epoch 1708: model parameters saved\n", - "Epoch 1709 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1709: avg_loss appended (1.5633)\n", - "Epoch 1709: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1709: accuracy appended (20.00%)\n", - "Epoch 1709: model set back to train mode\n", - "Epoch 1709: model parameters saved\n", - "Epoch 1710 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1710: avg_loss appended (1.5633)\n", - "Epoch 1710: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1710: accuracy appended (20.00%)\n", - "Epoch 1710: model set back to train mode\n", - "Epoch 1710: model parameters saved\n", - "Epoch 1711 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1711: avg_loss appended (1.5633)\n", - "Epoch 1711: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1711: accuracy appended (20.00%)\n", - "Epoch 1711: model set back to train mode\n", - "Epoch 1711: model parameters saved\n", - "Epoch 1712 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1712: avg_loss appended (1.5633)\n", - "Epoch 1712: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1712: accuracy appended (20.00%)\n", - "Epoch 1712: model set back to train mode\n", - "Epoch 1712: model parameters saved\n", - "Epoch 1713 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1713: avg_loss appended (1.5633)\n", - "Epoch 1713: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1713: accuracy appended (20.00%)\n", - "Epoch 1713: model set back to train mode\n", - "Epoch 1713: model parameters saved\n", - "Epoch 1714 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1714: avg_loss appended (1.5633)\n", - "Epoch 1714: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1714: accuracy appended (20.00%)\n", - "Epoch 1714: model set back to train mode\n", - "Epoch 1714: model parameters saved\n", - "Epoch 1715 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1715: avg_loss appended (1.5633)\n", - "Epoch 1715: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1715: accuracy appended (20.00%)\n", - "Epoch 1715: model set back to train mode\n", - "Epoch 1715: model parameters saved\n", - "Epoch 1716 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1716: avg_loss appended (1.5633)\n", - "Epoch 1716: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1716: accuracy appended (20.00%)\n", - "Epoch 1716: model set back to train mode\n", - "Epoch 1716: model parameters saved\n", - "Epoch 1717 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1717: avg_loss appended (1.5633)\n", - "Epoch 1717: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1717: accuracy appended (20.00%)\n", - "Epoch 1717: model set back to train mode\n", - "Epoch 1717: model parameters saved\n", - "Epoch 1718 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1718: avg_loss appended (1.5633)\n", - "Epoch 1718: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1718: accuracy appended (20.00%)\n", - "Epoch 1718: model set back to train mode\n", - "Epoch 1718: model parameters saved\n", - "Epoch 1719 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1719: avg_loss appended (1.5633)\n", - "Epoch 1719: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1719: accuracy appended (20.00%)\n", - "Epoch 1719: model set back to train mode\n", - "Epoch 1719: model parameters saved\n", - "Epoch 1720 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1720: avg_loss appended (1.5633)\n", - "Epoch 1720: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1720: accuracy appended (20.00%)\n", - "Epoch 1720: model set back to train mode\n", - "Epoch 1720: model parameters saved\n", - "Epoch 1721 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1721: avg_loss appended (1.5633)\n", - "Epoch 1721: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1721: accuracy appended (20.00%)\n", - "Epoch 1721: model set back to train mode\n", - "Epoch 1721: model parameters saved\n", - "Epoch 1722 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1722: avg_loss appended (1.5633)\n", - "Epoch 1722: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1722: accuracy appended (20.00%)\n", - "Epoch 1722: model set back to train mode\n", - "Epoch 1722: model parameters saved\n", - "Epoch 1723 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1723: avg_loss appended (1.5633)\n", - "Epoch 1723: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1723: accuracy appended (20.00%)\n", - "Epoch 1723: model set back to train mode\n", - "Epoch 1723: model parameters saved\n", - "Epoch 1724 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1724: avg_loss appended (1.5633)\n", - "Epoch 1724: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1724: accuracy appended (20.00%)\n", - "Epoch 1724: model set back to train mode\n", - "Epoch 1724: model parameters saved\n", - "Epoch 1725 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1725: avg_loss appended (1.5633)\n", - "Epoch 1725: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1725: accuracy appended (20.00%)\n", - "Epoch 1725: model set back to train mode\n", - "Epoch 1725: model parameters saved\n", - "Epoch 1726 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1726: avg_loss appended (1.5633)\n", - "Epoch 1726: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1726: accuracy appended (20.00%)\n", - "Epoch 1726: model set back to train mode\n", - "Epoch 1726: model parameters saved\n", - "Epoch 1727 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1727: avg_loss appended (1.5633)\n", - "Epoch 1727: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1727: accuracy appended (20.00%)\n", - "Epoch 1727: model set back to train mode\n", - "Epoch 1727: model parameters saved\n", - "Epoch 1728 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1728: avg_loss appended (1.5633)\n", - "Epoch 1728: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1728: accuracy appended (20.00%)\n", - "Epoch 1728: model set back to train mode\n", - "Epoch 1728: model parameters saved\n", - "Epoch 1729 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1729: avg_loss appended (1.5633)\n", - "Epoch 1729: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1729: accuracy appended (20.00%)\n", - "Epoch 1729: model set back to train mode\n", - "Epoch 1729: model parameters saved\n", - "Epoch 1730 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1730: avg_loss appended (1.5633)\n", - "Epoch 1730: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1730: accuracy appended (20.00%)\n", - "Epoch 1730: model set back to train mode\n", - "Epoch 1730: model parameters saved\n", - "Epoch 1731 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1731: avg_loss appended (1.5633)\n", - "Epoch 1731: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1731: accuracy appended (20.00%)\n", - "Epoch 1731: model set back to train mode\n", - "Epoch 1731: model parameters saved\n", - "Epoch 1732 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1732: avg_loss appended (1.5633)\n", - "Epoch 1732: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1732: accuracy appended (20.00%)\n", - "Epoch 1732: model set back to train mode\n", - "Epoch 1732: model parameters saved\n", - "Epoch 1733 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1733: avg_loss appended (1.5633)\n", - "Epoch 1733: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1733: accuracy appended (20.00%)\n", - "Epoch 1733: model set back to train mode\n", - "Epoch 1733: model parameters saved\n", - "Epoch 1734 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1734: avg_loss appended (1.5633)\n", - "Epoch 1734: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1734: accuracy appended (20.00%)\n", - "Epoch 1734: model set back to train mode\n", - "Epoch 1734: model parameters saved\n", - "Epoch 1735 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1735: avg_loss appended (1.5633)\n", - "Epoch 1735: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1735: accuracy appended (20.00%)\n", - "Epoch 1735: model set back to train mode\n", - "Epoch 1735: model parameters saved\n", - "Epoch 1736 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1736: avg_loss appended (1.5633)\n", - "Epoch 1736: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1736: accuracy appended (20.00%)\n", - "Epoch 1736: model set back to train mode\n", - "Epoch 1736: model parameters saved\n", - "Epoch 1737 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1737: avg_loss appended (1.5633)\n", - "Epoch 1737: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1737: accuracy appended (20.00%)\n", - "Epoch 1737: model set back to train mode\n", - "Epoch 1737: model parameters saved\n", - "Epoch 1738 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1738: avg_loss appended (1.5633)\n", - "Epoch 1738: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1738: accuracy appended (20.00%)\n", - "Epoch 1738: model set back to train mode\n", - "Epoch 1738: model parameters saved\n", - "Epoch 1739 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1739: avg_loss appended (1.5633)\n", - "Epoch 1739: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1739: accuracy appended (20.00%)\n", - "Epoch 1739: model set back to train mode\n", - "Epoch 1739: model parameters saved\n", - "Epoch 1740 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1740: avg_loss appended (1.5633)\n", - "Epoch 1740: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1740: accuracy appended (20.00%)\n", - "Epoch 1740: model set back to train mode\n", - "Epoch 1740: model parameters saved\n", - "Epoch 1741 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1741: avg_loss appended (1.5633)\n", - "Epoch 1741: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1741: accuracy appended (20.00%)\n", - "Epoch 1741: model set back to train mode\n", - "Epoch 1741: model parameters saved\n", - "Epoch 1742 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1742: avg_loss appended (1.5633)\n", - "Epoch 1742: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1742: accuracy appended (20.00%)\n", - "Epoch 1742: model set back to train mode\n", - "Epoch 1742: model parameters saved\n", - "Epoch 1743 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1743: avg_loss appended (1.5633)\n", - "Epoch 1743: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1743: accuracy appended (20.00%)\n", - "Epoch 1743: model set back to train mode\n", - "Epoch 1743: model parameters saved\n", - "Epoch 1744 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1744: avg_loss appended (1.5633)\n", - "Epoch 1744: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1744: accuracy appended (20.00%)\n", - "Epoch 1744: model set back to train mode\n", - "Epoch 1744: model parameters saved\n", - "Epoch 1745 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1745: avg_loss appended (1.5633)\n", - "Epoch 1745: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1745: accuracy appended (20.00%)\n", - "Epoch 1745: model set back to train mode\n", - "Epoch 1745: model parameters saved\n", - "Epoch 1746 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1746: avg_loss appended (1.5633)\n", - "Epoch 1746: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1746: accuracy appended (20.00%)\n", - "Epoch 1746: model set back to train mode\n", - "Epoch 1746: model parameters saved\n", - "Epoch 1747 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1747: avg_loss appended (1.5633)\n", - "Epoch 1747: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1747: accuracy appended (20.00%)\n", - "Epoch 1747: model set back to train mode\n", - "Epoch 1747: model parameters saved\n", - "Epoch 1748 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5633)\n", - "Epoch 1748: avg_loss appended (1.5633)\n", - "Epoch 1748: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1748: accuracy appended (20.00%)\n", - "Epoch 1748: model set back to train mode\n", - "Epoch 1748: model parameters saved\n", - "Epoch 1749 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1749: avg_loss appended (1.5632)\n", - "Epoch 1749: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1749: accuracy appended (20.00%)\n", - "Epoch 1749: model set back to train mode\n", - "Epoch 1749: model parameters saved\n", - "Epoch 1750 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1750: avg_loss appended (1.5632)\n", - "Epoch 1750: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1750: accuracy appended (20.00%)\n", - "Epoch 1750: model set back to train mode\n", - "Epoch 1750: model parameters saved\n", - "Epoch 1751 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1751: avg_loss appended (1.5632)\n", - "Epoch 1751: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1751: accuracy appended (20.00%)\n", - "Epoch 1751: model set back to train mode\n", - "Epoch 1751: model parameters saved\n", - "Epoch 1752 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1752: avg_loss appended (1.5632)\n", - "Epoch 1752: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1752: accuracy appended (20.00%)\n", - "Epoch 1752: model set back to train mode\n", - "Epoch 1752: model parameters saved\n", - "Epoch 1753 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1753: avg_loss appended (1.5632)\n", - "Epoch 1753: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1753: accuracy appended (20.00%)\n", - "Epoch 1753: model set back to train mode\n", - "Epoch 1753: model parameters saved\n", - "Epoch 1754 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1754: avg_loss appended (1.5632)\n", - "Epoch 1754: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1754: accuracy appended (20.00%)\n", - "Epoch 1754: model set back to train mode\n", - "Epoch 1754: model parameters saved\n", - "Epoch 1755 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1755: avg_loss appended (1.5632)\n", - "Epoch 1755: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1755: accuracy appended (20.00%)\n", - "Epoch 1755: model set back to train mode\n", - "Epoch 1755: model parameters saved\n", - "Epoch 1756 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1756: avg_loss appended (1.5632)\n", - "Epoch 1756: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1756: accuracy appended (20.00%)\n", - "Epoch 1756: model set back to train mode\n", - "Epoch 1756: model parameters saved\n", - "Epoch 1757 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1757: avg_loss appended (1.5632)\n", - "Epoch 1757: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1757: accuracy appended (20.00%)\n", - "Epoch 1757: model set back to train mode\n", - "Epoch 1757: model parameters saved\n", - "Epoch 1758 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1758: avg_loss appended (1.5632)\n", - "Epoch 1758: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1758: accuracy appended (20.00%)\n", - "Epoch 1758: model set back to train mode\n", - "Epoch 1758: model parameters saved\n", - "Epoch 1759 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1759: avg_loss appended (1.5632)\n", - "Epoch 1759: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1759: accuracy appended (20.00%)\n", - "Epoch 1759: model set back to train mode\n", - "Epoch 1759: model parameters saved\n", - "Epoch 1760 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1760: avg_loss appended (1.5632)\n", - "Epoch 1760: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1760: accuracy appended (20.00%)\n", - "Epoch 1760: model set back to train mode\n", - "Epoch 1760: model parameters saved\n", - "Epoch 1761 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1761: avg_loss appended (1.5632)\n", - "Epoch 1761: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1761: accuracy appended (20.00%)\n", - "Epoch 1761: model set back to train mode\n", - "Epoch 1761: model parameters saved\n", - "Epoch 1762 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1762: avg_loss appended (1.5632)\n", - "Epoch 1762: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1762: accuracy appended (20.00%)\n", - "Epoch 1762: model set back to train mode\n", - "Epoch 1762: model parameters saved\n", - "Epoch 1763 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1763: avg_loss appended (1.5632)\n", - "Epoch 1763: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1763: accuracy appended (20.00%)\n", - "Epoch 1763: model set back to train mode\n", - "Epoch 1763: model parameters saved\n", - "Epoch 1764 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1764: avg_loss appended (1.5632)\n", - "Epoch 1764: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1764: accuracy appended (20.00%)\n", - "Epoch 1764: model set back to train mode\n", - "Epoch 1764: model parameters saved\n", - "Epoch 1765 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1765: avg_loss appended (1.5632)\n", - "Epoch 1765: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1765: accuracy appended (20.00%)\n", - "Epoch 1765: model set back to train mode\n", - "Epoch 1765: model parameters saved\n", - "Epoch 1766 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1766: avg_loss appended (1.5632)\n", - "Epoch 1766: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1766: accuracy appended (20.00%)\n", - "Epoch 1766: model set back to train mode\n", - "Epoch 1766: model parameters saved\n", - "Epoch 1767 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1767: avg_loss appended (1.5632)\n", - "Epoch 1767: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1767: accuracy appended (20.00%)\n", - "Epoch 1767: model set back to train mode\n", - "Epoch 1767: model parameters saved\n", - "Epoch 1768 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1768: avg_loss appended (1.5632)\n", - "Epoch 1768: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1768: accuracy appended (20.00%)\n", - "Epoch 1768: model set back to train mode\n", - "Epoch 1768: model parameters saved\n", - "Epoch 1769 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1769: avg_loss appended (1.5632)\n", - "Epoch 1769: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1769: accuracy appended (20.00%)\n", - "Epoch 1769: model set back to train mode\n", - "Epoch 1769: model parameters saved\n", - "Epoch 1770 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1770: avg_loss appended (1.5632)\n", - "Epoch 1770: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1770: accuracy appended (20.00%)\n", - "Epoch 1770: model set back to train mode\n", - "Epoch 1770: model parameters saved\n", - "Epoch 1771 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1771: avg_loss appended (1.5632)\n", - "Epoch 1771: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1771: accuracy appended (20.00%)\n", - "Epoch 1771: model set back to train mode\n", - "Epoch 1771: model parameters saved\n", - "Epoch 1772 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1772: avg_loss appended (1.5632)\n", - "Epoch 1772: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1772: accuracy appended (20.00%)\n", - "Epoch 1772: model set back to train mode\n", - "Epoch 1772: model parameters saved\n", - "Epoch 1773 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1773: avg_loss appended (1.5632)\n", - "Epoch 1773: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1773: accuracy appended (20.00%)\n", - "Epoch 1773: model set back to train mode\n", - "Epoch 1773: model parameters saved\n", - "Epoch 1774 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1774: avg_loss appended (1.5632)\n", - "Epoch 1774: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1774: accuracy appended (20.00%)\n", - "Epoch 1774: model set back to train mode\n", - "Epoch 1774: model parameters saved\n", - "Epoch 1775 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1775: avg_loss appended (1.5632)\n", - "Epoch 1775: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1775: accuracy appended (20.00%)\n", - "Epoch 1775: model set back to train mode\n", - "Epoch 1775: model parameters saved\n", - "Epoch 1776 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1776: avg_loss appended (1.5632)\n", - "Epoch 1776: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1776: accuracy appended (20.00%)\n", - "Epoch 1776: model set back to train mode\n", - "Epoch 1776: model parameters saved\n", - "Epoch 1777 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1777: avg_loss appended (1.5632)\n", - "Epoch 1777: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1777: accuracy appended (20.00%)\n", - "Epoch 1777: model set back to train mode\n", - "Epoch 1777: model parameters saved\n", - "Epoch 1778 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1778: avg_loss appended (1.5632)\n", - "Epoch 1778: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1778: accuracy appended (20.00%)\n", - "Epoch 1778: model set back to train mode\n", - "Epoch 1778: model parameters saved\n", - "Epoch 1779 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1779: avg_loss appended (1.5632)\n", - "Epoch 1779: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1779: accuracy appended (20.00%)\n", - "Epoch 1779: model set back to train mode\n", - "Epoch 1779: model parameters saved\n", - "Epoch 1780 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1780: avg_loss appended (1.5632)\n", - "Epoch 1780: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1780: accuracy appended (20.00%)\n", - "Epoch 1780: model set back to train mode\n", - "Epoch 1780: model parameters saved\n", - "Epoch 1781 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1781: avg_loss appended (1.5632)\n", - "Epoch 1781: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1781: accuracy appended (20.00%)\n", - "Epoch 1781: model set back to train mode\n", - "Epoch 1781: model parameters saved\n", - "Epoch 1782 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1782: avg_loss appended (1.5632)\n", - "Epoch 1782: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1782: accuracy appended (20.00%)\n", - "Epoch 1782: model set back to train mode\n", - "Epoch 1782: model parameters saved\n", - "Epoch 1783 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1783: avg_loss appended (1.5632)\n", - "Epoch 1783: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1783: accuracy appended (20.00%)\n", - "Epoch 1783: model set back to train mode\n", - "Epoch 1783: model parameters saved\n", - "Epoch 1784 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1784: avg_loss appended (1.5632)\n", - "Epoch 1784: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1784: accuracy appended (20.00%)\n", - "Epoch 1784: model set back to train mode\n", - "Epoch 1784: model parameters saved\n", - "Epoch 1785 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1785: avg_loss appended (1.5632)\n", - "Epoch 1785: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1785: accuracy appended (20.00%)\n", - "Epoch 1785: model set back to train mode\n", - "Epoch 1785: model parameters saved\n", - "Epoch 1786 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1786: avg_loss appended (1.5632)\n", - "Epoch 1786: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1786: accuracy appended (20.00%)\n", - "Epoch 1786: model set back to train mode\n", - "Epoch 1786: model parameters saved\n", - "Epoch 1787 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1787: avg_loss appended (1.5632)\n", - "Epoch 1787: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1787: accuracy appended (20.00%)\n", - "Epoch 1787: model set back to train mode\n", - "Epoch 1787: model parameters saved\n", - "Epoch 1788 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1788: avg_loss appended (1.5632)\n", - "Epoch 1788: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1788: accuracy appended (20.00%)\n", - "Epoch 1788: model set back to train mode\n", - "Epoch 1788: model parameters saved\n", - "Epoch 1789 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1789: avg_loss appended (1.5632)\n", - "Epoch 1789: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1789: accuracy appended (20.00%)\n", - "Epoch 1789: model set back to train mode\n", - "Epoch 1789: model parameters saved\n", - "Epoch 1790 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1790: avg_loss appended (1.5632)\n", - "Epoch 1790: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1790: accuracy appended (20.00%)\n", - "Epoch 1790: model set back to train mode\n", - "Epoch 1790: model parameters saved\n", - "Epoch 1791 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1791: avg_loss appended (1.5632)\n", - "Epoch 1791: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1791: accuracy appended (20.00%)\n", - "Epoch 1791: model set back to train mode\n", - "Epoch 1791: model parameters saved\n", - "Epoch 1792 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1792: avg_loss appended (1.5632)\n", - "Epoch 1792: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1792: accuracy appended (20.00%)\n", - "Epoch 1792: model set back to train mode\n", - "Epoch 1792: model parameters saved\n", - "Epoch 1793 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1793: avg_loss appended (1.5632)\n", - "Epoch 1793: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1793: accuracy appended (20.00%)\n", - "Epoch 1793: model set back to train mode\n", - "Epoch 1793: model parameters saved\n", - "Epoch 1794 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1794: avg_loss appended (1.5632)\n", - "Epoch 1794: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1794: accuracy appended (20.00%)\n", - "Epoch 1794: model set back to train mode\n", - "Epoch 1794: model parameters saved\n", - "Epoch 1795 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1795: avg_loss appended (1.5632)\n", - "Epoch 1795: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1795: accuracy appended (20.00%)\n", - "Epoch 1795: model set back to train mode\n", - "Epoch 1795: model parameters saved\n", - "Epoch 1796 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1796: avg_loss appended (1.5632)\n", - "Epoch 1796: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1796: accuracy appended (20.00%)\n", - "Epoch 1796: model set back to train mode\n", - "Epoch 1796: model parameters saved\n", - "Epoch 1797 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1797: avg_loss appended (1.5632)\n", - "Epoch 1797: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1797: accuracy appended (20.00%)\n", - "Epoch 1797: model set back to train mode\n", - "Epoch 1797: model parameters saved\n", - "Epoch 1798 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1798: avg_loss appended (1.5632)\n", - "Epoch 1798: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1798: accuracy appended (20.00%)\n", - "Epoch 1798: model set back to train mode\n", - "Epoch 1798: model parameters saved\n", - "Epoch 1799 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1799: avg_loss appended (1.5632)\n", - "Epoch 1799: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1799: accuracy appended (20.00%)\n", - "Epoch 1799: model set back to train mode\n", - "Epoch 1799: model parameters saved\n", - "Epoch 1800 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1800: avg_loss appended (1.5632)\n", - "Epoch 1800: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1800: accuracy appended (20.00%)\n", - "Epoch 1800: model set back to train mode\n", - "Epoch 1800: model parameters saved\n", - "Epoch 1800/10000, Loss: 1.5632, Accuracy: 20.00%\n", - "Epoch 1801 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1801: avg_loss appended (1.5632)\n", - "Epoch 1801: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1801: accuracy appended (20.00%)\n", - "Epoch 1801: model set back to train mode\n", - "Epoch 1801: model parameters saved\n", - "Epoch 1802 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1802: avg_loss appended (1.5632)\n", - "Epoch 1802: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1802: accuracy appended (20.00%)\n", - "Epoch 1802: model set back to train mode\n", - "Epoch 1802: model parameters saved\n", - "Epoch 1803 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1803: avg_loss appended (1.5632)\n", - "Epoch 1803: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1803: accuracy appended (20.00%)\n", - "Epoch 1803: model set back to train mode\n", - "Epoch 1803: model parameters saved\n", - "Epoch 1804 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1804: avg_loss appended (1.5632)\n", - "Epoch 1804: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1804: accuracy appended (20.00%)\n", - "Epoch 1804: model set back to train mode\n", - "Epoch 1804: model parameters saved\n", - "Epoch 1805 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1805: avg_loss appended (1.5632)\n", - "Epoch 1805: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1805: accuracy appended (20.00%)\n", - "Epoch 1805: model set back to train mode\n", - "Epoch 1805: model parameters saved\n", - "Epoch 1806 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1806: avg_loss appended (1.5632)\n", - "Epoch 1806: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1806: accuracy appended (20.00%)\n", - "Epoch 1806: model set back to train mode\n", - "Epoch 1806: model parameters saved\n", - "Epoch 1807 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1807: avg_loss appended (1.5632)\n", - "Epoch 1807: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1807: accuracy appended (20.00%)\n", - "Epoch 1807: model set back to train mode\n", - "Epoch 1807: model parameters saved\n", - "Epoch 1808 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1808: avg_loss appended (1.5632)\n", - "Epoch 1808: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1808: accuracy appended (20.00%)\n", - "Epoch 1808: model set back to train mode\n", - "Epoch 1808: model parameters saved\n", - "Epoch 1809 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1809: avg_loss appended (1.5632)\n", - "Epoch 1809: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1809: accuracy appended (20.00%)\n", - "Epoch 1809: model set back to train mode\n", - "Epoch 1809: model parameters saved\n", - "Epoch 1810 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1810: avg_loss appended (1.5632)\n", - "Epoch 1810: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1810: accuracy appended (20.00%)\n", - "Epoch 1810: model set back to train mode\n", - "Epoch 1810: model parameters saved\n", - "Epoch 1811 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1811: avg_loss appended (1.5632)\n", - "Epoch 1811: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1811: accuracy appended (20.00%)\n", - "Epoch 1811: model set back to train mode\n", - "Epoch 1811: model parameters saved\n", - "Epoch 1812 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1812: avg_loss appended (1.5632)\n", - "Epoch 1812: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1812: accuracy appended (20.00%)\n", - "Epoch 1812: model set back to train mode\n", - "Epoch 1812: model parameters saved\n", - "Epoch 1813 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1813: avg_loss appended (1.5632)\n", - "Epoch 1813: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1813: accuracy appended (20.00%)\n", - "Epoch 1813: model set back to train mode\n", - "Epoch 1813: model parameters saved\n", - "Epoch 1814 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1814: avg_loss appended (1.5632)\n", - "Epoch 1814: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1814: accuracy appended (20.00%)\n", - "Epoch 1814: model set back to train mode\n", - "Epoch 1814: model parameters saved\n", - "Epoch 1815 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1815: avg_loss appended (1.5632)\n", - "Epoch 1815: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1815: accuracy appended (20.00%)\n", - "Epoch 1815: model set back to train mode\n", - "Epoch 1815: model parameters saved\n", - "Epoch 1816 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1816: avg_loss appended (1.5632)\n", - "Epoch 1816: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1816: accuracy appended (20.00%)\n", - "Epoch 1816: model set back to train mode\n", - "Epoch 1816: model parameters saved\n", - "Epoch 1817 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1817: avg_loss appended (1.5632)\n", - "Epoch 1817: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1817: accuracy appended (20.00%)\n", - "Epoch 1817: model set back to train mode\n", - "Epoch 1817: model parameters saved\n", - "Epoch 1818 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1818: avg_loss appended (1.5632)\n", - "Epoch 1818: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1818: accuracy appended (20.00%)\n", - "Epoch 1818: model set back to train mode\n", - "Epoch 1818: model parameters saved\n", - "Epoch 1819 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1819: avg_loss appended (1.5632)\n", - "Epoch 1819: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1819: accuracy appended (20.00%)\n", - "Epoch 1819: model set back to train mode\n", - "Epoch 1819: model parameters saved\n", - "Epoch 1820 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1820: avg_loss appended (1.5632)\n", - "Epoch 1820: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1820: accuracy appended (20.00%)\n", - "Epoch 1820: model set back to train mode\n", - "Epoch 1820: model parameters saved\n", - "Epoch 1821 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1821: avg_loss appended (1.5632)\n", - "Epoch 1821: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1821: accuracy appended (20.00%)\n", - "Epoch 1821: model set back to train mode\n", - "Epoch 1821: model parameters saved\n", - "Epoch 1822 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1822: avg_loss appended (1.5632)\n", - "Epoch 1822: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1822: accuracy appended (20.00%)\n", - "Epoch 1822: model set back to train mode\n", - "Epoch 1822: model parameters saved\n", - "Epoch 1823 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1823: avg_loss appended (1.5632)\n", - "Epoch 1823: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1823: accuracy appended (20.00%)\n", - "Epoch 1823: model set back to train mode\n", - "Epoch 1823: model parameters saved\n", - "Epoch 1824 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1824: avg_loss appended (1.5632)\n", - "Epoch 1824: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1824: accuracy appended (20.00%)\n", - "Epoch 1824: model set back to train mode\n", - "Epoch 1824: model parameters saved\n", - "Epoch 1825 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1825: avg_loss appended (1.5632)\n", - "Epoch 1825: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1825: accuracy appended (20.00%)\n", - "Epoch 1825: model set back to train mode\n", - "Epoch 1825: model parameters saved\n", - "Epoch 1826 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1826: avg_loss appended (1.5632)\n", - "Epoch 1826: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1826: accuracy appended (20.00%)\n", - "Epoch 1826: model set back to train mode\n", - "Epoch 1826: model parameters saved\n", - "Epoch 1827 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1827: avg_loss appended (1.5632)\n", - "Epoch 1827: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1827: accuracy appended (20.00%)\n", - "Epoch 1827: model set back to train mode\n", - "Epoch 1827: model parameters saved\n", - "Epoch 1828 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1828: avg_loss appended (1.5632)\n", - "Epoch 1828: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1828: accuracy appended (20.00%)\n", - "Epoch 1828: model set back to train mode\n", - "Epoch 1828: model parameters saved\n", - "Epoch 1829 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1829: avg_loss appended (1.5632)\n", - "Epoch 1829: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1829: accuracy appended (20.00%)\n", - "Epoch 1829: model set back to train mode\n", - "Epoch 1829: model parameters saved\n", - "Epoch 1830 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1830: avg_loss appended (1.5632)\n", - "Epoch 1830: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1830: accuracy appended (20.00%)\n", - "Epoch 1830: model set back to train mode\n", - "Epoch 1830: model parameters saved\n", - "Epoch 1831 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1831: avg_loss appended (1.5632)\n", - "Epoch 1831: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1831: accuracy appended (20.00%)\n", - "Epoch 1831: model set back to train mode\n", - "Epoch 1831: model parameters saved\n", - "Epoch 1832 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1832: avg_loss appended (1.5632)\n", - "Epoch 1832: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1832: accuracy appended (20.00%)\n", - "Epoch 1832: model set back to train mode\n", - "Epoch 1832: model parameters saved\n", - "Epoch 1833 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1833: avg_loss appended (1.5632)\n", - "Epoch 1833: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1833: accuracy appended (20.00%)\n", - "Epoch 1833: model set back to train mode\n", - "Epoch 1833: model parameters saved\n", - "Epoch 1834 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1834: avg_loss appended (1.5632)\n", - "Epoch 1834: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1834: accuracy appended (20.00%)\n", - "Epoch 1834: model set back to train mode\n", - "Epoch 1834: model parameters saved\n", - "Epoch 1835 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1835: avg_loss appended (1.5632)\n", - "Epoch 1835: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1835: accuracy appended (20.00%)\n", - "Epoch 1835: model set back to train mode\n", - "Epoch 1835: model parameters saved\n", - "Epoch 1836 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1836: avg_loss appended (1.5632)\n", - "Epoch 1836: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1836: accuracy appended (20.00%)\n", - "Epoch 1836: model set back to train mode\n", - "Epoch 1836: model parameters saved\n", - "Epoch 1837 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1837: avg_loss appended (1.5632)\n", - "Epoch 1837: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1837: accuracy appended (20.00%)\n", - "Epoch 1837: model set back to train mode\n", - "Epoch 1837: model parameters saved\n", - "Epoch 1838 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1838: avg_loss appended (1.5632)\n", - "Epoch 1838: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1838: accuracy appended (20.00%)\n", - "Epoch 1838: model set back to train mode\n", - "Epoch 1838: model parameters saved\n", - "Epoch 1839 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1839: avg_loss appended (1.5632)\n", - "Epoch 1839: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1839: accuracy appended (20.00%)\n", - "Epoch 1839: model set back to train mode\n", - "Epoch 1839: model parameters saved\n", - "Epoch 1840 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1840: avg_loss appended (1.5632)\n", - "Epoch 1840: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1840: accuracy appended (20.00%)\n", - "Epoch 1840: model set back to train mode\n", - "Epoch 1840: model parameters saved\n", - "Epoch 1841 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1841: avg_loss appended (1.5632)\n", - "Epoch 1841: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1841: accuracy appended (20.00%)\n", - "Epoch 1841: model set back to train mode\n", - "Epoch 1841: model parameters saved\n", - "Epoch 1842 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1842: avg_loss appended (1.5632)\n", - "Epoch 1842: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1842: accuracy appended (20.00%)\n", - "Epoch 1842: model set back to train mode\n", - "Epoch 1842: model parameters saved\n", - "Epoch 1843 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1843: avg_loss appended (1.5632)\n", - "Epoch 1843: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1843: accuracy appended (20.00%)\n", - "Epoch 1843: model set back to train mode\n", - "Epoch 1843: model parameters saved\n", - "Epoch 1844 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1844: avg_loss appended (1.5632)\n", - "Epoch 1844: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1844: accuracy appended (20.00%)\n", - "Epoch 1844: model set back to train mode\n", - "Epoch 1844: model parameters saved\n", - "Epoch 1845 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1845: avg_loss appended (1.5632)\n", - "Epoch 1845: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1845: accuracy appended (20.00%)\n", - "Epoch 1845: model set back to train mode\n", - "Epoch 1845: model parameters saved\n", - "Epoch 1846 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1846: avg_loss appended (1.5632)\n", - "Epoch 1846: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1846: accuracy appended (20.00%)\n", - "Epoch 1846: model set back to train mode\n", - "Epoch 1846: model parameters saved\n", - "Epoch 1847 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1847: avg_loss appended (1.5632)\n", - "Epoch 1847: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1847: accuracy appended (20.00%)\n", - "Epoch 1847: model set back to train mode\n", - "Epoch 1847: model parameters saved\n", - "Epoch 1848 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1848: avg_loss appended (1.5632)\n", - "Epoch 1848: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1848: accuracy appended (20.00%)\n", - "Epoch 1848: model set back to train mode\n", - "Epoch 1848: model parameters saved\n", - "Epoch 1849 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1849: avg_loss appended (1.5632)\n", - "Epoch 1849: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1849: accuracy appended (20.00%)\n", - "Epoch 1849: model set back to train mode\n", - "Epoch 1849: model parameters saved\n", - "Epoch 1850 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1850: avg_loss appended (1.5632)\n", - "Epoch 1850: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1850: accuracy appended (20.00%)\n", - "Epoch 1850: model set back to train mode\n", - "Epoch 1850: model parameters saved\n", - "Epoch 1851 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1851: avg_loss appended (1.5632)\n", - "Epoch 1851: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1851: accuracy appended (20.00%)\n", - "Epoch 1851: model set back to train mode\n", - "Epoch 1851: model parameters saved\n", - "Epoch 1852 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1852: avg_loss appended (1.5632)\n", - "Epoch 1852: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1852: accuracy appended (20.00%)\n", - "Epoch 1852: model set back to train mode\n", - "Epoch 1852: model parameters saved\n", - "Epoch 1853 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1853: avg_loss appended (1.5632)\n", - "Epoch 1853: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1853: accuracy appended (20.00%)\n", - "Epoch 1853: model set back to train mode\n", - "Epoch 1853: model parameters saved\n", - "Epoch 1854 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1854: avg_loss appended (1.5632)\n", - "Epoch 1854: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1854: accuracy appended (20.00%)\n", - "Epoch 1854: model set back to train mode\n", - "Epoch 1854: model parameters saved\n", - "Epoch 1855 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1855: avg_loss appended (1.5632)\n", - "Epoch 1855: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1855: accuracy appended (20.00%)\n", - "Epoch 1855: model set back to train mode\n", - "Epoch 1855: model parameters saved\n", - "Epoch 1856 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1856: avg_loss appended (1.5632)\n", - "Epoch 1856: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1856: accuracy appended (20.00%)\n", - "Epoch 1856: model set back to train mode\n", - "Epoch 1856: model parameters saved\n", - "Epoch 1857 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1857: avg_loss appended (1.5632)\n", - "Epoch 1857: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1857: accuracy appended (20.00%)\n", - "Epoch 1857: model set back to train mode\n", - "Epoch 1857: model parameters saved\n", - "Epoch 1858 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1858: avg_loss appended (1.5632)\n", - "Epoch 1858: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1858: accuracy appended (20.00%)\n", - "Epoch 1858: model set back to train mode\n", - "Epoch 1858: model parameters saved\n", - "Epoch 1859 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1859: avg_loss appended (1.5632)\n", - "Epoch 1859: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1859: accuracy appended (20.00%)\n", - "Epoch 1859: model set back to train mode\n", - "Epoch 1859: model parameters saved\n", - "Epoch 1860 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1860: avg_loss appended (1.5632)\n", - "Epoch 1860: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1860: accuracy appended (20.00%)\n", - "Epoch 1860: model set back to train mode\n", - "Epoch 1860: model parameters saved\n", - "Epoch 1861 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1861: avg_loss appended (1.5632)\n", - "Epoch 1861: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1861: accuracy appended (20.00%)\n", - "Epoch 1861: model set back to train mode\n", - "Epoch 1861: model parameters saved\n", - "Epoch 1862 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1862: avg_loss appended (1.5632)\n", - "Epoch 1862: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1862: accuracy appended (20.00%)\n", - "Epoch 1862: model set back to train mode\n", - "Epoch 1862: model parameters saved\n", - "Epoch 1863 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1863: avg_loss appended (1.5632)\n", - "Epoch 1863: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1863: accuracy appended (20.00%)\n", - "Epoch 1863: model set back to train mode\n", - "Epoch 1863: model parameters saved\n", - "Epoch 1864 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1864: avg_loss appended (1.5632)\n", - "Epoch 1864: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1864: accuracy appended (20.00%)\n", - "Epoch 1864: model set back to train mode\n", - "Epoch 1864: model parameters saved\n", - "Epoch 1865 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1865: avg_loss appended (1.5632)\n", - "Epoch 1865: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1865: accuracy appended (20.00%)\n", - "Epoch 1865: model set back to train mode\n", - "Epoch 1865: model parameters saved\n", - "Epoch 1866 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1866: avg_loss appended (1.5632)\n", - "Epoch 1866: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1866: accuracy appended (20.00%)\n", - "Epoch 1866: model set back to train mode\n", - "Epoch 1866: model parameters saved\n", - "Epoch 1867 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1867: avg_loss appended (1.5632)\n", - "Epoch 1867: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1867: accuracy appended (20.00%)\n", - "Epoch 1867: model set back to train mode\n", - "Epoch 1867: model parameters saved\n", - "Epoch 1868 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1868: avg_loss appended (1.5632)\n", - "Epoch 1868: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1868: accuracy appended (20.00%)\n", - "Epoch 1868: model set back to train mode\n", - "Epoch 1868: model parameters saved\n", - "Epoch 1869 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1869: avg_loss appended (1.5632)\n", - "Epoch 1869: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1869: accuracy appended (20.00%)\n", - "Epoch 1869: model set back to train mode\n", - "Epoch 1869: model parameters saved\n", - "Epoch 1870 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1870: avg_loss appended (1.5632)\n", - "Epoch 1870: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1870: accuracy appended (20.00%)\n", - "Epoch 1870: model set back to train mode\n", - "Epoch 1870: model parameters saved\n", - "Epoch 1871 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1871: avg_loss appended (1.5632)\n", - "Epoch 1871: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1871: accuracy appended (20.00%)\n", - "Epoch 1871: model set back to train mode\n", - "Epoch 1871: model parameters saved\n", - "Epoch 1872 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1872: avg_loss appended (1.5632)\n", - "Epoch 1872: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1872: accuracy appended (20.00%)\n", - "Epoch 1872: model set back to train mode\n", - "Epoch 1872: model parameters saved\n", - "Epoch 1873 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1873: avg_loss appended (1.5632)\n", - "Epoch 1873: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1873: accuracy appended (20.00%)\n", - "Epoch 1873: model set back to train mode\n", - "Epoch 1873: model parameters saved\n", - "Epoch 1874 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1874: avg_loss appended (1.5632)\n", - "Epoch 1874: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1874: accuracy appended (20.00%)\n", - "Epoch 1874: model set back to train mode\n", - "Epoch 1874: model parameters saved\n", - "Epoch 1875 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1875: avg_loss appended (1.5632)\n", - "Epoch 1875: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1875: accuracy appended (20.00%)\n", - "Epoch 1875: model set back to train mode\n", - "Epoch 1875: model parameters saved\n", - "Epoch 1876 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1876: avg_loss appended (1.5632)\n", - "Epoch 1876: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1876: accuracy appended (20.00%)\n", - "Epoch 1876: model set back to train mode\n", - "Epoch 1876: model parameters saved\n", - "Epoch 1877 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1877: avg_loss appended (1.5632)\n", - "Epoch 1877: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1877: accuracy appended (20.00%)\n", - "Epoch 1877: model set back to train mode\n", - "Epoch 1877: model parameters saved\n", - "Epoch 1878 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1878: avg_loss appended (1.5632)\n", - "Epoch 1878: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1878: accuracy appended (20.00%)\n", - "Epoch 1878: model set back to train mode\n", - "Epoch 1878: model parameters saved\n", - "Epoch 1879 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1879: avg_loss appended (1.5632)\n", - "Epoch 1879: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1879: accuracy appended (20.00%)\n", - "Epoch 1879: model set back to train mode\n", - "Epoch 1879: model parameters saved\n", - "Epoch 1880 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1880: avg_loss appended (1.5632)\n", - "Epoch 1880: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1880: accuracy appended (20.00%)\n", - "Epoch 1880: model set back to train mode\n", - "Epoch 1880: model parameters saved\n", - "Epoch 1881 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1881: avg_loss appended (1.5632)\n", - "Epoch 1881: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1881: accuracy appended (20.00%)\n", - "Epoch 1881: model set back to train mode\n", - "Epoch 1881: model parameters saved\n", - "Epoch 1882 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1882: avg_loss appended (1.5632)\n", - "Epoch 1882: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1882: accuracy appended (20.00%)\n", - "Epoch 1882: model set back to train mode\n", - "Epoch 1882: model parameters saved\n", - "Epoch 1883 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1883: avg_loss appended (1.5632)\n", - "Epoch 1883: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1883: accuracy appended (20.00%)\n", - "Epoch 1883: model set back to train mode\n", - "Epoch 1883: model parameters saved\n", - "Epoch 1884 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1884: avg_loss appended (1.5632)\n", - "Epoch 1884: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1884: accuracy appended (20.00%)\n", - "Epoch 1884: model set back to train mode\n", - "Epoch 1884: model parameters saved\n", - "Epoch 1885 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1885: avg_loss appended (1.5632)\n", - "Epoch 1885: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1885: accuracy appended (20.00%)\n", - "Epoch 1885: model set back to train mode\n", - "Epoch 1885: model parameters saved\n", - "Epoch 1886 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1886: avg_loss appended (1.5632)\n", - "Epoch 1886: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1886: accuracy appended (20.00%)\n", - "Epoch 1886: model set back to train mode\n", - "Epoch 1886: model parameters saved\n", - "Epoch 1887 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1887: avg_loss appended (1.5632)\n", - "Epoch 1887: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1887: accuracy appended (20.00%)\n", - "Epoch 1887: model set back to train mode\n", - "Epoch 1887: model parameters saved\n", - "Epoch 1888 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1888: avg_loss appended (1.5632)\n", - "Epoch 1888: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1888: accuracy appended (20.00%)\n", - "Epoch 1888: model set back to train mode\n", - "Epoch 1888: model parameters saved\n", - "Epoch 1889 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1889: avg_loss appended (1.5632)\n", - "Epoch 1889: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1889: accuracy appended (20.00%)\n", - "Epoch 1889: model set back to train mode\n", - "Epoch 1889: model parameters saved\n", - "Epoch 1890 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1890: avg_loss appended (1.5632)\n", - "Epoch 1890: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1890: accuracy appended (20.00%)\n", - "Epoch 1890: model set back to train mode\n", - "Epoch 1890: model parameters saved\n", - "Epoch 1891 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1891: avg_loss appended (1.5632)\n", - "Epoch 1891: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1891: accuracy appended (20.00%)\n", - "Epoch 1891: model set back to train mode\n", - "Epoch 1891: model parameters saved\n", - "Epoch 1892 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1892: avg_loss appended (1.5632)\n", - "Epoch 1892: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1892: accuracy appended (20.00%)\n", - "Epoch 1892: model set back to train mode\n", - "Epoch 1892: model parameters saved\n", - "Epoch 1893 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1893: avg_loss appended (1.5632)\n", - "Epoch 1893: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1893: accuracy appended (20.00%)\n", - "Epoch 1893: model set back to train mode\n", - "Epoch 1893: model parameters saved\n", - "Epoch 1894 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1894: avg_loss appended (1.5632)\n", - "Epoch 1894: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1894: accuracy appended (20.00%)\n", - "Epoch 1894: model set back to train mode\n", - "Epoch 1894: model parameters saved\n", - "Epoch 1895 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1895: avg_loss appended (1.5632)\n", - "Epoch 1895: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1895: accuracy appended (20.00%)\n", - "Epoch 1895: model set back to train mode\n", - "Epoch 1895: model parameters saved\n", - "Epoch 1896 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1896: avg_loss appended (1.5632)\n", - "Epoch 1896: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1896: accuracy appended (20.00%)\n", - "Epoch 1896: model set back to train mode\n", - "Epoch 1896: model parameters saved\n", - "Epoch 1897 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1897: avg_loss appended (1.5632)\n", - "Epoch 1897: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1897: accuracy appended (20.00%)\n", - "Epoch 1897: model set back to train mode\n", - "Epoch 1897: model parameters saved\n", - "Epoch 1898 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1898: avg_loss appended (1.5632)\n", - "Epoch 1898: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1898: accuracy appended (20.00%)\n", - "Epoch 1898: model set back to train mode\n", - "Epoch 1898: model parameters saved\n", - "Epoch 1899 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1899: avg_loss appended (1.5632)\n", - "Epoch 1899: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1899: accuracy appended (20.00%)\n", - "Epoch 1899: model set back to train mode\n", - "Epoch 1899: model parameters saved\n", - "Epoch 1900 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1900: avg_loss appended (1.5632)\n", - "Epoch 1900: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1900: accuracy appended (20.00%)\n", - "Epoch 1900: model set back to train mode\n", - "Epoch 1900: model parameters saved\n", - "Epoch 1900/10000, Loss: 1.5632, Accuracy: 20.00%\n", - "Epoch 1901 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1901: avg_loss appended (1.5632)\n", - "Epoch 1901: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1901: accuracy appended (20.00%)\n", - "Epoch 1901: model set back to train mode\n", - "Epoch 1901: model parameters saved\n", - "Epoch 1902 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1902: avg_loss appended (1.5632)\n", - "Epoch 1902: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1902: accuracy appended (20.00%)\n", - "Epoch 1902: model set back to train mode\n", - "Epoch 1902: model parameters saved\n", - "Epoch 1903 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1903: avg_loss appended (1.5632)\n", - "Epoch 1903: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1903: accuracy appended (20.00%)\n", - "Epoch 1903: model set back to train mode\n", - "Epoch 1903: model parameters saved\n", - "Epoch 1904 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1904: avg_loss appended (1.5632)\n", - "Epoch 1904: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1904: accuracy appended (20.00%)\n", - "Epoch 1904: model set back to train mode\n", - "Epoch 1904: model parameters saved\n", - "Epoch 1905 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1905: avg_loss appended (1.5632)\n", - "Epoch 1905: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1905: accuracy appended (20.00%)\n", - "Epoch 1905: model set back to train mode\n", - "Epoch 1905: model parameters saved\n", - "Epoch 1906 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1906: avg_loss appended (1.5632)\n", - "Epoch 1906: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1906: accuracy appended (20.00%)\n", - "Epoch 1906: model set back to train mode\n", - "Epoch 1906: model parameters saved\n", - "Epoch 1907 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1907: avg_loss appended (1.5632)\n", - "Epoch 1907: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1907: accuracy appended (20.00%)\n", - "Epoch 1907: model set back to train mode\n", - "Epoch 1907: model parameters saved\n", - "Epoch 1908 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1908: avg_loss appended (1.5632)\n", - "Epoch 1908: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1908: accuracy appended (20.00%)\n", - "Epoch 1908: model set back to train mode\n", - "Epoch 1908: model parameters saved\n", - "Epoch 1909 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1909: avg_loss appended (1.5632)\n", - "Epoch 1909: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1909: accuracy appended (20.00%)\n", - "Epoch 1909: model set back to train mode\n", - "Epoch 1909: model parameters saved\n", - "Epoch 1910 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1910: avg_loss appended (1.5632)\n", - "Epoch 1910: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1910: accuracy appended (20.00%)\n", - "Epoch 1910: model set back to train mode\n", - "Epoch 1910: model parameters saved\n", - "Epoch 1911 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1911: avg_loss appended (1.5632)\n", - "Epoch 1911: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1911: accuracy appended (20.00%)\n", - "Epoch 1911: model set back to train mode\n", - "Epoch 1911: model parameters saved\n", - "Epoch 1912 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1912: avg_loss appended (1.5632)\n", - "Epoch 1912: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1912: accuracy appended (20.00%)\n", - "Epoch 1912: model set back to train mode\n", - "Epoch 1912: model parameters saved\n", - "Epoch 1913 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1913: avg_loss appended (1.5632)\n", - "Epoch 1913: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1913: accuracy appended (20.00%)\n", - "Epoch 1913: model set back to train mode\n", - "Epoch 1913: model parameters saved\n", - "Epoch 1914 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1914: avg_loss appended (1.5632)\n", - "Epoch 1914: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1914: accuracy appended (20.00%)\n", - "Epoch 1914: model set back to train mode\n", - "Epoch 1914: model parameters saved\n", - "Epoch 1915 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1915: avg_loss appended (1.5632)\n", - "Epoch 1915: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1915: accuracy appended (20.00%)\n", - "Epoch 1915: model set back to train mode\n", - "Epoch 1915: model parameters saved\n", - "Epoch 1916 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1916: avg_loss appended (1.5632)\n", - "Epoch 1916: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1916: accuracy appended (20.00%)\n", - "Epoch 1916: model set back to train mode\n", - "Epoch 1916: model parameters saved\n", - "Epoch 1917 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1917: avg_loss appended (1.5632)\n", - "Epoch 1917: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1917: accuracy appended (20.00%)\n", - "Epoch 1917: model set back to train mode\n", - "Epoch 1917: model parameters saved\n", - "Epoch 1918 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1918: avg_loss appended (1.5632)\n", - "Epoch 1918: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1918: accuracy appended (20.00%)\n", - "Epoch 1918: model set back to train mode\n", - "Epoch 1918: model parameters saved\n", - "Epoch 1919 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1919: avg_loss appended (1.5632)\n", - "Epoch 1919: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1919: accuracy appended (20.00%)\n", - "Epoch 1919: model set back to train mode\n", - "Epoch 1919: model parameters saved\n", - "Epoch 1920 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1920: avg_loss appended (1.5632)\n", - "Epoch 1920: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1920: accuracy appended (20.00%)\n", - "Epoch 1920: model set back to train mode\n", - "Epoch 1920: model parameters saved\n", - "Epoch 1921 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1921: avg_loss appended (1.5632)\n", - "Epoch 1921: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1921: accuracy appended (20.00%)\n", - "Epoch 1921: model set back to train mode\n", - "Epoch 1921: model parameters saved\n", - "Epoch 1922 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1922: avg_loss appended (1.5632)\n", - "Epoch 1922: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1922: accuracy appended (20.00%)\n", - "Epoch 1922: model set back to train mode\n", - "Epoch 1922: model parameters saved\n", - "Epoch 1923 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1923: avg_loss appended (1.5632)\n", - "Epoch 1923: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1923: accuracy appended (20.00%)\n", - "Epoch 1923: model set back to train mode\n", - "Epoch 1923: model parameters saved\n", - "Epoch 1924 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1924: avg_loss appended (1.5632)\n", - "Epoch 1924: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1924: accuracy appended (20.00%)\n", - "Epoch 1924: model set back to train mode\n", - "Epoch 1924: model parameters saved\n", - "Epoch 1925 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1925: avg_loss appended (1.5632)\n", - "Epoch 1925: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1925: accuracy appended (20.00%)\n", - "Epoch 1925: model set back to train mode\n", - "Epoch 1925: model parameters saved\n", - "Epoch 1926 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1926: avg_loss appended (1.5632)\n", - "Epoch 1926: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1926: accuracy appended (20.00%)\n", - "Epoch 1926: model set back to train mode\n", - "Epoch 1926: model parameters saved\n", - "Epoch 1927 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1927: avg_loss appended (1.5632)\n", - "Epoch 1927: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1927: accuracy appended (20.00%)\n", - "Epoch 1927: model set back to train mode\n", - "Epoch 1927: model parameters saved\n", - "Epoch 1928 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1928: avg_loss appended (1.5632)\n", - "Epoch 1928: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1928: accuracy appended (20.00%)\n", - "Epoch 1928: model set back to train mode\n", - "Epoch 1928: model parameters saved\n", - "Epoch 1929 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1929: avg_loss appended (1.5632)\n", - "Epoch 1929: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1929: accuracy appended (20.00%)\n", - "Epoch 1929: model set back to train mode\n", - "Epoch 1929: model parameters saved\n", - "Epoch 1930 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1930: avg_loss appended (1.5632)\n", - "Epoch 1930: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1930: accuracy appended (20.00%)\n", - "Epoch 1930: model set back to train mode\n", - "Epoch 1930: model parameters saved\n", - "Epoch 1931 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1931: avg_loss appended (1.5632)\n", - "Epoch 1931: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1931: accuracy appended (20.00%)\n", - "Epoch 1931: model set back to train mode\n", - "Epoch 1931: model parameters saved\n", - "Epoch 1932 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1932: avg_loss appended (1.5632)\n", - "Epoch 1932: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1932: accuracy appended (20.00%)\n", - "Epoch 1932: model set back to train mode\n", - "Epoch 1932: model parameters saved\n", - "Epoch 1933 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1933: avg_loss appended (1.5632)\n", - "Epoch 1933: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1933: accuracy appended (20.00%)\n", - "Epoch 1933: model set back to train mode\n", - "Epoch 1933: model parameters saved\n", - "Epoch 1934 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1934: avg_loss appended (1.5632)\n", - "Epoch 1934: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1934: accuracy appended (20.00%)\n", - "Epoch 1934: model set back to train mode\n", - "Epoch 1934: model parameters saved\n", - "Epoch 1935 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1935: avg_loss appended (1.5632)\n", - "Epoch 1935: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1935: accuracy appended (20.00%)\n", - "Epoch 1935: model set back to train mode\n", - "Epoch 1935: model parameters saved\n", - "Epoch 1936 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1936: avg_loss appended (1.5632)\n", - "Epoch 1936: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1936: accuracy appended (20.00%)\n", - "Epoch 1936: model set back to train mode\n", - "Epoch 1936: model parameters saved\n", - "Epoch 1937 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1937: avg_loss appended (1.5632)\n", - "Epoch 1937: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1937: accuracy appended (20.00%)\n", - "Epoch 1937: model set back to train mode\n", - "Epoch 1937: model parameters saved\n", - "Epoch 1938 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1938: avg_loss appended (1.5632)\n", - "Epoch 1938: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1938: accuracy appended (20.00%)\n", - "Epoch 1938: model set back to train mode\n", - "Epoch 1938: model parameters saved\n", - "Epoch 1939 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1939: avg_loss appended (1.5632)\n", - "Epoch 1939: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1939: accuracy appended (20.00%)\n", - "Epoch 1939: model set back to train mode\n", - "Epoch 1939: model parameters saved\n", - "Epoch 1940 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1940: avg_loss appended (1.5632)\n", - "Epoch 1940: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1940: accuracy appended (20.00%)\n", - "Epoch 1940: model set back to train mode\n", - "Epoch 1940: model parameters saved\n", - "Epoch 1941 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1941: avg_loss appended (1.5632)\n", - "Epoch 1941: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1941: accuracy appended (20.00%)\n", - "Epoch 1941: model set back to train mode\n", - "Epoch 1941: model parameters saved\n", - "Epoch 1942 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1942: avg_loss appended (1.5632)\n", - "Epoch 1942: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1942: accuracy appended (20.00%)\n", - "Epoch 1942: model set back to train mode\n", - "Epoch 1942: model parameters saved\n", - "Epoch 1943 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1943: avg_loss appended (1.5632)\n", - "Epoch 1943: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1943: accuracy appended (20.00%)\n", - "Epoch 1943: model set back to train mode\n", - "Epoch 1943: model parameters saved\n", - "Epoch 1944 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1944: avg_loss appended (1.5632)\n", - "Epoch 1944: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1944: accuracy appended (20.00%)\n", - "Epoch 1944: model set back to train mode\n", - "Epoch 1944: model parameters saved\n", - "Epoch 1945 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1945: avg_loss appended (1.5632)\n", - "Epoch 1945: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1945: accuracy appended (20.00%)\n", - "Epoch 1945: model set back to train mode\n", - "Epoch 1945: model parameters saved\n", - "Epoch 1946 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1946: avg_loss appended (1.5632)\n", - "Epoch 1946: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1946: accuracy appended (20.00%)\n", - "Epoch 1946: model set back to train mode\n", - "Epoch 1946: model parameters saved\n", - "Epoch 1947 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1947: avg_loss appended (1.5632)\n", - "Epoch 1947: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1947: accuracy appended (20.00%)\n", - "Epoch 1947: model set back to train mode\n", - "Epoch 1947: model parameters saved\n", - "Epoch 1948 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1948: avg_loss appended (1.5632)\n", - "Epoch 1948: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1948: accuracy appended (20.00%)\n", - "Epoch 1948: model set back to train mode\n", - "Epoch 1948: model parameters saved\n", - "Epoch 1949 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1949: avg_loss appended (1.5632)\n", - "Epoch 1949: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1949: accuracy appended (20.00%)\n", - "Epoch 1949: model set back to train mode\n", - "Epoch 1949: model parameters saved\n", - "Epoch 1950 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1950: avg_loss appended (1.5632)\n", - "Epoch 1950: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1950: accuracy appended (20.00%)\n", - "Epoch 1950: model set back to train mode\n", - "Epoch 1950: model parameters saved\n", - "Epoch 1951 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1951: avg_loss appended (1.5632)\n", - "Epoch 1951: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1951: accuracy appended (20.00%)\n", - "Epoch 1951: model set back to train mode\n", - "Epoch 1951: model parameters saved\n", - "Epoch 1952 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1952: avg_loss appended (1.5632)\n", - "Epoch 1952: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1952: accuracy appended (20.00%)\n", - "Epoch 1952: model set back to train mode\n", - "Epoch 1952: model parameters saved\n", - "Epoch 1953 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1953: avg_loss appended (1.5632)\n", - "Epoch 1953: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1953: accuracy appended (20.00%)\n", - "Epoch 1953: model set back to train mode\n", - "Epoch 1953: model parameters saved\n", - "Epoch 1954 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1954: avg_loss appended (1.5632)\n", - "Epoch 1954: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1954: accuracy appended (20.00%)\n", - "Epoch 1954: model set back to train mode\n", - "Epoch 1954: model parameters saved\n", - "Epoch 1955 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1955: avg_loss appended (1.5632)\n", - "Epoch 1955: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1955: accuracy appended (20.00%)\n", - "Epoch 1955: model set back to train mode\n", - "Epoch 1955: model parameters saved\n", - "Epoch 1956 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1956: avg_loss appended (1.5632)\n", - "Epoch 1956: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1956: accuracy appended (20.00%)\n", - "Epoch 1956: model set back to train mode\n", - "Epoch 1956: model parameters saved\n", - "Epoch 1957 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1957: avg_loss appended (1.5632)\n", - "Epoch 1957: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1957: accuracy appended (20.00%)\n", - "Epoch 1957: model set back to train mode\n", - "Epoch 1957: model parameters saved\n", - "Epoch 1958 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1958: avg_loss appended (1.5632)\n", - "Epoch 1958: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1958: accuracy appended (20.00%)\n", - "Epoch 1958: model set back to train mode\n", - "Epoch 1958: model parameters saved\n", - "Epoch 1959 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1959: avg_loss appended (1.5632)\n", - "Epoch 1959: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1959: accuracy appended (20.00%)\n", - "Epoch 1959: model set back to train mode\n", - "Epoch 1959: model parameters saved\n", - "Epoch 1960 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1960: avg_loss appended (1.5632)\n", - "Epoch 1960: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1960: accuracy appended (20.00%)\n", - "Epoch 1960: model set back to train mode\n", - "Epoch 1960: model parameters saved\n", - "Epoch 1961 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1961: avg_loss appended (1.5632)\n", - "Epoch 1961: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1961: accuracy appended (20.00%)\n", - "Epoch 1961: model set back to train mode\n", - "Epoch 1961: model parameters saved\n", - "Epoch 1962 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1962: avg_loss appended (1.5632)\n", - "Epoch 1962: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1962: accuracy appended (20.00%)\n", - "Epoch 1962: model set back to train mode\n", - "Epoch 1962: model parameters saved\n", - "Epoch 1963 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1963: avg_loss appended (1.5632)\n", - "Epoch 1963: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1963: accuracy appended (20.00%)\n", - "Epoch 1963: model set back to train mode\n", - "Epoch 1963: model parameters saved\n", - "Epoch 1964 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1964: avg_loss appended (1.5632)\n", - "Epoch 1964: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1964: accuracy appended (20.00%)\n", - "Epoch 1964: model set back to train mode\n", - "Epoch 1964: model parameters saved\n", - "Epoch 1965 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1965: avg_loss appended (1.5632)\n", - "Epoch 1965: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1965: accuracy appended (20.00%)\n", - "Epoch 1965: model set back to train mode\n", - "Epoch 1965: model parameters saved\n", - "Epoch 1966 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1966: avg_loss appended (1.5632)\n", - "Epoch 1966: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1966: accuracy appended (20.00%)\n", - "Epoch 1966: model set back to train mode\n", - "Epoch 1966: model parameters saved\n", - "Epoch 1967 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1967: avg_loss appended (1.5632)\n", - "Epoch 1967: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1967: accuracy appended (20.00%)\n", - "Epoch 1967: model set back to train mode\n", - "Epoch 1967: model parameters saved\n", - "Epoch 1968 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1968: avg_loss appended (1.5632)\n", - "Epoch 1968: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1968: accuracy appended (20.00%)\n", - "Epoch 1968: model set back to train mode\n", - "Epoch 1968: model parameters saved\n", - "Epoch 1969 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1969: avg_loss appended (1.5632)\n", - "Epoch 1969: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1969: accuracy appended (20.00%)\n", - "Epoch 1969: model set back to train mode\n", - "Epoch 1969: model parameters saved\n", - "Epoch 1970 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1970: avg_loss appended (1.5632)\n", - "Epoch 1970: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1970: accuracy appended (20.00%)\n", - "Epoch 1970: model set back to train mode\n", - "Epoch 1970: model parameters saved\n", - "Epoch 1971 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1971: avg_loss appended (1.5632)\n", - "Epoch 1971: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1971: accuracy appended (20.00%)\n", - "Epoch 1971: model set back to train mode\n", - "Epoch 1971: model parameters saved\n", - "Epoch 1972 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1972: avg_loss appended (1.5632)\n", - "Epoch 1972: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1972: accuracy appended (20.00%)\n", - "Epoch 1972: model set back to train mode\n", - "Epoch 1972: model parameters saved\n", - "Epoch 1973 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1973: avg_loss appended (1.5632)\n", - "Epoch 1973: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1973: accuracy appended (20.00%)\n", - "Epoch 1973: model set back to train mode\n", - "Epoch 1973: model parameters saved\n", - "Epoch 1974 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1974: avg_loss appended (1.5632)\n", - "Epoch 1974: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1974: accuracy appended (20.00%)\n", - "Epoch 1974: model set back to train mode\n", - "Epoch 1974: model parameters saved\n", - "Epoch 1975 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1975: avg_loss appended (1.5632)\n", - "Epoch 1975: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1975: accuracy appended (20.00%)\n", - "Epoch 1975: model set back to train mode\n", - "Epoch 1975: model parameters saved\n", - "Epoch 1976 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1976: avg_loss appended (1.5632)\n", - "Epoch 1976: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1976: accuracy appended (20.00%)\n", - "Epoch 1976: model set back to train mode\n", - "Epoch 1976: model parameters saved\n", - "Epoch 1977 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1977: avg_loss appended (1.5632)\n", - "Epoch 1977: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1977: accuracy appended (20.00%)\n", - "Epoch 1977: model set back to train mode\n", - "Epoch 1977: model parameters saved\n", - "Epoch 1978 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1978: avg_loss appended (1.5632)\n", - "Epoch 1978: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1978: accuracy appended (20.00%)\n", - "Epoch 1978: model set back to train mode\n", - "Epoch 1978: model parameters saved\n", - "Epoch 1979 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1979: avg_loss appended (1.5632)\n", - "Epoch 1979: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1979: accuracy appended (20.00%)\n", - "Epoch 1979: model set back to train mode\n", - "Epoch 1979: model parameters saved\n", - "Epoch 1980 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1980: avg_loss appended (1.5632)\n", - "Epoch 1980: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1980: accuracy appended (20.00%)\n", - "Epoch 1980: model set back to train mode\n", - "Epoch 1980: model parameters saved\n", - "Epoch 1981 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1981: avg_loss appended (1.5632)\n", - "Epoch 1981: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1981: accuracy appended (20.00%)\n", - "Epoch 1981: model set back to train mode\n", - "Epoch 1981: model parameters saved\n", - "Epoch 1982 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1982: avg_loss appended (1.5632)\n", - "Epoch 1982: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1982: accuracy appended (20.00%)\n", - "Epoch 1982: model set back to train mode\n", - "Epoch 1982: model parameters saved\n", - "Epoch 1983 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1983: avg_loss appended (1.5632)\n", - "Epoch 1983: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1983: accuracy appended (20.00%)\n", - "Epoch 1983: model set back to train mode\n", - "Epoch 1983: model parameters saved\n", - "Epoch 1984 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1984: avg_loss appended (1.5632)\n", - "Epoch 1984: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1984: accuracy appended (20.00%)\n", - "Epoch 1984: model set back to train mode\n", - "Epoch 1984: model parameters saved\n", - "Epoch 1985 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1985: avg_loss appended (1.5632)\n", - "Epoch 1985: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1985: accuracy appended (20.00%)\n", - "Epoch 1985: model set back to train mode\n", - "Epoch 1985: model parameters saved\n", - "Epoch 1986 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1986: avg_loss appended (1.5632)\n", - "Epoch 1986: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1986: accuracy appended (20.00%)\n", - "Epoch 1986: model set back to train mode\n", - "Epoch 1986: model parameters saved\n", - "Epoch 1987 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1987: avg_loss appended (1.5632)\n", - "Epoch 1987: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1987: accuracy appended (20.00%)\n", - "Epoch 1987: model set back to train mode\n", - "Epoch 1987: model parameters saved\n", - "Epoch 1988 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1988: avg_loss appended (1.5632)\n", - "Epoch 1988: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1988: accuracy appended (20.00%)\n", - "Epoch 1988: model set back to train mode\n", - "Epoch 1988: model parameters saved\n", - "Epoch 1989 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1989: avg_loss appended (1.5632)\n", - "Epoch 1989: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1989: accuracy appended (20.00%)\n", - "Epoch 1989: model set back to train mode\n", - "Epoch 1989: model parameters saved\n", - "Epoch 1990 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1990: avg_loss appended (1.5632)\n", - "Epoch 1990: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1990: accuracy appended (20.00%)\n", - "Epoch 1990: model set back to train mode\n", - "Epoch 1990: model parameters saved\n", - "Epoch 1991 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1991: avg_loss appended (1.5632)\n", - "Epoch 1991: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1991: accuracy appended (20.00%)\n", - "Epoch 1991: model set back to train mode\n", - "Epoch 1991: model parameters saved\n", - "Epoch 1992 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1992: avg_loss appended (1.5632)\n", - "Epoch 1992: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1992: accuracy appended (20.00%)\n", - "Epoch 1992: model set back to train mode\n", - "Epoch 1992: model parameters saved\n", - "Epoch 1993 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1993: avg_loss appended (1.5632)\n", - "Epoch 1993: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1993: accuracy appended (20.00%)\n", - "Epoch 1993: model set back to train mode\n", - "Epoch 1993: model parameters saved\n", - "Epoch 1994 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1994: avg_loss appended (1.5632)\n", - "Epoch 1994: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1994: accuracy appended (20.00%)\n", - "Epoch 1994: model set back to train mode\n", - "Epoch 1994: model parameters saved\n", - "Epoch 1995 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1995: avg_loss appended (1.5632)\n", - "Epoch 1995: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1995: accuracy appended (20.00%)\n", - "Epoch 1995: model set back to train mode\n", - "Epoch 1995: model parameters saved\n", - "Epoch 1996 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1996: avg_loss appended (1.5632)\n", - "Epoch 1996: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1996: accuracy appended (20.00%)\n", - "Epoch 1996: model set back to train mode\n", - "Epoch 1996: model parameters saved\n", - "Epoch 1997 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1997: avg_loss appended (1.5632)\n", - "Epoch 1997: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1997: accuracy appended (20.00%)\n", - "Epoch 1997: model set back to train mode\n", - "Epoch 1997: model parameters saved\n", - "Epoch 1998 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1998: avg_loss appended (1.5632)\n", - "Epoch 1998: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1998: accuracy appended (20.00%)\n", - "Epoch 1998: model set back to train mode\n", - "Epoch 1998: model parameters saved\n", - "Epoch 1999 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 1999: avg_loss appended (1.5632)\n", - "Epoch 1999: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 1999: accuracy appended (20.00%)\n", - "Epoch 1999: model set back to train mode\n", - "Epoch 1999: model parameters saved\n", - "Epoch 2000 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 2000: avg_loss appended (1.5632)\n", - "Epoch 2000: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2000: accuracy appended (20.00%)\n", - "Epoch 2000: model set back to train mode\n", - "Epoch 2000: model parameters saved\n", - "Epoch 2000/10000, Loss: 1.5632, Accuracy: 20.00%\n", - "Epoch 2001 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 2001: avg_loss appended (1.5632)\n", - "Epoch 2001: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2001: accuracy appended (20.00%)\n", - "Epoch 2001: model set back to train mode\n", - "Epoch 2001: model parameters saved\n", - "Epoch 2002 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 2002: avg_loss appended (1.5632)\n", - "Epoch 2002: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2002: accuracy appended (20.00%)\n", - "Epoch 2002: model set back to train mode\n", - "Epoch 2002: model parameters saved\n", - "Epoch 2003 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 2003: avg_loss appended (1.5632)\n", - "Epoch 2003: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2003: accuracy appended (20.00%)\n", - "Epoch 2003: model set back to train mode\n", - "Epoch 2003: model parameters saved\n", - "Epoch 2004 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 2004: avg_loss appended (1.5632)\n", - "Epoch 2004: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2004: accuracy appended (20.00%)\n", - "Epoch 2004: model set back to train mode\n", - "Epoch 2004: model parameters saved\n", - "Epoch 2005 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 2005: avg_loss appended (1.5632)\n", - "Epoch 2005: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2005: accuracy appended (20.00%)\n", - "Epoch 2005: model set back to train mode\n", - "Epoch 2005: model parameters saved\n", - "Epoch 2006 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 2006: avg_loss appended (1.5632)\n", - "Epoch 2006: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2006: accuracy appended (20.00%)\n", - "Epoch 2006: model set back to train mode\n", - "Epoch 2006: model parameters saved\n", - "Epoch 2007 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 2007: avg_loss appended (1.5632)\n", - "Epoch 2007: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2007: accuracy appended (20.00%)\n", - "Epoch 2007: model set back to train mode\n", - "Epoch 2007: model parameters saved\n", - "Epoch 2008 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 2008: avg_loss appended (1.5632)\n", - "Epoch 2008: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2008: accuracy appended (20.00%)\n", - "Epoch 2008: model set back to train mode\n", - "Epoch 2008: model parameters saved\n", - "Epoch 2009 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 2009: avg_loss appended (1.5632)\n", - "Epoch 2009: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2009: accuracy appended (20.00%)\n", - "Epoch 2009: model set back to train mode\n", - "Epoch 2009: model parameters saved\n", - "Epoch 2010 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 2010: avg_loss appended (1.5632)\n", - "Epoch 2010: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2010: accuracy appended (20.00%)\n", - "Epoch 2010: model set back to train mode\n", - "Epoch 2010: model parameters saved\n", - "Epoch 2011 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5632)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5632)\n", - "Epoch 2011: avg_loss appended (1.5632)\n", - "Epoch 2011: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2011: accuracy appended (20.00%)\n", - "Epoch 2011: model set back to train mode\n", - "Epoch 2011: model parameters saved\n", - "Epoch 2012 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2012: avg_loss appended (1.5631)\n", - "Epoch 2012: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2012: accuracy appended (20.00%)\n", - "Epoch 2012: model set back to train mode\n", - "Epoch 2012: model parameters saved\n", - "Epoch 2013 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2013: avg_loss appended (1.5631)\n", - "Epoch 2013: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2013: accuracy appended (20.00%)\n", - "Epoch 2013: model set back to train mode\n", - "Epoch 2013: model parameters saved\n", - "Epoch 2014 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2014: avg_loss appended (1.5631)\n", - "Epoch 2014: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2014: accuracy appended (20.00%)\n", - "Epoch 2014: model set back to train mode\n", - "Epoch 2014: model parameters saved\n", - "Epoch 2015 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2015: avg_loss appended (1.5631)\n", - "Epoch 2015: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2015: accuracy appended (20.00%)\n", - "Epoch 2015: model set back to train mode\n", - "Epoch 2015: model parameters saved\n", - "Epoch 2016 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2016: avg_loss appended (1.5631)\n", - "Epoch 2016: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2016: accuracy appended (20.00%)\n", - "Epoch 2016: model set back to train mode\n", - "Epoch 2016: model parameters saved\n", - "Epoch 2017 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2017: avg_loss appended (1.5631)\n", - "Epoch 2017: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2017: accuracy appended (20.00%)\n", - "Epoch 2017: model set back to train mode\n", - "Epoch 2017: model parameters saved\n", - "Epoch 2018 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2018: avg_loss appended (1.5631)\n", - "Epoch 2018: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2018: accuracy appended (20.00%)\n", - "Epoch 2018: model set back to train mode\n", - "Epoch 2018: model parameters saved\n", - "Epoch 2019 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2019: avg_loss appended (1.5631)\n", - "Epoch 2019: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2019: accuracy appended (20.00%)\n", - "Epoch 2019: model set back to train mode\n", - "Epoch 2019: model parameters saved\n", - "Epoch 2020 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2020: avg_loss appended (1.5631)\n", - "Epoch 2020: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2020: accuracy appended (20.00%)\n", - "Epoch 2020: model set back to train mode\n", - "Epoch 2020: model parameters saved\n", - "Epoch 2021 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2021: avg_loss appended (1.5631)\n", - "Epoch 2021: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2021: accuracy appended (20.00%)\n", - "Epoch 2021: model set back to train mode\n", - "Epoch 2021: model parameters saved\n", - "Epoch 2022 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2022: avg_loss appended (1.5631)\n", - "Epoch 2022: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2022: accuracy appended (20.00%)\n", - "Epoch 2022: model set back to train mode\n", - "Epoch 2022: model parameters saved\n", - "Epoch 2023 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2023: avg_loss appended (1.5631)\n", - "Epoch 2023: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2023: accuracy appended (20.00%)\n", - "Epoch 2023: model set back to train mode\n", - "Epoch 2023: model parameters saved\n", - "Epoch 2024 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2024: avg_loss appended (1.5631)\n", - "Epoch 2024: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2024: accuracy appended (20.00%)\n", - "Epoch 2024: model set back to train mode\n", - "Epoch 2024: model parameters saved\n", - "Epoch 2025 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2025: avg_loss appended (1.5631)\n", - "Epoch 2025: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2025: accuracy appended (20.00%)\n", - "Epoch 2025: model set back to train mode\n", - "Epoch 2025: model parameters saved\n", - "Epoch 2026 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2026: avg_loss appended (1.5631)\n", - "Epoch 2026: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2026: accuracy appended (20.00%)\n", - "Epoch 2026: model set back to train mode\n", - "Epoch 2026: model parameters saved\n", - "Epoch 2027 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2027: avg_loss appended (1.5631)\n", - "Epoch 2027: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2027: accuracy appended (20.00%)\n", - "Epoch 2027: model set back to train mode\n", - "Epoch 2027: model parameters saved\n", - "Epoch 2028 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2028: avg_loss appended (1.5631)\n", - "Epoch 2028: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2028: accuracy appended (20.00%)\n", - "Epoch 2028: model set back to train mode\n", - "Epoch 2028: model parameters saved\n", - "Epoch 2029 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2029: avg_loss appended (1.5631)\n", - "Epoch 2029: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2029: accuracy appended (20.00%)\n", - "Epoch 2029: model set back to train mode\n", - "Epoch 2029: model parameters saved\n", - "Epoch 2030 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2030: avg_loss appended (1.5631)\n", - "Epoch 2030: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2030: accuracy appended (20.00%)\n", - "Epoch 2030: model set back to train mode\n", - "Epoch 2030: model parameters saved\n", - "Epoch 2031 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2031: avg_loss appended (1.5631)\n", - "Epoch 2031: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2031: accuracy appended (20.00%)\n", - "Epoch 2031: model set back to train mode\n", - "Epoch 2031: model parameters saved\n", - "Epoch 2032 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2032: avg_loss appended (1.5631)\n", - "Epoch 2032: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2032: accuracy appended (20.00%)\n", - "Epoch 2032: model set back to train mode\n", - "Epoch 2032: model parameters saved\n", - "Epoch 2033 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2033: avg_loss appended (1.5631)\n", - "Epoch 2033: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2033: accuracy appended (20.00%)\n", - "Epoch 2033: model set back to train mode\n", - "Epoch 2033: model parameters saved\n", - "Epoch 2034 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2034: avg_loss appended (1.5631)\n", - "Epoch 2034: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2034: accuracy appended (20.00%)\n", - "Epoch 2034: model set back to train mode\n", - "Epoch 2034: model parameters saved\n", - "Epoch 2035 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2035: avg_loss appended (1.5631)\n", - "Epoch 2035: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2035: accuracy appended (20.00%)\n", - "Epoch 2035: model set back to train mode\n", - "Epoch 2035: model parameters saved\n", - "Epoch 2036 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2036: avg_loss appended (1.5631)\n", - "Epoch 2036: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2036: accuracy appended (20.00%)\n", - "Epoch 2036: model set back to train mode\n", - "Epoch 2036: model parameters saved\n", - "Epoch 2037 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2037: avg_loss appended (1.5631)\n", - "Epoch 2037: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2037: accuracy appended (20.00%)\n", - "Epoch 2037: model set back to train mode\n", - "Epoch 2037: model parameters saved\n", - "Epoch 2038 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2038: avg_loss appended (1.5631)\n", - "Epoch 2038: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2038: accuracy appended (20.00%)\n", - "Epoch 2038: model set back to train mode\n", - "Epoch 2038: model parameters saved\n", - "Epoch 2039 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2039: avg_loss appended (1.5631)\n", - "Epoch 2039: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2039: accuracy appended (20.00%)\n", - "Epoch 2039: model set back to train mode\n", - "Epoch 2039: model parameters saved\n", - "Epoch 2040 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2040: avg_loss appended (1.5631)\n", - "Epoch 2040: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2040: accuracy appended (20.00%)\n", - "Epoch 2040: model set back to train mode\n", - "Epoch 2040: model parameters saved\n", - "Epoch 2041 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2041: avg_loss appended (1.5631)\n", - "Epoch 2041: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2041: accuracy appended (20.00%)\n", - "Epoch 2041: model set back to train mode\n", - "Epoch 2041: model parameters saved\n", - "Epoch 2042 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2042: avg_loss appended (1.5631)\n", - "Epoch 2042: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2042: accuracy appended (20.00%)\n", - "Epoch 2042: model set back to train mode\n", - "Epoch 2042: model parameters saved\n", - "Epoch 2043 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2043: avg_loss appended (1.5631)\n", - "Epoch 2043: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2043: accuracy appended (20.00%)\n", - "Epoch 2043: model set back to train mode\n", - "Epoch 2043: model parameters saved\n", - "Epoch 2044 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2044: avg_loss appended (1.5631)\n", - "Epoch 2044: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2044: accuracy appended (20.00%)\n", - "Epoch 2044: model set back to train mode\n", - "Epoch 2044: model parameters saved\n", - "Epoch 2045 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2045: avg_loss appended (1.5631)\n", - "Epoch 2045: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2045: accuracy appended (20.00%)\n", - "Epoch 2045: model set back to train mode\n", - "Epoch 2045: model parameters saved\n", - "Epoch 2046 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2046: avg_loss appended (1.5631)\n", - "Epoch 2046: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2046: accuracy appended (20.00%)\n", - "Epoch 2046: model set back to train mode\n", - "Epoch 2046: model parameters saved\n", - "Epoch 2047 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2047: avg_loss appended (1.5631)\n", - "Epoch 2047: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2047: accuracy appended (20.00%)\n", - "Epoch 2047: model set back to train mode\n", - "Epoch 2047: model parameters saved\n", - "Epoch 2048 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2048: avg_loss appended (1.5631)\n", - "Epoch 2048: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2048: accuracy appended (20.00%)\n", - "Epoch 2048: model set back to train mode\n", - "Epoch 2048: model parameters saved\n", - "Epoch 2049 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2049: avg_loss appended (1.5631)\n", - "Epoch 2049: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2049: accuracy appended (20.00%)\n", - "Epoch 2049: model set back to train mode\n", - "Epoch 2049: model parameters saved\n", - "Epoch 2050 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2050: avg_loss appended (1.5631)\n", - "Epoch 2050: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2050: accuracy appended (20.00%)\n", - "Epoch 2050: model set back to train mode\n", - "Epoch 2050: model parameters saved\n", - "Epoch 2051 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2051: avg_loss appended (1.5631)\n", - "Epoch 2051: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2051: accuracy appended (20.00%)\n", - "Epoch 2051: model set back to train mode\n", - "Epoch 2051: model parameters saved\n", - "Epoch 2052 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2052: avg_loss appended (1.5631)\n", - "Epoch 2052: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2052: accuracy appended (20.00%)\n", - "Epoch 2052: model set back to train mode\n", - "Epoch 2052: model parameters saved\n", - "Epoch 2053 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2053: avg_loss appended (1.5631)\n", - "Epoch 2053: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2053: accuracy appended (20.00%)\n", - "Epoch 2053: model set back to train mode\n", - "Epoch 2053: model parameters saved\n", - "Epoch 2054 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2054: avg_loss appended (1.5631)\n", - "Epoch 2054: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2054: accuracy appended (20.00%)\n", - "Epoch 2054: model set back to train mode\n", - "Epoch 2054: model parameters saved\n", - "Epoch 2055 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2055: avg_loss appended (1.5631)\n", - "Epoch 2055: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2055: accuracy appended (20.00%)\n", - "Epoch 2055: model set back to train mode\n", - "Epoch 2055: model parameters saved\n", - "Epoch 2056 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2056: avg_loss appended (1.5631)\n", - "Epoch 2056: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2056: accuracy appended (20.00%)\n", - "Epoch 2056: model set back to train mode\n", - "Epoch 2056: model parameters saved\n", - "Epoch 2057 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2057: avg_loss appended (1.5631)\n", - "Epoch 2057: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2057: accuracy appended (20.00%)\n", - "Epoch 2057: model set back to train mode\n", - "Epoch 2057: model parameters saved\n", - "Epoch 2058 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2058: avg_loss appended (1.5631)\n", - "Epoch 2058: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2058: accuracy appended (20.00%)\n", - "Epoch 2058: model set back to train mode\n", - "Epoch 2058: model parameters saved\n", - "Epoch 2059 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2059: avg_loss appended (1.5631)\n", - "Epoch 2059: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2059: accuracy appended (20.00%)\n", - "Epoch 2059: model set back to train mode\n", - "Epoch 2059: model parameters saved\n", - "Epoch 2060 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2060: avg_loss appended (1.5631)\n", - "Epoch 2060: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2060: accuracy appended (20.00%)\n", - "Epoch 2060: model set back to train mode\n", - "Epoch 2060: model parameters saved\n", - "Epoch 2061 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2061: avg_loss appended (1.5631)\n", - "Epoch 2061: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2061: accuracy appended (20.00%)\n", - "Epoch 2061: model set back to train mode\n", - "Epoch 2061: model parameters saved\n", - "Epoch 2062 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2062: avg_loss appended (1.5631)\n", - "Epoch 2062: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2062: accuracy appended (20.00%)\n", - "Epoch 2062: model set back to train mode\n", - "Epoch 2062: model parameters saved\n", - "Epoch 2063 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2063: avg_loss appended (1.5631)\n", - "Epoch 2063: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2063: accuracy appended (20.00%)\n", - "Epoch 2063: model set back to train mode\n", - "Epoch 2063: model parameters saved\n", - "Epoch 2064 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2064: avg_loss appended (1.5631)\n", - "Epoch 2064: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2064: accuracy appended (20.00%)\n", - "Epoch 2064: model set back to train mode\n", - "Epoch 2064: model parameters saved\n", - "Epoch 2065 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2065: avg_loss appended (1.5631)\n", - "Epoch 2065: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2065: accuracy appended (20.00%)\n", - "Epoch 2065: model set back to train mode\n", - "Epoch 2065: model parameters saved\n", - "Epoch 2066 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2066: avg_loss appended (1.5631)\n", - "Epoch 2066: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2066: accuracy appended (20.00%)\n", - "Epoch 2066: model set back to train mode\n", - "Epoch 2066: model parameters saved\n", - "Epoch 2067 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2067: avg_loss appended (1.5631)\n", - "Epoch 2067: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2067: accuracy appended (20.00%)\n", - "Epoch 2067: model set back to train mode\n", - "Epoch 2067: model parameters saved\n", - "Epoch 2068 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2068: avg_loss appended (1.5631)\n", - "Epoch 2068: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2068: accuracy appended (20.00%)\n", - "Epoch 2068: model set back to train mode\n", - "Epoch 2068: model parameters saved\n", - "Epoch 2069 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2069: avg_loss appended (1.5631)\n", - "Epoch 2069: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2069: accuracy appended (20.00%)\n", - "Epoch 2069: model set back to train mode\n", - "Epoch 2069: model parameters saved\n", - "Epoch 2070 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2070: avg_loss appended (1.5631)\n", - "Epoch 2070: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2070: accuracy appended (20.00%)\n", - "Epoch 2070: model set back to train mode\n", - "Epoch 2070: model parameters saved\n", - "Epoch 2071 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2071: avg_loss appended (1.5631)\n", - "Epoch 2071: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2071: accuracy appended (20.00%)\n", - "Epoch 2071: model set back to train mode\n", - "Epoch 2071: model parameters saved\n", - "Epoch 2072 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2072: avg_loss appended (1.5631)\n", - "Epoch 2072: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2072: accuracy appended (20.00%)\n", - "Epoch 2072: model set back to train mode\n", - "Epoch 2072: model parameters saved\n", - "Epoch 2073 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2073: avg_loss appended (1.5631)\n", - "Epoch 2073: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2073: accuracy appended (20.00%)\n", - "Epoch 2073: model set back to train mode\n", - "Epoch 2073: model parameters saved\n", - "Epoch 2074 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2074: avg_loss appended (1.5631)\n", - "Epoch 2074: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2074: accuracy appended (20.00%)\n", - "Epoch 2074: model set back to train mode\n", - "Epoch 2074: model parameters saved\n", - "Epoch 2075 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2075: avg_loss appended (1.5631)\n", - "Epoch 2075: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2075: accuracy appended (20.00%)\n", - "Epoch 2075: model set back to train mode\n", - "Epoch 2075: model parameters saved\n", - "Epoch 2076 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2076: avg_loss appended (1.5631)\n", - "Epoch 2076: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2076: accuracy appended (20.00%)\n", - "Epoch 2076: model set back to train mode\n", - "Epoch 2076: model parameters saved\n", - "Epoch 2077 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2077: avg_loss appended (1.5631)\n", - "Epoch 2077: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2077: accuracy appended (20.00%)\n", - "Epoch 2077: model set back to train mode\n", - "Epoch 2077: model parameters saved\n", - "Epoch 2078 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2078: avg_loss appended (1.5631)\n", - "Epoch 2078: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2078: accuracy appended (20.00%)\n", - "Epoch 2078: model set back to train mode\n", - "Epoch 2078: model parameters saved\n", - "Epoch 2079 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2079: avg_loss appended (1.5631)\n", - "Epoch 2079: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2079: accuracy appended (20.00%)\n", - "Epoch 2079: model set back to train mode\n", - "Epoch 2079: model parameters saved\n", - "Epoch 2080 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2080: avg_loss appended (1.5631)\n", - "Epoch 2080: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2080: accuracy appended (20.00%)\n", - "Epoch 2080: model set back to train mode\n", - "Epoch 2080: model parameters saved\n", - "Epoch 2081 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2081: avg_loss appended (1.5631)\n", - "Epoch 2081: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2081: accuracy appended (20.00%)\n", - "Epoch 2081: model set back to train mode\n", - "Epoch 2081: model parameters saved\n", - "Epoch 2082 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2082: avg_loss appended (1.5631)\n", - "Epoch 2082: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2082: accuracy appended (20.00%)\n", - "Epoch 2082: model set back to train mode\n", - "Epoch 2082: model parameters saved\n", - "Epoch 2083 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2083: avg_loss appended (1.5631)\n", - "Epoch 2083: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2083: accuracy appended (20.00%)\n", - "Epoch 2083: model set back to train mode\n", - "Epoch 2083: model parameters saved\n", - "Epoch 2084 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2084: avg_loss appended (1.5631)\n", - "Epoch 2084: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2084: accuracy appended (20.00%)\n", - "Epoch 2084: model set back to train mode\n", - "Epoch 2084: model parameters saved\n", - "Epoch 2085 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2085: avg_loss appended (1.5631)\n", - "Epoch 2085: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2085: accuracy appended (20.00%)\n", - "Epoch 2085: model set back to train mode\n", - "Epoch 2085: model parameters saved\n", - "Epoch 2086 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2086: avg_loss appended (1.5631)\n", - "Epoch 2086: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2086: accuracy appended (20.00%)\n", - "Epoch 2086: model set back to train mode\n", - "Epoch 2086: model parameters saved\n", - "Epoch 2087 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2087: avg_loss appended (1.5631)\n", - "Epoch 2087: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2087: accuracy appended (20.00%)\n", - "Epoch 2087: model set back to train mode\n", - "Epoch 2087: model parameters saved\n", - "Epoch 2088 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2088: avg_loss appended (1.5631)\n", - "Epoch 2088: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2088: accuracy appended (20.00%)\n", - "Epoch 2088: model set back to train mode\n", - "Epoch 2088: model parameters saved\n", - "Epoch 2089 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2089: avg_loss appended (1.5631)\n", - "Epoch 2089: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2089: accuracy appended (20.00%)\n", - "Epoch 2089: model set back to train mode\n", - "Epoch 2089: model parameters saved\n", - "Epoch 2090 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2090: avg_loss appended (1.5631)\n", - "Epoch 2090: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2090: accuracy appended (20.00%)\n", - "Epoch 2090: model set back to train mode\n", - "Epoch 2090: model parameters saved\n", - "Epoch 2091 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2091: avg_loss appended (1.5631)\n", - "Epoch 2091: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2091: accuracy appended (20.00%)\n", - "Epoch 2091: model set back to train mode\n", - "Epoch 2091: model parameters saved\n", - "Epoch 2092 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2092: avg_loss appended (1.5631)\n", - "Epoch 2092: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2092: accuracy appended (20.00%)\n", - "Epoch 2092: model set back to train mode\n", - "Epoch 2092: model parameters saved\n", - "Epoch 2093 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2093: avg_loss appended (1.5631)\n", - "Epoch 2093: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2093: accuracy appended (20.00%)\n", - "Epoch 2093: model set back to train mode\n", - "Epoch 2093: model parameters saved\n", - "Epoch 2094 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2094: avg_loss appended (1.5631)\n", - "Epoch 2094: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2094: accuracy appended (20.00%)\n", - "Epoch 2094: model set back to train mode\n", - "Epoch 2094: model parameters saved\n", - "Epoch 2095 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2095: avg_loss appended (1.5631)\n", - "Epoch 2095: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2095: accuracy appended (20.00%)\n", - "Epoch 2095: model set back to train mode\n", - "Epoch 2095: model parameters saved\n", - "Epoch 2096 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2096: avg_loss appended (1.5631)\n", - "Epoch 2096: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2096: accuracy appended (20.00%)\n", - "Epoch 2096: model set back to train mode\n", - "Epoch 2096: model parameters saved\n", - "Epoch 2097 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2097: avg_loss appended (1.5631)\n", - "Epoch 2097: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2097: accuracy appended (20.00%)\n", - "Epoch 2097: model set back to train mode\n", - "Epoch 2097: model parameters saved\n", - "Epoch 2098 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2098: avg_loss appended (1.5631)\n", - "Epoch 2098: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2098: accuracy appended (20.00%)\n", - "Epoch 2098: model set back to train mode\n", - "Epoch 2098: model parameters saved\n", - "Epoch 2099 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2099: avg_loss appended (1.5631)\n", - "Epoch 2099: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2099: accuracy appended (20.00%)\n", - "Epoch 2099: model set back to train mode\n", - "Epoch 2099: model parameters saved\n", - "Epoch 2100 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2100: avg_loss appended (1.5631)\n", - "Epoch 2100: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2100: accuracy appended (20.00%)\n", - "Epoch 2100: model set back to train mode\n", - "Epoch 2100: model parameters saved\n", - "Epoch 2100/10000, Loss: 1.5631, Accuracy: 20.00%\n", - "Epoch 2101 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2101: avg_loss appended (1.5631)\n", - "Epoch 2101: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2101: accuracy appended (20.00%)\n", - "Epoch 2101: model set back to train mode\n", - "Epoch 2101: model parameters saved\n", - "Epoch 2102 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2102: avg_loss appended (1.5631)\n", - "Epoch 2102: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2102: accuracy appended (20.00%)\n", - "Epoch 2102: model set back to train mode\n", - "Epoch 2102: model parameters saved\n", - "Epoch 2103 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2103: avg_loss appended (1.5631)\n", - "Epoch 2103: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2103: accuracy appended (20.00%)\n", - "Epoch 2103: model set back to train mode\n", - "Epoch 2103: model parameters saved\n", - "Epoch 2104 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2104: avg_loss appended (1.5631)\n", - "Epoch 2104: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2104: accuracy appended (20.00%)\n", - "Epoch 2104: model set back to train mode\n", - "Epoch 2104: model parameters saved\n", - "Epoch 2105 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2105: avg_loss appended (1.5631)\n", - "Epoch 2105: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2105: accuracy appended (20.00%)\n", - "Epoch 2105: model set back to train mode\n", - "Epoch 2105: model parameters saved\n", - "Epoch 2106 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2106: avg_loss appended (1.5631)\n", - "Epoch 2106: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2106: accuracy appended (20.00%)\n", - "Epoch 2106: model set back to train mode\n", - "Epoch 2106: model parameters saved\n", - "Epoch 2107 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2107: avg_loss appended (1.5631)\n", - "Epoch 2107: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2107: accuracy appended (20.00%)\n", - "Epoch 2107: model set back to train mode\n", - "Epoch 2107: model parameters saved\n", - "Epoch 2108 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2108: avg_loss appended (1.5631)\n", - "Epoch 2108: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2108: accuracy appended (20.00%)\n", - "Epoch 2108: model set back to train mode\n", - "Epoch 2108: model parameters saved\n", - "Epoch 2109 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2109: avg_loss appended (1.5631)\n", - "Epoch 2109: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2109: accuracy appended (20.00%)\n", - "Epoch 2109: model set back to train mode\n", - "Epoch 2109: model parameters saved\n", - "Epoch 2110 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2110: avg_loss appended (1.5631)\n", - "Epoch 2110: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2110: accuracy appended (20.00%)\n", - "Epoch 2110: model set back to train mode\n", - "Epoch 2110: model parameters saved\n", - "Epoch 2111 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2111: avg_loss appended (1.5631)\n", - "Epoch 2111: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2111: accuracy appended (20.00%)\n", - "Epoch 2111: model set back to train mode\n", - "Epoch 2111: model parameters saved\n", - "Epoch 2112 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2112: avg_loss appended (1.5631)\n", - "Epoch 2112: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2112: accuracy appended (20.00%)\n", - "Epoch 2112: model set back to train mode\n", - "Epoch 2112: model parameters saved\n", - "Epoch 2113 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2113: avg_loss appended (1.5631)\n", - "Epoch 2113: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2113: accuracy appended (20.00%)\n", - "Epoch 2113: model set back to train mode\n", - "Epoch 2113: model parameters saved\n", - "Epoch 2114 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2114: avg_loss appended (1.5631)\n", - "Epoch 2114: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2114: accuracy appended (20.00%)\n", - "Epoch 2114: model set back to train mode\n", - "Epoch 2114: model parameters saved\n", - "Epoch 2115 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2115: avg_loss appended (1.5631)\n", - "Epoch 2115: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2115: accuracy appended (20.00%)\n", - "Epoch 2115: model set back to train mode\n", - "Epoch 2115: model parameters saved\n", - "Epoch 2116 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2116: avg_loss appended (1.5631)\n", - "Epoch 2116: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2116: accuracy appended (20.00%)\n", - "Epoch 2116: model set back to train mode\n", - "Epoch 2116: model parameters saved\n", - "Epoch 2117 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2117: avg_loss appended (1.5631)\n", - "Epoch 2117: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2117: accuracy appended (20.00%)\n", - "Epoch 2117: model set back to train mode\n", - "Epoch 2117: model parameters saved\n", - "Epoch 2118 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2118: avg_loss appended (1.5631)\n", - "Epoch 2118: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2118: accuracy appended (20.00%)\n", - "Epoch 2118: model set back to train mode\n", - "Epoch 2118: model parameters saved\n", - "Epoch 2119 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2119: avg_loss appended (1.5631)\n", - "Epoch 2119: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2119: accuracy appended (20.00%)\n", - "Epoch 2119: model set back to train mode\n", - "Epoch 2119: model parameters saved\n", - "Epoch 2120 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2120: avg_loss appended (1.5631)\n", - "Epoch 2120: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2120: accuracy appended (20.00%)\n", - "Epoch 2120: model set back to train mode\n", - "Epoch 2120: model parameters saved\n", - "Epoch 2121 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2121: avg_loss appended (1.5631)\n", - "Epoch 2121: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2121: accuracy appended (20.00%)\n", - "Epoch 2121: model set back to train mode\n", - "Epoch 2121: model parameters saved\n", - "Epoch 2122 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2122: avg_loss appended (1.5631)\n", - "Epoch 2122: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2122: accuracy appended (20.00%)\n", - "Epoch 2122: model set back to train mode\n", - "Epoch 2122: model parameters saved\n", - "Epoch 2123 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2123: avg_loss appended (1.5631)\n", - "Epoch 2123: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2123: accuracy appended (20.00%)\n", - "Epoch 2123: model set back to train mode\n", - "Epoch 2123: model parameters saved\n", - "Epoch 2124 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2124: avg_loss appended (1.5631)\n", - "Epoch 2124: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2124: accuracy appended (20.00%)\n", - "Epoch 2124: model set back to train mode\n", - "Epoch 2124: model parameters saved\n", - "Epoch 2125 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2125: avg_loss appended (1.5631)\n", - "Epoch 2125: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2125: accuracy appended (20.00%)\n", - "Epoch 2125: model set back to train mode\n", - "Epoch 2125: model parameters saved\n", - "Epoch 2126 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2126: avg_loss appended (1.5631)\n", - "Epoch 2126: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2126: accuracy appended (20.00%)\n", - "Epoch 2126: model set back to train mode\n", - "Epoch 2126: model parameters saved\n", - "Epoch 2127 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2127: avg_loss appended (1.5631)\n", - "Epoch 2127: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2127: accuracy appended (20.00%)\n", - "Epoch 2127: model set back to train mode\n", - "Epoch 2127: model parameters saved\n", - "Epoch 2128 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2128: avg_loss appended (1.5631)\n", - "Epoch 2128: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2128: accuracy appended (20.00%)\n", - "Epoch 2128: model set back to train mode\n", - "Epoch 2128: model parameters saved\n", - "Epoch 2129 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2129: avg_loss appended (1.5631)\n", - "Epoch 2129: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2129: accuracy appended (20.00%)\n", - "Epoch 2129: model set back to train mode\n", - "Epoch 2129: model parameters saved\n", - "Epoch 2130 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2130: avg_loss appended (1.5631)\n", - "Epoch 2130: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2130: accuracy appended (20.00%)\n", - "Epoch 2130: model set back to train mode\n", - "Epoch 2130: model parameters saved\n", - "Epoch 2131 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2131: avg_loss appended (1.5631)\n", - "Epoch 2131: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2131: accuracy appended (20.00%)\n", - "Epoch 2131: model set back to train mode\n", - "Epoch 2131: model parameters saved\n", - "Epoch 2132 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2132: avg_loss appended (1.5631)\n", - "Epoch 2132: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2132: accuracy appended (20.00%)\n", - "Epoch 2132: model set back to train mode\n", - "Epoch 2132: model parameters saved\n", - "Epoch 2133 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2133: avg_loss appended (1.5631)\n", - "Epoch 2133: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2133: accuracy appended (20.00%)\n", - "Epoch 2133: model set back to train mode\n", - "Epoch 2133: model parameters saved\n", - "Epoch 2134 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2134: avg_loss appended (1.5631)\n", - "Epoch 2134: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2134: accuracy appended (20.00%)\n", - "Epoch 2134: model set back to train mode\n", - "Epoch 2134: model parameters saved\n", - "Epoch 2135 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2135: avg_loss appended (1.5631)\n", - "Epoch 2135: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2135: accuracy appended (20.00%)\n", - "Epoch 2135: model set back to train mode\n", - "Epoch 2135: model parameters saved\n", - "Epoch 2136 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2136: avg_loss appended (1.5631)\n", - "Epoch 2136: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2136: accuracy appended (20.00%)\n", - "Epoch 2136: model set back to train mode\n", - "Epoch 2136: model parameters saved\n", - "Epoch 2137 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2137: avg_loss appended (1.5631)\n", - "Epoch 2137: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2137: accuracy appended (20.00%)\n", - "Epoch 2137: model set back to train mode\n", - "Epoch 2137: model parameters saved\n", - "Epoch 2138 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2138: avg_loss appended (1.5631)\n", - "Epoch 2138: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2138: accuracy appended (20.00%)\n", - "Epoch 2138: model set back to train mode\n", - "Epoch 2138: model parameters saved\n", - "Epoch 2139 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2139: avg_loss appended (1.5631)\n", - "Epoch 2139: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2139: accuracy appended (20.00%)\n", - "Epoch 2139: model set back to train mode\n", - "Epoch 2139: model parameters saved\n", - "Epoch 2140 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2140: avg_loss appended (1.5631)\n", - "Epoch 2140: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2140: accuracy appended (20.00%)\n", - "Epoch 2140: model set back to train mode\n", - "Epoch 2140: model parameters saved\n", - "Epoch 2141 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2141: avg_loss appended (1.5631)\n", - "Epoch 2141: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2141: accuracy appended (20.00%)\n", - "Epoch 2141: model set back to train mode\n", - "Epoch 2141: model parameters saved\n", - "Epoch 2142 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2142: avg_loss appended (1.5631)\n", - "Epoch 2142: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2142: accuracy appended (20.00%)\n", - "Epoch 2142: model set back to train mode\n", - "Epoch 2142: model parameters saved\n", - "Epoch 2143 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2143: avg_loss appended (1.5631)\n", - "Epoch 2143: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2143: accuracy appended (20.00%)\n", - "Epoch 2143: model set back to train mode\n", - "Epoch 2143: model parameters saved\n", - "Epoch 2144 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2144: avg_loss appended (1.5631)\n", - "Epoch 2144: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2144: accuracy appended (20.00%)\n", - "Epoch 2144: model set back to train mode\n", - "Epoch 2144: model parameters saved\n", - "Epoch 2145 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2145: avg_loss appended (1.5631)\n", - "Epoch 2145: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2145: accuracy appended (20.00%)\n", - "Epoch 2145: model set back to train mode\n", - "Epoch 2145: model parameters saved\n", - "Epoch 2146 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2146: avg_loss appended (1.5631)\n", - "Epoch 2146: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2146: accuracy appended (20.00%)\n", - "Epoch 2146: model set back to train mode\n", - "Epoch 2146: model parameters saved\n", - "Epoch 2147 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2147: avg_loss appended (1.5631)\n", - "Epoch 2147: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2147: accuracy appended (20.00%)\n", - "Epoch 2147: model set back to train mode\n", - "Epoch 2147: model parameters saved\n", - "Epoch 2148 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2148: avg_loss appended (1.5631)\n", - "Epoch 2148: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2148: accuracy appended (20.00%)\n", - "Epoch 2148: model set back to train mode\n", - "Epoch 2148: model parameters saved\n", - "Epoch 2149 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2149: avg_loss appended (1.5631)\n", - "Epoch 2149: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2149: accuracy appended (20.00%)\n", - "Epoch 2149: model set back to train mode\n", - "Epoch 2149: model parameters saved\n", - "Epoch 2150 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2150: avg_loss appended (1.5631)\n", - "Epoch 2150: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2150: accuracy appended (20.00%)\n", - "Epoch 2150: model set back to train mode\n", - "Epoch 2150: model parameters saved\n", - "Epoch 2151 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2151: avg_loss appended (1.5631)\n", - "Epoch 2151: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2151: accuracy appended (20.00%)\n", - "Epoch 2151: model set back to train mode\n", - "Epoch 2151: model parameters saved\n", - "Epoch 2152 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2152: avg_loss appended (1.5631)\n", - "Epoch 2152: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2152: accuracy appended (20.00%)\n", - "Epoch 2152: model set back to train mode\n", - "Epoch 2152: model parameters saved\n", - "Epoch 2153 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2153: avg_loss appended (1.5631)\n", - "Epoch 2153: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2153: accuracy appended (20.00%)\n", - "Epoch 2153: model set back to train mode\n", - "Epoch 2153: model parameters saved\n", - "Epoch 2154 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2154: avg_loss appended (1.5631)\n", - "Epoch 2154: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2154: accuracy appended (20.00%)\n", - "Epoch 2154: model set back to train mode\n", - "Epoch 2154: model parameters saved\n", - "Epoch 2155 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2155: avg_loss appended (1.5631)\n", - "Epoch 2155: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2155: accuracy appended (20.00%)\n", - "Epoch 2155: model set back to train mode\n", - "Epoch 2155: model parameters saved\n", - "Epoch 2156 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2156: avg_loss appended (1.5631)\n", - "Epoch 2156: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2156: accuracy appended (20.00%)\n", - "Epoch 2156: model set back to train mode\n", - "Epoch 2156: model parameters saved\n", - "Epoch 2157 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2157: avg_loss appended (1.5631)\n", - "Epoch 2157: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2157: accuracy appended (20.00%)\n", - "Epoch 2157: model set back to train mode\n", - "Epoch 2157: model parameters saved\n", - "Epoch 2158 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2158: avg_loss appended (1.5631)\n", - "Epoch 2158: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2158: accuracy appended (20.00%)\n", - "Epoch 2158: model set back to train mode\n", - "Epoch 2158: model parameters saved\n", - "Epoch 2159 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2159: avg_loss appended (1.5631)\n", - "Epoch 2159: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2159: accuracy appended (20.00%)\n", - "Epoch 2159: model set back to train mode\n", - "Epoch 2159: model parameters saved\n", - "Epoch 2160 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2160: avg_loss appended (1.5631)\n", - "Epoch 2160: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2160: accuracy appended (20.00%)\n", - "Epoch 2160: model set back to train mode\n", - "Epoch 2160: model parameters saved\n", - "Epoch 2161 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2161: avg_loss appended (1.5631)\n", - "Epoch 2161: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2161: accuracy appended (20.00%)\n", - "Epoch 2161: model set back to train mode\n", - "Epoch 2161: model parameters saved\n", - "Epoch 2162 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2162: avg_loss appended (1.5631)\n", - "Epoch 2162: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2162: accuracy appended (20.00%)\n", - "Epoch 2162: model set back to train mode\n", - "Epoch 2162: model parameters saved\n", - "Epoch 2163 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2163: avg_loss appended (1.5631)\n", - "Epoch 2163: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2163: accuracy appended (20.00%)\n", - "Epoch 2163: model set back to train mode\n", - "Epoch 2163: model parameters saved\n", - "Epoch 2164 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2164: avg_loss appended (1.5631)\n", - "Epoch 2164: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2164: accuracy appended (20.00%)\n", - "Epoch 2164: model set back to train mode\n", - "Epoch 2164: model parameters saved\n", - "Epoch 2165 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2165: avg_loss appended (1.5631)\n", - "Epoch 2165: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2165: accuracy appended (20.00%)\n", - "Epoch 2165: model set back to train mode\n", - "Epoch 2165: model parameters saved\n", - "Epoch 2166 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2166: avg_loss appended (1.5631)\n", - "Epoch 2166: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2166: accuracy appended (20.00%)\n", - "Epoch 2166: model set back to train mode\n", - "Epoch 2166: model parameters saved\n", - "Epoch 2167 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2167: avg_loss appended (1.5631)\n", - "Epoch 2167: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2167: accuracy appended (20.00%)\n", - "Epoch 2167: model set back to train mode\n", - "Epoch 2167: model parameters saved\n", - "Epoch 2168 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2168: avg_loss appended (1.5631)\n", - "Epoch 2168: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2168: accuracy appended (20.00%)\n", - "Epoch 2168: model set back to train mode\n", - "Epoch 2168: model parameters saved\n", - "Epoch 2169 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2169: avg_loss appended (1.5631)\n", - "Epoch 2169: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2169: accuracy appended (20.00%)\n", - "Epoch 2169: model set back to train mode\n", - "Epoch 2169: model parameters saved\n", - "Epoch 2170 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2170: avg_loss appended (1.5631)\n", - "Epoch 2170: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2170: accuracy appended (20.00%)\n", - "Epoch 2170: model set back to train mode\n", - "Epoch 2170: model parameters saved\n", - "Epoch 2171 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2171: avg_loss appended (1.5631)\n", - "Epoch 2171: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2171: accuracy appended (20.00%)\n", - "Epoch 2171: model set back to train mode\n", - "Epoch 2171: model parameters saved\n", - "Epoch 2172 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2172: avg_loss appended (1.5631)\n", - "Epoch 2172: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2172: accuracy appended (20.00%)\n", - "Epoch 2172: model set back to train mode\n", - "Epoch 2172: model parameters saved\n", - "Epoch 2173 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2173: avg_loss appended (1.5631)\n", - "Epoch 2173: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2173: accuracy appended (20.00%)\n", - "Epoch 2173: model set back to train mode\n", - "Epoch 2173: model parameters saved\n", - "Epoch 2174 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2174: avg_loss appended (1.5631)\n", - "Epoch 2174: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2174: accuracy appended (20.00%)\n", - "Epoch 2174: model set back to train mode\n", - "Epoch 2174: model parameters saved\n", - "Epoch 2175 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2175: avg_loss appended (1.5631)\n", - "Epoch 2175: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2175: accuracy appended (20.00%)\n", - "Epoch 2175: model set back to train mode\n", - "Epoch 2175: model parameters saved\n", - "Epoch 2176 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2176: avg_loss appended (1.5631)\n", - "Epoch 2176: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2176: accuracy appended (20.00%)\n", - "Epoch 2176: model set back to train mode\n", - "Epoch 2176: model parameters saved\n", - "Epoch 2177 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2177: avg_loss appended (1.5631)\n", - "Epoch 2177: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2177: accuracy appended (20.00%)\n", - "Epoch 2177: model set back to train mode\n", - "Epoch 2177: model parameters saved\n", - "Epoch 2178 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2178: avg_loss appended (1.5631)\n", - "Epoch 2178: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2178: accuracy appended (20.00%)\n", - "Epoch 2178: model set back to train mode\n", - "Epoch 2178: model parameters saved\n", - "Epoch 2179 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2179: avg_loss appended (1.5631)\n", - "Epoch 2179: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2179: accuracy appended (20.00%)\n", - "Epoch 2179: model set back to train mode\n", - "Epoch 2179: model parameters saved\n", - "Epoch 2180 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2180: avg_loss appended (1.5631)\n", - "Epoch 2180: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2180: accuracy appended (20.00%)\n", - "Epoch 2180: model set back to train mode\n", - "Epoch 2180: model parameters saved\n", - "Epoch 2181 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2181: avg_loss appended (1.5631)\n", - "Epoch 2181: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2181: accuracy appended (20.00%)\n", - "Epoch 2181: model set back to train mode\n", - "Epoch 2181: model parameters saved\n", - "Epoch 2182 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2182: avg_loss appended (1.5631)\n", - "Epoch 2182: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2182: accuracy appended (20.00%)\n", - "Epoch 2182: model set back to train mode\n", - "Epoch 2182: model parameters saved\n", - "Epoch 2183 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2183: avg_loss appended (1.5631)\n", - "Epoch 2183: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2183: accuracy appended (20.00%)\n", - "Epoch 2183: model set back to train mode\n", - "Epoch 2183: model parameters saved\n", - "Epoch 2184 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2184: avg_loss appended (1.5631)\n", - "Epoch 2184: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2184: accuracy appended (20.00%)\n", - "Epoch 2184: model set back to train mode\n", - "Epoch 2184: model parameters saved\n", - "Epoch 2185 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2185: avg_loss appended (1.5631)\n", - "Epoch 2185: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2185: accuracy appended (20.00%)\n", - "Epoch 2185: model set back to train mode\n", - "Epoch 2185: model parameters saved\n", - "Epoch 2186 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2186: avg_loss appended (1.5631)\n", - "Epoch 2186: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2186: accuracy appended (20.00%)\n", - "Epoch 2186: model set back to train mode\n", - "Epoch 2186: model parameters saved\n", - "Epoch 2187 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2187: avg_loss appended (1.5631)\n", - "Epoch 2187: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2187: accuracy appended (20.00%)\n", - "Epoch 2187: model set back to train mode\n", - "Epoch 2187: model parameters saved\n", - "Epoch 2188 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2188: avg_loss appended (1.5631)\n", - "Epoch 2188: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2188: accuracy appended (20.00%)\n", - "Epoch 2188: model set back to train mode\n", - "Epoch 2188: model parameters saved\n", - "Epoch 2189 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2189: avg_loss appended (1.5631)\n", - "Epoch 2189: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2189: accuracy appended (20.00%)\n", - "Epoch 2189: model set back to train mode\n", - "Epoch 2189: model parameters saved\n", - "Epoch 2190 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2190: avg_loss appended (1.5631)\n", - "Epoch 2190: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2190: accuracy appended (20.00%)\n", - "Epoch 2190: model set back to train mode\n", - "Epoch 2190: model parameters saved\n", - "Epoch 2191 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2191: avg_loss appended (1.5631)\n", - "Epoch 2191: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2191: accuracy appended (20.00%)\n", - "Epoch 2191: model set back to train mode\n", - "Epoch 2191: model parameters saved\n", - "Epoch 2192 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2192: avg_loss appended (1.5631)\n", - "Epoch 2192: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2192: accuracy appended (20.00%)\n", - "Epoch 2192: model set back to train mode\n", - "Epoch 2192: model parameters saved\n", - "Epoch 2193 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2193: avg_loss appended (1.5631)\n", - "Epoch 2193: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2193: accuracy appended (20.00%)\n", - "Epoch 2193: model set back to train mode\n", - "Epoch 2193: model parameters saved\n", - "Epoch 2194 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2194: avg_loss appended (1.5631)\n", - "Epoch 2194: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2194: accuracy appended (20.00%)\n", - "Epoch 2194: model set back to train mode\n", - "Epoch 2194: model parameters saved\n", - "Epoch 2195 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2195: avg_loss appended (1.5631)\n", - "Epoch 2195: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2195: accuracy appended (20.00%)\n", - "Epoch 2195: model set back to train mode\n", - "Epoch 2195: model parameters saved\n", - "Epoch 2196 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2196: avg_loss appended (1.5631)\n", - "Epoch 2196: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2196: accuracy appended (20.00%)\n", - "Epoch 2196: model set back to train mode\n", - "Epoch 2196: model parameters saved\n", - "Epoch 2197 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2197: avg_loss appended (1.5631)\n", - "Epoch 2197: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2197: accuracy appended (20.00%)\n", - "Epoch 2197: model set back to train mode\n", - "Epoch 2197: model parameters saved\n", - "Epoch 2198 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2198: avg_loss appended (1.5631)\n", - "Epoch 2198: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2198: accuracy appended (20.00%)\n", - "Epoch 2198: model set back to train mode\n", - "Epoch 2198: model parameters saved\n", - "Epoch 2199 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2199: avg_loss appended (1.5631)\n", - "Epoch 2199: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2199: accuracy appended (20.00%)\n", - "Epoch 2199: model set back to train mode\n", - "Epoch 2199: model parameters saved\n", - "Epoch 2200 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2200: avg_loss appended (1.5631)\n", - "Epoch 2200: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2200: accuracy appended (20.00%)\n", - "Epoch 2200: model set back to train mode\n", - "Epoch 2200: model parameters saved\n", - "Epoch 2200/10000, Loss: 1.5631, Accuracy: 20.00%\n", - "Epoch 2201 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2201: avg_loss appended (1.5631)\n", - "Epoch 2201: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2201: accuracy appended (20.00%)\n", - "Epoch 2201: model set back to train mode\n", - "Epoch 2201: model parameters saved\n", - "Epoch 2202 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2202: avg_loss appended (1.5631)\n", - "Epoch 2202: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2202: accuracy appended (20.00%)\n", - "Epoch 2202: model set back to train mode\n", - "Epoch 2202: model parameters saved\n", - "Epoch 2203 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2203: avg_loss appended (1.5631)\n", - "Epoch 2203: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2203: accuracy appended (20.00%)\n", - "Epoch 2203: model set back to train mode\n", - "Epoch 2203: model parameters saved\n", - "Epoch 2204 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2204: avg_loss appended (1.5631)\n", - "Epoch 2204: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2204: accuracy appended (20.00%)\n", - "Epoch 2204: model set back to train mode\n", - "Epoch 2204: model parameters saved\n", - "Epoch 2205 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2205: avg_loss appended (1.5631)\n", - "Epoch 2205: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2205: accuracy appended (20.00%)\n", - "Epoch 2205: model set back to train mode\n", - "Epoch 2205: model parameters saved\n", - "Epoch 2206 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2206: avg_loss appended (1.5631)\n", - "Epoch 2206: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2206: accuracy appended (20.00%)\n", - "Epoch 2206: model set back to train mode\n", - "Epoch 2206: model parameters saved\n", - "Epoch 2207 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2207: avg_loss appended (1.5631)\n", - "Epoch 2207: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2207: accuracy appended (20.00%)\n", - "Epoch 2207: model set back to train mode\n", - "Epoch 2207: model parameters saved\n", - "Epoch 2208 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2208: avg_loss appended (1.5631)\n", - "Epoch 2208: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2208: accuracy appended (20.00%)\n", - "Epoch 2208: model set back to train mode\n", - "Epoch 2208: model parameters saved\n", - "Epoch 2209 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2209: avg_loss appended (1.5631)\n", - "Epoch 2209: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2209: accuracy appended (20.00%)\n", - "Epoch 2209: model set back to train mode\n", - "Epoch 2209: model parameters saved\n", - "Epoch 2210 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2210: avg_loss appended (1.5631)\n", - "Epoch 2210: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2210: accuracy appended (20.00%)\n", - "Epoch 2210: model set back to train mode\n", - "Epoch 2210: model parameters saved\n", - "Epoch 2211 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2211: avg_loss appended (1.5631)\n", - "Epoch 2211: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2211: accuracy appended (20.00%)\n", - "Epoch 2211: model set back to train mode\n", - "Epoch 2211: model parameters saved\n", - "Epoch 2212 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2212: avg_loss appended (1.5631)\n", - "Epoch 2212: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2212: accuracy appended (20.00%)\n", - "Epoch 2212: model set back to train mode\n", - "Epoch 2212: model parameters saved\n", - "Epoch 2213 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2213: avg_loss appended (1.5631)\n", - "Epoch 2213: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2213: accuracy appended (20.00%)\n", - "Epoch 2213: model set back to train mode\n", - "Epoch 2213: model parameters saved\n", - "Epoch 2214 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2214: avg_loss appended (1.5631)\n", - "Epoch 2214: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2214: accuracy appended (20.00%)\n", - "Epoch 2214: model set back to train mode\n", - "Epoch 2214: model parameters saved\n", - "Epoch 2215 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2215: avg_loss appended (1.5631)\n", - "Epoch 2215: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2215: accuracy appended (20.00%)\n", - "Epoch 2215: model set back to train mode\n", - "Epoch 2215: model parameters saved\n", - "Epoch 2216 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2216: avg_loss appended (1.5631)\n", - "Epoch 2216: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2216: accuracy appended (20.00%)\n", - "Epoch 2216: model set back to train mode\n", - "Epoch 2216: model parameters saved\n", - "Epoch 2217 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2217: avg_loss appended (1.5631)\n", - "Epoch 2217: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2217: accuracy appended (20.00%)\n", - "Epoch 2217: model set back to train mode\n", - "Epoch 2217: model parameters saved\n", - "Epoch 2218 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2218: avg_loss appended (1.5631)\n", - "Epoch 2218: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2218: accuracy appended (20.00%)\n", - "Epoch 2218: model set back to train mode\n", - "Epoch 2218: model parameters saved\n", - "Epoch 2219 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2219: avg_loss appended (1.5631)\n", - "Epoch 2219: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2219: accuracy appended (20.00%)\n", - "Epoch 2219: model set back to train mode\n", - "Epoch 2219: model parameters saved\n", - "Epoch 2220 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2220: avg_loss appended (1.5631)\n", - "Epoch 2220: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2220: accuracy appended (20.00%)\n", - "Epoch 2220: model set back to train mode\n", - "Epoch 2220: model parameters saved\n", - "Epoch 2221 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2221: avg_loss appended (1.5631)\n", - "Epoch 2221: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2221: accuracy appended (20.00%)\n", - "Epoch 2221: model set back to train mode\n", - "Epoch 2221: model parameters saved\n", - "Epoch 2222 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2222: avg_loss appended (1.5631)\n", - "Epoch 2222: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2222: accuracy appended (20.00%)\n", - "Epoch 2222: model set back to train mode\n", - "Epoch 2222: model parameters saved\n", - "Epoch 2223 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2223: avg_loss appended (1.5631)\n", - "Epoch 2223: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2223: accuracy appended (20.00%)\n", - "Epoch 2223: model set back to train mode\n", - "Epoch 2223: model parameters saved\n", - "Epoch 2224 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2224: avg_loss appended (1.5631)\n", - "Epoch 2224: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2224: accuracy appended (20.00%)\n", - "Epoch 2224: model set back to train mode\n", - "Epoch 2224: model parameters saved\n", - "Epoch 2225 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2225: avg_loss appended (1.5631)\n", - "Epoch 2225: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2225: accuracy appended (20.00%)\n", - "Epoch 2225: model set back to train mode\n", - "Epoch 2225: model parameters saved\n", - "Epoch 2226 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2226: avg_loss appended (1.5631)\n", - "Epoch 2226: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2226: accuracy appended (20.00%)\n", - "Epoch 2226: model set back to train mode\n", - "Epoch 2226: model parameters saved\n", - "Epoch 2227 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2227: avg_loss appended (1.5631)\n", - "Epoch 2227: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2227: accuracy appended (20.00%)\n", - "Epoch 2227: model set back to train mode\n", - "Epoch 2227: model parameters saved\n", - "Epoch 2228 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2228: avg_loss appended (1.5631)\n", - "Epoch 2228: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2228: accuracy appended (20.00%)\n", - "Epoch 2228: model set back to train mode\n", - "Epoch 2228: model parameters saved\n", - "Epoch 2229 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2229: avg_loss appended (1.5631)\n", - "Epoch 2229: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2229: accuracy appended (20.00%)\n", - "Epoch 2229: model set back to train mode\n", - "Epoch 2229: model parameters saved\n", - "Epoch 2230 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2230: avg_loss appended (1.5631)\n", - "Epoch 2230: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2230: accuracy appended (20.00%)\n", - "Epoch 2230: model set back to train mode\n", - "Epoch 2230: model parameters saved\n", - "Epoch 2231 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2231: avg_loss appended (1.5631)\n", - "Epoch 2231: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2231: accuracy appended (20.00%)\n", - "Epoch 2231: model set back to train mode\n", - "Epoch 2231: model parameters saved\n", - "Epoch 2232 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2232: avg_loss appended (1.5631)\n", - "Epoch 2232: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2232: accuracy appended (20.00%)\n", - "Epoch 2232: model set back to train mode\n", - "Epoch 2232: model parameters saved\n", - "Epoch 2233 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2233: avg_loss appended (1.5631)\n", - "Epoch 2233: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2233: accuracy appended (20.00%)\n", - "Epoch 2233: model set back to train mode\n", - "Epoch 2233: model parameters saved\n", - "Epoch 2234 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2234: avg_loss appended (1.5631)\n", - "Epoch 2234: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2234: accuracy appended (20.00%)\n", - "Epoch 2234: model set back to train mode\n", - "Epoch 2234: model parameters saved\n", - "Epoch 2235 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2235: avg_loss appended (1.5631)\n", - "Epoch 2235: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2235: accuracy appended (20.00%)\n", - "Epoch 2235: model set back to train mode\n", - "Epoch 2235: model parameters saved\n", - "Epoch 2236 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2236: avg_loss appended (1.5631)\n", - "Epoch 2236: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2236: accuracy appended (20.00%)\n", - "Epoch 2236: model set back to train mode\n", - "Epoch 2236: model parameters saved\n", - "Epoch 2237 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2237: avg_loss appended (1.5631)\n", - "Epoch 2237: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2237: accuracy appended (20.00%)\n", - "Epoch 2237: model set back to train mode\n", - "Epoch 2237: model parameters saved\n", - "Epoch 2238 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2238: avg_loss appended (1.5631)\n", - "Epoch 2238: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2238: accuracy appended (20.00%)\n", - "Epoch 2238: model set back to train mode\n", - "Epoch 2238: model parameters saved\n", - "Epoch 2239 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2239: avg_loss appended (1.5631)\n", - "Epoch 2239: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2239: accuracy appended (20.00%)\n", - "Epoch 2239: model set back to train mode\n", - "Epoch 2239: model parameters saved\n", - "Epoch 2240 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2240: avg_loss appended (1.5631)\n", - "Epoch 2240: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2240: accuracy appended (20.00%)\n", - "Epoch 2240: model set back to train mode\n", - "Epoch 2240: model parameters saved\n", - "Epoch 2241 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2241: avg_loss appended (1.5631)\n", - "Epoch 2241: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2241: accuracy appended (20.00%)\n", - "Epoch 2241: model set back to train mode\n", - "Epoch 2241: model parameters saved\n", - "Epoch 2242 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2242: avg_loss appended (1.5631)\n", - "Epoch 2242: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2242: accuracy appended (20.00%)\n", - "Epoch 2242: model set back to train mode\n", - "Epoch 2242: model parameters saved\n", - "Epoch 2243 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2243: avg_loss appended (1.5631)\n", - "Epoch 2243: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2243: accuracy appended (20.00%)\n", - "Epoch 2243: model set back to train mode\n", - "Epoch 2243: model parameters saved\n", - "Epoch 2244 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2244: avg_loss appended (1.5631)\n", - "Epoch 2244: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2244: accuracy appended (20.00%)\n", - "Epoch 2244: model set back to train mode\n", - "Epoch 2244: model parameters saved\n", - "Epoch 2245 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2245: avg_loss appended (1.5631)\n", - "Epoch 2245: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2245: accuracy appended (20.00%)\n", - "Epoch 2245: model set back to train mode\n", - "Epoch 2245: model parameters saved\n", - "Epoch 2246 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2246: avg_loss appended (1.5631)\n", - "Epoch 2246: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2246: accuracy appended (20.00%)\n", - "Epoch 2246: model set back to train mode\n", - "Epoch 2246: model parameters saved\n", - "Epoch 2247 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2247: avg_loss appended (1.5631)\n", - "Epoch 2247: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2247: accuracy appended (20.00%)\n", - "Epoch 2247: model set back to train mode\n", - "Epoch 2247: model parameters saved\n", - "Epoch 2248 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2248: avg_loss appended (1.5631)\n", - "Epoch 2248: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2248: accuracy appended (20.00%)\n", - "Epoch 2248: model set back to train mode\n", - "Epoch 2248: model parameters saved\n", - "Epoch 2249 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2249: avg_loss appended (1.5631)\n", - "Epoch 2249: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2249: accuracy appended (20.00%)\n", - "Epoch 2249: model set back to train mode\n", - "Epoch 2249: model parameters saved\n", - "Epoch 2250 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2250: avg_loss appended (1.5631)\n", - "Epoch 2250: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2250: accuracy appended (20.00%)\n", - "Epoch 2250: model set back to train mode\n", - "Epoch 2250: model parameters saved\n", - "Epoch 2251 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2251: avg_loss appended (1.5631)\n", - "Epoch 2251: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2251: accuracy appended (20.00%)\n", - "Epoch 2251: model set back to train mode\n", - "Epoch 2251: model parameters saved\n", - "Epoch 2252 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2252: avg_loss appended (1.5631)\n", - "Epoch 2252: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2252: accuracy appended (20.00%)\n", - "Epoch 2252: model set back to train mode\n", - "Epoch 2252: model parameters saved\n", - "Epoch 2253 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2253: avg_loss appended (1.5631)\n", - "Epoch 2253: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2253: accuracy appended (20.00%)\n", - "Epoch 2253: model set back to train mode\n", - "Epoch 2253: model parameters saved\n", - "Epoch 2254 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2254: avg_loss appended (1.5631)\n", - "Epoch 2254: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2254: accuracy appended (20.00%)\n", - "Epoch 2254: model set back to train mode\n", - "Epoch 2254: model parameters saved\n", - "Epoch 2255 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2255: avg_loss appended (1.5631)\n", - "Epoch 2255: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2255: accuracy appended (20.00%)\n", - "Epoch 2255: model set back to train mode\n", - "Epoch 2255: model parameters saved\n", - "Epoch 2256 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2256: avg_loss appended (1.5631)\n", - "Epoch 2256: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2256: accuracy appended (20.00%)\n", - "Epoch 2256: model set back to train mode\n", - "Epoch 2256: model parameters saved\n", - "Epoch 2257 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2257: avg_loss appended (1.5631)\n", - "Epoch 2257: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2257: accuracy appended (20.00%)\n", - "Epoch 2257: model set back to train mode\n", - "Epoch 2257: model parameters saved\n", - "Epoch 2258 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2258: avg_loss appended (1.5631)\n", - "Epoch 2258: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2258: accuracy appended (20.00%)\n", - "Epoch 2258: model set back to train mode\n", - "Epoch 2258: model parameters saved\n", - "Epoch 2259 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2259: avg_loss appended (1.5631)\n", - "Epoch 2259: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2259: accuracy appended (20.00%)\n", - "Epoch 2259: model set back to train mode\n", - "Epoch 2259: model parameters saved\n", - "Epoch 2260 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2260: avg_loss appended (1.5631)\n", - "Epoch 2260: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2260: accuracy appended (20.00%)\n", - "Epoch 2260: model set back to train mode\n", - "Epoch 2260: model parameters saved\n", - "Epoch 2261 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2261: avg_loss appended (1.5631)\n", - "Epoch 2261: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2261: accuracy appended (20.00%)\n", - "Epoch 2261: model set back to train mode\n", - "Epoch 2261: model parameters saved\n", - "Epoch 2262 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2262: avg_loss appended (1.5631)\n", - "Epoch 2262: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2262: accuracy appended (20.00%)\n", - "Epoch 2262: model set back to train mode\n", - "Epoch 2262: model parameters saved\n", - "Epoch 2263 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2263: avg_loss appended (1.5631)\n", - "Epoch 2263: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2263: accuracy appended (20.00%)\n", - "Epoch 2263: model set back to train mode\n", - "Epoch 2263: model parameters saved\n", - "Epoch 2264 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2264: avg_loss appended (1.5631)\n", - "Epoch 2264: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2264: accuracy appended (20.00%)\n", - "Epoch 2264: model set back to train mode\n", - "Epoch 2264: model parameters saved\n", - "Epoch 2265 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2265: avg_loss appended (1.5631)\n", - "Epoch 2265: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2265: accuracy appended (20.00%)\n", - "Epoch 2265: model set back to train mode\n", - "Epoch 2265: model parameters saved\n", - "Epoch 2266 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2266: avg_loss appended (1.5631)\n", - "Epoch 2266: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2266: accuracy appended (20.00%)\n", - "Epoch 2266: model set back to train mode\n", - "Epoch 2266: model parameters saved\n", - "Epoch 2267 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2267: avg_loss appended (1.5631)\n", - "Epoch 2267: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2267: accuracy appended (20.00%)\n", - "Epoch 2267: model set back to train mode\n", - "Epoch 2267: model parameters saved\n", - "Epoch 2268 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2268: avg_loss appended (1.5631)\n", - "Epoch 2268: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2268: accuracy appended (20.00%)\n", - "Epoch 2268: model set back to train mode\n", - "Epoch 2268: model parameters saved\n", - "Epoch 2269 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2269: avg_loss appended (1.5631)\n", - "Epoch 2269: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2269: accuracy appended (20.00%)\n", - "Epoch 2269: model set back to train mode\n", - "Epoch 2269: model parameters saved\n", - "Epoch 2270 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2270: avg_loss appended (1.5631)\n", - "Epoch 2270: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2270: accuracy appended (20.00%)\n", - "Epoch 2270: model set back to train mode\n", - "Epoch 2270: model parameters saved\n", - "Epoch 2271 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2271: avg_loss appended (1.5631)\n", - "Epoch 2271: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2271: accuracy appended (20.00%)\n", - "Epoch 2271: model set back to train mode\n", - "Epoch 2271: model parameters saved\n", - "Epoch 2272 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2272: avg_loss appended (1.5631)\n", - "Epoch 2272: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2272: accuracy appended (20.00%)\n", - "Epoch 2272: model set back to train mode\n", - "Epoch 2272: model parameters saved\n", - "Epoch 2273 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2273: avg_loss appended (1.5631)\n", - "Epoch 2273: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2273: accuracy appended (20.00%)\n", - "Epoch 2273: model set back to train mode\n", - "Epoch 2273: model parameters saved\n", - "Epoch 2274 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2274: avg_loss appended (1.5631)\n", - "Epoch 2274: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2274: accuracy appended (20.00%)\n", - "Epoch 2274: model set back to train mode\n", - "Epoch 2274: model parameters saved\n", - "Epoch 2275 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2275: avg_loss appended (1.5631)\n", - "Epoch 2275: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2275: accuracy appended (20.00%)\n", - "Epoch 2275: model set back to train mode\n", - "Epoch 2275: model parameters saved\n", - "Epoch 2276 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2276: avg_loss appended (1.5631)\n", - "Epoch 2276: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2276: accuracy appended (20.00%)\n", - "Epoch 2276: model set back to train mode\n", - "Epoch 2276: model parameters saved\n", - "Epoch 2277 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2277: avg_loss appended (1.5631)\n", - "Epoch 2277: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2277: accuracy appended (20.00%)\n", - "Epoch 2277: model set back to train mode\n", - "Epoch 2277: model parameters saved\n", - "Epoch 2278 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2278: avg_loss appended (1.5631)\n", - "Epoch 2278: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2278: accuracy appended (20.00%)\n", - "Epoch 2278: model set back to train mode\n", - "Epoch 2278: model parameters saved\n", - "Epoch 2279 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2279: avg_loss appended (1.5631)\n", - "Epoch 2279: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2279: accuracy appended (20.00%)\n", - "Epoch 2279: model set back to train mode\n", - "Epoch 2279: model parameters saved\n", - "Epoch 2280 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2280: avg_loss appended (1.5631)\n", - "Epoch 2280: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2280: accuracy appended (20.00%)\n", - "Epoch 2280: model set back to train mode\n", - "Epoch 2280: model parameters saved\n", - "Epoch 2281 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2281: avg_loss appended (1.5631)\n", - "Epoch 2281: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2281: accuracy appended (20.00%)\n", - "Epoch 2281: model set back to train mode\n", - "Epoch 2281: model parameters saved\n", - "Epoch 2282 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2282: avg_loss appended (1.5631)\n", - "Epoch 2282: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2282: accuracy appended (20.00%)\n", - "Epoch 2282: model set back to train mode\n", - "Epoch 2282: model parameters saved\n", - "Epoch 2283 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2283: avg_loss appended (1.5631)\n", - "Epoch 2283: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2283: accuracy appended (20.00%)\n", - "Epoch 2283: model set back to train mode\n", - "Epoch 2283: model parameters saved\n", - "Epoch 2284 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2284: avg_loss appended (1.5631)\n", - "Epoch 2284: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2284: accuracy appended (20.00%)\n", - "Epoch 2284: model set back to train mode\n", - "Epoch 2284: model parameters saved\n", - "Epoch 2285 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2285: avg_loss appended (1.5631)\n", - "Epoch 2285: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2285: accuracy appended (20.00%)\n", - "Epoch 2285: model set back to train mode\n", - "Epoch 2285: model parameters saved\n", - "Epoch 2286 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2286: avg_loss appended (1.5631)\n", - "Epoch 2286: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2286: accuracy appended (20.00%)\n", - "Epoch 2286: model set back to train mode\n", - "Epoch 2286: model parameters saved\n", - "Epoch 2287 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2287: avg_loss appended (1.5631)\n", - "Epoch 2287: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2287: accuracy appended (20.00%)\n", - "Epoch 2287: model set back to train mode\n", - "Epoch 2287: model parameters saved\n", - "Epoch 2288 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2288: avg_loss appended (1.5631)\n", - "Epoch 2288: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2288: accuracy appended (20.00%)\n", - "Epoch 2288: model set back to train mode\n", - "Epoch 2288: model parameters saved\n", - "Epoch 2289 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2289: avg_loss appended (1.5631)\n", - "Epoch 2289: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2289: accuracy appended (20.00%)\n", - "Epoch 2289: model set back to train mode\n", - "Epoch 2289: model parameters saved\n", - "Epoch 2290 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2290: avg_loss appended (1.5631)\n", - "Epoch 2290: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2290: accuracy appended (20.00%)\n", - "Epoch 2290: model set back to train mode\n", - "Epoch 2290: model parameters saved\n", - "Epoch 2291 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2291: avg_loss appended (1.5631)\n", - "Epoch 2291: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2291: accuracy appended (20.00%)\n", - "Epoch 2291: model set back to train mode\n", - "Epoch 2291: model parameters saved\n", - "Epoch 2292 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2292: avg_loss appended (1.5631)\n", - "Epoch 2292: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2292: accuracy appended (20.00%)\n", - "Epoch 2292: model set back to train mode\n", - "Epoch 2292: model parameters saved\n", - "Epoch 2293 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2293: avg_loss appended (1.5631)\n", - "Epoch 2293: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2293: accuracy appended (20.00%)\n", - "Epoch 2293: model set back to train mode\n", - "Epoch 2293: model parameters saved\n", - "Epoch 2294 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2294: avg_loss appended (1.5631)\n", - "Epoch 2294: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2294: accuracy appended (20.00%)\n", - "Epoch 2294: model set back to train mode\n", - "Epoch 2294: model parameters saved\n", - "Epoch 2295 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2295: avg_loss appended (1.5631)\n", - "Epoch 2295: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2295: accuracy appended (20.00%)\n", - "Epoch 2295: model set back to train mode\n", - "Epoch 2295: model parameters saved\n", - "Epoch 2296 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2296: avg_loss appended (1.5631)\n", - "Epoch 2296: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2296: accuracy appended (20.00%)\n", - "Epoch 2296: model set back to train mode\n", - "Epoch 2296: model parameters saved\n", - "Epoch 2297 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2297: avg_loss appended (1.5631)\n", - "Epoch 2297: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2297: accuracy appended (20.00%)\n", - "Epoch 2297: model set back to train mode\n", - "Epoch 2297: model parameters saved\n", - "Epoch 2298 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2298: avg_loss appended (1.5631)\n", - "Epoch 2298: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2298: accuracy appended (20.00%)\n", - "Epoch 2298: model set back to train mode\n", - "Epoch 2298: model parameters saved\n", - "Epoch 2299 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2299: avg_loss appended (1.5631)\n", - "Epoch 2299: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2299: accuracy appended (20.00%)\n", - "Epoch 2299: model set back to train mode\n", - "Epoch 2299: model parameters saved\n", - "Epoch 2300 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2300: avg_loss appended (1.5631)\n", - "Epoch 2300: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2300: accuracy appended (20.00%)\n", - "Epoch 2300: model set back to train mode\n", - "Epoch 2300: model parameters saved\n", - "Epoch 2300/10000, Loss: 1.5631, Accuracy: 20.00%\n", - "Epoch 2301 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2301: avg_loss appended (1.5631)\n", - "Epoch 2301: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2301: accuracy appended (20.00%)\n", - "Epoch 2301: model set back to train mode\n", - "Epoch 2301: model parameters saved\n", - "Epoch 2302 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2302: avg_loss appended (1.5631)\n", - "Epoch 2302: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2302: accuracy appended (20.00%)\n", - "Epoch 2302: model set back to train mode\n", - "Epoch 2302: model parameters saved\n", - "Epoch 2303 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2303: avg_loss appended (1.5631)\n", - "Epoch 2303: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2303: accuracy appended (20.00%)\n", - "Epoch 2303: model set back to train mode\n", - "Epoch 2303: model parameters saved\n", - "Epoch 2304 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2304: avg_loss appended (1.5631)\n", - "Epoch 2304: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2304: accuracy appended (20.00%)\n", - "Epoch 2304: model set back to train mode\n", - "Epoch 2304: model parameters saved\n", - "Epoch 2305 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2305: avg_loss appended (1.5631)\n", - "Epoch 2305: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2305: accuracy appended (20.00%)\n", - "Epoch 2305: model set back to train mode\n", - "Epoch 2305: model parameters saved\n", - "Epoch 2306 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2306: avg_loss appended (1.5631)\n", - "Epoch 2306: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2306: accuracy appended (20.00%)\n", - "Epoch 2306: model set back to train mode\n", - "Epoch 2306: model parameters saved\n", - "Epoch 2307 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2307: avg_loss appended (1.5631)\n", - "Epoch 2307: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2307: accuracy appended (20.00%)\n", - "Epoch 2307: model set back to train mode\n", - "Epoch 2307: model parameters saved\n", - "Epoch 2308 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2308: avg_loss appended (1.5631)\n", - "Epoch 2308: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2308: accuracy appended (20.00%)\n", - "Epoch 2308: model set back to train mode\n", - "Epoch 2308: model parameters saved\n", - "Epoch 2309 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2309: avg_loss appended (1.5631)\n", - "Epoch 2309: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2309: accuracy appended (20.00%)\n", - "Epoch 2309: model set back to train mode\n", - "Epoch 2309: model parameters saved\n", - "Epoch 2310 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2310: avg_loss appended (1.5631)\n", - "Epoch 2310: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2310: accuracy appended (20.00%)\n", - "Epoch 2310: model set back to train mode\n", - "Epoch 2310: model parameters saved\n", - "Epoch 2311 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2311: avg_loss appended (1.5631)\n", - "Epoch 2311: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2311: accuracy appended (20.00%)\n", - "Epoch 2311: model set back to train mode\n", - "Epoch 2311: model parameters saved\n", - "Epoch 2312 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2312: avg_loss appended (1.5631)\n", - "Epoch 2312: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2312: accuracy appended (20.00%)\n", - "Epoch 2312: model set back to train mode\n", - "Epoch 2312: model parameters saved\n", - "Epoch 2313 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2313: avg_loss appended (1.5631)\n", - "Epoch 2313: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2313: accuracy appended (20.00%)\n", - "Epoch 2313: model set back to train mode\n", - "Epoch 2313: model parameters saved\n", - "Epoch 2314 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2314: avg_loss appended (1.5631)\n", - "Epoch 2314: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2314: accuracy appended (20.00%)\n", - "Epoch 2314: model set back to train mode\n", - "Epoch 2314: model parameters saved\n", - "Epoch 2315 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2315: avg_loss appended (1.5631)\n", - "Epoch 2315: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2315: accuracy appended (20.00%)\n", - "Epoch 2315: model set back to train mode\n", - "Epoch 2315: model parameters saved\n", - "Epoch 2316 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2316: avg_loss appended (1.5631)\n", - "Epoch 2316: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2316: accuracy appended (20.00%)\n", - "Epoch 2316: model set back to train mode\n", - "Epoch 2316: model parameters saved\n", - "Epoch 2317 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2317: avg_loss appended (1.5631)\n", - "Epoch 2317: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2317: accuracy appended (20.00%)\n", - "Epoch 2317: model set back to train mode\n", - "Epoch 2317: model parameters saved\n", - "Epoch 2318 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2318: avg_loss appended (1.5631)\n", - "Epoch 2318: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2318: accuracy appended (20.00%)\n", - "Epoch 2318: model set back to train mode\n", - "Epoch 2318: model parameters saved\n", - "Epoch 2319 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2319: avg_loss appended (1.5631)\n", - "Epoch 2319: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2319: accuracy appended (20.00%)\n", - "Epoch 2319: model set back to train mode\n", - "Epoch 2319: model parameters saved\n", - "Epoch 2320 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2320: avg_loss appended (1.5631)\n", - "Epoch 2320: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2320: accuracy appended (20.00%)\n", - "Epoch 2320: model set back to train mode\n", - "Epoch 2320: model parameters saved\n", - "Epoch 2321 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2321: avg_loss appended (1.5631)\n", - "Epoch 2321: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2321: accuracy appended (20.00%)\n", - "Epoch 2321: model set back to train mode\n", - "Epoch 2321: model parameters saved\n", - "Epoch 2322 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2322: avg_loss appended (1.5631)\n", - "Epoch 2322: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2322: accuracy appended (20.00%)\n", - "Epoch 2322: model set back to train mode\n", - "Epoch 2322: model parameters saved\n", - "Epoch 2323 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2323: avg_loss appended (1.5631)\n", - "Epoch 2323: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2323: accuracy appended (20.00%)\n", - "Epoch 2323: model set back to train mode\n", - "Epoch 2323: model parameters saved\n", - "Epoch 2324 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2324: avg_loss appended (1.5631)\n", - "Epoch 2324: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2324: accuracy appended (20.00%)\n", - "Epoch 2324: model set back to train mode\n", - "Epoch 2324: model parameters saved\n", - "Epoch 2325 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2325: avg_loss appended (1.5631)\n", - "Epoch 2325: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2325: accuracy appended (20.00%)\n", - "Epoch 2325: model set back to train mode\n", - "Epoch 2325: model parameters saved\n", - "Epoch 2326 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2326: avg_loss appended (1.5631)\n", - "Epoch 2326: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2326: accuracy appended (20.00%)\n", - "Epoch 2326: model set back to train mode\n", - "Epoch 2326: model parameters saved\n", - "Epoch 2327 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2327: avg_loss appended (1.5631)\n", - "Epoch 2327: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2327: accuracy appended (20.00%)\n", - "Epoch 2327: model set back to train mode\n", - "Epoch 2327: model parameters saved\n", - "Epoch 2328 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2328: avg_loss appended (1.5631)\n", - "Epoch 2328: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2328: accuracy appended (20.00%)\n", - "Epoch 2328: model set back to train mode\n", - "Epoch 2328: model parameters saved\n", - "Epoch 2329 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2329: avg_loss appended (1.5631)\n", - "Epoch 2329: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2329: accuracy appended (20.00%)\n", - "Epoch 2329: model set back to train mode\n", - "Epoch 2329: model parameters saved\n", - "Epoch 2330 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2330: avg_loss appended (1.5631)\n", - "Epoch 2330: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2330: accuracy appended (20.00%)\n", - "Epoch 2330: model set back to train mode\n", - "Epoch 2330: model parameters saved\n", - "Epoch 2331 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2331: avg_loss appended (1.5631)\n", - "Epoch 2331: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2331: accuracy appended (20.00%)\n", - "Epoch 2331: model set back to train mode\n", - "Epoch 2331: model parameters saved\n", - "Epoch 2332 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2332: avg_loss appended (1.5631)\n", - "Epoch 2332: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2332: accuracy appended (20.00%)\n", - "Epoch 2332: model set back to train mode\n", - "Epoch 2332: model parameters saved\n", - "Epoch 2333 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2333: avg_loss appended (1.5631)\n", - "Epoch 2333: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2333: accuracy appended (20.00%)\n", - "Epoch 2333: model set back to train mode\n", - "Epoch 2333: model parameters saved\n", - "Epoch 2334 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2334: avg_loss appended (1.5631)\n", - "Epoch 2334: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2334: accuracy appended (20.00%)\n", - "Epoch 2334: model set back to train mode\n", - "Epoch 2334: model parameters saved\n", - "Epoch 2335 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2335: avg_loss appended (1.5631)\n", - "Epoch 2335: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2335: accuracy appended (20.00%)\n", - "Epoch 2335: model set back to train mode\n", - "Epoch 2335: model parameters saved\n", - "Epoch 2336 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2336: avg_loss appended (1.5631)\n", - "Epoch 2336: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2336: accuracy appended (20.00%)\n", - "Epoch 2336: model set back to train mode\n", - "Epoch 2336: model parameters saved\n", - "Epoch 2337 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2337: avg_loss appended (1.5631)\n", - "Epoch 2337: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2337: accuracy appended (20.00%)\n", - "Epoch 2337: model set back to train mode\n", - "Epoch 2337: model parameters saved\n", - "Epoch 2338 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2338: avg_loss appended (1.5631)\n", - "Epoch 2338: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2338: accuracy appended (20.00%)\n", - "Epoch 2338: model set back to train mode\n", - "Epoch 2338: model parameters saved\n", - "Epoch 2339 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2339: avg_loss appended (1.5631)\n", - "Epoch 2339: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2339: accuracy appended (20.00%)\n", - "Epoch 2339: model set back to train mode\n", - "Epoch 2339: model parameters saved\n", - "Epoch 2340 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2340: avg_loss appended (1.5631)\n", - "Epoch 2340: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2340: accuracy appended (20.00%)\n", - "Epoch 2340: model set back to train mode\n", - "Epoch 2340: model parameters saved\n", - "Epoch 2341 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2341: avg_loss appended (1.5631)\n", - "Epoch 2341: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2341: accuracy appended (20.00%)\n", - "Epoch 2341: model set back to train mode\n", - "Epoch 2341: model parameters saved\n", - "Epoch 2342 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2342: avg_loss appended (1.5631)\n", - "Epoch 2342: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2342: accuracy appended (20.00%)\n", - "Epoch 2342: model set back to train mode\n", - "Epoch 2342: model parameters saved\n", - "Epoch 2343 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2343: avg_loss appended (1.5631)\n", - "Epoch 2343: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2343: accuracy appended (20.00%)\n", - "Epoch 2343: model set back to train mode\n", - "Epoch 2343: model parameters saved\n", - "Epoch 2344 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2344: avg_loss appended (1.5631)\n", - "Epoch 2344: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2344: accuracy appended (20.00%)\n", - "Epoch 2344: model set back to train mode\n", - "Epoch 2344: model parameters saved\n", - "Epoch 2345 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2345: avg_loss appended (1.5631)\n", - "Epoch 2345: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2345: accuracy appended (20.00%)\n", - "Epoch 2345: model set back to train mode\n", - "Epoch 2345: model parameters saved\n", - "Epoch 2346 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2346: avg_loss appended (1.5631)\n", - "Epoch 2346: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2346: accuracy appended (20.00%)\n", - "Epoch 2346: model set back to train mode\n", - "Epoch 2346: model parameters saved\n", - "Epoch 2347 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2347: avg_loss appended (1.5631)\n", - "Epoch 2347: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2347: accuracy appended (20.00%)\n", - "Epoch 2347: model set back to train mode\n", - "Epoch 2347: model parameters saved\n", - "Epoch 2348 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2348: avg_loss appended (1.5631)\n", - "Epoch 2348: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2348: accuracy appended (20.00%)\n", - "Epoch 2348: model set back to train mode\n", - "Epoch 2348: model parameters saved\n", - "Epoch 2349 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2349: avg_loss appended (1.5631)\n", - "Epoch 2349: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2349: accuracy appended (20.00%)\n", - "Epoch 2349: model set back to train mode\n", - "Epoch 2349: model parameters saved\n", - "Epoch 2350 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2350: avg_loss appended (1.5631)\n", - "Epoch 2350: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2350: accuracy appended (20.00%)\n", - "Epoch 2350: model set back to train mode\n", - "Epoch 2350: model parameters saved\n", - "Epoch 2351 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2351: avg_loss appended (1.5631)\n", - "Epoch 2351: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2351: accuracy appended (20.00%)\n", - "Epoch 2351: model set back to train mode\n", - "Epoch 2351: model parameters saved\n", - "Epoch 2352 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2352: avg_loss appended (1.5631)\n", - "Epoch 2352: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2352: accuracy appended (20.00%)\n", - "Epoch 2352: model set back to train mode\n", - "Epoch 2352: model parameters saved\n", - "Epoch 2353 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2353: avg_loss appended (1.5631)\n", - "Epoch 2353: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2353: accuracy appended (20.00%)\n", - "Epoch 2353: model set back to train mode\n", - "Epoch 2353: model parameters saved\n", - "Epoch 2354 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2354: avg_loss appended (1.5631)\n", - "Epoch 2354: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2354: accuracy appended (20.00%)\n", - "Epoch 2354: model set back to train mode\n", - "Epoch 2354: model parameters saved\n", - "Epoch 2355 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2355: avg_loss appended (1.5631)\n", - "Epoch 2355: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2355: accuracy appended (20.00%)\n", - "Epoch 2355: model set back to train mode\n", - "Epoch 2355: model parameters saved\n", - "Epoch 2356 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2356: avg_loss appended (1.5631)\n", - "Epoch 2356: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2356: accuracy appended (20.00%)\n", - "Epoch 2356: model set back to train mode\n", - "Epoch 2356: model parameters saved\n", - "Epoch 2357 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2357: avg_loss appended (1.5631)\n", - "Epoch 2357: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2357: accuracy appended (20.00%)\n", - "Epoch 2357: model set back to train mode\n", - "Epoch 2357: model parameters saved\n", - "Epoch 2358 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2358: avg_loss appended (1.5631)\n", - "Epoch 2358: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2358: accuracy appended (20.00%)\n", - "Epoch 2358: model set back to train mode\n", - "Epoch 2358: model parameters saved\n", - "Epoch 2359 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2359: avg_loss appended (1.5631)\n", - "Epoch 2359: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2359: accuracy appended (20.00%)\n", - "Epoch 2359: model set back to train mode\n", - "Epoch 2359: model parameters saved\n", - "Epoch 2360 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2360: avg_loss appended (1.5631)\n", - "Epoch 2360: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2360: accuracy appended (20.00%)\n", - "Epoch 2360: model set back to train mode\n", - "Epoch 2360: model parameters saved\n", - "Epoch 2361 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2361: avg_loss appended (1.5631)\n", - "Epoch 2361: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2361: accuracy appended (20.00%)\n", - "Epoch 2361: model set back to train mode\n", - "Epoch 2361: model parameters saved\n", - "Epoch 2362 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2362: avg_loss appended (1.5631)\n", - "Epoch 2362: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2362: accuracy appended (20.00%)\n", - "Epoch 2362: model set back to train mode\n", - "Epoch 2362: model parameters saved\n", - "Epoch 2363 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2363: avg_loss appended (1.5631)\n", - "Epoch 2363: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2363: accuracy appended (20.00%)\n", - "Epoch 2363: model set back to train mode\n", - "Epoch 2363: model parameters saved\n", - "Epoch 2364 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2364: avg_loss appended (1.5631)\n", - "Epoch 2364: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2364: accuracy appended (20.00%)\n", - "Epoch 2364: model set back to train mode\n", - "Epoch 2364: model parameters saved\n", - "Epoch 2365 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2365: avg_loss appended (1.5631)\n", - "Epoch 2365: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2365: accuracy appended (20.00%)\n", - "Epoch 2365: model set back to train mode\n", - "Epoch 2365: model parameters saved\n", - "Epoch 2366 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2366: avg_loss appended (1.5631)\n", - "Epoch 2366: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2366: accuracy appended (20.00%)\n", - "Epoch 2366: model set back to train mode\n", - "Epoch 2366: model parameters saved\n", - "Epoch 2367 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2367: avg_loss appended (1.5631)\n", - "Epoch 2367: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2367: accuracy appended (20.00%)\n", - "Epoch 2367: model set back to train mode\n", - "Epoch 2367: model parameters saved\n", - "Epoch 2368 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2368: avg_loss appended (1.5631)\n", - "Epoch 2368: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2368: accuracy appended (20.00%)\n", - "Epoch 2368: model set back to train mode\n", - "Epoch 2368: model parameters saved\n", - "Epoch 2369 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2369: avg_loss appended (1.5631)\n", - "Epoch 2369: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2369: accuracy appended (20.00%)\n", - "Epoch 2369: model set back to train mode\n", - "Epoch 2369: model parameters saved\n", - "Epoch 2370 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2370: avg_loss appended (1.5631)\n", - "Epoch 2370: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2370: accuracy appended (20.00%)\n", - "Epoch 2370: model set back to train mode\n", - "Epoch 2370: model parameters saved\n", - "Epoch 2371 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2371: avg_loss appended (1.5631)\n", - "Epoch 2371: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2371: accuracy appended (20.00%)\n", - "Epoch 2371: model set back to train mode\n", - "Epoch 2371: model parameters saved\n", - "Epoch 2372 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2372: avg_loss appended (1.5631)\n", - "Epoch 2372: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2372: accuracy appended (20.00%)\n", - "Epoch 2372: model set back to train mode\n", - "Epoch 2372: model parameters saved\n", - "Epoch 2373 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2373: avg_loss appended (1.5631)\n", - "Epoch 2373: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2373: accuracy appended (20.00%)\n", - "Epoch 2373: model set back to train mode\n", - "Epoch 2373: model parameters saved\n", - "Epoch 2374 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2374: avg_loss appended (1.5631)\n", - "Epoch 2374: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2374: accuracy appended (20.00%)\n", - "Epoch 2374: model set back to train mode\n", - "Epoch 2374: model parameters saved\n", - "Epoch 2375 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2375: avg_loss appended (1.5631)\n", - "Epoch 2375: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2375: accuracy appended (20.00%)\n", - "Epoch 2375: model set back to train mode\n", - "Epoch 2375: model parameters saved\n", - "Epoch 2376 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2376: avg_loss appended (1.5631)\n", - "Epoch 2376: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2376: accuracy appended (20.00%)\n", - "Epoch 2376: model set back to train mode\n", - "Epoch 2376: model parameters saved\n", - "Epoch 2377 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2377: avg_loss appended (1.5631)\n", - "Epoch 2377: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2377: accuracy appended (20.00%)\n", - "Epoch 2377: model set back to train mode\n", - "Epoch 2377: model parameters saved\n", - "Epoch 2378 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2378: avg_loss appended (1.5631)\n", - "Epoch 2378: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2378: accuracy appended (20.00%)\n", - "Epoch 2378: model set back to train mode\n", - "Epoch 2378: model parameters saved\n", - "Epoch 2379 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2379: avg_loss appended (1.5631)\n", - "Epoch 2379: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2379: accuracy appended (20.00%)\n", - "Epoch 2379: model set back to train mode\n", - "Epoch 2379: model parameters saved\n", - "Epoch 2380 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2380: avg_loss appended (1.5631)\n", - "Epoch 2380: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2380: accuracy appended (20.00%)\n", - "Epoch 2380: model set back to train mode\n", - "Epoch 2380: model parameters saved\n", - "Epoch 2381 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5631)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5631)\n", - "Epoch 2381: avg_loss appended (1.5631)\n", - "Epoch 2381: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2381: accuracy appended (20.00%)\n", - "Epoch 2381: model set back to train mode\n", - "Epoch 2381: model parameters saved\n", - "Epoch 2382 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2382: avg_loss appended (1.5630)\n", - "Epoch 2382: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2382: accuracy appended (20.00%)\n", - "Epoch 2382: model set back to train mode\n", - "Epoch 2382: model parameters saved\n", - "Epoch 2383 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2383: avg_loss appended (1.5630)\n", - "Epoch 2383: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2383: accuracy appended (20.00%)\n", - "Epoch 2383: model set back to train mode\n", - "Epoch 2383: model parameters saved\n", - "Epoch 2384 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2384: avg_loss appended (1.5630)\n", - "Epoch 2384: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2384: accuracy appended (20.00%)\n", - "Epoch 2384: model set back to train mode\n", - "Epoch 2384: model parameters saved\n", - "Epoch 2385 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2385: avg_loss appended (1.5630)\n", - "Epoch 2385: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2385: accuracy appended (20.00%)\n", - "Epoch 2385: model set back to train mode\n", - "Epoch 2385: model parameters saved\n", - "Epoch 2386 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2386: avg_loss appended (1.5630)\n", - "Epoch 2386: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2386: accuracy appended (20.00%)\n", - "Epoch 2386: model set back to train mode\n", - "Epoch 2386: model parameters saved\n", - "Epoch 2387 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2387: avg_loss appended (1.5630)\n", - "Epoch 2387: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2387: accuracy appended (20.00%)\n", - "Epoch 2387: model set back to train mode\n", - "Epoch 2387: model parameters saved\n", - "Epoch 2388 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2388: avg_loss appended (1.5630)\n", - "Epoch 2388: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2388: accuracy appended (20.00%)\n", - "Epoch 2388: model set back to train mode\n", - "Epoch 2388: model parameters saved\n", - "Epoch 2389 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2389: avg_loss appended (1.5630)\n", - "Epoch 2389: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2389: accuracy appended (20.00%)\n", - "Epoch 2389: model set back to train mode\n", - "Epoch 2389: model parameters saved\n", - "Epoch 2390 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2390: avg_loss appended (1.5630)\n", - "Epoch 2390: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2390: accuracy appended (20.00%)\n", - "Epoch 2390: model set back to train mode\n", - "Epoch 2390: model parameters saved\n", - "Epoch 2391 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2391: avg_loss appended (1.5630)\n", - "Epoch 2391: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2391: accuracy appended (20.00%)\n", - "Epoch 2391: model set back to train mode\n", - "Epoch 2391: model parameters saved\n", - "Epoch 2392 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2392: avg_loss appended (1.5630)\n", - "Epoch 2392: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2392: accuracy appended (20.00%)\n", - "Epoch 2392: model set back to train mode\n", - "Epoch 2392: model parameters saved\n", - "Epoch 2393 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2393: avg_loss appended (1.5630)\n", - "Epoch 2393: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2393: accuracy appended (20.00%)\n", - "Epoch 2393: model set back to train mode\n", - "Epoch 2393: model parameters saved\n", - "Epoch 2394 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2394: avg_loss appended (1.5630)\n", - "Epoch 2394: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2394: accuracy appended (20.00%)\n", - "Epoch 2394: model set back to train mode\n", - "Epoch 2394: model parameters saved\n", - "Epoch 2395 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2395: avg_loss appended (1.5630)\n", - "Epoch 2395: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2395: accuracy appended (20.00%)\n", - "Epoch 2395: model set back to train mode\n", - "Epoch 2395: model parameters saved\n", - "Epoch 2396 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2396: avg_loss appended (1.5630)\n", - "Epoch 2396: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2396: accuracy appended (20.00%)\n", - "Epoch 2396: model set back to train mode\n", - "Epoch 2396: model parameters saved\n", - "Epoch 2397 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2397: avg_loss appended (1.5630)\n", - "Epoch 2397: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2397: accuracy appended (20.00%)\n", - "Epoch 2397: model set back to train mode\n", - "Epoch 2397: model parameters saved\n", - "Epoch 2398 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2398: avg_loss appended (1.5630)\n", - "Epoch 2398: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2398: accuracy appended (20.00%)\n", - "Epoch 2398: model set back to train mode\n", - "Epoch 2398: model parameters saved\n", - "Epoch 2399 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2399: avg_loss appended (1.5630)\n", - "Epoch 2399: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2399: accuracy appended (20.00%)\n", - "Epoch 2399: model set back to train mode\n", - "Epoch 2399: model parameters saved\n", - "Epoch 2400 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2400: avg_loss appended (1.5630)\n", - "Epoch 2400: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2400: accuracy appended (20.00%)\n", - "Epoch 2400: model set back to train mode\n", - "Epoch 2400: model parameters saved\n", - "Epoch 2400/10000, Loss: 1.5630, Accuracy: 20.00%\n", - "Epoch 2401 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2401: avg_loss appended (1.5630)\n", - "Epoch 2401: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2401: accuracy appended (20.00%)\n", - "Epoch 2401: model set back to train mode\n", - "Epoch 2401: model parameters saved\n", - "Epoch 2402 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2402: avg_loss appended (1.5630)\n", - "Epoch 2402: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2402: accuracy appended (20.00%)\n", - "Epoch 2402: model set back to train mode\n", - "Epoch 2402: model parameters saved\n", - "Epoch 2403 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2403: avg_loss appended (1.5630)\n", - "Epoch 2403: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2403: accuracy appended (20.00%)\n", - "Epoch 2403: model set back to train mode\n", - "Epoch 2403: model parameters saved\n", - "Epoch 2404 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2404: avg_loss appended (1.5630)\n", - "Epoch 2404: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2404: accuracy appended (20.00%)\n", - "Epoch 2404: model set back to train mode\n", - "Epoch 2404: model parameters saved\n", - "Epoch 2405 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2405: avg_loss appended (1.5630)\n", - "Epoch 2405: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2405: accuracy appended (20.00%)\n", - "Epoch 2405: model set back to train mode\n", - "Epoch 2405: model parameters saved\n", - "Epoch 2406 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2406: avg_loss appended (1.5630)\n", - "Epoch 2406: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2406: accuracy appended (20.00%)\n", - "Epoch 2406: model set back to train mode\n", - "Epoch 2406: model parameters saved\n", - "Epoch 2407 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2407: avg_loss appended (1.5630)\n", - "Epoch 2407: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2407: accuracy appended (20.00%)\n", - "Epoch 2407: model set back to train mode\n", - "Epoch 2407: model parameters saved\n", - "Epoch 2408 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2408: avg_loss appended (1.5630)\n", - "Epoch 2408: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2408: accuracy appended (20.00%)\n", - "Epoch 2408: model set back to train mode\n", - "Epoch 2408: model parameters saved\n", - "Epoch 2409 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2409: avg_loss appended (1.5630)\n", - "Epoch 2409: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2409: accuracy appended (20.00%)\n", - "Epoch 2409: model set back to train mode\n", - "Epoch 2409: model parameters saved\n", - "Epoch 2410 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2410: avg_loss appended (1.5630)\n", - "Epoch 2410: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2410: accuracy appended (20.00%)\n", - "Epoch 2410: model set back to train mode\n", - "Epoch 2410: model parameters saved\n", - "Epoch 2411 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2411: avg_loss appended (1.5630)\n", - "Epoch 2411: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2411: accuracy appended (20.00%)\n", - "Epoch 2411: model set back to train mode\n", - "Epoch 2411: model parameters saved\n", - "Epoch 2412 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2412: avg_loss appended (1.5630)\n", - "Epoch 2412: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2412: accuracy appended (20.00%)\n", - "Epoch 2412: model set back to train mode\n", - "Epoch 2412: model parameters saved\n", - "Epoch 2413 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2413: avg_loss appended (1.5630)\n", - "Epoch 2413: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2413: accuracy appended (20.00%)\n", - "Epoch 2413: model set back to train mode\n", - "Epoch 2413: model parameters saved\n", - "Epoch 2414 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2414: avg_loss appended (1.5630)\n", - "Epoch 2414: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2414: accuracy appended (20.00%)\n", - "Epoch 2414: model set back to train mode\n", - "Epoch 2414: model parameters saved\n", - "Epoch 2415 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2415: avg_loss appended (1.5630)\n", - "Epoch 2415: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2415: accuracy appended (20.00%)\n", - "Epoch 2415: model set back to train mode\n", - "Epoch 2415: model parameters saved\n", - "Epoch 2416 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2416: avg_loss appended (1.5630)\n", - "Epoch 2416: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2416: accuracy appended (20.00%)\n", - "Epoch 2416: model set back to train mode\n", - "Epoch 2416: model parameters saved\n", - "Epoch 2417 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2417: avg_loss appended (1.5630)\n", - "Epoch 2417: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2417: accuracy appended (20.00%)\n", - "Epoch 2417: model set back to train mode\n", - "Epoch 2417: model parameters saved\n", - "Epoch 2418 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2418: avg_loss appended (1.5630)\n", - "Epoch 2418: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2418: accuracy appended (20.00%)\n", - "Epoch 2418: model set back to train mode\n", - "Epoch 2418: model parameters saved\n", - "Epoch 2419 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2419: avg_loss appended (1.5630)\n", - "Epoch 2419: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2419: accuracy appended (20.00%)\n", - "Epoch 2419: model set back to train mode\n", - "Epoch 2419: model parameters saved\n", - "Epoch 2420 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2420: avg_loss appended (1.5630)\n", - "Epoch 2420: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2420: accuracy appended (20.00%)\n", - "Epoch 2420: model set back to train mode\n", - "Epoch 2420: model parameters saved\n", - "Epoch 2421 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2421: avg_loss appended (1.5630)\n", - "Epoch 2421: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2421: accuracy appended (20.00%)\n", - "Epoch 2421: model set back to train mode\n", - "Epoch 2421: model parameters saved\n", - "Epoch 2422 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2422: avg_loss appended (1.5630)\n", - "Epoch 2422: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2422: accuracy appended (20.00%)\n", - "Epoch 2422: model set back to train mode\n", - "Epoch 2422: model parameters saved\n", - "Epoch 2423 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2423: avg_loss appended (1.5630)\n", - "Epoch 2423: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2423: accuracy appended (20.00%)\n", - "Epoch 2423: model set back to train mode\n", - "Epoch 2423: model parameters saved\n", - "Epoch 2424 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2424: avg_loss appended (1.5630)\n", - "Epoch 2424: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2424: accuracy appended (20.00%)\n", - "Epoch 2424: model set back to train mode\n", - "Epoch 2424: model parameters saved\n", - "Epoch 2425 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2425: avg_loss appended (1.5630)\n", - "Epoch 2425: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2425: accuracy appended (20.00%)\n", - "Epoch 2425: model set back to train mode\n", - "Epoch 2425: model parameters saved\n", - "Epoch 2426 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2426: avg_loss appended (1.5630)\n", - "Epoch 2426: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2426: accuracy appended (20.00%)\n", - "Epoch 2426: model set back to train mode\n", - "Epoch 2426: model parameters saved\n", - "Epoch 2427 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2427: avg_loss appended (1.5630)\n", - "Epoch 2427: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2427: accuracy appended (20.00%)\n", - "Epoch 2427: model set back to train mode\n", - "Epoch 2427: model parameters saved\n", - "Epoch 2428 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2428: avg_loss appended (1.5630)\n", - "Epoch 2428: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2428: accuracy appended (20.00%)\n", - "Epoch 2428: model set back to train mode\n", - "Epoch 2428: model parameters saved\n", - "Epoch 2429 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2429: avg_loss appended (1.5630)\n", - "Epoch 2429: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2429: accuracy appended (20.00%)\n", - "Epoch 2429: model set back to train mode\n", - "Epoch 2429: model parameters saved\n", - "Epoch 2430 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2430: avg_loss appended (1.5630)\n", - "Epoch 2430: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2430: accuracy appended (20.00%)\n", - "Epoch 2430: model set back to train mode\n", - "Epoch 2430: model parameters saved\n", - "Epoch 2431 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2431: avg_loss appended (1.5630)\n", - "Epoch 2431: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2431: accuracy appended (20.00%)\n", - "Epoch 2431: model set back to train mode\n", - "Epoch 2431: model parameters saved\n", - "Epoch 2432 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2432: avg_loss appended (1.5630)\n", - "Epoch 2432: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2432: accuracy appended (20.00%)\n", - "Epoch 2432: model set back to train mode\n", - "Epoch 2432: model parameters saved\n", - "Epoch 2433 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2433: avg_loss appended (1.5630)\n", - "Epoch 2433: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2433: accuracy appended (20.00%)\n", - "Epoch 2433: model set back to train mode\n", - "Epoch 2433: model parameters saved\n", - "Epoch 2434 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2434: avg_loss appended (1.5630)\n", - "Epoch 2434: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2434: accuracy appended (20.00%)\n", - "Epoch 2434: model set back to train mode\n", - "Epoch 2434: model parameters saved\n", - "Epoch 2435 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2435: avg_loss appended (1.5630)\n", - "Epoch 2435: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2435: accuracy appended (20.00%)\n", - "Epoch 2435: model set back to train mode\n", - "Epoch 2435: model parameters saved\n", - "Epoch 2436 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2436: avg_loss appended (1.5630)\n", - "Epoch 2436: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2436: accuracy appended (20.00%)\n", - "Epoch 2436: model set back to train mode\n", - "Epoch 2436: model parameters saved\n", - "Epoch 2437 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2437: avg_loss appended (1.5630)\n", - "Epoch 2437: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2437: accuracy appended (20.00%)\n", - "Epoch 2437: model set back to train mode\n", - "Epoch 2437: model parameters saved\n", - "Epoch 2438 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2438: avg_loss appended (1.5630)\n", - "Epoch 2438: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2438: accuracy appended (20.00%)\n", - "Epoch 2438: model set back to train mode\n", - "Epoch 2438: model parameters saved\n", - "Epoch 2439 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2439: avg_loss appended (1.5630)\n", - "Epoch 2439: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2439: accuracy appended (20.00%)\n", - "Epoch 2439: model set back to train mode\n", - "Epoch 2439: model parameters saved\n", - "Epoch 2440 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2440: avg_loss appended (1.5630)\n", - "Epoch 2440: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2440: accuracy appended (20.00%)\n", - "Epoch 2440: model set back to train mode\n", - "Epoch 2440: model parameters saved\n", - "Epoch 2441 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2441: avg_loss appended (1.5630)\n", - "Epoch 2441: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2441: accuracy appended (20.00%)\n", - "Epoch 2441: model set back to train mode\n", - "Epoch 2441: model parameters saved\n", - "Epoch 2442 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2442: avg_loss appended (1.5630)\n", - "Epoch 2442: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2442: accuracy appended (20.00%)\n", - "Epoch 2442: model set back to train mode\n", - "Epoch 2442: model parameters saved\n", - "Epoch 2443 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2443: avg_loss appended (1.5630)\n", - "Epoch 2443: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2443: accuracy appended (20.00%)\n", - "Epoch 2443: model set back to train mode\n", - "Epoch 2443: model parameters saved\n", - "Epoch 2444 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2444: avg_loss appended (1.5630)\n", - "Epoch 2444: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2444: accuracy appended (20.00%)\n", - "Epoch 2444: model set back to train mode\n", - "Epoch 2444: model parameters saved\n", - "Epoch 2445 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2445: avg_loss appended (1.5630)\n", - "Epoch 2445: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2445: accuracy appended (20.00%)\n", - "Epoch 2445: model set back to train mode\n", - "Epoch 2445: model parameters saved\n", - "Epoch 2446 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2446: avg_loss appended (1.5630)\n", - "Epoch 2446: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2446: accuracy appended (20.00%)\n", - "Epoch 2446: model set back to train mode\n", - "Epoch 2446: model parameters saved\n", - "Epoch 2447 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2447: avg_loss appended (1.5630)\n", - "Epoch 2447: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2447: accuracy appended (20.00%)\n", - "Epoch 2447: model set back to train mode\n", - "Epoch 2447: model parameters saved\n", - "Epoch 2448 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2448: avg_loss appended (1.5630)\n", - "Epoch 2448: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2448: accuracy appended (20.00%)\n", - "Epoch 2448: model set back to train mode\n", - "Epoch 2448: model parameters saved\n", - "Epoch 2449 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2449: avg_loss appended (1.5630)\n", - "Epoch 2449: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2449: accuracy appended (20.00%)\n", - "Epoch 2449: model set back to train mode\n", - "Epoch 2449: model parameters saved\n", - "Epoch 2450 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2450: avg_loss appended (1.5630)\n", - "Epoch 2450: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2450: accuracy appended (20.00%)\n", - "Epoch 2450: model set back to train mode\n", - "Epoch 2450: model parameters saved\n", - "Epoch 2451 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2451: avg_loss appended (1.5630)\n", - "Epoch 2451: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2451: accuracy appended (20.00%)\n", - "Epoch 2451: model set back to train mode\n", - "Epoch 2451: model parameters saved\n", - "Epoch 2452 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2452: avg_loss appended (1.5630)\n", - "Epoch 2452: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2452: accuracy appended (20.00%)\n", - "Epoch 2452: model set back to train mode\n", - "Epoch 2452: model parameters saved\n", - "Epoch 2453 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2453: avg_loss appended (1.5630)\n", - "Epoch 2453: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2453: accuracy appended (20.00%)\n", - "Epoch 2453: model set back to train mode\n", - "Epoch 2453: model parameters saved\n", - "Epoch 2454 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2454: avg_loss appended (1.5630)\n", - "Epoch 2454: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2454: accuracy appended (20.00%)\n", - "Epoch 2454: model set back to train mode\n", - "Epoch 2454: model parameters saved\n", - "Epoch 2455 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2455: avg_loss appended (1.5630)\n", - "Epoch 2455: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2455: accuracy appended (20.00%)\n", - "Epoch 2455: model set back to train mode\n", - "Epoch 2455: model parameters saved\n", - "Epoch 2456 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2456: avg_loss appended (1.5630)\n", - "Epoch 2456: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2456: accuracy appended (20.00%)\n", - "Epoch 2456: model set back to train mode\n", - "Epoch 2456: model parameters saved\n", - "Epoch 2457 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2457: avg_loss appended (1.5630)\n", - "Epoch 2457: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2457: accuracy appended (20.00%)\n", - "Epoch 2457: model set back to train mode\n", - "Epoch 2457: model parameters saved\n", - "Epoch 2458 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2458: avg_loss appended (1.5630)\n", - "Epoch 2458: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2458: accuracy appended (20.00%)\n", - "Epoch 2458: model set back to train mode\n", - "Epoch 2458: model parameters saved\n", - "Epoch 2459 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2459: avg_loss appended (1.5630)\n", - "Epoch 2459: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2459: accuracy appended (20.00%)\n", - "Epoch 2459: model set back to train mode\n", - "Epoch 2459: model parameters saved\n", - "Epoch 2460 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2460: avg_loss appended (1.5630)\n", - "Epoch 2460: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2460: accuracy appended (20.00%)\n", - "Epoch 2460: model set back to train mode\n", - "Epoch 2460: model parameters saved\n", - "Epoch 2461 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2461: avg_loss appended (1.5630)\n", - "Epoch 2461: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2461: accuracy appended (20.00%)\n", - "Epoch 2461: model set back to train mode\n", - "Epoch 2461: model parameters saved\n", - "Epoch 2462 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2462: avg_loss appended (1.5630)\n", - "Epoch 2462: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2462: accuracy appended (20.00%)\n", - "Epoch 2462: model set back to train mode\n", - "Epoch 2462: model parameters saved\n", - "Epoch 2463 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2463: avg_loss appended (1.5630)\n", - "Epoch 2463: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2463: accuracy appended (20.00%)\n", - "Epoch 2463: model set back to train mode\n", - "Epoch 2463: model parameters saved\n", - "Epoch 2464 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2464: avg_loss appended (1.5630)\n", - "Epoch 2464: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2464: accuracy appended (20.00%)\n", - "Epoch 2464: model set back to train mode\n", - "Epoch 2464: model parameters saved\n", - "Epoch 2465 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2465: avg_loss appended (1.5630)\n", - "Epoch 2465: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2465: accuracy appended (20.00%)\n", - "Epoch 2465: model set back to train mode\n", - "Epoch 2465: model parameters saved\n", - "Epoch 2466 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2466: avg_loss appended (1.5630)\n", - "Epoch 2466: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2466: accuracy appended (20.00%)\n", - "Epoch 2466: model set back to train mode\n", - "Epoch 2466: model parameters saved\n", - "Epoch 2467 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2467: avg_loss appended (1.5630)\n", - "Epoch 2467: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2467: accuracy appended (20.00%)\n", - "Epoch 2467: model set back to train mode\n", - "Epoch 2467: model parameters saved\n", - "Epoch 2468 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2468: avg_loss appended (1.5630)\n", - "Epoch 2468: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2468: accuracy appended (20.00%)\n", - "Epoch 2468: model set back to train mode\n", - "Epoch 2468: model parameters saved\n", - "Epoch 2469 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2469: avg_loss appended (1.5630)\n", - "Epoch 2469: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2469: accuracy appended (20.00%)\n", - "Epoch 2469: model set back to train mode\n", - "Epoch 2469: model parameters saved\n", - "Epoch 2470 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2470: avg_loss appended (1.5630)\n", - "Epoch 2470: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2470: accuracy appended (20.00%)\n", - "Epoch 2470: model set back to train mode\n", - "Epoch 2470: model parameters saved\n", - "Epoch 2471 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2471: avg_loss appended (1.5630)\n", - "Epoch 2471: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2471: accuracy appended (20.00%)\n", - "Epoch 2471: model set back to train mode\n", - "Epoch 2471: model parameters saved\n", - "Epoch 2472 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2472: avg_loss appended (1.5630)\n", - "Epoch 2472: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2472: accuracy appended (20.00%)\n", - "Epoch 2472: model set back to train mode\n", - "Epoch 2472: model parameters saved\n", - "Epoch 2473 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2473: avg_loss appended (1.5630)\n", - "Epoch 2473: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2473: accuracy appended (20.00%)\n", - "Epoch 2473: model set back to train mode\n", - "Epoch 2473: model parameters saved\n", - "Epoch 2474 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2474: avg_loss appended (1.5630)\n", - "Epoch 2474: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2474: accuracy appended (20.00%)\n", - "Epoch 2474: model set back to train mode\n", - "Epoch 2474: model parameters saved\n", - "Epoch 2475 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2475: avg_loss appended (1.5630)\n", - "Epoch 2475: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2475: accuracy appended (20.00%)\n", - "Epoch 2475: model set back to train mode\n", - "Epoch 2475: model parameters saved\n", - "Epoch 2476 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2476: avg_loss appended (1.5630)\n", - "Epoch 2476: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2476: accuracy appended (20.00%)\n", - "Epoch 2476: model set back to train mode\n", - "Epoch 2476: model parameters saved\n", - "Epoch 2477 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2477: avg_loss appended (1.5630)\n", - "Epoch 2477: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2477: accuracy appended (20.00%)\n", - "Epoch 2477: model set back to train mode\n", - "Epoch 2477: model parameters saved\n", - "Epoch 2478 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2478: avg_loss appended (1.5630)\n", - "Epoch 2478: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2478: accuracy appended (20.00%)\n", - "Epoch 2478: model set back to train mode\n", - "Epoch 2478: model parameters saved\n", - "Epoch 2479 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2479: avg_loss appended (1.5630)\n", - "Epoch 2479: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2479: accuracy appended (20.00%)\n", - "Epoch 2479: model set back to train mode\n", - "Epoch 2479: model parameters saved\n", - "Epoch 2480 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2480: avg_loss appended (1.5630)\n", - "Epoch 2480: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2480: accuracy appended (20.00%)\n", - "Epoch 2480: model set back to train mode\n", - "Epoch 2480: model parameters saved\n", - "Epoch 2481 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2481: avg_loss appended (1.5630)\n", - "Epoch 2481: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2481: accuracy appended (20.00%)\n", - "Epoch 2481: model set back to train mode\n", - "Epoch 2481: model parameters saved\n", - "Epoch 2482 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2482: avg_loss appended (1.5630)\n", - "Epoch 2482: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2482: accuracy appended (20.00%)\n", - "Epoch 2482: model set back to train mode\n", - "Epoch 2482: model parameters saved\n", - "Epoch 2483 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2483: avg_loss appended (1.5630)\n", - "Epoch 2483: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2483: accuracy appended (20.00%)\n", - "Epoch 2483: model set back to train mode\n", - "Epoch 2483: model parameters saved\n", - "Epoch 2484 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2484: avg_loss appended (1.5630)\n", - "Epoch 2484: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2484: accuracy appended (20.00%)\n", - "Epoch 2484: model set back to train mode\n", - "Epoch 2484: model parameters saved\n", - "Epoch 2485 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2485: avg_loss appended (1.5630)\n", - "Epoch 2485: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2485: accuracy appended (20.00%)\n", - "Epoch 2485: model set back to train mode\n", - "Epoch 2485: model parameters saved\n", - "Epoch 2486 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2486: avg_loss appended (1.5630)\n", - "Epoch 2486: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2486: accuracy appended (20.00%)\n", - "Epoch 2486: model set back to train mode\n", - "Epoch 2486: model parameters saved\n", - "Epoch 2487 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2487: avg_loss appended (1.5630)\n", - "Epoch 2487: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2487: accuracy appended (20.00%)\n", - "Epoch 2487: model set back to train mode\n", - "Epoch 2487: model parameters saved\n", - "Epoch 2488 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2488: avg_loss appended (1.5630)\n", - "Epoch 2488: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2488: accuracy appended (20.00%)\n", - "Epoch 2488: model set back to train mode\n", - "Epoch 2488: model parameters saved\n", - "Epoch 2489 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2489: avg_loss appended (1.5630)\n", - "Epoch 2489: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2489: accuracy appended (20.00%)\n", - "Epoch 2489: model set back to train mode\n", - "Epoch 2489: model parameters saved\n", - "Epoch 2490 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2490: avg_loss appended (1.5630)\n", - "Epoch 2490: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2490: accuracy appended (20.00%)\n", - "Epoch 2490: model set back to train mode\n", - "Epoch 2490: model parameters saved\n", - "Epoch 2491 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2491: avg_loss appended (1.5630)\n", - "Epoch 2491: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2491: accuracy appended (20.00%)\n", - "Epoch 2491: model set back to train mode\n", - "Epoch 2491: model parameters saved\n", - "Epoch 2492 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2492: avg_loss appended (1.5630)\n", - "Epoch 2492: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2492: accuracy appended (20.00%)\n", - "Epoch 2492: model set back to train mode\n", - "Epoch 2492: model parameters saved\n", - "Epoch 2493 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2493: avg_loss appended (1.5630)\n", - "Epoch 2493: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2493: accuracy appended (20.00%)\n", - "Epoch 2493: model set back to train mode\n", - "Epoch 2493: model parameters saved\n", - "Epoch 2494 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2494: avg_loss appended (1.5630)\n", - "Epoch 2494: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2494: accuracy appended (20.00%)\n", - "Epoch 2494: model set back to train mode\n", - "Epoch 2494: model parameters saved\n", - "Epoch 2495 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2495: avg_loss appended (1.5630)\n", - "Epoch 2495: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2495: accuracy appended (20.00%)\n", - "Epoch 2495: model set back to train mode\n", - "Epoch 2495: model parameters saved\n", - "Epoch 2496 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2496: avg_loss appended (1.5630)\n", - "Epoch 2496: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2496: accuracy appended (20.00%)\n", - "Epoch 2496: model set back to train mode\n", - "Epoch 2496: model parameters saved\n", - "Epoch 2497 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2497: avg_loss appended (1.5630)\n", - "Epoch 2497: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2497: accuracy appended (20.00%)\n", - "Epoch 2497: model set back to train mode\n", - "Epoch 2497: model parameters saved\n", - "Epoch 2498 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2498: avg_loss appended (1.5630)\n", - "Epoch 2498: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2498: accuracy appended (20.00%)\n", - "Epoch 2498: model set back to train mode\n", - "Epoch 2498: model parameters saved\n", - "Epoch 2499 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2499: avg_loss appended (1.5630)\n", - "Epoch 2499: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2499: accuracy appended (20.00%)\n", - "Epoch 2499: model set back to train mode\n", - "Epoch 2499: model parameters saved\n", - "Epoch 2500 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2500: avg_loss appended (1.5630)\n", - "Epoch 2500: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2500: accuracy appended (20.00%)\n", - "Epoch 2500: model set back to train mode\n", - "Epoch 2500: model parameters saved\n", - "Epoch 2500/10000, Loss: 1.5630, Accuracy: 20.00%\n", - "Epoch 2501 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2501: avg_loss appended (1.5630)\n", - "Epoch 2501: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2501: accuracy appended (20.00%)\n", - "Epoch 2501: model set back to train mode\n", - "Epoch 2501: model parameters saved\n", - "Epoch 2502 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2502: avg_loss appended (1.5630)\n", - "Epoch 2502: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2502: accuracy appended (20.00%)\n", - "Epoch 2502: model set back to train mode\n", - "Epoch 2502: model parameters saved\n", - "Epoch 2503 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2503: avg_loss appended (1.5630)\n", - "Epoch 2503: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2503: accuracy appended (20.00%)\n", - "Epoch 2503: model set back to train mode\n", - "Epoch 2503: model parameters saved\n", - "Epoch 2504 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2504: avg_loss appended (1.5630)\n", - "Epoch 2504: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2504: accuracy appended (20.00%)\n", - "Epoch 2504: model set back to train mode\n", - "Epoch 2504: model parameters saved\n", - "Epoch 2505 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2505: avg_loss appended (1.5630)\n", - "Epoch 2505: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2505: accuracy appended (20.00%)\n", - "Epoch 2505: model set back to train mode\n", - "Epoch 2505: model parameters saved\n", - "Epoch 2506 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2506: avg_loss appended (1.5630)\n", - "Epoch 2506: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2506: accuracy appended (20.00%)\n", - "Epoch 2506: model set back to train mode\n", - "Epoch 2506: model parameters saved\n", - "Epoch 2507 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2507: avg_loss appended (1.5630)\n", - "Epoch 2507: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2507: accuracy appended (20.00%)\n", - "Epoch 2507: model set back to train mode\n", - "Epoch 2507: model parameters saved\n", - "Epoch 2508 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2508: avg_loss appended (1.5630)\n", - "Epoch 2508: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2508: accuracy appended (20.00%)\n", - "Epoch 2508: model set back to train mode\n", - "Epoch 2508: model parameters saved\n", - "Epoch 2509 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2509: avg_loss appended (1.5630)\n", - "Epoch 2509: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2509: accuracy appended (20.00%)\n", - "Epoch 2509: model set back to train mode\n", - "Epoch 2509: model parameters saved\n", - "Epoch 2510 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2510: avg_loss appended (1.5630)\n", - "Epoch 2510: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2510: accuracy appended (20.00%)\n", - "Epoch 2510: model set back to train mode\n", - "Epoch 2510: model parameters saved\n", - "Epoch 2511 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2511: avg_loss appended (1.5630)\n", - "Epoch 2511: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2511: accuracy appended (20.00%)\n", - "Epoch 2511: model set back to train mode\n", - "Epoch 2511: model parameters saved\n", - "Epoch 2512 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2512: avg_loss appended (1.5630)\n", - "Epoch 2512: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2512: accuracy appended (20.00%)\n", - "Epoch 2512: model set back to train mode\n", - "Epoch 2512: model parameters saved\n", - "Epoch 2513 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2513: avg_loss appended (1.5630)\n", - "Epoch 2513: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2513: accuracy appended (20.00%)\n", - "Epoch 2513: model set back to train mode\n", - "Epoch 2513: model parameters saved\n", - "Epoch 2514 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2514: avg_loss appended (1.5630)\n", - "Epoch 2514: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2514: accuracy appended (20.00%)\n", - "Epoch 2514: model set back to train mode\n", - "Epoch 2514: model parameters saved\n", - "Epoch 2515 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2515: avg_loss appended (1.5630)\n", - "Epoch 2515: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2515: accuracy appended (20.00%)\n", - "Epoch 2515: model set back to train mode\n", - "Epoch 2515: model parameters saved\n", - "Epoch 2516 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2516: avg_loss appended (1.5630)\n", - "Epoch 2516: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2516: accuracy appended (20.00%)\n", - "Epoch 2516: model set back to train mode\n", - "Epoch 2516: model parameters saved\n", - "Epoch 2517 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2517: avg_loss appended (1.5630)\n", - "Epoch 2517: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2517: accuracy appended (20.00%)\n", - "Epoch 2517: model set back to train mode\n", - "Epoch 2517: model parameters saved\n", - "Epoch 2518 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2518: avg_loss appended (1.5630)\n", - "Epoch 2518: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2518: accuracy appended (20.00%)\n", - "Epoch 2518: model set back to train mode\n", - "Epoch 2518: model parameters saved\n", - "Epoch 2519 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2519: avg_loss appended (1.5630)\n", - "Epoch 2519: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2519: accuracy appended (20.00%)\n", - "Epoch 2519: model set back to train mode\n", - "Epoch 2519: model parameters saved\n", - "Epoch 2520 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2520: avg_loss appended (1.5630)\n", - "Epoch 2520: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2520: accuracy appended (20.00%)\n", - "Epoch 2520: model set back to train mode\n", - "Epoch 2520: model parameters saved\n", - "Epoch 2521 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2521: avg_loss appended (1.5630)\n", - "Epoch 2521: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2521: accuracy appended (20.00%)\n", - "Epoch 2521: model set back to train mode\n", - "Epoch 2521: model parameters saved\n", - "Epoch 2522 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2522: avg_loss appended (1.5630)\n", - "Epoch 2522: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2522: accuracy appended (20.00%)\n", - "Epoch 2522: model set back to train mode\n", - "Epoch 2522: model parameters saved\n", - "Epoch 2523 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2523: avg_loss appended (1.5630)\n", - "Epoch 2523: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2523: accuracy appended (20.00%)\n", - "Epoch 2523: model set back to train mode\n", - "Epoch 2523: model parameters saved\n", - "Epoch 2524 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2524: avg_loss appended (1.5630)\n", - "Epoch 2524: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2524: accuracy appended (20.00%)\n", - "Epoch 2524: model set back to train mode\n", - "Epoch 2524: model parameters saved\n", - "Epoch 2525 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2525: avg_loss appended (1.5630)\n", - "Epoch 2525: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2525: accuracy appended (20.00%)\n", - "Epoch 2525: model set back to train mode\n", - "Epoch 2525: model parameters saved\n", - "Epoch 2526 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2526: avg_loss appended (1.5630)\n", - "Epoch 2526: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2526: accuracy appended (20.00%)\n", - "Epoch 2526: model set back to train mode\n", - "Epoch 2526: model parameters saved\n", - "Epoch 2527 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2527: avg_loss appended (1.5630)\n", - "Epoch 2527: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2527: accuracy appended (20.00%)\n", - "Epoch 2527: model set back to train mode\n", - "Epoch 2527: model parameters saved\n", - "Epoch 2528 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2528: avg_loss appended (1.5630)\n", - "Epoch 2528: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2528: accuracy appended (20.00%)\n", - "Epoch 2528: model set back to train mode\n", - "Epoch 2528: model parameters saved\n", - "Epoch 2529 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2529: avg_loss appended (1.5630)\n", - "Epoch 2529: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2529: accuracy appended (20.00%)\n", - "Epoch 2529: model set back to train mode\n", - "Epoch 2529: model parameters saved\n", - "Epoch 2530 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2530: avg_loss appended (1.5630)\n", - "Epoch 2530: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2530: accuracy appended (20.00%)\n", - "Epoch 2530: model set back to train mode\n", - "Epoch 2530: model parameters saved\n", - "Epoch 2531 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2531: avg_loss appended (1.5630)\n", - "Epoch 2531: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2531: accuracy appended (20.00%)\n", - "Epoch 2531: model set back to train mode\n", - "Epoch 2531: model parameters saved\n", - "Epoch 2532 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2532: avg_loss appended (1.5630)\n", - "Epoch 2532: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2532: accuracy appended (20.00%)\n", - "Epoch 2532: model set back to train mode\n", - "Epoch 2532: model parameters saved\n", - "Epoch 2533 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2533: avg_loss appended (1.5630)\n", - "Epoch 2533: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2533: accuracy appended (20.00%)\n", - "Epoch 2533: model set back to train mode\n", - "Epoch 2533: model parameters saved\n", - "Epoch 2534 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2534: avg_loss appended (1.5630)\n", - "Epoch 2534: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2534: accuracy appended (20.00%)\n", - "Epoch 2534: model set back to train mode\n", - "Epoch 2534: model parameters saved\n", - "Epoch 2535 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2535: avg_loss appended (1.5630)\n", - "Epoch 2535: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2535: accuracy appended (20.00%)\n", - "Epoch 2535: model set back to train mode\n", - "Epoch 2535: model parameters saved\n", - "Epoch 2536 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2536: avg_loss appended (1.5630)\n", - "Epoch 2536: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2536: accuracy appended (20.00%)\n", - "Epoch 2536: model set back to train mode\n", - "Epoch 2536: model parameters saved\n", - "Epoch 2537 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2537: avg_loss appended (1.5630)\n", - "Epoch 2537: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2537: accuracy appended (20.00%)\n", - "Epoch 2537: model set back to train mode\n", - "Epoch 2537: model parameters saved\n", - "Epoch 2538 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2538: avg_loss appended (1.5630)\n", - "Epoch 2538: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2538: accuracy appended (20.00%)\n", - "Epoch 2538: model set back to train mode\n", - "Epoch 2538: model parameters saved\n", - "Epoch 2539 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2539: avg_loss appended (1.5630)\n", - "Epoch 2539: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2539: accuracy appended (20.00%)\n", - "Epoch 2539: model set back to train mode\n", - "Epoch 2539: model parameters saved\n", - "Epoch 2540 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2540: avg_loss appended (1.5630)\n", - "Epoch 2540: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2540: accuracy appended (20.00%)\n", - "Epoch 2540: model set back to train mode\n", - "Epoch 2540: model parameters saved\n", - "Epoch 2541 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2541: avg_loss appended (1.5630)\n", - "Epoch 2541: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2541: accuracy appended (20.00%)\n", - "Epoch 2541: model set back to train mode\n", - "Epoch 2541: model parameters saved\n", - "Epoch 2542 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2542: avg_loss appended (1.5630)\n", - "Epoch 2542: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2542: accuracy appended (20.00%)\n", - "Epoch 2542: model set back to train mode\n", - "Epoch 2542: model parameters saved\n", - "Epoch 2543 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2543: avg_loss appended (1.5630)\n", - "Epoch 2543: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2543: accuracy appended (20.00%)\n", - "Epoch 2543: model set back to train mode\n", - "Epoch 2543: model parameters saved\n", - "Epoch 2544 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2544: avg_loss appended (1.5630)\n", - "Epoch 2544: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2544: accuracy appended (20.00%)\n", - "Epoch 2544: model set back to train mode\n", - "Epoch 2544: model parameters saved\n", - "Epoch 2545 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2545: avg_loss appended (1.5630)\n", - "Epoch 2545: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2545: accuracy appended (20.00%)\n", - "Epoch 2545: model set back to train mode\n", - "Epoch 2545: model parameters saved\n", - "Epoch 2546 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2546: avg_loss appended (1.5630)\n", - "Epoch 2546: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2546: accuracy appended (20.00%)\n", - "Epoch 2546: model set back to train mode\n", - "Epoch 2546: model parameters saved\n", - "Epoch 2547 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2547: avg_loss appended (1.5630)\n", - "Epoch 2547: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2547: accuracy appended (20.00%)\n", - "Epoch 2547: model set back to train mode\n", - "Epoch 2547: model parameters saved\n", - "Epoch 2548 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2548: avg_loss appended (1.5630)\n", - "Epoch 2548: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2548: accuracy appended (20.00%)\n", - "Epoch 2548: model set back to train mode\n", - "Epoch 2548: model parameters saved\n", - "Epoch 2549 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2549: avg_loss appended (1.5630)\n", - "Epoch 2549: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2549: accuracy appended (20.00%)\n", - "Epoch 2549: model set back to train mode\n", - "Epoch 2549: model parameters saved\n", - "Epoch 2550 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2550: avg_loss appended (1.5630)\n", - "Epoch 2550: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2550: accuracy appended (20.00%)\n", - "Epoch 2550: model set back to train mode\n", - "Epoch 2550: model parameters saved\n", - "Epoch 2551 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2551: avg_loss appended (1.5630)\n", - "Epoch 2551: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2551: accuracy appended (20.00%)\n", - "Epoch 2551: model set back to train mode\n", - "Epoch 2551: model parameters saved\n", - "Epoch 2552 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2552: avg_loss appended (1.5630)\n", - "Epoch 2552: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2552: accuracy appended (20.00%)\n", - "Epoch 2552: model set back to train mode\n", - "Epoch 2552: model parameters saved\n", - "Epoch 2553 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2553: avg_loss appended (1.5630)\n", - "Epoch 2553: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2553: accuracy appended (20.00%)\n", - "Epoch 2553: model set back to train mode\n", - "Epoch 2553: model parameters saved\n", - "Epoch 2554 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2554: avg_loss appended (1.5630)\n", - "Epoch 2554: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2554: accuracy appended (20.00%)\n", - "Epoch 2554: model set back to train mode\n", - "Epoch 2554: model parameters saved\n", - "Epoch 2555 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2555: avg_loss appended (1.5630)\n", - "Epoch 2555: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2555: accuracy appended (20.00%)\n", - "Epoch 2555: model set back to train mode\n", - "Epoch 2555: model parameters saved\n", - "Epoch 2556 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2556: avg_loss appended (1.5630)\n", - "Epoch 2556: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2556: accuracy appended (20.00%)\n", - "Epoch 2556: model set back to train mode\n", - "Epoch 2556: model parameters saved\n", - "Epoch 2557 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2557: avg_loss appended (1.5630)\n", - "Epoch 2557: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2557: accuracy appended (20.00%)\n", - "Epoch 2557: model set back to train mode\n", - "Epoch 2557: model parameters saved\n", - "Epoch 2558 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2558: avg_loss appended (1.5630)\n", - "Epoch 2558: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2558: accuracy appended (20.00%)\n", - "Epoch 2558: model set back to train mode\n", - "Epoch 2558: model parameters saved\n", - "Epoch 2559 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2559: avg_loss appended (1.5630)\n", - "Epoch 2559: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2559: accuracy appended (20.00%)\n", - "Epoch 2559: model set back to train mode\n", - "Epoch 2559: model parameters saved\n", - "Epoch 2560 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2560: avg_loss appended (1.5630)\n", - "Epoch 2560: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2560: accuracy appended (20.00%)\n", - "Epoch 2560: model set back to train mode\n", - "Epoch 2560: model parameters saved\n", - "Epoch 2561 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2561: avg_loss appended (1.5630)\n", - "Epoch 2561: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2561: accuracy appended (20.00%)\n", - "Epoch 2561: model set back to train mode\n", - "Epoch 2561: model parameters saved\n", - "Epoch 2562 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2562: avg_loss appended (1.5630)\n", - "Epoch 2562: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2562: accuracy appended (20.00%)\n", - "Epoch 2562: model set back to train mode\n", - "Epoch 2562: model parameters saved\n", - "Epoch 2563 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2563: avg_loss appended (1.5630)\n", - "Epoch 2563: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2563: accuracy appended (20.00%)\n", - "Epoch 2563: model set back to train mode\n", - "Epoch 2563: model parameters saved\n", - "Epoch 2564 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2564: avg_loss appended (1.5630)\n", - "Epoch 2564: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2564: accuracy appended (20.00%)\n", - "Epoch 2564: model set back to train mode\n", - "Epoch 2564: model parameters saved\n", - "Epoch 2565 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2565: avg_loss appended (1.5630)\n", - "Epoch 2565: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2565: accuracy appended (20.00%)\n", - "Epoch 2565: model set back to train mode\n", - "Epoch 2565: model parameters saved\n", - "Epoch 2566 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2566: avg_loss appended (1.5630)\n", - "Epoch 2566: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2566: accuracy appended (20.00%)\n", - "Epoch 2566: model set back to train mode\n", - "Epoch 2566: model parameters saved\n", - "Epoch 2567 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2567: avg_loss appended (1.5630)\n", - "Epoch 2567: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2567: accuracy appended (20.00%)\n", - "Epoch 2567: model set back to train mode\n", - "Epoch 2567: model parameters saved\n", - "Epoch 2568 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2568: avg_loss appended (1.5630)\n", - "Epoch 2568: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2568: accuracy appended (20.00%)\n", - "Epoch 2568: model set back to train mode\n", - "Epoch 2568: model parameters saved\n", - "Epoch 2569 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2569: avg_loss appended (1.5630)\n", - "Epoch 2569: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2569: accuracy appended (20.00%)\n", - "Epoch 2569: model set back to train mode\n", - "Epoch 2569: model parameters saved\n", - "Epoch 2570 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2570: avg_loss appended (1.5630)\n", - "Epoch 2570: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2570: accuracy appended (20.00%)\n", - "Epoch 2570: model set back to train mode\n", - "Epoch 2570: model parameters saved\n", - "Epoch 2571 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2571: avg_loss appended (1.5630)\n", - "Epoch 2571: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2571: accuracy appended (20.00%)\n", - "Epoch 2571: model set back to train mode\n", - "Epoch 2571: model parameters saved\n", - "Epoch 2572 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2572: avg_loss appended (1.5630)\n", - "Epoch 2572: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2572: accuracy appended (20.00%)\n", - "Epoch 2572: model set back to train mode\n", - "Epoch 2572: model parameters saved\n", - "Epoch 2573 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2573: avg_loss appended (1.5630)\n", - "Epoch 2573: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2573: accuracy appended (20.00%)\n", - "Epoch 2573: model set back to train mode\n", - "Epoch 2573: model parameters saved\n", - "Epoch 2574 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2574: avg_loss appended (1.5630)\n", - "Epoch 2574: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2574: accuracy appended (20.00%)\n", - "Epoch 2574: model set back to train mode\n", - "Epoch 2574: model parameters saved\n", - "Epoch 2575 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2575: avg_loss appended (1.5630)\n", - "Epoch 2575: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2575: accuracy appended (20.00%)\n", - "Epoch 2575: model set back to train mode\n", - "Epoch 2575: model parameters saved\n", - "Epoch 2576 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2576: avg_loss appended (1.5630)\n", - "Epoch 2576: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2576: accuracy appended (20.00%)\n", - "Epoch 2576: model set back to train mode\n", - "Epoch 2576: model parameters saved\n", - "Epoch 2577 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2577: avg_loss appended (1.5630)\n", - "Epoch 2577: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2577: accuracy appended (20.00%)\n", - "Epoch 2577: model set back to train mode\n", - "Epoch 2577: model parameters saved\n", - "Epoch 2578 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2578: avg_loss appended (1.5630)\n", - "Epoch 2578: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2578: accuracy appended (20.00%)\n", - "Epoch 2578: model set back to train mode\n", - "Epoch 2578: model parameters saved\n", - "Epoch 2579 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2579: avg_loss appended (1.5630)\n", - "Epoch 2579: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2579: accuracy appended (20.00%)\n", - "Epoch 2579: model set back to train mode\n", - "Epoch 2579: model parameters saved\n", - "Epoch 2580 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2580: avg_loss appended (1.5630)\n", - "Epoch 2580: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2580: accuracy appended (20.00%)\n", - "Epoch 2580: model set back to train mode\n", - "Epoch 2580: model parameters saved\n", - "Epoch 2581 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2581: avg_loss appended (1.5630)\n", - "Epoch 2581: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2581: accuracy appended (20.00%)\n", - "Epoch 2581: model set back to train mode\n", - "Epoch 2581: model parameters saved\n", - "Epoch 2582 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2582: avg_loss appended (1.5630)\n", - "Epoch 2582: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2582: accuracy appended (20.00%)\n", - "Epoch 2582: model set back to train mode\n", - "Epoch 2582: model parameters saved\n", - "Epoch 2583 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2583: avg_loss appended (1.5630)\n", - "Epoch 2583: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2583: accuracy appended (20.00%)\n", - "Epoch 2583: model set back to train mode\n", - "Epoch 2583: model parameters saved\n", - "Epoch 2584 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2584: avg_loss appended (1.5630)\n", - "Epoch 2584: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2584: accuracy appended (20.00%)\n", - "Epoch 2584: model set back to train mode\n", - "Epoch 2584: model parameters saved\n", - "Epoch 2585 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2585: avg_loss appended (1.5630)\n", - "Epoch 2585: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2585: accuracy appended (20.00%)\n", - "Epoch 2585: model set back to train mode\n", - "Epoch 2585: model parameters saved\n", - "Epoch 2586 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2586: avg_loss appended (1.5630)\n", - "Epoch 2586: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2586: accuracy appended (20.00%)\n", - "Epoch 2586: model set back to train mode\n", - "Epoch 2586: model parameters saved\n", - "Epoch 2587 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2587: avg_loss appended (1.5630)\n", - "Epoch 2587: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2587: accuracy appended (20.00%)\n", - "Epoch 2587: model set back to train mode\n", - "Epoch 2587: model parameters saved\n", - "Epoch 2588 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2588: avg_loss appended (1.5630)\n", - "Epoch 2588: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2588: accuracy appended (20.00%)\n", - "Epoch 2588: model set back to train mode\n", - "Epoch 2588: model parameters saved\n", - "Epoch 2589 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2589: avg_loss appended (1.5630)\n", - "Epoch 2589: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2589: accuracy appended (20.00%)\n", - "Epoch 2589: model set back to train mode\n", - "Epoch 2589: model parameters saved\n", - "Epoch 2590 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2590: avg_loss appended (1.5630)\n", - "Epoch 2590: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2590: accuracy appended (20.00%)\n", - "Epoch 2590: model set back to train mode\n", - "Epoch 2590: model parameters saved\n", - "Epoch 2591 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2591: avg_loss appended (1.5630)\n", - "Epoch 2591: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2591: accuracy appended (20.00%)\n", - "Epoch 2591: model set back to train mode\n", - "Epoch 2591: model parameters saved\n", - "Epoch 2592 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2592: avg_loss appended (1.5630)\n", - "Epoch 2592: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2592: accuracy appended (20.00%)\n", - "Epoch 2592: model set back to train mode\n", - "Epoch 2592: model parameters saved\n", - "Epoch 2593 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2593: avg_loss appended (1.5630)\n", - "Epoch 2593: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2593: accuracy appended (20.00%)\n", - "Epoch 2593: model set back to train mode\n", - "Epoch 2593: model parameters saved\n", - "Epoch 2594 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2594: avg_loss appended (1.5630)\n", - "Epoch 2594: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2594: accuracy appended (20.00%)\n", - "Epoch 2594: model set back to train mode\n", - "Epoch 2594: model parameters saved\n", - "Epoch 2595 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2595: avg_loss appended (1.5630)\n", - "Epoch 2595: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2595: accuracy appended (20.00%)\n", - "Epoch 2595: model set back to train mode\n", - "Epoch 2595: model parameters saved\n", - "Epoch 2596 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2596: avg_loss appended (1.5630)\n", - "Epoch 2596: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2596: accuracy appended (20.00%)\n", - "Epoch 2596: model set back to train mode\n", - "Epoch 2596: model parameters saved\n", - "Epoch 2597 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2597: avg_loss appended (1.5630)\n", - "Epoch 2597: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2597: accuracy appended (20.00%)\n", - "Epoch 2597: model set back to train mode\n", - "Epoch 2597: model parameters saved\n", - "Epoch 2598 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2598: avg_loss appended (1.5630)\n", - "Epoch 2598: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2598: accuracy appended (20.00%)\n", - "Epoch 2598: model set back to train mode\n", - "Epoch 2598: model parameters saved\n", - "Epoch 2599 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2599: avg_loss appended (1.5630)\n", - "Epoch 2599: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2599: accuracy appended (20.00%)\n", - "Epoch 2599: model set back to train mode\n", - "Epoch 2599: model parameters saved\n", - "Epoch 2600 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2600: avg_loss appended (1.5630)\n", - "Epoch 2600: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2600: accuracy appended (20.00%)\n", - "Epoch 2600: model set back to train mode\n", - "Epoch 2600: model parameters saved\n", - "Epoch 2600/10000, Loss: 1.5630, Accuracy: 20.00%\n", - "Epoch 2601 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2601: avg_loss appended (1.5630)\n", - "Epoch 2601: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2601: accuracy appended (20.00%)\n", - "Epoch 2601: model set back to train mode\n", - "Epoch 2601: model parameters saved\n", - "Epoch 2602 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2602: avg_loss appended (1.5630)\n", - "Epoch 2602: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2602: accuracy appended (20.00%)\n", - "Epoch 2602: model set back to train mode\n", - "Epoch 2602: model parameters saved\n", - "Epoch 2603 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2603: avg_loss appended (1.5630)\n", - "Epoch 2603: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2603: accuracy appended (20.00%)\n", - "Epoch 2603: model set back to train mode\n", - "Epoch 2603: model parameters saved\n", - "Epoch 2604 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2604: avg_loss appended (1.5630)\n", - "Epoch 2604: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2604: accuracy appended (20.00%)\n", - "Epoch 2604: model set back to train mode\n", - "Epoch 2604: model parameters saved\n", - "Epoch 2605 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2605: avg_loss appended (1.5630)\n", - "Epoch 2605: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2605: accuracy appended (20.00%)\n", - "Epoch 2605: model set back to train mode\n", - "Epoch 2605: model parameters saved\n", - "Epoch 2606 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2606: avg_loss appended (1.5630)\n", - "Epoch 2606: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2606: accuracy appended (20.00%)\n", - "Epoch 2606: model set back to train mode\n", - "Epoch 2606: model parameters saved\n", - "Epoch 2607 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2607: avg_loss appended (1.5630)\n", - "Epoch 2607: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2607: accuracy appended (20.00%)\n", - "Epoch 2607: model set back to train mode\n", - "Epoch 2607: model parameters saved\n", - "Epoch 2608 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2608: avg_loss appended (1.5630)\n", - "Epoch 2608: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2608: accuracy appended (20.00%)\n", - "Epoch 2608: model set back to train mode\n", - "Epoch 2608: model parameters saved\n", - "Epoch 2609 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2609: avg_loss appended (1.5630)\n", - "Epoch 2609: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2609: accuracy appended (20.00%)\n", - "Epoch 2609: model set back to train mode\n", - "Epoch 2609: model parameters saved\n", - "Epoch 2610 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2610: avg_loss appended (1.5630)\n", - "Epoch 2610: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2610: accuracy appended (20.00%)\n", - "Epoch 2610: model set back to train mode\n", - "Epoch 2610: model parameters saved\n", - "Epoch 2611 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2611: avg_loss appended (1.5630)\n", - "Epoch 2611: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2611: accuracy appended (20.00%)\n", - "Epoch 2611: model set back to train mode\n", - "Epoch 2611: model parameters saved\n", - "Epoch 2612 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2612: avg_loss appended (1.5630)\n", - "Epoch 2612: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2612: accuracy appended (20.00%)\n", - "Epoch 2612: model set back to train mode\n", - "Epoch 2612: model parameters saved\n", - "Epoch 2613 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2613: avg_loss appended (1.5630)\n", - "Epoch 2613: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2613: accuracy appended (20.00%)\n", - "Epoch 2613: model set back to train mode\n", - "Epoch 2613: model parameters saved\n", - "Epoch 2614 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2614: avg_loss appended (1.5630)\n", - "Epoch 2614: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2614: accuracy appended (20.00%)\n", - "Epoch 2614: model set back to train mode\n", - "Epoch 2614: model parameters saved\n", - "Epoch 2615 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2615: avg_loss appended (1.5630)\n", - "Epoch 2615: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2615: accuracy appended (20.00%)\n", - "Epoch 2615: model set back to train mode\n", - "Epoch 2615: model parameters saved\n", - "Epoch 2616 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2616: avg_loss appended (1.5630)\n", - "Epoch 2616: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2616: accuracy appended (20.00%)\n", - "Epoch 2616: model set back to train mode\n", - "Epoch 2616: model parameters saved\n", - "Epoch 2617 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2617: avg_loss appended (1.5630)\n", - "Epoch 2617: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2617: accuracy appended (20.00%)\n", - "Epoch 2617: model set back to train mode\n", - "Epoch 2617: model parameters saved\n", - "Epoch 2618 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2618: avg_loss appended (1.5630)\n", - "Epoch 2618: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2618: accuracy appended (20.00%)\n", - "Epoch 2618: model set back to train mode\n", - "Epoch 2618: model parameters saved\n", - "Epoch 2619 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2619: avg_loss appended (1.5630)\n", - "Epoch 2619: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2619: accuracy appended (20.00%)\n", - "Epoch 2619: model set back to train mode\n", - "Epoch 2619: model parameters saved\n", - "Epoch 2620 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2620: avg_loss appended (1.5630)\n", - "Epoch 2620: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2620: accuracy appended (20.00%)\n", - "Epoch 2620: model set back to train mode\n", - "Epoch 2620: model parameters saved\n", - "Epoch 2621 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2621: avg_loss appended (1.5630)\n", - "Epoch 2621: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2621: accuracy appended (20.00%)\n", - "Epoch 2621: model set back to train mode\n", - "Epoch 2621: model parameters saved\n", - "Epoch 2622 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2622: avg_loss appended (1.5630)\n", - "Epoch 2622: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2622: accuracy appended (20.00%)\n", - "Epoch 2622: model set back to train mode\n", - "Epoch 2622: model parameters saved\n", - "Epoch 2623 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2623: avg_loss appended (1.5630)\n", - "Epoch 2623: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2623: accuracy appended (20.00%)\n", - "Epoch 2623: model set back to train mode\n", - "Epoch 2623: model parameters saved\n", - "Epoch 2624 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2624: avg_loss appended (1.5630)\n", - "Epoch 2624: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2624: accuracy appended (20.00%)\n", - "Epoch 2624: model set back to train mode\n", - "Epoch 2624: model parameters saved\n", - "Epoch 2625 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2625: avg_loss appended (1.5630)\n", - "Epoch 2625: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2625: accuracy appended (20.00%)\n", - "Epoch 2625: model set back to train mode\n", - "Epoch 2625: model parameters saved\n", - "Epoch 2626 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2626: avg_loss appended (1.5630)\n", - "Epoch 2626: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2626: accuracy appended (20.00%)\n", - "Epoch 2626: model set back to train mode\n", - "Epoch 2626: model parameters saved\n", - "Epoch 2627 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2627: avg_loss appended (1.5630)\n", - "Epoch 2627: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2627: accuracy appended (20.00%)\n", - "Epoch 2627: model set back to train mode\n", - "Epoch 2627: model parameters saved\n", - "Epoch 2628 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2628: avg_loss appended (1.5630)\n", - "Epoch 2628: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2628: accuracy appended (20.00%)\n", - "Epoch 2628: model set back to train mode\n", - "Epoch 2628: model parameters saved\n", - "Epoch 2629 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2629: avg_loss appended (1.5630)\n", - "Epoch 2629: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2629: accuracy appended (20.00%)\n", - "Epoch 2629: model set back to train mode\n", - "Epoch 2629: model parameters saved\n", - "Epoch 2630 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2630: avg_loss appended (1.5630)\n", - "Epoch 2630: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2630: accuracy appended (20.00%)\n", - "Epoch 2630: model set back to train mode\n", - "Epoch 2630: model parameters saved\n", - "Epoch 2631 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2631: avg_loss appended (1.5630)\n", - "Epoch 2631: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2631: accuracy appended (20.00%)\n", - "Epoch 2631: model set back to train mode\n", - "Epoch 2631: model parameters saved\n", - "Epoch 2632 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2632: avg_loss appended (1.5630)\n", - "Epoch 2632: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2632: accuracy appended (20.00%)\n", - "Epoch 2632: model set back to train mode\n", - "Epoch 2632: model parameters saved\n", - "Epoch 2633 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2633: avg_loss appended (1.5630)\n", - "Epoch 2633: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2633: accuracy appended (20.00%)\n", - "Epoch 2633: model set back to train mode\n", - "Epoch 2633: model parameters saved\n", - "Epoch 2634 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2634: avg_loss appended (1.5630)\n", - "Epoch 2634: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2634: accuracy appended (20.00%)\n", - "Epoch 2634: model set back to train mode\n", - "Epoch 2634: model parameters saved\n", - "Epoch 2635 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2635: avg_loss appended (1.5630)\n", - "Epoch 2635: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2635: accuracy appended (20.00%)\n", - "Epoch 2635: model set back to train mode\n", - "Epoch 2635: model parameters saved\n", - "Epoch 2636 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2636: avg_loss appended (1.5630)\n", - "Epoch 2636: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2636: accuracy appended (20.00%)\n", - "Epoch 2636: model set back to train mode\n", - "Epoch 2636: model parameters saved\n", - "Epoch 2637 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2637: avg_loss appended (1.5630)\n", - "Epoch 2637: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2637: accuracy appended (20.00%)\n", - "Epoch 2637: model set back to train mode\n", - "Epoch 2637: model parameters saved\n", - "Epoch 2638 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2638: avg_loss appended (1.5630)\n", - "Epoch 2638: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2638: accuracy appended (20.00%)\n", - "Epoch 2638: model set back to train mode\n", - "Epoch 2638: model parameters saved\n", - "Epoch 2639 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2639: avg_loss appended (1.5630)\n", - "Epoch 2639: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2639: accuracy appended (20.00%)\n", - "Epoch 2639: model set back to train mode\n", - "Epoch 2639: model parameters saved\n", - "Epoch 2640 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2640: avg_loss appended (1.5630)\n", - "Epoch 2640: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2640: accuracy appended (20.00%)\n", - "Epoch 2640: model set back to train mode\n", - "Epoch 2640: model parameters saved\n", - "Epoch 2641 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2641: avg_loss appended (1.5630)\n", - "Epoch 2641: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2641: accuracy appended (20.00%)\n", - "Epoch 2641: model set back to train mode\n", - "Epoch 2641: model parameters saved\n", - "Epoch 2642 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2642: avg_loss appended (1.5630)\n", - "Epoch 2642: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2642: accuracy appended (20.00%)\n", - "Epoch 2642: model set back to train mode\n", - "Epoch 2642: model parameters saved\n", - "Epoch 2643 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2643: avg_loss appended (1.5630)\n", - "Epoch 2643: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2643: accuracy appended (20.00%)\n", - "Epoch 2643: model set back to train mode\n", - "Epoch 2643: model parameters saved\n", - "Epoch 2644 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2644: avg_loss appended (1.5630)\n", - "Epoch 2644: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2644: accuracy appended (20.00%)\n", - "Epoch 2644: model set back to train mode\n", - "Epoch 2644: model parameters saved\n", - "Epoch 2645 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2645: avg_loss appended (1.5630)\n", - "Epoch 2645: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2645: accuracy appended (20.00%)\n", - "Epoch 2645: model set back to train mode\n", - "Epoch 2645: model parameters saved\n", - "Epoch 2646 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2646: avg_loss appended (1.5630)\n", - "Epoch 2646: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2646: accuracy appended (20.00%)\n", - "Epoch 2646: model set back to train mode\n", - "Epoch 2646: model parameters saved\n", - "Epoch 2647 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2647: avg_loss appended (1.5630)\n", - "Epoch 2647: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2647: accuracy appended (20.00%)\n", - "Epoch 2647: model set back to train mode\n", - "Epoch 2647: model parameters saved\n", - "Epoch 2648 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2648: avg_loss appended (1.5630)\n", - "Epoch 2648: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2648: accuracy appended (20.00%)\n", - "Epoch 2648: model set back to train mode\n", - "Epoch 2648: model parameters saved\n", - "Epoch 2649 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2649: avg_loss appended (1.5630)\n", - "Epoch 2649: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2649: accuracy appended (20.00%)\n", - "Epoch 2649: model set back to train mode\n", - "Epoch 2649: model parameters saved\n", - "Epoch 2650 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2650: avg_loss appended (1.5630)\n", - "Epoch 2650: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2650: accuracy appended (20.00%)\n", - "Epoch 2650: model set back to train mode\n", - "Epoch 2650: model parameters saved\n", - "Epoch 2651 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2651: avg_loss appended (1.5630)\n", - "Epoch 2651: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2651: accuracy appended (20.00%)\n", - "Epoch 2651: model set back to train mode\n", - "Epoch 2651: model parameters saved\n", - "Epoch 2652 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2652: avg_loss appended (1.5630)\n", - "Epoch 2652: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2652: accuracy appended (20.00%)\n", - "Epoch 2652: model set back to train mode\n", - "Epoch 2652: model parameters saved\n", - "Epoch 2653 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2653: avg_loss appended (1.5630)\n", - "Epoch 2653: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2653: accuracy appended (20.00%)\n", - "Epoch 2653: model set back to train mode\n", - "Epoch 2653: model parameters saved\n", - "Epoch 2654 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2654: avg_loss appended (1.5630)\n", - "Epoch 2654: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2654: accuracy appended (20.00%)\n", - "Epoch 2654: model set back to train mode\n", - "Epoch 2654: model parameters saved\n", - "Epoch 2655 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2655: avg_loss appended (1.5630)\n", - "Epoch 2655: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2655: accuracy appended (20.00%)\n", - "Epoch 2655: model set back to train mode\n", - "Epoch 2655: model parameters saved\n", - "Epoch 2656 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2656: avg_loss appended (1.5630)\n", - "Epoch 2656: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2656: accuracy appended (20.00%)\n", - "Epoch 2656: model set back to train mode\n", - "Epoch 2656: model parameters saved\n", - "Epoch 2657 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2657: avg_loss appended (1.5630)\n", - "Epoch 2657: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2657: accuracy appended (20.00%)\n", - "Epoch 2657: model set back to train mode\n", - "Epoch 2657: model parameters saved\n", - "Epoch 2658 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2658: avg_loss appended (1.5630)\n", - "Epoch 2658: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2658: accuracy appended (20.00%)\n", - "Epoch 2658: model set back to train mode\n", - "Epoch 2658: model parameters saved\n", - "Epoch 2659 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2659: avg_loss appended (1.5630)\n", - "Epoch 2659: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2659: accuracy appended (20.00%)\n", - "Epoch 2659: model set back to train mode\n", - "Epoch 2659: model parameters saved\n", - "Epoch 2660 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2660: avg_loss appended (1.5630)\n", - "Epoch 2660: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2660: accuracy appended (20.00%)\n", - "Epoch 2660: model set back to train mode\n", - "Epoch 2660: model parameters saved\n", - "Epoch 2661 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2661: avg_loss appended (1.5630)\n", - "Epoch 2661: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2661: accuracy appended (20.00%)\n", - "Epoch 2661: model set back to train mode\n", - "Epoch 2661: model parameters saved\n", - "Epoch 2662 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2662: avg_loss appended (1.5630)\n", - "Epoch 2662: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2662: accuracy appended (20.00%)\n", - "Epoch 2662: model set back to train mode\n", - "Epoch 2662: model parameters saved\n", - "Epoch 2663 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2663: avg_loss appended (1.5630)\n", - "Epoch 2663: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2663: accuracy appended (20.00%)\n", - "Epoch 2663: model set back to train mode\n", - "Epoch 2663: model parameters saved\n", - "Epoch 2664 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2664: avg_loss appended (1.5630)\n", - "Epoch 2664: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2664: accuracy appended (20.00%)\n", - "Epoch 2664: model set back to train mode\n", - "Epoch 2664: model parameters saved\n", - "Epoch 2665 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2665: avg_loss appended (1.5630)\n", - "Epoch 2665: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2665: accuracy appended (20.00%)\n", - "Epoch 2665: model set back to train mode\n", - "Epoch 2665: model parameters saved\n", - "Epoch 2666 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2666: avg_loss appended (1.5630)\n", - "Epoch 2666: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2666: accuracy appended (20.00%)\n", - "Epoch 2666: model set back to train mode\n", - "Epoch 2666: model parameters saved\n", - "Epoch 2667 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2667: avg_loss appended (1.5630)\n", - "Epoch 2667: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2667: accuracy appended (20.00%)\n", - "Epoch 2667: model set back to train mode\n", - "Epoch 2667: model parameters saved\n", - "Epoch 2668 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2668: avg_loss appended (1.5630)\n", - "Epoch 2668: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2668: accuracy appended (20.00%)\n", - "Epoch 2668: model set back to train mode\n", - "Epoch 2668: model parameters saved\n", - "Epoch 2669 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2669: avg_loss appended (1.5630)\n", - "Epoch 2669: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2669: accuracy appended (20.00%)\n", - "Epoch 2669: model set back to train mode\n", - "Epoch 2669: model parameters saved\n", - "Epoch 2670 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2670: avg_loss appended (1.5630)\n", - "Epoch 2670: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2670: accuracy appended (20.00%)\n", - "Epoch 2670: model set back to train mode\n", - "Epoch 2670: model parameters saved\n", - "Epoch 2671 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2671: avg_loss appended (1.5630)\n", - "Epoch 2671: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2671: accuracy appended (20.00%)\n", - "Epoch 2671: model set back to train mode\n", - "Epoch 2671: model parameters saved\n", - "Epoch 2672 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2672: avg_loss appended (1.5630)\n", - "Epoch 2672: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2672: accuracy appended (20.00%)\n", - "Epoch 2672: model set back to train mode\n", - "Epoch 2672: model parameters saved\n", - "Epoch 2673 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2673: avg_loss appended (1.5630)\n", - "Epoch 2673: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2673: accuracy appended (20.00%)\n", - "Epoch 2673: model set back to train mode\n", - "Epoch 2673: model parameters saved\n", - "Epoch 2674 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2674: avg_loss appended (1.5630)\n", - "Epoch 2674: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2674: accuracy appended (20.00%)\n", - "Epoch 2674: model set back to train mode\n", - "Epoch 2674: model parameters saved\n", - "Epoch 2675 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2675: avg_loss appended (1.5630)\n", - "Epoch 2675: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2675: accuracy appended (20.00%)\n", - "Epoch 2675: model set back to train mode\n", - "Epoch 2675: model parameters saved\n", - "Epoch 2676 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2676: avg_loss appended (1.5630)\n", - "Epoch 2676: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2676: accuracy appended (20.00%)\n", - "Epoch 2676: model set back to train mode\n", - "Epoch 2676: model parameters saved\n", - "Epoch 2677 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2677: avg_loss appended (1.5630)\n", - "Epoch 2677: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2677: accuracy appended (20.00%)\n", - "Epoch 2677: model set back to train mode\n", - "Epoch 2677: model parameters saved\n", - "Epoch 2678 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2678: avg_loss appended (1.5630)\n", - "Epoch 2678: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2678: accuracy appended (20.00%)\n", - "Epoch 2678: model set back to train mode\n", - "Epoch 2678: model parameters saved\n", - "Epoch 2679 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2679: avg_loss appended (1.5630)\n", - "Epoch 2679: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2679: accuracy appended (20.00%)\n", - "Epoch 2679: model set back to train mode\n", - "Epoch 2679: model parameters saved\n", - "Epoch 2680 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2680: avg_loss appended (1.5630)\n", - "Epoch 2680: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2680: accuracy appended (20.00%)\n", - "Epoch 2680: model set back to train mode\n", - "Epoch 2680: model parameters saved\n", - "Epoch 2681 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2681: avg_loss appended (1.5630)\n", - "Epoch 2681: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2681: accuracy appended (20.00%)\n", - "Epoch 2681: model set back to train mode\n", - "Epoch 2681: model parameters saved\n", - "Epoch 2682 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2682: avg_loss appended (1.5630)\n", - "Epoch 2682: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2682: accuracy appended (20.00%)\n", - "Epoch 2682: model set back to train mode\n", - "Epoch 2682: model parameters saved\n", - "Epoch 2683 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2683: avg_loss appended (1.5630)\n", - "Epoch 2683: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2683: accuracy appended (20.00%)\n", - "Epoch 2683: model set back to train mode\n", - "Epoch 2683: model parameters saved\n", - "Epoch 2684 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2684: avg_loss appended (1.5630)\n", - "Epoch 2684: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2684: accuracy appended (20.00%)\n", - "Epoch 2684: model set back to train mode\n", - "Epoch 2684: model parameters saved\n", - "Epoch 2685 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2685: avg_loss appended (1.5630)\n", - "Epoch 2685: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2685: accuracy appended (20.00%)\n", - "Epoch 2685: model set back to train mode\n", - "Epoch 2685: model parameters saved\n", - "Epoch 2686 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2686: avg_loss appended (1.5630)\n", - "Epoch 2686: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2686: accuracy appended (20.00%)\n", - "Epoch 2686: model set back to train mode\n", - "Epoch 2686: model parameters saved\n", - "Epoch 2687 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2687: avg_loss appended (1.5630)\n", - "Epoch 2687: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2687: accuracy appended (20.00%)\n", - "Epoch 2687: model set back to train mode\n", - "Epoch 2687: model parameters saved\n", - "Epoch 2688 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2688: avg_loss appended (1.5630)\n", - "Epoch 2688: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2688: accuracy appended (20.00%)\n", - "Epoch 2688: model set back to train mode\n", - "Epoch 2688: model parameters saved\n", - "Epoch 2689 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2689: avg_loss appended (1.5630)\n", - "Epoch 2689: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2689: accuracy appended (20.00%)\n", - "Epoch 2689: model set back to train mode\n", - "Epoch 2689: model parameters saved\n", - "Epoch 2690 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2690: avg_loss appended (1.5630)\n", - "Epoch 2690: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2690: accuracy appended (20.00%)\n", - "Epoch 2690: model set back to train mode\n", - "Epoch 2690: model parameters saved\n", - "Epoch 2691 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2691: avg_loss appended (1.5630)\n", - "Epoch 2691: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2691: accuracy appended (20.00%)\n", - "Epoch 2691: model set back to train mode\n", - "Epoch 2691: model parameters saved\n", - "Epoch 2692 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2692: avg_loss appended (1.5630)\n", - "Epoch 2692: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2692: accuracy appended (20.00%)\n", - "Epoch 2692: model set back to train mode\n", - "Epoch 2692: model parameters saved\n", - "Epoch 2693 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2693: avg_loss appended (1.5630)\n", - "Epoch 2693: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2693: accuracy appended (20.00%)\n", - "Epoch 2693: model set back to train mode\n", - "Epoch 2693: model parameters saved\n", - "Epoch 2694 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2694: avg_loss appended (1.5630)\n", - "Epoch 2694: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2694: accuracy appended (20.00%)\n", - "Epoch 2694: model set back to train mode\n", - "Epoch 2694: model parameters saved\n", - "Epoch 2695 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2695: avg_loss appended (1.5630)\n", - "Epoch 2695: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2695: accuracy appended (20.00%)\n", - "Epoch 2695: model set back to train mode\n", - "Epoch 2695: model parameters saved\n", - "Epoch 2696 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2696: avg_loss appended (1.5630)\n", - "Epoch 2696: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2696: accuracy appended (20.00%)\n", - "Epoch 2696: model set back to train mode\n", - "Epoch 2696: model parameters saved\n", - "Epoch 2697 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2697: avg_loss appended (1.5630)\n", - "Epoch 2697: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2697: accuracy appended (20.00%)\n", - "Epoch 2697: model set back to train mode\n", - "Epoch 2697: model parameters saved\n", - "Epoch 2698 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2698: avg_loss appended (1.5630)\n", - "Epoch 2698: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2698: accuracy appended (20.00%)\n", - "Epoch 2698: model set back to train mode\n", - "Epoch 2698: model parameters saved\n", - "Epoch 2699 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2699: avg_loss appended (1.5630)\n", - "Epoch 2699: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2699: accuracy appended (20.00%)\n", - "Epoch 2699: model set back to train mode\n", - "Epoch 2699: model parameters saved\n", - "Epoch 2700 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2700: avg_loss appended (1.5630)\n", - "Epoch 2700: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2700: accuracy appended (20.00%)\n", - "Epoch 2700: model set back to train mode\n", - "Epoch 2700: model parameters saved\n", - "Epoch 2700/10000, Loss: 1.5630, Accuracy: 20.00%\n", - "Epoch 2701 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2701: avg_loss appended (1.5630)\n", - "Epoch 2701: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2701: accuracy appended (20.00%)\n", - "Epoch 2701: model set back to train mode\n", - "Epoch 2701: model parameters saved\n", - "Epoch 2702 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2702: avg_loss appended (1.5630)\n", - "Epoch 2702: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2702: accuracy appended (20.00%)\n", - "Epoch 2702: model set back to train mode\n", - "Epoch 2702: model parameters saved\n", - "Epoch 2703 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2703: avg_loss appended (1.5630)\n", - "Epoch 2703: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2703: accuracy appended (20.00%)\n", - "Epoch 2703: model set back to train mode\n", - "Epoch 2703: model parameters saved\n", - "Epoch 2704 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2704: avg_loss appended (1.5630)\n", - "Epoch 2704: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2704: accuracy appended (20.00%)\n", - "Epoch 2704: model set back to train mode\n", - "Epoch 2704: model parameters saved\n", - "Epoch 2705 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2705: avg_loss appended (1.5630)\n", - "Epoch 2705: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2705: accuracy appended (20.00%)\n", - "Epoch 2705: model set back to train mode\n", - "Epoch 2705: model parameters saved\n", - "Epoch 2706 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2706: avg_loss appended (1.5630)\n", - "Epoch 2706: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2706: accuracy appended (20.00%)\n", - "Epoch 2706: model set back to train mode\n", - "Epoch 2706: model parameters saved\n", - "Epoch 2707 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2707: avg_loss appended (1.5630)\n", - "Epoch 2707: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2707: accuracy appended (20.00%)\n", - "Epoch 2707: model set back to train mode\n", - "Epoch 2707: model parameters saved\n", - "Epoch 2708 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2708: avg_loss appended (1.5630)\n", - "Epoch 2708: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2708: accuracy appended (20.00%)\n", - "Epoch 2708: model set back to train mode\n", - "Epoch 2708: model parameters saved\n", - "Epoch 2709 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2709: avg_loss appended (1.5630)\n", - "Epoch 2709: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2709: accuracy appended (20.00%)\n", - "Epoch 2709: model set back to train mode\n", - "Epoch 2709: model parameters saved\n", - "Epoch 2710 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2710: avg_loss appended (1.5630)\n", - "Epoch 2710: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2710: accuracy appended (20.00%)\n", - "Epoch 2710: model set back to train mode\n", - "Epoch 2710: model parameters saved\n", - "Epoch 2711 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2711: avg_loss appended (1.5630)\n", - "Epoch 2711: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2711: accuracy appended (20.00%)\n", - "Epoch 2711: model set back to train mode\n", - "Epoch 2711: model parameters saved\n", - "Epoch 2712 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2712: avg_loss appended (1.5630)\n", - "Epoch 2712: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2712: accuracy appended (20.00%)\n", - "Epoch 2712: model set back to train mode\n", - "Epoch 2712: model parameters saved\n", - "Epoch 2713 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2713: avg_loss appended (1.5630)\n", - "Epoch 2713: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2713: accuracy appended (20.00%)\n", - "Epoch 2713: model set back to train mode\n", - "Epoch 2713: model parameters saved\n", - "Epoch 2714 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2714: avg_loss appended (1.5630)\n", - "Epoch 2714: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2714: accuracy appended (20.00%)\n", - "Epoch 2714: model set back to train mode\n", - "Epoch 2714: model parameters saved\n", - "Epoch 2715 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2715: avg_loss appended (1.5630)\n", - "Epoch 2715: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2715: accuracy appended (20.00%)\n", - "Epoch 2715: model set back to train mode\n", - "Epoch 2715: model parameters saved\n", - "Epoch 2716 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2716: avg_loss appended (1.5630)\n", - "Epoch 2716: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2716: accuracy appended (20.00%)\n", - "Epoch 2716: model set back to train mode\n", - "Epoch 2716: model parameters saved\n", - "Epoch 2717 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2717: avg_loss appended (1.5630)\n", - "Epoch 2717: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2717: accuracy appended (20.00%)\n", - "Epoch 2717: model set back to train mode\n", - "Epoch 2717: model parameters saved\n", - "Epoch 2718 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2718: avg_loss appended (1.5630)\n", - "Epoch 2718: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2718: accuracy appended (20.00%)\n", - "Epoch 2718: model set back to train mode\n", - "Epoch 2718: model parameters saved\n", - "Epoch 2719 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2719: avg_loss appended (1.5630)\n", - "Epoch 2719: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2719: accuracy appended (20.00%)\n", - "Epoch 2719: model set back to train mode\n", - "Epoch 2719: model parameters saved\n", - "Epoch 2720 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2720: avg_loss appended (1.5630)\n", - "Epoch 2720: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2720: accuracy appended (20.00%)\n", - "Epoch 2720: model set back to train mode\n", - "Epoch 2720: model parameters saved\n", - "Epoch 2721 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2721: avg_loss appended (1.5630)\n", - "Epoch 2721: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2721: accuracy appended (20.00%)\n", - "Epoch 2721: model set back to train mode\n", - "Epoch 2721: model parameters saved\n", - "Epoch 2722 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2722: avg_loss appended (1.5630)\n", - "Epoch 2722: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2722: accuracy appended (20.00%)\n", - "Epoch 2722: model set back to train mode\n", - "Epoch 2722: model parameters saved\n", - "Epoch 2723 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2723: avg_loss appended (1.5630)\n", - "Epoch 2723: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2723: accuracy appended (20.00%)\n", - "Epoch 2723: model set back to train mode\n", - "Epoch 2723: model parameters saved\n", - "Epoch 2724 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2724: avg_loss appended (1.5630)\n", - "Epoch 2724: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2724: accuracy appended (20.00%)\n", - "Epoch 2724: model set back to train mode\n", - "Epoch 2724: model parameters saved\n", - "Epoch 2725 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2725: avg_loss appended (1.5630)\n", - "Epoch 2725: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2725: accuracy appended (20.00%)\n", - "Epoch 2725: model set back to train mode\n", - "Epoch 2725: model parameters saved\n", - "Epoch 2726 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2726: avg_loss appended (1.5630)\n", - "Epoch 2726: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2726: accuracy appended (20.00%)\n", - "Epoch 2726: model set back to train mode\n", - "Epoch 2726: model parameters saved\n", - "Epoch 2727 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2727: avg_loss appended (1.5630)\n", - "Epoch 2727: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2727: accuracy appended (20.00%)\n", - "Epoch 2727: model set back to train mode\n", - "Epoch 2727: model parameters saved\n", - "Epoch 2728 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2728: avg_loss appended (1.5630)\n", - "Epoch 2728: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2728: accuracy appended (20.00%)\n", - "Epoch 2728: model set back to train mode\n", - "Epoch 2728: model parameters saved\n", - "Epoch 2729 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2729: avg_loss appended (1.5630)\n", - "Epoch 2729: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2729: accuracy appended (20.00%)\n", - "Epoch 2729: model set back to train mode\n", - "Epoch 2729: model parameters saved\n", - "Epoch 2730 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2730: avg_loss appended (1.5630)\n", - "Epoch 2730: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2730: accuracy appended (20.00%)\n", - "Epoch 2730: model set back to train mode\n", - "Epoch 2730: model parameters saved\n", - "Epoch 2731 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2731: avg_loss appended (1.5630)\n", - "Epoch 2731: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2731: accuracy appended (20.00%)\n", - "Epoch 2731: model set back to train mode\n", - "Epoch 2731: model parameters saved\n", - "Epoch 2732 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2732: avg_loss appended (1.5630)\n", - "Epoch 2732: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2732: accuracy appended (20.00%)\n", - "Epoch 2732: model set back to train mode\n", - "Epoch 2732: model parameters saved\n", - "Epoch 2733 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2733: avg_loss appended (1.5630)\n", - "Epoch 2733: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2733: accuracy appended (20.00%)\n", - "Epoch 2733: model set back to train mode\n", - "Epoch 2733: model parameters saved\n", - "Epoch 2734 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2734: avg_loss appended (1.5630)\n", - "Epoch 2734: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2734: accuracy appended (20.00%)\n", - "Epoch 2734: model set back to train mode\n", - "Epoch 2734: model parameters saved\n", - "Epoch 2735 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2735: avg_loss appended (1.5630)\n", - "Epoch 2735: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2735: accuracy appended (20.00%)\n", - "Epoch 2735: model set back to train mode\n", - "Epoch 2735: model parameters saved\n", - "Epoch 2736 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2736: avg_loss appended (1.5630)\n", - "Epoch 2736: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2736: accuracy appended (20.00%)\n", - "Epoch 2736: model set back to train mode\n", - "Epoch 2736: model parameters saved\n", - "Epoch 2737 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2737: avg_loss appended (1.5630)\n", - "Epoch 2737: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2737: accuracy appended (20.00%)\n", - "Epoch 2737: model set back to train mode\n", - "Epoch 2737: model parameters saved\n", - "Epoch 2738 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2738: avg_loss appended (1.5630)\n", - "Epoch 2738: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2738: accuracy appended (20.00%)\n", - "Epoch 2738: model set back to train mode\n", - "Epoch 2738: model parameters saved\n", - "Epoch 2739 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2739: avg_loss appended (1.5630)\n", - "Epoch 2739: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2739: accuracy appended (20.00%)\n", - "Epoch 2739: model set back to train mode\n", - "Epoch 2739: model parameters saved\n", - "Epoch 2740 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2740: avg_loss appended (1.5630)\n", - "Epoch 2740: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2740: accuracy appended (20.00%)\n", - "Epoch 2740: model set back to train mode\n", - "Epoch 2740: model parameters saved\n", - "Epoch 2741 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2741: avg_loss appended (1.5630)\n", - "Epoch 2741: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2741: accuracy appended (20.00%)\n", - "Epoch 2741: model set back to train mode\n", - "Epoch 2741: model parameters saved\n", - "Epoch 2742 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2742: avg_loss appended (1.5630)\n", - "Epoch 2742: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2742: accuracy appended (20.00%)\n", - "Epoch 2742: model set back to train mode\n", - "Epoch 2742: model parameters saved\n", - "Epoch 2743 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2743: avg_loss appended (1.5630)\n", - "Epoch 2743: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2743: accuracy appended (20.00%)\n", - "Epoch 2743: model set back to train mode\n", - "Epoch 2743: model parameters saved\n", - "Epoch 2744 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2744: avg_loss appended (1.5630)\n", - "Epoch 2744: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2744: accuracy appended (20.00%)\n", - "Epoch 2744: model set back to train mode\n", - "Epoch 2744: model parameters saved\n", - "Epoch 2745 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2745: avg_loss appended (1.5630)\n", - "Epoch 2745: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2745: accuracy appended (20.00%)\n", - "Epoch 2745: model set back to train mode\n", - "Epoch 2745: model parameters saved\n", - "Epoch 2746 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2746: avg_loss appended (1.5630)\n", - "Epoch 2746: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2746: accuracy appended (20.00%)\n", - "Epoch 2746: model set back to train mode\n", - "Epoch 2746: model parameters saved\n", - "Epoch 2747 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2747: avg_loss appended (1.5630)\n", - "Epoch 2747: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2747: accuracy appended (20.00%)\n", - "Epoch 2747: model set back to train mode\n", - "Epoch 2747: model parameters saved\n", - "Epoch 2748 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2748: avg_loss appended (1.5630)\n", - "Epoch 2748: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2748: accuracy appended (20.00%)\n", - "Epoch 2748: model set back to train mode\n", - "Epoch 2748: model parameters saved\n", - "Epoch 2749 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2749: avg_loss appended (1.5630)\n", - "Epoch 2749: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2749: accuracy appended (20.00%)\n", - "Epoch 2749: model set back to train mode\n", - "Epoch 2749: model parameters saved\n", - "Epoch 2750 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2750: avg_loss appended (1.5630)\n", - "Epoch 2750: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2750: accuracy appended (20.00%)\n", - "Epoch 2750: model set back to train mode\n", - "Epoch 2750: model parameters saved\n", - "Epoch 2751 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2751: avg_loss appended (1.5630)\n", - "Epoch 2751: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2751: accuracy appended (20.00%)\n", - "Epoch 2751: model set back to train mode\n", - "Epoch 2751: model parameters saved\n", - "Epoch 2752 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2752: avg_loss appended (1.5630)\n", - "Epoch 2752: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2752: accuracy appended (20.00%)\n", - "Epoch 2752: model set back to train mode\n", - "Epoch 2752: model parameters saved\n", - "Epoch 2753 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2753: avg_loss appended (1.5630)\n", - "Epoch 2753: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2753: accuracy appended (20.00%)\n", - "Epoch 2753: model set back to train mode\n", - "Epoch 2753: model parameters saved\n", - "Epoch 2754 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2754: avg_loss appended (1.5630)\n", - "Epoch 2754: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2754: accuracy appended (20.00%)\n", - "Epoch 2754: model set back to train mode\n", - "Epoch 2754: model parameters saved\n", - "Epoch 2755 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2755: avg_loss appended (1.5630)\n", - "Epoch 2755: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2755: accuracy appended (20.00%)\n", - "Epoch 2755: model set back to train mode\n", - "Epoch 2755: model parameters saved\n", - "Epoch 2756 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2756: avg_loss appended (1.5630)\n", - "Epoch 2756: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2756: accuracy appended (20.00%)\n", - "Epoch 2756: model set back to train mode\n", - "Epoch 2756: model parameters saved\n", - "Epoch 2757 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2757: avg_loss appended (1.5630)\n", - "Epoch 2757: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2757: accuracy appended (20.00%)\n", - "Epoch 2757: model set back to train mode\n", - "Epoch 2757: model parameters saved\n", - "Epoch 2758 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2758: avg_loss appended (1.5630)\n", - "Epoch 2758: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2758: accuracy appended (20.00%)\n", - "Epoch 2758: model set back to train mode\n", - "Epoch 2758: model parameters saved\n", - "Epoch 2759 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2759: avg_loss appended (1.5630)\n", - "Epoch 2759: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2759: accuracy appended (20.00%)\n", - "Epoch 2759: model set back to train mode\n", - "Epoch 2759: model parameters saved\n", - "Epoch 2760 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2760: avg_loss appended (1.5630)\n", - "Epoch 2760: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2760: accuracy appended (20.00%)\n", - "Epoch 2760: model set back to train mode\n", - "Epoch 2760: model parameters saved\n", - "Epoch 2761 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2761: avg_loss appended (1.5630)\n", - "Epoch 2761: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2761: accuracy appended (20.00%)\n", - "Epoch 2761: model set back to train mode\n", - "Epoch 2761: model parameters saved\n", - "Epoch 2762 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2762: avg_loss appended (1.5630)\n", - "Epoch 2762: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2762: accuracy appended (20.00%)\n", - "Epoch 2762: model set back to train mode\n", - "Epoch 2762: model parameters saved\n", - "Epoch 2763 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2763: avg_loss appended (1.5630)\n", - "Epoch 2763: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2763: accuracy appended (20.00%)\n", - "Epoch 2763: model set back to train mode\n", - "Epoch 2763: model parameters saved\n", - "Epoch 2764 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2764: avg_loss appended (1.5630)\n", - "Epoch 2764: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2764: accuracy appended (20.00%)\n", - "Epoch 2764: model set back to train mode\n", - "Epoch 2764: model parameters saved\n", - "Epoch 2765 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2765: avg_loss appended (1.5630)\n", - "Epoch 2765: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2765: accuracy appended (20.00%)\n", - "Epoch 2765: model set back to train mode\n", - "Epoch 2765: model parameters saved\n", - "Epoch 2766 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2766: avg_loss appended (1.5630)\n", - "Epoch 2766: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2766: accuracy appended (20.00%)\n", - "Epoch 2766: model set back to train mode\n", - "Epoch 2766: model parameters saved\n", - "Epoch 2767 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2767: avg_loss appended (1.5630)\n", - "Epoch 2767: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2767: accuracy appended (20.00%)\n", - "Epoch 2767: model set back to train mode\n", - "Epoch 2767: model parameters saved\n", - "Epoch 2768 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2768: avg_loss appended (1.5630)\n", - "Epoch 2768: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2768: accuracy appended (20.00%)\n", - "Epoch 2768: model set back to train mode\n", - "Epoch 2768: model parameters saved\n", - "Epoch 2769 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2769: avg_loss appended (1.5630)\n", - "Epoch 2769: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2769: accuracy appended (20.00%)\n", - "Epoch 2769: model set back to train mode\n", - "Epoch 2769: model parameters saved\n", - "Epoch 2770 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2770: avg_loss appended (1.5630)\n", - "Epoch 2770: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2770: accuracy appended (20.00%)\n", - "Epoch 2770: model set back to train mode\n", - "Epoch 2770: model parameters saved\n", - "Epoch 2771 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2771: avg_loss appended (1.5630)\n", - "Epoch 2771: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2771: accuracy appended (20.00%)\n", - "Epoch 2771: model set back to train mode\n", - "Epoch 2771: model parameters saved\n", - "Epoch 2772 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2772: avg_loss appended (1.5630)\n", - "Epoch 2772: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2772: accuracy appended (20.00%)\n", - "Epoch 2772: model set back to train mode\n", - "Epoch 2772: model parameters saved\n", - "Epoch 2773 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2773: avg_loss appended (1.5630)\n", - "Epoch 2773: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2773: accuracy appended (20.00%)\n", - "Epoch 2773: model set back to train mode\n", - "Epoch 2773: model parameters saved\n", - "Epoch 2774 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2774: avg_loss appended (1.5630)\n", - "Epoch 2774: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2774: accuracy appended (20.00%)\n", - "Epoch 2774: model set back to train mode\n", - "Epoch 2774: model parameters saved\n", - "Epoch 2775 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2775: avg_loss appended (1.5630)\n", - "Epoch 2775: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2775: accuracy appended (20.00%)\n", - "Epoch 2775: model set back to train mode\n", - "Epoch 2775: model parameters saved\n", - "Epoch 2776 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2776: avg_loss appended (1.5630)\n", - "Epoch 2776: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2776: accuracy appended (20.00%)\n", - "Epoch 2776: model set back to train mode\n", - "Epoch 2776: model parameters saved\n", - "Epoch 2777 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2777: avg_loss appended (1.5630)\n", - "Epoch 2777: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2777: accuracy appended (20.00%)\n", - "Epoch 2777: model set back to train mode\n", - "Epoch 2777: model parameters saved\n", - "Epoch 2778 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2778: avg_loss appended (1.5630)\n", - "Epoch 2778: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2778: accuracy appended (20.00%)\n", - "Epoch 2778: model set back to train mode\n", - "Epoch 2778: model parameters saved\n", - "Epoch 2779 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2779: avg_loss appended (1.5630)\n", - "Epoch 2779: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2779: accuracy appended (20.00%)\n", - "Epoch 2779: model set back to train mode\n", - "Epoch 2779: model parameters saved\n", - "Epoch 2780 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2780: avg_loss appended (1.5630)\n", - "Epoch 2780: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2780: accuracy appended (20.00%)\n", - "Epoch 2780: model set back to train mode\n", - "Epoch 2780: model parameters saved\n", - "Epoch 2781 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2781: avg_loss appended (1.5630)\n", - "Epoch 2781: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2781: accuracy appended (20.00%)\n", - "Epoch 2781: model set back to train mode\n", - "Epoch 2781: model parameters saved\n", - "Epoch 2782 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2782: avg_loss appended (1.5630)\n", - "Epoch 2782: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2782: accuracy appended (20.00%)\n", - "Epoch 2782: model set back to train mode\n", - "Epoch 2782: model parameters saved\n", - "Epoch 2783 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2783: avg_loss appended (1.5630)\n", - "Epoch 2783: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2783: accuracy appended (20.00%)\n", - "Epoch 2783: model set back to train mode\n", - "Epoch 2783: model parameters saved\n", - "Epoch 2784 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2784: avg_loss appended (1.5630)\n", - "Epoch 2784: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2784: accuracy appended (20.00%)\n", - "Epoch 2784: model set back to train mode\n", - "Epoch 2784: model parameters saved\n", - "Epoch 2785 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2785: avg_loss appended (1.5630)\n", - "Epoch 2785: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2785: accuracy appended (20.00%)\n", - "Epoch 2785: model set back to train mode\n", - "Epoch 2785: model parameters saved\n", - "Epoch 2786 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2786: avg_loss appended (1.5630)\n", - "Epoch 2786: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2786: accuracy appended (20.00%)\n", - "Epoch 2786: model set back to train mode\n", - "Epoch 2786: model parameters saved\n", - "Epoch 2787 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2787: avg_loss appended (1.5630)\n", - "Epoch 2787: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2787: accuracy appended (20.00%)\n", - "Epoch 2787: model set back to train mode\n", - "Epoch 2787: model parameters saved\n", - "Epoch 2788 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2788: avg_loss appended (1.5630)\n", - "Epoch 2788: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2788: accuracy appended (20.00%)\n", - "Epoch 2788: model set back to train mode\n", - "Epoch 2788: model parameters saved\n", - "Epoch 2789 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2789: avg_loss appended (1.5630)\n", - "Epoch 2789: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2789: accuracy appended (20.00%)\n", - "Epoch 2789: model set back to train mode\n", - "Epoch 2789: model parameters saved\n", - "Epoch 2790 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2790: avg_loss appended (1.5630)\n", - "Epoch 2790: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2790: accuracy appended (20.00%)\n", - "Epoch 2790: model set back to train mode\n", - "Epoch 2790: model parameters saved\n", - "Epoch 2791 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2791: avg_loss appended (1.5630)\n", - "Epoch 2791: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2791: accuracy appended (20.00%)\n", - "Epoch 2791: model set back to train mode\n", - "Epoch 2791: model parameters saved\n", - "Epoch 2792 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2792: avg_loss appended (1.5630)\n", - "Epoch 2792: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2792: accuracy appended (20.00%)\n", - "Epoch 2792: model set back to train mode\n", - "Epoch 2792: model parameters saved\n", - "Epoch 2793 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2793: avg_loss appended (1.5630)\n", - "Epoch 2793: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2793: accuracy appended (20.00%)\n", - "Epoch 2793: model set back to train mode\n", - "Epoch 2793: model parameters saved\n", - "Epoch 2794 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2794: avg_loss appended (1.5630)\n", - "Epoch 2794: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2794: accuracy appended (20.00%)\n", - "Epoch 2794: model set back to train mode\n", - "Epoch 2794: model parameters saved\n", - "Epoch 2795 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2795: avg_loss appended (1.5630)\n", - "Epoch 2795: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2795: accuracy appended (20.00%)\n", - "Epoch 2795: model set back to train mode\n", - "Epoch 2795: model parameters saved\n", - "Epoch 2796 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2796: avg_loss appended (1.5630)\n", - "Epoch 2796: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2796: accuracy appended (20.00%)\n", - "Epoch 2796: model set back to train mode\n", - "Epoch 2796: model parameters saved\n", - "Epoch 2797 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2797: avg_loss appended (1.5630)\n", - "Epoch 2797: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2797: accuracy appended (20.00%)\n", - "Epoch 2797: model set back to train mode\n", - "Epoch 2797: model parameters saved\n", - "Epoch 2798 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2798: avg_loss appended (1.5630)\n", - "Epoch 2798: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2798: accuracy appended (20.00%)\n", - "Epoch 2798: model set back to train mode\n", - "Epoch 2798: model parameters saved\n", - "Epoch 2799 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2799: avg_loss appended (1.5630)\n", - "Epoch 2799: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2799: accuracy appended (20.00%)\n", - "Epoch 2799: model set back to train mode\n", - "Epoch 2799: model parameters saved\n", - "Epoch 2800 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2800: avg_loss appended (1.5630)\n", - "Epoch 2800: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2800: accuracy appended (20.00%)\n", - "Epoch 2800: model set back to train mode\n", - "Epoch 2800: model parameters saved\n", - "Epoch 2800/10000, Loss: 1.5630, Accuracy: 20.00%\n", - "Epoch 2801 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2801: avg_loss appended (1.5630)\n", - "Epoch 2801: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2801: accuracy appended (20.00%)\n", - "Epoch 2801: model set back to train mode\n", - "Epoch 2801: model parameters saved\n", - "Epoch 2802 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2802: avg_loss appended (1.5630)\n", - "Epoch 2802: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2802: accuracy appended (20.00%)\n", - "Epoch 2802: model set back to train mode\n", - "Epoch 2802: model parameters saved\n", - "Epoch 2803 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2803: avg_loss appended (1.5630)\n", - "Epoch 2803: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2803: accuracy appended (20.00%)\n", - "Epoch 2803: model set back to train mode\n", - "Epoch 2803: model parameters saved\n", - "Epoch 2804 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2804: avg_loss appended (1.5630)\n", - "Epoch 2804: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2804: accuracy appended (20.00%)\n", - "Epoch 2804: model set back to train mode\n", - "Epoch 2804: model parameters saved\n", - "Epoch 2805 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2805: avg_loss appended (1.5630)\n", - "Epoch 2805: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2805: accuracy appended (20.00%)\n", - "Epoch 2805: model set back to train mode\n", - "Epoch 2805: model parameters saved\n", - "Epoch 2806 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2806: avg_loss appended (1.5630)\n", - "Epoch 2806: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2806: accuracy appended (20.00%)\n", - "Epoch 2806: model set back to train mode\n", - "Epoch 2806: model parameters saved\n", - "Epoch 2807 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2807: avg_loss appended (1.5630)\n", - "Epoch 2807: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2807: accuracy appended (20.00%)\n", - "Epoch 2807: model set back to train mode\n", - "Epoch 2807: model parameters saved\n", - "Epoch 2808 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2808: avg_loss appended (1.5630)\n", - "Epoch 2808: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2808: accuracy appended (20.00%)\n", - "Epoch 2808: model set back to train mode\n", - "Epoch 2808: model parameters saved\n", - "Epoch 2809 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2809: avg_loss appended (1.5630)\n", - "Epoch 2809: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2809: accuracy appended (20.00%)\n", - "Epoch 2809: model set back to train mode\n", - "Epoch 2809: model parameters saved\n", - "Epoch 2810 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2810: avg_loss appended (1.5630)\n", - "Epoch 2810: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2810: accuracy appended (20.00%)\n", - "Epoch 2810: model set back to train mode\n", - "Epoch 2810: model parameters saved\n", - "Epoch 2811 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2811: avg_loss appended (1.5630)\n", - "Epoch 2811: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2811: accuracy appended (20.00%)\n", - "Epoch 2811: model set back to train mode\n", - "Epoch 2811: model parameters saved\n", - "Epoch 2812 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2812: avg_loss appended (1.5630)\n", - "Epoch 2812: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2812: accuracy appended (20.00%)\n", - "Epoch 2812: model set back to train mode\n", - "Epoch 2812: model parameters saved\n", - "Epoch 2813 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2813: avg_loss appended (1.5630)\n", - "Epoch 2813: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2813: accuracy appended (20.00%)\n", - "Epoch 2813: model set back to train mode\n", - "Epoch 2813: model parameters saved\n", - "Epoch 2814 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2814: avg_loss appended (1.5630)\n", - "Epoch 2814: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2814: accuracy appended (20.00%)\n", - "Epoch 2814: model set back to train mode\n", - "Epoch 2814: model parameters saved\n", - "Epoch 2815 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2815: avg_loss appended (1.5630)\n", - "Epoch 2815: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2815: accuracy appended (20.00%)\n", - "Epoch 2815: model set back to train mode\n", - "Epoch 2815: model parameters saved\n", - "Epoch 2816 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2816: avg_loss appended (1.5630)\n", - "Epoch 2816: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2816: accuracy appended (20.00%)\n", - "Epoch 2816: model set back to train mode\n", - "Epoch 2816: model parameters saved\n", - "Epoch 2817 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2817: avg_loss appended (1.5630)\n", - "Epoch 2817: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2817: accuracy appended (20.00%)\n", - "Epoch 2817: model set back to train mode\n", - "Epoch 2817: model parameters saved\n", - "Epoch 2818 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2818: avg_loss appended (1.5630)\n", - "Epoch 2818: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2818: accuracy appended (20.00%)\n", - "Epoch 2818: model set back to train mode\n", - "Epoch 2818: model parameters saved\n", - "Epoch 2819 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2819: avg_loss appended (1.5630)\n", - "Epoch 2819: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2819: accuracy appended (20.00%)\n", - "Epoch 2819: model set back to train mode\n", - "Epoch 2819: model parameters saved\n", - "Epoch 2820 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2820: avg_loss appended (1.5630)\n", - "Epoch 2820: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2820: accuracy appended (20.00%)\n", - "Epoch 2820: model set back to train mode\n", - "Epoch 2820: model parameters saved\n", - "Epoch 2821 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2821: avg_loss appended (1.5630)\n", - "Epoch 2821: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2821: accuracy appended (20.00%)\n", - "Epoch 2821: model set back to train mode\n", - "Epoch 2821: model parameters saved\n", - "Epoch 2822 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2822: avg_loss appended (1.5630)\n", - "Epoch 2822: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2822: accuracy appended (20.00%)\n", - "Epoch 2822: model set back to train mode\n", - "Epoch 2822: model parameters saved\n", - "Epoch 2823 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2823: avg_loss appended (1.5630)\n", - "Epoch 2823: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2823: accuracy appended (20.00%)\n", - "Epoch 2823: model set back to train mode\n", - "Epoch 2823: model parameters saved\n", - "Epoch 2824 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2824: avg_loss appended (1.5630)\n", - "Epoch 2824: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2824: accuracy appended (20.00%)\n", - "Epoch 2824: model set back to train mode\n", - "Epoch 2824: model parameters saved\n", - "Epoch 2825 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2825: avg_loss appended (1.5630)\n", - "Epoch 2825: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2825: accuracy appended (20.00%)\n", - "Epoch 2825: model set back to train mode\n", - "Epoch 2825: model parameters saved\n", - "Epoch 2826 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2826: avg_loss appended (1.5630)\n", - "Epoch 2826: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2826: accuracy appended (20.00%)\n", - "Epoch 2826: model set back to train mode\n", - "Epoch 2826: model parameters saved\n", - "Epoch 2827 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2827: avg_loss appended (1.5630)\n", - "Epoch 2827: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2827: accuracy appended (20.00%)\n", - "Epoch 2827: model set back to train mode\n", - "Epoch 2827: model parameters saved\n", - "Epoch 2828 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2828: avg_loss appended (1.5630)\n", - "Epoch 2828: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2828: accuracy appended (20.00%)\n", - "Epoch 2828: model set back to train mode\n", - "Epoch 2828: model parameters saved\n", - "Epoch 2829 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2829: avg_loss appended (1.5630)\n", - "Epoch 2829: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2829: accuracy appended (20.00%)\n", - "Epoch 2829: model set back to train mode\n", - "Epoch 2829: model parameters saved\n", - "Epoch 2830 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2830: avg_loss appended (1.5630)\n", - "Epoch 2830: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2830: accuracy appended (20.00%)\n", - "Epoch 2830: model set back to train mode\n", - "Epoch 2830: model parameters saved\n", - "Epoch 2831 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2831: avg_loss appended (1.5630)\n", - "Epoch 2831: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2831: accuracy appended (20.00%)\n", - "Epoch 2831: model set back to train mode\n", - "Epoch 2831: model parameters saved\n", - "Epoch 2832 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2832: avg_loss appended (1.5630)\n", - "Epoch 2832: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2832: accuracy appended (20.00%)\n", - "Epoch 2832: model set back to train mode\n", - "Epoch 2832: model parameters saved\n", - "Epoch 2833 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2833: avg_loss appended (1.5630)\n", - "Epoch 2833: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2833: accuracy appended (20.00%)\n", - "Epoch 2833: model set back to train mode\n", - "Epoch 2833: model parameters saved\n", - "Epoch 2834 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2834: avg_loss appended (1.5630)\n", - "Epoch 2834: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2834: accuracy appended (20.00%)\n", - "Epoch 2834: model set back to train mode\n", - "Epoch 2834: model parameters saved\n", - "Epoch 2835 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2835: avg_loss appended (1.5630)\n", - "Epoch 2835: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2835: accuracy appended (20.00%)\n", - "Epoch 2835: model set back to train mode\n", - "Epoch 2835: model parameters saved\n", - "Epoch 2836 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2836: avg_loss appended (1.5630)\n", - "Epoch 2836: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2836: accuracy appended (20.00%)\n", - "Epoch 2836: model set back to train mode\n", - "Epoch 2836: model parameters saved\n", - "Epoch 2837 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2837: avg_loss appended (1.5630)\n", - "Epoch 2837: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2837: accuracy appended (20.00%)\n", - "Epoch 2837: model set back to train mode\n", - "Epoch 2837: model parameters saved\n", - "Epoch 2838 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2838: avg_loss appended (1.5630)\n", - "Epoch 2838: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2838: accuracy appended (20.00%)\n", - "Epoch 2838: model set back to train mode\n", - "Epoch 2838: model parameters saved\n", - "Epoch 2839 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2839: avg_loss appended (1.5630)\n", - "Epoch 2839: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2839: accuracy appended (20.00%)\n", - "Epoch 2839: model set back to train mode\n", - "Epoch 2839: model parameters saved\n", - "Epoch 2840 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2840: avg_loss appended (1.5630)\n", - "Epoch 2840: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2840: accuracy appended (20.00%)\n", - "Epoch 2840: model set back to train mode\n", - "Epoch 2840: model parameters saved\n", - "Epoch 2841 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2841: avg_loss appended (1.5630)\n", - "Epoch 2841: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2841: accuracy appended (20.00%)\n", - "Epoch 2841: model set back to train mode\n", - "Epoch 2841: model parameters saved\n", - "Epoch 2842 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2842: avg_loss appended (1.5630)\n", - "Epoch 2842: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2842: accuracy appended (20.00%)\n", - "Epoch 2842: model set back to train mode\n", - "Epoch 2842: model parameters saved\n", - "Epoch 2843 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2843: avg_loss appended (1.5630)\n", - "Epoch 2843: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2843: accuracy appended (20.00%)\n", - "Epoch 2843: model set back to train mode\n", - "Epoch 2843: model parameters saved\n", - "Epoch 2844 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2844: avg_loss appended (1.5630)\n", - "Epoch 2844: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2844: accuracy appended (20.00%)\n", - "Epoch 2844: model set back to train mode\n", - "Epoch 2844: model parameters saved\n", - "Epoch 2845 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2845: avg_loss appended (1.5630)\n", - "Epoch 2845: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2845: accuracy appended (20.00%)\n", - "Epoch 2845: model set back to train mode\n", - "Epoch 2845: model parameters saved\n", - "Epoch 2846 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2846: avg_loss appended (1.5630)\n", - "Epoch 2846: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2846: accuracy appended (20.00%)\n", - "Epoch 2846: model set back to train mode\n", - "Epoch 2846: model parameters saved\n", - "Epoch 2847 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2847: avg_loss appended (1.5630)\n", - "Epoch 2847: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2847: accuracy appended (20.00%)\n", - "Epoch 2847: model set back to train mode\n", - "Epoch 2847: model parameters saved\n", - "Epoch 2848 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2848: avg_loss appended (1.5630)\n", - "Epoch 2848: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2848: accuracy appended (20.00%)\n", - "Epoch 2848: model set back to train mode\n", - "Epoch 2848: model parameters saved\n", - "Epoch 2849 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2849: avg_loss appended (1.5630)\n", - "Epoch 2849: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2849: accuracy appended (20.00%)\n", - "Epoch 2849: model set back to train mode\n", - "Epoch 2849: model parameters saved\n", - "Epoch 2850 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2850: avg_loss appended (1.5630)\n", - "Epoch 2850: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2850: accuracy appended (20.00%)\n", - "Epoch 2850: model set back to train mode\n", - "Epoch 2850: model parameters saved\n", - "Epoch 2851 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2851: avg_loss appended (1.5630)\n", - "Epoch 2851: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2851: accuracy appended (20.00%)\n", - "Epoch 2851: model set back to train mode\n", - "Epoch 2851: model parameters saved\n", - "Epoch 2852 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2852: avg_loss appended (1.5630)\n", - "Epoch 2852: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2852: accuracy appended (20.00%)\n", - "Epoch 2852: model set back to train mode\n", - "Epoch 2852: model parameters saved\n", - "Epoch 2853 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2853: avg_loss appended (1.5630)\n", - "Epoch 2853: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2853: accuracy appended (20.00%)\n", - "Epoch 2853: model set back to train mode\n", - "Epoch 2853: model parameters saved\n", - "Epoch 2854 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2854: avg_loss appended (1.5630)\n", - "Epoch 2854: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2854: accuracy appended (20.00%)\n", - "Epoch 2854: model set back to train mode\n", - "Epoch 2854: model parameters saved\n", - "Epoch 2855 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2855: avg_loss appended (1.5630)\n", - "Epoch 2855: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2855: accuracy appended (20.00%)\n", - "Epoch 2855: model set back to train mode\n", - "Epoch 2855: model parameters saved\n", - "Epoch 2856 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2856: avg_loss appended (1.5630)\n", - "Epoch 2856: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2856: accuracy appended (20.00%)\n", - "Epoch 2856: model set back to train mode\n", - "Epoch 2856: model parameters saved\n", - "Epoch 2857 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2857: avg_loss appended (1.5630)\n", - "Epoch 2857: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2857: accuracy appended (20.00%)\n", - "Epoch 2857: model set back to train mode\n", - "Epoch 2857: model parameters saved\n", - "Epoch 2858 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2858: avg_loss appended (1.5630)\n", - "Epoch 2858: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2858: accuracy appended (20.00%)\n", - "Epoch 2858: model set back to train mode\n", - "Epoch 2858: model parameters saved\n", - "Epoch 2859 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2859: avg_loss appended (1.5630)\n", - "Epoch 2859: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2859: accuracy appended (20.00%)\n", - "Epoch 2859: model set back to train mode\n", - "Epoch 2859: model parameters saved\n", - "Epoch 2860 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2860: avg_loss appended (1.5630)\n", - "Epoch 2860: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2860: accuracy appended (20.00%)\n", - "Epoch 2860: model set back to train mode\n", - "Epoch 2860: model parameters saved\n", - "Epoch 2861 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2861: avg_loss appended (1.5630)\n", - "Epoch 2861: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2861: accuracy appended (20.00%)\n", - "Epoch 2861: model set back to train mode\n", - "Epoch 2861: model parameters saved\n", - "Epoch 2862 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2862: avg_loss appended (1.5630)\n", - "Epoch 2862: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2862: accuracy appended (20.00%)\n", - "Epoch 2862: model set back to train mode\n", - "Epoch 2862: model parameters saved\n", - "Epoch 2863 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2863: avg_loss appended (1.5630)\n", - "Epoch 2863: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2863: accuracy appended (20.00%)\n", - "Epoch 2863: model set back to train mode\n", - "Epoch 2863: model parameters saved\n", - "Epoch 2864 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2864: avg_loss appended (1.5630)\n", - "Epoch 2864: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2864: accuracy appended (20.00%)\n", - "Epoch 2864: model set back to train mode\n", - "Epoch 2864: model parameters saved\n", - "Epoch 2865 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2865: avg_loss appended (1.5630)\n", - "Epoch 2865: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2865: accuracy appended (20.00%)\n", - "Epoch 2865: model set back to train mode\n", - "Epoch 2865: model parameters saved\n", - "Epoch 2866 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2866: avg_loss appended (1.5630)\n", - "Epoch 2866: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2866: accuracy appended (20.00%)\n", - "Epoch 2866: model set back to train mode\n", - "Epoch 2866: model parameters saved\n", - "Epoch 2867 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2867: avg_loss appended (1.5630)\n", - "Epoch 2867: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2867: accuracy appended (20.00%)\n", - "Epoch 2867: model set back to train mode\n", - "Epoch 2867: model parameters saved\n", - "Epoch 2868 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2868: avg_loss appended (1.5630)\n", - "Epoch 2868: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2868: accuracy appended (20.00%)\n", - "Epoch 2868: model set back to train mode\n", - "Epoch 2868: model parameters saved\n", - "Epoch 2869 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2869: avg_loss appended (1.5630)\n", - "Epoch 2869: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2869: accuracy appended (20.00%)\n", - "Epoch 2869: model set back to train mode\n", - "Epoch 2869: model parameters saved\n", - "Epoch 2870 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2870: avg_loss appended (1.5630)\n", - "Epoch 2870: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2870: accuracy appended (20.00%)\n", - "Epoch 2870: model set back to train mode\n", - "Epoch 2870: model parameters saved\n", - "Epoch 2871 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2871: avg_loss appended (1.5630)\n", - "Epoch 2871: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2871: accuracy appended (20.00%)\n", - "Epoch 2871: model set back to train mode\n", - "Epoch 2871: model parameters saved\n", - "Epoch 2872 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2872: avg_loss appended (1.5630)\n", - "Epoch 2872: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2872: accuracy appended (20.00%)\n", - "Epoch 2872: model set back to train mode\n", - "Epoch 2872: model parameters saved\n", - "Epoch 2873 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2873: avg_loss appended (1.5630)\n", - "Epoch 2873: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2873: accuracy appended (20.00%)\n", - "Epoch 2873: model set back to train mode\n", - "Epoch 2873: model parameters saved\n", - "Epoch 2874 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2874: avg_loss appended (1.5630)\n", - "Epoch 2874: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2874: accuracy appended (20.00%)\n", - "Epoch 2874: model set back to train mode\n", - "Epoch 2874: model parameters saved\n", - "Epoch 2875 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2875: avg_loss appended (1.5630)\n", - "Epoch 2875: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2875: accuracy appended (20.00%)\n", - "Epoch 2875: model set back to train mode\n", - "Epoch 2875: model parameters saved\n", - "Epoch 2876 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2876: avg_loss appended (1.5630)\n", - "Epoch 2876: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2876: accuracy appended (20.00%)\n", - "Epoch 2876: model set back to train mode\n", - "Epoch 2876: model parameters saved\n", - "Epoch 2877 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2877: avg_loss appended (1.5630)\n", - "Epoch 2877: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2877: accuracy appended (20.00%)\n", - "Epoch 2877: model set back to train mode\n", - "Epoch 2877: model parameters saved\n", - "Epoch 2878 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2878: avg_loss appended (1.5630)\n", - "Epoch 2878: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2878: accuracy appended (20.00%)\n", - "Epoch 2878: model set back to train mode\n", - "Epoch 2878: model parameters saved\n", - "Epoch 2879 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5630)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5630)\n", - "Epoch 2879: avg_loss appended (1.5630)\n", - "Epoch 2879: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2879: accuracy appended (20.00%)\n", - "Epoch 2879: model set back to train mode\n", - "Epoch 2879: model parameters saved\n", - "Epoch 2880 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2880: avg_loss appended (1.5629)\n", - "Epoch 2880: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2880: accuracy appended (20.00%)\n", - "Epoch 2880: model set back to train mode\n", - "Epoch 2880: model parameters saved\n", - "Epoch 2881 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2881: avg_loss appended (1.5629)\n", - "Epoch 2881: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2881: accuracy appended (20.00%)\n", - "Epoch 2881: model set back to train mode\n", - "Epoch 2881: model parameters saved\n", - "Epoch 2882 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2882: avg_loss appended (1.5629)\n", - "Epoch 2882: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2882: accuracy appended (20.00%)\n", - "Epoch 2882: model set back to train mode\n", - "Epoch 2882: model parameters saved\n", - "Epoch 2883 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2883: avg_loss appended (1.5629)\n", - "Epoch 2883: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2883: accuracy appended (20.00%)\n", - "Epoch 2883: model set back to train mode\n", - "Epoch 2883: model parameters saved\n", - "Epoch 2884 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2884: avg_loss appended (1.5629)\n", - "Epoch 2884: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2884: accuracy appended (20.00%)\n", - "Epoch 2884: model set back to train mode\n", - "Epoch 2884: model parameters saved\n", - "Epoch 2885 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2885: avg_loss appended (1.5629)\n", - "Epoch 2885: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2885: accuracy appended (20.00%)\n", - "Epoch 2885: model set back to train mode\n", - "Epoch 2885: model parameters saved\n", - "Epoch 2886 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2886: avg_loss appended (1.5629)\n", - "Epoch 2886: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2886: accuracy appended (20.00%)\n", - "Epoch 2886: model set back to train mode\n", - "Epoch 2886: model parameters saved\n", - "Epoch 2887 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2887: avg_loss appended (1.5629)\n", - "Epoch 2887: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2887: accuracy appended (20.00%)\n", - "Epoch 2887: model set back to train mode\n", - "Epoch 2887: model parameters saved\n", - "Epoch 2888 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2888: avg_loss appended (1.5629)\n", - "Epoch 2888: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2888: accuracy appended (20.00%)\n", - "Epoch 2888: model set back to train mode\n", - "Epoch 2888: model parameters saved\n", - "Epoch 2889 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2889: avg_loss appended (1.5629)\n", - "Epoch 2889: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2889: accuracy appended (20.00%)\n", - "Epoch 2889: model set back to train mode\n", - "Epoch 2889: model parameters saved\n", - "Epoch 2890 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2890: avg_loss appended (1.5629)\n", - "Epoch 2890: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2890: accuracy appended (20.00%)\n", - "Epoch 2890: model set back to train mode\n", - "Epoch 2890: model parameters saved\n", - "Epoch 2891 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2891: avg_loss appended (1.5629)\n", - "Epoch 2891: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2891: accuracy appended (20.00%)\n", - "Epoch 2891: model set back to train mode\n", - "Epoch 2891: model parameters saved\n", - "Epoch 2892 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2892: avg_loss appended (1.5629)\n", - "Epoch 2892: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2892: accuracy appended (20.00%)\n", - "Epoch 2892: model set back to train mode\n", - "Epoch 2892: model parameters saved\n", - "Epoch 2893 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2893: avg_loss appended (1.5629)\n", - "Epoch 2893: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2893: accuracy appended (20.00%)\n", - "Epoch 2893: model set back to train mode\n", - "Epoch 2893: model parameters saved\n", - "Epoch 2894 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2894: avg_loss appended (1.5629)\n", - "Epoch 2894: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2894: accuracy appended (20.00%)\n", - "Epoch 2894: model set back to train mode\n", - "Epoch 2894: model parameters saved\n", - "Epoch 2895 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2895: avg_loss appended (1.5629)\n", - "Epoch 2895: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2895: accuracy appended (20.00%)\n", - "Epoch 2895: model set back to train mode\n", - "Epoch 2895: model parameters saved\n", - "Epoch 2896 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2896: avg_loss appended (1.5629)\n", - "Epoch 2896: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2896: accuracy appended (20.00%)\n", - "Epoch 2896: model set back to train mode\n", - "Epoch 2896: model parameters saved\n", - "Epoch 2897 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2897: avg_loss appended (1.5629)\n", - "Epoch 2897: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2897: accuracy appended (20.00%)\n", - "Epoch 2897: model set back to train mode\n", - "Epoch 2897: model parameters saved\n", - "Epoch 2898 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2898: avg_loss appended (1.5629)\n", - "Epoch 2898: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2898: accuracy appended (20.00%)\n", - "Epoch 2898: model set back to train mode\n", - "Epoch 2898: model parameters saved\n", - "Epoch 2899 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2899: avg_loss appended (1.5629)\n", - "Epoch 2899: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2899: accuracy appended (20.00%)\n", - "Epoch 2899: model set back to train mode\n", - "Epoch 2899: model parameters saved\n", - "Epoch 2900 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2900: avg_loss appended (1.5629)\n", - "Epoch 2900: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2900: accuracy appended (20.00%)\n", - "Epoch 2900: model set back to train mode\n", - "Epoch 2900: model parameters saved\n", - "Epoch 2900/10000, Loss: 1.5629, Accuracy: 20.00%\n", - "Epoch 2901 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2901: avg_loss appended (1.5629)\n", - "Epoch 2901: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2901: accuracy appended (20.00%)\n", - "Epoch 2901: model set back to train mode\n", - "Epoch 2901: model parameters saved\n", - "Epoch 2902 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2902: avg_loss appended (1.5629)\n", - "Epoch 2902: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2902: accuracy appended (20.00%)\n", - "Epoch 2902: model set back to train mode\n", - "Epoch 2902: model parameters saved\n", - "Epoch 2903 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2903: avg_loss appended (1.5629)\n", - "Epoch 2903: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2903: accuracy appended (20.00%)\n", - "Epoch 2903: model set back to train mode\n", - "Epoch 2903: model parameters saved\n", - "Epoch 2904 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2904: avg_loss appended (1.5629)\n", - "Epoch 2904: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2904: accuracy appended (20.00%)\n", - "Epoch 2904: model set back to train mode\n", - "Epoch 2904: model parameters saved\n", - "Epoch 2905 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2905: avg_loss appended (1.5629)\n", - "Epoch 2905: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2905: accuracy appended (20.00%)\n", - "Epoch 2905: model set back to train mode\n", - "Epoch 2905: model parameters saved\n", - "Epoch 2906 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2906: avg_loss appended (1.5629)\n", - "Epoch 2906: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2906: accuracy appended (20.00%)\n", - "Epoch 2906: model set back to train mode\n", - "Epoch 2906: model parameters saved\n", - "Epoch 2907 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2907: avg_loss appended (1.5629)\n", - "Epoch 2907: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2907: accuracy appended (20.00%)\n", - "Epoch 2907: model set back to train mode\n", - "Epoch 2907: model parameters saved\n", - "Epoch 2908 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2908: avg_loss appended (1.5629)\n", - "Epoch 2908: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2908: accuracy appended (20.00%)\n", - "Epoch 2908: model set back to train mode\n", - "Epoch 2908: model parameters saved\n", - "Epoch 2909 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2909: avg_loss appended (1.5629)\n", - "Epoch 2909: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2909: accuracy appended (20.00%)\n", - "Epoch 2909: model set back to train mode\n", - "Epoch 2909: model parameters saved\n", - "Epoch 2910 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2910: avg_loss appended (1.5629)\n", - "Epoch 2910: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2910: accuracy appended (20.00%)\n", - "Epoch 2910: model set back to train mode\n", - "Epoch 2910: model parameters saved\n", - "Epoch 2911 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2911: avg_loss appended (1.5629)\n", - "Epoch 2911: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2911: accuracy appended (20.00%)\n", - "Epoch 2911: model set back to train mode\n", - "Epoch 2911: model parameters saved\n", - "Epoch 2912 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2912: avg_loss appended (1.5629)\n", - "Epoch 2912: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2912: accuracy appended (20.00%)\n", - "Epoch 2912: model set back to train mode\n", - "Epoch 2912: model parameters saved\n", - "Epoch 2913 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2913: avg_loss appended (1.5629)\n", - "Epoch 2913: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2913: accuracy appended (20.00%)\n", - "Epoch 2913: model set back to train mode\n", - "Epoch 2913: model parameters saved\n", - "Epoch 2914 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2914: avg_loss appended (1.5629)\n", - "Epoch 2914: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2914: accuracy appended (20.00%)\n", - "Epoch 2914: model set back to train mode\n", - "Epoch 2914: model parameters saved\n", - "Epoch 2915 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2915: avg_loss appended (1.5629)\n", - "Epoch 2915: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2915: accuracy appended (20.00%)\n", - "Epoch 2915: model set back to train mode\n", - "Epoch 2915: model parameters saved\n", - "Epoch 2916 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2916: avg_loss appended (1.5629)\n", - "Epoch 2916: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2916: accuracy appended (20.00%)\n", - "Epoch 2916: model set back to train mode\n", - "Epoch 2916: model parameters saved\n", - "Epoch 2917 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2917: avg_loss appended (1.5629)\n", - "Epoch 2917: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2917: accuracy appended (20.00%)\n", - "Epoch 2917: model set back to train mode\n", - "Epoch 2917: model parameters saved\n", - "Epoch 2918 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2918: avg_loss appended (1.5629)\n", - "Epoch 2918: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2918: accuracy appended (20.00%)\n", - "Epoch 2918: model set back to train mode\n", - "Epoch 2918: model parameters saved\n", - "Epoch 2919 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2919: avg_loss appended (1.5629)\n", - "Epoch 2919: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2919: accuracy appended (20.00%)\n", - "Epoch 2919: model set back to train mode\n", - "Epoch 2919: model parameters saved\n", - "Epoch 2920 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2920: avg_loss appended (1.5629)\n", - "Epoch 2920: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2920: accuracy appended (20.00%)\n", - "Epoch 2920: model set back to train mode\n", - "Epoch 2920: model parameters saved\n", - "Epoch 2921 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2921: avg_loss appended (1.5629)\n", - "Epoch 2921: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2921: accuracy appended (20.00%)\n", - "Epoch 2921: model set back to train mode\n", - "Epoch 2921: model parameters saved\n", - "Epoch 2922 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2922: avg_loss appended (1.5629)\n", - "Epoch 2922: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2922: accuracy appended (20.00%)\n", - "Epoch 2922: model set back to train mode\n", - "Epoch 2922: model parameters saved\n", - "Epoch 2923 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2923: avg_loss appended (1.5629)\n", - "Epoch 2923: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2923: accuracy appended (20.00%)\n", - "Epoch 2923: model set back to train mode\n", - "Epoch 2923: model parameters saved\n", - "Epoch 2924 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2924: avg_loss appended (1.5629)\n", - "Epoch 2924: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2924: accuracy appended (20.00%)\n", - "Epoch 2924: model set back to train mode\n", - "Epoch 2924: model parameters saved\n", - "Epoch 2925 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2925: avg_loss appended (1.5629)\n", - "Epoch 2925: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2925: accuracy appended (20.00%)\n", - "Epoch 2925: model set back to train mode\n", - "Epoch 2925: model parameters saved\n", - "Epoch 2926 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2926: avg_loss appended (1.5629)\n", - "Epoch 2926: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2926: accuracy appended (20.00%)\n", - "Epoch 2926: model set back to train mode\n", - "Epoch 2926: model parameters saved\n", - "Epoch 2927 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2927: avg_loss appended (1.5629)\n", - "Epoch 2927: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2927: accuracy appended (20.00%)\n", - "Epoch 2927: model set back to train mode\n", - "Epoch 2927: model parameters saved\n", - "Epoch 2928 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2928: avg_loss appended (1.5629)\n", - "Epoch 2928: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2928: accuracy appended (20.00%)\n", - "Epoch 2928: model set back to train mode\n", - "Epoch 2928: model parameters saved\n", - "Epoch 2929 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2929: avg_loss appended (1.5629)\n", - "Epoch 2929: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2929: accuracy appended (20.00%)\n", - "Epoch 2929: model set back to train mode\n", - "Epoch 2929: model parameters saved\n", - "Epoch 2930 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2930: avg_loss appended (1.5629)\n", - "Epoch 2930: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2930: accuracy appended (20.00%)\n", - "Epoch 2930: model set back to train mode\n", - "Epoch 2930: model parameters saved\n", - "Epoch 2931 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2931: avg_loss appended (1.5629)\n", - "Epoch 2931: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2931: accuracy appended (20.00%)\n", - "Epoch 2931: model set back to train mode\n", - "Epoch 2931: model parameters saved\n", - "Epoch 2932 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2932: avg_loss appended (1.5629)\n", - "Epoch 2932: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2932: accuracy appended (20.00%)\n", - "Epoch 2932: model set back to train mode\n", - "Epoch 2932: model parameters saved\n", - "Epoch 2933 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2933: avg_loss appended (1.5629)\n", - "Epoch 2933: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2933: accuracy appended (20.00%)\n", - "Epoch 2933: model set back to train mode\n", - "Epoch 2933: model parameters saved\n", - "Epoch 2934 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2934: avg_loss appended (1.5629)\n", - "Epoch 2934: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2934: accuracy appended (20.00%)\n", - "Epoch 2934: model set back to train mode\n", - "Epoch 2934: model parameters saved\n", - "Epoch 2935 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2935: avg_loss appended (1.5629)\n", - "Epoch 2935: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2935: accuracy appended (20.00%)\n", - "Epoch 2935: model set back to train mode\n", - "Epoch 2935: model parameters saved\n", - "Epoch 2936 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2936: avg_loss appended (1.5629)\n", - "Epoch 2936: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2936: accuracy appended (20.00%)\n", - "Epoch 2936: model set back to train mode\n", - "Epoch 2936: model parameters saved\n", - "Epoch 2937 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2937: avg_loss appended (1.5629)\n", - "Epoch 2937: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2937: accuracy appended (20.00%)\n", - "Epoch 2937: model set back to train mode\n", - "Epoch 2937: model parameters saved\n", - "Epoch 2938 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2938: avg_loss appended (1.5629)\n", - "Epoch 2938: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2938: accuracy appended (20.00%)\n", - "Epoch 2938: model set back to train mode\n", - "Epoch 2938: model parameters saved\n", - "Epoch 2939 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2939: avg_loss appended (1.5629)\n", - "Epoch 2939: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2939: accuracy appended (20.00%)\n", - "Epoch 2939: model set back to train mode\n", - "Epoch 2939: model parameters saved\n", - "Epoch 2940 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2940: avg_loss appended (1.5629)\n", - "Epoch 2940: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2940: accuracy appended (20.00%)\n", - "Epoch 2940: model set back to train mode\n", - "Epoch 2940: model parameters saved\n", - "Epoch 2941 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2941: avg_loss appended (1.5629)\n", - "Epoch 2941: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2941: accuracy appended (20.00%)\n", - "Epoch 2941: model set back to train mode\n", - "Epoch 2941: model parameters saved\n", - "Epoch 2942 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2942: avg_loss appended (1.5629)\n", - "Epoch 2942: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2942: accuracy appended (20.00%)\n", - "Epoch 2942: model set back to train mode\n", - "Epoch 2942: model parameters saved\n", - "Epoch 2943 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2943: avg_loss appended (1.5629)\n", - "Epoch 2943: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2943: accuracy appended (20.00%)\n", - "Epoch 2943: model set back to train mode\n", - "Epoch 2943: model parameters saved\n", - "Epoch 2944 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2944: avg_loss appended (1.5629)\n", - "Epoch 2944: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2944: accuracy appended (20.00%)\n", - "Epoch 2944: model set back to train mode\n", - "Epoch 2944: model parameters saved\n", - "Epoch 2945 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2945: avg_loss appended (1.5629)\n", - "Epoch 2945: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2945: accuracy appended (20.00%)\n", - "Epoch 2945: model set back to train mode\n", - "Epoch 2945: model parameters saved\n", - "Epoch 2946 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2946: avg_loss appended (1.5629)\n", - "Epoch 2946: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2946: accuracy appended (20.00%)\n", - "Epoch 2946: model set back to train mode\n", - "Epoch 2946: model parameters saved\n", - "Epoch 2947 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2947: avg_loss appended (1.5629)\n", - "Epoch 2947: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2947: accuracy appended (20.00%)\n", - "Epoch 2947: model set back to train mode\n", - "Epoch 2947: model parameters saved\n", - "Epoch 2948 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2948: avg_loss appended (1.5629)\n", - "Epoch 2948: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2948: accuracy appended (20.00%)\n", - "Epoch 2948: model set back to train mode\n", - "Epoch 2948: model parameters saved\n", - "Epoch 2949 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2949: avg_loss appended (1.5629)\n", - "Epoch 2949: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2949: accuracy appended (20.00%)\n", - "Epoch 2949: model set back to train mode\n", - "Epoch 2949: model parameters saved\n", - "Epoch 2950 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2950: avg_loss appended (1.5629)\n", - "Epoch 2950: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2950: accuracy appended (20.00%)\n", - "Epoch 2950: model set back to train mode\n", - "Epoch 2950: model parameters saved\n", - "Epoch 2951 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2951: avg_loss appended (1.5629)\n", - "Epoch 2951: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2951: accuracy appended (20.00%)\n", - "Epoch 2951: model set back to train mode\n", - "Epoch 2951: model parameters saved\n", - "Epoch 2952 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2952: avg_loss appended (1.5629)\n", - "Epoch 2952: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2952: accuracy appended (20.00%)\n", - "Epoch 2952: model set back to train mode\n", - "Epoch 2952: model parameters saved\n", - "Epoch 2953 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2953: avg_loss appended (1.5629)\n", - "Epoch 2953: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2953: accuracy appended (20.00%)\n", - "Epoch 2953: model set back to train mode\n", - "Epoch 2953: model parameters saved\n", - "Epoch 2954 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2954: avg_loss appended (1.5629)\n", - "Epoch 2954: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2954: accuracy appended (20.00%)\n", - "Epoch 2954: model set back to train mode\n", - "Epoch 2954: model parameters saved\n", - "Epoch 2955 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2955: avg_loss appended (1.5629)\n", - "Epoch 2955: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2955: accuracy appended (20.00%)\n", - "Epoch 2955: model set back to train mode\n", - "Epoch 2955: model parameters saved\n", - "Epoch 2956 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2956: avg_loss appended (1.5629)\n", - "Epoch 2956: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2956: accuracy appended (20.00%)\n", - "Epoch 2956: model set back to train mode\n", - "Epoch 2956: model parameters saved\n", - "Epoch 2957 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2957: avg_loss appended (1.5629)\n", - "Epoch 2957: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2957: accuracy appended (20.00%)\n", - "Epoch 2957: model set back to train mode\n", - "Epoch 2957: model parameters saved\n", - "Epoch 2958 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2958: avg_loss appended (1.5629)\n", - "Epoch 2958: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2958: accuracy appended (20.00%)\n", - "Epoch 2958: model set back to train mode\n", - "Epoch 2958: model parameters saved\n", - "Epoch 2959 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2959: avg_loss appended (1.5629)\n", - "Epoch 2959: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2959: accuracy appended (20.00%)\n", - "Epoch 2959: model set back to train mode\n", - "Epoch 2959: model parameters saved\n", - "Epoch 2960 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2960: avg_loss appended (1.5629)\n", - "Epoch 2960: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2960: accuracy appended (20.00%)\n", - "Epoch 2960: model set back to train mode\n", - "Epoch 2960: model parameters saved\n", - "Epoch 2961 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2961: avg_loss appended (1.5629)\n", - "Epoch 2961: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2961: accuracy appended (20.00%)\n", - "Epoch 2961: model set back to train mode\n", - "Epoch 2961: model parameters saved\n", - "Epoch 2962 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2962: avg_loss appended (1.5629)\n", - "Epoch 2962: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2962: accuracy appended (20.00%)\n", - "Epoch 2962: model set back to train mode\n", - "Epoch 2962: model parameters saved\n", - "Epoch 2963 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2963: avg_loss appended (1.5629)\n", - "Epoch 2963: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2963: accuracy appended (20.00%)\n", - "Epoch 2963: model set back to train mode\n", - "Epoch 2963: model parameters saved\n", - "Epoch 2964 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2964: avg_loss appended (1.5629)\n", - "Epoch 2964: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2964: accuracy appended (20.00%)\n", - "Epoch 2964: model set back to train mode\n", - "Epoch 2964: model parameters saved\n", - "Epoch 2965 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2965: avg_loss appended (1.5629)\n", - "Epoch 2965: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2965: accuracy appended (20.00%)\n", - "Epoch 2965: model set back to train mode\n", - "Epoch 2965: model parameters saved\n", - "Epoch 2966 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2966: avg_loss appended (1.5629)\n", - "Epoch 2966: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2966: accuracy appended (20.00%)\n", - "Epoch 2966: model set back to train mode\n", - "Epoch 2966: model parameters saved\n", - "Epoch 2967 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2967: avg_loss appended (1.5629)\n", - "Epoch 2967: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2967: accuracy appended (20.00%)\n", - "Epoch 2967: model set back to train mode\n", - "Epoch 2967: model parameters saved\n", - "Epoch 2968 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2968: avg_loss appended (1.5629)\n", - "Epoch 2968: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2968: accuracy appended (20.00%)\n", - "Epoch 2968: model set back to train mode\n", - "Epoch 2968: model parameters saved\n", - "Epoch 2969 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2969: avg_loss appended (1.5629)\n", - "Epoch 2969: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2969: accuracy appended (20.00%)\n", - "Epoch 2969: model set back to train mode\n", - "Epoch 2969: model parameters saved\n", - "Epoch 2970 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2970: avg_loss appended (1.5629)\n", - "Epoch 2970: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2970: accuracy appended (20.00%)\n", - "Epoch 2970: model set back to train mode\n", - "Epoch 2970: model parameters saved\n", - "Epoch 2971 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2971: avg_loss appended (1.5629)\n", - "Epoch 2971: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2971: accuracy appended (20.00%)\n", - "Epoch 2971: model set back to train mode\n", - "Epoch 2971: model parameters saved\n", - "Epoch 2972 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2972: avg_loss appended (1.5629)\n", - "Epoch 2972: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2972: accuracy appended (20.00%)\n", - "Epoch 2972: model set back to train mode\n", - "Epoch 2972: model parameters saved\n", - "Epoch 2973 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2973: avg_loss appended (1.5629)\n", - "Epoch 2973: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2973: accuracy appended (20.00%)\n", - "Epoch 2973: model set back to train mode\n", - "Epoch 2973: model parameters saved\n", - "Epoch 2974 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2974: avg_loss appended (1.5629)\n", - "Epoch 2974: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2974: accuracy appended (20.00%)\n", - "Epoch 2974: model set back to train mode\n", - "Epoch 2974: model parameters saved\n", - "Epoch 2975 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2975: avg_loss appended (1.5629)\n", - "Epoch 2975: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2975: accuracy appended (20.00%)\n", - "Epoch 2975: model set back to train mode\n", - "Epoch 2975: model parameters saved\n", - "Epoch 2976 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2976: avg_loss appended (1.5629)\n", - "Epoch 2976: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2976: accuracy appended (20.00%)\n", - "Epoch 2976: model set back to train mode\n", - "Epoch 2976: model parameters saved\n", - "Epoch 2977 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2977: avg_loss appended (1.5629)\n", - "Epoch 2977: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2977: accuracy appended (20.00%)\n", - "Epoch 2977: model set back to train mode\n", - "Epoch 2977: model parameters saved\n", - "Epoch 2978 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2978: avg_loss appended (1.5629)\n", - "Epoch 2978: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2978: accuracy appended (20.00%)\n", - "Epoch 2978: model set back to train mode\n", - "Epoch 2978: model parameters saved\n", - "Epoch 2979 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2979: avg_loss appended (1.5629)\n", - "Epoch 2979: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2979: accuracy appended (20.00%)\n", - "Epoch 2979: model set back to train mode\n", - "Epoch 2979: model parameters saved\n", - "Epoch 2980 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2980: avg_loss appended (1.5629)\n", - "Epoch 2980: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2980: accuracy appended (20.00%)\n", - "Epoch 2980: model set back to train mode\n", - "Epoch 2980: model parameters saved\n", - "Epoch 2981 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2981: avg_loss appended (1.5629)\n", - "Epoch 2981: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2981: accuracy appended (20.00%)\n", - "Epoch 2981: model set back to train mode\n", - "Epoch 2981: model parameters saved\n", - "Epoch 2982 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2982: avg_loss appended (1.5629)\n", - "Epoch 2982: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2982: accuracy appended (20.00%)\n", - "Epoch 2982: model set back to train mode\n", - "Epoch 2982: model parameters saved\n", - "Epoch 2983 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2983: avg_loss appended (1.5629)\n", - "Epoch 2983: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2983: accuracy appended (20.00%)\n", - "Epoch 2983: model set back to train mode\n", - "Epoch 2983: model parameters saved\n", - "Epoch 2984 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2984: avg_loss appended (1.5629)\n", - "Epoch 2984: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2984: accuracy appended (20.00%)\n", - "Epoch 2984: model set back to train mode\n", - "Epoch 2984: model parameters saved\n", - "Epoch 2985 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2985: avg_loss appended (1.5629)\n", - "Epoch 2985: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2985: accuracy appended (20.00%)\n", - "Epoch 2985: model set back to train mode\n", - "Epoch 2985: model parameters saved\n", - "Epoch 2986 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2986: avg_loss appended (1.5629)\n", - "Epoch 2986: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2986: accuracy appended (20.00%)\n", - "Epoch 2986: model set back to train mode\n", - "Epoch 2986: model parameters saved\n", - "Epoch 2987 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2987: avg_loss appended (1.5629)\n", - "Epoch 2987: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2987: accuracy appended (20.00%)\n", - "Epoch 2987: model set back to train mode\n", - "Epoch 2987: model parameters saved\n", - "Epoch 2988 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2988: avg_loss appended (1.5629)\n", - "Epoch 2988: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2988: accuracy appended (20.00%)\n", - "Epoch 2988: model set back to train mode\n", - "Epoch 2988: model parameters saved\n", - "Epoch 2989 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2989: avg_loss appended (1.5629)\n", - "Epoch 2989: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2989: accuracy appended (20.00%)\n", - "Epoch 2989: model set back to train mode\n", - "Epoch 2989: model parameters saved\n", - "Epoch 2990 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2990: avg_loss appended (1.5629)\n", - "Epoch 2990: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2990: accuracy appended (20.00%)\n", - "Epoch 2990: model set back to train mode\n", - "Epoch 2990: model parameters saved\n", - "Epoch 2991 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2991: avg_loss appended (1.5629)\n", - "Epoch 2991: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2991: accuracy appended (20.00%)\n", - "Epoch 2991: model set back to train mode\n", - "Epoch 2991: model parameters saved\n", - "Epoch 2992 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2992: avg_loss appended (1.5629)\n", - "Epoch 2992: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2992: accuracy appended (20.00%)\n", - "Epoch 2992: model set back to train mode\n", - "Epoch 2992: model parameters saved\n", - "Epoch 2993 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2993: avg_loss appended (1.5629)\n", - "Epoch 2993: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2993: accuracy appended (20.00%)\n", - "Epoch 2993: model set back to train mode\n", - "Epoch 2993: model parameters saved\n", - "Epoch 2994 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2994: avg_loss appended (1.5629)\n", - "Epoch 2994: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2994: accuracy appended (20.00%)\n", - "Epoch 2994: model set back to train mode\n", - "Epoch 2994: model parameters saved\n", - "Epoch 2995 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2995: avg_loss appended (1.5629)\n", - "Epoch 2995: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2995: accuracy appended (20.00%)\n", - "Epoch 2995: model set back to train mode\n", - "Epoch 2995: model parameters saved\n", - "Epoch 2996 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2996: avg_loss appended (1.5629)\n", - "Epoch 2996: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2996: accuracy appended (20.00%)\n", - "Epoch 2996: model set back to train mode\n", - "Epoch 2996: model parameters saved\n", - "Epoch 2997 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2997: avg_loss appended (1.5629)\n", - "Epoch 2997: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2997: accuracy appended (20.00%)\n", - "Epoch 2997: model set back to train mode\n", - "Epoch 2997: model parameters saved\n", - "Epoch 2998 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2998: avg_loss appended (1.5629)\n", - "Epoch 2998: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2998: accuracy appended (20.00%)\n", - "Epoch 2998: model set back to train mode\n", - "Epoch 2998: model parameters saved\n", - "Epoch 2999 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 2999: avg_loss appended (1.5629)\n", - "Epoch 2999: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 2999: accuracy appended (20.00%)\n", - "Epoch 2999: model set back to train mode\n", - "Epoch 2999: model parameters saved\n", - "Epoch 3000 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3000: avg_loss appended (1.5629)\n", - "Epoch 3000: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3000: accuracy appended (20.00%)\n", - "Epoch 3000: model set back to train mode\n", - "Epoch 3000: model parameters saved\n", - "Epoch 3000/10000, Loss: 1.5629, Accuracy: 20.00%\n", - "Epoch 3001 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3001: avg_loss appended (1.5629)\n", - "Epoch 3001: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3001: accuracy appended (20.00%)\n", - "Epoch 3001: model set back to train mode\n", - "Epoch 3001: model parameters saved\n", - "Epoch 3002 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3002: avg_loss appended (1.5629)\n", - "Epoch 3002: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3002: accuracy appended (20.00%)\n", - "Epoch 3002: model set back to train mode\n", - "Epoch 3002: model parameters saved\n", - "Epoch 3003 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3003: avg_loss appended (1.5629)\n", - "Epoch 3003: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3003: accuracy appended (20.00%)\n", - "Epoch 3003: model set back to train mode\n", - "Epoch 3003: model parameters saved\n", - "Epoch 3004 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3004: avg_loss appended (1.5629)\n", - "Epoch 3004: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3004: accuracy appended (20.00%)\n", - "Epoch 3004: model set back to train mode\n", - "Epoch 3004: model parameters saved\n", - "Epoch 3005 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3005: avg_loss appended (1.5629)\n", - "Epoch 3005: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3005: accuracy appended (20.00%)\n", - "Epoch 3005: model set back to train mode\n", - "Epoch 3005: model parameters saved\n", - "Epoch 3006 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3006: avg_loss appended (1.5629)\n", - "Epoch 3006: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3006: accuracy appended (20.00%)\n", - "Epoch 3006: model set back to train mode\n", - "Epoch 3006: model parameters saved\n", - "Epoch 3007 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3007: avg_loss appended (1.5629)\n", - "Epoch 3007: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3007: accuracy appended (20.00%)\n", - "Epoch 3007: model set back to train mode\n", - "Epoch 3007: model parameters saved\n", - "Epoch 3008 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3008: avg_loss appended (1.5629)\n", - "Epoch 3008: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3008: accuracy appended (20.00%)\n", - "Epoch 3008: model set back to train mode\n", - "Epoch 3008: model parameters saved\n", - "Epoch 3009 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3009: avg_loss appended (1.5629)\n", - "Epoch 3009: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3009: accuracy appended (20.00%)\n", - "Epoch 3009: model set back to train mode\n", - "Epoch 3009: model parameters saved\n", - "Epoch 3010 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3010: avg_loss appended (1.5629)\n", - "Epoch 3010: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3010: accuracy appended (20.00%)\n", - "Epoch 3010: model set back to train mode\n", - "Epoch 3010: model parameters saved\n", - "Epoch 3011 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3011: avg_loss appended (1.5629)\n", - "Epoch 3011: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3011: accuracy appended (20.00%)\n", - "Epoch 3011: model set back to train mode\n", - "Epoch 3011: model parameters saved\n", - "Epoch 3012 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3012: avg_loss appended (1.5629)\n", - "Epoch 3012: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3012: accuracy appended (20.00%)\n", - "Epoch 3012: model set back to train mode\n", - "Epoch 3012: model parameters saved\n", - "Epoch 3013 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3013: avg_loss appended (1.5629)\n", - "Epoch 3013: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3013: accuracy appended (20.00%)\n", - "Epoch 3013: model set back to train mode\n", - "Epoch 3013: model parameters saved\n", - "Epoch 3014 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3014: avg_loss appended (1.5629)\n", - "Epoch 3014: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3014: accuracy appended (20.00%)\n", - "Epoch 3014: model set back to train mode\n", - "Epoch 3014: model parameters saved\n", - "Epoch 3015 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3015: avg_loss appended (1.5629)\n", - "Epoch 3015: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3015: accuracy appended (20.00%)\n", - "Epoch 3015: model set back to train mode\n", - "Epoch 3015: model parameters saved\n", - "Epoch 3016 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3016: avg_loss appended (1.5629)\n", - "Epoch 3016: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3016: accuracy appended (20.00%)\n", - "Epoch 3016: model set back to train mode\n", - "Epoch 3016: model parameters saved\n", - "Epoch 3017 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3017: avg_loss appended (1.5629)\n", - "Epoch 3017: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3017: accuracy appended (20.00%)\n", - "Epoch 3017: model set back to train mode\n", - "Epoch 3017: model parameters saved\n", - "Epoch 3018 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3018: avg_loss appended (1.5629)\n", - "Epoch 3018: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3018: accuracy appended (20.00%)\n", - "Epoch 3018: model set back to train mode\n", - "Epoch 3018: model parameters saved\n", - "Epoch 3019 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3019: avg_loss appended (1.5629)\n", - "Epoch 3019: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3019: accuracy appended (20.00%)\n", - "Epoch 3019: model set back to train mode\n", - "Epoch 3019: model parameters saved\n", - "Epoch 3020 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3020: avg_loss appended (1.5629)\n", - "Epoch 3020: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3020: accuracy appended (20.00%)\n", - "Epoch 3020: model set back to train mode\n", - "Epoch 3020: model parameters saved\n", - "Epoch 3021 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3021: avg_loss appended (1.5629)\n", - "Epoch 3021: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3021: accuracy appended (20.00%)\n", - "Epoch 3021: model set back to train mode\n", - "Epoch 3021: model parameters saved\n", - "Epoch 3022 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3022: avg_loss appended (1.5629)\n", - "Epoch 3022: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3022: accuracy appended (20.00%)\n", - "Epoch 3022: model set back to train mode\n", - "Epoch 3022: model parameters saved\n", - "Epoch 3023 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3023: avg_loss appended (1.5629)\n", - "Epoch 3023: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3023: accuracy appended (20.00%)\n", - "Epoch 3023: model set back to train mode\n", - "Epoch 3023: model parameters saved\n", - "Epoch 3024 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3024: avg_loss appended (1.5629)\n", - "Epoch 3024: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3024: accuracy appended (20.00%)\n", - "Epoch 3024: model set back to train mode\n", - "Epoch 3024: model parameters saved\n", - "Epoch 3025 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3025: avg_loss appended (1.5629)\n", - "Epoch 3025: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3025: accuracy appended (20.00%)\n", - "Epoch 3025: model set back to train mode\n", - "Epoch 3025: model parameters saved\n", - "Epoch 3026 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3026: avg_loss appended (1.5629)\n", - "Epoch 3026: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3026: accuracy appended (20.00%)\n", - "Epoch 3026: model set back to train mode\n", - "Epoch 3026: model parameters saved\n", - "Epoch 3027 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3027: avg_loss appended (1.5629)\n", - "Epoch 3027: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3027: accuracy appended (20.00%)\n", - "Epoch 3027: model set back to train mode\n", - "Epoch 3027: model parameters saved\n", - "Epoch 3028 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3028: avg_loss appended (1.5629)\n", - "Epoch 3028: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3028: accuracy appended (20.00%)\n", - "Epoch 3028: model set back to train mode\n", - "Epoch 3028: model parameters saved\n", - "Epoch 3029 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3029: avg_loss appended (1.5629)\n", - "Epoch 3029: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3029: accuracy appended (20.00%)\n", - "Epoch 3029: model set back to train mode\n", - "Epoch 3029: model parameters saved\n", - "Epoch 3030 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3030: avg_loss appended (1.5629)\n", - "Epoch 3030: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3030: accuracy appended (20.00%)\n", - "Epoch 3030: model set back to train mode\n", - "Epoch 3030: model parameters saved\n", - "Epoch 3031 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3031: avg_loss appended (1.5629)\n", - "Epoch 3031: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3031: accuracy appended (20.00%)\n", - "Epoch 3031: model set back to train mode\n", - "Epoch 3031: model parameters saved\n", - "Epoch 3032 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3032: avg_loss appended (1.5629)\n", - "Epoch 3032: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3032: accuracy appended (20.00%)\n", - "Epoch 3032: model set back to train mode\n", - "Epoch 3032: model parameters saved\n", - "Epoch 3033 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3033: avg_loss appended (1.5629)\n", - "Epoch 3033: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3033: accuracy appended (20.00%)\n", - "Epoch 3033: model set back to train mode\n", - "Epoch 3033: model parameters saved\n", - "Epoch 3034 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3034: avg_loss appended (1.5629)\n", - "Epoch 3034: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3034: accuracy appended (20.00%)\n", - "Epoch 3034: model set back to train mode\n", - "Epoch 3034: model parameters saved\n", - "Epoch 3035 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3035: avg_loss appended (1.5629)\n", - "Epoch 3035: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3035: accuracy appended (20.00%)\n", - "Epoch 3035: model set back to train mode\n", - "Epoch 3035: model parameters saved\n", - "Epoch 3036 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3036: avg_loss appended (1.5629)\n", - "Epoch 3036: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3036: accuracy appended (20.00%)\n", - "Epoch 3036: model set back to train mode\n", - "Epoch 3036: model parameters saved\n", - "Epoch 3037 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3037: avg_loss appended (1.5629)\n", - "Epoch 3037: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3037: accuracy appended (20.00%)\n", - "Epoch 3037: model set back to train mode\n", - "Epoch 3037: model parameters saved\n", - "Epoch 3038 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3038: avg_loss appended (1.5629)\n", - "Epoch 3038: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3038: accuracy appended (20.00%)\n", - "Epoch 3038: model set back to train mode\n", - "Epoch 3038: model parameters saved\n", - "Epoch 3039 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3039: avg_loss appended (1.5629)\n", - "Epoch 3039: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3039: accuracy appended (20.00%)\n", - "Epoch 3039: model set back to train mode\n", - "Epoch 3039: model parameters saved\n", - "Epoch 3040 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3040: avg_loss appended (1.5629)\n", - "Epoch 3040: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3040: accuracy appended (20.00%)\n", - "Epoch 3040: model set back to train mode\n", - "Epoch 3040: model parameters saved\n", - "Epoch 3041 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3041: avg_loss appended (1.5629)\n", - "Epoch 3041: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3041: accuracy appended (20.00%)\n", - "Epoch 3041: model set back to train mode\n", - "Epoch 3041: model parameters saved\n", - "Epoch 3042 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3042: avg_loss appended (1.5629)\n", - "Epoch 3042: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3042: accuracy appended (20.00%)\n", - "Epoch 3042: model set back to train mode\n", - "Epoch 3042: model parameters saved\n", - "Epoch 3043 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3043: avg_loss appended (1.5629)\n", - "Epoch 3043: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3043: accuracy appended (20.00%)\n", - "Epoch 3043: model set back to train mode\n", - "Epoch 3043: model parameters saved\n", - "Epoch 3044 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3044: avg_loss appended (1.5629)\n", - "Epoch 3044: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3044: accuracy appended (20.00%)\n", - "Epoch 3044: model set back to train mode\n", - "Epoch 3044: model parameters saved\n", - "Epoch 3045 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3045: avg_loss appended (1.5629)\n", - "Epoch 3045: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3045: accuracy appended (20.00%)\n", - "Epoch 3045: model set back to train mode\n", - "Epoch 3045: model parameters saved\n", - "Epoch 3046 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3046: avg_loss appended (1.5629)\n", - "Epoch 3046: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3046: accuracy appended (20.00%)\n", - "Epoch 3046: model set back to train mode\n", - "Epoch 3046: model parameters saved\n", - "Epoch 3047 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3047: avg_loss appended (1.5629)\n", - "Epoch 3047: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3047: accuracy appended (20.00%)\n", - "Epoch 3047: model set back to train mode\n", - "Epoch 3047: model parameters saved\n", - "Epoch 3048 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3048: avg_loss appended (1.5629)\n", - "Epoch 3048: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3048: accuracy appended (20.00%)\n", - "Epoch 3048: model set back to train mode\n", - "Epoch 3048: model parameters saved\n", - "Epoch 3049 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3049: avg_loss appended (1.5629)\n", - "Epoch 3049: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3049: accuracy appended (20.00%)\n", - "Epoch 3049: model set back to train mode\n", - "Epoch 3049: model parameters saved\n", - "Epoch 3050 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3050: avg_loss appended (1.5629)\n", - "Epoch 3050: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3050: accuracy appended (20.00%)\n", - "Epoch 3050: model set back to train mode\n", - "Epoch 3050: model parameters saved\n", - "Epoch 3051 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3051: avg_loss appended (1.5629)\n", - "Epoch 3051: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3051: accuracy appended (20.00%)\n", - "Epoch 3051: model set back to train mode\n", - "Epoch 3051: model parameters saved\n", - "Epoch 3052 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3052: avg_loss appended (1.5629)\n", - "Epoch 3052: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3052: accuracy appended (20.00%)\n", - "Epoch 3052: model set back to train mode\n", - "Epoch 3052: model parameters saved\n", - "Epoch 3053 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3053: avg_loss appended (1.5629)\n", - "Epoch 3053: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3053: accuracy appended (20.00%)\n", - "Epoch 3053: model set back to train mode\n", - "Epoch 3053: model parameters saved\n", - "Epoch 3054 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3054: avg_loss appended (1.5629)\n", - "Epoch 3054: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3054: accuracy appended (20.00%)\n", - "Epoch 3054: model set back to train mode\n", - "Epoch 3054: model parameters saved\n", - "Epoch 3055 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3055: avg_loss appended (1.5629)\n", - "Epoch 3055: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3055: accuracy appended (20.00%)\n", - "Epoch 3055: model set back to train mode\n", - "Epoch 3055: model parameters saved\n", - "Epoch 3056 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3056: avg_loss appended (1.5629)\n", - "Epoch 3056: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3056: accuracy appended (20.00%)\n", - "Epoch 3056: model set back to train mode\n", - "Epoch 3056: model parameters saved\n", - "Epoch 3057 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3057: avg_loss appended (1.5629)\n", - "Epoch 3057: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3057: accuracy appended (20.00%)\n", - "Epoch 3057: model set back to train mode\n", - "Epoch 3057: model parameters saved\n", - "Epoch 3058 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3058: avg_loss appended (1.5629)\n", - "Epoch 3058: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3058: accuracy appended (20.00%)\n", - "Epoch 3058: model set back to train mode\n", - "Epoch 3058: model parameters saved\n", - "Epoch 3059 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3059: avg_loss appended (1.5629)\n", - "Epoch 3059: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3059: accuracy appended (20.00%)\n", - "Epoch 3059: model set back to train mode\n", - "Epoch 3059: model parameters saved\n", - "Epoch 3060 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3060: avg_loss appended (1.5629)\n", - "Epoch 3060: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3060: accuracy appended (20.00%)\n", - "Epoch 3060: model set back to train mode\n", - "Epoch 3060: model parameters saved\n", - "Epoch 3061 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3061: avg_loss appended (1.5629)\n", - "Epoch 3061: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3061: accuracy appended (20.00%)\n", - "Epoch 3061: model set back to train mode\n", - "Epoch 3061: model parameters saved\n", - "Epoch 3062 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3062: avg_loss appended (1.5629)\n", - "Epoch 3062: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3062: accuracy appended (20.00%)\n", - "Epoch 3062: model set back to train mode\n", - "Epoch 3062: model parameters saved\n", - "Epoch 3063 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3063: avg_loss appended (1.5629)\n", - "Epoch 3063: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3063: accuracy appended (20.00%)\n", - "Epoch 3063: model set back to train mode\n", - "Epoch 3063: model parameters saved\n", - "Epoch 3064 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3064: avg_loss appended (1.5629)\n", - "Epoch 3064: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3064: accuracy appended (20.00%)\n", - "Epoch 3064: model set back to train mode\n", - "Epoch 3064: model parameters saved\n", - "Epoch 3065 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3065: avg_loss appended (1.5629)\n", - "Epoch 3065: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3065: accuracy appended (20.00%)\n", - "Epoch 3065: model set back to train mode\n", - "Epoch 3065: model parameters saved\n", - "Epoch 3066 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3066: avg_loss appended (1.5629)\n", - "Epoch 3066: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3066: accuracy appended (20.00%)\n", - "Epoch 3066: model set back to train mode\n", - "Epoch 3066: model parameters saved\n", - "Epoch 3067 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3067: avg_loss appended (1.5629)\n", - "Epoch 3067: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3067: accuracy appended (20.00%)\n", - "Epoch 3067: model set back to train mode\n", - "Epoch 3067: model parameters saved\n", - "Epoch 3068 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3068: avg_loss appended (1.5629)\n", - "Epoch 3068: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3068: accuracy appended (20.00%)\n", - "Epoch 3068: model set back to train mode\n", - "Epoch 3068: model parameters saved\n", - "Epoch 3069 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3069: avg_loss appended (1.5629)\n", - "Epoch 3069: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3069: accuracy appended (20.00%)\n", - "Epoch 3069: model set back to train mode\n", - "Epoch 3069: model parameters saved\n", - "Epoch 3070 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3070: avg_loss appended (1.5629)\n", - "Epoch 3070: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3070: accuracy appended (20.00%)\n", - "Epoch 3070: model set back to train mode\n", - "Epoch 3070: model parameters saved\n", - "Epoch 3071 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3071: avg_loss appended (1.5629)\n", - "Epoch 3071: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3071: accuracy appended (20.00%)\n", - "Epoch 3071: model set back to train mode\n", - "Epoch 3071: model parameters saved\n", - "Epoch 3072 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3072: avg_loss appended (1.5629)\n", - "Epoch 3072: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3072: accuracy appended (20.00%)\n", - "Epoch 3072: model set back to train mode\n", - "Epoch 3072: model parameters saved\n", - "Epoch 3073 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3073: avg_loss appended (1.5629)\n", - "Epoch 3073: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3073: accuracy appended (20.00%)\n", - "Epoch 3073: model set back to train mode\n", - "Epoch 3073: model parameters saved\n", - "Epoch 3074 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3074: avg_loss appended (1.5629)\n", - "Epoch 3074: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3074: accuracy appended (20.00%)\n", - "Epoch 3074: model set back to train mode\n", - "Epoch 3074: model parameters saved\n", - "Epoch 3075 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3075: avg_loss appended (1.5629)\n", - "Epoch 3075: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3075: accuracy appended (20.00%)\n", - "Epoch 3075: model set back to train mode\n", - "Epoch 3075: model parameters saved\n", - "Epoch 3076 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3076: avg_loss appended (1.5629)\n", - "Epoch 3076: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3076: accuracy appended (20.00%)\n", - "Epoch 3076: model set back to train mode\n", - "Epoch 3076: model parameters saved\n", - "Epoch 3077 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3077: avg_loss appended (1.5629)\n", - "Epoch 3077: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3077: accuracy appended (20.00%)\n", - "Epoch 3077: model set back to train mode\n", - "Epoch 3077: model parameters saved\n", - "Epoch 3078 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3078: avg_loss appended (1.5629)\n", - "Epoch 3078: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3078: accuracy appended (20.00%)\n", - "Epoch 3078: model set back to train mode\n", - "Epoch 3078: model parameters saved\n", - "Epoch 3079 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3079: avg_loss appended (1.5629)\n", - "Epoch 3079: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3079: accuracy appended (20.00%)\n", - "Epoch 3079: model set back to train mode\n", - "Epoch 3079: model parameters saved\n", - "Epoch 3080 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3080: avg_loss appended (1.5629)\n", - "Epoch 3080: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3080: accuracy appended (20.00%)\n", - "Epoch 3080: model set back to train mode\n", - "Epoch 3080: model parameters saved\n", - "Epoch 3081 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3081: avg_loss appended (1.5629)\n", - "Epoch 3081: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3081: accuracy appended (20.00%)\n", - "Epoch 3081: model set back to train mode\n", - "Epoch 3081: model parameters saved\n", - "Epoch 3082 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3082: avg_loss appended (1.5629)\n", - "Epoch 3082: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3082: accuracy appended (20.00%)\n", - "Epoch 3082: model set back to train mode\n", - "Epoch 3082: model parameters saved\n", - "Epoch 3083 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3083: avg_loss appended (1.5629)\n", - "Epoch 3083: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3083: accuracy appended (20.00%)\n", - "Epoch 3083: model set back to train mode\n", - "Epoch 3083: model parameters saved\n", - "Epoch 3084 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3084: avg_loss appended (1.5629)\n", - "Epoch 3084: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3084: accuracy appended (20.00%)\n", - "Epoch 3084: model set back to train mode\n", - "Epoch 3084: model parameters saved\n", - "Epoch 3085 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3085: avg_loss appended (1.5629)\n", - "Epoch 3085: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3085: accuracy appended (20.00%)\n", - "Epoch 3085: model set back to train mode\n", - "Epoch 3085: model parameters saved\n", - "Epoch 3086 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3086: avg_loss appended (1.5629)\n", - "Epoch 3086: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3086: accuracy appended (20.00%)\n", - "Epoch 3086: model set back to train mode\n", - "Epoch 3086: model parameters saved\n", - "Epoch 3087 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3087: avg_loss appended (1.5629)\n", - "Epoch 3087: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3087: accuracy appended (20.00%)\n", - "Epoch 3087: model set back to train mode\n", - "Epoch 3087: model parameters saved\n", - "Epoch 3088 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3088: avg_loss appended (1.5629)\n", - "Epoch 3088: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3088: accuracy appended (20.00%)\n", - "Epoch 3088: model set back to train mode\n", - "Epoch 3088: model parameters saved\n", - "Epoch 3089 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3089: avg_loss appended (1.5629)\n", - "Epoch 3089: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3089: accuracy appended (20.00%)\n", - "Epoch 3089: model set back to train mode\n", - "Epoch 3089: model parameters saved\n", - "Epoch 3090 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3090: avg_loss appended (1.5629)\n", - "Epoch 3090: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3090: accuracy appended (20.00%)\n", - "Epoch 3090: model set back to train mode\n", - "Epoch 3090: model parameters saved\n", - "Epoch 3091 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3091: avg_loss appended (1.5629)\n", - "Epoch 3091: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3091: accuracy appended (20.00%)\n", - "Epoch 3091: model set back to train mode\n", - "Epoch 3091: model parameters saved\n", - "Epoch 3092 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3092: avg_loss appended (1.5629)\n", - "Epoch 3092: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3092: accuracy appended (20.00%)\n", - "Epoch 3092: model set back to train mode\n", - "Epoch 3092: model parameters saved\n", - "Epoch 3093 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3093: avg_loss appended (1.5629)\n", - "Epoch 3093: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3093: accuracy appended (20.00%)\n", - "Epoch 3093: model set back to train mode\n", - "Epoch 3093: model parameters saved\n", - "Epoch 3094 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3094: avg_loss appended (1.5629)\n", - "Epoch 3094: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3094: accuracy appended (20.00%)\n", - "Epoch 3094: model set back to train mode\n", - "Epoch 3094: model parameters saved\n", - "Epoch 3095 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3095: avg_loss appended (1.5629)\n", - "Epoch 3095: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3095: accuracy appended (20.00%)\n", - "Epoch 3095: model set back to train mode\n", - "Epoch 3095: model parameters saved\n", - "Epoch 3096 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3096: avg_loss appended (1.5629)\n", - "Epoch 3096: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3096: accuracy appended (20.00%)\n", - "Epoch 3096: model set back to train mode\n", - "Epoch 3096: model parameters saved\n", - "Epoch 3097 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3097: avg_loss appended (1.5629)\n", - "Epoch 3097: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3097: accuracy appended (20.00%)\n", - "Epoch 3097: model set back to train mode\n", - "Epoch 3097: model parameters saved\n", - "Epoch 3098 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3098: avg_loss appended (1.5629)\n", - "Epoch 3098: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3098: accuracy appended (20.00%)\n", - "Epoch 3098: model set back to train mode\n", - "Epoch 3098: model parameters saved\n", - "Epoch 3099 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3099: avg_loss appended (1.5629)\n", - "Epoch 3099: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3099: accuracy appended (20.00%)\n", - "Epoch 3099: model set back to train mode\n", - "Epoch 3099: model parameters saved\n", - "Epoch 3100 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3100: avg_loss appended (1.5629)\n", - "Epoch 3100: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3100: accuracy appended (20.00%)\n", - "Epoch 3100: model set back to train mode\n", - "Epoch 3100: model parameters saved\n", - "Epoch 3100/10000, Loss: 1.5629, Accuracy: 20.00%\n", - "Epoch 3101 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3101: avg_loss appended (1.5629)\n", - "Epoch 3101: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3101: accuracy appended (20.00%)\n", - "Epoch 3101: model set back to train mode\n", - "Epoch 3101: model parameters saved\n", - "Epoch 3102 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3102: avg_loss appended (1.5629)\n", - "Epoch 3102: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3102: accuracy appended (20.00%)\n", - "Epoch 3102: model set back to train mode\n", - "Epoch 3102: model parameters saved\n", - "Epoch 3103 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3103: avg_loss appended (1.5629)\n", - "Epoch 3103: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3103: accuracy appended (20.00%)\n", - "Epoch 3103: model set back to train mode\n", - "Epoch 3103: model parameters saved\n", - "Epoch 3104 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3104: avg_loss appended (1.5629)\n", - "Epoch 3104: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3104: accuracy appended (20.00%)\n", - "Epoch 3104: model set back to train mode\n", - "Epoch 3104: model parameters saved\n", - "Epoch 3105 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3105: avg_loss appended (1.5629)\n", - "Epoch 3105: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3105: accuracy appended (20.00%)\n", - "Epoch 3105: model set back to train mode\n", - "Epoch 3105: model parameters saved\n", - "Epoch 3106 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3106: avg_loss appended (1.5629)\n", - "Epoch 3106: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3106: accuracy appended (20.00%)\n", - "Epoch 3106: model set back to train mode\n", - "Epoch 3106: model parameters saved\n", - "Epoch 3107 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3107: avg_loss appended (1.5629)\n", - "Epoch 3107: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3107: accuracy appended (20.00%)\n", - "Epoch 3107: model set back to train mode\n", - "Epoch 3107: model parameters saved\n", - "Epoch 3108 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3108: avg_loss appended (1.5629)\n", - "Epoch 3108: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3108: accuracy appended (20.00%)\n", - "Epoch 3108: model set back to train mode\n", - "Epoch 3108: model parameters saved\n", - "Epoch 3109 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3109: avg_loss appended (1.5629)\n", - "Epoch 3109: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3109: accuracy appended (20.00%)\n", - "Epoch 3109: model set back to train mode\n", - "Epoch 3109: model parameters saved\n", - "Epoch 3110 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3110: avg_loss appended (1.5629)\n", - "Epoch 3110: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3110: accuracy appended (20.00%)\n", - "Epoch 3110: model set back to train mode\n", - "Epoch 3110: model parameters saved\n", - "Epoch 3111 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3111: avg_loss appended (1.5629)\n", - "Epoch 3111: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3111: accuracy appended (20.00%)\n", - "Epoch 3111: model set back to train mode\n", - "Epoch 3111: model parameters saved\n", - "Epoch 3112 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3112: avg_loss appended (1.5629)\n", - "Epoch 3112: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3112: accuracy appended (20.00%)\n", - "Epoch 3112: model set back to train mode\n", - "Epoch 3112: model parameters saved\n", - "Epoch 3113 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3113: avg_loss appended (1.5629)\n", - "Epoch 3113: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3113: accuracy appended (20.00%)\n", - "Epoch 3113: model set back to train mode\n", - "Epoch 3113: model parameters saved\n", - "Epoch 3114 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3114: avg_loss appended (1.5629)\n", - "Epoch 3114: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3114: accuracy appended (20.00%)\n", - "Epoch 3114: model set back to train mode\n", - "Epoch 3114: model parameters saved\n", - "Epoch 3115 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3115: avg_loss appended (1.5629)\n", - "Epoch 3115: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3115: accuracy appended (20.00%)\n", - "Epoch 3115: model set back to train mode\n", - "Epoch 3115: model parameters saved\n", - "Epoch 3116 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3116: avg_loss appended (1.5629)\n", - "Epoch 3116: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3116: accuracy appended (20.00%)\n", - "Epoch 3116: model set back to train mode\n", - "Epoch 3116: model parameters saved\n", - "Epoch 3117 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3117: avg_loss appended (1.5629)\n", - "Epoch 3117: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3117: accuracy appended (20.00%)\n", - "Epoch 3117: model set back to train mode\n", - "Epoch 3117: model parameters saved\n", - "Epoch 3118 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3118: avg_loss appended (1.5629)\n", - "Epoch 3118: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3118: accuracy appended (20.00%)\n", - "Epoch 3118: model set back to train mode\n", - "Epoch 3118: model parameters saved\n", - "Epoch 3119 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3119: avg_loss appended (1.5629)\n", - "Epoch 3119: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3119: accuracy appended (20.00%)\n", - "Epoch 3119: model set back to train mode\n", - "Epoch 3119: model parameters saved\n", - "Epoch 3120 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3120: avg_loss appended (1.5629)\n", - "Epoch 3120: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3120: accuracy appended (20.00%)\n", - "Epoch 3120: model set back to train mode\n", - "Epoch 3120: model parameters saved\n", - "Epoch 3121 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3121: avg_loss appended (1.5629)\n", - "Epoch 3121: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3121: accuracy appended (20.00%)\n", - "Epoch 3121: model set back to train mode\n", - "Epoch 3121: model parameters saved\n", - "Epoch 3122 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3122: avg_loss appended (1.5629)\n", - "Epoch 3122: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3122: accuracy appended (20.00%)\n", - "Epoch 3122: model set back to train mode\n", - "Epoch 3122: model parameters saved\n", - "Epoch 3123 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3123: avg_loss appended (1.5629)\n", - "Epoch 3123: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3123: accuracy appended (20.00%)\n", - "Epoch 3123: model set back to train mode\n", - "Epoch 3123: model parameters saved\n", - "Epoch 3124 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3124: avg_loss appended (1.5629)\n", - "Epoch 3124: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3124: accuracy appended (20.00%)\n", - "Epoch 3124: model set back to train mode\n", - "Epoch 3124: model parameters saved\n", - "Epoch 3125 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3125: avg_loss appended (1.5629)\n", - "Epoch 3125: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3125: accuracy appended (20.00%)\n", - "Epoch 3125: model set back to train mode\n", - "Epoch 3125: model parameters saved\n", - "Epoch 3126 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3126: avg_loss appended (1.5629)\n", - "Epoch 3126: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3126: accuracy appended (20.00%)\n", - "Epoch 3126: model set back to train mode\n", - "Epoch 3126: model parameters saved\n", - "Epoch 3127 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3127: avg_loss appended (1.5629)\n", - "Epoch 3127: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3127: accuracy appended (20.00%)\n", - "Epoch 3127: model set back to train mode\n", - "Epoch 3127: model parameters saved\n", - "Epoch 3128 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3128: avg_loss appended (1.5629)\n", - "Epoch 3128: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3128: accuracy appended (20.00%)\n", - "Epoch 3128: model set back to train mode\n", - "Epoch 3128: model parameters saved\n", - "Epoch 3129 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3129: avg_loss appended (1.5629)\n", - "Epoch 3129: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3129: accuracy appended (20.00%)\n", - "Epoch 3129: model set back to train mode\n", - "Epoch 3129: model parameters saved\n", - "Epoch 3130 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3130: avg_loss appended (1.5629)\n", - "Epoch 3130: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3130: accuracy appended (20.00%)\n", - "Epoch 3130: model set back to train mode\n", - "Epoch 3130: model parameters saved\n", - "Epoch 3131 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3131: avg_loss appended (1.5629)\n", - "Epoch 3131: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3131: accuracy appended (20.00%)\n", - "Epoch 3131: model set back to train mode\n", - "Epoch 3131: model parameters saved\n", - "Epoch 3132 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3132: avg_loss appended (1.5629)\n", - "Epoch 3132: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3132: accuracy appended (20.00%)\n", - "Epoch 3132: model set back to train mode\n", - "Epoch 3132: model parameters saved\n", - "Epoch 3133 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3133: avg_loss appended (1.5629)\n", - "Epoch 3133: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3133: accuracy appended (20.00%)\n", - "Epoch 3133: model set back to train mode\n", - "Epoch 3133: model parameters saved\n", - "Epoch 3134 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3134: avg_loss appended (1.5629)\n", - "Epoch 3134: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3134: accuracy appended (20.00%)\n", - "Epoch 3134: model set back to train mode\n", - "Epoch 3134: model parameters saved\n", - "Epoch 3135 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3135: avg_loss appended (1.5629)\n", - "Epoch 3135: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3135: accuracy appended (20.00%)\n", - "Epoch 3135: model set back to train mode\n", - "Epoch 3135: model parameters saved\n", - "Epoch 3136 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3136: avg_loss appended (1.5629)\n", - "Epoch 3136: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3136: accuracy appended (20.00%)\n", - "Epoch 3136: model set back to train mode\n", - "Epoch 3136: model parameters saved\n", - "Epoch 3137 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3137: avg_loss appended (1.5629)\n", - "Epoch 3137: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3137: accuracy appended (20.00%)\n", - "Epoch 3137: model set back to train mode\n", - "Epoch 3137: model parameters saved\n", - "Epoch 3138 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3138: avg_loss appended (1.5629)\n", - "Epoch 3138: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3138: accuracy appended (20.00%)\n", - "Epoch 3138: model set back to train mode\n", - "Epoch 3138: model parameters saved\n", - "Epoch 3139 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3139: avg_loss appended (1.5629)\n", - "Epoch 3139: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3139: accuracy appended (20.00%)\n", - "Epoch 3139: model set back to train mode\n", - "Epoch 3139: model parameters saved\n", - "Epoch 3140 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3140: avg_loss appended (1.5629)\n", - "Epoch 3140: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3140: accuracy appended (20.00%)\n", - "Epoch 3140: model set back to train mode\n", - "Epoch 3140: model parameters saved\n", - "Epoch 3141 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3141: avg_loss appended (1.5629)\n", - "Epoch 3141: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3141: accuracy appended (20.00%)\n", - "Epoch 3141: model set back to train mode\n", - "Epoch 3141: model parameters saved\n", - "Epoch 3142 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3142: avg_loss appended (1.5629)\n", - "Epoch 3142: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3142: accuracy appended (20.00%)\n", - "Epoch 3142: model set back to train mode\n", - "Epoch 3142: model parameters saved\n", - "Epoch 3143 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3143: avg_loss appended (1.5629)\n", - "Epoch 3143: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3143: accuracy appended (20.00%)\n", - "Epoch 3143: model set back to train mode\n", - "Epoch 3143: model parameters saved\n", - "Epoch 3144 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3144: avg_loss appended (1.5629)\n", - "Epoch 3144: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3144: accuracy appended (20.00%)\n", - "Epoch 3144: model set back to train mode\n", - "Epoch 3144: model parameters saved\n", - "Epoch 3145 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3145: avg_loss appended (1.5629)\n", - "Epoch 3145: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3145: accuracy appended (20.00%)\n", - "Epoch 3145: model set back to train mode\n", - "Epoch 3145: model parameters saved\n", - "Epoch 3146 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3146: avg_loss appended (1.5629)\n", - "Epoch 3146: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3146: accuracy appended (20.00%)\n", - "Epoch 3146: model set back to train mode\n", - "Epoch 3146: model parameters saved\n", - "Epoch 3147 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3147: avg_loss appended (1.5629)\n", - "Epoch 3147: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3147: accuracy appended (20.00%)\n", - "Epoch 3147: model set back to train mode\n", - "Epoch 3147: model parameters saved\n", - "Epoch 3148 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3148: avg_loss appended (1.5629)\n", - "Epoch 3148: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3148: accuracy appended (20.00%)\n", - "Epoch 3148: model set back to train mode\n", - "Epoch 3148: model parameters saved\n", - "Epoch 3149 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3149: avg_loss appended (1.5629)\n", - "Epoch 3149: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3149: accuracy appended (20.00%)\n", - "Epoch 3149: model set back to train mode\n", - "Epoch 3149: model parameters saved\n", - "Epoch 3150 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3150: avg_loss appended (1.5629)\n", - "Epoch 3150: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3150: accuracy appended (20.00%)\n", - "Epoch 3150: model set back to train mode\n", - "Epoch 3150: model parameters saved\n", - "Epoch 3151 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3151: avg_loss appended (1.5629)\n", - "Epoch 3151: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3151: accuracy appended (20.00%)\n", - "Epoch 3151: model set back to train mode\n", - "Epoch 3151: model parameters saved\n", - "Epoch 3152 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3152: avg_loss appended (1.5629)\n", - "Epoch 3152: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3152: accuracy appended (20.00%)\n", - "Epoch 3152: model set back to train mode\n", - "Epoch 3152: model parameters saved\n", - "Epoch 3153 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3153: avg_loss appended (1.5629)\n", - "Epoch 3153: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3153: accuracy appended (20.00%)\n", - "Epoch 3153: model set back to train mode\n", - "Epoch 3153: model parameters saved\n", - "Epoch 3154 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3154: avg_loss appended (1.5629)\n", - "Epoch 3154: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3154: accuracy appended (20.00%)\n", - "Epoch 3154: model set back to train mode\n", - "Epoch 3154: model parameters saved\n", - "Epoch 3155 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3155: avg_loss appended (1.5629)\n", - "Epoch 3155: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3155: accuracy appended (20.00%)\n", - "Epoch 3155: model set back to train mode\n", - "Epoch 3155: model parameters saved\n", - "Epoch 3156 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3156: avg_loss appended (1.5629)\n", - "Epoch 3156: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3156: accuracy appended (20.00%)\n", - "Epoch 3156: model set back to train mode\n", - "Epoch 3156: model parameters saved\n", - "Epoch 3157 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3157: avg_loss appended (1.5629)\n", - "Epoch 3157: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3157: accuracy appended (20.00%)\n", - "Epoch 3157: model set back to train mode\n", - "Epoch 3157: model parameters saved\n", - "Epoch 3158 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3158: avg_loss appended (1.5629)\n", - "Epoch 3158: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3158: accuracy appended (20.00%)\n", - "Epoch 3158: model set back to train mode\n", - "Epoch 3158: model parameters saved\n", - "Epoch 3159 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3159: avg_loss appended (1.5629)\n", - "Epoch 3159: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3159: accuracy appended (20.00%)\n", - "Epoch 3159: model set back to train mode\n", - "Epoch 3159: model parameters saved\n", - "Epoch 3160 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3160: avg_loss appended (1.5629)\n", - "Epoch 3160: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3160: accuracy appended (20.00%)\n", - "Epoch 3160: model set back to train mode\n", - "Epoch 3160: model parameters saved\n", - "Epoch 3161 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3161: avg_loss appended (1.5629)\n", - "Epoch 3161: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3161: accuracy appended (20.00%)\n", - "Epoch 3161: model set back to train mode\n", - "Epoch 3161: model parameters saved\n", - "Epoch 3162 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3162: avg_loss appended (1.5629)\n", - "Epoch 3162: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3162: accuracy appended (20.00%)\n", - "Epoch 3162: model set back to train mode\n", - "Epoch 3162: model parameters saved\n", - "Epoch 3163 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3163: avg_loss appended (1.5629)\n", - "Epoch 3163: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3163: accuracy appended (20.00%)\n", - "Epoch 3163: model set back to train mode\n", - "Epoch 3163: model parameters saved\n", - "Epoch 3164 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3164: avg_loss appended (1.5629)\n", - "Epoch 3164: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3164: accuracy appended (20.00%)\n", - "Epoch 3164: model set back to train mode\n", - "Epoch 3164: model parameters saved\n", - "Epoch 3165 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3165: avg_loss appended (1.5629)\n", - "Epoch 3165: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3165: accuracy appended (20.00%)\n", - "Epoch 3165: model set back to train mode\n", - "Epoch 3165: model parameters saved\n", - "Epoch 3166 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3166: avg_loss appended (1.5629)\n", - "Epoch 3166: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3166: accuracy appended (20.00%)\n", - "Epoch 3166: model set back to train mode\n", - "Epoch 3166: model parameters saved\n", - "Epoch 3167 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3167: avg_loss appended (1.5629)\n", - "Epoch 3167: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3167: accuracy appended (20.00%)\n", - "Epoch 3167: model set back to train mode\n", - "Epoch 3167: model parameters saved\n", - "Epoch 3168 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3168: avg_loss appended (1.5629)\n", - "Epoch 3168: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3168: accuracy appended (20.00%)\n", - "Epoch 3168: model set back to train mode\n", - "Epoch 3168: model parameters saved\n", - "Epoch 3169 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3169: avg_loss appended (1.5629)\n", - "Epoch 3169: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3169: accuracy appended (20.00%)\n", - "Epoch 3169: model set back to train mode\n", - "Epoch 3169: model parameters saved\n", - "Epoch 3170 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3170: avg_loss appended (1.5629)\n", - "Epoch 3170: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3170: accuracy appended (20.00%)\n", - "Epoch 3170: model set back to train mode\n", - "Epoch 3170: model parameters saved\n", - "Epoch 3171 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3171: avg_loss appended (1.5629)\n", - "Epoch 3171: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3171: accuracy appended (20.00%)\n", - "Epoch 3171: model set back to train mode\n", - "Epoch 3171: model parameters saved\n", - "Epoch 3172 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3172: avg_loss appended (1.5629)\n", - "Epoch 3172: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3172: accuracy appended (20.00%)\n", - "Epoch 3172: model set back to train mode\n", - "Epoch 3172: model parameters saved\n", - "Epoch 3173 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3173: avg_loss appended (1.5629)\n", - "Epoch 3173: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3173: accuracy appended (20.00%)\n", - "Epoch 3173: model set back to train mode\n", - "Epoch 3173: model parameters saved\n", - "Epoch 3174 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5629)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5629)\n", - "Epoch 3174: avg_loss appended (1.5629)\n", - "Epoch 3174: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3174: accuracy appended (20.00%)\n", - "Epoch 3174: model set back to train mode\n", - "Epoch 3174: model parameters saved\n", - "Epoch 3175 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3175: avg_loss appended (1.5628)\n", - "Epoch 3175: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3175: accuracy appended (20.00%)\n", - "Epoch 3175: model set back to train mode\n", - "Epoch 3175: model parameters saved\n", - "Epoch 3176 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3176: avg_loss appended (1.5628)\n", - "Epoch 3176: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3176: accuracy appended (20.00%)\n", - "Epoch 3176: model set back to train mode\n", - "Epoch 3176: model parameters saved\n", - "Epoch 3177 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3177: avg_loss appended (1.5628)\n", - "Epoch 3177: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3177: accuracy appended (20.00%)\n", - "Epoch 3177: model set back to train mode\n", - "Epoch 3177: model parameters saved\n", - "Epoch 3178 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3178: avg_loss appended (1.5628)\n", - "Epoch 3178: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3178: accuracy appended (20.00%)\n", - "Epoch 3178: model set back to train mode\n", - "Epoch 3178: model parameters saved\n", - "Epoch 3179 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3179: avg_loss appended (1.5628)\n", - "Epoch 3179: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3179: accuracy appended (20.00%)\n", - "Epoch 3179: model set back to train mode\n", - "Epoch 3179: model parameters saved\n", - "Epoch 3180 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3180: avg_loss appended (1.5628)\n", - "Epoch 3180: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3180: accuracy appended (20.00%)\n", - "Epoch 3180: model set back to train mode\n", - "Epoch 3180: model parameters saved\n", - "Epoch 3181 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3181: avg_loss appended (1.5628)\n", - "Epoch 3181: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3181: accuracy appended (20.00%)\n", - "Epoch 3181: model set back to train mode\n", - "Epoch 3181: model parameters saved\n", - "Epoch 3182 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3182: avg_loss appended (1.5628)\n", - "Epoch 3182: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3182: accuracy appended (20.00%)\n", - "Epoch 3182: model set back to train mode\n", - "Epoch 3182: model parameters saved\n", - "Epoch 3183 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3183: avg_loss appended (1.5628)\n", - "Epoch 3183: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3183: accuracy appended (20.00%)\n", - "Epoch 3183: model set back to train mode\n", - "Epoch 3183: model parameters saved\n", - "Epoch 3184 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3184: avg_loss appended (1.5628)\n", - "Epoch 3184: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3184: accuracy appended (20.00%)\n", - "Epoch 3184: model set back to train mode\n", - "Epoch 3184: model parameters saved\n", - "Epoch 3185 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3185: avg_loss appended (1.5628)\n", - "Epoch 3185: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3185: accuracy appended (20.00%)\n", - "Epoch 3185: model set back to train mode\n", - "Epoch 3185: model parameters saved\n", - "Epoch 3186 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3186: avg_loss appended (1.5628)\n", - "Epoch 3186: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3186: accuracy appended (20.00%)\n", - "Epoch 3186: model set back to train mode\n", - "Epoch 3186: model parameters saved\n", - "Epoch 3187 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3187: avg_loss appended (1.5628)\n", - "Epoch 3187: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3187: accuracy appended (20.00%)\n", - "Epoch 3187: model set back to train mode\n", - "Epoch 3187: model parameters saved\n", - "Epoch 3188 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3188: avg_loss appended (1.5628)\n", - "Epoch 3188: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3188: accuracy appended (20.00%)\n", - "Epoch 3188: model set back to train mode\n", - "Epoch 3188: model parameters saved\n", - "Epoch 3189 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3189: avg_loss appended (1.5628)\n", - "Epoch 3189: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3189: accuracy appended (20.00%)\n", - "Epoch 3189: model set back to train mode\n", - "Epoch 3189: model parameters saved\n", - "Epoch 3190 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3190: avg_loss appended (1.5628)\n", - "Epoch 3190: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3190: accuracy appended (20.00%)\n", - "Epoch 3190: model set back to train mode\n", - "Epoch 3190: model parameters saved\n", - "Epoch 3191 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3191: avg_loss appended (1.5628)\n", - "Epoch 3191: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3191: accuracy appended (20.00%)\n", - "Epoch 3191: model set back to train mode\n", - "Epoch 3191: model parameters saved\n", - "Epoch 3192 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3192: avg_loss appended (1.5628)\n", - "Epoch 3192: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3192: accuracy appended (20.00%)\n", - "Epoch 3192: model set back to train mode\n", - "Epoch 3192: model parameters saved\n", - "Epoch 3193 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3193: avg_loss appended (1.5628)\n", - "Epoch 3193: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3193: accuracy appended (20.00%)\n", - "Epoch 3193: model set back to train mode\n", - "Epoch 3193: model parameters saved\n", - "Epoch 3194 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3194: avg_loss appended (1.5628)\n", - "Epoch 3194: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3194: accuracy appended (20.00%)\n", - "Epoch 3194: model set back to train mode\n", - "Epoch 3194: model parameters saved\n", - "Epoch 3195 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3195: avg_loss appended (1.5628)\n", - "Epoch 3195: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3195: accuracy appended (20.00%)\n", - "Epoch 3195: model set back to train mode\n", - "Epoch 3195: model parameters saved\n", - "Epoch 3196 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3196: avg_loss appended (1.5628)\n", - "Epoch 3196: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3196: accuracy appended (20.00%)\n", - "Epoch 3196: model set back to train mode\n", - "Epoch 3196: model parameters saved\n", - "Epoch 3197 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3197: avg_loss appended (1.5628)\n", - "Epoch 3197: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3197: accuracy appended (20.00%)\n", - "Epoch 3197: model set back to train mode\n", - "Epoch 3197: model parameters saved\n", - "Epoch 3198 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3198: avg_loss appended (1.5628)\n", - "Epoch 3198: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3198: accuracy appended (20.00%)\n", - "Epoch 3198: model set back to train mode\n", - "Epoch 3198: model parameters saved\n", - "Epoch 3199 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3199: avg_loss appended (1.5628)\n", - "Epoch 3199: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3199: accuracy appended (20.00%)\n", - "Epoch 3199: model set back to train mode\n", - "Epoch 3199: model parameters saved\n", - "Epoch 3200 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3200: avg_loss appended (1.5628)\n", - "Epoch 3200: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3200: accuracy appended (20.00%)\n", - "Epoch 3200: model set back to train mode\n", - "Epoch 3200: model parameters saved\n", - "Epoch 3200/10000, Loss: 1.5628, Accuracy: 20.00%\n", - "Epoch 3201 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3201: avg_loss appended (1.5628)\n", - "Epoch 3201: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3201: accuracy appended (20.00%)\n", - "Epoch 3201: model set back to train mode\n", - "Epoch 3201: model parameters saved\n", - "Epoch 3202 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3202: avg_loss appended (1.5628)\n", - "Epoch 3202: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3202: accuracy appended (20.00%)\n", - "Epoch 3202: model set back to train mode\n", - "Epoch 3202: model parameters saved\n", - "Epoch 3203 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3203: avg_loss appended (1.5628)\n", - "Epoch 3203: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3203: accuracy appended (20.00%)\n", - "Epoch 3203: model set back to train mode\n", - "Epoch 3203: model parameters saved\n", - "Epoch 3204 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3204: avg_loss appended (1.5628)\n", - "Epoch 3204: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3204: accuracy appended (20.00%)\n", - "Epoch 3204: model set back to train mode\n", - "Epoch 3204: model parameters saved\n", - "Epoch 3205 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3205: avg_loss appended (1.5628)\n", - "Epoch 3205: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3205: accuracy appended (20.00%)\n", - "Epoch 3205: model set back to train mode\n", - "Epoch 3205: model parameters saved\n", - "Epoch 3206 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3206: avg_loss appended (1.5628)\n", - "Epoch 3206: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3206: accuracy appended (20.00%)\n", - "Epoch 3206: model set back to train mode\n", - "Epoch 3206: model parameters saved\n", - "Epoch 3207 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3207: avg_loss appended (1.5628)\n", - "Epoch 3207: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3207: accuracy appended (20.00%)\n", - "Epoch 3207: model set back to train mode\n", - "Epoch 3207: model parameters saved\n", - "Epoch 3208 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3208: avg_loss appended (1.5628)\n", - "Epoch 3208: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3208: accuracy appended (20.00%)\n", - "Epoch 3208: model set back to train mode\n", - "Epoch 3208: model parameters saved\n", - "Epoch 3209 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3209: avg_loss appended (1.5628)\n", - "Epoch 3209: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3209: accuracy appended (20.00%)\n", - "Epoch 3209: model set back to train mode\n", - "Epoch 3209: model parameters saved\n", - "Epoch 3210 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3210: avg_loss appended (1.5628)\n", - "Epoch 3210: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3210: accuracy appended (20.00%)\n", - "Epoch 3210: model set back to train mode\n", - "Epoch 3210: model parameters saved\n", - "Epoch 3211 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3211: avg_loss appended (1.5628)\n", - "Epoch 3211: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3211: accuracy appended (20.00%)\n", - "Epoch 3211: model set back to train mode\n", - "Epoch 3211: model parameters saved\n", - "Epoch 3212 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3212: avg_loss appended (1.5628)\n", - "Epoch 3212: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3212: accuracy appended (20.00%)\n", - "Epoch 3212: model set back to train mode\n", - "Epoch 3212: model parameters saved\n", - "Epoch 3213 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3213: avg_loss appended (1.5628)\n", - "Epoch 3213: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3213: accuracy appended (20.00%)\n", - "Epoch 3213: model set back to train mode\n", - "Epoch 3213: model parameters saved\n", - "Epoch 3214 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3214: avg_loss appended (1.5628)\n", - "Epoch 3214: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3214: accuracy appended (20.00%)\n", - "Epoch 3214: model set back to train mode\n", - "Epoch 3214: model parameters saved\n", - "Epoch 3215 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3215: avg_loss appended (1.5628)\n", - "Epoch 3215: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3215: accuracy appended (20.00%)\n", - "Epoch 3215: model set back to train mode\n", - "Epoch 3215: model parameters saved\n", - "Epoch 3216 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3216: avg_loss appended (1.5628)\n", - "Epoch 3216: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3216: accuracy appended (20.00%)\n", - "Epoch 3216: model set back to train mode\n", - "Epoch 3216: model parameters saved\n", - "Epoch 3217 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3217: avg_loss appended (1.5628)\n", - "Epoch 3217: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3217: accuracy appended (20.00%)\n", - "Epoch 3217: model set back to train mode\n", - "Epoch 3217: model parameters saved\n", - "Epoch 3218 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3218: avg_loss appended (1.5628)\n", - "Epoch 3218: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3218: accuracy appended (20.00%)\n", - "Epoch 3218: model set back to train mode\n", - "Epoch 3218: model parameters saved\n", - "Epoch 3219 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3219: avg_loss appended (1.5628)\n", - "Epoch 3219: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3219: accuracy appended (20.00%)\n", - "Epoch 3219: model set back to train mode\n", - "Epoch 3219: model parameters saved\n", - "Epoch 3220 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3220: avg_loss appended (1.5628)\n", - "Epoch 3220: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3220: accuracy appended (20.00%)\n", - "Epoch 3220: model set back to train mode\n", - "Epoch 3220: model parameters saved\n", - "Epoch 3221 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3221: avg_loss appended (1.5628)\n", - "Epoch 3221: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3221: accuracy appended (20.00%)\n", - "Epoch 3221: model set back to train mode\n", - "Epoch 3221: model parameters saved\n", - "Epoch 3222 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3222: avg_loss appended (1.5628)\n", - "Epoch 3222: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3222: accuracy appended (20.00%)\n", - "Epoch 3222: model set back to train mode\n", - "Epoch 3222: model parameters saved\n", - "Epoch 3223 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3223: avg_loss appended (1.5628)\n", - "Epoch 3223: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3223: accuracy appended (20.00%)\n", - "Epoch 3223: model set back to train mode\n", - "Epoch 3223: model parameters saved\n", - "Epoch 3224 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3224: avg_loss appended (1.5628)\n", - "Epoch 3224: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3224: accuracy appended (20.00%)\n", - "Epoch 3224: model set back to train mode\n", - "Epoch 3224: model parameters saved\n", - "Epoch 3225 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3225: avg_loss appended (1.5628)\n", - "Epoch 3225: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3225: accuracy appended (20.00%)\n", - "Epoch 3225: model set back to train mode\n", - "Epoch 3225: model parameters saved\n", - "Epoch 3226 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3226: avg_loss appended (1.5628)\n", - "Epoch 3226: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3226: accuracy appended (20.00%)\n", - "Epoch 3226: model set back to train mode\n", - "Epoch 3226: model parameters saved\n", - "Epoch 3227 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3227: avg_loss appended (1.5628)\n", - "Epoch 3227: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3227: accuracy appended (20.00%)\n", - "Epoch 3227: model set back to train mode\n", - "Epoch 3227: model parameters saved\n", - "Epoch 3228 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3228: avg_loss appended (1.5628)\n", - "Epoch 3228: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3228: accuracy appended (20.00%)\n", - "Epoch 3228: model set back to train mode\n", - "Epoch 3228: model parameters saved\n", - "Epoch 3229 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3229: avg_loss appended (1.5628)\n", - "Epoch 3229: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3229: accuracy appended (20.00%)\n", - "Epoch 3229: model set back to train mode\n", - "Epoch 3229: model parameters saved\n", - "Epoch 3230 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3230: avg_loss appended (1.5628)\n", - "Epoch 3230: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3230: accuracy appended (20.00%)\n", - "Epoch 3230: model set back to train mode\n", - "Epoch 3230: model parameters saved\n", - "Epoch 3231 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3231: avg_loss appended (1.5628)\n", - "Epoch 3231: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3231: accuracy appended (20.00%)\n", - "Epoch 3231: model set back to train mode\n", - "Epoch 3231: model parameters saved\n", - "Epoch 3232 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3232: avg_loss appended (1.5628)\n", - "Epoch 3232: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3232: accuracy appended (20.00%)\n", - "Epoch 3232: model set back to train mode\n", - "Epoch 3232: model parameters saved\n", - "Epoch 3233 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3233: avg_loss appended (1.5628)\n", - "Epoch 3233: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3233: accuracy appended (20.00%)\n", - "Epoch 3233: model set back to train mode\n", - "Epoch 3233: model parameters saved\n", - "Epoch 3234 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3234: avg_loss appended (1.5628)\n", - "Epoch 3234: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3234: accuracy appended (20.00%)\n", - "Epoch 3234: model set back to train mode\n", - "Epoch 3234: model parameters saved\n", - "Epoch 3235 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3235: avg_loss appended (1.5628)\n", - "Epoch 3235: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3235: accuracy appended (20.00%)\n", - "Epoch 3235: model set back to train mode\n", - "Epoch 3235: model parameters saved\n", - "Epoch 3236 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3236: avg_loss appended (1.5628)\n", - "Epoch 3236: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3236: accuracy appended (20.00%)\n", - "Epoch 3236: model set back to train mode\n", - "Epoch 3236: model parameters saved\n", - "Epoch 3237 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3237: avg_loss appended (1.5628)\n", - "Epoch 3237: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3237: accuracy appended (20.00%)\n", - "Epoch 3237: model set back to train mode\n", - "Epoch 3237: model parameters saved\n", - "Epoch 3238 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3238: avg_loss appended (1.5628)\n", - "Epoch 3238: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3238: accuracy appended (20.00%)\n", - "Epoch 3238: model set back to train mode\n", - "Epoch 3238: model parameters saved\n", - "Epoch 3239 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3239: avg_loss appended (1.5628)\n", - "Epoch 3239: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3239: accuracy appended (20.00%)\n", - "Epoch 3239: model set back to train mode\n", - "Epoch 3239: model parameters saved\n", - "Epoch 3240 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3240: avg_loss appended (1.5628)\n", - "Epoch 3240: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3240: accuracy appended (20.00%)\n", - "Epoch 3240: model set back to train mode\n", - "Epoch 3240: model parameters saved\n", - "Epoch 3241 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3241: avg_loss appended (1.5628)\n", - "Epoch 3241: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3241: accuracy appended (20.00%)\n", - "Epoch 3241: model set back to train mode\n", - "Epoch 3241: model parameters saved\n", - "Epoch 3242 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3242: avg_loss appended (1.5628)\n", - "Epoch 3242: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3242: accuracy appended (20.00%)\n", - "Epoch 3242: model set back to train mode\n", - "Epoch 3242: model parameters saved\n", - "Epoch 3243 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3243: avg_loss appended (1.5628)\n", - "Epoch 3243: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3243: accuracy appended (20.00%)\n", - "Epoch 3243: model set back to train mode\n", - "Epoch 3243: model parameters saved\n", - "Epoch 3244 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3244: avg_loss appended (1.5628)\n", - "Epoch 3244: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3244: accuracy appended (20.00%)\n", - "Epoch 3244: model set back to train mode\n", - "Epoch 3244: model parameters saved\n", - "Epoch 3245 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3245: avg_loss appended (1.5628)\n", - "Epoch 3245: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3245: accuracy appended (20.00%)\n", - "Epoch 3245: model set back to train mode\n", - "Epoch 3245: model parameters saved\n", - "Epoch 3246 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3246: avg_loss appended (1.5628)\n", - "Epoch 3246: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3246: accuracy appended (20.00%)\n", - "Epoch 3246: model set back to train mode\n", - "Epoch 3246: model parameters saved\n", - "Epoch 3247 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3247: avg_loss appended (1.5628)\n", - "Epoch 3247: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3247: accuracy appended (20.00%)\n", - "Epoch 3247: model set back to train mode\n", - "Epoch 3247: model parameters saved\n", - "Epoch 3248 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3248: avg_loss appended (1.5628)\n", - "Epoch 3248: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3248: accuracy appended (20.00%)\n", - "Epoch 3248: model set back to train mode\n", - "Epoch 3248: model parameters saved\n", - "Epoch 3249 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3249: avg_loss appended (1.5628)\n", - "Epoch 3249: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3249: accuracy appended (20.00%)\n", - "Epoch 3249: model set back to train mode\n", - "Epoch 3249: model parameters saved\n", - "Epoch 3250 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3250: avg_loss appended (1.5628)\n", - "Epoch 3250: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3250: accuracy appended (20.00%)\n", - "Epoch 3250: model set back to train mode\n", - "Epoch 3250: model parameters saved\n", - "Epoch 3251 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3251: avg_loss appended (1.5628)\n", - "Epoch 3251: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3251: accuracy appended (20.00%)\n", - "Epoch 3251: model set back to train mode\n", - "Epoch 3251: model parameters saved\n", - "Epoch 3252 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3252: avg_loss appended (1.5628)\n", - "Epoch 3252: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3252: accuracy appended (20.00%)\n", - "Epoch 3252: model set back to train mode\n", - "Epoch 3252: model parameters saved\n", - "Epoch 3253 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3253: avg_loss appended (1.5628)\n", - "Epoch 3253: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3253: accuracy appended (20.00%)\n", - "Epoch 3253: model set back to train mode\n", - "Epoch 3253: model parameters saved\n", - "Epoch 3254 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3254: avg_loss appended (1.5628)\n", - "Epoch 3254: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3254: accuracy appended (20.00%)\n", - "Epoch 3254: model set back to train mode\n", - "Epoch 3254: model parameters saved\n", - "Epoch 3255 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3255: avg_loss appended (1.5628)\n", - "Epoch 3255: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3255: accuracy appended (20.00%)\n", - "Epoch 3255: model set back to train mode\n", - "Epoch 3255: model parameters saved\n", - "Epoch 3256 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5628)\n", - "Epoch 3256: avg_loss appended (1.5628)\n", - "Epoch 3256: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3256: accuracy appended (20.00%)\n", - "Epoch 3256: model set back to train mode\n", - "Epoch 3256: model parameters saved\n", - "Epoch 3257 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5627)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5627)\n", - "Epoch 3257: avg_loss appended (1.5627)\n", - "Epoch 3257: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3257: accuracy appended (20.00%)\n", - "Epoch 3257: model set back to train mode\n", - "Epoch 3257: model parameters saved\n", - "Epoch 3258 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5627)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5627)\n", - "Epoch 3258: avg_loss appended (1.5627)\n", - "Epoch 3258: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3258: accuracy appended (20.00%)\n", - "Epoch 3258: model set back to train mode\n", - "Epoch 3258: model parameters saved\n", - "Epoch 3259 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5627)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5627)\n", - "Epoch 3259: avg_loss appended (1.5627)\n", - "Epoch 3259: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3259: accuracy appended (20.00%)\n", - "Epoch 3259: model set back to train mode\n", - "Epoch 3259: model parameters saved\n", - "Epoch 3260 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5627)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5627)\n", - "Epoch 3260: avg_loss appended (1.5627)\n", - "Epoch 3260: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3260: accuracy appended (20.00%)\n", - "Epoch 3260: model set back to train mode\n", - "Epoch 3260: model parameters saved\n", - "Epoch 3261 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5627)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5627)\n", - "Epoch 3261: avg_loss appended (1.5627)\n", - "Epoch 3261: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3261: accuracy appended (20.00%)\n", - "Epoch 3261: model set back to train mode\n", - "Epoch 3261: model parameters saved\n", - "Epoch 3262 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5627)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5627)\n", - "Epoch 3262: avg_loss appended (1.5627)\n", - "Epoch 3262: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3262: accuracy appended (20.00%)\n", - "Epoch 3262: model set back to train mode\n", - "Epoch 3262: model parameters saved\n", - "Epoch 3263 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5627)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5627)\n", - "Epoch 3263: avg_loss appended (1.5627)\n", - "Epoch 3263: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3263: accuracy appended (20.00%)\n", - "Epoch 3263: model set back to train mode\n", - "Epoch 3263: model parameters saved\n", - "Epoch 3264 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5627)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5627)\n", - "Epoch 3264: avg_loss appended (1.5627)\n", - "Epoch 3264: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3264: accuracy appended (20.00%)\n", - "Epoch 3264: model set back to train mode\n", - "Epoch 3264: model parameters saved\n", - "Epoch 3265 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5627)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5627)\n", - "Epoch 3265: avg_loss appended (1.5627)\n", - "Epoch 3265: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3265: accuracy appended (20.00%)\n", - "Epoch 3265: model set back to train mode\n", - "Epoch 3265: model parameters saved\n", - "Epoch 3266 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5627)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5627)\n", - "Epoch 3266: avg_loss appended (1.5627)\n", - "Epoch 3266: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3266: accuracy appended (20.00%)\n", - "Epoch 3266: model set back to train mode\n", - "Epoch 3266: model parameters saved\n", - "Epoch 3267 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5627)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5627)\n", - "Epoch 3267: avg_loss appended (1.5627)\n", - "Epoch 3267: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3267: accuracy appended (20.00%)\n", - "Epoch 3267: model set back to train mode\n", - "Epoch 3267: model parameters saved\n", - "Epoch 3268 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5627)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5627)\n", - "Epoch 3268: avg_loss appended (1.5627)\n", - "Epoch 3268: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3268: accuracy appended (20.00%)\n", - "Epoch 3268: model set back to train mode\n", - "Epoch 3268: model parameters saved\n", - "Epoch 3269 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5627)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5627)\n", - "Epoch 3269: avg_loss appended (1.5627)\n", - "Epoch 3269: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3269: accuracy appended (20.00%)\n", - "Epoch 3269: model set back to train mode\n", - "Epoch 3269: model parameters saved\n", - "Epoch 3270 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5627)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5627)\n", - "Epoch 3270: avg_loss appended (1.5627)\n", - "Epoch 3270: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3270: accuracy appended (20.00%)\n", - "Epoch 3270: model set back to train mode\n", - "Epoch 3270: model parameters saved\n", - "Epoch 3271 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5627)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5627)\n", - "Epoch 3271: avg_loss appended (1.5627)\n", - "Epoch 3271: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3271: accuracy appended (20.00%)\n", - "Epoch 3271: model set back to train mode\n", - "Epoch 3271: model parameters saved\n", - "Epoch 3272 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5627)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5627)\n", - "Epoch 3272: avg_loss appended (1.5627)\n", - "Epoch 3272: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3272: accuracy appended (20.00%)\n", - "Epoch 3272: model set back to train mode\n", - "Epoch 3272: model parameters saved\n", - "Epoch 3273 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5627)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5627)\n", - "Epoch 3273: avg_loss appended (1.5627)\n", - "Epoch 3273: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3273: accuracy appended (20.00%)\n", - "Epoch 3273: model set back to train mode\n", - "Epoch 3273: model parameters saved\n", - "Epoch 3274 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5627)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5627)\n", - "Epoch 3274: avg_loss appended (1.5627)\n", - "Epoch 3274: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3274: accuracy appended (20.00%)\n", - "Epoch 3274: model set back to train mode\n", - "Epoch 3274: model parameters saved\n", - "Epoch 3275 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5627)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5627)\n", - "Epoch 3275: avg_loss appended (1.5627)\n", - "Epoch 3275: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3275: accuracy appended (20.00%)\n", - "Epoch 3275: model set back to train mode\n", - "Epoch 3275: model parameters saved\n", - "Epoch 3276 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5627)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5627)\n", - "Epoch 3276: avg_loss appended (1.5627)\n", - "Epoch 3276: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3276: accuracy appended (20.00%)\n", - "Epoch 3276: model set back to train mode\n", - "Epoch 3276: model parameters saved\n", - "Epoch 3277 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5627)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5627)\n", - "Epoch 3277: avg_loss appended (1.5627)\n", - "Epoch 3277: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3277: accuracy appended (20.00%)\n", - "Epoch 3277: model set back to train mode\n", - "Epoch 3277: model parameters saved\n", - "Epoch 3278 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5627)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5627)\n", - "Epoch 3278: avg_loss appended (1.5627)\n", - "Epoch 3278: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3278: accuracy appended (20.00%)\n", - "Epoch 3278: model set back to train mode\n", - "Epoch 3278: model parameters saved\n", - "Epoch 3279 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5627)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5627)\n", - "Epoch 3279: avg_loss appended (1.5627)\n", - "Epoch 3279: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3279: accuracy appended (20.00%)\n", - "Epoch 3279: model set back to train mode\n", - "Epoch 3279: model parameters saved\n", - "Epoch 3280 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5627)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5627)\n", - "Epoch 3280: avg_loss appended (1.5627)\n", - "Epoch 3280: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3280: accuracy appended (20.00%)\n", - "Epoch 3280: model set back to train mode\n", - "Epoch 3280: model parameters saved\n", - "Epoch 3281 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5627)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5627)\n", - "Epoch 3281: avg_loss appended (1.5627)\n", - "Epoch 3281: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3281: accuracy appended (20.00%)\n", - "Epoch 3281: model set back to train mode\n", - "Epoch 3281: model parameters saved\n", - "Epoch 3282 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5627)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5627)\n", - "Epoch 3282: avg_loss appended (1.5627)\n", - "Epoch 3282: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3282: accuracy appended (20.00%)\n", - "Epoch 3282: model set back to train mode\n", - "Epoch 3282: model parameters saved\n", - "Epoch 3283 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5627)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5627)\n", - "Epoch 3283: avg_loss appended (1.5627)\n", - "Epoch 3283: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3283: accuracy appended (20.00%)\n", - "Epoch 3283: model set back to train mode\n", - "Epoch 3283: model parameters saved\n", - "Epoch 3284 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5627)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5627)\n", - "Epoch 3284: avg_loss appended (1.5627)\n", - "Epoch 3284: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3284: accuracy appended (20.00%)\n", - "Epoch 3284: model set back to train mode\n", - "Epoch 3284: model parameters saved\n", - "Epoch 3285 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5627)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5627)\n", - "Epoch 3285: avg_loss appended (1.5627)\n", - "Epoch 3285: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3285: accuracy appended (20.00%)\n", - "Epoch 3285: model set back to train mode\n", - "Epoch 3285: model parameters saved\n", - "Epoch 3286 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5627)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5627)\n", - "Epoch 3286: avg_loss appended (1.5627)\n", - "Epoch 3286: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3286: accuracy appended (20.00%)\n", - "Epoch 3286: model set back to train mode\n", - "Epoch 3286: model parameters saved\n", - "Epoch 3287 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5627)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5627)\n", - "Epoch 3287: avg_loss appended (1.5627)\n", - "Epoch 3287: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3287: accuracy appended (20.00%)\n", - "Epoch 3287: model set back to train mode\n", - "Epoch 3287: model parameters saved\n", - "Epoch 3288 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5627)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5627)\n", - "Epoch 3288: avg_loss appended (1.5627)\n", - "Epoch 3288: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3288: accuracy appended (20.00%)\n", - "Epoch 3288: model set back to train mode\n", - "Epoch 3288: model parameters saved\n", - "Epoch 3289 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5627)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5627)\n", - "Epoch 3289: avg_loss appended (1.5627)\n", - "Epoch 3289: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3289: accuracy appended (20.00%)\n", - "Epoch 3289: model set back to train mode\n", - "Epoch 3289: model parameters saved\n", - "Epoch 3290 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5627)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5627)\n", - "Epoch 3290: avg_loss appended (1.5627)\n", - "Epoch 3290: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3290: accuracy appended (20.00%)\n", - "Epoch 3290: model set back to train mode\n", - "Epoch 3290: model parameters saved\n", - "Epoch 3291 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5627)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5627)\n", - "Epoch 3291: avg_loss appended (1.5627)\n", - "Epoch 3291: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3291: accuracy appended (20.00%)\n", - "Epoch 3291: model set back to train mode\n", - "Epoch 3291: model parameters saved\n", - "Epoch 3292 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5627)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5627)\n", - "Epoch 3292: avg_loss appended (1.5627)\n", - "Epoch 3292: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3292: accuracy appended (20.00%)\n", - "Epoch 3292: model set back to train mode\n", - "Epoch 3292: model parameters saved\n", - "Epoch 3293 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5627)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5627)\n", - "Epoch 3293: avg_loss appended (1.5627)\n", - "Epoch 3293: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3293: accuracy appended (20.00%)\n", - "Epoch 3293: model set back to train mode\n", - "Epoch 3293: model parameters saved\n", - "Epoch 3294 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5627)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5627)\n", - "Epoch 3294: avg_loss appended (1.5627)\n", - "Epoch 3294: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3294: accuracy appended (20.00%)\n", - "Epoch 3294: model set back to train mode\n", - "Epoch 3294: model parameters saved\n", - "Epoch 3295 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5626)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5626)\n", - "Epoch 3295: avg_loss appended (1.5626)\n", - "Epoch 3295: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3295: accuracy appended (20.00%)\n", - "Epoch 3295: model set back to train mode\n", - "Epoch 3295: model parameters saved\n", - "Epoch 3296 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5626)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5626)\n", - "Epoch 3296: avg_loss appended (1.5626)\n", - "Epoch 3296: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3296: accuracy appended (20.00%)\n", - "Epoch 3296: model set back to train mode\n", - "Epoch 3296: model parameters saved\n", - "Epoch 3297 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5626)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5626)\n", - "Epoch 3297: avg_loss appended (1.5626)\n", - "Epoch 3297: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3297: accuracy appended (20.00%)\n", - "Epoch 3297: model set back to train mode\n", - "Epoch 3297: model parameters saved\n", - "Epoch 3298 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5626)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5626)\n", - "Epoch 3298: avg_loss appended (1.5626)\n", - "Epoch 3298: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3298: accuracy appended (20.00%)\n", - "Epoch 3298: model set back to train mode\n", - "Epoch 3298: model parameters saved\n", - "Epoch 3299 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5626)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5626)\n", - "Epoch 3299: avg_loss appended (1.5626)\n", - "Epoch 3299: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3299: accuracy appended (20.00%)\n", - "Epoch 3299: model set back to train mode\n", - "Epoch 3299: model parameters saved\n", - "Epoch 3300 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5626)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5626)\n", - "Epoch 3300: avg_loss appended (1.5626)\n", - "Epoch 3300: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3300: accuracy appended (20.00%)\n", - "Epoch 3300: model set back to train mode\n", - "Epoch 3300: model parameters saved\n", - "Epoch 3300/10000, Loss: 1.5626, Accuracy: 20.00%\n", - "Epoch 3301 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5626)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5626)\n", - "Epoch 3301: avg_loss appended (1.5626)\n", - "Epoch 3301: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3301: accuracy appended (20.00%)\n", - "Epoch 3301: model set back to train mode\n", - "Epoch 3301: model parameters saved\n", - "Epoch 3302 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5626)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5626)\n", - "Epoch 3302: avg_loss appended (1.5626)\n", - "Epoch 3302: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3302: accuracy appended (20.00%)\n", - "Epoch 3302: model set back to train mode\n", - "Epoch 3302: model parameters saved\n", - "Epoch 3303 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5626)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5626)\n", - "Epoch 3303: avg_loss appended (1.5626)\n", - "Epoch 3303: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3303: accuracy appended (20.00%)\n", - "Epoch 3303: model set back to train mode\n", - "Epoch 3303: model parameters saved\n", - "Epoch 3304 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5626)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5626)\n", - "Epoch 3304: avg_loss appended (1.5626)\n", - "Epoch 3304: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3304: accuracy appended (20.00%)\n", - "Epoch 3304: model set back to train mode\n", - "Epoch 3304: model parameters saved\n", - "Epoch 3305 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5626)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5626)\n", - "Epoch 3305: avg_loss appended (1.5626)\n", - "Epoch 3305: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3305: accuracy appended (20.00%)\n", - "Epoch 3305: model set back to train mode\n", - "Epoch 3305: model parameters saved\n", - "Epoch 3306 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5626)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5626)\n", - "Epoch 3306: avg_loss appended (1.5626)\n", - "Epoch 3306: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3306: accuracy appended (20.00%)\n", - "Epoch 3306: model set back to train mode\n", - "Epoch 3306: model parameters saved\n", - "Epoch 3307 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5626)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5626)\n", - "Epoch 3307: avg_loss appended (1.5626)\n", - "Epoch 3307: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3307: accuracy appended (20.00%)\n", - "Epoch 3307: model set back to train mode\n", - "Epoch 3307: model parameters saved\n", - "Epoch 3308 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5626)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5626)\n", - "Epoch 3308: avg_loss appended (1.5626)\n", - "Epoch 3308: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3308: accuracy appended (20.00%)\n", - "Epoch 3308: model set back to train mode\n", - "Epoch 3308: model parameters saved\n", - "Epoch 3309 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5626)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5626)\n", - "Epoch 3309: avg_loss appended (1.5626)\n", - "Epoch 3309: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3309: accuracy appended (20.00%)\n", - "Epoch 3309: model set back to train mode\n", - "Epoch 3309: model parameters saved\n", - "Epoch 3310 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5626)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5626)\n", - "Epoch 3310: avg_loss appended (1.5626)\n", - "Epoch 3310: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3310: accuracy appended (20.00%)\n", - "Epoch 3310: model set back to train mode\n", - "Epoch 3310: model parameters saved\n", - "Epoch 3311 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5626)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5626)\n", - "Epoch 3311: avg_loss appended (1.5626)\n", - "Epoch 3311: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3311: accuracy appended (20.00%)\n", - "Epoch 3311: model set back to train mode\n", - "Epoch 3311: model parameters saved\n", - "Epoch 3312 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5626)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5626)\n", - "Epoch 3312: avg_loss appended (1.5626)\n", - "Epoch 3312: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3312: accuracy appended (20.00%)\n", - "Epoch 3312: model set back to train mode\n", - "Epoch 3312: model parameters saved\n", - "Epoch 3313 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5626)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5626)\n", - "Epoch 3313: avg_loss appended (1.5626)\n", - "Epoch 3313: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3313: accuracy appended (20.00%)\n", - "Epoch 3313: model set back to train mode\n", - "Epoch 3313: model parameters saved\n", - "Epoch 3314 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5626)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5626)\n", - "Epoch 3314: avg_loss appended (1.5626)\n", - "Epoch 3314: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3314: accuracy appended (20.00%)\n", - "Epoch 3314: model set back to train mode\n", - "Epoch 3314: model parameters saved\n", - "Epoch 3315 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5626)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5626)\n", - "Epoch 3315: avg_loss appended (1.5626)\n", - "Epoch 3315: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3315: accuracy appended (20.00%)\n", - "Epoch 3315: model set back to train mode\n", - "Epoch 3315: model parameters saved\n", - "Epoch 3316 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5626)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5626)\n", - "Epoch 3316: avg_loss appended (1.5626)\n", - "Epoch 3316: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3316: accuracy appended (20.00%)\n", - "Epoch 3316: model set back to train mode\n", - "Epoch 3316: model parameters saved\n", - "Epoch 3317 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5625)\n", - "Epoch 3317: avg_loss appended (1.5625)\n", - "Epoch 3317: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3317: accuracy appended (20.00%)\n", - "Epoch 3317: model set back to train mode\n", - "Epoch 3317: model parameters saved\n", - "Epoch 3318 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5625)\n", - "Epoch 3318: avg_loss appended (1.5625)\n", - "Epoch 3318: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3318: accuracy appended (20.00%)\n", - "Epoch 3318: model set back to train mode\n", - "Epoch 3318: model parameters saved\n", - "Epoch 3319 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5625)\n", - "Epoch 3319: avg_loss appended (1.5625)\n", - "Epoch 3319: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3319: accuracy appended (20.00%)\n", - "Epoch 3319: model set back to train mode\n", - "Epoch 3319: model parameters saved\n", - "Epoch 3320 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5625)\n", - "Epoch 3320: avg_loss appended (1.5625)\n", - "Epoch 3320: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3320: accuracy appended (20.00%)\n", - "Epoch 3320: model set back to train mode\n", - "Epoch 3320: model parameters saved\n", - "Epoch 3321 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5625)\n", - "Epoch 3321: avg_loss appended (1.5625)\n", - "Epoch 3321: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3321: accuracy appended (20.00%)\n", - "Epoch 3321: model set back to train mode\n", - "Epoch 3321: model parameters saved\n", - "Epoch 3322 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5625)\n", - "Epoch 3322: avg_loss appended (1.5625)\n", - "Epoch 3322: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3322: accuracy appended (20.00%)\n", - "Epoch 3322: model set back to train mode\n", - "Epoch 3322: model parameters saved\n", - "Epoch 3323 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5625)\n", - "Epoch 3323: avg_loss appended (1.5625)\n", - "Epoch 3323: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3323: accuracy appended (20.00%)\n", - "Epoch 3323: model set back to train mode\n", - "Epoch 3323: model parameters saved\n", - "Epoch 3324 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5625)\n", - "Epoch 3324: avg_loss appended (1.5625)\n", - "Epoch 3324: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3324: accuracy appended (20.00%)\n", - "Epoch 3324: model set back to train mode\n", - "Epoch 3324: model parameters saved\n", - "Epoch 3325 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5625)\n", - "Epoch 3325: avg_loss appended (1.5625)\n", - "Epoch 3325: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3325: accuracy appended (20.00%)\n", - "Epoch 3325: model set back to train mode\n", - "Epoch 3325: model parameters saved\n", - "Epoch 3326 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5625)\n", - "Epoch 3326: avg_loss appended (1.5625)\n", - "Epoch 3326: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3326: accuracy appended (20.00%)\n", - "Epoch 3326: model set back to train mode\n", - "Epoch 3326: model parameters saved\n", - "Epoch 3327 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5625)\n", - "Epoch 3327: avg_loss appended (1.5625)\n", - "Epoch 3327: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3327: accuracy appended (20.00%)\n", - "Epoch 3327: model set back to train mode\n", - "Epoch 3327: model parameters saved\n", - "Epoch 3328 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5625)\n", - "Epoch 3328: avg_loss appended (1.5625)\n", - "Epoch 3328: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3328: accuracy appended (20.00%)\n", - "Epoch 3328: model set back to train mode\n", - "Epoch 3328: model parameters saved\n", - "Epoch 3329 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5625)\n", - "Epoch 3329: avg_loss appended (1.5625)\n", - "Epoch 3329: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3329: accuracy appended (20.00%)\n", - "Epoch 3329: model set back to train mode\n", - "Epoch 3329: model parameters saved\n", - "Epoch 3330 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5625)\n", - "Epoch 3330: avg_loss appended (1.5625)\n", - "Epoch 3330: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3330: accuracy appended (20.00%)\n", - "Epoch 3330: model set back to train mode\n", - "Epoch 3330: model parameters saved\n", - "Epoch 3331 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5625)\n", - "Epoch 3331: avg_loss appended (1.5625)\n", - "Epoch 3331: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3331: accuracy appended (20.00%)\n", - "Epoch 3331: model set back to train mode\n", - "Epoch 3331: model parameters saved\n", - "Epoch 3332 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5625)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5625)\n", - "Epoch 3332: avg_loss appended (1.5625)\n", - "Epoch 3332: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3332: accuracy appended (20.00%)\n", - "Epoch 3332: model set back to train mode\n", - "Epoch 3332: model parameters saved\n", - "Epoch 3333 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5624)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5624)\n", - "Epoch 3333: avg_loss appended (1.5624)\n", - "Epoch 3333: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3333: accuracy appended (20.00%)\n", - "Epoch 3333: model set back to train mode\n", - "Epoch 3333: model parameters saved\n", - "Epoch 3334 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5624)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5624)\n", - "Epoch 3334: avg_loss appended (1.5624)\n", - "Epoch 3334: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3334: accuracy appended (20.00%)\n", - "Epoch 3334: model set back to train mode\n", - "Epoch 3334: model parameters saved\n", - "Epoch 3335 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5624)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5624)\n", - "Epoch 3335: avg_loss appended (1.5624)\n", - "Epoch 3335: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3335: accuracy appended (20.00%)\n", - "Epoch 3335: model set back to train mode\n", - "Epoch 3335: model parameters saved\n", - "Epoch 3336 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5624)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5624)\n", - "Epoch 3336: avg_loss appended (1.5624)\n", - "Epoch 3336: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3336: accuracy appended (20.00%)\n", - "Epoch 3336: model set back to train mode\n", - "Epoch 3336: model parameters saved\n", - "Epoch 3337 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5624)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5624)\n", - "Epoch 3337: avg_loss appended (1.5624)\n", - "Epoch 3337: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3337: accuracy appended (20.00%)\n", - "Epoch 3337: model set back to train mode\n", - "Epoch 3337: model parameters saved\n", - "Epoch 3338 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5624)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5624)\n", - "Epoch 3338: avg_loss appended (1.5624)\n", - "Epoch 3338: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3338: accuracy appended (20.00%)\n", - "Epoch 3338: model set back to train mode\n", - "Epoch 3338: model parameters saved\n", - "Epoch 3339 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5624)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5624)\n", - "Epoch 3339: avg_loss appended (1.5624)\n", - "Epoch 3339: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3339: accuracy appended (20.00%)\n", - "Epoch 3339: model set back to train mode\n", - "Epoch 3339: model parameters saved\n", - "Epoch 3340 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5624)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5624)\n", - "Epoch 3340: avg_loss appended (1.5624)\n", - "Epoch 3340: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3340: accuracy appended (20.00%)\n", - "Epoch 3340: model set back to train mode\n", - "Epoch 3340: model parameters saved\n", - "Epoch 3341 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5624)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5624)\n", - "Epoch 3341: avg_loss appended (1.5624)\n", - "Epoch 3341: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3341: accuracy appended (20.00%)\n", - "Epoch 3341: model set back to train mode\n", - "Epoch 3341: model parameters saved\n", - "Epoch 3342 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5624)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5624)\n", - "Epoch 3342: avg_loss appended (1.5624)\n", - "Epoch 3342: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3342: accuracy appended (20.00%)\n", - "Epoch 3342: model set back to train mode\n", - "Epoch 3342: model parameters saved\n", - "Epoch 3343 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5624)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5624)\n", - "Epoch 3343: avg_loss appended (1.5624)\n", - "Epoch 3343: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3343: accuracy appended (20.00%)\n", - "Epoch 3343: model set back to train mode\n", - "Epoch 3343: model parameters saved\n", - "Epoch 3344 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5623)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5623)\n", - "Epoch 3344: avg_loss appended (1.5623)\n", - "Epoch 3344: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3344: accuracy appended (20.00%)\n", - "Epoch 3344: model set back to train mode\n", - "Epoch 3344: model parameters saved\n", - "Epoch 3345 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5623)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5623)\n", - "Epoch 3345: avg_loss appended (1.5623)\n", - "Epoch 3345: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3345: accuracy appended (20.00%)\n", - "Epoch 3345: model set back to train mode\n", - "Epoch 3345: model parameters saved\n", - "Epoch 3346 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5623)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5623)\n", - "Epoch 3346: avg_loss appended (1.5623)\n", - "Epoch 3346: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3346: accuracy appended (20.00%)\n", - "Epoch 3346: model set back to train mode\n", - "Epoch 3346: model parameters saved\n", - "Epoch 3347 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5623)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5623)\n", - "Epoch 3347: avg_loss appended (1.5623)\n", - "Epoch 3347: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3347: accuracy appended (20.00%)\n", - "Epoch 3347: model set back to train mode\n", - "Epoch 3347: model parameters saved\n", - "Epoch 3348 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5623)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5623)\n", - "Epoch 3348: avg_loss appended (1.5623)\n", - "Epoch 3348: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3348: accuracy appended (20.00%)\n", - "Epoch 3348: model set back to train mode\n", - "Epoch 3348: model parameters saved\n", - "Epoch 3349 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5623)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5623)\n", - "Epoch 3349: avg_loss appended (1.5623)\n", - "Epoch 3349: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3349: accuracy appended (20.00%)\n", - "Epoch 3349: model set back to train mode\n", - "Epoch 3349: model parameters saved\n", - "Epoch 3350 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5623)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5623)\n", - "Epoch 3350: avg_loss appended (1.5623)\n", - "Epoch 3350: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3350: accuracy appended (20.00%)\n", - "Epoch 3350: model set back to train mode\n", - "Epoch 3350: model parameters saved\n", - "Epoch 3351 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5623)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5623)\n", - "Epoch 3351: avg_loss appended (1.5623)\n", - "Epoch 3351: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3351: accuracy appended (20.00%)\n", - "Epoch 3351: model set back to train mode\n", - "Epoch 3351: model parameters saved\n", - "Epoch 3352 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5623)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5623)\n", - "Epoch 3352: avg_loss appended (1.5623)\n", - "Epoch 3352: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3352: accuracy appended (20.00%)\n", - "Epoch 3352: model set back to train mode\n", - "Epoch 3352: model parameters saved\n", - "Epoch 3353 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5623)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5623)\n", - "Epoch 3353: avg_loss appended (1.5623)\n", - "Epoch 3353: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3353: accuracy appended (20.00%)\n", - "Epoch 3353: model set back to train mode\n", - "Epoch 3353: model parameters saved\n", - "Epoch 3354 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5622)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5622)\n", - "Epoch 3354: avg_loss appended (1.5622)\n", - "Epoch 3354: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3354: accuracy appended (20.00%)\n", - "Epoch 3354: model set back to train mode\n", - "Epoch 3354: model parameters saved\n", - "Epoch 3355 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5622)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5622)\n", - "Epoch 3355: avg_loss appended (1.5622)\n", - "Epoch 3355: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3355: accuracy appended (20.00%)\n", - "Epoch 3355: model set back to train mode\n", - "Epoch 3355: model parameters saved\n", - "Epoch 3356 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5622)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5622)\n", - "Epoch 3356: avg_loss appended (1.5622)\n", - "Epoch 3356: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3356: accuracy appended (20.00%)\n", - "Epoch 3356: model set back to train mode\n", - "Epoch 3356: model parameters saved\n", - "Epoch 3357 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5622)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5622)\n", - "Epoch 3357: avg_loss appended (1.5622)\n", - "Epoch 3357: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3357: accuracy appended (20.00%)\n", - "Epoch 3357: model set back to train mode\n", - "Epoch 3357: model parameters saved\n", - "Epoch 3358 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5622)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5622)\n", - "Epoch 3358: avg_loss appended (1.5622)\n", - "Epoch 3358: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3358: accuracy appended (20.00%)\n", - "Epoch 3358: model set back to train mode\n", - "Epoch 3358: model parameters saved\n", - "Epoch 3359 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5622)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5622)\n", - "Epoch 3359: avg_loss appended (1.5622)\n", - "Epoch 3359: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3359: accuracy appended (20.00%)\n", - "Epoch 3359: model set back to train mode\n", - "Epoch 3359: model parameters saved\n", - "Epoch 3360 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5622)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5622)\n", - "Epoch 3360: avg_loss appended (1.5622)\n", - "Epoch 3360: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3360: accuracy appended (20.00%)\n", - "Epoch 3360: model set back to train mode\n", - "Epoch 3360: model parameters saved\n", - "Epoch 3361 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5621)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5621)\n", - "Epoch 3361: avg_loss appended (1.5621)\n", - "Epoch 3361: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3361: accuracy appended (20.00%)\n", - "Epoch 3361: model set back to train mode\n", - "Epoch 3361: model parameters saved\n", - "Epoch 3362 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5621)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5621)\n", - "Epoch 3362: avg_loss appended (1.5621)\n", - "Epoch 3362: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3362: accuracy appended (20.00%)\n", - "Epoch 3362: model set back to train mode\n", - "Epoch 3362: model parameters saved\n", - "Epoch 3363 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5621)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5621)\n", - "Epoch 3363: avg_loss appended (1.5621)\n", - "Epoch 3363: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3363: accuracy appended (20.00%)\n", - "Epoch 3363: model set back to train mode\n", - "Epoch 3363: model parameters saved\n", - "Epoch 3364 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5621)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5621)\n", - "Epoch 3364: avg_loss appended (1.5621)\n", - "Epoch 3364: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3364: accuracy appended (20.00%)\n", - "Epoch 3364: model set back to train mode\n", - "Epoch 3364: model parameters saved\n", - "Epoch 3365 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5621)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5621)\n", - "Epoch 3365: avg_loss appended (1.5621)\n", - "Epoch 3365: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3365: accuracy appended (20.00%)\n", - "Epoch 3365: model set back to train mode\n", - "Epoch 3365: model parameters saved\n", - "Epoch 3366 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5621)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5621)\n", - "Epoch 3366: avg_loss appended (1.5621)\n", - "Epoch 3366: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3366: accuracy appended (20.00%)\n", - "Epoch 3366: model set back to train mode\n", - "Epoch 3366: model parameters saved\n", - "Epoch 3367 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5620)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5620)\n", - "Epoch 3367: avg_loss appended (1.5620)\n", - "Epoch 3367: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3367: accuracy appended (20.00%)\n", - "Epoch 3367: model set back to train mode\n", - "Epoch 3367: model parameters saved\n", - "Epoch 3368 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5620)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5620)\n", - "Epoch 3368: avg_loss appended (1.5620)\n", - "Epoch 3368: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3368: accuracy appended (20.00%)\n", - "Epoch 3368: model set back to train mode\n", - "Epoch 3368: model parameters saved\n", - "Epoch 3369 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5620)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5620)\n", - "Epoch 3369: avg_loss appended (1.5620)\n", - "Epoch 3369: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3369: accuracy appended (20.00%)\n", - "Epoch 3369: model set back to train mode\n", - "Epoch 3369: model parameters saved\n", - "Epoch 3370 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5620)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5620)\n", - "Epoch 3370: avg_loss appended (1.5620)\n", - "Epoch 3370: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3370: accuracy appended (20.00%)\n", - "Epoch 3370: model set back to train mode\n", - "Epoch 3370: model parameters saved\n", - "Epoch 3371 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5620)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5620)\n", - "Epoch 3371: avg_loss appended (1.5620)\n", - "Epoch 3371: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3371: accuracy appended (20.00%)\n", - "Epoch 3371: model set back to train mode\n", - "Epoch 3371: model parameters saved\n", - "Epoch 3372 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5620)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5620)\n", - "Epoch 3372: avg_loss appended (1.5620)\n", - "Epoch 3372: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3372: accuracy appended (20.00%)\n", - "Epoch 3372: model set back to train mode\n", - "Epoch 3372: model parameters saved\n", - "Epoch 3373 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5619)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5619)\n", - "Epoch 3373: avg_loss appended (1.5619)\n", - "Epoch 3373: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3373: accuracy appended (20.00%)\n", - "Epoch 3373: model set back to train mode\n", - "Epoch 3373: model parameters saved\n", - "Epoch 3374 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5619)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5619)\n", - "Epoch 3374: avg_loss appended (1.5619)\n", - "Epoch 3374: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3374: accuracy appended (20.00%)\n", - "Epoch 3374: model set back to train mode\n", - "Epoch 3374: model parameters saved\n", - "Epoch 3375 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5619)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5619)\n", - "Epoch 3375: avg_loss appended (1.5619)\n", - "Epoch 3375: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3375: accuracy appended (20.00%)\n", - "Epoch 3375: model set back to train mode\n", - "Epoch 3375: model parameters saved\n", - "Epoch 3376 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5619)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5619)\n", - "Epoch 3376: avg_loss appended (1.5619)\n", - "Epoch 3376: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3376: accuracy appended (20.00%)\n", - "Epoch 3376: model set back to train mode\n", - "Epoch 3376: model parameters saved\n", - "Epoch 3377 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5618)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5618)\n", - "Epoch 3377: avg_loss appended (1.5618)\n", - "Epoch 3377: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3377: accuracy appended (20.00%)\n", - "Epoch 3377: model set back to train mode\n", - "Epoch 3377: model parameters saved\n", - "Epoch 3378 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5618)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5618)\n", - "Epoch 3378: avg_loss appended (1.5618)\n", - "Epoch 3378: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3378: accuracy appended (20.00%)\n", - "Epoch 3378: model set back to train mode\n", - "Epoch 3378: model parameters saved\n", - "Epoch 3379 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5618)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5618)\n", - "Epoch 3379: avg_loss appended (1.5618)\n", - "Epoch 3379: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3379: accuracy appended (20.00%)\n", - "Epoch 3379: model set back to train mode\n", - "Epoch 3379: model parameters saved\n", - "Epoch 3380 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5618)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5618)\n", - "Epoch 3380: avg_loss appended (1.5618)\n", - "Epoch 3380: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3380: accuracy appended (20.00%)\n", - "Epoch 3380: model set back to train mode\n", - "Epoch 3380: model parameters saved\n", - "Epoch 3381 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5617)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5617)\n", - "Epoch 3381: avg_loss appended (1.5617)\n", - "Epoch 3381: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3381: accuracy appended (20.00%)\n", - "Epoch 3381: model set back to train mode\n", - "Epoch 3381: model parameters saved\n", - "Epoch 3382 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5617)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5617)\n", - "Epoch 3382: avg_loss appended (1.5617)\n", - "Epoch 3382: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3382: accuracy appended (20.00%)\n", - "Epoch 3382: model set back to train mode\n", - "Epoch 3382: model parameters saved\n", - "Epoch 3383 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5617)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5617)\n", - "Epoch 3383: avg_loss appended (1.5617)\n", - "Epoch 3383: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3383: accuracy appended (20.00%)\n", - "Epoch 3383: model set back to train mode\n", - "Epoch 3383: model parameters saved\n", - "Epoch 3384 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5617)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5617)\n", - "Epoch 3384: avg_loss appended (1.5617)\n", - "Epoch 3384: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3384: accuracy appended (20.00%)\n", - "Epoch 3384: model set back to train mode\n", - "Epoch 3384: model parameters saved\n", - "Epoch 3385 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5616)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5616)\n", - "Epoch 3385: avg_loss appended (1.5616)\n", - "Epoch 3385: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3385: accuracy appended (20.00%)\n", - "Epoch 3385: model set back to train mode\n", - "Epoch 3385: model parameters saved\n", - "Epoch 3386 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5616)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5616)\n", - "Epoch 3386: avg_loss appended (1.5616)\n", - "Epoch 3386: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3386: accuracy appended (20.00%)\n", - "Epoch 3386: model set back to train mode\n", - "Epoch 3386: model parameters saved\n", - "Epoch 3387 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5616)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5616)\n", - "Epoch 3387: avg_loss appended (1.5616)\n", - "Epoch 3387: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3387: accuracy appended (20.00%)\n", - "Epoch 3387: model set back to train mode\n", - "Epoch 3387: model parameters saved\n", - "Epoch 3388 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5615)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5615)\n", - "Epoch 3388: avg_loss appended (1.5615)\n", - "Epoch 3388: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3388: accuracy appended (20.00%)\n", - "Epoch 3388: model set back to train mode\n", - "Epoch 3388: model parameters saved\n", - "Epoch 3389 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5615)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5615)\n", - "Epoch 3389: avg_loss appended (1.5615)\n", - "Epoch 3389: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3389: accuracy appended (20.00%)\n", - "Epoch 3389: model set back to train mode\n", - "Epoch 3389: model parameters saved\n", - "Epoch 3390 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5615)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5615)\n", - "Epoch 3390: avg_loss appended (1.5615)\n", - "Epoch 3390: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3390: accuracy appended (20.00%)\n", - "Epoch 3390: model set back to train mode\n", - "Epoch 3390: model parameters saved\n", - "Epoch 3391 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5614)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5614)\n", - "Epoch 3391: avg_loss appended (1.5614)\n", - "Epoch 3391: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3391: accuracy appended (20.00%)\n", - "Epoch 3391: model set back to train mode\n", - "Epoch 3391: model parameters saved\n", - "Epoch 3392 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5614)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5614)\n", - "Epoch 3392: avg_loss appended (1.5614)\n", - "Epoch 3392: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3392: accuracy appended (20.00%)\n", - "Epoch 3392: model set back to train mode\n", - "Epoch 3392: model parameters saved\n", - "Epoch 3393 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5614)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5614)\n", - "Epoch 3393: avg_loss appended (1.5614)\n", - "Epoch 3393: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3393: accuracy appended (20.00%)\n", - "Epoch 3393: model set back to train mode\n", - "Epoch 3393: model parameters saved\n", - "Epoch 3394 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5613)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5613)\n", - "Epoch 3394: avg_loss appended (1.5613)\n", - "Epoch 3394: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3394: accuracy appended (20.00%)\n", - "Epoch 3394: model set back to train mode\n", - "Epoch 3394: model parameters saved\n", - "Epoch 3395 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5613)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5613)\n", - "Epoch 3395: avg_loss appended (1.5613)\n", - "Epoch 3395: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3395: accuracy appended (20.00%)\n", - "Epoch 3395: model set back to train mode\n", - "Epoch 3395: model parameters saved\n", - "Epoch 3396 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5613)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5613)\n", - "Epoch 3396: avg_loss appended (1.5613)\n", - "Epoch 3396: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3396: accuracy appended (20.00%)\n", - "Epoch 3396: model set back to train mode\n", - "Epoch 3396: model parameters saved\n", - "Epoch 3397 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5612)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5612)\n", - "Epoch 3397: avg_loss appended (1.5612)\n", - "Epoch 3397: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3397: accuracy appended (20.00%)\n", - "Epoch 3397: model set back to train mode\n", - "Epoch 3397: model parameters saved\n", - "Epoch 3398 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5612)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5612)\n", - "Epoch 3398: avg_loss appended (1.5612)\n", - "Epoch 3398: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3398: accuracy appended (20.00%)\n", - "Epoch 3398: model set back to train mode\n", - "Epoch 3398: model parameters saved\n", - "Epoch 3399 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5611)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5611)\n", - "Epoch 3399: avg_loss appended (1.5611)\n", - "Epoch 3399: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3399: accuracy appended (20.00%)\n", - "Epoch 3399: model set back to train mode\n", - "Epoch 3399: model parameters saved\n", - "Epoch 3400 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5611)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5611)\n", - "Epoch 3400: avg_loss appended (1.5611)\n", - "Epoch 3400: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3400: accuracy appended (20.00%)\n", - "Epoch 3400: model set back to train mode\n", - "Epoch 3400: model parameters saved\n", - "Epoch 3400/10000, Loss: 1.5611, Accuracy: 20.00%\n", - "Epoch 3401 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5610)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5610)\n", - "Epoch 3401: avg_loss appended (1.5610)\n", - "Epoch 3401: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3401: accuracy appended (20.00%)\n", - "Epoch 3401: model set back to train mode\n", - "Epoch 3401: model parameters saved\n", - "Epoch 3402 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5610)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5610)\n", - "Epoch 3402: avg_loss appended (1.5610)\n", - "Epoch 3402: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3402: accuracy appended (20.00%)\n", - "Epoch 3402: model set back to train mode\n", - "Epoch 3402: model parameters saved\n", - "Epoch 3403 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5609)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5609)\n", - "Epoch 3403: avg_loss appended (1.5609)\n", - "Epoch 3403: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3403: accuracy appended (20.00%)\n", - "Epoch 3403: model set back to train mode\n", - "Epoch 3403: model parameters saved\n", - "Epoch 3404 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5609)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5609)\n", - "Epoch 3404: avg_loss appended (1.5609)\n", - "Epoch 3404: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3404: accuracy appended (20.00%)\n", - "Epoch 3404: model set back to train mode\n", - "Epoch 3404: model parameters saved\n", - "Epoch 3405 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5608)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5608)\n", - "Epoch 3405: avg_loss appended (1.5608)\n", - "Epoch 3405: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3405: accuracy appended (20.00%)\n", - "Epoch 3405: model set back to train mode\n", - "Epoch 3405: model parameters saved\n", - "Epoch 3406 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5608)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5608)\n", - "Epoch 3406: avg_loss appended (1.5608)\n", - "Epoch 3406: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3406: accuracy appended (20.00%)\n", - "Epoch 3406: model set back to train mode\n", - "Epoch 3406: model parameters saved\n", - "Epoch 3407 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5607)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5607)\n", - "Epoch 3407: avg_loss appended (1.5607)\n", - "Epoch 3407: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3407: accuracy appended (20.00%)\n", - "Epoch 3407: model set back to train mode\n", - "Epoch 3407: model parameters saved\n", - "Epoch 3408 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5606)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5606)\n", - "Epoch 3408: avg_loss appended (1.5606)\n", - "Epoch 3408: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3408: accuracy appended (20.00%)\n", - "Epoch 3408: model set back to train mode\n", - "Epoch 3408: model parameters saved\n", - "Epoch 3409 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5606)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5606)\n", - "Epoch 3409: avg_loss appended (1.5606)\n", - "Epoch 3409: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3409: accuracy appended (20.00%)\n", - "Epoch 3409: model set back to train mode\n", - "Epoch 3409: model parameters saved\n", - "Epoch 3410 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5605)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5605)\n", - "Epoch 3410: avg_loss appended (1.5605)\n", - "Epoch 3410: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3410: accuracy appended (20.00%)\n", - "Epoch 3410: model set back to train mode\n", - "Epoch 3410: model parameters saved\n", - "Epoch 3411 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5604)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5604)\n", - "Epoch 3411: avg_loss appended (1.5604)\n", - "Epoch 3411: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3411: accuracy appended (20.00%)\n", - "Epoch 3411: model set back to train mode\n", - "Epoch 3411: model parameters saved\n", - "Epoch 3412 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5604)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5604)\n", - "Epoch 3412: avg_loss appended (1.5604)\n", - "Epoch 3412: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3412: accuracy appended (20.00%)\n", - "Epoch 3412: model set back to train mode\n", - "Epoch 3412: model parameters saved\n", - "Epoch 3413 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5603)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5603)\n", - "Epoch 3413: avg_loss appended (1.5603)\n", - "Epoch 3413: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3413: accuracy appended (20.00%)\n", - "Epoch 3413: model set back to train mode\n", - "Epoch 3413: model parameters saved\n", - "Epoch 3414 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5602)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5602)\n", - "Epoch 3414: avg_loss appended (1.5602)\n", - "Epoch 3414: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3414: accuracy appended (20.00%)\n", - "Epoch 3414: model set back to train mode\n", - "Epoch 3414: model parameters saved\n", - "Epoch 3415 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5601)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5601)\n", - "Epoch 3415: avg_loss appended (1.5601)\n", - "Epoch 3415: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3415: accuracy appended (20.00%)\n", - "Epoch 3415: model set back to train mode\n", - "Epoch 3415: model parameters saved\n", - "Epoch 3416 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5600)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5600)\n", - "Epoch 3416: avg_loss appended (1.5600)\n", - "Epoch 3416: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3416: accuracy appended (20.00%)\n", - "Epoch 3416: model set back to train mode\n", - "Epoch 3416: model parameters saved\n", - "Epoch 3417 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5599)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5599)\n", - "Epoch 3417: avg_loss appended (1.5599)\n", - "Epoch 3417: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3417: accuracy appended (20.00%)\n", - "Epoch 3417: model set back to train mode\n", - "Epoch 3417: model parameters saved\n", - "Epoch 3418 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5599)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5599)\n", - "Epoch 3418: avg_loss appended (1.5599)\n", - "Epoch 3418: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3418: accuracy appended (20.00%)\n", - "Epoch 3418: model set back to train mode\n", - "Epoch 3418: model parameters saved\n", - "Epoch 3419 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5598)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5598)\n", - "Epoch 3419: avg_loss appended (1.5598)\n", - "Epoch 3419: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3419: accuracy appended (20.00%)\n", - "Epoch 3419: model set back to train mode\n", - "Epoch 3419: model parameters saved\n", - "Epoch 3420 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5597)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5597)\n", - "Epoch 3420: avg_loss appended (1.5597)\n", - "Epoch 3420: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3420: accuracy appended (20.00%)\n", - "Epoch 3420: model set back to train mode\n", - "Epoch 3420: model parameters saved\n", - "Epoch 3421 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5596)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5596)\n", - "Epoch 3421: avg_loss appended (1.5596)\n", - "Epoch 3421: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3421: accuracy appended (20.00%)\n", - "Epoch 3421: model set back to train mode\n", - "Epoch 3421: model parameters saved\n", - "Epoch 3422 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5594)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5594)\n", - "Epoch 3422: avg_loss appended (1.5594)\n", - "Epoch 3422: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3422: accuracy appended (20.00%)\n", - "Epoch 3422: model set back to train mode\n", - "Epoch 3422: model parameters saved\n", - "Epoch 3423 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5593)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5593)\n", - "Epoch 3423: avg_loss appended (1.5593)\n", - "Epoch 3423: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3423: accuracy appended (20.00%)\n", - "Epoch 3423: model set back to train mode\n", - "Epoch 3423: model parameters saved\n", - "Epoch 3424 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5592)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5592)\n", - "Epoch 3424: avg_loss appended (1.5592)\n", - "Epoch 3424: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3424: accuracy appended (20.00%)\n", - "Epoch 3424: model set back to train mode\n", - "Epoch 3424: model parameters saved\n", - "Epoch 3425 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5591)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5591)\n", - "Epoch 3425: avg_loss appended (1.5591)\n", - "Epoch 3425: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3425: accuracy appended (20.00%)\n", - "Epoch 3425: model set back to train mode\n", - "Epoch 3425: model parameters saved\n", - "Epoch 3426 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5590)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5590)\n", - "Epoch 3426: avg_loss appended (1.5590)\n", - "Epoch 3426: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3426: accuracy appended (20.00%)\n", - "Epoch 3426: model set back to train mode\n", - "Epoch 3426: model parameters saved\n", - "Epoch 3427 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5588)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5588)\n", - "Epoch 3427: avg_loss appended (1.5588)\n", - "Epoch 3427: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3427: accuracy appended (20.00%)\n", - "Epoch 3427: model set back to train mode\n", - "Epoch 3427: model parameters saved\n", - "Epoch 3428 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5587)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5587)\n", - "Epoch 3428: avg_loss appended (1.5587)\n", - "Epoch 3428: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3428: accuracy appended (20.00%)\n", - "Epoch 3428: model set back to train mode\n", - "Epoch 3428: model parameters saved\n", - "Epoch 3429 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5585)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5585)\n", - "Epoch 3429: avg_loss appended (1.5585)\n", - "Epoch 3429: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3429: accuracy appended (20.00%)\n", - "Epoch 3429: model set back to train mode\n", - "Epoch 3429: model parameters saved\n", - "Epoch 3430 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5584)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5584)\n", - "Epoch 3430: avg_loss appended (1.5584)\n", - "Epoch 3430: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3430: accuracy appended (20.00%)\n", - "Epoch 3430: model set back to train mode\n", - "Epoch 3430: model parameters saved\n", - "Epoch 3431 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5582)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5582)\n", - "Epoch 3431: avg_loss appended (1.5582)\n", - "Epoch 3431: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3431: accuracy appended (20.00%)\n", - "Epoch 3431: model set back to train mode\n", - "Epoch 3431: model parameters saved\n", - "Epoch 3432 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5581)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5581)\n", - "Epoch 3432: avg_loss appended (1.5581)\n", - "Epoch 3432: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3432: accuracy appended (20.00%)\n", - "Epoch 3432: model set back to train mode\n", - "Epoch 3432: model parameters saved\n", - "Epoch 3433 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5579)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5579)\n", - "Epoch 3433: avg_loss appended (1.5579)\n", - "Epoch 3433: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3433: accuracy appended (20.00%)\n", - "Epoch 3433: model set back to train mode\n", - "Epoch 3433: model parameters saved\n", - "Epoch 3434 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5577)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5577)\n", - "Epoch 3434: avg_loss appended (1.5577)\n", - "Epoch 3434: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3434: accuracy appended (20.00%)\n", - "Epoch 3434: model set back to train mode\n", - "Epoch 3434: model parameters saved\n", - "Epoch 3435 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5575)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5575)\n", - "Epoch 3435: avg_loss appended (1.5575)\n", - "Epoch 3435: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3435: accuracy appended (20.00%)\n", - "Epoch 3435: model set back to train mode\n", - "Epoch 3435: model parameters saved\n", - "Epoch 3436 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5573)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5573)\n", - "Epoch 3436: avg_loss appended (1.5573)\n", - "Epoch 3436: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3436: accuracy appended (20.00%)\n", - "Epoch 3436: model set back to train mode\n", - "Epoch 3436: model parameters saved\n", - "Epoch 3437 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5571)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5571)\n", - "Epoch 3437: avg_loss appended (1.5571)\n", - "Epoch 3437: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3437: accuracy appended (20.00%)\n", - "Epoch 3437: model set back to train mode\n", - "Epoch 3437: model parameters saved\n", - "Epoch 3438 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5569)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5569)\n", - "Epoch 3438: avg_loss appended (1.5569)\n", - "Epoch 3438: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3438: accuracy appended (20.00%)\n", - "Epoch 3438: model set back to train mode\n", - "Epoch 3438: model parameters saved\n", - "Epoch 3439 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5566)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5566)\n", - "Epoch 3439: avg_loss appended (1.5566)\n", - "Epoch 3439: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3439: accuracy appended (20.00%)\n", - "Epoch 3439: model set back to train mode\n", - "Epoch 3439: model parameters saved\n", - "Epoch 3440 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5564)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5564)\n", - "Epoch 3440: avg_loss appended (1.5564)\n", - "Epoch 3440: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3440: accuracy appended (20.00%)\n", - "Epoch 3440: model set back to train mode\n", - "Epoch 3440: model parameters saved\n", - "Epoch 3441 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5561)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5561)\n", - "Epoch 3441: avg_loss appended (1.5561)\n", - "Epoch 3441: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3441: accuracy appended (20.00%)\n", - "Epoch 3441: model set back to train mode\n", - "Epoch 3441: model parameters saved\n", - "Epoch 3442 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5559)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5559)\n", - "Epoch 3442: avg_loss appended (1.5559)\n", - "Epoch 3442: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3442: accuracy appended (20.00%)\n", - "Epoch 3442: model set back to train mode\n", - "Epoch 3442: model parameters saved\n", - "Epoch 3443 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5556)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5556)\n", - "Epoch 3443: avg_loss appended (1.5556)\n", - "Epoch 3443: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3443: accuracy appended (20.00%)\n", - "Epoch 3443: model set back to train mode\n", - "Epoch 3443: model parameters saved\n", - "Epoch 3444 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5553)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5553)\n", - "Epoch 3444: avg_loss appended (1.5553)\n", - "Epoch 3444: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3444: accuracy appended (20.00%)\n", - "Epoch 3444: model set back to train mode\n", - "Epoch 3444: model parameters saved\n", - "Epoch 3445 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5550)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5550)\n", - "Epoch 3445: avg_loss appended (1.5550)\n", - "Epoch 3445: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3445: accuracy appended (20.00%)\n", - "Epoch 3445: model set back to train mode\n", - "Epoch 3445: model parameters saved\n", - "Epoch 3446 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5546)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5546)\n", - "Epoch 3446: avg_loss appended (1.5546)\n", - "Epoch 3446: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3446: accuracy appended (20.00%)\n", - "Epoch 3446: model set back to train mode\n", - "Epoch 3446: model parameters saved\n", - "Epoch 3447 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5543)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5543)\n", - "Epoch 3447: avg_loss appended (1.5543)\n", - "Epoch 3447: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3447: accuracy appended (20.00%)\n", - "Epoch 3447: model set back to train mode\n", - "Epoch 3447: model parameters saved\n", - "Epoch 3448 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5539)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5539)\n", - "Epoch 3448: avg_loss appended (1.5539)\n", - "Epoch 3448: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3448: accuracy appended (20.00%)\n", - "Epoch 3448: model set back to train mode\n", - "Epoch 3448: model parameters saved\n", - "Epoch 3449 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5535)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5535)\n", - "Epoch 3449: avg_loss appended (1.5535)\n", - "Epoch 3449: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3449: accuracy appended (20.00%)\n", - "Epoch 3449: model set back to train mode\n", - "Epoch 3449: model parameters saved\n", - "Epoch 3450 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5531)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5531)\n", - "Epoch 3450: avg_loss appended (1.5531)\n", - "Epoch 3450: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3450: accuracy appended (20.00%)\n", - "Epoch 3450: model set back to train mode\n", - "Epoch 3450: model parameters saved\n", - "Epoch 3451 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5527)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5527)\n", - "Epoch 3451: avg_loss appended (1.5527)\n", - "Epoch 3451: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3451: accuracy appended (20.00%)\n", - "Epoch 3451: model set back to train mode\n", - "Epoch 3451: model parameters saved\n", - "Epoch 3452 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5522)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5522)\n", - "Epoch 3452: avg_loss appended (1.5522)\n", - "Epoch 3452: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3452: accuracy appended (20.00%)\n", - "Epoch 3452: model set back to train mode\n", - "Epoch 3452: model parameters saved\n", - "Epoch 3453 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5517)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5517)\n", - "Epoch 3453: avg_loss appended (1.5517)\n", - "Epoch 3453: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3453: accuracy appended (20.00%)\n", - "Epoch 3453: model set back to train mode\n", - "Epoch 3453: model parameters saved\n", - "Epoch 3454 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5512)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5512)\n", - "Epoch 3454: avg_loss appended (1.5512)\n", - "Epoch 3454: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3454: accuracy appended (20.00%)\n", - "Epoch 3454: model set back to train mode\n", - "Epoch 3454: model parameters saved\n", - "Epoch 3455 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5507)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5507)\n", - "Epoch 3455: avg_loss appended (1.5507)\n", - "Epoch 3455: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3455: accuracy appended (20.00%)\n", - "Epoch 3455: model set back to train mode\n", - "Epoch 3455: model parameters saved\n", - "Epoch 3456 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5501)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5501)\n", - "Epoch 3456: avg_loss appended (1.5501)\n", - "Epoch 3456: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3456: accuracy appended (20.00%)\n", - "Epoch 3456: model set back to train mode\n", - "Epoch 3456: model parameters saved\n", - "Epoch 3457 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5495)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5495)\n", - "Epoch 3457: avg_loss appended (1.5495)\n", - "Epoch 3457: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3457: accuracy appended (20.00%)\n", - "Epoch 3457: model set back to train mode\n", - "Epoch 3457: model parameters saved\n", - "Epoch 3458 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5489)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5489)\n", - "Epoch 3458: avg_loss appended (1.5489)\n", - "Epoch 3458: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3458: accuracy appended (20.00%)\n", - "Epoch 3458: model set back to train mode\n", - "Epoch 3458: model parameters saved\n", - "Epoch 3459 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5482)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5482)\n", - "Epoch 3459: avg_loss appended (1.5482)\n", - "Epoch 3459: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3459: accuracy appended (20.00%)\n", - "Epoch 3459: model set back to train mode\n", - "Epoch 3459: model parameters saved\n", - "Epoch 3460 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5475)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5475)\n", - "Epoch 3460: avg_loss appended (1.5475)\n", - "Epoch 3460: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3460: accuracy appended (20.00%)\n", - "Epoch 3460: model set back to train mode\n", - "Epoch 3460: model parameters saved\n", - "Epoch 3461 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5467)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5467)\n", - "Epoch 3461: avg_loss appended (1.5467)\n", - "Epoch 3461: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3461: accuracy appended (20.00%)\n", - "Epoch 3461: model set back to train mode\n", - "Epoch 3461: model parameters saved\n", - "Epoch 3462 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5459)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5459)\n", - "Epoch 3462: avg_loss appended (1.5459)\n", - "Epoch 3462: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3462: accuracy appended (20.00%)\n", - "Epoch 3462: model set back to train mode\n", - "Epoch 3462: model parameters saved\n", - "Epoch 3463 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5450)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5450)\n", - "Epoch 3463: avg_loss appended (1.5450)\n", - "Epoch 3463: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3463: accuracy appended (20.00%)\n", - "Epoch 3463: model set back to train mode\n", - "Epoch 3463: model parameters saved\n", - "Epoch 3464 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5441)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5441)\n", - "Epoch 3464: avg_loss appended (1.5441)\n", - "Epoch 3464: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3464: accuracy appended (20.00%)\n", - "Epoch 3464: model set back to train mode\n", - "Epoch 3464: model parameters saved\n", - "Epoch 3465 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5432)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5432)\n", - "Epoch 3465: avg_loss appended (1.5432)\n", - "Epoch 3465: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3465: accuracy appended (20.00%)\n", - "Epoch 3465: model set back to train mode\n", - "Epoch 3465: model parameters saved\n", - "Epoch 3466 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5421)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5421)\n", - "Epoch 3466: avg_loss appended (1.5421)\n", - "Epoch 3466: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3466: accuracy appended (20.00%)\n", - "Epoch 3466: model set back to train mode\n", - "Epoch 3466: model parameters saved\n", - "Epoch 3467 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5410)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5410)\n", - "Epoch 3467: avg_loss appended (1.5410)\n", - "Epoch 3467: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3467: accuracy appended (20.00%)\n", - "Epoch 3467: model set back to train mode\n", - "Epoch 3467: model parameters saved\n", - "Epoch 3468 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5399)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5399)\n", - "Epoch 3468: avg_loss appended (1.5399)\n", - "Epoch 3468: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3468: accuracy appended (20.00%)\n", - "Epoch 3468: model set back to train mode\n", - "Epoch 3468: model parameters saved\n", - "Epoch 3469 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5387)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5387)\n", - "Epoch 3469: avg_loss appended (1.5387)\n", - "Epoch 3469: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3469: accuracy appended (20.00%)\n", - "Epoch 3469: model set back to train mode\n", - "Epoch 3469: model parameters saved\n", - "Epoch 3470 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5374)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5374)\n", - "Epoch 3470: avg_loss appended (1.5374)\n", - "Epoch 3470: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3470: accuracy appended (20.00%)\n", - "Epoch 3470: model set back to train mode\n", - "Epoch 3470: model parameters saved\n", - "Epoch 3471 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5360)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5360)\n", - "Epoch 3471: avg_loss appended (1.5360)\n", - "Epoch 3471: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3471: accuracy appended (20.00%)\n", - "Epoch 3471: model set back to train mode\n", - "Epoch 3471: model parameters saved\n", - "Epoch 3472 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5345)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5345)\n", - "Epoch 3472: avg_loss appended (1.5345)\n", - "Epoch 3472: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3472: accuracy appended (20.00%)\n", - "Epoch 3472: model set back to train mode\n", - "Epoch 3472: model parameters saved\n", - "Epoch 3473 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5330)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5330)\n", - "Epoch 3473: avg_loss appended (1.5330)\n", - "Epoch 3473: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3473: accuracy appended (20.00%)\n", - "Epoch 3473: model set back to train mode\n", - "Epoch 3473: model parameters saved\n", - "Epoch 3474 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5313)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5313)\n", - "Epoch 3474: avg_loss appended (1.5313)\n", - "Epoch 3474: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3474: accuracy appended (20.00%)\n", - "Epoch 3474: model set back to train mode\n", - "Epoch 3474: model parameters saved\n", - "Epoch 3475 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5296)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5296)\n", - "Epoch 3475: avg_loss appended (1.5296)\n", - "Epoch 3475: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3475: accuracy appended (20.00%)\n", - "Epoch 3475: model set back to train mode\n", - "Epoch 3475: model parameters saved\n", - "Epoch 3476 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5278)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5278)\n", - "Epoch 3476: avg_loss appended (1.5278)\n", - "Epoch 3476: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3476: accuracy appended (20.00%)\n", - "Epoch 3476: model set back to train mode\n", - "Epoch 3476: model parameters saved\n", - "Epoch 3477 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5259)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5259)\n", - "Epoch 3477: avg_loss appended (1.5259)\n", - "Epoch 3477: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3477: accuracy appended (20.00%)\n", - "Epoch 3477: model set back to train mode\n", - "Epoch 3477: model parameters saved\n", - "Epoch 3478 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5238)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5238)\n", - "Epoch 3478: avg_loss appended (1.5238)\n", - "Epoch 3478: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3478: accuracy appended (20.00%)\n", - "Epoch 3478: model set back to train mode\n", - "Epoch 3478: model parameters saved\n", - "Epoch 3479 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5217)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5217)\n", - "Epoch 3479: avg_loss appended (1.5217)\n", - "Epoch 3479: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3479: accuracy appended (20.00%)\n", - "Epoch 3479: model set back to train mode\n", - "Epoch 3479: model parameters saved\n", - "Epoch 3480 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5195)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5195)\n", - "Epoch 3480: avg_loss appended (1.5195)\n", - "Epoch 3480: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3480: accuracy appended (20.00%)\n", - "Epoch 3480: model set back to train mode\n", - "Epoch 3480: model parameters saved\n", - "Epoch 3481 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5171)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5171)\n", - "Epoch 3481: avg_loss appended (1.5171)\n", - "Epoch 3481: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3481: accuracy appended (20.00%)\n", - "Epoch 3481: model set back to train mode\n", - "Epoch 3481: model parameters saved\n", - "Epoch 3482 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5147)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5147)\n", - "Epoch 3482: avg_loss appended (1.5147)\n", - "Epoch 3482: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3482: accuracy appended (20.00%)\n", - "Epoch 3482: model set back to train mode\n", - "Epoch 3482: model parameters saved\n", - "Epoch 3483 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5121)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5121)\n", - "Epoch 3483: avg_loss appended (1.5121)\n", - "Epoch 3483: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3483: accuracy appended (20.00%)\n", - "Epoch 3483: model set back to train mode\n", - "Epoch 3483: model parameters saved\n", - "Epoch 3484 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5095)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5095)\n", - "Epoch 3484: avg_loss appended (1.5095)\n", - "Epoch 3484: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3484: accuracy appended (20.00%)\n", - "Epoch 3484: model set back to train mode\n", - "Epoch 3484: model parameters saved\n", - "Epoch 3485 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5068)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5068)\n", - "Epoch 3485: avg_loss appended (1.5068)\n", - "Epoch 3485: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3485: accuracy appended (20.00%)\n", - "Epoch 3485: model set back to train mode\n", - "Epoch 3485: model parameters saved\n", - "Epoch 3486 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5040)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5040)\n", - "Epoch 3486: avg_loss appended (1.5040)\n", - "Epoch 3486: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3486: accuracy appended (20.00%)\n", - "Epoch 3486: model set back to train mode\n", - "Epoch 3486: model parameters saved\n", - "Epoch 3487 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.5012)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.5012)\n", - "Epoch 3487: avg_loss appended (1.5012)\n", - "Epoch 3487: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3487: accuracy appended (20.00%)\n", - "Epoch 3487: model set back to train mode\n", - "Epoch 3487: model parameters saved\n", - "Epoch 3488 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4983)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4983)\n", - "Epoch 3488: avg_loss appended (1.4983)\n", - "Epoch 3488: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3488: accuracy appended (20.00%)\n", - "Epoch 3488: model set back to train mode\n", - "Epoch 3488: model parameters saved\n", - "Epoch 3489 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4954)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4954)\n", - "Epoch 3489: avg_loss appended (1.4954)\n", - "Epoch 3489: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3489: accuracy appended (20.00%)\n", - "Epoch 3489: model set back to train mode\n", - "Epoch 3489: model parameters saved\n", - "Epoch 3490 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4925)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4925)\n", - "Epoch 3490: avg_loss appended (1.4925)\n", - "Epoch 3490: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3490: accuracy appended (20.00%)\n", - "Epoch 3490: model set back to train mode\n", - "Epoch 3490: model parameters saved\n", - "Epoch 3491 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4897)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4897)\n", - "Epoch 3491: avg_loss appended (1.4897)\n", - "Epoch 3491: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3491: accuracy appended (20.00%)\n", - "Epoch 3491: model set back to train mode\n", - "Epoch 3491: model parameters saved\n", - "Epoch 3492 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4869)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4869)\n", - "Epoch 3492: avg_loss appended (1.4869)\n", - "Epoch 3492: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3492: accuracy appended (20.00%)\n", - "Epoch 3492: model set back to train mode\n", - "Epoch 3492: model parameters saved\n", - "Epoch 3493 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4842)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4842)\n", - "Epoch 3493: avg_loss appended (1.4842)\n", - "Epoch 3493: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3493: accuracy appended (20.00%)\n", - "Epoch 3493: model set back to train mode\n", - "Epoch 3493: model parameters saved\n", - "Epoch 3494 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4816)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4816)\n", - "Epoch 3494: avg_loss appended (1.4816)\n", - "Epoch 3494: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3494: accuracy appended (20.00%)\n", - "Epoch 3494: model set back to train mode\n", - "Epoch 3494: model parameters saved\n", - "Epoch 3495 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4792)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4792)\n", - "Epoch 3495: avg_loss appended (1.4792)\n", - "Epoch 3495: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3495: accuracy appended (20.00%)\n", - "Epoch 3495: model set back to train mode\n", - "Epoch 3495: model parameters saved\n", - "Epoch 3496 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4770)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4770)\n", - "Epoch 3496: avg_loss appended (1.4770)\n", - "Epoch 3496: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=80, total=400)\n", - "Final test accuracy: 20.00%\n", - "Epoch 3496: accuracy appended (20.00%)\n", - "Epoch 3496: model set back to train mode\n", - "Epoch 3496: model parameters saved\n", - "Epoch 3497 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4749)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4749)\n", - "Epoch 3497: avg_loss appended (1.4749)\n", - "Epoch 3497: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=88, total=400)\n", - "Final test accuracy: 22.00%\n", - "Epoch 3497: accuracy appended (22.00%)\n", - "Epoch 3497: model set back to train mode\n", - "Epoch 3497: model parameters saved\n", - "Epoch 3498 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4731)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4731)\n", - "Epoch 3498: avg_loss appended (1.4731)\n", - "Epoch 3498: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=88, total=400)\n", - "Final test accuracy: 22.00%\n", - "Epoch 3498: accuracy appended (22.00%)\n", - "Epoch 3498: model set back to train mode\n", - "Epoch 3498: model parameters saved\n", - "Epoch 3499 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4715)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4715)\n", - "Epoch 3499: avg_loss appended (1.4715)\n", - "Epoch 3499: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=100, total=400)\n", - "Final test accuracy: 25.00%\n", - "Epoch 3499: accuracy appended (25.00%)\n", - "Epoch 3499: model set back to train mode\n", - "Epoch 3499: model parameters saved\n", - "Epoch 3500 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4702)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4702)\n", - "Epoch 3500: avg_loss appended (1.4702)\n", - "Epoch 3500: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=104, total=400)\n", - "Final test accuracy: 26.00%\n", - "Epoch 3500: accuracy appended (26.00%)\n", - "Epoch 3500: model set back to train mode\n", - "Epoch 3500: model parameters saved\n", - "Epoch 3500/10000, Loss: 1.4702, Accuracy: 26.00%\n", - "Epoch 3501 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4690)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4690)\n", - "Epoch 3501: avg_loss appended (1.4690)\n", - "Epoch 3501: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=112, total=400)\n", - "Final test accuracy: 28.00%\n", - "Epoch 3501: accuracy appended (28.00%)\n", - "Epoch 3501: model set back to train mode\n", - "Epoch 3501: model parameters saved\n", - "Epoch 3502 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4681)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4681)\n", - "Epoch 3502: avg_loss appended (1.4681)\n", - "Epoch 3502: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=112, total=400)\n", - "Final test accuracy: 28.00%\n", - "Epoch 3502: accuracy appended (28.00%)\n", - "Epoch 3502: model set back to train mode\n", - "Epoch 3502: model parameters saved\n", - "Epoch 3503 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4673)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4673)\n", - "Epoch 3503: avg_loss appended (1.4673)\n", - "Epoch 3503: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=124, total=400)\n", - "Final test accuracy: 31.00%\n", - "Epoch 3503: accuracy appended (31.00%)\n", - "Epoch 3503: model set back to train mode\n", - "Epoch 3503: model parameters saved\n", - "Epoch 3504 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4667)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4667)\n", - "Epoch 3504: avg_loss appended (1.4667)\n", - "Epoch 3504: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=136, total=400)\n", - "Final test accuracy: 34.00%\n", - "Epoch 3504: accuracy appended (34.00%)\n", - "Epoch 3504: model set back to train mode\n", - "Epoch 3504: model parameters saved\n", - "Epoch 3505 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4661)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4661)\n", - "Epoch 3505: avg_loss appended (1.4661)\n", - "Epoch 3505: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=136, total=400)\n", - "Final test accuracy: 34.00%\n", - "Epoch 3505: accuracy appended (34.00%)\n", - "Epoch 3505: model set back to train mode\n", - "Epoch 3505: model parameters saved\n", - "Epoch 3506 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4656)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4656)\n", - "Epoch 3506: avg_loss appended (1.4656)\n", - "Epoch 3506: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=136, total=400)\n", - "Final test accuracy: 34.00%\n", - "Epoch 3506: accuracy appended (34.00%)\n", - "Epoch 3506: model set back to train mode\n", - "Epoch 3506: model parameters saved\n", - "Epoch 3507 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4651)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4651)\n", - "Epoch 3507: avg_loss appended (1.4651)\n", - "Epoch 3507: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=136, total=400)\n", - "Final test accuracy: 34.00%\n", - "Epoch 3507: accuracy appended (34.00%)\n", - "Epoch 3507: model set back to train mode\n", - "Epoch 3507: model parameters saved\n", - "Epoch 3508 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4646)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4646)\n", - "Epoch 3508: avg_loss appended (1.4646)\n", - "Epoch 3508: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=136, total=400)\n", - "Final test accuracy: 34.00%\n", - "Epoch 3508: accuracy appended (34.00%)\n", - "Epoch 3508: model set back to train mode\n", - "Epoch 3508: model parameters saved\n", - "Epoch 3509 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4640)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4640)\n", - "Epoch 3509: avg_loss appended (1.4640)\n", - "Epoch 3509: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=136, total=400)\n", - "Final test accuracy: 34.00%\n", - "Epoch 3509: accuracy appended (34.00%)\n", - "Epoch 3509: model set back to train mode\n", - "Epoch 3509: model parameters saved\n", - "Epoch 3510 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4633)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4633)\n", - "Epoch 3510: avg_loss appended (1.4633)\n", - "Epoch 3510: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=136, total=400)\n", - "Final test accuracy: 34.00%\n", - "Epoch 3510: accuracy appended (34.00%)\n", - "Epoch 3510: model set back to train mode\n", - "Epoch 3510: model parameters saved\n", - "Epoch 3511 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4626)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4626)\n", - "Epoch 3511: avg_loss appended (1.4626)\n", - "Epoch 3511: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=136, total=400)\n", - "Final test accuracy: 34.00%\n", - "Epoch 3511: accuracy appended (34.00%)\n", - "Epoch 3511: model set back to train mode\n", - "Epoch 3511: model parameters saved\n", - "Epoch 3512 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4617)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4617)\n", - "Epoch 3512: avg_loss appended (1.4617)\n", - "Epoch 3512: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=136, total=400)\n", - "Final test accuracy: 34.00%\n", - "Epoch 3512: accuracy appended (34.00%)\n", - "Epoch 3512: model set back to train mode\n", - "Epoch 3512: model parameters saved\n", - "Epoch 3513 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4608)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4608)\n", - "Epoch 3513: avg_loss appended (1.4608)\n", - "Epoch 3513: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=136, total=400)\n", - "Final test accuracy: 34.00%\n", - "Epoch 3513: accuracy appended (34.00%)\n", - "Epoch 3513: model set back to train mode\n", - "Epoch 3513: model parameters saved\n", - "Epoch 3514 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4597)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4597)\n", - "Epoch 3514: avg_loss appended (1.4597)\n", - "Epoch 3514: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=140, total=400)\n", - "Final test accuracy: 35.00%\n", - "Epoch 3514: accuracy appended (35.00%)\n", - "Epoch 3514: model set back to train mode\n", - "Epoch 3514: model parameters saved\n", - "Epoch 3515 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4586)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4586)\n", - "Epoch 3515: avg_loss appended (1.4586)\n", - "Epoch 3515: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=140, total=400)\n", - "Final test accuracy: 35.00%\n", - "Epoch 3515: accuracy appended (35.00%)\n", - "Epoch 3515: model set back to train mode\n", - "Epoch 3515: model parameters saved\n", - "Epoch 3516 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4575)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4575)\n", - "Epoch 3516: avg_loss appended (1.4575)\n", - "Epoch 3516: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=144, total=400)\n", - "Final test accuracy: 36.00%\n", - "Epoch 3516: accuracy appended (36.00%)\n", - "Epoch 3516: model set back to train mode\n", - "Epoch 3516: model parameters saved\n", - "Epoch 3517 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4563)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4563)\n", - "Epoch 3517: avg_loss appended (1.4563)\n", - "Epoch 3517: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=144, total=400)\n", - "Final test accuracy: 36.00%\n", - "Epoch 3517: accuracy appended (36.00%)\n", - "Epoch 3517: model set back to train mode\n", - "Epoch 3517: model parameters saved\n", - "Epoch 3518 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4551)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4551)\n", - "Epoch 3518: avg_loss appended (1.4551)\n", - "Epoch 3518: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=144, total=400)\n", - "Final test accuracy: 36.00%\n", - "Epoch 3518: accuracy appended (36.00%)\n", - "Epoch 3518: model set back to train mode\n", - "Epoch 3518: model parameters saved\n", - "Epoch 3519 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4540)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4540)\n", - "Epoch 3519: avg_loss appended (1.4540)\n", - "Epoch 3519: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=144, total=400)\n", - "Final test accuracy: 36.00%\n", - "Epoch 3519: accuracy appended (36.00%)\n", - "Epoch 3519: model set back to train mode\n", - "Epoch 3519: model parameters saved\n", - "Epoch 3520 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4528)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4528)\n", - "Epoch 3520: avg_loss appended (1.4528)\n", - "Epoch 3520: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=136, total=400)\n", - "Final test accuracy: 34.00%\n", - "Epoch 3520: accuracy appended (34.00%)\n", - "Epoch 3520: model set back to train mode\n", - "Epoch 3520: model parameters saved\n", - "Epoch 3521 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4517)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4517)\n", - "Epoch 3521: avg_loss appended (1.4517)\n", - "Epoch 3521: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=136, total=400)\n", - "Final test accuracy: 34.00%\n", - "Epoch 3521: accuracy appended (34.00%)\n", - "Epoch 3521: model set back to train mode\n", - "Epoch 3521: model parameters saved\n", - "Epoch 3522 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4506)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4506)\n", - "Epoch 3522: avg_loss appended (1.4506)\n", - "Epoch 3522: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=136, total=400)\n", - "Final test accuracy: 34.00%\n", - "Epoch 3522: accuracy appended (34.00%)\n", - "Epoch 3522: model set back to train mode\n", - "Epoch 3522: model parameters saved\n", - "Epoch 3523 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4495)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4495)\n", - "Epoch 3523: avg_loss appended (1.4495)\n", - "Epoch 3523: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=136, total=400)\n", - "Final test accuracy: 34.00%\n", - "Epoch 3523: accuracy appended (34.00%)\n", - "Epoch 3523: model set back to train mode\n", - "Epoch 3523: model parameters saved\n", - "Epoch 3524 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4485)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4485)\n", - "Epoch 3524: avg_loss appended (1.4485)\n", - "Epoch 3524: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=128, total=400)\n", - "Final test accuracy: 32.00%\n", - "Epoch 3524: accuracy appended (32.00%)\n", - "Epoch 3524: model set back to train mode\n", - "Epoch 3524: model parameters saved\n", - "Epoch 3525 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4475)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4475)\n", - "Epoch 3525: avg_loss appended (1.4475)\n", - "Epoch 3525: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=128, total=400)\n", - "Final test accuracy: 32.00%\n", - "Epoch 3525: accuracy appended (32.00%)\n", - "Epoch 3525: model set back to train mode\n", - "Epoch 3525: model parameters saved\n", - "Epoch 3526 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4466)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4466)\n", - "Epoch 3526: avg_loss appended (1.4466)\n", - "Epoch 3526: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=128, total=400)\n", - "Final test accuracy: 32.00%\n", - "Epoch 3526: accuracy appended (32.00%)\n", - "Epoch 3526: model set back to train mode\n", - "Epoch 3526: model parameters saved\n", - "Epoch 3527 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4457)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4457)\n", - "Epoch 3527: avg_loss appended (1.4457)\n", - "Epoch 3527: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=128, total=400)\n", - "Final test accuracy: 32.00%\n", - "Epoch 3527: accuracy appended (32.00%)\n", - "Epoch 3527: model set back to train mode\n", - "Epoch 3527: model parameters saved\n", - "Epoch 3528 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4448)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4448)\n", - "Epoch 3528: avg_loss appended (1.4448)\n", - "Epoch 3528: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=128, total=400)\n", - "Final test accuracy: 32.00%\n", - "Epoch 3528: accuracy appended (32.00%)\n", - "Epoch 3528: model set back to train mode\n", - "Epoch 3528: model parameters saved\n", - "Epoch 3529 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4440)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4440)\n", - "Epoch 3529: avg_loss appended (1.4440)\n", - "Epoch 3529: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=128, total=400)\n", - "Final test accuracy: 32.00%\n", - "Epoch 3529: accuracy appended (32.00%)\n", - "Epoch 3529: model set back to train mode\n", - "Epoch 3529: model parameters saved\n", - "Epoch 3530 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4433)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4433)\n", - "Epoch 3530: avg_loss appended (1.4433)\n", - "Epoch 3530: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=128, total=400)\n", - "Final test accuracy: 32.00%\n", - "Epoch 3530: accuracy appended (32.00%)\n", - "Epoch 3530: model set back to train mode\n", - "Epoch 3530: model parameters saved\n", - "Epoch 3531 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4425)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4425)\n", - "Epoch 3531: avg_loss appended (1.4425)\n", - "Epoch 3531: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=128, total=400)\n", - "Final test accuracy: 32.00%\n", - "Epoch 3531: accuracy appended (32.00%)\n", - "Epoch 3531: model set back to train mode\n", - "Epoch 3531: model parameters saved\n", - "Epoch 3532 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4418)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4418)\n", - "Epoch 3532: avg_loss appended (1.4418)\n", - "Epoch 3532: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=124, total=400)\n", - "Final test accuracy: 31.00%\n", - "Epoch 3532: accuracy appended (31.00%)\n", - "Epoch 3532: model set back to train mode\n", - "Epoch 3532: model parameters saved\n", - "Epoch 3533 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4411)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4411)\n", - "Epoch 3533: avg_loss appended (1.4411)\n", - "Epoch 3533: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=124, total=400)\n", - "Final test accuracy: 31.00%\n", - "Epoch 3533: accuracy appended (31.00%)\n", - "Epoch 3533: model set back to train mode\n", - "Epoch 3533: model parameters saved\n", - "Epoch 3534 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4405)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4405)\n", - "Epoch 3534: avg_loss appended (1.4405)\n", - "Epoch 3534: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=124, total=400)\n", - "Final test accuracy: 31.00%\n", - "Epoch 3534: accuracy appended (31.00%)\n", - "Epoch 3534: model set back to train mode\n", - "Epoch 3534: model parameters saved\n", - "Epoch 3535 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4398)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4398)\n", - "Epoch 3535: avg_loss appended (1.4398)\n", - "Epoch 3535: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=124, total=400)\n", - "Final test accuracy: 31.00%\n", - "Epoch 3535: accuracy appended (31.00%)\n", - "Epoch 3535: model set back to train mode\n", - "Epoch 3535: model parameters saved\n", - "Epoch 3536 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4392)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4392)\n", - "Epoch 3536: avg_loss appended (1.4392)\n", - "Epoch 3536: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=124, total=400)\n", - "Final test accuracy: 31.00%\n", - "Epoch 3536: accuracy appended (31.00%)\n", - "Epoch 3536: model set back to train mode\n", - "Epoch 3536: model parameters saved\n", - "Epoch 3537 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4386)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4386)\n", - "Epoch 3537: avg_loss appended (1.4386)\n", - "Epoch 3537: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=124, total=400)\n", - "Final test accuracy: 31.00%\n", - "Epoch 3537: accuracy appended (31.00%)\n", - "Epoch 3537: model set back to train mode\n", - "Epoch 3537: model parameters saved\n", - "Epoch 3538 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4380)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4380)\n", - "Epoch 3538: avg_loss appended (1.4380)\n", - "Epoch 3538: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=128, total=400)\n", - "Final test accuracy: 32.00%\n", - "Epoch 3538: accuracy appended (32.00%)\n", - "Epoch 3538: model set back to train mode\n", - "Epoch 3538: model parameters saved\n", - "Epoch 3539 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4375)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4375)\n", - "Epoch 3539: avg_loss appended (1.4375)\n", - "Epoch 3539: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=136, total=400)\n", - "Final test accuracy: 34.00%\n", - "Epoch 3539: accuracy appended (34.00%)\n", - "Epoch 3539: model set back to train mode\n", - "Epoch 3539: model parameters saved\n", - "Epoch 3540 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4369)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4369)\n", - "Epoch 3540: avg_loss appended (1.4369)\n", - "Epoch 3540: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=140, total=400)\n", - "Final test accuracy: 35.00%\n", - "Epoch 3540: accuracy appended (35.00%)\n", - "Epoch 3540: model set back to train mode\n", - "Epoch 3540: model parameters saved\n", - "Epoch 3541 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4363)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4363)\n", - "Epoch 3541: avg_loss appended (1.4363)\n", - "Epoch 3541: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=140, total=400)\n", - "Final test accuracy: 35.00%\n", - "Epoch 3541: accuracy appended (35.00%)\n", - "Epoch 3541: model set back to train mode\n", - "Epoch 3541: model parameters saved\n", - "Epoch 3542 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4358)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4358)\n", - "Epoch 3542: avg_loss appended (1.4358)\n", - "Epoch 3542: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=144, total=400)\n", - "Final test accuracy: 36.00%\n", - "Epoch 3542: accuracy appended (36.00%)\n", - "Epoch 3542: model set back to train mode\n", - "Epoch 3542: model parameters saved\n", - "Epoch 3543 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4352)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4352)\n", - "Epoch 3543: avg_loss appended (1.4352)\n", - "Epoch 3543: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=144, total=400)\n", - "Final test accuracy: 36.00%\n", - "Epoch 3543: accuracy appended (36.00%)\n", - "Epoch 3543: model set back to train mode\n", - "Epoch 3543: model parameters saved\n", - "Epoch 3544 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4347)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4347)\n", - "Epoch 3544: avg_loss appended (1.4347)\n", - "Epoch 3544: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=144, total=400)\n", - "Final test accuracy: 36.00%\n", - "Epoch 3544: accuracy appended (36.00%)\n", - "Epoch 3544: model set back to train mode\n", - "Epoch 3544: model parameters saved\n", - "Epoch 3545 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4341)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4341)\n", - "Epoch 3545: avg_loss appended (1.4341)\n", - "Epoch 3545: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=144, total=400)\n", - "Final test accuracy: 36.00%\n", - "Epoch 3545: accuracy appended (36.00%)\n", - "Epoch 3545: model set back to train mode\n", - "Epoch 3545: model parameters saved\n", - "Epoch 3546 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4336)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4336)\n", - "Epoch 3546: avg_loss appended (1.4336)\n", - "Epoch 3546: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=144, total=400)\n", - "Final test accuracy: 36.00%\n", - "Epoch 3546: accuracy appended (36.00%)\n", - "Epoch 3546: model set back to train mode\n", - "Epoch 3546: model parameters saved\n", - "Epoch 3547 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4331)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4331)\n", - "Epoch 3547: avg_loss appended (1.4331)\n", - "Epoch 3547: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=144, total=400)\n", - "Final test accuracy: 36.00%\n", - "Epoch 3547: accuracy appended (36.00%)\n", - "Epoch 3547: model set back to train mode\n", - "Epoch 3547: model parameters saved\n", - "Epoch 3548 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4325)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4325)\n", - "Epoch 3548: avg_loss appended (1.4325)\n", - "Epoch 3548: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=144, total=400)\n", - "Final test accuracy: 36.00%\n", - "Epoch 3548: accuracy appended (36.00%)\n", - "Epoch 3548: model set back to train mode\n", - "Epoch 3548: model parameters saved\n", - "Epoch 3549 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4320)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4320)\n", - "Epoch 3549: avg_loss appended (1.4320)\n", - "Epoch 3549: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=144, total=400)\n", - "Final test accuracy: 36.00%\n", - "Epoch 3549: accuracy appended (36.00%)\n", - "Epoch 3549: model set back to train mode\n", - "Epoch 3549: model parameters saved\n", - "Epoch 3550 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4315)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4315)\n", - "Epoch 3550: avg_loss appended (1.4315)\n", - "Epoch 3550: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=140, total=400)\n", - "Final test accuracy: 35.00%\n", - "Epoch 3550: accuracy appended (35.00%)\n", - "Epoch 3550: model set back to train mode\n", - "Epoch 3550: model parameters saved\n", - "Epoch 3551 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4310)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4310)\n", - "Epoch 3551: avg_loss appended (1.4310)\n", - "Epoch 3551: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=136, total=400)\n", - "Final test accuracy: 34.00%\n", - "Epoch 3551: accuracy appended (34.00%)\n", - "Epoch 3551: model set back to train mode\n", - "Epoch 3551: model parameters saved\n", - "Epoch 3552 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4305)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4305)\n", - "Epoch 3552: avg_loss appended (1.4305)\n", - "Epoch 3552: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=136, total=400)\n", - "Final test accuracy: 34.00%\n", - "Epoch 3552: accuracy appended (34.00%)\n", - "Epoch 3552: model set back to train mode\n", - "Epoch 3552: model parameters saved\n", - "Epoch 3553 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4300)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4300)\n", - "Epoch 3553: avg_loss appended (1.4300)\n", - "Epoch 3553: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=136, total=400)\n", - "Final test accuracy: 34.00%\n", - "Epoch 3553: accuracy appended (34.00%)\n", - "Epoch 3553: model set back to train mode\n", - "Epoch 3553: model parameters saved\n", - "Epoch 3554 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4295)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4295)\n", - "Epoch 3554: avg_loss appended (1.4295)\n", - "Epoch 3554: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=136, total=400)\n", - "Final test accuracy: 34.00%\n", - "Epoch 3554: accuracy appended (34.00%)\n", - "Epoch 3554: model set back to train mode\n", - "Epoch 3554: model parameters saved\n", - "Epoch 3555 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4290)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4290)\n", - "Epoch 3555: avg_loss appended (1.4290)\n", - "Epoch 3555: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=136, total=400)\n", - "Final test accuracy: 34.00%\n", - "Epoch 3555: accuracy appended (34.00%)\n", - "Epoch 3555: model set back to train mode\n", - "Epoch 3555: model parameters saved\n", - "Epoch 3556 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4285)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4285)\n", - "Epoch 3556: avg_loss appended (1.4285)\n", - "Epoch 3556: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=136, total=400)\n", - "Final test accuracy: 34.00%\n", - "Epoch 3556: accuracy appended (34.00%)\n", - "Epoch 3556: model set back to train mode\n", - "Epoch 3556: model parameters saved\n", - "Epoch 3557 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4280)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4280)\n", - "Epoch 3557: avg_loss appended (1.4280)\n", - "Epoch 3557: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=136, total=400)\n", - "Final test accuracy: 34.00%\n", - "Epoch 3557: accuracy appended (34.00%)\n", - "Epoch 3557: model set back to train mode\n", - "Epoch 3557: model parameters saved\n", - "Epoch 3558 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4275)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4275)\n", - "Epoch 3558: avg_loss appended (1.4275)\n", - "Epoch 3558: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=136, total=400)\n", - "Final test accuracy: 34.00%\n", - "Epoch 3558: accuracy appended (34.00%)\n", - "Epoch 3558: model set back to train mode\n", - "Epoch 3558: model parameters saved\n", - "Epoch 3559 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4270)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4270)\n", - "Epoch 3559: avg_loss appended (1.4270)\n", - "Epoch 3559: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=136, total=400)\n", - "Final test accuracy: 34.00%\n", - "Epoch 3559: accuracy appended (34.00%)\n", - "Epoch 3559: model set back to train mode\n", - "Epoch 3559: model parameters saved\n", - "Epoch 3560 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4265)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4265)\n", - "Epoch 3560: avg_loss appended (1.4265)\n", - "Epoch 3560: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=136, total=400)\n", - "Final test accuracy: 34.00%\n", - "Epoch 3560: accuracy appended (34.00%)\n", - "Epoch 3560: model set back to train mode\n", - "Epoch 3560: model parameters saved\n", - "Epoch 3561 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4259)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4259)\n", - "Epoch 3561: avg_loss appended (1.4259)\n", - "Epoch 3561: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=136, total=400)\n", - "Final test accuracy: 34.00%\n", - "Epoch 3561: accuracy appended (34.00%)\n", - "Epoch 3561: model set back to train mode\n", - "Epoch 3561: model parameters saved\n", - "Epoch 3562 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4253)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4253)\n", - "Epoch 3562: avg_loss appended (1.4253)\n", - "Epoch 3562: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=136, total=400)\n", - "Final test accuracy: 34.00%\n", - "Epoch 3562: accuracy appended (34.00%)\n", - "Epoch 3562: model set back to train mode\n", - "Epoch 3562: model parameters saved\n", - "Epoch 3563 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4247)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4247)\n", - "Epoch 3563: avg_loss appended (1.4247)\n", - "Epoch 3563: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=136, total=400)\n", - "Final test accuracy: 34.00%\n", - "Epoch 3563: accuracy appended (34.00%)\n", - "Epoch 3563: model set back to train mode\n", - "Epoch 3563: model parameters saved\n", - "Epoch 3564 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4241)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4241)\n", - "Epoch 3564: avg_loss appended (1.4241)\n", - "Epoch 3564: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=136, total=400)\n", - "Final test accuracy: 34.00%\n", - "Epoch 3564: accuracy appended (34.00%)\n", - "Epoch 3564: model set back to train mode\n", - "Epoch 3564: model parameters saved\n", - "Epoch 3565 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4234)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4234)\n", - "Epoch 3565: avg_loss appended (1.4234)\n", - "Epoch 3565: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=136, total=400)\n", - "Final test accuracy: 34.00%\n", - "Epoch 3565: accuracy appended (34.00%)\n", - "Epoch 3565: model set back to train mode\n", - "Epoch 3565: model parameters saved\n", - "Epoch 3566 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4227)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4227)\n", - "Epoch 3566: avg_loss appended (1.4227)\n", - "Epoch 3566: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=136, total=400)\n", - "Final test accuracy: 34.00%\n", - "Epoch 3566: accuracy appended (34.00%)\n", - "Epoch 3566: model set back to train mode\n", - "Epoch 3566: model parameters saved\n", - "Epoch 3567 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4220)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4220)\n", - "Epoch 3567: avg_loss appended (1.4220)\n", - "Epoch 3567: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=136, total=400)\n", - "Final test accuracy: 34.00%\n", - "Epoch 3567: accuracy appended (34.00%)\n", - "Epoch 3567: model set back to train mode\n", - "Epoch 3567: model parameters saved\n", - "Epoch 3568 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4212)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4212)\n", - "Epoch 3568: avg_loss appended (1.4212)\n", - "Epoch 3568: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=136, total=400)\n", - "Final test accuracy: 34.00%\n", - "Epoch 3568: accuracy appended (34.00%)\n", - "Epoch 3568: model set back to train mode\n", - "Epoch 3568: model parameters saved\n", - "Epoch 3569 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4204)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4204)\n", - "Epoch 3569: avg_loss appended (1.4204)\n", - "Epoch 3569: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=136, total=400)\n", - "Final test accuracy: 34.00%\n", - "Epoch 3569: accuracy appended (34.00%)\n", - "Epoch 3569: model set back to train mode\n", - "Epoch 3569: model parameters saved\n", - "Epoch 3570 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4196)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4196)\n", - "Epoch 3570: avg_loss appended (1.4196)\n", - "Epoch 3570: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=136, total=400)\n", - "Final test accuracy: 34.00%\n", - "Epoch 3570: accuracy appended (34.00%)\n", - "Epoch 3570: model set back to train mode\n", - "Epoch 3570: model parameters saved\n", - "Epoch 3571 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4187)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4187)\n", - "Epoch 3571: avg_loss appended (1.4187)\n", - "Epoch 3571: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=136, total=400)\n", - "Final test accuracy: 34.00%\n", - "Epoch 3571: accuracy appended (34.00%)\n", - "Epoch 3571: model set back to train mode\n", - "Epoch 3571: model parameters saved\n", - "Epoch 3572 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4179)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4179)\n", - "Epoch 3572: avg_loss appended (1.4179)\n", - "Epoch 3572: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=136, total=400)\n", - "Final test accuracy: 34.00%\n", - "Epoch 3572: accuracy appended (34.00%)\n", - "Epoch 3572: model set back to train mode\n", - "Epoch 3572: model parameters saved\n", - "Epoch 3573 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4169)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4169)\n", - "Epoch 3573: avg_loss appended (1.4169)\n", - "Epoch 3573: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=136, total=400)\n", - "Final test accuracy: 34.00%\n", - "Epoch 3573: accuracy appended (34.00%)\n", - "Epoch 3573: model set back to train mode\n", - "Epoch 3573: model parameters saved\n", - "Epoch 3574 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4160)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4160)\n", - "Epoch 3574: avg_loss appended (1.4160)\n", - "Epoch 3574: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=136, total=400)\n", - "Final test accuracy: 34.00%\n", - "Epoch 3574: accuracy appended (34.00%)\n", - "Epoch 3574: model set back to train mode\n", - "Epoch 3574: model parameters saved\n", - "Epoch 3575 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4150)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4150)\n", - "Epoch 3575: avg_loss appended (1.4150)\n", - "Epoch 3575: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=136, total=400)\n", - "Final test accuracy: 34.00%\n", - "Epoch 3575: accuracy appended (34.00%)\n", - "Epoch 3575: model set back to train mode\n", - "Epoch 3575: model parameters saved\n", - "Epoch 3576 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4140)\n", - "Epoch 3576: avg_loss appended (1.4140)\n", - "Epoch 3576: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=136, total=400)\n", - "Final test accuracy: 34.00%\n", - "Epoch 3576: accuracy appended (34.00%)\n", - "Epoch 3576: model set back to train mode\n", - "Epoch 3576: model parameters saved\n", - "Epoch 3577 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4130)\n", - "Epoch 3577: avg_loss appended (1.4130)\n", - "Epoch 3577: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=136, total=400)\n", - "Final test accuracy: 34.00%\n", - "Epoch 3577: accuracy appended (34.00%)\n", - "Epoch 3577: model set back to train mode\n", - "Epoch 3577: model parameters saved\n", - "Epoch 3578 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4119)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4119)\n", - "Epoch 3578: avg_loss appended (1.4119)\n", - "Epoch 3578: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=144, total=400)\n", - "Final test accuracy: 36.00%\n", - "Epoch 3578: accuracy appended (36.00%)\n", - "Epoch 3578: model set back to train mode\n", - "Epoch 3578: model parameters saved\n", - "Epoch 3579 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4108)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4108)\n", - "Epoch 3579: avg_loss appended (1.4108)\n", - "Epoch 3579: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=152, total=400)\n", - "Final test accuracy: 38.00%\n", - "Epoch 3579: accuracy appended (38.00%)\n", - "Epoch 3579: model set back to train mode\n", - "Epoch 3579: model parameters saved\n", - "Epoch 3580 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4097)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4097)\n", - "Epoch 3580: avg_loss appended (1.4097)\n", - "Epoch 3580: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=152, total=400)\n", - "Final test accuracy: 38.00%\n", - "Epoch 3580: accuracy appended (38.00%)\n", - "Epoch 3580: model set back to train mode\n", - "Epoch 3580: model parameters saved\n", - "Epoch 3581 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4085)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4085)\n", - "Epoch 3581: avg_loss appended (1.4085)\n", - "Epoch 3581: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=152, total=400)\n", - "Final test accuracy: 38.00%\n", - "Epoch 3581: accuracy appended (38.00%)\n", - "Epoch 3581: model set back to train mode\n", - "Epoch 3581: model parameters saved\n", - "Epoch 3582 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4074)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4074)\n", - "Epoch 3582: avg_loss appended (1.4074)\n", - "Epoch 3582: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=152, total=400)\n", - "Final test accuracy: 38.00%\n", - "Epoch 3582: accuracy appended (38.00%)\n", - "Epoch 3582: model set back to train mode\n", - "Epoch 3582: model parameters saved\n", - "Epoch 3583 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4062)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4062)\n", - "Epoch 3583: avg_loss appended (1.4062)\n", - "Epoch 3583: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=152, total=400)\n", - "Final test accuracy: 38.00%\n", - "Epoch 3583: accuracy appended (38.00%)\n", - "Epoch 3583: model set back to train mode\n", - "Epoch 3583: model parameters saved\n", - "Epoch 3584 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4049)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4049)\n", - "Epoch 3584: avg_loss appended (1.4049)\n", - "Epoch 3584: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=160, total=400)\n", - "Final test accuracy: 40.00%\n", - "Epoch 3584: accuracy appended (40.00%)\n", - "Epoch 3584: model set back to train mode\n", - "Epoch 3584: model parameters saved\n", - "Epoch 3585 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4037)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4037)\n", - "Epoch 3585: avg_loss appended (1.4037)\n", - "Epoch 3585: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=160, total=400)\n", - "Final test accuracy: 40.00%\n", - "Epoch 3585: accuracy appended (40.00%)\n", - "Epoch 3585: model set back to train mode\n", - "Epoch 3585: model parameters saved\n", - "Epoch 3586 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4024)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4024)\n", - "Epoch 3586: avg_loss appended (1.4024)\n", - "Epoch 3586: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=160, total=400)\n", - "Final test accuracy: 40.00%\n", - "Epoch 3586: accuracy appended (40.00%)\n", - "Epoch 3586: model set back to train mode\n", - "Epoch 3586: model parameters saved\n", - "Epoch 3587 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.4012)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.4012)\n", - "Epoch 3587: avg_loss appended (1.4012)\n", - "Epoch 3587: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=160, total=400)\n", - "Final test accuracy: 40.00%\n", - "Epoch 3587: accuracy appended (40.00%)\n", - "Epoch 3587: model set back to train mode\n", - "Epoch 3587: model parameters saved\n", - "Epoch 3588 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3999)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3999)\n", - "Epoch 3588: avg_loss appended (1.3999)\n", - "Epoch 3588: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=160, total=400)\n", - "Final test accuracy: 40.00%\n", - "Epoch 3588: accuracy appended (40.00%)\n", - "Epoch 3588: model set back to train mode\n", - "Epoch 3588: model parameters saved\n", - "Epoch 3589 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3986)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3986)\n", - "Epoch 3589: avg_loss appended (1.3986)\n", - "Epoch 3589: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=160, total=400)\n", - "Final test accuracy: 40.00%\n", - "Epoch 3589: accuracy appended (40.00%)\n", - "Epoch 3589: model set back to train mode\n", - "Epoch 3589: model parameters saved\n", - "Epoch 3590 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3973)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3973)\n", - "Epoch 3590: avg_loss appended (1.3973)\n", - "Epoch 3590: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=160, total=400)\n", - "Final test accuracy: 40.00%\n", - "Epoch 3590: accuracy appended (40.00%)\n", - "Epoch 3590: model set back to train mode\n", - "Epoch 3590: model parameters saved\n", - "Epoch 3591 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3960)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3960)\n", - "Epoch 3591: avg_loss appended (1.3960)\n", - "Epoch 3591: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=160, total=400)\n", - "Final test accuracy: 40.00%\n", - "Epoch 3591: accuracy appended (40.00%)\n", - "Epoch 3591: model set back to train mode\n", - "Epoch 3591: model parameters saved\n", - "Epoch 3592 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3948)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3948)\n", - "Epoch 3592: avg_loss appended (1.3948)\n", - "Epoch 3592: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=160, total=400)\n", - "Final test accuracy: 40.00%\n", - "Epoch 3592: accuracy appended (40.00%)\n", - "Epoch 3592: model set back to train mode\n", - "Epoch 3592: model parameters saved\n", - "Epoch 3593 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3935)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3935)\n", - "Epoch 3593: avg_loss appended (1.3935)\n", - "Epoch 3593: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=160, total=400)\n", - "Final test accuracy: 40.00%\n", - "Epoch 3593: accuracy appended (40.00%)\n", - "Epoch 3593: model set back to train mode\n", - "Epoch 3593: model parameters saved\n", - "Epoch 3594 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3922)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3922)\n", - "Epoch 3594: avg_loss appended (1.3922)\n", - "Epoch 3594: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=160, total=400)\n", - "Final test accuracy: 40.00%\n", - "Epoch 3594: accuracy appended (40.00%)\n", - "Epoch 3594: model set back to train mode\n", - "Epoch 3594: model parameters saved\n", - "Epoch 3595 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3909)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3909)\n", - "Epoch 3595: avg_loss appended (1.3909)\n", - "Epoch 3595: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=160, total=400)\n", - "Final test accuracy: 40.00%\n", - "Epoch 3595: accuracy appended (40.00%)\n", - "Epoch 3595: model set back to train mode\n", - "Epoch 3595: model parameters saved\n", - "Epoch 3596 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3897)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3897)\n", - "Epoch 3596: avg_loss appended (1.3897)\n", - "Epoch 3596: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=168, total=400)\n", - "Final test accuracy: 42.00%\n", - "Epoch 3596: accuracy appended (42.00%)\n", - "Epoch 3596: model set back to train mode\n", - "Epoch 3596: model parameters saved\n", - "Epoch 3597 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3885)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3885)\n", - "Epoch 3597: avg_loss appended (1.3885)\n", - "Epoch 3597: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=168, total=400)\n", - "Final test accuracy: 42.00%\n", - "Epoch 3597: accuracy appended (42.00%)\n", - "Epoch 3597: model set back to train mode\n", - "Epoch 3597: model parameters saved\n", - "Epoch 3598 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3873)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3873)\n", - "Epoch 3598: avg_loss appended (1.3873)\n", - "Epoch 3598: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=176, total=400)\n", - "Final test accuracy: 44.00%\n", - "Epoch 3598: accuracy appended (44.00%)\n", - "Epoch 3598: model set back to train mode\n", - "Epoch 3598: model parameters saved\n", - "Epoch 3599 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3861)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3861)\n", - "Epoch 3599: avg_loss appended (1.3861)\n", - "Epoch 3599: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=176, total=400)\n", - "Final test accuracy: 44.00%\n", - "Epoch 3599: accuracy appended (44.00%)\n", - "Epoch 3599: model set back to train mode\n", - "Epoch 3599: model parameters saved\n", - "Epoch 3600 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3849)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3849)\n", - "Epoch 3600: avg_loss appended (1.3849)\n", - "Epoch 3600: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=176, total=400)\n", - "Final test accuracy: 44.00%\n", - "Epoch 3600: accuracy appended (44.00%)\n", - "Epoch 3600: model set back to train mode\n", - "Epoch 3600: model parameters saved\n", - "Epoch 3600/10000, Loss: 1.3849, Accuracy: 44.00%\n", - "Epoch 3601 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3837)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3837)\n", - "Epoch 3601: avg_loss appended (1.3837)\n", - "Epoch 3601: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=176, total=400)\n", - "Final test accuracy: 44.00%\n", - "Epoch 3601: accuracy appended (44.00%)\n", - "Epoch 3601: model set back to train mode\n", - "Epoch 3601: model parameters saved\n", - "Epoch 3602 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3826)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3826)\n", - "Epoch 3602: avg_loss appended (1.3826)\n", - "Epoch 3602: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=176, total=400)\n", - "Final test accuracy: 44.00%\n", - "Epoch 3602: accuracy appended (44.00%)\n", - "Epoch 3602: model set back to train mode\n", - "Epoch 3602: model parameters saved\n", - "Epoch 3603 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3815)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3815)\n", - "Epoch 3603: avg_loss appended (1.3815)\n", - "Epoch 3603: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=184, total=400)\n", - "Final test accuracy: 46.00%\n", - "Epoch 3603: accuracy appended (46.00%)\n", - "Epoch 3603: model set back to train mode\n", - "Epoch 3603: model parameters saved\n", - "Epoch 3604 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3804)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3804)\n", - "Epoch 3604: avg_loss appended (1.3804)\n", - "Epoch 3604: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=184, total=400)\n", - "Final test accuracy: 46.00%\n", - "Epoch 3604: accuracy appended (46.00%)\n", - "Epoch 3604: model set back to train mode\n", - "Epoch 3604: model parameters saved\n", - "Epoch 3605 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3793)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3793)\n", - "Epoch 3605: avg_loss appended (1.3793)\n", - "Epoch 3605: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=184, total=400)\n", - "Final test accuracy: 46.00%\n", - "Epoch 3605: accuracy appended (46.00%)\n", - "Epoch 3605: model set back to train mode\n", - "Epoch 3605: model parameters saved\n", - "Epoch 3606 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3782)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3782)\n", - "Epoch 3606: avg_loss appended (1.3782)\n", - "Epoch 3606: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=184, total=400)\n", - "Final test accuracy: 46.00%\n", - "Epoch 3606: accuracy appended (46.00%)\n", - "Epoch 3606: model set back to train mode\n", - "Epoch 3606: model parameters saved\n", - "Epoch 3607 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3771)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3771)\n", - "Epoch 3607: avg_loss appended (1.3771)\n", - "Epoch 3607: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=184, total=400)\n", - "Final test accuracy: 46.00%\n", - "Epoch 3607: accuracy appended (46.00%)\n", - "Epoch 3607: model set back to train mode\n", - "Epoch 3607: model parameters saved\n", - "Epoch 3608 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3761)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3761)\n", - "Epoch 3608: avg_loss appended (1.3761)\n", - "Epoch 3608: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=184, total=400)\n", - "Final test accuracy: 46.00%\n", - "Epoch 3608: accuracy appended (46.00%)\n", - "Epoch 3608: model set back to train mode\n", - "Epoch 3608: model parameters saved\n", - "Epoch 3609 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3750)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3750)\n", - "Epoch 3609: avg_loss appended (1.3750)\n", - "Epoch 3609: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=184, total=400)\n", - "Final test accuracy: 46.00%\n", - "Epoch 3609: accuracy appended (46.00%)\n", - "Epoch 3609: model set back to train mode\n", - "Epoch 3609: model parameters saved\n", - "Epoch 3610 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3740)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3740)\n", - "Epoch 3610: avg_loss appended (1.3740)\n", - "Epoch 3610: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=184, total=400)\n", - "Final test accuracy: 46.00%\n", - "Epoch 3610: accuracy appended (46.00%)\n", - "Epoch 3610: model set back to train mode\n", - "Epoch 3610: model parameters saved\n", - "Epoch 3611 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3729)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3729)\n", - "Epoch 3611: avg_loss appended (1.3729)\n", - "Epoch 3611: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=184, total=400)\n", - "Final test accuracy: 46.00%\n", - "Epoch 3611: accuracy appended (46.00%)\n", - "Epoch 3611: model set back to train mode\n", - "Epoch 3611: model parameters saved\n", - "Epoch 3612 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3719)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3719)\n", - "Epoch 3612: avg_loss appended (1.3719)\n", - "Epoch 3612: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=184, total=400)\n", - "Final test accuracy: 46.00%\n", - "Epoch 3612: accuracy appended (46.00%)\n", - "Epoch 3612: model set back to train mode\n", - "Epoch 3612: model parameters saved\n", - "Epoch 3613 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3708)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3708)\n", - "Epoch 3613: avg_loss appended (1.3708)\n", - "Epoch 3613: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=184, total=400)\n", - "Final test accuracy: 46.00%\n", - "Epoch 3613: accuracy appended (46.00%)\n", - "Epoch 3613: model set back to train mode\n", - "Epoch 3613: model parameters saved\n", - "Epoch 3614 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3697)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3697)\n", - "Epoch 3614: avg_loss appended (1.3697)\n", - "Epoch 3614: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=184, total=400)\n", - "Final test accuracy: 46.00%\n", - "Epoch 3614: accuracy appended (46.00%)\n", - "Epoch 3614: model set back to train mode\n", - "Epoch 3614: model parameters saved\n", - "Epoch 3615 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3686)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3686)\n", - "Epoch 3615: avg_loss appended (1.3686)\n", - "Epoch 3615: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=184, total=400)\n", - "Final test accuracy: 46.00%\n", - "Epoch 3615: accuracy appended (46.00%)\n", - "Epoch 3615: model set back to train mode\n", - "Epoch 3615: model parameters saved\n", - "Epoch 3616 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3675)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3675)\n", - "Epoch 3616: avg_loss appended (1.3675)\n", - "Epoch 3616: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=192, total=400)\n", - "Final test accuracy: 48.00%\n", - "Epoch 3616: accuracy appended (48.00%)\n", - "Epoch 3616: model set back to train mode\n", - "Epoch 3616: model parameters saved\n", - "Epoch 3617 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3664)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3664)\n", - "Epoch 3617: avg_loss appended (1.3664)\n", - "Epoch 3617: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=192, total=400)\n", - "Final test accuracy: 48.00%\n", - "Epoch 3617: accuracy appended (48.00%)\n", - "Epoch 3617: model set back to train mode\n", - "Epoch 3617: model parameters saved\n", - "Epoch 3618 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3652)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3652)\n", - "Epoch 3618: avg_loss appended (1.3652)\n", - "Epoch 3618: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=192, total=400)\n", - "Final test accuracy: 48.00%\n", - "Epoch 3618: accuracy appended (48.00%)\n", - "Epoch 3618: model set back to train mode\n", - "Epoch 3618: model parameters saved\n", - "Epoch 3619 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3640)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3640)\n", - "Epoch 3619: avg_loss appended (1.3640)\n", - "Epoch 3619: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=192, total=400)\n", - "Final test accuracy: 48.00%\n", - "Epoch 3619: accuracy appended (48.00%)\n", - "Epoch 3619: model set back to train mode\n", - "Epoch 3619: model parameters saved\n", - "Epoch 3620 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3628)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3628)\n", - "Epoch 3620: avg_loss appended (1.3628)\n", - "Epoch 3620: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=192, total=400)\n", - "Final test accuracy: 48.00%\n", - "Epoch 3620: accuracy appended (48.00%)\n", - "Epoch 3620: model set back to train mode\n", - "Epoch 3620: model parameters saved\n", - "Epoch 3621 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3616)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3616)\n", - "Epoch 3621: avg_loss appended (1.3616)\n", - "Epoch 3621: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=192, total=400)\n", - "Final test accuracy: 48.00%\n", - "Epoch 3621: accuracy appended (48.00%)\n", - "Epoch 3621: model set back to train mode\n", - "Epoch 3621: model parameters saved\n", - "Epoch 3622 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3603)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3603)\n", - "Epoch 3622: avg_loss appended (1.3603)\n", - "Epoch 3622: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=192, total=400)\n", - "Final test accuracy: 48.00%\n", - "Epoch 3622: accuracy appended (48.00%)\n", - "Epoch 3622: model set back to train mode\n", - "Epoch 3622: model parameters saved\n", - "Epoch 3623 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3590)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3590)\n", - "Epoch 3623: avg_loss appended (1.3590)\n", - "Epoch 3623: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=192, total=400)\n", - "Final test accuracy: 48.00%\n", - "Epoch 3623: accuracy appended (48.00%)\n", - "Epoch 3623: model set back to train mode\n", - "Epoch 3623: model parameters saved\n", - "Epoch 3624 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3577)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3577)\n", - "Epoch 3624: avg_loss appended (1.3577)\n", - "Epoch 3624: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=192, total=400)\n", - "Final test accuracy: 48.00%\n", - "Epoch 3624: accuracy appended (48.00%)\n", - "Epoch 3624: model set back to train mode\n", - "Epoch 3624: model parameters saved\n", - "Epoch 3625 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3564)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3564)\n", - "Epoch 3625: avg_loss appended (1.3564)\n", - "Epoch 3625: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=192, total=400)\n", - "Final test accuracy: 48.00%\n", - "Epoch 3625: accuracy appended (48.00%)\n", - "Epoch 3625: model set back to train mode\n", - "Epoch 3625: model parameters saved\n", - "Epoch 3626 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3550)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3550)\n", - "Epoch 3626: avg_loss appended (1.3550)\n", - "Epoch 3626: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=192, total=400)\n", - "Final test accuracy: 48.00%\n", - "Epoch 3626: accuracy appended (48.00%)\n", - "Epoch 3626: model set back to train mode\n", - "Epoch 3626: model parameters saved\n", - "Epoch 3627 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3536)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3536)\n", - "Epoch 3627: avg_loss appended (1.3536)\n", - "Epoch 3627: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=192, total=400)\n", - "Final test accuracy: 48.00%\n", - "Epoch 3627: accuracy appended (48.00%)\n", - "Epoch 3627: model set back to train mode\n", - "Epoch 3627: model parameters saved\n", - "Epoch 3628 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3522)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3522)\n", - "Epoch 3628: avg_loss appended (1.3522)\n", - "Epoch 3628: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=192, total=400)\n", - "Final test accuracy: 48.00%\n", - "Epoch 3628: accuracy appended (48.00%)\n", - "Epoch 3628: model set back to train mode\n", - "Epoch 3628: model parameters saved\n", - "Epoch 3629 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3507)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3507)\n", - "Epoch 3629: avg_loss appended (1.3507)\n", - "Epoch 3629: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=192, total=400)\n", - "Final test accuracy: 48.00%\n", - "Epoch 3629: accuracy appended (48.00%)\n", - "Epoch 3629: model set back to train mode\n", - "Epoch 3629: model parameters saved\n", - "Epoch 3630 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3493)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3493)\n", - "Epoch 3630: avg_loss appended (1.3493)\n", - "Epoch 3630: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=192, total=400)\n", - "Final test accuracy: 48.00%\n", - "Epoch 3630: accuracy appended (48.00%)\n", - "Epoch 3630: model set back to train mode\n", - "Epoch 3630: model parameters saved\n", - "Epoch 3631 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3478)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3478)\n", - "Epoch 3631: avg_loss appended (1.3478)\n", - "Epoch 3631: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=192, total=400)\n", - "Final test accuracy: 48.00%\n", - "Epoch 3631: accuracy appended (48.00%)\n", - "Epoch 3631: model set back to train mode\n", - "Epoch 3631: model parameters saved\n", - "Epoch 3632 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3464)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3464)\n", - "Epoch 3632: avg_loss appended (1.3464)\n", - "Epoch 3632: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=192, total=400)\n", - "Final test accuracy: 48.00%\n", - "Epoch 3632: accuracy appended (48.00%)\n", - "Epoch 3632: model set back to train mode\n", - "Epoch 3632: model parameters saved\n", - "Epoch 3633 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3449)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3449)\n", - "Epoch 3633: avg_loss appended (1.3449)\n", - "Epoch 3633: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=192, total=400)\n", - "Final test accuracy: 48.00%\n", - "Epoch 3633: accuracy appended (48.00%)\n", - "Epoch 3633: model set back to train mode\n", - "Epoch 3633: model parameters saved\n", - "Epoch 3634 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3435)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3435)\n", - "Epoch 3634: avg_loss appended (1.3435)\n", - "Epoch 3634: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=192, total=400)\n", - "Final test accuracy: 48.00%\n", - "Epoch 3634: accuracy appended (48.00%)\n", - "Epoch 3634: model set back to train mode\n", - "Epoch 3634: model parameters saved\n", - "Epoch 3635 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3420)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3420)\n", - "Epoch 3635: avg_loss appended (1.3420)\n", - "Epoch 3635: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=192, total=400)\n", - "Final test accuracy: 48.00%\n", - "Epoch 3635: accuracy appended (48.00%)\n", - "Epoch 3635: model set back to train mode\n", - "Epoch 3635: model parameters saved\n", - "Epoch 3636 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3406)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3406)\n", - "Epoch 3636: avg_loss appended (1.3406)\n", - "Epoch 3636: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=200, total=400)\n", - "Final test accuracy: 50.00%\n", - "Epoch 3636: accuracy appended (50.00%)\n", - "Epoch 3636: model set back to train mode\n", - "Epoch 3636: model parameters saved\n", - "Epoch 3637 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3392)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3392)\n", - "Epoch 3637: avg_loss appended (1.3392)\n", - "Epoch 3637: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=200, total=400)\n", - "Final test accuracy: 50.00%\n", - "Epoch 3637: accuracy appended (50.00%)\n", - "Epoch 3637: model set back to train mode\n", - "Epoch 3637: model parameters saved\n", - "Epoch 3638 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3379)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3379)\n", - "Epoch 3638: avg_loss appended (1.3379)\n", - "Epoch 3638: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3638: accuracy appended (52.00%)\n", - "Epoch 3638: model set back to train mode\n", - "Epoch 3638: model parameters saved\n", - "Epoch 3639 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3365)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3365)\n", - "Epoch 3639: avg_loss appended (1.3365)\n", - "Epoch 3639: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3639: accuracy appended (52.00%)\n", - "Epoch 3639: model set back to train mode\n", - "Epoch 3639: model parameters saved\n", - "Epoch 3640 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3353)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3353)\n", - "Epoch 3640: avg_loss appended (1.3353)\n", - "Epoch 3640: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3640: accuracy appended (52.00%)\n", - "Epoch 3640: model set back to train mode\n", - "Epoch 3640: model parameters saved\n", - "Epoch 3641 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3341)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3341)\n", - "Epoch 3641: avg_loss appended (1.3341)\n", - "Epoch 3641: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3641: accuracy appended (52.00%)\n", - "Epoch 3641: model set back to train mode\n", - "Epoch 3641: model parameters saved\n", - "Epoch 3642 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3329)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3329)\n", - "Epoch 3642: avg_loss appended (1.3329)\n", - "Epoch 3642: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3642: accuracy appended (52.00%)\n", - "Epoch 3642: model set back to train mode\n", - "Epoch 3642: model parameters saved\n", - "Epoch 3643 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3318)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3318)\n", - "Epoch 3643: avg_loss appended (1.3318)\n", - "Epoch 3643: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3643: accuracy appended (52.00%)\n", - "Epoch 3643: model set back to train mode\n", - "Epoch 3643: model parameters saved\n", - "Epoch 3644 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3308)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3308)\n", - "Epoch 3644: avg_loss appended (1.3308)\n", - "Epoch 3644: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3644: accuracy appended (52.00%)\n", - "Epoch 3644: model set back to train mode\n", - "Epoch 3644: model parameters saved\n", - "Epoch 3645 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3299)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3299)\n", - "Epoch 3645: avg_loss appended (1.3299)\n", - "Epoch 3645: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3645: accuracy appended (52.00%)\n", - "Epoch 3645: model set back to train mode\n", - "Epoch 3645: model parameters saved\n", - "Epoch 3646 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3290)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3290)\n", - "Epoch 3646: avg_loss appended (1.3290)\n", - "Epoch 3646: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3646: accuracy appended (52.00%)\n", - "Epoch 3646: model set back to train mode\n", - "Epoch 3646: model parameters saved\n", - "Epoch 3647 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3282)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3282)\n", - "Epoch 3647: avg_loss appended (1.3282)\n", - "Epoch 3647: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3647: accuracy appended (52.00%)\n", - "Epoch 3647: model set back to train mode\n", - "Epoch 3647: model parameters saved\n", - "Epoch 3648 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3275)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3275)\n", - "Epoch 3648: avg_loss appended (1.3275)\n", - "Epoch 3648: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3648: accuracy appended (52.00%)\n", - "Epoch 3648: model set back to train mode\n", - "Epoch 3648: model parameters saved\n", - "Epoch 3649 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3269)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3269)\n", - "Epoch 3649: avg_loss appended (1.3269)\n", - "Epoch 3649: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3649: accuracy appended (52.00%)\n", - "Epoch 3649: model set back to train mode\n", - "Epoch 3649: model parameters saved\n", - "Epoch 3650 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3263)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3263)\n", - "Epoch 3650: avg_loss appended (1.3263)\n", - "Epoch 3650: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3650: accuracy appended (52.00%)\n", - "Epoch 3650: model set back to train mode\n", - "Epoch 3650: model parameters saved\n", - "Epoch 3651 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3258)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3258)\n", - "Epoch 3651: avg_loss appended (1.3258)\n", - "Epoch 3651: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3651: accuracy appended (52.00%)\n", - "Epoch 3651: model set back to train mode\n", - "Epoch 3651: model parameters saved\n", - "Epoch 3652 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3254)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3254)\n", - "Epoch 3652: avg_loss appended (1.3254)\n", - "Epoch 3652: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3652: accuracy appended (52.00%)\n", - "Epoch 3652: model set back to train mode\n", - "Epoch 3652: model parameters saved\n", - "Epoch 3653 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3251)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3251)\n", - "Epoch 3653: avg_loss appended (1.3251)\n", - "Epoch 3653: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3653: accuracy appended (52.00%)\n", - "Epoch 3653: model set back to train mode\n", - "Epoch 3653: model parameters saved\n", - "Epoch 3654 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3248)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3248)\n", - "Epoch 3654: avg_loss appended (1.3248)\n", - "Epoch 3654: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3654: accuracy appended (52.00%)\n", - "Epoch 3654: model set back to train mode\n", - "Epoch 3654: model parameters saved\n", - "Epoch 3655 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3246)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3246)\n", - "Epoch 3655: avg_loss appended (1.3246)\n", - "Epoch 3655: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3655: accuracy appended (52.00%)\n", - "Epoch 3655: model set back to train mode\n", - "Epoch 3655: model parameters saved\n", - "Epoch 3656 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3244)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3244)\n", - "Epoch 3656: avg_loss appended (1.3244)\n", - "Epoch 3656: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3656: accuracy appended (52.00%)\n", - "Epoch 3656: model set back to train mode\n", - "Epoch 3656: model parameters saved\n", - "Epoch 3657 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3243)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3243)\n", - "Epoch 3657: avg_loss appended (1.3243)\n", - "Epoch 3657: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=216, total=400)\n", - "Final test accuracy: 54.00%\n", - "Epoch 3657: accuracy appended (54.00%)\n", - "Epoch 3657: model set back to train mode\n", - "Epoch 3657: model parameters saved\n", - "Epoch 3658 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3242)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3242)\n", - "Epoch 3658: avg_loss appended (1.3242)\n", - "Epoch 3658: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=216, total=400)\n", - "Final test accuracy: 54.00%\n", - "Epoch 3658: accuracy appended (54.00%)\n", - "Epoch 3658: model set back to train mode\n", - "Epoch 3658: model parameters saved\n", - "Epoch 3659 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3240)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3240)\n", - "Epoch 3659: avg_loss appended (1.3240)\n", - "Epoch 3659: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=216, total=400)\n", - "Final test accuracy: 54.00%\n", - "Epoch 3659: accuracy appended (54.00%)\n", - "Epoch 3659: model set back to train mode\n", - "Epoch 3659: model parameters saved\n", - "Epoch 3660 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3239)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3239)\n", - "Epoch 3660: avg_loss appended (1.3239)\n", - "Epoch 3660: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=216, total=400)\n", - "Final test accuracy: 54.00%\n", - "Epoch 3660: accuracy appended (54.00%)\n", - "Epoch 3660: model set back to train mode\n", - "Epoch 3660: model parameters saved\n", - "Epoch 3661 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3239)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3239)\n", - "Epoch 3661: avg_loss appended (1.3239)\n", - "Epoch 3661: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=216, total=400)\n", - "Final test accuracy: 54.00%\n", - "Epoch 3661: accuracy appended (54.00%)\n", - "Epoch 3661: model set back to train mode\n", - "Epoch 3661: model parameters saved\n", - "Epoch 3662 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3238)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3238)\n", - "Epoch 3662: avg_loss appended (1.3238)\n", - "Epoch 3662: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=216, total=400)\n", - "Final test accuracy: 54.00%\n", - "Epoch 3662: accuracy appended (54.00%)\n", - "Epoch 3662: model set back to train mode\n", - "Epoch 3662: model parameters saved\n", - "Epoch 3663 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3236)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3236)\n", - "Epoch 3663: avg_loss appended (1.3236)\n", - "Epoch 3663: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=216, total=400)\n", - "Final test accuracy: 54.00%\n", - "Epoch 3663: accuracy appended (54.00%)\n", - "Epoch 3663: model set back to train mode\n", - "Epoch 3663: model parameters saved\n", - "Epoch 3664 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3235)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3235)\n", - "Epoch 3664: avg_loss appended (1.3235)\n", - "Epoch 3664: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=216, total=400)\n", - "Final test accuracy: 54.00%\n", - "Epoch 3664: accuracy appended (54.00%)\n", - "Epoch 3664: model set back to train mode\n", - "Epoch 3664: model parameters saved\n", - "Epoch 3665 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3234)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3234)\n", - "Epoch 3665: avg_loss appended (1.3234)\n", - "Epoch 3665: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=216, total=400)\n", - "Final test accuracy: 54.00%\n", - "Epoch 3665: accuracy appended (54.00%)\n", - "Epoch 3665: model set back to train mode\n", - "Epoch 3665: model parameters saved\n", - "Epoch 3666 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3233)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3233)\n", - "Epoch 3666: avg_loss appended (1.3233)\n", - "Epoch 3666: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=216, total=400)\n", - "Final test accuracy: 54.00%\n", - "Epoch 3666: accuracy appended (54.00%)\n", - "Epoch 3666: model set back to train mode\n", - "Epoch 3666: model parameters saved\n", - "Epoch 3667 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3231)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3231)\n", - "Epoch 3667: avg_loss appended (1.3231)\n", - "Epoch 3667: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=216, total=400)\n", - "Final test accuracy: 54.00%\n", - "Epoch 3667: accuracy appended (54.00%)\n", - "Epoch 3667: model set back to train mode\n", - "Epoch 3667: model parameters saved\n", - "Epoch 3668 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3230)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3230)\n", - "Epoch 3668: avg_loss appended (1.3230)\n", - "Epoch 3668: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=216, total=400)\n", - "Final test accuracy: 54.00%\n", - "Epoch 3668: accuracy appended (54.00%)\n", - "Epoch 3668: model set back to train mode\n", - "Epoch 3668: model parameters saved\n", - "Epoch 3669 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3229)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3229)\n", - "Epoch 3669: avg_loss appended (1.3229)\n", - "Epoch 3669: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=216, total=400)\n", - "Final test accuracy: 54.00%\n", - "Epoch 3669: accuracy appended (54.00%)\n", - "Epoch 3669: model set back to train mode\n", - "Epoch 3669: model parameters saved\n", - "Epoch 3670 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3227)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3227)\n", - "Epoch 3670: avg_loss appended (1.3227)\n", - "Epoch 3670: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=216, total=400)\n", - "Final test accuracy: 54.00%\n", - "Epoch 3670: accuracy appended (54.00%)\n", - "Epoch 3670: model set back to train mode\n", - "Epoch 3670: model parameters saved\n", - "Epoch 3671 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3226)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3226)\n", - "Epoch 3671: avg_loss appended (1.3226)\n", - "Epoch 3671: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=216, total=400)\n", - "Final test accuracy: 54.00%\n", - "Epoch 3671: accuracy appended (54.00%)\n", - "Epoch 3671: model set back to train mode\n", - "Epoch 3671: model parameters saved\n", - "Epoch 3672 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3225)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3225)\n", - "Epoch 3672: avg_loss appended (1.3225)\n", - "Epoch 3672: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=216, total=400)\n", - "Final test accuracy: 54.00%\n", - "Epoch 3672: accuracy appended (54.00%)\n", - "Epoch 3672: model set back to train mode\n", - "Epoch 3672: model parameters saved\n", - "Epoch 3673 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3224)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3224)\n", - "Epoch 3673: avg_loss appended (1.3224)\n", - "Epoch 3673: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=216, total=400)\n", - "Final test accuracy: 54.00%\n", - "Epoch 3673: accuracy appended (54.00%)\n", - "Epoch 3673: model set back to train mode\n", - "Epoch 3673: model parameters saved\n", - "Epoch 3674 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3222)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3222)\n", - "Epoch 3674: avg_loss appended (1.3222)\n", - "Epoch 3674: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=216, total=400)\n", - "Final test accuracy: 54.00%\n", - "Epoch 3674: accuracy appended (54.00%)\n", - "Epoch 3674: model set back to train mode\n", - "Epoch 3674: model parameters saved\n", - "Epoch 3675 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3221)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3221)\n", - "Epoch 3675: avg_loss appended (1.3221)\n", - "Epoch 3675: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=216, total=400)\n", - "Final test accuracy: 54.00%\n", - "Epoch 3675: accuracy appended (54.00%)\n", - "Epoch 3675: model set back to train mode\n", - "Epoch 3675: model parameters saved\n", - "Epoch 3676 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3220)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3220)\n", - "Epoch 3676: avg_loss appended (1.3220)\n", - "Epoch 3676: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=216, total=400)\n", - "Final test accuracy: 54.00%\n", - "Epoch 3676: accuracy appended (54.00%)\n", - "Epoch 3676: model set back to train mode\n", - "Epoch 3676: model parameters saved\n", - "Epoch 3677 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3219)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3219)\n", - "Epoch 3677: avg_loss appended (1.3219)\n", - "Epoch 3677: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3677: accuracy appended (52.00%)\n", - "Epoch 3677: model set back to train mode\n", - "Epoch 3677: model parameters saved\n", - "Epoch 3678 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3218)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3218)\n", - "Epoch 3678: avg_loss appended (1.3218)\n", - "Epoch 3678: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3678: accuracy appended (52.00%)\n", - "Epoch 3678: model set back to train mode\n", - "Epoch 3678: model parameters saved\n", - "Epoch 3679 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3218)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3218)\n", - "Epoch 3679: avg_loss appended (1.3218)\n", - "Epoch 3679: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3679: accuracy appended (52.00%)\n", - "Epoch 3679: model set back to train mode\n", - "Epoch 3679: model parameters saved\n", - "Epoch 3680 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3217)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3217)\n", - "Epoch 3680: avg_loss appended (1.3217)\n", - "Epoch 3680: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3680: accuracy appended (52.00%)\n", - "Epoch 3680: model set back to train mode\n", - "Epoch 3680: model parameters saved\n", - "Epoch 3681 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3216)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3216)\n", - "Epoch 3681: avg_loss appended (1.3216)\n", - "Epoch 3681: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3681: accuracy appended (52.00%)\n", - "Epoch 3681: model set back to train mode\n", - "Epoch 3681: model parameters saved\n", - "Epoch 3682 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3215)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3215)\n", - "Epoch 3682: avg_loss appended (1.3215)\n", - "Epoch 3682: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3682: accuracy appended (52.00%)\n", - "Epoch 3682: model set back to train mode\n", - "Epoch 3682: model parameters saved\n", - "Epoch 3683 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3214)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3214)\n", - "Epoch 3683: avg_loss appended (1.3214)\n", - "Epoch 3683: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3683: accuracy appended (52.00%)\n", - "Epoch 3683: model set back to train mode\n", - "Epoch 3683: model parameters saved\n", - "Epoch 3684 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3214)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3214)\n", - "Epoch 3684: avg_loss appended (1.3214)\n", - "Epoch 3684: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3684: accuracy appended (52.00%)\n", - "Epoch 3684: model set back to train mode\n", - "Epoch 3684: model parameters saved\n", - "Epoch 3685 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3213)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3213)\n", - "Epoch 3685: avg_loss appended (1.3213)\n", - "Epoch 3685: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3685: accuracy appended (52.00%)\n", - "Epoch 3685: model set back to train mode\n", - "Epoch 3685: model parameters saved\n", - "Epoch 3686 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3212)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3212)\n", - "Epoch 3686: avg_loss appended (1.3212)\n", - "Epoch 3686: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3686: accuracy appended (52.00%)\n", - "Epoch 3686: model set back to train mode\n", - "Epoch 3686: model parameters saved\n", - "Epoch 3687 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3212)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3212)\n", - "Epoch 3687: avg_loss appended (1.3212)\n", - "Epoch 3687: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3687: accuracy appended (52.00%)\n", - "Epoch 3687: model set back to train mode\n", - "Epoch 3687: model parameters saved\n", - "Epoch 3688 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3211)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3211)\n", - "Epoch 3688: avg_loss appended (1.3211)\n", - "Epoch 3688: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3688: accuracy appended (52.00%)\n", - "Epoch 3688: model set back to train mode\n", - "Epoch 3688: model parameters saved\n", - "Epoch 3689 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3210)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3210)\n", - "Epoch 3689: avg_loss appended (1.3210)\n", - "Epoch 3689: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3689: accuracy appended (52.00%)\n", - "Epoch 3689: model set back to train mode\n", - "Epoch 3689: model parameters saved\n", - "Epoch 3690 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3210)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3210)\n", - "Epoch 3690: avg_loss appended (1.3210)\n", - "Epoch 3690: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3690: accuracy appended (52.00%)\n", - "Epoch 3690: model set back to train mode\n", - "Epoch 3690: model parameters saved\n", - "Epoch 3691 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3209)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3209)\n", - "Epoch 3691: avg_loss appended (1.3209)\n", - "Epoch 3691: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3691: accuracy appended (52.00%)\n", - "Epoch 3691: model set back to train mode\n", - "Epoch 3691: model parameters saved\n", - "Epoch 3692 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3209)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3209)\n", - "Epoch 3692: avg_loss appended (1.3209)\n", - "Epoch 3692: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3692: accuracy appended (52.00%)\n", - "Epoch 3692: model set back to train mode\n", - "Epoch 3692: model parameters saved\n", - "Epoch 3693 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3208)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3208)\n", - "Epoch 3693: avg_loss appended (1.3208)\n", - "Epoch 3693: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3693: accuracy appended (52.00%)\n", - "Epoch 3693: model set back to train mode\n", - "Epoch 3693: model parameters saved\n", - "Epoch 3694 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3207)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3207)\n", - "Epoch 3694: avg_loss appended (1.3207)\n", - "Epoch 3694: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3694: accuracy appended (52.00%)\n", - "Epoch 3694: model set back to train mode\n", - "Epoch 3694: model parameters saved\n", - "Epoch 3695 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3207)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3207)\n", - "Epoch 3695: avg_loss appended (1.3207)\n", - "Epoch 3695: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3695: accuracy appended (52.00%)\n", - "Epoch 3695: model set back to train mode\n", - "Epoch 3695: model parameters saved\n", - "Epoch 3696 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3206)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3206)\n", - "Epoch 3696: avg_loss appended (1.3206)\n", - "Epoch 3696: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3696: accuracy appended (52.00%)\n", - "Epoch 3696: model set back to train mode\n", - "Epoch 3696: model parameters saved\n", - "Epoch 3697 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3206)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3206)\n", - "Epoch 3697: avg_loss appended (1.3206)\n", - "Epoch 3697: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3697: accuracy appended (52.00%)\n", - "Epoch 3697: model set back to train mode\n", - "Epoch 3697: model parameters saved\n", - "Epoch 3698 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3205)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3205)\n", - "Epoch 3698: avg_loss appended (1.3205)\n", - "Epoch 3698: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3698: accuracy appended (52.00%)\n", - "Epoch 3698: model set back to train mode\n", - "Epoch 3698: model parameters saved\n", - "Epoch 3699 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3205)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3205)\n", - "Epoch 3699: avg_loss appended (1.3205)\n", - "Epoch 3699: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3699: accuracy appended (52.00%)\n", - "Epoch 3699: model set back to train mode\n", - "Epoch 3699: model parameters saved\n", - "Epoch 3700 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3204)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3204)\n", - "Epoch 3700: avg_loss appended (1.3204)\n", - "Epoch 3700: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3700: accuracy appended (52.00%)\n", - "Epoch 3700: model set back to train mode\n", - "Epoch 3700: model parameters saved\n", - "Epoch 3700/10000, Loss: 1.3204, Accuracy: 52.00%\n", - "Epoch 3701 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3204)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3204)\n", - "Epoch 3701: avg_loss appended (1.3204)\n", - "Epoch 3701: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3701: accuracy appended (52.00%)\n", - "Epoch 3701: model set back to train mode\n", - "Epoch 3701: model parameters saved\n", - "Epoch 3702 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3203)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3203)\n", - "Epoch 3702: avg_loss appended (1.3203)\n", - "Epoch 3702: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3702: accuracy appended (52.00%)\n", - "Epoch 3702: model set back to train mode\n", - "Epoch 3702: model parameters saved\n", - "Epoch 3703 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3203)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3203)\n", - "Epoch 3703: avg_loss appended (1.3203)\n", - "Epoch 3703: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3703: accuracy appended (52.00%)\n", - "Epoch 3703: model set back to train mode\n", - "Epoch 3703: model parameters saved\n", - "Epoch 3704 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3202)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3202)\n", - "Epoch 3704: avg_loss appended (1.3202)\n", - "Epoch 3704: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3704: accuracy appended (52.00%)\n", - "Epoch 3704: model set back to train mode\n", - "Epoch 3704: model parameters saved\n", - "Epoch 3705 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3202)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3202)\n", - "Epoch 3705: avg_loss appended (1.3202)\n", - "Epoch 3705: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3705: accuracy appended (52.00%)\n", - "Epoch 3705: model set back to train mode\n", - "Epoch 3705: model parameters saved\n", - "Epoch 3706 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3201)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3201)\n", - "Epoch 3706: avg_loss appended (1.3201)\n", - "Epoch 3706: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3706: accuracy appended (52.00%)\n", - "Epoch 3706: model set back to train mode\n", - "Epoch 3706: model parameters saved\n", - "Epoch 3707 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3201)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3201)\n", - "Epoch 3707: avg_loss appended (1.3201)\n", - "Epoch 3707: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3707: accuracy appended (52.00%)\n", - "Epoch 3707: model set back to train mode\n", - "Epoch 3707: model parameters saved\n", - "Epoch 3708 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3201)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3201)\n", - "Epoch 3708: avg_loss appended (1.3201)\n", - "Epoch 3708: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3708: accuracy appended (52.00%)\n", - "Epoch 3708: model set back to train mode\n", - "Epoch 3708: model parameters saved\n", - "Epoch 3709 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3200)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3200)\n", - "Epoch 3709: avg_loss appended (1.3200)\n", - "Epoch 3709: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3709: accuracy appended (52.00%)\n", - "Epoch 3709: model set back to train mode\n", - "Epoch 3709: model parameters saved\n", - "Epoch 3710 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3200)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3200)\n", - "Epoch 3710: avg_loss appended (1.3200)\n", - "Epoch 3710: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3710: accuracy appended (52.00%)\n", - "Epoch 3710: model set back to train mode\n", - "Epoch 3710: model parameters saved\n", - "Epoch 3711 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3199)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3199)\n", - "Epoch 3711: avg_loss appended (1.3199)\n", - "Epoch 3711: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3711: accuracy appended (52.00%)\n", - "Epoch 3711: model set back to train mode\n", - "Epoch 3711: model parameters saved\n", - "Epoch 3712 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3199)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3199)\n", - "Epoch 3712: avg_loss appended (1.3199)\n", - "Epoch 3712: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3712: accuracy appended (52.00%)\n", - "Epoch 3712: model set back to train mode\n", - "Epoch 3712: model parameters saved\n", - "Epoch 3713 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3199)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3199)\n", - "Epoch 3713: avg_loss appended (1.3199)\n", - "Epoch 3713: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3713: accuracy appended (52.00%)\n", - "Epoch 3713: model set back to train mode\n", - "Epoch 3713: model parameters saved\n", - "Epoch 3714 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3198)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3198)\n", - "Epoch 3714: avg_loss appended (1.3198)\n", - "Epoch 3714: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3714: accuracy appended (52.00%)\n", - "Epoch 3714: model set back to train mode\n", - "Epoch 3714: model parameters saved\n", - "Epoch 3715 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3198)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3198)\n", - "Epoch 3715: avg_loss appended (1.3198)\n", - "Epoch 3715: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3715: accuracy appended (52.00%)\n", - "Epoch 3715: model set back to train mode\n", - "Epoch 3715: model parameters saved\n", - "Epoch 3716 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3198)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3198)\n", - "Epoch 3716: avg_loss appended (1.3198)\n", - "Epoch 3716: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3716: accuracy appended (52.00%)\n", - "Epoch 3716: model set back to train mode\n", - "Epoch 3716: model parameters saved\n", - "Epoch 3717 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3197)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3197)\n", - "Epoch 3717: avg_loss appended (1.3197)\n", - "Epoch 3717: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3717: accuracy appended (52.00%)\n", - "Epoch 3717: model set back to train mode\n", - "Epoch 3717: model parameters saved\n", - "Epoch 3718 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3197)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3197)\n", - "Epoch 3718: avg_loss appended (1.3197)\n", - "Epoch 3718: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3718: accuracy appended (52.00%)\n", - "Epoch 3718: model set back to train mode\n", - "Epoch 3718: model parameters saved\n", - "Epoch 3719 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3196)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3196)\n", - "Epoch 3719: avg_loss appended (1.3196)\n", - "Epoch 3719: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3719: accuracy appended (52.00%)\n", - "Epoch 3719: model set back to train mode\n", - "Epoch 3719: model parameters saved\n", - "Epoch 3720 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3196)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3196)\n", - "Epoch 3720: avg_loss appended (1.3196)\n", - "Epoch 3720: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3720: accuracy appended (52.00%)\n", - "Epoch 3720: model set back to train mode\n", - "Epoch 3720: model parameters saved\n", - "Epoch 3721 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3196)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3196)\n", - "Epoch 3721: avg_loss appended (1.3196)\n", - "Epoch 3721: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3721: accuracy appended (52.00%)\n", - "Epoch 3721: model set back to train mode\n", - "Epoch 3721: model parameters saved\n", - "Epoch 3722 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3195)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3195)\n", - "Epoch 3722: avg_loss appended (1.3195)\n", - "Epoch 3722: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3722: accuracy appended (52.00%)\n", - "Epoch 3722: model set back to train mode\n", - "Epoch 3722: model parameters saved\n", - "Epoch 3723 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3195)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3195)\n", - "Epoch 3723: avg_loss appended (1.3195)\n", - "Epoch 3723: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3723: accuracy appended (52.00%)\n", - "Epoch 3723: model set back to train mode\n", - "Epoch 3723: model parameters saved\n", - "Epoch 3724 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3195)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3195)\n", - "Epoch 3724: avg_loss appended (1.3195)\n", - "Epoch 3724: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3724: accuracy appended (52.00%)\n", - "Epoch 3724: model set back to train mode\n", - "Epoch 3724: model parameters saved\n", - "Epoch 3725 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3194)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3194)\n", - "Epoch 3725: avg_loss appended (1.3194)\n", - "Epoch 3725: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3725: accuracy appended (52.00%)\n", - "Epoch 3725: model set back to train mode\n", - "Epoch 3725: model parameters saved\n", - "Epoch 3726 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3194)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3194)\n", - "Epoch 3726: avg_loss appended (1.3194)\n", - "Epoch 3726: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3726: accuracy appended (52.00%)\n", - "Epoch 3726: model set back to train mode\n", - "Epoch 3726: model parameters saved\n", - "Epoch 3727 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3194)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3194)\n", - "Epoch 3727: avg_loss appended (1.3194)\n", - "Epoch 3727: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3727: accuracy appended (52.00%)\n", - "Epoch 3727: model set back to train mode\n", - "Epoch 3727: model parameters saved\n", - "Epoch 3728 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3193)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3193)\n", - "Epoch 3728: avg_loss appended (1.3193)\n", - "Epoch 3728: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3728: accuracy appended (52.00%)\n", - "Epoch 3728: model set back to train mode\n", - "Epoch 3728: model parameters saved\n", - "Epoch 3729 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3193)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3193)\n", - "Epoch 3729: avg_loss appended (1.3193)\n", - "Epoch 3729: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3729: accuracy appended (52.00%)\n", - "Epoch 3729: model set back to train mode\n", - "Epoch 3729: model parameters saved\n", - "Epoch 3730 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3193)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3193)\n", - "Epoch 3730: avg_loss appended (1.3193)\n", - "Epoch 3730: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3730: accuracy appended (52.00%)\n", - "Epoch 3730: model set back to train mode\n", - "Epoch 3730: model parameters saved\n", - "Epoch 3731 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3193)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3193)\n", - "Epoch 3731: avg_loss appended (1.3193)\n", - "Epoch 3731: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3731: accuracy appended (52.00%)\n", - "Epoch 3731: model set back to train mode\n", - "Epoch 3731: model parameters saved\n", - "Epoch 3732 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3192)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3192)\n", - "Epoch 3732: avg_loss appended (1.3192)\n", - "Epoch 3732: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3732: accuracy appended (52.00%)\n", - "Epoch 3732: model set back to train mode\n", - "Epoch 3732: model parameters saved\n", - "Epoch 3733 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3192)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3192)\n", - "Epoch 3733: avg_loss appended (1.3192)\n", - "Epoch 3733: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3733: accuracy appended (52.00%)\n", - "Epoch 3733: model set back to train mode\n", - "Epoch 3733: model parameters saved\n", - "Epoch 3734 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3192)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3192)\n", - "Epoch 3734: avg_loss appended (1.3192)\n", - "Epoch 3734: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3734: accuracy appended (52.00%)\n", - "Epoch 3734: model set back to train mode\n", - "Epoch 3734: model parameters saved\n", - "Epoch 3735 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3191)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3191)\n", - "Epoch 3735: avg_loss appended (1.3191)\n", - "Epoch 3735: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3735: accuracy appended (52.00%)\n", - "Epoch 3735: model set back to train mode\n", - "Epoch 3735: model parameters saved\n", - "Epoch 3736 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3191)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3191)\n", - "Epoch 3736: avg_loss appended (1.3191)\n", - "Epoch 3736: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3736: accuracy appended (52.00%)\n", - "Epoch 3736: model set back to train mode\n", - "Epoch 3736: model parameters saved\n", - "Epoch 3737 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3191)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3191)\n", - "Epoch 3737: avg_loss appended (1.3191)\n", - "Epoch 3737: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3737: accuracy appended (52.00%)\n", - "Epoch 3737: model set back to train mode\n", - "Epoch 3737: model parameters saved\n", - "Epoch 3738 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3191)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3191)\n", - "Epoch 3738: avg_loss appended (1.3191)\n", - "Epoch 3738: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3738: accuracy appended (52.00%)\n", - "Epoch 3738: model set back to train mode\n", - "Epoch 3738: model parameters saved\n", - "Epoch 3739 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3190)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3190)\n", - "Epoch 3739: avg_loss appended (1.3190)\n", - "Epoch 3739: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3739: accuracy appended (52.00%)\n", - "Epoch 3739: model set back to train mode\n", - "Epoch 3739: model parameters saved\n", - "Epoch 3740 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3190)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3190)\n", - "Epoch 3740: avg_loss appended (1.3190)\n", - "Epoch 3740: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3740: accuracy appended (52.00%)\n", - "Epoch 3740: model set back to train mode\n", - "Epoch 3740: model parameters saved\n", - "Epoch 3741 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3190)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3190)\n", - "Epoch 3741: avg_loss appended (1.3190)\n", - "Epoch 3741: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3741: accuracy appended (52.00%)\n", - "Epoch 3741: model set back to train mode\n", - "Epoch 3741: model parameters saved\n", - "Epoch 3742 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3189)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3189)\n", - "Epoch 3742: avg_loss appended (1.3189)\n", - "Epoch 3742: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3742: accuracy appended (52.00%)\n", - "Epoch 3742: model set back to train mode\n", - "Epoch 3742: model parameters saved\n", - "Epoch 3743 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3189)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3189)\n", - "Epoch 3743: avg_loss appended (1.3189)\n", - "Epoch 3743: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3743: accuracy appended (52.00%)\n", - "Epoch 3743: model set back to train mode\n", - "Epoch 3743: model parameters saved\n", - "Epoch 3744 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3189)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3189)\n", - "Epoch 3744: avg_loss appended (1.3189)\n", - "Epoch 3744: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=208, total=400)\n", - "Final test accuracy: 52.00%\n", - "Epoch 3744: accuracy appended (52.00%)\n", - "Epoch 3744: model set back to train mode\n", - "Epoch 3744: model parameters saved\n", - "Epoch 3745 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3189)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3189)\n", - "Epoch 3745: avg_loss appended (1.3189)\n", - "Epoch 3745: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=216, total=400)\n", - "Final test accuracy: 54.00%\n", - "Epoch 3745: accuracy appended (54.00%)\n", - "Epoch 3745: model set back to train mode\n", - "Epoch 3745: model parameters saved\n", - "Epoch 3746 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3188)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3188)\n", - "Epoch 3746: avg_loss appended (1.3188)\n", - "Epoch 3746: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=216, total=400)\n", - "Final test accuracy: 54.00%\n", - "Epoch 3746: accuracy appended (54.00%)\n", - "Epoch 3746: model set back to train mode\n", - "Epoch 3746: model parameters saved\n", - "Epoch 3747 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3188)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3188)\n", - "Epoch 3747: avg_loss appended (1.3188)\n", - "Epoch 3747: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=216, total=400)\n", - "Final test accuracy: 54.00%\n", - "Epoch 3747: accuracy appended (54.00%)\n", - "Epoch 3747: model set back to train mode\n", - "Epoch 3747: model parameters saved\n", - "Epoch 3748 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3188)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3188)\n", - "Epoch 3748: avg_loss appended (1.3188)\n", - "Epoch 3748: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=216, total=400)\n", - "Final test accuracy: 54.00%\n", - "Epoch 3748: accuracy appended (54.00%)\n", - "Epoch 3748: model set back to train mode\n", - "Epoch 3748: model parameters saved\n", - "Epoch 3749 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3188)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3188)\n", - "Epoch 3749: avg_loss appended (1.3188)\n", - "Epoch 3749: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=216, total=400)\n", - "Final test accuracy: 54.00%\n", - "Epoch 3749: accuracy appended (54.00%)\n", - "Epoch 3749: model set back to train mode\n", - "Epoch 3749: model parameters saved\n", - "Epoch 3750 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3187)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3187)\n", - "Epoch 3750: avg_loss appended (1.3187)\n", - "Epoch 3750: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=216, total=400)\n", - "Final test accuracy: 54.00%\n", - "Epoch 3750: accuracy appended (54.00%)\n", - "Epoch 3750: model set back to train mode\n", - "Epoch 3750: model parameters saved\n", - "Epoch 3751 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3187)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3187)\n", - "Epoch 3751: avg_loss appended (1.3187)\n", - "Epoch 3751: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=216, total=400)\n", - "Final test accuracy: 54.00%\n", - "Epoch 3751: accuracy appended (54.00%)\n", - "Epoch 3751: model set back to train mode\n", - "Epoch 3751: model parameters saved\n", - "Epoch 3752 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3187)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3187)\n", - "Epoch 3752: avg_loss appended (1.3187)\n", - "Epoch 3752: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=216, total=400)\n", - "Final test accuracy: 54.00%\n", - "Epoch 3752: accuracy appended (54.00%)\n", - "Epoch 3752: model set back to train mode\n", - "Epoch 3752: model parameters saved\n", - "Epoch 3753 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3187)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3187)\n", - "Epoch 3753: avg_loss appended (1.3187)\n", - "Epoch 3753: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=216, total=400)\n", - "Final test accuracy: 54.00%\n", - "Epoch 3753: accuracy appended (54.00%)\n", - "Epoch 3753: model set back to train mode\n", - "Epoch 3753: model parameters saved\n", - "Epoch 3754 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3186)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3186)\n", - "Epoch 3754: avg_loss appended (1.3186)\n", - "Epoch 3754: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=216, total=400)\n", - "Final test accuracy: 54.00%\n", - "Epoch 3754: accuracy appended (54.00%)\n", - "Epoch 3754: model set back to train mode\n", - "Epoch 3754: model parameters saved\n", - "Epoch 3755 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3186)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3186)\n", - "Epoch 3755: avg_loss appended (1.3186)\n", - "Epoch 3755: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=216, total=400)\n", - "Final test accuracy: 54.00%\n", - "Epoch 3755: accuracy appended (54.00%)\n", - "Epoch 3755: model set back to train mode\n", - "Epoch 3755: model parameters saved\n", - "Epoch 3756 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3186)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3186)\n", - "Epoch 3756: avg_loss appended (1.3186)\n", - "Epoch 3756: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=216, total=400)\n", - "Final test accuracy: 54.00%\n", - "Epoch 3756: accuracy appended (54.00%)\n", - "Epoch 3756: model set back to train mode\n", - "Epoch 3756: model parameters saved\n", - "Epoch 3757 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3186)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3186)\n", - "Epoch 3757: avg_loss appended (1.3186)\n", - "Epoch 3757: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=216, total=400)\n", - "Final test accuracy: 54.00%\n", - "Epoch 3757: accuracy appended (54.00%)\n", - "Epoch 3757: model set back to train mode\n", - "Epoch 3757: model parameters saved\n", - "Epoch 3758 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3185)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3185)\n", - "Epoch 3758: avg_loss appended (1.3185)\n", - "Epoch 3758: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=216, total=400)\n", - "Final test accuracy: 54.00%\n", - "Epoch 3758: accuracy appended (54.00%)\n", - "Epoch 3758: model set back to train mode\n", - "Epoch 3758: model parameters saved\n", - "Epoch 3759 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3185)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3185)\n", - "Epoch 3759: avg_loss appended (1.3185)\n", - "Epoch 3759: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=216, total=400)\n", - "Final test accuracy: 54.00%\n", - "Epoch 3759: accuracy appended (54.00%)\n", - "Epoch 3759: model set back to train mode\n", - "Epoch 3759: model parameters saved\n", - "Epoch 3760 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3185)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3185)\n", - "Epoch 3760: avg_loss appended (1.3185)\n", - "Epoch 3760: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=216, total=400)\n", - "Final test accuracy: 54.00%\n", - "Epoch 3760: accuracy appended (54.00%)\n", - "Epoch 3760: model set back to train mode\n", - "Epoch 3760: model parameters saved\n", - "Epoch 3761 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3185)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3185)\n", - "Epoch 3761: avg_loss appended (1.3185)\n", - "Epoch 3761: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=216, total=400)\n", - "Final test accuracy: 54.00%\n", - "Epoch 3761: accuracy appended (54.00%)\n", - "Epoch 3761: model set back to train mode\n", - "Epoch 3761: model parameters saved\n", - "Epoch 3762 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3185)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3185)\n", - "Epoch 3762: avg_loss appended (1.3185)\n", - "Epoch 3762: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=216, total=400)\n", - "Final test accuracy: 54.00%\n", - "Epoch 3762: accuracy appended (54.00%)\n", - "Epoch 3762: model set back to train mode\n", - "Epoch 3762: model parameters saved\n", - "Epoch 3763 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3184)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3184)\n", - "Epoch 3763: avg_loss appended (1.3184)\n", - "Epoch 3763: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=220, total=400)\n", - "Final test accuracy: 55.00%\n", - "Epoch 3763: accuracy appended (55.00%)\n", - "Epoch 3763: model set back to train mode\n", - "Epoch 3763: model parameters saved\n", - "Epoch 3764 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3184)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3184)\n", - "Epoch 3764: avg_loss appended (1.3184)\n", - "Epoch 3764: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=220, total=400)\n", - "Final test accuracy: 55.00%\n", - "Epoch 3764: accuracy appended (55.00%)\n", - "Epoch 3764: model set back to train mode\n", - "Epoch 3764: model parameters saved\n", - "Epoch 3765 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3184)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3184)\n", - "Epoch 3765: avg_loss appended (1.3184)\n", - "Epoch 3765: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=220, total=400)\n", - "Final test accuracy: 55.00%\n", - "Epoch 3765: accuracy appended (55.00%)\n", - "Epoch 3765: model set back to train mode\n", - "Epoch 3765: model parameters saved\n", - "Epoch 3766 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3184)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3184)\n", - "Epoch 3766: avg_loss appended (1.3184)\n", - "Epoch 3766: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=220, total=400)\n", - "Final test accuracy: 55.00%\n", - "Epoch 3766: accuracy appended (55.00%)\n", - "Epoch 3766: model set back to train mode\n", - "Epoch 3766: model parameters saved\n", - "Epoch 3767 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3184)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3184)\n", - "Epoch 3767: avg_loss appended (1.3184)\n", - "Epoch 3767: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=220, total=400)\n", - "Final test accuracy: 55.00%\n", - "Epoch 3767: accuracy appended (55.00%)\n", - "Epoch 3767: model set back to train mode\n", - "Epoch 3767: model parameters saved\n", - "Epoch 3768 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3183)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3183)\n", - "Epoch 3768: avg_loss appended (1.3183)\n", - "Epoch 3768: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=220, total=400)\n", - "Final test accuracy: 55.00%\n", - "Epoch 3768: accuracy appended (55.00%)\n", - "Epoch 3768: model set back to train mode\n", - "Epoch 3768: model parameters saved\n", - "Epoch 3769 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3183)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3183)\n", - "Epoch 3769: avg_loss appended (1.3183)\n", - "Epoch 3769: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=224, total=400)\n", - "Final test accuracy: 56.00%\n", - "Epoch 3769: accuracy appended (56.00%)\n", - "Epoch 3769: model set back to train mode\n", - "Epoch 3769: model parameters saved\n", - "Epoch 3770 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3183)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3183)\n", - "Epoch 3770: avg_loss appended (1.3183)\n", - "Epoch 3770: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=224, total=400)\n", - "Final test accuracy: 56.00%\n", - "Epoch 3770: accuracy appended (56.00%)\n", - "Epoch 3770: model set back to train mode\n", - "Epoch 3770: model parameters saved\n", - "Epoch 3771 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3183)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3183)\n", - "Epoch 3771: avg_loss appended (1.3183)\n", - "Epoch 3771: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=224, total=400)\n", - "Final test accuracy: 56.00%\n", - "Epoch 3771: accuracy appended (56.00%)\n", - "Epoch 3771: model set back to train mode\n", - "Epoch 3771: model parameters saved\n", - "Epoch 3772 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3182)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3182)\n", - "Epoch 3772: avg_loss appended (1.3182)\n", - "Epoch 3772: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=224, total=400)\n", - "Final test accuracy: 56.00%\n", - "Epoch 3772: accuracy appended (56.00%)\n", - "Epoch 3772: model set back to train mode\n", - "Epoch 3772: model parameters saved\n", - "Epoch 3773 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3182)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3182)\n", - "Epoch 3773: avg_loss appended (1.3182)\n", - "Epoch 3773: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=224, total=400)\n", - "Final test accuracy: 56.00%\n", - "Epoch 3773: accuracy appended (56.00%)\n", - "Epoch 3773: model set back to train mode\n", - "Epoch 3773: model parameters saved\n", - "Epoch 3774 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3182)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3182)\n", - "Epoch 3774: avg_loss appended (1.3182)\n", - "Epoch 3774: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=224, total=400)\n", - "Final test accuracy: 56.00%\n", - "Epoch 3774: accuracy appended (56.00%)\n", - "Epoch 3774: model set back to train mode\n", - "Epoch 3774: model parameters saved\n", - "Epoch 3775 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3182)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3182)\n", - "Epoch 3775: avg_loss appended (1.3182)\n", - "Epoch 3775: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=224, total=400)\n", - "Final test accuracy: 56.00%\n", - "Epoch 3775: accuracy appended (56.00%)\n", - "Epoch 3775: model set back to train mode\n", - "Epoch 3775: model parameters saved\n", - "Epoch 3776 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3182)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3182)\n", - "Epoch 3776: avg_loss appended (1.3182)\n", - "Epoch 3776: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=224, total=400)\n", - "Final test accuracy: 56.00%\n", - "Epoch 3776: accuracy appended (56.00%)\n", - "Epoch 3776: model set back to train mode\n", - "Epoch 3776: model parameters saved\n", - "Epoch 3777 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3182)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3182)\n", - "Epoch 3777: avg_loss appended (1.3182)\n", - "Epoch 3777: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=224, total=400)\n", - "Final test accuracy: 56.00%\n", - "Epoch 3777: accuracy appended (56.00%)\n", - "Epoch 3777: model set back to train mode\n", - "Epoch 3777: model parameters saved\n", - "Epoch 3778 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3181)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3181)\n", - "Epoch 3778: avg_loss appended (1.3181)\n", - "Epoch 3778: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=224, total=400)\n", - "Final test accuracy: 56.00%\n", - "Epoch 3778: accuracy appended (56.00%)\n", - "Epoch 3778: model set back to train mode\n", - "Epoch 3778: model parameters saved\n", - "Epoch 3779 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3181)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3181)\n", - "Epoch 3779: avg_loss appended (1.3181)\n", - "Epoch 3779: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=224, total=400)\n", - "Final test accuracy: 56.00%\n", - "Epoch 3779: accuracy appended (56.00%)\n", - "Epoch 3779: model set back to train mode\n", - "Epoch 3779: model parameters saved\n", - "Epoch 3780 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3181)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3181)\n", - "Epoch 3780: avg_loss appended (1.3181)\n", - "Epoch 3780: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=224, total=400)\n", - "Final test accuracy: 56.00%\n", - "Epoch 3780: accuracy appended (56.00%)\n", - "Epoch 3780: model set back to train mode\n", - "Epoch 3780: model parameters saved\n", - "Epoch 3781 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3181)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3181)\n", - "Epoch 3781: avg_loss appended (1.3181)\n", - "Epoch 3781: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=228, total=400)\n", - "Final test accuracy: 57.00%\n", - "Epoch 3781: accuracy appended (57.00%)\n", - "Epoch 3781: model set back to train mode\n", - "Epoch 3781: model parameters saved\n", - "Epoch 3782 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3181)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3181)\n", - "Epoch 3782: avg_loss appended (1.3181)\n", - "Epoch 3782: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3782: accuracy appended (58.00%)\n", - "Epoch 3782: model set back to train mode\n", - "Epoch 3782: model parameters saved\n", - "Epoch 3783 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3180)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3180)\n", - "Epoch 3783: avg_loss appended (1.3180)\n", - "Epoch 3783: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3783: accuracy appended (58.00%)\n", - "Epoch 3783: model set back to train mode\n", - "Epoch 3783: model parameters saved\n", - "Epoch 3784 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3180)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3180)\n", - "Epoch 3784: avg_loss appended (1.3180)\n", - "Epoch 3784: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3784: accuracy appended (58.00%)\n", - "Epoch 3784: model set back to train mode\n", - "Epoch 3784: model parameters saved\n", - "Epoch 3785 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3180)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3180)\n", - "Epoch 3785: avg_loss appended (1.3180)\n", - "Epoch 3785: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3785: accuracy appended (58.00%)\n", - "Epoch 3785: model set back to train mode\n", - "Epoch 3785: model parameters saved\n", - "Epoch 3786 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3180)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3180)\n", - "Epoch 3786: avg_loss appended (1.3180)\n", - "Epoch 3786: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3786: accuracy appended (58.00%)\n", - "Epoch 3786: model set back to train mode\n", - "Epoch 3786: model parameters saved\n", - "Epoch 3787 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3180)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3180)\n", - "Epoch 3787: avg_loss appended (1.3180)\n", - "Epoch 3787: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3787: accuracy appended (58.00%)\n", - "Epoch 3787: model set back to train mode\n", - "Epoch 3787: model parameters saved\n", - "Epoch 3788 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3179)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3179)\n", - "Epoch 3788: avg_loss appended (1.3179)\n", - "Epoch 3788: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3788: accuracy appended (58.00%)\n", - "Epoch 3788: model set back to train mode\n", - "Epoch 3788: model parameters saved\n", - "Epoch 3789 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3179)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3179)\n", - "Epoch 3789: avg_loss appended (1.3179)\n", - "Epoch 3789: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3789: accuracy appended (58.00%)\n", - "Epoch 3789: model set back to train mode\n", - "Epoch 3789: model parameters saved\n", - "Epoch 3790 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3179)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3179)\n", - "Epoch 3790: avg_loss appended (1.3179)\n", - "Epoch 3790: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3790: accuracy appended (58.00%)\n", - "Epoch 3790: model set back to train mode\n", - "Epoch 3790: model parameters saved\n", - "Epoch 3791 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3179)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3179)\n", - "Epoch 3791: avg_loss appended (1.3179)\n", - "Epoch 3791: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3791: accuracy appended (58.00%)\n", - "Epoch 3791: model set back to train mode\n", - "Epoch 3791: model parameters saved\n", - "Epoch 3792 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3179)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3179)\n", - "Epoch 3792: avg_loss appended (1.3179)\n", - "Epoch 3792: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3792: accuracy appended (58.00%)\n", - "Epoch 3792: model set back to train mode\n", - "Epoch 3792: model parameters saved\n", - "Epoch 3793 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3179)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3179)\n", - "Epoch 3793: avg_loss appended (1.3179)\n", - "Epoch 3793: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3793: accuracy appended (58.00%)\n", - "Epoch 3793: model set back to train mode\n", - "Epoch 3793: model parameters saved\n", - "Epoch 3794 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3178)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3178)\n", - "Epoch 3794: avg_loss appended (1.3178)\n", - "Epoch 3794: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3794: accuracy appended (58.00%)\n", - "Epoch 3794: model set back to train mode\n", - "Epoch 3794: model parameters saved\n", - "Epoch 3795 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3178)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3178)\n", - "Epoch 3795: avg_loss appended (1.3178)\n", - "Epoch 3795: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3795: accuracy appended (58.00%)\n", - "Epoch 3795: model set back to train mode\n", - "Epoch 3795: model parameters saved\n", - "Epoch 3796 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3178)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3178)\n", - "Epoch 3796: avg_loss appended (1.3178)\n", - "Epoch 3796: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3796: accuracy appended (58.00%)\n", - "Epoch 3796: model set back to train mode\n", - "Epoch 3796: model parameters saved\n", - "Epoch 3797 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3178)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3178)\n", - "Epoch 3797: avg_loss appended (1.3178)\n", - "Epoch 3797: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3797: accuracy appended (58.00%)\n", - "Epoch 3797: model set back to train mode\n", - "Epoch 3797: model parameters saved\n", - "Epoch 3798 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3178)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3178)\n", - "Epoch 3798: avg_loss appended (1.3178)\n", - "Epoch 3798: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3798: accuracy appended (58.00%)\n", - "Epoch 3798: model set back to train mode\n", - "Epoch 3798: model parameters saved\n", - "Epoch 3799 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3178)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3178)\n", - "Epoch 3799: avg_loss appended (1.3178)\n", - "Epoch 3799: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3799: accuracy appended (58.00%)\n", - "Epoch 3799: model set back to train mode\n", - "Epoch 3799: model parameters saved\n", - "Epoch 3800 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3177)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3177)\n", - "Epoch 3800: avg_loss appended (1.3177)\n", - "Epoch 3800: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3800: accuracy appended (58.00%)\n", - "Epoch 3800: model set back to train mode\n", - "Epoch 3800: model parameters saved\n", - "Epoch 3800/10000, Loss: 1.3177, Accuracy: 58.00%\n", - "Epoch 3801 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3177)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3177)\n", - "Epoch 3801: avg_loss appended (1.3177)\n", - "Epoch 3801: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3801: accuracy appended (58.00%)\n", - "Epoch 3801: model set back to train mode\n", - "Epoch 3801: model parameters saved\n", - "Epoch 3802 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3177)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3177)\n", - "Epoch 3802: avg_loss appended (1.3177)\n", - "Epoch 3802: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3802: accuracy appended (58.00%)\n", - "Epoch 3802: model set back to train mode\n", - "Epoch 3802: model parameters saved\n", - "Epoch 3803 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3177)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3177)\n", - "Epoch 3803: avg_loss appended (1.3177)\n", - "Epoch 3803: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3803: accuracy appended (58.00%)\n", - "Epoch 3803: model set back to train mode\n", - "Epoch 3803: model parameters saved\n", - "Epoch 3804 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3177)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3177)\n", - "Epoch 3804: avg_loss appended (1.3177)\n", - "Epoch 3804: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3804: accuracy appended (58.00%)\n", - "Epoch 3804: model set back to train mode\n", - "Epoch 3804: model parameters saved\n", - "Epoch 3805 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3177)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3177)\n", - "Epoch 3805: avg_loss appended (1.3177)\n", - "Epoch 3805: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3805: accuracy appended (58.00%)\n", - "Epoch 3805: model set back to train mode\n", - "Epoch 3805: model parameters saved\n", - "Epoch 3806 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3176)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3176)\n", - "Epoch 3806: avg_loss appended (1.3176)\n", - "Epoch 3806: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3806: accuracy appended (58.00%)\n", - "Epoch 3806: model set back to train mode\n", - "Epoch 3806: model parameters saved\n", - "Epoch 3807 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3176)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3176)\n", - "Epoch 3807: avg_loss appended (1.3176)\n", - "Epoch 3807: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3807: accuracy appended (58.00%)\n", - "Epoch 3807: model set back to train mode\n", - "Epoch 3807: model parameters saved\n", - "Epoch 3808 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3176)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3176)\n", - "Epoch 3808: avg_loss appended (1.3176)\n", - "Epoch 3808: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3808: accuracy appended (58.00%)\n", - "Epoch 3808: model set back to train mode\n", - "Epoch 3808: model parameters saved\n", - "Epoch 3809 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3176)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3176)\n", - "Epoch 3809: avg_loss appended (1.3176)\n", - "Epoch 3809: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3809: accuracy appended (58.00%)\n", - "Epoch 3809: model set back to train mode\n", - "Epoch 3809: model parameters saved\n", - "Epoch 3810 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3176)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3176)\n", - "Epoch 3810: avg_loss appended (1.3176)\n", - "Epoch 3810: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3810: accuracy appended (58.00%)\n", - "Epoch 3810: model set back to train mode\n", - "Epoch 3810: model parameters saved\n", - "Epoch 3811 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3176)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3176)\n", - "Epoch 3811: avg_loss appended (1.3176)\n", - "Epoch 3811: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3811: accuracy appended (58.00%)\n", - "Epoch 3811: model set back to train mode\n", - "Epoch 3811: model parameters saved\n", - "Epoch 3812 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3175)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3175)\n", - "Epoch 3812: avg_loss appended (1.3175)\n", - "Epoch 3812: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3812: accuracy appended (58.00%)\n", - "Epoch 3812: model set back to train mode\n", - "Epoch 3812: model parameters saved\n", - "Epoch 3813 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3175)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3175)\n", - "Epoch 3813: avg_loss appended (1.3175)\n", - "Epoch 3813: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3813: accuracy appended (58.00%)\n", - "Epoch 3813: model set back to train mode\n", - "Epoch 3813: model parameters saved\n", - "Epoch 3814 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3175)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3175)\n", - "Epoch 3814: avg_loss appended (1.3175)\n", - "Epoch 3814: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3814: accuracy appended (58.00%)\n", - "Epoch 3814: model set back to train mode\n", - "Epoch 3814: model parameters saved\n", - "Epoch 3815 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3175)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3175)\n", - "Epoch 3815: avg_loss appended (1.3175)\n", - "Epoch 3815: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3815: accuracy appended (58.00%)\n", - "Epoch 3815: model set back to train mode\n", - "Epoch 3815: model parameters saved\n", - "Epoch 3816 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3175)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3175)\n", - "Epoch 3816: avg_loss appended (1.3175)\n", - "Epoch 3816: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3816: accuracy appended (58.00%)\n", - "Epoch 3816: model set back to train mode\n", - "Epoch 3816: model parameters saved\n", - "Epoch 3817 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3175)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3175)\n", - "Epoch 3817: avg_loss appended (1.3175)\n", - "Epoch 3817: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3817: accuracy appended (58.00%)\n", - "Epoch 3817: model set back to train mode\n", - "Epoch 3817: model parameters saved\n", - "Epoch 3818 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3175)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3175)\n", - "Epoch 3818: avg_loss appended (1.3175)\n", - "Epoch 3818: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3818: accuracy appended (58.00%)\n", - "Epoch 3818: model set back to train mode\n", - "Epoch 3818: model parameters saved\n", - "Epoch 3819 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3174)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3174)\n", - "Epoch 3819: avg_loss appended (1.3174)\n", - "Epoch 3819: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3819: accuracy appended (58.00%)\n", - "Epoch 3819: model set back to train mode\n", - "Epoch 3819: model parameters saved\n", - "Epoch 3820 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3174)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3174)\n", - "Epoch 3820: avg_loss appended (1.3174)\n", - "Epoch 3820: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3820: accuracy appended (58.00%)\n", - "Epoch 3820: model set back to train mode\n", - "Epoch 3820: model parameters saved\n", - "Epoch 3821 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3174)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3174)\n", - "Epoch 3821: avg_loss appended (1.3174)\n", - "Epoch 3821: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3821: accuracy appended (58.00%)\n", - "Epoch 3821: model set back to train mode\n", - "Epoch 3821: model parameters saved\n", - "Epoch 3822 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3174)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3174)\n", - "Epoch 3822: avg_loss appended (1.3174)\n", - "Epoch 3822: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3822: accuracy appended (58.00%)\n", - "Epoch 3822: model set back to train mode\n", - "Epoch 3822: model parameters saved\n", - "Epoch 3823 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3174)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3174)\n", - "Epoch 3823: avg_loss appended (1.3174)\n", - "Epoch 3823: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3823: accuracy appended (58.00%)\n", - "Epoch 3823: model set back to train mode\n", - "Epoch 3823: model parameters saved\n", - "Epoch 3824 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3174)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3174)\n", - "Epoch 3824: avg_loss appended (1.3174)\n", - "Epoch 3824: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3824: accuracy appended (58.00%)\n", - "Epoch 3824: model set back to train mode\n", - "Epoch 3824: model parameters saved\n", - "Epoch 3825 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3174)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3174)\n", - "Epoch 3825: avg_loss appended (1.3174)\n", - "Epoch 3825: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3825: accuracy appended (58.00%)\n", - "Epoch 3825: model set back to train mode\n", - "Epoch 3825: model parameters saved\n", - "Epoch 3826 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3173)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3173)\n", - "Epoch 3826: avg_loss appended (1.3173)\n", - "Epoch 3826: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3826: accuracy appended (58.00%)\n", - "Epoch 3826: model set back to train mode\n", - "Epoch 3826: model parameters saved\n", - "Epoch 3827 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3173)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3173)\n", - "Epoch 3827: avg_loss appended (1.3173)\n", - "Epoch 3827: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3827: accuracy appended (58.00%)\n", - "Epoch 3827: model set back to train mode\n", - "Epoch 3827: model parameters saved\n", - "Epoch 3828 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3173)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3173)\n", - "Epoch 3828: avg_loss appended (1.3173)\n", - "Epoch 3828: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3828: accuracy appended (58.00%)\n", - "Epoch 3828: model set back to train mode\n", - "Epoch 3828: model parameters saved\n", - "Epoch 3829 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3173)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3173)\n", - "Epoch 3829: avg_loss appended (1.3173)\n", - "Epoch 3829: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3829: accuracy appended (58.00%)\n", - "Epoch 3829: model set back to train mode\n", - "Epoch 3829: model parameters saved\n", - "Epoch 3830 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3173)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3173)\n", - "Epoch 3830: avg_loss appended (1.3173)\n", - "Epoch 3830: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3830: accuracy appended (58.00%)\n", - "Epoch 3830: model set back to train mode\n", - "Epoch 3830: model parameters saved\n", - "Epoch 3831 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3173)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3173)\n", - "Epoch 3831: avg_loss appended (1.3173)\n", - "Epoch 3831: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3831: accuracy appended (58.00%)\n", - "Epoch 3831: model set back to train mode\n", - "Epoch 3831: model parameters saved\n", - "Epoch 3832 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3173)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3173)\n", - "Epoch 3832: avg_loss appended (1.3173)\n", - "Epoch 3832: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3832: accuracy appended (58.00%)\n", - "Epoch 3832: model set back to train mode\n", - "Epoch 3832: model parameters saved\n", - "Epoch 3833 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3172)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3172)\n", - "Epoch 3833: avg_loss appended (1.3172)\n", - "Epoch 3833: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3833: accuracy appended (58.00%)\n", - "Epoch 3833: model set back to train mode\n", - "Epoch 3833: model parameters saved\n", - "Epoch 3834 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3172)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3172)\n", - "Epoch 3834: avg_loss appended (1.3172)\n", - "Epoch 3834: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3834: accuracy appended (58.00%)\n", - "Epoch 3834: model set back to train mode\n", - "Epoch 3834: model parameters saved\n", - "Epoch 3835 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3172)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3172)\n", - "Epoch 3835: avg_loss appended (1.3172)\n", - "Epoch 3835: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3835: accuracy appended (58.00%)\n", - "Epoch 3835: model set back to train mode\n", - "Epoch 3835: model parameters saved\n", - "Epoch 3836 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3172)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3172)\n", - "Epoch 3836: avg_loss appended (1.3172)\n", - "Epoch 3836: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3836: accuracy appended (58.00%)\n", - "Epoch 3836: model set back to train mode\n", - "Epoch 3836: model parameters saved\n", - "Epoch 3837 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3172)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3172)\n", - "Epoch 3837: avg_loss appended (1.3172)\n", - "Epoch 3837: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3837: accuracy appended (58.00%)\n", - "Epoch 3837: model set back to train mode\n", - "Epoch 3837: model parameters saved\n", - "Epoch 3838 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3172)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3172)\n", - "Epoch 3838: avg_loss appended (1.3172)\n", - "Epoch 3838: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3838: accuracy appended (58.00%)\n", - "Epoch 3838: model set back to train mode\n", - "Epoch 3838: model parameters saved\n", - "Epoch 3839 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3172)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3172)\n", - "Epoch 3839: avg_loss appended (1.3172)\n", - "Epoch 3839: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3839: accuracy appended (58.00%)\n", - "Epoch 3839: model set back to train mode\n", - "Epoch 3839: model parameters saved\n", - "Epoch 3840 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3172)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3172)\n", - "Epoch 3840: avg_loss appended (1.3172)\n", - "Epoch 3840: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3840: accuracy appended (58.00%)\n", - "Epoch 3840: model set back to train mode\n", - "Epoch 3840: model parameters saved\n", - "Epoch 3841 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3171)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3171)\n", - "Epoch 3841: avg_loss appended (1.3171)\n", - "Epoch 3841: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3841: accuracy appended (58.00%)\n", - "Epoch 3841: model set back to train mode\n", - "Epoch 3841: model parameters saved\n", - "Epoch 3842 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3171)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3171)\n", - "Epoch 3842: avg_loss appended (1.3171)\n", - "Epoch 3842: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3842: accuracy appended (58.00%)\n", - "Epoch 3842: model set back to train mode\n", - "Epoch 3842: model parameters saved\n", - "Epoch 3843 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3171)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3171)\n", - "Epoch 3843: avg_loss appended (1.3171)\n", - "Epoch 3843: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3843: accuracy appended (58.00%)\n", - "Epoch 3843: model set back to train mode\n", - "Epoch 3843: model parameters saved\n", - "Epoch 3844 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3171)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3171)\n", - "Epoch 3844: avg_loss appended (1.3171)\n", - "Epoch 3844: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3844: accuracy appended (58.00%)\n", - "Epoch 3844: model set back to train mode\n", - "Epoch 3844: model parameters saved\n", - "Epoch 3845 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3171)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3171)\n", - "Epoch 3845: avg_loss appended (1.3171)\n", - "Epoch 3845: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3845: accuracy appended (58.00%)\n", - "Epoch 3845: model set back to train mode\n", - "Epoch 3845: model parameters saved\n", - "Epoch 3846 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3171)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3171)\n", - "Epoch 3846: avg_loss appended (1.3171)\n", - "Epoch 3846: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3846: accuracy appended (58.00%)\n", - "Epoch 3846: model set back to train mode\n", - "Epoch 3846: model parameters saved\n", - "Epoch 3847 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3171)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3171)\n", - "Epoch 3847: avg_loss appended (1.3171)\n", - "Epoch 3847: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3847: accuracy appended (58.00%)\n", - "Epoch 3847: model set back to train mode\n", - "Epoch 3847: model parameters saved\n", - "Epoch 3848 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3171)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3171)\n", - "Epoch 3848: avg_loss appended (1.3171)\n", - "Epoch 3848: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3848: accuracy appended (58.00%)\n", - "Epoch 3848: model set back to train mode\n", - "Epoch 3848: model parameters saved\n", - "Epoch 3849 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3170)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3170)\n", - "Epoch 3849: avg_loss appended (1.3170)\n", - "Epoch 3849: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3849: accuracy appended (58.00%)\n", - "Epoch 3849: model set back to train mode\n", - "Epoch 3849: model parameters saved\n", - "Epoch 3850 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3170)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3170)\n", - "Epoch 3850: avg_loss appended (1.3170)\n", - "Epoch 3850: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3850: accuracy appended (58.00%)\n", - "Epoch 3850: model set back to train mode\n", - "Epoch 3850: model parameters saved\n", - "Epoch 3851 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3170)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3170)\n", - "Epoch 3851: avg_loss appended (1.3170)\n", - "Epoch 3851: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3851: accuracy appended (58.00%)\n", - "Epoch 3851: model set back to train mode\n", - "Epoch 3851: model parameters saved\n", - "Epoch 3852 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3170)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3170)\n", - "Epoch 3852: avg_loss appended (1.3170)\n", - "Epoch 3852: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3852: accuracy appended (58.00%)\n", - "Epoch 3852: model set back to train mode\n", - "Epoch 3852: model parameters saved\n", - "Epoch 3853 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3170)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3170)\n", - "Epoch 3853: avg_loss appended (1.3170)\n", - "Epoch 3853: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3853: accuracy appended (58.00%)\n", - "Epoch 3853: model set back to train mode\n", - "Epoch 3853: model parameters saved\n", - "Epoch 3854 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3170)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3170)\n", - "Epoch 3854: avg_loss appended (1.3170)\n", - "Epoch 3854: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3854: accuracy appended (58.00%)\n", - "Epoch 3854: model set back to train mode\n", - "Epoch 3854: model parameters saved\n", - "Epoch 3855 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3170)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3170)\n", - "Epoch 3855: avg_loss appended (1.3170)\n", - "Epoch 3855: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3855: accuracy appended (58.00%)\n", - "Epoch 3855: model set back to train mode\n", - "Epoch 3855: model parameters saved\n", - "Epoch 3856 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3170)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3170)\n", - "Epoch 3856: avg_loss appended (1.3170)\n", - "Epoch 3856: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3856: accuracy appended (58.00%)\n", - "Epoch 3856: model set back to train mode\n", - "Epoch 3856: model parameters saved\n", - "Epoch 3857 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3169)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3169)\n", - "Epoch 3857: avg_loss appended (1.3169)\n", - "Epoch 3857: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3857: accuracy appended (58.00%)\n", - "Epoch 3857: model set back to train mode\n", - "Epoch 3857: model parameters saved\n", - "Epoch 3858 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3169)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3169)\n", - "Epoch 3858: avg_loss appended (1.3169)\n", - "Epoch 3858: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3858: accuracy appended (58.00%)\n", - "Epoch 3858: model set back to train mode\n", - "Epoch 3858: model parameters saved\n", - "Epoch 3859 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3169)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3169)\n", - "Epoch 3859: avg_loss appended (1.3169)\n", - "Epoch 3859: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3859: accuracy appended (58.00%)\n", - "Epoch 3859: model set back to train mode\n", - "Epoch 3859: model parameters saved\n", - "Epoch 3860 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3169)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3169)\n", - "Epoch 3860: avg_loss appended (1.3169)\n", - "Epoch 3860: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3860: accuracy appended (58.00%)\n", - "Epoch 3860: model set back to train mode\n", - "Epoch 3860: model parameters saved\n", - "Epoch 3861 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3169)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3169)\n", - "Epoch 3861: avg_loss appended (1.3169)\n", - "Epoch 3861: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3861: accuracy appended (58.00%)\n", - "Epoch 3861: model set back to train mode\n", - "Epoch 3861: model parameters saved\n", - "Epoch 3862 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3169)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3169)\n", - "Epoch 3862: avg_loss appended (1.3169)\n", - "Epoch 3862: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3862: accuracy appended (58.00%)\n", - "Epoch 3862: model set back to train mode\n", - "Epoch 3862: model parameters saved\n", - "Epoch 3863 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3169)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3169)\n", - "Epoch 3863: avg_loss appended (1.3169)\n", - "Epoch 3863: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3863: accuracy appended (58.00%)\n", - "Epoch 3863: model set back to train mode\n", - "Epoch 3863: model parameters saved\n", - "Epoch 3864 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3169)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3169)\n", - "Epoch 3864: avg_loss appended (1.3169)\n", - "Epoch 3864: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3864: accuracy appended (58.00%)\n", - "Epoch 3864: model set back to train mode\n", - "Epoch 3864: model parameters saved\n", - "Epoch 3865 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3168)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3168)\n", - "Epoch 3865: avg_loss appended (1.3168)\n", - "Epoch 3865: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3865: accuracy appended (58.00%)\n", - "Epoch 3865: model set back to train mode\n", - "Epoch 3865: model parameters saved\n", - "Epoch 3866 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3168)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3168)\n", - "Epoch 3866: avg_loss appended (1.3168)\n", - "Epoch 3866: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3866: accuracy appended (58.00%)\n", - "Epoch 3866: model set back to train mode\n", - "Epoch 3866: model parameters saved\n", - "Epoch 3867 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3168)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3168)\n", - "Epoch 3867: avg_loss appended (1.3168)\n", - "Epoch 3867: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3867: accuracy appended (58.00%)\n", - "Epoch 3867: model set back to train mode\n", - "Epoch 3867: model parameters saved\n", - "Epoch 3868 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3168)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3168)\n", - "Epoch 3868: avg_loss appended (1.3168)\n", - "Epoch 3868: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3868: accuracy appended (58.00%)\n", - "Epoch 3868: model set back to train mode\n", - "Epoch 3868: model parameters saved\n", - "Epoch 3869 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3168)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3168)\n", - "Epoch 3869: avg_loss appended (1.3168)\n", - "Epoch 3869: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3869: accuracy appended (58.00%)\n", - "Epoch 3869: model set back to train mode\n", - "Epoch 3869: model parameters saved\n", - "Epoch 3870 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3168)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3168)\n", - "Epoch 3870: avg_loss appended (1.3168)\n", - "Epoch 3870: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3870: accuracy appended (58.00%)\n", - "Epoch 3870: model set back to train mode\n", - "Epoch 3870: model parameters saved\n", - "Epoch 3871 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3168)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3168)\n", - "Epoch 3871: avg_loss appended (1.3168)\n", - "Epoch 3871: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3871: accuracy appended (58.00%)\n", - "Epoch 3871: model set back to train mode\n", - "Epoch 3871: model parameters saved\n", - "Epoch 3872 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3168)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3168)\n", - "Epoch 3872: avg_loss appended (1.3168)\n", - "Epoch 3872: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3872: accuracy appended (58.00%)\n", - "Epoch 3872: model set back to train mode\n", - "Epoch 3872: model parameters saved\n", - "Epoch 3873 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3168)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3168)\n", - "Epoch 3873: avg_loss appended (1.3168)\n", - "Epoch 3873: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3873: accuracy appended (58.00%)\n", - "Epoch 3873: model set back to train mode\n", - "Epoch 3873: model parameters saved\n", - "Epoch 3874 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3167)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3167)\n", - "Epoch 3874: avg_loss appended (1.3167)\n", - "Epoch 3874: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3874: accuracy appended (58.00%)\n", - "Epoch 3874: model set back to train mode\n", - "Epoch 3874: model parameters saved\n", - "Epoch 3875 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3167)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3167)\n", - "Epoch 3875: avg_loss appended (1.3167)\n", - "Epoch 3875: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3875: accuracy appended (58.00%)\n", - "Epoch 3875: model set back to train mode\n", - "Epoch 3875: model parameters saved\n", - "Epoch 3876 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3167)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3167)\n", - "Epoch 3876: avg_loss appended (1.3167)\n", - "Epoch 3876: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3876: accuracy appended (58.00%)\n", - "Epoch 3876: model set back to train mode\n", - "Epoch 3876: model parameters saved\n", - "Epoch 3877 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3167)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3167)\n", - "Epoch 3877: avg_loss appended (1.3167)\n", - "Epoch 3877: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3877: accuracy appended (58.00%)\n", - "Epoch 3877: model set back to train mode\n", - "Epoch 3877: model parameters saved\n", - "Epoch 3878 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3167)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3167)\n", - "Epoch 3878: avg_loss appended (1.3167)\n", - "Epoch 3878: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3878: accuracy appended (58.00%)\n", - "Epoch 3878: model set back to train mode\n", - "Epoch 3878: model parameters saved\n", - "Epoch 3879 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3167)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3167)\n", - "Epoch 3879: avg_loss appended (1.3167)\n", - "Epoch 3879: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3879: accuracy appended (58.00%)\n", - "Epoch 3879: model set back to train mode\n", - "Epoch 3879: model parameters saved\n", - "Epoch 3880 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3167)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3167)\n", - "Epoch 3880: avg_loss appended (1.3167)\n", - "Epoch 3880: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3880: accuracy appended (58.00%)\n", - "Epoch 3880: model set back to train mode\n", - "Epoch 3880: model parameters saved\n", - "Epoch 3881 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3167)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3167)\n", - "Epoch 3881: avg_loss appended (1.3167)\n", - "Epoch 3881: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3881: accuracy appended (58.00%)\n", - "Epoch 3881: model set back to train mode\n", - "Epoch 3881: model parameters saved\n", - "Epoch 3882 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3167)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3167)\n", - "Epoch 3882: avg_loss appended (1.3167)\n", - "Epoch 3882: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3882: accuracy appended (58.00%)\n", - "Epoch 3882: model set back to train mode\n", - "Epoch 3882: model parameters saved\n", - "Epoch 3883 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3167)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3167)\n", - "Epoch 3883: avg_loss appended (1.3167)\n", - "Epoch 3883: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3883: accuracy appended (58.00%)\n", - "Epoch 3883: model set back to train mode\n", - "Epoch 3883: model parameters saved\n", - "Epoch 3884 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3166)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3166)\n", - "Epoch 3884: avg_loss appended (1.3166)\n", - "Epoch 3884: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3884: accuracy appended (58.00%)\n", - "Epoch 3884: model set back to train mode\n", - "Epoch 3884: model parameters saved\n", - "Epoch 3885 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3166)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3166)\n", - "Epoch 3885: avg_loss appended (1.3166)\n", - "Epoch 3885: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3885: accuracy appended (58.00%)\n", - "Epoch 3885: model set back to train mode\n", - "Epoch 3885: model parameters saved\n", - "Epoch 3886 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3166)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3166)\n", - "Epoch 3886: avg_loss appended (1.3166)\n", - "Epoch 3886: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3886: accuracy appended (58.00%)\n", - "Epoch 3886: model set back to train mode\n", - "Epoch 3886: model parameters saved\n", - "Epoch 3887 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3166)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3166)\n", - "Epoch 3887: avg_loss appended (1.3166)\n", - "Epoch 3887: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3887: accuracy appended (58.00%)\n", - "Epoch 3887: model set back to train mode\n", - "Epoch 3887: model parameters saved\n", - "Epoch 3888 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3166)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3166)\n", - "Epoch 3888: avg_loss appended (1.3166)\n", - "Epoch 3888: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3888: accuracy appended (58.00%)\n", - "Epoch 3888: model set back to train mode\n", - "Epoch 3888: model parameters saved\n", - "Epoch 3889 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3166)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3166)\n", - "Epoch 3889: avg_loss appended (1.3166)\n", - "Epoch 3889: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3889: accuracy appended (58.00%)\n", - "Epoch 3889: model set back to train mode\n", - "Epoch 3889: model parameters saved\n", - "Epoch 3890 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3166)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3166)\n", - "Epoch 3890: avg_loss appended (1.3166)\n", - "Epoch 3890: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3890: accuracy appended (58.00%)\n", - "Epoch 3890: model set back to train mode\n", - "Epoch 3890: model parameters saved\n", - "Epoch 3891 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3166)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3166)\n", - "Epoch 3891: avg_loss appended (1.3166)\n", - "Epoch 3891: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3891: accuracy appended (58.00%)\n", - "Epoch 3891: model set back to train mode\n", - "Epoch 3891: model parameters saved\n", - "Epoch 3892 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3166)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3166)\n", - "Epoch 3892: avg_loss appended (1.3166)\n", - "Epoch 3892: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3892: accuracy appended (58.00%)\n", - "Epoch 3892: model set back to train mode\n", - "Epoch 3892: model parameters saved\n", - "Epoch 3893 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3166)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3166)\n", - "Epoch 3893: avg_loss appended (1.3166)\n", - "Epoch 3893: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3893: accuracy appended (58.00%)\n", - "Epoch 3893: model set back to train mode\n", - "Epoch 3893: model parameters saved\n", - "Epoch 3894 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3165)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3165)\n", - "Epoch 3894: avg_loss appended (1.3165)\n", - "Epoch 3894: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3894: accuracy appended (58.00%)\n", - "Epoch 3894: model set back to train mode\n", - "Epoch 3894: model parameters saved\n", - "Epoch 3895 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3165)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3165)\n", - "Epoch 3895: avg_loss appended (1.3165)\n", - "Epoch 3895: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3895: accuracy appended (58.00%)\n", - "Epoch 3895: model set back to train mode\n", - "Epoch 3895: model parameters saved\n", - "Epoch 3896 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3165)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3165)\n", - "Epoch 3896: avg_loss appended (1.3165)\n", - "Epoch 3896: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3896: accuracy appended (58.00%)\n", - "Epoch 3896: model set back to train mode\n", - "Epoch 3896: model parameters saved\n", - "Epoch 3897 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3165)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3165)\n", - "Epoch 3897: avg_loss appended (1.3165)\n", - "Epoch 3897: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3897: accuracy appended (58.00%)\n", - "Epoch 3897: model set back to train mode\n", - "Epoch 3897: model parameters saved\n", - "Epoch 3898 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3165)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3165)\n", - "Epoch 3898: avg_loss appended (1.3165)\n", - "Epoch 3898: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3898: accuracy appended (58.00%)\n", - "Epoch 3898: model set back to train mode\n", - "Epoch 3898: model parameters saved\n", - "Epoch 3899 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3165)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3165)\n", - "Epoch 3899: avg_loss appended (1.3165)\n", - "Epoch 3899: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3899: accuracy appended (58.00%)\n", - "Epoch 3899: model set back to train mode\n", - "Epoch 3899: model parameters saved\n", - "Epoch 3900 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3165)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3165)\n", - "Epoch 3900: avg_loss appended (1.3165)\n", - "Epoch 3900: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3900: accuracy appended (58.00%)\n", - "Epoch 3900: model set back to train mode\n", - "Epoch 3900: model parameters saved\n", - "Epoch 3900/10000, Loss: 1.3165, Accuracy: 58.00%\n", - "Epoch 3901 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3165)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3165)\n", - "Epoch 3901: avg_loss appended (1.3165)\n", - "Epoch 3901: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3901: accuracy appended (58.00%)\n", - "Epoch 3901: model set back to train mode\n", - "Epoch 3901: model parameters saved\n", - "Epoch 3902 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3165)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3165)\n", - "Epoch 3902: avg_loss appended (1.3165)\n", - "Epoch 3902: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3902: accuracy appended (58.00%)\n", - "Epoch 3902: model set back to train mode\n", - "Epoch 3902: model parameters saved\n", - "Epoch 3903 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3165)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3165)\n", - "Epoch 3903: avg_loss appended (1.3165)\n", - "Epoch 3903: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3903: accuracy appended (58.00%)\n", - "Epoch 3903: model set back to train mode\n", - "Epoch 3903: model parameters saved\n", - "Epoch 3904 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3164)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3164)\n", - "Epoch 3904: avg_loss appended (1.3164)\n", - "Epoch 3904: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3904: accuracy appended (58.00%)\n", - "Epoch 3904: model set back to train mode\n", - "Epoch 3904: model parameters saved\n", - "Epoch 3905 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3164)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3164)\n", - "Epoch 3905: avg_loss appended (1.3164)\n", - "Epoch 3905: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3905: accuracy appended (58.00%)\n", - "Epoch 3905: model set back to train mode\n", - "Epoch 3905: model parameters saved\n", - "Epoch 3906 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3164)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3164)\n", - "Epoch 3906: avg_loss appended (1.3164)\n", - "Epoch 3906: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3906: accuracy appended (58.00%)\n", - "Epoch 3906: model set back to train mode\n", - "Epoch 3906: model parameters saved\n", - "Epoch 3907 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3164)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3164)\n", - "Epoch 3907: avg_loss appended (1.3164)\n", - "Epoch 3907: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3907: accuracy appended (58.00%)\n", - "Epoch 3907: model set back to train mode\n", - "Epoch 3907: model parameters saved\n", - "Epoch 3908 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3164)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3164)\n", - "Epoch 3908: avg_loss appended (1.3164)\n", - "Epoch 3908: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3908: accuracy appended (58.00%)\n", - "Epoch 3908: model set back to train mode\n", - "Epoch 3908: model parameters saved\n", - "Epoch 3909 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3164)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3164)\n", - "Epoch 3909: avg_loss appended (1.3164)\n", - "Epoch 3909: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3909: accuracy appended (58.00%)\n", - "Epoch 3909: model set back to train mode\n", - "Epoch 3909: model parameters saved\n", - "Epoch 3910 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3164)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3164)\n", - "Epoch 3910: avg_loss appended (1.3164)\n", - "Epoch 3910: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3910: accuracy appended (58.00%)\n", - "Epoch 3910: model set back to train mode\n", - "Epoch 3910: model parameters saved\n", - "Epoch 3911 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3164)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3164)\n", - "Epoch 3911: avg_loss appended (1.3164)\n", - "Epoch 3911: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3911: accuracy appended (58.00%)\n", - "Epoch 3911: model set back to train mode\n", - "Epoch 3911: model parameters saved\n", - "Epoch 3912 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3164)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3164)\n", - "Epoch 3912: avg_loss appended (1.3164)\n", - "Epoch 3912: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3912: accuracy appended (58.00%)\n", - "Epoch 3912: model set back to train mode\n", - "Epoch 3912: model parameters saved\n", - "Epoch 3913 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3164)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3164)\n", - "Epoch 3913: avg_loss appended (1.3164)\n", - "Epoch 3913: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3913: accuracy appended (58.00%)\n", - "Epoch 3913: model set back to train mode\n", - "Epoch 3913: model parameters saved\n", - "Epoch 3914 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3164)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3164)\n", - "Epoch 3914: avg_loss appended (1.3164)\n", - "Epoch 3914: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3914: accuracy appended (58.00%)\n", - "Epoch 3914: model set back to train mode\n", - "Epoch 3914: model parameters saved\n", - "Epoch 3915 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3163)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3163)\n", - "Epoch 3915: avg_loss appended (1.3163)\n", - "Epoch 3915: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3915: accuracy appended (58.00%)\n", - "Epoch 3915: model set back to train mode\n", - "Epoch 3915: model parameters saved\n", - "Epoch 3916 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3163)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3163)\n", - "Epoch 3916: avg_loss appended (1.3163)\n", - "Epoch 3916: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3916: accuracy appended (58.00%)\n", - "Epoch 3916: model set back to train mode\n", - "Epoch 3916: model parameters saved\n", - "Epoch 3917 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3163)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3163)\n", - "Epoch 3917: avg_loss appended (1.3163)\n", - "Epoch 3917: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3917: accuracy appended (58.00%)\n", - "Epoch 3917: model set back to train mode\n", - "Epoch 3917: model parameters saved\n", - "Epoch 3918 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3163)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3163)\n", - "Epoch 3918: avg_loss appended (1.3163)\n", - "Epoch 3918: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3918: accuracy appended (58.00%)\n", - "Epoch 3918: model set back to train mode\n", - "Epoch 3918: model parameters saved\n", - "Epoch 3919 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3163)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3163)\n", - "Epoch 3919: avg_loss appended (1.3163)\n", - "Epoch 3919: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3919: accuracy appended (58.00%)\n", - "Epoch 3919: model set back to train mode\n", - "Epoch 3919: model parameters saved\n", - "Epoch 3920 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3163)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3163)\n", - "Epoch 3920: avg_loss appended (1.3163)\n", - "Epoch 3920: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3920: accuracy appended (58.00%)\n", - "Epoch 3920: model set back to train mode\n", - "Epoch 3920: model parameters saved\n", - "Epoch 3921 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3163)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3163)\n", - "Epoch 3921: avg_loss appended (1.3163)\n", - "Epoch 3921: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3921: accuracy appended (58.00%)\n", - "Epoch 3921: model set back to train mode\n", - "Epoch 3921: model parameters saved\n", - "Epoch 3922 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3163)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3163)\n", - "Epoch 3922: avg_loss appended (1.3163)\n", - "Epoch 3922: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3922: accuracy appended (58.00%)\n", - "Epoch 3922: model set back to train mode\n", - "Epoch 3922: model parameters saved\n", - "Epoch 3923 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3163)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3163)\n", - "Epoch 3923: avg_loss appended (1.3163)\n", - "Epoch 3923: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3923: accuracy appended (58.00%)\n", - "Epoch 3923: model set back to train mode\n", - "Epoch 3923: model parameters saved\n", - "Epoch 3924 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3163)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3163)\n", - "Epoch 3924: avg_loss appended (1.3163)\n", - "Epoch 3924: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3924: accuracy appended (58.00%)\n", - "Epoch 3924: model set back to train mode\n", - "Epoch 3924: model parameters saved\n", - "Epoch 3925 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3163)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3163)\n", - "Epoch 3925: avg_loss appended (1.3163)\n", - "Epoch 3925: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3925: accuracy appended (58.00%)\n", - "Epoch 3925: model set back to train mode\n", - "Epoch 3925: model parameters saved\n", - "Epoch 3926 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3162)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3162)\n", - "Epoch 3926: avg_loss appended (1.3162)\n", - "Epoch 3926: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3926: accuracy appended (58.00%)\n", - "Epoch 3926: model set back to train mode\n", - "Epoch 3926: model parameters saved\n", - "Epoch 3927 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3162)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3162)\n", - "Epoch 3927: avg_loss appended (1.3162)\n", - "Epoch 3927: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3927: accuracy appended (58.00%)\n", - "Epoch 3927: model set back to train mode\n", - "Epoch 3927: model parameters saved\n", - "Epoch 3928 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3162)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3162)\n", - "Epoch 3928: avg_loss appended (1.3162)\n", - "Epoch 3928: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3928: accuracy appended (58.00%)\n", - "Epoch 3928: model set back to train mode\n", - "Epoch 3928: model parameters saved\n", - "Epoch 3929 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3162)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3162)\n", - "Epoch 3929: avg_loss appended (1.3162)\n", - "Epoch 3929: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3929: accuracy appended (58.00%)\n", - "Epoch 3929: model set back to train mode\n", - "Epoch 3929: model parameters saved\n", - "Epoch 3930 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3162)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3162)\n", - "Epoch 3930: avg_loss appended (1.3162)\n", - "Epoch 3930: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3930: accuracy appended (58.00%)\n", - "Epoch 3930: model set back to train mode\n", - "Epoch 3930: model parameters saved\n", - "Epoch 3931 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3162)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3162)\n", - "Epoch 3931: avg_loss appended (1.3162)\n", - "Epoch 3931: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3931: accuracy appended (58.00%)\n", - "Epoch 3931: model set back to train mode\n", - "Epoch 3931: model parameters saved\n", - "Epoch 3932 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3162)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3162)\n", - "Epoch 3932: avg_loss appended (1.3162)\n", - "Epoch 3932: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3932: accuracy appended (58.00%)\n", - "Epoch 3932: model set back to train mode\n", - "Epoch 3932: model parameters saved\n", - "Epoch 3933 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3162)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3162)\n", - "Epoch 3933: avg_loss appended (1.3162)\n", - "Epoch 3933: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3933: accuracy appended (58.00%)\n", - "Epoch 3933: model set back to train mode\n", - "Epoch 3933: model parameters saved\n", - "Epoch 3934 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3162)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3162)\n", - "Epoch 3934: avg_loss appended (1.3162)\n", - "Epoch 3934: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3934: accuracy appended (58.00%)\n", - "Epoch 3934: model set back to train mode\n", - "Epoch 3934: model parameters saved\n", - "Epoch 3935 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3162)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3162)\n", - "Epoch 3935: avg_loss appended (1.3162)\n", - "Epoch 3935: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3935: accuracy appended (58.00%)\n", - "Epoch 3935: model set back to train mode\n", - "Epoch 3935: model parameters saved\n", - "Epoch 3936 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3162)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3162)\n", - "Epoch 3936: avg_loss appended (1.3162)\n", - "Epoch 3936: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3936: accuracy appended (58.00%)\n", - "Epoch 3936: model set back to train mode\n", - "Epoch 3936: model parameters saved\n", - "Epoch 3937 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3162)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3162)\n", - "Epoch 3937: avg_loss appended (1.3162)\n", - "Epoch 3937: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3937: accuracy appended (58.00%)\n", - "Epoch 3937: model set back to train mode\n", - "Epoch 3937: model parameters saved\n", - "Epoch 3938 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3161)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3161)\n", - "Epoch 3938: avg_loss appended (1.3161)\n", - "Epoch 3938: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3938: accuracy appended (58.00%)\n", - "Epoch 3938: model set back to train mode\n", - "Epoch 3938: model parameters saved\n", - "Epoch 3939 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3161)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3161)\n", - "Epoch 3939: avg_loss appended (1.3161)\n", - "Epoch 3939: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3939: accuracy appended (58.00%)\n", - "Epoch 3939: model set back to train mode\n", - "Epoch 3939: model parameters saved\n", - "Epoch 3940 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3161)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3161)\n", - "Epoch 3940: avg_loss appended (1.3161)\n", - "Epoch 3940: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3940: accuracy appended (58.00%)\n", - "Epoch 3940: model set back to train mode\n", - "Epoch 3940: model parameters saved\n", - "Epoch 3941 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3161)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3161)\n", - "Epoch 3941: avg_loss appended (1.3161)\n", - "Epoch 3941: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3941: accuracy appended (58.00%)\n", - "Epoch 3941: model set back to train mode\n", - "Epoch 3941: model parameters saved\n", - "Epoch 3942 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3161)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3161)\n", - "Epoch 3942: avg_loss appended (1.3161)\n", - "Epoch 3942: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3942: accuracy appended (58.00%)\n", - "Epoch 3942: model set back to train mode\n", - "Epoch 3942: model parameters saved\n", - "Epoch 3943 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3161)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3161)\n", - "Epoch 3943: avg_loss appended (1.3161)\n", - "Epoch 3943: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3943: accuracy appended (58.00%)\n", - "Epoch 3943: model set back to train mode\n", - "Epoch 3943: model parameters saved\n", - "Epoch 3944 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3161)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3161)\n", - "Epoch 3944: avg_loss appended (1.3161)\n", - "Epoch 3944: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3944: accuracy appended (58.00%)\n", - "Epoch 3944: model set back to train mode\n", - "Epoch 3944: model parameters saved\n", - "Epoch 3945 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3161)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3161)\n", - "Epoch 3945: avg_loss appended (1.3161)\n", - "Epoch 3945: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3945: accuracy appended (58.00%)\n", - "Epoch 3945: model set back to train mode\n", - "Epoch 3945: model parameters saved\n", - "Epoch 3946 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3161)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3161)\n", - "Epoch 3946: avg_loss appended (1.3161)\n", - "Epoch 3946: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3946: accuracy appended (58.00%)\n", - "Epoch 3946: model set back to train mode\n", - "Epoch 3946: model parameters saved\n", - "Epoch 3947 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3161)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3161)\n", - "Epoch 3947: avg_loss appended (1.3161)\n", - "Epoch 3947: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3947: accuracy appended (58.00%)\n", - "Epoch 3947: model set back to train mode\n", - "Epoch 3947: model parameters saved\n", - "Epoch 3948 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3161)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3161)\n", - "Epoch 3948: avg_loss appended (1.3161)\n", - "Epoch 3948: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3948: accuracy appended (58.00%)\n", - "Epoch 3948: model set back to train mode\n", - "Epoch 3948: model parameters saved\n", - "Epoch 3949 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3161)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3161)\n", - "Epoch 3949: avg_loss appended (1.3161)\n", - "Epoch 3949: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3949: accuracy appended (58.00%)\n", - "Epoch 3949: model set back to train mode\n", - "Epoch 3949: model parameters saved\n", - "Epoch 3950 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3161)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3161)\n", - "Epoch 3950: avg_loss appended (1.3161)\n", - "Epoch 3950: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3950: accuracy appended (58.00%)\n", - "Epoch 3950: model set back to train mode\n", - "Epoch 3950: model parameters saved\n", - "Epoch 3951 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3160)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3160)\n", - "Epoch 3951: avg_loss appended (1.3160)\n", - "Epoch 3951: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3951: accuracy appended (58.00%)\n", - "Epoch 3951: model set back to train mode\n", - "Epoch 3951: model parameters saved\n", - "Epoch 3952 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3160)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3160)\n", - "Epoch 3952: avg_loss appended (1.3160)\n", - "Epoch 3952: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3952: accuracy appended (58.00%)\n", - "Epoch 3952: model set back to train mode\n", - "Epoch 3952: model parameters saved\n", - "Epoch 3953 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3160)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3160)\n", - "Epoch 3953: avg_loss appended (1.3160)\n", - "Epoch 3953: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3953: accuracy appended (58.00%)\n", - "Epoch 3953: model set back to train mode\n", - "Epoch 3953: model parameters saved\n", - "Epoch 3954 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3160)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3160)\n", - "Epoch 3954: avg_loss appended (1.3160)\n", - "Epoch 3954: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3954: accuracy appended (58.00%)\n", - "Epoch 3954: model set back to train mode\n", - "Epoch 3954: model parameters saved\n", - "Epoch 3955 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3160)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3160)\n", - "Epoch 3955: avg_loss appended (1.3160)\n", - "Epoch 3955: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3955: accuracy appended (58.00%)\n", - "Epoch 3955: model set back to train mode\n", - "Epoch 3955: model parameters saved\n", - "Epoch 3956 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3160)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3160)\n", - "Epoch 3956: avg_loss appended (1.3160)\n", - "Epoch 3956: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3956: accuracy appended (58.00%)\n", - "Epoch 3956: model set back to train mode\n", - "Epoch 3956: model parameters saved\n", - "Epoch 3957 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3160)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3160)\n", - "Epoch 3957: avg_loss appended (1.3160)\n", - "Epoch 3957: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3957: accuracy appended (58.00%)\n", - "Epoch 3957: model set back to train mode\n", - "Epoch 3957: model parameters saved\n", - "Epoch 3958 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3160)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3160)\n", - "Epoch 3958: avg_loss appended (1.3160)\n", - "Epoch 3958: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3958: accuracy appended (58.00%)\n", - "Epoch 3958: model set back to train mode\n", - "Epoch 3958: model parameters saved\n", - "Epoch 3959 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3160)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3160)\n", - "Epoch 3959: avg_loss appended (1.3160)\n", - "Epoch 3959: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3959: accuracy appended (58.00%)\n", - "Epoch 3959: model set back to train mode\n", - "Epoch 3959: model parameters saved\n", - "Epoch 3960 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3160)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3160)\n", - "Epoch 3960: avg_loss appended (1.3160)\n", - "Epoch 3960: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3960: accuracy appended (58.00%)\n", - "Epoch 3960: model set back to train mode\n", - "Epoch 3960: model parameters saved\n", - "Epoch 3961 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3160)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3160)\n", - "Epoch 3961: avg_loss appended (1.3160)\n", - "Epoch 3961: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3961: accuracy appended (58.00%)\n", - "Epoch 3961: model set back to train mode\n", - "Epoch 3961: model parameters saved\n", - "Epoch 3962 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3160)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3160)\n", - "Epoch 3962: avg_loss appended (1.3160)\n", - "Epoch 3962: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3962: accuracy appended (58.00%)\n", - "Epoch 3962: model set back to train mode\n", - "Epoch 3962: model parameters saved\n", - "Epoch 3963 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3160)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3160)\n", - "Epoch 3963: avg_loss appended (1.3160)\n", - "Epoch 3963: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3963: accuracy appended (58.00%)\n", - "Epoch 3963: model set back to train mode\n", - "Epoch 3963: model parameters saved\n", - "Epoch 3964 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3159)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3159)\n", - "Epoch 3964: avg_loss appended (1.3159)\n", - "Epoch 3964: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3964: accuracy appended (58.00%)\n", - "Epoch 3964: model set back to train mode\n", - "Epoch 3964: model parameters saved\n", - "Epoch 3965 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3159)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3159)\n", - "Epoch 3965: avg_loss appended (1.3159)\n", - "Epoch 3965: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3965: accuracy appended (58.00%)\n", - "Epoch 3965: model set back to train mode\n", - "Epoch 3965: model parameters saved\n", - "Epoch 3966 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3159)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3159)\n", - "Epoch 3966: avg_loss appended (1.3159)\n", - "Epoch 3966: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3966: accuracy appended (58.00%)\n", - "Epoch 3966: model set back to train mode\n", - "Epoch 3966: model parameters saved\n", - "Epoch 3967 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3159)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3159)\n", - "Epoch 3967: avg_loss appended (1.3159)\n", - "Epoch 3967: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3967: accuracy appended (58.00%)\n", - "Epoch 3967: model set back to train mode\n", - "Epoch 3967: model parameters saved\n", - "Epoch 3968 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3159)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3159)\n", - "Epoch 3968: avg_loss appended (1.3159)\n", - "Epoch 3968: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3968: accuracy appended (58.00%)\n", - "Epoch 3968: model set back to train mode\n", - "Epoch 3968: model parameters saved\n", - "Epoch 3969 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3159)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3159)\n", - "Epoch 3969: avg_loss appended (1.3159)\n", - "Epoch 3969: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3969: accuracy appended (58.00%)\n", - "Epoch 3969: model set back to train mode\n", - "Epoch 3969: model parameters saved\n", - "Epoch 3970 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3159)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3159)\n", - "Epoch 3970: avg_loss appended (1.3159)\n", - "Epoch 3970: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3970: accuracy appended (58.00%)\n", - "Epoch 3970: model set back to train mode\n", - "Epoch 3970: model parameters saved\n", - "Epoch 3971 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3159)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3159)\n", - "Epoch 3971: avg_loss appended (1.3159)\n", - "Epoch 3971: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3971: accuracy appended (58.00%)\n", - "Epoch 3971: model set back to train mode\n", - "Epoch 3971: model parameters saved\n", - "Epoch 3972 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3159)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3159)\n", - "Epoch 3972: avg_loss appended (1.3159)\n", - "Epoch 3972: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3972: accuracy appended (58.00%)\n", - "Epoch 3972: model set back to train mode\n", - "Epoch 3972: model parameters saved\n", - "Epoch 3973 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3159)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3159)\n", - "Epoch 3973: avg_loss appended (1.3159)\n", - "Epoch 3973: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3973: accuracy appended (58.00%)\n", - "Epoch 3973: model set back to train mode\n", - "Epoch 3973: model parameters saved\n", - "Epoch 3974 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3159)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3159)\n", - "Epoch 3974: avg_loss appended (1.3159)\n", - "Epoch 3974: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3974: accuracy appended (58.00%)\n", - "Epoch 3974: model set back to train mode\n", - "Epoch 3974: model parameters saved\n", - "Epoch 3975 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3159)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3159)\n", - "Epoch 3975: avg_loss appended (1.3159)\n", - "Epoch 3975: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3975: accuracy appended (58.00%)\n", - "Epoch 3975: model set back to train mode\n", - "Epoch 3975: model parameters saved\n", - "Epoch 3976 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3159)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3159)\n", - "Epoch 3976: avg_loss appended (1.3159)\n", - "Epoch 3976: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3976: accuracy appended (58.00%)\n", - "Epoch 3976: model set back to train mode\n", - "Epoch 3976: model parameters saved\n", - "Epoch 3977 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3159)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3159)\n", - "Epoch 3977: avg_loss appended (1.3159)\n", - "Epoch 3977: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3977: accuracy appended (58.00%)\n", - "Epoch 3977: model set back to train mode\n", - "Epoch 3977: model parameters saved\n", - "Epoch 3978 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3159)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3159)\n", - "Epoch 3978: avg_loss appended (1.3159)\n", - "Epoch 3978: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3978: accuracy appended (58.00%)\n", - "Epoch 3978: model set back to train mode\n", - "Epoch 3978: model parameters saved\n", - "Epoch 3979 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3158)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3158)\n", - "Epoch 3979: avg_loss appended (1.3158)\n", - "Epoch 3979: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3979: accuracy appended (58.00%)\n", - "Epoch 3979: model set back to train mode\n", - "Epoch 3979: model parameters saved\n", - "Epoch 3980 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3158)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3158)\n", - "Epoch 3980: avg_loss appended (1.3158)\n", - "Epoch 3980: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3980: accuracy appended (58.00%)\n", - "Epoch 3980: model set back to train mode\n", - "Epoch 3980: model parameters saved\n", - "Epoch 3981 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3158)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3158)\n", - "Epoch 3981: avg_loss appended (1.3158)\n", - "Epoch 3981: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3981: accuracy appended (58.00%)\n", - "Epoch 3981: model set back to train mode\n", - "Epoch 3981: model parameters saved\n", - "Epoch 3982 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3158)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3158)\n", - "Epoch 3982: avg_loss appended (1.3158)\n", - "Epoch 3982: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3982: accuracy appended (58.00%)\n", - "Epoch 3982: model set back to train mode\n", - "Epoch 3982: model parameters saved\n", - "Epoch 3983 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3158)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3158)\n", - "Epoch 3983: avg_loss appended (1.3158)\n", - "Epoch 3983: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3983: accuracy appended (58.00%)\n", - "Epoch 3983: model set back to train mode\n", - "Epoch 3983: model parameters saved\n", - "Epoch 3984 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3158)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3158)\n", - "Epoch 3984: avg_loss appended (1.3158)\n", - "Epoch 3984: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3984: accuracy appended (58.00%)\n", - "Epoch 3984: model set back to train mode\n", - "Epoch 3984: model parameters saved\n", - "Epoch 3985 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3158)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3158)\n", - "Epoch 3985: avg_loss appended (1.3158)\n", - "Epoch 3985: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3985: accuracy appended (58.00%)\n", - "Epoch 3985: model set back to train mode\n", - "Epoch 3985: model parameters saved\n", - "Epoch 3986 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3158)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3158)\n", - "Epoch 3986: avg_loss appended (1.3158)\n", - "Epoch 3986: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3986: accuracy appended (58.00%)\n", - "Epoch 3986: model set back to train mode\n", - "Epoch 3986: model parameters saved\n", - "Epoch 3987 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3158)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3158)\n", - "Epoch 3987: avg_loss appended (1.3158)\n", - "Epoch 3987: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3987: accuracy appended (58.00%)\n", - "Epoch 3987: model set back to train mode\n", - "Epoch 3987: model parameters saved\n", - "Epoch 3988 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3158)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3158)\n", - "Epoch 3988: avg_loss appended (1.3158)\n", - "Epoch 3988: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3988: accuracy appended (58.00%)\n", - "Epoch 3988: model set back to train mode\n", - "Epoch 3988: model parameters saved\n", - "Epoch 3989 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3158)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3158)\n", - "Epoch 3989: avg_loss appended (1.3158)\n", - "Epoch 3989: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3989: accuracy appended (58.00%)\n", - "Epoch 3989: model set back to train mode\n", - "Epoch 3989: model parameters saved\n", - "Epoch 3990 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3158)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3158)\n", - "Epoch 3990: avg_loss appended (1.3158)\n", - "Epoch 3990: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3990: accuracy appended (58.00%)\n", - "Epoch 3990: model set back to train mode\n", - "Epoch 3990: model parameters saved\n", - "Epoch 3991 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3158)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3158)\n", - "Epoch 3991: avg_loss appended (1.3158)\n", - "Epoch 3991: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3991: accuracy appended (58.00%)\n", - "Epoch 3991: model set back to train mode\n", - "Epoch 3991: model parameters saved\n", - "Epoch 3992 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3158)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3158)\n", - "Epoch 3992: avg_loss appended (1.3158)\n", - "Epoch 3992: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3992: accuracy appended (58.00%)\n", - "Epoch 3992: model set back to train mode\n", - "Epoch 3992: model parameters saved\n", - "Epoch 3993 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3158)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3158)\n", - "Epoch 3993: avg_loss appended (1.3158)\n", - "Epoch 3993: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3993: accuracy appended (58.00%)\n", - "Epoch 3993: model set back to train mode\n", - "Epoch 3993: model parameters saved\n", - "Epoch 3994 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3157)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3157)\n", - "Epoch 3994: avg_loss appended (1.3157)\n", - "Epoch 3994: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3994: accuracy appended (58.00%)\n", - "Epoch 3994: model set back to train mode\n", - "Epoch 3994: model parameters saved\n", - "Epoch 3995 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3157)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3157)\n", - "Epoch 3995: avg_loss appended (1.3157)\n", - "Epoch 3995: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3995: accuracy appended (58.00%)\n", - "Epoch 3995: model set back to train mode\n", - "Epoch 3995: model parameters saved\n", - "Epoch 3996 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3157)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3157)\n", - "Epoch 3996: avg_loss appended (1.3157)\n", - "Epoch 3996: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3996: accuracy appended (58.00%)\n", - "Epoch 3996: model set back to train mode\n", - "Epoch 3996: model parameters saved\n", - "Epoch 3997 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3157)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3157)\n", - "Epoch 3997: avg_loss appended (1.3157)\n", - "Epoch 3997: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3997: accuracy appended (58.00%)\n", - "Epoch 3997: model set back to train mode\n", - "Epoch 3997: model parameters saved\n", - "Epoch 3998 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3157)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3157)\n", - "Epoch 3998: avg_loss appended (1.3157)\n", - "Epoch 3998: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3998: accuracy appended (58.00%)\n", - "Epoch 3998: model set back to train mode\n", - "Epoch 3998: model parameters saved\n", - "Epoch 3999 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3157)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3157)\n", - "Epoch 3999: avg_loss appended (1.3157)\n", - "Epoch 3999: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 3999: accuracy appended (58.00%)\n", - "Epoch 3999: model set back to train mode\n", - "Epoch 3999: model parameters saved\n", - "Epoch 4000 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3157)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3157)\n", - "Epoch 4000: avg_loss appended (1.3157)\n", - "Epoch 4000: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 4000: accuracy appended (58.00%)\n", - "Epoch 4000: model set back to train mode\n", - "Epoch 4000: model parameters saved\n", - "Epoch 4000/10000, Loss: 1.3157, Accuracy: 58.00%\n", - "Epoch 4001 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3157)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3157)\n", - "Epoch 4001: avg_loss appended (1.3157)\n", - "Epoch 4001: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 4001: accuracy appended (58.00%)\n", - "Epoch 4001: model set back to train mode\n", - "Epoch 4001: model parameters saved\n", - "Epoch 4002 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3157)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3157)\n", - "Epoch 4002: avg_loss appended (1.3157)\n", - "Epoch 4002: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 4002: accuracy appended (58.00%)\n", - "Epoch 4002: model set back to train mode\n", - "Epoch 4002: model parameters saved\n", - "Epoch 4003 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3157)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3157)\n", - "Epoch 4003: avg_loss appended (1.3157)\n", - "Epoch 4003: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 4003: accuracy appended (58.00%)\n", - "Epoch 4003: model set back to train mode\n", - "Epoch 4003: model parameters saved\n", - "Epoch 4004 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3157)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3157)\n", - "Epoch 4004: avg_loss appended (1.3157)\n", - "Epoch 4004: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 4004: accuracy appended (58.00%)\n", - "Epoch 4004: model set back to train mode\n", - "Epoch 4004: model parameters saved\n", - "Epoch 4005 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3157)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3157)\n", - "Epoch 4005: avg_loss appended (1.3157)\n", - "Epoch 4005: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 4005: accuracy appended (58.00%)\n", - "Epoch 4005: model set back to train mode\n", - "Epoch 4005: model parameters saved\n", - "Epoch 4006 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3157)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3157)\n", - "Epoch 4006: avg_loss appended (1.3157)\n", - "Epoch 4006: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 4006: accuracy appended (58.00%)\n", - "Epoch 4006: model set back to train mode\n", - "Epoch 4006: model parameters saved\n", - "Epoch 4007 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3157)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3157)\n", - "Epoch 4007: avg_loss appended (1.3157)\n", - "Epoch 4007: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 4007: accuracy appended (58.00%)\n", - "Epoch 4007: model set back to train mode\n", - "Epoch 4007: model parameters saved\n", - "Epoch 4008 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3157)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3157)\n", - "Epoch 4008: avg_loss appended (1.3157)\n", - "Epoch 4008: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 4008: accuracy appended (58.00%)\n", - "Epoch 4008: model set back to train mode\n", - "Epoch 4008: model parameters saved\n", - "Epoch 4009 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3157)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3157)\n", - "Epoch 4009: avg_loss appended (1.3157)\n", - "Epoch 4009: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 4009: accuracy appended (58.00%)\n", - "Epoch 4009: model set back to train mode\n", - "Epoch 4009: model parameters saved\n", - "Epoch 4010 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3156)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3156)\n", - "Epoch 4010: avg_loss appended (1.3156)\n", - "Epoch 4010: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 4010: accuracy appended (58.00%)\n", - "Epoch 4010: model set back to train mode\n", - "Epoch 4010: model parameters saved\n", - "Epoch 4011 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3156)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3156)\n", - "Epoch 4011: avg_loss appended (1.3156)\n", - "Epoch 4011: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 4011: accuracy appended (58.00%)\n", - "Epoch 4011: model set back to train mode\n", - "Epoch 4011: model parameters saved\n", - "Epoch 4012 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3156)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3156)\n", - "Epoch 4012: avg_loss appended (1.3156)\n", - "Epoch 4012: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 4012: accuracy appended (58.00%)\n", - "Epoch 4012: model set back to train mode\n", - "Epoch 4012: model parameters saved\n", - "Epoch 4013 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3156)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3156)\n", - "Epoch 4013: avg_loss appended (1.3156)\n", - "Epoch 4013: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 4013: accuracy appended (58.00%)\n", - "Epoch 4013: model set back to train mode\n", - "Epoch 4013: model parameters saved\n", - "Epoch 4014 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3156)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3156)\n", - "Epoch 4014: avg_loss appended (1.3156)\n", - "Epoch 4014: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 4014: accuracy appended (58.00%)\n", - "Epoch 4014: model set back to train mode\n", - "Epoch 4014: model parameters saved\n", - "Epoch 4015 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3156)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3156)\n", - "Epoch 4015: avg_loss appended (1.3156)\n", - "Epoch 4015: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 4015: accuracy appended (58.00%)\n", - "Epoch 4015: model set back to train mode\n", - "Epoch 4015: model parameters saved\n", - "Epoch 4016 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3156)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3156)\n", - "Epoch 4016: avg_loss appended (1.3156)\n", - "Epoch 4016: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 4016: accuracy appended (58.00%)\n", - "Epoch 4016: model set back to train mode\n", - "Epoch 4016: model parameters saved\n", - "Epoch 4017 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3156)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3156)\n", - "Epoch 4017: avg_loss appended (1.3156)\n", - "Epoch 4017: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=232, total=400)\n", - "Final test accuracy: 58.00%\n", - "Epoch 4017: accuracy appended (58.00%)\n", - "Epoch 4017: model set back to train mode\n", - "Epoch 4017: model parameters saved\n", - "Epoch 4018 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3156)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3156)\n", - "Epoch 4018: avg_loss appended (1.3156)\n", - "Epoch 4018: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=236, total=400)\n", - "Final test accuracy: 59.00%\n", - "Epoch 4018: accuracy appended (59.00%)\n", - "Epoch 4018: model set back to train mode\n", - "Epoch 4018: model parameters saved\n", - "Epoch 4019 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3156)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3156)\n", - "Epoch 4019: avg_loss appended (1.3156)\n", - "Epoch 4019: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=236, total=400)\n", - "Final test accuracy: 59.00%\n", - "Epoch 4019: accuracy appended (59.00%)\n", - "Epoch 4019: model set back to train mode\n", - "Epoch 4019: model parameters saved\n", - "Epoch 4020 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3156)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3156)\n", - "Epoch 4020: avg_loss appended (1.3156)\n", - "Epoch 4020: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4020: accuracy appended (60.00%)\n", - "Epoch 4020: model set back to train mode\n", - "Epoch 4020: model parameters saved\n", - "Epoch 4021 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3156)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3156)\n", - "Epoch 4021: avg_loss appended (1.3156)\n", - "Epoch 4021: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4021: accuracy appended (60.00%)\n", - "Epoch 4021: model set back to train mode\n", - "Epoch 4021: model parameters saved\n", - "Epoch 4022 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3156)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3156)\n", - "Epoch 4022: avg_loss appended (1.3156)\n", - "Epoch 4022: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4022: accuracy appended (60.00%)\n", - "Epoch 4022: model set back to train mode\n", - "Epoch 4022: model parameters saved\n", - "Epoch 4023 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3156)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3156)\n", - "Epoch 4023: avg_loss appended (1.3156)\n", - "Epoch 4023: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4023: accuracy appended (60.00%)\n", - "Epoch 4023: model set back to train mode\n", - "Epoch 4023: model parameters saved\n", - "Epoch 4024 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3156)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3156)\n", - "Epoch 4024: avg_loss appended (1.3156)\n", - "Epoch 4024: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4024: accuracy appended (60.00%)\n", - "Epoch 4024: model set back to train mode\n", - "Epoch 4024: model parameters saved\n", - "Epoch 4025 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3156)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3156)\n", - "Epoch 4025: avg_loss appended (1.3156)\n", - "Epoch 4025: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4025: accuracy appended (60.00%)\n", - "Epoch 4025: model set back to train mode\n", - "Epoch 4025: model parameters saved\n", - "Epoch 4026 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3156)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3156)\n", - "Epoch 4026: avg_loss appended (1.3156)\n", - "Epoch 4026: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4026: accuracy appended (60.00%)\n", - "Epoch 4026: model set back to train mode\n", - "Epoch 4026: model parameters saved\n", - "Epoch 4027 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3155)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3155)\n", - "Epoch 4027: avg_loss appended (1.3155)\n", - "Epoch 4027: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4027: accuracy appended (60.00%)\n", - "Epoch 4027: model set back to train mode\n", - "Epoch 4027: model parameters saved\n", - "Epoch 4028 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3155)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3155)\n", - "Epoch 4028: avg_loss appended (1.3155)\n", - "Epoch 4028: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4028: accuracy appended (60.00%)\n", - "Epoch 4028: model set back to train mode\n", - "Epoch 4028: model parameters saved\n", - "Epoch 4029 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3155)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3155)\n", - "Epoch 4029: avg_loss appended (1.3155)\n", - "Epoch 4029: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4029: accuracy appended (60.00%)\n", - "Epoch 4029: model set back to train mode\n", - "Epoch 4029: model parameters saved\n", - "Epoch 4030 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3155)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3155)\n", - "Epoch 4030: avg_loss appended (1.3155)\n", - "Epoch 4030: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4030: accuracy appended (60.00%)\n", - "Epoch 4030: model set back to train mode\n", - "Epoch 4030: model parameters saved\n", - "Epoch 4031 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3155)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3155)\n", - "Epoch 4031: avg_loss appended (1.3155)\n", - "Epoch 4031: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4031: accuracy appended (60.00%)\n", - "Epoch 4031: model set back to train mode\n", - "Epoch 4031: model parameters saved\n", - "Epoch 4032 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3155)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3155)\n", - "Epoch 4032: avg_loss appended (1.3155)\n", - "Epoch 4032: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4032: accuracy appended (60.00%)\n", - "Epoch 4032: model set back to train mode\n", - "Epoch 4032: model parameters saved\n", - "Epoch 4033 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3155)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3155)\n", - "Epoch 4033: avg_loss appended (1.3155)\n", - "Epoch 4033: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4033: accuracy appended (60.00%)\n", - "Epoch 4033: model set back to train mode\n", - "Epoch 4033: model parameters saved\n", - "Epoch 4034 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3155)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3155)\n", - "Epoch 4034: avg_loss appended (1.3155)\n", - "Epoch 4034: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4034: accuracy appended (60.00%)\n", - "Epoch 4034: model set back to train mode\n", - "Epoch 4034: model parameters saved\n", - "Epoch 4035 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3155)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3155)\n", - "Epoch 4035: avg_loss appended (1.3155)\n", - "Epoch 4035: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4035: accuracy appended (60.00%)\n", - "Epoch 4035: model set back to train mode\n", - "Epoch 4035: model parameters saved\n", - "Epoch 4036 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3155)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3155)\n", - "Epoch 4036: avg_loss appended (1.3155)\n", - "Epoch 4036: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4036: accuracy appended (60.00%)\n", - "Epoch 4036: model set back to train mode\n", - "Epoch 4036: model parameters saved\n", - "Epoch 4037 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3155)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3155)\n", - "Epoch 4037: avg_loss appended (1.3155)\n", - "Epoch 4037: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4037: accuracy appended (60.00%)\n", - "Epoch 4037: model set back to train mode\n", - "Epoch 4037: model parameters saved\n", - "Epoch 4038 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3155)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3155)\n", - "Epoch 4038: avg_loss appended (1.3155)\n", - "Epoch 4038: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4038: accuracy appended (60.00%)\n", - "Epoch 4038: model set back to train mode\n", - "Epoch 4038: model parameters saved\n", - "Epoch 4039 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3155)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3155)\n", - "Epoch 4039: avg_loss appended (1.3155)\n", - "Epoch 4039: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4039: accuracy appended (60.00%)\n", - "Epoch 4039: model set back to train mode\n", - "Epoch 4039: model parameters saved\n", - "Epoch 4040 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3155)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3155)\n", - "Epoch 4040: avg_loss appended (1.3155)\n", - "Epoch 4040: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4040: accuracy appended (60.00%)\n", - "Epoch 4040: model set back to train mode\n", - "Epoch 4040: model parameters saved\n", - "Epoch 4041 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3155)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3155)\n", - "Epoch 4041: avg_loss appended (1.3155)\n", - "Epoch 4041: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4041: accuracy appended (60.00%)\n", - "Epoch 4041: model set back to train mode\n", - "Epoch 4041: model parameters saved\n", - "Epoch 4042 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3155)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3155)\n", - "Epoch 4042: avg_loss appended (1.3155)\n", - "Epoch 4042: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4042: accuracy appended (60.00%)\n", - "Epoch 4042: model set back to train mode\n", - "Epoch 4042: model parameters saved\n", - "Epoch 4043 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3155)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3155)\n", - "Epoch 4043: avg_loss appended (1.3155)\n", - "Epoch 4043: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4043: accuracy appended (60.00%)\n", - "Epoch 4043: model set back to train mode\n", - "Epoch 4043: model parameters saved\n", - "Epoch 4044 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3155)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3155)\n", - "Epoch 4044: avg_loss appended (1.3155)\n", - "Epoch 4044: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4044: accuracy appended (60.00%)\n", - "Epoch 4044: model set back to train mode\n", - "Epoch 4044: model parameters saved\n", - "Epoch 4045 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3154)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3154)\n", - "Epoch 4045: avg_loss appended (1.3154)\n", - "Epoch 4045: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4045: accuracy appended (60.00%)\n", - "Epoch 4045: model set back to train mode\n", - "Epoch 4045: model parameters saved\n", - "Epoch 4046 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3154)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3154)\n", - "Epoch 4046: avg_loss appended (1.3154)\n", - "Epoch 4046: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4046: accuracy appended (60.00%)\n", - "Epoch 4046: model set back to train mode\n", - "Epoch 4046: model parameters saved\n", - "Epoch 4047 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3154)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3154)\n", - "Epoch 4047: avg_loss appended (1.3154)\n", - "Epoch 4047: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4047: accuracy appended (60.00%)\n", - "Epoch 4047: model set back to train mode\n", - "Epoch 4047: model parameters saved\n", - "Epoch 4048 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3154)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3154)\n", - "Epoch 4048: avg_loss appended (1.3154)\n", - "Epoch 4048: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4048: accuracy appended (60.00%)\n", - "Epoch 4048: model set back to train mode\n", - "Epoch 4048: model parameters saved\n", - "Epoch 4049 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3154)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3154)\n", - "Epoch 4049: avg_loss appended (1.3154)\n", - "Epoch 4049: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4049: accuracy appended (60.00%)\n", - "Epoch 4049: model set back to train mode\n", - "Epoch 4049: model parameters saved\n", - "Epoch 4050 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3154)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3154)\n", - "Epoch 4050: avg_loss appended (1.3154)\n", - "Epoch 4050: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4050: accuracy appended (60.00%)\n", - "Epoch 4050: model set back to train mode\n", - "Epoch 4050: model parameters saved\n", - "Epoch 4051 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3154)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3154)\n", - "Epoch 4051: avg_loss appended (1.3154)\n", - "Epoch 4051: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4051: accuracy appended (60.00%)\n", - "Epoch 4051: model set back to train mode\n", - "Epoch 4051: model parameters saved\n", - "Epoch 4052 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3154)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3154)\n", - "Epoch 4052: avg_loss appended (1.3154)\n", - "Epoch 4052: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4052: accuracy appended (60.00%)\n", - "Epoch 4052: model set back to train mode\n", - "Epoch 4052: model parameters saved\n", - "Epoch 4053 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3154)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3154)\n", - "Epoch 4053: avg_loss appended (1.3154)\n", - "Epoch 4053: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4053: accuracy appended (60.00%)\n", - "Epoch 4053: model set back to train mode\n", - "Epoch 4053: model parameters saved\n", - "Epoch 4054 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3154)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3154)\n", - "Epoch 4054: avg_loss appended (1.3154)\n", - "Epoch 4054: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4054: accuracy appended (60.00%)\n", - "Epoch 4054: model set back to train mode\n", - "Epoch 4054: model parameters saved\n", - "Epoch 4055 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3154)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3154)\n", - "Epoch 4055: avg_loss appended (1.3154)\n", - "Epoch 4055: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4055: accuracy appended (60.00%)\n", - "Epoch 4055: model set back to train mode\n", - "Epoch 4055: model parameters saved\n", - "Epoch 4056 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3154)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3154)\n", - "Epoch 4056: avg_loss appended (1.3154)\n", - "Epoch 4056: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4056: accuracy appended (60.00%)\n", - "Epoch 4056: model set back to train mode\n", - "Epoch 4056: model parameters saved\n", - "Epoch 4057 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3154)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3154)\n", - "Epoch 4057: avg_loss appended (1.3154)\n", - "Epoch 4057: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4057: accuracy appended (60.00%)\n", - "Epoch 4057: model set back to train mode\n", - "Epoch 4057: model parameters saved\n", - "Epoch 4058 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3154)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3154)\n", - "Epoch 4058: avg_loss appended (1.3154)\n", - "Epoch 4058: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4058: accuracy appended (60.00%)\n", - "Epoch 4058: model set back to train mode\n", - "Epoch 4058: model parameters saved\n", - "Epoch 4059 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3154)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3154)\n", - "Epoch 4059: avg_loss appended (1.3154)\n", - "Epoch 4059: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4059: accuracy appended (60.00%)\n", - "Epoch 4059: model set back to train mode\n", - "Epoch 4059: model parameters saved\n", - "Epoch 4060 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3154)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3154)\n", - "Epoch 4060: avg_loss appended (1.3154)\n", - "Epoch 4060: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4060: accuracy appended (60.00%)\n", - "Epoch 4060: model set back to train mode\n", - "Epoch 4060: model parameters saved\n", - "Epoch 4061 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3154)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3154)\n", - "Epoch 4061: avg_loss appended (1.3154)\n", - "Epoch 4061: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4061: accuracy appended (60.00%)\n", - "Epoch 4061: model set back to train mode\n", - "Epoch 4061: model parameters saved\n", - "Epoch 4062 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3154)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3154)\n", - "Epoch 4062: avg_loss appended (1.3154)\n", - "Epoch 4062: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4062: accuracy appended (60.00%)\n", - "Epoch 4062: model set back to train mode\n", - "Epoch 4062: model parameters saved\n", - "Epoch 4063 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3154)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3154)\n", - "Epoch 4063: avg_loss appended (1.3154)\n", - "Epoch 4063: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4063: accuracy appended (60.00%)\n", - "Epoch 4063: model set back to train mode\n", - "Epoch 4063: model parameters saved\n", - "Epoch 4064 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3153)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3153)\n", - "Epoch 4064: avg_loss appended (1.3153)\n", - "Epoch 4064: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4064: accuracy appended (60.00%)\n", - "Epoch 4064: model set back to train mode\n", - "Epoch 4064: model parameters saved\n", - "Epoch 4065 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3153)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3153)\n", - "Epoch 4065: avg_loss appended (1.3153)\n", - "Epoch 4065: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4065: accuracy appended (60.00%)\n", - "Epoch 4065: model set back to train mode\n", - "Epoch 4065: model parameters saved\n", - "Epoch 4066 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3153)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3153)\n", - "Epoch 4066: avg_loss appended (1.3153)\n", - "Epoch 4066: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4066: accuracy appended (60.00%)\n", - "Epoch 4066: model set back to train mode\n", - "Epoch 4066: model parameters saved\n", - "Epoch 4067 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3153)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3153)\n", - "Epoch 4067: avg_loss appended (1.3153)\n", - "Epoch 4067: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4067: accuracy appended (60.00%)\n", - "Epoch 4067: model set back to train mode\n", - "Epoch 4067: model parameters saved\n", - "Epoch 4068 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3153)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3153)\n", - "Epoch 4068: avg_loss appended (1.3153)\n", - "Epoch 4068: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4068: accuracy appended (60.00%)\n", - "Epoch 4068: model set back to train mode\n", - "Epoch 4068: model parameters saved\n", - "Epoch 4069 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3153)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3153)\n", - "Epoch 4069: avg_loss appended (1.3153)\n", - "Epoch 4069: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4069: accuracy appended (60.00%)\n", - "Epoch 4069: model set back to train mode\n", - "Epoch 4069: model parameters saved\n", - "Epoch 4070 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3153)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3153)\n", - "Epoch 4070: avg_loss appended (1.3153)\n", - "Epoch 4070: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4070: accuracy appended (60.00%)\n", - "Epoch 4070: model set back to train mode\n", - "Epoch 4070: model parameters saved\n", - "Epoch 4071 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3153)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3153)\n", - "Epoch 4071: avg_loss appended (1.3153)\n", - "Epoch 4071: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4071: accuracy appended (60.00%)\n", - "Epoch 4071: model set back to train mode\n", - "Epoch 4071: model parameters saved\n", - "Epoch 4072 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3153)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3153)\n", - "Epoch 4072: avg_loss appended (1.3153)\n", - "Epoch 4072: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4072: accuracy appended (60.00%)\n", - "Epoch 4072: model set back to train mode\n", - "Epoch 4072: model parameters saved\n", - "Epoch 4073 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3153)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3153)\n", - "Epoch 4073: avg_loss appended (1.3153)\n", - "Epoch 4073: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4073: accuracy appended (60.00%)\n", - "Epoch 4073: model set back to train mode\n", - "Epoch 4073: model parameters saved\n", - "Epoch 4074 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3153)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3153)\n", - "Epoch 4074: avg_loss appended (1.3153)\n", - "Epoch 4074: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4074: accuracy appended (60.00%)\n", - "Epoch 4074: model set back to train mode\n", - "Epoch 4074: model parameters saved\n", - "Epoch 4075 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3153)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3153)\n", - "Epoch 4075: avg_loss appended (1.3153)\n", - "Epoch 4075: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4075: accuracy appended (60.00%)\n", - "Epoch 4075: model set back to train mode\n", - "Epoch 4075: model parameters saved\n", - "Epoch 4076 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3153)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3153)\n", - "Epoch 4076: avg_loss appended (1.3153)\n", - "Epoch 4076: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4076: accuracy appended (60.00%)\n", - "Epoch 4076: model set back to train mode\n", - "Epoch 4076: model parameters saved\n", - "Epoch 4077 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3153)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3153)\n", - "Epoch 4077: avg_loss appended (1.3153)\n", - "Epoch 4077: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4077: accuracy appended (60.00%)\n", - "Epoch 4077: model set back to train mode\n", - "Epoch 4077: model parameters saved\n", - "Epoch 4078 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3153)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3153)\n", - "Epoch 4078: avg_loss appended (1.3153)\n", - "Epoch 4078: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4078: accuracy appended (60.00%)\n", - "Epoch 4078: model set back to train mode\n", - "Epoch 4078: model parameters saved\n", - "Epoch 4079 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3153)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3153)\n", - "Epoch 4079: avg_loss appended (1.3153)\n", - "Epoch 4079: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4079: accuracy appended (60.00%)\n", - "Epoch 4079: model set back to train mode\n", - "Epoch 4079: model parameters saved\n", - "Epoch 4080 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3153)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3153)\n", - "Epoch 4080: avg_loss appended (1.3153)\n", - "Epoch 4080: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4080: accuracy appended (60.00%)\n", - "Epoch 4080: model set back to train mode\n", - "Epoch 4080: model parameters saved\n", - "Epoch 4081 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3153)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3153)\n", - "Epoch 4081: avg_loss appended (1.3153)\n", - "Epoch 4081: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4081: accuracy appended (60.00%)\n", - "Epoch 4081: model set back to train mode\n", - "Epoch 4081: model parameters saved\n", - "Epoch 4082 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3153)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3153)\n", - "Epoch 4082: avg_loss appended (1.3153)\n", - "Epoch 4082: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4082: accuracy appended (60.00%)\n", - "Epoch 4082: model set back to train mode\n", - "Epoch 4082: model parameters saved\n", - "Epoch 4083 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3153)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3153)\n", - "Epoch 4083: avg_loss appended (1.3153)\n", - "Epoch 4083: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4083: accuracy appended (60.00%)\n", - "Epoch 4083: model set back to train mode\n", - "Epoch 4083: model parameters saved\n", - "Epoch 4084 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3153)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3153)\n", - "Epoch 4084: avg_loss appended (1.3153)\n", - "Epoch 4084: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4084: accuracy appended (60.00%)\n", - "Epoch 4084: model set back to train mode\n", - "Epoch 4084: model parameters saved\n", - "Epoch 4085 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3152)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3152)\n", - "Epoch 4085: avg_loss appended (1.3152)\n", - "Epoch 4085: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4085: accuracy appended (60.00%)\n", - "Epoch 4085: model set back to train mode\n", - "Epoch 4085: model parameters saved\n", - "Epoch 4086 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3152)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3152)\n", - "Epoch 4086: avg_loss appended (1.3152)\n", - "Epoch 4086: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4086: accuracy appended (60.00%)\n", - "Epoch 4086: model set back to train mode\n", - "Epoch 4086: model parameters saved\n", - "Epoch 4087 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3152)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3152)\n", - "Epoch 4087: avg_loss appended (1.3152)\n", - "Epoch 4087: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4087: accuracy appended (60.00%)\n", - "Epoch 4087: model set back to train mode\n", - "Epoch 4087: model parameters saved\n", - "Epoch 4088 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3152)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3152)\n", - "Epoch 4088: avg_loss appended (1.3152)\n", - "Epoch 4088: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4088: accuracy appended (60.00%)\n", - "Epoch 4088: model set back to train mode\n", - "Epoch 4088: model parameters saved\n", - "Epoch 4089 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3152)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3152)\n", - "Epoch 4089: avg_loss appended (1.3152)\n", - "Epoch 4089: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4089: accuracy appended (60.00%)\n", - "Epoch 4089: model set back to train mode\n", - "Epoch 4089: model parameters saved\n", - "Epoch 4090 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3152)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3152)\n", - "Epoch 4090: avg_loss appended (1.3152)\n", - "Epoch 4090: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4090: accuracy appended (60.00%)\n", - "Epoch 4090: model set back to train mode\n", - "Epoch 4090: model parameters saved\n", - "Epoch 4091 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3152)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3152)\n", - "Epoch 4091: avg_loss appended (1.3152)\n", - "Epoch 4091: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4091: accuracy appended (60.00%)\n", - "Epoch 4091: model set back to train mode\n", - "Epoch 4091: model parameters saved\n", - "Epoch 4092 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3152)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3152)\n", - "Epoch 4092: avg_loss appended (1.3152)\n", - "Epoch 4092: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4092: accuracy appended (60.00%)\n", - "Epoch 4092: model set back to train mode\n", - "Epoch 4092: model parameters saved\n", - "Epoch 4093 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3152)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3152)\n", - "Epoch 4093: avg_loss appended (1.3152)\n", - "Epoch 4093: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4093: accuracy appended (60.00%)\n", - "Epoch 4093: model set back to train mode\n", - "Epoch 4093: model parameters saved\n", - "Epoch 4094 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3152)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3152)\n", - "Epoch 4094: avg_loss appended (1.3152)\n", - "Epoch 4094: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4094: accuracy appended (60.00%)\n", - "Epoch 4094: model set back to train mode\n", - "Epoch 4094: model parameters saved\n", - "Epoch 4095 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3152)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3152)\n", - "Epoch 4095: avg_loss appended (1.3152)\n", - "Epoch 4095: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4095: accuracy appended (60.00%)\n", - "Epoch 4095: model set back to train mode\n", - "Epoch 4095: model parameters saved\n", - "Epoch 4096 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3152)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3152)\n", - "Epoch 4096: avg_loss appended (1.3152)\n", - "Epoch 4096: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4096: accuracy appended (60.00%)\n", - "Epoch 4096: model set back to train mode\n", - "Epoch 4096: model parameters saved\n", - "Epoch 4097 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3152)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3152)\n", - "Epoch 4097: avg_loss appended (1.3152)\n", - "Epoch 4097: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4097: accuracy appended (60.00%)\n", - "Epoch 4097: model set back to train mode\n", - "Epoch 4097: model parameters saved\n", - "Epoch 4098 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3152)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3152)\n", - "Epoch 4098: avg_loss appended (1.3152)\n", - "Epoch 4098: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4098: accuracy appended (60.00%)\n", - "Epoch 4098: model set back to train mode\n", - "Epoch 4098: model parameters saved\n", - "Epoch 4099 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3152)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3152)\n", - "Epoch 4099: avg_loss appended (1.3152)\n", - "Epoch 4099: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4099: accuracy appended (60.00%)\n", - "Epoch 4099: model set back to train mode\n", - "Epoch 4099: model parameters saved\n", - "Epoch 4100 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3152)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3152)\n", - "Epoch 4100: avg_loss appended (1.3152)\n", - "Epoch 4100: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4100: accuracy appended (60.00%)\n", - "Epoch 4100: model set back to train mode\n", - "Epoch 4100: model parameters saved\n", - "Epoch 4100/10000, Loss: 1.3152, Accuracy: 60.00%\n", - "Epoch 4101 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3152)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3152)\n", - "Epoch 4101: avg_loss appended (1.3152)\n", - "Epoch 4101: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4101: accuracy appended (60.00%)\n", - "Epoch 4101: model set back to train mode\n", - "Epoch 4101: model parameters saved\n", - "Epoch 4102 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3152)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3152)\n", - "Epoch 4102: avg_loss appended (1.3152)\n", - "Epoch 4102: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4102: accuracy appended (60.00%)\n", - "Epoch 4102: model set back to train mode\n", - "Epoch 4102: model parameters saved\n", - "Epoch 4103 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3152)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3152)\n", - "Epoch 4103: avg_loss appended (1.3152)\n", - "Epoch 4103: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4103: accuracy appended (60.00%)\n", - "Epoch 4103: model set back to train mode\n", - "Epoch 4103: model parameters saved\n", - "Epoch 4104 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3152)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3152)\n", - "Epoch 4104: avg_loss appended (1.3152)\n", - "Epoch 4104: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4104: accuracy appended (60.00%)\n", - "Epoch 4104: model set back to train mode\n", - "Epoch 4104: model parameters saved\n", - "Epoch 4105 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3152)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3152)\n", - "Epoch 4105: avg_loss appended (1.3152)\n", - "Epoch 4105: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4105: accuracy appended (60.00%)\n", - "Epoch 4105: model set back to train mode\n", - "Epoch 4105: model parameters saved\n", - "Epoch 4106 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3152)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3152)\n", - "Epoch 4106: avg_loss appended (1.3152)\n", - "Epoch 4106: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4106: accuracy appended (60.00%)\n", - "Epoch 4106: model set back to train mode\n", - "Epoch 4106: model parameters saved\n", - "Epoch 4107 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3152)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3152)\n", - "Epoch 4107: avg_loss appended (1.3152)\n", - "Epoch 4107: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4107: accuracy appended (60.00%)\n", - "Epoch 4107: model set back to train mode\n", - "Epoch 4107: model parameters saved\n", - "Epoch 4108 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3151)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3151)\n", - "Epoch 4108: avg_loss appended (1.3151)\n", - "Epoch 4108: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4108: accuracy appended (60.00%)\n", - "Epoch 4108: model set back to train mode\n", - "Epoch 4108: model parameters saved\n", - "Epoch 4109 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3151)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3151)\n", - "Epoch 4109: avg_loss appended (1.3151)\n", - "Epoch 4109: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4109: accuracy appended (60.00%)\n", - "Epoch 4109: model set back to train mode\n", - "Epoch 4109: model parameters saved\n", - "Epoch 4110 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3151)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3151)\n", - "Epoch 4110: avg_loss appended (1.3151)\n", - "Epoch 4110: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4110: accuracy appended (60.00%)\n", - "Epoch 4110: model set back to train mode\n", - "Epoch 4110: model parameters saved\n", - "Epoch 4111 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3151)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3151)\n", - "Epoch 4111: avg_loss appended (1.3151)\n", - "Epoch 4111: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4111: accuracy appended (60.00%)\n", - "Epoch 4111: model set back to train mode\n", - "Epoch 4111: model parameters saved\n", - "Epoch 4112 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3151)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3151)\n", - "Epoch 4112: avg_loss appended (1.3151)\n", - "Epoch 4112: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4112: accuracy appended (60.00%)\n", - "Epoch 4112: model set back to train mode\n", - "Epoch 4112: model parameters saved\n", - "Epoch 4113 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3151)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3151)\n", - "Epoch 4113: avg_loss appended (1.3151)\n", - "Epoch 4113: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4113: accuracy appended (60.00%)\n", - "Epoch 4113: model set back to train mode\n", - "Epoch 4113: model parameters saved\n", - "Epoch 4114 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3151)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3151)\n", - "Epoch 4114: avg_loss appended (1.3151)\n", - "Epoch 4114: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4114: accuracy appended (60.00%)\n", - "Epoch 4114: model set back to train mode\n", - "Epoch 4114: model parameters saved\n", - "Epoch 4115 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3151)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3151)\n", - "Epoch 4115: avg_loss appended (1.3151)\n", - "Epoch 4115: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4115: accuracy appended (60.00%)\n", - "Epoch 4115: model set back to train mode\n", - "Epoch 4115: model parameters saved\n", - "Epoch 4116 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3151)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3151)\n", - "Epoch 4116: avg_loss appended (1.3151)\n", - "Epoch 4116: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4116: accuracy appended (60.00%)\n", - "Epoch 4116: model set back to train mode\n", - "Epoch 4116: model parameters saved\n", - "Epoch 4117 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3151)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3151)\n", - "Epoch 4117: avg_loss appended (1.3151)\n", - "Epoch 4117: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4117: accuracy appended (60.00%)\n", - "Epoch 4117: model set back to train mode\n", - "Epoch 4117: model parameters saved\n", - "Epoch 4118 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3151)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3151)\n", - "Epoch 4118: avg_loss appended (1.3151)\n", - "Epoch 4118: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4118: accuracy appended (60.00%)\n", - "Epoch 4118: model set back to train mode\n", - "Epoch 4118: model parameters saved\n", - "Epoch 4119 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3151)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3151)\n", - "Epoch 4119: avg_loss appended (1.3151)\n", - "Epoch 4119: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4119: accuracy appended (60.00%)\n", - "Epoch 4119: model set back to train mode\n", - "Epoch 4119: model parameters saved\n", - "Epoch 4120 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3151)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3151)\n", - "Epoch 4120: avg_loss appended (1.3151)\n", - "Epoch 4120: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4120: accuracy appended (60.00%)\n", - "Epoch 4120: model set back to train mode\n", - "Epoch 4120: model parameters saved\n", - "Epoch 4121 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3151)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3151)\n", - "Epoch 4121: avg_loss appended (1.3151)\n", - "Epoch 4121: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4121: accuracy appended (60.00%)\n", - "Epoch 4121: model set back to train mode\n", - "Epoch 4121: model parameters saved\n", - "Epoch 4122 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3151)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3151)\n", - "Epoch 4122: avg_loss appended (1.3151)\n", - "Epoch 4122: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4122: accuracy appended (60.00%)\n", - "Epoch 4122: model set back to train mode\n", - "Epoch 4122: model parameters saved\n", - "Epoch 4123 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3151)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3151)\n", - "Epoch 4123: avg_loss appended (1.3151)\n", - "Epoch 4123: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4123: accuracy appended (60.00%)\n", - "Epoch 4123: model set back to train mode\n", - "Epoch 4123: model parameters saved\n", - "Epoch 4124 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3151)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3151)\n", - "Epoch 4124: avg_loss appended (1.3151)\n", - "Epoch 4124: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4124: accuracy appended (60.00%)\n", - "Epoch 4124: model set back to train mode\n", - "Epoch 4124: model parameters saved\n", - "Epoch 4125 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3151)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3151)\n", - "Epoch 4125: avg_loss appended (1.3151)\n", - "Epoch 4125: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4125: accuracy appended (60.00%)\n", - "Epoch 4125: model set back to train mode\n", - "Epoch 4125: model parameters saved\n", - "Epoch 4126 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3151)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3151)\n", - "Epoch 4126: avg_loss appended (1.3151)\n", - "Epoch 4126: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4126: accuracy appended (60.00%)\n", - "Epoch 4126: model set back to train mode\n", - "Epoch 4126: model parameters saved\n", - "Epoch 4127 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3151)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3151)\n", - "Epoch 4127: avg_loss appended (1.3151)\n", - "Epoch 4127: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4127: accuracy appended (60.00%)\n", - "Epoch 4127: model set back to train mode\n", - "Epoch 4127: model parameters saved\n", - "Epoch 4128 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3151)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3151)\n", - "Epoch 4128: avg_loss appended (1.3151)\n", - "Epoch 4128: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4128: accuracy appended (60.00%)\n", - "Epoch 4128: model set back to train mode\n", - "Epoch 4128: model parameters saved\n", - "Epoch 4129 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3151)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3151)\n", - "Epoch 4129: avg_loss appended (1.3151)\n", - "Epoch 4129: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4129: accuracy appended (60.00%)\n", - "Epoch 4129: model set back to train mode\n", - "Epoch 4129: model parameters saved\n", - "Epoch 4130 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3151)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3151)\n", - "Epoch 4130: avg_loss appended (1.3151)\n", - "Epoch 4130: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4130: accuracy appended (60.00%)\n", - "Epoch 4130: model set back to train mode\n", - "Epoch 4130: model parameters saved\n", - "Epoch 4131 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3151)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3151)\n", - "Epoch 4131: avg_loss appended (1.3151)\n", - "Epoch 4131: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4131: accuracy appended (60.00%)\n", - "Epoch 4131: model set back to train mode\n", - "Epoch 4131: model parameters saved\n", - "Epoch 4132 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3150)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3150)\n", - "Epoch 4132: avg_loss appended (1.3150)\n", - "Epoch 4132: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4132: accuracy appended (60.00%)\n", - "Epoch 4132: model set back to train mode\n", - "Epoch 4132: model parameters saved\n", - "Epoch 4133 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3150)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3150)\n", - "Epoch 4133: avg_loss appended (1.3150)\n", - "Epoch 4133: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4133: accuracy appended (60.00%)\n", - "Epoch 4133: model set back to train mode\n", - "Epoch 4133: model parameters saved\n", - "Epoch 4134 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3150)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3150)\n", - "Epoch 4134: avg_loss appended (1.3150)\n", - "Epoch 4134: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4134: accuracy appended (60.00%)\n", - "Epoch 4134: model set back to train mode\n", - "Epoch 4134: model parameters saved\n", - "Epoch 4135 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3150)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3150)\n", - "Epoch 4135: avg_loss appended (1.3150)\n", - "Epoch 4135: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4135: accuracy appended (60.00%)\n", - "Epoch 4135: model set back to train mode\n", - "Epoch 4135: model parameters saved\n", - "Epoch 4136 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3150)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3150)\n", - "Epoch 4136: avg_loss appended (1.3150)\n", - "Epoch 4136: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4136: accuracy appended (60.00%)\n", - "Epoch 4136: model set back to train mode\n", - "Epoch 4136: model parameters saved\n", - "Epoch 4137 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3150)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3150)\n", - "Epoch 4137: avg_loss appended (1.3150)\n", - "Epoch 4137: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4137: accuracy appended (60.00%)\n", - "Epoch 4137: model set back to train mode\n", - "Epoch 4137: model parameters saved\n", - "Epoch 4138 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3150)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3150)\n", - "Epoch 4138: avg_loss appended (1.3150)\n", - "Epoch 4138: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4138: accuracy appended (60.00%)\n", - "Epoch 4138: model set back to train mode\n", - "Epoch 4138: model parameters saved\n", - "Epoch 4139 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3150)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3150)\n", - "Epoch 4139: avg_loss appended (1.3150)\n", - "Epoch 4139: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4139: accuracy appended (60.00%)\n", - "Epoch 4139: model set back to train mode\n", - "Epoch 4139: model parameters saved\n", - "Epoch 4140 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3150)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3150)\n", - "Epoch 4140: avg_loss appended (1.3150)\n", - "Epoch 4140: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4140: accuracy appended (60.00%)\n", - "Epoch 4140: model set back to train mode\n", - "Epoch 4140: model parameters saved\n", - "Epoch 4141 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3150)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3150)\n", - "Epoch 4141: avg_loss appended (1.3150)\n", - "Epoch 4141: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4141: accuracy appended (60.00%)\n", - "Epoch 4141: model set back to train mode\n", - "Epoch 4141: model parameters saved\n", - "Epoch 4142 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3150)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3150)\n", - "Epoch 4142: avg_loss appended (1.3150)\n", - "Epoch 4142: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4142: accuracy appended (60.00%)\n", - "Epoch 4142: model set back to train mode\n", - "Epoch 4142: model parameters saved\n", - "Epoch 4143 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3150)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3150)\n", - "Epoch 4143: avg_loss appended (1.3150)\n", - "Epoch 4143: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4143: accuracy appended (60.00%)\n", - "Epoch 4143: model set back to train mode\n", - "Epoch 4143: model parameters saved\n", - "Epoch 4144 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3150)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3150)\n", - "Epoch 4144: avg_loss appended (1.3150)\n", - "Epoch 4144: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4144: accuracy appended (60.00%)\n", - "Epoch 4144: model set back to train mode\n", - "Epoch 4144: model parameters saved\n", - "Epoch 4145 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3150)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3150)\n", - "Epoch 4145: avg_loss appended (1.3150)\n", - "Epoch 4145: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4145: accuracy appended (60.00%)\n", - "Epoch 4145: model set back to train mode\n", - "Epoch 4145: model parameters saved\n", - "Epoch 4146 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3150)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3150)\n", - "Epoch 4146: avg_loss appended (1.3150)\n", - "Epoch 4146: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4146: accuracy appended (60.00%)\n", - "Epoch 4146: model set back to train mode\n", - "Epoch 4146: model parameters saved\n", - "Epoch 4147 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3150)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3150)\n", - "Epoch 4147: avg_loss appended (1.3150)\n", - "Epoch 4147: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4147: accuracy appended (60.00%)\n", - "Epoch 4147: model set back to train mode\n", - "Epoch 4147: model parameters saved\n", - "Epoch 4148 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3150)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3150)\n", - "Epoch 4148: avg_loss appended (1.3150)\n", - "Epoch 4148: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4148: accuracy appended (60.00%)\n", - "Epoch 4148: model set back to train mode\n", - "Epoch 4148: model parameters saved\n", - "Epoch 4149 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3150)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3150)\n", - "Epoch 4149: avg_loss appended (1.3150)\n", - "Epoch 4149: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4149: accuracy appended (60.00%)\n", - "Epoch 4149: model set back to train mode\n", - "Epoch 4149: model parameters saved\n", - "Epoch 4150 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3150)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3150)\n", - "Epoch 4150: avg_loss appended (1.3150)\n", - "Epoch 4150: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4150: accuracy appended (60.00%)\n", - "Epoch 4150: model set back to train mode\n", - "Epoch 4150: model parameters saved\n", - "Epoch 4151 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3150)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3150)\n", - "Epoch 4151: avg_loss appended (1.3150)\n", - "Epoch 4151: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4151: accuracy appended (60.00%)\n", - "Epoch 4151: model set back to train mode\n", - "Epoch 4151: model parameters saved\n", - "Epoch 4152 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3150)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3150)\n", - "Epoch 4152: avg_loss appended (1.3150)\n", - "Epoch 4152: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4152: accuracy appended (60.00%)\n", - "Epoch 4152: model set back to train mode\n", - "Epoch 4152: model parameters saved\n", - "Epoch 4153 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3150)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3150)\n", - "Epoch 4153: avg_loss appended (1.3150)\n", - "Epoch 4153: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4153: accuracy appended (60.00%)\n", - "Epoch 4153: model set back to train mode\n", - "Epoch 4153: model parameters saved\n", - "Epoch 4154 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3150)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3150)\n", - "Epoch 4154: avg_loss appended (1.3150)\n", - "Epoch 4154: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4154: accuracy appended (60.00%)\n", - "Epoch 4154: model set back to train mode\n", - "Epoch 4154: model parameters saved\n", - "Epoch 4155 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3150)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3150)\n", - "Epoch 4155: avg_loss appended (1.3150)\n", - "Epoch 4155: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4155: accuracy appended (60.00%)\n", - "Epoch 4155: model set back to train mode\n", - "Epoch 4155: model parameters saved\n", - "Epoch 4156 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3150)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3150)\n", - "Epoch 4156: avg_loss appended (1.3150)\n", - "Epoch 4156: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4156: accuracy appended (60.00%)\n", - "Epoch 4156: model set back to train mode\n", - "Epoch 4156: model parameters saved\n", - "Epoch 4157 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3150)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3150)\n", - "Epoch 4157: avg_loss appended (1.3150)\n", - "Epoch 4157: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4157: accuracy appended (60.00%)\n", - "Epoch 4157: model set back to train mode\n", - "Epoch 4157: model parameters saved\n", - "Epoch 4158 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3150)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3150)\n", - "Epoch 4158: avg_loss appended (1.3150)\n", - "Epoch 4158: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4158: accuracy appended (60.00%)\n", - "Epoch 4158: model set back to train mode\n", - "Epoch 4158: model parameters saved\n", - "Epoch 4159 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3149)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3149)\n", - "Epoch 4159: avg_loss appended (1.3149)\n", - "Epoch 4159: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4159: accuracy appended (60.00%)\n", - "Epoch 4159: model set back to train mode\n", - "Epoch 4159: model parameters saved\n", - "Epoch 4160 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3149)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3149)\n", - "Epoch 4160: avg_loss appended (1.3149)\n", - "Epoch 4160: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4160: accuracy appended (60.00%)\n", - "Epoch 4160: model set back to train mode\n", - "Epoch 4160: model parameters saved\n", - "Epoch 4161 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3149)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3149)\n", - "Epoch 4161: avg_loss appended (1.3149)\n", - "Epoch 4161: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4161: accuracy appended (60.00%)\n", - "Epoch 4161: model set back to train mode\n", - "Epoch 4161: model parameters saved\n", - "Epoch 4162 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3149)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3149)\n", - "Epoch 4162: avg_loss appended (1.3149)\n", - "Epoch 4162: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4162: accuracy appended (60.00%)\n", - "Epoch 4162: model set back to train mode\n", - "Epoch 4162: model parameters saved\n", - "Epoch 4163 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3149)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3149)\n", - "Epoch 4163: avg_loss appended (1.3149)\n", - "Epoch 4163: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4163: accuracy appended (60.00%)\n", - "Epoch 4163: model set back to train mode\n", - "Epoch 4163: model parameters saved\n", - "Epoch 4164 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3149)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3149)\n", - "Epoch 4164: avg_loss appended (1.3149)\n", - "Epoch 4164: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4164: accuracy appended (60.00%)\n", - "Epoch 4164: model set back to train mode\n", - "Epoch 4164: model parameters saved\n", - "Epoch 4165 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3149)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3149)\n", - "Epoch 4165: avg_loss appended (1.3149)\n", - "Epoch 4165: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4165: accuracy appended (60.00%)\n", - "Epoch 4165: model set back to train mode\n", - "Epoch 4165: model parameters saved\n", - "Epoch 4166 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3149)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3149)\n", - "Epoch 4166: avg_loss appended (1.3149)\n", - "Epoch 4166: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4166: accuracy appended (60.00%)\n", - "Epoch 4166: model set back to train mode\n", - "Epoch 4166: model parameters saved\n", - "Epoch 4167 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3149)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3149)\n", - "Epoch 4167: avg_loss appended (1.3149)\n", - "Epoch 4167: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4167: accuracy appended (60.00%)\n", - "Epoch 4167: model set back to train mode\n", - "Epoch 4167: model parameters saved\n", - "Epoch 4168 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3149)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3149)\n", - "Epoch 4168: avg_loss appended (1.3149)\n", - "Epoch 4168: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4168: accuracy appended (60.00%)\n", - "Epoch 4168: model set back to train mode\n", - "Epoch 4168: model parameters saved\n", - "Epoch 4169 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3149)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3149)\n", - "Epoch 4169: avg_loss appended (1.3149)\n", - "Epoch 4169: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4169: accuracy appended (60.00%)\n", - "Epoch 4169: model set back to train mode\n", - "Epoch 4169: model parameters saved\n", - "Epoch 4170 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3149)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3149)\n", - "Epoch 4170: avg_loss appended (1.3149)\n", - "Epoch 4170: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4170: accuracy appended (60.00%)\n", - "Epoch 4170: model set back to train mode\n", - "Epoch 4170: model parameters saved\n", - "Epoch 4171 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3149)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3149)\n", - "Epoch 4171: avg_loss appended (1.3149)\n", - "Epoch 4171: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4171: accuracy appended (60.00%)\n", - "Epoch 4171: model set back to train mode\n", - "Epoch 4171: model parameters saved\n", - "Epoch 4172 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3149)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3149)\n", - "Epoch 4172: avg_loss appended (1.3149)\n", - "Epoch 4172: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4172: accuracy appended (60.00%)\n", - "Epoch 4172: model set back to train mode\n", - "Epoch 4172: model parameters saved\n", - "Epoch 4173 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3149)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3149)\n", - "Epoch 4173: avg_loss appended (1.3149)\n", - "Epoch 4173: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4173: accuracy appended (60.00%)\n", - "Epoch 4173: model set back to train mode\n", - "Epoch 4173: model parameters saved\n", - "Epoch 4174 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3149)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3149)\n", - "Epoch 4174: avg_loss appended (1.3149)\n", - "Epoch 4174: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4174: accuracy appended (60.00%)\n", - "Epoch 4174: model set back to train mode\n", - "Epoch 4174: model parameters saved\n", - "Epoch 4175 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3149)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3149)\n", - "Epoch 4175: avg_loss appended (1.3149)\n", - "Epoch 4175: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4175: accuracy appended (60.00%)\n", - "Epoch 4175: model set back to train mode\n", - "Epoch 4175: model parameters saved\n", - "Epoch 4176 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3149)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3149)\n", - "Epoch 4176: avg_loss appended (1.3149)\n", - "Epoch 4176: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4176: accuracy appended (60.00%)\n", - "Epoch 4176: model set back to train mode\n", - "Epoch 4176: model parameters saved\n", - "Epoch 4177 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3149)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3149)\n", - "Epoch 4177: avg_loss appended (1.3149)\n", - "Epoch 4177: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4177: accuracy appended (60.00%)\n", - "Epoch 4177: model set back to train mode\n", - "Epoch 4177: model parameters saved\n", - "Epoch 4178 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3149)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3149)\n", - "Epoch 4178: avg_loss appended (1.3149)\n", - "Epoch 4178: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4178: accuracy appended (60.00%)\n", - "Epoch 4178: model set back to train mode\n", - "Epoch 4178: model parameters saved\n", - "Epoch 4179 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3149)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3149)\n", - "Epoch 4179: avg_loss appended (1.3149)\n", - "Epoch 4179: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4179: accuracy appended (60.00%)\n", - "Epoch 4179: model set back to train mode\n", - "Epoch 4179: model parameters saved\n", - "Epoch 4180 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3149)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3149)\n", - "Epoch 4180: avg_loss appended (1.3149)\n", - "Epoch 4180: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4180: accuracy appended (60.00%)\n", - "Epoch 4180: model set back to train mode\n", - "Epoch 4180: model parameters saved\n", - "Epoch 4181 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3149)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3149)\n", - "Epoch 4181: avg_loss appended (1.3149)\n", - "Epoch 4181: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4181: accuracy appended (60.00%)\n", - "Epoch 4181: model set back to train mode\n", - "Epoch 4181: model parameters saved\n", - "Epoch 4182 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3149)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3149)\n", - "Epoch 4182: avg_loss appended (1.3149)\n", - "Epoch 4182: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4182: accuracy appended (60.00%)\n", - "Epoch 4182: model set back to train mode\n", - "Epoch 4182: model parameters saved\n", - "Epoch 4183 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3149)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3149)\n", - "Epoch 4183: avg_loss appended (1.3149)\n", - "Epoch 4183: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4183: accuracy appended (60.00%)\n", - "Epoch 4183: model set back to train mode\n", - "Epoch 4183: model parameters saved\n", - "Epoch 4184 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3149)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3149)\n", - "Epoch 4184: avg_loss appended (1.3149)\n", - "Epoch 4184: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4184: accuracy appended (60.00%)\n", - "Epoch 4184: model set back to train mode\n", - "Epoch 4184: model parameters saved\n", - "Epoch 4185 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3149)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3149)\n", - "Epoch 4185: avg_loss appended (1.3149)\n", - "Epoch 4185: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4185: accuracy appended (60.00%)\n", - "Epoch 4185: model set back to train mode\n", - "Epoch 4185: model parameters saved\n", - "Epoch 4186 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3149)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3149)\n", - "Epoch 4186: avg_loss appended (1.3149)\n", - "Epoch 4186: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4186: accuracy appended (60.00%)\n", - "Epoch 4186: model set back to train mode\n", - "Epoch 4186: model parameters saved\n", - "Epoch 4187 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3148)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3148)\n", - "Epoch 4187: avg_loss appended (1.3148)\n", - "Epoch 4187: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4187: accuracy appended (60.00%)\n", - "Epoch 4187: model set back to train mode\n", - "Epoch 4187: model parameters saved\n", - "Epoch 4188 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3148)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3148)\n", - "Epoch 4188: avg_loss appended (1.3148)\n", - "Epoch 4188: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4188: accuracy appended (60.00%)\n", - "Epoch 4188: model set back to train mode\n", - "Epoch 4188: model parameters saved\n", - "Epoch 4189 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3148)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3148)\n", - "Epoch 4189: avg_loss appended (1.3148)\n", - "Epoch 4189: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4189: accuracy appended (60.00%)\n", - "Epoch 4189: model set back to train mode\n", - "Epoch 4189: model parameters saved\n", - "Epoch 4190 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3148)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3148)\n", - "Epoch 4190: avg_loss appended (1.3148)\n", - "Epoch 4190: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4190: accuracy appended (60.00%)\n", - "Epoch 4190: model set back to train mode\n", - "Epoch 4190: model parameters saved\n", - "Epoch 4191 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3148)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3148)\n", - "Epoch 4191: avg_loss appended (1.3148)\n", - "Epoch 4191: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4191: accuracy appended (60.00%)\n", - "Epoch 4191: model set back to train mode\n", - "Epoch 4191: model parameters saved\n", - "Epoch 4192 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3148)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3148)\n", - "Epoch 4192: avg_loss appended (1.3148)\n", - "Epoch 4192: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4192: accuracy appended (60.00%)\n", - "Epoch 4192: model set back to train mode\n", - "Epoch 4192: model parameters saved\n", - "Epoch 4193 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3148)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3148)\n", - "Epoch 4193: avg_loss appended (1.3148)\n", - "Epoch 4193: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4193: accuracy appended (60.00%)\n", - "Epoch 4193: model set back to train mode\n", - "Epoch 4193: model parameters saved\n", - "Epoch 4194 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3148)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3148)\n", - "Epoch 4194: avg_loss appended (1.3148)\n", - "Epoch 4194: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4194: accuracy appended (60.00%)\n", - "Epoch 4194: model set back to train mode\n", - "Epoch 4194: model parameters saved\n", - "Epoch 4195 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3148)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3148)\n", - "Epoch 4195: avg_loss appended (1.3148)\n", - "Epoch 4195: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4195: accuracy appended (60.00%)\n", - "Epoch 4195: model set back to train mode\n", - "Epoch 4195: model parameters saved\n", - "Epoch 4196 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3148)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3148)\n", - "Epoch 4196: avg_loss appended (1.3148)\n", - "Epoch 4196: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4196: accuracy appended (60.00%)\n", - "Epoch 4196: model set back to train mode\n", - "Epoch 4196: model parameters saved\n", - "Epoch 4197 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3148)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3148)\n", - "Epoch 4197: avg_loss appended (1.3148)\n", - "Epoch 4197: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4197: accuracy appended (60.00%)\n", - "Epoch 4197: model set back to train mode\n", - "Epoch 4197: model parameters saved\n", - "Epoch 4198 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3148)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3148)\n", - "Epoch 4198: avg_loss appended (1.3148)\n", - "Epoch 4198: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4198: accuracy appended (60.00%)\n", - "Epoch 4198: model set back to train mode\n", - "Epoch 4198: model parameters saved\n", - "Epoch 4199 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3148)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3148)\n", - "Epoch 4199: avg_loss appended (1.3148)\n", - "Epoch 4199: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4199: accuracy appended (60.00%)\n", - "Epoch 4199: model set back to train mode\n", - "Epoch 4199: model parameters saved\n", - "Epoch 4200 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3148)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3148)\n", - "Epoch 4200: avg_loss appended (1.3148)\n", - "Epoch 4200: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4200: accuracy appended (60.00%)\n", - "Epoch 4200: model set back to train mode\n", - "Epoch 4200: model parameters saved\n", - "Epoch 4200/10000, Loss: 1.3148, Accuracy: 60.00%\n", - "Epoch 4201 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3148)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3148)\n", - "Epoch 4201: avg_loss appended (1.3148)\n", - "Epoch 4201: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4201: accuracy appended (60.00%)\n", - "Epoch 4201: model set back to train mode\n", - "Epoch 4201: model parameters saved\n", - "Epoch 4202 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3148)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3148)\n", - "Epoch 4202: avg_loss appended (1.3148)\n", - "Epoch 4202: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4202: accuracy appended (60.00%)\n", - "Epoch 4202: model set back to train mode\n", - "Epoch 4202: model parameters saved\n", - "Epoch 4203 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3148)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3148)\n", - "Epoch 4203: avg_loss appended (1.3148)\n", - "Epoch 4203: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4203: accuracy appended (60.00%)\n", - "Epoch 4203: model set back to train mode\n", - "Epoch 4203: model parameters saved\n", - "Epoch 4204 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3148)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3148)\n", - "Epoch 4204: avg_loss appended (1.3148)\n", - "Epoch 4204: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4204: accuracy appended (60.00%)\n", - "Epoch 4204: model set back to train mode\n", - "Epoch 4204: model parameters saved\n", - "Epoch 4205 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3148)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3148)\n", - "Epoch 4205: avg_loss appended (1.3148)\n", - "Epoch 4205: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4205: accuracy appended (60.00%)\n", - "Epoch 4205: model set back to train mode\n", - "Epoch 4205: model parameters saved\n", - "Epoch 4206 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3148)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3148)\n", - "Epoch 4206: avg_loss appended (1.3148)\n", - "Epoch 4206: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4206: accuracy appended (60.00%)\n", - "Epoch 4206: model set back to train mode\n", - "Epoch 4206: model parameters saved\n", - "Epoch 4207 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3148)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3148)\n", - "Epoch 4207: avg_loss appended (1.3148)\n", - "Epoch 4207: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4207: accuracy appended (60.00%)\n", - "Epoch 4207: model set back to train mode\n", - "Epoch 4207: model parameters saved\n", - "Epoch 4208 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3148)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3148)\n", - "Epoch 4208: avg_loss appended (1.3148)\n", - "Epoch 4208: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4208: accuracy appended (60.00%)\n", - "Epoch 4208: model set back to train mode\n", - "Epoch 4208: model parameters saved\n", - "Epoch 4209 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3148)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3148)\n", - "Epoch 4209: avg_loss appended (1.3148)\n", - "Epoch 4209: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4209: accuracy appended (60.00%)\n", - "Epoch 4209: model set back to train mode\n", - "Epoch 4209: model parameters saved\n", - "Epoch 4210 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3148)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3148)\n", - "Epoch 4210: avg_loss appended (1.3148)\n", - "Epoch 4210: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4210: accuracy appended (60.00%)\n", - "Epoch 4210: model set back to train mode\n", - "Epoch 4210: model parameters saved\n", - "Epoch 4211 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3148)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3148)\n", - "Epoch 4211: avg_loss appended (1.3148)\n", - "Epoch 4211: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4211: accuracy appended (60.00%)\n", - "Epoch 4211: model set back to train mode\n", - "Epoch 4211: model parameters saved\n", - "Epoch 4212 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3148)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3148)\n", - "Epoch 4212: avg_loss appended (1.3148)\n", - "Epoch 4212: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4212: accuracy appended (60.00%)\n", - "Epoch 4212: model set back to train mode\n", - "Epoch 4212: model parameters saved\n", - "Epoch 4213 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3148)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3148)\n", - "Epoch 4213: avg_loss appended (1.3148)\n", - "Epoch 4213: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4213: accuracy appended (60.00%)\n", - "Epoch 4213: model set back to train mode\n", - "Epoch 4213: model parameters saved\n", - "Epoch 4214 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3148)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3148)\n", - "Epoch 4214: avg_loss appended (1.3148)\n", - "Epoch 4214: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4214: accuracy appended (60.00%)\n", - "Epoch 4214: model set back to train mode\n", - "Epoch 4214: model parameters saved\n", - "Epoch 4215 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3148)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3148)\n", - "Epoch 4215: avg_loss appended (1.3148)\n", - "Epoch 4215: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4215: accuracy appended (60.00%)\n", - "Epoch 4215: model set back to train mode\n", - "Epoch 4215: model parameters saved\n", - "Epoch 4216 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3148)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3148)\n", - "Epoch 4216: avg_loss appended (1.3148)\n", - "Epoch 4216: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4216: accuracy appended (60.00%)\n", - "Epoch 4216: model set back to train mode\n", - "Epoch 4216: model parameters saved\n", - "Epoch 4217 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3148)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3148)\n", - "Epoch 4217: avg_loss appended (1.3148)\n", - "Epoch 4217: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4217: accuracy appended (60.00%)\n", - "Epoch 4217: model set back to train mode\n", - "Epoch 4217: model parameters saved\n", - "Epoch 4218 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3147)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3147)\n", - "Epoch 4218: avg_loss appended (1.3147)\n", - "Epoch 4218: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4218: accuracy appended (60.00%)\n", - "Epoch 4218: model set back to train mode\n", - "Epoch 4218: model parameters saved\n", - "Epoch 4219 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3147)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3147)\n", - "Epoch 4219: avg_loss appended (1.3147)\n", - "Epoch 4219: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4219: accuracy appended (60.00%)\n", - "Epoch 4219: model set back to train mode\n", - "Epoch 4219: model parameters saved\n", - "Epoch 4220 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3147)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3147)\n", - "Epoch 4220: avg_loss appended (1.3147)\n", - "Epoch 4220: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4220: accuracy appended (60.00%)\n", - "Epoch 4220: model set back to train mode\n", - "Epoch 4220: model parameters saved\n", - "Epoch 4221 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3147)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3147)\n", - "Epoch 4221: avg_loss appended (1.3147)\n", - "Epoch 4221: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4221: accuracy appended (60.00%)\n", - "Epoch 4221: model set back to train mode\n", - "Epoch 4221: model parameters saved\n", - "Epoch 4222 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3147)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3147)\n", - "Epoch 4222: avg_loss appended (1.3147)\n", - "Epoch 4222: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4222: accuracy appended (60.00%)\n", - "Epoch 4222: model set back to train mode\n", - "Epoch 4222: model parameters saved\n", - "Epoch 4223 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3147)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3147)\n", - "Epoch 4223: avg_loss appended (1.3147)\n", - "Epoch 4223: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4223: accuracy appended (60.00%)\n", - "Epoch 4223: model set back to train mode\n", - "Epoch 4223: model parameters saved\n", - "Epoch 4224 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3147)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3147)\n", - "Epoch 4224: avg_loss appended (1.3147)\n", - "Epoch 4224: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4224: accuracy appended (60.00%)\n", - "Epoch 4224: model set back to train mode\n", - "Epoch 4224: model parameters saved\n", - "Epoch 4225 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3147)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3147)\n", - "Epoch 4225: avg_loss appended (1.3147)\n", - "Epoch 4225: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4225: accuracy appended (60.00%)\n", - "Epoch 4225: model set back to train mode\n", - "Epoch 4225: model parameters saved\n", - "Epoch 4226 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3147)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3147)\n", - "Epoch 4226: avg_loss appended (1.3147)\n", - "Epoch 4226: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4226: accuracy appended (60.00%)\n", - "Epoch 4226: model set back to train mode\n", - "Epoch 4226: model parameters saved\n", - "Epoch 4227 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3147)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3147)\n", - "Epoch 4227: avg_loss appended (1.3147)\n", - "Epoch 4227: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4227: accuracy appended (60.00%)\n", - "Epoch 4227: model set back to train mode\n", - "Epoch 4227: model parameters saved\n", - "Epoch 4228 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3147)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3147)\n", - "Epoch 4228: avg_loss appended (1.3147)\n", - "Epoch 4228: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4228: accuracy appended (60.00%)\n", - "Epoch 4228: model set back to train mode\n", - "Epoch 4228: model parameters saved\n", - "Epoch 4229 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3147)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3147)\n", - "Epoch 4229: avg_loss appended (1.3147)\n", - "Epoch 4229: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4229: accuracy appended (60.00%)\n", - "Epoch 4229: model set back to train mode\n", - "Epoch 4229: model parameters saved\n", - "Epoch 4230 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3147)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3147)\n", - "Epoch 4230: avg_loss appended (1.3147)\n", - "Epoch 4230: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4230: accuracy appended (60.00%)\n", - "Epoch 4230: model set back to train mode\n", - "Epoch 4230: model parameters saved\n", - "Epoch 4231 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3147)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3147)\n", - "Epoch 4231: avg_loss appended (1.3147)\n", - "Epoch 4231: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4231: accuracy appended (60.00%)\n", - "Epoch 4231: model set back to train mode\n", - "Epoch 4231: model parameters saved\n", - "Epoch 4232 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3147)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3147)\n", - "Epoch 4232: avg_loss appended (1.3147)\n", - "Epoch 4232: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4232: accuracy appended (60.00%)\n", - "Epoch 4232: model set back to train mode\n", - "Epoch 4232: model parameters saved\n", - "Epoch 4233 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3147)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3147)\n", - "Epoch 4233: avg_loss appended (1.3147)\n", - "Epoch 4233: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4233: accuracy appended (60.00%)\n", - "Epoch 4233: model set back to train mode\n", - "Epoch 4233: model parameters saved\n", - "Epoch 4234 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3147)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3147)\n", - "Epoch 4234: avg_loss appended (1.3147)\n", - "Epoch 4234: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4234: accuracy appended (60.00%)\n", - "Epoch 4234: model set back to train mode\n", - "Epoch 4234: model parameters saved\n", - "Epoch 4235 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3147)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3147)\n", - "Epoch 4235: avg_loss appended (1.3147)\n", - "Epoch 4235: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4235: accuracy appended (60.00%)\n", - "Epoch 4235: model set back to train mode\n", - "Epoch 4235: model parameters saved\n", - "Epoch 4236 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3147)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3147)\n", - "Epoch 4236: avg_loss appended (1.3147)\n", - "Epoch 4236: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4236: accuracy appended (60.00%)\n", - "Epoch 4236: model set back to train mode\n", - "Epoch 4236: model parameters saved\n", - "Epoch 4237 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3147)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3147)\n", - "Epoch 4237: avg_loss appended (1.3147)\n", - "Epoch 4237: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4237: accuracy appended (60.00%)\n", - "Epoch 4237: model set back to train mode\n", - "Epoch 4237: model parameters saved\n", - "Epoch 4238 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3147)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3147)\n", - "Epoch 4238: avg_loss appended (1.3147)\n", - "Epoch 4238: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4238: accuracy appended (60.00%)\n", - "Epoch 4238: model set back to train mode\n", - "Epoch 4238: model parameters saved\n", - "Epoch 4239 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3147)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3147)\n", - "Epoch 4239: avg_loss appended (1.3147)\n", - "Epoch 4239: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4239: accuracy appended (60.00%)\n", - "Epoch 4239: model set back to train mode\n", - "Epoch 4239: model parameters saved\n", - "Epoch 4240 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3147)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3147)\n", - "Epoch 4240: avg_loss appended (1.3147)\n", - "Epoch 4240: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4240: accuracy appended (60.00%)\n", - "Epoch 4240: model set back to train mode\n", - "Epoch 4240: model parameters saved\n", - "Epoch 4241 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3147)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3147)\n", - "Epoch 4241: avg_loss appended (1.3147)\n", - "Epoch 4241: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4241: accuracy appended (60.00%)\n", - "Epoch 4241: model set back to train mode\n", - "Epoch 4241: model parameters saved\n", - "Epoch 4242 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3147)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3147)\n", - "Epoch 4242: avg_loss appended (1.3147)\n", - "Epoch 4242: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4242: accuracy appended (60.00%)\n", - "Epoch 4242: model set back to train mode\n", - "Epoch 4242: model parameters saved\n", - "Epoch 4243 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3147)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3147)\n", - "Epoch 4243: avg_loss appended (1.3147)\n", - "Epoch 4243: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4243: accuracy appended (60.00%)\n", - "Epoch 4243: model set back to train mode\n", - "Epoch 4243: model parameters saved\n", - "Epoch 4244 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3147)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3147)\n", - "Epoch 4244: avg_loss appended (1.3147)\n", - "Epoch 4244: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4244: accuracy appended (60.00%)\n", - "Epoch 4244: model set back to train mode\n", - "Epoch 4244: model parameters saved\n", - "Epoch 4245 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3147)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3147)\n", - "Epoch 4245: avg_loss appended (1.3147)\n", - "Epoch 4245: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4245: accuracy appended (60.00%)\n", - "Epoch 4245: model set back to train mode\n", - "Epoch 4245: model parameters saved\n", - "Epoch 4246 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3147)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3147)\n", - "Epoch 4246: avg_loss appended (1.3147)\n", - "Epoch 4246: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4246: accuracy appended (60.00%)\n", - "Epoch 4246: model set back to train mode\n", - "Epoch 4246: model parameters saved\n", - "Epoch 4247 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3147)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3147)\n", - "Epoch 4247: avg_loss appended (1.3147)\n", - "Epoch 4247: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4247: accuracy appended (60.00%)\n", - "Epoch 4247: model set back to train mode\n", - "Epoch 4247: model parameters saved\n", - "Epoch 4248 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3147)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3147)\n", - "Epoch 4248: avg_loss appended (1.3147)\n", - "Epoch 4248: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4248: accuracy appended (60.00%)\n", - "Epoch 4248: model set back to train mode\n", - "Epoch 4248: model parameters saved\n", - "Epoch 4249 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3147)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3147)\n", - "Epoch 4249: avg_loss appended (1.3147)\n", - "Epoch 4249: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4249: accuracy appended (60.00%)\n", - "Epoch 4249: model set back to train mode\n", - "Epoch 4249: model parameters saved\n", - "Epoch 4250 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3147)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3147)\n", - "Epoch 4250: avg_loss appended (1.3147)\n", - "Epoch 4250: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4250: accuracy appended (60.00%)\n", - "Epoch 4250: model set back to train mode\n", - "Epoch 4250: model parameters saved\n", - "Epoch 4251 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3147)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3147)\n", - "Epoch 4251: avg_loss appended (1.3147)\n", - "Epoch 4251: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4251: accuracy appended (60.00%)\n", - "Epoch 4251: model set back to train mode\n", - "Epoch 4251: model parameters saved\n", - "Epoch 4252 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3146)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3146)\n", - "Epoch 4252: avg_loss appended (1.3146)\n", - "Epoch 4252: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4252: accuracy appended (60.00%)\n", - "Epoch 4252: model set back to train mode\n", - "Epoch 4252: model parameters saved\n", - "Epoch 4253 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3146)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3146)\n", - "Epoch 4253: avg_loss appended (1.3146)\n", - "Epoch 4253: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4253: accuracy appended (60.00%)\n", - "Epoch 4253: model set back to train mode\n", - "Epoch 4253: model parameters saved\n", - "Epoch 4254 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3146)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3146)\n", - "Epoch 4254: avg_loss appended (1.3146)\n", - "Epoch 4254: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4254: accuracy appended (60.00%)\n", - "Epoch 4254: model set back to train mode\n", - "Epoch 4254: model parameters saved\n", - "Epoch 4255 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3146)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3146)\n", - "Epoch 4255: avg_loss appended (1.3146)\n", - "Epoch 4255: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4255: accuracy appended (60.00%)\n", - "Epoch 4255: model set back to train mode\n", - "Epoch 4255: model parameters saved\n", - "Epoch 4256 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3146)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3146)\n", - "Epoch 4256: avg_loss appended (1.3146)\n", - "Epoch 4256: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4256: accuracy appended (60.00%)\n", - "Epoch 4256: model set back to train mode\n", - "Epoch 4256: model parameters saved\n", - "Epoch 4257 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3146)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3146)\n", - "Epoch 4257: avg_loss appended (1.3146)\n", - "Epoch 4257: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4257: accuracy appended (60.00%)\n", - "Epoch 4257: model set back to train mode\n", - "Epoch 4257: model parameters saved\n", - "Epoch 4258 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3146)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3146)\n", - "Epoch 4258: avg_loss appended (1.3146)\n", - "Epoch 4258: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4258: accuracy appended (60.00%)\n", - "Epoch 4258: model set back to train mode\n", - "Epoch 4258: model parameters saved\n", - "Epoch 4259 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3146)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3146)\n", - "Epoch 4259: avg_loss appended (1.3146)\n", - "Epoch 4259: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4259: accuracy appended (60.00%)\n", - "Epoch 4259: model set back to train mode\n", - "Epoch 4259: model parameters saved\n", - "Epoch 4260 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3146)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3146)\n", - "Epoch 4260: avg_loss appended (1.3146)\n", - "Epoch 4260: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4260: accuracy appended (60.00%)\n", - "Epoch 4260: model set back to train mode\n", - "Epoch 4260: model parameters saved\n", - "Epoch 4261 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3146)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3146)\n", - "Epoch 4261: avg_loss appended (1.3146)\n", - "Epoch 4261: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4261: accuracy appended (60.00%)\n", - "Epoch 4261: model set back to train mode\n", - "Epoch 4261: model parameters saved\n", - "Epoch 4262 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3146)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3146)\n", - "Epoch 4262: avg_loss appended (1.3146)\n", - "Epoch 4262: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4262: accuracy appended (60.00%)\n", - "Epoch 4262: model set back to train mode\n", - "Epoch 4262: model parameters saved\n", - "Epoch 4263 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3146)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3146)\n", - "Epoch 4263: avg_loss appended (1.3146)\n", - "Epoch 4263: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4263: accuracy appended (60.00%)\n", - "Epoch 4263: model set back to train mode\n", - "Epoch 4263: model parameters saved\n", - "Epoch 4264 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3146)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3146)\n", - "Epoch 4264: avg_loss appended (1.3146)\n", - "Epoch 4264: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4264: accuracy appended (60.00%)\n", - "Epoch 4264: model set back to train mode\n", - "Epoch 4264: model parameters saved\n", - "Epoch 4265 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3146)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3146)\n", - "Epoch 4265: avg_loss appended (1.3146)\n", - "Epoch 4265: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4265: accuracy appended (60.00%)\n", - "Epoch 4265: model set back to train mode\n", - "Epoch 4265: model parameters saved\n", - "Epoch 4266 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3146)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3146)\n", - "Epoch 4266: avg_loss appended (1.3146)\n", - "Epoch 4266: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4266: accuracy appended (60.00%)\n", - "Epoch 4266: model set back to train mode\n", - "Epoch 4266: model parameters saved\n", - "Epoch 4267 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3146)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3146)\n", - "Epoch 4267: avg_loss appended (1.3146)\n", - "Epoch 4267: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4267: accuracy appended (60.00%)\n", - "Epoch 4267: model set back to train mode\n", - "Epoch 4267: model parameters saved\n", - "Epoch 4268 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3146)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3146)\n", - "Epoch 4268: avg_loss appended (1.3146)\n", - "Epoch 4268: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4268: accuracy appended (60.00%)\n", - "Epoch 4268: model set back to train mode\n", - "Epoch 4268: model parameters saved\n", - "Epoch 4269 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3146)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3146)\n", - "Epoch 4269: avg_loss appended (1.3146)\n", - "Epoch 4269: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4269: accuracy appended (60.00%)\n", - "Epoch 4269: model set back to train mode\n", - "Epoch 4269: model parameters saved\n", - "Epoch 4270 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3146)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3146)\n", - "Epoch 4270: avg_loss appended (1.3146)\n", - "Epoch 4270: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4270: accuracy appended (60.00%)\n", - "Epoch 4270: model set back to train mode\n", - "Epoch 4270: model parameters saved\n", - "Epoch 4271 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3146)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3146)\n", - "Epoch 4271: avg_loss appended (1.3146)\n", - "Epoch 4271: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4271: accuracy appended (60.00%)\n", - "Epoch 4271: model set back to train mode\n", - "Epoch 4271: model parameters saved\n", - "Epoch 4272 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3146)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3146)\n", - "Epoch 4272: avg_loss appended (1.3146)\n", - "Epoch 4272: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4272: accuracy appended (60.00%)\n", - "Epoch 4272: model set back to train mode\n", - "Epoch 4272: model parameters saved\n", - "Epoch 4273 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3146)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3146)\n", - "Epoch 4273: avg_loss appended (1.3146)\n", - "Epoch 4273: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4273: accuracy appended (60.00%)\n", - "Epoch 4273: model set back to train mode\n", - "Epoch 4273: model parameters saved\n", - "Epoch 4274 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3146)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3146)\n", - "Epoch 4274: avg_loss appended (1.3146)\n", - "Epoch 4274: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4274: accuracy appended (60.00%)\n", - "Epoch 4274: model set back to train mode\n", - "Epoch 4274: model parameters saved\n", - "Epoch 4275 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3146)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3146)\n", - "Epoch 4275: avg_loss appended (1.3146)\n", - "Epoch 4275: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4275: accuracy appended (60.00%)\n", - "Epoch 4275: model set back to train mode\n", - "Epoch 4275: model parameters saved\n", - "Epoch 4276 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3146)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3146)\n", - "Epoch 4276: avg_loss appended (1.3146)\n", - "Epoch 4276: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4276: accuracy appended (60.00%)\n", - "Epoch 4276: model set back to train mode\n", - "Epoch 4276: model parameters saved\n", - "Epoch 4277 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3146)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3146)\n", - "Epoch 4277: avg_loss appended (1.3146)\n", - "Epoch 4277: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4277: accuracy appended (60.00%)\n", - "Epoch 4277: model set back to train mode\n", - "Epoch 4277: model parameters saved\n", - "Epoch 4278 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3146)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3146)\n", - "Epoch 4278: avg_loss appended (1.3146)\n", - "Epoch 4278: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4278: accuracy appended (60.00%)\n", - "Epoch 4278: model set back to train mode\n", - "Epoch 4278: model parameters saved\n", - "Epoch 4279 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3146)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3146)\n", - "Epoch 4279: avg_loss appended (1.3146)\n", - "Epoch 4279: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4279: accuracy appended (60.00%)\n", - "Epoch 4279: model set back to train mode\n", - "Epoch 4279: model parameters saved\n", - "Epoch 4280 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3146)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3146)\n", - "Epoch 4280: avg_loss appended (1.3146)\n", - "Epoch 4280: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4280: accuracy appended (60.00%)\n", - "Epoch 4280: model set back to train mode\n", - "Epoch 4280: model parameters saved\n", - "Epoch 4281 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3146)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3146)\n", - "Epoch 4281: avg_loss appended (1.3146)\n", - "Epoch 4281: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4281: accuracy appended (60.00%)\n", - "Epoch 4281: model set back to train mode\n", - "Epoch 4281: model parameters saved\n", - "Epoch 4282 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3146)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3146)\n", - "Epoch 4282: avg_loss appended (1.3146)\n", - "Epoch 4282: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4282: accuracy appended (60.00%)\n", - "Epoch 4282: model set back to train mode\n", - "Epoch 4282: model parameters saved\n", - "Epoch 4283 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3146)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3146)\n", - "Epoch 4283: avg_loss appended (1.3146)\n", - "Epoch 4283: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4283: accuracy appended (60.00%)\n", - "Epoch 4283: model set back to train mode\n", - "Epoch 4283: model parameters saved\n", - "Epoch 4284 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3146)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3146)\n", - "Epoch 4284: avg_loss appended (1.3146)\n", - "Epoch 4284: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4284: accuracy appended (60.00%)\n", - "Epoch 4284: model set back to train mode\n", - "Epoch 4284: model parameters saved\n", - "Epoch 4285 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3146)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3146)\n", - "Epoch 4285: avg_loss appended (1.3146)\n", - "Epoch 4285: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4285: accuracy appended (60.00%)\n", - "Epoch 4285: model set back to train mode\n", - "Epoch 4285: model parameters saved\n", - "Epoch 4286 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3146)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3146)\n", - "Epoch 4286: avg_loss appended (1.3146)\n", - "Epoch 4286: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4286: accuracy appended (60.00%)\n", - "Epoch 4286: model set back to train mode\n", - "Epoch 4286: model parameters saved\n", - "Epoch 4287 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3146)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3146)\n", - "Epoch 4287: avg_loss appended (1.3146)\n", - "Epoch 4287: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4287: accuracy appended (60.00%)\n", - "Epoch 4287: model set back to train mode\n", - "Epoch 4287: model parameters saved\n", - "Epoch 4288 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3146)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3146)\n", - "Epoch 4288: avg_loss appended (1.3146)\n", - "Epoch 4288: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4288: accuracy appended (60.00%)\n", - "Epoch 4288: model set back to train mode\n", - "Epoch 4288: model parameters saved\n", - "Epoch 4289 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3145)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3145)\n", - "Epoch 4289: avg_loss appended (1.3145)\n", - "Epoch 4289: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4289: accuracy appended (60.00%)\n", - "Epoch 4289: model set back to train mode\n", - "Epoch 4289: model parameters saved\n", - "Epoch 4290 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3145)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3145)\n", - "Epoch 4290: avg_loss appended (1.3145)\n", - "Epoch 4290: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4290: accuracy appended (60.00%)\n", - "Epoch 4290: model set back to train mode\n", - "Epoch 4290: model parameters saved\n", - "Epoch 4291 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3145)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3145)\n", - "Epoch 4291: avg_loss appended (1.3145)\n", - "Epoch 4291: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4291: accuracy appended (60.00%)\n", - "Epoch 4291: model set back to train mode\n", - "Epoch 4291: model parameters saved\n", - "Epoch 4292 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3145)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3145)\n", - "Epoch 4292: avg_loss appended (1.3145)\n", - "Epoch 4292: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4292: accuracy appended (60.00%)\n", - "Epoch 4292: model set back to train mode\n", - "Epoch 4292: model parameters saved\n", - "Epoch 4293 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3145)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3145)\n", - "Epoch 4293: avg_loss appended (1.3145)\n", - "Epoch 4293: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4293: accuracy appended (60.00%)\n", - "Epoch 4293: model set back to train mode\n", - "Epoch 4293: model parameters saved\n", - "Epoch 4294 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3145)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3145)\n", - "Epoch 4294: avg_loss appended (1.3145)\n", - "Epoch 4294: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4294: accuracy appended (60.00%)\n", - "Epoch 4294: model set back to train mode\n", - "Epoch 4294: model parameters saved\n", - "Epoch 4295 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3145)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3145)\n", - "Epoch 4295: avg_loss appended (1.3145)\n", - "Epoch 4295: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4295: accuracy appended (60.00%)\n", - "Epoch 4295: model set back to train mode\n", - "Epoch 4295: model parameters saved\n", - "Epoch 4296 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3145)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3145)\n", - "Epoch 4296: avg_loss appended (1.3145)\n", - "Epoch 4296: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4296: accuracy appended (60.00%)\n", - "Epoch 4296: model set back to train mode\n", - "Epoch 4296: model parameters saved\n", - "Epoch 4297 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3145)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3145)\n", - "Epoch 4297: avg_loss appended (1.3145)\n", - "Epoch 4297: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4297: accuracy appended (60.00%)\n", - "Epoch 4297: model set back to train mode\n", - "Epoch 4297: model parameters saved\n", - "Epoch 4298 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3145)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3145)\n", - "Epoch 4298: avg_loss appended (1.3145)\n", - "Epoch 4298: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4298: accuracy appended (60.00%)\n", - "Epoch 4298: model set back to train mode\n", - "Epoch 4298: model parameters saved\n", - "Epoch 4299 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3145)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3145)\n", - "Epoch 4299: avg_loss appended (1.3145)\n", - "Epoch 4299: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4299: accuracy appended (60.00%)\n", - "Epoch 4299: model set back to train mode\n", - "Epoch 4299: model parameters saved\n", - "Epoch 4300 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3145)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3145)\n", - "Epoch 4300: avg_loss appended (1.3145)\n", - "Epoch 4300: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4300: accuracy appended (60.00%)\n", - "Epoch 4300: model set back to train mode\n", - "Epoch 4300: model parameters saved\n", - "Epoch 4300/10000, Loss: 1.3145, Accuracy: 60.00%\n", - "Epoch 4301 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3145)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3145)\n", - "Epoch 4301: avg_loss appended (1.3145)\n", - "Epoch 4301: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4301: accuracy appended (60.00%)\n", - "Epoch 4301: model set back to train mode\n", - "Epoch 4301: model parameters saved\n", - "Epoch 4302 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3145)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3145)\n", - "Epoch 4302: avg_loss appended (1.3145)\n", - "Epoch 4302: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4302: accuracy appended (60.00%)\n", - "Epoch 4302: model set back to train mode\n", - "Epoch 4302: model parameters saved\n", - "Epoch 4303 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3145)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3145)\n", - "Epoch 4303: avg_loss appended (1.3145)\n", - "Epoch 4303: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4303: accuracy appended (60.00%)\n", - "Epoch 4303: model set back to train mode\n", - "Epoch 4303: model parameters saved\n", - "Epoch 4304 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3145)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3145)\n", - "Epoch 4304: avg_loss appended (1.3145)\n", - "Epoch 4304: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4304: accuracy appended (60.00%)\n", - "Epoch 4304: model set back to train mode\n", - "Epoch 4304: model parameters saved\n", - "Epoch 4305 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3145)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3145)\n", - "Epoch 4305: avg_loss appended (1.3145)\n", - "Epoch 4305: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4305: accuracy appended (60.00%)\n", - "Epoch 4305: model set back to train mode\n", - "Epoch 4305: model parameters saved\n", - "Epoch 4306 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3145)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3145)\n", - "Epoch 4306: avg_loss appended (1.3145)\n", - "Epoch 4306: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4306: accuracy appended (60.00%)\n", - "Epoch 4306: model set back to train mode\n", - "Epoch 4306: model parameters saved\n", - "Epoch 4307 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3145)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3145)\n", - "Epoch 4307: avg_loss appended (1.3145)\n", - "Epoch 4307: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4307: accuracy appended (60.00%)\n", - "Epoch 4307: model set back to train mode\n", - "Epoch 4307: model parameters saved\n", - "Epoch 4308 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3145)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3145)\n", - "Epoch 4308: avg_loss appended (1.3145)\n", - "Epoch 4308: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4308: accuracy appended (60.00%)\n", - "Epoch 4308: model set back to train mode\n", - "Epoch 4308: model parameters saved\n", - "Epoch 4309 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3145)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3145)\n", - "Epoch 4309: avg_loss appended (1.3145)\n", - "Epoch 4309: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4309: accuracy appended (60.00%)\n", - "Epoch 4309: model set back to train mode\n", - "Epoch 4309: model parameters saved\n", - "Epoch 4310 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3145)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3145)\n", - "Epoch 4310: avg_loss appended (1.3145)\n", - "Epoch 4310: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4310: accuracy appended (60.00%)\n", - "Epoch 4310: model set back to train mode\n", - "Epoch 4310: model parameters saved\n", - "Epoch 4311 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3145)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3145)\n", - "Epoch 4311: avg_loss appended (1.3145)\n", - "Epoch 4311: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4311: accuracy appended (60.00%)\n", - "Epoch 4311: model set back to train mode\n", - "Epoch 4311: model parameters saved\n", - "Epoch 4312 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3145)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3145)\n", - "Epoch 4312: avg_loss appended (1.3145)\n", - "Epoch 4312: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4312: accuracy appended (60.00%)\n", - "Epoch 4312: model set back to train mode\n", - "Epoch 4312: model parameters saved\n", - "Epoch 4313 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3145)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3145)\n", - "Epoch 4313: avg_loss appended (1.3145)\n", - "Epoch 4313: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4313: accuracy appended (60.00%)\n", - "Epoch 4313: model set back to train mode\n", - "Epoch 4313: model parameters saved\n", - "Epoch 4314 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3145)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3145)\n", - "Epoch 4314: avg_loss appended (1.3145)\n", - "Epoch 4314: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4314: accuracy appended (60.00%)\n", - "Epoch 4314: model set back to train mode\n", - "Epoch 4314: model parameters saved\n", - "Epoch 4315 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3145)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3145)\n", - "Epoch 4315: avg_loss appended (1.3145)\n", - "Epoch 4315: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4315: accuracy appended (60.00%)\n", - "Epoch 4315: model set back to train mode\n", - "Epoch 4315: model parameters saved\n", - "Epoch 4316 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3145)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3145)\n", - "Epoch 4316: avg_loss appended (1.3145)\n", - "Epoch 4316: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4316: accuracy appended (60.00%)\n", - "Epoch 4316: model set back to train mode\n", - "Epoch 4316: model parameters saved\n", - "Epoch 4317 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3145)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3145)\n", - "Epoch 4317: avg_loss appended (1.3145)\n", - "Epoch 4317: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4317: accuracy appended (60.00%)\n", - "Epoch 4317: model set back to train mode\n", - "Epoch 4317: model parameters saved\n", - "Epoch 4318 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3145)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3145)\n", - "Epoch 4318: avg_loss appended (1.3145)\n", - "Epoch 4318: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4318: accuracy appended (60.00%)\n", - "Epoch 4318: model set back to train mode\n", - "Epoch 4318: model parameters saved\n", - "Epoch 4319 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3145)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3145)\n", - "Epoch 4319: avg_loss appended (1.3145)\n", - "Epoch 4319: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4319: accuracy appended (60.00%)\n", - "Epoch 4319: model set back to train mode\n", - "Epoch 4319: model parameters saved\n", - "Epoch 4320 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3145)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3145)\n", - "Epoch 4320: avg_loss appended (1.3145)\n", - "Epoch 4320: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4320: accuracy appended (60.00%)\n", - "Epoch 4320: model set back to train mode\n", - "Epoch 4320: model parameters saved\n", - "Epoch 4321 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3145)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3145)\n", - "Epoch 4321: avg_loss appended (1.3145)\n", - "Epoch 4321: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4321: accuracy appended (60.00%)\n", - "Epoch 4321: model set back to train mode\n", - "Epoch 4321: model parameters saved\n", - "Epoch 4322 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3145)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3145)\n", - "Epoch 4322: avg_loss appended (1.3145)\n", - "Epoch 4322: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4322: accuracy appended (60.00%)\n", - "Epoch 4322: model set back to train mode\n", - "Epoch 4322: model parameters saved\n", - "Epoch 4323 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3145)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3145)\n", - "Epoch 4323: avg_loss appended (1.3145)\n", - "Epoch 4323: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4323: accuracy appended (60.00%)\n", - "Epoch 4323: model set back to train mode\n", - "Epoch 4323: model parameters saved\n", - "Epoch 4324 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3145)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3145)\n", - "Epoch 4324: avg_loss appended (1.3145)\n", - "Epoch 4324: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4324: accuracy appended (60.00%)\n", - "Epoch 4324: model set back to train mode\n", - "Epoch 4324: model parameters saved\n", - "Epoch 4325 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3145)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3145)\n", - "Epoch 4325: avg_loss appended (1.3145)\n", - "Epoch 4325: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4325: accuracy appended (60.00%)\n", - "Epoch 4325: model set back to train mode\n", - "Epoch 4325: model parameters saved\n", - "Epoch 4326 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3145)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3145)\n", - "Epoch 4326: avg_loss appended (1.3145)\n", - "Epoch 4326: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4326: accuracy appended (60.00%)\n", - "Epoch 4326: model set back to train mode\n", - "Epoch 4326: model parameters saved\n", - "Epoch 4327 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3145)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3145)\n", - "Epoch 4327: avg_loss appended (1.3145)\n", - "Epoch 4327: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4327: accuracy appended (60.00%)\n", - "Epoch 4327: model set back to train mode\n", - "Epoch 4327: model parameters saved\n", - "Epoch 4328 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3145)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3145)\n", - "Epoch 4328: avg_loss appended (1.3145)\n", - "Epoch 4328: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4328: accuracy appended (60.00%)\n", - "Epoch 4328: model set back to train mode\n", - "Epoch 4328: model parameters saved\n", - "Epoch 4329 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3144)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3144)\n", - "Epoch 4329: avg_loss appended (1.3144)\n", - "Epoch 4329: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4329: accuracy appended (60.00%)\n", - "Epoch 4329: model set back to train mode\n", - "Epoch 4329: model parameters saved\n", - "Epoch 4330 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3144)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3144)\n", - "Epoch 4330: avg_loss appended (1.3144)\n", - "Epoch 4330: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4330: accuracy appended (60.00%)\n", - "Epoch 4330: model set back to train mode\n", - "Epoch 4330: model parameters saved\n", - "Epoch 4331 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3144)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3144)\n", - "Epoch 4331: avg_loss appended (1.3144)\n", - "Epoch 4331: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4331: accuracy appended (60.00%)\n", - "Epoch 4331: model set back to train mode\n", - "Epoch 4331: model parameters saved\n", - "Epoch 4332 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3144)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3144)\n", - "Epoch 4332: avg_loss appended (1.3144)\n", - "Epoch 4332: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4332: accuracy appended (60.00%)\n", - "Epoch 4332: model set back to train mode\n", - "Epoch 4332: model parameters saved\n", - "Epoch 4333 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3144)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3144)\n", - "Epoch 4333: avg_loss appended (1.3144)\n", - "Epoch 4333: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4333: accuracy appended (60.00%)\n", - "Epoch 4333: model set back to train mode\n", - "Epoch 4333: model parameters saved\n", - "Epoch 4334 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3144)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3144)\n", - "Epoch 4334: avg_loss appended (1.3144)\n", - "Epoch 4334: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4334: accuracy appended (60.00%)\n", - "Epoch 4334: model set back to train mode\n", - "Epoch 4334: model parameters saved\n", - "Epoch 4335 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3144)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3144)\n", - "Epoch 4335: avg_loss appended (1.3144)\n", - "Epoch 4335: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4335: accuracy appended (60.00%)\n", - "Epoch 4335: model set back to train mode\n", - "Epoch 4335: model parameters saved\n", - "Epoch 4336 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3144)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3144)\n", - "Epoch 4336: avg_loss appended (1.3144)\n", - "Epoch 4336: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4336: accuracy appended (60.00%)\n", - "Epoch 4336: model set back to train mode\n", - "Epoch 4336: model parameters saved\n", - "Epoch 4337 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3144)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3144)\n", - "Epoch 4337: avg_loss appended (1.3144)\n", - "Epoch 4337: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4337: accuracy appended (60.00%)\n", - "Epoch 4337: model set back to train mode\n", - "Epoch 4337: model parameters saved\n", - "Epoch 4338 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3144)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3144)\n", - "Epoch 4338: avg_loss appended (1.3144)\n", - "Epoch 4338: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4338: accuracy appended (60.00%)\n", - "Epoch 4338: model set back to train mode\n", - "Epoch 4338: model parameters saved\n", - "Epoch 4339 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3144)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3144)\n", - "Epoch 4339: avg_loss appended (1.3144)\n", - "Epoch 4339: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4339: accuracy appended (60.00%)\n", - "Epoch 4339: model set back to train mode\n", - "Epoch 4339: model parameters saved\n", - "Epoch 4340 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3144)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3144)\n", - "Epoch 4340: avg_loss appended (1.3144)\n", - "Epoch 4340: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4340: accuracy appended (60.00%)\n", - "Epoch 4340: model set back to train mode\n", - "Epoch 4340: model parameters saved\n", - "Epoch 4341 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3144)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3144)\n", - "Epoch 4341: avg_loss appended (1.3144)\n", - "Epoch 4341: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4341: accuracy appended (60.00%)\n", - "Epoch 4341: model set back to train mode\n", - "Epoch 4341: model parameters saved\n", - "Epoch 4342 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3144)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3144)\n", - "Epoch 4342: avg_loss appended (1.3144)\n", - "Epoch 4342: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4342: accuracy appended (60.00%)\n", - "Epoch 4342: model set back to train mode\n", - "Epoch 4342: model parameters saved\n", - "Epoch 4343 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3144)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3144)\n", - "Epoch 4343: avg_loss appended (1.3144)\n", - "Epoch 4343: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4343: accuracy appended (60.00%)\n", - "Epoch 4343: model set back to train mode\n", - "Epoch 4343: model parameters saved\n", - "Epoch 4344 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3144)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3144)\n", - "Epoch 4344: avg_loss appended (1.3144)\n", - "Epoch 4344: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4344: accuracy appended (60.00%)\n", - "Epoch 4344: model set back to train mode\n", - "Epoch 4344: model parameters saved\n", - "Epoch 4345 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3144)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3144)\n", - "Epoch 4345: avg_loss appended (1.3144)\n", - "Epoch 4345: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4345: accuracy appended (60.00%)\n", - "Epoch 4345: model set back to train mode\n", - "Epoch 4345: model parameters saved\n", - "Epoch 4346 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3144)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3144)\n", - "Epoch 4346: avg_loss appended (1.3144)\n", - "Epoch 4346: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4346: accuracy appended (60.00%)\n", - "Epoch 4346: model set back to train mode\n", - "Epoch 4346: model parameters saved\n", - "Epoch 4347 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3144)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3144)\n", - "Epoch 4347: avg_loss appended (1.3144)\n", - "Epoch 4347: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4347: accuracy appended (60.00%)\n", - "Epoch 4347: model set back to train mode\n", - "Epoch 4347: model parameters saved\n", - "Epoch 4348 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3144)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3144)\n", - "Epoch 4348: avg_loss appended (1.3144)\n", - "Epoch 4348: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4348: accuracy appended (60.00%)\n", - "Epoch 4348: model set back to train mode\n", - "Epoch 4348: model parameters saved\n", - "Epoch 4349 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3144)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3144)\n", - "Epoch 4349: avg_loss appended (1.3144)\n", - "Epoch 4349: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4349: accuracy appended (60.00%)\n", - "Epoch 4349: model set back to train mode\n", - "Epoch 4349: model parameters saved\n", - "Epoch 4350 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3144)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3144)\n", - "Epoch 4350: avg_loss appended (1.3144)\n", - "Epoch 4350: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4350: accuracy appended (60.00%)\n", - "Epoch 4350: model set back to train mode\n", - "Epoch 4350: model parameters saved\n", - "Epoch 4351 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3144)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3144)\n", - "Epoch 4351: avg_loss appended (1.3144)\n", - "Epoch 4351: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4351: accuracy appended (60.00%)\n", - "Epoch 4351: model set back to train mode\n", - "Epoch 4351: model parameters saved\n", - "Epoch 4352 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3144)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3144)\n", - "Epoch 4352: avg_loss appended (1.3144)\n", - "Epoch 4352: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4352: accuracy appended (60.00%)\n", - "Epoch 4352: model set back to train mode\n", - "Epoch 4352: model parameters saved\n", - "Epoch 4353 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3144)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3144)\n", - "Epoch 4353: avg_loss appended (1.3144)\n", - "Epoch 4353: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4353: accuracy appended (60.00%)\n", - "Epoch 4353: model set back to train mode\n", - "Epoch 4353: model parameters saved\n", - "Epoch 4354 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3144)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3144)\n", - "Epoch 4354: avg_loss appended (1.3144)\n", - "Epoch 4354: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4354: accuracy appended (60.00%)\n", - "Epoch 4354: model set back to train mode\n", - "Epoch 4354: model parameters saved\n", - "Epoch 4355 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3144)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3144)\n", - "Epoch 4355: avg_loss appended (1.3144)\n", - "Epoch 4355: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4355: accuracy appended (60.00%)\n", - "Epoch 4355: model set back to train mode\n", - "Epoch 4355: model parameters saved\n", - "Epoch 4356 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3144)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3144)\n", - "Epoch 4356: avg_loss appended (1.3144)\n", - "Epoch 4356: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4356: accuracy appended (60.00%)\n", - "Epoch 4356: model set back to train mode\n", - "Epoch 4356: model parameters saved\n", - "Epoch 4357 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3144)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3144)\n", - "Epoch 4357: avg_loss appended (1.3144)\n", - "Epoch 4357: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4357: accuracy appended (60.00%)\n", - "Epoch 4357: model set back to train mode\n", - "Epoch 4357: model parameters saved\n", - "Epoch 4358 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3144)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3144)\n", - "Epoch 4358: avg_loss appended (1.3144)\n", - "Epoch 4358: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4358: accuracy appended (60.00%)\n", - "Epoch 4358: model set back to train mode\n", - "Epoch 4358: model parameters saved\n", - "Epoch 4359 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3144)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3144)\n", - "Epoch 4359: avg_loss appended (1.3144)\n", - "Epoch 4359: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4359: accuracy appended (60.00%)\n", - "Epoch 4359: model set back to train mode\n", - "Epoch 4359: model parameters saved\n", - "Epoch 4360 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3144)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3144)\n", - "Epoch 4360: avg_loss appended (1.3144)\n", - "Epoch 4360: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4360: accuracy appended (60.00%)\n", - "Epoch 4360: model set back to train mode\n", - "Epoch 4360: model parameters saved\n", - "Epoch 4361 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3144)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3144)\n", - "Epoch 4361: avg_loss appended (1.3144)\n", - "Epoch 4361: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4361: accuracy appended (60.00%)\n", - "Epoch 4361: model set back to train mode\n", - "Epoch 4361: model parameters saved\n", - "Epoch 4362 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3144)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3144)\n", - "Epoch 4362: avg_loss appended (1.3144)\n", - "Epoch 4362: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4362: accuracy appended (60.00%)\n", - "Epoch 4362: model set back to train mode\n", - "Epoch 4362: model parameters saved\n", - "Epoch 4363 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3144)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3144)\n", - "Epoch 4363: avg_loss appended (1.3144)\n", - "Epoch 4363: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4363: accuracy appended (60.00%)\n", - "Epoch 4363: model set back to train mode\n", - "Epoch 4363: model parameters saved\n", - "Epoch 4364 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3144)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3144)\n", - "Epoch 4364: avg_loss appended (1.3144)\n", - "Epoch 4364: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4364: accuracy appended (60.00%)\n", - "Epoch 4364: model set back to train mode\n", - "Epoch 4364: model parameters saved\n", - "Epoch 4365 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3144)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3144)\n", - "Epoch 4365: avg_loss appended (1.3144)\n", - "Epoch 4365: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4365: accuracy appended (60.00%)\n", - "Epoch 4365: model set back to train mode\n", - "Epoch 4365: model parameters saved\n", - "Epoch 4366 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3144)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3144)\n", - "Epoch 4366: avg_loss appended (1.3144)\n", - "Epoch 4366: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4366: accuracy appended (60.00%)\n", - "Epoch 4366: model set back to train mode\n", - "Epoch 4366: model parameters saved\n", - "Epoch 4367 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3144)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3144)\n", - "Epoch 4367: avg_loss appended (1.3144)\n", - "Epoch 4367: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4367: accuracy appended (60.00%)\n", - "Epoch 4367: model set back to train mode\n", - "Epoch 4367: model parameters saved\n", - "Epoch 4368 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3144)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3144)\n", - "Epoch 4368: avg_loss appended (1.3144)\n", - "Epoch 4368: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4368: accuracy appended (60.00%)\n", - "Epoch 4368: model set back to train mode\n", - "Epoch 4368: model parameters saved\n", - "Epoch 4369 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3144)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3144)\n", - "Epoch 4369: avg_loss appended (1.3144)\n", - "Epoch 4369: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4369: accuracy appended (60.00%)\n", - "Epoch 4369: model set back to train mode\n", - "Epoch 4369: model parameters saved\n", - "Epoch 4370 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3144)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3144)\n", - "Epoch 4370: avg_loss appended (1.3144)\n", - "Epoch 4370: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4370: accuracy appended (60.00%)\n", - "Epoch 4370: model set back to train mode\n", - "Epoch 4370: model parameters saved\n", - "Epoch 4371 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3144)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3144)\n", - "Epoch 4371: avg_loss appended (1.3144)\n", - "Epoch 4371: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4371: accuracy appended (60.00%)\n", - "Epoch 4371: model set back to train mode\n", - "Epoch 4371: model parameters saved\n", - "Epoch 4372 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3144)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3144)\n", - "Epoch 4372: avg_loss appended (1.3144)\n", - "Epoch 4372: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4372: accuracy appended (60.00%)\n", - "Epoch 4372: model set back to train mode\n", - "Epoch 4372: model parameters saved\n", - "Epoch 4373 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3144)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3144)\n", - "Epoch 4373: avg_loss appended (1.3144)\n", - "Epoch 4373: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4373: accuracy appended (60.00%)\n", - "Epoch 4373: model set back to train mode\n", - "Epoch 4373: model parameters saved\n", - "Epoch 4374 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3143)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3143)\n", - "Epoch 4374: avg_loss appended (1.3143)\n", - "Epoch 4374: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4374: accuracy appended (60.00%)\n", - "Epoch 4374: model set back to train mode\n", - "Epoch 4374: model parameters saved\n", - "Epoch 4375 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3143)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3143)\n", - "Epoch 4375: avg_loss appended (1.3143)\n", - "Epoch 4375: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4375: accuracy appended (60.00%)\n", - "Epoch 4375: model set back to train mode\n", - "Epoch 4375: model parameters saved\n", - "Epoch 4376 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3143)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3143)\n", - "Epoch 4376: avg_loss appended (1.3143)\n", - "Epoch 4376: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4376: accuracy appended (60.00%)\n", - "Epoch 4376: model set back to train mode\n", - "Epoch 4376: model parameters saved\n", - "Epoch 4377 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3143)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3143)\n", - "Epoch 4377: avg_loss appended (1.3143)\n", - "Epoch 4377: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4377: accuracy appended (60.00%)\n", - "Epoch 4377: model set back to train mode\n", - "Epoch 4377: model parameters saved\n", - "Epoch 4378 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3143)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3143)\n", - "Epoch 4378: avg_loss appended (1.3143)\n", - "Epoch 4378: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4378: accuracy appended (60.00%)\n", - "Epoch 4378: model set back to train mode\n", - "Epoch 4378: model parameters saved\n", - "Epoch 4379 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3143)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3143)\n", - "Epoch 4379: avg_loss appended (1.3143)\n", - "Epoch 4379: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4379: accuracy appended (60.00%)\n", - "Epoch 4379: model set back to train mode\n", - "Epoch 4379: model parameters saved\n", - "Epoch 4380 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3143)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3143)\n", - "Epoch 4380: avg_loss appended (1.3143)\n", - "Epoch 4380: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4380: accuracy appended (60.00%)\n", - "Epoch 4380: model set back to train mode\n", - "Epoch 4380: model parameters saved\n", - "Epoch 4381 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3143)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3143)\n", - "Epoch 4381: avg_loss appended (1.3143)\n", - "Epoch 4381: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4381: accuracy appended (60.00%)\n", - "Epoch 4381: model set back to train mode\n", - "Epoch 4381: model parameters saved\n", - "Epoch 4382 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3143)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3143)\n", - "Epoch 4382: avg_loss appended (1.3143)\n", - "Epoch 4382: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4382: accuracy appended (60.00%)\n", - "Epoch 4382: model set back to train mode\n", - "Epoch 4382: model parameters saved\n", - "Epoch 4383 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3143)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3143)\n", - "Epoch 4383: avg_loss appended (1.3143)\n", - "Epoch 4383: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4383: accuracy appended (60.00%)\n", - "Epoch 4383: model set back to train mode\n", - "Epoch 4383: model parameters saved\n", - "Epoch 4384 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3143)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3143)\n", - "Epoch 4384: avg_loss appended (1.3143)\n", - "Epoch 4384: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4384: accuracy appended (60.00%)\n", - "Epoch 4384: model set back to train mode\n", - "Epoch 4384: model parameters saved\n", - "Epoch 4385 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3143)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3143)\n", - "Epoch 4385: avg_loss appended (1.3143)\n", - "Epoch 4385: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4385: accuracy appended (60.00%)\n", - "Epoch 4385: model set back to train mode\n", - "Epoch 4385: model parameters saved\n", - "Epoch 4386 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3143)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3143)\n", - "Epoch 4386: avg_loss appended (1.3143)\n", - "Epoch 4386: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4386: accuracy appended (60.00%)\n", - "Epoch 4386: model set back to train mode\n", - "Epoch 4386: model parameters saved\n", - "Epoch 4387 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3143)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3143)\n", - "Epoch 4387: avg_loss appended (1.3143)\n", - "Epoch 4387: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4387: accuracy appended (60.00%)\n", - "Epoch 4387: model set back to train mode\n", - "Epoch 4387: model parameters saved\n", - "Epoch 4388 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3143)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3143)\n", - "Epoch 4388: avg_loss appended (1.3143)\n", - "Epoch 4388: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4388: accuracy appended (60.00%)\n", - "Epoch 4388: model set back to train mode\n", - "Epoch 4388: model parameters saved\n", - "Epoch 4389 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3143)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3143)\n", - "Epoch 4389: avg_loss appended (1.3143)\n", - "Epoch 4389: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4389: accuracy appended (60.00%)\n", - "Epoch 4389: model set back to train mode\n", - "Epoch 4389: model parameters saved\n", - "Epoch 4390 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3143)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3143)\n", - "Epoch 4390: avg_loss appended (1.3143)\n", - "Epoch 4390: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4390: accuracy appended (60.00%)\n", - "Epoch 4390: model set back to train mode\n", - "Epoch 4390: model parameters saved\n", - "Epoch 4391 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3143)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3143)\n", - "Epoch 4391: avg_loss appended (1.3143)\n", - "Epoch 4391: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4391: accuracy appended (60.00%)\n", - "Epoch 4391: model set back to train mode\n", - "Epoch 4391: model parameters saved\n", - "Epoch 4392 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3143)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3143)\n", - "Epoch 4392: avg_loss appended (1.3143)\n", - "Epoch 4392: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4392: accuracy appended (60.00%)\n", - "Epoch 4392: model set back to train mode\n", - "Epoch 4392: model parameters saved\n", - "Epoch 4393 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3143)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3143)\n", - "Epoch 4393: avg_loss appended (1.3143)\n", - "Epoch 4393: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4393: accuracy appended (60.00%)\n", - "Epoch 4393: model set back to train mode\n", - "Epoch 4393: model parameters saved\n", - "Epoch 4394 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3143)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3143)\n", - "Epoch 4394: avg_loss appended (1.3143)\n", - "Epoch 4394: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4394: accuracy appended (60.00%)\n", - "Epoch 4394: model set back to train mode\n", - "Epoch 4394: model parameters saved\n", - "Epoch 4395 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3143)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3143)\n", - "Epoch 4395: avg_loss appended (1.3143)\n", - "Epoch 4395: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4395: accuracy appended (60.00%)\n", - "Epoch 4395: model set back to train mode\n", - "Epoch 4395: model parameters saved\n", - "Epoch 4396 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3143)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3143)\n", - "Epoch 4396: avg_loss appended (1.3143)\n", - "Epoch 4396: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4396: accuracy appended (60.00%)\n", - "Epoch 4396: model set back to train mode\n", - "Epoch 4396: model parameters saved\n", - "Epoch 4397 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3143)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3143)\n", - "Epoch 4397: avg_loss appended (1.3143)\n", - "Epoch 4397: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4397: accuracy appended (60.00%)\n", - "Epoch 4397: model set back to train mode\n", - "Epoch 4397: model parameters saved\n", - "Epoch 4398 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3143)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3143)\n", - "Epoch 4398: avg_loss appended (1.3143)\n", - "Epoch 4398: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4398: accuracy appended (60.00%)\n", - "Epoch 4398: model set back to train mode\n", - "Epoch 4398: model parameters saved\n", - "Epoch 4399 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3143)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3143)\n", - "Epoch 4399: avg_loss appended (1.3143)\n", - "Epoch 4399: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4399: accuracy appended (60.00%)\n", - "Epoch 4399: model set back to train mode\n", - "Epoch 4399: model parameters saved\n", - "Epoch 4400 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3143)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3143)\n", - "Epoch 4400: avg_loss appended (1.3143)\n", - "Epoch 4400: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4400: accuracy appended (60.00%)\n", - "Epoch 4400: model set back to train mode\n", - "Epoch 4400: model parameters saved\n", - "Epoch 4400/10000, Loss: 1.3143, Accuracy: 60.00%\n", - "Epoch 4401 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3143)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3143)\n", - "Epoch 4401: avg_loss appended (1.3143)\n", - "Epoch 4401: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4401: accuracy appended (60.00%)\n", - "Epoch 4401: model set back to train mode\n", - "Epoch 4401: model parameters saved\n", - "Epoch 4402 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3143)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3143)\n", - "Epoch 4402: avg_loss appended (1.3143)\n", - "Epoch 4402: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4402: accuracy appended (60.00%)\n", - "Epoch 4402: model set back to train mode\n", - "Epoch 4402: model parameters saved\n", - "Epoch 4403 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3143)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3143)\n", - "Epoch 4403: avg_loss appended (1.3143)\n", - "Epoch 4403: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4403: accuracy appended (60.00%)\n", - "Epoch 4403: model set back to train mode\n", - "Epoch 4403: model parameters saved\n", - "Epoch 4404 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3143)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3143)\n", - "Epoch 4404: avg_loss appended (1.3143)\n", - "Epoch 4404: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4404: accuracy appended (60.00%)\n", - "Epoch 4404: model set back to train mode\n", - "Epoch 4404: model parameters saved\n", - "Epoch 4405 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3143)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3143)\n", - "Epoch 4405: avg_loss appended (1.3143)\n", - "Epoch 4405: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4405: accuracy appended (60.00%)\n", - "Epoch 4405: model set back to train mode\n", - "Epoch 4405: model parameters saved\n", - "Epoch 4406 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3143)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3143)\n", - "Epoch 4406: avg_loss appended (1.3143)\n", - "Epoch 4406: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4406: accuracy appended (60.00%)\n", - "Epoch 4406: model set back to train mode\n", - "Epoch 4406: model parameters saved\n", - "Epoch 4407 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3143)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3143)\n", - "Epoch 4407: avg_loss appended (1.3143)\n", - "Epoch 4407: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4407: accuracy appended (60.00%)\n", - "Epoch 4407: model set back to train mode\n", - "Epoch 4407: model parameters saved\n", - "Epoch 4408 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3143)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3143)\n", - "Epoch 4408: avg_loss appended (1.3143)\n", - "Epoch 4408: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4408: accuracy appended (60.00%)\n", - "Epoch 4408: model set back to train mode\n", - "Epoch 4408: model parameters saved\n", - "Epoch 4409 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3143)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3143)\n", - "Epoch 4409: avg_loss appended (1.3143)\n", - "Epoch 4409: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4409: accuracy appended (60.00%)\n", - "Epoch 4409: model set back to train mode\n", - "Epoch 4409: model parameters saved\n", - "Epoch 4410 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3143)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3143)\n", - "Epoch 4410: avg_loss appended (1.3143)\n", - "Epoch 4410: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4410: accuracy appended (60.00%)\n", - "Epoch 4410: model set back to train mode\n", - "Epoch 4410: model parameters saved\n", - "Epoch 4411 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3143)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3143)\n", - "Epoch 4411: avg_loss appended (1.3143)\n", - "Epoch 4411: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4411: accuracy appended (60.00%)\n", - "Epoch 4411: model set back to train mode\n", - "Epoch 4411: model parameters saved\n", - "Epoch 4412 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3143)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3143)\n", - "Epoch 4412: avg_loss appended (1.3143)\n", - "Epoch 4412: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4412: accuracy appended (60.00%)\n", - "Epoch 4412: model set back to train mode\n", - "Epoch 4412: model parameters saved\n", - "Epoch 4413 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3143)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3143)\n", - "Epoch 4413: avg_loss appended (1.3143)\n", - "Epoch 4413: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4413: accuracy appended (60.00%)\n", - "Epoch 4413: model set back to train mode\n", - "Epoch 4413: model parameters saved\n", - "Epoch 4414 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3143)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3143)\n", - "Epoch 4414: avg_loss appended (1.3143)\n", - "Epoch 4414: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4414: accuracy appended (60.00%)\n", - "Epoch 4414: model set back to train mode\n", - "Epoch 4414: model parameters saved\n", - "Epoch 4415 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3143)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3143)\n", - "Epoch 4415: avg_loss appended (1.3143)\n", - "Epoch 4415: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4415: accuracy appended (60.00%)\n", - "Epoch 4415: model set back to train mode\n", - "Epoch 4415: model parameters saved\n", - "Epoch 4416 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3143)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3143)\n", - "Epoch 4416: avg_loss appended (1.3143)\n", - "Epoch 4416: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4416: accuracy appended (60.00%)\n", - "Epoch 4416: model set back to train mode\n", - "Epoch 4416: model parameters saved\n", - "Epoch 4417 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3143)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3143)\n", - "Epoch 4417: avg_loss appended (1.3143)\n", - "Epoch 4417: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4417: accuracy appended (60.00%)\n", - "Epoch 4417: model set back to train mode\n", - "Epoch 4417: model parameters saved\n", - "Epoch 4418 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3143)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3143)\n", - "Epoch 4418: avg_loss appended (1.3143)\n", - "Epoch 4418: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4418: accuracy appended (60.00%)\n", - "Epoch 4418: model set back to train mode\n", - "Epoch 4418: model parameters saved\n", - "Epoch 4419 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3143)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3143)\n", - "Epoch 4419: avg_loss appended (1.3143)\n", - "Epoch 4419: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4419: accuracy appended (60.00%)\n", - "Epoch 4419: model set back to train mode\n", - "Epoch 4419: model parameters saved\n", - "Epoch 4420 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3143)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3143)\n", - "Epoch 4420: avg_loss appended (1.3143)\n", - "Epoch 4420: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4420: accuracy appended (60.00%)\n", - "Epoch 4420: model set back to train mode\n", - "Epoch 4420: model parameters saved\n", - "Epoch 4421 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4421: avg_loss appended (1.3142)\n", - "Epoch 4421: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4421: accuracy appended (60.00%)\n", - "Epoch 4421: model set back to train mode\n", - "Epoch 4421: model parameters saved\n", - "Epoch 4422 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4422: avg_loss appended (1.3142)\n", - "Epoch 4422: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4422: accuracy appended (60.00%)\n", - "Epoch 4422: model set back to train mode\n", - "Epoch 4422: model parameters saved\n", - "Epoch 4423 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4423: avg_loss appended (1.3142)\n", - "Epoch 4423: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4423: accuracy appended (60.00%)\n", - "Epoch 4423: model set back to train mode\n", - "Epoch 4423: model parameters saved\n", - "Epoch 4424 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4424: avg_loss appended (1.3142)\n", - "Epoch 4424: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4424: accuracy appended (60.00%)\n", - "Epoch 4424: model set back to train mode\n", - "Epoch 4424: model parameters saved\n", - "Epoch 4425 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4425: avg_loss appended (1.3142)\n", - "Epoch 4425: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4425: accuracy appended (60.00%)\n", - "Epoch 4425: model set back to train mode\n", - "Epoch 4425: model parameters saved\n", - "Epoch 4426 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4426: avg_loss appended (1.3142)\n", - "Epoch 4426: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4426: accuracy appended (60.00%)\n", - "Epoch 4426: model set back to train mode\n", - "Epoch 4426: model parameters saved\n", - "Epoch 4427 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4427: avg_loss appended (1.3142)\n", - "Epoch 4427: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4427: accuracy appended (60.00%)\n", - "Epoch 4427: model set back to train mode\n", - "Epoch 4427: model parameters saved\n", - "Epoch 4428 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4428: avg_loss appended (1.3142)\n", - "Epoch 4428: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4428: accuracy appended (60.00%)\n", - "Epoch 4428: model set back to train mode\n", - "Epoch 4428: model parameters saved\n", - "Epoch 4429 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4429: avg_loss appended (1.3142)\n", - "Epoch 4429: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4429: accuracy appended (60.00%)\n", - "Epoch 4429: model set back to train mode\n", - "Epoch 4429: model parameters saved\n", - "Epoch 4430 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4430: avg_loss appended (1.3142)\n", - "Epoch 4430: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4430: accuracy appended (60.00%)\n", - "Epoch 4430: model set back to train mode\n", - "Epoch 4430: model parameters saved\n", - "Epoch 4431 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4431: avg_loss appended (1.3142)\n", - "Epoch 4431: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4431: accuracy appended (60.00%)\n", - "Epoch 4431: model set back to train mode\n", - "Epoch 4431: model parameters saved\n", - "Epoch 4432 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4432: avg_loss appended (1.3142)\n", - "Epoch 4432: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4432: accuracy appended (60.00%)\n", - "Epoch 4432: model set back to train mode\n", - "Epoch 4432: model parameters saved\n", - "Epoch 4433 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4433: avg_loss appended (1.3142)\n", - "Epoch 4433: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4433: accuracy appended (60.00%)\n", - "Epoch 4433: model set back to train mode\n", - "Epoch 4433: model parameters saved\n", - "Epoch 4434 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4434: avg_loss appended (1.3142)\n", - "Epoch 4434: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4434: accuracy appended (60.00%)\n", - "Epoch 4434: model set back to train mode\n", - "Epoch 4434: model parameters saved\n", - "Epoch 4435 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4435: avg_loss appended (1.3142)\n", - "Epoch 4435: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4435: accuracy appended (60.00%)\n", - "Epoch 4435: model set back to train mode\n", - "Epoch 4435: model parameters saved\n", - "Epoch 4436 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4436: avg_loss appended (1.3142)\n", - "Epoch 4436: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4436: accuracy appended (60.00%)\n", - "Epoch 4436: model set back to train mode\n", - "Epoch 4436: model parameters saved\n", - "Epoch 4437 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4437: avg_loss appended (1.3142)\n", - "Epoch 4437: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4437: accuracy appended (60.00%)\n", - "Epoch 4437: model set back to train mode\n", - "Epoch 4437: model parameters saved\n", - "Epoch 4438 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4438: avg_loss appended (1.3142)\n", - "Epoch 4438: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4438: accuracy appended (60.00%)\n", - "Epoch 4438: model set back to train mode\n", - "Epoch 4438: model parameters saved\n", - "Epoch 4439 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4439: avg_loss appended (1.3142)\n", - "Epoch 4439: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4439: accuracy appended (60.00%)\n", - "Epoch 4439: model set back to train mode\n", - "Epoch 4439: model parameters saved\n", - "Epoch 4440 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4440: avg_loss appended (1.3142)\n", - "Epoch 4440: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4440: accuracy appended (60.00%)\n", - "Epoch 4440: model set back to train mode\n", - "Epoch 4440: model parameters saved\n", - "Epoch 4441 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4441: avg_loss appended (1.3142)\n", - "Epoch 4441: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4441: accuracy appended (60.00%)\n", - "Epoch 4441: model set back to train mode\n", - "Epoch 4441: model parameters saved\n", - "Epoch 4442 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4442: avg_loss appended (1.3142)\n", - "Epoch 4442: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4442: accuracy appended (60.00%)\n", - "Epoch 4442: model set back to train mode\n", - "Epoch 4442: model parameters saved\n", - "Epoch 4443 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4443: avg_loss appended (1.3142)\n", - "Epoch 4443: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4443: accuracy appended (60.00%)\n", - "Epoch 4443: model set back to train mode\n", - "Epoch 4443: model parameters saved\n", - "Epoch 4444 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4444: avg_loss appended (1.3142)\n", - "Epoch 4444: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4444: accuracy appended (60.00%)\n", - "Epoch 4444: model set back to train mode\n", - "Epoch 4444: model parameters saved\n", - "Epoch 4445 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4445: avg_loss appended (1.3142)\n", - "Epoch 4445: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4445: accuracy appended (60.00%)\n", - "Epoch 4445: model set back to train mode\n", - "Epoch 4445: model parameters saved\n", - "Epoch 4446 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4446: avg_loss appended (1.3142)\n", - "Epoch 4446: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4446: accuracy appended (60.00%)\n", - "Epoch 4446: model set back to train mode\n", - "Epoch 4446: model parameters saved\n", - "Epoch 4447 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4447: avg_loss appended (1.3142)\n", - "Epoch 4447: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4447: accuracy appended (60.00%)\n", - "Epoch 4447: model set back to train mode\n", - "Epoch 4447: model parameters saved\n", - "Epoch 4448 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4448: avg_loss appended (1.3142)\n", - "Epoch 4448: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4448: accuracy appended (60.00%)\n", - "Epoch 4448: model set back to train mode\n", - "Epoch 4448: model parameters saved\n", - "Epoch 4449 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4449: avg_loss appended (1.3142)\n", - "Epoch 4449: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4449: accuracy appended (60.00%)\n", - "Epoch 4449: model set back to train mode\n", - "Epoch 4449: model parameters saved\n", - "Epoch 4450 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4450: avg_loss appended (1.3142)\n", - "Epoch 4450: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4450: accuracy appended (60.00%)\n", - "Epoch 4450: model set back to train mode\n", - "Epoch 4450: model parameters saved\n", - "Epoch 4451 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4451: avg_loss appended (1.3142)\n", - "Epoch 4451: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4451: accuracy appended (60.00%)\n", - "Epoch 4451: model set back to train mode\n", - "Epoch 4451: model parameters saved\n", - "Epoch 4452 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4452: avg_loss appended (1.3142)\n", - "Epoch 4452: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4452: accuracy appended (60.00%)\n", - "Epoch 4452: model set back to train mode\n", - "Epoch 4452: model parameters saved\n", - "Epoch 4453 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4453: avg_loss appended (1.3142)\n", - "Epoch 4453: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4453: accuracy appended (60.00%)\n", - "Epoch 4453: model set back to train mode\n", - "Epoch 4453: model parameters saved\n", - "Epoch 4454 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4454: avg_loss appended (1.3142)\n", - "Epoch 4454: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4454: accuracy appended (60.00%)\n", - "Epoch 4454: model set back to train mode\n", - "Epoch 4454: model parameters saved\n", - "Epoch 4455 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4455: avg_loss appended (1.3142)\n", - "Epoch 4455: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4455: accuracy appended (60.00%)\n", - "Epoch 4455: model set back to train mode\n", - "Epoch 4455: model parameters saved\n", - "Epoch 4456 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4456: avg_loss appended (1.3142)\n", - "Epoch 4456: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4456: accuracy appended (60.00%)\n", - "Epoch 4456: model set back to train mode\n", - "Epoch 4456: model parameters saved\n", - "Epoch 4457 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4457: avg_loss appended (1.3142)\n", - "Epoch 4457: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4457: accuracy appended (60.00%)\n", - "Epoch 4457: model set back to train mode\n", - "Epoch 4457: model parameters saved\n", - "Epoch 4458 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4458: avg_loss appended (1.3142)\n", - "Epoch 4458: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4458: accuracy appended (60.00%)\n", - "Epoch 4458: model set back to train mode\n", - "Epoch 4458: model parameters saved\n", - "Epoch 4459 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4459: avg_loss appended (1.3142)\n", - "Epoch 4459: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4459: accuracy appended (60.00%)\n", - "Epoch 4459: model set back to train mode\n", - "Epoch 4459: model parameters saved\n", - "Epoch 4460 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4460: avg_loss appended (1.3142)\n", - "Epoch 4460: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4460: accuracy appended (60.00%)\n", - "Epoch 4460: model set back to train mode\n", - "Epoch 4460: model parameters saved\n", - "Epoch 4461 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4461: avg_loss appended (1.3142)\n", - "Epoch 4461: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4461: accuracy appended (60.00%)\n", - "Epoch 4461: model set back to train mode\n", - "Epoch 4461: model parameters saved\n", - "Epoch 4462 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4462: avg_loss appended (1.3142)\n", - "Epoch 4462: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4462: accuracy appended (60.00%)\n", - "Epoch 4462: model set back to train mode\n", - "Epoch 4462: model parameters saved\n", - "Epoch 4463 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4463: avg_loss appended (1.3142)\n", - "Epoch 4463: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4463: accuracy appended (60.00%)\n", - "Epoch 4463: model set back to train mode\n", - "Epoch 4463: model parameters saved\n", - "Epoch 4464 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4464: avg_loss appended (1.3142)\n", - "Epoch 4464: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4464: accuracy appended (60.00%)\n", - "Epoch 4464: model set back to train mode\n", - "Epoch 4464: model parameters saved\n", - "Epoch 4465 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4465: avg_loss appended (1.3142)\n", - "Epoch 4465: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4465: accuracy appended (60.00%)\n", - "Epoch 4465: model set back to train mode\n", - "Epoch 4465: model parameters saved\n", - "Epoch 4466 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4466: avg_loss appended (1.3142)\n", - "Epoch 4466: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4466: accuracy appended (60.00%)\n", - "Epoch 4466: model set back to train mode\n", - "Epoch 4466: model parameters saved\n", - "Epoch 4467 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4467: avg_loss appended (1.3142)\n", - "Epoch 4467: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4467: accuracy appended (60.00%)\n", - "Epoch 4467: model set back to train mode\n", - "Epoch 4467: model parameters saved\n", - "Epoch 4468 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4468: avg_loss appended (1.3142)\n", - "Epoch 4468: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4468: accuracy appended (60.00%)\n", - "Epoch 4468: model set back to train mode\n", - "Epoch 4468: model parameters saved\n", - "Epoch 4469 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4469: avg_loss appended (1.3142)\n", - "Epoch 4469: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4469: accuracy appended (60.00%)\n", - "Epoch 4469: model set back to train mode\n", - "Epoch 4469: model parameters saved\n", - "Epoch 4470 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4470: avg_loss appended (1.3142)\n", - "Epoch 4470: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4470: accuracy appended (60.00%)\n", - "Epoch 4470: model set back to train mode\n", - "Epoch 4470: model parameters saved\n", - "Epoch 4471 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4471: avg_loss appended (1.3142)\n", - "Epoch 4471: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4471: accuracy appended (60.00%)\n", - "Epoch 4471: model set back to train mode\n", - "Epoch 4471: model parameters saved\n", - "Epoch 4472 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3142)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3142)\n", - "Epoch 4472: avg_loss appended (1.3142)\n", - "Epoch 4472: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4472: accuracy appended (60.00%)\n", - "Epoch 4472: model set back to train mode\n", - "Epoch 4472: model parameters saved\n", - "Epoch 4473 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4473: avg_loss appended (1.3141)\n", - "Epoch 4473: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4473: accuracy appended (60.00%)\n", - "Epoch 4473: model set back to train mode\n", - "Epoch 4473: model parameters saved\n", - "Epoch 4474 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4474: avg_loss appended (1.3141)\n", - "Epoch 4474: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4474: accuracy appended (60.00%)\n", - "Epoch 4474: model set back to train mode\n", - "Epoch 4474: model parameters saved\n", - "Epoch 4475 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4475: avg_loss appended (1.3141)\n", - "Epoch 4475: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4475: accuracy appended (60.00%)\n", - "Epoch 4475: model set back to train mode\n", - "Epoch 4475: model parameters saved\n", - "Epoch 4476 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4476: avg_loss appended (1.3141)\n", - "Epoch 4476: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4476: accuracy appended (60.00%)\n", - "Epoch 4476: model set back to train mode\n", - "Epoch 4476: model parameters saved\n", - "Epoch 4477 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4477: avg_loss appended (1.3141)\n", - "Epoch 4477: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4477: accuracy appended (60.00%)\n", - "Epoch 4477: model set back to train mode\n", - "Epoch 4477: model parameters saved\n", - "Epoch 4478 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4478: avg_loss appended (1.3141)\n", - "Epoch 4478: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4478: accuracy appended (60.00%)\n", - "Epoch 4478: model set back to train mode\n", - "Epoch 4478: model parameters saved\n", - "Epoch 4479 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4479: avg_loss appended (1.3141)\n", - "Epoch 4479: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4479: accuracy appended (60.00%)\n", - "Epoch 4479: model set back to train mode\n", - "Epoch 4479: model parameters saved\n", - "Epoch 4480 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4480: avg_loss appended (1.3141)\n", - "Epoch 4480: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4480: accuracy appended (60.00%)\n", - "Epoch 4480: model set back to train mode\n", - "Epoch 4480: model parameters saved\n", - "Epoch 4481 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4481: avg_loss appended (1.3141)\n", - "Epoch 4481: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4481: accuracy appended (60.00%)\n", - "Epoch 4481: model set back to train mode\n", - "Epoch 4481: model parameters saved\n", - "Epoch 4482 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4482: avg_loss appended (1.3141)\n", - "Epoch 4482: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4482: accuracy appended (60.00%)\n", - "Epoch 4482: model set back to train mode\n", - "Epoch 4482: model parameters saved\n", - "Epoch 4483 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4483: avg_loss appended (1.3141)\n", - "Epoch 4483: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4483: accuracy appended (60.00%)\n", - "Epoch 4483: model set back to train mode\n", - "Epoch 4483: model parameters saved\n", - "Epoch 4484 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4484: avg_loss appended (1.3141)\n", - "Epoch 4484: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4484: accuracy appended (60.00%)\n", - "Epoch 4484: model set back to train mode\n", - "Epoch 4484: model parameters saved\n", - "Epoch 4485 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4485: avg_loss appended (1.3141)\n", - "Epoch 4485: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4485: accuracy appended (60.00%)\n", - "Epoch 4485: model set back to train mode\n", - "Epoch 4485: model parameters saved\n", - "Epoch 4486 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4486: avg_loss appended (1.3141)\n", - "Epoch 4486: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4486: accuracy appended (60.00%)\n", - "Epoch 4486: model set back to train mode\n", - "Epoch 4486: model parameters saved\n", - "Epoch 4487 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4487: avg_loss appended (1.3141)\n", - "Epoch 4487: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4487: accuracy appended (60.00%)\n", - "Epoch 4487: model set back to train mode\n", - "Epoch 4487: model parameters saved\n", - "Epoch 4488 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4488: avg_loss appended (1.3141)\n", - "Epoch 4488: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4488: accuracy appended (60.00%)\n", - "Epoch 4488: model set back to train mode\n", - "Epoch 4488: model parameters saved\n", - "Epoch 4489 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4489: avg_loss appended (1.3141)\n", - "Epoch 4489: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4489: accuracy appended (60.00%)\n", - "Epoch 4489: model set back to train mode\n", - "Epoch 4489: model parameters saved\n", - "Epoch 4490 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4490: avg_loss appended (1.3141)\n", - "Epoch 4490: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4490: accuracy appended (60.00%)\n", - "Epoch 4490: model set back to train mode\n", - "Epoch 4490: model parameters saved\n", - "Epoch 4491 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4491: avg_loss appended (1.3141)\n", - "Epoch 4491: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4491: accuracy appended (60.00%)\n", - "Epoch 4491: model set back to train mode\n", - "Epoch 4491: model parameters saved\n", - "Epoch 4492 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4492: avg_loss appended (1.3141)\n", - "Epoch 4492: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4492: accuracy appended (60.00%)\n", - "Epoch 4492: model set back to train mode\n", - "Epoch 4492: model parameters saved\n", - "Epoch 4493 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4493: avg_loss appended (1.3141)\n", - "Epoch 4493: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4493: accuracy appended (60.00%)\n", - "Epoch 4493: model set back to train mode\n", - "Epoch 4493: model parameters saved\n", - "Epoch 4494 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4494: avg_loss appended (1.3141)\n", - "Epoch 4494: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4494: accuracy appended (60.00%)\n", - "Epoch 4494: model set back to train mode\n", - "Epoch 4494: model parameters saved\n", - "Epoch 4495 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4495: avg_loss appended (1.3141)\n", - "Epoch 4495: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4495: accuracy appended (60.00%)\n", - "Epoch 4495: model set back to train mode\n", - "Epoch 4495: model parameters saved\n", - "Epoch 4496 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4496: avg_loss appended (1.3141)\n", - "Epoch 4496: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4496: accuracy appended (60.00%)\n", - "Epoch 4496: model set back to train mode\n", - "Epoch 4496: model parameters saved\n", - "Epoch 4497 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4497: avg_loss appended (1.3141)\n", - "Epoch 4497: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4497: accuracy appended (60.00%)\n", - "Epoch 4497: model set back to train mode\n", - "Epoch 4497: model parameters saved\n", - "Epoch 4498 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4498: avg_loss appended (1.3141)\n", - "Epoch 4498: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4498: accuracy appended (60.00%)\n", - "Epoch 4498: model set back to train mode\n", - "Epoch 4498: model parameters saved\n", - "Epoch 4499 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4499: avg_loss appended (1.3141)\n", - "Epoch 4499: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4499: accuracy appended (60.00%)\n", - "Epoch 4499: model set back to train mode\n", - "Epoch 4499: model parameters saved\n", - "Epoch 4500 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4500: avg_loss appended (1.3141)\n", - "Epoch 4500: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4500: accuracy appended (60.00%)\n", - "Epoch 4500: model set back to train mode\n", - "Epoch 4500: model parameters saved\n", - "Epoch 4500/10000, Loss: 1.3141, Accuracy: 60.00%\n", - "Epoch 4501 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4501: avg_loss appended (1.3141)\n", - "Epoch 4501: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4501: accuracy appended (60.00%)\n", - "Epoch 4501: model set back to train mode\n", - "Epoch 4501: model parameters saved\n", - "Epoch 4502 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4502: avg_loss appended (1.3141)\n", - "Epoch 4502: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4502: accuracy appended (60.00%)\n", - "Epoch 4502: model set back to train mode\n", - "Epoch 4502: model parameters saved\n", - "Epoch 4503 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4503: avg_loss appended (1.3141)\n", - "Epoch 4503: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4503: accuracy appended (60.00%)\n", - "Epoch 4503: model set back to train mode\n", - "Epoch 4503: model parameters saved\n", - "Epoch 4504 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4504: avg_loss appended (1.3141)\n", - "Epoch 4504: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4504: accuracy appended (60.00%)\n", - "Epoch 4504: model set back to train mode\n", - "Epoch 4504: model parameters saved\n", - "Epoch 4505 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4505: avg_loss appended (1.3141)\n", - "Epoch 4505: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4505: accuracy appended (60.00%)\n", - "Epoch 4505: model set back to train mode\n", - "Epoch 4505: model parameters saved\n", - "Epoch 4506 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4506: avg_loss appended (1.3141)\n", - "Epoch 4506: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4506: accuracy appended (60.00%)\n", - "Epoch 4506: model set back to train mode\n", - "Epoch 4506: model parameters saved\n", - "Epoch 4507 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4507: avg_loss appended (1.3141)\n", - "Epoch 4507: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4507: accuracy appended (60.00%)\n", - "Epoch 4507: model set back to train mode\n", - "Epoch 4507: model parameters saved\n", - "Epoch 4508 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4508: avg_loss appended (1.3141)\n", - "Epoch 4508: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4508: accuracy appended (60.00%)\n", - "Epoch 4508: model set back to train mode\n", - "Epoch 4508: model parameters saved\n", - "Epoch 4509 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4509: avg_loss appended (1.3141)\n", - "Epoch 4509: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4509: accuracy appended (60.00%)\n", - "Epoch 4509: model set back to train mode\n", - "Epoch 4509: model parameters saved\n", - "Epoch 4510 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4510: avg_loss appended (1.3141)\n", - "Epoch 4510: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4510: accuracy appended (60.00%)\n", - "Epoch 4510: model set back to train mode\n", - "Epoch 4510: model parameters saved\n", - "Epoch 4511 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4511: avg_loss appended (1.3141)\n", - "Epoch 4511: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4511: accuracy appended (60.00%)\n", - "Epoch 4511: model set back to train mode\n", - "Epoch 4511: model parameters saved\n", - "Epoch 4512 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4512: avg_loss appended (1.3141)\n", - "Epoch 4512: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4512: accuracy appended (60.00%)\n", - "Epoch 4512: model set back to train mode\n", - "Epoch 4512: model parameters saved\n", - "Epoch 4513 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4513: avg_loss appended (1.3141)\n", - "Epoch 4513: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4513: accuracy appended (60.00%)\n", - "Epoch 4513: model set back to train mode\n", - "Epoch 4513: model parameters saved\n", - "Epoch 4514 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4514: avg_loss appended (1.3141)\n", - "Epoch 4514: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4514: accuracy appended (60.00%)\n", - "Epoch 4514: model set back to train mode\n", - "Epoch 4514: model parameters saved\n", - "Epoch 4515 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4515: avg_loss appended (1.3141)\n", - "Epoch 4515: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4515: accuracy appended (60.00%)\n", - "Epoch 4515: model set back to train mode\n", - "Epoch 4515: model parameters saved\n", - "Epoch 4516 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4516: avg_loss appended (1.3141)\n", - "Epoch 4516: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4516: accuracy appended (60.00%)\n", - "Epoch 4516: model set back to train mode\n", - "Epoch 4516: model parameters saved\n", - "Epoch 4517 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4517: avg_loss appended (1.3141)\n", - "Epoch 4517: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4517: accuracy appended (60.00%)\n", - "Epoch 4517: model set back to train mode\n", - "Epoch 4517: model parameters saved\n", - "Epoch 4518 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4518: avg_loss appended (1.3141)\n", - "Epoch 4518: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4518: accuracy appended (60.00%)\n", - "Epoch 4518: model set back to train mode\n", - "Epoch 4518: model parameters saved\n", - "Epoch 4519 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4519: avg_loss appended (1.3141)\n", - "Epoch 4519: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4519: accuracy appended (60.00%)\n", - "Epoch 4519: model set back to train mode\n", - "Epoch 4519: model parameters saved\n", - "Epoch 4520 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4520: avg_loss appended (1.3141)\n", - "Epoch 4520: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4520: accuracy appended (60.00%)\n", - "Epoch 4520: model set back to train mode\n", - "Epoch 4520: model parameters saved\n", - "Epoch 4521 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4521: avg_loss appended (1.3141)\n", - "Epoch 4521: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4521: accuracy appended (60.00%)\n", - "Epoch 4521: model set back to train mode\n", - "Epoch 4521: model parameters saved\n", - "Epoch 4522 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4522: avg_loss appended (1.3141)\n", - "Epoch 4522: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4522: accuracy appended (60.00%)\n", - "Epoch 4522: model set back to train mode\n", - "Epoch 4522: model parameters saved\n", - "Epoch 4523 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4523: avg_loss appended (1.3141)\n", - "Epoch 4523: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4523: accuracy appended (60.00%)\n", - "Epoch 4523: model set back to train mode\n", - "Epoch 4523: model parameters saved\n", - "Epoch 4524 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4524: avg_loss appended (1.3141)\n", - "Epoch 4524: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4524: accuracy appended (60.00%)\n", - "Epoch 4524: model set back to train mode\n", - "Epoch 4524: model parameters saved\n", - "Epoch 4525 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4525: avg_loss appended (1.3141)\n", - "Epoch 4525: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4525: accuracy appended (60.00%)\n", - "Epoch 4525: model set back to train mode\n", - "Epoch 4525: model parameters saved\n", - "Epoch 4526 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4526: avg_loss appended (1.3141)\n", - "Epoch 4526: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4526: accuracy appended (60.00%)\n", - "Epoch 4526: model set back to train mode\n", - "Epoch 4526: model parameters saved\n", - "Epoch 4527 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3141)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3141)\n", - "Epoch 4527: avg_loss appended (1.3141)\n", - "Epoch 4527: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4527: accuracy appended (60.00%)\n", - "Epoch 4527: model set back to train mode\n", - "Epoch 4527: model parameters saved\n", - "Epoch 4528 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4528: avg_loss appended (1.3140)\n", - "Epoch 4528: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4528: accuracy appended (60.00%)\n", - "Epoch 4528: model set back to train mode\n", - "Epoch 4528: model parameters saved\n", - "Epoch 4529 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4529: avg_loss appended (1.3140)\n", - "Epoch 4529: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4529: accuracy appended (60.00%)\n", - "Epoch 4529: model set back to train mode\n", - "Epoch 4529: model parameters saved\n", - "Epoch 4530 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4530: avg_loss appended (1.3140)\n", - "Epoch 4530: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4530: accuracy appended (60.00%)\n", - "Epoch 4530: model set back to train mode\n", - "Epoch 4530: model parameters saved\n", - "Epoch 4531 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4531: avg_loss appended (1.3140)\n", - "Epoch 4531: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4531: accuracy appended (60.00%)\n", - "Epoch 4531: model set back to train mode\n", - "Epoch 4531: model parameters saved\n", - "Epoch 4532 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4532: avg_loss appended (1.3140)\n", - "Epoch 4532: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4532: accuracy appended (60.00%)\n", - "Epoch 4532: model set back to train mode\n", - "Epoch 4532: model parameters saved\n", - "Epoch 4533 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4533: avg_loss appended (1.3140)\n", - "Epoch 4533: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4533: accuracy appended (60.00%)\n", - "Epoch 4533: model set back to train mode\n", - "Epoch 4533: model parameters saved\n", - "Epoch 4534 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4534: avg_loss appended (1.3140)\n", - "Epoch 4534: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4534: accuracy appended (60.00%)\n", - "Epoch 4534: model set back to train mode\n", - "Epoch 4534: model parameters saved\n", - "Epoch 4535 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4535: avg_loss appended (1.3140)\n", - "Epoch 4535: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4535: accuracy appended (60.00%)\n", - "Epoch 4535: model set back to train mode\n", - "Epoch 4535: model parameters saved\n", - "Epoch 4536 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4536: avg_loss appended (1.3140)\n", - "Epoch 4536: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4536: accuracy appended (60.00%)\n", - "Epoch 4536: model set back to train mode\n", - "Epoch 4536: model parameters saved\n", - "Epoch 4537 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4537: avg_loss appended (1.3140)\n", - "Epoch 4537: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4537: accuracy appended (60.00%)\n", - "Epoch 4537: model set back to train mode\n", - "Epoch 4537: model parameters saved\n", - "Epoch 4538 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4538: avg_loss appended (1.3140)\n", - "Epoch 4538: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4538: accuracy appended (60.00%)\n", - "Epoch 4538: model set back to train mode\n", - "Epoch 4538: model parameters saved\n", - "Epoch 4539 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4539: avg_loss appended (1.3140)\n", - "Epoch 4539: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4539: accuracy appended (60.00%)\n", - "Epoch 4539: model set back to train mode\n", - "Epoch 4539: model parameters saved\n", - "Epoch 4540 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4540: avg_loss appended (1.3140)\n", - "Epoch 4540: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4540: accuracy appended (60.00%)\n", - "Epoch 4540: model set back to train mode\n", - "Epoch 4540: model parameters saved\n", - "Epoch 4541 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4541: avg_loss appended (1.3140)\n", - "Epoch 4541: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4541: accuracy appended (60.00%)\n", - "Epoch 4541: model set back to train mode\n", - "Epoch 4541: model parameters saved\n", - "Epoch 4542 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4542: avg_loss appended (1.3140)\n", - "Epoch 4542: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4542: accuracy appended (60.00%)\n", - "Epoch 4542: model set back to train mode\n", - "Epoch 4542: model parameters saved\n", - "Epoch 4543 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4543: avg_loss appended (1.3140)\n", - "Epoch 4543: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4543: accuracy appended (60.00%)\n", - "Epoch 4543: model set back to train mode\n", - "Epoch 4543: model parameters saved\n", - "Epoch 4544 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4544: avg_loss appended (1.3140)\n", - "Epoch 4544: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4544: accuracy appended (60.00%)\n", - "Epoch 4544: model set back to train mode\n", - "Epoch 4544: model parameters saved\n", - "Epoch 4545 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4545: avg_loss appended (1.3140)\n", - "Epoch 4545: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4545: accuracy appended (60.00%)\n", - "Epoch 4545: model set back to train mode\n", - "Epoch 4545: model parameters saved\n", - "Epoch 4546 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4546: avg_loss appended (1.3140)\n", - "Epoch 4546: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4546: accuracy appended (60.00%)\n", - "Epoch 4546: model set back to train mode\n", - "Epoch 4546: model parameters saved\n", - "Epoch 4547 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4547: avg_loss appended (1.3140)\n", - "Epoch 4547: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4547: accuracy appended (60.00%)\n", - "Epoch 4547: model set back to train mode\n", - "Epoch 4547: model parameters saved\n", - "Epoch 4548 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4548: avg_loss appended (1.3140)\n", - "Epoch 4548: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4548: accuracy appended (60.00%)\n", - "Epoch 4548: model set back to train mode\n", - "Epoch 4548: model parameters saved\n", - "Epoch 4549 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4549: avg_loss appended (1.3140)\n", - "Epoch 4549: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4549: accuracy appended (60.00%)\n", - "Epoch 4549: model set back to train mode\n", - "Epoch 4549: model parameters saved\n", - "Epoch 4550 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4550: avg_loss appended (1.3140)\n", - "Epoch 4550: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4550: accuracy appended (60.00%)\n", - "Epoch 4550: model set back to train mode\n", - "Epoch 4550: model parameters saved\n", - "Epoch 4551 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4551: avg_loss appended (1.3140)\n", - "Epoch 4551: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4551: accuracy appended (60.00%)\n", - "Epoch 4551: model set back to train mode\n", - "Epoch 4551: model parameters saved\n", - "Epoch 4552 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4552: avg_loss appended (1.3140)\n", - "Epoch 4552: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4552: accuracy appended (60.00%)\n", - "Epoch 4552: model set back to train mode\n", - "Epoch 4552: model parameters saved\n", - "Epoch 4553 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4553: avg_loss appended (1.3140)\n", - "Epoch 4553: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4553: accuracy appended (60.00%)\n", - "Epoch 4553: model set back to train mode\n", - "Epoch 4553: model parameters saved\n", - "Epoch 4554 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4554: avg_loss appended (1.3140)\n", - "Epoch 4554: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4554: accuracy appended (60.00%)\n", - "Epoch 4554: model set back to train mode\n", - "Epoch 4554: model parameters saved\n", - "Epoch 4555 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4555: avg_loss appended (1.3140)\n", - "Epoch 4555: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4555: accuracy appended (60.00%)\n", - "Epoch 4555: model set back to train mode\n", - "Epoch 4555: model parameters saved\n", - "Epoch 4556 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4556: avg_loss appended (1.3140)\n", - "Epoch 4556: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4556: accuracy appended (60.00%)\n", - "Epoch 4556: model set back to train mode\n", - "Epoch 4556: model parameters saved\n", - "Epoch 4557 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4557: avg_loss appended (1.3140)\n", - "Epoch 4557: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4557: accuracy appended (60.00%)\n", - "Epoch 4557: model set back to train mode\n", - "Epoch 4557: model parameters saved\n", - "Epoch 4558 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4558: avg_loss appended (1.3140)\n", - "Epoch 4558: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4558: accuracy appended (60.00%)\n", - "Epoch 4558: model set back to train mode\n", - "Epoch 4558: model parameters saved\n", - "Epoch 4559 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4559: avg_loss appended (1.3140)\n", - "Epoch 4559: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4559: accuracy appended (60.00%)\n", - "Epoch 4559: model set back to train mode\n", - "Epoch 4559: model parameters saved\n", - "Epoch 4560 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4560: avg_loss appended (1.3140)\n", - "Epoch 4560: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4560: accuracy appended (60.00%)\n", - "Epoch 4560: model set back to train mode\n", - "Epoch 4560: model parameters saved\n", - "Epoch 4561 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4561: avg_loss appended (1.3140)\n", - "Epoch 4561: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4561: accuracy appended (60.00%)\n", - "Epoch 4561: model set back to train mode\n", - "Epoch 4561: model parameters saved\n", - "Epoch 4562 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4562: avg_loss appended (1.3140)\n", - "Epoch 4562: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4562: accuracy appended (60.00%)\n", - "Epoch 4562: model set back to train mode\n", - "Epoch 4562: model parameters saved\n", - "Epoch 4563 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4563: avg_loss appended (1.3140)\n", - "Epoch 4563: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4563: accuracy appended (60.00%)\n", - "Epoch 4563: model set back to train mode\n", - "Epoch 4563: model parameters saved\n", - "Epoch 4564 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4564: avg_loss appended (1.3140)\n", - "Epoch 4564: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4564: accuracy appended (60.00%)\n", - "Epoch 4564: model set back to train mode\n", - "Epoch 4564: model parameters saved\n", - "Epoch 4565 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4565: avg_loss appended (1.3140)\n", - "Epoch 4565: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4565: accuracy appended (60.00%)\n", - "Epoch 4565: model set back to train mode\n", - "Epoch 4565: model parameters saved\n", - "Epoch 4566 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4566: avg_loss appended (1.3140)\n", - "Epoch 4566: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4566: accuracy appended (60.00%)\n", - "Epoch 4566: model set back to train mode\n", - "Epoch 4566: model parameters saved\n", - "Epoch 4567 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4567: avg_loss appended (1.3140)\n", - "Epoch 4567: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4567: accuracy appended (60.00%)\n", - "Epoch 4567: model set back to train mode\n", - "Epoch 4567: model parameters saved\n", - "Epoch 4568 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4568: avg_loss appended (1.3140)\n", - "Epoch 4568: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4568: accuracy appended (60.00%)\n", - "Epoch 4568: model set back to train mode\n", - "Epoch 4568: model parameters saved\n", - "Epoch 4569 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4569: avg_loss appended (1.3140)\n", - "Epoch 4569: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4569: accuracy appended (60.00%)\n", - "Epoch 4569: model set back to train mode\n", - "Epoch 4569: model parameters saved\n", - "Epoch 4570 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4570: avg_loss appended (1.3140)\n", - "Epoch 4570: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4570: accuracy appended (60.00%)\n", - "Epoch 4570: model set back to train mode\n", - "Epoch 4570: model parameters saved\n", - "Epoch 4571 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4571: avg_loss appended (1.3140)\n", - "Epoch 4571: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4571: accuracy appended (60.00%)\n", - "Epoch 4571: model set back to train mode\n", - "Epoch 4571: model parameters saved\n", - "Epoch 4572 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4572: avg_loss appended (1.3140)\n", - "Epoch 4572: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4572: accuracy appended (60.00%)\n", - "Epoch 4572: model set back to train mode\n", - "Epoch 4572: model parameters saved\n", - "Epoch 4573 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4573: avg_loss appended (1.3140)\n", - "Epoch 4573: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4573: accuracy appended (60.00%)\n", - "Epoch 4573: model set back to train mode\n", - "Epoch 4573: model parameters saved\n", - "Epoch 4574 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4574: avg_loss appended (1.3140)\n", - "Epoch 4574: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4574: accuracy appended (60.00%)\n", - "Epoch 4574: model set back to train mode\n", - "Epoch 4574: model parameters saved\n", - "Epoch 4575 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4575: avg_loss appended (1.3140)\n", - "Epoch 4575: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4575: accuracy appended (60.00%)\n", - "Epoch 4575: model set back to train mode\n", - "Epoch 4575: model parameters saved\n", - "Epoch 4576 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4576: avg_loss appended (1.3140)\n", - "Epoch 4576: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4576: accuracy appended (60.00%)\n", - "Epoch 4576: model set back to train mode\n", - "Epoch 4576: model parameters saved\n", - "Epoch 4577 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4577: avg_loss appended (1.3140)\n", - "Epoch 4577: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4577: accuracy appended (60.00%)\n", - "Epoch 4577: model set back to train mode\n", - "Epoch 4577: model parameters saved\n", - "Epoch 4578 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4578: avg_loss appended (1.3140)\n", - "Epoch 4578: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4578: accuracy appended (60.00%)\n", - "Epoch 4578: model set back to train mode\n", - "Epoch 4578: model parameters saved\n", - "Epoch 4579 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4579: avg_loss appended (1.3140)\n", - "Epoch 4579: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4579: accuracy appended (60.00%)\n", - "Epoch 4579: model set back to train mode\n", - "Epoch 4579: model parameters saved\n", - "Epoch 4580 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4580: avg_loss appended (1.3140)\n", - "Epoch 4580: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4580: accuracy appended (60.00%)\n", - "Epoch 4580: model set back to train mode\n", - "Epoch 4580: model parameters saved\n", - "Epoch 4581 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4581: avg_loss appended (1.3140)\n", - "Epoch 4581: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4581: accuracy appended (60.00%)\n", - "Epoch 4581: model set back to train mode\n", - "Epoch 4581: model parameters saved\n", - "Epoch 4582 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4582: avg_loss appended (1.3140)\n", - "Epoch 4582: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4582: accuracy appended (60.00%)\n", - "Epoch 4582: model set back to train mode\n", - "Epoch 4582: model parameters saved\n", - "Epoch 4583 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4583: avg_loss appended (1.3140)\n", - "Epoch 4583: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4583: accuracy appended (60.00%)\n", - "Epoch 4583: model set back to train mode\n", - "Epoch 4583: model parameters saved\n", - "Epoch 4584 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4584: avg_loss appended (1.3140)\n", - "Epoch 4584: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4584: accuracy appended (60.00%)\n", - "Epoch 4584: model set back to train mode\n", - "Epoch 4584: model parameters saved\n", - "Epoch 4585 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3140)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3140)\n", - "Epoch 4585: avg_loss appended (1.3140)\n", - "Epoch 4585: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4585: accuracy appended (60.00%)\n", - "Epoch 4585: model set back to train mode\n", - "Epoch 4585: model parameters saved\n", - "Epoch 4586 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4586: avg_loss appended (1.3139)\n", - "Epoch 4586: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4586: accuracy appended (60.00%)\n", - "Epoch 4586: model set back to train mode\n", - "Epoch 4586: model parameters saved\n", - "Epoch 4587 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4587: avg_loss appended (1.3139)\n", - "Epoch 4587: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4587: accuracy appended (60.00%)\n", - "Epoch 4587: model set back to train mode\n", - "Epoch 4587: model parameters saved\n", - "Epoch 4588 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4588: avg_loss appended (1.3139)\n", - "Epoch 4588: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4588: accuracy appended (60.00%)\n", - "Epoch 4588: model set back to train mode\n", - "Epoch 4588: model parameters saved\n", - "Epoch 4589 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4589: avg_loss appended (1.3139)\n", - "Epoch 4589: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4589: accuracy appended (60.00%)\n", - "Epoch 4589: model set back to train mode\n", - "Epoch 4589: model parameters saved\n", - "Epoch 4590 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4590: avg_loss appended (1.3139)\n", - "Epoch 4590: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4590: accuracy appended (60.00%)\n", - "Epoch 4590: model set back to train mode\n", - "Epoch 4590: model parameters saved\n", - "Epoch 4591 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4591: avg_loss appended (1.3139)\n", - "Epoch 4591: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4591: accuracy appended (60.00%)\n", - "Epoch 4591: model set back to train mode\n", - "Epoch 4591: model parameters saved\n", - "Epoch 4592 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4592: avg_loss appended (1.3139)\n", - "Epoch 4592: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4592: accuracy appended (60.00%)\n", - "Epoch 4592: model set back to train mode\n", - "Epoch 4592: model parameters saved\n", - "Epoch 4593 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4593: avg_loss appended (1.3139)\n", - "Epoch 4593: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4593: accuracy appended (60.00%)\n", - "Epoch 4593: model set back to train mode\n", - "Epoch 4593: model parameters saved\n", - "Epoch 4594 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4594: avg_loss appended (1.3139)\n", - "Epoch 4594: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4594: accuracy appended (60.00%)\n", - "Epoch 4594: model set back to train mode\n", - "Epoch 4594: model parameters saved\n", - "Epoch 4595 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4595: avg_loss appended (1.3139)\n", - "Epoch 4595: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4595: accuracy appended (60.00%)\n", - "Epoch 4595: model set back to train mode\n", - "Epoch 4595: model parameters saved\n", - "Epoch 4596 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4596: avg_loss appended (1.3139)\n", - "Epoch 4596: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4596: accuracy appended (60.00%)\n", - "Epoch 4596: model set back to train mode\n", - "Epoch 4596: model parameters saved\n", - "Epoch 4597 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4597: avg_loss appended (1.3139)\n", - "Epoch 4597: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4597: accuracy appended (60.00%)\n", - "Epoch 4597: model set back to train mode\n", - "Epoch 4597: model parameters saved\n", - "Epoch 4598 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4598: avg_loss appended (1.3139)\n", - "Epoch 4598: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4598: accuracy appended (60.00%)\n", - "Epoch 4598: model set back to train mode\n", - "Epoch 4598: model parameters saved\n", - "Epoch 4599 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4599: avg_loss appended (1.3139)\n", - "Epoch 4599: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4599: accuracy appended (60.00%)\n", - "Epoch 4599: model set back to train mode\n", - "Epoch 4599: model parameters saved\n", - "Epoch 4600 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4600: avg_loss appended (1.3139)\n", - "Epoch 4600: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4600: accuracy appended (60.00%)\n", - "Epoch 4600: model set back to train mode\n", - "Epoch 4600: model parameters saved\n", - "Epoch 4600/10000, Loss: 1.3139, Accuracy: 60.00%\n", - "Epoch 4601 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4601: avg_loss appended (1.3139)\n", - "Epoch 4601: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4601: accuracy appended (60.00%)\n", - "Epoch 4601: model set back to train mode\n", - "Epoch 4601: model parameters saved\n", - "Epoch 4602 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4602: avg_loss appended (1.3139)\n", - "Epoch 4602: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4602: accuracy appended (60.00%)\n", - "Epoch 4602: model set back to train mode\n", - "Epoch 4602: model parameters saved\n", - "Epoch 4603 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4603: avg_loss appended (1.3139)\n", - "Epoch 4603: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4603: accuracy appended (60.00%)\n", - "Epoch 4603: model set back to train mode\n", - "Epoch 4603: model parameters saved\n", - "Epoch 4604 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4604: avg_loss appended (1.3139)\n", - "Epoch 4604: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4604: accuracy appended (60.00%)\n", - "Epoch 4604: model set back to train mode\n", - "Epoch 4604: model parameters saved\n", - "Epoch 4605 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4605: avg_loss appended (1.3139)\n", - "Epoch 4605: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4605: accuracy appended (60.00%)\n", - "Epoch 4605: model set back to train mode\n", - "Epoch 4605: model parameters saved\n", - "Epoch 4606 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4606: avg_loss appended (1.3139)\n", - "Epoch 4606: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4606: accuracy appended (60.00%)\n", - "Epoch 4606: model set back to train mode\n", - "Epoch 4606: model parameters saved\n", - "Epoch 4607 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4607: avg_loss appended (1.3139)\n", - "Epoch 4607: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4607: accuracy appended (60.00%)\n", - "Epoch 4607: model set back to train mode\n", - "Epoch 4607: model parameters saved\n", - "Epoch 4608 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4608: avg_loss appended (1.3139)\n", - "Epoch 4608: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4608: accuracy appended (60.00%)\n", - "Epoch 4608: model set back to train mode\n", - "Epoch 4608: model parameters saved\n", - "Epoch 4609 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4609: avg_loss appended (1.3139)\n", - "Epoch 4609: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4609: accuracy appended (60.00%)\n", - "Epoch 4609: model set back to train mode\n", - "Epoch 4609: model parameters saved\n", - "Epoch 4610 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4610: avg_loss appended (1.3139)\n", - "Epoch 4610: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4610: accuracy appended (60.00%)\n", - "Epoch 4610: model set back to train mode\n", - "Epoch 4610: model parameters saved\n", - "Epoch 4611 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4611: avg_loss appended (1.3139)\n", - "Epoch 4611: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4611: accuracy appended (60.00%)\n", - "Epoch 4611: model set back to train mode\n", - "Epoch 4611: model parameters saved\n", - "Epoch 4612 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4612: avg_loss appended (1.3139)\n", - "Epoch 4612: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4612: accuracy appended (60.00%)\n", - "Epoch 4612: model set back to train mode\n", - "Epoch 4612: model parameters saved\n", - "Epoch 4613 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4613: avg_loss appended (1.3139)\n", - "Epoch 4613: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4613: accuracy appended (60.00%)\n", - "Epoch 4613: model set back to train mode\n", - "Epoch 4613: model parameters saved\n", - "Epoch 4614 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4614: avg_loss appended (1.3139)\n", - "Epoch 4614: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4614: accuracy appended (60.00%)\n", - "Epoch 4614: model set back to train mode\n", - "Epoch 4614: model parameters saved\n", - "Epoch 4615 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4615: avg_loss appended (1.3139)\n", - "Epoch 4615: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4615: accuracy appended (60.00%)\n", - "Epoch 4615: model set back to train mode\n", - "Epoch 4615: model parameters saved\n", - "Epoch 4616 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4616: avg_loss appended (1.3139)\n", - "Epoch 4616: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4616: accuracy appended (60.00%)\n", - "Epoch 4616: model set back to train mode\n", - "Epoch 4616: model parameters saved\n", - "Epoch 4617 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4617: avg_loss appended (1.3139)\n", - "Epoch 4617: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4617: accuracy appended (60.00%)\n", - "Epoch 4617: model set back to train mode\n", - "Epoch 4617: model parameters saved\n", - "Epoch 4618 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4618: avg_loss appended (1.3139)\n", - "Epoch 4618: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4618: accuracy appended (60.00%)\n", - "Epoch 4618: model set back to train mode\n", - "Epoch 4618: model parameters saved\n", - "Epoch 4619 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4619: avg_loss appended (1.3139)\n", - "Epoch 4619: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4619: accuracy appended (60.00%)\n", - "Epoch 4619: model set back to train mode\n", - "Epoch 4619: model parameters saved\n", - "Epoch 4620 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4620: avg_loss appended (1.3139)\n", - "Epoch 4620: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4620: accuracy appended (60.00%)\n", - "Epoch 4620: model set back to train mode\n", - "Epoch 4620: model parameters saved\n", - "Epoch 4621 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4621: avg_loss appended (1.3139)\n", - "Epoch 4621: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4621: accuracy appended (60.00%)\n", - "Epoch 4621: model set back to train mode\n", - "Epoch 4621: model parameters saved\n", - "Epoch 4622 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4622: avg_loss appended (1.3139)\n", - "Epoch 4622: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4622: accuracy appended (60.00%)\n", - "Epoch 4622: model set back to train mode\n", - "Epoch 4622: model parameters saved\n", - "Epoch 4623 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4623: avg_loss appended (1.3139)\n", - "Epoch 4623: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4623: accuracy appended (60.00%)\n", - "Epoch 4623: model set back to train mode\n", - "Epoch 4623: model parameters saved\n", - "Epoch 4624 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4624: avg_loss appended (1.3139)\n", - "Epoch 4624: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4624: accuracy appended (60.00%)\n", - "Epoch 4624: model set back to train mode\n", - "Epoch 4624: model parameters saved\n", - "Epoch 4625 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4625: avg_loss appended (1.3139)\n", - "Epoch 4625: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4625: accuracy appended (60.00%)\n", - "Epoch 4625: model set back to train mode\n", - "Epoch 4625: model parameters saved\n", - "Epoch 4626 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4626: avg_loss appended (1.3139)\n", - "Epoch 4626: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4626: accuracy appended (60.00%)\n", - "Epoch 4626: model set back to train mode\n", - "Epoch 4626: model parameters saved\n", - "Epoch 4627 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4627: avg_loss appended (1.3139)\n", - "Epoch 4627: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4627: accuracy appended (60.00%)\n", - "Epoch 4627: model set back to train mode\n", - "Epoch 4627: model parameters saved\n", - "Epoch 4628 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4628: avg_loss appended (1.3139)\n", - "Epoch 4628: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4628: accuracy appended (60.00%)\n", - "Epoch 4628: model set back to train mode\n", - "Epoch 4628: model parameters saved\n", - "Epoch 4629 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4629: avg_loss appended (1.3139)\n", - "Epoch 4629: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4629: accuracy appended (60.00%)\n", - "Epoch 4629: model set back to train mode\n", - "Epoch 4629: model parameters saved\n", - "Epoch 4630 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4630: avg_loss appended (1.3139)\n", - "Epoch 4630: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4630: accuracy appended (60.00%)\n", - "Epoch 4630: model set back to train mode\n", - "Epoch 4630: model parameters saved\n", - "Epoch 4631 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4631: avg_loss appended (1.3139)\n", - "Epoch 4631: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4631: accuracy appended (60.00%)\n", - "Epoch 4631: model set back to train mode\n", - "Epoch 4631: model parameters saved\n", - "Epoch 4632 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4632: avg_loss appended (1.3139)\n", - "Epoch 4632: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4632: accuracy appended (60.00%)\n", - "Epoch 4632: model set back to train mode\n", - "Epoch 4632: model parameters saved\n", - "Epoch 4633 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4633: avg_loss appended (1.3139)\n", - "Epoch 4633: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4633: accuracy appended (60.00%)\n", - "Epoch 4633: model set back to train mode\n", - "Epoch 4633: model parameters saved\n", - "Epoch 4634 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4634: avg_loss appended (1.3139)\n", - "Epoch 4634: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4634: accuracy appended (60.00%)\n", - "Epoch 4634: model set back to train mode\n", - "Epoch 4634: model parameters saved\n", - "Epoch 4635 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4635: avg_loss appended (1.3139)\n", - "Epoch 4635: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4635: accuracy appended (60.00%)\n", - "Epoch 4635: model set back to train mode\n", - "Epoch 4635: model parameters saved\n", - "Epoch 4636 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4636: avg_loss appended (1.3139)\n", - "Epoch 4636: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4636: accuracy appended (60.00%)\n", - "Epoch 4636: model set back to train mode\n", - "Epoch 4636: model parameters saved\n", - "Epoch 4637 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4637: avg_loss appended (1.3139)\n", - "Epoch 4637: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4637: accuracy appended (60.00%)\n", - "Epoch 4637: model set back to train mode\n", - "Epoch 4637: model parameters saved\n", - "Epoch 4638 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4638: avg_loss appended (1.3139)\n", - "Epoch 4638: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4638: accuracy appended (60.00%)\n", - "Epoch 4638: model set back to train mode\n", - "Epoch 4638: model parameters saved\n", - "Epoch 4639 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4639: avg_loss appended (1.3139)\n", - "Epoch 4639: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4639: accuracy appended (60.00%)\n", - "Epoch 4639: model set back to train mode\n", - "Epoch 4639: model parameters saved\n", - "Epoch 4640 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4640: avg_loss appended (1.3139)\n", - "Epoch 4640: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4640: accuracy appended (60.00%)\n", - "Epoch 4640: model set back to train mode\n", - "Epoch 4640: model parameters saved\n", - "Epoch 4641 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4641: avg_loss appended (1.3139)\n", - "Epoch 4641: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4641: accuracy appended (60.00%)\n", - "Epoch 4641: model set back to train mode\n", - "Epoch 4641: model parameters saved\n", - "Epoch 4642 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4642: avg_loss appended (1.3139)\n", - "Epoch 4642: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4642: accuracy appended (60.00%)\n", - "Epoch 4642: model set back to train mode\n", - "Epoch 4642: model parameters saved\n", - "Epoch 4643 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4643: avg_loss appended (1.3139)\n", - "Epoch 4643: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4643: accuracy appended (60.00%)\n", - "Epoch 4643: model set back to train mode\n", - "Epoch 4643: model parameters saved\n", - "Epoch 4644 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3139)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3139)\n", - "Epoch 4644: avg_loss appended (1.3139)\n", - "Epoch 4644: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4644: accuracy appended (60.00%)\n", - "Epoch 4644: model set back to train mode\n", - "Epoch 4644: model parameters saved\n", - "Epoch 4645 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4645: avg_loss appended (1.3138)\n", - "Epoch 4645: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4645: accuracy appended (60.00%)\n", - "Epoch 4645: model set back to train mode\n", - "Epoch 4645: model parameters saved\n", - "Epoch 4646 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4646: avg_loss appended (1.3138)\n", - "Epoch 4646: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4646: accuracy appended (60.00%)\n", - "Epoch 4646: model set back to train mode\n", - "Epoch 4646: model parameters saved\n", - "Epoch 4647 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4647: avg_loss appended (1.3138)\n", - "Epoch 4647: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4647: accuracy appended (60.00%)\n", - "Epoch 4647: model set back to train mode\n", - "Epoch 4647: model parameters saved\n", - "Epoch 4648 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4648: avg_loss appended (1.3138)\n", - "Epoch 4648: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4648: accuracy appended (60.00%)\n", - "Epoch 4648: model set back to train mode\n", - "Epoch 4648: model parameters saved\n", - "Epoch 4649 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4649: avg_loss appended (1.3138)\n", - "Epoch 4649: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4649: accuracy appended (60.00%)\n", - "Epoch 4649: model set back to train mode\n", - "Epoch 4649: model parameters saved\n", - "Epoch 4650 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4650: avg_loss appended (1.3138)\n", - "Epoch 4650: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4650: accuracy appended (60.00%)\n", - "Epoch 4650: model set back to train mode\n", - "Epoch 4650: model parameters saved\n", - "Epoch 4651 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4651: avg_loss appended (1.3138)\n", - "Epoch 4651: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4651: accuracy appended (60.00%)\n", - "Epoch 4651: model set back to train mode\n", - "Epoch 4651: model parameters saved\n", - "Epoch 4652 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4652: avg_loss appended (1.3138)\n", - "Epoch 4652: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4652: accuracy appended (60.00%)\n", - "Epoch 4652: model set back to train mode\n", - "Epoch 4652: model parameters saved\n", - "Epoch 4653 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4653: avg_loss appended (1.3138)\n", - "Epoch 4653: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4653: accuracy appended (60.00%)\n", - "Epoch 4653: model set back to train mode\n", - "Epoch 4653: model parameters saved\n", - "Epoch 4654 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4654: avg_loss appended (1.3138)\n", - "Epoch 4654: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4654: accuracy appended (60.00%)\n", - "Epoch 4654: model set back to train mode\n", - "Epoch 4654: model parameters saved\n", - "Epoch 4655 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4655: avg_loss appended (1.3138)\n", - "Epoch 4655: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4655: accuracy appended (60.00%)\n", - "Epoch 4655: model set back to train mode\n", - "Epoch 4655: model parameters saved\n", - "Epoch 4656 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4656: avg_loss appended (1.3138)\n", - "Epoch 4656: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4656: accuracy appended (60.00%)\n", - "Epoch 4656: model set back to train mode\n", - "Epoch 4656: model parameters saved\n", - "Epoch 4657 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4657: avg_loss appended (1.3138)\n", - "Epoch 4657: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4657: accuracy appended (60.00%)\n", - "Epoch 4657: model set back to train mode\n", - "Epoch 4657: model parameters saved\n", - "Epoch 4658 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4658: avg_loss appended (1.3138)\n", - "Epoch 4658: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4658: accuracy appended (60.00%)\n", - "Epoch 4658: model set back to train mode\n", - "Epoch 4658: model parameters saved\n", - "Epoch 4659 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4659: avg_loss appended (1.3138)\n", - "Epoch 4659: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4659: accuracy appended (60.00%)\n", - "Epoch 4659: model set back to train mode\n", - "Epoch 4659: model parameters saved\n", - "Epoch 4660 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4660: avg_loss appended (1.3138)\n", - "Epoch 4660: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4660: accuracy appended (60.00%)\n", - "Epoch 4660: model set back to train mode\n", - "Epoch 4660: model parameters saved\n", - "Epoch 4661 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4661: avg_loss appended (1.3138)\n", - "Epoch 4661: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4661: accuracy appended (60.00%)\n", - "Epoch 4661: model set back to train mode\n", - "Epoch 4661: model parameters saved\n", - "Epoch 4662 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4662: avg_loss appended (1.3138)\n", - "Epoch 4662: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4662: accuracy appended (60.00%)\n", - "Epoch 4662: model set back to train mode\n", - "Epoch 4662: model parameters saved\n", - "Epoch 4663 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4663: avg_loss appended (1.3138)\n", - "Epoch 4663: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4663: accuracy appended (60.00%)\n", - "Epoch 4663: model set back to train mode\n", - "Epoch 4663: model parameters saved\n", - "Epoch 4664 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4664: avg_loss appended (1.3138)\n", - "Epoch 4664: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4664: accuracy appended (60.00%)\n", - "Epoch 4664: model set back to train mode\n", - "Epoch 4664: model parameters saved\n", - "Epoch 4665 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4665: avg_loss appended (1.3138)\n", - "Epoch 4665: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4665: accuracy appended (60.00%)\n", - "Epoch 4665: model set back to train mode\n", - "Epoch 4665: model parameters saved\n", - "Epoch 4666 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4666: avg_loss appended (1.3138)\n", - "Epoch 4666: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4666: accuracy appended (60.00%)\n", - "Epoch 4666: model set back to train mode\n", - "Epoch 4666: model parameters saved\n", - "Epoch 4667 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4667: avg_loss appended (1.3138)\n", - "Epoch 4667: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4667: accuracy appended (60.00%)\n", - "Epoch 4667: model set back to train mode\n", - "Epoch 4667: model parameters saved\n", - "Epoch 4668 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4668: avg_loss appended (1.3138)\n", - "Epoch 4668: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4668: accuracy appended (60.00%)\n", - "Epoch 4668: model set back to train mode\n", - "Epoch 4668: model parameters saved\n", - "Epoch 4669 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4669: avg_loss appended (1.3138)\n", - "Epoch 4669: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4669: accuracy appended (60.00%)\n", - "Epoch 4669: model set back to train mode\n", - "Epoch 4669: model parameters saved\n", - "Epoch 4670 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4670: avg_loss appended (1.3138)\n", - "Epoch 4670: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4670: accuracy appended (60.00%)\n", - "Epoch 4670: model set back to train mode\n", - "Epoch 4670: model parameters saved\n", - "Epoch 4671 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4671: avg_loss appended (1.3138)\n", - "Epoch 4671: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4671: accuracy appended (60.00%)\n", - "Epoch 4671: model set back to train mode\n", - "Epoch 4671: model parameters saved\n", - "Epoch 4672 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4672: avg_loss appended (1.3138)\n", - "Epoch 4672: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4672: accuracy appended (60.00%)\n", - "Epoch 4672: model set back to train mode\n", - "Epoch 4672: model parameters saved\n", - "Epoch 4673 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4673: avg_loss appended (1.3138)\n", - "Epoch 4673: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4673: accuracy appended (60.00%)\n", - "Epoch 4673: model set back to train mode\n", - "Epoch 4673: model parameters saved\n", - "Epoch 4674 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4674: avg_loss appended (1.3138)\n", - "Epoch 4674: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4674: accuracy appended (60.00%)\n", - "Epoch 4674: model set back to train mode\n", - "Epoch 4674: model parameters saved\n", - "Epoch 4675 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4675: avg_loss appended (1.3138)\n", - "Epoch 4675: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4675: accuracy appended (60.00%)\n", - "Epoch 4675: model set back to train mode\n", - "Epoch 4675: model parameters saved\n", - "Epoch 4676 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4676: avg_loss appended (1.3138)\n", - "Epoch 4676: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4676: accuracy appended (60.00%)\n", - "Epoch 4676: model set back to train mode\n", - "Epoch 4676: model parameters saved\n", - "Epoch 4677 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4677: avg_loss appended (1.3138)\n", - "Epoch 4677: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4677: accuracy appended (60.00%)\n", - "Epoch 4677: model set back to train mode\n", - "Epoch 4677: model parameters saved\n", - "Epoch 4678 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4678: avg_loss appended (1.3138)\n", - "Epoch 4678: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4678: accuracy appended (60.00%)\n", - "Epoch 4678: model set back to train mode\n", - "Epoch 4678: model parameters saved\n", - "Epoch 4679 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4679: avg_loss appended (1.3138)\n", - "Epoch 4679: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4679: accuracy appended (60.00%)\n", - "Epoch 4679: model set back to train mode\n", - "Epoch 4679: model parameters saved\n", - "Epoch 4680 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4680: avg_loss appended (1.3138)\n", - "Epoch 4680: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4680: accuracy appended (60.00%)\n", - "Epoch 4680: model set back to train mode\n", - "Epoch 4680: model parameters saved\n", - "Epoch 4681 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4681: avg_loss appended (1.3138)\n", - "Epoch 4681: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4681: accuracy appended (60.00%)\n", - "Epoch 4681: model set back to train mode\n", - "Epoch 4681: model parameters saved\n", - "Epoch 4682 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4682: avg_loss appended (1.3138)\n", - "Epoch 4682: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4682: accuracy appended (60.00%)\n", - "Epoch 4682: model set back to train mode\n", - "Epoch 4682: model parameters saved\n", - "Epoch 4683 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4683: avg_loss appended (1.3138)\n", - "Epoch 4683: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4683: accuracy appended (60.00%)\n", - "Epoch 4683: model set back to train mode\n", - "Epoch 4683: model parameters saved\n", - "Epoch 4684 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4684: avg_loss appended (1.3138)\n", - "Epoch 4684: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4684: accuracy appended (60.00%)\n", - "Epoch 4684: model set back to train mode\n", - "Epoch 4684: model parameters saved\n", - "Epoch 4685 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4685: avg_loss appended (1.3138)\n", - "Epoch 4685: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4685: accuracy appended (60.00%)\n", - "Epoch 4685: model set back to train mode\n", - "Epoch 4685: model parameters saved\n", - "Epoch 4686 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4686: avg_loss appended (1.3138)\n", - "Epoch 4686: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4686: accuracy appended (60.00%)\n", - "Epoch 4686: model set back to train mode\n", - "Epoch 4686: model parameters saved\n", - "Epoch 4687 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4687: avg_loss appended (1.3138)\n", - "Epoch 4687: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4687: accuracy appended (60.00%)\n", - "Epoch 4687: model set back to train mode\n", - "Epoch 4687: model parameters saved\n", - "Epoch 4688 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4688: avg_loss appended (1.3138)\n", - "Epoch 4688: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4688: accuracy appended (60.00%)\n", - "Epoch 4688: model set back to train mode\n", - "Epoch 4688: model parameters saved\n", - "Epoch 4689 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4689: avg_loss appended (1.3138)\n", - "Epoch 4689: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4689: accuracy appended (60.00%)\n", - "Epoch 4689: model set back to train mode\n", - "Epoch 4689: model parameters saved\n", - "Epoch 4690 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4690: avg_loss appended (1.3138)\n", - "Epoch 4690: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4690: accuracy appended (60.00%)\n", - "Epoch 4690: model set back to train mode\n", - "Epoch 4690: model parameters saved\n", - "Epoch 4691 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4691: avg_loss appended (1.3138)\n", - "Epoch 4691: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4691: accuracy appended (60.00%)\n", - "Epoch 4691: model set back to train mode\n", - "Epoch 4691: model parameters saved\n", - "Epoch 4692 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4692: avg_loss appended (1.3138)\n", - "Epoch 4692: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4692: accuracy appended (60.00%)\n", - "Epoch 4692: model set back to train mode\n", - "Epoch 4692: model parameters saved\n", - "Epoch 4693 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4693: avg_loss appended (1.3138)\n", - "Epoch 4693: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4693: accuracy appended (60.00%)\n", - "Epoch 4693: model set back to train mode\n", - "Epoch 4693: model parameters saved\n", - "Epoch 4694 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4694: avg_loss appended (1.3138)\n", - "Epoch 4694: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4694: accuracy appended (60.00%)\n", - "Epoch 4694: model set back to train mode\n", - "Epoch 4694: model parameters saved\n", - "Epoch 4695 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4695: avg_loss appended (1.3138)\n", - "Epoch 4695: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4695: accuracy appended (60.00%)\n", - "Epoch 4695: model set back to train mode\n", - "Epoch 4695: model parameters saved\n", - "Epoch 4696 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4696: avg_loss appended (1.3138)\n", - "Epoch 4696: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4696: accuracy appended (60.00%)\n", - "Epoch 4696: model set back to train mode\n", - "Epoch 4696: model parameters saved\n", - "Epoch 4697 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4697: avg_loss appended (1.3138)\n", - "Epoch 4697: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4697: accuracy appended (60.00%)\n", - "Epoch 4697: model set back to train mode\n", - "Epoch 4697: model parameters saved\n", - "Epoch 4698 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4698: avg_loss appended (1.3138)\n", - "Epoch 4698: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4698: accuracy appended (60.00%)\n", - "Epoch 4698: model set back to train mode\n", - "Epoch 4698: model parameters saved\n", - "Epoch 4699 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4699: avg_loss appended (1.3138)\n", - "Epoch 4699: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4699: accuracy appended (60.00%)\n", - "Epoch 4699: model set back to train mode\n", - "Epoch 4699: model parameters saved\n", - "Epoch 4700 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4700: avg_loss appended (1.3138)\n", - "Epoch 4700: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4700: accuracy appended (60.00%)\n", - "Epoch 4700: model set back to train mode\n", - "Epoch 4700: model parameters saved\n", - "Epoch 4700/10000, Loss: 1.3138, Accuracy: 60.00%\n", - "Epoch 4701 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4701: avg_loss appended (1.3138)\n", - "Epoch 4701: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4701: accuracy appended (60.00%)\n", - "Epoch 4701: model set back to train mode\n", - "Epoch 4701: model parameters saved\n", - "Epoch 4702 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4702: avg_loss appended (1.3138)\n", - "Epoch 4702: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4702: accuracy appended (60.00%)\n", - "Epoch 4702: model set back to train mode\n", - "Epoch 4702: model parameters saved\n", - "Epoch 4703 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4703: avg_loss appended (1.3138)\n", - "Epoch 4703: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4703: accuracy appended (60.00%)\n", - "Epoch 4703: model set back to train mode\n", - "Epoch 4703: model parameters saved\n", - "Epoch 4704 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3138)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3138)\n", - "Epoch 4704: avg_loss appended (1.3138)\n", - "Epoch 4704: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4704: accuracy appended (60.00%)\n", - "Epoch 4704: model set back to train mode\n", - "Epoch 4704: model parameters saved\n", - "Epoch 4705 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4705: avg_loss appended (1.3137)\n", - "Epoch 4705: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4705: accuracy appended (60.00%)\n", - "Epoch 4705: model set back to train mode\n", - "Epoch 4705: model parameters saved\n", - "Epoch 4706 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4706: avg_loss appended (1.3137)\n", - "Epoch 4706: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4706: accuracy appended (60.00%)\n", - "Epoch 4706: model set back to train mode\n", - "Epoch 4706: model parameters saved\n", - "Epoch 4707 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4707: avg_loss appended (1.3137)\n", - "Epoch 4707: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4707: accuracy appended (60.00%)\n", - "Epoch 4707: model set back to train mode\n", - "Epoch 4707: model parameters saved\n", - "Epoch 4708 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4708: avg_loss appended (1.3137)\n", - "Epoch 4708: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4708: accuracy appended (60.00%)\n", - "Epoch 4708: model set back to train mode\n", - "Epoch 4708: model parameters saved\n", - "Epoch 4709 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4709: avg_loss appended (1.3137)\n", - "Epoch 4709: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4709: accuracy appended (60.00%)\n", - "Epoch 4709: model set back to train mode\n", - "Epoch 4709: model parameters saved\n", - "Epoch 4710 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4710: avg_loss appended (1.3137)\n", - "Epoch 4710: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4710: accuracy appended (60.00%)\n", - "Epoch 4710: model set back to train mode\n", - "Epoch 4710: model parameters saved\n", - "Epoch 4711 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4711: avg_loss appended (1.3137)\n", - "Epoch 4711: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4711: accuracy appended (60.00%)\n", - "Epoch 4711: model set back to train mode\n", - "Epoch 4711: model parameters saved\n", - "Epoch 4712 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4712: avg_loss appended (1.3137)\n", - "Epoch 4712: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4712: accuracy appended (60.00%)\n", - "Epoch 4712: model set back to train mode\n", - "Epoch 4712: model parameters saved\n", - "Epoch 4713 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4713: avg_loss appended (1.3137)\n", - "Epoch 4713: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4713: accuracy appended (60.00%)\n", - "Epoch 4713: model set back to train mode\n", - "Epoch 4713: model parameters saved\n", - "Epoch 4714 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4714: avg_loss appended (1.3137)\n", - "Epoch 4714: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4714: accuracy appended (60.00%)\n", - "Epoch 4714: model set back to train mode\n", - "Epoch 4714: model parameters saved\n", - "Epoch 4715 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4715: avg_loss appended (1.3137)\n", - "Epoch 4715: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4715: accuracy appended (60.00%)\n", - "Epoch 4715: model set back to train mode\n", - "Epoch 4715: model parameters saved\n", - "Epoch 4716 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4716: avg_loss appended (1.3137)\n", - "Epoch 4716: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4716: accuracy appended (60.00%)\n", - "Epoch 4716: model set back to train mode\n", - "Epoch 4716: model parameters saved\n", - "Epoch 4717 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4717: avg_loss appended (1.3137)\n", - "Epoch 4717: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4717: accuracy appended (60.00%)\n", - "Epoch 4717: model set back to train mode\n", - "Epoch 4717: model parameters saved\n", - "Epoch 4718 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4718: avg_loss appended (1.3137)\n", - "Epoch 4718: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4718: accuracy appended (60.00%)\n", - "Epoch 4718: model set back to train mode\n", - "Epoch 4718: model parameters saved\n", - "Epoch 4719 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4719: avg_loss appended (1.3137)\n", - "Epoch 4719: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4719: accuracy appended (60.00%)\n", - "Epoch 4719: model set back to train mode\n", - "Epoch 4719: model parameters saved\n", - "Epoch 4720 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4720: avg_loss appended (1.3137)\n", - "Epoch 4720: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4720: accuracy appended (60.00%)\n", - "Epoch 4720: model set back to train mode\n", - "Epoch 4720: model parameters saved\n", - "Epoch 4721 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4721: avg_loss appended (1.3137)\n", - "Epoch 4721: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4721: accuracy appended (60.00%)\n", - "Epoch 4721: model set back to train mode\n", - "Epoch 4721: model parameters saved\n", - "Epoch 4722 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4722: avg_loss appended (1.3137)\n", - "Epoch 4722: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4722: accuracy appended (60.00%)\n", - "Epoch 4722: model set back to train mode\n", - "Epoch 4722: model parameters saved\n", - "Epoch 4723 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4723: avg_loss appended (1.3137)\n", - "Epoch 4723: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4723: accuracy appended (60.00%)\n", - "Epoch 4723: model set back to train mode\n", - "Epoch 4723: model parameters saved\n", - "Epoch 4724 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4724: avg_loss appended (1.3137)\n", - "Epoch 4724: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4724: accuracy appended (60.00%)\n", - "Epoch 4724: model set back to train mode\n", - "Epoch 4724: model parameters saved\n", - "Epoch 4725 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4725: avg_loss appended (1.3137)\n", - "Epoch 4725: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4725: accuracy appended (60.00%)\n", - "Epoch 4725: model set back to train mode\n", - "Epoch 4725: model parameters saved\n", - "Epoch 4726 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4726: avg_loss appended (1.3137)\n", - "Epoch 4726: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4726: accuracy appended (60.00%)\n", - "Epoch 4726: model set back to train mode\n", - "Epoch 4726: model parameters saved\n", - "Epoch 4727 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4727: avg_loss appended (1.3137)\n", - "Epoch 4727: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4727: accuracy appended (60.00%)\n", - "Epoch 4727: model set back to train mode\n", - "Epoch 4727: model parameters saved\n", - "Epoch 4728 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4728: avg_loss appended (1.3137)\n", - "Epoch 4728: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4728: accuracy appended (60.00%)\n", - "Epoch 4728: model set back to train mode\n", - "Epoch 4728: model parameters saved\n", - "Epoch 4729 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4729: avg_loss appended (1.3137)\n", - "Epoch 4729: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4729: accuracy appended (60.00%)\n", - "Epoch 4729: model set back to train mode\n", - "Epoch 4729: model parameters saved\n", - "Epoch 4730 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4730: avg_loss appended (1.3137)\n", - "Epoch 4730: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4730: accuracy appended (60.00%)\n", - "Epoch 4730: model set back to train mode\n", - "Epoch 4730: model parameters saved\n", - "Epoch 4731 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4731: avg_loss appended (1.3137)\n", - "Epoch 4731: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4731: accuracy appended (60.00%)\n", - "Epoch 4731: model set back to train mode\n", - "Epoch 4731: model parameters saved\n", - "Epoch 4732 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4732: avg_loss appended (1.3137)\n", - "Epoch 4732: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4732: accuracy appended (60.00%)\n", - "Epoch 4732: model set back to train mode\n", - "Epoch 4732: model parameters saved\n", - "Epoch 4733 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4733: avg_loss appended (1.3137)\n", - "Epoch 4733: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4733: accuracy appended (60.00%)\n", - "Epoch 4733: model set back to train mode\n", - "Epoch 4733: model parameters saved\n", - "Epoch 4734 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4734: avg_loss appended (1.3137)\n", - "Epoch 4734: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4734: accuracy appended (60.00%)\n", - "Epoch 4734: model set back to train mode\n", - "Epoch 4734: model parameters saved\n", - "Epoch 4735 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4735: avg_loss appended (1.3137)\n", - "Epoch 4735: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4735: accuracy appended (60.00%)\n", - "Epoch 4735: model set back to train mode\n", - "Epoch 4735: model parameters saved\n", - "Epoch 4736 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4736: avg_loss appended (1.3137)\n", - "Epoch 4736: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4736: accuracy appended (60.00%)\n", - "Epoch 4736: model set back to train mode\n", - "Epoch 4736: model parameters saved\n", - "Epoch 4737 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4737: avg_loss appended (1.3137)\n", - "Epoch 4737: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4737: accuracy appended (60.00%)\n", - "Epoch 4737: model set back to train mode\n", - "Epoch 4737: model parameters saved\n", - "Epoch 4738 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4738: avg_loss appended (1.3137)\n", - "Epoch 4738: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4738: accuracy appended (60.00%)\n", - "Epoch 4738: model set back to train mode\n", - "Epoch 4738: model parameters saved\n", - "Epoch 4739 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4739: avg_loss appended (1.3137)\n", - "Epoch 4739: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4739: accuracy appended (60.00%)\n", - "Epoch 4739: model set back to train mode\n", - "Epoch 4739: model parameters saved\n", - "Epoch 4740 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4740: avg_loss appended (1.3137)\n", - "Epoch 4740: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4740: accuracy appended (60.00%)\n", - "Epoch 4740: model set back to train mode\n", - "Epoch 4740: model parameters saved\n", - "Epoch 4741 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4741: avg_loss appended (1.3137)\n", - "Epoch 4741: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4741: accuracy appended (60.00%)\n", - "Epoch 4741: model set back to train mode\n", - "Epoch 4741: model parameters saved\n", - "Epoch 4742 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4742: avg_loss appended (1.3137)\n", - "Epoch 4742: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4742: accuracy appended (60.00%)\n", - "Epoch 4742: model set back to train mode\n", - "Epoch 4742: model parameters saved\n", - "Epoch 4743 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4743: avg_loss appended (1.3137)\n", - "Epoch 4743: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4743: accuracy appended (60.00%)\n", - "Epoch 4743: model set back to train mode\n", - "Epoch 4743: model parameters saved\n", - "Epoch 4744 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4744: avg_loss appended (1.3137)\n", - "Epoch 4744: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4744: accuracy appended (60.00%)\n", - "Epoch 4744: model set back to train mode\n", - "Epoch 4744: model parameters saved\n", - "Epoch 4745 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4745: avg_loss appended (1.3137)\n", - "Epoch 4745: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4745: accuracy appended (60.00%)\n", - "Epoch 4745: model set back to train mode\n", - "Epoch 4745: model parameters saved\n", - "Epoch 4746 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4746: avg_loss appended (1.3137)\n", - "Epoch 4746: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4746: accuracy appended (60.00%)\n", - "Epoch 4746: model set back to train mode\n", - "Epoch 4746: model parameters saved\n", - "Epoch 4747 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4747: avg_loss appended (1.3137)\n", - "Epoch 4747: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4747: accuracy appended (60.00%)\n", - "Epoch 4747: model set back to train mode\n", - "Epoch 4747: model parameters saved\n", - "Epoch 4748 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4748: avg_loss appended (1.3137)\n", - "Epoch 4748: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4748: accuracy appended (60.00%)\n", - "Epoch 4748: model set back to train mode\n", - "Epoch 4748: model parameters saved\n", - "Epoch 4749 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4749: avg_loss appended (1.3137)\n", - "Epoch 4749: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4749: accuracy appended (60.00%)\n", - "Epoch 4749: model set back to train mode\n", - "Epoch 4749: model parameters saved\n", - "Epoch 4750 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4750: avg_loss appended (1.3137)\n", - "Epoch 4750: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4750: accuracy appended (60.00%)\n", - "Epoch 4750: model set back to train mode\n", - "Epoch 4750: model parameters saved\n", - "Epoch 4751 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4751: avg_loss appended (1.3137)\n", - "Epoch 4751: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4751: accuracy appended (60.00%)\n", - "Epoch 4751: model set back to train mode\n", - "Epoch 4751: model parameters saved\n", - "Epoch 4752 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4752: avg_loss appended (1.3137)\n", - "Epoch 4752: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4752: accuracy appended (60.00%)\n", - "Epoch 4752: model set back to train mode\n", - "Epoch 4752: model parameters saved\n", - "Epoch 4753 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4753: avg_loss appended (1.3137)\n", - "Epoch 4753: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4753: accuracy appended (60.00%)\n", - "Epoch 4753: model set back to train mode\n", - "Epoch 4753: model parameters saved\n", - "Epoch 4754 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4754: avg_loss appended (1.3137)\n", - "Epoch 4754: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4754: accuracy appended (60.00%)\n", - "Epoch 4754: model set back to train mode\n", - "Epoch 4754: model parameters saved\n", - "Epoch 4755 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4755: avg_loss appended (1.3137)\n", - "Epoch 4755: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4755: accuracy appended (60.00%)\n", - "Epoch 4755: model set back to train mode\n", - "Epoch 4755: model parameters saved\n", - "Epoch 4756 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4756: avg_loss appended (1.3137)\n", - "Epoch 4756: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4756: accuracy appended (60.00%)\n", - "Epoch 4756: model set back to train mode\n", - "Epoch 4756: model parameters saved\n", - "Epoch 4757 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4757: avg_loss appended (1.3137)\n", - "Epoch 4757: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4757: accuracy appended (60.00%)\n", - "Epoch 4757: model set back to train mode\n", - "Epoch 4757: model parameters saved\n", - "Epoch 4758 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4758: avg_loss appended (1.3137)\n", - "Epoch 4758: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4758: accuracy appended (60.00%)\n", - "Epoch 4758: model set back to train mode\n", - "Epoch 4758: model parameters saved\n", - "Epoch 4759 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4759: avg_loss appended (1.3137)\n", - "Epoch 4759: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4759: accuracy appended (60.00%)\n", - "Epoch 4759: model set back to train mode\n", - "Epoch 4759: model parameters saved\n", - "Epoch 4760 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4760: avg_loss appended (1.3137)\n", - "Epoch 4760: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4760: accuracy appended (60.00%)\n", - "Epoch 4760: model set back to train mode\n", - "Epoch 4760: model parameters saved\n", - "Epoch 4761 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4761: avg_loss appended (1.3137)\n", - "Epoch 4761: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4761: accuracy appended (60.00%)\n", - "Epoch 4761: model set back to train mode\n", - "Epoch 4761: model parameters saved\n", - "Epoch 4762 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4762: avg_loss appended (1.3137)\n", - "Epoch 4762: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4762: accuracy appended (60.00%)\n", - "Epoch 4762: model set back to train mode\n", - "Epoch 4762: model parameters saved\n", - "Epoch 4763 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4763: avg_loss appended (1.3137)\n", - "Epoch 4763: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4763: accuracy appended (60.00%)\n", - "Epoch 4763: model set back to train mode\n", - "Epoch 4763: model parameters saved\n", - "Epoch 4764 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3137)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3137)\n", - "Epoch 4764: avg_loss appended (1.3137)\n", - "Epoch 4764: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4764: accuracy appended (60.00%)\n", - "Epoch 4764: model set back to train mode\n", - "Epoch 4764: model parameters saved\n", - "Epoch 4765 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4765: avg_loss appended (1.3136)\n", - "Epoch 4765: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4765: accuracy appended (60.00%)\n", - "Epoch 4765: model set back to train mode\n", - "Epoch 4765: model parameters saved\n", - "Epoch 4766 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4766: avg_loss appended (1.3136)\n", - "Epoch 4766: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4766: accuracy appended (60.00%)\n", - "Epoch 4766: model set back to train mode\n", - "Epoch 4766: model parameters saved\n", - "Epoch 4767 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4767: avg_loss appended (1.3136)\n", - "Epoch 4767: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4767: accuracy appended (60.00%)\n", - "Epoch 4767: model set back to train mode\n", - "Epoch 4767: model parameters saved\n", - "Epoch 4768 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4768: avg_loss appended (1.3136)\n", - "Epoch 4768: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4768: accuracy appended (60.00%)\n", - "Epoch 4768: model set back to train mode\n", - "Epoch 4768: model parameters saved\n", - "Epoch 4769 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4769: avg_loss appended (1.3136)\n", - "Epoch 4769: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4769: accuracy appended (60.00%)\n", - "Epoch 4769: model set back to train mode\n", - "Epoch 4769: model parameters saved\n", - "Epoch 4770 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4770: avg_loss appended (1.3136)\n", - "Epoch 4770: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4770: accuracy appended (60.00%)\n", - "Epoch 4770: model set back to train mode\n", - "Epoch 4770: model parameters saved\n", - "Epoch 4771 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4771: avg_loss appended (1.3136)\n", - "Epoch 4771: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4771: accuracy appended (60.00%)\n", - "Epoch 4771: model set back to train mode\n", - "Epoch 4771: model parameters saved\n", - "Epoch 4772 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4772: avg_loss appended (1.3136)\n", - "Epoch 4772: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4772: accuracy appended (60.00%)\n", - "Epoch 4772: model set back to train mode\n", - "Epoch 4772: model parameters saved\n", - "Epoch 4773 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4773: avg_loss appended (1.3136)\n", - "Epoch 4773: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4773: accuracy appended (60.00%)\n", - "Epoch 4773: model set back to train mode\n", - "Epoch 4773: model parameters saved\n", - "Epoch 4774 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4774: avg_loss appended (1.3136)\n", - "Epoch 4774: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4774: accuracy appended (60.00%)\n", - "Epoch 4774: model set back to train mode\n", - "Epoch 4774: model parameters saved\n", - "Epoch 4775 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4775: avg_loss appended (1.3136)\n", - "Epoch 4775: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4775: accuracy appended (60.00%)\n", - "Epoch 4775: model set back to train mode\n", - "Epoch 4775: model parameters saved\n", - "Epoch 4776 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4776: avg_loss appended (1.3136)\n", - "Epoch 4776: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4776: accuracy appended (60.00%)\n", - "Epoch 4776: model set back to train mode\n", - "Epoch 4776: model parameters saved\n", - "Epoch 4777 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4777: avg_loss appended (1.3136)\n", - "Epoch 4777: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4777: accuracy appended (60.00%)\n", - "Epoch 4777: model set back to train mode\n", - "Epoch 4777: model parameters saved\n", - "Epoch 4778 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4778: avg_loss appended (1.3136)\n", - "Epoch 4778: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4778: accuracy appended (60.00%)\n", - "Epoch 4778: model set back to train mode\n", - "Epoch 4778: model parameters saved\n", - "Epoch 4779 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4779: avg_loss appended (1.3136)\n", - "Epoch 4779: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4779: accuracy appended (60.00%)\n", - "Epoch 4779: model set back to train mode\n", - "Epoch 4779: model parameters saved\n", - "Epoch 4780 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4780: avg_loss appended (1.3136)\n", - "Epoch 4780: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4780: accuracy appended (60.00%)\n", - "Epoch 4780: model set back to train mode\n", - "Epoch 4780: model parameters saved\n", - "Epoch 4781 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4781: avg_loss appended (1.3136)\n", - "Epoch 4781: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4781: accuracy appended (60.00%)\n", - "Epoch 4781: model set back to train mode\n", - "Epoch 4781: model parameters saved\n", - "Epoch 4782 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4782: avg_loss appended (1.3136)\n", - "Epoch 4782: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4782: accuracy appended (60.00%)\n", - "Epoch 4782: model set back to train mode\n", - "Epoch 4782: model parameters saved\n", - "Epoch 4783 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4783: avg_loss appended (1.3136)\n", - "Epoch 4783: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4783: accuracy appended (60.00%)\n", - "Epoch 4783: model set back to train mode\n", - "Epoch 4783: model parameters saved\n", - "Epoch 4784 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4784: avg_loss appended (1.3136)\n", - "Epoch 4784: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4784: accuracy appended (60.00%)\n", - "Epoch 4784: model set back to train mode\n", - "Epoch 4784: model parameters saved\n", - "Epoch 4785 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4785: avg_loss appended (1.3136)\n", - "Epoch 4785: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4785: accuracy appended (60.00%)\n", - "Epoch 4785: model set back to train mode\n", - "Epoch 4785: model parameters saved\n", - "Epoch 4786 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4786: avg_loss appended (1.3136)\n", - "Epoch 4786: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4786: accuracy appended (60.00%)\n", - "Epoch 4786: model set back to train mode\n", - "Epoch 4786: model parameters saved\n", - "Epoch 4787 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4787: avg_loss appended (1.3136)\n", - "Epoch 4787: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4787: accuracy appended (60.00%)\n", - "Epoch 4787: model set back to train mode\n", - "Epoch 4787: model parameters saved\n", - "Epoch 4788 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4788: avg_loss appended (1.3136)\n", - "Epoch 4788: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4788: accuracy appended (60.00%)\n", - "Epoch 4788: model set back to train mode\n", - "Epoch 4788: model parameters saved\n", - "Epoch 4789 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4789: avg_loss appended (1.3136)\n", - "Epoch 4789: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4789: accuracy appended (60.00%)\n", - "Epoch 4789: model set back to train mode\n", - "Epoch 4789: model parameters saved\n", - "Epoch 4790 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4790: avg_loss appended (1.3136)\n", - "Epoch 4790: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4790: accuracy appended (60.00%)\n", - "Epoch 4790: model set back to train mode\n", - "Epoch 4790: model parameters saved\n", - "Epoch 4791 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4791: avg_loss appended (1.3136)\n", - "Epoch 4791: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4791: accuracy appended (60.00%)\n", - "Epoch 4791: model set back to train mode\n", - "Epoch 4791: model parameters saved\n", - "Epoch 4792 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4792: avg_loss appended (1.3136)\n", - "Epoch 4792: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4792: accuracy appended (60.00%)\n", - "Epoch 4792: model set back to train mode\n", - "Epoch 4792: model parameters saved\n", - "Epoch 4793 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4793: avg_loss appended (1.3136)\n", - "Epoch 4793: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4793: accuracy appended (60.00%)\n", - "Epoch 4793: model set back to train mode\n", - "Epoch 4793: model parameters saved\n", - "Epoch 4794 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4794: avg_loss appended (1.3136)\n", - "Epoch 4794: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4794: accuracy appended (60.00%)\n", - "Epoch 4794: model set back to train mode\n", - "Epoch 4794: model parameters saved\n", - "Epoch 4795 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4795: avg_loss appended (1.3136)\n", - "Epoch 4795: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4795: accuracy appended (60.00%)\n", - "Epoch 4795: model set back to train mode\n", - "Epoch 4795: model parameters saved\n", - "Epoch 4796 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4796: avg_loss appended (1.3136)\n", - "Epoch 4796: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4796: accuracy appended (60.00%)\n", - "Epoch 4796: model set back to train mode\n", - "Epoch 4796: model parameters saved\n", - "Epoch 4797 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4797: avg_loss appended (1.3136)\n", - "Epoch 4797: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4797: accuracy appended (60.00%)\n", - "Epoch 4797: model set back to train mode\n", - "Epoch 4797: model parameters saved\n", - "Epoch 4798 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4798: avg_loss appended (1.3136)\n", - "Epoch 4798: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4798: accuracy appended (60.00%)\n", - "Epoch 4798: model set back to train mode\n", - "Epoch 4798: model parameters saved\n", - "Epoch 4799 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4799: avg_loss appended (1.3136)\n", - "Epoch 4799: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4799: accuracy appended (60.00%)\n", - "Epoch 4799: model set back to train mode\n", - "Epoch 4799: model parameters saved\n", - "Epoch 4800 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4800: avg_loss appended (1.3136)\n", - "Epoch 4800: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4800: accuracy appended (60.00%)\n", - "Epoch 4800: model set back to train mode\n", - "Epoch 4800: model parameters saved\n", - "Epoch 4800/10000, Loss: 1.3136, Accuracy: 60.00%\n", - "Epoch 4801 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4801: avg_loss appended (1.3136)\n", - "Epoch 4801: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4801: accuracy appended (60.00%)\n", - "Epoch 4801: model set back to train mode\n", - "Epoch 4801: model parameters saved\n", - "Epoch 4802 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4802: avg_loss appended (1.3136)\n", - "Epoch 4802: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4802: accuracy appended (60.00%)\n", - "Epoch 4802: model set back to train mode\n", - "Epoch 4802: model parameters saved\n", - "Epoch 4803 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4803: avg_loss appended (1.3136)\n", - "Epoch 4803: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4803: accuracy appended (60.00%)\n", - "Epoch 4803: model set back to train mode\n", - "Epoch 4803: model parameters saved\n", - "Epoch 4804 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4804: avg_loss appended (1.3136)\n", - "Epoch 4804: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4804: accuracy appended (60.00%)\n", - "Epoch 4804: model set back to train mode\n", - "Epoch 4804: model parameters saved\n", - "Epoch 4805 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4805: avg_loss appended (1.3136)\n", - "Epoch 4805: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4805: accuracy appended (60.00%)\n", - "Epoch 4805: model set back to train mode\n", - "Epoch 4805: model parameters saved\n", - "Epoch 4806 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4806: avg_loss appended (1.3136)\n", - "Epoch 4806: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4806: accuracy appended (60.00%)\n", - "Epoch 4806: model set back to train mode\n", - "Epoch 4806: model parameters saved\n", - "Epoch 4807 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4807: avg_loss appended (1.3136)\n", - "Epoch 4807: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4807: accuracy appended (60.00%)\n", - "Epoch 4807: model set back to train mode\n", - "Epoch 4807: model parameters saved\n", - "Epoch 4808 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4808: avg_loss appended (1.3136)\n", - "Epoch 4808: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4808: accuracy appended (60.00%)\n", - "Epoch 4808: model set back to train mode\n", - "Epoch 4808: model parameters saved\n", - "Epoch 4809 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4809: avg_loss appended (1.3136)\n", - "Epoch 4809: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4809: accuracy appended (60.00%)\n", - "Epoch 4809: model set back to train mode\n", - "Epoch 4809: model parameters saved\n", - "Epoch 4810 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4810: avg_loss appended (1.3136)\n", - "Epoch 4810: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4810: accuracy appended (60.00%)\n", - "Epoch 4810: model set back to train mode\n", - "Epoch 4810: model parameters saved\n", - "Epoch 4811 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4811: avg_loss appended (1.3136)\n", - "Epoch 4811: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4811: accuracy appended (60.00%)\n", - "Epoch 4811: model set back to train mode\n", - "Epoch 4811: model parameters saved\n", - "Epoch 4812 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4812: avg_loss appended (1.3136)\n", - "Epoch 4812: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4812: accuracy appended (60.00%)\n", - "Epoch 4812: model set back to train mode\n", - "Epoch 4812: model parameters saved\n", - "Epoch 4813 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4813: avg_loss appended (1.3136)\n", - "Epoch 4813: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4813: accuracy appended (60.00%)\n", - "Epoch 4813: model set back to train mode\n", - "Epoch 4813: model parameters saved\n", - "Epoch 4814 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4814: avg_loss appended (1.3136)\n", - "Epoch 4814: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4814: accuracy appended (60.00%)\n", - "Epoch 4814: model set back to train mode\n", - "Epoch 4814: model parameters saved\n", - "Epoch 4815 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4815: avg_loss appended (1.3136)\n", - "Epoch 4815: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4815: accuracy appended (60.00%)\n", - "Epoch 4815: model set back to train mode\n", - "Epoch 4815: model parameters saved\n", - "Epoch 4816 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4816: avg_loss appended (1.3136)\n", - "Epoch 4816: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4816: accuracy appended (60.00%)\n", - "Epoch 4816: model set back to train mode\n", - "Epoch 4816: model parameters saved\n", - "Epoch 4817 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4817: avg_loss appended (1.3136)\n", - "Epoch 4817: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4817: accuracy appended (60.00%)\n", - "Epoch 4817: model set back to train mode\n", - "Epoch 4817: model parameters saved\n", - "Epoch 4818 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4818: avg_loss appended (1.3136)\n", - "Epoch 4818: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4818: accuracy appended (60.00%)\n", - "Epoch 4818: model set back to train mode\n", - "Epoch 4818: model parameters saved\n", - "Epoch 4819 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4819: avg_loss appended (1.3136)\n", - "Epoch 4819: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4819: accuracy appended (60.00%)\n", - "Epoch 4819: model set back to train mode\n", - "Epoch 4819: model parameters saved\n", - "Epoch 4820 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4820: avg_loss appended (1.3136)\n", - "Epoch 4820: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4820: accuracy appended (60.00%)\n", - "Epoch 4820: model set back to train mode\n", - "Epoch 4820: model parameters saved\n", - "Epoch 4821 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4821: avg_loss appended (1.3136)\n", - "Epoch 4821: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4821: accuracy appended (60.00%)\n", - "Epoch 4821: model set back to train mode\n", - "Epoch 4821: model parameters saved\n", - "Epoch 4822 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4822: avg_loss appended (1.3136)\n", - "Epoch 4822: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4822: accuracy appended (60.00%)\n", - "Epoch 4822: model set back to train mode\n", - "Epoch 4822: model parameters saved\n", - "Epoch 4823 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4823: avg_loss appended (1.3136)\n", - "Epoch 4823: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4823: accuracy appended (60.00%)\n", - "Epoch 4823: model set back to train mode\n", - "Epoch 4823: model parameters saved\n", - "Epoch 4824 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4824: avg_loss appended (1.3136)\n", - "Epoch 4824: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4824: accuracy appended (60.00%)\n", - "Epoch 4824: model set back to train mode\n", - "Epoch 4824: model parameters saved\n", - "Epoch 4825 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3136)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3136)\n", - "Epoch 4825: avg_loss appended (1.3136)\n", - "Epoch 4825: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4825: accuracy appended (60.00%)\n", - "Epoch 4825: model set back to train mode\n", - "Epoch 4825: model parameters saved\n", - "Epoch 4826 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4826: avg_loss appended (1.3135)\n", - "Epoch 4826: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4826: accuracy appended (60.00%)\n", - "Epoch 4826: model set back to train mode\n", - "Epoch 4826: model parameters saved\n", - "Epoch 4827 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4827: avg_loss appended (1.3135)\n", - "Epoch 4827: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4827: accuracy appended (60.00%)\n", - "Epoch 4827: model set back to train mode\n", - "Epoch 4827: model parameters saved\n", - "Epoch 4828 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4828: avg_loss appended (1.3135)\n", - "Epoch 4828: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4828: accuracy appended (60.00%)\n", - "Epoch 4828: model set back to train mode\n", - "Epoch 4828: model parameters saved\n", - "Epoch 4829 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4829: avg_loss appended (1.3135)\n", - "Epoch 4829: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4829: accuracy appended (60.00%)\n", - "Epoch 4829: model set back to train mode\n", - "Epoch 4829: model parameters saved\n", - "Epoch 4830 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4830: avg_loss appended (1.3135)\n", - "Epoch 4830: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4830: accuracy appended (60.00%)\n", - "Epoch 4830: model set back to train mode\n", - "Epoch 4830: model parameters saved\n", - "Epoch 4831 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4831: avg_loss appended (1.3135)\n", - "Epoch 4831: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4831: accuracy appended (60.00%)\n", - "Epoch 4831: model set back to train mode\n", - "Epoch 4831: model parameters saved\n", - "Epoch 4832 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4832: avg_loss appended (1.3135)\n", - "Epoch 4832: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4832: accuracy appended (60.00%)\n", - "Epoch 4832: model set back to train mode\n", - "Epoch 4832: model parameters saved\n", - "Epoch 4833 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4833: avg_loss appended (1.3135)\n", - "Epoch 4833: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4833: accuracy appended (60.00%)\n", - "Epoch 4833: model set back to train mode\n", - "Epoch 4833: model parameters saved\n", - "Epoch 4834 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4834: avg_loss appended (1.3135)\n", - "Epoch 4834: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4834: accuracy appended (60.00%)\n", - "Epoch 4834: model set back to train mode\n", - "Epoch 4834: model parameters saved\n", - "Epoch 4835 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4835: avg_loss appended (1.3135)\n", - "Epoch 4835: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4835: accuracy appended (60.00%)\n", - "Epoch 4835: model set back to train mode\n", - "Epoch 4835: model parameters saved\n", - "Epoch 4836 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4836: avg_loss appended (1.3135)\n", - "Epoch 4836: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4836: accuracy appended (60.00%)\n", - "Epoch 4836: model set back to train mode\n", - "Epoch 4836: model parameters saved\n", - "Epoch 4837 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4837: avg_loss appended (1.3135)\n", - "Epoch 4837: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4837: accuracy appended (60.00%)\n", - "Epoch 4837: model set back to train mode\n", - "Epoch 4837: model parameters saved\n", - "Epoch 4838 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4838: avg_loss appended (1.3135)\n", - "Epoch 4838: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4838: accuracy appended (60.00%)\n", - "Epoch 4838: model set back to train mode\n", - "Epoch 4838: model parameters saved\n", - "Epoch 4839 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4839: avg_loss appended (1.3135)\n", - "Epoch 4839: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4839: accuracy appended (60.00%)\n", - "Epoch 4839: model set back to train mode\n", - "Epoch 4839: model parameters saved\n", - "Epoch 4840 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4840: avg_loss appended (1.3135)\n", - "Epoch 4840: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4840: accuracy appended (60.00%)\n", - "Epoch 4840: model set back to train mode\n", - "Epoch 4840: model parameters saved\n", - "Epoch 4841 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4841: avg_loss appended (1.3135)\n", - "Epoch 4841: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4841: accuracy appended (60.00%)\n", - "Epoch 4841: model set back to train mode\n", - "Epoch 4841: model parameters saved\n", - "Epoch 4842 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4842: avg_loss appended (1.3135)\n", - "Epoch 4842: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4842: accuracy appended (60.00%)\n", - "Epoch 4842: model set back to train mode\n", - "Epoch 4842: model parameters saved\n", - "Epoch 4843 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4843: avg_loss appended (1.3135)\n", - "Epoch 4843: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4843: accuracy appended (60.00%)\n", - "Epoch 4843: model set back to train mode\n", - "Epoch 4843: model parameters saved\n", - "Epoch 4844 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4844: avg_loss appended (1.3135)\n", - "Epoch 4844: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4844: accuracy appended (60.00%)\n", - "Epoch 4844: model set back to train mode\n", - "Epoch 4844: model parameters saved\n", - "Epoch 4845 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4845: avg_loss appended (1.3135)\n", - "Epoch 4845: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4845: accuracy appended (60.00%)\n", - "Epoch 4845: model set back to train mode\n", - "Epoch 4845: model parameters saved\n", - "Epoch 4846 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4846: avg_loss appended (1.3135)\n", - "Epoch 4846: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4846: accuracy appended (60.00%)\n", - "Epoch 4846: model set back to train mode\n", - "Epoch 4846: model parameters saved\n", - "Epoch 4847 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4847: avg_loss appended (1.3135)\n", - "Epoch 4847: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4847: accuracy appended (60.00%)\n", - "Epoch 4847: model set back to train mode\n", - "Epoch 4847: model parameters saved\n", - "Epoch 4848 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4848: avg_loss appended (1.3135)\n", - "Epoch 4848: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4848: accuracy appended (60.00%)\n", - "Epoch 4848: model set back to train mode\n", - "Epoch 4848: model parameters saved\n", - "Epoch 4849 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4849: avg_loss appended (1.3135)\n", - "Epoch 4849: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4849: accuracy appended (60.00%)\n", - "Epoch 4849: model set back to train mode\n", - "Epoch 4849: model parameters saved\n", - "Epoch 4850 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4850: avg_loss appended (1.3135)\n", - "Epoch 4850: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4850: accuracy appended (60.00%)\n", - "Epoch 4850: model set back to train mode\n", - "Epoch 4850: model parameters saved\n", - "Epoch 4851 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4851: avg_loss appended (1.3135)\n", - "Epoch 4851: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4851: accuracy appended (60.00%)\n", - "Epoch 4851: model set back to train mode\n", - "Epoch 4851: model parameters saved\n", - "Epoch 4852 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4852: avg_loss appended (1.3135)\n", - "Epoch 4852: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4852: accuracy appended (60.00%)\n", - "Epoch 4852: model set back to train mode\n", - "Epoch 4852: model parameters saved\n", - "Epoch 4853 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4853: avg_loss appended (1.3135)\n", - "Epoch 4853: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4853: accuracy appended (60.00%)\n", - "Epoch 4853: model set back to train mode\n", - "Epoch 4853: model parameters saved\n", - "Epoch 4854 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4854: avg_loss appended (1.3135)\n", - "Epoch 4854: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4854: accuracy appended (60.00%)\n", - "Epoch 4854: model set back to train mode\n", - "Epoch 4854: model parameters saved\n", - "Epoch 4855 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4855: avg_loss appended (1.3135)\n", - "Epoch 4855: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4855: accuracy appended (60.00%)\n", - "Epoch 4855: model set back to train mode\n", - "Epoch 4855: model parameters saved\n", - "Epoch 4856 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4856: avg_loss appended (1.3135)\n", - "Epoch 4856: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4856: accuracy appended (60.00%)\n", - "Epoch 4856: model set back to train mode\n", - "Epoch 4856: model parameters saved\n", - "Epoch 4857 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4857: avg_loss appended (1.3135)\n", - "Epoch 4857: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4857: accuracy appended (60.00%)\n", - "Epoch 4857: model set back to train mode\n", - "Epoch 4857: model parameters saved\n", - "Epoch 4858 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4858: avg_loss appended (1.3135)\n", - "Epoch 4858: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4858: accuracy appended (60.00%)\n", - "Epoch 4858: model set back to train mode\n", - "Epoch 4858: model parameters saved\n", - "Epoch 4859 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4859: avg_loss appended (1.3135)\n", - "Epoch 4859: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4859: accuracy appended (60.00%)\n", - "Epoch 4859: model set back to train mode\n", - "Epoch 4859: model parameters saved\n", - "Epoch 4860 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4860: avg_loss appended (1.3135)\n", - "Epoch 4860: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4860: accuracy appended (60.00%)\n", - "Epoch 4860: model set back to train mode\n", - "Epoch 4860: model parameters saved\n", - "Epoch 4861 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4861: avg_loss appended (1.3135)\n", - "Epoch 4861: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4861: accuracy appended (60.00%)\n", - "Epoch 4861: model set back to train mode\n", - "Epoch 4861: model parameters saved\n", - "Epoch 4862 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4862: avg_loss appended (1.3135)\n", - "Epoch 4862: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4862: accuracy appended (60.00%)\n", - "Epoch 4862: model set back to train mode\n", - "Epoch 4862: model parameters saved\n", - "Epoch 4863 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4863: avg_loss appended (1.3135)\n", - "Epoch 4863: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4863: accuracy appended (60.00%)\n", - "Epoch 4863: model set back to train mode\n", - "Epoch 4863: model parameters saved\n", - "Epoch 4864 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4864: avg_loss appended (1.3135)\n", - "Epoch 4864: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4864: accuracy appended (60.00%)\n", - "Epoch 4864: model set back to train mode\n", - "Epoch 4864: model parameters saved\n", - "Epoch 4865 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4865: avg_loss appended (1.3135)\n", - "Epoch 4865: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4865: accuracy appended (60.00%)\n", - "Epoch 4865: model set back to train mode\n", - "Epoch 4865: model parameters saved\n", - "Epoch 4866 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4866: avg_loss appended (1.3135)\n", - "Epoch 4866: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4866: accuracy appended (60.00%)\n", - "Epoch 4866: model set back to train mode\n", - "Epoch 4866: model parameters saved\n", - "Epoch 4867 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4867: avg_loss appended (1.3135)\n", - "Epoch 4867: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4867: accuracy appended (60.00%)\n", - "Epoch 4867: model set back to train mode\n", - "Epoch 4867: model parameters saved\n", - "Epoch 4868 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4868: avg_loss appended (1.3135)\n", - "Epoch 4868: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4868: accuracy appended (60.00%)\n", - "Epoch 4868: model set back to train mode\n", - "Epoch 4868: model parameters saved\n", - "Epoch 4869 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4869: avg_loss appended (1.3135)\n", - "Epoch 4869: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4869: accuracy appended (60.00%)\n", - "Epoch 4869: model set back to train mode\n", - "Epoch 4869: model parameters saved\n", - "Epoch 4870 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4870: avg_loss appended (1.3135)\n", - "Epoch 4870: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4870: accuracy appended (60.00%)\n", - "Epoch 4870: model set back to train mode\n", - "Epoch 4870: model parameters saved\n", - "Epoch 4871 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4871: avg_loss appended (1.3135)\n", - "Epoch 4871: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4871: accuracy appended (60.00%)\n", - "Epoch 4871: model set back to train mode\n", - "Epoch 4871: model parameters saved\n", - "Epoch 4872 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4872: avg_loss appended (1.3135)\n", - "Epoch 4872: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4872: accuracy appended (60.00%)\n", - "Epoch 4872: model set back to train mode\n", - "Epoch 4872: model parameters saved\n", - "Epoch 4873 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4873: avg_loss appended (1.3135)\n", - "Epoch 4873: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4873: accuracy appended (60.00%)\n", - "Epoch 4873: model set back to train mode\n", - "Epoch 4873: model parameters saved\n", - "Epoch 4874 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4874: avg_loss appended (1.3135)\n", - "Epoch 4874: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4874: accuracy appended (60.00%)\n", - "Epoch 4874: model set back to train mode\n", - "Epoch 4874: model parameters saved\n", - "Epoch 4875 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4875: avg_loss appended (1.3135)\n", - "Epoch 4875: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4875: accuracy appended (60.00%)\n", - "Epoch 4875: model set back to train mode\n", - "Epoch 4875: model parameters saved\n", - "Epoch 4876 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4876: avg_loss appended (1.3135)\n", - "Epoch 4876: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4876: accuracy appended (60.00%)\n", - "Epoch 4876: model set back to train mode\n", - "Epoch 4876: model parameters saved\n", - "Epoch 4877 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4877: avg_loss appended (1.3135)\n", - "Epoch 4877: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4877: accuracy appended (60.00%)\n", - "Epoch 4877: model set back to train mode\n", - "Epoch 4877: model parameters saved\n", - "Epoch 4878 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4878: avg_loss appended (1.3135)\n", - "Epoch 4878: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4878: accuracy appended (60.00%)\n", - "Epoch 4878: model set back to train mode\n", - "Epoch 4878: model parameters saved\n", - "Epoch 4879 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4879: avg_loss appended (1.3135)\n", - "Epoch 4879: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4879: accuracy appended (60.00%)\n", - "Epoch 4879: model set back to train mode\n", - "Epoch 4879: model parameters saved\n", - "Epoch 4880 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4880: avg_loss appended (1.3135)\n", - "Epoch 4880: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4880: accuracy appended (60.00%)\n", - "Epoch 4880: model set back to train mode\n", - "Epoch 4880: model parameters saved\n", - "Epoch 4881 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4881: avg_loss appended (1.3135)\n", - "Epoch 4881: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4881: accuracy appended (60.00%)\n", - "Epoch 4881: model set back to train mode\n", - "Epoch 4881: model parameters saved\n", - "Epoch 4882 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4882: avg_loss appended (1.3135)\n", - "Epoch 4882: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4882: accuracy appended (60.00%)\n", - "Epoch 4882: model set back to train mode\n", - "Epoch 4882: model parameters saved\n", - "Epoch 4883 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4883: avg_loss appended (1.3135)\n", - "Epoch 4883: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4883: accuracy appended (60.00%)\n", - "Epoch 4883: model set back to train mode\n", - "Epoch 4883: model parameters saved\n", - "Epoch 4884 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4884: avg_loss appended (1.3135)\n", - "Epoch 4884: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4884: accuracy appended (60.00%)\n", - "Epoch 4884: model set back to train mode\n", - "Epoch 4884: model parameters saved\n", - "Epoch 4885 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4885: avg_loss appended (1.3135)\n", - "Epoch 4885: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4885: accuracy appended (60.00%)\n", - "Epoch 4885: model set back to train mode\n", - "Epoch 4885: model parameters saved\n", - "Epoch 4886 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4886: avg_loss appended (1.3135)\n", - "Epoch 4886: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4886: accuracy appended (60.00%)\n", - "Epoch 4886: model set back to train mode\n", - "Epoch 4886: model parameters saved\n", - "Epoch 4887 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3135)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3135)\n", - "Epoch 4887: avg_loss appended (1.3135)\n", - "Epoch 4887: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4887: accuracy appended (60.00%)\n", - "Epoch 4887: model set back to train mode\n", - "Epoch 4887: model parameters saved\n", - "Epoch 4888 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4888: avg_loss appended (1.3134)\n", - "Epoch 4888: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4888: accuracy appended (60.00%)\n", - "Epoch 4888: model set back to train mode\n", - "Epoch 4888: model parameters saved\n", - "Epoch 4889 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4889: avg_loss appended (1.3134)\n", - "Epoch 4889: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4889: accuracy appended (60.00%)\n", - "Epoch 4889: model set back to train mode\n", - "Epoch 4889: model parameters saved\n", - "Epoch 4890 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4890: avg_loss appended (1.3134)\n", - "Epoch 4890: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4890: accuracy appended (60.00%)\n", - "Epoch 4890: model set back to train mode\n", - "Epoch 4890: model parameters saved\n", - "Epoch 4891 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4891: avg_loss appended (1.3134)\n", - "Epoch 4891: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4891: accuracy appended (60.00%)\n", - "Epoch 4891: model set back to train mode\n", - "Epoch 4891: model parameters saved\n", - "Epoch 4892 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4892: avg_loss appended (1.3134)\n", - "Epoch 4892: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4892: accuracy appended (60.00%)\n", - "Epoch 4892: model set back to train mode\n", - "Epoch 4892: model parameters saved\n", - "Epoch 4893 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4893: avg_loss appended (1.3134)\n", - "Epoch 4893: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4893: accuracy appended (60.00%)\n", - "Epoch 4893: model set back to train mode\n", - "Epoch 4893: model parameters saved\n", - "Epoch 4894 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4894: avg_loss appended (1.3134)\n", - "Epoch 4894: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4894: accuracy appended (60.00%)\n", - "Epoch 4894: model set back to train mode\n", - "Epoch 4894: model parameters saved\n", - "Epoch 4895 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4895: avg_loss appended (1.3134)\n", - "Epoch 4895: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4895: accuracy appended (60.00%)\n", - "Epoch 4895: model set back to train mode\n", - "Epoch 4895: model parameters saved\n", - "Epoch 4896 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4896: avg_loss appended (1.3134)\n", - "Epoch 4896: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4896: accuracy appended (60.00%)\n", - "Epoch 4896: model set back to train mode\n", - "Epoch 4896: model parameters saved\n", - "Epoch 4897 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4897: avg_loss appended (1.3134)\n", - "Epoch 4897: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4897: accuracy appended (60.00%)\n", - "Epoch 4897: model set back to train mode\n", - "Epoch 4897: model parameters saved\n", - "Epoch 4898 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4898: avg_loss appended (1.3134)\n", - "Epoch 4898: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4898: accuracy appended (60.00%)\n", - "Epoch 4898: model set back to train mode\n", - "Epoch 4898: model parameters saved\n", - "Epoch 4899 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4899: avg_loss appended (1.3134)\n", - "Epoch 4899: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4899: accuracy appended (60.00%)\n", - "Epoch 4899: model set back to train mode\n", - "Epoch 4899: model parameters saved\n", - "Epoch 4900 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4900: avg_loss appended (1.3134)\n", - "Epoch 4900: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4900: accuracy appended (60.00%)\n", - "Epoch 4900: model set back to train mode\n", - "Epoch 4900: model parameters saved\n", - "Epoch 4900/10000, Loss: 1.3134, Accuracy: 60.00%\n", - "Epoch 4901 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4901: avg_loss appended (1.3134)\n", - "Epoch 4901: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4901: accuracy appended (60.00%)\n", - "Epoch 4901: model set back to train mode\n", - "Epoch 4901: model parameters saved\n", - "Epoch 4902 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4902: avg_loss appended (1.3134)\n", - "Epoch 4902: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4902: accuracy appended (60.00%)\n", - "Epoch 4902: model set back to train mode\n", - "Epoch 4902: model parameters saved\n", - "Epoch 4903 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4903: avg_loss appended (1.3134)\n", - "Epoch 4903: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4903: accuracy appended (60.00%)\n", - "Epoch 4903: model set back to train mode\n", - "Epoch 4903: model parameters saved\n", - "Epoch 4904 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4904: avg_loss appended (1.3134)\n", - "Epoch 4904: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4904: accuracy appended (60.00%)\n", - "Epoch 4904: model set back to train mode\n", - "Epoch 4904: model parameters saved\n", - "Epoch 4905 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4905: avg_loss appended (1.3134)\n", - "Epoch 4905: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4905: accuracy appended (60.00%)\n", - "Epoch 4905: model set back to train mode\n", - "Epoch 4905: model parameters saved\n", - "Epoch 4906 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4906: avg_loss appended (1.3134)\n", - "Epoch 4906: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4906: accuracy appended (60.00%)\n", - "Epoch 4906: model set back to train mode\n", - "Epoch 4906: model parameters saved\n", - "Epoch 4907 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4907: avg_loss appended (1.3134)\n", - "Epoch 4907: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4907: accuracy appended (60.00%)\n", - "Epoch 4907: model set back to train mode\n", - "Epoch 4907: model parameters saved\n", - "Epoch 4908 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4908: avg_loss appended (1.3134)\n", - "Epoch 4908: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4908: accuracy appended (60.00%)\n", - "Epoch 4908: model set back to train mode\n", - "Epoch 4908: model parameters saved\n", - "Epoch 4909 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4909: avg_loss appended (1.3134)\n", - "Epoch 4909: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4909: accuracy appended (60.00%)\n", - "Epoch 4909: model set back to train mode\n", - "Epoch 4909: model parameters saved\n", - "Epoch 4910 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4910: avg_loss appended (1.3134)\n", - "Epoch 4910: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4910: accuracy appended (60.00%)\n", - "Epoch 4910: model set back to train mode\n", - "Epoch 4910: model parameters saved\n", - "Epoch 4911 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4911: avg_loss appended (1.3134)\n", - "Epoch 4911: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4911: accuracy appended (60.00%)\n", - "Epoch 4911: model set back to train mode\n", - "Epoch 4911: model parameters saved\n", - "Epoch 4912 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4912: avg_loss appended (1.3134)\n", - "Epoch 4912: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4912: accuracy appended (60.00%)\n", - "Epoch 4912: model set back to train mode\n", - "Epoch 4912: model parameters saved\n", - "Epoch 4913 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4913: avg_loss appended (1.3134)\n", - "Epoch 4913: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4913: accuracy appended (60.00%)\n", - "Epoch 4913: model set back to train mode\n", - "Epoch 4913: model parameters saved\n", - "Epoch 4914 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4914: avg_loss appended (1.3134)\n", - "Epoch 4914: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4914: accuracy appended (60.00%)\n", - "Epoch 4914: model set back to train mode\n", - "Epoch 4914: model parameters saved\n", - "Epoch 4915 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4915: avg_loss appended (1.3134)\n", - "Epoch 4915: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4915: accuracy appended (60.00%)\n", - "Epoch 4915: model set back to train mode\n", - "Epoch 4915: model parameters saved\n", - "Epoch 4916 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4916: avg_loss appended (1.3134)\n", - "Epoch 4916: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4916: accuracy appended (60.00%)\n", - "Epoch 4916: model set back to train mode\n", - "Epoch 4916: model parameters saved\n", - "Epoch 4917 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4917: avg_loss appended (1.3134)\n", - "Epoch 4917: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4917: accuracy appended (60.00%)\n", - "Epoch 4917: model set back to train mode\n", - "Epoch 4917: model parameters saved\n", - "Epoch 4918 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4918: avg_loss appended (1.3134)\n", - "Epoch 4918: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4918: accuracy appended (60.00%)\n", - "Epoch 4918: model set back to train mode\n", - "Epoch 4918: model parameters saved\n", - "Epoch 4919 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4919: avg_loss appended (1.3134)\n", - "Epoch 4919: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4919: accuracy appended (60.00%)\n", - "Epoch 4919: model set back to train mode\n", - "Epoch 4919: model parameters saved\n", - "Epoch 4920 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4920: avg_loss appended (1.3134)\n", - "Epoch 4920: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4920: accuracy appended (60.00%)\n", - "Epoch 4920: model set back to train mode\n", - "Epoch 4920: model parameters saved\n", - "Epoch 4921 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4921: avg_loss appended (1.3134)\n", - "Epoch 4921: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4921: accuracy appended (60.00%)\n", - "Epoch 4921: model set back to train mode\n", - "Epoch 4921: model parameters saved\n", - "Epoch 4922 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4922: avg_loss appended (1.3134)\n", - "Epoch 4922: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4922: accuracy appended (60.00%)\n", - "Epoch 4922: model set back to train mode\n", - "Epoch 4922: model parameters saved\n", - "Epoch 4923 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4923: avg_loss appended (1.3134)\n", - "Epoch 4923: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4923: accuracy appended (60.00%)\n", - "Epoch 4923: model set back to train mode\n", - "Epoch 4923: model parameters saved\n", - "Epoch 4924 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4924: avg_loss appended (1.3134)\n", - "Epoch 4924: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4924: accuracy appended (60.00%)\n", - "Epoch 4924: model set back to train mode\n", - "Epoch 4924: model parameters saved\n", - "Epoch 4925 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4925: avg_loss appended (1.3134)\n", - "Epoch 4925: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4925: accuracy appended (60.00%)\n", - "Epoch 4925: model set back to train mode\n", - "Epoch 4925: model parameters saved\n", - "Epoch 4926 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4926: avg_loss appended (1.3134)\n", - "Epoch 4926: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4926: accuracy appended (60.00%)\n", - "Epoch 4926: model set back to train mode\n", - "Epoch 4926: model parameters saved\n", - "Epoch 4927 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4927: avg_loss appended (1.3134)\n", - "Epoch 4927: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4927: accuracy appended (60.00%)\n", - "Epoch 4927: model set back to train mode\n", - "Epoch 4927: model parameters saved\n", - "Epoch 4928 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4928: avg_loss appended (1.3134)\n", - "Epoch 4928: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4928: accuracy appended (60.00%)\n", - "Epoch 4928: model set back to train mode\n", - "Epoch 4928: model parameters saved\n", - "Epoch 4929 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4929: avg_loss appended (1.3134)\n", - "Epoch 4929: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4929: accuracy appended (60.00%)\n", - "Epoch 4929: model set back to train mode\n", - "Epoch 4929: model parameters saved\n", - "Epoch 4930 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4930: avg_loss appended (1.3134)\n", - "Epoch 4930: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4930: accuracy appended (60.00%)\n", - "Epoch 4930: model set back to train mode\n", - "Epoch 4930: model parameters saved\n", - "Epoch 4931 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4931: avg_loss appended (1.3134)\n", - "Epoch 4931: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4931: accuracy appended (60.00%)\n", - "Epoch 4931: model set back to train mode\n", - "Epoch 4931: model parameters saved\n", - "Epoch 4932 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4932: avg_loss appended (1.3134)\n", - "Epoch 4932: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4932: accuracy appended (60.00%)\n", - "Epoch 4932: model set back to train mode\n", - "Epoch 4932: model parameters saved\n", - "Epoch 4933 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4933: avg_loss appended (1.3134)\n", - "Epoch 4933: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4933: accuracy appended (60.00%)\n", - "Epoch 4933: model set back to train mode\n", - "Epoch 4933: model parameters saved\n", - "Epoch 4934 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4934: avg_loss appended (1.3134)\n", - "Epoch 4934: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4934: accuracy appended (60.00%)\n", - "Epoch 4934: model set back to train mode\n", - "Epoch 4934: model parameters saved\n", - "Epoch 4935 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4935: avg_loss appended (1.3134)\n", - "Epoch 4935: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4935: accuracy appended (60.00%)\n", - "Epoch 4935: model set back to train mode\n", - "Epoch 4935: model parameters saved\n", - "Epoch 4936 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4936: avg_loss appended (1.3134)\n", - "Epoch 4936: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4936: accuracy appended (60.00%)\n", - "Epoch 4936: model set back to train mode\n", - "Epoch 4936: model parameters saved\n", - "Epoch 4937 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4937: avg_loss appended (1.3134)\n", - "Epoch 4937: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4937: accuracy appended (60.00%)\n", - "Epoch 4937: model set back to train mode\n", - "Epoch 4937: model parameters saved\n", - "Epoch 4938 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4938: avg_loss appended (1.3134)\n", - "Epoch 4938: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4938: accuracy appended (60.00%)\n", - "Epoch 4938: model set back to train mode\n", - "Epoch 4938: model parameters saved\n", - "Epoch 4939 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4939: avg_loss appended (1.3134)\n", - "Epoch 4939: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4939: accuracy appended (60.00%)\n", - "Epoch 4939: model set back to train mode\n", - "Epoch 4939: model parameters saved\n", - "Epoch 4940 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4940: avg_loss appended (1.3134)\n", - "Epoch 4940: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4940: accuracy appended (60.00%)\n", - "Epoch 4940: model set back to train mode\n", - "Epoch 4940: model parameters saved\n", - "Epoch 4941 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4941: avg_loss appended (1.3134)\n", - "Epoch 4941: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4941: accuracy appended (60.00%)\n", - "Epoch 4941: model set back to train mode\n", - "Epoch 4941: model parameters saved\n", - "Epoch 4942 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4942: avg_loss appended (1.3134)\n", - "Epoch 4942: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4942: accuracy appended (60.00%)\n", - "Epoch 4942: model set back to train mode\n", - "Epoch 4942: model parameters saved\n", - "Epoch 4943 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4943: avg_loss appended (1.3134)\n", - "Epoch 4943: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4943: accuracy appended (60.00%)\n", - "Epoch 4943: model set back to train mode\n", - "Epoch 4943: model parameters saved\n", - "Epoch 4944 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4944: avg_loss appended (1.3134)\n", - "Epoch 4944: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4944: accuracy appended (60.00%)\n", - "Epoch 4944: model set back to train mode\n", - "Epoch 4944: model parameters saved\n", - "Epoch 4945 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4945: avg_loss appended (1.3134)\n", - "Epoch 4945: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4945: accuracy appended (60.00%)\n", - "Epoch 4945: model set back to train mode\n", - "Epoch 4945: model parameters saved\n", - "Epoch 4946 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4946: avg_loss appended (1.3134)\n", - "Epoch 4946: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4946: accuracy appended (60.00%)\n", - "Epoch 4946: model set back to train mode\n", - "Epoch 4946: model parameters saved\n", - "Epoch 4947 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4947: avg_loss appended (1.3134)\n", - "Epoch 4947: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4947: accuracy appended (60.00%)\n", - "Epoch 4947: model set back to train mode\n", - "Epoch 4947: model parameters saved\n", - "Epoch 4948 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4948: avg_loss appended (1.3134)\n", - "Epoch 4948: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4948: accuracy appended (60.00%)\n", - "Epoch 4948: model set back to train mode\n", - "Epoch 4948: model parameters saved\n", - "Epoch 4949 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4949: avg_loss appended (1.3134)\n", - "Epoch 4949: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4949: accuracy appended (60.00%)\n", - "Epoch 4949: model set back to train mode\n", - "Epoch 4949: model parameters saved\n", - "Epoch 4950 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4950: avg_loss appended (1.3134)\n", - "Epoch 4950: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4950: accuracy appended (60.00%)\n", - "Epoch 4950: model set back to train mode\n", - "Epoch 4950: model parameters saved\n", - "Epoch 4951 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4951: avg_loss appended (1.3134)\n", - "Epoch 4951: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4951: accuracy appended (60.00%)\n", - "Epoch 4951: model set back to train mode\n", - "Epoch 4951: model parameters saved\n", - "Epoch 4952 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4952: avg_loss appended (1.3134)\n", - "Epoch 4952: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4952: accuracy appended (60.00%)\n", - "Epoch 4952: model set back to train mode\n", - "Epoch 4952: model parameters saved\n", - "Epoch 4953 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3134)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3134)\n", - "Epoch 4953: avg_loss appended (1.3134)\n", - "Epoch 4953: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4953: accuracy appended (60.00%)\n", - "Epoch 4953: model set back to train mode\n", - "Epoch 4953: model parameters saved\n", - "Epoch 4954 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 4954: avg_loss appended (1.3133)\n", - "Epoch 4954: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4954: accuracy appended (60.00%)\n", - "Epoch 4954: model set back to train mode\n", - "Epoch 4954: model parameters saved\n", - "Epoch 4955 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 4955: avg_loss appended (1.3133)\n", - "Epoch 4955: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4955: accuracy appended (60.00%)\n", - "Epoch 4955: model set back to train mode\n", - "Epoch 4955: model parameters saved\n", - "Epoch 4956 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 4956: avg_loss appended (1.3133)\n", - "Epoch 4956: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4956: accuracy appended (60.00%)\n", - "Epoch 4956: model set back to train mode\n", - "Epoch 4956: model parameters saved\n", - "Epoch 4957 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 4957: avg_loss appended (1.3133)\n", - "Epoch 4957: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4957: accuracy appended (60.00%)\n", - "Epoch 4957: model set back to train mode\n", - "Epoch 4957: model parameters saved\n", - "Epoch 4958 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 4958: avg_loss appended (1.3133)\n", - "Epoch 4958: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4958: accuracy appended (60.00%)\n", - "Epoch 4958: model set back to train mode\n", - "Epoch 4958: model parameters saved\n", - "Epoch 4959 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 4959: avg_loss appended (1.3133)\n", - "Epoch 4959: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4959: accuracy appended (60.00%)\n", - "Epoch 4959: model set back to train mode\n", - "Epoch 4959: model parameters saved\n", - "Epoch 4960 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 4960: avg_loss appended (1.3133)\n", - "Epoch 4960: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4960: accuracy appended (60.00%)\n", - "Epoch 4960: model set back to train mode\n", - "Epoch 4960: model parameters saved\n", - "Epoch 4961 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 4961: avg_loss appended (1.3133)\n", - "Epoch 4961: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4961: accuracy appended (60.00%)\n", - "Epoch 4961: model set back to train mode\n", - "Epoch 4961: model parameters saved\n", - "Epoch 4962 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 4962: avg_loss appended (1.3133)\n", - "Epoch 4962: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4962: accuracy appended (60.00%)\n", - "Epoch 4962: model set back to train mode\n", - "Epoch 4962: model parameters saved\n", - "Epoch 4963 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 4963: avg_loss appended (1.3133)\n", - "Epoch 4963: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4963: accuracy appended (60.00%)\n", - "Epoch 4963: model set back to train mode\n", - "Epoch 4963: model parameters saved\n", - "Epoch 4964 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 4964: avg_loss appended (1.3133)\n", - "Epoch 4964: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4964: accuracy appended (60.00%)\n", - "Epoch 4964: model set back to train mode\n", - "Epoch 4964: model parameters saved\n", - "Epoch 4965 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 4965: avg_loss appended (1.3133)\n", - "Epoch 4965: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4965: accuracy appended (60.00%)\n", - "Epoch 4965: model set back to train mode\n", - "Epoch 4965: model parameters saved\n", - "Epoch 4966 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 4966: avg_loss appended (1.3133)\n", - "Epoch 4966: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4966: accuracy appended (60.00%)\n", - "Epoch 4966: model set back to train mode\n", - "Epoch 4966: model parameters saved\n", - "Epoch 4967 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 4967: avg_loss appended (1.3133)\n", - "Epoch 4967: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4967: accuracy appended (60.00%)\n", - "Epoch 4967: model set back to train mode\n", - "Epoch 4967: model parameters saved\n", - "Epoch 4968 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 4968: avg_loss appended (1.3133)\n", - "Epoch 4968: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4968: accuracy appended (60.00%)\n", - "Epoch 4968: model set back to train mode\n", - "Epoch 4968: model parameters saved\n", - "Epoch 4969 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 4969: avg_loss appended (1.3133)\n", - "Epoch 4969: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4969: accuracy appended (60.00%)\n", - "Epoch 4969: model set back to train mode\n", - "Epoch 4969: model parameters saved\n", - "Epoch 4970 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 4970: avg_loss appended (1.3133)\n", - "Epoch 4970: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4970: accuracy appended (60.00%)\n", - "Epoch 4970: model set back to train mode\n", - "Epoch 4970: model parameters saved\n", - "Epoch 4971 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 4971: avg_loss appended (1.3133)\n", - "Epoch 4971: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4971: accuracy appended (60.00%)\n", - "Epoch 4971: model set back to train mode\n", - "Epoch 4971: model parameters saved\n", - "Epoch 4972 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 4972: avg_loss appended (1.3133)\n", - "Epoch 4972: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4972: accuracy appended (60.00%)\n", - "Epoch 4972: model set back to train mode\n", - "Epoch 4972: model parameters saved\n", - "Epoch 4973 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 4973: avg_loss appended (1.3133)\n", - "Epoch 4973: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4973: accuracy appended (60.00%)\n", - "Epoch 4973: model set back to train mode\n", - "Epoch 4973: model parameters saved\n", - "Epoch 4974 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 4974: avg_loss appended (1.3133)\n", - "Epoch 4974: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4974: accuracy appended (60.00%)\n", - "Epoch 4974: model set back to train mode\n", - "Epoch 4974: model parameters saved\n", - "Epoch 4975 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 4975: avg_loss appended (1.3133)\n", - "Epoch 4975: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4975: accuracy appended (60.00%)\n", - "Epoch 4975: model set back to train mode\n", - "Epoch 4975: model parameters saved\n", - "Epoch 4976 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 4976: avg_loss appended (1.3133)\n", - "Epoch 4976: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4976: accuracy appended (60.00%)\n", - "Epoch 4976: model set back to train mode\n", - "Epoch 4976: model parameters saved\n", - "Epoch 4977 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 4977: avg_loss appended (1.3133)\n", - "Epoch 4977: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4977: accuracy appended (60.00%)\n", - "Epoch 4977: model set back to train mode\n", - "Epoch 4977: model parameters saved\n", - "Epoch 4978 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 4978: avg_loss appended (1.3133)\n", - "Epoch 4978: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4978: accuracy appended (60.00%)\n", - "Epoch 4978: model set back to train mode\n", - "Epoch 4978: model parameters saved\n", - "Epoch 4979 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 4979: avg_loss appended (1.3133)\n", - "Epoch 4979: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4979: accuracy appended (60.00%)\n", - "Epoch 4979: model set back to train mode\n", - "Epoch 4979: model parameters saved\n", - "Epoch 4980 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 4980: avg_loss appended (1.3133)\n", - "Epoch 4980: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4980: accuracy appended (60.00%)\n", - "Epoch 4980: model set back to train mode\n", - "Epoch 4980: model parameters saved\n", - "Epoch 4981 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 4981: avg_loss appended (1.3133)\n", - "Epoch 4981: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4981: accuracy appended (60.00%)\n", - "Epoch 4981: model set back to train mode\n", - "Epoch 4981: model parameters saved\n", - "Epoch 4982 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 4982: avg_loss appended (1.3133)\n", - "Epoch 4982: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4982: accuracy appended (60.00%)\n", - "Epoch 4982: model set back to train mode\n", - "Epoch 4982: model parameters saved\n", - "Epoch 4983 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 4983: avg_loss appended (1.3133)\n", - "Epoch 4983: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4983: accuracy appended (60.00%)\n", - "Epoch 4983: model set back to train mode\n", - "Epoch 4983: model parameters saved\n", - "Epoch 4984 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 4984: avg_loss appended (1.3133)\n", - "Epoch 4984: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4984: accuracy appended (60.00%)\n", - "Epoch 4984: model set back to train mode\n", - "Epoch 4984: model parameters saved\n", - "Epoch 4985 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 4985: avg_loss appended (1.3133)\n", - "Epoch 4985: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4985: accuracy appended (60.00%)\n", - "Epoch 4985: model set back to train mode\n", - "Epoch 4985: model parameters saved\n", - "Epoch 4986 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 4986: avg_loss appended (1.3133)\n", - "Epoch 4986: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4986: accuracy appended (60.00%)\n", - "Epoch 4986: model set back to train mode\n", - "Epoch 4986: model parameters saved\n", - "Epoch 4987 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 4987: avg_loss appended (1.3133)\n", - "Epoch 4987: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4987: accuracy appended (60.00%)\n", - "Epoch 4987: model set back to train mode\n", - "Epoch 4987: model parameters saved\n", - "Epoch 4988 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 4988: avg_loss appended (1.3133)\n", - "Epoch 4988: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4988: accuracy appended (60.00%)\n", - "Epoch 4988: model set back to train mode\n", - "Epoch 4988: model parameters saved\n", - "Epoch 4989 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 4989: avg_loss appended (1.3133)\n", - "Epoch 4989: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4989: accuracy appended (60.00%)\n", - "Epoch 4989: model set back to train mode\n", - "Epoch 4989: model parameters saved\n", - "Epoch 4990 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 4990: avg_loss appended (1.3133)\n", - "Epoch 4990: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4990: accuracy appended (60.00%)\n", - "Epoch 4990: model set back to train mode\n", - "Epoch 4990: model parameters saved\n", - "Epoch 4991 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 4991: avg_loss appended (1.3133)\n", - "Epoch 4991: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4991: accuracy appended (60.00%)\n", - "Epoch 4991: model set back to train mode\n", - "Epoch 4991: model parameters saved\n", - "Epoch 4992 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 4992: avg_loss appended (1.3133)\n", - "Epoch 4992: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4992: accuracy appended (60.00%)\n", - "Epoch 4992: model set back to train mode\n", - "Epoch 4992: model parameters saved\n", - "Epoch 4993 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 4993: avg_loss appended (1.3133)\n", - "Epoch 4993: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4993: accuracy appended (60.00%)\n", - "Epoch 4993: model set back to train mode\n", - "Epoch 4993: model parameters saved\n", - "Epoch 4994 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 4994: avg_loss appended (1.3133)\n", - "Epoch 4994: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4994: accuracy appended (60.00%)\n", - "Epoch 4994: model set back to train mode\n", - "Epoch 4994: model parameters saved\n", - "Epoch 4995 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 4995: avg_loss appended (1.3133)\n", - "Epoch 4995: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4995: accuracy appended (60.00%)\n", - "Epoch 4995: model set back to train mode\n", - "Epoch 4995: model parameters saved\n", - "Epoch 4996 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 4996: avg_loss appended (1.3133)\n", - "Epoch 4996: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4996: accuracy appended (60.00%)\n", - "Epoch 4996: model set back to train mode\n", - "Epoch 4996: model parameters saved\n", - "Epoch 4997 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 4997: avg_loss appended (1.3133)\n", - "Epoch 4997: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4997: accuracy appended (60.00%)\n", - "Epoch 4997: model set back to train mode\n", - "Epoch 4997: model parameters saved\n", - "Epoch 4998 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 4998: avg_loss appended (1.3133)\n", - "Epoch 4998: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4998: accuracy appended (60.00%)\n", - "Epoch 4998: model set back to train mode\n", - "Epoch 4998: model parameters saved\n", - "Epoch 4999 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 4999: avg_loss appended (1.3133)\n", - "Epoch 4999: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 4999: accuracy appended (60.00%)\n", - "Epoch 4999: model set back to train mode\n", - "Epoch 4999: model parameters saved\n", - "Epoch 5000 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 5000: avg_loss appended (1.3133)\n", - "Epoch 5000: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5000: accuracy appended (60.00%)\n", - "Epoch 5000: model set back to train mode\n", - "Epoch 5000: model parameters saved\n", - "Epoch 5000/10000, Loss: 1.3133, Accuracy: 60.00%\n", - "Epoch 5001 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 5001: avg_loss appended (1.3133)\n", - "Epoch 5001: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5001: accuracy appended (60.00%)\n", - "Epoch 5001: model set back to train mode\n", - "Epoch 5001: model parameters saved\n", - "Epoch 5002 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 5002: avg_loss appended (1.3133)\n", - "Epoch 5002: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5002: accuracy appended (60.00%)\n", - "Epoch 5002: model set back to train mode\n", - "Epoch 5002: model parameters saved\n", - "Epoch 5003 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 5003: avg_loss appended (1.3133)\n", - "Epoch 5003: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5003: accuracy appended (60.00%)\n", - "Epoch 5003: model set back to train mode\n", - "Epoch 5003: model parameters saved\n", - "Epoch 5004 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 5004: avg_loss appended (1.3133)\n", - "Epoch 5004: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5004: accuracy appended (60.00%)\n", - "Epoch 5004: model set back to train mode\n", - "Epoch 5004: model parameters saved\n", - "Epoch 5005 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 5005: avg_loss appended (1.3133)\n", - "Epoch 5005: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5005: accuracy appended (60.00%)\n", - "Epoch 5005: model set back to train mode\n", - "Epoch 5005: model parameters saved\n", - "Epoch 5006 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 5006: avg_loss appended (1.3133)\n", - "Epoch 5006: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5006: accuracy appended (60.00%)\n", - "Epoch 5006: model set back to train mode\n", - "Epoch 5006: model parameters saved\n", - "Epoch 5007 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 5007: avg_loss appended (1.3133)\n", - "Epoch 5007: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5007: accuracy appended (60.00%)\n", - "Epoch 5007: model set back to train mode\n", - "Epoch 5007: model parameters saved\n", - "Epoch 5008 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 5008: avg_loss appended (1.3133)\n", - "Epoch 5008: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5008: accuracy appended (60.00%)\n", - "Epoch 5008: model set back to train mode\n", - "Epoch 5008: model parameters saved\n", - "Epoch 5009 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 5009: avg_loss appended (1.3133)\n", - "Epoch 5009: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5009: accuracy appended (60.00%)\n", - "Epoch 5009: model set back to train mode\n", - "Epoch 5009: model parameters saved\n", - "Epoch 5010 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 5010: avg_loss appended (1.3133)\n", - "Epoch 5010: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5010: accuracy appended (60.00%)\n", - "Epoch 5010: model set back to train mode\n", - "Epoch 5010: model parameters saved\n", - "Epoch 5011 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 5011: avg_loss appended (1.3133)\n", - "Epoch 5011: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5011: accuracy appended (60.00%)\n", - "Epoch 5011: model set back to train mode\n", - "Epoch 5011: model parameters saved\n", - "Epoch 5012 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 5012: avg_loss appended (1.3133)\n", - "Epoch 5012: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5012: accuracy appended (60.00%)\n", - "Epoch 5012: model set back to train mode\n", - "Epoch 5012: model parameters saved\n", - "Epoch 5013 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 5013: avg_loss appended (1.3133)\n", - "Epoch 5013: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5013: accuracy appended (60.00%)\n", - "Epoch 5013: model set back to train mode\n", - "Epoch 5013: model parameters saved\n", - "Epoch 5014 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 5014: avg_loss appended (1.3133)\n", - "Epoch 5014: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5014: accuracy appended (60.00%)\n", - "Epoch 5014: model set back to train mode\n", - "Epoch 5014: model parameters saved\n", - "Epoch 5015 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 5015: avg_loss appended (1.3133)\n", - "Epoch 5015: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5015: accuracy appended (60.00%)\n", - "Epoch 5015: model set back to train mode\n", - "Epoch 5015: model parameters saved\n", - "Epoch 5016 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 5016: avg_loss appended (1.3133)\n", - "Epoch 5016: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5016: accuracy appended (60.00%)\n", - "Epoch 5016: model set back to train mode\n", - "Epoch 5016: model parameters saved\n", - "Epoch 5017 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 5017: avg_loss appended (1.3133)\n", - "Epoch 5017: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5017: accuracy appended (60.00%)\n", - "Epoch 5017: model set back to train mode\n", - "Epoch 5017: model parameters saved\n", - "Epoch 5018 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 5018: avg_loss appended (1.3133)\n", - "Epoch 5018: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5018: accuracy appended (60.00%)\n", - "Epoch 5018: model set back to train mode\n", - "Epoch 5018: model parameters saved\n", - "Epoch 5019 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 5019: avg_loss appended (1.3133)\n", - "Epoch 5019: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5019: accuracy appended (60.00%)\n", - "Epoch 5019: model set back to train mode\n", - "Epoch 5019: model parameters saved\n", - "Epoch 5020 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 5020: avg_loss appended (1.3133)\n", - "Epoch 5020: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5020: accuracy appended (60.00%)\n", - "Epoch 5020: model set back to train mode\n", - "Epoch 5020: model parameters saved\n", - "Epoch 5021 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 5021: avg_loss appended (1.3133)\n", - "Epoch 5021: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5021: accuracy appended (60.00%)\n", - "Epoch 5021: model set back to train mode\n", - "Epoch 5021: model parameters saved\n", - "Epoch 5022 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 5022: avg_loss appended (1.3133)\n", - "Epoch 5022: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5022: accuracy appended (60.00%)\n", - "Epoch 5022: model set back to train mode\n", - "Epoch 5022: model parameters saved\n", - "Epoch 5023 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 5023: avg_loss appended (1.3133)\n", - "Epoch 5023: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5023: accuracy appended (60.00%)\n", - "Epoch 5023: model set back to train mode\n", - "Epoch 5023: model parameters saved\n", - "Epoch 5024 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3133)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3133)\n", - "Epoch 5024: avg_loss appended (1.3133)\n", - "Epoch 5024: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5024: accuracy appended (60.00%)\n", - "Epoch 5024: model set back to train mode\n", - "Epoch 5024: model parameters saved\n", - "Epoch 5025 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5025: avg_loss appended (1.3132)\n", - "Epoch 5025: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5025: accuracy appended (60.00%)\n", - "Epoch 5025: model set back to train mode\n", - "Epoch 5025: model parameters saved\n", - "Epoch 5026 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5026: avg_loss appended (1.3132)\n", - "Epoch 5026: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5026: accuracy appended (60.00%)\n", - "Epoch 5026: model set back to train mode\n", - "Epoch 5026: model parameters saved\n", - "Epoch 5027 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5027: avg_loss appended (1.3132)\n", - "Epoch 5027: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5027: accuracy appended (60.00%)\n", - "Epoch 5027: model set back to train mode\n", - "Epoch 5027: model parameters saved\n", - "Epoch 5028 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5028: avg_loss appended (1.3132)\n", - "Epoch 5028: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5028: accuracy appended (60.00%)\n", - "Epoch 5028: model set back to train mode\n", - "Epoch 5028: model parameters saved\n", - "Epoch 5029 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5029: avg_loss appended (1.3132)\n", - "Epoch 5029: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5029: accuracy appended (60.00%)\n", - "Epoch 5029: model set back to train mode\n", - "Epoch 5029: model parameters saved\n", - "Epoch 5030 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5030: avg_loss appended (1.3132)\n", - "Epoch 5030: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5030: accuracy appended (60.00%)\n", - "Epoch 5030: model set back to train mode\n", - "Epoch 5030: model parameters saved\n", - "Epoch 5031 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5031: avg_loss appended (1.3132)\n", - "Epoch 5031: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5031: accuracy appended (60.00%)\n", - "Epoch 5031: model set back to train mode\n", - "Epoch 5031: model parameters saved\n", - "Epoch 5032 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5032: avg_loss appended (1.3132)\n", - "Epoch 5032: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5032: accuracy appended (60.00%)\n", - "Epoch 5032: model set back to train mode\n", - "Epoch 5032: model parameters saved\n", - "Epoch 5033 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5033: avg_loss appended (1.3132)\n", - "Epoch 5033: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5033: accuracy appended (60.00%)\n", - "Epoch 5033: model set back to train mode\n", - "Epoch 5033: model parameters saved\n", - "Epoch 5034 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5034: avg_loss appended (1.3132)\n", - "Epoch 5034: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5034: accuracy appended (60.00%)\n", - "Epoch 5034: model set back to train mode\n", - "Epoch 5034: model parameters saved\n", - "Epoch 5035 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5035: avg_loss appended (1.3132)\n", - "Epoch 5035: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5035: accuracy appended (60.00%)\n", - "Epoch 5035: model set back to train mode\n", - "Epoch 5035: model parameters saved\n", - "Epoch 5036 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5036: avg_loss appended (1.3132)\n", - "Epoch 5036: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5036: accuracy appended (60.00%)\n", - "Epoch 5036: model set back to train mode\n", - "Epoch 5036: model parameters saved\n", - "Epoch 5037 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5037: avg_loss appended (1.3132)\n", - "Epoch 5037: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5037: accuracy appended (60.00%)\n", - "Epoch 5037: model set back to train mode\n", - "Epoch 5037: model parameters saved\n", - "Epoch 5038 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5038: avg_loss appended (1.3132)\n", - "Epoch 5038: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5038: accuracy appended (60.00%)\n", - "Epoch 5038: model set back to train mode\n", - "Epoch 5038: model parameters saved\n", - "Epoch 5039 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5039: avg_loss appended (1.3132)\n", - "Epoch 5039: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5039: accuracy appended (60.00%)\n", - "Epoch 5039: model set back to train mode\n", - "Epoch 5039: model parameters saved\n", - "Epoch 5040 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5040: avg_loss appended (1.3132)\n", - "Epoch 5040: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5040: accuracy appended (60.00%)\n", - "Epoch 5040: model set back to train mode\n", - "Epoch 5040: model parameters saved\n", - "Epoch 5041 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5041: avg_loss appended (1.3132)\n", - "Epoch 5041: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5041: accuracy appended (60.00%)\n", - "Epoch 5041: model set back to train mode\n", - "Epoch 5041: model parameters saved\n", - "Epoch 5042 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5042: avg_loss appended (1.3132)\n", - "Epoch 5042: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5042: accuracy appended (60.00%)\n", - "Epoch 5042: model set back to train mode\n", - "Epoch 5042: model parameters saved\n", - "Epoch 5043 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5043: avg_loss appended (1.3132)\n", - "Epoch 5043: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5043: accuracy appended (60.00%)\n", - "Epoch 5043: model set back to train mode\n", - "Epoch 5043: model parameters saved\n", - "Epoch 5044 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5044: avg_loss appended (1.3132)\n", - "Epoch 5044: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5044: accuracy appended (60.00%)\n", - "Epoch 5044: model set back to train mode\n", - "Epoch 5044: model parameters saved\n", - "Epoch 5045 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5045: avg_loss appended (1.3132)\n", - "Epoch 5045: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5045: accuracy appended (60.00%)\n", - "Epoch 5045: model set back to train mode\n", - "Epoch 5045: model parameters saved\n", - "Epoch 5046 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5046: avg_loss appended (1.3132)\n", - "Epoch 5046: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5046: accuracy appended (60.00%)\n", - "Epoch 5046: model set back to train mode\n", - "Epoch 5046: model parameters saved\n", - "Epoch 5047 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5047: avg_loss appended (1.3132)\n", - "Epoch 5047: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5047: accuracy appended (60.00%)\n", - "Epoch 5047: model set back to train mode\n", - "Epoch 5047: model parameters saved\n", - "Epoch 5048 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5048: avg_loss appended (1.3132)\n", - "Epoch 5048: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5048: accuracy appended (60.00%)\n", - "Epoch 5048: model set back to train mode\n", - "Epoch 5048: model parameters saved\n", - "Epoch 5049 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5049: avg_loss appended (1.3132)\n", - "Epoch 5049: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5049: accuracy appended (60.00%)\n", - "Epoch 5049: model set back to train mode\n", - "Epoch 5049: model parameters saved\n", - "Epoch 5050 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5050: avg_loss appended (1.3132)\n", - "Epoch 5050: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5050: accuracy appended (60.00%)\n", - "Epoch 5050: model set back to train mode\n", - "Epoch 5050: model parameters saved\n", - "Epoch 5051 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5051: avg_loss appended (1.3132)\n", - "Epoch 5051: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5051: accuracy appended (60.00%)\n", - "Epoch 5051: model set back to train mode\n", - "Epoch 5051: model parameters saved\n", - "Epoch 5052 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5052: avg_loss appended (1.3132)\n", - "Epoch 5052: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5052: accuracy appended (60.00%)\n", - "Epoch 5052: model set back to train mode\n", - "Epoch 5052: model parameters saved\n", - "Epoch 5053 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5053: avg_loss appended (1.3132)\n", - "Epoch 5053: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5053: accuracy appended (60.00%)\n", - "Epoch 5053: model set back to train mode\n", - "Epoch 5053: model parameters saved\n", - "Epoch 5054 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5054: avg_loss appended (1.3132)\n", - "Epoch 5054: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5054: accuracy appended (60.00%)\n", - "Epoch 5054: model set back to train mode\n", - "Epoch 5054: model parameters saved\n", - "Epoch 5055 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5055: avg_loss appended (1.3132)\n", - "Epoch 5055: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5055: accuracy appended (60.00%)\n", - "Epoch 5055: model set back to train mode\n", - "Epoch 5055: model parameters saved\n", - "Epoch 5056 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5056: avg_loss appended (1.3132)\n", - "Epoch 5056: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5056: accuracy appended (60.00%)\n", - "Epoch 5056: model set back to train mode\n", - "Epoch 5056: model parameters saved\n", - "Epoch 5057 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5057: avg_loss appended (1.3132)\n", - "Epoch 5057: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5057: accuracy appended (60.00%)\n", - "Epoch 5057: model set back to train mode\n", - "Epoch 5057: model parameters saved\n", - "Epoch 5058 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5058: avg_loss appended (1.3132)\n", - "Epoch 5058: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5058: accuracy appended (60.00%)\n", - "Epoch 5058: model set back to train mode\n", - "Epoch 5058: model parameters saved\n", - "Epoch 5059 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5059: avg_loss appended (1.3132)\n", - "Epoch 5059: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5059: accuracy appended (60.00%)\n", - "Epoch 5059: model set back to train mode\n", - "Epoch 5059: model parameters saved\n", - "Epoch 5060 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5060: avg_loss appended (1.3132)\n", - "Epoch 5060: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5060: accuracy appended (60.00%)\n", - "Epoch 5060: model set back to train mode\n", - "Epoch 5060: model parameters saved\n", - "Epoch 5061 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5061: avg_loss appended (1.3132)\n", - "Epoch 5061: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5061: accuracy appended (60.00%)\n", - "Epoch 5061: model set back to train mode\n", - "Epoch 5061: model parameters saved\n", - "Epoch 5062 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5062: avg_loss appended (1.3132)\n", - "Epoch 5062: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5062: accuracy appended (60.00%)\n", - "Epoch 5062: model set back to train mode\n", - "Epoch 5062: model parameters saved\n", - "Epoch 5063 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5063: avg_loss appended (1.3132)\n", - "Epoch 5063: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5063: accuracy appended (60.00%)\n", - "Epoch 5063: model set back to train mode\n", - "Epoch 5063: model parameters saved\n", - "Epoch 5064 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5064: avg_loss appended (1.3132)\n", - "Epoch 5064: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5064: accuracy appended (60.00%)\n", - "Epoch 5064: model set back to train mode\n", - "Epoch 5064: model parameters saved\n", - "Epoch 5065 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5065: avg_loss appended (1.3132)\n", - "Epoch 5065: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5065: accuracy appended (60.00%)\n", - "Epoch 5065: model set back to train mode\n", - "Epoch 5065: model parameters saved\n", - "Epoch 5066 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5066: avg_loss appended (1.3132)\n", - "Epoch 5066: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5066: accuracy appended (60.00%)\n", - "Epoch 5066: model set back to train mode\n", - "Epoch 5066: model parameters saved\n", - "Epoch 5067 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5067: avg_loss appended (1.3132)\n", - "Epoch 5067: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5067: accuracy appended (60.00%)\n", - "Epoch 5067: model set back to train mode\n", - "Epoch 5067: model parameters saved\n", - "Epoch 5068 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5068: avg_loss appended (1.3132)\n", - "Epoch 5068: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5068: accuracy appended (60.00%)\n", - "Epoch 5068: model set back to train mode\n", - "Epoch 5068: model parameters saved\n", - "Epoch 5069 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5069: avg_loss appended (1.3132)\n", - "Epoch 5069: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5069: accuracy appended (60.00%)\n", - "Epoch 5069: model set back to train mode\n", - "Epoch 5069: model parameters saved\n", - "Epoch 5070 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5070: avg_loss appended (1.3132)\n", - "Epoch 5070: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5070: accuracy appended (60.00%)\n", - "Epoch 5070: model set back to train mode\n", - "Epoch 5070: model parameters saved\n", - "Epoch 5071 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5071: avg_loss appended (1.3132)\n", - "Epoch 5071: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5071: accuracy appended (60.00%)\n", - "Epoch 5071: model set back to train mode\n", - "Epoch 5071: model parameters saved\n", - "Epoch 5072 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5072: avg_loss appended (1.3132)\n", - "Epoch 5072: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5072: accuracy appended (60.00%)\n", - "Epoch 5072: model set back to train mode\n", - "Epoch 5072: model parameters saved\n", - "Epoch 5073 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5073: avg_loss appended (1.3132)\n", - "Epoch 5073: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5073: accuracy appended (60.00%)\n", - "Epoch 5073: model set back to train mode\n", - "Epoch 5073: model parameters saved\n", - "Epoch 5074 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5074: avg_loss appended (1.3132)\n", - "Epoch 5074: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5074: accuracy appended (60.00%)\n", - "Epoch 5074: model set back to train mode\n", - "Epoch 5074: model parameters saved\n", - "Epoch 5075 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5075: avg_loss appended (1.3132)\n", - "Epoch 5075: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5075: accuracy appended (60.00%)\n", - "Epoch 5075: model set back to train mode\n", - "Epoch 5075: model parameters saved\n", - "Epoch 5076 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5076: avg_loss appended (1.3132)\n", - "Epoch 5076: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5076: accuracy appended (60.00%)\n", - "Epoch 5076: model set back to train mode\n", - "Epoch 5076: model parameters saved\n", - "Epoch 5077 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5077: avg_loss appended (1.3132)\n", - "Epoch 5077: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5077: accuracy appended (60.00%)\n", - "Epoch 5077: model set back to train mode\n", - "Epoch 5077: model parameters saved\n", - "Epoch 5078 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5078: avg_loss appended (1.3132)\n", - "Epoch 5078: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5078: accuracy appended (60.00%)\n", - "Epoch 5078: model set back to train mode\n", - "Epoch 5078: model parameters saved\n", - "Epoch 5079 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5079: avg_loss appended (1.3132)\n", - "Epoch 5079: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5079: accuracy appended (60.00%)\n", - "Epoch 5079: model set back to train mode\n", - "Epoch 5079: model parameters saved\n", - "Epoch 5080 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5080: avg_loss appended (1.3132)\n", - "Epoch 5080: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5080: accuracy appended (60.00%)\n", - "Epoch 5080: model set back to train mode\n", - "Epoch 5080: model parameters saved\n", - "Epoch 5081 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5081: avg_loss appended (1.3132)\n", - "Epoch 5081: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5081: accuracy appended (60.00%)\n", - "Epoch 5081: model set back to train mode\n", - "Epoch 5081: model parameters saved\n", - "Epoch 5082 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5082: avg_loss appended (1.3132)\n", - "Epoch 5082: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5082: accuracy appended (60.00%)\n", - "Epoch 5082: model set back to train mode\n", - "Epoch 5082: model parameters saved\n", - "Epoch 5083 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5083: avg_loss appended (1.3132)\n", - "Epoch 5083: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5083: accuracy appended (60.00%)\n", - "Epoch 5083: model set back to train mode\n", - "Epoch 5083: model parameters saved\n", - "Epoch 5084 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5084: avg_loss appended (1.3132)\n", - "Epoch 5084: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5084: accuracy appended (60.00%)\n", - "Epoch 5084: model set back to train mode\n", - "Epoch 5084: model parameters saved\n", - "Epoch 5085 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5085: avg_loss appended (1.3132)\n", - "Epoch 5085: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5085: accuracy appended (60.00%)\n", - "Epoch 5085: model set back to train mode\n", - "Epoch 5085: model parameters saved\n", - "Epoch 5086 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5086: avg_loss appended (1.3132)\n", - "Epoch 5086: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5086: accuracy appended (60.00%)\n", - "Epoch 5086: model set back to train mode\n", - "Epoch 5086: model parameters saved\n", - "Epoch 5087 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5087: avg_loss appended (1.3132)\n", - "Epoch 5087: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5087: accuracy appended (60.00%)\n", - "Epoch 5087: model set back to train mode\n", - "Epoch 5087: model parameters saved\n", - "Epoch 5088 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5088: avg_loss appended (1.3132)\n", - "Epoch 5088: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5088: accuracy appended (60.00%)\n", - "Epoch 5088: model set back to train mode\n", - "Epoch 5088: model parameters saved\n", - "Epoch 5089 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5089: avg_loss appended (1.3132)\n", - "Epoch 5089: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5089: accuracy appended (60.00%)\n", - "Epoch 5089: model set back to train mode\n", - "Epoch 5089: model parameters saved\n", - "Epoch 5090 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5090: avg_loss appended (1.3132)\n", - "Epoch 5090: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5090: accuracy appended (60.00%)\n", - "Epoch 5090: model set back to train mode\n", - "Epoch 5090: model parameters saved\n", - "Epoch 5091 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5091: avg_loss appended (1.3132)\n", - "Epoch 5091: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5091: accuracy appended (60.00%)\n", - "Epoch 5091: model set back to train mode\n", - "Epoch 5091: model parameters saved\n", - "Epoch 5092 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5092: avg_loss appended (1.3132)\n", - "Epoch 5092: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5092: accuracy appended (60.00%)\n", - "Epoch 5092: model set back to train mode\n", - "Epoch 5092: model parameters saved\n", - "Epoch 5093 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5093: avg_loss appended (1.3132)\n", - "Epoch 5093: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5093: accuracy appended (60.00%)\n", - "Epoch 5093: model set back to train mode\n", - "Epoch 5093: model parameters saved\n", - "Epoch 5094 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5094: avg_loss appended (1.3132)\n", - "Epoch 5094: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5094: accuracy appended (60.00%)\n", - "Epoch 5094: model set back to train mode\n", - "Epoch 5094: model parameters saved\n", - "Epoch 5095 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5095: avg_loss appended (1.3132)\n", - "Epoch 5095: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5095: accuracy appended (60.00%)\n", - "Epoch 5095: model set back to train mode\n", - "Epoch 5095: model parameters saved\n", - "Epoch 5096 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5096: avg_loss appended (1.3132)\n", - "Epoch 5096: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5096: accuracy appended (60.00%)\n", - "Epoch 5096: model set back to train mode\n", - "Epoch 5096: model parameters saved\n", - "Epoch 5097 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5097: avg_loss appended (1.3132)\n", - "Epoch 5097: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5097: accuracy appended (60.00%)\n", - "Epoch 5097: model set back to train mode\n", - "Epoch 5097: model parameters saved\n", - "Epoch 5098 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5098: avg_loss appended (1.3132)\n", - "Epoch 5098: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5098: accuracy appended (60.00%)\n", - "Epoch 5098: model set back to train mode\n", - "Epoch 5098: model parameters saved\n", - "Epoch 5099 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3132)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3132)\n", - "Epoch 5099: avg_loss appended (1.3132)\n", - "Epoch 5099: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5099: accuracy appended (60.00%)\n", - "Epoch 5099: model set back to train mode\n", - "Epoch 5099: model parameters saved\n", - "Epoch 5100 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5100: avg_loss appended (1.3131)\n", - "Epoch 5100: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5100: accuracy appended (60.00%)\n", - "Epoch 5100: model set back to train mode\n", - "Epoch 5100: model parameters saved\n", - "Epoch 5100/10000, Loss: 1.3131, Accuracy: 60.00%\n", - "Epoch 5101 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5101: avg_loss appended (1.3131)\n", - "Epoch 5101: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5101: accuracy appended (60.00%)\n", - "Epoch 5101: model set back to train mode\n", - "Epoch 5101: model parameters saved\n", - "Epoch 5102 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5102: avg_loss appended (1.3131)\n", - "Epoch 5102: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5102: accuracy appended (60.00%)\n", - "Epoch 5102: model set back to train mode\n", - "Epoch 5102: model parameters saved\n", - "Epoch 5103 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5103: avg_loss appended (1.3131)\n", - "Epoch 5103: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5103: accuracy appended (60.00%)\n", - "Epoch 5103: model set back to train mode\n", - "Epoch 5103: model parameters saved\n", - "Epoch 5104 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5104: avg_loss appended (1.3131)\n", - "Epoch 5104: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5104: accuracy appended (60.00%)\n", - "Epoch 5104: model set back to train mode\n", - "Epoch 5104: model parameters saved\n", - "Epoch 5105 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5105: avg_loss appended (1.3131)\n", - "Epoch 5105: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5105: accuracy appended (60.00%)\n", - "Epoch 5105: model set back to train mode\n", - "Epoch 5105: model parameters saved\n", - "Epoch 5106 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5106: avg_loss appended (1.3131)\n", - "Epoch 5106: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5106: accuracy appended (60.00%)\n", - "Epoch 5106: model set back to train mode\n", - "Epoch 5106: model parameters saved\n", - "Epoch 5107 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5107: avg_loss appended (1.3131)\n", - "Epoch 5107: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5107: accuracy appended (60.00%)\n", - "Epoch 5107: model set back to train mode\n", - "Epoch 5107: model parameters saved\n", - "Epoch 5108 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5108: avg_loss appended (1.3131)\n", - "Epoch 5108: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5108: accuracy appended (60.00%)\n", - "Epoch 5108: model set back to train mode\n", - "Epoch 5108: model parameters saved\n", - "Epoch 5109 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5109: avg_loss appended (1.3131)\n", - "Epoch 5109: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5109: accuracy appended (60.00%)\n", - "Epoch 5109: model set back to train mode\n", - "Epoch 5109: model parameters saved\n", - "Epoch 5110 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5110: avg_loss appended (1.3131)\n", - "Epoch 5110: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5110: accuracy appended (60.00%)\n", - "Epoch 5110: model set back to train mode\n", - "Epoch 5110: model parameters saved\n", - "Epoch 5111 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5111: avg_loss appended (1.3131)\n", - "Epoch 5111: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5111: accuracy appended (60.00%)\n", - "Epoch 5111: model set back to train mode\n", - "Epoch 5111: model parameters saved\n", - "Epoch 5112 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5112: avg_loss appended (1.3131)\n", - "Epoch 5112: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5112: accuracy appended (60.00%)\n", - "Epoch 5112: model set back to train mode\n", - "Epoch 5112: model parameters saved\n", - "Epoch 5113 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5113: avg_loss appended (1.3131)\n", - "Epoch 5113: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5113: accuracy appended (60.00%)\n", - "Epoch 5113: model set back to train mode\n", - "Epoch 5113: model parameters saved\n", - "Epoch 5114 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5114: avg_loss appended (1.3131)\n", - "Epoch 5114: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5114: accuracy appended (60.00%)\n", - "Epoch 5114: model set back to train mode\n", - "Epoch 5114: model parameters saved\n", - "Epoch 5115 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5115: avg_loss appended (1.3131)\n", - "Epoch 5115: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5115: accuracy appended (60.00%)\n", - "Epoch 5115: model set back to train mode\n", - "Epoch 5115: model parameters saved\n", - "Epoch 5116 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5116: avg_loss appended (1.3131)\n", - "Epoch 5116: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5116: accuracy appended (60.00%)\n", - "Epoch 5116: model set back to train mode\n", - "Epoch 5116: model parameters saved\n", - "Epoch 5117 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5117: avg_loss appended (1.3131)\n", - "Epoch 5117: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5117: accuracy appended (60.00%)\n", - "Epoch 5117: model set back to train mode\n", - "Epoch 5117: model parameters saved\n", - "Epoch 5118 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5118: avg_loss appended (1.3131)\n", - "Epoch 5118: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5118: accuracy appended (60.00%)\n", - "Epoch 5118: model set back to train mode\n", - "Epoch 5118: model parameters saved\n", - "Epoch 5119 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5119: avg_loss appended (1.3131)\n", - "Epoch 5119: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5119: accuracy appended (60.00%)\n", - "Epoch 5119: model set back to train mode\n", - "Epoch 5119: model parameters saved\n", - "Epoch 5120 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5120: avg_loss appended (1.3131)\n", - "Epoch 5120: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5120: accuracy appended (60.00%)\n", - "Epoch 5120: model set back to train mode\n", - "Epoch 5120: model parameters saved\n", - "Epoch 5121 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5121: avg_loss appended (1.3131)\n", - "Epoch 5121: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5121: accuracy appended (60.00%)\n", - "Epoch 5121: model set back to train mode\n", - "Epoch 5121: model parameters saved\n", - "Epoch 5122 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5122: avg_loss appended (1.3131)\n", - "Epoch 5122: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5122: accuracy appended (60.00%)\n", - "Epoch 5122: model set back to train mode\n", - "Epoch 5122: model parameters saved\n", - "Epoch 5123 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5123: avg_loss appended (1.3131)\n", - "Epoch 5123: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5123: accuracy appended (60.00%)\n", - "Epoch 5123: model set back to train mode\n", - "Epoch 5123: model parameters saved\n", - "Epoch 5124 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5124: avg_loss appended (1.3131)\n", - "Epoch 5124: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5124: accuracy appended (60.00%)\n", - "Epoch 5124: model set back to train mode\n", - "Epoch 5124: model parameters saved\n", - "Epoch 5125 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5125: avg_loss appended (1.3131)\n", - "Epoch 5125: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5125: accuracy appended (60.00%)\n", - "Epoch 5125: model set back to train mode\n", - "Epoch 5125: model parameters saved\n", - "Epoch 5126 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5126: avg_loss appended (1.3131)\n", - "Epoch 5126: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5126: accuracy appended (60.00%)\n", - "Epoch 5126: model set back to train mode\n", - "Epoch 5126: model parameters saved\n", - "Epoch 5127 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5127: avg_loss appended (1.3131)\n", - "Epoch 5127: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5127: accuracy appended (60.00%)\n", - "Epoch 5127: model set back to train mode\n", - "Epoch 5127: model parameters saved\n", - "Epoch 5128 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5128: avg_loss appended (1.3131)\n", - "Epoch 5128: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5128: accuracy appended (60.00%)\n", - "Epoch 5128: model set back to train mode\n", - "Epoch 5128: model parameters saved\n", - "Epoch 5129 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5129: avg_loss appended (1.3131)\n", - "Epoch 5129: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5129: accuracy appended (60.00%)\n", - "Epoch 5129: model set back to train mode\n", - "Epoch 5129: model parameters saved\n", - "Epoch 5130 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5130: avg_loss appended (1.3131)\n", - "Epoch 5130: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5130: accuracy appended (60.00%)\n", - "Epoch 5130: model set back to train mode\n", - "Epoch 5130: model parameters saved\n", - "Epoch 5131 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5131: avg_loss appended (1.3131)\n", - "Epoch 5131: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5131: accuracy appended (60.00%)\n", - "Epoch 5131: model set back to train mode\n", - "Epoch 5131: model parameters saved\n", - "Epoch 5132 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5132: avg_loss appended (1.3131)\n", - "Epoch 5132: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5132: accuracy appended (60.00%)\n", - "Epoch 5132: model set back to train mode\n", - "Epoch 5132: model parameters saved\n", - "Epoch 5133 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5133: avg_loss appended (1.3131)\n", - "Epoch 5133: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5133: accuracy appended (60.00%)\n", - "Epoch 5133: model set back to train mode\n", - "Epoch 5133: model parameters saved\n", - "Epoch 5134 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5134: avg_loss appended (1.3131)\n", - "Epoch 5134: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5134: accuracy appended (60.00%)\n", - "Epoch 5134: model set back to train mode\n", - "Epoch 5134: model parameters saved\n", - "Epoch 5135 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5135: avg_loss appended (1.3131)\n", - "Epoch 5135: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5135: accuracy appended (60.00%)\n", - "Epoch 5135: model set back to train mode\n", - "Epoch 5135: model parameters saved\n", - "Epoch 5136 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5136: avg_loss appended (1.3131)\n", - "Epoch 5136: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5136: accuracy appended (60.00%)\n", - "Epoch 5136: model set back to train mode\n", - "Epoch 5136: model parameters saved\n", - "Epoch 5137 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5137: avg_loss appended (1.3131)\n", - "Epoch 5137: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5137: accuracy appended (60.00%)\n", - "Epoch 5137: model set back to train mode\n", - "Epoch 5137: model parameters saved\n", - "Epoch 5138 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5138: avg_loss appended (1.3131)\n", - "Epoch 5138: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5138: accuracy appended (60.00%)\n", - "Epoch 5138: model set back to train mode\n", - "Epoch 5138: model parameters saved\n", - "Epoch 5139 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5139: avg_loss appended (1.3131)\n", - "Epoch 5139: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5139: accuracy appended (60.00%)\n", - "Epoch 5139: model set back to train mode\n", - "Epoch 5139: model parameters saved\n", - "Epoch 5140 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5140: avg_loss appended (1.3131)\n", - "Epoch 5140: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5140: accuracy appended (60.00%)\n", - "Epoch 5140: model set back to train mode\n", - "Epoch 5140: model parameters saved\n", - "Epoch 5141 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5141: avg_loss appended (1.3131)\n", - "Epoch 5141: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5141: accuracy appended (60.00%)\n", - "Epoch 5141: model set back to train mode\n", - "Epoch 5141: model parameters saved\n", - "Epoch 5142 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5142: avg_loss appended (1.3131)\n", - "Epoch 5142: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5142: accuracy appended (60.00%)\n", - "Epoch 5142: model set back to train mode\n", - "Epoch 5142: model parameters saved\n", - "Epoch 5143 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5143: avg_loss appended (1.3131)\n", - "Epoch 5143: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5143: accuracy appended (60.00%)\n", - "Epoch 5143: model set back to train mode\n", - "Epoch 5143: model parameters saved\n", - "Epoch 5144 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5144: avg_loss appended (1.3131)\n", - "Epoch 5144: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5144: accuracy appended (60.00%)\n", - "Epoch 5144: model set back to train mode\n", - "Epoch 5144: model parameters saved\n", - "Epoch 5145 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5145: avg_loss appended (1.3131)\n", - "Epoch 5145: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5145: accuracy appended (60.00%)\n", - "Epoch 5145: model set back to train mode\n", - "Epoch 5145: model parameters saved\n", - "Epoch 5146 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5146: avg_loss appended (1.3131)\n", - "Epoch 5146: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5146: accuracy appended (60.00%)\n", - "Epoch 5146: model set back to train mode\n", - "Epoch 5146: model parameters saved\n", - "Epoch 5147 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5147: avg_loss appended (1.3131)\n", - "Epoch 5147: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5147: accuracy appended (60.00%)\n", - "Epoch 5147: model set back to train mode\n", - "Epoch 5147: model parameters saved\n", - "Epoch 5148 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5148: avg_loss appended (1.3131)\n", - "Epoch 5148: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5148: accuracy appended (60.00%)\n", - "Epoch 5148: model set back to train mode\n", - "Epoch 5148: model parameters saved\n", - "Epoch 5149 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5149: avg_loss appended (1.3131)\n", - "Epoch 5149: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5149: accuracy appended (60.00%)\n", - "Epoch 5149: model set back to train mode\n", - "Epoch 5149: model parameters saved\n", - "Epoch 5150 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5150: avg_loss appended (1.3131)\n", - "Epoch 5150: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5150: accuracy appended (60.00%)\n", - "Epoch 5150: model set back to train mode\n", - "Epoch 5150: model parameters saved\n", - "Epoch 5151 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5151: avg_loss appended (1.3131)\n", - "Epoch 5151: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5151: accuracy appended (60.00%)\n", - "Epoch 5151: model set back to train mode\n", - "Epoch 5151: model parameters saved\n", - "Epoch 5152 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5152: avg_loss appended (1.3131)\n", - "Epoch 5152: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5152: accuracy appended (60.00%)\n", - "Epoch 5152: model set back to train mode\n", - "Epoch 5152: model parameters saved\n", - "Epoch 5153 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5153: avg_loss appended (1.3131)\n", - "Epoch 5153: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5153: accuracy appended (60.00%)\n", - "Epoch 5153: model set back to train mode\n", - "Epoch 5153: model parameters saved\n", - "Epoch 5154 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5154: avg_loss appended (1.3131)\n", - "Epoch 5154: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5154: accuracy appended (60.00%)\n", - "Epoch 5154: model set back to train mode\n", - "Epoch 5154: model parameters saved\n", - "Epoch 5155 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5155: avg_loss appended (1.3131)\n", - "Epoch 5155: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5155: accuracy appended (60.00%)\n", - "Epoch 5155: model set back to train mode\n", - "Epoch 5155: model parameters saved\n", - "Epoch 5156 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5156: avg_loss appended (1.3131)\n", - "Epoch 5156: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5156: accuracy appended (60.00%)\n", - "Epoch 5156: model set back to train mode\n", - "Epoch 5156: model parameters saved\n", - "Epoch 5157 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5157: avg_loss appended (1.3131)\n", - "Epoch 5157: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5157: accuracy appended (60.00%)\n", - "Epoch 5157: model set back to train mode\n", - "Epoch 5157: model parameters saved\n", - "Epoch 5158 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5158: avg_loss appended (1.3131)\n", - "Epoch 5158: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5158: accuracy appended (60.00%)\n", - "Epoch 5158: model set back to train mode\n", - "Epoch 5158: model parameters saved\n", - "Epoch 5159 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5159: avg_loss appended (1.3131)\n", - "Epoch 5159: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5159: accuracy appended (60.00%)\n", - "Epoch 5159: model set back to train mode\n", - "Epoch 5159: model parameters saved\n", - "Epoch 5160 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5160: avg_loss appended (1.3131)\n", - "Epoch 5160: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5160: accuracy appended (60.00%)\n", - "Epoch 5160: model set back to train mode\n", - "Epoch 5160: model parameters saved\n", - "Epoch 5161 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5161: avg_loss appended (1.3131)\n", - "Epoch 5161: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5161: accuracy appended (60.00%)\n", - "Epoch 5161: model set back to train mode\n", - "Epoch 5161: model parameters saved\n", - "Epoch 5162 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5162: avg_loss appended (1.3131)\n", - "Epoch 5162: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5162: accuracy appended (60.00%)\n", - "Epoch 5162: model set back to train mode\n", - "Epoch 5162: model parameters saved\n", - "Epoch 5163 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5163: avg_loss appended (1.3131)\n", - "Epoch 5163: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5163: accuracy appended (60.00%)\n", - "Epoch 5163: model set back to train mode\n", - "Epoch 5163: model parameters saved\n", - "Epoch 5164 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5164: avg_loss appended (1.3131)\n", - "Epoch 5164: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5164: accuracy appended (60.00%)\n", - "Epoch 5164: model set back to train mode\n", - "Epoch 5164: model parameters saved\n", - "Epoch 5165 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5165: avg_loss appended (1.3131)\n", - "Epoch 5165: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5165: accuracy appended (60.00%)\n", - "Epoch 5165: model set back to train mode\n", - "Epoch 5165: model parameters saved\n", - "Epoch 5166 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5166: avg_loss appended (1.3131)\n", - "Epoch 5166: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5166: accuracy appended (60.00%)\n", - "Epoch 5166: model set back to train mode\n", - "Epoch 5166: model parameters saved\n", - "Epoch 5167 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5167: avg_loss appended (1.3131)\n", - "Epoch 5167: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5167: accuracy appended (60.00%)\n", - "Epoch 5167: model set back to train mode\n", - "Epoch 5167: model parameters saved\n", - "Epoch 5168 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5168: avg_loss appended (1.3131)\n", - "Epoch 5168: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5168: accuracy appended (60.00%)\n", - "Epoch 5168: model set back to train mode\n", - "Epoch 5168: model parameters saved\n", - "Epoch 5169 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5169: avg_loss appended (1.3131)\n", - "Epoch 5169: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5169: accuracy appended (60.00%)\n", - "Epoch 5169: model set back to train mode\n", - "Epoch 5169: model parameters saved\n", - "Epoch 5170 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5170: avg_loss appended (1.3131)\n", - "Epoch 5170: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5170: accuracy appended (60.00%)\n", - "Epoch 5170: model set back to train mode\n", - "Epoch 5170: model parameters saved\n", - "Epoch 5171 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5171: avg_loss appended (1.3131)\n", - "Epoch 5171: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5171: accuracy appended (60.00%)\n", - "Epoch 5171: model set back to train mode\n", - "Epoch 5171: model parameters saved\n", - "Epoch 5172 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5172: avg_loss appended (1.3131)\n", - "Epoch 5172: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5172: accuracy appended (60.00%)\n", - "Epoch 5172: model set back to train mode\n", - "Epoch 5172: model parameters saved\n", - "Epoch 5173 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5173: avg_loss appended (1.3131)\n", - "Epoch 5173: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5173: accuracy appended (60.00%)\n", - "Epoch 5173: model set back to train mode\n", - "Epoch 5173: model parameters saved\n", - "Epoch 5174 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5174: avg_loss appended (1.3131)\n", - "Epoch 5174: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5174: accuracy appended (60.00%)\n", - "Epoch 5174: model set back to train mode\n", - "Epoch 5174: model parameters saved\n", - "Epoch 5175 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5175: avg_loss appended (1.3131)\n", - "Epoch 5175: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5175: accuracy appended (60.00%)\n", - "Epoch 5175: model set back to train mode\n", - "Epoch 5175: model parameters saved\n", - "Epoch 5176 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3131)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3131)\n", - "Epoch 5176: avg_loss appended (1.3131)\n", - "Epoch 5176: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5176: accuracy appended (60.00%)\n", - "Epoch 5176: model set back to train mode\n", - "Epoch 5176: model parameters saved\n", - "Epoch 5177 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5177: avg_loss appended (1.3130)\n", - "Epoch 5177: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5177: accuracy appended (60.00%)\n", - "Epoch 5177: model set back to train mode\n", - "Epoch 5177: model parameters saved\n", - "Epoch 5178 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5178: avg_loss appended (1.3130)\n", - "Epoch 5178: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5178: accuracy appended (60.00%)\n", - "Epoch 5178: model set back to train mode\n", - "Epoch 5178: model parameters saved\n", - "Epoch 5179 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5179: avg_loss appended (1.3130)\n", - "Epoch 5179: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5179: accuracy appended (60.00%)\n", - "Epoch 5179: model set back to train mode\n", - "Epoch 5179: model parameters saved\n", - "Epoch 5180 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5180: avg_loss appended (1.3130)\n", - "Epoch 5180: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5180: accuracy appended (60.00%)\n", - "Epoch 5180: model set back to train mode\n", - "Epoch 5180: model parameters saved\n", - "Epoch 5181 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5181: avg_loss appended (1.3130)\n", - "Epoch 5181: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5181: accuracy appended (60.00%)\n", - "Epoch 5181: model set back to train mode\n", - "Epoch 5181: model parameters saved\n", - "Epoch 5182 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5182: avg_loss appended (1.3130)\n", - "Epoch 5182: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5182: accuracy appended (60.00%)\n", - "Epoch 5182: model set back to train mode\n", - "Epoch 5182: model parameters saved\n", - "Epoch 5183 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5183: avg_loss appended (1.3130)\n", - "Epoch 5183: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5183: accuracy appended (60.00%)\n", - "Epoch 5183: model set back to train mode\n", - "Epoch 5183: model parameters saved\n", - "Epoch 5184 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5184: avg_loss appended (1.3130)\n", - "Epoch 5184: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5184: accuracy appended (60.00%)\n", - "Epoch 5184: model set back to train mode\n", - "Epoch 5184: model parameters saved\n", - "Epoch 5185 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5185: avg_loss appended (1.3130)\n", - "Epoch 5185: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5185: accuracy appended (60.00%)\n", - "Epoch 5185: model set back to train mode\n", - "Epoch 5185: model parameters saved\n", - "Epoch 5186 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5186: avg_loss appended (1.3130)\n", - "Epoch 5186: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5186: accuracy appended (60.00%)\n", - "Epoch 5186: model set back to train mode\n", - "Epoch 5186: model parameters saved\n", - "Epoch 5187 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5187: avg_loss appended (1.3130)\n", - "Epoch 5187: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5187: accuracy appended (60.00%)\n", - "Epoch 5187: model set back to train mode\n", - "Epoch 5187: model parameters saved\n", - "Epoch 5188 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5188: avg_loss appended (1.3130)\n", - "Epoch 5188: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5188: accuracy appended (60.00%)\n", - "Epoch 5188: model set back to train mode\n", - "Epoch 5188: model parameters saved\n", - "Epoch 5189 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5189: avg_loss appended (1.3130)\n", - "Epoch 5189: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5189: accuracy appended (60.00%)\n", - "Epoch 5189: model set back to train mode\n", - "Epoch 5189: model parameters saved\n", - "Epoch 5190 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5190: avg_loss appended (1.3130)\n", - "Epoch 5190: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5190: accuracy appended (60.00%)\n", - "Epoch 5190: model set back to train mode\n", - "Epoch 5190: model parameters saved\n", - "Epoch 5191 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5191: avg_loss appended (1.3130)\n", - "Epoch 5191: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5191: accuracy appended (60.00%)\n", - "Epoch 5191: model set back to train mode\n", - "Epoch 5191: model parameters saved\n", - "Epoch 5192 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5192: avg_loss appended (1.3130)\n", - "Epoch 5192: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5192: accuracy appended (60.00%)\n", - "Epoch 5192: model set back to train mode\n", - "Epoch 5192: model parameters saved\n", - "Epoch 5193 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5193: avg_loss appended (1.3130)\n", - "Epoch 5193: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5193: accuracy appended (60.00%)\n", - "Epoch 5193: model set back to train mode\n", - "Epoch 5193: model parameters saved\n", - "Epoch 5194 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5194: avg_loss appended (1.3130)\n", - "Epoch 5194: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5194: accuracy appended (60.00%)\n", - "Epoch 5194: model set back to train mode\n", - "Epoch 5194: model parameters saved\n", - "Epoch 5195 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5195: avg_loss appended (1.3130)\n", - "Epoch 5195: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5195: accuracy appended (60.00%)\n", - "Epoch 5195: model set back to train mode\n", - "Epoch 5195: model parameters saved\n", - "Epoch 5196 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5196: avg_loss appended (1.3130)\n", - "Epoch 5196: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5196: accuracy appended (60.00%)\n", - "Epoch 5196: model set back to train mode\n", - "Epoch 5196: model parameters saved\n", - "Epoch 5197 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5197: avg_loss appended (1.3130)\n", - "Epoch 5197: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5197: accuracy appended (60.00%)\n", - "Epoch 5197: model set back to train mode\n", - "Epoch 5197: model parameters saved\n", - "Epoch 5198 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5198: avg_loss appended (1.3130)\n", - "Epoch 5198: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5198: accuracy appended (60.00%)\n", - "Epoch 5198: model set back to train mode\n", - "Epoch 5198: model parameters saved\n", - "Epoch 5199 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5199: avg_loss appended (1.3130)\n", - "Epoch 5199: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5199: accuracy appended (60.00%)\n", - "Epoch 5199: model set back to train mode\n", - "Epoch 5199: model parameters saved\n", - "Epoch 5200 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5200: avg_loss appended (1.3130)\n", - "Epoch 5200: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5200: accuracy appended (60.00%)\n", - "Epoch 5200: model set back to train mode\n", - "Epoch 5200: model parameters saved\n", - "Epoch 5200/10000, Loss: 1.3130, Accuracy: 60.00%\n", - "Epoch 5201 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5201: avg_loss appended (1.3130)\n", - "Epoch 5201: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5201: accuracy appended (60.00%)\n", - "Epoch 5201: model set back to train mode\n", - "Epoch 5201: model parameters saved\n", - "Epoch 5202 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5202: avg_loss appended (1.3130)\n", - "Epoch 5202: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5202: accuracy appended (60.00%)\n", - "Epoch 5202: model set back to train mode\n", - "Epoch 5202: model parameters saved\n", - "Epoch 5203 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5203: avg_loss appended (1.3130)\n", - "Epoch 5203: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5203: accuracy appended (60.00%)\n", - "Epoch 5203: model set back to train mode\n", - "Epoch 5203: model parameters saved\n", - "Epoch 5204 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5204: avg_loss appended (1.3130)\n", - "Epoch 5204: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5204: accuracy appended (60.00%)\n", - "Epoch 5204: model set back to train mode\n", - "Epoch 5204: model parameters saved\n", - "Epoch 5205 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5205: avg_loss appended (1.3130)\n", - "Epoch 5205: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5205: accuracy appended (60.00%)\n", - "Epoch 5205: model set back to train mode\n", - "Epoch 5205: model parameters saved\n", - "Epoch 5206 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5206: avg_loss appended (1.3130)\n", - "Epoch 5206: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5206: accuracy appended (60.00%)\n", - "Epoch 5206: model set back to train mode\n", - "Epoch 5206: model parameters saved\n", - "Epoch 5207 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5207: avg_loss appended (1.3130)\n", - "Epoch 5207: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5207: accuracy appended (60.00%)\n", - "Epoch 5207: model set back to train mode\n", - "Epoch 5207: model parameters saved\n", - "Epoch 5208 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5208: avg_loss appended (1.3130)\n", - "Epoch 5208: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5208: accuracy appended (60.00%)\n", - "Epoch 5208: model set back to train mode\n", - "Epoch 5208: model parameters saved\n", - "Epoch 5209 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5209: avg_loss appended (1.3130)\n", - "Epoch 5209: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5209: accuracy appended (60.00%)\n", - "Epoch 5209: model set back to train mode\n", - "Epoch 5209: model parameters saved\n", - "Epoch 5210 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5210: avg_loss appended (1.3130)\n", - "Epoch 5210: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5210: accuracy appended (60.00%)\n", - "Epoch 5210: model set back to train mode\n", - "Epoch 5210: model parameters saved\n", - "Epoch 5211 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5211: avg_loss appended (1.3130)\n", - "Epoch 5211: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5211: accuracy appended (60.00%)\n", - "Epoch 5211: model set back to train mode\n", - "Epoch 5211: model parameters saved\n", - "Epoch 5212 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5212: avg_loss appended (1.3130)\n", - "Epoch 5212: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5212: accuracy appended (60.00%)\n", - "Epoch 5212: model set back to train mode\n", - "Epoch 5212: model parameters saved\n", - "Epoch 5213 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5213: avg_loss appended (1.3130)\n", - "Epoch 5213: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5213: accuracy appended (60.00%)\n", - "Epoch 5213: model set back to train mode\n", - "Epoch 5213: model parameters saved\n", - "Epoch 5214 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5214: avg_loss appended (1.3130)\n", - "Epoch 5214: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5214: accuracy appended (60.00%)\n", - "Epoch 5214: model set back to train mode\n", - "Epoch 5214: model parameters saved\n", - "Epoch 5215 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5215: avg_loss appended (1.3130)\n", - "Epoch 5215: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5215: accuracy appended (60.00%)\n", - "Epoch 5215: model set back to train mode\n", - "Epoch 5215: model parameters saved\n", - "Epoch 5216 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5216: avg_loss appended (1.3130)\n", - "Epoch 5216: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5216: accuracy appended (60.00%)\n", - "Epoch 5216: model set back to train mode\n", - "Epoch 5216: model parameters saved\n", - "Epoch 5217 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5217: avg_loss appended (1.3130)\n", - "Epoch 5217: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5217: accuracy appended (60.00%)\n", - "Epoch 5217: model set back to train mode\n", - "Epoch 5217: model parameters saved\n", - "Epoch 5218 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5218: avg_loss appended (1.3130)\n", - "Epoch 5218: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5218: accuracy appended (60.00%)\n", - "Epoch 5218: model set back to train mode\n", - "Epoch 5218: model parameters saved\n", - "Epoch 5219 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5219: avg_loss appended (1.3130)\n", - "Epoch 5219: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5219: accuracy appended (60.00%)\n", - "Epoch 5219: model set back to train mode\n", - "Epoch 5219: model parameters saved\n", - "Epoch 5220 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5220: avg_loss appended (1.3130)\n", - "Epoch 5220: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5220: accuracy appended (60.00%)\n", - "Epoch 5220: model set back to train mode\n", - "Epoch 5220: model parameters saved\n", - "Epoch 5221 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5221: avg_loss appended (1.3130)\n", - "Epoch 5221: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5221: accuracy appended (60.00%)\n", - "Epoch 5221: model set back to train mode\n", - "Epoch 5221: model parameters saved\n", - "Epoch 5222 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5222: avg_loss appended (1.3130)\n", - "Epoch 5222: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5222: accuracy appended (60.00%)\n", - "Epoch 5222: model set back to train mode\n", - "Epoch 5222: model parameters saved\n", - "Epoch 5223 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5223: avg_loss appended (1.3130)\n", - "Epoch 5223: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5223: accuracy appended (60.00%)\n", - "Epoch 5223: model set back to train mode\n", - "Epoch 5223: model parameters saved\n", - "Epoch 5224 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5224: avg_loss appended (1.3130)\n", - "Epoch 5224: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5224: accuracy appended (60.00%)\n", - "Epoch 5224: model set back to train mode\n", - "Epoch 5224: model parameters saved\n", - "Epoch 5225 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5225: avg_loss appended (1.3130)\n", - "Epoch 5225: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5225: accuracy appended (60.00%)\n", - "Epoch 5225: model set back to train mode\n", - "Epoch 5225: model parameters saved\n", - "Epoch 5226 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5226: avg_loss appended (1.3130)\n", - "Epoch 5226: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5226: accuracy appended (60.00%)\n", - "Epoch 5226: model set back to train mode\n", - "Epoch 5226: model parameters saved\n", - "Epoch 5227 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5227: avg_loss appended (1.3130)\n", - "Epoch 5227: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5227: accuracy appended (60.00%)\n", - "Epoch 5227: model set back to train mode\n", - "Epoch 5227: model parameters saved\n", - "Epoch 5228 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5228: avg_loss appended (1.3130)\n", - "Epoch 5228: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5228: accuracy appended (60.00%)\n", - "Epoch 5228: model set back to train mode\n", - "Epoch 5228: model parameters saved\n", - "Epoch 5229 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5229: avg_loss appended (1.3130)\n", - "Epoch 5229: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5229: accuracy appended (60.00%)\n", - "Epoch 5229: model set back to train mode\n", - "Epoch 5229: model parameters saved\n", - "Epoch 5230 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5230: avg_loss appended (1.3130)\n", - "Epoch 5230: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5230: accuracy appended (60.00%)\n", - "Epoch 5230: model set back to train mode\n", - "Epoch 5230: model parameters saved\n", - "Epoch 5231 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5231: avg_loss appended (1.3130)\n", - "Epoch 5231: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5231: accuracy appended (60.00%)\n", - "Epoch 5231: model set back to train mode\n", - "Epoch 5231: model parameters saved\n", - "Epoch 5232 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5232: avg_loss appended (1.3130)\n", - "Epoch 5232: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5232: accuracy appended (60.00%)\n", - "Epoch 5232: model set back to train mode\n", - "Epoch 5232: model parameters saved\n", - "Epoch 5233 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5233: avg_loss appended (1.3130)\n", - "Epoch 5233: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5233: accuracy appended (60.00%)\n", - "Epoch 5233: model set back to train mode\n", - "Epoch 5233: model parameters saved\n", - "Epoch 5234 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5234: avg_loss appended (1.3130)\n", - "Epoch 5234: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5234: accuracy appended (60.00%)\n", - "Epoch 5234: model set back to train mode\n", - "Epoch 5234: model parameters saved\n", - "Epoch 5235 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5235: avg_loss appended (1.3130)\n", - "Epoch 5235: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5235: accuracy appended (60.00%)\n", - "Epoch 5235: model set back to train mode\n", - "Epoch 5235: model parameters saved\n", - "Epoch 5236 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5236: avg_loss appended (1.3130)\n", - "Epoch 5236: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5236: accuracy appended (60.00%)\n", - "Epoch 5236: model set back to train mode\n", - "Epoch 5236: model parameters saved\n", - "Epoch 5237 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5237: avg_loss appended (1.3130)\n", - "Epoch 5237: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5237: accuracy appended (60.00%)\n", - "Epoch 5237: model set back to train mode\n", - "Epoch 5237: model parameters saved\n", - "Epoch 5238 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5238: avg_loss appended (1.3130)\n", - "Epoch 5238: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5238: accuracy appended (60.00%)\n", - "Epoch 5238: model set back to train mode\n", - "Epoch 5238: model parameters saved\n", - "Epoch 5239 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5239: avg_loss appended (1.3130)\n", - "Epoch 5239: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5239: accuracy appended (60.00%)\n", - "Epoch 5239: model set back to train mode\n", - "Epoch 5239: model parameters saved\n", - "Epoch 5240 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5240: avg_loss appended (1.3130)\n", - "Epoch 5240: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5240: accuracy appended (60.00%)\n", - "Epoch 5240: model set back to train mode\n", - "Epoch 5240: model parameters saved\n", - "Epoch 5241 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5241: avg_loss appended (1.3130)\n", - "Epoch 5241: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5241: accuracy appended (60.00%)\n", - "Epoch 5241: model set back to train mode\n", - "Epoch 5241: model parameters saved\n", - "Epoch 5242 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5242: avg_loss appended (1.3130)\n", - "Epoch 5242: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5242: accuracy appended (60.00%)\n", - "Epoch 5242: model set back to train mode\n", - "Epoch 5242: model parameters saved\n", - "Epoch 5243 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5243: avg_loss appended (1.3130)\n", - "Epoch 5243: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5243: accuracy appended (60.00%)\n", - "Epoch 5243: model set back to train mode\n", - "Epoch 5243: model parameters saved\n", - "Epoch 5244 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5244: avg_loss appended (1.3130)\n", - "Epoch 5244: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5244: accuracy appended (60.00%)\n", - "Epoch 5244: model set back to train mode\n", - "Epoch 5244: model parameters saved\n", - "Epoch 5245 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5245: avg_loss appended (1.3130)\n", - "Epoch 5245: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5245: accuracy appended (60.00%)\n", - "Epoch 5245: model set back to train mode\n", - "Epoch 5245: model parameters saved\n", - "Epoch 5246 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5246: avg_loss appended (1.3130)\n", - "Epoch 5246: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5246: accuracy appended (60.00%)\n", - "Epoch 5246: model set back to train mode\n", - "Epoch 5246: model parameters saved\n", - "Epoch 5247 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5247: avg_loss appended (1.3130)\n", - "Epoch 5247: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5247: accuracy appended (60.00%)\n", - "Epoch 5247: model set back to train mode\n", - "Epoch 5247: model parameters saved\n", - "Epoch 5248 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5248: avg_loss appended (1.3130)\n", - "Epoch 5248: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5248: accuracy appended (60.00%)\n", - "Epoch 5248: model set back to train mode\n", - "Epoch 5248: model parameters saved\n", - "Epoch 5249 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5249: avg_loss appended (1.3130)\n", - "Epoch 5249: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5249: accuracy appended (60.00%)\n", - "Epoch 5249: model set back to train mode\n", - "Epoch 5249: model parameters saved\n", - "Epoch 5250 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5250: avg_loss appended (1.3130)\n", - "Epoch 5250: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5250: accuracy appended (60.00%)\n", - "Epoch 5250: model set back to train mode\n", - "Epoch 5250: model parameters saved\n", - "Epoch 5251 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5251: avg_loss appended (1.3130)\n", - "Epoch 5251: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5251: accuracy appended (60.00%)\n", - "Epoch 5251: model set back to train mode\n", - "Epoch 5251: model parameters saved\n", - "Epoch 5252 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5252: avg_loss appended (1.3130)\n", - "Epoch 5252: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5252: accuracy appended (60.00%)\n", - "Epoch 5252: model set back to train mode\n", - "Epoch 5252: model parameters saved\n", - "Epoch 5253 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3130)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3130)\n", - "Epoch 5253: avg_loss appended (1.3130)\n", - "Epoch 5253: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5253: accuracy appended (60.00%)\n", - "Epoch 5253: model set back to train mode\n", - "Epoch 5253: model parameters saved\n", - "Epoch 5254 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5254: avg_loss appended (1.3129)\n", - "Epoch 5254: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5254: accuracy appended (60.00%)\n", - "Epoch 5254: model set back to train mode\n", - "Epoch 5254: model parameters saved\n", - "Epoch 5255 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5255: avg_loss appended (1.3129)\n", - "Epoch 5255: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5255: accuracy appended (60.00%)\n", - "Epoch 5255: model set back to train mode\n", - "Epoch 5255: model parameters saved\n", - "Epoch 5256 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5256: avg_loss appended (1.3129)\n", - "Epoch 5256: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5256: accuracy appended (60.00%)\n", - "Epoch 5256: model set back to train mode\n", - "Epoch 5256: model parameters saved\n", - "Epoch 5257 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5257: avg_loss appended (1.3129)\n", - "Epoch 5257: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5257: accuracy appended (60.00%)\n", - "Epoch 5257: model set back to train mode\n", - "Epoch 5257: model parameters saved\n", - "Epoch 5258 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5258: avg_loss appended (1.3129)\n", - "Epoch 5258: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5258: accuracy appended (60.00%)\n", - "Epoch 5258: model set back to train mode\n", - "Epoch 5258: model parameters saved\n", - "Epoch 5259 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5259: avg_loss appended (1.3129)\n", - "Epoch 5259: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5259: accuracy appended (60.00%)\n", - "Epoch 5259: model set back to train mode\n", - "Epoch 5259: model parameters saved\n", - "Epoch 5260 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5260: avg_loss appended (1.3129)\n", - "Epoch 5260: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5260: accuracy appended (60.00%)\n", - "Epoch 5260: model set back to train mode\n", - "Epoch 5260: model parameters saved\n", - "Epoch 5261 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5261: avg_loss appended (1.3129)\n", - "Epoch 5261: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5261: accuracy appended (60.00%)\n", - "Epoch 5261: model set back to train mode\n", - "Epoch 5261: model parameters saved\n", - "Epoch 5262 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5262: avg_loss appended (1.3129)\n", - "Epoch 5262: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5262: accuracy appended (60.00%)\n", - "Epoch 5262: model set back to train mode\n", - "Epoch 5262: model parameters saved\n", - "Epoch 5263 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5263: avg_loss appended (1.3129)\n", - "Epoch 5263: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5263: accuracy appended (60.00%)\n", - "Epoch 5263: model set back to train mode\n", - "Epoch 5263: model parameters saved\n", - "Epoch 5264 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5264: avg_loss appended (1.3129)\n", - "Epoch 5264: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5264: accuracy appended (60.00%)\n", - "Epoch 5264: model set back to train mode\n", - "Epoch 5264: model parameters saved\n", - "Epoch 5265 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5265: avg_loss appended (1.3129)\n", - "Epoch 5265: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5265: accuracy appended (60.00%)\n", - "Epoch 5265: model set back to train mode\n", - "Epoch 5265: model parameters saved\n", - "Epoch 5266 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5266: avg_loss appended (1.3129)\n", - "Epoch 5266: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5266: accuracy appended (60.00%)\n", - "Epoch 5266: model set back to train mode\n", - "Epoch 5266: model parameters saved\n", - "Epoch 5267 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5267: avg_loss appended (1.3129)\n", - "Epoch 5267: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5267: accuracy appended (60.00%)\n", - "Epoch 5267: model set back to train mode\n", - "Epoch 5267: model parameters saved\n", - "Epoch 5268 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5268: avg_loss appended (1.3129)\n", - "Epoch 5268: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5268: accuracy appended (60.00%)\n", - "Epoch 5268: model set back to train mode\n", - "Epoch 5268: model parameters saved\n", - "Epoch 5269 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5269: avg_loss appended (1.3129)\n", - "Epoch 5269: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5269: accuracy appended (60.00%)\n", - "Epoch 5269: model set back to train mode\n", - "Epoch 5269: model parameters saved\n", - "Epoch 5270 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5270: avg_loss appended (1.3129)\n", - "Epoch 5270: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5270: accuracy appended (60.00%)\n", - "Epoch 5270: model set back to train mode\n", - "Epoch 5270: model parameters saved\n", - "Epoch 5271 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5271: avg_loss appended (1.3129)\n", - "Epoch 5271: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5271: accuracy appended (60.00%)\n", - "Epoch 5271: model set back to train mode\n", - "Epoch 5271: model parameters saved\n", - "Epoch 5272 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5272: avg_loss appended (1.3129)\n", - "Epoch 5272: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5272: accuracy appended (60.00%)\n", - "Epoch 5272: model set back to train mode\n", - "Epoch 5272: model parameters saved\n", - "Epoch 5273 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5273: avg_loss appended (1.3129)\n", - "Epoch 5273: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5273: accuracy appended (60.00%)\n", - "Epoch 5273: model set back to train mode\n", - "Epoch 5273: model parameters saved\n", - "Epoch 5274 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5274: avg_loss appended (1.3129)\n", - "Epoch 5274: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5274: accuracy appended (60.00%)\n", - "Epoch 5274: model set back to train mode\n", - "Epoch 5274: model parameters saved\n", - "Epoch 5275 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5275: avg_loss appended (1.3129)\n", - "Epoch 5275: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5275: accuracy appended (60.00%)\n", - "Epoch 5275: model set back to train mode\n", - "Epoch 5275: model parameters saved\n", - "Epoch 5276 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5276: avg_loss appended (1.3129)\n", - "Epoch 5276: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5276: accuracy appended (60.00%)\n", - "Epoch 5276: model set back to train mode\n", - "Epoch 5276: model parameters saved\n", - "Epoch 5277 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5277: avg_loss appended (1.3129)\n", - "Epoch 5277: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5277: accuracy appended (60.00%)\n", - "Epoch 5277: model set back to train mode\n", - "Epoch 5277: model parameters saved\n", - "Epoch 5278 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5278: avg_loss appended (1.3129)\n", - "Epoch 5278: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5278: accuracy appended (60.00%)\n", - "Epoch 5278: model set back to train mode\n", - "Epoch 5278: model parameters saved\n", - "Epoch 5279 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5279: avg_loss appended (1.3129)\n", - "Epoch 5279: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5279: accuracy appended (60.00%)\n", - "Epoch 5279: model set back to train mode\n", - "Epoch 5279: model parameters saved\n", - "Epoch 5280 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5280: avg_loss appended (1.3129)\n", - "Epoch 5280: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5280: accuracy appended (60.00%)\n", - "Epoch 5280: model set back to train mode\n", - "Epoch 5280: model parameters saved\n", - "Epoch 5281 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5281: avg_loss appended (1.3129)\n", - "Epoch 5281: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5281: accuracy appended (60.00%)\n", - "Epoch 5281: model set back to train mode\n", - "Epoch 5281: model parameters saved\n", - "Epoch 5282 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5282: avg_loss appended (1.3129)\n", - "Epoch 5282: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5282: accuracy appended (60.00%)\n", - "Epoch 5282: model set back to train mode\n", - "Epoch 5282: model parameters saved\n", - "Epoch 5283 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5283: avg_loss appended (1.3129)\n", - "Epoch 5283: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5283: accuracy appended (60.00%)\n", - "Epoch 5283: model set back to train mode\n", - "Epoch 5283: model parameters saved\n", - "Epoch 5284 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5284: avg_loss appended (1.3129)\n", - "Epoch 5284: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5284: accuracy appended (60.00%)\n", - "Epoch 5284: model set back to train mode\n", - "Epoch 5284: model parameters saved\n", - "Epoch 5285 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5285: avg_loss appended (1.3129)\n", - "Epoch 5285: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5285: accuracy appended (60.00%)\n", - "Epoch 5285: model set back to train mode\n", - "Epoch 5285: model parameters saved\n", - "Epoch 5286 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5286: avg_loss appended (1.3129)\n", - "Epoch 5286: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5286: accuracy appended (60.00%)\n", - "Epoch 5286: model set back to train mode\n", - "Epoch 5286: model parameters saved\n", - "Epoch 5287 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5287: avg_loss appended (1.3129)\n", - "Epoch 5287: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5287: accuracy appended (60.00%)\n", - "Epoch 5287: model set back to train mode\n", - "Epoch 5287: model parameters saved\n", - "Epoch 5288 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5288: avg_loss appended (1.3129)\n", - "Epoch 5288: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5288: accuracy appended (60.00%)\n", - "Epoch 5288: model set back to train mode\n", - "Epoch 5288: model parameters saved\n", - "Epoch 5289 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5289: avg_loss appended (1.3129)\n", - "Epoch 5289: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5289: accuracy appended (60.00%)\n", - "Epoch 5289: model set back to train mode\n", - "Epoch 5289: model parameters saved\n", - "Epoch 5290 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5290: avg_loss appended (1.3129)\n", - "Epoch 5290: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5290: accuracy appended (60.00%)\n", - "Epoch 5290: model set back to train mode\n", - "Epoch 5290: model parameters saved\n", - "Epoch 5291 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5291: avg_loss appended (1.3129)\n", - "Epoch 5291: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5291: accuracy appended (60.00%)\n", - "Epoch 5291: model set back to train mode\n", - "Epoch 5291: model parameters saved\n", - "Epoch 5292 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5292: avg_loss appended (1.3129)\n", - "Epoch 5292: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5292: accuracy appended (60.00%)\n", - "Epoch 5292: model set back to train mode\n", - "Epoch 5292: model parameters saved\n", - "Epoch 5293 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5293: avg_loss appended (1.3129)\n", - "Epoch 5293: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5293: accuracy appended (60.00%)\n", - "Epoch 5293: model set back to train mode\n", - "Epoch 5293: model parameters saved\n", - "Epoch 5294 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5294: avg_loss appended (1.3129)\n", - "Epoch 5294: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5294: accuracy appended (60.00%)\n", - "Epoch 5294: model set back to train mode\n", - "Epoch 5294: model parameters saved\n", - "Epoch 5295 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5295: avg_loss appended (1.3129)\n", - "Epoch 5295: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5295: accuracy appended (60.00%)\n", - "Epoch 5295: model set back to train mode\n", - "Epoch 5295: model parameters saved\n", - "Epoch 5296 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5296: avg_loss appended (1.3129)\n", - "Epoch 5296: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5296: accuracy appended (60.00%)\n", - "Epoch 5296: model set back to train mode\n", - "Epoch 5296: model parameters saved\n", - "Epoch 5297 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5297: avg_loss appended (1.3129)\n", - "Epoch 5297: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5297: accuracy appended (60.00%)\n", - "Epoch 5297: model set back to train mode\n", - "Epoch 5297: model parameters saved\n", - "Epoch 5298 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5298: avg_loss appended (1.3129)\n", - "Epoch 5298: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5298: accuracy appended (60.00%)\n", - "Epoch 5298: model set back to train mode\n", - "Epoch 5298: model parameters saved\n", - "Epoch 5299 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5299: avg_loss appended (1.3129)\n", - "Epoch 5299: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5299: accuracy appended (60.00%)\n", - "Epoch 5299: model set back to train mode\n", - "Epoch 5299: model parameters saved\n", - "Epoch 5300 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5300: avg_loss appended (1.3129)\n", - "Epoch 5300: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5300: accuracy appended (60.00%)\n", - "Epoch 5300: model set back to train mode\n", - "Epoch 5300: model parameters saved\n", - "Epoch 5300/10000, Loss: 1.3129, Accuracy: 60.00%\n", - "Epoch 5301 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5301: avg_loss appended (1.3129)\n", - "Epoch 5301: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5301: accuracy appended (60.00%)\n", - "Epoch 5301: model set back to train mode\n", - "Epoch 5301: model parameters saved\n", - "Epoch 5302 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5302: avg_loss appended (1.3129)\n", - "Epoch 5302: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5302: accuracy appended (60.00%)\n", - "Epoch 5302: model set back to train mode\n", - "Epoch 5302: model parameters saved\n", - "Epoch 5303 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5303: avg_loss appended (1.3129)\n", - "Epoch 5303: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5303: accuracy appended (60.00%)\n", - "Epoch 5303: model set back to train mode\n", - "Epoch 5303: model parameters saved\n", - "Epoch 5304 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5304: avg_loss appended (1.3129)\n", - "Epoch 5304: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5304: accuracy appended (60.00%)\n", - "Epoch 5304: model set back to train mode\n", - "Epoch 5304: model parameters saved\n", - "Epoch 5305 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5305: avg_loss appended (1.3129)\n", - "Epoch 5305: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5305: accuracy appended (60.00%)\n", - "Epoch 5305: model set back to train mode\n", - "Epoch 5305: model parameters saved\n", - "Epoch 5306 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5306: avg_loss appended (1.3129)\n", - "Epoch 5306: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5306: accuracy appended (60.00%)\n", - "Epoch 5306: model set back to train mode\n", - "Epoch 5306: model parameters saved\n", - "Epoch 5307 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5307: avg_loss appended (1.3129)\n", - "Epoch 5307: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5307: accuracy appended (60.00%)\n", - "Epoch 5307: model set back to train mode\n", - "Epoch 5307: model parameters saved\n", - "Epoch 5308 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5308: avg_loss appended (1.3129)\n", - "Epoch 5308: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5308: accuracy appended (60.00%)\n", - "Epoch 5308: model set back to train mode\n", - "Epoch 5308: model parameters saved\n", - "Epoch 5309 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5309: avg_loss appended (1.3129)\n", - "Epoch 5309: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5309: accuracy appended (60.00%)\n", - "Epoch 5309: model set back to train mode\n", - "Epoch 5309: model parameters saved\n", - "Epoch 5310 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5310: avg_loss appended (1.3129)\n", - "Epoch 5310: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5310: accuracy appended (60.00%)\n", - "Epoch 5310: model set back to train mode\n", - "Epoch 5310: model parameters saved\n", - "Epoch 5311 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5311: avg_loss appended (1.3129)\n", - "Epoch 5311: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5311: accuracy appended (60.00%)\n", - "Epoch 5311: model set back to train mode\n", - "Epoch 5311: model parameters saved\n", - "Epoch 5312 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5312: avg_loss appended (1.3129)\n", - "Epoch 5312: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5312: accuracy appended (60.00%)\n", - "Epoch 5312: model set back to train mode\n", - "Epoch 5312: model parameters saved\n", - "Epoch 5313 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5313: avg_loss appended (1.3129)\n", - "Epoch 5313: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5313: accuracy appended (60.00%)\n", - "Epoch 5313: model set back to train mode\n", - "Epoch 5313: model parameters saved\n", - "Epoch 5314 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5314: avg_loss appended (1.3129)\n", - "Epoch 5314: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5314: accuracy appended (60.00%)\n", - "Epoch 5314: model set back to train mode\n", - "Epoch 5314: model parameters saved\n", - "Epoch 5315 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5315: avg_loss appended (1.3129)\n", - "Epoch 5315: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5315: accuracy appended (60.00%)\n", - "Epoch 5315: model set back to train mode\n", - "Epoch 5315: model parameters saved\n", - "Epoch 5316 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5316: avg_loss appended (1.3129)\n", - "Epoch 5316: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5316: accuracy appended (60.00%)\n", - "Epoch 5316: model set back to train mode\n", - "Epoch 5316: model parameters saved\n", - "Epoch 5317 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5317: avg_loss appended (1.3129)\n", - "Epoch 5317: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5317: accuracy appended (60.00%)\n", - "Epoch 5317: model set back to train mode\n", - "Epoch 5317: model parameters saved\n", - "Epoch 5318 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5318: avg_loss appended (1.3129)\n", - "Epoch 5318: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5318: accuracy appended (60.00%)\n", - "Epoch 5318: model set back to train mode\n", - "Epoch 5318: model parameters saved\n", - "Epoch 5319 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5319: avg_loss appended (1.3129)\n", - "Epoch 5319: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5319: accuracy appended (60.00%)\n", - "Epoch 5319: model set back to train mode\n", - "Epoch 5319: model parameters saved\n", - "Epoch 5320 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5320: avg_loss appended (1.3129)\n", - "Epoch 5320: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5320: accuracy appended (60.00%)\n", - "Epoch 5320: model set back to train mode\n", - "Epoch 5320: model parameters saved\n", - "Epoch 5321 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5321: avg_loss appended (1.3129)\n", - "Epoch 5321: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5321: accuracy appended (60.00%)\n", - "Epoch 5321: model set back to train mode\n", - "Epoch 5321: model parameters saved\n", - "Epoch 5322 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5322: avg_loss appended (1.3129)\n", - "Epoch 5322: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5322: accuracy appended (60.00%)\n", - "Epoch 5322: model set back to train mode\n", - "Epoch 5322: model parameters saved\n", - "Epoch 5323 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5323: avg_loss appended (1.3129)\n", - "Epoch 5323: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5323: accuracy appended (60.00%)\n", - "Epoch 5323: model set back to train mode\n", - "Epoch 5323: model parameters saved\n", - "Epoch 5324 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5324: avg_loss appended (1.3129)\n", - "Epoch 5324: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5324: accuracy appended (60.00%)\n", - "Epoch 5324: model set back to train mode\n", - "Epoch 5324: model parameters saved\n", - "Epoch 5325 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5325: avg_loss appended (1.3129)\n", - "Epoch 5325: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5325: accuracy appended (60.00%)\n", - "Epoch 5325: model set back to train mode\n", - "Epoch 5325: model parameters saved\n", - "Epoch 5326 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5326: avg_loss appended (1.3129)\n", - "Epoch 5326: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5326: accuracy appended (60.00%)\n", - "Epoch 5326: model set back to train mode\n", - "Epoch 5326: model parameters saved\n", - "Epoch 5327 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5327: avg_loss appended (1.3129)\n", - "Epoch 5327: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5327: accuracy appended (60.00%)\n", - "Epoch 5327: model set back to train mode\n", - "Epoch 5327: model parameters saved\n", - "Epoch 5328 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5328: avg_loss appended (1.3129)\n", - "Epoch 5328: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5328: accuracy appended (60.00%)\n", - "Epoch 5328: model set back to train mode\n", - "Epoch 5328: model parameters saved\n", - "Epoch 5329 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5329: avg_loss appended (1.3129)\n", - "Epoch 5329: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5329: accuracy appended (60.00%)\n", - "Epoch 5329: model set back to train mode\n", - "Epoch 5329: model parameters saved\n", - "Epoch 5330 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5330: avg_loss appended (1.3129)\n", - "Epoch 5330: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5330: accuracy appended (60.00%)\n", - "Epoch 5330: model set back to train mode\n", - "Epoch 5330: model parameters saved\n", - "Epoch 5331 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5331: avg_loss appended (1.3129)\n", - "Epoch 5331: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5331: accuracy appended (60.00%)\n", - "Epoch 5331: model set back to train mode\n", - "Epoch 5331: model parameters saved\n", - "Epoch 5332 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5332: avg_loss appended (1.3129)\n", - "Epoch 5332: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5332: accuracy appended (60.00%)\n", - "Epoch 5332: model set back to train mode\n", - "Epoch 5332: model parameters saved\n", - "Epoch 5333 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3129)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3129)\n", - "Epoch 5333: avg_loss appended (1.3129)\n", - "Epoch 5333: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5333: accuracy appended (60.00%)\n", - "Epoch 5333: model set back to train mode\n", - "Epoch 5333: model parameters saved\n", - "Epoch 5334 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5334: avg_loss appended (1.3128)\n", - "Epoch 5334: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5334: accuracy appended (60.00%)\n", - "Epoch 5334: model set back to train mode\n", - "Epoch 5334: model parameters saved\n", - "Epoch 5335 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5335: avg_loss appended (1.3128)\n", - "Epoch 5335: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5335: accuracy appended (60.00%)\n", - "Epoch 5335: model set back to train mode\n", - "Epoch 5335: model parameters saved\n", - "Epoch 5336 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5336: avg_loss appended (1.3128)\n", - "Epoch 5336: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5336: accuracy appended (60.00%)\n", - "Epoch 5336: model set back to train mode\n", - "Epoch 5336: model parameters saved\n", - "Epoch 5337 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5337: avg_loss appended (1.3128)\n", - "Epoch 5337: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5337: accuracy appended (60.00%)\n", - "Epoch 5337: model set back to train mode\n", - "Epoch 5337: model parameters saved\n", - "Epoch 5338 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5338: avg_loss appended (1.3128)\n", - "Epoch 5338: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5338: accuracy appended (60.00%)\n", - "Epoch 5338: model set back to train mode\n", - "Epoch 5338: model parameters saved\n", - "Epoch 5339 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5339: avg_loss appended (1.3128)\n", - "Epoch 5339: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5339: accuracy appended (60.00%)\n", - "Epoch 5339: model set back to train mode\n", - "Epoch 5339: model parameters saved\n", - "Epoch 5340 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5340: avg_loss appended (1.3128)\n", - "Epoch 5340: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5340: accuracy appended (60.00%)\n", - "Epoch 5340: model set back to train mode\n", - "Epoch 5340: model parameters saved\n", - "Epoch 5341 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5341: avg_loss appended (1.3128)\n", - "Epoch 5341: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5341: accuracy appended (60.00%)\n", - "Epoch 5341: model set back to train mode\n", - "Epoch 5341: model parameters saved\n", - "Epoch 5342 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5342: avg_loss appended (1.3128)\n", - "Epoch 5342: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5342: accuracy appended (60.00%)\n", - "Epoch 5342: model set back to train mode\n", - "Epoch 5342: model parameters saved\n", - "Epoch 5343 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5343: avg_loss appended (1.3128)\n", - "Epoch 5343: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5343: accuracy appended (60.00%)\n", - "Epoch 5343: model set back to train mode\n", - "Epoch 5343: model parameters saved\n", - "Epoch 5344 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5344: avg_loss appended (1.3128)\n", - "Epoch 5344: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5344: accuracy appended (60.00%)\n", - "Epoch 5344: model set back to train mode\n", - "Epoch 5344: model parameters saved\n", - "Epoch 5345 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5345: avg_loss appended (1.3128)\n", - "Epoch 5345: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5345: accuracy appended (60.00%)\n", - "Epoch 5345: model set back to train mode\n", - "Epoch 5345: model parameters saved\n", - "Epoch 5346 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5346: avg_loss appended (1.3128)\n", - "Epoch 5346: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5346: accuracy appended (60.00%)\n", - "Epoch 5346: model set back to train mode\n", - "Epoch 5346: model parameters saved\n", - "Epoch 5347 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5347: avg_loss appended (1.3128)\n", - "Epoch 5347: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5347: accuracy appended (60.00%)\n", - "Epoch 5347: model set back to train mode\n", - "Epoch 5347: model parameters saved\n", - "Epoch 5348 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5348: avg_loss appended (1.3128)\n", - "Epoch 5348: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5348: accuracy appended (60.00%)\n", - "Epoch 5348: model set back to train mode\n", - "Epoch 5348: model parameters saved\n", - "Epoch 5349 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5349: avg_loss appended (1.3128)\n", - "Epoch 5349: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5349: accuracy appended (60.00%)\n", - "Epoch 5349: model set back to train mode\n", - "Epoch 5349: model parameters saved\n", - "Epoch 5350 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5350: avg_loss appended (1.3128)\n", - "Epoch 5350: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5350: accuracy appended (60.00%)\n", - "Epoch 5350: model set back to train mode\n", - "Epoch 5350: model parameters saved\n", - "Epoch 5351 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5351: avg_loss appended (1.3128)\n", - "Epoch 5351: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5351: accuracy appended (60.00%)\n", - "Epoch 5351: model set back to train mode\n", - "Epoch 5351: model parameters saved\n", - "Epoch 5352 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5352: avg_loss appended (1.3128)\n", - "Epoch 5352: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5352: accuracy appended (60.00%)\n", - "Epoch 5352: model set back to train mode\n", - "Epoch 5352: model parameters saved\n", - "Epoch 5353 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5353: avg_loss appended (1.3128)\n", - "Epoch 5353: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5353: accuracy appended (60.00%)\n", - "Epoch 5353: model set back to train mode\n", - "Epoch 5353: model parameters saved\n", - "Epoch 5354 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5354: avg_loss appended (1.3128)\n", - "Epoch 5354: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5354: accuracy appended (60.00%)\n", - "Epoch 5354: model set back to train mode\n", - "Epoch 5354: model parameters saved\n", - "Epoch 5355 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5355: avg_loss appended (1.3128)\n", - "Epoch 5355: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5355: accuracy appended (60.00%)\n", - "Epoch 5355: model set back to train mode\n", - "Epoch 5355: model parameters saved\n", - "Epoch 5356 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5356: avg_loss appended (1.3128)\n", - "Epoch 5356: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5356: accuracy appended (60.00%)\n", - "Epoch 5356: model set back to train mode\n", - "Epoch 5356: model parameters saved\n", - "Epoch 5357 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5357: avg_loss appended (1.3128)\n", - "Epoch 5357: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5357: accuracy appended (60.00%)\n", - "Epoch 5357: model set back to train mode\n", - "Epoch 5357: model parameters saved\n", - "Epoch 5358 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5358: avg_loss appended (1.3128)\n", - "Epoch 5358: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5358: accuracy appended (60.00%)\n", - "Epoch 5358: model set back to train mode\n", - "Epoch 5358: model parameters saved\n", - "Epoch 5359 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5359: avg_loss appended (1.3128)\n", - "Epoch 5359: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5359: accuracy appended (60.00%)\n", - "Epoch 5359: model set back to train mode\n", - "Epoch 5359: model parameters saved\n", - "Epoch 5360 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5360: avg_loss appended (1.3128)\n", - "Epoch 5360: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5360: accuracy appended (60.00%)\n", - "Epoch 5360: model set back to train mode\n", - "Epoch 5360: model parameters saved\n", - "Epoch 5361 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5361: avg_loss appended (1.3128)\n", - "Epoch 5361: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5361: accuracy appended (60.00%)\n", - "Epoch 5361: model set back to train mode\n", - "Epoch 5361: model parameters saved\n", - "Epoch 5362 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5362: avg_loss appended (1.3128)\n", - "Epoch 5362: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5362: accuracy appended (60.00%)\n", - "Epoch 5362: model set back to train mode\n", - "Epoch 5362: model parameters saved\n", - "Epoch 5363 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5363: avg_loss appended (1.3128)\n", - "Epoch 5363: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5363: accuracy appended (60.00%)\n", - "Epoch 5363: model set back to train mode\n", - "Epoch 5363: model parameters saved\n", - "Epoch 5364 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5364: avg_loss appended (1.3128)\n", - "Epoch 5364: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5364: accuracy appended (60.00%)\n", - "Epoch 5364: model set back to train mode\n", - "Epoch 5364: model parameters saved\n", - "Epoch 5365 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5365: avg_loss appended (1.3128)\n", - "Epoch 5365: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5365: accuracy appended (60.00%)\n", - "Epoch 5365: model set back to train mode\n", - "Epoch 5365: model parameters saved\n", - "Epoch 5366 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5366: avg_loss appended (1.3128)\n", - "Epoch 5366: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5366: accuracy appended (60.00%)\n", - "Epoch 5366: model set back to train mode\n", - "Epoch 5366: model parameters saved\n", - "Epoch 5367 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5367: avg_loss appended (1.3128)\n", - "Epoch 5367: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5367: accuracy appended (60.00%)\n", - "Epoch 5367: model set back to train mode\n", - "Epoch 5367: model parameters saved\n", - "Epoch 5368 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5368: avg_loss appended (1.3128)\n", - "Epoch 5368: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5368: accuracy appended (60.00%)\n", - "Epoch 5368: model set back to train mode\n", - "Epoch 5368: model parameters saved\n", - "Epoch 5369 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5369: avg_loss appended (1.3128)\n", - "Epoch 5369: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5369: accuracy appended (60.00%)\n", - "Epoch 5369: model set back to train mode\n", - "Epoch 5369: model parameters saved\n", - "Epoch 5370 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5370: avg_loss appended (1.3128)\n", - "Epoch 5370: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5370: accuracy appended (60.00%)\n", - "Epoch 5370: model set back to train mode\n", - "Epoch 5370: model parameters saved\n", - "Epoch 5371 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5371: avg_loss appended (1.3128)\n", - "Epoch 5371: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5371: accuracy appended (60.00%)\n", - "Epoch 5371: model set back to train mode\n", - "Epoch 5371: model parameters saved\n", - "Epoch 5372 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5372: avg_loss appended (1.3128)\n", - "Epoch 5372: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5372: accuracy appended (60.00%)\n", - "Epoch 5372: model set back to train mode\n", - "Epoch 5372: model parameters saved\n", - "Epoch 5373 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5373: avg_loss appended (1.3128)\n", - "Epoch 5373: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5373: accuracy appended (60.00%)\n", - "Epoch 5373: model set back to train mode\n", - "Epoch 5373: model parameters saved\n", - "Epoch 5374 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5374: avg_loss appended (1.3128)\n", - "Epoch 5374: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5374: accuracy appended (60.00%)\n", - "Epoch 5374: model set back to train mode\n", - "Epoch 5374: model parameters saved\n", - "Epoch 5375 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5375: avg_loss appended (1.3128)\n", - "Epoch 5375: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5375: accuracy appended (60.00%)\n", - "Epoch 5375: model set back to train mode\n", - "Epoch 5375: model parameters saved\n", - "Epoch 5376 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5376: avg_loss appended (1.3128)\n", - "Epoch 5376: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5376: accuracy appended (60.00%)\n", - "Epoch 5376: model set back to train mode\n", - "Epoch 5376: model parameters saved\n", - "Epoch 5377 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5377: avg_loss appended (1.3128)\n", - "Epoch 5377: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5377: accuracy appended (60.00%)\n", - "Epoch 5377: model set back to train mode\n", - "Epoch 5377: model parameters saved\n", - "Epoch 5378 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5378: avg_loss appended (1.3128)\n", - "Epoch 5378: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5378: accuracy appended (60.00%)\n", - "Epoch 5378: model set back to train mode\n", - "Epoch 5378: model parameters saved\n", - "Epoch 5379 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5379: avg_loss appended (1.3128)\n", - "Epoch 5379: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5379: accuracy appended (60.00%)\n", - "Epoch 5379: model set back to train mode\n", - "Epoch 5379: model parameters saved\n", - "Epoch 5380 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5380: avg_loss appended (1.3128)\n", - "Epoch 5380: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5380: accuracy appended (60.00%)\n", - "Epoch 5380: model set back to train mode\n", - "Epoch 5380: model parameters saved\n", - "Epoch 5381 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5381: avg_loss appended (1.3128)\n", - "Epoch 5381: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5381: accuracy appended (60.00%)\n", - "Epoch 5381: model set back to train mode\n", - "Epoch 5381: model parameters saved\n", - "Epoch 5382 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5382: avg_loss appended (1.3128)\n", - "Epoch 5382: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5382: accuracy appended (60.00%)\n", - "Epoch 5382: model set back to train mode\n", - "Epoch 5382: model parameters saved\n", - "Epoch 5383 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5383: avg_loss appended (1.3128)\n", - "Epoch 5383: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5383: accuracy appended (60.00%)\n", - "Epoch 5383: model set back to train mode\n", - "Epoch 5383: model parameters saved\n", - "Epoch 5384 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5384: avg_loss appended (1.3128)\n", - "Epoch 5384: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5384: accuracy appended (60.00%)\n", - "Epoch 5384: model set back to train mode\n", - "Epoch 5384: model parameters saved\n", - "Epoch 5385 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5385: avg_loss appended (1.3128)\n", - "Epoch 5385: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5385: accuracy appended (60.00%)\n", - "Epoch 5385: model set back to train mode\n", - "Epoch 5385: model parameters saved\n", - "Epoch 5386 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5386: avg_loss appended (1.3128)\n", - "Epoch 5386: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5386: accuracy appended (60.00%)\n", - "Epoch 5386: model set back to train mode\n", - "Epoch 5386: model parameters saved\n", - "Epoch 5387 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5387: avg_loss appended (1.3128)\n", - "Epoch 5387: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5387: accuracy appended (60.00%)\n", - "Epoch 5387: model set back to train mode\n", - "Epoch 5387: model parameters saved\n", - "Epoch 5388 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5388: avg_loss appended (1.3128)\n", - "Epoch 5388: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5388: accuracy appended (60.00%)\n", - "Epoch 5388: model set back to train mode\n", - "Epoch 5388: model parameters saved\n", - "Epoch 5389 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5389: avg_loss appended (1.3128)\n", - "Epoch 5389: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5389: accuracy appended (60.00%)\n", - "Epoch 5389: model set back to train mode\n", - "Epoch 5389: model parameters saved\n", - "Epoch 5390 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5390: avg_loss appended (1.3128)\n", - "Epoch 5390: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5390: accuracy appended (60.00%)\n", - "Epoch 5390: model set back to train mode\n", - "Epoch 5390: model parameters saved\n", - "Epoch 5391 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5391: avg_loss appended (1.3128)\n", - "Epoch 5391: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5391: accuracy appended (60.00%)\n", - "Epoch 5391: model set back to train mode\n", - "Epoch 5391: model parameters saved\n", - "Epoch 5392 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5392: avg_loss appended (1.3128)\n", - "Epoch 5392: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5392: accuracy appended (60.00%)\n", - "Epoch 5392: model set back to train mode\n", - "Epoch 5392: model parameters saved\n", - "Epoch 5393 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5393: avg_loss appended (1.3128)\n", - "Epoch 5393: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5393: accuracy appended (60.00%)\n", - "Epoch 5393: model set back to train mode\n", - "Epoch 5393: model parameters saved\n", - "Epoch 5394 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5394: avg_loss appended (1.3128)\n", - "Epoch 5394: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5394: accuracy appended (60.00%)\n", - "Epoch 5394: model set back to train mode\n", - "Epoch 5394: model parameters saved\n", - "Epoch 5395 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5395: avg_loss appended (1.3128)\n", - "Epoch 5395: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5395: accuracy appended (60.00%)\n", - "Epoch 5395: model set back to train mode\n", - "Epoch 5395: model parameters saved\n", - "Epoch 5396 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5396: avg_loss appended (1.3128)\n", - "Epoch 5396: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5396: accuracy appended (60.00%)\n", - "Epoch 5396: model set back to train mode\n", - "Epoch 5396: model parameters saved\n", - "Epoch 5397 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5397: avg_loss appended (1.3128)\n", - "Epoch 5397: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5397: accuracy appended (60.00%)\n", - "Epoch 5397: model set back to train mode\n", - "Epoch 5397: model parameters saved\n", - "Epoch 5398 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5398: avg_loss appended (1.3128)\n", - "Epoch 5398: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5398: accuracy appended (60.00%)\n", - "Epoch 5398: model set back to train mode\n", - "Epoch 5398: model parameters saved\n", - "Epoch 5399 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5399: avg_loss appended (1.3128)\n", - "Epoch 5399: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5399: accuracy appended (60.00%)\n", - "Epoch 5399: model set back to train mode\n", - "Epoch 5399: model parameters saved\n", - "Epoch 5400 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5400: avg_loss appended (1.3128)\n", - "Epoch 5400: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5400: accuracy appended (60.00%)\n", - "Epoch 5400: model set back to train mode\n", - "Epoch 5400: model parameters saved\n", - "Epoch 5400/10000, Loss: 1.3128, Accuracy: 60.00%\n", - "Epoch 5401 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5401: avg_loss appended (1.3128)\n", - "Epoch 5401: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5401: accuracy appended (60.00%)\n", - "Epoch 5401: model set back to train mode\n", - "Epoch 5401: model parameters saved\n", - "Epoch 5402 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5402: avg_loss appended (1.3128)\n", - "Epoch 5402: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5402: accuracy appended (60.00%)\n", - "Epoch 5402: model set back to train mode\n", - "Epoch 5402: model parameters saved\n", - "Epoch 5403 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5403: avg_loss appended (1.3128)\n", - "Epoch 5403: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5403: accuracy appended (60.00%)\n", - "Epoch 5403: model set back to train mode\n", - "Epoch 5403: model parameters saved\n", - "Epoch 5404 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5404: avg_loss appended (1.3128)\n", - "Epoch 5404: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5404: accuracy appended (60.00%)\n", - "Epoch 5404: model set back to train mode\n", - "Epoch 5404: model parameters saved\n", - "Epoch 5405 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5405: avg_loss appended (1.3128)\n", - "Epoch 5405: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5405: accuracy appended (60.00%)\n", - "Epoch 5405: model set back to train mode\n", - "Epoch 5405: model parameters saved\n", - "Epoch 5406 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5406: avg_loss appended (1.3128)\n", - "Epoch 5406: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5406: accuracy appended (60.00%)\n", - "Epoch 5406: model set back to train mode\n", - "Epoch 5406: model parameters saved\n", - "Epoch 5407 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5407: avg_loss appended (1.3128)\n", - "Epoch 5407: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5407: accuracy appended (60.00%)\n", - "Epoch 5407: model set back to train mode\n", - "Epoch 5407: model parameters saved\n", - "Epoch 5408 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5408: avg_loss appended (1.3128)\n", - "Epoch 5408: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5408: accuracy appended (60.00%)\n", - "Epoch 5408: model set back to train mode\n", - "Epoch 5408: model parameters saved\n", - "Epoch 5409 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5409: avg_loss appended (1.3128)\n", - "Epoch 5409: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5409: accuracy appended (60.00%)\n", - "Epoch 5409: model set back to train mode\n", - "Epoch 5409: model parameters saved\n", - "Epoch 5410 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5410: avg_loss appended (1.3128)\n", - "Epoch 5410: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5410: accuracy appended (60.00%)\n", - "Epoch 5410: model set back to train mode\n", - "Epoch 5410: model parameters saved\n", - "Epoch 5411 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5411: avg_loss appended (1.3128)\n", - "Epoch 5411: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5411: accuracy appended (60.00%)\n", - "Epoch 5411: model set back to train mode\n", - "Epoch 5411: model parameters saved\n", - "Epoch 5412 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5412: avg_loss appended (1.3128)\n", - "Epoch 5412: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5412: accuracy appended (60.00%)\n", - "Epoch 5412: model set back to train mode\n", - "Epoch 5412: model parameters saved\n", - "Epoch 5413 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5413: avg_loss appended (1.3128)\n", - "Epoch 5413: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5413: accuracy appended (60.00%)\n", - "Epoch 5413: model set back to train mode\n", - "Epoch 5413: model parameters saved\n", - "Epoch 5414 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5414: avg_loss appended (1.3128)\n", - "Epoch 5414: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5414: accuracy appended (60.00%)\n", - "Epoch 5414: model set back to train mode\n", - "Epoch 5414: model parameters saved\n", - "Epoch 5415 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5415: avg_loss appended (1.3128)\n", - "Epoch 5415: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5415: accuracy appended (60.00%)\n", - "Epoch 5415: model set back to train mode\n", - "Epoch 5415: model parameters saved\n", - "Epoch 5416 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5416: avg_loss appended (1.3128)\n", - "Epoch 5416: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5416: accuracy appended (60.00%)\n", - "Epoch 5416: model set back to train mode\n", - "Epoch 5416: model parameters saved\n", - "Epoch 5417 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5417: avg_loss appended (1.3128)\n", - "Epoch 5417: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5417: accuracy appended (60.00%)\n", - "Epoch 5417: model set back to train mode\n", - "Epoch 5417: model parameters saved\n", - "Epoch 5418 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5418: avg_loss appended (1.3128)\n", - "Epoch 5418: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5418: accuracy appended (60.00%)\n", - "Epoch 5418: model set back to train mode\n", - "Epoch 5418: model parameters saved\n", - "Epoch 5419 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5419: avg_loss appended (1.3128)\n", - "Epoch 5419: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5419: accuracy appended (60.00%)\n", - "Epoch 5419: model set back to train mode\n", - "Epoch 5419: model parameters saved\n", - "Epoch 5420 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5420: avg_loss appended (1.3128)\n", - "Epoch 5420: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5420: accuracy appended (60.00%)\n", - "Epoch 5420: model set back to train mode\n", - "Epoch 5420: model parameters saved\n", - "Epoch 5421 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5421: avg_loss appended (1.3128)\n", - "Epoch 5421: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5421: accuracy appended (60.00%)\n", - "Epoch 5421: model set back to train mode\n", - "Epoch 5421: model parameters saved\n", - "Epoch 5422 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5422: avg_loss appended (1.3128)\n", - "Epoch 5422: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5422: accuracy appended (60.00%)\n", - "Epoch 5422: model set back to train mode\n", - "Epoch 5422: model parameters saved\n", - "Epoch 5423 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5423: avg_loss appended (1.3128)\n", - "Epoch 5423: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5423: accuracy appended (60.00%)\n", - "Epoch 5423: model set back to train mode\n", - "Epoch 5423: model parameters saved\n", - "Epoch 5424 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5424: avg_loss appended (1.3128)\n", - "Epoch 5424: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5424: accuracy appended (60.00%)\n", - "Epoch 5424: model set back to train mode\n", - "Epoch 5424: model parameters saved\n", - "Epoch 5425 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5425: avg_loss appended (1.3128)\n", - "Epoch 5425: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5425: accuracy appended (60.00%)\n", - "Epoch 5425: model set back to train mode\n", - "Epoch 5425: model parameters saved\n", - "Epoch 5426 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3128)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3128)\n", - "Epoch 5426: avg_loss appended (1.3128)\n", - "Epoch 5426: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5426: accuracy appended (60.00%)\n", - "Epoch 5426: model set back to train mode\n", - "Epoch 5426: model parameters saved\n", - "Epoch 5427 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5427: avg_loss appended (1.3127)\n", - "Epoch 5427: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5427: accuracy appended (60.00%)\n", - "Epoch 5427: model set back to train mode\n", - "Epoch 5427: model parameters saved\n", - "Epoch 5428 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5428: avg_loss appended (1.3127)\n", - "Epoch 5428: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5428: accuracy appended (60.00%)\n", - "Epoch 5428: model set back to train mode\n", - "Epoch 5428: model parameters saved\n", - "Epoch 5429 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5429: avg_loss appended (1.3127)\n", - "Epoch 5429: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5429: accuracy appended (60.00%)\n", - "Epoch 5429: model set back to train mode\n", - "Epoch 5429: model parameters saved\n", - "Epoch 5430 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5430: avg_loss appended (1.3127)\n", - "Epoch 5430: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5430: accuracy appended (60.00%)\n", - "Epoch 5430: model set back to train mode\n", - "Epoch 5430: model parameters saved\n", - "Epoch 5431 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5431: avg_loss appended (1.3127)\n", - "Epoch 5431: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5431: accuracy appended (60.00%)\n", - "Epoch 5431: model set back to train mode\n", - "Epoch 5431: model parameters saved\n", - "Epoch 5432 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5432: avg_loss appended (1.3127)\n", - "Epoch 5432: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5432: accuracy appended (60.00%)\n", - "Epoch 5432: model set back to train mode\n", - "Epoch 5432: model parameters saved\n", - "Epoch 5433 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5433: avg_loss appended (1.3127)\n", - "Epoch 5433: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5433: accuracy appended (60.00%)\n", - "Epoch 5433: model set back to train mode\n", - "Epoch 5433: model parameters saved\n", - "Epoch 5434 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5434: avg_loss appended (1.3127)\n", - "Epoch 5434: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5434: accuracy appended (60.00%)\n", - "Epoch 5434: model set back to train mode\n", - "Epoch 5434: model parameters saved\n", - "Epoch 5435 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5435: avg_loss appended (1.3127)\n", - "Epoch 5435: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5435: accuracy appended (60.00%)\n", - "Epoch 5435: model set back to train mode\n", - "Epoch 5435: model parameters saved\n", - "Epoch 5436 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5436: avg_loss appended (1.3127)\n", - "Epoch 5436: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5436: accuracy appended (60.00%)\n", - "Epoch 5436: model set back to train mode\n", - "Epoch 5436: model parameters saved\n", - "Epoch 5437 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5437: avg_loss appended (1.3127)\n", - "Epoch 5437: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5437: accuracy appended (60.00%)\n", - "Epoch 5437: model set back to train mode\n", - "Epoch 5437: model parameters saved\n", - "Epoch 5438 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5438: avg_loss appended (1.3127)\n", - "Epoch 5438: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5438: accuracy appended (60.00%)\n", - "Epoch 5438: model set back to train mode\n", - "Epoch 5438: model parameters saved\n", - "Epoch 5439 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5439: avg_loss appended (1.3127)\n", - "Epoch 5439: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5439: accuracy appended (60.00%)\n", - "Epoch 5439: model set back to train mode\n", - "Epoch 5439: model parameters saved\n", - "Epoch 5440 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5440: avg_loss appended (1.3127)\n", - "Epoch 5440: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5440: accuracy appended (60.00%)\n", - "Epoch 5440: model set back to train mode\n", - "Epoch 5440: model parameters saved\n", - "Epoch 5441 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5441: avg_loss appended (1.3127)\n", - "Epoch 5441: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5441: accuracy appended (60.00%)\n", - "Epoch 5441: model set back to train mode\n", - "Epoch 5441: model parameters saved\n", - "Epoch 5442 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5442: avg_loss appended (1.3127)\n", - "Epoch 5442: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5442: accuracy appended (60.00%)\n", - "Epoch 5442: model set back to train mode\n", - "Epoch 5442: model parameters saved\n", - "Epoch 5443 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5443: avg_loss appended (1.3127)\n", - "Epoch 5443: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5443: accuracy appended (60.00%)\n", - "Epoch 5443: model set back to train mode\n", - "Epoch 5443: model parameters saved\n", - "Epoch 5444 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5444: avg_loss appended (1.3127)\n", - "Epoch 5444: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5444: accuracy appended (60.00%)\n", - "Epoch 5444: model set back to train mode\n", - "Epoch 5444: model parameters saved\n", - "Epoch 5445 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5445: avg_loss appended (1.3127)\n", - "Epoch 5445: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5445: accuracy appended (60.00%)\n", - "Epoch 5445: model set back to train mode\n", - "Epoch 5445: model parameters saved\n", - "Epoch 5446 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5446: avg_loss appended (1.3127)\n", - "Epoch 5446: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5446: accuracy appended (60.00%)\n", - "Epoch 5446: model set back to train mode\n", - "Epoch 5446: model parameters saved\n", - "Epoch 5447 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5447: avg_loss appended (1.3127)\n", - "Epoch 5447: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5447: accuracy appended (60.00%)\n", - "Epoch 5447: model set back to train mode\n", - "Epoch 5447: model parameters saved\n", - "Epoch 5448 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5448: avg_loss appended (1.3127)\n", - "Epoch 5448: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5448: accuracy appended (60.00%)\n", - "Epoch 5448: model set back to train mode\n", - "Epoch 5448: model parameters saved\n", - "Epoch 5449 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5449: avg_loss appended (1.3127)\n", - "Epoch 5449: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5449: accuracy appended (60.00%)\n", - "Epoch 5449: model set back to train mode\n", - "Epoch 5449: model parameters saved\n", - "Epoch 5450 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5450: avg_loss appended (1.3127)\n", - "Epoch 5450: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5450: accuracy appended (60.00%)\n", - "Epoch 5450: model set back to train mode\n", - "Epoch 5450: model parameters saved\n", - "Epoch 5451 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5451: avg_loss appended (1.3127)\n", - "Epoch 5451: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5451: accuracy appended (60.00%)\n", - "Epoch 5451: model set back to train mode\n", - "Epoch 5451: model parameters saved\n", - "Epoch 5452 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5452: avg_loss appended (1.3127)\n", - "Epoch 5452: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5452: accuracy appended (60.00%)\n", - "Epoch 5452: model set back to train mode\n", - "Epoch 5452: model parameters saved\n", - "Epoch 5453 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5453: avg_loss appended (1.3127)\n", - "Epoch 5453: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5453: accuracy appended (60.00%)\n", - "Epoch 5453: model set back to train mode\n", - "Epoch 5453: model parameters saved\n", - "Epoch 5454 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5454: avg_loss appended (1.3127)\n", - "Epoch 5454: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5454: accuracy appended (60.00%)\n", - "Epoch 5454: model set back to train mode\n", - "Epoch 5454: model parameters saved\n", - "Epoch 5455 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5455: avg_loss appended (1.3127)\n", - "Epoch 5455: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5455: accuracy appended (60.00%)\n", - "Epoch 5455: model set back to train mode\n", - "Epoch 5455: model parameters saved\n", - "Epoch 5456 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5456: avg_loss appended (1.3127)\n", - "Epoch 5456: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5456: accuracy appended (60.00%)\n", - "Epoch 5456: model set back to train mode\n", - "Epoch 5456: model parameters saved\n", - "Epoch 5457 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5457: avg_loss appended (1.3127)\n", - "Epoch 5457: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5457: accuracy appended (60.00%)\n", - "Epoch 5457: model set back to train mode\n", - "Epoch 5457: model parameters saved\n", - "Epoch 5458 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5458: avg_loss appended (1.3127)\n", - "Epoch 5458: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5458: accuracy appended (60.00%)\n", - "Epoch 5458: model set back to train mode\n", - "Epoch 5458: model parameters saved\n", - "Epoch 5459 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5459: avg_loss appended (1.3127)\n", - "Epoch 5459: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5459: accuracy appended (60.00%)\n", - "Epoch 5459: model set back to train mode\n", - "Epoch 5459: model parameters saved\n", - "Epoch 5460 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5460: avg_loss appended (1.3127)\n", - "Epoch 5460: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5460: accuracy appended (60.00%)\n", - "Epoch 5460: model set back to train mode\n", - "Epoch 5460: model parameters saved\n", - "Epoch 5461 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5461: avg_loss appended (1.3127)\n", - "Epoch 5461: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5461: accuracy appended (60.00%)\n", - "Epoch 5461: model set back to train mode\n", - "Epoch 5461: model parameters saved\n", - "Epoch 5462 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5462: avg_loss appended (1.3127)\n", - "Epoch 5462: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5462: accuracy appended (60.00%)\n", - "Epoch 5462: model set back to train mode\n", - "Epoch 5462: model parameters saved\n", - "Epoch 5463 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5463: avg_loss appended (1.3127)\n", - "Epoch 5463: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5463: accuracy appended (60.00%)\n", - "Epoch 5463: model set back to train mode\n", - "Epoch 5463: model parameters saved\n", - "Epoch 5464 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5464: avg_loss appended (1.3127)\n", - "Epoch 5464: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5464: accuracy appended (60.00%)\n", - "Epoch 5464: model set back to train mode\n", - "Epoch 5464: model parameters saved\n", - "Epoch 5465 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5465: avg_loss appended (1.3127)\n", - "Epoch 5465: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5465: accuracy appended (60.00%)\n", - "Epoch 5465: model set back to train mode\n", - "Epoch 5465: model parameters saved\n", - "Epoch 5466 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5466: avg_loss appended (1.3127)\n", - "Epoch 5466: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5466: accuracy appended (60.00%)\n", - "Epoch 5466: model set back to train mode\n", - "Epoch 5466: model parameters saved\n", - "Epoch 5467 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5467: avg_loss appended (1.3127)\n", - "Epoch 5467: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5467: accuracy appended (60.00%)\n", - "Epoch 5467: model set back to train mode\n", - "Epoch 5467: model parameters saved\n", - "Epoch 5468 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5468: avg_loss appended (1.3127)\n", - "Epoch 5468: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5468: accuracy appended (60.00%)\n", - "Epoch 5468: model set back to train mode\n", - "Epoch 5468: model parameters saved\n", - "Epoch 5469 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5469: avg_loss appended (1.3127)\n", - "Epoch 5469: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5469: accuracy appended (60.00%)\n", - "Epoch 5469: model set back to train mode\n", - "Epoch 5469: model parameters saved\n", - "Epoch 5470 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5470: avg_loss appended (1.3127)\n", - "Epoch 5470: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5470: accuracy appended (60.00%)\n", - "Epoch 5470: model set back to train mode\n", - "Epoch 5470: model parameters saved\n", - "Epoch 5471 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5471: avg_loss appended (1.3127)\n", - "Epoch 5471: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5471: accuracy appended (60.00%)\n", - "Epoch 5471: model set back to train mode\n", - "Epoch 5471: model parameters saved\n", - "Epoch 5472 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5472: avg_loss appended (1.3127)\n", - "Epoch 5472: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5472: accuracy appended (60.00%)\n", - "Epoch 5472: model set back to train mode\n", - "Epoch 5472: model parameters saved\n", - "Epoch 5473 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5473: avg_loss appended (1.3127)\n", - "Epoch 5473: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5473: accuracy appended (60.00%)\n", - "Epoch 5473: model set back to train mode\n", - "Epoch 5473: model parameters saved\n", - "Epoch 5474 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5474: avg_loss appended (1.3127)\n", - "Epoch 5474: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5474: accuracy appended (60.00%)\n", - "Epoch 5474: model set back to train mode\n", - "Epoch 5474: model parameters saved\n", - "Epoch 5475 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5475: avg_loss appended (1.3127)\n", - "Epoch 5475: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5475: accuracy appended (60.00%)\n", - "Epoch 5475: model set back to train mode\n", - "Epoch 5475: model parameters saved\n", - "Epoch 5476 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5476: avg_loss appended (1.3127)\n", - "Epoch 5476: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5476: accuracy appended (60.00%)\n", - "Epoch 5476: model set back to train mode\n", - "Epoch 5476: model parameters saved\n", - "Epoch 5477 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5477: avg_loss appended (1.3127)\n", - "Epoch 5477: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5477: accuracy appended (60.00%)\n", - "Epoch 5477: model set back to train mode\n", - "Epoch 5477: model parameters saved\n", - "Epoch 5478 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5478: avg_loss appended (1.3127)\n", - "Epoch 5478: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5478: accuracy appended (60.00%)\n", - "Epoch 5478: model set back to train mode\n", - "Epoch 5478: model parameters saved\n", - "Epoch 5479 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5479: avg_loss appended (1.3127)\n", - "Epoch 5479: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5479: accuracy appended (60.00%)\n", - "Epoch 5479: model set back to train mode\n", - "Epoch 5479: model parameters saved\n", - "Epoch 5480 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5480: avg_loss appended (1.3127)\n", - "Epoch 5480: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5480: accuracy appended (60.00%)\n", - "Epoch 5480: model set back to train mode\n", - "Epoch 5480: model parameters saved\n", - "Epoch 5481 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5481: avg_loss appended (1.3127)\n", - "Epoch 5481: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5481: accuracy appended (60.00%)\n", - "Epoch 5481: model set back to train mode\n", - "Epoch 5481: model parameters saved\n", - "Epoch 5482 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5482: avg_loss appended (1.3127)\n", - "Epoch 5482: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5482: accuracy appended (60.00%)\n", - "Epoch 5482: model set back to train mode\n", - "Epoch 5482: model parameters saved\n", - "Epoch 5483 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5483: avg_loss appended (1.3127)\n", - "Epoch 5483: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5483: accuracy appended (60.00%)\n", - "Epoch 5483: model set back to train mode\n", - "Epoch 5483: model parameters saved\n", - "Epoch 5484 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5484: avg_loss appended (1.3127)\n", - "Epoch 5484: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5484: accuracy appended (60.00%)\n", - "Epoch 5484: model set back to train mode\n", - "Epoch 5484: model parameters saved\n", - "Epoch 5485 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5485: avg_loss appended (1.3127)\n", - "Epoch 5485: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5485: accuracy appended (60.00%)\n", - "Epoch 5485: model set back to train mode\n", - "Epoch 5485: model parameters saved\n", - "Epoch 5486 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5486: avg_loss appended (1.3127)\n", - "Epoch 5486: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5486: accuracy appended (60.00%)\n", - "Epoch 5486: model set back to train mode\n", - "Epoch 5486: model parameters saved\n", - "Epoch 5487 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5487: avg_loss appended (1.3127)\n", - "Epoch 5487: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5487: accuracy appended (60.00%)\n", - "Epoch 5487: model set back to train mode\n", - "Epoch 5487: model parameters saved\n", - "Epoch 5488 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5488: avg_loss appended (1.3127)\n", - "Epoch 5488: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5488: accuracy appended (60.00%)\n", - "Epoch 5488: model set back to train mode\n", - "Epoch 5488: model parameters saved\n", - "Epoch 5489 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5489: avg_loss appended (1.3127)\n", - "Epoch 5489: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5489: accuracy appended (60.00%)\n", - "Epoch 5489: model set back to train mode\n", - "Epoch 5489: model parameters saved\n", - "Epoch 5490 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5490: avg_loss appended (1.3127)\n", - "Epoch 5490: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5490: accuracy appended (60.00%)\n", - "Epoch 5490: model set back to train mode\n", - "Epoch 5490: model parameters saved\n", - "Epoch 5491 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5491: avg_loss appended (1.3127)\n", - "Epoch 5491: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5491: accuracy appended (60.00%)\n", - "Epoch 5491: model set back to train mode\n", - "Epoch 5491: model parameters saved\n", - "Epoch 5492 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5492: avg_loss appended (1.3127)\n", - "Epoch 5492: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5492: accuracy appended (60.00%)\n", - "Epoch 5492: model set back to train mode\n", - "Epoch 5492: model parameters saved\n", - "Epoch 5493 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5493: avg_loss appended (1.3127)\n", - "Epoch 5493: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5493: accuracy appended (60.00%)\n", - "Epoch 5493: model set back to train mode\n", - "Epoch 5493: model parameters saved\n", - "Epoch 5494 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5494: avg_loss appended (1.3127)\n", - "Epoch 5494: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5494: accuracy appended (60.00%)\n", - "Epoch 5494: model set back to train mode\n", - "Epoch 5494: model parameters saved\n", - "Epoch 5495 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5495: avg_loss appended (1.3127)\n", - "Epoch 5495: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5495: accuracy appended (60.00%)\n", - "Epoch 5495: model set back to train mode\n", - "Epoch 5495: model parameters saved\n", - "Epoch 5496 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5496: avg_loss appended (1.3127)\n", - "Epoch 5496: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5496: accuracy appended (60.00%)\n", - "Epoch 5496: model set back to train mode\n", - "Epoch 5496: model parameters saved\n", - "Epoch 5497 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5497: avg_loss appended (1.3127)\n", - "Epoch 5497: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5497: accuracy appended (60.00%)\n", - "Epoch 5497: model set back to train mode\n", - "Epoch 5497: model parameters saved\n", - "Epoch 5498 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5498: avg_loss appended (1.3127)\n", - "Epoch 5498: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5498: accuracy appended (60.00%)\n", - "Epoch 5498: model set back to train mode\n", - "Epoch 5498: model parameters saved\n", - "Epoch 5499 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5499: avg_loss appended (1.3127)\n", - "Epoch 5499: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5499: accuracy appended (60.00%)\n", - "Epoch 5499: model set back to train mode\n", - "Epoch 5499: model parameters saved\n", - "Epoch 5500 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5500: avg_loss appended (1.3127)\n", - "Epoch 5500: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5500: accuracy appended (60.00%)\n", - "Epoch 5500: model set back to train mode\n", - "Epoch 5500: model parameters saved\n", - "Epoch 5500/10000, Loss: 1.3127, Accuracy: 60.00%\n", - "Epoch 5501 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5501: avg_loss appended (1.3127)\n", - "Epoch 5501: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5501: accuracy appended (60.00%)\n", - "Epoch 5501: model set back to train mode\n", - "Epoch 5501: model parameters saved\n", - "Epoch 5502 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5502: avg_loss appended (1.3127)\n", - "Epoch 5502: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5502: accuracy appended (60.00%)\n", - "Epoch 5502: model set back to train mode\n", - "Epoch 5502: model parameters saved\n", - "Epoch 5503 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5503: avg_loss appended (1.3127)\n", - "Epoch 5503: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5503: accuracy appended (60.00%)\n", - "Epoch 5503: model set back to train mode\n", - "Epoch 5503: model parameters saved\n", - "Epoch 5504 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5504: avg_loss appended (1.3127)\n", - "Epoch 5504: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5504: accuracy appended (60.00%)\n", - "Epoch 5504: model set back to train mode\n", - "Epoch 5504: model parameters saved\n", - "Epoch 5505 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5505: avg_loss appended (1.3127)\n", - "Epoch 5505: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5505: accuracy appended (60.00%)\n", - "Epoch 5505: model set back to train mode\n", - "Epoch 5505: model parameters saved\n", - "Epoch 5506 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5506: avg_loss appended (1.3127)\n", - "Epoch 5506: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5506: accuracy appended (60.00%)\n", - "Epoch 5506: model set back to train mode\n", - "Epoch 5506: model parameters saved\n", - "Epoch 5507 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5507: avg_loss appended (1.3127)\n", - "Epoch 5507: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5507: accuracy appended (60.00%)\n", - "Epoch 5507: model set back to train mode\n", - "Epoch 5507: model parameters saved\n", - "Epoch 5508 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5508: avg_loss appended (1.3127)\n", - "Epoch 5508: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5508: accuracy appended (60.00%)\n", - "Epoch 5508: model set back to train mode\n", - "Epoch 5508: model parameters saved\n", - "Epoch 5509 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5509: avg_loss appended (1.3127)\n", - "Epoch 5509: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5509: accuracy appended (60.00%)\n", - "Epoch 5509: model set back to train mode\n", - "Epoch 5509: model parameters saved\n", - "Epoch 5510 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5510: avg_loss appended (1.3127)\n", - "Epoch 5510: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5510: accuracy appended (60.00%)\n", - "Epoch 5510: model set back to train mode\n", - "Epoch 5510: model parameters saved\n", - "Epoch 5511 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5511: avg_loss appended (1.3127)\n", - "Epoch 5511: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5511: accuracy appended (60.00%)\n", - "Epoch 5511: model set back to train mode\n", - "Epoch 5511: model parameters saved\n", - "Epoch 5512 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5512: avg_loss appended (1.3127)\n", - "Epoch 5512: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5512: accuracy appended (60.00%)\n", - "Epoch 5512: model set back to train mode\n", - "Epoch 5512: model parameters saved\n", - "Epoch 5513 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5513: avg_loss appended (1.3127)\n", - "Epoch 5513: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5513: accuracy appended (60.00%)\n", - "Epoch 5513: model set back to train mode\n", - "Epoch 5513: model parameters saved\n", - "Epoch 5514 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5514: avg_loss appended (1.3127)\n", - "Epoch 5514: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5514: accuracy appended (60.00%)\n", - "Epoch 5514: model set back to train mode\n", - "Epoch 5514: model parameters saved\n", - "Epoch 5515 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5515: avg_loss appended (1.3127)\n", - "Epoch 5515: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5515: accuracy appended (60.00%)\n", - "Epoch 5515: model set back to train mode\n", - "Epoch 5515: model parameters saved\n", - "Epoch 5516 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5516: avg_loss appended (1.3127)\n", - "Epoch 5516: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5516: accuracy appended (60.00%)\n", - "Epoch 5516: model set back to train mode\n", - "Epoch 5516: model parameters saved\n", - "Epoch 5517 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5517: avg_loss appended (1.3127)\n", - "Epoch 5517: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5517: accuracy appended (60.00%)\n", - "Epoch 5517: model set back to train mode\n", - "Epoch 5517: model parameters saved\n", - "Epoch 5518 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5518: avg_loss appended (1.3127)\n", - "Epoch 5518: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5518: accuracy appended (60.00%)\n", - "Epoch 5518: model set back to train mode\n", - "Epoch 5518: model parameters saved\n", - "Epoch 5519 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5519: avg_loss appended (1.3127)\n", - "Epoch 5519: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5519: accuracy appended (60.00%)\n", - "Epoch 5519: model set back to train mode\n", - "Epoch 5519: model parameters saved\n", - "Epoch 5520 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5520: avg_loss appended (1.3127)\n", - "Epoch 5520: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5520: accuracy appended (60.00%)\n", - "Epoch 5520: model set back to train mode\n", - "Epoch 5520: model parameters saved\n", - "Epoch 5521 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5521: avg_loss appended (1.3127)\n", - "Epoch 5521: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5521: accuracy appended (60.00%)\n", - "Epoch 5521: model set back to train mode\n", - "Epoch 5521: model parameters saved\n", - "Epoch 5522 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5522: avg_loss appended (1.3127)\n", - "Epoch 5522: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5522: accuracy appended (60.00%)\n", - "Epoch 5522: model set back to train mode\n", - "Epoch 5522: model parameters saved\n", - "Epoch 5523 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5523: avg_loss appended (1.3127)\n", - "Epoch 5523: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5523: accuracy appended (60.00%)\n", - "Epoch 5523: model set back to train mode\n", - "Epoch 5523: model parameters saved\n", - "Epoch 5524 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5524: avg_loss appended (1.3127)\n", - "Epoch 5524: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5524: accuracy appended (60.00%)\n", - "Epoch 5524: model set back to train mode\n", - "Epoch 5524: model parameters saved\n", - "Epoch 5525 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5525: avg_loss appended (1.3127)\n", - "Epoch 5525: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5525: accuracy appended (60.00%)\n", - "Epoch 5525: model set back to train mode\n", - "Epoch 5525: model parameters saved\n", - "Epoch 5526 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5526: avg_loss appended (1.3127)\n", - "Epoch 5526: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5526: accuracy appended (60.00%)\n", - "Epoch 5526: model set back to train mode\n", - "Epoch 5526: model parameters saved\n", - "Epoch 5527 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5527: avg_loss appended (1.3127)\n", - "Epoch 5527: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5527: accuracy appended (60.00%)\n", - "Epoch 5527: model set back to train mode\n", - "Epoch 5527: model parameters saved\n", - "Epoch 5528 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5528: avg_loss appended (1.3127)\n", - "Epoch 5528: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5528: accuracy appended (60.00%)\n", - "Epoch 5528: model set back to train mode\n", - "Epoch 5528: model parameters saved\n", - "Epoch 5529 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5529: avg_loss appended (1.3127)\n", - "Epoch 5529: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5529: accuracy appended (60.00%)\n", - "Epoch 5529: model set back to train mode\n", - "Epoch 5529: model parameters saved\n", - "Epoch 5530 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5530: avg_loss appended (1.3127)\n", - "Epoch 5530: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5530: accuracy appended (60.00%)\n", - "Epoch 5530: model set back to train mode\n", - "Epoch 5530: model parameters saved\n", - "Epoch 5531 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5531: avg_loss appended (1.3127)\n", - "Epoch 5531: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5531: accuracy appended (60.00%)\n", - "Epoch 5531: model set back to train mode\n", - "Epoch 5531: model parameters saved\n", - "Epoch 5532 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5532: avg_loss appended (1.3127)\n", - "Epoch 5532: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5532: accuracy appended (60.00%)\n", - "Epoch 5532: model set back to train mode\n", - "Epoch 5532: model parameters saved\n", - "Epoch 5533 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5533: avg_loss appended (1.3127)\n", - "Epoch 5533: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5533: accuracy appended (60.00%)\n", - "Epoch 5533: model set back to train mode\n", - "Epoch 5533: model parameters saved\n", - "Epoch 5534 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5534: avg_loss appended (1.3127)\n", - "Epoch 5534: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5534: accuracy appended (60.00%)\n", - "Epoch 5534: model set back to train mode\n", - "Epoch 5534: model parameters saved\n", - "Epoch 5535 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5535: avg_loss appended (1.3127)\n", - "Epoch 5535: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5535: accuracy appended (60.00%)\n", - "Epoch 5535: model set back to train mode\n", - "Epoch 5535: model parameters saved\n", - "Epoch 5536 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5536: avg_loss appended (1.3127)\n", - "Epoch 5536: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5536: accuracy appended (60.00%)\n", - "Epoch 5536: model set back to train mode\n", - "Epoch 5536: model parameters saved\n", - "Epoch 5537 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5537: avg_loss appended (1.3127)\n", - "Epoch 5537: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5537: accuracy appended (60.00%)\n", - "Epoch 5537: model set back to train mode\n", - "Epoch 5537: model parameters saved\n", - "Epoch 5538 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5538: avg_loss appended (1.3127)\n", - "Epoch 5538: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5538: accuracy appended (60.00%)\n", - "Epoch 5538: model set back to train mode\n", - "Epoch 5538: model parameters saved\n", - "Epoch 5539 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5539: avg_loss appended (1.3127)\n", - "Epoch 5539: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5539: accuracy appended (60.00%)\n", - "Epoch 5539: model set back to train mode\n", - "Epoch 5539: model parameters saved\n", - "Epoch 5540 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5540: avg_loss appended (1.3127)\n", - "Epoch 5540: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5540: accuracy appended (60.00%)\n", - "Epoch 5540: model set back to train mode\n", - "Epoch 5540: model parameters saved\n", - "Epoch 5541 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5541: avg_loss appended (1.3127)\n", - "Epoch 5541: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5541: accuracy appended (60.00%)\n", - "Epoch 5541: model set back to train mode\n", - "Epoch 5541: model parameters saved\n", - "Epoch 5542 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5542: avg_loss appended (1.3127)\n", - "Epoch 5542: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5542: accuracy appended (60.00%)\n", - "Epoch 5542: model set back to train mode\n", - "Epoch 5542: model parameters saved\n", - "Epoch 5543 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5543: avg_loss appended (1.3127)\n", - "Epoch 5543: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5543: accuracy appended (60.00%)\n", - "Epoch 5543: model set back to train mode\n", - "Epoch 5543: model parameters saved\n", - "Epoch 5544 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5544: avg_loss appended (1.3127)\n", - "Epoch 5544: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5544: accuracy appended (60.00%)\n", - "Epoch 5544: model set back to train mode\n", - "Epoch 5544: model parameters saved\n", - "Epoch 5545 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5545: avg_loss appended (1.3127)\n", - "Epoch 5545: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5545: accuracy appended (60.00%)\n", - "Epoch 5545: model set back to train mode\n", - "Epoch 5545: model parameters saved\n", - "Epoch 5546 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5546: avg_loss appended (1.3127)\n", - "Epoch 5546: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5546: accuracy appended (60.00%)\n", - "Epoch 5546: model set back to train mode\n", - "Epoch 5546: model parameters saved\n", - "Epoch 5547 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5547: avg_loss appended (1.3127)\n", - "Epoch 5547: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5547: accuracy appended (60.00%)\n", - "Epoch 5547: model set back to train mode\n", - "Epoch 5547: model parameters saved\n", - "Epoch 5548 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5548: avg_loss appended (1.3127)\n", - "Epoch 5548: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5548: accuracy appended (60.00%)\n", - "Epoch 5548: model set back to train mode\n", - "Epoch 5548: model parameters saved\n", - "Epoch 5549 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5549: avg_loss appended (1.3127)\n", - "Epoch 5549: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5549: accuracy appended (60.00%)\n", - "Epoch 5549: model set back to train mode\n", - "Epoch 5549: model parameters saved\n", - "Epoch 5550 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5550: avg_loss appended (1.3127)\n", - "Epoch 5550: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5550: accuracy appended (60.00%)\n", - "Epoch 5550: model set back to train mode\n", - "Epoch 5550: model parameters saved\n", - "Epoch 5551 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5551: avg_loss appended (1.3127)\n", - "Epoch 5551: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5551: accuracy appended (60.00%)\n", - "Epoch 5551: model set back to train mode\n", - "Epoch 5551: model parameters saved\n", - "Epoch 5552 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5552: avg_loss appended (1.3127)\n", - "Epoch 5552: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5552: accuracy appended (60.00%)\n", - "Epoch 5552: model set back to train mode\n", - "Epoch 5552: model parameters saved\n", - "Epoch 5553 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5553: avg_loss appended (1.3127)\n", - "Epoch 5553: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5553: accuracy appended (60.00%)\n", - "Epoch 5553: model set back to train mode\n", - "Epoch 5553: model parameters saved\n", - "Epoch 5554 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5554: avg_loss appended (1.3127)\n", - "Epoch 5554: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5554: accuracy appended (60.00%)\n", - "Epoch 5554: model set back to train mode\n", - "Epoch 5554: model parameters saved\n", - "Epoch 5555 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5555: avg_loss appended (1.3127)\n", - "Epoch 5555: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5555: accuracy appended (60.00%)\n", - "Epoch 5555: model set back to train mode\n", - "Epoch 5555: model parameters saved\n", - "Epoch 5556 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5556: avg_loss appended (1.3127)\n", - "Epoch 5556: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5556: accuracy appended (60.00%)\n", - "Epoch 5556: model set back to train mode\n", - "Epoch 5556: model parameters saved\n", - "Epoch 5557 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5557: avg_loss appended (1.3127)\n", - "Epoch 5557: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5557: accuracy appended (60.00%)\n", - "Epoch 5557: model set back to train mode\n", - "Epoch 5557: model parameters saved\n", - "Epoch 5558 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5558: avg_loss appended (1.3127)\n", - "Epoch 5558: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5558: accuracy appended (60.00%)\n", - "Epoch 5558: model set back to train mode\n", - "Epoch 5558: model parameters saved\n", - "Epoch 5559 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5559: avg_loss appended (1.3127)\n", - "Epoch 5559: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5559: accuracy appended (60.00%)\n", - "Epoch 5559: model set back to train mode\n", - "Epoch 5559: model parameters saved\n", - "Epoch 5560 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3127)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3127)\n", - "Epoch 5560: avg_loss appended (1.3127)\n", - "Epoch 5560: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5560: accuracy appended (60.00%)\n", - "Epoch 5560: model set back to train mode\n", - "Epoch 5560: model parameters saved\n", - "Epoch 5561 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5561: avg_loss appended (1.3126)\n", - "Epoch 5561: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5561: accuracy appended (60.00%)\n", - "Epoch 5561: model set back to train mode\n", - "Epoch 5561: model parameters saved\n", - "Epoch 5562 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5562: avg_loss appended (1.3126)\n", - "Epoch 5562: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5562: accuracy appended (60.00%)\n", - "Epoch 5562: model set back to train mode\n", - "Epoch 5562: model parameters saved\n", - "Epoch 5563 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5563: avg_loss appended (1.3126)\n", - "Epoch 5563: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5563: accuracy appended (60.00%)\n", - "Epoch 5563: model set back to train mode\n", - "Epoch 5563: model parameters saved\n", - "Epoch 5564 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5564: avg_loss appended (1.3126)\n", - "Epoch 5564: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5564: accuracy appended (60.00%)\n", - "Epoch 5564: model set back to train mode\n", - "Epoch 5564: model parameters saved\n", - "Epoch 5565 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5565: avg_loss appended (1.3126)\n", - "Epoch 5565: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5565: accuracy appended (60.00%)\n", - "Epoch 5565: model set back to train mode\n", - "Epoch 5565: model parameters saved\n", - "Epoch 5566 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5566: avg_loss appended (1.3126)\n", - "Epoch 5566: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5566: accuracy appended (60.00%)\n", - "Epoch 5566: model set back to train mode\n", - "Epoch 5566: model parameters saved\n", - "Epoch 5567 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5567: avg_loss appended (1.3126)\n", - "Epoch 5567: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5567: accuracy appended (60.00%)\n", - "Epoch 5567: model set back to train mode\n", - "Epoch 5567: model parameters saved\n", - "Epoch 5568 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5568: avg_loss appended (1.3126)\n", - "Epoch 5568: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5568: accuracy appended (60.00%)\n", - "Epoch 5568: model set back to train mode\n", - "Epoch 5568: model parameters saved\n", - "Epoch 5569 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5569: avg_loss appended (1.3126)\n", - "Epoch 5569: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5569: accuracy appended (60.00%)\n", - "Epoch 5569: model set back to train mode\n", - "Epoch 5569: model parameters saved\n", - "Epoch 5570 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5570: avg_loss appended (1.3126)\n", - "Epoch 5570: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5570: accuracy appended (60.00%)\n", - "Epoch 5570: model set back to train mode\n", - "Epoch 5570: model parameters saved\n", - "Epoch 5571 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5571: avg_loss appended (1.3126)\n", - "Epoch 5571: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5571: accuracy appended (60.00%)\n", - "Epoch 5571: model set back to train mode\n", - "Epoch 5571: model parameters saved\n", - "Epoch 5572 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5572: avg_loss appended (1.3126)\n", - "Epoch 5572: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5572: accuracy appended (60.00%)\n", - "Epoch 5572: model set back to train mode\n", - "Epoch 5572: model parameters saved\n", - "Epoch 5573 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5573: avg_loss appended (1.3126)\n", - "Epoch 5573: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5573: accuracy appended (60.00%)\n", - "Epoch 5573: model set back to train mode\n", - "Epoch 5573: model parameters saved\n", - "Epoch 5574 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5574: avg_loss appended (1.3126)\n", - "Epoch 5574: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5574: accuracy appended (60.00%)\n", - "Epoch 5574: model set back to train mode\n", - "Epoch 5574: model parameters saved\n", - "Epoch 5575 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5575: avg_loss appended (1.3126)\n", - "Epoch 5575: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5575: accuracy appended (60.00%)\n", - "Epoch 5575: model set back to train mode\n", - "Epoch 5575: model parameters saved\n", - "Epoch 5576 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5576: avg_loss appended (1.3126)\n", - "Epoch 5576: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5576: accuracy appended (60.00%)\n", - "Epoch 5576: model set back to train mode\n", - "Epoch 5576: model parameters saved\n", - "Epoch 5577 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5577: avg_loss appended (1.3126)\n", - "Epoch 5577: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5577: accuracy appended (60.00%)\n", - "Epoch 5577: model set back to train mode\n", - "Epoch 5577: model parameters saved\n", - "Epoch 5578 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5578: avg_loss appended (1.3126)\n", - "Epoch 5578: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5578: accuracy appended (60.00%)\n", - "Epoch 5578: model set back to train mode\n", - "Epoch 5578: model parameters saved\n", - "Epoch 5579 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5579: avg_loss appended (1.3126)\n", - "Epoch 5579: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5579: accuracy appended (60.00%)\n", - "Epoch 5579: model set back to train mode\n", - "Epoch 5579: model parameters saved\n", - "Epoch 5580 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5580: avg_loss appended (1.3126)\n", - "Epoch 5580: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5580: accuracy appended (60.00%)\n", - "Epoch 5580: model set back to train mode\n", - "Epoch 5580: model parameters saved\n", - "Epoch 5581 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5581: avg_loss appended (1.3126)\n", - "Epoch 5581: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5581: accuracy appended (60.00%)\n", - "Epoch 5581: model set back to train mode\n", - "Epoch 5581: model parameters saved\n", - "Epoch 5582 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5582: avg_loss appended (1.3126)\n", - "Epoch 5582: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5582: accuracy appended (60.00%)\n", - "Epoch 5582: model set back to train mode\n", - "Epoch 5582: model parameters saved\n", - "Epoch 5583 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5583: avg_loss appended (1.3126)\n", - "Epoch 5583: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5583: accuracy appended (60.00%)\n", - "Epoch 5583: model set back to train mode\n", - "Epoch 5583: model parameters saved\n", - "Epoch 5584 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5584: avg_loss appended (1.3126)\n", - "Epoch 5584: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5584: accuracy appended (60.00%)\n", - "Epoch 5584: model set back to train mode\n", - "Epoch 5584: model parameters saved\n", - "Epoch 5585 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5585: avg_loss appended (1.3126)\n", - "Epoch 5585: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5585: accuracy appended (60.00%)\n", - "Epoch 5585: model set back to train mode\n", - "Epoch 5585: model parameters saved\n", - "Epoch 5586 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5586: avg_loss appended (1.3126)\n", - "Epoch 5586: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5586: accuracy appended (60.00%)\n", - "Epoch 5586: model set back to train mode\n", - "Epoch 5586: model parameters saved\n", - "Epoch 5587 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5587: avg_loss appended (1.3126)\n", - "Epoch 5587: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5587: accuracy appended (60.00%)\n", - "Epoch 5587: model set back to train mode\n", - "Epoch 5587: model parameters saved\n", - "Epoch 5588 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5588: avg_loss appended (1.3126)\n", - "Epoch 5588: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5588: accuracy appended (60.00%)\n", - "Epoch 5588: model set back to train mode\n", - "Epoch 5588: model parameters saved\n", - "Epoch 5589 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5589: avg_loss appended (1.3126)\n", - "Epoch 5589: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5589: accuracy appended (60.00%)\n", - "Epoch 5589: model set back to train mode\n", - "Epoch 5589: model parameters saved\n", - "Epoch 5590 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5590: avg_loss appended (1.3126)\n", - "Epoch 5590: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5590: accuracy appended (60.00%)\n", - "Epoch 5590: model set back to train mode\n", - "Epoch 5590: model parameters saved\n", - "Epoch 5591 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5591: avg_loss appended (1.3126)\n", - "Epoch 5591: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5591: accuracy appended (60.00%)\n", - "Epoch 5591: model set back to train mode\n", - "Epoch 5591: model parameters saved\n", - "Epoch 5592 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5592: avg_loss appended (1.3126)\n", - "Epoch 5592: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5592: accuracy appended (60.00%)\n", - "Epoch 5592: model set back to train mode\n", - "Epoch 5592: model parameters saved\n", - "Epoch 5593 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5593: avg_loss appended (1.3126)\n", - "Epoch 5593: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5593: accuracy appended (60.00%)\n", - "Epoch 5593: model set back to train mode\n", - "Epoch 5593: model parameters saved\n", - "Epoch 5594 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5594: avg_loss appended (1.3126)\n", - "Epoch 5594: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5594: accuracy appended (60.00%)\n", - "Epoch 5594: model set back to train mode\n", - "Epoch 5594: model parameters saved\n", - "Epoch 5595 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5595: avg_loss appended (1.3126)\n", - "Epoch 5595: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5595: accuracy appended (60.00%)\n", - "Epoch 5595: model set back to train mode\n", - "Epoch 5595: model parameters saved\n", - "Epoch 5596 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5596: avg_loss appended (1.3126)\n", - "Epoch 5596: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5596: accuracy appended (60.00%)\n", - "Epoch 5596: model set back to train mode\n", - "Epoch 5596: model parameters saved\n", - "Epoch 5597 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5597: avg_loss appended (1.3126)\n", - "Epoch 5597: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5597: accuracy appended (60.00%)\n", - "Epoch 5597: model set back to train mode\n", - "Epoch 5597: model parameters saved\n", - "Epoch 5598 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5598: avg_loss appended (1.3126)\n", - "Epoch 5598: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5598: accuracy appended (60.00%)\n", - "Epoch 5598: model set back to train mode\n", - "Epoch 5598: model parameters saved\n", - "Epoch 5599 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5599: avg_loss appended (1.3126)\n", - "Epoch 5599: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5599: accuracy appended (60.00%)\n", - "Epoch 5599: model set back to train mode\n", - "Epoch 5599: model parameters saved\n", - "Epoch 5600 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5600: avg_loss appended (1.3126)\n", - "Epoch 5600: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5600: accuracy appended (60.00%)\n", - "Epoch 5600: model set back to train mode\n", - "Epoch 5600: model parameters saved\n", - "Epoch 5600/10000, Loss: 1.3126, Accuracy: 60.00%\n", - "Epoch 5601 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5601: avg_loss appended (1.3126)\n", - "Epoch 5601: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5601: accuracy appended (60.00%)\n", - "Epoch 5601: model set back to train mode\n", - "Epoch 5601: model parameters saved\n", - "Epoch 5602 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5602: avg_loss appended (1.3126)\n", - "Epoch 5602: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5602: accuracy appended (60.00%)\n", - "Epoch 5602: model set back to train mode\n", - "Epoch 5602: model parameters saved\n", - "Epoch 5603 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5603: avg_loss appended (1.3126)\n", - "Epoch 5603: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5603: accuracy appended (60.00%)\n", - "Epoch 5603: model set back to train mode\n", - "Epoch 5603: model parameters saved\n", - "Epoch 5604 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5604: avg_loss appended (1.3126)\n", - "Epoch 5604: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5604: accuracy appended (60.00%)\n", - "Epoch 5604: model set back to train mode\n", - "Epoch 5604: model parameters saved\n", - "Epoch 5605 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5605: avg_loss appended (1.3126)\n", - "Epoch 5605: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5605: accuracy appended (60.00%)\n", - "Epoch 5605: model set back to train mode\n", - "Epoch 5605: model parameters saved\n", - "Epoch 5606 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5606: avg_loss appended (1.3126)\n", - "Epoch 5606: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5606: accuracy appended (60.00%)\n", - "Epoch 5606: model set back to train mode\n", - "Epoch 5606: model parameters saved\n", - "Epoch 5607 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5607: avg_loss appended (1.3126)\n", - "Epoch 5607: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5607: accuracy appended (60.00%)\n", - "Epoch 5607: model set back to train mode\n", - "Epoch 5607: model parameters saved\n", - "Epoch 5608 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5608: avg_loss appended (1.3126)\n", - "Epoch 5608: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5608: accuracy appended (60.00%)\n", - "Epoch 5608: model set back to train mode\n", - "Epoch 5608: model parameters saved\n", - "Epoch 5609 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5609: avg_loss appended (1.3126)\n", - "Epoch 5609: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5609: accuracy appended (60.00%)\n", - "Epoch 5609: model set back to train mode\n", - "Epoch 5609: model parameters saved\n", - "Epoch 5610 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5610: avg_loss appended (1.3126)\n", - "Epoch 5610: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5610: accuracy appended (60.00%)\n", - "Epoch 5610: model set back to train mode\n", - "Epoch 5610: model parameters saved\n", - "Epoch 5611 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5611: avg_loss appended (1.3126)\n", - "Epoch 5611: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5611: accuracy appended (60.00%)\n", - "Epoch 5611: model set back to train mode\n", - "Epoch 5611: model parameters saved\n", - "Epoch 5612 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5612: avg_loss appended (1.3126)\n", - "Epoch 5612: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5612: accuracy appended (60.00%)\n", - "Epoch 5612: model set back to train mode\n", - "Epoch 5612: model parameters saved\n", - "Epoch 5613 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5613: avg_loss appended (1.3126)\n", - "Epoch 5613: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5613: accuracy appended (60.00%)\n", - "Epoch 5613: model set back to train mode\n", - "Epoch 5613: model parameters saved\n", - "Epoch 5614 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5614: avg_loss appended (1.3126)\n", - "Epoch 5614: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5614: accuracy appended (60.00%)\n", - "Epoch 5614: model set back to train mode\n", - "Epoch 5614: model parameters saved\n", - "Epoch 5615 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5615: avg_loss appended (1.3126)\n", - "Epoch 5615: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5615: accuracy appended (60.00%)\n", - "Epoch 5615: model set back to train mode\n", - "Epoch 5615: model parameters saved\n", - "Epoch 5616 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5616: avg_loss appended (1.3126)\n", - "Epoch 5616: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5616: accuracy appended (60.00%)\n", - "Epoch 5616: model set back to train mode\n", - "Epoch 5616: model parameters saved\n", - "Epoch 5617 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5617: avg_loss appended (1.3126)\n", - "Epoch 5617: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5617: accuracy appended (60.00%)\n", - "Epoch 5617: model set back to train mode\n", - "Epoch 5617: model parameters saved\n", - "Epoch 5618 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5618: avg_loss appended (1.3126)\n", - "Epoch 5618: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5618: accuracy appended (60.00%)\n", - "Epoch 5618: model set back to train mode\n", - "Epoch 5618: model parameters saved\n", - "Epoch 5619 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5619: avg_loss appended (1.3126)\n", - "Epoch 5619: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5619: accuracy appended (60.00%)\n", - "Epoch 5619: model set back to train mode\n", - "Epoch 5619: model parameters saved\n", - "Epoch 5620 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5620: avg_loss appended (1.3126)\n", - "Epoch 5620: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5620: accuracy appended (60.00%)\n", - "Epoch 5620: model set back to train mode\n", - "Epoch 5620: model parameters saved\n", - "Epoch 5621 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5621: avg_loss appended (1.3126)\n", - "Epoch 5621: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5621: accuracy appended (60.00%)\n", - "Epoch 5621: model set back to train mode\n", - "Epoch 5621: model parameters saved\n", - "Epoch 5622 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5622: avg_loss appended (1.3126)\n", - "Epoch 5622: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5622: accuracy appended (60.00%)\n", - "Epoch 5622: model set back to train mode\n", - "Epoch 5622: model parameters saved\n", - "Epoch 5623 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5623: avg_loss appended (1.3126)\n", - "Epoch 5623: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5623: accuracy appended (60.00%)\n", - "Epoch 5623: model set back to train mode\n", - "Epoch 5623: model parameters saved\n", - "Epoch 5624 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5624: avg_loss appended (1.3126)\n", - "Epoch 5624: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5624: accuracy appended (60.00%)\n", - "Epoch 5624: model set back to train mode\n", - "Epoch 5624: model parameters saved\n", - "Epoch 5625 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5625: avg_loss appended (1.3126)\n", - "Epoch 5625: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5625: accuracy appended (60.00%)\n", - "Epoch 5625: model set back to train mode\n", - "Epoch 5625: model parameters saved\n", - "Epoch 5626 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5626: avg_loss appended (1.3126)\n", - "Epoch 5626: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5626: accuracy appended (60.00%)\n", - "Epoch 5626: model set back to train mode\n", - "Epoch 5626: model parameters saved\n", - "Epoch 5627 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5627: avg_loss appended (1.3126)\n", - "Epoch 5627: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5627: accuracy appended (60.00%)\n", - "Epoch 5627: model set back to train mode\n", - "Epoch 5627: model parameters saved\n", - "Epoch 5628 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5628: avg_loss appended (1.3126)\n", - "Epoch 5628: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5628: accuracy appended (60.00%)\n", - "Epoch 5628: model set back to train mode\n", - "Epoch 5628: model parameters saved\n", - "Epoch 5629 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5629: avg_loss appended (1.3126)\n", - "Epoch 5629: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5629: accuracy appended (60.00%)\n", - "Epoch 5629: model set back to train mode\n", - "Epoch 5629: model parameters saved\n", - "Epoch 5630 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5630: avg_loss appended (1.3126)\n", - "Epoch 5630: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5630: accuracy appended (60.00%)\n", - "Epoch 5630: model set back to train mode\n", - "Epoch 5630: model parameters saved\n", - "Epoch 5631 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5631: avg_loss appended (1.3126)\n", - "Epoch 5631: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5631: accuracy appended (60.00%)\n", - "Epoch 5631: model set back to train mode\n", - "Epoch 5631: model parameters saved\n", - "Epoch 5632 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5632: avg_loss appended (1.3126)\n", - "Epoch 5632: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5632: accuracy appended (60.00%)\n", - "Epoch 5632: model set back to train mode\n", - "Epoch 5632: model parameters saved\n", - "Epoch 5633 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5633: avg_loss appended (1.3126)\n", - "Epoch 5633: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5633: accuracy appended (60.00%)\n", - "Epoch 5633: model set back to train mode\n", - "Epoch 5633: model parameters saved\n", - "Epoch 5634 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5634: avg_loss appended (1.3126)\n", - "Epoch 5634: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5634: accuracy appended (60.00%)\n", - "Epoch 5634: model set back to train mode\n", - "Epoch 5634: model parameters saved\n", - "Epoch 5635 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5635: avg_loss appended (1.3126)\n", - "Epoch 5635: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5635: accuracy appended (60.00%)\n", - "Epoch 5635: model set back to train mode\n", - "Epoch 5635: model parameters saved\n", - "Epoch 5636 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5636: avg_loss appended (1.3126)\n", - "Epoch 5636: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5636: accuracy appended (60.00%)\n", - "Epoch 5636: model set back to train mode\n", - "Epoch 5636: model parameters saved\n", - "Epoch 5637 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5637: avg_loss appended (1.3126)\n", - "Epoch 5637: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5637: accuracy appended (60.00%)\n", - "Epoch 5637: model set back to train mode\n", - "Epoch 5637: model parameters saved\n", - "Epoch 5638 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5638: avg_loss appended (1.3126)\n", - "Epoch 5638: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5638: accuracy appended (60.00%)\n", - "Epoch 5638: model set back to train mode\n", - "Epoch 5638: model parameters saved\n", - "Epoch 5639 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5639: avg_loss appended (1.3126)\n", - "Epoch 5639: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5639: accuracy appended (60.00%)\n", - "Epoch 5639: model set back to train mode\n", - "Epoch 5639: model parameters saved\n", - "Epoch 5640 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5640: avg_loss appended (1.3126)\n", - "Epoch 5640: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5640: accuracy appended (60.00%)\n", - "Epoch 5640: model set back to train mode\n", - "Epoch 5640: model parameters saved\n", - "Epoch 5641 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5641: avg_loss appended (1.3126)\n", - "Epoch 5641: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5641: accuracy appended (60.00%)\n", - "Epoch 5641: model set back to train mode\n", - "Epoch 5641: model parameters saved\n", - "Epoch 5642 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5642: avg_loss appended (1.3126)\n", - "Epoch 5642: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5642: accuracy appended (60.00%)\n", - "Epoch 5642: model set back to train mode\n", - "Epoch 5642: model parameters saved\n", - "Epoch 5643 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5643: avg_loss appended (1.3126)\n", - "Epoch 5643: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5643: accuracy appended (60.00%)\n", - "Epoch 5643: model set back to train mode\n", - "Epoch 5643: model parameters saved\n", - "Epoch 5644 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5644: avg_loss appended (1.3126)\n", - "Epoch 5644: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5644: accuracy appended (60.00%)\n", - "Epoch 5644: model set back to train mode\n", - "Epoch 5644: model parameters saved\n", - "Epoch 5645 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5645: avg_loss appended (1.3126)\n", - "Epoch 5645: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5645: accuracy appended (60.00%)\n", - "Epoch 5645: model set back to train mode\n", - "Epoch 5645: model parameters saved\n", - "Epoch 5646 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5646: avg_loss appended (1.3126)\n", - "Epoch 5646: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5646: accuracy appended (60.00%)\n", - "Epoch 5646: model set back to train mode\n", - "Epoch 5646: model parameters saved\n", - "Epoch 5647 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5647: avg_loss appended (1.3126)\n", - "Epoch 5647: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5647: accuracy appended (60.00%)\n", - "Epoch 5647: model set back to train mode\n", - "Epoch 5647: model parameters saved\n", - "Epoch 5648 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5648: avg_loss appended (1.3126)\n", - "Epoch 5648: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5648: accuracy appended (60.00%)\n", - "Epoch 5648: model set back to train mode\n", - "Epoch 5648: model parameters saved\n", - "Epoch 5649 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5649: avg_loss appended (1.3126)\n", - "Epoch 5649: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5649: accuracy appended (60.00%)\n", - "Epoch 5649: model set back to train mode\n", - "Epoch 5649: model parameters saved\n", - "Epoch 5650 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5650: avg_loss appended (1.3126)\n", - "Epoch 5650: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5650: accuracy appended (60.00%)\n", - "Epoch 5650: model set back to train mode\n", - "Epoch 5650: model parameters saved\n", - "Epoch 5651 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5651: avg_loss appended (1.3126)\n", - "Epoch 5651: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5651: accuracy appended (60.00%)\n", - "Epoch 5651: model set back to train mode\n", - "Epoch 5651: model parameters saved\n", - "Epoch 5652 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5652: avg_loss appended (1.3126)\n", - "Epoch 5652: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5652: accuracy appended (60.00%)\n", - "Epoch 5652: model set back to train mode\n", - "Epoch 5652: model parameters saved\n", - "Epoch 5653 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5653: avg_loss appended (1.3126)\n", - "Epoch 5653: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5653: accuracy appended (60.00%)\n", - "Epoch 5653: model set back to train mode\n", - "Epoch 5653: model parameters saved\n", - "Epoch 5654 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5654: avg_loss appended (1.3126)\n", - "Epoch 5654: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5654: accuracy appended (60.00%)\n", - "Epoch 5654: model set back to train mode\n", - "Epoch 5654: model parameters saved\n", - "Epoch 5655 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5655: avg_loss appended (1.3126)\n", - "Epoch 5655: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5655: accuracy appended (60.00%)\n", - "Epoch 5655: model set back to train mode\n", - "Epoch 5655: model parameters saved\n", - "Epoch 5656 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5656: avg_loss appended (1.3126)\n", - "Epoch 5656: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5656: accuracy appended (60.00%)\n", - "Epoch 5656: model set back to train mode\n", - "Epoch 5656: model parameters saved\n", - "Epoch 5657 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5657: avg_loss appended (1.3126)\n", - "Epoch 5657: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5657: accuracy appended (60.00%)\n", - "Epoch 5657: model set back to train mode\n", - "Epoch 5657: model parameters saved\n", - "Epoch 5658 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5658: avg_loss appended (1.3126)\n", - "Epoch 5658: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5658: accuracy appended (60.00%)\n", - "Epoch 5658: model set back to train mode\n", - "Epoch 5658: model parameters saved\n", - "Epoch 5659 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5659: avg_loss appended (1.3126)\n", - "Epoch 5659: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5659: accuracy appended (60.00%)\n", - "Epoch 5659: model set back to train mode\n", - "Epoch 5659: model parameters saved\n", - "Epoch 5660 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5660: avg_loss appended (1.3126)\n", - "Epoch 5660: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5660: accuracy appended (60.00%)\n", - "Epoch 5660: model set back to train mode\n", - "Epoch 5660: model parameters saved\n", - "Epoch 5661 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5661: avg_loss appended (1.3126)\n", - "Epoch 5661: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5661: accuracy appended (60.00%)\n", - "Epoch 5661: model set back to train mode\n", - "Epoch 5661: model parameters saved\n", - "Epoch 5662 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5662: avg_loss appended (1.3126)\n", - "Epoch 5662: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5662: accuracy appended (60.00%)\n", - "Epoch 5662: model set back to train mode\n", - "Epoch 5662: model parameters saved\n", - "Epoch 5663 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5663: avg_loss appended (1.3126)\n", - "Epoch 5663: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5663: accuracy appended (60.00%)\n", - "Epoch 5663: model set back to train mode\n", - "Epoch 5663: model parameters saved\n", - "Epoch 5664 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5664: avg_loss appended (1.3126)\n", - "Epoch 5664: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5664: accuracy appended (60.00%)\n", - "Epoch 5664: model set back to train mode\n", - "Epoch 5664: model parameters saved\n", - "Epoch 5665 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5665: avg_loss appended (1.3126)\n", - "Epoch 5665: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5665: accuracy appended (60.00%)\n", - "Epoch 5665: model set back to train mode\n", - "Epoch 5665: model parameters saved\n", - "Epoch 5666 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5666: avg_loss appended (1.3126)\n", - "Epoch 5666: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5666: accuracy appended (60.00%)\n", - "Epoch 5666: model set back to train mode\n", - "Epoch 5666: model parameters saved\n", - "Epoch 5667 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5667: avg_loss appended (1.3126)\n", - "Epoch 5667: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5667: accuracy appended (60.00%)\n", - "Epoch 5667: model set back to train mode\n", - "Epoch 5667: model parameters saved\n", - "Epoch 5668 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5668: avg_loss appended (1.3126)\n", - "Epoch 5668: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5668: accuracy appended (60.00%)\n", - "Epoch 5668: model set back to train mode\n", - "Epoch 5668: model parameters saved\n", - "Epoch 5669 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5669: avg_loss appended (1.3126)\n", - "Epoch 5669: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5669: accuracy appended (60.00%)\n", - "Epoch 5669: model set back to train mode\n", - "Epoch 5669: model parameters saved\n", - "Epoch 5670 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5670: avg_loss appended (1.3126)\n", - "Epoch 5670: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5670: accuracy appended (60.00%)\n", - "Epoch 5670: model set back to train mode\n", - "Epoch 5670: model parameters saved\n", - "Epoch 5671 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5671: avg_loss appended (1.3126)\n", - "Epoch 5671: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5671: accuracy appended (60.00%)\n", - "Epoch 5671: model set back to train mode\n", - "Epoch 5671: model parameters saved\n", - "Epoch 5672 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5672: avg_loss appended (1.3126)\n", - "Epoch 5672: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5672: accuracy appended (60.00%)\n", - "Epoch 5672: model set back to train mode\n", - "Epoch 5672: model parameters saved\n", - "Epoch 5673 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5673: avg_loss appended (1.3126)\n", - "Epoch 5673: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5673: accuracy appended (60.00%)\n", - "Epoch 5673: model set back to train mode\n", - "Epoch 5673: model parameters saved\n", - "Epoch 5674 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5674: avg_loss appended (1.3126)\n", - "Epoch 5674: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5674: accuracy appended (60.00%)\n", - "Epoch 5674: model set back to train mode\n", - "Epoch 5674: model parameters saved\n", - "Epoch 5675 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5675: avg_loss appended (1.3126)\n", - "Epoch 5675: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5675: accuracy appended (60.00%)\n", - "Epoch 5675: model set back to train mode\n", - "Epoch 5675: model parameters saved\n", - "Epoch 5676 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5676: avg_loss appended (1.3126)\n", - "Epoch 5676: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5676: accuracy appended (60.00%)\n", - "Epoch 5676: model set back to train mode\n", - "Epoch 5676: model parameters saved\n", - "Epoch 5677 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5677: avg_loss appended (1.3126)\n", - "Epoch 5677: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5677: accuracy appended (60.00%)\n", - "Epoch 5677: model set back to train mode\n", - "Epoch 5677: model parameters saved\n", - "Epoch 5678 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5678: avg_loss appended (1.3126)\n", - "Epoch 5678: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5678: accuracy appended (60.00%)\n", - "Epoch 5678: model set back to train mode\n", - "Epoch 5678: model parameters saved\n", - "Epoch 5679 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5679: avg_loss appended (1.3126)\n", - "Epoch 5679: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5679: accuracy appended (60.00%)\n", - "Epoch 5679: model set back to train mode\n", - "Epoch 5679: model parameters saved\n", - "Epoch 5680 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5680: avg_loss appended (1.3126)\n", - "Epoch 5680: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5680: accuracy appended (60.00%)\n", - "Epoch 5680: model set back to train mode\n", - "Epoch 5680: model parameters saved\n", - "Epoch 5681 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5681: avg_loss appended (1.3126)\n", - "Epoch 5681: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5681: accuracy appended (60.00%)\n", - "Epoch 5681: model set back to train mode\n", - "Epoch 5681: model parameters saved\n", - "Epoch 5682 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5682: avg_loss appended (1.3126)\n", - "Epoch 5682: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5682: accuracy appended (60.00%)\n", - "Epoch 5682: model set back to train mode\n", - "Epoch 5682: model parameters saved\n", - "Epoch 5683 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5683: avg_loss appended (1.3126)\n", - "Epoch 5683: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5683: accuracy appended (60.00%)\n", - "Epoch 5683: model set back to train mode\n", - "Epoch 5683: model parameters saved\n", - "Epoch 5684 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5684: avg_loss appended (1.3126)\n", - "Epoch 5684: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5684: accuracy appended (60.00%)\n", - "Epoch 5684: model set back to train mode\n", - "Epoch 5684: model parameters saved\n", - "Epoch 5685 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5685: avg_loss appended (1.3126)\n", - "Epoch 5685: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5685: accuracy appended (60.00%)\n", - "Epoch 5685: model set back to train mode\n", - "Epoch 5685: model parameters saved\n", - "Epoch 5686 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5686: avg_loss appended (1.3126)\n", - "Epoch 5686: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5686: accuracy appended (60.00%)\n", - "Epoch 5686: model set back to train mode\n", - "Epoch 5686: model parameters saved\n", - "Epoch 5687 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5687: avg_loss appended (1.3126)\n", - "Epoch 5687: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5687: accuracy appended (60.00%)\n", - "Epoch 5687: model set back to train mode\n", - "Epoch 5687: model parameters saved\n", - "Epoch 5688 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5688: avg_loss appended (1.3126)\n", - "Epoch 5688: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5688: accuracy appended (60.00%)\n", - "Epoch 5688: model set back to train mode\n", - "Epoch 5688: model parameters saved\n", - "Epoch 5689 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5689: avg_loss appended (1.3126)\n", - "Epoch 5689: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5689: accuracy appended (60.00%)\n", - "Epoch 5689: model set back to train mode\n", - "Epoch 5689: model parameters saved\n", - "Epoch 5690 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5690: avg_loss appended (1.3126)\n", - "Epoch 5690: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5690: accuracy appended (60.00%)\n", - "Epoch 5690: model set back to train mode\n", - "Epoch 5690: model parameters saved\n", - "Epoch 5691 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5691: avg_loss appended (1.3126)\n", - "Epoch 5691: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5691: accuracy appended (60.00%)\n", - "Epoch 5691: model set back to train mode\n", - "Epoch 5691: model parameters saved\n", - "Epoch 5692 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5692: avg_loss appended (1.3126)\n", - "Epoch 5692: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5692: accuracy appended (60.00%)\n", - "Epoch 5692: model set back to train mode\n", - "Epoch 5692: model parameters saved\n", - "Epoch 5693 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5693: avg_loss appended (1.3126)\n", - "Epoch 5693: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5693: accuracy appended (60.00%)\n", - "Epoch 5693: model set back to train mode\n", - "Epoch 5693: model parameters saved\n", - "Epoch 5694 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5694: avg_loss appended (1.3126)\n", - "Epoch 5694: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5694: accuracy appended (60.00%)\n", - "Epoch 5694: model set back to train mode\n", - "Epoch 5694: model parameters saved\n", - "Epoch 5695 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5695: avg_loss appended (1.3126)\n", - "Epoch 5695: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5695: accuracy appended (60.00%)\n", - "Epoch 5695: model set back to train mode\n", - "Epoch 5695: model parameters saved\n", - "Epoch 5696 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5696: avg_loss appended (1.3126)\n", - "Epoch 5696: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5696: accuracy appended (60.00%)\n", - "Epoch 5696: model set back to train mode\n", - "Epoch 5696: model parameters saved\n", - "Epoch 5697 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5697: avg_loss appended (1.3126)\n", - "Epoch 5697: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5697: accuracy appended (60.00%)\n", - "Epoch 5697: model set back to train mode\n", - "Epoch 5697: model parameters saved\n", - "Epoch 5698 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5698: avg_loss appended (1.3126)\n", - "Epoch 5698: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5698: accuracy appended (60.00%)\n", - "Epoch 5698: model set back to train mode\n", - "Epoch 5698: model parameters saved\n", - "Epoch 5699 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5699: avg_loss appended (1.3126)\n", - "Epoch 5699: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5699: accuracy appended (60.00%)\n", - "Epoch 5699: model set back to train mode\n", - "Epoch 5699: model parameters saved\n", - "Epoch 5700 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5700: avg_loss appended (1.3126)\n", - "Epoch 5700: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5700: accuracy appended (60.00%)\n", - "Epoch 5700: model set back to train mode\n", - "Epoch 5700: model parameters saved\n", - "Epoch 5700/10000, Loss: 1.3126, Accuracy: 60.00%\n", - "Epoch 5701 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5701: avg_loss appended (1.3126)\n", - "Epoch 5701: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5701: accuracy appended (60.00%)\n", - "Epoch 5701: model set back to train mode\n", - "Epoch 5701: model parameters saved\n", - "Epoch 5702 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5702: avg_loss appended (1.3126)\n", - "Epoch 5702: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5702: accuracy appended (60.00%)\n", - "Epoch 5702: model set back to train mode\n", - "Epoch 5702: model parameters saved\n", - "Epoch 5703 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5703: avg_loss appended (1.3126)\n", - "Epoch 5703: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5703: accuracy appended (60.00%)\n", - "Epoch 5703: model set back to train mode\n", - "Epoch 5703: model parameters saved\n", - "Epoch 5704 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5704: avg_loss appended (1.3126)\n", - "Epoch 5704: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5704: accuracy appended (60.00%)\n", - "Epoch 5704: model set back to train mode\n", - "Epoch 5704: model parameters saved\n", - "Epoch 5705 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5705: avg_loss appended (1.3126)\n", - "Epoch 5705: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5705: accuracy appended (60.00%)\n", - "Epoch 5705: model set back to train mode\n", - "Epoch 5705: model parameters saved\n", - "Epoch 5706 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5706: avg_loss appended (1.3126)\n", - "Epoch 5706: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5706: accuracy appended (60.00%)\n", - "Epoch 5706: model set back to train mode\n", - "Epoch 5706: model parameters saved\n", - "Epoch 5707 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5707: avg_loss appended (1.3126)\n", - "Epoch 5707: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5707: accuracy appended (60.00%)\n", - "Epoch 5707: model set back to train mode\n", - "Epoch 5707: model parameters saved\n", - "Epoch 5708 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5708: avg_loss appended (1.3126)\n", - "Epoch 5708: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5708: accuracy appended (60.00%)\n", - "Epoch 5708: model set back to train mode\n", - "Epoch 5708: model parameters saved\n", - "Epoch 5709 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5709: avg_loss appended (1.3126)\n", - "Epoch 5709: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5709: accuracy appended (60.00%)\n", - "Epoch 5709: model set back to train mode\n", - "Epoch 5709: model parameters saved\n", - "Epoch 5710 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5710: avg_loss appended (1.3126)\n", - "Epoch 5710: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5710: accuracy appended (60.00%)\n", - "Epoch 5710: model set back to train mode\n", - "Epoch 5710: model parameters saved\n", - "Epoch 5711 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5711: avg_loss appended (1.3126)\n", - "Epoch 5711: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5711: accuracy appended (60.00%)\n", - "Epoch 5711: model set back to train mode\n", - "Epoch 5711: model parameters saved\n", - "Epoch 5712 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5712: avg_loss appended (1.3126)\n", - "Epoch 5712: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5712: accuracy appended (60.00%)\n", - "Epoch 5712: model set back to train mode\n", - "Epoch 5712: model parameters saved\n", - "Epoch 5713 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5713: avg_loss appended (1.3126)\n", - "Epoch 5713: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5713: accuracy appended (60.00%)\n", - "Epoch 5713: model set back to train mode\n", - "Epoch 5713: model parameters saved\n", - "Epoch 5714 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5714: avg_loss appended (1.3126)\n", - "Epoch 5714: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5714: accuracy appended (60.00%)\n", - "Epoch 5714: model set back to train mode\n", - "Epoch 5714: model parameters saved\n", - "Epoch 5715 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5715: avg_loss appended (1.3126)\n", - "Epoch 5715: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5715: accuracy appended (60.00%)\n", - "Epoch 5715: model set back to train mode\n", - "Epoch 5715: model parameters saved\n", - "Epoch 5716 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5716: avg_loss appended (1.3126)\n", - "Epoch 5716: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5716: accuracy appended (60.00%)\n", - "Epoch 5716: model set back to train mode\n", - "Epoch 5716: model parameters saved\n", - "Epoch 5717 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5717: avg_loss appended (1.3126)\n", - "Epoch 5717: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5717: accuracy appended (60.00%)\n", - "Epoch 5717: model set back to train mode\n", - "Epoch 5717: model parameters saved\n", - "Epoch 5718 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5718: avg_loss appended (1.3126)\n", - "Epoch 5718: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5718: accuracy appended (60.00%)\n", - "Epoch 5718: model set back to train mode\n", - "Epoch 5718: model parameters saved\n", - "Epoch 5719 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5719: avg_loss appended (1.3126)\n", - "Epoch 5719: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5719: accuracy appended (60.00%)\n", - "Epoch 5719: model set back to train mode\n", - "Epoch 5719: model parameters saved\n", - "Epoch 5720 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5720: avg_loss appended (1.3126)\n", - "Epoch 5720: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5720: accuracy appended (60.00%)\n", - "Epoch 5720: model set back to train mode\n", - "Epoch 5720: model parameters saved\n", - "Epoch 5721 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5721: avg_loss appended (1.3126)\n", - "Epoch 5721: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5721: accuracy appended (60.00%)\n", - "Epoch 5721: model set back to train mode\n", - "Epoch 5721: model parameters saved\n", - "Epoch 5722 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5722: avg_loss appended (1.3126)\n", - "Epoch 5722: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5722: accuracy appended (60.00%)\n", - "Epoch 5722: model set back to train mode\n", - "Epoch 5722: model parameters saved\n", - "Epoch 5723 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5723: avg_loss appended (1.3126)\n", - "Epoch 5723: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5723: accuracy appended (60.00%)\n", - "Epoch 5723: model set back to train mode\n", - "Epoch 5723: model parameters saved\n", - "Epoch 5724 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5724: avg_loss appended (1.3126)\n", - "Epoch 5724: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5724: accuracy appended (60.00%)\n", - "Epoch 5724: model set back to train mode\n", - "Epoch 5724: model parameters saved\n", - "Epoch 5725 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5725: avg_loss appended (1.3126)\n", - "Epoch 5725: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5725: accuracy appended (60.00%)\n", - "Epoch 5725: model set back to train mode\n", - "Epoch 5725: model parameters saved\n", - "Epoch 5726 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5726: avg_loss appended (1.3126)\n", - "Epoch 5726: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5726: accuracy appended (60.00%)\n", - "Epoch 5726: model set back to train mode\n", - "Epoch 5726: model parameters saved\n", - "Epoch 5727 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5727: avg_loss appended (1.3126)\n", - "Epoch 5727: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5727: accuracy appended (60.00%)\n", - "Epoch 5727: model set back to train mode\n", - "Epoch 5727: model parameters saved\n", - "Epoch 5728 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5728: avg_loss appended (1.3126)\n", - "Epoch 5728: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5728: accuracy appended (60.00%)\n", - "Epoch 5728: model set back to train mode\n", - "Epoch 5728: model parameters saved\n", - "Epoch 5729 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5729: avg_loss appended (1.3126)\n", - "Epoch 5729: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5729: accuracy appended (60.00%)\n", - "Epoch 5729: model set back to train mode\n", - "Epoch 5729: model parameters saved\n", - "Epoch 5730 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5730: avg_loss appended (1.3126)\n", - "Epoch 5730: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5730: accuracy appended (60.00%)\n", - "Epoch 5730: model set back to train mode\n", - "Epoch 5730: model parameters saved\n", - "Epoch 5731 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5731: avg_loss appended (1.3126)\n", - "Epoch 5731: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5731: accuracy appended (60.00%)\n", - "Epoch 5731: model set back to train mode\n", - "Epoch 5731: model parameters saved\n", - "Epoch 5732 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5732: avg_loss appended (1.3126)\n", - "Epoch 5732: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5732: accuracy appended (60.00%)\n", - "Epoch 5732: model set back to train mode\n", - "Epoch 5732: model parameters saved\n", - "Epoch 5733 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5733: avg_loss appended (1.3126)\n", - "Epoch 5733: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5733: accuracy appended (60.00%)\n", - "Epoch 5733: model set back to train mode\n", - "Epoch 5733: model parameters saved\n", - "Epoch 5734 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5734: avg_loss appended (1.3126)\n", - "Epoch 5734: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5734: accuracy appended (60.00%)\n", - "Epoch 5734: model set back to train mode\n", - "Epoch 5734: model parameters saved\n", - "Epoch 5735 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5735: avg_loss appended (1.3126)\n", - "Epoch 5735: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5735: accuracy appended (60.00%)\n", - "Epoch 5735: model set back to train mode\n", - "Epoch 5735: model parameters saved\n", - "Epoch 5736 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5736: avg_loss appended (1.3126)\n", - "Epoch 5736: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5736: accuracy appended (60.00%)\n", - "Epoch 5736: model set back to train mode\n", - "Epoch 5736: model parameters saved\n", - "Epoch 5737 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5737: avg_loss appended (1.3126)\n", - "Epoch 5737: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5737: accuracy appended (60.00%)\n", - "Epoch 5737: model set back to train mode\n", - "Epoch 5737: model parameters saved\n", - "Epoch 5738 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5738: avg_loss appended (1.3126)\n", - "Epoch 5738: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5738: accuracy appended (60.00%)\n", - "Epoch 5738: model set back to train mode\n", - "Epoch 5738: model parameters saved\n", - "Epoch 5739 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5739: avg_loss appended (1.3126)\n", - "Epoch 5739: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5739: accuracy appended (60.00%)\n", - "Epoch 5739: model set back to train mode\n", - "Epoch 5739: model parameters saved\n", - "Epoch 5740 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5740: avg_loss appended (1.3126)\n", - "Epoch 5740: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5740: accuracy appended (60.00%)\n", - "Epoch 5740: model set back to train mode\n", - "Epoch 5740: model parameters saved\n", - "Epoch 5741 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5741: avg_loss appended (1.3126)\n", - "Epoch 5741: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5741: accuracy appended (60.00%)\n", - "Epoch 5741: model set back to train mode\n", - "Epoch 5741: model parameters saved\n", - "Epoch 5742 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5742: avg_loss appended (1.3126)\n", - "Epoch 5742: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5742: accuracy appended (60.00%)\n", - "Epoch 5742: model set back to train mode\n", - "Epoch 5742: model parameters saved\n", - "Epoch 5743 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5743: avg_loss appended (1.3126)\n", - "Epoch 5743: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5743: accuracy appended (60.00%)\n", - "Epoch 5743: model set back to train mode\n", - "Epoch 5743: model parameters saved\n", - "Epoch 5744 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5744: avg_loss appended (1.3126)\n", - "Epoch 5744: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5744: accuracy appended (60.00%)\n", - "Epoch 5744: model set back to train mode\n", - "Epoch 5744: model parameters saved\n", - "Epoch 5745 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5745: avg_loss appended (1.3126)\n", - "Epoch 5745: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5745: accuracy appended (60.00%)\n", - "Epoch 5745: model set back to train mode\n", - "Epoch 5745: model parameters saved\n", - "Epoch 5746 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5746: avg_loss appended (1.3126)\n", - "Epoch 5746: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5746: accuracy appended (60.00%)\n", - "Epoch 5746: model set back to train mode\n", - "Epoch 5746: model parameters saved\n", - "Epoch 5747 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5747: avg_loss appended (1.3126)\n", - "Epoch 5747: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5747: accuracy appended (60.00%)\n", - "Epoch 5747: model set back to train mode\n", - "Epoch 5747: model parameters saved\n", - "Epoch 5748 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5748: avg_loss appended (1.3126)\n", - "Epoch 5748: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5748: accuracy appended (60.00%)\n", - "Epoch 5748: model set back to train mode\n", - "Epoch 5748: model parameters saved\n", - "Epoch 5749 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5749: avg_loss appended (1.3126)\n", - "Epoch 5749: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5749: accuracy appended (60.00%)\n", - "Epoch 5749: model set back to train mode\n", - "Epoch 5749: model parameters saved\n", - "Epoch 5750 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5750: avg_loss appended (1.3126)\n", - "Epoch 5750: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5750: accuracy appended (60.00%)\n", - "Epoch 5750: model set back to train mode\n", - "Epoch 5750: model parameters saved\n", - "Epoch 5751 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5751: avg_loss appended (1.3126)\n", - "Epoch 5751: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5751: accuracy appended (60.00%)\n", - "Epoch 5751: model set back to train mode\n", - "Epoch 5751: model parameters saved\n", - "Epoch 5752 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5752: avg_loss appended (1.3126)\n", - "Epoch 5752: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5752: accuracy appended (60.00%)\n", - "Epoch 5752: model set back to train mode\n", - "Epoch 5752: model parameters saved\n", - "Epoch 5753 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5753: avg_loss appended (1.3126)\n", - "Epoch 5753: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5753: accuracy appended (60.00%)\n", - "Epoch 5753: model set back to train mode\n", - "Epoch 5753: model parameters saved\n", - "Epoch 5754 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5754: avg_loss appended (1.3126)\n", - "Epoch 5754: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5754: accuracy appended (60.00%)\n", - "Epoch 5754: model set back to train mode\n", - "Epoch 5754: model parameters saved\n", - "Epoch 5755 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5755: avg_loss appended (1.3126)\n", - "Epoch 5755: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5755: accuracy appended (60.00%)\n", - "Epoch 5755: model set back to train mode\n", - "Epoch 5755: model parameters saved\n", - "Epoch 5756 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5756: avg_loss appended (1.3126)\n", - "Epoch 5756: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5756: accuracy appended (60.00%)\n", - "Epoch 5756: model set back to train mode\n", - "Epoch 5756: model parameters saved\n", - "Epoch 5757 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5757: avg_loss appended (1.3126)\n", - "Epoch 5757: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5757: accuracy appended (60.00%)\n", - "Epoch 5757: model set back to train mode\n", - "Epoch 5757: model parameters saved\n", - "Epoch 5758 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5758: avg_loss appended (1.3126)\n", - "Epoch 5758: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5758: accuracy appended (60.00%)\n", - "Epoch 5758: model set back to train mode\n", - "Epoch 5758: model parameters saved\n", - "Epoch 5759 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5759: avg_loss appended (1.3126)\n", - "Epoch 5759: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5759: accuracy appended (60.00%)\n", - "Epoch 5759: model set back to train mode\n", - "Epoch 5759: model parameters saved\n", - "Epoch 5760 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5760: avg_loss appended (1.3126)\n", - "Epoch 5760: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5760: accuracy appended (60.00%)\n", - "Epoch 5760: model set back to train mode\n", - "Epoch 5760: model parameters saved\n", - "Epoch 5761 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5761: avg_loss appended (1.3126)\n", - "Epoch 5761: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5761: accuracy appended (60.00%)\n", - "Epoch 5761: model set back to train mode\n", - "Epoch 5761: model parameters saved\n", - "Epoch 5762 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5762: avg_loss appended (1.3126)\n", - "Epoch 5762: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5762: accuracy appended (60.00%)\n", - "Epoch 5762: model set back to train mode\n", - "Epoch 5762: model parameters saved\n", - "Epoch 5763 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5763: avg_loss appended (1.3126)\n", - "Epoch 5763: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5763: accuracy appended (60.00%)\n", - "Epoch 5763: model set back to train mode\n", - "Epoch 5763: model parameters saved\n", - "Epoch 5764 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5764: avg_loss appended (1.3126)\n", - "Epoch 5764: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5764: accuracy appended (60.00%)\n", - "Epoch 5764: model set back to train mode\n", - "Epoch 5764: model parameters saved\n", - "Epoch 5765 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5765: avg_loss appended (1.3126)\n", - "Epoch 5765: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5765: accuracy appended (60.00%)\n", - "Epoch 5765: model set back to train mode\n", - "Epoch 5765: model parameters saved\n", - "Epoch 5766 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5766: avg_loss appended (1.3126)\n", - "Epoch 5766: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5766: accuracy appended (60.00%)\n", - "Epoch 5766: model set back to train mode\n", - "Epoch 5766: model parameters saved\n", - "Epoch 5767 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5767: avg_loss appended (1.3126)\n", - "Epoch 5767: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5767: accuracy appended (60.00%)\n", - "Epoch 5767: model set back to train mode\n", - "Epoch 5767: model parameters saved\n", - "Epoch 5768 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5768: avg_loss appended (1.3126)\n", - "Epoch 5768: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5768: accuracy appended (60.00%)\n", - "Epoch 5768: model set back to train mode\n", - "Epoch 5768: model parameters saved\n", - "Epoch 5769 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5769: avg_loss appended (1.3126)\n", - "Epoch 5769: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5769: accuracy appended (60.00%)\n", - "Epoch 5769: model set back to train mode\n", - "Epoch 5769: model parameters saved\n", - "Epoch 5770 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5770: avg_loss appended (1.3126)\n", - "Epoch 5770: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5770: accuracy appended (60.00%)\n", - "Epoch 5770: model set back to train mode\n", - "Epoch 5770: model parameters saved\n", - "Epoch 5771 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5771: avg_loss appended (1.3126)\n", - "Epoch 5771: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5771: accuracy appended (60.00%)\n", - "Epoch 5771: model set back to train mode\n", - "Epoch 5771: model parameters saved\n", - "Epoch 5772 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5772: avg_loss appended (1.3126)\n", - "Epoch 5772: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5772: accuracy appended (60.00%)\n", - "Epoch 5772: model set back to train mode\n", - "Epoch 5772: model parameters saved\n", - "Epoch 5773 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5773: avg_loss appended (1.3126)\n", - "Epoch 5773: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5773: accuracy appended (60.00%)\n", - "Epoch 5773: model set back to train mode\n", - "Epoch 5773: model parameters saved\n", - "Epoch 5774 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5774: avg_loss appended (1.3126)\n", - "Epoch 5774: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5774: accuracy appended (60.00%)\n", - "Epoch 5774: model set back to train mode\n", - "Epoch 5774: model parameters saved\n", - "Epoch 5775 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5775: avg_loss appended (1.3126)\n", - "Epoch 5775: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5775: accuracy appended (60.00%)\n", - "Epoch 5775: model set back to train mode\n", - "Epoch 5775: model parameters saved\n", - "Epoch 5776 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5776: avg_loss appended (1.3126)\n", - "Epoch 5776: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5776: accuracy appended (60.00%)\n", - "Epoch 5776: model set back to train mode\n", - "Epoch 5776: model parameters saved\n", - "Epoch 5777 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5777: avg_loss appended (1.3126)\n", - "Epoch 5777: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5777: accuracy appended (60.00%)\n", - "Epoch 5777: model set back to train mode\n", - "Epoch 5777: model parameters saved\n", - "Epoch 5778 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5778: avg_loss appended (1.3126)\n", - "Epoch 5778: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5778: accuracy appended (60.00%)\n", - "Epoch 5778: model set back to train mode\n", - "Epoch 5778: model parameters saved\n", - "Epoch 5779 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5779: avg_loss appended (1.3126)\n", - "Epoch 5779: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5779: accuracy appended (60.00%)\n", - "Epoch 5779: model set back to train mode\n", - "Epoch 5779: model parameters saved\n", - "Epoch 5780 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5780: avg_loss appended (1.3126)\n", - "Epoch 5780: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5780: accuracy appended (60.00%)\n", - "Epoch 5780: model set back to train mode\n", - "Epoch 5780: model parameters saved\n", - "Epoch 5781 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5781: avg_loss appended (1.3126)\n", - "Epoch 5781: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5781: accuracy appended (60.00%)\n", - "Epoch 5781: model set back to train mode\n", - "Epoch 5781: model parameters saved\n", - "Epoch 5782 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5782: avg_loss appended (1.3126)\n", - "Epoch 5782: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5782: accuracy appended (60.00%)\n", - "Epoch 5782: model set back to train mode\n", - "Epoch 5782: model parameters saved\n", - "Epoch 5783 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5783: avg_loss appended (1.3126)\n", - "Epoch 5783: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5783: accuracy appended (60.00%)\n", - "Epoch 5783: model set back to train mode\n", - "Epoch 5783: model parameters saved\n", - "Epoch 5784 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5784: avg_loss appended (1.3126)\n", - "Epoch 5784: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5784: accuracy appended (60.00%)\n", - "Epoch 5784: model set back to train mode\n", - "Epoch 5784: model parameters saved\n", - "Epoch 5785 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5785: avg_loss appended (1.3126)\n", - "Epoch 5785: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5785: accuracy appended (60.00%)\n", - "Epoch 5785: model set back to train mode\n", - "Epoch 5785: model parameters saved\n", - "Epoch 5786 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5786: avg_loss appended (1.3126)\n", - "Epoch 5786: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5786: accuracy appended (60.00%)\n", - "Epoch 5786: model set back to train mode\n", - "Epoch 5786: model parameters saved\n", - "Epoch 5787 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5787: avg_loss appended (1.3126)\n", - "Epoch 5787: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5787: accuracy appended (60.00%)\n", - "Epoch 5787: model set back to train mode\n", - "Epoch 5787: model parameters saved\n", - "Epoch 5788 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5788: avg_loss appended (1.3126)\n", - "Epoch 5788: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5788: accuracy appended (60.00%)\n", - "Epoch 5788: model set back to train mode\n", - "Epoch 5788: model parameters saved\n", - "Epoch 5789 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5789: avg_loss appended (1.3126)\n", - "Epoch 5789: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5789: accuracy appended (60.00%)\n", - "Epoch 5789: model set back to train mode\n", - "Epoch 5789: model parameters saved\n", - "Epoch 5790 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5790: avg_loss appended (1.3126)\n", - "Epoch 5790: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5790: accuracy appended (60.00%)\n", - "Epoch 5790: model set back to train mode\n", - "Epoch 5790: model parameters saved\n", - "Epoch 5791 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5791: avg_loss appended (1.3126)\n", - "Epoch 5791: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5791: accuracy appended (60.00%)\n", - "Epoch 5791: model set back to train mode\n", - "Epoch 5791: model parameters saved\n", - "Epoch 5792 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5792: avg_loss appended (1.3126)\n", - "Epoch 5792: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5792: accuracy appended (60.00%)\n", - "Epoch 5792: model set back to train mode\n", - "Epoch 5792: model parameters saved\n", - "Epoch 5793 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5793: avg_loss appended (1.3126)\n", - "Epoch 5793: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5793: accuracy appended (60.00%)\n", - "Epoch 5793: model set back to train mode\n", - "Epoch 5793: model parameters saved\n", - "Epoch 5794 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5794: avg_loss appended (1.3126)\n", - "Epoch 5794: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5794: accuracy appended (60.00%)\n", - "Epoch 5794: model set back to train mode\n", - "Epoch 5794: model parameters saved\n", - "Epoch 5795 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5795: avg_loss appended (1.3126)\n", - "Epoch 5795: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5795: accuracy appended (60.00%)\n", - "Epoch 5795: model set back to train mode\n", - "Epoch 5795: model parameters saved\n", - "Epoch 5796 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5796: avg_loss appended (1.3126)\n", - "Epoch 5796: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5796: accuracy appended (60.00%)\n", - "Epoch 5796: model set back to train mode\n", - "Epoch 5796: model parameters saved\n", - "Epoch 5797 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5797: avg_loss appended (1.3126)\n", - "Epoch 5797: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5797: accuracy appended (60.00%)\n", - "Epoch 5797: model set back to train mode\n", - "Epoch 5797: model parameters saved\n", - "Epoch 5798 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5798: avg_loss appended (1.3126)\n", - "Epoch 5798: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5798: accuracy appended (60.00%)\n", - "Epoch 5798: model set back to train mode\n", - "Epoch 5798: model parameters saved\n", - "Epoch 5799 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5799: avg_loss appended (1.3126)\n", - "Epoch 5799: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5799: accuracy appended (60.00%)\n", - "Epoch 5799: model set back to train mode\n", - "Epoch 5799: model parameters saved\n", - "Epoch 5800 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5800: avg_loss appended (1.3126)\n", - "Epoch 5800: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5800: accuracy appended (60.00%)\n", - "Epoch 5800: model set back to train mode\n", - "Epoch 5800: model parameters saved\n", - "Epoch 5800/10000, Loss: 1.3126, Accuracy: 60.00%\n", - "Epoch 5801 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5801: avg_loss appended (1.3126)\n", - "Epoch 5801: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5801: accuracy appended (60.00%)\n", - "Epoch 5801: model set back to train mode\n", - "Epoch 5801: model parameters saved\n", - "Epoch 5802 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5802: avg_loss appended (1.3126)\n", - "Epoch 5802: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5802: accuracy appended (60.00%)\n", - "Epoch 5802: model set back to train mode\n", - "Epoch 5802: model parameters saved\n", - "Epoch 5803 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5803: avg_loss appended (1.3126)\n", - "Epoch 5803: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5803: accuracy appended (60.00%)\n", - "Epoch 5803: model set back to train mode\n", - "Epoch 5803: model parameters saved\n", - "Epoch 5804 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5804: avg_loss appended (1.3126)\n", - "Epoch 5804: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5804: accuracy appended (60.00%)\n", - "Epoch 5804: model set back to train mode\n", - "Epoch 5804: model parameters saved\n", - "Epoch 5805 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5805: avg_loss appended (1.3126)\n", - "Epoch 5805: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5805: accuracy appended (60.00%)\n", - "Epoch 5805: model set back to train mode\n", - "Epoch 5805: model parameters saved\n", - "Epoch 5806 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5806: avg_loss appended (1.3126)\n", - "Epoch 5806: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5806: accuracy appended (60.00%)\n", - "Epoch 5806: model set back to train mode\n", - "Epoch 5806: model parameters saved\n", - "Epoch 5807 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5807: avg_loss appended (1.3126)\n", - "Epoch 5807: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5807: accuracy appended (60.00%)\n", - "Epoch 5807: model set back to train mode\n", - "Epoch 5807: model parameters saved\n", - "Epoch 5808 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5808: avg_loss appended (1.3126)\n", - "Epoch 5808: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5808: accuracy appended (60.00%)\n", - "Epoch 5808: model set back to train mode\n", - "Epoch 5808: model parameters saved\n", - "Epoch 5809 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5809: avg_loss appended (1.3126)\n", - "Epoch 5809: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5809: accuracy appended (60.00%)\n", - "Epoch 5809: model set back to train mode\n", - "Epoch 5809: model parameters saved\n", - "Epoch 5810 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5810: avg_loss appended (1.3126)\n", - "Epoch 5810: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5810: accuracy appended (60.00%)\n", - "Epoch 5810: model set back to train mode\n", - "Epoch 5810: model parameters saved\n", - "Epoch 5811 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5811: avg_loss appended (1.3126)\n", - "Epoch 5811: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5811: accuracy appended (60.00%)\n", - "Epoch 5811: model set back to train mode\n", - "Epoch 5811: model parameters saved\n", - "Epoch 5812 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5812: avg_loss appended (1.3126)\n", - "Epoch 5812: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5812: accuracy appended (60.00%)\n", - "Epoch 5812: model set back to train mode\n", - "Epoch 5812: model parameters saved\n", - "Epoch 5813 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5813: avg_loss appended (1.3126)\n", - "Epoch 5813: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5813: accuracy appended (60.00%)\n", - "Epoch 5813: model set back to train mode\n", - "Epoch 5813: model parameters saved\n", - "Epoch 5814 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5814: avg_loss appended (1.3126)\n", - "Epoch 5814: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5814: accuracy appended (60.00%)\n", - "Epoch 5814: model set back to train mode\n", - "Epoch 5814: model parameters saved\n", - "Epoch 5815 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5815: avg_loss appended (1.3126)\n", - "Epoch 5815: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5815: accuracy appended (60.00%)\n", - "Epoch 5815: model set back to train mode\n", - "Epoch 5815: model parameters saved\n", - "Epoch 5816 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5816: avg_loss appended (1.3126)\n", - "Epoch 5816: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5816: accuracy appended (60.00%)\n", - "Epoch 5816: model set back to train mode\n", - "Epoch 5816: model parameters saved\n", - "Epoch 5817 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5817: avg_loss appended (1.3126)\n", - "Epoch 5817: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5817: accuracy appended (60.00%)\n", - "Epoch 5817: model set back to train mode\n", - "Epoch 5817: model parameters saved\n", - "Epoch 5818 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5818: avg_loss appended (1.3126)\n", - "Epoch 5818: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5818: accuracy appended (60.00%)\n", - "Epoch 5818: model set back to train mode\n", - "Epoch 5818: model parameters saved\n", - "Epoch 5819 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5819: avg_loss appended (1.3126)\n", - "Epoch 5819: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5819: accuracy appended (60.00%)\n", - "Epoch 5819: model set back to train mode\n", - "Epoch 5819: model parameters saved\n", - "Epoch 5820 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5820: avg_loss appended (1.3126)\n", - "Epoch 5820: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5820: accuracy appended (60.00%)\n", - "Epoch 5820: model set back to train mode\n", - "Epoch 5820: model parameters saved\n", - "Epoch 5821 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5821: avg_loss appended (1.3126)\n", - "Epoch 5821: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5821: accuracy appended (60.00%)\n", - "Epoch 5821: model set back to train mode\n", - "Epoch 5821: model parameters saved\n", - "Epoch 5822 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5822: avg_loss appended (1.3126)\n", - "Epoch 5822: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5822: accuracy appended (60.00%)\n", - "Epoch 5822: model set back to train mode\n", - "Epoch 5822: model parameters saved\n", - "Epoch 5823 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5823: avg_loss appended (1.3126)\n", - "Epoch 5823: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5823: accuracy appended (60.00%)\n", - "Epoch 5823: model set back to train mode\n", - "Epoch 5823: model parameters saved\n", - "Epoch 5824 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5824: avg_loss appended (1.3126)\n", - "Epoch 5824: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5824: accuracy appended (60.00%)\n", - "Epoch 5824: model set back to train mode\n", - "Epoch 5824: model parameters saved\n", - "Epoch 5825 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5825: avg_loss appended (1.3126)\n", - "Epoch 5825: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5825: accuracy appended (60.00%)\n", - "Epoch 5825: model set back to train mode\n", - "Epoch 5825: model parameters saved\n", - "Epoch 5826 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5826: avg_loss appended (1.3126)\n", - "Epoch 5826: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5826: accuracy appended (60.00%)\n", - "Epoch 5826: model set back to train mode\n", - "Epoch 5826: model parameters saved\n", - "Epoch 5827 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5827: avg_loss appended (1.3126)\n", - "Epoch 5827: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5827: accuracy appended (60.00%)\n", - "Epoch 5827: model set back to train mode\n", - "Epoch 5827: model parameters saved\n", - "Epoch 5828 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5828: avg_loss appended (1.3126)\n", - "Epoch 5828: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5828: accuracy appended (60.00%)\n", - "Epoch 5828: model set back to train mode\n", - "Epoch 5828: model parameters saved\n", - "Epoch 5829 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5829: avg_loss appended (1.3126)\n", - "Epoch 5829: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5829: accuracy appended (60.00%)\n", - "Epoch 5829: model set back to train mode\n", - "Epoch 5829: model parameters saved\n", - "Epoch 5830 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5830: avg_loss appended (1.3126)\n", - "Epoch 5830: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5830: accuracy appended (60.00%)\n", - "Epoch 5830: model set back to train mode\n", - "Epoch 5830: model parameters saved\n", - "Epoch 5831 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5831: avg_loss appended (1.3126)\n", - "Epoch 5831: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5831: accuracy appended (60.00%)\n", - "Epoch 5831: model set back to train mode\n", - "Epoch 5831: model parameters saved\n", - "Epoch 5832 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5832: avg_loss appended (1.3126)\n", - "Epoch 5832: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5832: accuracy appended (60.00%)\n", - "Epoch 5832: model set back to train mode\n", - "Epoch 5832: model parameters saved\n", - "Epoch 5833 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5833: avg_loss appended (1.3126)\n", - "Epoch 5833: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5833: accuracy appended (60.00%)\n", - "Epoch 5833: model set back to train mode\n", - "Epoch 5833: model parameters saved\n", - "Epoch 5834 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5834: avg_loss appended (1.3126)\n", - "Epoch 5834: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5834: accuracy appended (60.00%)\n", - "Epoch 5834: model set back to train mode\n", - "Epoch 5834: model parameters saved\n", - "Epoch 5835 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5835: avg_loss appended (1.3126)\n", - "Epoch 5835: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5835: accuracy appended (60.00%)\n", - "Epoch 5835: model set back to train mode\n", - "Epoch 5835: model parameters saved\n", - "Epoch 5836 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5836: avg_loss appended (1.3126)\n", - "Epoch 5836: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5836: accuracy appended (60.00%)\n", - "Epoch 5836: model set back to train mode\n", - "Epoch 5836: model parameters saved\n", - "Epoch 5837 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5837: avg_loss appended (1.3126)\n", - "Epoch 5837: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5837: accuracy appended (60.00%)\n", - "Epoch 5837: model set back to train mode\n", - "Epoch 5837: model parameters saved\n", - "Epoch 5838 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5838: avg_loss appended (1.3126)\n", - "Epoch 5838: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5838: accuracy appended (60.00%)\n", - "Epoch 5838: model set back to train mode\n", - "Epoch 5838: model parameters saved\n", - "Epoch 5839 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5839: avg_loss appended (1.3126)\n", - "Epoch 5839: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5839: accuracy appended (60.00%)\n", - "Epoch 5839: model set back to train mode\n", - "Epoch 5839: model parameters saved\n", - "Epoch 5840 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5840: avg_loss appended (1.3126)\n", - "Epoch 5840: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5840: accuracy appended (60.00%)\n", - "Epoch 5840: model set back to train mode\n", - "Epoch 5840: model parameters saved\n", - "Epoch 5841 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5841: avg_loss appended (1.3126)\n", - "Epoch 5841: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5841: accuracy appended (60.00%)\n", - "Epoch 5841: model set back to train mode\n", - "Epoch 5841: model parameters saved\n", - "Epoch 5842 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5842: avg_loss appended (1.3126)\n", - "Epoch 5842: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5842: accuracy appended (60.00%)\n", - "Epoch 5842: model set back to train mode\n", - "Epoch 5842: model parameters saved\n", - "Epoch 5843 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5843: avg_loss appended (1.3126)\n", - "Epoch 5843: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5843: accuracy appended (60.00%)\n", - "Epoch 5843: model set back to train mode\n", - "Epoch 5843: model parameters saved\n", - "Epoch 5844 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5844: avg_loss appended (1.3126)\n", - "Epoch 5844: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5844: accuracy appended (60.00%)\n", - "Epoch 5844: model set back to train mode\n", - "Epoch 5844: model parameters saved\n", - "Epoch 5845 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5845: avg_loss appended (1.3126)\n", - "Epoch 5845: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5845: accuracy appended (60.00%)\n", - "Epoch 5845: model set back to train mode\n", - "Epoch 5845: model parameters saved\n", - "Epoch 5846 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5846: avg_loss appended (1.3126)\n", - "Epoch 5846: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5846: accuracy appended (60.00%)\n", - "Epoch 5846: model set back to train mode\n", - "Epoch 5846: model parameters saved\n", - "Epoch 5847 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5847: avg_loss appended (1.3126)\n", - "Epoch 5847: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5847: accuracy appended (60.00%)\n", - "Epoch 5847: model set back to train mode\n", - "Epoch 5847: model parameters saved\n", - "Epoch 5848 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5848: avg_loss appended (1.3126)\n", - "Epoch 5848: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5848: accuracy appended (60.00%)\n", - "Epoch 5848: model set back to train mode\n", - "Epoch 5848: model parameters saved\n", - "Epoch 5849 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5849: avg_loss appended (1.3126)\n", - "Epoch 5849: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5849: accuracy appended (60.00%)\n", - "Epoch 5849: model set back to train mode\n", - "Epoch 5849: model parameters saved\n", - "Epoch 5850 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5850: avg_loss appended (1.3126)\n", - "Epoch 5850: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5850: accuracy appended (60.00%)\n", - "Epoch 5850: model set back to train mode\n", - "Epoch 5850: model parameters saved\n", - "Epoch 5851 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5851: avg_loss appended (1.3126)\n", - "Epoch 5851: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5851: accuracy appended (60.00%)\n", - "Epoch 5851: model set back to train mode\n", - "Epoch 5851: model parameters saved\n", - "Epoch 5852 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5852: avg_loss appended (1.3126)\n", - "Epoch 5852: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5852: accuracy appended (60.00%)\n", - "Epoch 5852: model set back to train mode\n", - "Epoch 5852: model parameters saved\n", - "Epoch 5853 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5853: avg_loss appended (1.3126)\n", - "Epoch 5853: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5853: accuracy appended (60.00%)\n", - "Epoch 5853: model set back to train mode\n", - "Epoch 5853: model parameters saved\n", - "Epoch 5854 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5854: avg_loss appended (1.3126)\n", - "Epoch 5854: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5854: accuracy appended (60.00%)\n", - "Epoch 5854: model set back to train mode\n", - "Epoch 5854: model parameters saved\n", - "Epoch 5855 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5855: avg_loss appended (1.3126)\n", - "Epoch 5855: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5855: accuracy appended (60.00%)\n", - "Epoch 5855: model set back to train mode\n", - "Epoch 5855: model parameters saved\n", - "Epoch 5856 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5856: avg_loss appended (1.3126)\n", - "Epoch 5856: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5856: accuracy appended (60.00%)\n", - "Epoch 5856: model set back to train mode\n", - "Epoch 5856: model parameters saved\n", - "Epoch 5857 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5857: avg_loss appended (1.3126)\n", - "Epoch 5857: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5857: accuracy appended (60.00%)\n", - "Epoch 5857: model set back to train mode\n", - "Epoch 5857: model parameters saved\n", - "Epoch 5858 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5858: avg_loss appended (1.3126)\n", - "Epoch 5858: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5858: accuracy appended (60.00%)\n", - "Epoch 5858: model set back to train mode\n", - "Epoch 5858: model parameters saved\n", - "Epoch 5859 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5859: avg_loss appended (1.3126)\n", - "Epoch 5859: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5859: accuracy appended (60.00%)\n", - "Epoch 5859: model set back to train mode\n", - "Epoch 5859: model parameters saved\n", - "Epoch 5860 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5860: avg_loss appended (1.3126)\n", - "Epoch 5860: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5860: accuracy appended (60.00%)\n", - "Epoch 5860: model set back to train mode\n", - "Epoch 5860: model parameters saved\n", - "Epoch 5861 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5861: avg_loss appended (1.3126)\n", - "Epoch 5861: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5861: accuracy appended (60.00%)\n", - "Epoch 5861: model set back to train mode\n", - "Epoch 5861: model parameters saved\n", - "Epoch 5862 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5862: avg_loss appended (1.3126)\n", - "Epoch 5862: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5862: accuracy appended (60.00%)\n", - "Epoch 5862: model set back to train mode\n", - "Epoch 5862: model parameters saved\n", - "Epoch 5863 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5863: avg_loss appended (1.3126)\n", - "Epoch 5863: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5863: accuracy appended (60.00%)\n", - "Epoch 5863: model set back to train mode\n", - "Epoch 5863: model parameters saved\n", - "Epoch 5864 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5864: avg_loss appended (1.3126)\n", - "Epoch 5864: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5864: accuracy appended (60.00%)\n", - "Epoch 5864: model set back to train mode\n", - "Epoch 5864: model parameters saved\n", - "Epoch 5865 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5865: avg_loss appended (1.3126)\n", - "Epoch 5865: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5865: accuracy appended (60.00%)\n", - "Epoch 5865: model set back to train mode\n", - "Epoch 5865: model parameters saved\n", - "Epoch 5866 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5866: avg_loss appended (1.3126)\n", - "Epoch 5866: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5866: accuracy appended (60.00%)\n", - "Epoch 5866: model set back to train mode\n", - "Epoch 5866: model parameters saved\n", - "Epoch 5867 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5867: avg_loss appended (1.3126)\n", - "Epoch 5867: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5867: accuracy appended (60.00%)\n", - "Epoch 5867: model set back to train mode\n", - "Epoch 5867: model parameters saved\n", - "Epoch 5868 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5868: avg_loss appended (1.3126)\n", - "Epoch 5868: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5868: accuracy appended (60.00%)\n", - "Epoch 5868: model set back to train mode\n", - "Epoch 5868: model parameters saved\n", - "Epoch 5869 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5869: avg_loss appended (1.3126)\n", - "Epoch 5869: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5869: accuracy appended (60.00%)\n", - "Epoch 5869: model set back to train mode\n", - "Epoch 5869: model parameters saved\n", - "Epoch 5870 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5870: avg_loss appended (1.3126)\n", - "Epoch 5870: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5870: accuracy appended (60.00%)\n", - "Epoch 5870: model set back to train mode\n", - "Epoch 5870: model parameters saved\n", - "Epoch 5871 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5871: avg_loss appended (1.3126)\n", - "Epoch 5871: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5871: accuracy appended (60.00%)\n", - "Epoch 5871: model set back to train mode\n", - "Epoch 5871: model parameters saved\n", - "Epoch 5872 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5872: avg_loss appended (1.3126)\n", - "Epoch 5872: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5872: accuracy appended (60.00%)\n", - "Epoch 5872: model set back to train mode\n", - "Epoch 5872: model parameters saved\n", - "Epoch 5873 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5873: avg_loss appended (1.3126)\n", - "Epoch 5873: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5873: accuracy appended (60.00%)\n", - "Epoch 5873: model set back to train mode\n", - "Epoch 5873: model parameters saved\n", - "Epoch 5874 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5874: avg_loss appended (1.3126)\n", - "Epoch 5874: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5874: accuracy appended (60.00%)\n", - "Epoch 5874: model set back to train mode\n", - "Epoch 5874: model parameters saved\n", - "Epoch 5875 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5875: avg_loss appended (1.3126)\n", - "Epoch 5875: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5875: accuracy appended (60.00%)\n", - "Epoch 5875: model set back to train mode\n", - "Epoch 5875: model parameters saved\n", - "Epoch 5876 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5876: avg_loss appended (1.3126)\n", - "Epoch 5876: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5876: accuracy appended (60.00%)\n", - "Epoch 5876: model set back to train mode\n", - "Epoch 5876: model parameters saved\n", - "Epoch 5877 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5877: avg_loss appended (1.3126)\n", - "Epoch 5877: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5877: accuracy appended (60.00%)\n", - "Epoch 5877: model set back to train mode\n", - "Epoch 5877: model parameters saved\n", - "Epoch 5878 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5878: avg_loss appended (1.3126)\n", - "Epoch 5878: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5878: accuracy appended (60.00%)\n", - "Epoch 5878: model set back to train mode\n", - "Epoch 5878: model parameters saved\n", - "Epoch 5879 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5879: avg_loss appended (1.3126)\n", - "Epoch 5879: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5879: accuracy appended (60.00%)\n", - "Epoch 5879: model set back to train mode\n", - "Epoch 5879: model parameters saved\n", - "Epoch 5880 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5880: avg_loss appended (1.3126)\n", - "Epoch 5880: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5880: accuracy appended (60.00%)\n", - "Epoch 5880: model set back to train mode\n", - "Epoch 5880: model parameters saved\n", - "Epoch 5881 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5881: avg_loss appended (1.3126)\n", - "Epoch 5881: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5881: accuracy appended (60.00%)\n", - "Epoch 5881: model set back to train mode\n", - "Epoch 5881: model parameters saved\n", - "Epoch 5882 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5882: avg_loss appended (1.3126)\n", - "Epoch 5882: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5882: accuracy appended (60.00%)\n", - "Epoch 5882: model set back to train mode\n", - "Epoch 5882: model parameters saved\n", - "Epoch 5883 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5883: avg_loss appended (1.3126)\n", - "Epoch 5883: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5883: accuracy appended (60.00%)\n", - "Epoch 5883: model set back to train mode\n", - "Epoch 5883: model parameters saved\n", - "Epoch 5884 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5884: avg_loss appended (1.3126)\n", - "Epoch 5884: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5884: accuracy appended (60.00%)\n", - "Epoch 5884: model set back to train mode\n", - "Epoch 5884: model parameters saved\n", - "Epoch 5885 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5885: avg_loss appended (1.3126)\n", - "Epoch 5885: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5885: accuracy appended (60.00%)\n", - "Epoch 5885: model set back to train mode\n", - "Epoch 5885: model parameters saved\n", - "Epoch 5886 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5886: avg_loss appended (1.3126)\n", - "Epoch 5886: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5886: accuracy appended (60.00%)\n", - "Epoch 5886: model set back to train mode\n", - "Epoch 5886: model parameters saved\n", - "Epoch 5887 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5887: avg_loss appended (1.3126)\n", - "Epoch 5887: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5887: accuracy appended (60.00%)\n", - "Epoch 5887: model set back to train mode\n", - "Epoch 5887: model parameters saved\n", - "Epoch 5888 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5888: avg_loss appended (1.3126)\n", - "Epoch 5888: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5888: accuracy appended (60.00%)\n", - "Epoch 5888: model set back to train mode\n", - "Epoch 5888: model parameters saved\n", - "Epoch 5889 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5889: avg_loss appended (1.3126)\n", - "Epoch 5889: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5889: accuracy appended (60.00%)\n", - "Epoch 5889: model set back to train mode\n", - "Epoch 5889: model parameters saved\n", - "Epoch 5890 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5890: avg_loss appended (1.3126)\n", - "Epoch 5890: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5890: accuracy appended (60.00%)\n", - "Epoch 5890: model set back to train mode\n", - "Epoch 5890: model parameters saved\n", - "Epoch 5891 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5891: avg_loss appended (1.3126)\n", - "Epoch 5891: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5891: accuracy appended (60.00%)\n", - "Epoch 5891: model set back to train mode\n", - "Epoch 5891: model parameters saved\n", - "Epoch 5892 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5892: avg_loss appended (1.3126)\n", - "Epoch 5892: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5892: accuracy appended (60.00%)\n", - "Epoch 5892: model set back to train mode\n", - "Epoch 5892: model parameters saved\n", - "Epoch 5893 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5893: avg_loss appended (1.3126)\n", - "Epoch 5893: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5893: accuracy appended (60.00%)\n", - "Epoch 5893: model set back to train mode\n", - "Epoch 5893: model parameters saved\n", - "Epoch 5894 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5894: avg_loss appended (1.3126)\n", - "Epoch 5894: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5894: accuracy appended (60.00%)\n", - "Epoch 5894: model set back to train mode\n", - "Epoch 5894: model parameters saved\n", - "Epoch 5895 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5895: avg_loss appended (1.3126)\n", - "Epoch 5895: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5895: accuracy appended (60.00%)\n", - "Epoch 5895: model set back to train mode\n", - "Epoch 5895: model parameters saved\n", - "Epoch 5896 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3126)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3126)\n", - "Epoch 5896: avg_loss appended (1.3126)\n", - "Epoch 5896: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5896: accuracy appended (60.00%)\n", - "Epoch 5896: model set back to train mode\n", - "Epoch 5896: model parameters saved\n", - "Epoch 5897 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5897: avg_loss appended (1.3125)\n", - "Epoch 5897: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5897: accuracy appended (60.00%)\n", - "Epoch 5897: model set back to train mode\n", - "Epoch 5897: model parameters saved\n", - "Epoch 5898 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5898: avg_loss appended (1.3125)\n", - "Epoch 5898: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5898: accuracy appended (60.00%)\n", - "Epoch 5898: model set back to train mode\n", - "Epoch 5898: model parameters saved\n", - "Epoch 5899 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5899: avg_loss appended (1.3125)\n", - "Epoch 5899: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5899: accuracy appended (60.00%)\n", - "Epoch 5899: model set back to train mode\n", - "Epoch 5899: model parameters saved\n", - "Epoch 5900 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5900: avg_loss appended (1.3125)\n", - "Epoch 5900: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5900: accuracy appended (60.00%)\n", - "Epoch 5900: model set back to train mode\n", - "Epoch 5900: model parameters saved\n", - "Epoch 5900/10000, Loss: 1.3125, Accuracy: 60.00%\n", - "Epoch 5901 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5901: avg_loss appended (1.3125)\n", - "Epoch 5901: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5901: accuracy appended (60.00%)\n", - "Epoch 5901: model set back to train mode\n", - "Epoch 5901: model parameters saved\n", - "Epoch 5902 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5902: avg_loss appended (1.3125)\n", - "Epoch 5902: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5902: accuracy appended (60.00%)\n", - "Epoch 5902: model set back to train mode\n", - "Epoch 5902: model parameters saved\n", - "Epoch 5903 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5903: avg_loss appended (1.3125)\n", - "Epoch 5903: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5903: accuracy appended (60.00%)\n", - "Epoch 5903: model set back to train mode\n", - "Epoch 5903: model parameters saved\n", - "Epoch 5904 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5904: avg_loss appended (1.3125)\n", - "Epoch 5904: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5904: accuracy appended (60.00%)\n", - "Epoch 5904: model set back to train mode\n", - "Epoch 5904: model parameters saved\n", - "Epoch 5905 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5905: avg_loss appended (1.3125)\n", - "Epoch 5905: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5905: accuracy appended (60.00%)\n", - "Epoch 5905: model set back to train mode\n", - "Epoch 5905: model parameters saved\n", - "Epoch 5906 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5906: avg_loss appended (1.3125)\n", - "Epoch 5906: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5906: accuracy appended (60.00%)\n", - "Epoch 5906: model set back to train mode\n", - "Epoch 5906: model parameters saved\n", - "Epoch 5907 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5907: avg_loss appended (1.3125)\n", - "Epoch 5907: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5907: accuracy appended (60.00%)\n", - "Epoch 5907: model set back to train mode\n", - "Epoch 5907: model parameters saved\n", - "Epoch 5908 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5908: avg_loss appended (1.3125)\n", - "Epoch 5908: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5908: accuracy appended (60.00%)\n", - "Epoch 5908: model set back to train mode\n", - "Epoch 5908: model parameters saved\n", - "Epoch 5909 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5909: avg_loss appended (1.3125)\n", - "Epoch 5909: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5909: accuracy appended (60.00%)\n", - "Epoch 5909: model set back to train mode\n", - "Epoch 5909: model parameters saved\n", - "Epoch 5910 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5910: avg_loss appended (1.3125)\n", - "Epoch 5910: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5910: accuracy appended (60.00%)\n", - "Epoch 5910: model set back to train mode\n", - "Epoch 5910: model parameters saved\n", - "Epoch 5911 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5911: avg_loss appended (1.3125)\n", - "Epoch 5911: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5911: accuracy appended (60.00%)\n", - "Epoch 5911: model set back to train mode\n", - "Epoch 5911: model parameters saved\n", - "Epoch 5912 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5912: avg_loss appended (1.3125)\n", - "Epoch 5912: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5912: accuracy appended (60.00%)\n", - "Epoch 5912: model set back to train mode\n", - "Epoch 5912: model parameters saved\n", - "Epoch 5913 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5913: avg_loss appended (1.3125)\n", - "Epoch 5913: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5913: accuracy appended (60.00%)\n", - "Epoch 5913: model set back to train mode\n", - "Epoch 5913: model parameters saved\n", - "Epoch 5914 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5914: avg_loss appended (1.3125)\n", - "Epoch 5914: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5914: accuracy appended (60.00%)\n", - "Epoch 5914: model set back to train mode\n", - "Epoch 5914: model parameters saved\n", - "Epoch 5915 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5915: avg_loss appended (1.3125)\n", - "Epoch 5915: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5915: accuracy appended (60.00%)\n", - "Epoch 5915: model set back to train mode\n", - "Epoch 5915: model parameters saved\n", - "Epoch 5916 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5916: avg_loss appended (1.3125)\n", - "Epoch 5916: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5916: accuracy appended (60.00%)\n", - "Epoch 5916: model set back to train mode\n", - "Epoch 5916: model parameters saved\n", - "Epoch 5917 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5917: avg_loss appended (1.3125)\n", - "Epoch 5917: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5917: accuracy appended (60.00%)\n", - "Epoch 5917: model set back to train mode\n", - "Epoch 5917: model parameters saved\n", - "Epoch 5918 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5918: avg_loss appended (1.3125)\n", - "Epoch 5918: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5918: accuracy appended (60.00%)\n", - "Epoch 5918: model set back to train mode\n", - "Epoch 5918: model parameters saved\n", - "Epoch 5919 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5919: avg_loss appended (1.3125)\n", - "Epoch 5919: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5919: accuracy appended (60.00%)\n", - "Epoch 5919: model set back to train mode\n", - "Epoch 5919: model parameters saved\n", - "Epoch 5920 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5920: avg_loss appended (1.3125)\n", - "Epoch 5920: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5920: accuracy appended (60.00%)\n", - "Epoch 5920: model set back to train mode\n", - "Epoch 5920: model parameters saved\n", - "Epoch 5921 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5921: avg_loss appended (1.3125)\n", - "Epoch 5921: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5921: accuracy appended (60.00%)\n", - "Epoch 5921: model set back to train mode\n", - "Epoch 5921: model parameters saved\n", - "Epoch 5922 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5922: avg_loss appended (1.3125)\n", - "Epoch 5922: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5922: accuracy appended (60.00%)\n", - "Epoch 5922: model set back to train mode\n", - "Epoch 5922: model parameters saved\n", - "Epoch 5923 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5923: avg_loss appended (1.3125)\n", - "Epoch 5923: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5923: accuracy appended (60.00%)\n", - "Epoch 5923: model set back to train mode\n", - "Epoch 5923: model parameters saved\n", - "Epoch 5924 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5924: avg_loss appended (1.3125)\n", - "Epoch 5924: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5924: accuracy appended (60.00%)\n", - "Epoch 5924: model set back to train mode\n", - "Epoch 5924: model parameters saved\n", - "Epoch 5925 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5925: avg_loss appended (1.3125)\n", - "Epoch 5925: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5925: accuracy appended (60.00%)\n", - "Epoch 5925: model set back to train mode\n", - "Epoch 5925: model parameters saved\n", - "Epoch 5926 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5926: avg_loss appended (1.3125)\n", - "Epoch 5926: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5926: accuracy appended (60.00%)\n", - "Epoch 5926: model set back to train mode\n", - "Epoch 5926: model parameters saved\n", - "Epoch 5927 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5927: avg_loss appended (1.3125)\n", - "Epoch 5927: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5927: accuracy appended (60.00%)\n", - "Epoch 5927: model set back to train mode\n", - "Epoch 5927: model parameters saved\n", - "Epoch 5928 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5928: avg_loss appended (1.3125)\n", - "Epoch 5928: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5928: accuracy appended (60.00%)\n", - "Epoch 5928: model set back to train mode\n", - "Epoch 5928: model parameters saved\n", - "Epoch 5929 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5929: avg_loss appended (1.3125)\n", - "Epoch 5929: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5929: accuracy appended (60.00%)\n", - "Epoch 5929: model set back to train mode\n", - "Epoch 5929: model parameters saved\n", - "Epoch 5930 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5930: avg_loss appended (1.3125)\n", - "Epoch 5930: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5930: accuracy appended (60.00%)\n", - "Epoch 5930: model set back to train mode\n", - "Epoch 5930: model parameters saved\n", - "Epoch 5931 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5931: avg_loss appended (1.3125)\n", - "Epoch 5931: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5931: accuracy appended (60.00%)\n", - "Epoch 5931: model set back to train mode\n", - "Epoch 5931: model parameters saved\n", - "Epoch 5932 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5932: avg_loss appended (1.3125)\n", - "Epoch 5932: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5932: accuracy appended (60.00%)\n", - "Epoch 5932: model set back to train mode\n", - "Epoch 5932: model parameters saved\n", - "Epoch 5933 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5933: avg_loss appended (1.3125)\n", - "Epoch 5933: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5933: accuracy appended (60.00%)\n", - "Epoch 5933: model set back to train mode\n", - "Epoch 5933: model parameters saved\n", - "Epoch 5934 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5934: avg_loss appended (1.3125)\n", - "Epoch 5934: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5934: accuracy appended (60.00%)\n", - "Epoch 5934: model set back to train mode\n", - "Epoch 5934: model parameters saved\n", - "Epoch 5935 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5935: avg_loss appended (1.3125)\n", - "Epoch 5935: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5935: accuracy appended (60.00%)\n", - "Epoch 5935: model set back to train mode\n", - "Epoch 5935: model parameters saved\n", - "Epoch 5936 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5936: avg_loss appended (1.3125)\n", - "Epoch 5936: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5936: accuracy appended (60.00%)\n", - "Epoch 5936: model set back to train mode\n", - "Epoch 5936: model parameters saved\n", - "Epoch 5937 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5937: avg_loss appended (1.3125)\n", - "Epoch 5937: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5937: accuracy appended (60.00%)\n", - "Epoch 5937: model set back to train mode\n", - "Epoch 5937: model parameters saved\n", - "Epoch 5938 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5938: avg_loss appended (1.3125)\n", - "Epoch 5938: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5938: accuracy appended (60.00%)\n", - "Epoch 5938: model set back to train mode\n", - "Epoch 5938: model parameters saved\n", - "Epoch 5939 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5939: avg_loss appended (1.3125)\n", - "Epoch 5939: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5939: accuracy appended (60.00%)\n", - "Epoch 5939: model set back to train mode\n", - "Epoch 5939: model parameters saved\n", - "Epoch 5940 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5940: avg_loss appended (1.3125)\n", - "Epoch 5940: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5940: accuracy appended (60.00%)\n", - "Epoch 5940: model set back to train mode\n", - "Epoch 5940: model parameters saved\n", - "Epoch 5941 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5941: avg_loss appended (1.3125)\n", - "Epoch 5941: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5941: accuracy appended (60.00%)\n", - "Epoch 5941: model set back to train mode\n", - "Epoch 5941: model parameters saved\n", - "Epoch 5942 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5942: avg_loss appended (1.3125)\n", - "Epoch 5942: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5942: accuracy appended (60.00%)\n", - "Epoch 5942: model set back to train mode\n", - "Epoch 5942: model parameters saved\n", - "Epoch 5943 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5943: avg_loss appended (1.3125)\n", - "Epoch 5943: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5943: accuracy appended (60.00%)\n", - "Epoch 5943: model set back to train mode\n", - "Epoch 5943: model parameters saved\n", - "Epoch 5944 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5944: avg_loss appended (1.3125)\n", - "Epoch 5944: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5944: accuracy appended (60.00%)\n", - "Epoch 5944: model set back to train mode\n", - "Epoch 5944: model parameters saved\n", - "Epoch 5945 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5945: avg_loss appended (1.3125)\n", - "Epoch 5945: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5945: accuracy appended (60.00%)\n", - "Epoch 5945: model set back to train mode\n", - "Epoch 5945: model parameters saved\n", - "Epoch 5946 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5946: avg_loss appended (1.3125)\n", - "Epoch 5946: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5946: accuracy appended (60.00%)\n", - "Epoch 5946: model set back to train mode\n", - "Epoch 5946: model parameters saved\n", - "Epoch 5947 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5947: avg_loss appended (1.3125)\n", - "Epoch 5947: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5947: accuracy appended (60.00%)\n", - "Epoch 5947: model set back to train mode\n", - "Epoch 5947: model parameters saved\n", - "Epoch 5948 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5948: avg_loss appended (1.3125)\n", - "Epoch 5948: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5948: accuracy appended (60.00%)\n", - "Epoch 5948: model set back to train mode\n", - "Epoch 5948: model parameters saved\n", - "Epoch 5949 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5949: avg_loss appended (1.3125)\n", - "Epoch 5949: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5949: accuracy appended (60.00%)\n", - "Epoch 5949: model set back to train mode\n", - "Epoch 5949: model parameters saved\n", - "Epoch 5950 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5950: avg_loss appended (1.3125)\n", - "Epoch 5950: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5950: accuracy appended (60.00%)\n", - "Epoch 5950: model set back to train mode\n", - "Epoch 5950: model parameters saved\n", - "Epoch 5951 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5951: avg_loss appended (1.3125)\n", - "Epoch 5951: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5951: accuracy appended (60.00%)\n", - "Epoch 5951: model set back to train mode\n", - "Epoch 5951: model parameters saved\n", - "Epoch 5952 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5952: avg_loss appended (1.3125)\n", - "Epoch 5952: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5952: accuracy appended (60.00%)\n", - "Epoch 5952: model set back to train mode\n", - "Epoch 5952: model parameters saved\n", - "Epoch 5953 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5953: avg_loss appended (1.3125)\n", - "Epoch 5953: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5953: accuracy appended (60.00%)\n", - "Epoch 5953: model set back to train mode\n", - "Epoch 5953: model parameters saved\n", - "Epoch 5954 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5954: avg_loss appended (1.3125)\n", - "Epoch 5954: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5954: accuracy appended (60.00%)\n", - "Epoch 5954: model set back to train mode\n", - "Epoch 5954: model parameters saved\n", - "Epoch 5955 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5955: avg_loss appended (1.3125)\n", - "Epoch 5955: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5955: accuracy appended (60.00%)\n", - "Epoch 5955: model set back to train mode\n", - "Epoch 5955: model parameters saved\n", - "Epoch 5956 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5956: avg_loss appended (1.3125)\n", - "Epoch 5956: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5956: accuracy appended (60.00%)\n", - "Epoch 5956: model set back to train mode\n", - "Epoch 5956: model parameters saved\n", - "Epoch 5957 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5957: avg_loss appended (1.3125)\n", - "Epoch 5957: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5957: accuracy appended (60.00%)\n", - "Epoch 5957: model set back to train mode\n", - "Epoch 5957: model parameters saved\n", - "Epoch 5958 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5958: avg_loss appended (1.3125)\n", - "Epoch 5958: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5958: accuracy appended (60.00%)\n", - "Epoch 5958: model set back to train mode\n", - "Epoch 5958: model parameters saved\n", - "Epoch 5959 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5959: avg_loss appended (1.3125)\n", - "Epoch 5959: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5959: accuracy appended (60.00%)\n", - "Epoch 5959: model set back to train mode\n", - "Epoch 5959: model parameters saved\n", - "Epoch 5960 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5960: avg_loss appended (1.3125)\n", - "Epoch 5960: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5960: accuracy appended (60.00%)\n", - "Epoch 5960: model set back to train mode\n", - "Epoch 5960: model parameters saved\n", - "Epoch 5961 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5961: avg_loss appended (1.3125)\n", - "Epoch 5961: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5961: accuracy appended (60.00%)\n", - "Epoch 5961: model set back to train mode\n", - "Epoch 5961: model parameters saved\n", - "Epoch 5962 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5962: avg_loss appended (1.3125)\n", - "Epoch 5962: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5962: accuracy appended (60.00%)\n", - "Epoch 5962: model set back to train mode\n", - "Epoch 5962: model parameters saved\n", - "Epoch 5963 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5963: avg_loss appended (1.3125)\n", - "Epoch 5963: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5963: accuracy appended (60.00%)\n", - "Epoch 5963: model set back to train mode\n", - "Epoch 5963: model parameters saved\n", - "Epoch 5964 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5964: avg_loss appended (1.3125)\n", - "Epoch 5964: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5964: accuracy appended (60.00%)\n", - "Epoch 5964: model set back to train mode\n", - "Epoch 5964: model parameters saved\n", - "Epoch 5965 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5965: avg_loss appended (1.3125)\n", - "Epoch 5965: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5965: accuracy appended (60.00%)\n", - "Epoch 5965: model set back to train mode\n", - "Epoch 5965: model parameters saved\n", - "Epoch 5966 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5966: avg_loss appended (1.3125)\n", - "Epoch 5966: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5966: accuracy appended (60.00%)\n", - "Epoch 5966: model set back to train mode\n", - "Epoch 5966: model parameters saved\n", - "Epoch 5967 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5967: avg_loss appended (1.3125)\n", - "Epoch 5967: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5967: accuracy appended (60.00%)\n", - "Epoch 5967: model set back to train mode\n", - "Epoch 5967: model parameters saved\n", - "Epoch 5968 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5968: avg_loss appended (1.3125)\n", - "Epoch 5968: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5968: accuracy appended (60.00%)\n", - "Epoch 5968: model set back to train mode\n", - "Epoch 5968: model parameters saved\n", - "Epoch 5969 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5969: avg_loss appended (1.3125)\n", - "Epoch 5969: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5969: accuracy appended (60.00%)\n", - "Epoch 5969: model set back to train mode\n", - "Epoch 5969: model parameters saved\n", - "Epoch 5970 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5970: avg_loss appended (1.3125)\n", - "Epoch 5970: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5970: accuracy appended (60.00%)\n", - "Epoch 5970: model set back to train mode\n", - "Epoch 5970: model parameters saved\n", - "Epoch 5971 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5971: avg_loss appended (1.3125)\n", - "Epoch 5971: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5971: accuracy appended (60.00%)\n", - "Epoch 5971: model set back to train mode\n", - "Epoch 5971: model parameters saved\n", - "Epoch 5972 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5972: avg_loss appended (1.3125)\n", - "Epoch 5972: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5972: accuracy appended (60.00%)\n", - "Epoch 5972: model set back to train mode\n", - "Epoch 5972: model parameters saved\n", - "Epoch 5973 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5973: avg_loss appended (1.3125)\n", - "Epoch 5973: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5973: accuracy appended (60.00%)\n", - "Epoch 5973: model set back to train mode\n", - "Epoch 5973: model parameters saved\n", - "Epoch 5974 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5974: avg_loss appended (1.3125)\n", - "Epoch 5974: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5974: accuracy appended (60.00%)\n", - "Epoch 5974: model set back to train mode\n", - "Epoch 5974: model parameters saved\n", - "Epoch 5975 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5975: avg_loss appended (1.3125)\n", - "Epoch 5975: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5975: accuracy appended (60.00%)\n", - "Epoch 5975: model set back to train mode\n", - "Epoch 5975: model parameters saved\n", - "Epoch 5976 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5976: avg_loss appended (1.3125)\n", - "Epoch 5976: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5976: accuracy appended (60.00%)\n", - "Epoch 5976: model set back to train mode\n", - "Epoch 5976: model parameters saved\n", - "Epoch 5977 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5977: avg_loss appended (1.3125)\n", - "Epoch 5977: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5977: accuracy appended (60.00%)\n", - "Epoch 5977: model set back to train mode\n", - "Epoch 5977: model parameters saved\n", - "Epoch 5978 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5978: avg_loss appended (1.3125)\n", - "Epoch 5978: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5978: accuracy appended (60.00%)\n", - "Epoch 5978: model set back to train mode\n", - "Epoch 5978: model parameters saved\n", - "Epoch 5979 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5979: avg_loss appended (1.3125)\n", - "Epoch 5979: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5979: accuracy appended (60.00%)\n", - "Epoch 5979: model set back to train mode\n", - "Epoch 5979: model parameters saved\n", - "Epoch 5980 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5980: avg_loss appended (1.3125)\n", - "Epoch 5980: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5980: accuracy appended (60.00%)\n", - "Epoch 5980: model set back to train mode\n", - "Epoch 5980: model parameters saved\n", - "Epoch 5981 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5981: avg_loss appended (1.3125)\n", - "Epoch 5981: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5981: accuracy appended (60.00%)\n", - "Epoch 5981: model set back to train mode\n", - "Epoch 5981: model parameters saved\n", - "Epoch 5982 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5982: avg_loss appended (1.3125)\n", - "Epoch 5982: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5982: accuracy appended (60.00%)\n", - "Epoch 5982: model set back to train mode\n", - "Epoch 5982: model parameters saved\n", - "Epoch 5983 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5983: avg_loss appended (1.3125)\n", - "Epoch 5983: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5983: accuracy appended (60.00%)\n", - "Epoch 5983: model set back to train mode\n", - "Epoch 5983: model parameters saved\n", - "Epoch 5984 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5984: avg_loss appended (1.3125)\n", - "Epoch 5984: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5984: accuracy appended (60.00%)\n", - "Epoch 5984: model set back to train mode\n", - "Epoch 5984: model parameters saved\n", - "Epoch 5985 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5985: avg_loss appended (1.3125)\n", - "Epoch 5985: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5985: accuracy appended (60.00%)\n", - "Epoch 5985: model set back to train mode\n", - "Epoch 5985: model parameters saved\n", - "Epoch 5986 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5986: avg_loss appended (1.3125)\n", - "Epoch 5986: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5986: accuracy appended (60.00%)\n", - "Epoch 5986: model set back to train mode\n", - "Epoch 5986: model parameters saved\n", - "Epoch 5987 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5987: avg_loss appended (1.3125)\n", - "Epoch 5987: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5987: accuracy appended (60.00%)\n", - "Epoch 5987: model set back to train mode\n", - "Epoch 5987: model parameters saved\n", - "Epoch 5988 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5988: avg_loss appended (1.3125)\n", - "Epoch 5988: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5988: accuracy appended (60.00%)\n", - "Epoch 5988: model set back to train mode\n", - "Epoch 5988: model parameters saved\n", - "Epoch 5989 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5989: avg_loss appended (1.3125)\n", - "Epoch 5989: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5989: accuracy appended (60.00%)\n", - "Epoch 5989: model set back to train mode\n", - "Epoch 5989: model parameters saved\n", - "Epoch 5990 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5990: avg_loss appended (1.3125)\n", - "Epoch 5990: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5990: accuracy appended (60.00%)\n", - "Epoch 5990: model set back to train mode\n", - "Epoch 5990: model parameters saved\n", - "Epoch 5991 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5991: avg_loss appended (1.3125)\n", - "Epoch 5991: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5991: accuracy appended (60.00%)\n", - "Epoch 5991: model set back to train mode\n", - "Epoch 5991: model parameters saved\n", - "Epoch 5992 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5992: avg_loss appended (1.3125)\n", - "Epoch 5992: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5992: accuracy appended (60.00%)\n", - "Epoch 5992: model set back to train mode\n", - "Epoch 5992: model parameters saved\n", - "Epoch 5993 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5993: avg_loss appended (1.3125)\n", - "Epoch 5993: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5993: accuracy appended (60.00%)\n", - "Epoch 5993: model set back to train mode\n", - "Epoch 5993: model parameters saved\n", - "Epoch 5994 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5994: avg_loss appended (1.3125)\n", - "Epoch 5994: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5994: accuracy appended (60.00%)\n", - "Epoch 5994: model set back to train mode\n", - "Epoch 5994: model parameters saved\n", - "Epoch 5995 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5995: avg_loss appended (1.3125)\n", - "Epoch 5995: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5995: accuracy appended (60.00%)\n", - "Epoch 5995: model set back to train mode\n", - "Epoch 5995: model parameters saved\n", - "Epoch 5996 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5996: avg_loss appended (1.3125)\n", - "Epoch 5996: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5996: accuracy appended (60.00%)\n", - "Epoch 5996: model set back to train mode\n", - "Epoch 5996: model parameters saved\n", - "Epoch 5997 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5997: avg_loss appended (1.3125)\n", - "Epoch 5997: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5997: accuracy appended (60.00%)\n", - "Epoch 5997: model set back to train mode\n", - "Epoch 5997: model parameters saved\n", - "Epoch 5998 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5998: avg_loss appended (1.3125)\n", - "Epoch 5998: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5998: accuracy appended (60.00%)\n", - "Epoch 5998: model set back to train mode\n", - "Epoch 5998: model parameters saved\n", - "Epoch 5999 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 5999: avg_loss appended (1.3125)\n", - "Epoch 5999: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 5999: accuracy appended (60.00%)\n", - "Epoch 5999: model set back to train mode\n", - "Epoch 5999: model parameters saved\n", - "Epoch 6000 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6000: avg_loss appended (1.3125)\n", - "Epoch 6000: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6000: accuracy appended (60.00%)\n", - "Epoch 6000: model set back to train mode\n", - "Epoch 6000: model parameters saved\n", - "Epoch 6000/10000, Loss: 1.3125, Accuracy: 60.00%\n", - "Epoch 6001 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6001: avg_loss appended (1.3125)\n", - "Epoch 6001: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6001: accuracy appended (60.00%)\n", - "Epoch 6001: model set back to train mode\n", - "Epoch 6001: model parameters saved\n", - "Epoch 6002 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6002: avg_loss appended (1.3125)\n", - "Epoch 6002: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6002: accuracy appended (60.00%)\n", - "Epoch 6002: model set back to train mode\n", - "Epoch 6002: model parameters saved\n", - "Epoch 6003 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6003: avg_loss appended (1.3125)\n", - "Epoch 6003: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6003: accuracy appended (60.00%)\n", - "Epoch 6003: model set back to train mode\n", - "Epoch 6003: model parameters saved\n", - "Epoch 6004 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6004: avg_loss appended (1.3125)\n", - "Epoch 6004: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6004: accuracy appended (60.00%)\n", - "Epoch 6004: model set back to train mode\n", - "Epoch 6004: model parameters saved\n", - "Epoch 6005 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6005: avg_loss appended (1.3125)\n", - "Epoch 6005: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6005: accuracy appended (60.00%)\n", - "Epoch 6005: model set back to train mode\n", - "Epoch 6005: model parameters saved\n", - "Epoch 6006 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6006: avg_loss appended (1.3125)\n", - "Epoch 6006: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6006: accuracy appended (60.00%)\n", - "Epoch 6006: model set back to train mode\n", - "Epoch 6006: model parameters saved\n", - "Epoch 6007 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6007: avg_loss appended (1.3125)\n", - "Epoch 6007: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6007: accuracy appended (60.00%)\n", - "Epoch 6007: model set back to train mode\n", - "Epoch 6007: model parameters saved\n", - "Epoch 6008 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6008: avg_loss appended (1.3125)\n", - "Epoch 6008: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6008: accuracy appended (60.00%)\n", - "Epoch 6008: model set back to train mode\n", - "Epoch 6008: model parameters saved\n", - "Epoch 6009 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6009: avg_loss appended (1.3125)\n", - "Epoch 6009: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6009: accuracy appended (60.00%)\n", - "Epoch 6009: model set back to train mode\n", - "Epoch 6009: model parameters saved\n", - "Epoch 6010 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6010: avg_loss appended (1.3125)\n", - "Epoch 6010: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6010: accuracy appended (60.00%)\n", - "Epoch 6010: model set back to train mode\n", - "Epoch 6010: model parameters saved\n", - "Epoch 6011 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6011: avg_loss appended (1.3125)\n", - "Epoch 6011: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6011: accuracy appended (60.00%)\n", - "Epoch 6011: model set back to train mode\n", - "Epoch 6011: model parameters saved\n", - "Epoch 6012 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6012: avg_loss appended (1.3125)\n", - "Epoch 6012: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6012: accuracy appended (60.00%)\n", - "Epoch 6012: model set back to train mode\n", - "Epoch 6012: model parameters saved\n", - "Epoch 6013 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6013: avg_loss appended (1.3125)\n", - "Epoch 6013: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6013: accuracy appended (60.00%)\n", - "Epoch 6013: model set back to train mode\n", - "Epoch 6013: model parameters saved\n", - "Epoch 6014 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6014: avg_loss appended (1.3125)\n", - "Epoch 6014: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6014: accuracy appended (60.00%)\n", - "Epoch 6014: model set back to train mode\n", - "Epoch 6014: model parameters saved\n", - "Epoch 6015 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6015: avg_loss appended (1.3125)\n", - "Epoch 6015: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6015: accuracy appended (60.00%)\n", - "Epoch 6015: model set back to train mode\n", - "Epoch 6015: model parameters saved\n", - "Epoch 6016 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6016: avg_loss appended (1.3125)\n", - "Epoch 6016: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6016: accuracy appended (60.00%)\n", - "Epoch 6016: model set back to train mode\n", - "Epoch 6016: model parameters saved\n", - "Epoch 6017 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6017: avg_loss appended (1.3125)\n", - "Epoch 6017: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6017: accuracy appended (60.00%)\n", - "Epoch 6017: model set back to train mode\n", - "Epoch 6017: model parameters saved\n", - "Epoch 6018 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6018: avg_loss appended (1.3125)\n", - "Epoch 6018: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6018: accuracy appended (60.00%)\n", - "Epoch 6018: model set back to train mode\n", - "Epoch 6018: model parameters saved\n", - "Epoch 6019 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6019: avg_loss appended (1.3125)\n", - "Epoch 6019: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6019: accuracy appended (60.00%)\n", - "Epoch 6019: model set back to train mode\n", - "Epoch 6019: model parameters saved\n", - "Epoch 6020 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6020: avg_loss appended (1.3125)\n", - "Epoch 6020: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6020: accuracy appended (60.00%)\n", - "Epoch 6020: model set back to train mode\n", - "Epoch 6020: model parameters saved\n", - "Epoch 6021 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6021: avg_loss appended (1.3125)\n", - "Epoch 6021: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6021: accuracy appended (60.00%)\n", - "Epoch 6021: model set back to train mode\n", - "Epoch 6021: model parameters saved\n", - "Epoch 6022 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6022: avg_loss appended (1.3125)\n", - "Epoch 6022: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6022: accuracy appended (60.00%)\n", - "Epoch 6022: model set back to train mode\n", - "Epoch 6022: model parameters saved\n", - "Epoch 6023 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6023: avg_loss appended (1.3125)\n", - "Epoch 6023: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6023: accuracy appended (60.00%)\n", - "Epoch 6023: model set back to train mode\n", - "Epoch 6023: model parameters saved\n", - "Epoch 6024 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6024: avg_loss appended (1.3125)\n", - "Epoch 6024: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6024: accuracy appended (60.00%)\n", - "Epoch 6024: model set back to train mode\n", - "Epoch 6024: model parameters saved\n", - "Epoch 6025 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6025: avg_loss appended (1.3125)\n", - "Epoch 6025: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6025: accuracy appended (60.00%)\n", - "Epoch 6025: model set back to train mode\n", - "Epoch 6025: model parameters saved\n", - "Epoch 6026 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6026: avg_loss appended (1.3125)\n", - "Epoch 6026: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6026: accuracy appended (60.00%)\n", - "Epoch 6026: model set back to train mode\n", - "Epoch 6026: model parameters saved\n", - "Epoch 6027 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6027: avg_loss appended (1.3125)\n", - "Epoch 6027: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6027: accuracy appended (60.00%)\n", - "Epoch 6027: model set back to train mode\n", - "Epoch 6027: model parameters saved\n", - "Epoch 6028 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6028: avg_loss appended (1.3125)\n", - "Epoch 6028: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6028: accuracy appended (60.00%)\n", - "Epoch 6028: model set back to train mode\n", - "Epoch 6028: model parameters saved\n", - "Epoch 6029 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6029: avg_loss appended (1.3125)\n", - "Epoch 6029: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6029: accuracy appended (60.00%)\n", - "Epoch 6029: model set back to train mode\n", - "Epoch 6029: model parameters saved\n", - "Epoch 6030 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6030: avg_loss appended (1.3125)\n", - "Epoch 6030: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6030: accuracy appended (60.00%)\n", - "Epoch 6030: model set back to train mode\n", - "Epoch 6030: model parameters saved\n", - "Epoch 6031 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6031: avg_loss appended (1.3125)\n", - "Epoch 6031: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6031: accuracy appended (60.00%)\n", - "Epoch 6031: model set back to train mode\n", - "Epoch 6031: model parameters saved\n", - "Epoch 6032 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6032: avg_loss appended (1.3125)\n", - "Epoch 6032: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6032: accuracy appended (60.00%)\n", - "Epoch 6032: model set back to train mode\n", - "Epoch 6032: model parameters saved\n", - "Epoch 6033 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6033: avg_loss appended (1.3125)\n", - "Epoch 6033: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6033: accuracy appended (60.00%)\n", - "Epoch 6033: model set back to train mode\n", - "Epoch 6033: model parameters saved\n", - "Epoch 6034 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6034: avg_loss appended (1.3125)\n", - "Epoch 6034: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6034: accuracy appended (60.00%)\n", - "Epoch 6034: model set back to train mode\n", - "Epoch 6034: model parameters saved\n", - "Epoch 6035 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6035: avg_loss appended (1.3125)\n", - "Epoch 6035: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6035: accuracy appended (60.00%)\n", - "Epoch 6035: model set back to train mode\n", - "Epoch 6035: model parameters saved\n", - "Epoch 6036 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6036: avg_loss appended (1.3125)\n", - "Epoch 6036: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6036: accuracy appended (60.00%)\n", - "Epoch 6036: model set back to train mode\n", - "Epoch 6036: model parameters saved\n", - "Epoch 6037 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6037: avg_loss appended (1.3125)\n", - "Epoch 6037: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6037: accuracy appended (60.00%)\n", - "Epoch 6037: model set back to train mode\n", - "Epoch 6037: model parameters saved\n", - "Epoch 6038 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6038: avg_loss appended (1.3125)\n", - "Epoch 6038: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6038: accuracy appended (60.00%)\n", - "Epoch 6038: model set back to train mode\n", - "Epoch 6038: model parameters saved\n", - "Epoch 6039 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6039: avg_loss appended (1.3125)\n", - "Epoch 6039: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6039: accuracy appended (60.00%)\n", - "Epoch 6039: model set back to train mode\n", - "Epoch 6039: model parameters saved\n", - "Epoch 6040 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6040: avg_loss appended (1.3125)\n", - "Epoch 6040: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6040: accuracy appended (60.00%)\n", - "Epoch 6040: model set back to train mode\n", - "Epoch 6040: model parameters saved\n", - "Epoch 6041 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6041: avg_loss appended (1.3125)\n", - "Epoch 6041: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6041: accuracy appended (60.00%)\n", - "Epoch 6041: model set back to train mode\n", - "Epoch 6041: model parameters saved\n", - "Epoch 6042 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6042: avg_loss appended (1.3125)\n", - "Epoch 6042: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6042: accuracy appended (60.00%)\n", - "Epoch 6042: model set back to train mode\n", - "Epoch 6042: model parameters saved\n", - "Epoch 6043 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6043: avg_loss appended (1.3125)\n", - "Epoch 6043: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6043: accuracy appended (60.00%)\n", - "Epoch 6043: model set back to train mode\n", - "Epoch 6043: model parameters saved\n", - "Epoch 6044 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6044: avg_loss appended (1.3125)\n", - "Epoch 6044: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6044: accuracy appended (60.00%)\n", - "Epoch 6044: model set back to train mode\n", - "Epoch 6044: model parameters saved\n", - "Epoch 6045 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6045: avg_loss appended (1.3125)\n", - "Epoch 6045: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6045: accuracy appended (60.00%)\n", - "Epoch 6045: model set back to train mode\n", - "Epoch 6045: model parameters saved\n", - "Epoch 6046 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6046: avg_loss appended (1.3125)\n", - "Epoch 6046: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6046: accuracy appended (60.00%)\n", - "Epoch 6046: model set back to train mode\n", - "Epoch 6046: model parameters saved\n", - "Epoch 6047 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6047: avg_loss appended (1.3125)\n", - "Epoch 6047: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6047: accuracy appended (60.00%)\n", - "Epoch 6047: model set back to train mode\n", - "Epoch 6047: model parameters saved\n", - "Epoch 6048 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6048: avg_loss appended (1.3125)\n", - "Epoch 6048: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6048: accuracy appended (60.00%)\n", - "Epoch 6048: model set back to train mode\n", - "Epoch 6048: model parameters saved\n", - "Epoch 6049 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6049: avg_loss appended (1.3125)\n", - "Epoch 6049: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6049: accuracy appended (60.00%)\n", - "Epoch 6049: model set back to train mode\n", - "Epoch 6049: model parameters saved\n", - "Epoch 6050 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6050: avg_loss appended (1.3125)\n", - "Epoch 6050: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6050: accuracy appended (60.00%)\n", - "Epoch 6050: model set back to train mode\n", - "Epoch 6050: model parameters saved\n", - "Epoch 6051 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6051: avg_loss appended (1.3125)\n", - "Epoch 6051: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6051: accuracy appended (60.00%)\n", - "Epoch 6051: model set back to train mode\n", - "Epoch 6051: model parameters saved\n", - "Epoch 6052 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6052: avg_loss appended (1.3125)\n", - "Epoch 6052: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6052: accuracy appended (60.00%)\n", - "Epoch 6052: model set back to train mode\n", - "Epoch 6052: model parameters saved\n", - "Epoch 6053 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6053: avg_loss appended (1.3125)\n", - "Epoch 6053: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6053: accuracy appended (60.00%)\n", - "Epoch 6053: model set back to train mode\n", - "Epoch 6053: model parameters saved\n", - "Epoch 6054 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6054: avg_loss appended (1.3125)\n", - "Epoch 6054: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6054: accuracy appended (60.00%)\n", - "Epoch 6054: model set back to train mode\n", - "Epoch 6054: model parameters saved\n", - "Epoch 6055 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6055: avg_loss appended (1.3125)\n", - "Epoch 6055: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6055: accuracy appended (60.00%)\n", - "Epoch 6055: model set back to train mode\n", - "Epoch 6055: model parameters saved\n", - "Epoch 6056 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6056: avg_loss appended (1.3125)\n", - "Epoch 6056: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6056: accuracy appended (60.00%)\n", - "Epoch 6056: model set back to train mode\n", - "Epoch 6056: model parameters saved\n", - "Epoch 6057 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6057: avg_loss appended (1.3125)\n", - "Epoch 6057: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6057: accuracy appended (60.00%)\n", - "Epoch 6057: model set back to train mode\n", - "Epoch 6057: model parameters saved\n", - "Epoch 6058 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6058: avg_loss appended (1.3125)\n", - "Epoch 6058: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6058: accuracy appended (60.00%)\n", - "Epoch 6058: model set back to train mode\n", - "Epoch 6058: model parameters saved\n", - "Epoch 6059 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6059: avg_loss appended (1.3125)\n", - "Epoch 6059: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6059: accuracy appended (60.00%)\n", - "Epoch 6059: model set back to train mode\n", - "Epoch 6059: model parameters saved\n", - "Epoch 6060 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6060: avg_loss appended (1.3125)\n", - "Epoch 6060: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6060: accuracy appended (60.00%)\n", - "Epoch 6060: model set back to train mode\n", - "Epoch 6060: model parameters saved\n", - "Epoch 6061 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6061: avg_loss appended (1.3125)\n", - "Epoch 6061: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6061: accuracy appended (60.00%)\n", - "Epoch 6061: model set back to train mode\n", - "Epoch 6061: model parameters saved\n", - "Epoch 6062 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6062: avg_loss appended (1.3125)\n", - "Epoch 6062: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6062: accuracy appended (60.00%)\n", - "Epoch 6062: model set back to train mode\n", - "Epoch 6062: model parameters saved\n", - "Epoch 6063 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6063: avg_loss appended (1.3125)\n", - "Epoch 6063: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6063: accuracy appended (60.00%)\n", - "Epoch 6063: model set back to train mode\n", - "Epoch 6063: model parameters saved\n", - "Epoch 6064 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6064: avg_loss appended (1.3125)\n", - "Epoch 6064: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6064: accuracy appended (60.00%)\n", - "Epoch 6064: model set back to train mode\n", - "Epoch 6064: model parameters saved\n", - "Epoch 6065 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6065: avg_loss appended (1.3125)\n", - "Epoch 6065: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6065: accuracy appended (60.00%)\n", - "Epoch 6065: model set back to train mode\n", - "Epoch 6065: model parameters saved\n", - "Epoch 6066 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6066: avg_loss appended (1.3125)\n", - "Epoch 6066: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6066: accuracy appended (60.00%)\n", - "Epoch 6066: model set back to train mode\n", - "Epoch 6066: model parameters saved\n", - "Epoch 6067 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6067: avg_loss appended (1.3125)\n", - "Epoch 6067: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6067: accuracy appended (60.00%)\n", - "Epoch 6067: model set back to train mode\n", - "Epoch 6067: model parameters saved\n", - "Epoch 6068 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6068: avg_loss appended (1.3125)\n", - "Epoch 6068: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6068: accuracy appended (60.00%)\n", - "Epoch 6068: model set back to train mode\n", - "Epoch 6068: model parameters saved\n", - "Epoch 6069 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6069: avg_loss appended (1.3125)\n", - "Epoch 6069: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6069: accuracy appended (60.00%)\n", - "Epoch 6069: model set back to train mode\n", - "Epoch 6069: model parameters saved\n", - "Epoch 6070 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6070: avg_loss appended (1.3125)\n", - "Epoch 6070: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6070: accuracy appended (60.00%)\n", - "Epoch 6070: model set back to train mode\n", - "Epoch 6070: model parameters saved\n", - "Epoch 6071 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6071: avg_loss appended (1.3125)\n", - "Epoch 6071: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6071: accuracy appended (60.00%)\n", - "Epoch 6071: model set back to train mode\n", - "Epoch 6071: model parameters saved\n", - "Epoch 6072 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6072: avg_loss appended (1.3125)\n", - "Epoch 6072: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6072: accuracy appended (60.00%)\n", - "Epoch 6072: model set back to train mode\n", - "Epoch 6072: model parameters saved\n", - "Epoch 6073 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6073: avg_loss appended (1.3125)\n", - "Epoch 6073: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6073: accuracy appended (60.00%)\n", - "Epoch 6073: model set back to train mode\n", - "Epoch 6073: model parameters saved\n", - "Epoch 6074 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6074: avg_loss appended (1.3125)\n", - "Epoch 6074: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6074: accuracy appended (60.00%)\n", - "Epoch 6074: model set back to train mode\n", - "Epoch 6074: model parameters saved\n", - "Epoch 6075 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6075: avg_loss appended (1.3125)\n", - "Epoch 6075: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6075: accuracy appended (60.00%)\n", - "Epoch 6075: model set back to train mode\n", - "Epoch 6075: model parameters saved\n", - "Epoch 6076 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6076: avg_loss appended (1.3125)\n", - "Epoch 6076: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6076: accuracy appended (60.00%)\n", - "Epoch 6076: model set back to train mode\n", - "Epoch 6076: model parameters saved\n", - "Epoch 6077 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6077: avg_loss appended (1.3125)\n", - "Epoch 6077: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6077: accuracy appended (60.00%)\n", - "Epoch 6077: model set back to train mode\n", - "Epoch 6077: model parameters saved\n", - "Epoch 6078 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6078: avg_loss appended (1.3125)\n", - "Epoch 6078: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6078: accuracy appended (60.00%)\n", - "Epoch 6078: model set back to train mode\n", - "Epoch 6078: model parameters saved\n", - "Epoch 6079 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6079: avg_loss appended (1.3125)\n", - "Epoch 6079: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6079: accuracy appended (60.00%)\n", - "Epoch 6079: model set back to train mode\n", - "Epoch 6079: model parameters saved\n", - "Epoch 6080 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6080: avg_loss appended (1.3125)\n", - "Epoch 6080: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6080: accuracy appended (60.00%)\n", - "Epoch 6080: model set back to train mode\n", - "Epoch 6080: model parameters saved\n", - "Epoch 6081 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6081: avg_loss appended (1.3125)\n", - "Epoch 6081: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6081: accuracy appended (60.00%)\n", - "Epoch 6081: model set back to train mode\n", - "Epoch 6081: model parameters saved\n", - "Epoch 6082 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6082: avg_loss appended (1.3125)\n", - "Epoch 6082: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6082: accuracy appended (60.00%)\n", - "Epoch 6082: model set back to train mode\n", - "Epoch 6082: model parameters saved\n", - "Epoch 6083 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6083: avg_loss appended (1.3125)\n", - "Epoch 6083: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6083: accuracy appended (60.00%)\n", - "Epoch 6083: model set back to train mode\n", - "Epoch 6083: model parameters saved\n", - "Epoch 6084 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6084: avg_loss appended (1.3125)\n", - "Epoch 6084: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6084: accuracy appended (60.00%)\n", - "Epoch 6084: model set back to train mode\n", - "Epoch 6084: model parameters saved\n", - "Epoch 6085 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6085: avg_loss appended (1.3125)\n", - "Epoch 6085: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6085: accuracy appended (60.00%)\n", - "Epoch 6085: model set back to train mode\n", - "Epoch 6085: model parameters saved\n", - "Epoch 6086 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6086: avg_loss appended (1.3125)\n", - "Epoch 6086: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6086: accuracy appended (60.00%)\n", - "Epoch 6086: model set back to train mode\n", - "Epoch 6086: model parameters saved\n", - "Epoch 6087 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6087: avg_loss appended (1.3125)\n", - "Epoch 6087: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6087: accuracy appended (60.00%)\n", - "Epoch 6087: model set back to train mode\n", - "Epoch 6087: model parameters saved\n", - "Epoch 6088 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6088: avg_loss appended (1.3125)\n", - "Epoch 6088: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6088: accuracy appended (60.00%)\n", - "Epoch 6088: model set back to train mode\n", - "Epoch 6088: model parameters saved\n", - "Epoch 6089 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6089: avg_loss appended (1.3125)\n", - "Epoch 6089: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6089: accuracy appended (60.00%)\n", - "Epoch 6089: model set back to train mode\n", - "Epoch 6089: model parameters saved\n", - "Epoch 6090 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6090: avg_loss appended (1.3125)\n", - "Epoch 6090: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6090: accuracy appended (60.00%)\n", - "Epoch 6090: model set back to train mode\n", - "Epoch 6090: model parameters saved\n", - "Epoch 6091 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6091: avg_loss appended (1.3125)\n", - "Epoch 6091: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6091: accuracy appended (60.00%)\n", - "Epoch 6091: model set back to train mode\n", - "Epoch 6091: model parameters saved\n", - "Epoch 6092 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6092: avg_loss appended (1.3125)\n", - "Epoch 6092: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6092: accuracy appended (60.00%)\n", - "Epoch 6092: model set back to train mode\n", - "Epoch 6092: model parameters saved\n", - "Epoch 6093 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6093: avg_loss appended (1.3125)\n", - "Epoch 6093: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6093: accuracy appended (60.00%)\n", - "Epoch 6093: model set back to train mode\n", - "Epoch 6093: model parameters saved\n", - "Epoch 6094 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6094: avg_loss appended (1.3125)\n", - "Epoch 6094: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6094: accuracy appended (60.00%)\n", - "Epoch 6094: model set back to train mode\n", - "Epoch 6094: model parameters saved\n", - "Epoch 6095 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6095: avg_loss appended (1.3125)\n", - "Epoch 6095: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6095: accuracy appended (60.00%)\n", - "Epoch 6095: model set back to train mode\n", - "Epoch 6095: model parameters saved\n", - "Epoch 6096 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6096: avg_loss appended (1.3125)\n", - "Epoch 6096: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6096: accuracy appended (60.00%)\n", - "Epoch 6096: model set back to train mode\n", - "Epoch 6096: model parameters saved\n", - "Epoch 6097 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6097: avg_loss appended (1.3125)\n", - "Epoch 6097: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6097: accuracy appended (60.00%)\n", - "Epoch 6097: model set back to train mode\n", - "Epoch 6097: model parameters saved\n", - "Epoch 6098 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6098: avg_loss appended (1.3125)\n", - "Epoch 6098: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6098: accuracy appended (60.00%)\n", - "Epoch 6098: model set back to train mode\n", - "Epoch 6098: model parameters saved\n", - "Epoch 6099 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6099: avg_loss appended (1.3125)\n", - "Epoch 6099: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6099: accuracy appended (60.00%)\n", - "Epoch 6099: model set back to train mode\n", - "Epoch 6099: model parameters saved\n", - "Epoch 6100 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6100: avg_loss appended (1.3125)\n", - "Epoch 6100: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6100: accuracy appended (60.00%)\n", - "Epoch 6100: model set back to train mode\n", - "Epoch 6100: model parameters saved\n", - "Epoch 6100/10000, Loss: 1.3125, Accuracy: 60.00%\n", - "Epoch 6101 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6101: avg_loss appended (1.3125)\n", - "Epoch 6101: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6101: accuracy appended (60.00%)\n", - "Epoch 6101: model set back to train mode\n", - "Epoch 6101: model parameters saved\n", - "Epoch 6102 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6102: avg_loss appended (1.3125)\n", - "Epoch 6102: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6102: accuracy appended (60.00%)\n", - "Epoch 6102: model set back to train mode\n", - "Epoch 6102: model parameters saved\n", - "Epoch 6103 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6103: avg_loss appended (1.3125)\n", - "Epoch 6103: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6103: accuracy appended (60.00%)\n", - "Epoch 6103: model set back to train mode\n", - "Epoch 6103: model parameters saved\n", - "Epoch 6104 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6104: avg_loss appended (1.3125)\n", - "Epoch 6104: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6104: accuracy appended (60.00%)\n", - "Epoch 6104: model set back to train mode\n", - "Epoch 6104: model parameters saved\n", - "Epoch 6105 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6105: avg_loss appended (1.3125)\n", - "Epoch 6105: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6105: accuracy appended (60.00%)\n", - "Epoch 6105: model set back to train mode\n", - "Epoch 6105: model parameters saved\n", - "Epoch 6106 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6106: avg_loss appended (1.3125)\n", - "Epoch 6106: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6106: accuracy appended (60.00%)\n", - "Epoch 6106: model set back to train mode\n", - "Epoch 6106: model parameters saved\n", - "Epoch 6107 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6107: avg_loss appended (1.3125)\n", - "Epoch 6107: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6107: accuracy appended (60.00%)\n", - "Epoch 6107: model set back to train mode\n", - "Epoch 6107: model parameters saved\n", - "Epoch 6108 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6108: avg_loss appended (1.3125)\n", - "Epoch 6108: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6108: accuracy appended (60.00%)\n", - "Epoch 6108: model set back to train mode\n", - "Epoch 6108: model parameters saved\n", - "Epoch 6109 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6109: avg_loss appended (1.3125)\n", - "Epoch 6109: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6109: accuracy appended (60.00%)\n", - "Epoch 6109: model set back to train mode\n", - "Epoch 6109: model parameters saved\n", - "Epoch 6110 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6110: avg_loss appended (1.3125)\n", - "Epoch 6110: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6110: accuracy appended (60.00%)\n", - "Epoch 6110: model set back to train mode\n", - "Epoch 6110: model parameters saved\n", - "Epoch 6111 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6111: avg_loss appended (1.3125)\n", - "Epoch 6111: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6111: accuracy appended (60.00%)\n", - "Epoch 6111: model set back to train mode\n", - "Epoch 6111: model parameters saved\n", - "Epoch 6112 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6112: avg_loss appended (1.3125)\n", - "Epoch 6112: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6112: accuracy appended (60.00%)\n", - "Epoch 6112: model set back to train mode\n", - "Epoch 6112: model parameters saved\n", - "Epoch 6113 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6113: avg_loss appended (1.3125)\n", - "Epoch 6113: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6113: accuracy appended (60.00%)\n", - "Epoch 6113: model set back to train mode\n", - "Epoch 6113: model parameters saved\n", - "Epoch 6114 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6114: avg_loss appended (1.3125)\n", - "Epoch 6114: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6114: accuracy appended (60.00%)\n", - "Epoch 6114: model set back to train mode\n", - "Epoch 6114: model parameters saved\n", - "Epoch 6115 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6115: avg_loss appended (1.3125)\n", - "Epoch 6115: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6115: accuracy appended (60.00%)\n", - "Epoch 6115: model set back to train mode\n", - "Epoch 6115: model parameters saved\n", - "Epoch 6116 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6116: avg_loss appended (1.3125)\n", - "Epoch 6116: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6116: accuracy appended (60.00%)\n", - "Epoch 6116: model set back to train mode\n", - "Epoch 6116: model parameters saved\n", - "Epoch 6117 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6117: avg_loss appended (1.3125)\n", - "Epoch 6117: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6117: accuracy appended (60.00%)\n", - "Epoch 6117: model set back to train mode\n", - "Epoch 6117: model parameters saved\n", - "Epoch 6118 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6118: avg_loss appended (1.3125)\n", - "Epoch 6118: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6118: accuracy appended (60.00%)\n", - "Epoch 6118: model set back to train mode\n", - "Epoch 6118: model parameters saved\n", - "Epoch 6119 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6119: avg_loss appended (1.3125)\n", - "Epoch 6119: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6119: accuracy appended (60.00%)\n", - "Epoch 6119: model set back to train mode\n", - "Epoch 6119: model parameters saved\n", - "Epoch 6120 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6120: avg_loss appended (1.3125)\n", - "Epoch 6120: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6120: accuracy appended (60.00%)\n", - "Epoch 6120: model set back to train mode\n", - "Epoch 6120: model parameters saved\n", - "Epoch 6121 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6121: avg_loss appended (1.3125)\n", - "Epoch 6121: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6121: accuracy appended (60.00%)\n", - "Epoch 6121: model set back to train mode\n", - "Epoch 6121: model parameters saved\n", - "Epoch 6122 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6122: avg_loss appended (1.3125)\n", - "Epoch 6122: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6122: accuracy appended (60.00%)\n", - "Epoch 6122: model set back to train mode\n", - "Epoch 6122: model parameters saved\n", - "Epoch 6123 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6123: avg_loss appended (1.3125)\n", - "Epoch 6123: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6123: accuracy appended (60.00%)\n", - "Epoch 6123: model set back to train mode\n", - "Epoch 6123: model parameters saved\n", - "Epoch 6124 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6124: avg_loss appended (1.3125)\n", - "Epoch 6124: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6124: accuracy appended (60.00%)\n", - "Epoch 6124: model set back to train mode\n", - "Epoch 6124: model parameters saved\n", - "Epoch 6125 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6125: avg_loss appended (1.3125)\n", - "Epoch 6125: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6125: accuracy appended (60.00%)\n", - "Epoch 6125: model set back to train mode\n", - "Epoch 6125: model parameters saved\n", - "Epoch 6126 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6126: avg_loss appended (1.3125)\n", - "Epoch 6126: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6126: accuracy appended (60.00%)\n", - "Epoch 6126: model set back to train mode\n", - "Epoch 6126: model parameters saved\n", - "Epoch 6127 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6127: avg_loss appended (1.3125)\n", - "Epoch 6127: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6127: accuracy appended (60.00%)\n", - "Epoch 6127: model set back to train mode\n", - "Epoch 6127: model parameters saved\n", - "Epoch 6128 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6128: avg_loss appended (1.3125)\n", - "Epoch 6128: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6128: accuracy appended (60.00%)\n", - "Epoch 6128: model set back to train mode\n", - "Epoch 6128: model parameters saved\n", - "Epoch 6129 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6129: avg_loss appended (1.3125)\n", - "Epoch 6129: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6129: accuracy appended (60.00%)\n", - "Epoch 6129: model set back to train mode\n", - "Epoch 6129: model parameters saved\n", - "Epoch 6130 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6130: avg_loss appended (1.3125)\n", - "Epoch 6130: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6130: accuracy appended (60.00%)\n", - "Epoch 6130: model set back to train mode\n", - "Epoch 6130: model parameters saved\n", - "Epoch 6131 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6131: avg_loss appended (1.3125)\n", - "Epoch 6131: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6131: accuracy appended (60.00%)\n", - "Epoch 6131: model set back to train mode\n", - "Epoch 6131: model parameters saved\n", - "Epoch 6132 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6132: avg_loss appended (1.3125)\n", - "Epoch 6132: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6132: accuracy appended (60.00%)\n", - "Epoch 6132: model set back to train mode\n", - "Epoch 6132: model parameters saved\n", - "Epoch 6133 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6133: avg_loss appended (1.3125)\n", - "Epoch 6133: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6133: accuracy appended (60.00%)\n", - "Epoch 6133: model set back to train mode\n", - "Epoch 6133: model parameters saved\n", - "Epoch 6134 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6134: avg_loss appended (1.3125)\n", - "Epoch 6134: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6134: accuracy appended (60.00%)\n", - "Epoch 6134: model set back to train mode\n", - "Epoch 6134: model parameters saved\n", - "Epoch 6135 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6135: avg_loss appended (1.3125)\n", - "Epoch 6135: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6135: accuracy appended (60.00%)\n", - "Epoch 6135: model set back to train mode\n", - "Epoch 6135: model parameters saved\n", - "Epoch 6136 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6136: avg_loss appended (1.3125)\n", - "Epoch 6136: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6136: accuracy appended (60.00%)\n", - "Epoch 6136: model set back to train mode\n", - "Epoch 6136: model parameters saved\n", - "Epoch 6137 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6137: avg_loss appended (1.3125)\n", - "Epoch 6137: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6137: accuracy appended (60.00%)\n", - "Epoch 6137: model set back to train mode\n", - "Epoch 6137: model parameters saved\n", - "Epoch 6138 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6138: avg_loss appended (1.3125)\n", - "Epoch 6138: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6138: accuracy appended (60.00%)\n", - "Epoch 6138: model set back to train mode\n", - "Epoch 6138: model parameters saved\n", - "Epoch 6139 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6139: avg_loss appended (1.3125)\n", - "Epoch 6139: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6139: accuracy appended (60.00%)\n", - "Epoch 6139: model set back to train mode\n", - "Epoch 6139: model parameters saved\n", - "Epoch 6140 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6140: avg_loss appended (1.3125)\n", - "Epoch 6140: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6140: accuracy appended (60.00%)\n", - "Epoch 6140: model set back to train mode\n", - "Epoch 6140: model parameters saved\n", - "Epoch 6141 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6141: avg_loss appended (1.3125)\n", - "Epoch 6141: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6141: accuracy appended (60.00%)\n", - "Epoch 6141: model set back to train mode\n", - "Epoch 6141: model parameters saved\n", - "Epoch 6142 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6142: avg_loss appended (1.3125)\n", - "Epoch 6142: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6142: accuracy appended (60.00%)\n", - "Epoch 6142: model set back to train mode\n", - "Epoch 6142: model parameters saved\n", - "Epoch 6143 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6143: avg_loss appended (1.3125)\n", - "Epoch 6143: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6143: accuracy appended (60.00%)\n", - "Epoch 6143: model set back to train mode\n", - "Epoch 6143: model parameters saved\n", - "Epoch 6144 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6144: avg_loss appended (1.3125)\n", - "Epoch 6144: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6144: accuracy appended (60.00%)\n", - "Epoch 6144: model set back to train mode\n", - "Epoch 6144: model parameters saved\n", - "Epoch 6145 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6145: avg_loss appended (1.3125)\n", - "Epoch 6145: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6145: accuracy appended (60.00%)\n", - "Epoch 6145: model set back to train mode\n", - "Epoch 6145: model parameters saved\n", - "Epoch 6146 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6146: avg_loss appended (1.3125)\n", - "Epoch 6146: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6146: accuracy appended (60.00%)\n", - "Epoch 6146: model set back to train mode\n", - "Epoch 6146: model parameters saved\n", - "Epoch 6147 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6147: avg_loss appended (1.3125)\n", - "Epoch 6147: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6147: accuracy appended (60.00%)\n", - "Epoch 6147: model set back to train mode\n", - "Epoch 6147: model parameters saved\n", - "Epoch 6148 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6148: avg_loss appended (1.3125)\n", - "Epoch 6148: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6148: accuracy appended (60.00%)\n", - "Epoch 6148: model set back to train mode\n", - "Epoch 6148: model parameters saved\n", - "Epoch 6149 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6149: avg_loss appended (1.3125)\n", - "Epoch 6149: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6149: accuracy appended (60.00%)\n", - "Epoch 6149: model set back to train mode\n", - "Epoch 6149: model parameters saved\n", - "Epoch 6150 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6150: avg_loss appended (1.3125)\n", - "Epoch 6150: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6150: accuracy appended (60.00%)\n", - "Epoch 6150: model set back to train mode\n", - "Epoch 6150: model parameters saved\n", - "Epoch 6151 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6151: avg_loss appended (1.3125)\n", - "Epoch 6151: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6151: accuracy appended (60.00%)\n", - "Epoch 6151: model set back to train mode\n", - "Epoch 6151: model parameters saved\n", - "Epoch 6152 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6152: avg_loss appended (1.3125)\n", - "Epoch 6152: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6152: accuracy appended (60.00%)\n", - "Epoch 6152: model set back to train mode\n", - "Epoch 6152: model parameters saved\n", - "Epoch 6153 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6153: avg_loss appended (1.3125)\n", - "Epoch 6153: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6153: accuracy appended (60.00%)\n", - "Epoch 6153: model set back to train mode\n", - "Epoch 6153: model parameters saved\n", - "Epoch 6154 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6154: avg_loss appended (1.3125)\n", - "Epoch 6154: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6154: accuracy appended (60.00%)\n", - "Epoch 6154: model set back to train mode\n", - "Epoch 6154: model parameters saved\n", - "Epoch 6155 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6155: avg_loss appended (1.3125)\n", - "Epoch 6155: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6155: accuracy appended (60.00%)\n", - "Epoch 6155: model set back to train mode\n", - "Epoch 6155: model parameters saved\n", - "Epoch 6156 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6156: avg_loss appended (1.3125)\n", - "Epoch 6156: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6156: accuracy appended (60.00%)\n", - "Epoch 6156: model set back to train mode\n", - "Epoch 6156: model parameters saved\n", - "Epoch 6157 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6157: avg_loss appended (1.3125)\n", - "Epoch 6157: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6157: accuracy appended (60.00%)\n", - "Epoch 6157: model set back to train mode\n", - "Epoch 6157: model parameters saved\n", - "Epoch 6158 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6158: avg_loss appended (1.3125)\n", - "Epoch 6158: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6158: accuracy appended (60.00%)\n", - "Epoch 6158: model set back to train mode\n", - "Epoch 6158: model parameters saved\n", - "Epoch 6159 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6159: avg_loss appended (1.3125)\n", - "Epoch 6159: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6159: accuracy appended (60.00%)\n", - "Epoch 6159: model set back to train mode\n", - "Epoch 6159: model parameters saved\n", - "Epoch 6160 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6160: avg_loss appended (1.3125)\n", - "Epoch 6160: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6160: accuracy appended (60.00%)\n", - "Epoch 6160: model set back to train mode\n", - "Epoch 6160: model parameters saved\n", - "Epoch 6161 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6161: avg_loss appended (1.3125)\n", - "Epoch 6161: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6161: accuracy appended (60.00%)\n", - "Epoch 6161: model set back to train mode\n", - "Epoch 6161: model parameters saved\n", - "Epoch 6162 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6162: avg_loss appended (1.3125)\n", - "Epoch 6162: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6162: accuracy appended (60.00%)\n", - "Epoch 6162: model set back to train mode\n", - "Epoch 6162: model parameters saved\n", - "Epoch 6163 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6163: avg_loss appended (1.3125)\n", - "Epoch 6163: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6163: accuracy appended (60.00%)\n", - "Epoch 6163: model set back to train mode\n", - "Epoch 6163: model parameters saved\n", - "Epoch 6164 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6164: avg_loss appended (1.3125)\n", - "Epoch 6164: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6164: accuracy appended (60.00%)\n", - "Epoch 6164: model set back to train mode\n", - "Epoch 6164: model parameters saved\n", - "Epoch 6165 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6165: avg_loss appended (1.3125)\n", - "Epoch 6165: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6165: accuracy appended (60.00%)\n", - "Epoch 6165: model set back to train mode\n", - "Epoch 6165: model parameters saved\n", - "Epoch 6166 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6166: avg_loss appended (1.3125)\n", - "Epoch 6166: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6166: accuracy appended (60.00%)\n", - "Epoch 6166: model set back to train mode\n", - "Epoch 6166: model parameters saved\n", - "Epoch 6167 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6167: avg_loss appended (1.3125)\n", - "Epoch 6167: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6167: accuracy appended (60.00%)\n", - "Epoch 6167: model set back to train mode\n", - "Epoch 6167: model parameters saved\n", - "Epoch 6168 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6168: avg_loss appended (1.3125)\n", - "Epoch 6168: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6168: accuracy appended (60.00%)\n", - "Epoch 6168: model set back to train mode\n", - "Epoch 6168: model parameters saved\n", - "Epoch 6169 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6169: avg_loss appended (1.3125)\n", - "Epoch 6169: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6169: accuracy appended (60.00%)\n", - "Epoch 6169: model set back to train mode\n", - "Epoch 6169: model parameters saved\n", - "Epoch 6170 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6170: avg_loss appended (1.3125)\n", - "Epoch 6170: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6170: accuracy appended (60.00%)\n", - "Epoch 6170: model set back to train mode\n", - "Epoch 6170: model parameters saved\n", - "Epoch 6171 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6171: avg_loss appended (1.3125)\n", - "Epoch 6171: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6171: accuracy appended (60.00%)\n", - "Epoch 6171: model set back to train mode\n", - "Epoch 6171: model parameters saved\n", - "Epoch 6172 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6172: avg_loss appended (1.3125)\n", - "Epoch 6172: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6172: accuracy appended (60.00%)\n", - "Epoch 6172: model set back to train mode\n", - "Epoch 6172: model parameters saved\n", - "Epoch 6173 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6173: avg_loss appended (1.3125)\n", - "Epoch 6173: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6173: accuracy appended (60.00%)\n", - "Epoch 6173: model set back to train mode\n", - "Epoch 6173: model parameters saved\n", - "Epoch 6174 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6174: avg_loss appended (1.3125)\n", - "Epoch 6174: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6174: accuracy appended (60.00%)\n", - "Epoch 6174: model set back to train mode\n", - "Epoch 6174: model parameters saved\n", - "Epoch 6175 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6175: avg_loss appended (1.3125)\n", - "Epoch 6175: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6175: accuracy appended (60.00%)\n", - "Epoch 6175: model set back to train mode\n", - "Epoch 6175: model parameters saved\n", - "Epoch 6176 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6176: avg_loss appended (1.3125)\n", - "Epoch 6176: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6176: accuracy appended (60.00%)\n", - "Epoch 6176: model set back to train mode\n", - "Epoch 6176: model parameters saved\n", - "Epoch 6177 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6177: avg_loss appended (1.3125)\n", - "Epoch 6177: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6177: accuracy appended (60.00%)\n", - "Epoch 6177: model set back to train mode\n", - "Epoch 6177: model parameters saved\n", - "Epoch 6178 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6178: avg_loss appended (1.3125)\n", - "Epoch 6178: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6178: accuracy appended (60.00%)\n", - "Epoch 6178: model set back to train mode\n", - "Epoch 6178: model parameters saved\n", - "Epoch 6179 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6179: avg_loss appended (1.3125)\n", - "Epoch 6179: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6179: accuracy appended (60.00%)\n", - "Epoch 6179: model set back to train mode\n", - "Epoch 6179: model parameters saved\n", - "Epoch 6180 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6180: avg_loss appended (1.3125)\n", - "Epoch 6180: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6180: accuracy appended (60.00%)\n", - "Epoch 6180: model set back to train mode\n", - "Epoch 6180: model parameters saved\n", - "Epoch 6181 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6181: avg_loss appended (1.3125)\n", - "Epoch 6181: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6181: accuracy appended (60.00%)\n", - "Epoch 6181: model set back to train mode\n", - "Epoch 6181: model parameters saved\n", - "Epoch 6182 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6182: avg_loss appended (1.3125)\n", - "Epoch 6182: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6182: accuracy appended (60.00%)\n", - "Epoch 6182: model set back to train mode\n", - "Epoch 6182: model parameters saved\n", - "Epoch 6183 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6183: avg_loss appended (1.3125)\n", - "Epoch 6183: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6183: accuracy appended (60.00%)\n", - "Epoch 6183: model set back to train mode\n", - "Epoch 6183: model parameters saved\n", - "Epoch 6184 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6184: avg_loss appended (1.3125)\n", - "Epoch 6184: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6184: accuracy appended (60.00%)\n", - "Epoch 6184: model set back to train mode\n", - "Epoch 6184: model parameters saved\n", - "Epoch 6185 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6185: avg_loss appended (1.3125)\n", - "Epoch 6185: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6185: accuracy appended (60.00%)\n", - "Epoch 6185: model set back to train mode\n", - "Epoch 6185: model parameters saved\n", - "Epoch 6186 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6186: avg_loss appended (1.3125)\n", - "Epoch 6186: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6186: accuracy appended (60.00%)\n", - "Epoch 6186: model set back to train mode\n", - "Epoch 6186: model parameters saved\n", - "Epoch 6187 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6187: avg_loss appended (1.3125)\n", - "Epoch 6187: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6187: accuracy appended (60.00%)\n", - "Epoch 6187: model set back to train mode\n", - "Epoch 6187: model parameters saved\n", - "Epoch 6188 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6188: avg_loss appended (1.3125)\n", - "Epoch 6188: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6188: accuracy appended (60.00%)\n", - "Epoch 6188: model set back to train mode\n", - "Epoch 6188: model parameters saved\n", - "Epoch 6189 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6189: avg_loss appended (1.3125)\n", - "Epoch 6189: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6189: accuracy appended (60.00%)\n", - "Epoch 6189: model set back to train mode\n", - "Epoch 6189: model parameters saved\n", - "Epoch 6190 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6190: avg_loss appended (1.3125)\n", - "Epoch 6190: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6190: accuracy appended (60.00%)\n", - "Epoch 6190: model set back to train mode\n", - "Epoch 6190: model parameters saved\n", - "Epoch 6191 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6191: avg_loss appended (1.3125)\n", - "Epoch 6191: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6191: accuracy appended (60.00%)\n", - "Epoch 6191: model set back to train mode\n", - "Epoch 6191: model parameters saved\n", - "Epoch 6192 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6192: avg_loss appended (1.3125)\n", - "Epoch 6192: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6192: accuracy appended (60.00%)\n", - "Epoch 6192: model set back to train mode\n", - "Epoch 6192: model parameters saved\n", - "Epoch 6193 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6193: avg_loss appended (1.3125)\n", - "Epoch 6193: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6193: accuracy appended (60.00%)\n", - "Epoch 6193: model set back to train mode\n", - "Epoch 6193: model parameters saved\n", - "Epoch 6194 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6194: avg_loss appended (1.3125)\n", - "Epoch 6194: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6194: accuracy appended (60.00%)\n", - "Epoch 6194: model set back to train mode\n", - "Epoch 6194: model parameters saved\n", - "Epoch 6195 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6195: avg_loss appended (1.3125)\n", - "Epoch 6195: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6195: accuracy appended (60.00%)\n", - "Epoch 6195: model set back to train mode\n", - "Epoch 6195: model parameters saved\n", - "Epoch 6196 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6196: avg_loss appended (1.3125)\n", - "Epoch 6196: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6196: accuracy appended (60.00%)\n", - "Epoch 6196: model set back to train mode\n", - "Epoch 6196: model parameters saved\n", - "Epoch 6197 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6197: avg_loss appended (1.3125)\n", - "Epoch 6197: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6197: accuracy appended (60.00%)\n", - "Epoch 6197: model set back to train mode\n", - "Epoch 6197: model parameters saved\n", - "Epoch 6198 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6198: avg_loss appended (1.3125)\n", - "Epoch 6198: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6198: accuracy appended (60.00%)\n", - "Epoch 6198: model set back to train mode\n", - "Epoch 6198: model parameters saved\n", - "Epoch 6199 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6199: avg_loss appended (1.3125)\n", - "Epoch 6199: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6199: accuracy appended (60.00%)\n", - "Epoch 6199: model set back to train mode\n", - "Epoch 6199: model parameters saved\n", - "Epoch 6200 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6200: avg_loss appended (1.3125)\n", - "Epoch 6200: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6200: accuracy appended (60.00%)\n", - "Epoch 6200: model set back to train mode\n", - "Epoch 6200: model parameters saved\n", - "Epoch 6200/10000, Loss: 1.3125, Accuracy: 60.00%\n", - "Epoch 6201 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6201: avg_loss appended (1.3125)\n", - "Epoch 6201: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6201: accuracy appended (60.00%)\n", - "Epoch 6201: model set back to train mode\n", - "Epoch 6201: model parameters saved\n", - "Epoch 6202 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6202: avg_loss appended (1.3125)\n", - "Epoch 6202: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6202: accuracy appended (60.00%)\n", - "Epoch 6202: model set back to train mode\n", - "Epoch 6202: model parameters saved\n", - "Epoch 6203 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6203: avg_loss appended (1.3125)\n", - "Epoch 6203: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6203: accuracy appended (60.00%)\n", - "Epoch 6203: model set back to train mode\n", - "Epoch 6203: model parameters saved\n", - "Epoch 6204 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6204: avg_loss appended (1.3125)\n", - "Epoch 6204: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6204: accuracy appended (60.00%)\n", - "Epoch 6204: model set back to train mode\n", - "Epoch 6204: model parameters saved\n", - "Epoch 6205 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6205: avg_loss appended (1.3125)\n", - "Epoch 6205: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6205: accuracy appended (60.00%)\n", - "Epoch 6205: model set back to train mode\n", - "Epoch 6205: model parameters saved\n", - "Epoch 6206 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6206: avg_loss appended (1.3125)\n", - "Epoch 6206: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6206: accuracy appended (60.00%)\n", - "Epoch 6206: model set back to train mode\n", - "Epoch 6206: model parameters saved\n", - "Epoch 6207 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6207: avg_loss appended (1.3125)\n", - "Epoch 6207: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6207: accuracy appended (60.00%)\n", - "Epoch 6207: model set back to train mode\n", - "Epoch 6207: model parameters saved\n", - "Epoch 6208 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6208: avg_loss appended (1.3125)\n", - "Epoch 6208: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6208: accuracy appended (60.00%)\n", - "Epoch 6208: model set back to train mode\n", - "Epoch 6208: model parameters saved\n", - "Epoch 6209 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6209: avg_loss appended (1.3125)\n", - "Epoch 6209: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6209: accuracy appended (60.00%)\n", - "Epoch 6209: model set back to train mode\n", - "Epoch 6209: model parameters saved\n", - "Epoch 6210 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6210: avg_loss appended (1.3125)\n", - "Epoch 6210: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6210: accuracy appended (60.00%)\n", - "Epoch 6210: model set back to train mode\n", - "Epoch 6210: model parameters saved\n", - "Epoch 6211 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6211: avg_loss appended (1.3125)\n", - "Epoch 6211: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6211: accuracy appended (60.00%)\n", - "Epoch 6211: model set back to train mode\n", - "Epoch 6211: model parameters saved\n", - "Epoch 6212 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6212: avg_loss appended (1.3125)\n", - "Epoch 6212: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6212: accuracy appended (60.00%)\n", - "Epoch 6212: model set back to train mode\n", - "Epoch 6212: model parameters saved\n", - "Epoch 6213 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6213: avg_loss appended (1.3125)\n", - "Epoch 6213: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6213: accuracy appended (60.00%)\n", - "Epoch 6213: model set back to train mode\n", - "Epoch 6213: model parameters saved\n", - "Epoch 6214 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6214: avg_loss appended (1.3125)\n", - "Epoch 6214: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6214: accuracy appended (60.00%)\n", - "Epoch 6214: model set back to train mode\n", - "Epoch 6214: model parameters saved\n", - "Epoch 6215 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6215: avg_loss appended (1.3125)\n", - "Epoch 6215: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6215: accuracy appended (60.00%)\n", - "Epoch 6215: model set back to train mode\n", - "Epoch 6215: model parameters saved\n", - "Epoch 6216 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6216: avg_loss appended (1.3125)\n", - "Epoch 6216: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6216: accuracy appended (60.00%)\n", - "Epoch 6216: model set back to train mode\n", - "Epoch 6216: model parameters saved\n", - "Epoch 6217 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6217: avg_loss appended (1.3125)\n", - "Epoch 6217: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6217: accuracy appended (60.00%)\n", - "Epoch 6217: model set back to train mode\n", - "Epoch 6217: model parameters saved\n", - "Epoch 6218 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6218: avg_loss appended (1.3125)\n", - "Epoch 6218: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6218: accuracy appended (60.00%)\n", - "Epoch 6218: model set back to train mode\n", - "Epoch 6218: model parameters saved\n", - "Epoch 6219 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6219: avg_loss appended (1.3125)\n", - "Epoch 6219: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6219: accuracy appended (60.00%)\n", - "Epoch 6219: model set back to train mode\n", - "Epoch 6219: model parameters saved\n", - "Epoch 6220 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6220: avg_loss appended (1.3125)\n", - "Epoch 6220: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6220: accuracy appended (60.00%)\n", - "Epoch 6220: model set back to train mode\n", - "Epoch 6220: model parameters saved\n", - "Epoch 6221 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6221: avg_loss appended (1.3125)\n", - "Epoch 6221: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6221: accuracy appended (60.00%)\n", - "Epoch 6221: model set back to train mode\n", - "Epoch 6221: model parameters saved\n", - "Epoch 6222 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6222: avg_loss appended (1.3125)\n", - "Epoch 6222: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6222: accuracy appended (60.00%)\n", - "Epoch 6222: model set back to train mode\n", - "Epoch 6222: model parameters saved\n", - "Epoch 6223 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6223: avg_loss appended (1.3125)\n", - "Epoch 6223: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6223: accuracy appended (60.00%)\n", - "Epoch 6223: model set back to train mode\n", - "Epoch 6223: model parameters saved\n", - "Epoch 6224 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6224: avg_loss appended (1.3125)\n", - "Epoch 6224: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6224: accuracy appended (60.00%)\n", - "Epoch 6224: model set back to train mode\n", - "Epoch 6224: model parameters saved\n", - "Epoch 6225 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6225: avg_loss appended (1.3125)\n", - "Epoch 6225: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6225: accuracy appended (60.00%)\n", - "Epoch 6225: model set back to train mode\n", - "Epoch 6225: model parameters saved\n", - "Epoch 6226 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6226: avg_loss appended (1.3125)\n", - "Epoch 6226: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6226: accuracy appended (60.00%)\n", - "Epoch 6226: model set back to train mode\n", - "Epoch 6226: model parameters saved\n", - "Epoch 6227 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6227: avg_loss appended (1.3125)\n", - "Epoch 6227: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6227: accuracy appended (60.00%)\n", - "Epoch 6227: model set back to train mode\n", - "Epoch 6227: model parameters saved\n", - "Epoch 6228 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6228: avg_loss appended (1.3125)\n", - "Epoch 6228: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6228: accuracy appended (60.00%)\n", - "Epoch 6228: model set back to train mode\n", - "Epoch 6228: model parameters saved\n", - "Epoch 6229 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6229: avg_loss appended (1.3125)\n", - "Epoch 6229: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6229: accuracy appended (60.00%)\n", - "Epoch 6229: model set back to train mode\n", - "Epoch 6229: model parameters saved\n", - "Epoch 6230 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6230: avg_loss appended (1.3125)\n", - "Epoch 6230: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6230: accuracy appended (60.00%)\n", - "Epoch 6230: model set back to train mode\n", - "Epoch 6230: model parameters saved\n", - "Epoch 6231 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6231: avg_loss appended (1.3125)\n", - "Epoch 6231: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6231: accuracy appended (60.00%)\n", - "Epoch 6231: model set back to train mode\n", - "Epoch 6231: model parameters saved\n", - "Epoch 6232 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6232: avg_loss appended (1.3125)\n", - "Epoch 6232: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6232: accuracy appended (60.00%)\n", - "Epoch 6232: model set back to train mode\n", - "Epoch 6232: model parameters saved\n", - "Epoch 6233 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6233: avg_loss appended (1.3125)\n", - "Epoch 6233: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6233: accuracy appended (60.00%)\n", - "Epoch 6233: model set back to train mode\n", - "Epoch 6233: model parameters saved\n", - "Epoch 6234 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6234: avg_loss appended (1.3125)\n", - "Epoch 6234: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6234: accuracy appended (60.00%)\n", - "Epoch 6234: model set back to train mode\n", - "Epoch 6234: model parameters saved\n", - "Epoch 6235 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6235: avg_loss appended (1.3125)\n", - "Epoch 6235: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6235: accuracy appended (60.00%)\n", - "Epoch 6235: model set back to train mode\n", - "Epoch 6235: model parameters saved\n", - "Epoch 6236 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6236: avg_loss appended (1.3125)\n", - "Epoch 6236: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6236: accuracy appended (60.00%)\n", - "Epoch 6236: model set back to train mode\n", - "Epoch 6236: model parameters saved\n", - "Epoch 6237 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6237: avg_loss appended (1.3125)\n", - "Epoch 6237: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6237: accuracy appended (60.00%)\n", - "Epoch 6237: model set back to train mode\n", - "Epoch 6237: model parameters saved\n", - "Epoch 6238 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6238: avg_loss appended (1.3125)\n", - "Epoch 6238: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6238: accuracy appended (60.00%)\n", - "Epoch 6238: model set back to train mode\n", - "Epoch 6238: model parameters saved\n", - "Epoch 6239 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6239: avg_loss appended (1.3125)\n", - "Epoch 6239: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6239: accuracy appended (60.00%)\n", - "Epoch 6239: model set back to train mode\n", - "Epoch 6239: model parameters saved\n", - "Epoch 6240 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6240: avg_loss appended (1.3125)\n", - "Epoch 6240: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6240: accuracy appended (60.00%)\n", - "Epoch 6240: model set back to train mode\n", - "Epoch 6240: model parameters saved\n", - "Epoch 6241 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6241: avg_loss appended (1.3125)\n", - "Epoch 6241: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6241: accuracy appended (60.00%)\n", - "Epoch 6241: model set back to train mode\n", - "Epoch 6241: model parameters saved\n", - "Epoch 6242 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6242: avg_loss appended (1.3125)\n", - "Epoch 6242: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6242: accuracy appended (60.00%)\n", - "Epoch 6242: model set back to train mode\n", - "Epoch 6242: model parameters saved\n", - "Epoch 6243 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6243: avg_loss appended (1.3125)\n", - "Epoch 6243: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6243: accuracy appended (60.00%)\n", - "Epoch 6243: model set back to train mode\n", - "Epoch 6243: model parameters saved\n", - "Epoch 6244 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6244: avg_loss appended (1.3125)\n", - "Epoch 6244: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6244: accuracy appended (60.00%)\n", - "Epoch 6244: model set back to train mode\n", - "Epoch 6244: model parameters saved\n", - "Epoch 6245 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6245: avg_loss appended (1.3125)\n", - "Epoch 6245: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6245: accuracy appended (60.00%)\n", - "Epoch 6245: model set back to train mode\n", - "Epoch 6245: model parameters saved\n", - "Epoch 6246 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6246: avg_loss appended (1.3125)\n", - "Epoch 6246: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6246: accuracy appended (60.00%)\n", - "Epoch 6246: model set back to train mode\n", - "Epoch 6246: model parameters saved\n", - "Epoch 6247 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6247: avg_loss appended (1.3125)\n", - "Epoch 6247: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6247: accuracy appended (60.00%)\n", - "Epoch 6247: model set back to train mode\n", - "Epoch 6247: model parameters saved\n", - "Epoch 6248 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6248: avg_loss appended (1.3125)\n", - "Epoch 6248: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6248: accuracy appended (60.00%)\n", - "Epoch 6248: model set back to train mode\n", - "Epoch 6248: model parameters saved\n", - "Epoch 6249 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6249: avg_loss appended (1.3125)\n", - "Epoch 6249: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6249: accuracy appended (60.00%)\n", - "Epoch 6249: model set back to train mode\n", - "Epoch 6249: model parameters saved\n", - "Epoch 6250 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6250: avg_loss appended (1.3125)\n", - "Epoch 6250: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6250: accuracy appended (60.00%)\n", - "Epoch 6250: model set back to train mode\n", - "Epoch 6250: model parameters saved\n", - "Epoch 6251 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6251: avg_loss appended (1.3125)\n", - "Epoch 6251: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6251: accuracy appended (60.00%)\n", - "Epoch 6251: model set back to train mode\n", - "Epoch 6251: model parameters saved\n", - "Epoch 6252 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6252: avg_loss appended (1.3125)\n", - "Epoch 6252: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6252: accuracy appended (60.00%)\n", - "Epoch 6252: model set back to train mode\n", - "Epoch 6252: model parameters saved\n", - "Epoch 6253 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6253: avg_loss appended (1.3125)\n", - "Epoch 6253: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6253: accuracy appended (60.00%)\n", - "Epoch 6253: model set back to train mode\n", - "Epoch 6253: model parameters saved\n", - "Epoch 6254 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6254: avg_loss appended (1.3125)\n", - "Epoch 6254: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6254: accuracy appended (60.00%)\n", - "Epoch 6254: model set back to train mode\n", - "Epoch 6254: model parameters saved\n", - "Epoch 6255 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6255: avg_loss appended (1.3125)\n", - "Epoch 6255: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6255: accuracy appended (60.00%)\n", - "Epoch 6255: model set back to train mode\n", - "Epoch 6255: model parameters saved\n", - "Epoch 6256 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6256: avg_loss appended (1.3125)\n", - "Epoch 6256: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6256: accuracy appended (60.00%)\n", - "Epoch 6256: model set back to train mode\n", - "Epoch 6256: model parameters saved\n", - "Epoch 6257 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6257: avg_loss appended (1.3125)\n", - "Epoch 6257: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6257: accuracy appended (60.00%)\n", - "Epoch 6257: model set back to train mode\n", - "Epoch 6257: model parameters saved\n", - "Epoch 6258 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6258: avg_loss appended (1.3125)\n", - "Epoch 6258: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6258: accuracy appended (60.00%)\n", - "Epoch 6258: model set back to train mode\n", - "Epoch 6258: model parameters saved\n", - "Epoch 6259 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6259: avg_loss appended (1.3125)\n", - "Epoch 6259: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6259: accuracy appended (60.00%)\n", - "Epoch 6259: model set back to train mode\n", - "Epoch 6259: model parameters saved\n", - "Epoch 6260 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6260: avg_loss appended (1.3125)\n", - "Epoch 6260: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6260: accuracy appended (60.00%)\n", - "Epoch 6260: model set back to train mode\n", - "Epoch 6260: model parameters saved\n", - "Epoch 6261 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6261: avg_loss appended (1.3125)\n", - "Epoch 6261: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6261: accuracy appended (60.00%)\n", - "Epoch 6261: model set back to train mode\n", - "Epoch 6261: model parameters saved\n", - "Epoch 6262 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6262: avg_loss appended (1.3125)\n", - "Epoch 6262: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6262: accuracy appended (60.00%)\n", - "Epoch 6262: model set back to train mode\n", - "Epoch 6262: model parameters saved\n", - "Epoch 6263 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6263: avg_loss appended (1.3125)\n", - "Epoch 6263: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6263: accuracy appended (60.00%)\n", - "Epoch 6263: model set back to train mode\n", - "Epoch 6263: model parameters saved\n", - "Epoch 6264 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6264: avg_loss appended (1.3125)\n", - "Epoch 6264: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6264: accuracy appended (60.00%)\n", - "Epoch 6264: model set back to train mode\n", - "Epoch 6264: model parameters saved\n", - "Epoch 6265 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6265: avg_loss appended (1.3125)\n", - "Epoch 6265: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6265: accuracy appended (60.00%)\n", - "Epoch 6265: model set back to train mode\n", - "Epoch 6265: model parameters saved\n", - "Epoch 6266 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6266: avg_loss appended (1.3125)\n", - "Epoch 6266: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6266: accuracy appended (60.00%)\n", - "Epoch 6266: model set back to train mode\n", - "Epoch 6266: model parameters saved\n", - "Epoch 6267 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6267: avg_loss appended (1.3125)\n", - "Epoch 6267: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6267: accuracy appended (60.00%)\n", - "Epoch 6267: model set back to train mode\n", - "Epoch 6267: model parameters saved\n", - "Epoch 6268 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6268: avg_loss appended (1.3125)\n", - "Epoch 6268: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6268: accuracy appended (60.00%)\n", - "Epoch 6268: model set back to train mode\n", - "Epoch 6268: model parameters saved\n", - "Epoch 6269 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6269: avg_loss appended (1.3125)\n", - "Epoch 6269: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6269: accuracy appended (60.00%)\n", - "Epoch 6269: model set back to train mode\n", - "Epoch 6269: model parameters saved\n", - "Epoch 6270 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6270: avg_loss appended (1.3125)\n", - "Epoch 6270: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6270: accuracy appended (60.00%)\n", - "Epoch 6270: model set back to train mode\n", - "Epoch 6270: model parameters saved\n", - "Epoch 6271 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6271: avg_loss appended (1.3125)\n", - "Epoch 6271: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6271: accuracy appended (60.00%)\n", - "Epoch 6271: model set back to train mode\n", - "Epoch 6271: model parameters saved\n", - "Epoch 6272 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6272: avg_loss appended (1.3125)\n", - "Epoch 6272: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6272: accuracy appended (60.00%)\n", - "Epoch 6272: model set back to train mode\n", - "Epoch 6272: model parameters saved\n", - "Epoch 6273 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6273: avg_loss appended (1.3125)\n", - "Epoch 6273: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6273: accuracy appended (60.00%)\n", - "Epoch 6273: model set back to train mode\n", - "Epoch 6273: model parameters saved\n", - "Epoch 6274 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6274: avg_loss appended (1.3125)\n", - "Epoch 6274: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6274: accuracy appended (60.00%)\n", - "Epoch 6274: model set back to train mode\n", - "Epoch 6274: model parameters saved\n", - "Epoch 6275 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6275: avg_loss appended (1.3125)\n", - "Epoch 6275: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6275: accuracy appended (60.00%)\n", - "Epoch 6275: model set back to train mode\n", - "Epoch 6275: model parameters saved\n", - "Epoch 6276 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6276: avg_loss appended (1.3125)\n", - "Epoch 6276: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6276: accuracy appended (60.00%)\n", - "Epoch 6276: model set back to train mode\n", - "Epoch 6276: model parameters saved\n", - "Epoch 6277 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6277: avg_loss appended (1.3125)\n", - "Epoch 6277: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6277: accuracy appended (60.00%)\n", - "Epoch 6277: model set back to train mode\n", - "Epoch 6277: model parameters saved\n", - "Epoch 6278 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6278: avg_loss appended (1.3125)\n", - "Epoch 6278: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6278: accuracy appended (60.00%)\n", - "Epoch 6278: model set back to train mode\n", - "Epoch 6278: model parameters saved\n", - "Epoch 6279 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6279: avg_loss appended (1.3125)\n", - "Epoch 6279: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6279: accuracy appended (60.00%)\n", - "Epoch 6279: model set back to train mode\n", - "Epoch 6279: model parameters saved\n", - "Epoch 6280 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6280: avg_loss appended (1.3125)\n", - "Epoch 6280: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6280: accuracy appended (60.00%)\n", - "Epoch 6280: model set back to train mode\n", - "Epoch 6280: model parameters saved\n", - "Epoch 6281 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6281: avg_loss appended (1.3125)\n", - "Epoch 6281: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6281: accuracy appended (60.00%)\n", - "Epoch 6281: model set back to train mode\n", - "Epoch 6281: model parameters saved\n", - "Epoch 6282 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6282: avg_loss appended (1.3125)\n", - "Epoch 6282: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6282: accuracy appended (60.00%)\n", - "Epoch 6282: model set back to train mode\n", - "Epoch 6282: model parameters saved\n", - "Epoch 6283 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6283: avg_loss appended (1.3125)\n", - "Epoch 6283: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6283: accuracy appended (60.00%)\n", - "Epoch 6283: model set back to train mode\n", - "Epoch 6283: model parameters saved\n", - "Epoch 6284 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6284: avg_loss appended (1.3125)\n", - "Epoch 6284: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6284: accuracy appended (60.00%)\n", - "Epoch 6284: model set back to train mode\n", - "Epoch 6284: model parameters saved\n", - "Epoch 6285 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6285: avg_loss appended (1.3125)\n", - "Epoch 6285: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6285: accuracy appended (60.00%)\n", - "Epoch 6285: model set back to train mode\n", - "Epoch 6285: model parameters saved\n", - "Epoch 6286 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6286: avg_loss appended (1.3125)\n", - "Epoch 6286: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6286: accuracy appended (60.00%)\n", - "Epoch 6286: model set back to train mode\n", - "Epoch 6286: model parameters saved\n", - "Epoch 6287 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6287: avg_loss appended (1.3125)\n", - "Epoch 6287: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6287: accuracy appended (60.00%)\n", - "Epoch 6287: model set back to train mode\n", - "Epoch 6287: model parameters saved\n", - "Epoch 6288 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6288: avg_loss appended (1.3125)\n", - "Epoch 6288: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6288: accuracy appended (60.00%)\n", - "Epoch 6288: model set back to train mode\n", - "Epoch 6288: model parameters saved\n", - "Epoch 6289 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6289: avg_loss appended (1.3125)\n", - "Epoch 6289: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6289: accuracy appended (60.00%)\n", - "Epoch 6289: model set back to train mode\n", - "Epoch 6289: model parameters saved\n", - "Epoch 6290 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6290: avg_loss appended (1.3125)\n", - "Epoch 6290: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6290: accuracy appended (60.00%)\n", - "Epoch 6290: model set back to train mode\n", - "Epoch 6290: model parameters saved\n", - "Epoch 6291 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6291: avg_loss appended (1.3125)\n", - "Epoch 6291: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6291: accuracy appended (60.00%)\n", - "Epoch 6291: model set back to train mode\n", - "Epoch 6291: model parameters saved\n", - "Epoch 6292 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6292: avg_loss appended (1.3125)\n", - "Epoch 6292: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6292: accuracy appended (60.00%)\n", - "Epoch 6292: model set back to train mode\n", - "Epoch 6292: model parameters saved\n", - "Epoch 6293 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6293: avg_loss appended (1.3125)\n", - "Epoch 6293: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6293: accuracy appended (60.00%)\n", - "Epoch 6293: model set back to train mode\n", - "Epoch 6293: model parameters saved\n", - "Epoch 6294 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6294: avg_loss appended (1.3125)\n", - "Epoch 6294: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6294: accuracy appended (60.00%)\n", - "Epoch 6294: model set back to train mode\n", - "Epoch 6294: model parameters saved\n", - "Epoch 6295 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6295: avg_loss appended (1.3125)\n", - "Epoch 6295: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6295: accuracy appended (60.00%)\n", - "Epoch 6295: model set back to train mode\n", - "Epoch 6295: model parameters saved\n", - "Epoch 6296 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6296: avg_loss appended (1.3125)\n", - "Epoch 6296: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6296: accuracy appended (60.00%)\n", - "Epoch 6296: model set back to train mode\n", - "Epoch 6296: model parameters saved\n", - "Epoch 6297 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6297: avg_loss appended (1.3125)\n", - "Epoch 6297: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6297: accuracy appended (60.00%)\n", - "Epoch 6297: model set back to train mode\n", - "Epoch 6297: model parameters saved\n", - "Epoch 6298 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6298: avg_loss appended (1.3125)\n", - "Epoch 6298: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6298: accuracy appended (60.00%)\n", - "Epoch 6298: model set back to train mode\n", - "Epoch 6298: model parameters saved\n", - "Epoch 6299 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6299: avg_loss appended (1.3125)\n", - "Epoch 6299: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6299: accuracy appended (60.00%)\n", - "Epoch 6299: model set back to train mode\n", - "Epoch 6299: model parameters saved\n", - "Epoch 6300 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6300: avg_loss appended (1.3125)\n", - "Epoch 6300: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6300: accuracy appended (60.00%)\n", - "Epoch 6300: model set back to train mode\n", - "Epoch 6300: model parameters saved\n", - "Epoch 6300/10000, Loss: 1.3125, Accuracy: 60.00%\n", - "Epoch 6301 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6301: avg_loss appended (1.3125)\n", - "Epoch 6301: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6301: accuracy appended (60.00%)\n", - "Epoch 6301: model set back to train mode\n", - "Epoch 6301: model parameters saved\n", - "Epoch 6302 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6302: avg_loss appended (1.3125)\n", - "Epoch 6302: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6302: accuracy appended (60.00%)\n", - "Epoch 6302: model set back to train mode\n", - "Epoch 6302: model parameters saved\n", - "Epoch 6303 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6303: avg_loss appended (1.3125)\n", - "Epoch 6303: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6303: accuracy appended (60.00%)\n", - "Epoch 6303: model set back to train mode\n", - "Epoch 6303: model parameters saved\n", - "Epoch 6304 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6304: avg_loss appended (1.3125)\n", - "Epoch 6304: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6304: accuracy appended (60.00%)\n", - "Epoch 6304: model set back to train mode\n", - "Epoch 6304: model parameters saved\n", - "Epoch 6305 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6305: avg_loss appended (1.3125)\n", - "Epoch 6305: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6305: accuracy appended (60.00%)\n", - "Epoch 6305: model set back to train mode\n", - "Epoch 6305: model parameters saved\n", - "Epoch 6306 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6306: avg_loss appended (1.3125)\n", - "Epoch 6306: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6306: accuracy appended (60.00%)\n", - "Epoch 6306: model set back to train mode\n", - "Epoch 6306: model parameters saved\n", - "Epoch 6307 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6307: avg_loss appended (1.3125)\n", - "Epoch 6307: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6307: accuracy appended (60.00%)\n", - "Epoch 6307: model set back to train mode\n", - "Epoch 6307: model parameters saved\n", - "Epoch 6308 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6308: avg_loss appended (1.3125)\n", - "Epoch 6308: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6308: accuracy appended (60.00%)\n", - "Epoch 6308: model set back to train mode\n", - "Epoch 6308: model parameters saved\n", - "Epoch 6309 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6309: avg_loss appended (1.3125)\n", - "Epoch 6309: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6309: accuracy appended (60.00%)\n", - "Epoch 6309: model set back to train mode\n", - "Epoch 6309: model parameters saved\n", - "Epoch 6310 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6310: avg_loss appended (1.3125)\n", - "Epoch 6310: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6310: accuracy appended (60.00%)\n", - "Epoch 6310: model set back to train mode\n", - "Epoch 6310: model parameters saved\n", - "Epoch 6311 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6311: avg_loss appended (1.3125)\n", - "Epoch 6311: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6311: accuracy appended (60.00%)\n", - "Epoch 6311: model set back to train mode\n", - "Epoch 6311: model parameters saved\n", - "Epoch 6312 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6312: avg_loss appended (1.3125)\n", - "Epoch 6312: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6312: accuracy appended (60.00%)\n", - "Epoch 6312: model set back to train mode\n", - "Epoch 6312: model parameters saved\n", - "Epoch 6313 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6313: avg_loss appended (1.3125)\n", - "Epoch 6313: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6313: accuracy appended (60.00%)\n", - "Epoch 6313: model set back to train mode\n", - "Epoch 6313: model parameters saved\n", - "Epoch 6314 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6314: avg_loss appended (1.3125)\n", - "Epoch 6314: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6314: accuracy appended (60.00%)\n", - "Epoch 6314: model set back to train mode\n", - "Epoch 6314: model parameters saved\n", - "Epoch 6315 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6315: avg_loss appended (1.3125)\n", - "Epoch 6315: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6315: accuracy appended (60.00%)\n", - "Epoch 6315: model set back to train mode\n", - "Epoch 6315: model parameters saved\n", - "Epoch 6316 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6316: avg_loss appended (1.3125)\n", - "Epoch 6316: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6316: accuracy appended (60.00%)\n", - "Epoch 6316: model set back to train mode\n", - "Epoch 6316: model parameters saved\n", - "Epoch 6317 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6317: avg_loss appended (1.3125)\n", - "Epoch 6317: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6317: accuracy appended (60.00%)\n", - "Epoch 6317: model set back to train mode\n", - "Epoch 6317: model parameters saved\n", - "Epoch 6318 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6318: avg_loss appended (1.3125)\n", - "Epoch 6318: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6318: accuracy appended (60.00%)\n", - "Epoch 6318: model set back to train mode\n", - "Epoch 6318: model parameters saved\n", - "Epoch 6319 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6319: avg_loss appended (1.3125)\n", - "Epoch 6319: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6319: accuracy appended (60.00%)\n", - "Epoch 6319: model set back to train mode\n", - "Epoch 6319: model parameters saved\n", - "Epoch 6320 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6320: avg_loss appended (1.3125)\n", - "Epoch 6320: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6320: accuracy appended (60.00%)\n", - "Epoch 6320: model set back to train mode\n", - "Epoch 6320: model parameters saved\n", - "Epoch 6321 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6321: avg_loss appended (1.3125)\n", - "Epoch 6321: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6321: accuracy appended (60.00%)\n", - "Epoch 6321: model set back to train mode\n", - "Epoch 6321: model parameters saved\n", - "Epoch 6322 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6322: avg_loss appended (1.3125)\n", - "Epoch 6322: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6322: accuracy appended (60.00%)\n", - "Epoch 6322: model set back to train mode\n", - "Epoch 6322: model parameters saved\n", - "Epoch 6323 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6323: avg_loss appended (1.3125)\n", - "Epoch 6323: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6323: accuracy appended (60.00%)\n", - "Epoch 6323: model set back to train mode\n", - "Epoch 6323: model parameters saved\n", - "Epoch 6324 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6324: avg_loss appended (1.3125)\n", - "Epoch 6324: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6324: accuracy appended (60.00%)\n", - "Epoch 6324: model set back to train mode\n", - "Epoch 6324: model parameters saved\n", - "Epoch 6325 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6325: avg_loss appended (1.3125)\n", - "Epoch 6325: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6325: accuracy appended (60.00%)\n", - "Epoch 6325: model set back to train mode\n", - "Epoch 6325: model parameters saved\n", - "Epoch 6326 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6326: avg_loss appended (1.3125)\n", - "Epoch 6326: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6326: accuracy appended (60.00%)\n", - "Epoch 6326: model set back to train mode\n", - "Epoch 6326: model parameters saved\n", - "Epoch 6327 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6327: avg_loss appended (1.3125)\n", - "Epoch 6327: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6327: accuracy appended (60.00%)\n", - "Epoch 6327: model set back to train mode\n", - "Epoch 6327: model parameters saved\n", - "Epoch 6328 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6328: avg_loss appended (1.3125)\n", - "Epoch 6328: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6328: accuracy appended (60.00%)\n", - "Epoch 6328: model set back to train mode\n", - "Epoch 6328: model parameters saved\n", - "Epoch 6329 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6329: avg_loss appended (1.3125)\n", - "Epoch 6329: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6329: accuracy appended (60.00%)\n", - "Epoch 6329: model set back to train mode\n", - "Epoch 6329: model parameters saved\n", - "Epoch 6330 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6330: avg_loss appended (1.3125)\n", - "Epoch 6330: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6330: accuracy appended (60.00%)\n", - "Epoch 6330: model set back to train mode\n", - "Epoch 6330: model parameters saved\n", - "Epoch 6331 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6331: avg_loss appended (1.3125)\n", - "Epoch 6331: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6331: accuracy appended (60.00%)\n", - "Epoch 6331: model set back to train mode\n", - "Epoch 6331: model parameters saved\n", - "Epoch 6332 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6332: avg_loss appended (1.3125)\n", - "Epoch 6332: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6332: accuracy appended (60.00%)\n", - "Epoch 6332: model set back to train mode\n", - "Epoch 6332: model parameters saved\n", - "Epoch 6333 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6333: avg_loss appended (1.3125)\n", - "Epoch 6333: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6333: accuracy appended (60.00%)\n", - "Epoch 6333: model set back to train mode\n", - "Epoch 6333: model parameters saved\n", - "Epoch 6334 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6334: avg_loss appended (1.3125)\n", - "Epoch 6334: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6334: accuracy appended (60.00%)\n", - "Epoch 6334: model set back to train mode\n", - "Epoch 6334: model parameters saved\n", - "Epoch 6335 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6335: avg_loss appended (1.3125)\n", - "Epoch 6335: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6335: accuracy appended (60.00%)\n", - "Epoch 6335: model set back to train mode\n", - "Epoch 6335: model parameters saved\n", - "Epoch 6336 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6336: avg_loss appended (1.3125)\n", - "Epoch 6336: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6336: accuracy appended (60.00%)\n", - "Epoch 6336: model set back to train mode\n", - "Epoch 6336: model parameters saved\n", - "Epoch 6337 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6337: avg_loss appended (1.3125)\n", - "Epoch 6337: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6337: accuracy appended (60.00%)\n", - "Epoch 6337: model set back to train mode\n", - "Epoch 6337: model parameters saved\n", - "Epoch 6338 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6338: avg_loss appended (1.3125)\n", - "Epoch 6338: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6338: accuracy appended (60.00%)\n", - "Epoch 6338: model set back to train mode\n", - "Epoch 6338: model parameters saved\n", - "Epoch 6339 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6339: avg_loss appended (1.3125)\n", - "Epoch 6339: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6339: accuracy appended (60.00%)\n", - "Epoch 6339: model set back to train mode\n", - "Epoch 6339: model parameters saved\n", - "Epoch 6340 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6340: avg_loss appended (1.3125)\n", - "Epoch 6340: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6340: accuracy appended (60.00%)\n", - "Epoch 6340: model set back to train mode\n", - "Epoch 6340: model parameters saved\n", - "Epoch 6341 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6341: avg_loss appended (1.3125)\n", - "Epoch 6341: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6341: accuracy appended (60.00%)\n", - "Epoch 6341: model set back to train mode\n", - "Epoch 6341: model parameters saved\n", - "Epoch 6342 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6342: avg_loss appended (1.3125)\n", - "Epoch 6342: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6342: accuracy appended (60.00%)\n", - "Epoch 6342: model set back to train mode\n", - "Epoch 6342: model parameters saved\n", - "Epoch 6343 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6343: avg_loss appended (1.3125)\n", - "Epoch 6343: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6343: accuracy appended (60.00%)\n", - "Epoch 6343: model set back to train mode\n", - "Epoch 6343: model parameters saved\n", - "Epoch 6344 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6344: avg_loss appended (1.3125)\n", - "Epoch 6344: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6344: accuracy appended (60.00%)\n", - "Epoch 6344: model set back to train mode\n", - "Epoch 6344: model parameters saved\n", - "Epoch 6345 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6345: avg_loss appended (1.3125)\n", - "Epoch 6345: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6345: accuracy appended (60.00%)\n", - "Epoch 6345: model set back to train mode\n", - "Epoch 6345: model parameters saved\n", - "Epoch 6346 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6346: avg_loss appended (1.3125)\n", - "Epoch 6346: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6346: accuracy appended (60.00%)\n", - "Epoch 6346: model set back to train mode\n", - "Epoch 6346: model parameters saved\n", - "Epoch 6347 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6347: avg_loss appended (1.3125)\n", - "Epoch 6347: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6347: accuracy appended (60.00%)\n", - "Epoch 6347: model set back to train mode\n", - "Epoch 6347: model parameters saved\n", - "Epoch 6348 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6348: avg_loss appended (1.3125)\n", - "Epoch 6348: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6348: accuracy appended (60.00%)\n", - "Epoch 6348: model set back to train mode\n", - "Epoch 6348: model parameters saved\n", - "Epoch 6349 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6349: avg_loss appended (1.3125)\n", - "Epoch 6349: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6349: accuracy appended (60.00%)\n", - "Epoch 6349: model set back to train mode\n", - "Epoch 6349: model parameters saved\n", - "Epoch 6350 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6350: avg_loss appended (1.3125)\n", - "Epoch 6350: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6350: accuracy appended (60.00%)\n", - "Epoch 6350: model set back to train mode\n", - "Epoch 6350: model parameters saved\n", - "Epoch 6351 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6351: avg_loss appended (1.3125)\n", - "Epoch 6351: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6351: accuracy appended (60.00%)\n", - "Epoch 6351: model set back to train mode\n", - "Epoch 6351: model parameters saved\n", - "Epoch 6352 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6352: avg_loss appended (1.3125)\n", - "Epoch 6352: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6352: accuracy appended (60.00%)\n", - "Epoch 6352: model set back to train mode\n", - "Epoch 6352: model parameters saved\n", - "Epoch 6353 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6353: avg_loss appended (1.3125)\n", - "Epoch 6353: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6353: accuracy appended (60.00%)\n", - "Epoch 6353: model set back to train mode\n", - "Epoch 6353: model parameters saved\n", - "Epoch 6354 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6354: avg_loss appended (1.3125)\n", - "Epoch 6354: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6354: accuracy appended (60.00%)\n", - "Epoch 6354: model set back to train mode\n", - "Epoch 6354: model parameters saved\n", - "Epoch 6355 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6355: avg_loss appended (1.3125)\n", - "Epoch 6355: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6355: accuracy appended (60.00%)\n", - "Epoch 6355: model set back to train mode\n", - "Epoch 6355: model parameters saved\n", - "Epoch 6356 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6356: avg_loss appended (1.3125)\n", - "Epoch 6356: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6356: accuracy appended (60.00%)\n", - "Epoch 6356: model set back to train mode\n", - "Epoch 6356: model parameters saved\n", - "Epoch 6357 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6357: avg_loss appended (1.3125)\n", - "Epoch 6357: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6357: accuracy appended (60.00%)\n", - "Epoch 6357: model set back to train mode\n", - "Epoch 6357: model parameters saved\n", - "Epoch 6358 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6358: avg_loss appended (1.3125)\n", - "Epoch 6358: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6358: accuracy appended (60.00%)\n", - "Epoch 6358: model set back to train mode\n", - "Epoch 6358: model parameters saved\n", - "Epoch 6359 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6359: avg_loss appended (1.3125)\n", - "Epoch 6359: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6359: accuracy appended (60.00%)\n", - "Epoch 6359: model set back to train mode\n", - "Epoch 6359: model parameters saved\n", - "Epoch 6360 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6360: avg_loss appended (1.3125)\n", - "Epoch 6360: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6360: accuracy appended (60.00%)\n", - "Epoch 6360: model set back to train mode\n", - "Epoch 6360: model parameters saved\n", - "Epoch 6361 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6361: avg_loss appended (1.3125)\n", - "Epoch 6361: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6361: accuracy appended (60.00%)\n", - "Epoch 6361: model set back to train mode\n", - "Epoch 6361: model parameters saved\n", - "Epoch 6362 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6362: avg_loss appended (1.3125)\n", - "Epoch 6362: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6362: accuracy appended (60.00%)\n", - "Epoch 6362: model set back to train mode\n", - "Epoch 6362: model parameters saved\n", - "Epoch 6363 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6363: avg_loss appended (1.3125)\n", - "Epoch 6363: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6363: accuracy appended (60.00%)\n", - "Epoch 6363: model set back to train mode\n", - "Epoch 6363: model parameters saved\n", - "Epoch 6364 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6364: avg_loss appended (1.3125)\n", - "Epoch 6364: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6364: accuracy appended (60.00%)\n", - "Epoch 6364: model set back to train mode\n", - "Epoch 6364: model parameters saved\n", - "Epoch 6365 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6365: avg_loss appended (1.3125)\n", - "Epoch 6365: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6365: accuracy appended (60.00%)\n", - "Epoch 6365: model set back to train mode\n", - "Epoch 6365: model parameters saved\n", - "Epoch 6366 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6366: avg_loss appended (1.3125)\n", - "Epoch 6366: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6366: accuracy appended (60.00%)\n", - "Epoch 6366: model set back to train mode\n", - "Epoch 6366: model parameters saved\n", - "Epoch 6367 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6367: avg_loss appended (1.3125)\n", - "Epoch 6367: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6367: accuracy appended (60.00%)\n", - "Epoch 6367: model set back to train mode\n", - "Epoch 6367: model parameters saved\n", - "Epoch 6368 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6368: avg_loss appended (1.3125)\n", - "Epoch 6368: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6368: accuracy appended (60.00%)\n", - "Epoch 6368: model set back to train mode\n", - "Epoch 6368: model parameters saved\n", - "Epoch 6369 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6369: avg_loss appended (1.3125)\n", - "Epoch 6369: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6369: accuracy appended (60.00%)\n", - "Epoch 6369: model set back to train mode\n", - "Epoch 6369: model parameters saved\n", - "Epoch 6370 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6370: avg_loss appended (1.3125)\n", - "Epoch 6370: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6370: accuracy appended (60.00%)\n", - "Epoch 6370: model set back to train mode\n", - "Epoch 6370: model parameters saved\n", - "Epoch 6371 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6371: avg_loss appended (1.3125)\n", - "Epoch 6371: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6371: accuracy appended (60.00%)\n", - "Epoch 6371: model set back to train mode\n", - "Epoch 6371: model parameters saved\n", - "Epoch 6372 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6372: avg_loss appended (1.3125)\n", - "Epoch 6372: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6372: accuracy appended (60.00%)\n", - "Epoch 6372: model set back to train mode\n", - "Epoch 6372: model parameters saved\n", - "Epoch 6373 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6373: avg_loss appended (1.3125)\n", - "Epoch 6373: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6373: accuracy appended (60.00%)\n", - "Epoch 6373: model set back to train mode\n", - "Epoch 6373: model parameters saved\n", - "Epoch 6374 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6374: avg_loss appended (1.3125)\n", - "Epoch 6374: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6374: accuracy appended (60.00%)\n", - "Epoch 6374: model set back to train mode\n", - "Epoch 6374: model parameters saved\n", - "Epoch 6375 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6375: avg_loss appended (1.3125)\n", - "Epoch 6375: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6375: accuracy appended (60.00%)\n", - "Epoch 6375: model set back to train mode\n", - "Epoch 6375: model parameters saved\n", - "Epoch 6376 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6376: avg_loss appended (1.3125)\n", - "Epoch 6376: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6376: accuracy appended (60.00%)\n", - "Epoch 6376: model set back to train mode\n", - "Epoch 6376: model parameters saved\n", - "Epoch 6377 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6377: avg_loss appended (1.3125)\n", - "Epoch 6377: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6377: accuracy appended (60.00%)\n", - "Epoch 6377: model set back to train mode\n", - "Epoch 6377: model parameters saved\n", - "Epoch 6378 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6378: avg_loss appended (1.3125)\n", - "Epoch 6378: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6378: accuracy appended (60.00%)\n", - "Epoch 6378: model set back to train mode\n", - "Epoch 6378: model parameters saved\n", - "Epoch 6379 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6379: avg_loss appended (1.3125)\n", - "Epoch 6379: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6379: accuracy appended (60.00%)\n", - "Epoch 6379: model set back to train mode\n", - "Epoch 6379: model parameters saved\n", - "Epoch 6380 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6380: avg_loss appended (1.3125)\n", - "Epoch 6380: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6380: accuracy appended (60.00%)\n", - "Epoch 6380: model set back to train mode\n", - "Epoch 6380: model parameters saved\n", - "Epoch 6381 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6381: avg_loss appended (1.3125)\n", - "Epoch 6381: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6381: accuracy appended (60.00%)\n", - "Epoch 6381: model set back to train mode\n", - "Epoch 6381: model parameters saved\n", - "Epoch 6382 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6382: avg_loss appended (1.3125)\n", - "Epoch 6382: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6382: accuracy appended (60.00%)\n", - "Epoch 6382: model set back to train mode\n", - "Epoch 6382: model parameters saved\n", - "Epoch 6383 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6383: avg_loss appended (1.3125)\n", - "Epoch 6383: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6383: accuracy appended (60.00%)\n", - "Epoch 6383: model set back to train mode\n", - "Epoch 6383: model parameters saved\n", - "Epoch 6384 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6384: avg_loss appended (1.3125)\n", - "Epoch 6384: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6384: accuracy appended (60.00%)\n", - "Epoch 6384: model set back to train mode\n", - "Epoch 6384: model parameters saved\n", - "Epoch 6385 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6385: avg_loss appended (1.3125)\n", - "Epoch 6385: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6385: accuracy appended (60.00%)\n", - "Epoch 6385: model set back to train mode\n", - "Epoch 6385: model parameters saved\n", - "Epoch 6386 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6386: avg_loss appended (1.3125)\n", - "Epoch 6386: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6386: accuracy appended (60.00%)\n", - "Epoch 6386: model set back to train mode\n", - "Epoch 6386: model parameters saved\n", - "Epoch 6387 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6387: avg_loss appended (1.3125)\n", - "Epoch 6387: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6387: accuracy appended (60.00%)\n", - "Epoch 6387: model set back to train mode\n", - "Epoch 6387: model parameters saved\n", - "Epoch 6388 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6388: avg_loss appended (1.3125)\n", - "Epoch 6388: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6388: accuracy appended (60.00%)\n", - "Epoch 6388: model set back to train mode\n", - "Epoch 6388: model parameters saved\n", - "Epoch 6389 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6389: avg_loss appended (1.3125)\n", - "Epoch 6389: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6389: accuracy appended (60.00%)\n", - "Epoch 6389: model set back to train mode\n", - "Epoch 6389: model parameters saved\n", - "Epoch 6390 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6390: avg_loss appended (1.3125)\n", - "Epoch 6390: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6390: accuracy appended (60.00%)\n", - "Epoch 6390: model set back to train mode\n", - "Epoch 6390: model parameters saved\n", - "Epoch 6391 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6391: avg_loss appended (1.3125)\n", - "Epoch 6391: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6391: accuracy appended (60.00%)\n", - "Epoch 6391: model set back to train mode\n", - "Epoch 6391: model parameters saved\n", - "Epoch 6392 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6392: avg_loss appended (1.3125)\n", - "Epoch 6392: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6392: accuracy appended (60.00%)\n", - "Epoch 6392: model set back to train mode\n", - "Epoch 6392: model parameters saved\n", - "Epoch 6393 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6393: avg_loss appended (1.3125)\n", - "Epoch 6393: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6393: accuracy appended (60.00%)\n", - "Epoch 6393: model set back to train mode\n", - "Epoch 6393: model parameters saved\n", - "Epoch 6394 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6394: avg_loss appended (1.3125)\n", - "Epoch 6394: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6394: accuracy appended (60.00%)\n", - "Epoch 6394: model set back to train mode\n", - "Epoch 6394: model parameters saved\n", - "Epoch 6395 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6395: avg_loss appended (1.3125)\n", - "Epoch 6395: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6395: accuracy appended (60.00%)\n", - "Epoch 6395: model set back to train mode\n", - "Epoch 6395: model parameters saved\n", - "Epoch 6396 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6396: avg_loss appended (1.3125)\n", - "Epoch 6396: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6396: accuracy appended (60.00%)\n", - "Epoch 6396: model set back to train mode\n", - "Epoch 6396: model parameters saved\n", - "Epoch 6397 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6397: avg_loss appended (1.3125)\n", - "Epoch 6397: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6397: accuracy appended (60.00%)\n", - "Epoch 6397: model set back to train mode\n", - "Epoch 6397: model parameters saved\n", - "Epoch 6398 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6398: avg_loss appended (1.3125)\n", - "Epoch 6398: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6398: accuracy appended (60.00%)\n", - "Epoch 6398: model set back to train mode\n", - "Epoch 6398: model parameters saved\n", - "Epoch 6399 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6399: avg_loss appended (1.3125)\n", - "Epoch 6399: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6399: accuracy appended (60.00%)\n", - "Epoch 6399: model set back to train mode\n", - "Epoch 6399: model parameters saved\n", - "Epoch 6400 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6400: avg_loss appended (1.3125)\n", - "Epoch 6400: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6400: accuracy appended (60.00%)\n", - "Epoch 6400: model set back to train mode\n", - "Epoch 6400: model parameters saved\n", - "Epoch 6400/10000, Loss: 1.3125, Accuracy: 60.00%\n", - "Epoch 6401 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6401: avg_loss appended (1.3125)\n", - "Epoch 6401: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6401: accuracy appended (60.00%)\n", - "Epoch 6401: model set back to train mode\n", - "Epoch 6401: model parameters saved\n", - "Epoch 6402 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6402: avg_loss appended (1.3125)\n", - "Epoch 6402: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6402: accuracy appended (60.00%)\n", - "Epoch 6402: model set back to train mode\n", - "Epoch 6402: model parameters saved\n", - "Epoch 6403 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6403: avg_loss appended (1.3125)\n", - "Epoch 6403: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6403: accuracy appended (60.00%)\n", - "Epoch 6403: model set back to train mode\n", - "Epoch 6403: model parameters saved\n", - "Epoch 6404 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6404: avg_loss appended (1.3125)\n", - "Epoch 6404: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6404: accuracy appended (60.00%)\n", - "Epoch 6404: model set back to train mode\n", - "Epoch 6404: model parameters saved\n", - "Epoch 6405 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6405: avg_loss appended (1.3125)\n", - "Epoch 6405: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6405: accuracy appended (60.00%)\n", - "Epoch 6405: model set back to train mode\n", - "Epoch 6405: model parameters saved\n", - "Epoch 6406 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6406: avg_loss appended (1.3125)\n", - "Epoch 6406: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6406: accuracy appended (60.00%)\n", - "Epoch 6406: model set back to train mode\n", - "Epoch 6406: model parameters saved\n", - "Epoch 6407 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6407: avg_loss appended (1.3125)\n", - "Epoch 6407: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6407: accuracy appended (60.00%)\n", - "Epoch 6407: model set back to train mode\n", - "Epoch 6407: model parameters saved\n", - "Epoch 6408 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6408: avg_loss appended (1.3125)\n", - "Epoch 6408: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6408: accuracy appended (60.00%)\n", - "Epoch 6408: model set back to train mode\n", - "Epoch 6408: model parameters saved\n", - "Epoch 6409 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6409: avg_loss appended (1.3125)\n", - "Epoch 6409: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6409: accuracy appended (60.00%)\n", - "Epoch 6409: model set back to train mode\n", - "Epoch 6409: model parameters saved\n", - "Epoch 6410 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6410: avg_loss appended (1.3125)\n", - "Epoch 6410: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6410: accuracy appended (60.00%)\n", - "Epoch 6410: model set back to train mode\n", - "Epoch 6410: model parameters saved\n", - "Epoch 6411 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6411: avg_loss appended (1.3125)\n", - "Epoch 6411: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6411: accuracy appended (60.00%)\n", - "Epoch 6411: model set back to train mode\n", - "Epoch 6411: model parameters saved\n", - "Epoch 6412 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6412: avg_loss appended (1.3125)\n", - "Epoch 6412: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6412: accuracy appended (60.00%)\n", - "Epoch 6412: model set back to train mode\n", - "Epoch 6412: model parameters saved\n", - "Epoch 6413 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6413: avg_loss appended (1.3125)\n", - "Epoch 6413: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6413: accuracy appended (60.00%)\n", - "Epoch 6413: model set back to train mode\n", - "Epoch 6413: model parameters saved\n", - "Epoch 6414 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6414: avg_loss appended (1.3125)\n", - "Epoch 6414: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6414: accuracy appended (60.00%)\n", - "Epoch 6414: model set back to train mode\n", - "Epoch 6414: model parameters saved\n", - "Epoch 6415 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6415: avg_loss appended (1.3125)\n", - "Epoch 6415: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6415: accuracy appended (60.00%)\n", - "Epoch 6415: model set back to train mode\n", - "Epoch 6415: model parameters saved\n", - "Epoch 6416 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6416: avg_loss appended (1.3125)\n", - "Epoch 6416: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6416: accuracy appended (60.00%)\n", - "Epoch 6416: model set back to train mode\n", - "Epoch 6416: model parameters saved\n", - "Epoch 6417 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6417: avg_loss appended (1.3125)\n", - "Epoch 6417: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6417: accuracy appended (60.00%)\n", - "Epoch 6417: model set back to train mode\n", - "Epoch 6417: model parameters saved\n", - "Epoch 6418 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6418: avg_loss appended (1.3125)\n", - "Epoch 6418: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6418: accuracy appended (60.00%)\n", - "Epoch 6418: model set back to train mode\n", - "Epoch 6418: model parameters saved\n", - "Epoch 6419 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6419: avg_loss appended (1.3125)\n", - "Epoch 6419: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6419: accuracy appended (60.00%)\n", - "Epoch 6419: model set back to train mode\n", - "Epoch 6419: model parameters saved\n", - "Epoch 6420 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6420: avg_loss appended (1.3125)\n", - "Epoch 6420: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6420: accuracy appended (60.00%)\n", - "Epoch 6420: model set back to train mode\n", - "Epoch 6420: model parameters saved\n", - "Epoch 6421 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6421: avg_loss appended (1.3125)\n", - "Epoch 6421: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6421: accuracy appended (60.00%)\n", - "Epoch 6421: model set back to train mode\n", - "Epoch 6421: model parameters saved\n", - "Epoch 6422 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6422: avg_loss appended (1.3125)\n", - "Epoch 6422: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6422: accuracy appended (60.00%)\n", - "Epoch 6422: model set back to train mode\n", - "Epoch 6422: model parameters saved\n", - "Epoch 6423 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6423: avg_loss appended (1.3125)\n", - "Epoch 6423: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6423: accuracy appended (60.00%)\n", - "Epoch 6423: model set back to train mode\n", - "Epoch 6423: model parameters saved\n", - "Epoch 6424 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6424: avg_loss appended (1.3125)\n", - "Epoch 6424: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6424: accuracy appended (60.00%)\n", - "Epoch 6424: model set back to train mode\n", - "Epoch 6424: model parameters saved\n", - "Epoch 6425 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6425: avg_loss appended (1.3125)\n", - "Epoch 6425: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6425: accuracy appended (60.00%)\n", - "Epoch 6425: model set back to train mode\n", - "Epoch 6425: model parameters saved\n", - "Epoch 6426 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6426: avg_loss appended (1.3125)\n", - "Epoch 6426: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6426: accuracy appended (60.00%)\n", - "Epoch 6426: model set back to train mode\n", - "Epoch 6426: model parameters saved\n", - "Epoch 6427 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6427: avg_loss appended (1.3125)\n", - "Epoch 6427: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6427: accuracy appended (60.00%)\n", - "Epoch 6427: model set back to train mode\n", - "Epoch 6427: model parameters saved\n", - "Epoch 6428 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6428: avg_loss appended (1.3125)\n", - "Epoch 6428: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6428: accuracy appended (60.00%)\n", - "Epoch 6428: model set back to train mode\n", - "Epoch 6428: model parameters saved\n", - "Epoch 6429 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6429: avg_loss appended (1.3125)\n", - "Epoch 6429: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6429: accuracy appended (60.00%)\n", - "Epoch 6429: model set back to train mode\n", - "Epoch 6429: model parameters saved\n", - "Epoch 6430 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6430: avg_loss appended (1.3125)\n", - "Epoch 6430: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6430: accuracy appended (60.00%)\n", - "Epoch 6430: model set back to train mode\n", - "Epoch 6430: model parameters saved\n", - "Epoch 6431 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6431: avg_loss appended (1.3125)\n", - "Epoch 6431: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6431: accuracy appended (60.00%)\n", - "Epoch 6431: model set back to train mode\n", - "Epoch 6431: model parameters saved\n", - "Epoch 6432 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6432: avg_loss appended (1.3125)\n", - "Epoch 6432: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6432: accuracy appended (60.00%)\n", - "Epoch 6432: model set back to train mode\n", - "Epoch 6432: model parameters saved\n", - "Epoch 6433 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6433: avg_loss appended (1.3125)\n", - "Epoch 6433: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6433: accuracy appended (60.00%)\n", - "Epoch 6433: model set back to train mode\n", - "Epoch 6433: model parameters saved\n", - "Epoch 6434 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6434: avg_loss appended (1.3125)\n", - "Epoch 6434: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6434: accuracy appended (60.00%)\n", - "Epoch 6434: model set back to train mode\n", - "Epoch 6434: model parameters saved\n", - "Epoch 6435 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6435: avg_loss appended (1.3125)\n", - "Epoch 6435: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6435: accuracy appended (60.00%)\n", - "Epoch 6435: model set back to train mode\n", - "Epoch 6435: model parameters saved\n", - "Epoch 6436 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6436: avg_loss appended (1.3125)\n", - "Epoch 6436: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6436: accuracy appended (60.00%)\n", - "Epoch 6436: model set back to train mode\n", - "Epoch 6436: model parameters saved\n", - "Epoch 6437 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6437: avg_loss appended (1.3125)\n", - "Epoch 6437: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6437: accuracy appended (60.00%)\n", - "Epoch 6437: model set back to train mode\n", - "Epoch 6437: model parameters saved\n", - "Epoch 6438 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6438: avg_loss appended (1.3125)\n", - "Epoch 6438: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6438: accuracy appended (60.00%)\n", - "Epoch 6438: model set back to train mode\n", - "Epoch 6438: model parameters saved\n", - "Epoch 6439 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6439: avg_loss appended (1.3125)\n", - "Epoch 6439: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6439: accuracy appended (60.00%)\n", - "Epoch 6439: model set back to train mode\n", - "Epoch 6439: model parameters saved\n", - "Epoch 6440 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6440: avg_loss appended (1.3125)\n", - "Epoch 6440: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6440: accuracy appended (60.00%)\n", - "Epoch 6440: model set back to train mode\n", - "Epoch 6440: model parameters saved\n", - "Epoch 6441 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6441: avg_loss appended (1.3125)\n", - "Epoch 6441: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6441: accuracy appended (60.00%)\n", - "Epoch 6441: model set back to train mode\n", - "Epoch 6441: model parameters saved\n", - "Epoch 6442 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6442: avg_loss appended (1.3125)\n", - "Epoch 6442: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6442: accuracy appended (60.00%)\n", - "Epoch 6442: model set back to train mode\n", - "Epoch 6442: model parameters saved\n", - "Epoch 6443 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6443: avg_loss appended (1.3125)\n", - "Epoch 6443: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6443: accuracy appended (60.00%)\n", - "Epoch 6443: model set back to train mode\n", - "Epoch 6443: model parameters saved\n", - "Epoch 6444 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6444: avg_loss appended (1.3125)\n", - "Epoch 6444: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6444: accuracy appended (60.00%)\n", - "Epoch 6444: model set back to train mode\n", - "Epoch 6444: model parameters saved\n", - "Epoch 6445 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6445: avg_loss appended (1.3125)\n", - "Epoch 6445: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6445: accuracy appended (60.00%)\n", - "Epoch 6445: model set back to train mode\n", - "Epoch 6445: model parameters saved\n", - "Epoch 6446 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6446: avg_loss appended (1.3125)\n", - "Epoch 6446: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6446: accuracy appended (60.00%)\n", - "Epoch 6446: model set back to train mode\n", - "Epoch 6446: model parameters saved\n", - "Epoch 6447 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6447: avg_loss appended (1.3125)\n", - "Epoch 6447: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6447: accuracy appended (60.00%)\n", - "Epoch 6447: model set back to train mode\n", - "Epoch 6447: model parameters saved\n", - "Epoch 6448 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6448: avg_loss appended (1.3125)\n", - "Epoch 6448: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6448: accuracy appended (60.00%)\n", - "Epoch 6448: model set back to train mode\n", - "Epoch 6448: model parameters saved\n", - "Epoch 6449 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6449: avg_loss appended (1.3125)\n", - "Epoch 6449: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6449: accuracy appended (60.00%)\n", - "Epoch 6449: model set back to train mode\n", - "Epoch 6449: model parameters saved\n", - "Epoch 6450 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6450: avg_loss appended (1.3125)\n", - "Epoch 6450: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6450: accuracy appended (60.00%)\n", - "Epoch 6450: model set back to train mode\n", - "Epoch 6450: model parameters saved\n", - "Epoch 6451 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6451: avg_loss appended (1.3125)\n", - "Epoch 6451: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6451: accuracy appended (60.00%)\n", - "Epoch 6451: model set back to train mode\n", - "Epoch 6451: model parameters saved\n", - "Epoch 6452 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6452: avg_loss appended (1.3125)\n", - "Epoch 6452: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6452: accuracy appended (60.00%)\n", - "Epoch 6452: model set back to train mode\n", - "Epoch 6452: model parameters saved\n", - "Epoch 6453 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6453: avg_loss appended (1.3125)\n", - "Epoch 6453: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6453: accuracy appended (60.00%)\n", - "Epoch 6453: model set back to train mode\n", - "Epoch 6453: model parameters saved\n", - "Epoch 6454 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6454: avg_loss appended (1.3125)\n", - "Epoch 6454: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6454: accuracy appended (60.00%)\n", - "Epoch 6454: model set back to train mode\n", - "Epoch 6454: model parameters saved\n", - "Epoch 6455 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6455: avg_loss appended (1.3125)\n", - "Epoch 6455: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6455: accuracy appended (60.00%)\n", - "Epoch 6455: model set back to train mode\n", - "Epoch 6455: model parameters saved\n", - "Epoch 6456 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6456: avg_loss appended (1.3125)\n", - "Epoch 6456: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6456: accuracy appended (60.00%)\n", - "Epoch 6456: model set back to train mode\n", - "Epoch 6456: model parameters saved\n", - "Epoch 6457 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6457: avg_loss appended (1.3125)\n", - "Epoch 6457: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6457: accuracy appended (60.00%)\n", - "Epoch 6457: model set back to train mode\n", - "Epoch 6457: model parameters saved\n", - "Epoch 6458 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6458: avg_loss appended (1.3125)\n", - "Epoch 6458: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6458: accuracy appended (60.00%)\n", - "Epoch 6458: model set back to train mode\n", - "Epoch 6458: model parameters saved\n", - "Epoch 6459 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6459: avg_loss appended (1.3125)\n", - "Epoch 6459: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6459: accuracy appended (60.00%)\n", - "Epoch 6459: model set back to train mode\n", - "Epoch 6459: model parameters saved\n", - "Epoch 6460 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6460: avg_loss appended (1.3125)\n", - "Epoch 6460: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6460: accuracy appended (60.00%)\n", - "Epoch 6460: model set back to train mode\n", - "Epoch 6460: model parameters saved\n", - "Epoch 6461 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6461: avg_loss appended (1.3125)\n", - "Epoch 6461: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6461: accuracy appended (60.00%)\n", - "Epoch 6461: model set back to train mode\n", - "Epoch 6461: model parameters saved\n", - "Epoch 6462 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6462: avg_loss appended (1.3125)\n", - "Epoch 6462: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6462: accuracy appended (60.00%)\n", - "Epoch 6462: model set back to train mode\n", - "Epoch 6462: model parameters saved\n", - "Epoch 6463 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6463: avg_loss appended (1.3125)\n", - "Epoch 6463: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6463: accuracy appended (60.00%)\n", - "Epoch 6463: model set back to train mode\n", - "Epoch 6463: model parameters saved\n", - "Epoch 6464 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6464: avg_loss appended (1.3125)\n", - "Epoch 6464: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6464: accuracy appended (60.00%)\n", - "Epoch 6464: model set back to train mode\n", - "Epoch 6464: model parameters saved\n", - "Epoch 6465 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6465: avg_loss appended (1.3125)\n", - "Epoch 6465: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6465: accuracy appended (60.00%)\n", - "Epoch 6465: model set back to train mode\n", - "Epoch 6465: model parameters saved\n", - "Epoch 6466 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6466: avg_loss appended (1.3125)\n", - "Epoch 6466: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6466: accuracy appended (60.00%)\n", - "Epoch 6466: model set back to train mode\n", - "Epoch 6466: model parameters saved\n", - "Epoch 6467 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6467: avg_loss appended (1.3125)\n", - "Epoch 6467: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6467: accuracy appended (60.00%)\n", - "Epoch 6467: model set back to train mode\n", - "Epoch 6467: model parameters saved\n", - "Epoch 6468 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6468: avg_loss appended (1.3125)\n", - "Epoch 6468: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6468: accuracy appended (60.00%)\n", - "Epoch 6468: model set back to train mode\n", - "Epoch 6468: model parameters saved\n", - "Epoch 6469 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6469: avg_loss appended (1.3125)\n", - "Epoch 6469: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6469: accuracy appended (60.00%)\n", - "Epoch 6469: model set back to train mode\n", - "Epoch 6469: model parameters saved\n", - "Epoch 6470 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6470: avg_loss appended (1.3125)\n", - "Epoch 6470: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6470: accuracy appended (60.00%)\n", - "Epoch 6470: model set back to train mode\n", - "Epoch 6470: model parameters saved\n", - "Epoch 6471 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6471: avg_loss appended (1.3125)\n", - "Epoch 6471: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6471: accuracy appended (60.00%)\n", - "Epoch 6471: model set back to train mode\n", - "Epoch 6471: model parameters saved\n", - "Epoch 6472 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6472: avg_loss appended (1.3125)\n", - "Epoch 6472: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6472: accuracy appended (60.00%)\n", - "Epoch 6472: model set back to train mode\n", - "Epoch 6472: model parameters saved\n", - "Epoch 6473 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6473: avg_loss appended (1.3125)\n", - "Epoch 6473: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6473: accuracy appended (60.00%)\n", - "Epoch 6473: model set back to train mode\n", - "Epoch 6473: model parameters saved\n", - "Epoch 6474 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6474: avg_loss appended (1.3125)\n", - "Epoch 6474: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6474: accuracy appended (60.00%)\n", - "Epoch 6474: model set back to train mode\n", - "Epoch 6474: model parameters saved\n", - "Epoch 6475 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6475: avg_loss appended (1.3125)\n", - "Epoch 6475: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6475: accuracy appended (60.00%)\n", - "Epoch 6475: model set back to train mode\n", - "Epoch 6475: model parameters saved\n", - "Epoch 6476 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6476: avg_loss appended (1.3125)\n", - "Epoch 6476: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6476: accuracy appended (60.00%)\n", - "Epoch 6476: model set back to train mode\n", - "Epoch 6476: model parameters saved\n", - "Epoch 6477 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6477: avg_loss appended (1.3125)\n", - "Epoch 6477: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6477: accuracy appended (60.00%)\n", - "Epoch 6477: model set back to train mode\n", - "Epoch 6477: model parameters saved\n", - "Epoch 6478 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6478: avg_loss appended (1.3125)\n", - "Epoch 6478: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6478: accuracy appended (60.00%)\n", - "Epoch 6478: model set back to train mode\n", - "Epoch 6478: model parameters saved\n", - "Epoch 6479 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6479: avg_loss appended (1.3125)\n", - "Epoch 6479: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6479: accuracy appended (60.00%)\n", - "Epoch 6479: model set back to train mode\n", - "Epoch 6479: model parameters saved\n", - "Epoch 6480 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6480: avg_loss appended (1.3125)\n", - "Epoch 6480: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6480: accuracy appended (60.00%)\n", - "Epoch 6480: model set back to train mode\n", - "Epoch 6480: model parameters saved\n", - "Epoch 6481 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6481: avg_loss appended (1.3125)\n", - "Epoch 6481: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6481: accuracy appended (60.00%)\n", - "Epoch 6481: model set back to train mode\n", - "Epoch 6481: model parameters saved\n", - "Epoch 6482 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6482: avg_loss appended (1.3125)\n", - "Epoch 6482: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6482: accuracy appended (60.00%)\n", - "Epoch 6482: model set back to train mode\n", - "Epoch 6482: model parameters saved\n", - "Epoch 6483 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6483: avg_loss appended (1.3125)\n", - "Epoch 6483: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6483: accuracy appended (60.00%)\n", - "Epoch 6483: model set back to train mode\n", - "Epoch 6483: model parameters saved\n", - "Epoch 6484 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6484: avg_loss appended (1.3125)\n", - "Epoch 6484: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6484: accuracy appended (60.00%)\n", - "Epoch 6484: model set back to train mode\n", - "Epoch 6484: model parameters saved\n", - "Epoch 6485 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6485: avg_loss appended (1.3125)\n", - "Epoch 6485: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6485: accuracy appended (60.00%)\n", - "Epoch 6485: model set back to train mode\n", - "Epoch 6485: model parameters saved\n", - "Epoch 6486 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6486: avg_loss appended (1.3125)\n", - "Epoch 6486: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6486: accuracy appended (60.00%)\n", - "Epoch 6486: model set back to train mode\n", - "Epoch 6486: model parameters saved\n", - "Epoch 6487 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6487: avg_loss appended (1.3125)\n", - "Epoch 6487: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6487: accuracy appended (60.00%)\n", - "Epoch 6487: model set back to train mode\n", - "Epoch 6487: model parameters saved\n", - "Epoch 6488 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6488: avg_loss appended (1.3125)\n", - "Epoch 6488: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6488: accuracy appended (60.00%)\n", - "Epoch 6488: model set back to train mode\n", - "Epoch 6488: model parameters saved\n", - "Epoch 6489 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6489: avg_loss appended (1.3125)\n", - "Epoch 6489: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6489: accuracy appended (60.00%)\n", - "Epoch 6489: model set back to train mode\n", - "Epoch 6489: model parameters saved\n", - "Epoch 6490 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6490: avg_loss appended (1.3125)\n", - "Epoch 6490: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6490: accuracy appended (60.00%)\n", - "Epoch 6490: model set back to train mode\n", - "Epoch 6490: model parameters saved\n", - "Epoch 6491 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6491: avg_loss appended (1.3125)\n", - "Epoch 6491: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6491: accuracy appended (60.00%)\n", - "Epoch 6491: model set back to train mode\n", - "Epoch 6491: model parameters saved\n", - "Epoch 6492 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6492: avg_loss appended (1.3125)\n", - "Epoch 6492: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6492: accuracy appended (60.00%)\n", - "Epoch 6492: model set back to train mode\n", - "Epoch 6492: model parameters saved\n", - "Epoch 6493 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6493: avg_loss appended (1.3125)\n", - "Epoch 6493: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6493: accuracy appended (60.00%)\n", - "Epoch 6493: model set back to train mode\n", - "Epoch 6493: model parameters saved\n", - "Epoch 6494 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6494: avg_loss appended (1.3125)\n", - "Epoch 6494: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6494: accuracy appended (60.00%)\n", - "Epoch 6494: model set back to train mode\n", - "Epoch 6494: model parameters saved\n", - "Epoch 6495 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6495: avg_loss appended (1.3125)\n", - "Epoch 6495: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6495: accuracy appended (60.00%)\n", - "Epoch 6495: model set back to train mode\n", - "Epoch 6495: model parameters saved\n", - "Epoch 6496 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6496: avg_loss appended (1.3125)\n", - "Epoch 6496: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6496: accuracy appended (60.00%)\n", - "Epoch 6496: model set back to train mode\n", - "Epoch 6496: model parameters saved\n", - "Epoch 6497 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6497: avg_loss appended (1.3125)\n", - "Epoch 6497: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6497: accuracy appended (60.00%)\n", - "Epoch 6497: model set back to train mode\n", - "Epoch 6497: model parameters saved\n", - "Epoch 6498 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6498: avg_loss appended (1.3125)\n", - "Epoch 6498: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6498: accuracy appended (60.00%)\n", - "Epoch 6498: model set back to train mode\n", - "Epoch 6498: model parameters saved\n", - "Epoch 6499 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6499: avg_loss appended (1.3125)\n", - "Epoch 6499: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6499: accuracy appended (60.00%)\n", - "Epoch 6499: model set back to train mode\n", - "Epoch 6499: model parameters saved\n", - "Epoch 6500 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6500: avg_loss appended (1.3125)\n", - "Epoch 6500: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6500: accuracy appended (60.00%)\n", - "Epoch 6500: model set back to train mode\n", - "Epoch 6500: model parameters saved\n", - "Epoch 6500/10000, Loss: 1.3125, Accuracy: 60.00%\n", - "Epoch 6501 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6501: avg_loss appended (1.3125)\n", - "Epoch 6501: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6501: accuracy appended (60.00%)\n", - "Epoch 6501: model set back to train mode\n", - "Epoch 6501: model parameters saved\n", - "Epoch 6502 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6502: avg_loss appended (1.3125)\n", - "Epoch 6502: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6502: accuracy appended (60.00%)\n", - "Epoch 6502: model set back to train mode\n", - "Epoch 6502: model parameters saved\n", - "Epoch 6503 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6503: avg_loss appended (1.3125)\n", - "Epoch 6503: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6503: accuracy appended (60.00%)\n", - "Epoch 6503: model set back to train mode\n", - "Epoch 6503: model parameters saved\n", - "Epoch 6504 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6504: avg_loss appended (1.3125)\n", - "Epoch 6504: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6504: accuracy appended (60.00%)\n", - "Epoch 6504: model set back to train mode\n", - "Epoch 6504: model parameters saved\n", - "Epoch 6505 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6505: avg_loss appended (1.3125)\n", - "Epoch 6505: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6505: accuracy appended (60.00%)\n", - "Epoch 6505: model set back to train mode\n", - "Epoch 6505: model parameters saved\n", - "Epoch 6506 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6506: avg_loss appended (1.3125)\n", - "Epoch 6506: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6506: accuracy appended (60.00%)\n", - "Epoch 6506: model set back to train mode\n", - "Epoch 6506: model parameters saved\n", - "Epoch 6507 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6507: avg_loss appended (1.3125)\n", - "Epoch 6507: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6507: accuracy appended (60.00%)\n", - "Epoch 6507: model set back to train mode\n", - "Epoch 6507: model parameters saved\n", - "Epoch 6508 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6508: avg_loss appended (1.3125)\n", - "Epoch 6508: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6508: accuracy appended (60.00%)\n", - "Epoch 6508: model set back to train mode\n", - "Epoch 6508: model parameters saved\n", - "Epoch 6509 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6509: avg_loss appended (1.3125)\n", - "Epoch 6509: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6509: accuracy appended (60.00%)\n", - "Epoch 6509: model set back to train mode\n", - "Epoch 6509: model parameters saved\n", - "Epoch 6510 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6510: avg_loss appended (1.3125)\n", - "Epoch 6510: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6510: accuracy appended (60.00%)\n", - "Epoch 6510: model set back to train mode\n", - "Epoch 6510: model parameters saved\n", - "Epoch 6511 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6511: avg_loss appended (1.3125)\n", - "Epoch 6511: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6511: accuracy appended (60.00%)\n", - "Epoch 6511: model set back to train mode\n", - "Epoch 6511: model parameters saved\n", - "Epoch 6512 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6512: avg_loss appended (1.3125)\n", - "Epoch 6512: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6512: accuracy appended (60.00%)\n", - "Epoch 6512: model set back to train mode\n", - "Epoch 6512: model parameters saved\n", - "Epoch 6513 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6513: avg_loss appended (1.3125)\n", - "Epoch 6513: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6513: accuracy appended (60.00%)\n", - "Epoch 6513: model set back to train mode\n", - "Epoch 6513: model parameters saved\n", - "Epoch 6514 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6514: avg_loss appended (1.3125)\n", - "Epoch 6514: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6514: accuracy appended (60.00%)\n", - "Epoch 6514: model set back to train mode\n", - "Epoch 6514: model parameters saved\n", - "Epoch 6515 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6515: avg_loss appended (1.3125)\n", - "Epoch 6515: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6515: accuracy appended (60.00%)\n", - "Epoch 6515: model set back to train mode\n", - "Epoch 6515: model parameters saved\n", - "Epoch 6516 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6516: avg_loss appended (1.3125)\n", - "Epoch 6516: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6516: accuracy appended (60.00%)\n", - "Epoch 6516: model set back to train mode\n", - "Epoch 6516: model parameters saved\n", - "Epoch 6517 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6517: avg_loss appended (1.3125)\n", - "Epoch 6517: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6517: accuracy appended (60.00%)\n", - "Epoch 6517: model set back to train mode\n", - "Epoch 6517: model parameters saved\n", - "Epoch 6518 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6518: avg_loss appended (1.3125)\n", - "Epoch 6518: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6518: accuracy appended (60.00%)\n", - "Epoch 6518: model set back to train mode\n", - "Epoch 6518: model parameters saved\n", - "Epoch 6519 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6519: avg_loss appended (1.3125)\n", - "Epoch 6519: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6519: accuracy appended (60.00%)\n", - "Epoch 6519: model set back to train mode\n", - "Epoch 6519: model parameters saved\n", - "Epoch 6520 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6520: avg_loss appended (1.3125)\n", - "Epoch 6520: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6520: accuracy appended (60.00%)\n", - "Epoch 6520: model set back to train mode\n", - "Epoch 6520: model parameters saved\n", - "Epoch 6521 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6521: avg_loss appended (1.3125)\n", - "Epoch 6521: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6521: accuracy appended (60.00%)\n", - "Epoch 6521: model set back to train mode\n", - "Epoch 6521: model parameters saved\n", - "Epoch 6522 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6522: avg_loss appended (1.3125)\n", - "Epoch 6522: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6522: accuracy appended (60.00%)\n", - "Epoch 6522: model set back to train mode\n", - "Epoch 6522: model parameters saved\n", - "Epoch 6523 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6523: avg_loss appended (1.3125)\n", - "Epoch 6523: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6523: accuracy appended (60.00%)\n", - "Epoch 6523: model set back to train mode\n", - "Epoch 6523: model parameters saved\n", - "Epoch 6524 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6524: avg_loss appended (1.3125)\n", - "Epoch 6524: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6524: accuracy appended (60.00%)\n", - "Epoch 6524: model set back to train mode\n", - "Epoch 6524: model parameters saved\n", - "Epoch 6525 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6525: avg_loss appended (1.3125)\n", - "Epoch 6525: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6525: accuracy appended (60.00%)\n", - "Epoch 6525: model set back to train mode\n", - "Epoch 6525: model parameters saved\n", - "Epoch 6526 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6526: avg_loss appended (1.3125)\n", - "Epoch 6526: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6526: accuracy appended (60.00%)\n", - "Epoch 6526: model set back to train mode\n", - "Epoch 6526: model parameters saved\n", - "Epoch 6527 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6527: avg_loss appended (1.3125)\n", - "Epoch 6527: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6527: accuracy appended (60.00%)\n", - "Epoch 6527: model set back to train mode\n", - "Epoch 6527: model parameters saved\n", - "Epoch 6528 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6528: avg_loss appended (1.3125)\n", - "Epoch 6528: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6528: accuracy appended (60.00%)\n", - "Epoch 6528: model set back to train mode\n", - "Epoch 6528: model parameters saved\n", - "Epoch 6529 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6529: avg_loss appended (1.3125)\n", - "Epoch 6529: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6529: accuracy appended (60.00%)\n", - "Epoch 6529: model set back to train mode\n", - "Epoch 6529: model parameters saved\n", - "Epoch 6530 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6530: avg_loss appended (1.3125)\n", - "Epoch 6530: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6530: accuracy appended (60.00%)\n", - "Epoch 6530: model set back to train mode\n", - "Epoch 6530: model parameters saved\n", - "Epoch 6531 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6531: avg_loss appended (1.3125)\n", - "Epoch 6531: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6531: accuracy appended (60.00%)\n", - "Epoch 6531: model set back to train mode\n", - "Epoch 6531: model parameters saved\n", - "Epoch 6532 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6532: avg_loss appended (1.3125)\n", - "Epoch 6532: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6532: accuracy appended (60.00%)\n", - "Epoch 6532: model set back to train mode\n", - "Epoch 6532: model parameters saved\n", - "Epoch 6533 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6533: avg_loss appended (1.3125)\n", - "Epoch 6533: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6533: accuracy appended (60.00%)\n", - "Epoch 6533: model set back to train mode\n", - "Epoch 6533: model parameters saved\n", - "Epoch 6534 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6534: avg_loss appended (1.3125)\n", - "Epoch 6534: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6534: accuracy appended (60.00%)\n", - "Epoch 6534: model set back to train mode\n", - "Epoch 6534: model parameters saved\n", - "Epoch 6535 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6535: avg_loss appended (1.3125)\n", - "Epoch 6535: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6535: accuracy appended (60.00%)\n", - "Epoch 6535: model set back to train mode\n", - "Epoch 6535: model parameters saved\n", - "Epoch 6536 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6536: avg_loss appended (1.3125)\n", - "Epoch 6536: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6536: accuracy appended (60.00%)\n", - "Epoch 6536: model set back to train mode\n", - "Epoch 6536: model parameters saved\n", - "Epoch 6537 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6537: avg_loss appended (1.3125)\n", - "Epoch 6537: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6537: accuracy appended (60.00%)\n", - "Epoch 6537: model set back to train mode\n", - "Epoch 6537: model parameters saved\n", - "Epoch 6538 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6538: avg_loss appended (1.3125)\n", - "Epoch 6538: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6538: accuracy appended (60.00%)\n", - "Epoch 6538: model set back to train mode\n", - "Epoch 6538: model parameters saved\n", - "Epoch 6539 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6539: avg_loss appended (1.3125)\n", - "Epoch 6539: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6539: accuracy appended (60.00%)\n", - "Epoch 6539: model set back to train mode\n", - "Epoch 6539: model parameters saved\n", - "Epoch 6540 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6540: avg_loss appended (1.3125)\n", - "Epoch 6540: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6540: accuracy appended (60.00%)\n", - "Epoch 6540: model set back to train mode\n", - "Epoch 6540: model parameters saved\n", - "Epoch 6541 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6541: avg_loss appended (1.3125)\n", - "Epoch 6541: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6541: accuracy appended (60.00%)\n", - "Epoch 6541: model set back to train mode\n", - "Epoch 6541: model parameters saved\n", - "Epoch 6542 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6542: avg_loss appended (1.3125)\n", - "Epoch 6542: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6542: accuracy appended (60.00%)\n", - "Epoch 6542: model set back to train mode\n", - "Epoch 6542: model parameters saved\n", - "Epoch 6543 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6543: avg_loss appended (1.3125)\n", - "Epoch 6543: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6543: accuracy appended (60.00%)\n", - "Epoch 6543: model set back to train mode\n", - "Epoch 6543: model parameters saved\n", - "Epoch 6544 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6544: avg_loss appended (1.3125)\n", - "Epoch 6544: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6544: accuracy appended (60.00%)\n", - "Epoch 6544: model set back to train mode\n", - "Epoch 6544: model parameters saved\n", - "Epoch 6545 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6545: avg_loss appended (1.3125)\n", - "Epoch 6545: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6545: accuracy appended (60.00%)\n", - "Epoch 6545: model set back to train mode\n", - "Epoch 6545: model parameters saved\n", - "Epoch 6546 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6546: avg_loss appended (1.3125)\n", - "Epoch 6546: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6546: accuracy appended (60.00%)\n", - "Epoch 6546: model set back to train mode\n", - "Epoch 6546: model parameters saved\n", - "Epoch 6547 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6547: avg_loss appended (1.3125)\n", - "Epoch 6547: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6547: accuracy appended (60.00%)\n", - "Epoch 6547: model set back to train mode\n", - "Epoch 6547: model parameters saved\n", - "Epoch 6548 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6548: avg_loss appended (1.3125)\n", - "Epoch 6548: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6548: accuracy appended (60.00%)\n", - "Epoch 6548: model set back to train mode\n", - "Epoch 6548: model parameters saved\n", - "Epoch 6549 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6549: avg_loss appended (1.3125)\n", - "Epoch 6549: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6549: accuracy appended (60.00%)\n", - "Epoch 6549: model set back to train mode\n", - "Epoch 6549: model parameters saved\n", - "Epoch 6550 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6550: avg_loss appended (1.3125)\n", - "Epoch 6550: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6550: accuracy appended (60.00%)\n", - "Epoch 6550: model set back to train mode\n", - "Epoch 6550: model parameters saved\n", - "Epoch 6551 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6551: avg_loss appended (1.3125)\n", - "Epoch 6551: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6551: accuracy appended (60.00%)\n", - "Epoch 6551: model set back to train mode\n", - "Epoch 6551: model parameters saved\n", - "Epoch 6552 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6552: avg_loss appended (1.3125)\n", - "Epoch 6552: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6552: accuracy appended (60.00%)\n", - "Epoch 6552: model set back to train mode\n", - "Epoch 6552: model parameters saved\n", - "Epoch 6553 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6553: avg_loss appended (1.3125)\n", - "Epoch 6553: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6553: accuracy appended (60.00%)\n", - "Epoch 6553: model set back to train mode\n", - "Epoch 6553: model parameters saved\n", - "Epoch 6554 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6554: avg_loss appended (1.3125)\n", - "Epoch 6554: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6554: accuracy appended (60.00%)\n", - "Epoch 6554: model set back to train mode\n", - "Epoch 6554: model parameters saved\n", - "Epoch 6555 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6555: avg_loss appended (1.3125)\n", - "Epoch 6555: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6555: accuracy appended (60.00%)\n", - "Epoch 6555: model set back to train mode\n", - "Epoch 6555: model parameters saved\n", - "Epoch 6556 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6556: avg_loss appended (1.3125)\n", - "Epoch 6556: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6556: accuracy appended (60.00%)\n", - "Epoch 6556: model set back to train mode\n", - "Epoch 6556: model parameters saved\n", - "Epoch 6557 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6557: avg_loss appended (1.3125)\n", - "Epoch 6557: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6557: accuracy appended (60.00%)\n", - "Epoch 6557: model set back to train mode\n", - "Epoch 6557: model parameters saved\n", - "Epoch 6558 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6558: avg_loss appended (1.3125)\n", - "Epoch 6558: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6558: accuracy appended (60.00%)\n", - "Epoch 6558: model set back to train mode\n", - "Epoch 6558: model parameters saved\n", - "Epoch 6559 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6559: avg_loss appended (1.3125)\n", - "Epoch 6559: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6559: accuracy appended (60.00%)\n", - "Epoch 6559: model set back to train mode\n", - "Epoch 6559: model parameters saved\n", - "Epoch 6560 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6560: avg_loss appended (1.3125)\n", - "Epoch 6560: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6560: accuracy appended (60.00%)\n", - "Epoch 6560: model set back to train mode\n", - "Epoch 6560: model parameters saved\n", - "Epoch 6561 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6561: avg_loss appended (1.3125)\n", - "Epoch 6561: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6561: accuracy appended (60.00%)\n", - "Epoch 6561: model set back to train mode\n", - "Epoch 6561: model parameters saved\n", - "Epoch 6562 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6562: avg_loss appended (1.3125)\n", - "Epoch 6562: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6562: accuracy appended (60.00%)\n", - "Epoch 6562: model set back to train mode\n", - "Epoch 6562: model parameters saved\n", - "Epoch 6563 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6563: avg_loss appended (1.3125)\n", - "Epoch 6563: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6563: accuracy appended (60.00%)\n", - "Epoch 6563: model set back to train mode\n", - "Epoch 6563: model parameters saved\n", - "Epoch 6564 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6564: avg_loss appended (1.3125)\n", - "Epoch 6564: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6564: accuracy appended (60.00%)\n", - "Epoch 6564: model set back to train mode\n", - "Epoch 6564: model parameters saved\n", - "Epoch 6565 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6565: avg_loss appended (1.3125)\n", - "Epoch 6565: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6565: accuracy appended (60.00%)\n", - "Epoch 6565: model set back to train mode\n", - "Epoch 6565: model parameters saved\n", - "Epoch 6566 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6566: avg_loss appended (1.3125)\n", - "Epoch 6566: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6566: accuracy appended (60.00%)\n", - "Epoch 6566: model set back to train mode\n", - "Epoch 6566: model parameters saved\n", - "Epoch 6567 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6567: avg_loss appended (1.3125)\n", - "Epoch 6567: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6567: accuracy appended (60.00%)\n", - "Epoch 6567: model set back to train mode\n", - "Epoch 6567: model parameters saved\n", - "Epoch 6568 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6568: avg_loss appended (1.3125)\n", - "Epoch 6568: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6568: accuracy appended (60.00%)\n", - "Epoch 6568: model set back to train mode\n", - "Epoch 6568: model parameters saved\n", - "Epoch 6569 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6569: avg_loss appended (1.3125)\n", - "Epoch 6569: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6569: accuracy appended (60.00%)\n", - "Epoch 6569: model set back to train mode\n", - "Epoch 6569: model parameters saved\n", - "Epoch 6570 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6570: avg_loss appended (1.3125)\n", - "Epoch 6570: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6570: accuracy appended (60.00%)\n", - "Epoch 6570: model set back to train mode\n", - "Epoch 6570: model parameters saved\n", - "Epoch 6571 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6571: avg_loss appended (1.3125)\n", - "Epoch 6571: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6571: accuracy appended (60.00%)\n", - "Epoch 6571: model set back to train mode\n", - "Epoch 6571: model parameters saved\n", - "Epoch 6572 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6572: avg_loss appended (1.3125)\n", - "Epoch 6572: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6572: accuracy appended (60.00%)\n", - "Epoch 6572: model set back to train mode\n", - "Epoch 6572: model parameters saved\n", - "Epoch 6573 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6573: avg_loss appended (1.3125)\n", - "Epoch 6573: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6573: accuracy appended (60.00%)\n", - "Epoch 6573: model set back to train mode\n", - "Epoch 6573: model parameters saved\n", - "Epoch 6574 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6574: avg_loss appended (1.3125)\n", - "Epoch 6574: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6574: accuracy appended (60.00%)\n", - "Epoch 6574: model set back to train mode\n", - "Epoch 6574: model parameters saved\n", - "Epoch 6575 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6575: avg_loss appended (1.3125)\n", - "Epoch 6575: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6575: accuracy appended (60.00%)\n", - "Epoch 6575: model set back to train mode\n", - "Epoch 6575: model parameters saved\n", - "Epoch 6576 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6576: avg_loss appended (1.3125)\n", - "Epoch 6576: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6576: accuracy appended (60.00%)\n", - "Epoch 6576: model set back to train mode\n", - "Epoch 6576: model parameters saved\n", - "Epoch 6577 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6577: avg_loss appended (1.3125)\n", - "Epoch 6577: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6577: accuracy appended (60.00%)\n", - "Epoch 6577: model set back to train mode\n", - "Epoch 6577: model parameters saved\n", - "Epoch 6578 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6578: avg_loss appended (1.3125)\n", - "Epoch 6578: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6578: accuracy appended (60.00%)\n", - "Epoch 6578: model set back to train mode\n", - "Epoch 6578: model parameters saved\n", - "Epoch 6579 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6579: avg_loss appended (1.3125)\n", - "Epoch 6579: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6579: accuracy appended (60.00%)\n", - "Epoch 6579: model set back to train mode\n", - "Epoch 6579: model parameters saved\n", - "Epoch 6580 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6580: avg_loss appended (1.3125)\n", - "Epoch 6580: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6580: accuracy appended (60.00%)\n", - "Epoch 6580: model set back to train mode\n", - "Epoch 6580: model parameters saved\n", - "Epoch 6581 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6581: avg_loss appended (1.3125)\n", - "Epoch 6581: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6581: accuracy appended (60.00%)\n", - "Epoch 6581: model set back to train mode\n", - "Epoch 6581: model parameters saved\n", - "Epoch 6582 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6582: avg_loss appended (1.3125)\n", - "Epoch 6582: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6582: accuracy appended (60.00%)\n", - "Epoch 6582: model set back to train mode\n", - "Epoch 6582: model parameters saved\n", - "Epoch 6583 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6583: avg_loss appended (1.3125)\n", - "Epoch 6583: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6583: accuracy appended (60.00%)\n", - "Epoch 6583: model set back to train mode\n", - "Epoch 6583: model parameters saved\n", - "Epoch 6584 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6584: avg_loss appended (1.3125)\n", - "Epoch 6584: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6584: accuracy appended (60.00%)\n", - "Epoch 6584: model set back to train mode\n", - "Epoch 6584: model parameters saved\n", - "Epoch 6585 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6585: avg_loss appended (1.3125)\n", - "Epoch 6585: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6585: accuracy appended (60.00%)\n", - "Epoch 6585: model set back to train mode\n", - "Epoch 6585: model parameters saved\n", - "Epoch 6586 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6586: avg_loss appended (1.3125)\n", - "Epoch 6586: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6586: accuracy appended (60.00%)\n", - "Epoch 6586: model set back to train mode\n", - "Epoch 6586: model parameters saved\n", - "Epoch 6587 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6587: avg_loss appended (1.3125)\n", - "Epoch 6587: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6587: accuracy appended (60.00%)\n", - "Epoch 6587: model set back to train mode\n", - "Epoch 6587: model parameters saved\n", - "Epoch 6588 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6588: avg_loss appended (1.3125)\n", - "Epoch 6588: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6588: accuracy appended (60.00%)\n", - "Epoch 6588: model set back to train mode\n", - "Epoch 6588: model parameters saved\n", - "Epoch 6589 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6589: avg_loss appended (1.3125)\n", - "Epoch 6589: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6589: accuracy appended (60.00%)\n", - "Epoch 6589: model set back to train mode\n", - "Epoch 6589: model parameters saved\n", - "Epoch 6590 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6590: avg_loss appended (1.3125)\n", - "Epoch 6590: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6590: accuracy appended (60.00%)\n", - "Epoch 6590: model set back to train mode\n", - "Epoch 6590: model parameters saved\n", - "Epoch 6591 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6591: avg_loss appended (1.3125)\n", - "Epoch 6591: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6591: accuracy appended (60.00%)\n", - "Epoch 6591: model set back to train mode\n", - "Epoch 6591: model parameters saved\n", - "Epoch 6592 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6592: avg_loss appended (1.3125)\n", - "Epoch 6592: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6592: accuracy appended (60.00%)\n", - "Epoch 6592: model set back to train mode\n", - "Epoch 6592: model parameters saved\n", - "Epoch 6593 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6593: avg_loss appended (1.3125)\n", - "Epoch 6593: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6593: accuracy appended (60.00%)\n", - "Epoch 6593: model set back to train mode\n", - "Epoch 6593: model parameters saved\n", - "Epoch 6594 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6594: avg_loss appended (1.3125)\n", - "Epoch 6594: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6594: accuracy appended (60.00%)\n", - "Epoch 6594: model set back to train mode\n", - "Epoch 6594: model parameters saved\n", - "Epoch 6595 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6595: avg_loss appended (1.3125)\n", - "Epoch 6595: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6595: accuracy appended (60.00%)\n", - "Epoch 6595: model set back to train mode\n", - "Epoch 6595: model parameters saved\n", - "Epoch 6596 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6596: avg_loss appended (1.3125)\n", - "Epoch 6596: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6596: accuracy appended (60.00%)\n", - "Epoch 6596: model set back to train mode\n", - "Epoch 6596: model parameters saved\n", - "Epoch 6597 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6597: avg_loss appended (1.3125)\n", - "Epoch 6597: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6597: accuracy appended (60.00%)\n", - "Epoch 6597: model set back to train mode\n", - "Epoch 6597: model parameters saved\n", - "Epoch 6598 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6598: avg_loss appended (1.3125)\n", - "Epoch 6598: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6598: accuracy appended (60.00%)\n", - "Epoch 6598: model set back to train mode\n", - "Epoch 6598: model parameters saved\n", - "Epoch 6599 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6599: avg_loss appended (1.3125)\n", - "Epoch 6599: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6599: accuracy appended (60.00%)\n", - "Epoch 6599: model set back to train mode\n", - "Epoch 6599: model parameters saved\n", - "Epoch 6600 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6600: avg_loss appended (1.3125)\n", - "Epoch 6600: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6600: accuracy appended (60.00%)\n", - "Epoch 6600: model set back to train mode\n", - "Epoch 6600: model parameters saved\n", - "Epoch 6600/10000, Loss: 1.3125, Accuracy: 60.00%\n", - "Epoch 6601 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6601: avg_loss appended (1.3125)\n", - "Epoch 6601: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6601: accuracy appended (60.00%)\n", - "Epoch 6601: model set back to train mode\n", - "Epoch 6601: model parameters saved\n", - "Epoch 6602 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6602: avg_loss appended (1.3125)\n", - "Epoch 6602: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6602: accuracy appended (60.00%)\n", - "Epoch 6602: model set back to train mode\n", - "Epoch 6602: model parameters saved\n", - "Epoch 6603 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6603: avg_loss appended (1.3125)\n", - "Epoch 6603: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6603: accuracy appended (60.00%)\n", - "Epoch 6603: model set back to train mode\n", - "Epoch 6603: model parameters saved\n", - "Epoch 6604 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6604: avg_loss appended (1.3125)\n", - "Epoch 6604: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6604: accuracy appended (60.00%)\n", - "Epoch 6604: model set back to train mode\n", - "Epoch 6604: model parameters saved\n", - "Epoch 6605 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6605: avg_loss appended (1.3125)\n", - "Epoch 6605: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6605: accuracy appended (60.00%)\n", - "Epoch 6605: model set back to train mode\n", - "Epoch 6605: model parameters saved\n", - "Epoch 6606 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6606: avg_loss appended (1.3125)\n", - "Epoch 6606: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6606: accuracy appended (60.00%)\n", - "Epoch 6606: model set back to train mode\n", - "Epoch 6606: model parameters saved\n", - "Epoch 6607 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6607: avg_loss appended (1.3125)\n", - "Epoch 6607: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6607: accuracy appended (60.00%)\n", - "Epoch 6607: model set back to train mode\n", - "Epoch 6607: model parameters saved\n", - "Epoch 6608 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6608: avg_loss appended (1.3125)\n", - "Epoch 6608: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6608: accuracy appended (60.00%)\n", - "Epoch 6608: model set back to train mode\n", - "Epoch 6608: model parameters saved\n", - "Epoch 6609 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6609: avg_loss appended (1.3125)\n", - "Epoch 6609: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6609: accuracy appended (60.00%)\n", - "Epoch 6609: model set back to train mode\n", - "Epoch 6609: model parameters saved\n", - "Epoch 6610 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6610: avg_loss appended (1.3125)\n", - "Epoch 6610: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6610: accuracy appended (60.00%)\n", - "Epoch 6610: model set back to train mode\n", - "Epoch 6610: model parameters saved\n", - "Epoch 6611 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6611: avg_loss appended (1.3125)\n", - "Epoch 6611: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6611: accuracy appended (60.00%)\n", - "Epoch 6611: model set back to train mode\n", - "Epoch 6611: model parameters saved\n", - "Epoch 6612 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6612: avg_loss appended (1.3125)\n", - "Epoch 6612: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6612: accuracy appended (60.00%)\n", - "Epoch 6612: model set back to train mode\n", - "Epoch 6612: model parameters saved\n", - "Epoch 6613 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6613: avg_loss appended (1.3125)\n", - "Epoch 6613: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6613: accuracy appended (60.00%)\n", - "Epoch 6613: model set back to train mode\n", - "Epoch 6613: model parameters saved\n", - "Epoch 6614 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6614: avg_loss appended (1.3125)\n", - "Epoch 6614: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6614: accuracy appended (60.00%)\n", - "Epoch 6614: model set back to train mode\n", - "Epoch 6614: model parameters saved\n", - "Epoch 6615 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6615: avg_loss appended (1.3125)\n", - "Epoch 6615: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6615: accuracy appended (60.00%)\n", - "Epoch 6615: model set back to train mode\n", - "Epoch 6615: model parameters saved\n", - "Epoch 6616 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6616: avg_loss appended (1.3125)\n", - "Epoch 6616: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6616: accuracy appended (60.00%)\n", - "Epoch 6616: model set back to train mode\n", - "Epoch 6616: model parameters saved\n", - "Epoch 6617 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6617: avg_loss appended (1.3125)\n", - "Epoch 6617: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6617: accuracy appended (60.00%)\n", - "Epoch 6617: model set back to train mode\n", - "Epoch 6617: model parameters saved\n", - "Epoch 6618 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6618: avg_loss appended (1.3125)\n", - "Epoch 6618: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6618: accuracy appended (60.00%)\n", - "Epoch 6618: model set back to train mode\n", - "Epoch 6618: model parameters saved\n", - "Epoch 6619 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6619: avg_loss appended (1.3125)\n", - "Epoch 6619: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6619: accuracy appended (60.00%)\n", - "Epoch 6619: model set back to train mode\n", - "Epoch 6619: model parameters saved\n", - "Epoch 6620 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6620: avg_loss appended (1.3125)\n", - "Epoch 6620: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6620: accuracy appended (60.00%)\n", - "Epoch 6620: model set back to train mode\n", - "Epoch 6620: model parameters saved\n", - "Epoch 6621 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6621: avg_loss appended (1.3125)\n", - "Epoch 6621: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6621: accuracy appended (60.00%)\n", - "Epoch 6621: model set back to train mode\n", - "Epoch 6621: model parameters saved\n", - "Epoch 6622 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6622: avg_loss appended (1.3125)\n", - "Epoch 6622: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6622: accuracy appended (60.00%)\n", - "Epoch 6622: model set back to train mode\n", - "Epoch 6622: model parameters saved\n", - "Epoch 6623 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6623: avg_loss appended (1.3125)\n", - "Epoch 6623: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6623: accuracy appended (60.00%)\n", - "Epoch 6623: model set back to train mode\n", - "Epoch 6623: model parameters saved\n", - "Epoch 6624 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6624: avg_loss appended (1.3125)\n", - "Epoch 6624: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6624: accuracy appended (60.00%)\n", - "Epoch 6624: model set back to train mode\n", - "Epoch 6624: model parameters saved\n", - "Epoch 6625 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6625: avg_loss appended (1.3125)\n", - "Epoch 6625: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6625: accuracy appended (60.00%)\n", - "Epoch 6625: model set back to train mode\n", - "Epoch 6625: model parameters saved\n", - "Epoch 6626 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6626: avg_loss appended (1.3125)\n", - "Epoch 6626: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6626: accuracy appended (60.00%)\n", - "Epoch 6626: model set back to train mode\n", - "Epoch 6626: model parameters saved\n", - "Epoch 6627 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6627: avg_loss appended (1.3125)\n", - "Epoch 6627: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6627: accuracy appended (60.00%)\n", - "Epoch 6627: model set back to train mode\n", - "Epoch 6627: model parameters saved\n", - "Epoch 6628 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6628: avg_loss appended (1.3125)\n", - "Epoch 6628: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6628: accuracy appended (60.00%)\n", - "Epoch 6628: model set back to train mode\n", - "Epoch 6628: model parameters saved\n", - "Epoch 6629 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6629: avg_loss appended (1.3125)\n", - "Epoch 6629: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6629: accuracy appended (60.00%)\n", - "Epoch 6629: model set back to train mode\n", - "Epoch 6629: model parameters saved\n", - "Epoch 6630 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6630: avg_loss appended (1.3125)\n", - "Epoch 6630: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6630: accuracy appended (60.00%)\n", - "Epoch 6630: model set back to train mode\n", - "Epoch 6630: model parameters saved\n", - "Epoch 6631 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6631: avg_loss appended (1.3125)\n", - "Epoch 6631: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6631: accuracy appended (60.00%)\n", - "Epoch 6631: model set back to train mode\n", - "Epoch 6631: model parameters saved\n", - "Epoch 6632 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6632: avg_loss appended (1.3125)\n", - "Epoch 6632: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6632: accuracy appended (60.00%)\n", - "Epoch 6632: model set back to train mode\n", - "Epoch 6632: model parameters saved\n", - "Epoch 6633 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6633: avg_loss appended (1.3125)\n", - "Epoch 6633: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6633: accuracy appended (60.00%)\n", - "Epoch 6633: model set back to train mode\n", - "Epoch 6633: model parameters saved\n", - "Epoch 6634 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6634: avg_loss appended (1.3125)\n", - "Epoch 6634: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6634: accuracy appended (60.00%)\n", - "Epoch 6634: model set back to train mode\n", - "Epoch 6634: model parameters saved\n", - "Epoch 6635 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6635: avg_loss appended (1.3125)\n", - "Epoch 6635: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6635: accuracy appended (60.00%)\n", - "Epoch 6635: model set back to train mode\n", - "Epoch 6635: model parameters saved\n", - "Epoch 6636 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6636: avg_loss appended (1.3125)\n", - "Epoch 6636: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6636: accuracy appended (60.00%)\n", - "Epoch 6636: model set back to train mode\n", - "Epoch 6636: model parameters saved\n", - "Epoch 6637 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6637: avg_loss appended (1.3125)\n", - "Epoch 6637: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6637: accuracy appended (60.00%)\n", - "Epoch 6637: model set back to train mode\n", - "Epoch 6637: model parameters saved\n", - "Epoch 6638 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6638: avg_loss appended (1.3125)\n", - "Epoch 6638: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6638: accuracy appended (60.00%)\n", - "Epoch 6638: model set back to train mode\n", - "Epoch 6638: model parameters saved\n", - "Epoch 6639 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6639: avg_loss appended (1.3125)\n", - "Epoch 6639: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6639: accuracy appended (60.00%)\n", - "Epoch 6639: model set back to train mode\n", - "Epoch 6639: model parameters saved\n", - "Epoch 6640 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6640: avg_loss appended (1.3125)\n", - "Epoch 6640: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6640: accuracy appended (60.00%)\n", - "Epoch 6640: model set back to train mode\n", - "Epoch 6640: model parameters saved\n", - "Epoch 6641 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6641: avg_loss appended (1.3125)\n", - "Epoch 6641: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6641: accuracy appended (60.00%)\n", - "Epoch 6641: model set back to train mode\n", - "Epoch 6641: model parameters saved\n", - "Epoch 6642 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6642: avg_loss appended (1.3125)\n", - "Epoch 6642: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6642: accuracy appended (60.00%)\n", - "Epoch 6642: model set back to train mode\n", - "Epoch 6642: model parameters saved\n", - "Epoch 6643 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6643: avg_loss appended (1.3125)\n", - "Epoch 6643: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6643: accuracy appended (60.00%)\n", - "Epoch 6643: model set back to train mode\n", - "Epoch 6643: model parameters saved\n", - "Epoch 6644 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6644: avg_loss appended (1.3125)\n", - "Epoch 6644: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6644: accuracy appended (60.00%)\n", - "Epoch 6644: model set back to train mode\n", - "Epoch 6644: model parameters saved\n", - "Epoch 6645 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6645: avg_loss appended (1.3125)\n", - "Epoch 6645: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6645: accuracy appended (60.00%)\n", - "Epoch 6645: model set back to train mode\n", - "Epoch 6645: model parameters saved\n", - "Epoch 6646 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6646: avg_loss appended (1.3125)\n", - "Epoch 6646: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6646: accuracy appended (60.00%)\n", - "Epoch 6646: model set back to train mode\n", - "Epoch 6646: model parameters saved\n", - "Epoch 6647 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6647: avg_loss appended (1.3125)\n", - "Epoch 6647: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6647: accuracy appended (60.00%)\n", - "Epoch 6647: model set back to train mode\n", - "Epoch 6647: model parameters saved\n", - "Epoch 6648 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6648: avg_loss appended (1.3125)\n", - "Epoch 6648: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6648: accuracy appended (60.00%)\n", - "Epoch 6648: model set back to train mode\n", - "Epoch 6648: model parameters saved\n", - "Epoch 6649 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6649: avg_loss appended (1.3125)\n", - "Epoch 6649: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6649: accuracy appended (60.00%)\n", - "Epoch 6649: model set back to train mode\n", - "Epoch 6649: model parameters saved\n", - "Epoch 6650 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6650: avg_loss appended (1.3125)\n", - "Epoch 6650: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6650: accuracy appended (60.00%)\n", - "Epoch 6650: model set back to train mode\n", - "Epoch 6650: model parameters saved\n", - "Epoch 6651 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6651: avg_loss appended (1.3125)\n", - "Epoch 6651: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6651: accuracy appended (60.00%)\n", - "Epoch 6651: model set back to train mode\n", - "Epoch 6651: model parameters saved\n", - "Epoch 6652 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6652: avg_loss appended (1.3125)\n", - "Epoch 6652: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6652: accuracy appended (60.00%)\n", - "Epoch 6652: model set back to train mode\n", - "Epoch 6652: model parameters saved\n", - "Epoch 6653 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6653: avg_loss appended (1.3125)\n", - "Epoch 6653: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6653: accuracy appended (60.00%)\n", - "Epoch 6653: model set back to train mode\n", - "Epoch 6653: model parameters saved\n", - "Epoch 6654 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6654: avg_loss appended (1.3125)\n", - "Epoch 6654: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6654: accuracy appended (60.00%)\n", - "Epoch 6654: model set back to train mode\n", - "Epoch 6654: model parameters saved\n", - "Epoch 6655 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6655: avg_loss appended (1.3125)\n", - "Epoch 6655: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6655: accuracy appended (60.00%)\n", - "Epoch 6655: model set back to train mode\n", - "Epoch 6655: model parameters saved\n", - "Epoch 6656 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6656: avg_loss appended (1.3125)\n", - "Epoch 6656: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6656: accuracy appended (60.00%)\n", - "Epoch 6656: model set back to train mode\n", - "Epoch 6656: model parameters saved\n", - "Epoch 6657 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6657: avg_loss appended (1.3125)\n", - "Epoch 6657: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6657: accuracy appended (60.00%)\n", - "Epoch 6657: model set back to train mode\n", - "Epoch 6657: model parameters saved\n", - "Epoch 6658 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6658: avg_loss appended (1.3125)\n", - "Epoch 6658: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6658: accuracy appended (60.00%)\n", - "Epoch 6658: model set back to train mode\n", - "Epoch 6658: model parameters saved\n", - "Epoch 6659 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6659: avg_loss appended (1.3125)\n", - "Epoch 6659: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6659: accuracy appended (60.00%)\n", - "Epoch 6659: model set back to train mode\n", - "Epoch 6659: model parameters saved\n", - "Epoch 6660 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6660: avg_loss appended (1.3125)\n", - "Epoch 6660: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6660: accuracy appended (60.00%)\n", - "Epoch 6660: model set back to train mode\n", - "Epoch 6660: model parameters saved\n", - "Epoch 6661 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6661: avg_loss appended (1.3125)\n", - "Epoch 6661: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6661: accuracy appended (60.00%)\n", - "Epoch 6661: model set back to train mode\n", - "Epoch 6661: model parameters saved\n", - "Epoch 6662 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6662: avg_loss appended (1.3125)\n", - "Epoch 6662: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6662: accuracy appended (60.00%)\n", - "Epoch 6662: model set back to train mode\n", - "Epoch 6662: model parameters saved\n", - "Epoch 6663 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6663: avg_loss appended (1.3125)\n", - "Epoch 6663: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6663: accuracy appended (60.00%)\n", - "Epoch 6663: model set back to train mode\n", - "Epoch 6663: model parameters saved\n", - "Epoch 6664 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6664: avg_loss appended (1.3125)\n", - "Epoch 6664: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6664: accuracy appended (60.00%)\n", - "Epoch 6664: model set back to train mode\n", - "Epoch 6664: model parameters saved\n", - "Epoch 6665 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6665: avg_loss appended (1.3125)\n", - "Epoch 6665: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6665: accuracy appended (60.00%)\n", - "Epoch 6665: model set back to train mode\n", - "Epoch 6665: model parameters saved\n", - "Epoch 6666 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6666: avg_loss appended (1.3125)\n", - "Epoch 6666: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6666: accuracy appended (60.00%)\n", - "Epoch 6666: model set back to train mode\n", - "Epoch 6666: model parameters saved\n", - "Epoch 6667 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6667: avg_loss appended (1.3125)\n", - "Epoch 6667: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6667: accuracy appended (60.00%)\n", - "Epoch 6667: model set back to train mode\n", - "Epoch 6667: model parameters saved\n", - "Epoch 6668 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6668: avg_loss appended (1.3125)\n", - "Epoch 6668: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6668: accuracy appended (60.00%)\n", - "Epoch 6668: model set back to train mode\n", - "Epoch 6668: model parameters saved\n", - "Epoch 6669 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6669: avg_loss appended (1.3125)\n", - "Epoch 6669: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6669: accuracy appended (60.00%)\n", - "Epoch 6669: model set back to train mode\n", - "Epoch 6669: model parameters saved\n", - "Epoch 6670 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6670: avg_loss appended (1.3125)\n", - "Epoch 6670: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6670: accuracy appended (60.00%)\n", - "Epoch 6670: model set back to train mode\n", - "Epoch 6670: model parameters saved\n", - "Epoch 6671 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6671: avg_loss appended (1.3125)\n", - "Epoch 6671: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6671: accuracy appended (60.00%)\n", - "Epoch 6671: model set back to train mode\n", - "Epoch 6671: model parameters saved\n", - "Epoch 6672 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6672: avg_loss appended (1.3125)\n", - "Epoch 6672: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6672: accuracy appended (60.00%)\n", - "Epoch 6672: model set back to train mode\n", - "Epoch 6672: model parameters saved\n", - "Epoch 6673 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6673: avg_loss appended (1.3125)\n", - "Epoch 6673: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6673: accuracy appended (60.00%)\n", - "Epoch 6673: model set back to train mode\n", - "Epoch 6673: model parameters saved\n", - "Epoch 6674 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6674: avg_loss appended (1.3125)\n", - "Epoch 6674: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6674: accuracy appended (60.00%)\n", - "Epoch 6674: model set back to train mode\n", - "Epoch 6674: model parameters saved\n", - "Epoch 6675 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6675: avg_loss appended (1.3125)\n", - "Epoch 6675: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6675: accuracy appended (60.00%)\n", - "Epoch 6675: model set back to train mode\n", - "Epoch 6675: model parameters saved\n", - "Epoch 6676 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6676: avg_loss appended (1.3125)\n", - "Epoch 6676: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6676: accuracy appended (60.00%)\n", - "Epoch 6676: model set back to train mode\n", - "Epoch 6676: model parameters saved\n", - "Epoch 6677 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6677: avg_loss appended (1.3125)\n", - "Epoch 6677: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6677: accuracy appended (60.00%)\n", - "Epoch 6677: model set back to train mode\n", - "Epoch 6677: model parameters saved\n", - "Epoch 6678 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6678: avg_loss appended (1.3125)\n", - "Epoch 6678: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6678: accuracy appended (60.00%)\n", - "Epoch 6678: model set back to train mode\n", - "Epoch 6678: model parameters saved\n", - "Epoch 6679 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6679: avg_loss appended (1.3125)\n", - "Epoch 6679: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6679: accuracy appended (60.00%)\n", - "Epoch 6679: model set back to train mode\n", - "Epoch 6679: model parameters saved\n", - "Epoch 6680 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6680: avg_loss appended (1.3125)\n", - "Epoch 6680: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6680: accuracy appended (60.00%)\n", - "Epoch 6680: model set back to train mode\n", - "Epoch 6680: model parameters saved\n", - "Epoch 6681 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6681: avg_loss appended (1.3125)\n", - "Epoch 6681: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6681: accuracy appended (60.00%)\n", - "Epoch 6681: model set back to train mode\n", - "Epoch 6681: model parameters saved\n", - "Epoch 6682 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6682: avg_loss appended (1.3125)\n", - "Epoch 6682: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6682: accuracy appended (60.00%)\n", - "Epoch 6682: model set back to train mode\n", - "Epoch 6682: model parameters saved\n", - "Epoch 6683 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6683: avg_loss appended (1.3125)\n", - "Epoch 6683: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6683: accuracy appended (60.00%)\n", - "Epoch 6683: model set back to train mode\n", - "Epoch 6683: model parameters saved\n", - "Epoch 6684 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6684: avg_loss appended (1.3125)\n", - "Epoch 6684: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6684: accuracy appended (60.00%)\n", - "Epoch 6684: model set back to train mode\n", - "Epoch 6684: model parameters saved\n", - "Epoch 6685 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6685: avg_loss appended (1.3125)\n", - "Epoch 6685: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6685: accuracy appended (60.00%)\n", - "Epoch 6685: model set back to train mode\n", - "Epoch 6685: model parameters saved\n", - "Epoch 6686 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6686: avg_loss appended (1.3125)\n", - "Epoch 6686: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6686: accuracy appended (60.00%)\n", - "Epoch 6686: model set back to train mode\n", - "Epoch 6686: model parameters saved\n", - "Epoch 6687 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6687: avg_loss appended (1.3125)\n", - "Epoch 6687: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6687: accuracy appended (60.00%)\n", - "Epoch 6687: model set back to train mode\n", - "Epoch 6687: model parameters saved\n", - "Epoch 6688 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6688: avg_loss appended (1.3125)\n", - "Epoch 6688: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6688: accuracy appended (60.00%)\n", - "Epoch 6688: model set back to train mode\n", - "Epoch 6688: model parameters saved\n", - "Epoch 6689 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6689: avg_loss appended (1.3125)\n", - "Epoch 6689: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6689: accuracy appended (60.00%)\n", - "Epoch 6689: model set back to train mode\n", - "Epoch 6689: model parameters saved\n", - "Epoch 6690 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6690: avg_loss appended (1.3125)\n", - "Epoch 6690: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6690: accuracy appended (60.00%)\n", - "Epoch 6690: model set back to train mode\n", - "Epoch 6690: model parameters saved\n", - "Epoch 6691 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6691: avg_loss appended (1.3125)\n", - "Epoch 6691: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6691: accuracy appended (60.00%)\n", - "Epoch 6691: model set back to train mode\n", - "Epoch 6691: model parameters saved\n", - "Epoch 6692 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6692: avg_loss appended (1.3125)\n", - "Epoch 6692: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6692: accuracy appended (60.00%)\n", - "Epoch 6692: model set back to train mode\n", - "Epoch 6692: model parameters saved\n", - "Epoch 6693 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6693: avg_loss appended (1.3125)\n", - "Epoch 6693: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6693: accuracy appended (60.00%)\n", - "Epoch 6693: model set back to train mode\n", - "Epoch 6693: model parameters saved\n", - "Epoch 6694 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6694: avg_loss appended (1.3125)\n", - "Epoch 6694: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6694: accuracy appended (60.00%)\n", - "Epoch 6694: model set back to train mode\n", - "Epoch 6694: model parameters saved\n", - "Epoch 6695 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6695: avg_loss appended (1.3125)\n", - "Epoch 6695: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6695: accuracy appended (60.00%)\n", - "Epoch 6695: model set back to train mode\n", - "Epoch 6695: model parameters saved\n", - "Epoch 6696 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6696: avg_loss appended (1.3125)\n", - "Epoch 6696: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6696: accuracy appended (60.00%)\n", - "Epoch 6696: model set back to train mode\n", - "Epoch 6696: model parameters saved\n", - "Epoch 6697 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6697: avg_loss appended (1.3125)\n", - "Epoch 6697: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6697: accuracy appended (60.00%)\n", - "Epoch 6697: model set back to train mode\n", - "Epoch 6697: model parameters saved\n", - "Epoch 6698 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6698: avg_loss appended (1.3125)\n", - "Epoch 6698: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6698: accuracy appended (60.00%)\n", - "Epoch 6698: model set back to train mode\n", - "Epoch 6698: model parameters saved\n", - "Epoch 6699 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6699: avg_loss appended (1.3125)\n", - "Epoch 6699: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6699: accuracy appended (60.00%)\n", - "Epoch 6699: model set back to train mode\n", - "Epoch 6699: model parameters saved\n", - "Epoch 6700 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6700: avg_loss appended (1.3125)\n", - "Epoch 6700: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6700: accuracy appended (60.00%)\n", - "Epoch 6700: model set back to train mode\n", - "Epoch 6700: model parameters saved\n", - "Epoch 6700/10000, Loss: 1.3125, Accuracy: 60.00%\n", - "Epoch 6701 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6701: avg_loss appended (1.3125)\n", - "Epoch 6701: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6701: accuracy appended (60.00%)\n", - "Epoch 6701: model set back to train mode\n", - "Epoch 6701: model parameters saved\n", - "Epoch 6702 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6702: avg_loss appended (1.3125)\n", - "Epoch 6702: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6702: accuracy appended (60.00%)\n", - "Epoch 6702: model set back to train mode\n", - "Epoch 6702: model parameters saved\n", - "Epoch 6703 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6703: avg_loss appended (1.3125)\n", - "Epoch 6703: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6703: accuracy appended (60.00%)\n", - "Epoch 6703: model set back to train mode\n", - "Epoch 6703: model parameters saved\n", - "Epoch 6704 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6704: avg_loss appended (1.3125)\n", - "Epoch 6704: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6704: accuracy appended (60.00%)\n", - "Epoch 6704: model set back to train mode\n", - "Epoch 6704: model parameters saved\n", - "Epoch 6705 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6705: avg_loss appended (1.3125)\n", - "Epoch 6705: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6705: accuracy appended (60.00%)\n", - "Epoch 6705: model set back to train mode\n", - "Epoch 6705: model parameters saved\n", - "Epoch 6706 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6706: avg_loss appended (1.3125)\n", - "Epoch 6706: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6706: accuracy appended (60.00%)\n", - "Epoch 6706: model set back to train mode\n", - "Epoch 6706: model parameters saved\n", - "Epoch 6707 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6707: avg_loss appended (1.3125)\n", - "Epoch 6707: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6707: accuracy appended (60.00%)\n", - "Epoch 6707: model set back to train mode\n", - "Epoch 6707: model parameters saved\n", - "Epoch 6708 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6708: avg_loss appended (1.3125)\n", - "Epoch 6708: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6708: accuracy appended (60.00%)\n", - "Epoch 6708: model set back to train mode\n", - "Epoch 6708: model parameters saved\n", - "Epoch 6709 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6709: avg_loss appended (1.3125)\n", - "Epoch 6709: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6709: accuracy appended (60.00%)\n", - "Epoch 6709: model set back to train mode\n", - "Epoch 6709: model parameters saved\n", - "Epoch 6710 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6710: avg_loss appended (1.3125)\n", - "Epoch 6710: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6710: accuracy appended (60.00%)\n", - "Epoch 6710: model set back to train mode\n", - "Epoch 6710: model parameters saved\n", - "Epoch 6711 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6711: avg_loss appended (1.3125)\n", - "Epoch 6711: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6711: accuracy appended (60.00%)\n", - "Epoch 6711: model set back to train mode\n", - "Epoch 6711: model parameters saved\n", - "Epoch 6712 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6712: avg_loss appended (1.3125)\n", - "Epoch 6712: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6712: accuracy appended (60.00%)\n", - "Epoch 6712: model set back to train mode\n", - "Epoch 6712: model parameters saved\n", - "Epoch 6713 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6713: avg_loss appended (1.3125)\n", - "Epoch 6713: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6713: accuracy appended (60.00%)\n", - "Epoch 6713: model set back to train mode\n", - "Epoch 6713: model parameters saved\n", - "Epoch 6714 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6714: avg_loss appended (1.3125)\n", - "Epoch 6714: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6714: accuracy appended (60.00%)\n", - "Epoch 6714: model set back to train mode\n", - "Epoch 6714: model parameters saved\n", - "Epoch 6715 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6715: avg_loss appended (1.3125)\n", - "Epoch 6715: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6715: accuracy appended (60.00%)\n", - "Epoch 6715: model set back to train mode\n", - "Epoch 6715: model parameters saved\n", - "Epoch 6716 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6716: avg_loss appended (1.3125)\n", - "Epoch 6716: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6716: accuracy appended (60.00%)\n", - "Epoch 6716: model set back to train mode\n", - "Epoch 6716: model parameters saved\n", - "Epoch 6717 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6717: avg_loss appended (1.3125)\n", - "Epoch 6717: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6717: accuracy appended (60.00%)\n", - "Epoch 6717: model set back to train mode\n", - "Epoch 6717: model parameters saved\n", - "Epoch 6718 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6718: avg_loss appended (1.3125)\n", - "Epoch 6718: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6718: accuracy appended (60.00%)\n", - "Epoch 6718: model set back to train mode\n", - "Epoch 6718: model parameters saved\n", - "Epoch 6719 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6719: avg_loss appended (1.3125)\n", - "Epoch 6719: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6719: accuracy appended (60.00%)\n", - "Epoch 6719: model set back to train mode\n", - "Epoch 6719: model parameters saved\n", - "Epoch 6720 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6720: avg_loss appended (1.3125)\n", - "Epoch 6720: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6720: accuracy appended (60.00%)\n", - "Epoch 6720: model set back to train mode\n", - "Epoch 6720: model parameters saved\n", - "Epoch 6721 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6721: avg_loss appended (1.3125)\n", - "Epoch 6721: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6721: accuracy appended (60.00%)\n", - "Epoch 6721: model set back to train mode\n", - "Epoch 6721: model parameters saved\n", - "Epoch 6722 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6722: avg_loss appended (1.3125)\n", - "Epoch 6722: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6722: accuracy appended (60.00%)\n", - "Epoch 6722: model set back to train mode\n", - "Epoch 6722: model parameters saved\n", - "Epoch 6723 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6723: avg_loss appended (1.3125)\n", - "Epoch 6723: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6723: accuracy appended (60.00%)\n", - "Epoch 6723: model set back to train mode\n", - "Epoch 6723: model parameters saved\n", - "Epoch 6724 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6724: avg_loss appended (1.3125)\n", - "Epoch 6724: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6724: accuracy appended (60.00%)\n", - "Epoch 6724: model set back to train mode\n", - "Epoch 6724: model parameters saved\n", - "Epoch 6725 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6725: avg_loss appended (1.3125)\n", - "Epoch 6725: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6725: accuracy appended (60.00%)\n", - "Epoch 6725: model set back to train mode\n", - "Epoch 6725: model parameters saved\n", - "Epoch 6726 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6726: avg_loss appended (1.3125)\n", - "Epoch 6726: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6726: accuracy appended (60.00%)\n", - "Epoch 6726: model set back to train mode\n", - "Epoch 6726: model parameters saved\n", - "Epoch 6727 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6727: avg_loss appended (1.3125)\n", - "Epoch 6727: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6727: accuracy appended (60.00%)\n", - "Epoch 6727: model set back to train mode\n", - "Epoch 6727: model parameters saved\n", - "Epoch 6728 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6728: avg_loss appended (1.3125)\n", - "Epoch 6728: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6728: accuracy appended (60.00%)\n", - "Epoch 6728: model set back to train mode\n", - "Epoch 6728: model parameters saved\n", - "Epoch 6729 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6729: avg_loss appended (1.3125)\n", - "Epoch 6729: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6729: accuracy appended (60.00%)\n", - "Epoch 6729: model set back to train mode\n", - "Epoch 6729: model parameters saved\n", - "Epoch 6730 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6730: avg_loss appended (1.3125)\n", - "Epoch 6730: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6730: accuracy appended (60.00%)\n", - "Epoch 6730: model set back to train mode\n", - "Epoch 6730: model parameters saved\n", - "Epoch 6731 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6731: avg_loss appended (1.3125)\n", - "Epoch 6731: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6731: accuracy appended (60.00%)\n", - "Epoch 6731: model set back to train mode\n", - "Epoch 6731: model parameters saved\n", - "Epoch 6732 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6732: avg_loss appended (1.3125)\n", - "Epoch 6732: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6732: accuracy appended (60.00%)\n", - "Epoch 6732: model set back to train mode\n", - "Epoch 6732: model parameters saved\n", - "Epoch 6733 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6733: avg_loss appended (1.3125)\n", - "Epoch 6733: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6733: accuracy appended (60.00%)\n", - "Epoch 6733: model set back to train mode\n", - "Epoch 6733: model parameters saved\n", - "Epoch 6734 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6734: avg_loss appended (1.3125)\n", - "Epoch 6734: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6734: accuracy appended (60.00%)\n", - "Epoch 6734: model set back to train mode\n", - "Epoch 6734: model parameters saved\n", - "Epoch 6735 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6735: avg_loss appended (1.3125)\n", - "Epoch 6735: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6735: accuracy appended (60.00%)\n", - "Epoch 6735: model set back to train mode\n", - "Epoch 6735: model parameters saved\n", - "Epoch 6736 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6736: avg_loss appended (1.3125)\n", - "Epoch 6736: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6736: accuracy appended (60.00%)\n", - "Epoch 6736: model set back to train mode\n", - "Epoch 6736: model parameters saved\n", - "Epoch 6737 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6737: avg_loss appended (1.3125)\n", - "Epoch 6737: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6737: accuracy appended (60.00%)\n", - "Epoch 6737: model set back to train mode\n", - "Epoch 6737: model parameters saved\n", - "Epoch 6738 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6738: avg_loss appended (1.3125)\n", - "Epoch 6738: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6738: accuracy appended (60.00%)\n", - "Epoch 6738: model set back to train mode\n", - "Epoch 6738: model parameters saved\n", - "Epoch 6739 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6739: avg_loss appended (1.3125)\n", - "Epoch 6739: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6739: accuracy appended (60.00%)\n", - "Epoch 6739: model set back to train mode\n", - "Epoch 6739: model parameters saved\n", - "Epoch 6740 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6740: avg_loss appended (1.3125)\n", - "Epoch 6740: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6740: accuracy appended (60.00%)\n", - "Epoch 6740: model set back to train mode\n", - "Epoch 6740: model parameters saved\n", - "Epoch 6741 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6741: avg_loss appended (1.3125)\n", - "Epoch 6741: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6741: accuracy appended (60.00%)\n", - "Epoch 6741: model set back to train mode\n", - "Epoch 6741: model parameters saved\n", - "Epoch 6742 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6742: avg_loss appended (1.3125)\n", - "Epoch 6742: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6742: accuracy appended (60.00%)\n", - "Epoch 6742: model set back to train mode\n", - "Epoch 6742: model parameters saved\n", - "Epoch 6743 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6743: avg_loss appended (1.3125)\n", - "Epoch 6743: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6743: accuracy appended (60.00%)\n", - "Epoch 6743: model set back to train mode\n", - "Epoch 6743: model parameters saved\n", - "Epoch 6744 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6744: avg_loss appended (1.3125)\n", - "Epoch 6744: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6744: accuracy appended (60.00%)\n", - "Epoch 6744: model set back to train mode\n", - "Epoch 6744: model parameters saved\n", - "Epoch 6745 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6745: avg_loss appended (1.3125)\n", - "Epoch 6745: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6745: accuracy appended (60.00%)\n", - "Epoch 6745: model set back to train mode\n", - "Epoch 6745: model parameters saved\n", - "Epoch 6746 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6746: avg_loss appended (1.3125)\n", - "Epoch 6746: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6746: accuracy appended (60.00%)\n", - "Epoch 6746: model set back to train mode\n", - "Epoch 6746: model parameters saved\n", - "Epoch 6747 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6747: avg_loss appended (1.3125)\n", - "Epoch 6747: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6747: accuracy appended (60.00%)\n", - "Epoch 6747: model set back to train mode\n", - "Epoch 6747: model parameters saved\n", - "Epoch 6748 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6748: avg_loss appended (1.3125)\n", - "Epoch 6748: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6748: accuracy appended (60.00%)\n", - "Epoch 6748: model set back to train mode\n", - "Epoch 6748: model parameters saved\n", - "Epoch 6749 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6749: avg_loss appended (1.3125)\n", - "Epoch 6749: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6749: accuracy appended (60.00%)\n", - "Epoch 6749: model set back to train mode\n", - "Epoch 6749: model parameters saved\n", - "Epoch 6750 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6750: avg_loss appended (1.3125)\n", - "Epoch 6750: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6750: accuracy appended (60.00%)\n", - "Epoch 6750: model set back to train mode\n", - "Epoch 6750: model parameters saved\n", - "Epoch 6751 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6751: avg_loss appended (1.3125)\n", - "Epoch 6751: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6751: accuracy appended (60.00%)\n", - "Epoch 6751: model set back to train mode\n", - "Epoch 6751: model parameters saved\n", - "Epoch 6752 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6752: avg_loss appended (1.3125)\n", - "Epoch 6752: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6752: accuracy appended (60.00%)\n", - "Epoch 6752: model set back to train mode\n", - "Epoch 6752: model parameters saved\n", - "Epoch 6753 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6753: avg_loss appended (1.3125)\n", - "Epoch 6753: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6753: accuracy appended (60.00%)\n", - "Epoch 6753: model set back to train mode\n", - "Epoch 6753: model parameters saved\n", - "Epoch 6754 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6754: avg_loss appended (1.3125)\n", - "Epoch 6754: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6754: accuracy appended (60.00%)\n", - "Epoch 6754: model set back to train mode\n", - "Epoch 6754: model parameters saved\n", - "Epoch 6755 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6755: avg_loss appended (1.3125)\n", - "Epoch 6755: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6755: accuracy appended (60.00%)\n", - "Epoch 6755: model set back to train mode\n", - "Epoch 6755: model parameters saved\n", - "Epoch 6756 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6756: avg_loss appended (1.3125)\n", - "Epoch 6756: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6756: accuracy appended (60.00%)\n", - "Epoch 6756: model set back to train mode\n", - "Epoch 6756: model parameters saved\n", - "Epoch 6757 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6757: avg_loss appended (1.3125)\n", - "Epoch 6757: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6757: accuracy appended (60.00%)\n", - "Epoch 6757: model set back to train mode\n", - "Epoch 6757: model parameters saved\n", - "Epoch 6758 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6758: avg_loss appended (1.3125)\n", - "Epoch 6758: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6758: accuracy appended (60.00%)\n", - "Epoch 6758: model set back to train mode\n", - "Epoch 6758: model parameters saved\n", - "Epoch 6759 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6759: avg_loss appended (1.3125)\n", - "Epoch 6759: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6759: accuracy appended (60.00%)\n", - "Epoch 6759: model set back to train mode\n", - "Epoch 6759: model parameters saved\n", - "Epoch 6760 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6760: avg_loss appended (1.3125)\n", - "Epoch 6760: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6760: accuracy appended (60.00%)\n", - "Epoch 6760: model set back to train mode\n", - "Epoch 6760: model parameters saved\n", - "Epoch 6761 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6761: avg_loss appended (1.3125)\n", - "Epoch 6761: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6761: accuracy appended (60.00%)\n", - "Epoch 6761: model set back to train mode\n", - "Epoch 6761: model parameters saved\n", - "Epoch 6762 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6762: avg_loss appended (1.3125)\n", - "Epoch 6762: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6762: accuracy appended (60.00%)\n", - "Epoch 6762: model set back to train mode\n", - "Epoch 6762: model parameters saved\n", - "Epoch 6763 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6763: avg_loss appended (1.3125)\n", - "Epoch 6763: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6763: accuracy appended (60.00%)\n", - "Epoch 6763: model set back to train mode\n", - "Epoch 6763: model parameters saved\n", - "Epoch 6764 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6764: avg_loss appended (1.3125)\n", - "Epoch 6764: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6764: accuracy appended (60.00%)\n", - "Epoch 6764: model set back to train mode\n", - "Epoch 6764: model parameters saved\n", - "Epoch 6765 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6765: avg_loss appended (1.3125)\n", - "Epoch 6765: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6765: accuracy appended (60.00%)\n", - "Epoch 6765: model set back to train mode\n", - "Epoch 6765: model parameters saved\n", - "Epoch 6766 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6766: avg_loss appended (1.3125)\n", - "Epoch 6766: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6766: accuracy appended (60.00%)\n", - "Epoch 6766: model set back to train mode\n", - "Epoch 6766: model parameters saved\n", - "Epoch 6767 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6767: avg_loss appended (1.3125)\n", - "Epoch 6767: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6767: accuracy appended (60.00%)\n", - "Epoch 6767: model set back to train mode\n", - "Epoch 6767: model parameters saved\n", - "Epoch 6768 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6768: avg_loss appended (1.3125)\n", - "Epoch 6768: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6768: accuracy appended (60.00%)\n", - "Epoch 6768: model set back to train mode\n", - "Epoch 6768: model parameters saved\n", - "Epoch 6769 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6769: avg_loss appended (1.3125)\n", - "Epoch 6769: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6769: accuracy appended (60.00%)\n", - "Epoch 6769: model set back to train mode\n", - "Epoch 6769: model parameters saved\n", - "Epoch 6770 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6770: avg_loss appended (1.3125)\n", - "Epoch 6770: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6770: accuracy appended (60.00%)\n", - "Epoch 6770: model set back to train mode\n", - "Epoch 6770: model parameters saved\n", - "Epoch 6771 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6771: avg_loss appended (1.3125)\n", - "Epoch 6771: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6771: accuracy appended (60.00%)\n", - "Epoch 6771: model set back to train mode\n", - "Epoch 6771: model parameters saved\n", - "Epoch 6772 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6772: avg_loss appended (1.3125)\n", - "Epoch 6772: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6772: accuracy appended (60.00%)\n", - "Epoch 6772: model set back to train mode\n", - "Epoch 6772: model parameters saved\n", - "Epoch 6773 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6773: avg_loss appended (1.3125)\n", - "Epoch 6773: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6773: accuracy appended (60.00%)\n", - "Epoch 6773: model set back to train mode\n", - "Epoch 6773: model parameters saved\n", - "Epoch 6774 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6774: avg_loss appended (1.3125)\n", - "Epoch 6774: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6774: accuracy appended (60.00%)\n", - "Epoch 6774: model set back to train mode\n", - "Epoch 6774: model parameters saved\n", - "Epoch 6775 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6775: avg_loss appended (1.3125)\n", - "Epoch 6775: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6775: accuracy appended (60.00%)\n", - "Epoch 6775: model set back to train mode\n", - "Epoch 6775: model parameters saved\n", - "Epoch 6776 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6776: avg_loss appended (1.3125)\n", - "Epoch 6776: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6776: accuracy appended (60.00%)\n", - "Epoch 6776: model set back to train mode\n", - "Epoch 6776: model parameters saved\n", - "Epoch 6777 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6777: avg_loss appended (1.3125)\n", - "Epoch 6777: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6777: accuracy appended (60.00%)\n", - "Epoch 6777: model set back to train mode\n", - "Epoch 6777: model parameters saved\n", - "Epoch 6778 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6778: avg_loss appended (1.3125)\n", - "Epoch 6778: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6778: accuracy appended (60.00%)\n", - "Epoch 6778: model set back to train mode\n", - "Epoch 6778: model parameters saved\n", - "Epoch 6779 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6779: avg_loss appended (1.3125)\n", - "Epoch 6779: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6779: accuracy appended (60.00%)\n", - "Epoch 6779: model set back to train mode\n", - "Epoch 6779: model parameters saved\n", - "Epoch 6780 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6780: avg_loss appended (1.3125)\n", - "Epoch 6780: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6780: accuracy appended (60.00%)\n", - "Epoch 6780: model set back to train mode\n", - "Epoch 6780: model parameters saved\n", - "Epoch 6781 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6781: avg_loss appended (1.3125)\n", - "Epoch 6781: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6781: accuracy appended (60.00%)\n", - "Epoch 6781: model set back to train mode\n", - "Epoch 6781: model parameters saved\n", - "Epoch 6782 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6782: avg_loss appended (1.3125)\n", - "Epoch 6782: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6782: accuracy appended (60.00%)\n", - "Epoch 6782: model set back to train mode\n", - "Epoch 6782: model parameters saved\n", - "Epoch 6783 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6783: avg_loss appended (1.3125)\n", - "Epoch 6783: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6783: accuracy appended (60.00%)\n", - "Epoch 6783: model set back to train mode\n", - "Epoch 6783: model parameters saved\n", - "Epoch 6784 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6784: avg_loss appended (1.3125)\n", - "Epoch 6784: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6784: accuracy appended (60.00%)\n", - "Epoch 6784: model set back to train mode\n", - "Epoch 6784: model parameters saved\n", - "Epoch 6785 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6785: avg_loss appended (1.3125)\n", - "Epoch 6785: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6785: accuracy appended (60.00%)\n", - "Epoch 6785: model set back to train mode\n", - "Epoch 6785: model parameters saved\n", - "Epoch 6786 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6786: avg_loss appended (1.3125)\n", - "Epoch 6786: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6786: accuracy appended (60.00%)\n", - "Epoch 6786: model set back to train mode\n", - "Epoch 6786: model parameters saved\n", - "Epoch 6787 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6787: avg_loss appended (1.3125)\n", - "Epoch 6787: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6787: accuracy appended (60.00%)\n", - "Epoch 6787: model set back to train mode\n", - "Epoch 6787: model parameters saved\n", - "Epoch 6788 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6788: avg_loss appended (1.3125)\n", - "Epoch 6788: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6788: accuracy appended (60.00%)\n", - "Epoch 6788: model set back to train mode\n", - "Epoch 6788: model parameters saved\n", - "Epoch 6789 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6789: avg_loss appended (1.3125)\n", - "Epoch 6789: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6789: accuracy appended (60.00%)\n", - "Epoch 6789: model set back to train mode\n", - "Epoch 6789: model parameters saved\n", - "Epoch 6790 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6790: avg_loss appended (1.3125)\n", - "Epoch 6790: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6790: accuracy appended (60.00%)\n", - "Epoch 6790: model set back to train mode\n", - "Epoch 6790: model parameters saved\n", - "Epoch 6791 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6791: avg_loss appended (1.3125)\n", - "Epoch 6791: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6791: accuracy appended (60.00%)\n", - "Epoch 6791: model set back to train mode\n", - "Epoch 6791: model parameters saved\n", - "Epoch 6792 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6792: avg_loss appended (1.3125)\n", - "Epoch 6792: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6792: accuracy appended (60.00%)\n", - "Epoch 6792: model set back to train mode\n", - "Epoch 6792: model parameters saved\n", - "Epoch 6793 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6793: avg_loss appended (1.3125)\n", - "Epoch 6793: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6793: accuracy appended (60.00%)\n", - "Epoch 6793: model set back to train mode\n", - "Epoch 6793: model parameters saved\n", - "Epoch 6794 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6794: avg_loss appended (1.3125)\n", - "Epoch 6794: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6794: accuracy appended (60.00%)\n", - "Epoch 6794: model set back to train mode\n", - "Epoch 6794: model parameters saved\n", - "Epoch 6795 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6795: avg_loss appended (1.3125)\n", - "Epoch 6795: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6795: accuracy appended (60.00%)\n", - "Epoch 6795: model set back to train mode\n", - "Epoch 6795: model parameters saved\n", - "Epoch 6796 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6796: avg_loss appended (1.3125)\n", - "Epoch 6796: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6796: accuracy appended (60.00%)\n", - "Epoch 6796: model set back to train mode\n", - "Epoch 6796: model parameters saved\n", - "Epoch 6797 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6797: avg_loss appended (1.3125)\n", - "Epoch 6797: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6797: accuracy appended (60.00%)\n", - "Epoch 6797: model set back to train mode\n", - "Epoch 6797: model parameters saved\n", - "Epoch 6798 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6798: avg_loss appended (1.3125)\n", - "Epoch 6798: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6798: accuracy appended (60.00%)\n", - "Epoch 6798: model set back to train mode\n", - "Epoch 6798: model parameters saved\n", - "Epoch 6799 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6799: avg_loss appended (1.3125)\n", - "Epoch 6799: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6799: accuracy appended (60.00%)\n", - "Epoch 6799: model set back to train mode\n", - "Epoch 6799: model parameters saved\n", - "Epoch 6800 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6800: avg_loss appended (1.3125)\n", - "Epoch 6800: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6800: accuracy appended (60.00%)\n", - "Epoch 6800: model set back to train mode\n", - "Epoch 6800: model parameters saved\n", - "Epoch 6800/10000, Loss: 1.3125, Accuracy: 60.00%\n", - "Epoch 6801 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6801: avg_loss appended (1.3125)\n", - "Epoch 6801: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6801: accuracy appended (60.00%)\n", - "Epoch 6801: model set back to train mode\n", - "Epoch 6801: model parameters saved\n", - "Epoch 6802 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6802: avg_loss appended (1.3125)\n", - "Epoch 6802: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6802: accuracy appended (60.00%)\n", - "Epoch 6802: model set back to train mode\n", - "Epoch 6802: model parameters saved\n", - "Epoch 6803 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6803: avg_loss appended (1.3125)\n", - "Epoch 6803: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6803: accuracy appended (60.00%)\n", - "Epoch 6803: model set back to train mode\n", - "Epoch 6803: model parameters saved\n", - "Epoch 6804 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6804: avg_loss appended (1.3125)\n", - "Epoch 6804: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6804: accuracy appended (60.00%)\n", - "Epoch 6804: model set back to train mode\n", - "Epoch 6804: model parameters saved\n", - "Epoch 6805 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6805: avg_loss appended (1.3125)\n", - "Epoch 6805: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6805: accuracy appended (60.00%)\n", - "Epoch 6805: model set back to train mode\n", - "Epoch 6805: model parameters saved\n", - "Epoch 6806 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6806: avg_loss appended (1.3125)\n", - "Epoch 6806: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6806: accuracy appended (60.00%)\n", - "Epoch 6806: model set back to train mode\n", - "Epoch 6806: model parameters saved\n", - "Epoch 6807 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6807: avg_loss appended (1.3125)\n", - "Epoch 6807: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6807: accuracy appended (60.00%)\n", - "Epoch 6807: model set back to train mode\n", - "Epoch 6807: model parameters saved\n", - "Epoch 6808 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6808: avg_loss appended (1.3125)\n", - "Epoch 6808: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6808: accuracy appended (60.00%)\n", - "Epoch 6808: model set back to train mode\n", - "Epoch 6808: model parameters saved\n", - "Epoch 6809 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6809: avg_loss appended (1.3125)\n", - "Epoch 6809: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6809: accuracy appended (60.00%)\n", - "Epoch 6809: model set back to train mode\n", - "Epoch 6809: model parameters saved\n", - "Epoch 6810 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6810: avg_loss appended (1.3125)\n", - "Epoch 6810: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6810: accuracy appended (60.00%)\n", - "Epoch 6810: model set back to train mode\n", - "Epoch 6810: model parameters saved\n", - "Epoch 6811 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6811: avg_loss appended (1.3125)\n", - "Epoch 6811: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6811: accuracy appended (60.00%)\n", - "Epoch 6811: model set back to train mode\n", - "Epoch 6811: model parameters saved\n", - "Epoch 6812 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6812: avg_loss appended (1.3125)\n", - "Epoch 6812: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6812: accuracy appended (60.00%)\n", - "Epoch 6812: model set back to train mode\n", - "Epoch 6812: model parameters saved\n", - "Epoch 6813 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6813: avg_loss appended (1.3125)\n", - "Epoch 6813: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6813: accuracy appended (60.00%)\n", - "Epoch 6813: model set back to train mode\n", - "Epoch 6813: model parameters saved\n", - "Epoch 6814 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6814: avg_loss appended (1.3125)\n", - "Epoch 6814: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6814: accuracy appended (60.00%)\n", - "Epoch 6814: model set back to train mode\n", - "Epoch 6814: model parameters saved\n", - "Epoch 6815 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6815: avg_loss appended (1.3125)\n", - "Epoch 6815: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6815: accuracy appended (60.00%)\n", - "Epoch 6815: model set back to train mode\n", - "Epoch 6815: model parameters saved\n", - "Epoch 6816 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6816: avg_loss appended (1.3125)\n", - "Epoch 6816: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6816: accuracy appended (60.00%)\n", - "Epoch 6816: model set back to train mode\n", - "Epoch 6816: model parameters saved\n", - "Epoch 6817 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6817: avg_loss appended (1.3125)\n", - "Epoch 6817: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6817: accuracy appended (60.00%)\n", - "Epoch 6817: model set back to train mode\n", - "Epoch 6817: model parameters saved\n", - "Epoch 6818 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6818: avg_loss appended (1.3125)\n", - "Epoch 6818: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6818: accuracy appended (60.00%)\n", - "Epoch 6818: model set back to train mode\n", - "Epoch 6818: model parameters saved\n", - "Epoch 6819 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6819: avg_loss appended (1.3125)\n", - "Epoch 6819: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6819: accuracy appended (60.00%)\n", - "Epoch 6819: model set back to train mode\n", - "Epoch 6819: model parameters saved\n", - "Epoch 6820 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6820: avg_loss appended (1.3125)\n", - "Epoch 6820: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6820: accuracy appended (60.00%)\n", - "Epoch 6820: model set back to train mode\n", - "Epoch 6820: model parameters saved\n", - "Epoch 6821 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6821: avg_loss appended (1.3125)\n", - "Epoch 6821: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6821: accuracy appended (60.00%)\n", - "Epoch 6821: model set back to train mode\n", - "Epoch 6821: model parameters saved\n", - "Epoch 6822 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6822: avg_loss appended (1.3125)\n", - "Epoch 6822: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6822: accuracy appended (60.00%)\n", - "Epoch 6822: model set back to train mode\n", - "Epoch 6822: model parameters saved\n", - "Epoch 6823 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6823: avg_loss appended (1.3125)\n", - "Epoch 6823: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6823: accuracy appended (60.00%)\n", - "Epoch 6823: model set back to train mode\n", - "Epoch 6823: model parameters saved\n", - "Epoch 6824 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6824: avg_loss appended (1.3125)\n", - "Epoch 6824: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6824: accuracy appended (60.00%)\n", - "Epoch 6824: model set back to train mode\n", - "Epoch 6824: model parameters saved\n", - "Epoch 6825 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6825: avg_loss appended (1.3125)\n", - "Epoch 6825: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6825: accuracy appended (60.00%)\n", - "Epoch 6825: model set back to train mode\n", - "Epoch 6825: model parameters saved\n", - "Epoch 6826 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6826: avg_loss appended (1.3125)\n", - "Epoch 6826: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6826: accuracy appended (60.00%)\n", - "Epoch 6826: model set back to train mode\n", - "Epoch 6826: model parameters saved\n", - "Epoch 6827 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6827: avg_loss appended (1.3125)\n", - "Epoch 6827: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6827: accuracy appended (60.00%)\n", - "Epoch 6827: model set back to train mode\n", - "Epoch 6827: model parameters saved\n", - "Epoch 6828 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6828: avg_loss appended (1.3125)\n", - "Epoch 6828: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6828: accuracy appended (60.00%)\n", - "Epoch 6828: model set back to train mode\n", - "Epoch 6828: model parameters saved\n", - "Epoch 6829 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6829: avg_loss appended (1.3125)\n", - "Epoch 6829: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6829: accuracy appended (60.00%)\n", - "Epoch 6829: model set back to train mode\n", - "Epoch 6829: model parameters saved\n", - "Epoch 6830 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6830: avg_loss appended (1.3125)\n", - "Epoch 6830: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6830: accuracy appended (60.00%)\n", - "Epoch 6830: model set back to train mode\n", - "Epoch 6830: model parameters saved\n", - "Epoch 6831 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6831: avg_loss appended (1.3125)\n", - "Epoch 6831: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6831: accuracy appended (60.00%)\n", - "Epoch 6831: model set back to train mode\n", - "Epoch 6831: model parameters saved\n", - "Epoch 6832 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6832: avg_loss appended (1.3125)\n", - "Epoch 6832: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6832: accuracy appended (60.00%)\n", - "Epoch 6832: model set back to train mode\n", - "Epoch 6832: model parameters saved\n", - "Epoch 6833 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6833: avg_loss appended (1.3125)\n", - "Epoch 6833: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6833: accuracy appended (60.00%)\n", - "Epoch 6833: model set back to train mode\n", - "Epoch 6833: model parameters saved\n", - "Epoch 6834 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6834: avg_loss appended (1.3125)\n", - "Epoch 6834: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6834: accuracy appended (60.00%)\n", - "Epoch 6834: model set back to train mode\n", - "Epoch 6834: model parameters saved\n", - "Epoch 6835 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6835: avg_loss appended (1.3125)\n", - "Epoch 6835: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6835: accuracy appended (60.00%)\n", - "Epoch 6835: model set back to train mode\n", - "Epoch 6835: model parameters saved\n", - "Epoch 6836 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6836: avg_loss appended (1.3125)\n", - "Epoch 6836: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6836: accuracy appended (60.00%)\n", - "Epoch 6836: model set back to train mode\n", - "Epoch 6836: model parameters saved\n", - "Epoch 6837 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6837: avg_loss appended (1.3125)\n", - "Epoch 6837: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6837: accuracy appended (60.00%)\n", - "Epoch 6837: model set back to train mode\n", - "Epoch 6837: model parameters saved\n", - "Epoch 6838 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6838: avg_loss appended (1.3125)\n", - "Epoch 6838: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6838: accuracy appended (60.00%)\n", - "Epoch 6838: model set back to train mode\n", - "Epoch 6838: model parameters saved\n", - "Epoch 6839 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6839: avg_loss appended (1.3125)\n", - "Epoch 6839: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6839: accuracy appended (60.00%)\n", - "Epoch 6839: model set back to train mode\n", - "Epoch 6839: model parameters saved\n", - "Epoch 6840 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6840: avg_loss appended (1.3125)\n", - "Epoch 6840: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6840: accuracy appended (60.00%)\n", - "Epoch 6840: model set back to train mode\n", - "Epoch 6840: model parameters saved\n", - "Epoch 6841 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6841: avg_loss appended (1.3125)\n", - "Epoch 6841: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6841: accuracy appended (60.00%)\n", - "Epoch 6841: model set back to train mode\n", - "Epoch 6841: model parameters saved\n", - "Epoch 6842 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6842: avg_loss appended (1.3125)\n", - "Epoch 6842: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6842: accuracy appended (60.00%)\n", - "Epoch 6842: model set back to train mode\n", - "Epoch 6842: model parameters saved\n", - "Epoch 6843 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6843: avg_loss appended (1.3125)\n", - "Epoch 6843: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6843: accuracy appended (60.00%)\n", - "Epoch 6843: model set back to train mode\n", - "Epoch 6843: model parameters saved\n", - "Epoch 6844 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6844: avg_loss appended (1.3125)\n", - "Epoch 6844: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6844: accuracy appended (60.00%)\n", - "Epoch 6844: model set back to train mode\n", - "Epoch 6844: model parameters saved\n", - "Epoch 6845 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6845: avg_loss appended (1.3125)\n", - "Epoch 6845: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6845: accuracy appended (60.00%)\n", - "Epoch 6845: model set back to train mode\n", - "Epoch 6845: model parameters saved\n", - "Epoch 6846 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6846: avg_loss appended (1.3125)\n", - "Epoch 6846: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6846: accuracy appended (60.00%)\n", - "Epoch 6846: model set back to train mode\n", - "Epoch 6846: model parameters saved\n", - "Epoch 6847 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6847: avg_loss appended (1.3125)\n", - "Epoch 6847: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6847: accuracy appended (60.00%)\n", - "Epoch 6847: model set back to train mode\n", - "Epoch 6847: model parameters saved\n", - "Epoch 6848 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6848: avg_loss appended (1.3125)\n", - "Epoch 6848: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6848: accuracy appended (60.00%)\n", - "Epoch 6848: model set back to train mode\n", - "Epoch 6848: model parameters saved\n", - "Epoch 6849 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6849: avg_loss appended (1.3125)\n", - "Epoch 6849: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6849: accuracy appended (60.00%)\n", - "Epoch 6849: model set back to train mode\n", - "Epoch 6849: model parameters saved\n", - "Epoch 6850 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6850: avg_loss appended (1.3125)\n", - "Epoch 6850: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6850: accuracy appended (60.00%)\n", - "Epoch 6850: model set back to train mode\n", - "Epoch 6850: model parameters saved\n", - "Epoch 6851 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6851: avg_loss appended (1.3125)\n", - "Epoch 6851: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6851: accuracy appended (60.00%)\n", - "Epoch 6851: model set back to train mode\n", - "Epoch 6851: model parameters saved\n", - "Epoch 6852 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6852: avg_loss appended (1.3125)\n", - "Epoch 6852: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6852: accuracy appended (60.00%)\n", - "Epoch 6852: model set back to train mode\n", - "Epoch 6852: model parameters saved\n", - "Epoch 6853 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6853: avg_loss appended (1.3125)\n", - "Epoch 6853: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6853: accuracy appended (60.00%)\n", - "Epoch 6853: model set back to train mode\n", - "Epoch 6853: model parameters saved\n", - "Epoch 6854 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6854: avg_loss appended (1.3125)\n", - "Epoch 6854: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6854: accuracy appended (60.00%)\n", - "Epoch 6854: model set back to train mode\n", - "Epoch 6854: model parameters saved\n", - "Epoch 6855 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6855: avg_loss appended (1.3125)\n", - "Epoch 6855: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6855: accuracy appended (60.00%)\n", - "Epoch 6855: model set back to train mode\n", - "Epoch 6855: model parameters saved\n", - "Epoch 6856 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6856: avg_loss appended (1.3125)\n", - "Epoch 6856: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6856: accuracy appended (60.00%)\n", - "Epoch 6856: model set back to train mode\n", - "Epoch 6856: model parameters saved\n", - "Epoch 6857 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6857: avg_loss appended (1.3125)\n", - "Epoch 6857: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6857: accuracy appended (60.00%)\n", - "Epoch 6857: model set back to train mode\n", - "Epoch 6857: model parameters saved\n", - "Epoch 6858 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6858: avg_loss appended (1.3125)\n", - "Epoch 6858: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6858: accuracy appended (60.00%)\n", - "Epoch 6858: model set back to train mode\n", - "Epoch 6858: model parameters saved\n", - "Epoch 6859 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6859: avg_loss appended (1.3125)\n", - "Epoch 6859: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6859: accuracy appended (60.00%)\n", - "Epoch 6859: model set back to train mode\n", - "Epoch 6859: model parameters saved\n", - "Epoch 6860 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6860: avg_loss appended (1.3125)\n", - "Epoch 6860: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6860: accuracy appended (60.00%)\n", - "Epoch 6860: model set back to train mode\n", - "Epoch 6860: model parameters saved\n", - "Epoch 6861 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6861: avg_loss appended (1.3125)\n", - "Epoch 6861: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6861: accuracy appended (60.00%)\n", - "Epoch 6861: model set back to train mode\n", - "Epoch 6861: model parameters saved\n", - "Epoch 6862 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6862: avg_loss appended (1.3125)\n", - "Epoch 6862: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6862: accuracy appended (60.00%)\n", - "Epoch 6862: model set back to train mode\n", - "Epoch 6862: model parameters saved\n", - "Epoch 6863 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6863: avg_loss appended (1.3125)\n", - "Epoch 6863: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6863: accuracy appended (60.00%)\n", - "Epoch 6863: model set back to train mode\n", - "Epoch 6863: model parameters saved\n", - "Epoch 6864 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6864: avg_loss appended (1.3125)\n", - "Epoch 6864: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6864: accuracy appended (60.00%)\n", - "Epoch 6864: model set back to train mode\n", - "Epoch 6864: model parameters saved\n", - "Epoch 6865 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6865: avg_loss appended (1.3125)\n", - "Epoch 6865: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6865: accuracy appended (60.00%)\n", - "Epoch 6865: model set back to train mode\n", - "Epoch 6865: model parameters saved\n", - "Epoch 6866 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6866: avg_loss appended (1.3125)\n", - "Epoch 6866: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6866: accuracy appended (60.00%)\n", - "Epoch 6866: model set back to train mode\n", - "Epoch 6866: model parameters saved\n", - "Epoch 6867 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6867: avg_loss appended (1.3125)\n", - "Epoch 6867: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6867: accuracy appended (60.00%)\n", - "Epoch 6867: model set back to train mode\n", - "Epoch 6867: model parameters saved\n", - "Epoch 6868 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6868: avg_loss appended (1.3125)\n", - "Epoch 6868: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6868: accuracy appended (60.00%)\n", - "Epoch 6868: model set back to train mode\n", - "Epoch 6868: model parameters saved\n", - "Epoch 6869 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6869: avg_loss appended (1.3125)\n", - "Epoch 6869: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6869: accuracy appended (60.00%)\n", - "Epoch 6869: model set back to train mode\n", - "Epoch 6869: model parameters saved\n", - "Epoch 6870 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6870: avg_loss appended (1.3125)\n", - "Epoch 6870: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6870: accuracy appended (60.00%)\n", - "Epoch 6870: model set back to train mode\n", - "Epoch 6870: model parameters saved\n", - "Epoch 6871 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6871: avg_loss appended (1.3125)\n", - "Epoch 6871: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6871: accuracy appended (60.00%)\n", - "Epoch 6871: model set back to train mode\n", - "Epoch 6871: model parameters saved\n", - "Epoch 6872 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6872: avg_loss appended (1.3125)\n", - "Epoch 6872: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6872: accuracy appended (60.00%)\n", - "Epoch 6872: model set back to train mode\n", - "Epoch 6872: model parameters saved\n", - "Epoch 6873 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6873: avg_loss appended (1.3125)\n", - "Epoch 6873: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6873: accuracy appended (60.00%)\n", - "Epoch 6873: model set back to train mode\n", - "Epoch 6873: model parameters saved\n", - "Epoch 6874 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6874: avg_loss appended (1.3125)\n", - "Epoch 6874: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6874: accuracy appended (60.00%)\n", - "Epoch 6874: model set back to train mode\n", - "Epoch 6874: model parameters saved\n", - "Epoch 6875 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6875: avg_loss appended (1.3125)\n", - "Epoch 6875: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6875: accuracy appended (60.00%)\n", - "Epoch 6875: model set back to train mode\n", - "Epoch 6875: model parameters saved\n", - "Epoch 6876 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6876: avg_loss appended (1.3125)\n", - "Epoch 6876: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6876: accuracy appended (60.00%)\n", - "Epoch 6876: model set back to train mode\n", - "Epoch 6876: model parameters saved\n", - "Epoch 6877 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6877: avg_loss appended (1.3125)\n", - "Epoch 6877: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6877: accuracy appended (60.00%)\n", - "Epoch 6877: model set back to train mode\n", - "Epoch 6877: model parameters saved\n", - "Epoch 6878 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6878: avg_loss appended (1.3125)\n", - "Epoch 6878: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6878: accuracy appended (60.00%)\n", - "Epoch 6878: model set back to train mode\n", - "Epoch 6878: model parameters saved\n", - "Epoch 6879 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6879: avg_loss appended (1.3125)\n", - "Epoch 6879: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6879: accuracy appended (60.00%)\n", - "Epoch 6879: model set back to train mode\n", - "Epoch 6879: model parameters saved\n", - "Epoch 6880 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6880: avg_loss appended (1.3125)\n", - "Epoch 6880: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6880: accuracy appended (60.00%)\n", - "Epoch 6880: model set back to train mode\n", - "Epoch 6880: model parameters saved\n", - "Epoch 6881 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6881: avg_loss appended (1.3125)\n", - "Epoch 6881: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6881: accuracy appended (60.00%)\n", - "Epoch 6881: model set back to train mode\n", - "Epoch 6881: model parameters saved\n", - "Epoch 6882 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6882: avg_loss appended (1.3125)\n", - "Epoch 6882: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6882: accuracy appended (60.00%)\n", - "Epoch 6882: model set back to train mode\n", - "Epoch 6882: model parameters saved\n", - "Epoch 6883 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6883: avg_loss appended (1.3125)\n", - "Epoch 6883: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6883: accuracy appended (60.00%)\n", - "Epoch 6883: model set back to train mode\n", - "Epoch 6883: model parameters saved\n", - "Epoch 6884 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6884: avg_loss appended (1.3125)\n", - "Epoch 6884: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6884: accuracy appended (60.00%)\n", - "Epoch 6884: model set back to train mode\n", - "Epoch 6884: model parameters saved\n", - "Epoch 6885 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6885: avg_loss appended (1.3125)\n", - "Epoch 6885: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6885: accuracy appended (60.00%)\n", - "Epoch 6885: model set back to train mode\n", - "Epoch 6885: model parameters saved\n", - "Epoch 6886 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6886: avg_loss appended (1.3125)\n", - "Epoch 6886: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6886: accuracy appended (60.00%)\n", - "Epoch 6886: model set back to train mode\n", - "Epoch 6886: model parameters saved\n", - "Epoch 6887 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6887: avg_loss appended (1.3125)\n", - "Epoch 6887: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6887: accuracy appended (60.00%)\n", - "Epoch 6887: model set back to train mode\n", - "Epoch 6887: model parameters saved\n", - "Epoch 6888 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6888: avg_loss appended (1.3125)\n", - "Epoch 6888: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6888: accuracy appended (60.00%)\n", - "Epoch 6888: model set back to train mode\n", - "Epoch 6888: model parameters saved\n", - "Epoch 6889 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6889: avg_loss appended (1.3125)\n", - "Epoch 6889: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6889: accuracy appended (60.00%)\n", - "Epoch 6889: model set back to train mode\n", - "Epoch 6889: model parameters saved\n", - "Epoch 6890 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6890: avg_loss appended (1.3125)\n", - "Epoch 6890: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6890: accuracy appended (60.00%)\n", - "Epoch 6890: model set back to train mode\n", - "Epoch 6890: model parameters saved\n", - "Epoch 6891 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6891: avg_loss appended (1.3125)\n", - "Epoch 6891: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6891: accuracy appended (60.00%)\n", - "Epoch 6891: model set back to train mode\n", - "Epoch 6891: model parameters saved\n", - "Epoch 6892 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6892: avg_loss appended (1.3125)\n", - "Epoch 6892: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6892: accuracy appended (60.00%)\n", - "Epoch 6892: model set back to train mode\n", - "Epoch 6892: model parameters saved\n", - "Epoch 6893 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6893: avg_loss appended (1.3125)\n", - "Epoch 6893: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6893: accuracy appended (60.00%)\n", - "Epoch 6893: model set back to train mode\n", - "Epoch 6893: model parameters saved\n", - "Epoch 6894 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6894: avg_loss appended (1.3125)\n", - "Epoch 6894: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6894: accuracy appended (60.00%)\n", - "Epoch 6894: model set back to train mode\n", - "Epoch 6894: model parameters saved\n", - "Epoch 6895 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6895: avg_loss appended (1.3125)\n", - "Epoch 6895: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=236, total=400)\n", - "Final test accuracy: 59.00%\n", - "Epoch 6895: accuracy appended (59.00%)\n", - "Epoch 6895: model set back to train mode\n", - "Epoch 6895: model parameters saved\n", - "Epoch 6896 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6896: avg_loss appended (1.3125)\n", - "Epoch 6896: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6896: accuracy appended (60.00%)\n", - "Epoch 6896: model set back to train mode\n", - "Epoch 6896: model parameters saved\n", - "Epoch 6897 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6897: avg_loss appended (1.3125)\n", - "Epoch 6897: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6897: accuracy appended (60.00%)\n", - "Epoch 6897: model set back to train mode\n", - "Epoch 6897: model parameters saved\n", - "Epoch 6898 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6898: avg_loss appended (1.3125)\n", - "Epoch 6898: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6898: accuracy appended (60.00%)\n", - "Epoch 6898: model set back to train mode\n", - "Epoch 6898: model parameters saved\n", - "Epoch 6899 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6899: avg_loss appended (1.3125)\n", - "Epoch 6899: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6899: accuracy appended (60.00%)\n", - "Epoch 6899: model set back to train mode\n", - "Epoch 6899: model parameters saved\n", - "Epoch 6900 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6900: avg_loss appended (1.3125)\n", - "Epoch 6900: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6900: accuracy appended (60.00%)\n", - "Epoch 6900: model set back to train mode\n", - "Epoch 6900: model parameters saved\n", - "Epoch 6900/10000, Loss: 1.3125, Accuracy: 60.00%\n", - "Epoch 6901 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6901: avg_loss appended (1.3125)\n", - "Epoch 6901: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6901: accuracy appended (60.00%)\n", - "Epoch 6901: model set back to train mode\n", - "Epoch 6901: model parameters saved\n", - "Epoch 6902 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6902: avg_loss appended (1.3125)\n", - "Epoch 6902: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6902: accuracy appended (60.00%)\n", - "Epoch 6902: model set back to train mode\n", - "Epoch 6902: model parameters saved\n", - "Epoch 6903 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6903: avg_loss appended (1.3125)\n", - "Epoch 6903: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6903: accuracy appended (60.00%)\n", - "Epoch 6903: model set back to train mode\n", - "Epoch 6903: model parameters saved\n", - "Epoch 6904 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6904: avg_loss appended (1.3125)\n", - "Epoch 6904: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6904: accuracy appended (60.00%)\n", - "Epoch 6904: model set back to train mode\n", - "Epoch 6904: model parameters saved\n", - "Epoch 6905 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6905: avg_loss appended (1.3125)\n", - "Epoch 6905: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6905: accuracy appended (60.00%)\n", - "Epoch 6905: model set back to train mode\n", - "Epoch 6905: model parameters saved\n", - "Epoch 6906 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6906: avg_loss appended (1.3125)\n", - "Epoch 6906: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6906: accuracy appended (60.00%)\n", - "Epoch 6906: model set back to train mode\n", - "Epoch 6906: model parameters saved\n", - "Epoch 6907 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6907: avg_loss appended (1.3125)\n", - "Epoch 6907: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6907: accuracy appended (60.00%)\n", - "Epoch 6907: model set back to train mode\n", - "Epoch 6907: model parameters saved\n", - "Epoch 6908 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6908: avg_loss appended (1.3125)\n", - "Epoch 6908: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6908: accuracy appended (60.00%)\n", - "Epoch 6908: model set back to train mode\n", - "Epoch 6908: model parameters saved\n", - "Epoch 6909 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6909: avg_loss appended (1.3125)\n", - "Epoch 6909: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6909: accuracy appended (60.00%)\n", - "Epoch 6909: model set back to train mode\n", - "Epoch 6909: model parameters saved\n", - "Epoch 6910 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6910: avg_loss appended (1.3125)\n", - "Epoch 6910: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6910: accuracy appended (60.00%)\n", - "Epoch 6910: model set back to train mode\n", - "Epoch 6910: model parameters saved\n", - "Epoch 6911 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6911: avg_loss appended (1.3125)\n", - "Epoch 6911: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6911: accuracy appended (60.00%)\n", - "Epoch 6911: model set back to train mode\n", - "Epoch 6911: model parameters saved\n", - "Epoch 6912 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6912: avg_loss appended (1.3125)\n", - "Epoch 6912: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6912: accuracy appended (60.00%)\n", - "Epoch 6912: model set back to train mode\n", - "Epoch 6912: model parameters saved\n", - "Epoch 6913 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6913: avg_loss appended (1.3125)\n", - "Epoch 6913: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6913: accuracy appended (60.00%)\n", - "Epoch 6913: model set back to train mode\n", - "Epoch 6913: model parameters saved\n", - "Epoch 6914 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6914: avg_loss appended (1.3125)\n", - "Epoch 6914: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6914: accuracy appended (60.00%)\n", - "Epoch 6914: model set back to train mode\n", - "Epoch 6914: model parameters saved\n", - "Epoch 6915 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6915: avg_loss appended (1.3125)\n", - "Epoch 6915: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6915: accuracy appended (60.00%)\n", - "Epoch 6915: model set back to train mode\n", - "Epoch 6915: model parameters saved\n", - "Epoch 6916 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6916: avg_loss appended (1.3125)\n", - "Epoch 6916: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6916: accuracy appended (60.00%)\n", - "Epoch 6916: model set back to train mode\n", - "Epoch 6916: model parameters saved\n", - "Epoch 6917 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6917: avg_loss appended (1.3125)\n", - "Epoch 6917: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6917: accuracy appended (60.00%)\n", - "Epoch 6917: model set back to train mode\n", - "Epoch 6917: model parameters saved\n", - "Epoch 6918 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6918: avg_loss appended (1.3125)\n", - "Epoch 6918: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6918: accuracy appended (60.00%)\n", - "Epoch 6918: model set back to train mode\n", - "Epoch 6918: model parameters saved\n", - "Epoch 6919 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6919: avg_loss appended (1.3125)\n", - "Epoch 6919: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6919: accuracy appended (60.00%)\n", - "Epoch 6919: model set back to train mode\n", - "Epoch 6919: model parameters saved\n", - "Epoch 6920 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6920: avg_loss appended (1.3125)\n", - "Epoch 6920: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6920: accuracy appended (60.00%)\n", - "Epoch 6920: model set back to train mode\n", - "Epoch 6920: model parameters saved\n", - "Epoch 6921 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6921: avg_loss appended (1.3125)\n", - "Epoch 6921: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6921: accuracy appended (60.00%)\n", - "Epoch 6921: model set back to train mode\n", - "Epoch 6921: model parameters saved\n", - "Epoch 6922 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6922: avg_loss appended (1.3125)\n", - "Epoch 6922: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6922: accuracy appended (60.00%)\n", - "Epoch 6922: model set back to train mode\n", - "Epoch 6922: model parameters saved\n", - "Epoch 6923 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6923: avg_loss appended (1.3125)\n", - "Epoch 6923: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6923: accuracy appended (60.00%)\n", - "Epoch 6923: model set back to train mode\n", - "Epoch 6923: model parameters saved\n", - "Epoch 6924 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6924: avg_loss appended (1.3125)\n", - "Epoch 6924: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6924: accuracy appended (60.00%)\n", - "Epoch 6924: model set back to train mode\n", - "Epoch 6924: model parameters saved\n", - "Epoch 6925 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6925: avg_loss appended (1.3125)\n", - "Epoch 6925: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6925: accuracy appended (60.00%)\n", - "Epoch 6925: model set back to train mode\n", - "Epoch 6925: model parameters saved\n", - "Epoch 6926 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6926: avg_loss appended (1.3125)\n", - "Epoch 6926: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6926: accuracy appended (60.00%)\n", - "Epoch 6926: model set back to train mode\n", - "Epoch 6926: model parameters saved\n", - "Epoch 6927 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6927: avg_loss appended (1.3125)\n", - "Epoch 6927: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6927: accuracy appended (60.00%)\n", - "Epoch 6927: model set back to train mode\n", - "Epoch 6927: model parameters saved\n", - "Epoch 6928 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6928: avg_loss appended (1.3125)\n", - "Epoch 6928: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6928: accuracy appended (60.00%)\n", - "Epoch 6928: model set back to train mode\n", - "Epoch 6928: model parameters saved\n", - "Epoch 6929 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6929: avg_loss appended (1.3125)\n", - "Epoch 6929: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6929: accuracy appended (60.00%)\n", - "Epoch 6929: model set back to train mode\n", - "Epoch 6929: model parameters saved\n", - "Epoch 6930 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6930: avg_loss appended (1.3125)\n", - "Epoch 6930: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6930: accuracy appended (60.00%)\n", - "Epoch 6930: model set back to train mode\n", - "Epoch 6930: model parameters saved\n", - "Epoch 6931 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6931: avg_loss appended (1.3125)\n", - "Epoch 6931: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6931: accuracy appended (60.00%)\n", - "Epoch 6931: model set back to train mode\n", - "Epoch 6931: model parameters saved\n", - "Epoch 6932 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6932: avg_loss appended (1.3125)\n", - "Epoch 6932: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6932: accuracy appended (60.00%)\n", - "Epoch 6932: model set back to train mode\n", - "Epoch 6932: model parameters saved\n", - "Epoch 6933 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6933: avg_loss appended (1.3125)\n", - "Epoch 6933: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6933: accuracy appended (60.00%)\n", - "Epoch 6933: model set back to train mode\n", - "Epoch 6933: model parameters saved\n", - "Epoch 6934 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6934: avg_loss appended (1.3125)\n", - "Epoch 6934: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6934: accuracy appended (60.00%)\n", - "Epoch 6934: model set back to train mode\n", - "Epoch 6934: model parameters saved\n", - "Epoch 6935 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6935: avg_loss appended (1.3125)\n", - "Epoch 6935: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6935: accuracy appended (60.00%)\n", - "Epoch 6935: model set back to train mode\n", - "Epoch 6935: model parameters saved\n", - "Epoch 6936 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6936: avg_loss appended (1.3125)\n", - "Epoch 6936: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6936: accuracy appended (60.00%)\n", - "Epoch 6936: model set back to train mode\n", - "Epoch 6936: model parameters saved\n", - "Epoch 6937 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6937: avg_loss appended (1.3125)\n", - "Epoch 6937: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6937: accuracy appended (60.00%)\n", - "Epoch 6937: model set back to train mode\n", - "Epoch 6937: model parameters saved\n", - "Epoch 6938 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6938: avg_loss appended (1.3125)\n", - "Epoch 6938: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6938: accuracy appended (60.00%)\n", - "Epoch 6938: model set back to train mode\n", - "Epoch 6938: model parameters saved\n", - "Epoch 6939 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6939: avg_loss appended (1.3125)\n", - "Epoch 6939: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6939: accuracy appended (60.00%)\n", - "Epoch 6939: model set back to train mode\n", - "Epoch 6939: model parameters saved\n", - "Epoch 6940 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6940: avg_loss appended (1.3125)\n", - "Epoch 6940: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6940: accuracy appended (60.00%)\n", - "Epoch 6940: model set back to train mode\n", - "Epoch 6940: model parameters saved\n", - "Epoch 6941 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6941: avg_loss appended (1.3125)\n", - "Epoch 6941: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6941: accuracy appended (60.00%)\n", - "Epoch 6941: model set back to train mode\n", - "Epoch 6941: model parameters saved\n", - "Epoch 6942 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6942: avg_loss appended (1.3125)\n", - "Epoch 6942: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6942: accuracy appended (60.00%)\n", - "Epoch 6942: model set back to train mode\n", - "Epoch 6942: model parameters saved\n", - "Epoch 6943 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6943: avg_loss appended (1.3125)\n", - "Epoch 6943: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6943: accuracy appended (60.00%)\n", - "Epoch 6943: model set back to train mode\n", - "Epoch 6943: model parameters saved\n", - "Epoch 6944 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6944: avg_loss appended (1.3125)\n", - "Epoch 6944: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6944: accuracy appended (60.00%)\n", - "Epoch 6944: model set back to train mode\n", - "Epoch 6944: model parameters saved\n", - "Epoch 6945 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6945: avg_loss appended (1.3125)\n", - "Epoch 6945: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6945: accuracy appended (60.00%)\n", - "Epoch 6945: model set back to train mode\n", - "Epoch 6945: model parameters saved\n", - "Epoch 6946 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6946: avg_loss appended (1.3125)\n", - "Epoch 6946: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6946: accuracy appended (60.00%)\n", - "Epoch 6946: model set back to train mode\n", - "Epoch 6946: model parameters saved\n", - "Epoch 6947 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6947: avg_loss appended (1.3125)\n", - "Epoch 6947: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6947: accuracy appended (60.00%)\n", - "Epoch 6947: model set back to train mode\n", - "Epoch 6947: model parameters saved\n", - "Epoch 6948 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6948: avg_loss appended (1.3125)\n", - "Epoch 6948: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6948: accuracy appended (60.00%)\n", - "Epoch 6948: model set back to train mode\n", - "Epoch 6948: model parameters saved\n", - "Epoch 6949 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6949: avg_loss appended (1.3125)\n", - "Epoch 6949: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6949: accuracy appended (60.00%)\n", - "Epoch 6949: model set back to train mode\n", - "Epoch 6949: model parameters saved\n", - "Epoch 6950 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6950: avg_loss appended (1.3125)\n", - "Epoch 6950: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6950: accuracy appended (60.00%)\n", - "Epoch 6950: model set back to train mode\n", - "Epoch 6950: model parameters saved\n", - "Epoch 6951 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6951: avg_loss appended (1.3125)\n", - "Epoch 6951: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6951: accuracy appended (60.00%)\n", - "Epoch 6951: model set back to train mode\n", - "Epoch 6951: model parameters saved\n", - "Epoch 6952 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6952: avg_loss appended (1.3125)\n", - "Epoch 6952: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6952: accuracy appended (60.00%)\n", - "Epoch 6952: model set back to train mode\n", - "Epoch 6952: model parameters saved\n", - "Epoch 6953 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6953: avg_loss appended (1.3125)\n", - "Epoch 6953: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6953: accuracy appended (60.00%)\n", - "Epoch 6953: model set back to train mode\n", - "Epoch 6953: model parameters saved\n", - "Epoch 6954 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6954: avg_loss appended (1.3125)\n", - "Epoch 6954: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6954: accuracy appended (60.00%)\n", - "Epoch 6954: model set back to train mode\n", - "Epoch 6954: model parameters saved\n", - "Epoch 6955 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6955: avg_loss appended (1.3125)\n", - "Epoch 6955: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6955: accuracy appended (60.00%)\n", - "Epoch 6955: model set back to train mode\n", - "Epoch 6955: model parameters saved\n", - "Epoch 6956 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6956: avg_loss appended (1.3125)\n", - "Epoch 6956: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6956: accuracy appended (60.00%)\n", - "Epoch 6956: model set back to train mode\n", - "Epoch 6956: model parameters saved\n", - "Epoch 6957 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6957: avg_loss appended (1.3125)\n", - "Epoch 6957: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6957: accuracy appended (60.00%)\n", - "Epoch 6957: model set back to train mode\n", - "Epoch 6957: model parameters saved\n", - "Epoch 6958 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6958: avg_loss appended (1.3125)\n", - "Epoch 6958: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6958: accuracy appended (60.00%)\n", - "Epoch 6958: model set back to train mode\n", - "Epoch 6958: model parameters saved\n", - "Epoch 6959 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6959: avg_loss appended (1.3125)\n", - "Epoch 6959: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6959: accuracy appended (60.00%)\n", - "Epoch 6959: model set back to train mode\n", - "Epoch 6959: model parameters saved\n", - "Epoch 6960 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6960: avg_loss appended (1.3125)\n", - "Epoch 6960: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6960: accuracy appended (60.00%)\n", - "Epoch 6960: model set back to train mode\n", - "Epoch 6960: model parameters saved\n", - "Epoch 6961 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6961: avg_loss appended (1.3125)\n", - "Epoch 6961: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6961: accuracy appended (60.00%)\n", - "Epoch 6961: model set back to train mode\n", - "Epoch 6961: model parameters saved\n", - "Epoch 6962 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6962: avg_loss appended (1.3125)\n", - "Epoch 6962: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6962: accuracy appended (60.00%)\n", - "Epoch 6962: model set back to train mode\n", - "Epoch 6962: model parameters saved\n", - "Epoch 6963 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6963: avg_loss appended (1.3125)\n", - "Epoch 6963: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6963: accuracy appended (60.00%)\n", - "Epoch 6963: model set back to train mode\n", - "Epoch 6963: model parameters saved\n", - "Epoch 6964 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6964: avg_loss appended (1.3125)\n", - "Epoch 6964: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6964: accuracy appended (60.00%)\n", - "Epoch 6964: model set back to train mode\n", - "Epoch 6964: model parameters saved\n", - "Epoch 6965 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6965: avg_loss appended (1.3125)\n", - "Epoch 6965: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6965: accuracy appended (60.00%)\n", - "Epoch 6965: model set back to train mode\n", - "Epoch 6965: model parameters saved\n", - "Epoch 6966 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6966: avg_loss appended (1.3125)\n", - "Epoch 6966: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6966: accuracy appended (60.00%)\n", - "Epoch 6966: model set back to train mode\n", - "Epoch 6966: model parameters saved\n", - "Epoch 6967 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6967: avg_loss appended (1.3125)\n", - "Epoch 6967: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6967: accuracy appended (60.00%)\n", - "Epoch 6967: model set back to train mode\n", - "Epoch 6967: model parameters saved\n", - "Epoch 6968 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6968: avg_loss appended (1.3125)\n", - "Epoch 6968: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6968: accuracy appended (60.00%)\n", - "Epoch 6968: model set back to train mode\n", - "Epoch 6968: model parameters saved\n", - "Epoch 6969 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6969: avg_loss appended (1.3125)\n", - "Epoch 6969: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6969: accuracy appended (60.00%)\n", - "Epoch 6969: model set back to train mode\n", - "Epoch 6969: model parameters saved\n", - "Epoch 6970 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6970: avg_loss appended (1.3125)\n", - "Epoch 6970: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6970: accuracy appended (60.00%)\n", - "Epoch 6970: model set back to train mode\n", - "Epoch 6970: model parameters saved\n", - "Epoch 6971 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6971: avg_loss appended (1.3125)\n", - "Epoch 6971: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6971: accuracy appended (60.00%)\n", - "Epoch 6971: model set back to train mode\n", - "Epoch 6971: model parameters saved\n", - "Epoch 6972 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6972: avg_loss appended (1.3125)\n", - "Epoch 6972: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6972: accuracy appended (60.00%)\n", - "Epoch 6972: model set back to train mode\n", - "Epoch 6972: model parameters saved\n", - "Epoch 6973 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6973: avg_loss appended (1.3125)\n", - "Epoch 6973: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6973: accuracy appended (60.00%)\n", - "Epoch 6973: model set back to train mode\n", - "Epoch 6973: model parameters saved\n", - "Epoch 6974 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6974: avg_loss appended (1.3125)\n", - "Epoch 6974: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6974: accuracy appended (60.00%)\n", - "Epoch 6974: model set back to train mode\n", - "Epoch 6974: model parameters saved\n", - "Epoch 6975 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6975: avg_loss appended (1.3125)\n", - "Epoch 6975: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6975: accuracy appended (60.00%)\n", - "Epoch 6975: model set back to train mode\n", - "Epoch 6975: model parameters saved\n", - "Epoch 6976 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6976: avg_loss appended (1.3125)\n", - "Epoch 6976: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6976: accuracy appended (60.00%)\n", - "Epoch 6976: model set back to train mode\n", - "Epoch 6976: model parameters saved\n", - "Epoch 6977 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6977: avg_loss appended (1.3125)\n", - "Epoch 6977: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6977: accuracy appended (60.00%)\n", - "Epoch 6977: model set back to train mode\n", - "Epoch 6977: model parameters saved\n", - "Epoch 6978 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6978: avg_loss appended (1.3125)\n", - "Epoch 6978: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6978: accuracy appended (60.00%)\n", - "Epoch 6978: model set back to train mode\n", - "Epoch 6978: model parameters saved\n", - "Epoch 6979 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6979: avg_loss appended (1.3125)\n", - "Epoch 6979: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6979: accuracy appended (60.00%)\n", - "Epoch 6979: model set back to train mode\n", - "Epoch 6979: model parameters saved\n", - "Epoch 6980 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6980: avg_loss appended (1.3125)\n", - "Epoch 6980: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6980: accuracy appended (60.00%)\n", - "Epoch 6980: model set back to train mode\n", - "Epoch 6980: model parameters saved\n", - "Epoch 6981 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6981: avg_loss appended (1.3125)\n", - "Epoch 6981: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6981: accuracy appended (60.00%)\n", - "Epoch 6981: model set back to train mode\n", - "Epoch 6981: model parameters saved\n", - "Epoch 6982 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6982: avg_loss appended (1.3125)\n", - "Epoch 6982: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6982: accuracy appended (60.00%)\n", - "Epoch 6982: model set back to train mode\n", - "Epoch 6982: model parameters saved\n", - "Epoch 6983 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6983: avg_loss appended (1.3125)\n", - "Epoch 6983: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6983: accuracy appended (60.00%)\n", - "Epoch 6983: model set back to train mode\n", - "Epoch 6983: model parameters saved\n", - "Epoch 6984 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6984: avg_loss appended (1.3125)\n", - "Epoch 6984: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6984: accuracy appended (60.00%)\n", - "Epoch 6984: model set back to train mode\n", - "Epoch 6984: model parameters saved\n", - "Epoch 6985 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6985: avg_loss appended (1.3125)\n", - "Epoch 6985: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6985: accuracy appended (60.00%)\n", - "Epoch 6985: model set back to train mode\n", - "Epoch 6985: model parameters saved\n", - "Epoch 6986 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6986: avg_loss appended (1.3125)\n", - "Epoch 6986: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6986: accuracy appended (60.00%)\n", - "Epoch 6986: model set back to train mode\n", - "Epoch 6986: model parameters saved\n", - "Epoch 6987 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6987: avg_loss appended (1.3125)\n", - "Epoch 6987: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6987: accuracy appended (60.00%)\n", - "Epoch 6987: model set back to train mode\n", - "Epoch 6987: model parameters saved\n", - "Epoch 6988 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6988: avg_loss appended (1.3125)\n", - "Epoch 6988: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6988: accuracy appended (60.00%)\n", - "Epoch 6988: model set back to train mode\n", - "Epoch 6988: model parameters saved\n", - "Epoch 6989 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6989: avg_loss appended (1.3125)\n", - "Epoch 6989: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6989: accuracy appended (60.00%)\n", - "Epoch 6989: model set back to train mode\n", - "Epoch 6989: model parameters saved\n", - "Epoch 6990 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6990: avg_loss appended (1.3125)\n", - "Epoch 6990: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6990: accuracy appended (60.00%)\n", - "Epoch 6990: model set back to train mode\n", - "Epoch 6990: model parameters saved\n", - "Epoch 6991 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6991: avg_loss appended (1.3125)\n", - "Epoch 6991: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6991: accuracy appended (60.00%)\n", - "Epoch 6991: model set back to train mode\n", - "Epoch 6991: model parameters saved\n", - "Epoch 6992 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6992: avg_loss appended (1.3125)\n", - "Epoch 6992: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6992: accuracy appended (60.00%)\n", - "Epoch 6992: model set back to train mode\n", - "Epoch 6992: model parameters saved\n", - "Epoch 6993 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6993: avg_loss appended (1.3125)\n", - "Epoch 6993: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6993: accuracy appended (60.00%)\n", - "Epoch 6993: model set back to train mode\n", - "Epoch 6993: model parameters saved\n", - "Epoch 6994 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6994: avg_loss appended (1.3125)\n", - "Epoch 6994: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6994: accuracy appended (60.00%)\n", - "Epoch 6994: model set back to train mode\n", - "Epoch 6994: model parameters saved\n", - "Epoch 6995 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6995: avg_loss appended (1.3125)\n", - "Epoch 6995: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6995: accuracy appended (60.00%)\n", - "Epoch 6995: model set back to train mode\n", - "Epoch 6995: model parameters saved\n", - "Epoch 6996 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6996: avg_loss appended (1.3125)\n", - "Epoch 6996: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6996: accuracy appended (60.00%)\n", - "Epoch 6996: model set back to train mode\n", - "Epoch 6996: model parameters saved\n", - "Epoch 6997 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6997: avg_loss appended (1.3125)\n", - "Epoch 6997: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6997: accuracy appended (60.00%)\n", - "Epoch 6997: model set back to train mode\n", - "Epoch 6997: model parameters saved\n", - "Epoch 6998 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6998: avg_loss appended (1.3125)\n", - "Epoch 6998: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6998: accuracy appended (60.00%)\n", - "Epoch 6998: model set back to train mode\n", - "Epoch 6998: model parameters saved\n", - "Epoch 6999 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 6999: avg_loss appended (1.3125)\n", - "Epoch 6999: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 6999: accuracy appended (60.00%)\n", - "Epoch 6999: model set back to train mode\n", - "Epoch 6999: model parameters saved\n", - "Epoch 7000 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7000: avg_loss appended (1.3125)\n", - "Epoch 7000: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7000: accuracy appended (60.00%)\n", - "Epoch 7000: model set back to train mode\n", - "Epoch 7000: model parameters saved\n", - "Epoch 7000/10000, Loss: 1.3125, Accuracy: 60.00%\n", - "Epoch 7001 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7001: avg_loss appended (1.3125)\n", - "Epoch 7001: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7001: accuracy appended (60.00%)\n", - "Epoch 7001: model set back to train mode\n", - "Epoch 7001: model parameters saved\n", - "Epoch 7002 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7002: avg_loss appended (1.3125)\n", - "Epoch 7002: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7002: accuracy appended (60.00%)\n", - "Epoch 7002: model set back to train mode\n", - "Epoch 7002: model parameters saved\n", - "Epoch 7003 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7003: avg_loss appended (1.3125)\n", - "Epoch 7003: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7003: accuracy appended (60.00%)\n", - "Epoch 7003: model set back to train mode\n", - "Epoch 7003: model parameters saved\n", - "Epoch 7004 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7004: avg_loss appended (1.3125)\n", - "Epoch 7004: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7004: accuracy appended (60.00%)\n", - "Epoch 7004: model set back to train mode\n", - "Epoch 7004: model parameters saved\n", - "Epoch 7005 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7005: avg_loss appended (1.3125)\n", - "Epoch 7005: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7005: accuracy appended (60.00%)\n", - "Epoch 7005: model set back to train mode\n", - "Epoch 7005: model parameters saved\n", - "Epoch 7006 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7006: avg_loss appended (1.3125)\n", - "Epoch 7006: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7006: accuracy appended (60.00%)\n", - "Epoch 7006: model set back to train mode\n", - "Epoch 7006: model parameters saved\n", - "Epoch 7007 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7007: avg_loss appended (1.3125)\n", - "Epoch 7007: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7007: accuracy appended (60.00%)\n", - "Epoch 7007: model set back to train mode\n", - "Epoch 7007: model parameters saved\n", - "Epoch 7008 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7008: avg_loss appended (1.3125)\n", - "Epoch 7008: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7008: accuracy appended (60.00%)\n", - "Epoch 7008: model set back to train mode\n", - "Epoch 7008: model parameters saved\n", - "Epoch 7009 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7009: avg_loss appended (1.3125)\n", - "Epoch 7009: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7009: accuracy appended (60.00%)\n", - "Epoch 7009: model set back to train mode\n", - "Epoch 7009: model parameters saved\n", - "Epoch 7010 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7010: avg_loss appended (1.3125)\n", - "Epoch 7010: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7010: accuracy appended (60.00%)\n", - "Epoch 7010: model set back to train mode\n", - "Epoch 7010: model parameters saved\n", - "Epoch 7011 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7011: avg_loss appended (1.3125)\n", - "Epoch 7011: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7011: accuracy appended (60.00%)\n", - "Epoch 7011: model set back to train mode\n", - "Epoch 7011: model parameters saved\n", - "Epoch 7012 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7012: avg_loss appended (1.3125)\n", - "Epoch 7012: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7012: accuracy appended (60.00%)\n", - "Epoch 7012: model set back to train mode\n", - "Epoch 7012: model parameters saved\n", - "Epoch 7013 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7013: avg_loss appended (1.3125)\n", - "Epoch 7013: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7013: accuracy appended (60.00%)\n", - "Epoch 7013: model set back to train mode\n", - "Epoch 7013: model parameters saved\n", - "Epoch 7014 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7014: avg_loss appended (1.3125)\n", - "Epoch 7014: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7014: accuracy appended (60.00%)\n", - "Epoch 7014: model set back to train mode\n", - "Epoch 7014: model parameters saved\n", - "Epoch 7015 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7015: avg_loss appended (1.3125)\n", - "Epoch 7015: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7015: accuracy appended (60.00%)\n", - "Epoch 7015: model set back to train mode\n", - "Epoch 7015: model parameters saved\n", - "Epoch 7016 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7016: avg_loss appended (1.3125)\n", - "Epoch 7016: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7016: accuracy appended (60.00%)\n", - "Epoch 7016: model set back to train mode\n", - "Epoch 7016: model parameters saved\n", - "Epoch 7017 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7017: avg_loss appended (1.3125)\n", - "Epoch 7017: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7017: accuracy appended (60.00%)\n", - "Epoch 7017: model set back to train mode\n", - "Epoch 7017: model parameters saved\n", - "Epoch 7018 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7018: avg_loss appended (1.3125)\n", - "Epoch 7018: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7018: accuracy appended (60.00%)\n", - "Epoch 7018: model set back to train mode\n", - "Epoch 7018: model parameters saved\n", - "Epoch 7019 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7019: avg_loss appended (1.3125)\n", - "Epoch 7019: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7019: accuracy appended (60.00%)\n", - "Epoch 7019: model set back to train mode\n", - "Epoch 7019: model parameters saved\n", - "Epoch 7020 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7020: avg_loss appended (1.3125)\n", - "Epoch 7020: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7020: accuracy appended (60.00%)\n", - "Epoch 7020: model set back to train mode\n", - "Epoch 7020: model parameters saved\n", - "Epoch 7021 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7021: avg_loss appended (1.3125)\n", - "Epoch 7021: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7021: accuracy appended (60.00%)\n", - "Epoch 7021: model set back to train mode\n", - "Epoch 7021: model parameters saved\n", - "Epoch 7022 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7022: avg_loss appended (1.3125)\n", - "Epoch 7022: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7022: accuracy appended (60.00%)\n", - "Epoch 7022: model set back to train mode\n", - "Epoch 7022: model parameters saved\n", - "Epoch 7023 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7023: avg_loss appended (1.3125)\n", - "Epoch 7023: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7023: accuracy appended (60.00%)\n", - "Epoch 7023: model set back to train mode\n", - "Epoch 7023: model parameters saved\n", - "Epoch 7024 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7024: avg_loss appended (1.3125)\n", - "Epoch 7024: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7024: accuracy appended (60.00%)\n", - "Epoch 7024: model set back to train mode\n", - "Epoch 7024: model parameters saved\n", - "Epoch 7025 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7025: avg_loss appended (1.3125)\n", - "Epoch 7025: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7025: accuracy appended (60.00%)\n", - "Epoch 7025: model set back to train mode\n", - "Epoch 7025: model parameters saved\n", - "Epoch 7026 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7026: avg_loss appended (1.3125)\n", - "Epoch 7026: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7026: accuracy appended (60.00%)\n", - "Epoch 7026: model set back to train mode\n", - "Epoch 7026: model parameters saved\n", - "Epoch 7027 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7027: avg_loss appended (1.3125)\n", - "Epoch 7027: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7027: accuracy appended (60.00%)\n", - "Epoch 7027: model set back to train mode\n", - "Epoch 7027: model parameters saved\n", - "Epoch 7028 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7028: avg_loss appended (1.3125)\n", - "Epoch 7028: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7028: accuracy appended (60.00%)\n", - "Epoch 7028: model set back to train mode\n", - "Epoch 7028: model parameters saved\n", - "Epoch 7029 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7029: avg_loss appended (1.3125)\n", - "Epoch 7029: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7029: accuracy appended (60.00%)\n", - "Epoch 7029: model set back to train mode\n", - "Epoch 7029: model parameters saved\n", - "Epoch 7030 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7030: avg_loss appended (1.3125)\n", - "Epoch 7030: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7030: accuracy appended (60.00%)\n", - "Epoch 7030: model set back to train mode\n", - "Epoch 7030: model parameters saved\n", - "Epoch 7031 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7031: avg_loss appended (1.3125)\n", - "Epoch 7031: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7031: accuracy appended (60.00%)\n", - "Epoch 7031: model set back to train mode\n", - "Epoch 7031: model parameters saved\n", - "Epoch 7032 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7032: avg_loss appended (1.3125)\n", - "Epoch 7032: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7032: accuracy appended (60.00%)\n", - "Epoch 7032: model set back to train mode\n", - "Epoch 7032: model parameters saved\n", - "Epoch 7033 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7033: avg_loss appended (1.3125)\n", - "Epoch 7033: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7033: accuracy appended (60.00%)\n", - "Epoch 7033: model set back to train mode\n", - "Epoch 7033: model parameters saved\n", - "Epoch 7034 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7034: avg_loss appended (1.3125)\n", - "Epoch 7034: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7034: accuracy appended (60.00%)\n", - "Epoch 7034: model set back to train mode\n", - "Epoch 7034: model parameters saved\n", - "Epoch 7035 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7035: avg_loss appended (1.3125)\n", - "Epoch 7035: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7035: accuracy appended (60.00%)\n", - "Epoch 7035: model set back to train mode\n", - "Epoch 7035: model parameters saved\n", - "Epoch 7036 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7036: avg_loss appended (1.3125)\n", - "Epoch 7036: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7036: accuracy appended (60.00%)\n", - "Epoch 7036: model set back to train mode\n", - "Epoch 7036: model parameters saved\n", - "Epoch 7037 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7037: avg_loss appended (1.3125)\n", - "Epoch 7037: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7037: accuracy appended (60.00%)\n", - "Epoch 7037: model set back to train mode\n", - "Epoch 7037: model parameters saved\n", - "Epoch 7038 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7038: avg_loss appended (1.3125)\n", - "Epoch 7038: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7038: accuracy appended (60.00%)\n", - "Epoch 7038: model set back to train mode\n", - "Epoch 7038: model parameters saved\n", - "Epoch 7039 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7039: avg_loss appended (1.3125)\n", - "Epoch 7039: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7039: accuracy appended (60.00%)\n", - "Epoch 7039: model set back to train mode\n", - "Epoch 7039: model parameters saved\n", - "Epoch 7040 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7040: avg_loss appended (1.3125)\n", - "Epoch 7040: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7040: accuracy appended (60.00%)\n", - "Epoch 7040: model set back to train mode\n", - "Epoch 7040: model parameters saved\n", - "Epoch 7041 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7041: avg_loss appended (1.3125)\n", - "Epoch 7041: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7041: accuracy appended (60.00%)\n", - "Epoch 7041: model set back to train mode\n", - "Epoch 7041: model parameters saved\n", - "Epoch 7042 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7042: avg_loss appended (1.3125)\n", - "Epoch 7042: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7042: accuracy appended (60.00%)\n", - "Epoch 7042: model set back to train mode\n", - "Epoch 7042: model parameters saved\n", - "Epoch 7043 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7043: avg_loss appended (1.3125)\n", - "Epoch 7043: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7043: accuracy appended (60.00%)\n", - "Epoch 7043: model set back to train mode\n", - "Epoch 7043: model parameters saved\n", - "Epoch 7044 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7044: avg_loss appended (1.3125)\n", - "Epoch 7044: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7044: accuracy appended (60.00%)\n", - "Epoch 7044: model set back to train mode\n", - "Epoch 7044: model parameters saved\n", - "Epoch 7045 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7045: avg_loss appended (1.3125)\n", - "Epoch 7045: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7045: accuracy appended (60.00%)\n", - "Epoch 7045: model set back to train mode\n", - "Epoch 7045: model parameters saved\n", - "Epoch 7046 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7046: avg_loss appended (1.3125)\n", - "Epoch 7046: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7046: accuracy appended (60.00%)\n", - "Epoch 7046: model set back to train mode\n", - "Epoch 7046: model parameters saved\n", - "Epoch 7047 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7047: avg_loss appended (1.3125)\n", - "Epoch 7047: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7047: accuracy appended (60.00%)\n", - "Epoch 7047: model set back to train mode\n", - "Epoch 7047: model parameters saved\n", - "Epoch 7048 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7048: avg_loss appended (1.3125)\n", - "Epoch 7048: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7048: accuracy appended (60.00%)\n", - "Epoch 7048: model set back to train mode\n", - "Epoch 7048: model parameters saved\n", - "Epoch 7049 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7049: avg_loss appended (1.3125)\n", - "Epoch 7049: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7049: accuracy appended (60.00%)\n", - "Epoch 7049: model set back to train mode\n", - "Epoch 7049: model parameters saved\n", - "Epoch 7050 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7050: avg_loss appended (1.3125)\n", - "Epoch 7050: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7050: accuracy appended (60.00%)\n", - "Epoch 7050: model set back to train mode\n", - "Epoch 7050: model parameters saved\n", - "Epoch 7051 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7051: avg_loss appended (1.3125)\n", - "Epoch 7051: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7051: accuracy appended (60.00%)\n", - "Epoch 7051: model set back to train mode\n", - "Epoch 7051: model parameters saved\n", - "Epoch 7052 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7052: avg_loss appended (1.3125)\n", - "Epoch 7052: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7052: accuracy appended (60.00%)\n", - "Epoch 7052: model set back to train mode\n", - "Epoch 7052: model parameters saved\n", - "Epoch 7053 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7053: avg_loss appended (1.3125)\n", - "Epoch 7053: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7053: accuracy appended (60.00%)\n", - "Epoch 7053: model set back to train mode\n", - "Epoch 7053: model parameters saved\n", - "Epoch 7054 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7054: avg_loss appended (1.3125)\n", - "Epoch 7054: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7054: accuracy appended (60.00%)\n", - "Epoch 7054: model set back to train mode\n", - "Epoch 7054: model parameters saved\n", - "Epoch 7055 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7055: avg_loss appended (1.3125)\n", - "Epoch 7055: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7055: accuracy appended (60.00%)\n", - "Epoch 7055: model set back to train mode\n", - "Epoch 7055: model parameters saved\n", - "Epoch 7056 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7056: avg_loss appended (1.3125)\n", - "Epoch 7056: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7056: accuracy appended (60.00%)\n", - "Epoch 7056: model set back to train mode\n", - "Epoch 7056: model parameters saved\n", - "Epoch 7057 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7057: avg_loss appended (1.3125)\n", - "Epoch 7057: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7057: accuracy appended (60.00%)\n", - "Epoch 7057: model set back to train mode\n", - "Epoch 7057: model parameters saved\n", - "Epoch 7058 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7058: avg_loss appended (1.3125)\n", - "Epoch 7058: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7058: accuracy appended (60.00%)\n", - "Epoch 7058: model set back to train mode\n", - "Epoch 7058: model parameters saved\n", - "Epoch 7059 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7059: avg_loss appended (1.3125)\n", - "Epoch 7059: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7059: accuracy appended (60.00%)\n", - "Epoch 7059: model set back to train mode\n", - "Epoch 7059: model parameters saved\n", - "Epoch 7060 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7060: avg_loss appended (1.3125)\n", - "Epoch 7060: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7060: accuracy appended (60.00%)\n", - "Epoch 7060: model set back to train mode\n", - "Epoch 7060: model parameters saved\n", - "Epoch 7061 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7061: avg_loss appended (1.3125)\n", - "Epoch 7061: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7061: accuracy appended (60.00%)\n", - "Epoch 7061: model set back to train mode\n", - "Epoch 7061: model parameters saved\n", - "Epoch 7062 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7062: avg_loss appended (1.3125)\n", - "Epoch 7062: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7062: accuracy appended (60.00%)\n", - "Epoch 7062: model set back to train mode\n", - "Epoch 7062: model parameters saved\n", - "Epoch 7063 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7063: avg_loss appended (1.3125)\n", - "Epoch 7063: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7063: accuracy appended (60.00%)\n", - "Epoch 7063: model set back to train mode\n", - "Epoch 7063: model parameters saved\n", - "Epoch 7064 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7064: avg_loss appended (1.3125)\n", - "Epoch 7064: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7064: accuracy appended (60.00%)\n", - "Epoch 7064: model set back to train mode\n", - "Epoch 7064: model parameters saved\n", - "Epoch 7065 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7065: avg_loss appended (1.3125)\n", - "Epoch 7065: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7065: accuracy appended (60.00%)\n", - "Epoch 7065: model set back to train mode\n", - "Epoch 7065: model parameters saved\n", - "Epoch 7066 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7066: avg_loss appended (1.3125)\n", - "Epoch 7066: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7066: accuracy appended (60.00%)\n", - "Epoch 7066: model set back to train mode\n", - "Epoch 7066: model parameters saved\n", - "Epoch 7067 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7067: avg_loss appended (1.3125)\n", - "Epoch 7067: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7067: accuracy appended (60.00%)\n", - "Epoch 7067: model set back to train mode\n", - "Epoch 7067: model parameters saved\n", - "Epoch 7068 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7068: avg_loss appended (1.3125)\n", - "Epoch 7068: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7068: accuracy appended (60.00%)\n", - "Epoch 7068: model set back to train mode\n", - "Epoch 7068: model parameters saved\n", - "Epoch 7069 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7069: avg_loss appended (1.3125)\n", - "Epoch 7069: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7069: accuracy appended (60.00%)\n", - "Epoch 7069: model set back to train mode\n", - "Epoch 7069: model parameters saved\n", - "Epoch 7070 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7070: avg_loss appended (1.3125)\n", - "Epoch 7070: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7070: accuracy appended (60.00%)\n", - "Epoch 7070: model set back to train mode\n", - "Epoch 7070: model parameters saved\n", - "Epoch 7071 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7071: avg_loss appended (1.3125)\n", - "Epoch 7071: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7071: accuracy appended (60.00%)\n", - "Epoch 7071: model set back to train mode\n", - "Epoch 7071: model parameters saved\n", - "Epoch 7072 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7072: avg_loss appended (1.3125)\n", - "Epoch 7072: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7072: accuracy appended (60.00%)\n", - "Epoch 7072: model set back to train mode\n", - "Epoch 7072: model parameters saved\n", - "Epoch 7073 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7073: avg_loss appended (1.3125)\n", - "Epoch 7073: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7073: accuracy appended (60.00%)\n", - "Epoch 7073: model set back to train mode\n", - "Epoch 7073: model parameters saved\n", - "Epoch 7074 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7074: avg_loss appended (1.3125)\n", - "Epoch 7074: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7074: accuracy appended (60.00%)\n", - "Epoch 7074: model set back to train mode\n", - "Epoch 7074: model parameters saved\n", - "Epoch 7075 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7075: avg_loss appended (1.3125)\n", - "Epoch 7075: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7075: accuracy appended (60.00%)\n", - "Epoch 7075: model set back to train mode\n", - "Epoch 7075: model parameters saved\n", - "Epoch 7076 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7076: avg_loss appended (1.3125)\n", - "Epoch 7076: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7076: accuracy appended (60.00%)\n", - "Epoch 7076: model set back to train mode\n", - "Epoch 7076: model parameters saved\n", - "Epoch 7077 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7077: avg_loss appended (1.3125)\n", - "Epoch 7077: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7077: accuracy appended (60.00%)\n", - "Epoch 7077: model set back to train mode\n", - "Epoch 7077: model parameters saved\n", - "Epoch 7078 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7078: avg_loss appended (1.3125)\n", - "Epoch 7078: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7078: accuracy appended (60.00%)\n", - "Epoch 7078: model set back to train mode\n", - "Epoch 7078: model parameters saved\n", - "Epoch 7079 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7079: avg_loss appended (1.3125)\n", - "Epoch 7079: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7079: accuracy appended (60.00%)\n", - "Epoch 7079: model set back to train mode\n", - "Epoch 7079: model parameters saved\n", - "Epoch 7080 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7080: avg_loss appended (1.3125)\n", - "Epoch 7080: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7080: accuracy appended (60.00%)\n", - "Epoch 7080: model set back to train mode\n", - "Epoch 7080: model parameters saved\n", - "Epoch 7081 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7081: avg_loss appended (1.3125)\n", - "Epoch 7081: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7081: accuracy appended (60.00%)\n", - "Epoch 7081: model set back to train mode\n", - "Epoch 7081: model parameters saved\n", - "Epoch 7082 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7082: avg_loss appended (1.3125)\n", - "Epoch 7082: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7082: accuracy appended (60.00%)\n", - "Epoch 7082: model set back to train mode\n", - "Epoch 7082: model parameters saved\n", - "Epoch 7083 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7083: avg_loss appended (1.3125)\n", - "Epoch 7083: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7083: accuracy appended (60.00%)\n", - "Epoch 7083: model set back to train mode\n", - "Epoch 7083: model parameters saved\n", - "Epoch 7084 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7084: avg_loss appended (1.3125)\n", - "Epoch 7084: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7084: accuracy appended (60.00%)\n", - "Epoch 7084: model set back to train mode\n", - "Epoch 7084: model parameters saved\n", - "Epoch 7085 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7085: avg_loss appended (1.3125)\n", - "Epoch 7085: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7085: accuracy appended (60.00%)\n", - "Epoch 7085: model set back to train mode\n", - "Epoch 7085: model parameters saved\n", - "Epoch 7086 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7086: avg_loss appended (1.3125)\n", - "Epoch 7086: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7086: accuracy appended (60.00%)\n", - "Epoch 7086: model set back to train mode\n", - "Epoch 7086: model parameters saved\n", - "Epoch 7087 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7087: avg_loss appended (1.3125)\n", - "Epoch 7087: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7087: accuracy appended (60.00%)\n", - "Epoch 7087: model set back to train mode\n", - "Epoch 7087: model parameters saved\n", - "Epoch 7088 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7088: avg_loss appended (1.3125)\n", - "Epoch 7088: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7088: accuracy appended (60.00%)\n", - "Epoch 7088: model set back to train mode\n", - "Epoch 7088: model parameters saved\n", - "Epoch 7089 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7089: avg_loss appended (1.3125)\n", - "Epoch 7089: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7089: accuracy appended (60.00%)\n", - "Epoch 7089: model set back to train mode\n", - "Epoch 7089: model parameters saved\n", - "Epoch 7090 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7090: avg_loss appended (1.3125)\n", - "Epoch 7090: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7090: accuracy appended (60.00%)\n", - "Epoch 7090: model set back to train mode\n", - "Epoch 7090: model parameters saved\n", - "Epoch 7091 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7091: avg_loss appended (1.3125)\n", - "Epoch 7091: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7091: accuracy appended (60.00%)\n", - "Epoch 7091: model set back to train mode\n", - "Epoch 7091: model parameters saved\n", - "Epoch 7092 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7092: avg_loss appended (1.3125)\n", - "Epoch 7092: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7092: accuracy appended (60.00%)\n", - "Epoch 7092: model set back to train mode\n", - "Epoch 7092: model parameters saved\n", - "Epoch 7093 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7093: avg_loss appended (1.3125)\n", - "Epoch 7093: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7093: accuracy appended (60.00%)\n", - "Epoch 7093: model set back to train mode\n", - "Epoch 7093: model parameters saved\n", - "Epoch 7094 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7094: avg_loss appended (1.3125)\n", - "Epoch 7094: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7094: accuracy appended (60.00%)\n", - "Epoch 7094: model set back to train mode\n", - "Epoch 7094: model parameters saved\n", - "Epoch 7095 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7095: avg_loss appended (1.3125)\n", - "Epoch 7095: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7095: accuracy appended (60.00%)\n", - "Epoch 7095: model set back to train mode\n", - "Epoch 7095: model parameters saved\n", - "Epoch 7096 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7096: avg_loss appended (1.3125)\n", - "Epoch 7096: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7096: accuracy appended (60.00%)\n", - "Epoch 7096: model set back to train mode\n", - "Epoch 7096: model parameters saved\n", - "Epoch 7097 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7097: avg_loss appended (1.3125)\n", - "Epoch 7097: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7097: accuracy appended (60.00%)\n", - "Epoch 7097: model set back to train mode\n", - "Epoch 7097: model parameters saved\n", - "Epoch 7098 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7098: avg_loss appended (1.3125)\n", - "Epoch 7098: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7098: accuracy appended (60.00%)\n", - "Epoch 7098: model set back to train mode\n", - "Epoch 7098: model parameters saved\n", - "Epoch 7099 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7099: avg_loss appended (1.3125)\n", - "Epoch 7099: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7099: accuracy appended (60.00%)\n", - "Epoch 7099: model set back to train mode\n", - "Epoch 7099: model parameters saved\n", - "Epoch 7100 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7100: avg_loss appended (1.3125)\n", - "Epoch 7100: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7100: accuracy appended (60.00%)\n", - "Epoch 7100: model set back to train mode\n", - "Epoch 7100: model parameters saved\n", - "Epoch 7100/10000, Loss: 1.3125, Accuracy: 60.00%\n", - "Epoch 7101 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7101: avg_loss appended (1.3125)\n", - "Epoch 7101: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7101: accuracy appended (60.00%)\n", - "Epoch 7101: model set back to train mode\n", - "Epoch 7101: model parameters saved\n", - "Epoch 7102 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7102: avg_loss appended (1.3125)\n", - "Epoch 7102: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7102: accuracy appended (60.00%)\n", - "Epoch 7102: model set back to train mode\n", - "Epoch 7102: model parameters saved\n", - "Epoch 7103 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7103: avg_loss appended (1.3125)\n", - "Epoch 7103: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7103: accuracy appended (60.00%)\n", - "Epoch 7103: model set back to train mode\n", - "Epoch 7103: model parameters saved\n", - "Epoch 7104 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7104: avg_loss appended (1.3125)\n", - "Epoch 7104: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7104: accuracy appended (60.00%)\n", - "Epoch 7104: model set back to train mode\n", - "Epoch 7104: model parameters saved\n", - "Epoch 7105 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7105: avg_loss appended (1.3125)\n", - "Epoch 7105: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7105: accuracy appended (60.00%)\n", - "Epoch 7105: model set back to train mode\n", - "Epoch 7105: model parameters saved\n", - "Epoch 7106 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7106: avg_loss appended (1.3125)\n", - "Epoch 7106: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7106: accuracy appended (60.00%)\n", - "Epoch 7106: model set back to train mode\n", - "Epoch 7106: model parameters saved\n", - "Epoch 7107 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7107: avg_loss appended (1.3125)\n", - "Epoch 7107: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7107: accuracy appended (60.00%)\n", - "Epoch 7107: model set back to train mode\n", - "Epoch 7107: model parameters saved\n", - "Epoch 7108 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7108: avg_loss appended (1.3125)\n", - "Epoch 7108: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7108: accuracy appended (60.00%)\n", - "Epoch 7108: model set back to train mode\n", - "Epoch 7108: model parameters saved\n", - "Epoch 7109 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7109: avg_loss appended (1.3125)\n", - "Epoch 7109: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7109: accuracy appended (60.00%)\n", - "Epoch 7109: model set back to train mode\n", - "Epoch 7109: model parameters saved\n", - "Epoch 7110 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7110: avg_loss appended (1.3125)\n", - "Epoch 7110: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7110: accuracy appended (60.00%)\n", - "Epoch 7110: model set back to train mode\n", - "Epoch 7110: model parameters saved\n", - "Epoch 7111 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7111: avg_loss appended (1.3125)\n", - "Epoch 7111: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7111: accuracy appended (60.00%)\n", - "Epoch 7111: model set back to train mode\n", - "Epoch 7111: model parameters saved\n", - "Epoch 7112 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7112: avg_loss appended (1.3125)\n", - "Epoch 7112: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7112: accuracy appended (60.00%)\n", - "Epoch 7112: model set back to train mode\n", - "Epoch 7112: model parameters saved\n", - "Epoch 7113 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7113: avg_loss appended (1.3125)\n", - "Epoch 7113: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7113: accuracy appended (60.00%)\n", - "Epoch 7113: model set back to train mode\n", - "Epoch 7113: model parameters saved\n", - "Epoch 7114 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7114: avg_loss appended (1.3125)\n", - "Epoch 7114: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7114: accuracy appended (60.00%)\n", - "Epoch 7114: model set back to train mode\n", - "Epoch 7114: model parameters saved\n", - "Epoch 7115 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7115: avg_loss appended (1.3125)\n", - "Epoch 7115: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7115: accuracy appended (60.00%)\n", - "Epoch 7115: model set back to train mode\n", - "Epoch 7115: model parameters saved\n", - "Epoch 7116 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7116: avg_loss appended (1.3125)\n", - "Epoch 7116: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7116: accuracy appended (60.00%)\n", - "Epoch 7116: model set back to train mode\n", - "Epoch 7116: model parameters saved\n", - "Epoch 7117 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7117: avg_loss appended (1.3125)\n", - "Epoch 7117: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7117: accuracy appended (60.00%)\n", - "Epoch 7117: model set back to train mode\n", - "Epoch 7117: model parameters saved\n", - "Epoch 7118 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7118: avg_loss appended (1.3125)\n", - "Epoch 7118: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7118: accuracy appended (60.00%)\n", - "Epoch 7118: model set back to train mode\n", - "Epoch 7118: model parameters saved\n", - "Epoch 7119 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7119: avg_loss appended (1.3125)\n", - "Epoch 7119: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7119: accuracy appended (60.00%)\n", - "Epoch 7119: model set back to train mode\n", - "Epoch 7119: model parameters saved\n", - "Epoch 7120 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7120: avg_loss appended (1.3125)\n", - "Epoch 7120: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7120: accuracy appended (60.00%)\n", - "Epoch 7120: model set back to train mode\n", - "Epoch 7120: model parameters saved\n", - "Epoch 7121 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7121: avg_loss appended (1.3125)\n", - "Epoch 7121: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7121: accuracy appended (60.00%)\n", - "Epoch 7121: model set back to train mode\n", - "Epoch 7121: model parameters saved\n", - "Epoch 7122 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7122: avg_loss appended (1.3125)\n", - "Epoch 7122: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7122: accuracy appended (60.00%)\n", - "Epoch 7122: model set back to train mode\n", - "Epoch 7122: model parameters saved\n", - "Epoch 7123 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7123: avg_loss appended (1.3125)\n", - "Epoch 7123: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7123: accuracy appended (60.00%)\n", - "Epoch 7123: model set back to train mode\n", - "Epoch 7123: model parameters saved\n", - "Epoch 7124 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7124: avg_loss appended (1.3125)\n", - "Epoch 7124: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7124: accuracy appended (60.00%)\n", - "Epoch 7124: model set back to train mode\n", - "Epoch 7124: model parameters saved\n", - "Epoch 7125 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7125: avg_loss appended (1.3125)\n", - "Epoch 7125: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7125: accuracy appended (60.00%)\n", - "Epoch 7125: model set back to train mode\n", - "Epoch 7125: model parameters saved\n", - "Epoch 7126 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7126: avg_loss appended (1.3125)\n", - "Epoch 7126: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7126: accuracy appended (60.00%)\n", - "Epoch 7126: model set back to train mode\n", - "Epoch 7126: model parameters saved\n", - "Epoch 7127 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7127: avg_loss appended (1.3125)\n", - "Epoch 7127: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7127: accuracy appended (60.00%)\n", - "Epoch 7127: model set back to train mode\n", - "Epoch 7127: model parameters saved\n", - "Epoch 7128 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7128: avg_loss appended (1.3125)\n", - "Epoch 7128: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7128: accuracy appended (60.00%)\n", - "Epoch 7128: model set back to train mode\n", - "Epoch 7128: model parameters saved\n", - "Epoch 7129 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7129: avg_loss appended (1.3125)\n", - "Epoch 7129: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7129: accuracy appended (60.00%)\n", - "Epoch 7129: model set back to train mode\n", - "Epoch 7129: model parameters saved\n", - "Epoch 7130 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7130: avg_loss appended (1.3125)\n", - "Epoch 7130: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7130: accuracy appended (60.00%)\n", - "Epoch 7130: model set back to train mode\n", - "Epoch 7130: model parameters saved\n", - "Epoch 7131 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7131: avg_loss appended (1.3125)\n", - "Epoch 7131: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7131: accuracy appended (60.00%)\n", - "Epoch 7131: model set back to train mode\n", - "Epoch 7131: model parameters saved\n", - "Epoch 7132 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7132: avg_loss appended (1.3125)\n", - "Epoch 7132: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7132: accuracy appended (60.00%)\n", - "Epoch 7132: model set back to train mode\n", - "Epoch 7132: model parameters saved\n", - "Epoch 7133 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7133: avg_loss appended (1.3125)\n", - "Epoch 7133: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7133: accuracy appended (60.00%)\n", - "Epoch 7133: model set back to train mode\n", - "Epoch 7133: model parameters saved\n", - "Epoch 7134 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7134: avg_loss appended (1.3125)\n", - "Epoch 7134: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7134: accuracy appended (60.00%)\n", - "Epoch 7134: model set back to train mode\n", - "Epoch 7134: model parameters saved\n", - "Epoch 7135 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7135: avg_loss appended (1.3125)\n", - "Epoch 7135: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7135: accuracy appended (60.00%)\n", - "Epoch 7135: model set back to train mode\n", - "Epoch 7135: model parameters saved\n", - "Epoch 7136 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7136: avg_loss appended (1.3125)\n", - "Epoch 7136: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7136: accuracy appended (60.00%)\n", - "Epoch 7136: model set back to train mode\n", - "Epoch 7136: model parameters saved\n", - "Epoch 7137 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7137: avg_loss appended (1.3125)\n", - "Epoch 7137: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7137: accuracy appended (60.00%)\n", - "Epoch 7137: model set back to train mode\n", - "Epoch 7137: model parameters saved\n", - "Epoch 7138 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7138: avg_loss appended (1.3125)\n", - "Epoch 7138: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7138: accuracy appended (60.00%)\n", - "Epoch 7138: model set back to train mode\n", - "Epoch 7138: model parameters saved\n", - "Epoch 7139 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7139: avg_loss appended (1.3125)\n", - "Epoch 7139: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7139: accuracy appended (60.00%)\n", - "Epoch 7139: model set back to train mode\n", - "Epoch 7139: model parameters saved\n", - "Epoch 7140 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7140: avg_loss appended (1.3125)\n", - "Epoch 7140: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7140: accuracy appended (60.00%)\n", - "Epoch 7140: model set back to train mode\n", - "Epoch 7140: model parameters saved\n", - "Epoch 7141 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7141: avg_loss appended (1.3125)\n", - "Epoch 7141: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7141: accuracy appended (60.00%)\n", - "Epoch 7141: model set back to train mode\n", - "Epoch 7141: model parameters saved\n", - "Epoch 7142 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7142: avg_loss appended (1.3125)\n", - "Epoch 7142: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7142: accuracy appended (60.00%)\n", - "Epoch 7142: model set back to train mode\n", - "Epoch 7142: model parameters saved\n", - "Epoch 7143 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7143: avg_loss appended (1.3125)\n", - "Epoch 7143: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7143: accuracy appended (60.00%)\n", - "Epoch 7143: model set back to train mode\n", - "Epoch 7143: model parameters saved\n", - "Epoch 7144 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7144: avg_loss appended (1.3125)\n", - "Epoch 7144: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7144: accuracy appended (60.00%)\n", - "Epoch 7144: model set back to train mode\n", - "Epoch 7144: model parameters saved\n", - "Epoch 7145 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7145: avg_loss appended (1.3125)\n", - "Epoch 7145: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7145: accuracy appended (60.00%)\n", - "Epoch 7145: model set back to train mode\n", - "Epoch 7145: model parameters saved\n", - "Epoch 7146 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7146: avg_loss appended (1.3125)\n", - "Epoch 7146: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7146: accuracy appended (60.00%)\n", - "Epoch 7146: model set back to train mode\n", - "Epoch 7146: model parameters saved\n", - "Epoch 7147 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7147: avg_loss appended (1.3125)\n", - "Epoch 7147: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7147: accuracy appended (60.00%)\n", - "Epoch 7147: model set back to train mode\n", - "Epoch 7147: model parameters saved\n", - "Epoch 7148 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7148: avg_loss appended (1.3125)\n", - "Epoch 7148: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7148: accuracy appended (60.00%)\n", - "Epoch 7148: model set back to train mode\n", - "Epoch 7148: model parameters saved\n", - "Epoch 7149 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7149: avg_loss appended (1.3125)\n", - "Epoch 7149: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7149: accuracy appended (60.00%)\n", - "Epoch 7149: model set back to train mode\n", - "Epoch 7149: model parameters saved\n", - "Epoch 7150 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7150: avg_loss appended (1.3125)\n", - "Epoch 7150: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7150: accuracy appended (60.00%)\n", - "Epoch 7150: model set back to train mode\n", - "Epoch 7150: model parameters saved\n", - "Epoch 7151 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7151: avg_loss appended (1.3125)\n", - "Epoch 7151: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7151: accuracy appended (60.00%)\n", - "Epoch 7151: model set back to train mode\n", - "Epoch 7151: model parameters saved\n", - "Epoch 7152 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7152: avg_loss appended (1.3125)\n", - "Epoch 7152: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7152: accuracy appended (60.00%)\n", - "Epoch 7152: model set back to train mode\n", - "Epoch 7152: model parameters saved\n", - "Epoch 7153 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7153: avg_loss appended (1.3125)\n", - "Epoch 7153: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7153: accuracy appended (60.00%)\n", - "Epoch 7153: model set back to train mode\n", - "Epoch 7153: model parameters saved\n", - "Epoch 7154 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7154: avg_loss appended (1.3125)\n", - "Epoch 7154: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7154: accuracy appended (60.00%)\n", - "Epoch 7154: model set back to train mode\n", - "Epoch 7154: model parameters saved\n", - "Epoch 7155 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7155: avg_loss appended (1.3125)\n", - "Epoch 7155: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7155: accuracy appended (60.00%)\n", - "Epoch 7155: model set back to train mode\n", - "Epoch 7155: model parameters saved\n", - "Epoch 7156 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7156: avg_loss appended (1.3125)\n", - "Epoch 7156: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7156: accuracy appended (60.00%)\n", - "Epoch 7156: model set back to train mode\n", - "Epoch 7156: model parameters saved\n", - "Epoch 7157 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7157: avg_loss appended (1.3125)\n", - "Epoch 7157: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7157: accuracy appended (60.00%)\n", - "Epoch 7157: model set back to train mode\n", - "Epoch 7157: model parameters saved\n", - "Epoch 7158 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7158: avg_loss appended (1.3125)\n", - "Epoch 7158: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7158: accuracy appended (60.00%)\n", - "Epoch 7158: model set back to train mode\n", - "Epoch 7158: model parameters saved\n", - "Epoch 7159 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7159: avg_loss appended (1.3125)\n", - "Epoch 7159: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7159: accuracy appended (60.00%)\n", - "Epoch 7159: model set back to train mode\n", - "Epoch 7159: model parameters saved\n", - "Epoch 7160 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7160: avg_loss appended (1.3125)\n", - "Epoch 7160: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7160: accuracy appended (60.00%)\n", - "Epoch 7160: model set back to train mode\n", - "Epoch 7160: model parameters saved\n", - "Epoch 7161 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7161: avg_loss appended (1.3125)\n", - "Epoch 7161: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7161: accuracy appended (60.00%)\n", - "Epoch 7161: model set back to train mode\n", - "Epoch 7161: model parameters saved\n", - "Epoch 7162 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7162: avg_loss appended (1.3125)\n", - "Epoch 7162: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7162: accuracy appended (60.00%)\n", - "Epoch 7162: model set back to train mode\n", - "Epoch 7162: model parameters saved\n", - "Epoch 7163 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7163: avg_loss appended (1.3125)\n", - "Epoch 7163: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7163: accuracy appended (60.00%)\n", - "Epoch 7163: model set back to train mode\n", - "Epoch 7163: model parameters saved\n", - "Epoch 7164 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7164: avg_loss appended (1.3125)\n", - "Epoch 7164: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7164: accuracy appended (60.00%)\n", - "Epoch 7164: model set back to train mode\n", - "Epoch 7164: model parameters saved\n", - "Epoch 7165 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7165: avg_loss appended (1.3125)\n", - "Epoch 7165: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7165: accuracy appended (60.00%)\n", - "Epoch 7165: model set back to train mode\n", - "Epoch 7165: model parameters saved\n", - "Epoch 7166 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7166: avg_loss appended (1.3125)\n", - "Epoch 7166: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7166: accuracy appended (60.00%)\n", - "Epoch 7166: model set back to train mode\n", - "Epoch 7166: model parameters saved\n", - "Epoch 7167 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7167: avg_loss appended (1.3125)\n", - "Epoch 7167: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7167: accuracy appended (60.00%)\n", - "Epoch 7167: model set back to train mode\n", - "Epoch 7167: model parameters saved\n", - "Epoch 7168 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7168: avg_loss appended (1.3125)\n", - "Epoch 7168: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7168: accuracy appended (60.00%)\n", - "Epoch 7168: model set back to train mode\n", - "Epoch 7168: model parameters saved\n", - "Epoch 7169 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7169: avg_loss appended (1.3125)\n", - "Epoch 7169: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7169: accuracy appended (60.00%)\n", - "Epoch 7169: model set back to train mode\n", - "Epoch 7169: model parameters saved\n", - "Epoch 7170 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7170: avg_loss appended (1.3125)\n", - "Epoch 7170: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7170: accuracy appended (60.00%)\n", - "Epoch 7170: model set back to train mode\n", - "Epoch 7170: model parameters saved\n", - "Epoch 7171 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7171: avg_loss appended (1.3125)\n", - "Epoch 7171: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7171: accuracy appended (60.00%)\n", - "Epoch 7171: model set back to train mode\n", - "Epoch 7171: model parameters saved\n", - "Epoch 7172 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7172: avg_loss appended (1.3125)\n", - "Epoch 7172: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7172: accuracy appended (60.00%)\n", - "Epoch 7172: model set back to train mode\n", - "Epoch 7172: model parameters saved\n", - "Epoch 7173 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7173: avg_loss appended (1.3125)\n", - "Epoch 7173: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7173: accuracy appended (60.00%)\n", - "Epoch 7173: model set back to train mode\n", - "Epoch 7173: model parameters saved\n", - "Epoch 7174 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7174: avg_loss appended (1.3125)\n", - "Epoch 7174: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7174: accuracy appended (60.00%)\n", - "Epoch 7174: model set back to train mode\n", - "Epoch 7174: model parameters saved\n", - "Epoch 7175 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7175: avg_loss appended (1.3125)\n", - "Epoch 7175: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7175: accuracy appended (60.00%)\n", - "Epoch 7175: model set back to train mode\n", - "Epoch 7175: model parameters saved\n", - "Epoch 7176 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7176: avg_loss appended (1.3125)\n", - "Epoch 7176: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7176: accuracy appended (60.00%)\n", - "Epoch 7176: model set back to train mode\n", - "Epoch 7176: model parameters saved\n", - "Epoch 7177 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7177: avg_loss appended (1.3125)\n", - "Epoch 7177: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7177: accuracy appended (60.00%)\n", - "Epoch 7177: model set back to train mode\n", - "Epoch 7177: model parameters saved\n", - "Epoch 7178 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7178: avg_loss appended (1.3125)\n", - "Epoch 7178: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7178: accuracy appended (60.00%)\n", - "Epoch 7178: model set back to train mode\n", - "Epoch 7178: model parameters saved\n", - "Epoch 7179 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7179: avg_loss appended (1.3125)\n", - "Epoch 7179: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7179: accuracy appended (60.00%)\n", - "Epoch 7179: model set back to train mode\n", - "Epoch 7179: model parameters saved\n", - "Epoch 7180 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7180: avg_loss appended (1.3125)\n", - "Epoch 7180: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7180: accuracy appended (60.00%)\n", - "Epoch 7180: model set back to train mode\n", - "Epoch 7180: model parameters saved\n", - "Epoch 7181 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7181: avg_loss appended (1.3125)\n", - "Epoch 7181: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7181: accuracy appended (60.00%)\n", - "Epoch 7181: model set back to train mode\n", - "Epoch 7181: model parameters saved\n", - "Epoch 7182 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7182: avg_loss appended (1.3125)\n", - "Epoch 7182: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7182: accuracy appended (60.00%)\n", - "Epoch 7182: model set back to train mode\n", - "Epoch 7182: model parameters saved\n", - "Epoch 7183 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7183: avg_loss appended (1.3125)\n", - "Epoch 7183: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7183: accuracy appended (60.00%)\n", - "Epoch 7183: model set back to train mode\n", - "Epoch 7183: model parameters saved\n", - "Epoch 7184 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7184: avg_loss appended (1.3125)\n", - "Epoch 7184: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7184: accuracy appended (60.00%)\n", - "Epoch 7184: model set back to train mode\n", - "Epoch 7184: model parameters saved\n", - "Epoch 7185 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7185: avg_loss appended (1.3125)\n", - "Epoch 7185: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7185: accuracy appended (60.00%)\n", - "Epoch 7185: model set back to train mode\n", - "Epoch 7185: model parameters saved\n", - "Epoch 7186 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7186: avg_loss appended (1.3125)\n", - "Epoch 7186: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7186: accuracy appended (60.00%)\n", - "Epoch 7186: model set back to train mode\n", - "Epoch 7186: model parameters saved\n", - "Epoch 7187 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7187: avg_loss appended (1.3125)\n", - "Epoch 7187: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7187: accuracy appended (60.00%)\n", - "Epoch 7187: model set back to train mode\n", - "Epoch 7187: model parameters saved\n", - "Epoch 7188 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7188: avg_loss appended (1.3125)\n", - "Epoch 7188: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7188: accuracy appended (60.00%)\n", - "Epoch 7188: model set back to train mode\n", - "Epoch 7188: model parameters saved\n", - "Epoch 7189 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7189: avg_loss appended (1.3125)\n", - "Epoch 7189: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7189: accuracy appended (60.00%)\n", - "Epoch 7189: model set back to train mode\n", - "Epoch 7189: model parameters saved\n", - "Epoch 7190 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7190: avg_loss appended (1.3125)\n", - "Epoch 7190: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7190: accuracy appended (60.00%)\n", - "Epoch 7190: model set back to train mode\n", - "Epoch 7190: model parameters saved\n", - "Epoch 7191 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7191: avg_loss appended (1.3125)\n", - "Epoch 7191: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7191: accuracy appended (60.00%)\n", - "Epoch 7191: model set back to train mode\n", - "Epoch 7191: model parameters saved\n", - "Epoch 7192 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7192: avg_loss appended (1.3125)\n", - "Epoch 7192: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7192: accuracy appended (60.00%)\n", - "Epoch 7192: model set back to train mode\n", - "Epoch 7192: model parameters saved\n", - "Epoch 7193 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7193: avg_loss appended (1.3125)\n", - "Epoch 7193: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7193: accuracy appended (60.00%)\n", - "Epoch 7193: model set back to train mode\n", - "Epoch 7193: model parameters saved\n", - "Epoch 7194 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7194: avg_loss appended (1.3125)\n", - "Epoch 7194: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7194: accuracy appended (60.00%)\n", - "Epoch 7194: model set back to train mode\n", - "Epoch 7194: model parameters saved\n", - "Epoch 7195 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7195: avg_loss appended (1.3125)\n", - "Epoch 7195: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7195: accuracy appended (60.00%)\n", - "Epoch 7195: model set back to train mode\n", - "Epoch 7195: model parameters saved\n", - "Epoch 7196 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7196: avg_loss appended (1.3125)\n", - "Epoch 7196: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7196: accuracy appended (60.00%)\n", - "Epoch 7196: model set back to train mode\n", - "Epoch 7196: model parameters saved\n", - "Epoch 7197 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7197: avg_loss appended (1.3125)\n", - "Epoch 7197: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7197: accuracy appended (60.00%)\n", - "Epoch 7197: model set back to train mode\n", - "Epoch 7197: model parameters saved\n", - "Epoch 7198 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7198: avg_loss appended (1.3125)\n", - "Epoch 7198: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7198: accuracy appended (60.00%)\n", - "Epoch 7198: model set back to train mode\n", - "Epoch 7198: model parameters saved\n", - "Epoch 7199 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7199: avg_loss appended (1.3125)\n", - "Epoch 7199: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7199: accuracy appended (60.00%)\n", - "Epoch 7199: model set back to train mode\n", - "Epoch 7199: model parameters saved\n", - "Epoch 7200 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7200: avg_loss appended (1.3125)\n", - "Epoch 7200: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7200: accuracy appended (60.00%)\n", - "Epoch 7200: model set back to train mode\n", - "Epoch 7200: model parameters saved\n", - "Epoch 7200/10000, Loss: 1.3125, Accuracy: 60.00%\n", - "Epoch 7201 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7201: avg_loss appended (1.3125)\n", - "Epoch 7201: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7201: accuracy appended (60.00%)\n", - "Epoch 7201: model set back to train mode\n", - "Epoch 7201: model parameters saved\n", - "Epoch 7202 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7202: avg_loss appended (1.3125)\n", - "Epoch 7202: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7202: accuracy appended (60.00%)\n", - "Epoch 7202: model set back to train mode\n", - "Epoch 7202: model parameters saved\n", - "Epoch 7203 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7203: avg_loss appended (1.3125)\n", - "Epoch 7203: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7203: accuracy appended (60.00%)\n", - "Epoch 7203: model set back to train mode\n", - "Epoch 7203: model parameters saved\n", - "Epoch 7204 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7204: avg_loss appended (1.3125)\n", - "Epoch 7204: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7204: accuracy appended (60.00%)\n", - "Epoch 7204: model set back to train mode\n", - "Epoch 7204: model parameters saved\n", - "Epoch 7205 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7205: avg_loss appended (1.3125)\n", - "Epoch 7205: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7205: accuracy appended (60.00%)\n", - "Epoch 7205: model set back to train mode\n", - "Epoch 7205: model parameters saved\n", - "Epoch 7206 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7206: avg_loss appended (1.3125)\n", - "Epoch 7206: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7206: accuracy appended (60.00%)\n", - "Epoch 7206: model set back to train mode\n", - "Epoch 7206: model parameters saved\n", - "Epoch 7207 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7207: avg_loss appended (1.3125)\n", - "Epoch 7207: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7207: accuracy appended (60.00%)\n", - "Epoch 7207: model set back to train mode\n", - "Epoch 7207: model parameters saved\n", - "Epoch 7208 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7208: avg_loss appended (1.3125)\n", - "Epoch 7208: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7208: accuracy appended (60.00%)\n", - "Epoch 7208: model set back to train mode\n", - "Epoch 7208: model parameters saved\n", - "Epoch 7209 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7209: avg_loss appended (1.3125)\n", - "Epoch 7209: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7209: accuracy appended (60.00%)\n", - "Epoch 7209: model set back to train mode\n", - "Epoch 7209: model parameters saved\n", - "Epoch 7210 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7210: avg_loss appended (1.3125)\n", - "Epoch 7210: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7210: accuracy appended (60.00%)\n", - "Epoch 7210: model set back to train mode\n", - "Epoch 7210: model parameters saved\n", - "Epoch 7211 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7211: avg_loss appended (1.3125)\n", - "Epoch 7211: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7211: accuracy appended (60.00%)\n", - "Epoch 7211: model set back to train mode\n", - "Epoch 7211: model parameters saved\n", - "Epoch 7212 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7212: avg_loss appended (1.3125)\n", - "Epoch 7212: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7212: accuracy appended (60.00%)\n", - "Epoch 7212: model set back to train mode\n", - "Epoch 7212: model parameters saved\n", - "Epoch 7213 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7213: avg_loss appended (1.3125)\n", - "Epoch 7213: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7213: accuracy appended (60.00%)\n", - "Epoch 7213: model set back to train mode\n", - "Epoch 7213: model parameters saved\n", - "Epoch 7214 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7214: avg_loss appended (1.3125)\n", - "Epoch 7214: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7214: accuracy appended (60.00%)\n", - "Epoch 7214: model set back to train mode\n", - "Epoch 7214: model parameters saved\n", - "Epoch 7215 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7215: avg_loss appended (1.3125)\n", - "Epoch 7215: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7215: accuracy appended (60.00%)\n", - "Epoch 7215: model set back to train mode\n", - "Epoch 7215: model parameters saved\n", - "Epoch 7216 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7216: avg_loss appended (1.3125)\n", - "Epoch 7216: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7216: accuracy appended (60.00%)\n", - "Epoch 7216: model set back to train mode\n", - "Epoch 7216: model parameters saved\n", - "Epoch 7217 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7217: avg_loss appended (1.3125)\n", - "Epoch 7217: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7217: accuracy appended (60.00%)\n", - "Epoch 7217: model set back to train mode\n", - "Epoch 7217: model parameters saved\n", - "Epoch 7218 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7218: avg_loss appended (1.3125)\n", - "Epoch 7218: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7218: accuracy appended (60.00%)\n", - "Epoch 7218: model set back to train mode\n", - "Epoch 7218: model parameters saved\n", - "Epoch 7219 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7219: avg_loss appended (1.3125)\n", - "Epoch 7219: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7219: accuracy appended (60.00%)\n", - "Epoch 7219: model set back to train mode\n", - "Epoch 7219: model parameters saved\n", - "Epoch 7220 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7220: avg_loss appended (1.3125)\n", - "Epoch 7220: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7220: accuracy appended (60.00%)\n", - "Epoch 7220: model set back to train mode\n", - "Epoch 7220: model parameters saved\n", - "Epoch 7221 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7221: avg_loss appended (1.3125)\n", - "Epoch 7221: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7221: accuracy appended (60.00%)\n", - "Epoch 7221: model set back to train mode\n", - "Epoch 7221: model parameters saved\n", - "Epoch 7222 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7222: avg_loss appended (1.3125)\n", - "Epoch 7222: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7222: accuracy appended (60.00%)\n", - "Epoch 7222: model set back to train mode\n", - "Epoch 7222: model parameters saved\n", - "Epoch 7223 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7223: avg_loss appended (1.3125)\n", - "Epoch 7223: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7223: accuracy appended (60.00%)\n", - "Epoch 7223: model set back to train mode\n", - "Epoch 7223: model parameters saved\n", - "Epoch 7224 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7224: avg_loss appended (1.3125)\n", - "Epoch 7224: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7224: accuracy appended (60.00%)\n", - "Epoch 7224: model set back to train mode\n", - "Epoch 7224: model parameters saved\n", - "Epoch 7225 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7225: avg_loss appended (1.3125)\n", - "Epoch 7225: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7225: accuracy appended (60.00%)\n", - "Epoch 7225: model set back to train mode\n", - "Epoch 7225: model parameters saved\n", - "Epoch 7226 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7226: avg_loss appended (1.3125)\n", - "Epoch 7226: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7226: accuracy appended (60.00%)\n", - "Epoch 7226: model set back to train mode\n", - "Epoch 7226: model parameters saved\n", - "Epoch 7227 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7227: avg_loss appended (1.3125)\n", - "Epoch 7227: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7227: accuracy appended (60.00%)\n", - "Epoch 7227: model set back to train mode\n", - "Epoch 7227: model parameters saved\n", - "Epoch 7228 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7228: avg_loss appended (1.3125)\n", - "Epoch 7228: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7228: accuracy appended (60.00%)\n", - "Epoch 7228: model set back to train mode\n", - "Epoch 7228: model parameters saved\n", - "Epoch 7229 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7229: avg_loss appended (1.3125)\n", - "Epoch 7229: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7229: accuracy appended (60.00%)\n", - "Epoch 7229: model set back to train mode\n", - "Epoch 7229: model parameters saved\n", - "Epoch 7230 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7230: avg_loss appended (1.3125)\n", - "Epoch 7230: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7230: accuracy appended (60.00%)\n", - "Epoch 7230: model set back to train mode\n", - "Epoch 7230: model parameters saved\n", - "Epoch 7231 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7231: avg_loss appended (1.3125)\n", - "Epoch 7231: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7231: accuracy appended (60.00%)\n", - "Epoch 7231: model set back to train mode\n", - "Epoch 7231: model parameters saved\n", - "Epoch 7232 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7232: avg_loss appended (1.3125)\n", - "Epoch 7232: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7232: accuracy appended (60.00%)\n", - "Epoch 7232: model set back to train mode\n", - "Epoch 7232: model parameters saved\n", - "Epoch 7233 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7233: avg_loss appended (1.3125)\n", - "Epoch 7233: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7233: accuracy appended (60.00%)\n", - "Epoch 7233: model set back to train mode\n", - "Epoch 7233: model parameters saved\n", - "Epoch 7234 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7234: avg_loss appended (1.3125)\n", - "Epoch 7234: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7234: accuracy appended (60.00%)\n", - "Epoch 7234: model set back to train mode\n", - "Epoch 7234: model parameters saved\n", - "Epoch 7235 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7235: avg_loss appended (1.3125)\n", - "Epoch 7235: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7235: accuracy appended (60.00%)\n", - "Epoch 7235: model set back to train mode\n", - "Epoch 7235: model parameters saved\n", - "Epoch 7236 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7236: avg_loss appended (1.3125)\n", - "Epoch 7236: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7236: accuracy appended (60.00%)\n", - "Epoch 7236: model set back to train mode\n", - "Epoch 7236: model parameters saved\n", - "Epoch 7237 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7237: avg_loss appended (1.3125)\n", - "Epoch 7237: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7237: accuracy appended (60.00%)\n", - "Epoch 7237: model set back to train mode\n", - "Epoch 7237: model parameters saved\n", - "Epoch 7238 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7238: avg_loss appended (1.3125)\n", - "Epoch 7238: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7238: accuracy appended (60.00%)\n", - "Epoch 7238: model set back to train mode\n", - "Epoch 7238: model parameters saved\n", - "Epoch 7239 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7239: avg_loss appended (1.3125)\n", - "Epoch 7239: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7239: accuracy appended (60.00%)\n", - "Epoch 7239: model set back to train mode\n", - "Epoch 7239: model parameters saved\n", - "Epoch 7240 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7240: avg_loss appended (1.3125)\n", - "Epoch 7240: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7240: accuracy appended (60.00%)\n", - "Epoch 7240: model set back to train mode\n", - "Epoch 7240: model parameters saved\n", - "Epoch 7241 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7241: avg_loss appended (1.3125)\n", - "Epoch 7241: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7241: accuracy appended (60.00%)\n", - "Epoch 7241: model set back to train mode\n", - "Epoch 7241: model parameters saved\n", - "Epoch 7242 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7242: avg_loss appended (1.3125)\n", - "Epoch 7242: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7242: accuracy appended (60.00%)\n", - "Epoch 7242: model set back to train mode\n", - "Epoch 7242: model parameters saved\n", - "Epoch 7243 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7243: avg_loss appended (1.3125)\n", - "Epoch 7243: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7243: accuracy appended (60.00%)\n", - "Epoch 7243: model set back to train mode\n", - "Epoch 7243: model parameters saved\n", - "Epoch 7244 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7244: avg_loss appended (1.3125)\n", - "Epoch 7244: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7244: accuracy appended (60.00%)\n", - "Epoch 7244: model set back to train mode\n", - "Epoch 7244: model parameters saved\n", - "Epoch 7245 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7245: avg_loss appended (1.3125)\n", - "Epoch 7245: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7245: accuracy appended (60.00%)\n", - "Epoch 7245: model set back to train mode\n", - "Epoch 7245: model parameters saved\n", - "Epoch 7246 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7246: avg_loss appended (1.3125)\n", - "Epoch 7246: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7246: accuracy appended (60.00%)\n", - "Epoch 7246: model set back to train mode\n", - "Epoch 7246: model parameters saved\n", - "Epoch 7247 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7247: avg_loss appended (1.3125)\n", - "Epoch 7247: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7247: accuracy appended (60.00%)\n", - "Epoch 7247: model set back to train mode\n", - "Epoch 7247: model parameters saved\n", - "Epoch 7248 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7248: avg_loss appended (1.3125)\n", - "Epoch 7248: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7248: accuracy appended (60.00%)\n", - "Epoch 7248: model set back to train mode\n", - "Epoch 7248: model parameters saved\n", - "Epoch 7249 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7249: avg_loss appended (1.3125)\n", - "Epoch 7249: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7249: accuracy appended (60.00%)\n", - "Epoch 7249: model set back to train mode\n", - "Epoch 7249: model parameters saved\n", - "Epoch 7250 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7250: avg_loss appended (1.3125)\n", - "Epoch 7250: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7250: accuracy appended (60.00%)\n", - "Epoch 7250: model set back to train mode\n", - "Epoch 7250: model parameters saved\n", - "Epoch 7251 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7251: avg_loss appended (1.3125)\n", - "Epoch 7251: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7251: accuracy appended (60.00%)\n", - "Epoch 7251: model set back to train mode\n", - "Epoch 7251: model parameters saved\n", - "Epoch 7252 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7252: avg_loss appended (1.3125)\n", - "Epoch 7252: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7252: accuracy appended (60.00%)\n", - "Epoch 7252: model set back to train mode\n", - "Epoch 7252: model parameters saved\n", - "Epoch 7253 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7253: avg_loss appended (1.3125)\n", - "Epoch 7253: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7253: accuracy appended (60.00%)\n", - "Epoch 7253: model set back to train mode\n", - "Epoch 7253: model parameters saved\n", - "Epoch 7254 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7254: avg_loss appended (1.3125)\n", - "Epoch 7254: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7254: accuracy appended (60.00%)\n", - "Epoch 7254: model set back to train mode\n", - "Epoch 7254: model parameters saved\n", - "Epoch 7255 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7255: avg_loss appended (1.3125)\n", - "Epoch 7255: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7255: accuracy appended (60.00%)\n", - "Epoch 7255: model set back to train mode\n", - "Epoch 7255: model parameters saved\n", - "Epoch 7256 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7256: avg_loss appended (1.3125)\n", - "Epoch 7256: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7256: accuracy appended (60.00%)\n", - "Epoch 7256: model set back to train mode\n", - "Epoch 7256: model parameters saved\n", - "Epoch 7257 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7257: avg_loss appended (1.3125)\n", - "Epoch 7257: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7257: accuracy appended (60.00%)\n", - "Epoch 7257: model set back to train mode\n", - "Epoch 7257: model parameters saved\n", - "Epoch 7258 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7258: avg_loss appended (1.3125)\n", - "Epoch 7258: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7258: accuracy appended (60.00%)\n", - "Epoch 7258: model set back to train mode\n", - "Epoch 7258: model parameters saved\n", - "Epoch 7259 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7259: avg_loss appended (1.3125)\n", - "Epoch 7259: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7259: accuracy appended (60.00%)\n", - "Epoch 7259: model set back to train mode\n", - "Epoch 7259: model parameters saved\n", - "Epoch 7260 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7260: avg_loss appended (1.3125)\n", - "Epoch 7260: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7260: accuracy appended (60.00%)\n", - "Epoch 7260: model set back to train mode\n", - "Epoch 7260: model parameters saved\n", - "Epoch 7261 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7261: avg_loss appended (1.3125)\n", - "Epoch 7261: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7261: accuracy appended (60.00%)\n", - "Epoch 7261: model set back to train mode\n", - "Epoch 7261: model parameters saved\n", - "Epoch 7262 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7262: avg_loss appended (1.3125)\n", - "Epoch 7262: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7262: accuracy appended (60.00%)\n", - "Epoch 7262: model set back to train mode\n", - "Epoch 7262: model parameters saved\n", - "Epoch 7263 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7263: avg_loss appended (1.3125)\n", - "Epoch 7263: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7263: accuracy appended (60.00%)\n", - "Epoch 7263: model set back to train mode\n", - "Epoch 7263: model parameters saved\n", - "Epoch 7264 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7264: avg_loss appended (1.3125)\n", - "Epoch 7264: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7264: accuracy appended (60.00%)\n", - "Epoch 7264: model set back to train mode\n", - "Epoch 7264: model parameters saved\n", - "Epoch 7265 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7265: avg_loss appended (1.3125)\n", - "Epoch 7265: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7265: accuracy appended (60.00%)\n", - "Epoch 7265: model set back to train mode\n", - "Epoch 7265: model parameters saved\n", - "Epoch 7266 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7266: avg_loss appended (1.3125)\n", - "Epoch 7266: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7266: accuracy appended (60.00%)\n", - "Epoch 7266: model set back to train mode\n", - "Epoch 7266: model parameters saved\n", - "Epoch 7267 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7267: avg_loss appended (1.3125)\n", - "Epoch 7267: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7267: accuracy appended (60.00%)\n", - "Epoch 7267: model set back to train mode\n", - "Epoch 7267: model parameters saved\n", - "Epoch 7268 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7268: avg_loss appended (1.3125)\n", - "Epoch 7268: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7268: accuracy appended (60.00%)\n", - "Epoch 7268: model set back to train mode\n", - "Epoch 7268: model parameters saved\n", - "Epoch 7269 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7269: avg_loss appended (1.3125)\n", - "Epoch 7269: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7269: accuracy appended (60.00%)\n", - "Epoch 7269: model set back to train mode\n", - "Epoch 7269: model parameters saved\n", - "Epoch 7270 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7270: avg_loss appended (1.3125)\n", - "Epoch 7270: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7270: accuracy appended (60.00%)\n", - "Epoch 7270: model set back to train mode\n", - "Epoch 7270: model parameters saved\n", - "Epoch 7271 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7271: avg_loss appended (1.3125)\n", - "Epoch 7271: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7271: accuracy appended (60.00%)\n", - "Epoch 7271: model set back to train mode\n", - "Epoch 7271: model parameters saved\n", - "Epoch 7272 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7272: avg_loss appended (1.3125)\n", - "Epoch 7272: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7272: accuracy appended (60.00%)\n", - "Epoch 7272: model set back to train mode\n", - "Epoch 7272: model parameters saved\n", - "Epoch 7273 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7273: avg_loss appended (1.3125)\n", - "Epoch 7273: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7273: accuracy appended (60.00%)\n", - "Epoch 7273: model set back to train mode\n", - "Epoch 7273: model parameters saved\n", - "Epoch 7274 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7274: avg_loss appended (1.3125)\n", - "Epoch 7274: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7274: accuracy appended (60.00%)\n", - "Epoch 7274: model set back to train mode\n", - "Epoch 7274: model parameters saved\n", - "Epoch 7275 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7275: avg_loss appended (1.3125)\n", - "Epoch 7275: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7275: accuracy appended (60.00%)\n", - "Epoch 7275: model set back to train mode\n", - "Epoch 7275: model parameters saved\n", - "Epoch 7276 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7276: avg_loss appended (1.3125)\n", - "Epoch 7276: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7276: accuracy appended (60.00%)\n", - "Epoch 7276: model set back to train mode\n", - "Epoch 7276: model parameters saved\n", - "Epoch 7277 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7277: avg_loss appended (1.3125)\n", - "Epoch 7277: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7277: accuracy appended (60.00%)\n", - "Epoch 7277: model set back to train mode\n", - "Epoch 7277: model parameters saved\n", - "Epoch 7278 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7278: avg_loss appended (1.3125)\n", - "Epoch 7278: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7278: accuracy appended (60.00%)\n", - "Epoch 7278: model set back to train mode\n", - "Epoch 7278: model parameters saved\n", - "Epoch 7279 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7279: avg_loss appended (1.3125)\n", - "Epoch 7279: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7279: accuracy appended (60.00%)\n", - "Epoch 7279: model set back to train mode\n", - "Epoch 7279: model parameters saved\n", - "Epoch 7280 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7280: avg_loss appended (1.3125)\n", - "Epoch 7280: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7280: accuracy appended (60.00%)\n", - "Epoch 7280: model set back to train mode\n", - "Epoch 7280: model parameters saved\n", - "Epoch 7281 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7281: avg_loss appended (1.3125)\n", - "Epoch 7281: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7281: accuracy appended (60.00%)\n", - "Epoch 7281: model set back to train mode\n", - "Epoch 7281: model parameters saved\n", - "Epoch 7282 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7282: avg_loss appended (1.3125)\n", - "Epoch 7282: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7282: accuracy appended (60.00%)\n", - "Epoch 7282: model set back to train mode\n", - "Epoch 7282: model parameters saved\n", - "Epoch 7283 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7283: avg_loss appended (1.3125)\n", - "Epoch 7283: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7283: accuracy appended (60.00%)\n", - "Epoch 7283: model set back to train mode\n", - "Epoch 7283: model parameters saved\n", - "Epoch 7284 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7284: avg_loss appended (1.3125)\n", - "Epoch 7284: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7284: accuracy appended (60.00%)\n", - "Epoch 7284: model set back to train mode\n", - "Epoch 7284: model parameters saved\n", - "Epoch 7285 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7285: avg_loss appended (1.3125)\n", - "Epoch 7285: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7285: accuracy appended (60.00%)\n", - "Epoch 7285: model set back to train mode\n", - "Epoch 7285: model parameters saved\n", - "Epoch 7286 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7286: avg_loss appended (1.3125)\n", - "Epoch 7286: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7286: accuracy appended (60.00%)\n", - "Epoch 7286: model set back to train mode\n", - "Epoch 7286: model parameters saved\n", - "Epoch 7287 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7287: avg_loss appended (1.3125)\n", - "Epoch 7287: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7287: accuracy appended (60.00%)\n", - "Epoch 7287: model set back to train mode\n", - "Epoch 7287: model parameters saved\n", - "Epoch 7288 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7288: avg_loss appended (1.3125)\n", - "Epoch 7288: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7288: accuracy appended (60.00%)\n", - "Epoch 7288: model set back to train mode\n", - "Epoch 7288: model parameters saved\n", - "Epoch 7289 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7289: avg_loss appended (1.3125)\n", - "Epoch 7289: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7289: accuracy appended (60.00%)\n", - "Epoch 7289: model set back to train mode\n", - "Epoch 7289: model parameters saved\n", - "Epoch 7290 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7290: avg_loss appended (1.3125)\n", - "Epoch 7290: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7290: accuracy appended (60.00%)\n", - "Epoch 7290: model set back to train mode\n", - "Epoch 7290: model parameters saved\n", - "Epoch 7291 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7291: avg_loss appended (1.3125)\n", - "Epoch 7291: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7291: accuracy appended (60.00%)\n", - "Epoch 7291: model set back to train mode\n", - "Epoch 7291: model parameters saved\n", - "Epoch 7292 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7292: avg_loss appended (1.3125)\n", - "Epoch 7292: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7292: accuracy appended (60.00%)\n", - "Epoch 7292: model set back to train mode\n", - "Epoch 7292: model parameters saved\n", - "Epoch 7293 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7293: avg_loss appended (1.3125)\n", - "Epoch 7293: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7293: accuracy appended (60.00%)\n", - "Epoch 7293: model set back to train mode\n", - "Epoch 7293: model parameters saved\n", - "Epoch 7294 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7294: avg_loss appended (1.3125)\n", - "Epoch 7294: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7294: accuracy appended (60.00%)\n", - "Epoch 7294: model set back to train mode\n", - "Epoch 7294: model parameters saved\n", - "Epoch 7295 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7295: avg_loss appended (1.3125)\n", - "Epoch 7295: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7295: accuracy appended (60.00%)\n", - "Epoch 7295: model set back to train mode\n", - "Epoch 7295: model parameters saved\n", - "Epoch 7296 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7296: avg_loss appended (1.3125)\n", - "Epoch 7296: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7296: accuracy appended (60.00%)\n", - "Epoch 7296: model set back to train mode\n", - "Epoch 7296: model parameters saved\n", - "Epoch 7297 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7297: avg_loss appended (1.3125)\n", - "Epoch 7297: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7297: accuracy appended (60.00%)\n", - "Epoch 7297: model set back to train mode\n", - "Epoch 7297: model parameters saved\n", - "Epoch 7298 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7298: avg_loss appended (1.3125)\n", - "Epoch 7298: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7298: accuracy appended (60.00%)\n", - "Epoch 7298: model set back to train mode\n", - "Epoch 7298: model parameters saved\n", - "Epoch 7299 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7299: avg_loss appended (1.3125)\n", - "Epoch 7299: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7299: accuracy appended (60.00%)\n", - "Epoch 7299: model set back to train mode\n", - "Epoch 7299: model parameters saved\n", - "Epoch 7300 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7300: avg_loss appended (1.3125)\n", - "Epoch 7300: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7300: accuracy appended (60.00%)\n", - "Epoch 7300: model set back to train mode\n", - "Epoch 7300: model parameters saved\n", - "Epoch 7300/10000, Loss: 1.3125, Accuracy: 60.00%\n", - "Epoch 7301 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7301: avg_loss appended (1.3125)\n", - "Epoch 7301: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7301: accuracy appended (60.00%)\n", - "Epoch 7301: model set back to train mode\n", - "Epoch 7301: model parameters saved\n", - "Epoch 7302 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7302: avg_loss appended (1.3125)\n", - "Epoch 7302: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7302: accuracy appended (60.00%)\n", - "Epoch 7302: model set back to train mode\n", - "Epoch 7302: model parameters saved\n", - "Epoch 7303 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7303: avg_loss appended (1.3125)\n", - "Epoch 7303: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7303: accuracy appended (60.00%)\n", - "Epoch 7303: model set back to train mode\n", - "Epoch 7303: model parameters saved\n", - "Epoch 7304 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7304: avg_loss appended (1.3125)\n", - "Epoch 7304: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7304: accuracy appended (60.00%)\n", - "Epoch 7304: model set back to train mode\n", - "Epoch 7304: model parameters saved\n", - "Epoch 7305 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7305: avg_loss appended (1.3125)\n", - "Epoch 7305: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7305: accuracy appended (60.00%)\n", - "Epoch 7305: model set back to train mode\n", - "Epoch 7305: model parameters saved\n", - "Epoch 7306 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7306: avg_loss appended (1.3125)\n", - "Epoch 7306: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7306: accuracy appended (60.00%)\n", - "Epoch 7306: model set back to train mode\n", - "Epoch 7306: model parameters saved\n", - "Epoch 7307 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7307: avg_loss appended (1.3125)\n", - "Epoch 7307: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7307: accuracy appended (60.00%)\n", - "Epoch 7307: model set back to train mode\n", - "Epoch 7307: model parameters saved\n", - "Epoch 7308 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7308: avg_loss appended (1.3125)\n", - "Epoch 7308: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7308: accuracy appended (60.00%)\n", - "Epoch 7308: model set back to train mode\n", - "Epoch 7308: model parameters saved\n", - "Epoch 7309 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7309: avg_loss appended (1.3125)\n", - "Epoch 7309: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7309: accuracy appended (60.00%)\n", - "Epoch 7309: model set back to train mode\n", - "Epoch 7309: model parameters saved\n", - "Epoch 7310 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7310: avg_loss appended (1.3125)\n", - "Epoch 7310: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7310: accuracy appended (60.00%)\n", - "Epoch 7310: model set back to train mode\n", - "Epoch 7310: model parameters saved\n", - "Epoch 7311 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7311: avg_loss appended (1.3125)\n", - "Epoch 7311: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7311: accuracy appended (60.00%)\n", - "Epoch 7311: model set back to train mode\n", - "Epoch 7311: model parameters saved\n", - "Epoch 7312 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7312: avg_loss appended (1.3125)\n", - "Epoch 7312: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7312: accuracy appended (60.00%)\n", - "Epoch 7312: model set back to train mode\n", - "Epoch 7312: model parameters saved\n", - "Epoch 7313 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7313: avg_loss appended (1.3125)\n", - "Epoch 7313: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7313: accuracy appended (60.00%)\n", - "Epoch 7313: model set back to train mode\n", - "Epoch 7313: model parameters saved\n", - "Epoch 7314 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7314: avg_loss appended (1.3125)\n", - "Epoch 7314: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7314: accuracy appended (60.00%)\n", - "Epoch 7314: model set back to train mode\n", - "Epoch 7314: model parameters saved\n", - "Epoch 7315 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7315: avg_loss appended (1.3125)\n", - "Epoch 7315: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7315: accuracy appended (60.00%)\n", - "Epoch 7315: model set back to train mode\n", - "Epoch 7315: model parameters saved\n", - "Epoch 7316 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7316: avg_loss appended (1.3125)\n", - "Epoch 7316: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7316: accuracy appended (60.00%)\n", - "Epoch 7316: model set back to train mode\n", - "Epoch 7316: model parameters saved\n", - "Epoch 7317 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7317: avg_loss appended (1.3125)\n", - "Epoch 7317: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7317: accuracy appended (60.00%)\n", - "Epoch 7317: model set back to train mode\n", - "Epoch 7317: model parameters saved\n", - "Epoch 7318 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7318: avg_loss appended (1.3125)\n", - "Epoch 7318: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7318: accuracy appended (60.00%)\n", - "Epoch 7318: model set back to train mode\n", - "Epoch 7318: model parameters saved\n", - "Epoch 7319 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7319: avg_loss appended (1.3125)\n", - "Epoch 7319: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7319: accuracy appended (60.00%)\n", - "Epoch 7319: model set back to train mode\n", - "Epoch 7319: model parameters saved\n", - "Epoch 7320 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7320: avg_loss appended (1.3125)\n", - "Epoch 7320: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7320: accuracy appended (60.00%)\n", - "Epoch 7320: model set back to train mode\n", - "Epoch 7320: model parameters saved\n", - "Epoch 7321 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7321: avg_loss appended (1.3125)\n", - "Epoch 7321: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7321: accuracy appended (60.00%)\n", - "Epoch 7321: model set back to train mode\n", - "Epoch 7321: model parameters saved\n", - "Epoch 7322 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7322: avg_loss appended (1.3125)\n", - "Epoch 7322: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7322: accuracy appended (60.00%)\n", - "Epoch 7322: model set back to train mode\n", - "Epoch 7322: model parameters saved\n", - "Epoch 7323 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7323: avg_loss appended (1.3125)\n", - "Epoch 7323: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7323: accuracy appended (60.00%)\n", - "Epoch 7323: model set back to train mode\n", - "Epoch 7323: model parameters saved\n", - "Epoch 7324 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7324: avg_loss appended (1.3125)\n", - "Epoch 7324: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7324: accuracy appended (60.00%)\n", - "Epoch 7324: model set back to train mode\n", - "Epoch 7324: model parameters saved\n", - "Epoch 7325 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7325: avg_loss appended (1.3125)\n", - "Epoch 7325: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7325: accuracy appended (60.00%)\n", - "Epoch 7325: model set back to train mode\n", - "Epoch 7325: model parameters saved\n", - "Epoch 7326 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7326: avg_loss appended (1.3125)\n", - "Epoch 7326: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7326: accuracy appended (60.00%)\n", - "Epoch 7326: model set back to train mode\n", - "Epoch 7326: model parameters saved\n", - "Epoch 7327 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7327: avg_loss appended (1.3125)\n", - "Epoch 7327: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7327: accuracy appended (60.00%)\n", - "Epoch 7327: model set back to train mode\n", - "Epoch 7327: model parameters saved\n", - "Epoch 7328 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7328: avg_loss appended (1.3125)\n", - "Epoch 7328: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7328: accuracy appended (60.00%)\n", - "Epoch 7328: model set back to train mode\n", - "Epoch 7328: model parameters saved\n", - "Epoch 7329 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7329: avg_loss appended (1.3125)\n", - "Epoch 7329: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7329: accuracy appended (60.00%)\n", - "Epoch 7329: model set back to train mode\n", - "Epoch 7329: model parameters saved\n", - "Epoch 7330 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7330: avg_loss appended (1.3125)\n", - "Epoch 7330: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7330: accuracy appended (60.00%)\n", - "Epoch 7330: model set back to train mode\n", - "Epoch 7330: model parameters saved\n", - "Epoch 7331 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7331: avg_loss appended (1.3125)\n", - "Epoch 7331: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7331: accuracy appended (60.00%)\n", - "Epoch 7331: model set back to train mode\n", - "Epoch 7331: model parameters saved\n", - "Epoch 7332 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7332: avg_loss appended (1.3125)\n", - "Epoch 7332: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7332: accuracy appended (60.00%)\n", - "Epoch 7332: model set back to train mode\n", - "Epoch 7332: model parameters saved\n", - "Epoch 7333 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7333: avg_loss appended (1.3125)\n", - "Epoch 7333: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7333: accuracy appended (60.00%)\n", - "Epoch 7333: model set back to train mode\n", - "Epoch 7333: model parameters saved\n", - "Epoch 7334 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7334: avg_loss appended (1.3125)\n", - "Epoch 7334: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7334: accuracy appended (60.00%)\n", - "Epoch 7334: model set back to train mode\n", - "Epoch 7334: model parameters saved\n", - "Epoch 7335 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7335: avg_loss appended (1.3125)\n", - "Epoch 7335: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7335: accuracy appended (60.00%)\n", - "Epoch 7335: model set back to train mode\n", - "Epoch 7335: model parameters saved\n", - "Epoch 7336 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7336: avg_loss appended (1.3125)\n", - "Epoch 7336: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7336: accuracy appended (60.00%)\n", - "Epoch 7336: model set back to train mode\n", - "Epoch 7336: model parameters saved\n", - "Epoch 7337 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7337: avg_loss appended (1.3125)\n", - "Epoch 7337: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7337: accuracy appended (60.00%)\n", - "Epoch 7337: model set back to train mode\n", - "Epoch 7337: model parameters saved\n", - "Epoch 7338 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7338: avg_loss appended (1.3125)\n", - "Epoch 7338: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7338: accuracy appended (60.00%)\n", - "Epoch 7338: model set back to train mode\n", - "Epoch 7338: model parameters saved\n", - "Epoch 7339 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7339: avg_loss appended (1.3125)\n", - "Epoch 7339: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7339: accuracy appended (60.00%)\n", - "Epoch 7339: model set back to train mode\n", - "Epoch 7339: model parameters saved\n", - "Epoch 7340 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7340: avg_loss appended (1.3125)\n", - "Epoch 7340: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7340: accuracy appended (60.00%)\n", - "Epoch 7340: model set back to train mode\n", - "Epoch 7340: model parameters saved\n", - "Epoch 7341 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7341: avg_loss appended (1.3125)\n", - "Epoch 7341: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7341: accuracy appended (60.00%)\n", - "Epoch 7341: model set back to train mode\n", - "Epoch 7341: model parameters saved\n", - "Epoch 7342 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7342: avg_loss appended (1.3125)\n", - "Epoch 7342: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7342: accuracy appended (60.00%)\n", - "Epoch 7342: model set back to train mode\n", - "Epoch 7342: model parameters saved\n", - "Epoch 7343 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7343: avg_loss appended (1.3125)\n", - "Epoch 7343: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7343: accuracy appended (60.00%)\n", - "Epoch 7343: model set back to train mode\n", - "Epoch 7343: model parameters saved\n", - "Epoch 7344 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7344: avg_loss appended (1.3125)\n", - "Epoch 7344: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7344: accuracy appended (60.00%)\n", - "Epoch 7344: model set back to train mode\n", - "Epoch 7344: model parameters saved\n", - "Epoch 7345 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7345: avg_loss appended (1.3125)\n", - "Epoch 7345: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7345: accuracy appended (60.00%)\n", - "Epoch 7345: model set back to train mode\n", - "Epoch 7345: model parameters saved\n", - "Epoch 7346 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7346: avg_loss appended (1.3125)\n", - "Epoch 7346: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7346: accuracy appended (60.00%)\n", - "Epoch 7346: model set back to train mode\n", - "Epoch 7346: model parameters saved\n", - "Epoch 7347 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7347: avg_loss appended (1.3125)\n", - "Epoch 7347: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7347: accuracy appended (60.00%)\n", - "Epoch 7347: model set back to train mode\n", - "Epoch 7347: model parameters saved\n", - "Epoch 7348 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7348: avg_loss appended (1.3125)\n", - "Epoch 7348: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7348: accuracy appended (60.00%)\n", - "Epoch 7348: model set back to train mode\n", - "Epoch 7348: model parameters saved\n", - "Epoch 7349 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7349: avg_loss appended (1.3125)\n", - "Epoch 7349: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7349: accuracy appended (60.00%)\n", - "Epoch 7349: model set back to train mode\n", - "Epoch 7349: model parameters saved\n", - "Epoch 7350 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7350: avg_loss appended (1.3125)\n", - "Epoch 7350: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7350: accuracy appended (60.00%)\n", - "Epoch 7350: model set back to train mode\n", - "Epoch 7350: model parameters saved\n", - "Epoch 7351 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7351: avg_loss appended (1.3125)\n", - "Epoch 7351: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7351: accuracy appended (60.00%)\n", - "Epoch 7351: model set back to train mode\n", - "Epoch 7351: model parameters saved\n", - "Epoch 7352 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7352: avg_loss appended (1.3125)\n", - "Epoch 7352: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7352: accuracy appended (60.00%)\n", - "Epoch 7352: model set back to train mode\n", - "Epoch 7352: model parameters saved\n", - "Epoch 7353 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7353: avg_loss appended (1.3125)\n", - "Epoch 7353: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7353: accuracy appended (60.00%)\n", - "Epoch 7353: model set back to train mode\n", - "Epoch 7353: model parameters saved\n", - "Epoch 7354 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7354: avg_loss appended (1.3125)\n", - "Epoch 7354: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7354: accuracy appended (60.00%)\n", - "Epoch 7354: model set back to train mode\n", - "Epoch 7354: model parameters saved\n", - "Epoch 7355 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7355: avg_loss appended (1.3125)\n", - "Epoch 7355: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7355: accuracy appended (60.00%)\n", - "Epoch 7355: model set back to train mode\n", - "Epoch 7355: model parameters saved\n", - "Epoch 7356 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7356: avg_loss appended (1.3125)\n", - "Epoch 7356: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7356: accuracy appended (60.00%)\n", - "Epoch 7356: model set back to train mode\n", - "Epoch 7356: model parameters saved\n", - "Epoch 7357 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7357: avg_loss appended (1.3125)\n", - "Epoch 7357: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7357: accuracy appended (60.00%)\n", - "Epoch 7357: model set back to train mode\n", - "Epoch 7357: model parameters saved\n", - "Epoch 7358 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7358: avg_loss appended (1.3125)\n", - "Epoch 7358: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7358: accuracy appended (60.00%)\n", - "Epoch 7358: model set back to train mode\n", - "Epoch 7358: model parameters saved\n", - "Epoch 7359 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7359: avg_loss appended (1.3125)\n", - "Epoch 7359: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7359: accuracy appended (60.00%)\n", - "Epoch 7359: model set back to train mode\n", - "Epoch 7359: model parameters saved\n", - "Epoch 7360 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7360: avg_loss appended (1.3125)\n", - "Epoch 7360: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7360: accuracy appended (60.00%)\n", - "Epoch 7360: model set back to train mode\n", - "Epoch 7360: model parameters saved\n", - "Epoch 7361 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7361: avg_loss appended (1.3125)\n", - "Epoch 7361: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7361: accuracy appended (60.00%)\n", - "Epoch 7361: model set back to train mode\n", - "Epoch 7361: model parameters saved\n", - "Epoch 7362 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7362: avg_loss appended (1.3125)\n", - "Epoch 7362: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7362: accuracy appended (60.00%)\n", - "Epoch 7362: model set back to train mode\n", - "Epoch 7362: model parameters saved\n", - "Epoch 7363 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7363: avg_loss appended (1.3125)\n", - "Epoch 7363: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7363: accuracy appended (60.00%)\n", - "Epoch 7363: model set back to train mode\n", - "Epoch 7363: model parameters saved\n", - "Epoch 7364 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7364: avg_loss appended (1.3125)\n", - "Epoch 7364: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7364: accuracy appended (60.00%)\n", - "Epoch 7364: model set back to train mode\n", - "Epoch 7364: model parameters saved\n", - "Epoch 7365 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7365: avg_loss appended (1.3125)\n", - "Epoch 7365: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7365: accuracy appended (60.00%)\n", - "Epoch 7365: model set back to train mode\n", - "Epoch 7365: model parameters saved\n", - "Epoch 7366 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7366: avg_loss appended (1.3125)\n", - "Epoch 7366: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7366: accuracy appended (60.00%)\n", - "Epoch 7366: model set back to train mode\n", - "Epoch 7366: model parameters saved\n", - "Epoch 7367 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7367: avg_loss appended (1.3125)\n", - "Epoch 7367: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7367: accuracy appended (60.00%)\n", - "Epoch 7367: model set back to train mode\n", - "Epoch 7367: model parameters saved\n", - "Epoch 7368 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7368: avg_loss appended (1.3125)\n", - "Epoch 7368: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7368: accuracy appended (60.00%)\n", - "Epoch 7368: model set back to train mode\n", - "Epoch 7368: model parameters saved\n", - "Epoch 7369 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7369: avg_loss appended (1.3125)\n", - "Epoch 7369: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7369: accuracy appended (60.00%)\n", - "Epoch 7369: model set back to train mode\n", - "Epoch 7369: model parameters saved\n", - "Epoch 7370 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7370: avg_loss appended (1.3125)\n", - "Epoch 7370: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7370: accuracy appended (60.00%)\n", - "Epoch 7370: model set back to train mode\n", - "Epoch 7370: model parameters saved\n", - "Epoch 7371 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7371: avg_loss appended (1.3125)\n", - "Epoch 7371: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7371: accuracy appended (60.00%)\n", - "Epoch 7371: model set back to train mode\n", - "Epoch 7371: model parameters saved\n", - "Epoch 7372 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7372: avg_loss appended (1.3125)\n", - "Epoch 7372: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7372: accuracy appended (60.00%)\n", - "Epoch 7372: model set back to train mode\n", - "Epoch 7372: model parameters saved\n", - "Epoch 7373 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7373: avg_loss appended (1.3125)\n", - "Epoch 7373: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7373: accuracy appended (60.00%)\n", - "Epoch 7373: model set back to train mode\n", - "Epoch 7373: model parameters saved\n", - "Epoch 7374 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7374: avg_loss appended (1.3125)\n", - "Epoch 7374: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7374: accuracy appended (60.00%)\n", - "Epoch 7374: model set back to train mode\n", - "Epoch 7374: model parameters saved\n", - "Epoch 7375 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7375: avg_loss appended (1.3125)\n", - "Epoch 7375: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7375: accuracy appended (60.00%)\n", - "Epoch 7375: model set back to train mode\n", - "Epoch 7375: model parameters saved\n", - "Epoch 7376 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7376: avg_loss appended (1.3125)\n", - "Epoch 7376: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7376: accuracy appended (60.00%)\n", - "Epoch 7376: model set back to train mode\n", - "Epoch 7376: model parameters saved\n", - "Epoch 7377 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7377: avg_loss appended (1.3125)\n", - "Epoch 7377: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7377: accuracy appended (60.00%)\n", - "Epoch 7377: model set back to train mode\n", - "Epoch 7377: model parameters saved\n", - "Epoch 7378 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7378: avg_loss appended (1.3125)\n", - "Epoch 7378: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7378: accuracy appended (60.00%)\n", - "Epoch 7378: model set back to train mode\n", - "Epoch 7378: model parameters saved\n", - "Epoch 7379 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7379: avg_loss appended (1.3125)\n", - "Epoch 7379: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7379: accuracy appended (60.00%)\n", - "Epoch 7379: model set back to train mode\n", - "Epoch 7379: model parameters saved\n", - "Epoch 7380 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7380: avg_loss appended (1.3125)\n", - "Epoch 7380: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7380: accuracy appended (60.00%)\n", - "Epoch 7380: model set back to train mode\n", - "Epoch 7380: model parameters saved\n", - "Epoch 7381 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7381: avg_loss appended (1.3125)\n", - "Epoch 7381: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7381: accuracy appended (60.00%)\n", - "Epoch 7381: model set back to train mode\n", - "Epoch 7381: model parameters saved\n", - "Epoch 7382 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7382: avg_loss appended (1.3125)\n", - "Epoch 7382: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7382: accuracy appended (60.00%)\n", - "Epoch 7382: model set back to train mode\n", - "Epoch 7382: model parameters saved\n", - "Epoch 7383 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7383: avg_loss appended (1.3125)\n", - "Epoch 7383: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7383: accuracy appended (60.00%)\n", - "Epoch 7383: model set back to train mode\n", - "Epoch 7383: model parameters saved\n", - "Epoch 7384 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7384: avg_loss appended (1.3125)\n", - "Epoch 7384: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7384: accuracy appended (60.00%)\n", - "Epoch 7384: model set back to train mode\n", - "Epoch 7384: model parameters saved\n", - "Epoch 7385 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7385: avg_loss appended (1.3125)\n", - "Epoch 7385: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7385: accuracy appended (60.00%)\n", - "Epoch 7385: model set back to train mode\n", - "Epoch 7385: model parameters saved\n", - "Epoch 7386 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7386: avg_loss appended (1.3125)\n", - "Epoch 7386: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7386: accuracy appended (60.00%)\n", - "Epoch 7386: model set back to train mode\n", - "Epoch 7386: model parameters saved\n", - "Epoch 7387 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7387: avg_loss appended (1.3125)\n", - "Epoch 7387: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7387: accuracy appended (60.00%)\n", - "Epoch 7387: model set back to train mode\n", - "Epoch 7387: model parameters saved\n", - "Epoch 7388 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7388: avg_loss appended (1.3125)\n", - "Epoch 7388: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7388: accuracy appended (60.00%)\n", - "Epoch 7388: model set back to train mode\n", - "Epoch 7388: model parameters saved\n", - "Epoch 7389 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7389: avg_loss appended (1.3125)\n", - "Epoch 7389: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7389: accuracy appended (60.00%)\n", - "Epoch 7389: model set back to train mode\n", - "Epoch 7389: model parameters saved\n", - "Epoch 7390 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7390: avg_loss appended (1.3125)\n", - "Epoch 7390: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7390: accuracy appended (60.00%)\n", - "Epoch 7390: model set back to train mode\n", - "Epoch 7390: model parameters saved\n", - "Epoch 7391 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7391: avg_loss appended (1.3125)\n", - "Epoch 7391: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7391: accuracy appended (60.00%)\n", - "Epoch 7391: model set back to train mode\n", - "Epoch 7391: model parameters saved\n", - "Epoch 7392 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7392: avg_loss appended (1.3125)\n", - "Epoch 7392: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7392: accuracy appended (60.00%)\n", - "Epoch 7392: model set back to train mode\n", - "Epoch 7392: model parameters saved\n", - "Epoch 7393 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7393: avg_loss appended (1.3125)\n", - "Epoch 7393: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7393: accuracy appended (60.00%)\n", - "Epoch 7393: model set back to train mode\n", - "Epoch 7393: model parameters saved\n", - "Epoch 7394 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7394: avg_loss appended (1.3125)\n", - "Epoch 7394: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7394: accuracy appended (60.00%)\n", - "Epoch 7394: model set back to train mode\n", - "Epoch 7394: model parameters saved\n", - "Epoch 7395 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7395: avg_loss appended (1.3125)\n", - "Epoch 7395: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7395: accuracy appended (60.00%)\n", - "Epoch 7395: model set back to train mode\n", - "Epoch 7395: model parameters saved\n", - "Epoch 7396 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7396: avg_loss appended (1.3125)\n", - "Epoch 7396: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7396: accuracy appended (60.00%)\n", - "Epoch 7396: model set back to train mode\n", - "Epoch 7396: model parameters saved\n", - "Epoch 7397 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7397: avg_loss appended (1.3125)\n", - "Epoch 7397: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7397: accuracy appended (60.00%)\n", - "Epoch 7397: model set back to train mode\n", - "Epoch 7397: model parameters saved\n", - "Epoch 7398 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7398: avg_loss appended (1.3125)\n", - "Epoch 7398: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7398: accuracy appended (60.00%)\n", - "Epoch 7398: model set back to train mode\n", - "Epoch 7398: model parameters saved\n", - "Epoch 7399 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7399: avg_loss appended (1.3125)\n", - "Epoch 7399: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7399: accuracy appended (60.00%)\n", - "Epoch 7399: model set back to train mode\n", - "Epoch 7399: model parameters saved\n", - "Epoch 7400 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7400: avg_loss appended (1.3125)\n", - "Epoch 7400: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7400: accuracy appended (60.00%)\n", - "Epoch 7400: model set back to train mode\n", - "Epoch 7400: model parameters saved\n", - "Epoch 7400/10000, Loss: 1.3125, Accuracy: 60.00%\n", - "Epoch 7401 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7401: avg_loss appended (1.3125)\n", - "Epoch 7401: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7401: accuracy appended (60.00%)\n", - "Epoch 7401: model set back to train mode\n", - "Epoch 7401: model parameters saved\n", - "Epoch 7402 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7402: avg_loss appended (1.3125)\n", - "Epoch 7402: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7402: accuracy appended (60.00%)\n", - "Epoch 7402: model set back to train mode\n", - "Epoch 7402: model parameters saved\n", - "Epoch 7403 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7403: avg_loss appended (1.3125)\n", - "Epoch 7403: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7403: accuracy appended (60.00%)\n", - "Epoch 7403: model set back to train mode\n", - "Epoch 7403: model parameters saved\n", - "Epoch 7404 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7404: avg_loss appended (1.3125)\n", - "Epoch 7404: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7404: accuracy appended (60.00%)\n", - "Epoch 7404: model set back to train mode\n", - "Epoch 7404: model parameters saved\n", - "Epoch 7405 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7405: avg_loss appended (1.3125)\n", - "Epoch 7405: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7405: accuracy appended (60.00%)\n", - "Epoch 7405: model set back to train mode\n", - "Epoch 7405: model parameters saved\n", - "Epoch 7406 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7406: avg_loss appended (1.3125)\n", - "Epoch 7406: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7406: accuracy appended (60.00%)\n", - "Epoch 7406: model set back to train mode\n", - "Epoch 7406: model parameters saved\n", - "Epoch 7407 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7407: avg_loss appended (1.3125)\n", - "Epoch 7407: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7407: accuracy appended (60.00%)\n", - "Epoch 7407: model set back to train mode\n", - "Epoch 7407: model parameters saved\n", - "Epoch 7408 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7408: avg_loss appended (1.3125)\n", - "Epoch 7408: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7408: accuracy appended (60.00%)\n", - "Epoch 7408: model set back to train mode\n", - "Epoch 7408: model parameters saved\n", - "Epoch 7409 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7409: avg_loss appended (1.3125)\n", - "Epoch 7409: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7409: accuracy appended (60.00%)\n", - "Epoch 7409: model set back to train mode\n", - "Epoch 7409: model parameters saved\n", - "Epoch 7410 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7410: avg_loss appended (1.3125)\n", - "Epoch 7410: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7410: accuracy appended (60.00%)\n", - "Epoch 7410: model set back to train mode\n", - "Epoch 7410: model parameters saved\n", - "Epoch 7411 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7411: avg_loss appended (1.3125)\n", - "Epoch 7411: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7411: accuracy appended (60.00%)\n", - "Epoch 7411: model set back to train mode\n", - "Epoch 7411: model parameters saved\n", - "Epoch 7412 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7412: avg_loss appended (1.3125)\n", - "Epoch 7412: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7412: accuracy appended (60.00%)\n", - "Epoch 7412: model set back to train mode\n", - "Epoch 7412: model parameters saved\n", - "Epoch 7413 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7413: avg_loss appended (1.3125)\n", - "Epoch 7413: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7413: accuracy appended (60.00%)\n", - "Epoch 7413: model set back to train mode\n", - "Epoch 7413: model parameters saved\n", - "Epoch 7414 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7414: avg_loss appended (1.3125)\n", - "Epoch 7414: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7414: accuracy appended (60.00%)\n", - "Epoch 7414: model set back to train mode\n", - "Epoch 7414: model parameters saved\n", - "Epoch 7415 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7415: avg_loss appended (1.3125)\n", - "Epoch 7415: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7415: accuracy appended (60.00%)\n", - "Epoch 7415: model set back to train mode\n", - "Epoch 7415: model parameters saved\n", - "Epoch 7416 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7416: avg_loss appended (1.3125)\n", - "Epoch 7416: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7416: accuracy appended (60.00%)\n", - "Epoch 7416: model set back to train mode\n", - "Epoch 7416: model parameters saved\n", - "Epoch 7417 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7417: avg_loss appended (1.3125)\n", - "Epoch 7417: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7417: accuracy appended (60.00%)\n", - "Epoch 7417: model set back to train mode\n", - "Epoch 7417: model parameters saved\n", - "Epoch 7418 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7418: avg_loss appended (1.3125)\n", - "Epoch 7418: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7418: accuracy appended (60.00%)\n", - "Epoch 7418: model set back to train mode\n", - "Epoch 7418: model parameters saved\n", - "Epoch 7419 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7419: avg_loss appended (1.3125)\n", - "Epoch 7419: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7419: accuracy appended (60.00%)\n", - "Epoch 7419: model set back to train mode\n", - "Epoch 7419: model parameters saved\n", - "Epoch 7420 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7420: avg_loss appended (1.3125)\n", - "Epoch 7420: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7420: accuracy appended (60.00%)\n", - "Epoch 7420: model set back to train mode\n", - "Epoch 7420: model parameters saved\n", - "Epoch 7421 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7421: avg_loss appended (1.3125)\n", - "Epoch 7421: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7421: accuracy appended (60.00%)\n", - "Epoch 7421: model set back to train mode\n", - "Epoch 7421: model parameters saved\n", - "Epoch 7422 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7422: avg_loss appended (1.3125)\n", - "Epoch 7422: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7422: accuracy appended (60.00%)\n", - "Epoch 7422: model set back to train mode\n", - "Epoch 7422: model parameters saved\n", - "Epoch 7423 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7423: avg_loss appended (1.3125)\n", - "Epoch 7423: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7423: accuracy appended (60.00%)\n", - "Epoch 7423: model set back to train mode\n", - "Epoch 7423: model parameters saved\n", - "Epoch 7424 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7424: avg_loss appended (1.3125)\n", - "Epoch 7424: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7424: accuracy appended (60.00%)\n", - "Epoch 7424: model set back to train mode\n", - "Epoch 7424: model parameters saved\n", - "Epoch 7425 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7425: avg_loss appended (1.3125)\n", - "Epoch 7425: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7425: accuracy appended (60.00%)\n", - "Epoch 7425: model set back to train mode\n", - "Epoch 7425: model parameters saved\n", - "Epoch 7426 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7426: avg_loss appended (1.3125)\n", - "Epoch 7426: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7426: accuracy appended (60.00%)\n", - "Epoch 7426: model set back to train mode\n", - "Epoch 7426: model parameters saved\n", - "Epoch 7427 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7427: avg_loss appended (1.3125)\n", - "Epoch 7427: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7427: accuracy appended (60.00%)\n", - "Epoch 7427: model set back to train mode\n", - "Epoch 7427: model parameters saved\n", - "Epoch 7428 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7428: avg_loss appended (1.3125)\n", - "Epoch 7428: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7428: accuracy appended (60.00%)\n", - "Epoch 7428: model set back to train mode\n", - "Epoch 7428: model parameters saved\n", - "Epoch 7429 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7429: avg_loss appended (1.3125)\n", - "Epoch 7429: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7429: accuracy appended (60.00%)\n", - "Epoch 7429: model set back to train mode\n", - "Epoch 7429: model parameters saved\n", - "Epoch 7430 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7430: avg_loss appended (1.3125)\n", - "Epoch 7430: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7430: accuracy appended (60.00%)\n", - "Epoch 7430: model set back to train mode\n", - "Epoch 7430: model parameters saved\n", - "Epoch 7431 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7431: avg_loss appended (1.3125)\n", - "Epoch 7431: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7431: accuracy appended (60.00%)\n", - "Epoch 7431: model set back to train mode\n", - "Epoch 7431: model parameters saved\n", - "Epoch 7432 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7432: avg_loss appended (1.3125)\n", - "Epoch 7432: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7432: accuracy appended (60.00%)\n", - "Epoch 7432: model set back to train mode\n", - "Epoch 7432: model parameters saved\n", - "Epoch 7433 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7433: avg_loss appended (1.3125)\n", - "Epoch 7433: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7433: accuracy appended (60.00%)\n", - "Epoch 7433: model set back to train mode\n", - "Epoch 7433: model parameters saved\n", - "Epoch 7434 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7434: avg_loss appended (1.3125)\n", - "Epoch 7434: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7434: accuracy appended (60.00%)\n", - "Epoch 7434: model set back to train mode\n", - "Epoch 7434: model parameters saved\n", - "Epoch 7435 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7435: avg_loss appended (1.3125)\n", - "Epoch 7435: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7435: accuracy appended (60.00%)\n", - "Epoch 7435: model set back to train mode\n", - "Epoch 7435: model parameters saved\n", - "Epoch 7436 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7436: avg_loss appended (1.3125)\n", - "Epoch 7436: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7436: accuracy appended (60.00%)\n", - "Epoch 7436: model set back to train mode\n", - "Epoch 7436: model parameters saved\n", - "Epoch 7437 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7437: avg_loss appended (1.3125)\n", - "Epoch 7437: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7437: accuracy appended (60.00%)\n", - "Epoch 7437: model set back to train mode\n", - "Epoch 7437: model parameters saved\n", - "Epoch 7438 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7438: avg_loss appended (1.3125)\n", - "Epoch 7438: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7438: accuracy appended (60.00%)\n", - "Epoch 7438: model set back to train mode\n", - "Epoch 7438: model parameters saved\n", - "Epoch 7439 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7439: avg_loss appended (1.3125)\n", - "Epoch 7439: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7439: accuracy appended (60.00%)\n", - "Epoch 7439: model set back to train mode\n", - "Epoch 7439: model parameters saved\n", - "Epoch 7440 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7440: avg_loss appended (1.3125)\n", - "Epoch 7440: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7440: accuracy appended (60.00%)\n", - "Epoch 7440: model set back to train mode\n", - "Epoch 7440: model parameters saved\n", - "Epoch 7441 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7441: avg_loss appended (1.3125)\n", - "Epoch 7441: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7441: accuracy appended (60.00%)\n", - "Epoch 7441: model set back to train mode\n", - "Epoch 7441: model parameters saved\n", - "Epoch 7442 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7442: avg_loss appended (1.3125)\n", - "Epoch 7442: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7442: accuracy appended (60.00%)\n", - "Epoch 7442: model set back to train mode\n", - "Epoch 7442: model parameters saved\n", - "Epoch 7443 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7443: avg_loss appended (1.3125)\n", - "Epoch 7443: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7443: accuracy appended (60.00%)\n", - "Epoch 7443: model set back to train mode\n", - "Epoch 7443: model parameters saved\n", - "Epoch 7444 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7444: avg_loss appended (1.3125)\n", - "Epoch 7444: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7444: accuracy appended (60.00%)\n", - "Epoch 7444: model set back to train mode\n", - "Epoch 7444: model parameters saved\n", - "Epoch 7445 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7445: avg_loss appended (1.3125)\n", - "Epoch 7445: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7445: accuracy appended (60.00%)\n", - "Epoch 7445: model set back to train mode\n", - "Epoch 7445: model parameters saved\n", - "Epoch 7446 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7446: avg_loss appended (1.3125)\n", - "Epoch 7446: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7446: accuracy appended (60.00%)\n", - "Epoch 7446: model set back to train mode\n", - "Epoch 7446: model parameters saved\n", - "Epoch 7447 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7447: avg_loss appended (1.3125)\n", - "Epoch 7447: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7447: accuracy appended (60.00%)\n", - "Epoch 7447: model set back to train mode\n", - "Epoch 7447: model parameters saved\n", - "Epoch 7448 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7448: avg_loss appended (1.3125)\n", - "Epoch 7448: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7448: accuracy appended (60.00%)\n", - "Epoch 7448: model set back to train mode\n", - "Epoch 7448: model parameters saved\n", - "Epoch 7449 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7449: avg_loss appended (1.3125)\n", - "Epoch 7449: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7449: accuracy appended (60.00%)\n", - "Epoch 7449: model set back to train mode\n", - "Epoch 7449: model parameters saved\n", - "Epoch 7450 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7450: avg_loss appended (1.3125)\n", - "Epoch 7450: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7450: accuracy appended (60.00%)\n", - "Epoch 7450: model set back to train mode\n", - "Epoch 7450: model parameters saved\n", - "Epoch 7451 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7451: avg_loss appended (1.3125)\n", - "Epoch 7451: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7451: accuracy appended (60.00%)\n", - "Epoch 7451: model set back to train mode\n", - "Epoch 7451: model parameters saved\n", - "Epoch 7452 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7452: avg_loss appended (1.3125)\n", - "Epoch 7452: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7452: accuracy appended (60.00%)\n", - "Epoch 7452: model set back to train mode\n", - "Epoch 7452: model parameters saved\n", - "Epoch 7453 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7453: avg_loss appended (1.3125)\n", - "Epoch 7453: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7453: accuracy appended (60.00%)\n", - "Epoch 7453: model set back to train mode\n", - "Epoch 7453: model parameters saved\n", - "Epoch 7454 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7454: avg_loss appended (1.3125)\n", - "Epoch 7454: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7454: accuracy appended (60.00%)\n", - "Epoch 7454: model set back to train mode\n", - "Epoch 7454: model parameters saved\n", - "Epoch 7455 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7455: avg_loss appended (1.3125)\n", - "Epoch 7455: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7455: accuracy appended (60.00%)\n", - "Epoch 7455: model set back to train mode\n", - "Epoch 7455: model parameters saved\n", - "Epoch 7456 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7456: avg_loss appended (1.3125)\n", - "Epoch 7456: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7456: accuracy appended (60.00%)\n", - "Epoch 7456: model set back to train mode\n", - "Epoch 7456: model parameters saved\n", - "Epoch 7457 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7457: avg_loss appended (1.3125)\n", - "Epoch 7457: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7457: accuracy appended (60.00%)\n", - "Epoch 7457: model set back to train mode\n", - "Epoch 7457: model parameters saved\n", - "Epoch 7458 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7458: avg_loss appended (1.3125)\n", - "Epoch 7458: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7458: accuracy appended (60.00%)\n", - "Epoch 7458: model set back to train mode\n", - "Epoch 7458: model parameters saved\n", - "Epoch 7459 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7459: avg_loss appended (1.3125)\n", - "Epoch 7459: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7459: accuracy appended (60.00%)\n", - "Epoch 7459: model set back to train mode\n", - "Epoch 7459: model parameters saved\n", - "Epoch 7460 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7460: avg_loss appended (1.3125)\n", - "Epoch 7460: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7460: accuracy appended (60.00%)\n", - "Epoch 7460: model set back to train mode\n", - "Epoch 7460: model parameters saved\n", - "Epoch 7461 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7461: avg_loss appended (1.3125)\n", - "Epoch 7461: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7461: accuracy appended (60.00%)\n", - "Epoch 7461: model set back to train mode\n", - "Epoch 7461: model parameters saved\n", - "Epoch 7462 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7462: avg_loss appended (1.3125)\n", - "Epoch 7462: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7462: accuracy appended (60.00%)\n", - "Epoch 7462: model set back to train mode\n", - "Epoch 7462: model parameters saved\n", - "Epoch 7463 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7463: avg_loss appended (1.3125)\n", - "Epoch 7463: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7463: accuracy appended (60.00%)\n", - "Epoch 7463: model set back to train mode\n", - "Epoch 7463: model parameters saved\n", - "Epoch 7464 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7464: avg_loss appended (1.3125)\n", - "Epoch 7464: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7464: accuracy appended (60.00%)\n", - "Epoch 7464: model set back to train mode\n", - "Epoch 7464: model parameters saved\n", - "Epoch 7465 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7465: avg_loss appended (1.3125)\n", - "Epoch 7465: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7465: accuracy appended (60.00%)\n", - "Epoch 7465: model set back to train mode\n", - "Epoch 7465: model parameters saved\n", - "Epoch 7466 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7466: avg_loss appended (1.3125)\n", - "Epoch 7466: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7466: accuracy appended (60.00%)\n", - "Epoch 7466: model set back to train mode\n", - "Epoch 7466: model parameters saved\n", - "Epoch 7467 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7467: avg_loss appended (1.3125)\n", - "Epoch 7467: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7467: accuracy appended (60.00%)\n", - "Epoch 7467: model set back to train mode\n", - "Epoch 7467: model parameters saved\n", - "Epoch 7468 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7468: avg_loss appended (1.3125)\n", - "Epoch 7468: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7468: accuracy appended (60.00%)\n", - "Epoch 7468: model set back to train mode\n", - "Epoch 7468: model parameters saved\n", - "Epoch 7469 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7469: avg_loss appended (1.3125)\n", - "Epoch 7469: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7469: accuracy appended (60.00%)\n", - "Epoch 7469: model set back to train mode\n", - "Epoch 7469: model parameters saved\n", - "Epoch 7470 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7470: avg_loss appended (1.3125)\n", - "Epoch 7470: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7470: accuracy appended (60.00%)\n", - "Epoch 7470: model set back to train mode\n", - "Epoch 7470: model parameters saved\n", - "Epoch 7471 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7471: avg_loss appended (1.3125)\n", - "Epoch 7471: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7471: accuracy appended (60.00%)\n", - "Epoch 7471: model set back to train mode\n", - "Epoch 7471: model parameters saved\n", - "Epoch 7472 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7472: avg_loss appended (1.3125)\n", - "Epoch 7472: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7472: accuracy appended (60.00%)\n", - "Epoch 7472: model set back to train mode\n", - "Epoch 7472: model parameters saved\n", - "Epoch 7473 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7473: avg_loss appended (1.3125)\n", - "Epoch 7473: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7473: accuracy appended (60.00%)\n", - "Epoch 7473: model set back to train mode\n", - "Epoch 7473: model parameters saved\n", - "Epoch 7474 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7474: avg_loss appended (1.3125)\n", - "Epoch 7474: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7474: accuracy appended (60.00%)\n", - "Epoch 7474: model set back to train mode\n", - "Epoch 7474: model parameters saved\n", - "Epoch 7475 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7475: avg_loss appended (1.3125)\n", - "Epoch 7475: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7475: accuracy appended (60.00%)\n", - "Epoch 7475: model set back to train mode\n", - "Epoch 7475: model parameters saved\n", - "Epoch 7476 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7476: avg_loss appended (1.3125)\n", - "Epoch 7476: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7476: accuracy appended (60.00%)\n", - "Epoch 7476: model set back to train mode\n", - "Epoch 7476: model parameters saved\n", - "Epoch 7477 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7477: avg_loss appended (1.3125)\n", - "Epoch 7477: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7477: accuracy appended (60.00%)\n", - "Epoch 7477: model set back to train mode\n", - "Epoch 7477: model parameters saved\n", - "Epoch 7478 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7478: avg_loss appended (1.3125)\n", - "Epoch 7478: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7478: accuracy appended (60.00%)\n", - "Epoch 7478: model set back to train mode\n", - "Epoch 7478: model parameters saved\n", - "Epoch 7479 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7479: avg_loss appended (1.3125)\n", - "Epoch 7479: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7479: accuracy appended (60.00%)\n", - "Epoch 7479: model set back to train mode\n", - "Epoch 7479: model parameters saved\n", - "Epoch 7480 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7480: avg_loss appended (1.3125)\n", - "Epoch 7480: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7480: accuracy appended (60.00%)\n", - "Epoch 7480: model set back to train mode\n", - "Epoch 7480: model parameters saved\n", - "Epoch 7481 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7481: avg_loss appended (1.3125)\n", - "Epoch 7481: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7481: accuracy appended (60.00%)\n", - "Epoch 7481: model set back to train mode\n", - "Epoch 7481: model parameters saved\n", - "Epoch 7482 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7482: avg_loss appended (1.3125)\n", - "Epoch 7482: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7482: accuracy appended (60.00%)\n", - "Epoch 7482: model set back to train mode\n", - "Epoch 7482: model parameters saved\n", - "Epoch 7483 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7483: avg_loss appended (1.3125)\n", - "Epoch 7483: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7483: accuracy appended (60.00%)\n", - "Epoch 7483: model set back to train mode\n", - "Epoch 7483: model parameters saved\n", - "Epoch 7484 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7484: avg_loss appended (1.3125)\n", - "Epoch 7484: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7484: accuracy appended (60.00%)\n", - "Epoch 7484: model set back to train mode\n", - "Epoch 7484: model parameters saved\n", - "Epoch 7485 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7485: avg_loss appended (1.3125)\n", - "Epoch 7485: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7485: accuracy appended (60.00%)\n", - "Epoch 7485: model set back to train mode\n", - "Epoch 7485: model parameters saved\n", - "Epoch 7486 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7486: avg_loss appended (1.3125)\n", - "Epoch 7486: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7486: accuracy appended (60.00%)\n", - "Epoch 7486: model set back to train mode\n", - "Epoch 7486: model parameters saved\n", - "Epoch 7487 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7487: avg_loss appended (1.3125)\n", - "Epoch 7487: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7487: accuracy appended (60.00%)\n", - "Epoch 7487: model set back to train mode\n", - "Epoch 7487: model parameters saved\n", - "Epoch 7488 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7488: avg_loss appended (1.3125)\n", - "Epoch 7488: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7488: accuracy appended (60.00%)\n", - "Epoch 7488: model set back to train mode\n", - "Epoch 7488: model parameters saved\n", - "Epoch 7489 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7489: avg_loss appended (1.3125)\n", - "Epoch 7489: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7489: accuracy appended (60.00%)\n", - "Epoch 7489: model set back to train mode\n", - "Epoch 7489: model parameters saved\n", - "Epoch 7490 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7490: avg_loss appended (1.3125)\n", - "Epoch 7490: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7490: accuracy appended (60.00%)\n", - "Epoch 7490: model set back to train mode\n", - "Epoch 7490: model parameters saved\n", - "Epoch 7491 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7491: avg_loss appended (1.3125)\n", - "Epoch 7491: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7491: accuracy appended (60.00%)\n", - "Epoch 7491: model set back to train mode\n", - "Epoch 7491: model parameters saved\n", - "Epoch 7492 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7492: avg_loss appended (1.3125)\n", - "Epoch 7492: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7492: accuracy appended (60.00%)\n", - "Epoch 7492: model set back to train mode\n", - "Epoch 7492: model parameters saved\n", - "Epoch 7493 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7493: avg_loss appended (1.3125)\n", - "Epoch 7493: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7493: accuracy appended (60.00%)\n", - "Epoch 7493: model set back to train mode\n", - "Epoch 7493: model parameters saved\n", - "Epoch 7494 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7494: avg_loss appended (1.3125)\n", - "Epoch 7494: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7494: accuracy appended (60.00%)\n", - "Epoch 7494: model set back to train mode\n", - "Epoch 7494: model parameters saved\n", - "Epoch 7495 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7495: avg_loss appended (1.3125)\n", - "Epoch 7495: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7495: accuracy appended (60.00%)\n", - "Epoch 7495: model set back to train mode\n", - "Epoch 7495: model parameters saved\n", - "Epoch 7496 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7496: avg_loss appended (1.3125)\n", - "Epoch 7496: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7496: accuracy appended (60.00%)\n", - "Epoch 7496: model set back to train mode\n", - "Epoch 7496: model parameters saved\n", - "Epoch 7497 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7497: avg_loss appended (1.3125)\n", - "Epoch 7497: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7497: accuracy appended (60.00%)\n", - "Epoch 7497: model set back to train mode\n", - "Epoch 7497: model parameters saved\n", - "Epoch 7498 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7498: avg_loss appended (1.3125)\n", - "Epoch 7498: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7498: accuracy appended (60.00%)\n", - "Epoch 7498: model set back to train mode\n", - "Epoch 7498: model parameters saved\n", - "Epoch 7499 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7499: avg_loss appended (1.3125)\n", - "Epoch 7499: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7499: accuracy appended (60.00%)\n", - "Epoch 7499: model set back to train mode\n", - "Epoch 7499: model parameters saved\n", - "Epoch 7500 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7500: avg_loss appended (1.3125)\n", - "Epoch 7500: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7500: accuracy appended (60.00%)\n", - "Epoch 7500: model set back to train mode\n", - "Epoch 7500: model parameters saved\n", - "Epoch 7500/10000, Loss: 1.3125, Accuracy: 60.00%\n", - "Epoch 7501 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7501: avg_loss appended (1.3125)\n", - "Epoch 7501: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7501: accuracy appended (60.00%)\n", - "Epoch 7501: model set back to train mode\n", - "Epoch 7501: model parameters saved\n", - "Epoch 7502 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7502: avg_loss appended (1.3125)\n", - "Epoch 7502: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7502: accuracy appended (60.00%)\n", - "Epoch 7502: model set back to train mode\n", - "Epoch 7502: model parameters saved\n", - "Epoch 7503 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7503: avg_loss appended (1.3125)\n", - "Epoch 7503: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7503: accuracy appended (60.00%)\n", - "Epoch 7503: model set back to train mode\n", - "Epoch 7503: model parameters saved\n", - "Epoch 7504 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7504: avg_loss appended (1.3125)\n", - "Epoch 7504: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7504: accuracy appended (60.00%)\n", - "Epoch 7504: model set back to train mode\n", - "Epoch 7504: model parameters saved\n", - "Epoch 7505 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7505: avg_loss appended (1.3125)\n", - "Epoch 7505: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7505: accuracy appended (60.00%)\n", - "Epoch 7505: model set back to train mode\n", - "Epoch 7505: model parameters saved\n", - "Epoch 7506 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7506: avg_loss appended (1.3125)\n", - "Epoch 7506: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7506: accuracy appended (60.00%)\n", - "Epoch 7506: model set back to train mode\n", - "Epoch 7506: model parameters saved\n", - "Epoch 7507 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7507: avg_loss appended (1.3125)\n", - "Epoch 7507: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7507: accuracy appended (60.00%)\n", - "Epoch 7507: model set back to train mode\n", - "Epoch 7507: model parameters saved\n", - "Epoch 7508 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7508: avg_loss appended (1.3125)\n", - "Epoch 7508: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7508: accuracy appended (60.00%)\n", - "Epoch 7508: model set back to train mode\n", - "Epoch 7508: model parameters saved\n", - "Epoch 7509 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7509: avg_loss appended (1.3125)\n", - "Epoch 7509: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7509: accuracy appended (60.00%)\n", - "Epoch 7509: model set back to train mode\n", - "Epoch 7509: model parameters saved\n", - "Epoch 7510 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7510: avg_loss appended (1.3125)\n", - "Epoch 7510: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7510: accuracy appended (60.00%)\n", - "Epoch 7510: model set back to train mode\n", - "Epoch 7510: model parameters saved\n", - "Epoch 7511 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7511: avg_loss appended (1.3125)\n", - "Epoch 7511: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7511: accuracy appended (60.00%)\n", - "Epoch 7511: model set back to train mode\n", - "Epoch 7511: model parameters saved\n", - "Epoch 7512 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7512: avg_loss appended (1.3125)\n", - "Epoch 7512: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7512: accuracy appended (60.00%)\n", - "Epoch 7512: model set back to train mode\n", - "Epoch 7512: model parameters saved\n", - "Epoch 7513 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7513: avg_loss appended (1.3125)\n", - "Epoch 7513: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7513: accuracy appended (60.00%)\n", - "Epoch 7513: model set back to train mode\n", - "Epoch 7513: model parameters saved\n", - "Epoch 7514 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7514: avg_loss appended (1.3125)\n", - "Epoch 7514: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7514: accuracy appended (60.00%)\n", - "Epoch 7514: model set back to train mode\n", - "Epoch 7514: model parameters saved\n", - "Epoch 7515 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7515: avg_loss appended (1.3125)\n", - "Epoch 7515: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7515: accuracy appended (60.00%)\n", - "Epoch 7515: model set back to train mode\n", - "Epoch 7515: model parameters saved\n", - "Epoch 7516 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7516: avg_loss appended (1.3125)\n", - "Epoch 7516: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7516: accuracy appended (60.00%)\n", - "Epoch 7516: model set back to train mode\n", - "Epoch 7516: model parameters saved\n", - "Epoch 7517 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7517: avg_loss appended (1.3125)\n", - "Epoch 7517: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7517: accuracy appended (60.00%)\n", - "Epoch 7517: model set back to train mode\n", - "Epoch 7517: model parameters saved\n", - "Epoch 7518 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7518: avg_loss appended (1.3125)\n", - "Epoch 7518: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7518: accuracy appended (60.00%)\n", - "Epoch 7518: model set back to train mode\n", - "Epoch 7518: model parameters saved\n", - "Epoch 7519 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7519: avg_loss appended (1.3125)\n", - "Epoch 7519: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7519: accuracy appended (60.00%)\n", - "Epoch 7519: model set back to train mode\n", - "Epoch 7519: model parameters saved\n", - "Epoch 7520 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7520: avg_loss appended (1.3125)\n", - "Epoch 7520: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7520: accuracy appended (60.00%)\n", - "Epoch 7520: model set back to train mode\n", - "Epoch 7520: model parameters saved\n", - "Epoch 7521 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7521: avg_loss appended (1.3125)\n", - "Epoch 7521: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7521: accuracy appended (60.00%)\n", - "Epoch 7521: model set back to train mode\n", - "Epoch 7521: model parameters saved\n", - "Epoch 7522 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7522: avg_loss appended (1.3125)\n", - "Epoch 7522: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7522: accuracy appended (60.00%)\n", - "Epoch 7522: model set back to train mode\n", - "Epoch 7522: model parameters saved\n", - "Epoch 7523 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7523: avg_loss appended (1.3125)\n", - "Epoch 7523: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7523: accuracy appended (60.00%)\n", - "Epoch 7523: model set back to train mode\n", - "Epoch 7523: model parameters saved\n", - "Epoch 7524 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7524: avg_loss appended (1.3125)\n", - "Epoch 7524: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7524: accuracy appended (60.00%)\n", - "Epoch 7524: model set back to train mode\n", - "Epoch 7524: model parameters saved\n", - "Epoch 7525 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7525: avg_loss appended (1.3125)\n", - "Epoch 7525: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7525: accuracy appended (60.00%)\n", - "Epoch 7525: model set back to train mode\n", - "Epoch 7525: model parameters saved\n", - "Epoch 7526 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7526: avg_loss appended (1.3125)\n", - "Epoch 7526: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7526: accuracy appended (60.00%)\n", - "Epoch 7526: model set back to train mode\n", - "Epoch 7526: model parameters saved\n", - "Epoch 7527 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7527: avg_loss appended (1.3125)\n", - "Epoch 7527: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7527: accuracy appended (60.00%)\n", - "Epoch 7527: model set back to train mode\n", - "Epoch 7527: model parameters saved\n", - "Epoch 7528 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7528: avg_loss appended (1.3125)\n", - "Epoch 7528: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7528: accuracy appended (60.00%)\n", - "Epoch 7528: model set back to train mode\n", - "Epoch 7528: model parameters saved\n", - "Epoch 7529 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7529: avg_loss appended (1.3125)\n", - "Epoch 7529: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7529: accuracy appended (60.00%)\n", - "Epoch 7529: model set back to train mode\n", - "Epoch 7529: model parameters saved\n", - "Epoch 7530 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7530: avg_loss appended (1.3125)\n", - "Epoch 7530: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7530: accuracy appended (60.00%)\n", - "Epoch 7530: model set back to train mode\n", - "Epoch 7530: model parameters saved\n", - "Epoch 7531 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7531: avg_loss appended (1.3125)\n", - "Epoch 7531: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7531: accuracy appended (60.00%)\n", - "Epoch 7531: model set back to train mode\n", - "Epoch 7531: model parameters saved\n", - "Epoch 7532 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7532: avg_loss appended (1.3125)\n", - "Epoch 7532: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7532: accuracy appended (60.00%)\n", - "Epoch 7532: model set back to train mode\n", - "Epoch 7532: model parameters saved\n", - "Epoch 7533 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7533: avg_loss appended (1.3125)\n", - "Epoch 7533: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7533: accuracy appended (60.00%)\n", - "Epoch 7533: model set back to train mode\n", - "Epoch 7533: model parameters saved\n", - "Epoch 7534 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7534: avg_loss appended (1.3125)\n", - "Epoch 7534: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7534: accuracy appended (60.00%)\n", - "Epoch 7534: model set back to train mode\n", - "Epoch 7534: model parameters saved\n", - "Epoch 7535 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7535: avg_loss appended (1.3125)\n", - "Epoch 7535: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7535: accuracy appended (60.00%)\n", - "Epoch 7535: model set back to train mode\n", - "Epoch 7535: model parameters saved\n", - "Epoch 7536 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7536: avg_loss appended (1.3125)\n", - "Epoch 7536: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7536: accuracy appended (60.00%)\n", - "Epoch 7536: model set back to train mode\n", - "Epoch 7536: model parameters saved\n", - "Epoch 7537 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7537: avg_loss appended (1.3125)\n", - "Epoch 7537: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7537: accuracy appended (60.00%)\n", - "Epoch 7537: model set back to train mode\n", - "Epoch 7537: model parameters saved\n", - "Epoch 7538 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7538: avg_loss appended (1.3125)\n", - "Epoch 7538: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7538: accuracy appended (60.00%)\n", - "Epoch 7538: model set back to train mode\n", - "Epoch 7538: model parameters saved\n", - "Epoch 7539 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7539: avg_loss appended (1.3125)\n", - "Epoch 7539: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7539: accuracy appended (60.00%)\n", - "Epoch 7539: model set back to train mode\n", - "Epoch 7539: model parameters saved\n", - "Epoch 7540 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7540: avg_loss appended (1.3125)\n", - "Epoch 7540: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7540: accuracy appended (60.00%)\n", - "Epoch 7540: model set back to train mode\n", - "Epoch 7540: model parameters saved\n", - "Epoch 7541 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7541: avg_loss appended (1.3125)\n", - "Epoch 7541: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7541: accuracy appended (60.00%)\n", - "Epoch 7541: model set back to train mode\n", - "Epoch 7541: model parameters saved\n", - "Epoch 7542 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7542: avg_loss appended (1.3125)\n", - "Epoch 7542: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7542: accuracy appended (60.00%)\n", - "Epoch 7542: model set back to train mode\n", - "Epoch 7542: model parameters saved\n", - "Epoch 7543 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7543: avg_loss appended (1.3125)\n", - "Epoch 7543: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7543: accuracy appended (60.00%)\n", - "Epoch 7543: model set back to train mode\n", - "Epoch 7543: model parameters saved\n", - "Epoch 7544 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7544: avg_loss appended (1.3125)\n", - "Epoch 7544: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7544: accuracy appended (60.00%)\n", - "Epoch 7544: model set back to train mode\n", - "Epoch 7544: model parameters saved\n", - "Epoch 7545 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7545: avg_loss appended (1.3125)\n", - "Epoch 7545: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7545: accuracy appended (60.00%)\n", - "Epoch 7545: model set back to train mode\n", - "Epoch 7545: model parameters saved\n", - "Epoch 7546 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7546: avg_loss appended (1.3125)\n", - "Epoch 7546: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7546: accuracy appended (60.00%)\n", - "Epoch 7546: model set back to train mode\n", - "Epoch 7546: model parameters saved\n", - "Epoch 7547 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7547: avg_loss appended (1.3125)\n", - "Epoch 7547: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7547: accuracy appended (60.00%)\n", - "Epoch 7547: model set back to train mode\n", - "Epoch 7547: model parameters saved\n", - "Epoch 7548 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7548: avg_loss appended (1.3125)\n", - "Epoch 7548: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7548: accuracy appended (60.00%)\n", - "Epoch 7548: model set back to train mode\n", - "Epoch 7548: model parameters saved\n", - "Epoch 7549 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7549: avg_loss appended (1.3125)\n", - "Epoch 7549: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7549: accuracy appended (60.00%)\n", - "Epoch 7549: model set back to train mode\n", - "Epoch 7549: model parameters saved\n", - "Epoch 7550 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7550: avg_loss appended (1.3125)\n", - "Epoch 7550: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7550: accuracy appended (60.00%)\n", - "Epoch 7550: model set back to train mode\n", - "Epoch 7550: model parameters saved\n", - "Epoch 7551 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7551: avg_loss appended (1.3125)\n", - "Epoch 7551: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7551: accuracy appended (60.00%)\n", - "Epoch 7551: model set back to train mode\n", - "Epoch 7551: model parameters saved\n", - "Epoch 7552 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7552: avg_loss appended (1.3125)\n", - "Epoch 7552: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7552: accuracy appended (60.00%)\n", - "Epoch 7552: model set back to train mode\n", - "Epoch 7552: model parameters saved\n", - "Epoch 7553 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7553: avg_loss appended (1.3125)\n", - "Epoch 7553: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7553: accuracy appended (60.00%)\n", - "Epoch 7553: model set back to train mode\n", - "Epoch 7553: model parameters saved\n", - "Epoch 7554 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7554: avg_loss appended (1.3125)\n", - "Epoch 7554: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7554: accuracy appended (60.00%)\n", - "Epoch 7554: model set back to train mode\n", - "Epoch 7554: model parameters saved\n", - "Epoch 7555 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7555: avg_loss appended (1.3125)\n", - "Epoch 7555: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7555: accuracy appended (60.00%)\n", - "Epoch 7555: model set back to train mode\n", - "Epoch 7555: model parameters saved\n", - "Epoch 7556 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7556: avg_loss appended (1.3125)\n", - "Epoch 7556: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7556: accuracy appended (60.00%)\n", - "Epoch 7556: model set back to train mode\n", - "Epoch 7556: model parameters saved\n", - "Epoch 7557 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7557: avg_loss appended (1.3125)\n", - "Epoch 7557: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7557: accuracy appended (60.00%)\n", - "Epoch 7557: model set back to train mode\n", - "Epoch 7557: model parameters saved\n", - "Epoch 7558 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7558: avg_loss appended (1.3125)\n", - "Epoch 7558: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7558: accuracy appended (60.00%)\n", - "Epoch 7558: model set back to train mode\n", - "Epoch 7558: model parameters saved\n", - "Epoch 7559 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7559: avg_loss appended (1.3125)\n", - "Epoch 7559: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7559: accuracy appended (60.00%)\n", - "Epoch 7559: model set back to train mode\n", - "Epoch 7559: model parameters saved\n", - "Epoch 7560 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7560: avg_loss appended (1.3125)\n", - "Epoch 7560: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7560: accuracy appended (60.00%)\n", - "Epoch 7560: model set back to train mode\n", - "Epoch 7560: model parameters saved\n", - "Epoch 7561 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7561: avg_loss appended (1.3125)\n", - "Epoch 7561: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7561: accuracy appended (60.00%)\n", - "Epoch 7561: model set back to train mode\n", - "Epoch 7561: model parameters saved\n", - "Epoch 7562 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7562: avg_loss appended (1.3125)\n", - "Epoch 7562: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7562: accuracy appended (60.00%)\n", - "Epoch 7562: model set back to train mode\n", - "Epoch 7562: model parameters saved\n", - "Epoch 7563 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7563: avg_loss appended (1.3125)\n", - "Epoch 7563: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7563: accuracy appended (60.00%)\n", - "Epoch 7563: model set back to train mode\n", - "Epoch 7563: model parameters saved\n", - "Epoch 7564 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7564: avg_loss appended (1.3125)\n", - "Epoch 7564: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7564: accuracy appended (60.00%)\n", - "Epoch 7564: model set back to train mode\n", - "Epoch 7564: model parameters saved\n", - "Epoch 7565 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7565: avg_loss appended (1.3125)\n", - "Epoch 7565: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7565: accuracy appended (60.00%)\n", - "Epoch 7565: model set back to train mode\n", - "Epoch 7565: model parameters saved\n", - "Epoch 7566 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7566: avg_loss appended (1.3125)\n", - "Epoch 7566: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7566: accuracy appended (60.00%)\n", - "Epoch 7566: model set back to train mode\n", - "Epoch 7566: model parameters saved\n", - "Epoch 7567 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7567: avg_loss appended (1.3125)\n", - "Epoch 7567: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7567: accuracy appended (60.00%)\n", - "Epoch 7567: model set back to train mode\n", - "Epoch 7567: model parameters saved\n", - "Epoch 7568 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7568: avg_loss appended (1.3125)\n", - "Epoch 7568: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7568: accuracy appended (60.00%)\n", - "Epoch 7568: model set back to train mode\n", - "Epoch 7568: model parameters saved\n", - "Epoch 7569 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7569: avg_loss appended (1.3125)\n", - "Epoch 7569: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7569: accuracy appended (60.00%)\n", - "Epoch 7569: model set back to train mode\n", - "Epoch 7569: model parameters saved\n", - "Epoch 7570 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7570: avg_loss appended (1.3125)\n", - "Epoch 7570: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7570: accuracy appended (60.00%)\n", - "Epoch 7570: model set back to train mode\n", - "Epoch 7570: model parameters saved\n", - "Epoch 7571 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7571: avg_loss appended (1.3125)\n", - "Epoch 7571: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7571: accuracy appended (60.00%)\n", - "Epoch 7571: model set back to train mode\n", - "Epoch 7571: model parameters saved\n", - "Epoch 7572 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7572: avg_loss appended (1.3125)\n", - "Epoch 7572: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7572: accuracy appended (60.00%)\n", - "Epoch 7572: model set back to train mode\n", - "Epoch 7572: model parameters saved\n", - "Epoch 7573 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7573: avg_loss appended (1.3125)\n", - "Epoch 7573: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7573: accuracy appended (60.00%)\n", - "Epoch 7573: model set back to train mode\n", - "Epoch 7573: model parameters saved\n", - "Epoch 7574 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7574: avg_loss appended (1.3125)\n", - "Epoch 7574: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7574: accuracy appended (60.00%)\n", - "Epoch 7574: model set back to train mode\n", - "Epoch 7574: model parameters saved\n", - "Epoch 7575 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7575: avg_loss appended (1.3125)\n", - "Epoch 7575: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7575: accuracy appended (60.00%)\n", - "Epoch 7575: model set back to train mode\n", - "Epoch 7575: model parameters saved\n", - "Epoch 7576 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7576: avg_loss appended (1.3125)\n", - "Epoch 7576: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7576: accuracy appended (60.00%)\n", - "Epoch 7576: model set back to train mode\n", - "Epoch 7576: model parameters saved\n", - "Epoch 7577 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7577: avg_loss appended (1.3125)\n", - "Epoch 7577: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7577: accuracy appended (60.00%)\n", - "Epoch 7577: model set back to train mode\n", - "Epoch 7577: model parameters saved\n", - "Epoch 7578 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7578: avg_loss appended (1.3125)\n", - "Epoch 7578: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7578: accuracy appended (60.00%)\n", - "Epoch 7578: model set back to train mode\n", - "Epoch 7578: model parameters saved\n", - "Epoch 7579 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7579: avg_loss appended (1.3125)\n", - "Epoch 7579: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7579: accuracy appended (60.00%)\n", - "Epoch 7579: model set back to train mode\n", - "Epoch 7579: model parameters saved\n", - "Epoch 7580 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7580: avg_loss appended (1.3125)\n", - "Epoch 7580: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7580: accuracy appended (60.00%)\n", - "Epoch 7580: model set back to train mode\n", - "Epoch 7580: model parameters saved\n", - "Epoch 7581 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7581: avg_loss appended (1.3125)\n", - "Epoch 7581: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7581: accuracy appended (60.00%)\n", - "Epoch 7581: model set back to train mode\n", - "Epoch 7581: model parameters saved\n", - "Epoch 7582 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7582: avg_loss appended (1.3125)\n", - "Epoch 7582: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7582: accuracy appended (60.00%)\n", - "Epoch 7582: model set back to train mode\n", - "Epoch 7582: model parameters saved\n", - "Epoch 7583 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7583: avg_loss appended (1.3125)\n", - "Epoch 7583: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7583: accuracy appended (60.00%)\n", - "Epoch 7583: model set back to train mode\n", - "Epoch 7583: model parameters saved\n", - "Epoch 7584 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7584: avg_loss appended (1.3125)\n", - "Epoch 7584: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7584: accuracy appended (60.00%)\n", - "Epoch 7584: model set back to train mode\n", - "Epoch 7584: model parameters saved\n", - "Epoch 7585 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7585: avg_loss appended (1.3125)\n", - "Epoch 7585: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7585: accuracy appended (60.00%)\n", - "Epoch 7585: model set back to train mode\n", - "Epoch 7585: model parameters saved\n", - "Epoch 7586 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7586: avg_loss appended (1.3125)\n", - "Epoch 7586: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7586: accuracy appended (60.00%)\n", - "Epoch 7586: model set back to train mode\n", - "Epoch 7586: model parameters saved\n", - "Epoch 7587 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7587: avg_loss appended (1.3125)\n", - "Epoch 7587: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7587: accuracy appended (60.00%)\n", - "Epoch 7587: model set back to train mode\n", - "Epoch 7587: model parameters saved\n", - "Epoch 7588 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7588: avg_loss appended (1.3125)\n", - "Epoch 7588: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7588: accuracy appended (60.00%)\n", - "Epoch 7588: model set back to train mode\n", - "Epoch 7588: model parameters saved\n", - "Epoch 7589 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7589: avg_loss appended (1.3125)\n", - "Epoch 7589: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7589: accuracy appended (60.00%)\n", - "Epoch 7589: model set back to train mode\n", - "Epoch 7589: model parameters saved\n", - "Epoch 7590 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7590: avg_loss appended (1.3125)\n", - "Epoch 7590: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7590: accuracy appended (60.00%)\n", - "Epoch 7590: model set back to train mode\n", - "Epoch 7590: model parameters saved\n", - "Epoch 7591 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7591: avg_loss appended (1.3125)\n", - "Epoch 7591: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7591: accuracy appended (60.00%)\n", - "Epoch 7591: model set back to train mode\n", - "Epoch 7591: model parameters saved\n", - "Epoch 7592 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7592: avg_loss appended (1.3125)\n", - "Epoch 7592: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7592: accuracy appended (60.00%)\n", - "Epoch 7592: model set back to train mode\n", - "Epoch 7592: model parameters saved\n", - "Epoch 7593 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7593: avg_loss appended (1.3125)\n", - "Epoch 7593: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7593: accuracy appended (60.00%)\n", - "Epoch 7593: model set back to train mode\n", - "Epoch 7593: model parameters saved\n", - "Epoch 7594 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7594: avg_loss appended (1.3125)\n", - "Epoch 7594: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7594: accuracy appended (60.00%)\n", - "Epoch 7594: model set back to train mode\n", - "Epoch 7594: model parameters saved\n", - "Epoch 7595 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7595: avg_loss appended (1.3125)\n", - "Epoch 7595: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7595: accuracy appended (60.00%)\n", - "Epoch 7595: model set back to train mode\n", - "Epoch 7595: model parameters saved\n", - "Epoch 7596 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7596: avg_loss appended (1.3125)\n", - "Epoch 7596: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7596: accuracy appended (60.00%)\n", - "Epoch 7596: model set back to train mode\n", - "Epoch 7596: model parameters saved\n", - "Epoch 7597 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7597: avg_loss appended (1.3125)\n", - "Epoch 7597: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7597: accuracy appended (60.00%)\n", - "Epoch 7597: model set back to train mode\n", - "Epoch 7597: model parameters saved\n", - "Epoch 7598 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7598: avg_loss appended (1.3125)\n", - "Epoch 7598: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7598: accuracy appended (60.00%)\n", - "Epoch 7598: model set back to train mode\n", - "Epoch 7598: model parameters saved\n", - "Epoch 7599 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7599: avg_loss appended (1.3125)\n", - "Epoch 7599: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7599: accuracy appended (60.00%)\n", - "Epoch 7599: model set back to train mode\n", - "Epoch 7599: model parameters saved\n", - "Epoch 7600 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7600: avg_loss appended (1.3125)\n", - "Epoch 7600: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7600: accuracy appended (60.00%)\n", - "Epoch 7600: model set back to train mode\n", - "Epoch 7600: model parameters saved\n", - "Epoch 7600/10000, Loss: 1.3125, Accuracy: 60.00%\n", - "Epoch 7601 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7601: avg_loss appended (1.3125)\n", - "Epoch 7601: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7601: accuracy appended (60.00%)\n", - "Epoch 7601: model set back to train mode\n", - "Epoch 7601: model parameters saved\n", - "Epoch 7602 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7602: avg_loss appended (1.3125)\n", - "Epoch 7602: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7602: accuracy appended (60.00%)\n", - "Epoch 7602: model set back to train mode\n", - "Epoch 7602: model parameters saved\n", - "Epoch 7603 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7603: avg_loss appended (1.3125)\n", - "Epoch 7603: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7603: accuracy appended (60.00%)\n", - "Epoch 7603: model set back to train mode\n", - "Epoch 7603: model parameters saved\n", - "Epoch 7604 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7604: avg_loss appended (1.3125)\n", - "Epoch 7604: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7604: accuracy appended (60.00%)\n", - "Epoch 7604: model set back to train mode\n", - "Epoch 7604: model parameters saved\n", - "Epoch 7605 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7605: avg_loss appended (1.3125)\n", - "Epoch 7605: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7605: accuracy appended (60.00%)\n", - "Epoch 7605: model set back to train mode\n", - "Epoch 7605: model parameters saved\n", - "Epoch 7606 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7606: avg_loss appended (1.3125)\n", - "Epoch 7606: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7606: accuracy appended (60.00%)\n", - "Epoch 7606: model set back to train mode\n", - "Epoch 7606: model parameters saved\n", - "Epoch 7607 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7607: avg_loss appended (1.3125)\n", - "Epoch 7607: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7607: accuracy appended (60.00%)\n", - "Epoch 7607: model set back to train mode\n", - "Epoch 7607: model parameters saved\n", - "Epoch 7608 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7608: avg_loss appended (1.3125)\n", - "Epoch 7608: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7608: accuracy appended (60.00%)\n", - "Epoch 7608: model set back to train mode\n", - "Epoch 7608: model parameters saved\n", - "Epoch 7609 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7609: avg_loss appended (1.3125)\n", - "Epoch 7609: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7609: accuracy appended (60.00%)\n", - "Epoch 7609: model set back to train mode\n", - "Epoch 7609: model parameters saved\n", - "Epoch 7610 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7610: avg_loss appended (1.3125)\n", - "Epoch 7610: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7610: accuracy appended (60.00%)\n", - "Epoch 7610: model set back to train mode\n", - "Epoch 7610: model parameters saved\n", - "Epoch 7611 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7611: avg_loss appended (1.3125)\n", - "Epoch 7611: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7611: accuracy appended (60.00%)\n", - "Epoch 7611: model set back to train mode\n", - "Epoch 7611: model parameters saved\n", - "Epoch 7612 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7612: avg_loss appended (1.3125)\n", - "Epoch 7612: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7612: accuracy appended (60.00%)\n", - "Epoch 7612: model set back to train mode\n", - "Epoch 7612: model parameters saved\n", - "Epoch 7613 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7613: avg_loss appended (1.3125)\n", - "Epoch 7613: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7613: accuracy appended (60.00%)\n", - "Epoch 7613: model set back to train mode\n", - "Epoch 7613: model parameters saved\n", - "Epoch 7614 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7614: avg_loss appended (1.3125)\n", - "Epoch 7614: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7614: accuracy appended (60.00%)\n", - "Epoch 7614: model set back to train mode\n", - "Epoch 7614: model parameters saved\n", - "Epoch 7615 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7615: avg_loss appended (1.3125)\n", - "Epoch 7615: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7615: accuracy appended (60.00%)\n", - "Epoch 7615: model set back to train mode\n", - "Epoch 7615: model parameters saved\n", - "Epoch 7616 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7616: avg_loss appended (1.3125)\n", - "Epoch 7616: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7616: accuracy appended (60.00%)\n", - "Epoch 7616: model set back to train mode\n", - "Epoch 7616: model parameters saved\n", - "Epoch 7617 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7617: avg_loss appended (1.3125)\n", - "Epoch 7617: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7617: accuracy appended (60.00%)\n", - "Epoch 7617: model set back to train mode\n", - "Epoch 7617: model parameters saved\n", - "Epoch 7618 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7618: avg_loss appended (1.3125)\n", - "Epoch 7618: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7618: accuracy appended (60.00%)\n", - "Epoch 7618: model set back to train mode\n", - "Epoch 7618: model parameters saved\n", - "Epoch 7619 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7619: avg_loss appended (1.3125)\n", - "Epoch 7619: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7619: accuracy appended (60.00%)\n", - "Epoch 7619: model set back to train mode\n", - "Epoch 7619: model parameters saved\n", - "Epoch 7620 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7620: avg_loss appended (1.3125)\n", - "Epoch 7620: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7620: accuracy appended (60.00%)\n", - "Epoch 7620: model set back to train mode\n", - "Epoch 7620: model parameters saved\n", - "Epoch 7621 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7621: avg_loss appended (1.3125)\n", - "Epoch 7621: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7621: accuracy appended (60.00%)\n", - "Epoch 7621: model set back to train mode\n", - "Epoch 7621: model parameters saved\n", - "Epoch 7622 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7622: avg_loss appended (1.3125)\n", - "Epoch 7622: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7622: accuracy appended (60.00%)\n", - "Epoch 7622: model set back to train mode\n", - "Epoch 7622: model parameters saved\n", - "Epoch 7623 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7623: avg_loss appended (1.3125)\n", - "Epoch 7623: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7623: accuracy appended (60.00%)\n", - "Epoch 7623: model set back to train mode\n", - "Epoch 7623: model parameters saved\n", - "Epoch 7624 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7624: avg_loss appended (1.3125)\n", - "Epoch 7624: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7624: accuracy appended (60.00%)\n", - "Epoch 7624: model set back to train mode\n", - "Epoch 7624: model parameters saved\n", - "Epoch 7625 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7625: avg_loss appended (1.3125)\n", - "Epoch 7625: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7625: accuracy appended (60.00%)\n", - "Epoch 7625: model set back to train mode\n", - "Epoch 7625: model parameters saved\n", - "Epoch 7626 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7626: avg_loss appended (1.3125)\n", - "Epoch 7626: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7626: accuracy appended (60.00%)\n", - "Epoch 7626: model set back to train mode\n", - "Epoch 7626: model parameters saved\n", - "Epoch 7627 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7627: avg_loss appended (1.3125)\n", - "Epoch 7627: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7627: accuracy appended (60.00%)\n", - "Epoch 7627: model set back to train mode\n", - "Epoch 7627: model parameters saved\n", - "Epoch 7628 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7628: avg_loss appended (1.3125)\n", - "Epoch 7628: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7628: accuracy appended (60.00%)\n", - "Epoch 7628: model set back to train mode\n", - "Epoch 7628: model parameters saved\n", - "Epoch 7629 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7629: avg_loss appended (1.3125)\n", - "Epoch 7629: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7629: accuracy appended (60.00%)\n", - "Epoch 7629: model set back to train mode\n", - "Epoch 7629: model parameters saved\n", - "Epoch 7630 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7630: avg_loss appended (1.3125)\n", - "Epoch 7630: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7630: accuracy appended (60.00%)\n", - "Epoch 7630: model set back to train mode\n", - "Epoch 7630: model parameters saved\n", - "Epoch 7631 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7631: avg_loss appended (1.3125)\n", - "Epoch 7631: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7631: accuracy appended (60.00%)\n", - "Epoch 7631: model set back to train mode\n", - "Epoch 7631: model parameters saved\n", - "Epoch 7632 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7632: avg_loss appended (1.3125)\n", - "Epoch 7632: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7632: accuracy appended (60.00%)\n", - "Epoch 7632: model set back to train mode\n", - "Epoch 7632: model parameters saved\n", - "Epoch 7633 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7633: avg_loss appended (1.3125)\n", - "Epoch 7633: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7633: accuracy appended (60.00%)\n", - "Epoch 7633: model set back to train mode\n", - "Epoch 7633: model parameters saved\n", - "Epoch 7634 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7634: avg_loss appended (1.3125)\n", - "Epoch 7634: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7634: accuracy appended (60.00%)\n", - "Epoch 7634: model set back to train mode\n", - "Epoch 7634: model parameters saved\n", - "Epoch 7635 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7635: avg_loss appended (1.3125)\n", - "Epoch 7635: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7635: accuracy appended (60.00%)\n", - "Epoch 7635: model set back to train mode\n", - "Epoch 7635: model parameters saved\n", - "Epoch 7636 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7636: avg_loss appended (1.3125)\n", - "Epoch 7636: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7636: accuracy appended (60.00%)\n", - "Epoch 7636: model set back to train mode\n", - "Epoch 7636: model parameters saved\n", - "Epoch 7637 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7637: avg_loss appended (1.3125)\n", - "Epoch 7637: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7637: accuracy appended (60.00%)\n", - "Epoch 7637: model set back to train mode\n", - "Epoch 7637: model parameters saved\n", - "Epoch 7638 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7638: avg_loss appended (1.3125)\n", - "Epoch 7638: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7638: accuracy appended (60.00%)\n", - "Epoch 7638: model set back to train mode\n", - "Epoch 7638: model parameters saved\n", - "Epoch 7639 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7639: avg_loss appended (1.3125)\n", - "Epoch 7639: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7639: accuracy appended (60.00%)\n", - "Epoch 7639: model set back to train mode\n", - "Epoch 7639: model parameters saved\n", - "Epoch 7640 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7640: avg_loss appended (1.3125)\n", - "Epoch 7640: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7640: accuracy appended (60.00%)\n", - "Epoch 7640: model set back to train mode\n", - "Epoch 7640: model parameters saved\n", - "Epoch 7641 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7641: avg_loss appended (1.3125)\n", - "Epoch 7641: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7641: accuracy appended (60.00%)\n", - "Epoch 7641: model set back to train mode\n", - "Epoch 7641: model parameters saved\n", - "Epoch 7642 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7642: avg_loss appended (1.3125)\n", - "Epoch 7642: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7642: accuracy appended (60.00%)\n", - "Epoch 7642: model set back to train mode\n", - "Epoch 7642: model parameters saved\n", - "Epoch 7643 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7643: avg_loss appended (1.3125)\n", - "Epoch 7643: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7643: accuracy appended (60.00%)\n", - "Epoch 7643: model set back to train mode\n", - "Epoch 7643: model parameters saved\n", - "Epoch 7644 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7644: avg_loss appended (1.3125)\n", - "Epoch 7644: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7644: accuracy appended (60.00%)\n", - "Epoch 7644: model set back to train mode\n", - "Epoch 7644: model parameters saved\n", - "Epoch 7645 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7645: avg_loss appended (1.3125)\n", - "Epoch 7645: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7645: accuracy appended (60.00%)\n", - "Epoch 7645: model set back to train mode\n", - "Epoch 7645: model parameters saved\n", - "Epoch 7646 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7646: avg_loss appended (1.3125)\n", - "Epoch 7646: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7646: accuracy appended (60.00%)\n", - "Epoch 7646: model set back to train mode\n", - "Epoch 7646: model parameters saved\n", - "Epoch 7647 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7647: avg_loss appended (1.3125)\n", - "Epoch 7647: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7647: accuracy appended (60.00%)\n", - "Epoch 7647: model set back to train mode\n", - "Epoch 7647: model parameters saved\n", - "Epoch 7648 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7648: avg_loss appended (1.3125)\n", - "Epoch 7648: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7648: accuracy appended (60.00%)\n", - "Epoch 7648: model set back to train mode\n", - "Epoch 7648: model parameters saved\n", - "Epoch 7649 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7649: avg_loss appended (1.3125)\n", - "Epoch 7649: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7649: accuracy appended (60.00%)\n", - "Epoch 7649: model set back to train mode\n", - "Epoch 7649: model parameters saved\n", - "Epoch 7650 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7650: avg_loss appended (1.3125)\n", - "Epoch 7650: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7650: accuracy appended (60.00%)\n", - "Epoch 7650: model set back to train mode\n", - "Epoch 7650: model parameters saved\n", - "Epoch 7651 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7651: avg_loss appended (1.3125)\n", - "Epoch 7651: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7651: accuracy appended (60.00%)\n", - "Epoch 7651: model set back to train mode\n", - "Epoch 7651: model parameters saved\n", - "Epoch 7652 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7652: avg_loss appended (1.3125)\n", - "Epoch 7652: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7652: accuracy appended (60.00%)\n", - "Epoch 7652: model set back to train mode\n", - "Epoch 7652: model parameters saved\n", - "Epoch 7653 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7653: avg_loss appended (1.3125)\n", - "Epoch 7653: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7653: accuracy appended (60.00%)\n", - "Epoch 7653: model set back to train mode\n", - "Epoch 7653: model parameters saved\n", - "Epoch 7654 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7654: avg_loss appended (1.3125)\n", - "Epoch 7654: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7654: accuracy appended (60.00%)\n", - "Epoch 7654: model set back to train mode\n", - "Epoch 7654: model parameters saved\n", - "Epoch 7655 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7655: avg_loss appended (1.3125)\n", - "Epoch 7655: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7655: accuracy appended (60.00%)\n", - "Epoch 7655: model set back to train mode\n", - "Epoch 7655: model parameters saved\n", - "Epoch 7656 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7656: avg_loss appended (1.3125)\n", - "Epoch 7656: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7656: accuracy appended (60.00%)\n", - "Epoch 7656: model set back to train mode\n", - "Epoch 7656: model parameters saved\n", - "Epoch 7657 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7657: avg_loss appended (1.3125)\n", - "Epoch 7657: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7657: accuracy appended (60.00%)\n", - "Epoch 7657: model set back to train mode\n", - "Epoch 7657: model parameters saved\n", - "Epoch 7658 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7658: avg_loss appended (1.3125)\n", - "Epoch 7658: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7658: accuracy appended (60.00%)\n", - "Epoch 7658: model set back to train mode\n", - "Epoch 7658: model parameters saved\n", - "Epoch 7659 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7659: avg_loss appended (1.3125)\n", - "Epoch 7659: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7659: accuracy appended (60.00%)\n", - "Epoch 7659: model set back to train mode\n", - "Epoch 7659: model parameters saved\n", - "Epoch 7660 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7660: avg_loss appended (1.3125)\n", - "Epoch 7660: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7660: accuracy appended (60.00%)\n", - "Epoch 7660: model set back to train mode\n", - "Epoch 7660: model parameters saved\n", - "Epoch 7661 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7661: avg_loss appended (1.3125)\n", - "Epoch 7661: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7661: accuracy appended (60.00%)\n", - "Epoch 7661: model set back to train mode\n", - "Epoch 7661: model parameters saved\n", - "Epoch 7662 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7662: avg_loss appended (1.3125)\n", - "Epoch 7662: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7662: accuracy appended (60.00%)\n", - "Epoch 7662: model set back to train mode\n", - "Epoch 7662: model parameters saved\n", - "Epoch 7663 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7663: avg_loss appended (1.3125)\n", - "Epoch 7663: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7663: accuracy appended (60.00%)\n", - "Epoch 7663: model set back to train mode\n", - "Epoch 7663: model parameters saved\n", - "Epoch 7664 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7664: avg_loss appended (1.3125)\n", - "Epoch 7664: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7664: accuracy appended (60.00%)\n", - "Epoch 7664: model set back to train mode\n", - "Epoch 7664: model parameters saved\n", - "Epoch 7665 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7665: avg_loss appended (1.3125)\n", - "Epoch 7665: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7665: accuracy appended (60.00%)\n", - "Epoch 7665: model set back to train mode\n", - "Epoch 7665: model parameters saved\n", - "Epoch 7666 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7666: avg_loss appended (1.3125)\n", - "Epoch 7666: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7666: accuracy appended (60.00%)\n", - "Epoch 7666: model set back to train mode\n", - "Epoch 7666: model parameters saved\n", - "Epoch 7667 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7667: avg_loss appended (1.3125)\n", - "Epoch 7667: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7667: accuracy appended (60.00%)\n", - "Epoch 7667: model set back to train mode\n", - "Epoch 7667: model parameters saved\n", - "Epoch 7668 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7668: avg_loss appended (1.3125)\n", - "Epoch 7668: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7668: accuracy appended (60.00%)\n", - "Epoch 7668: model set back to train mode\n", - "Epoch 7668: model parameters saved\n", - "Epoch 7669 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7669: avg_loss appended (1.3125)\n", - "Epoch 7669: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7669: accuracy appended (60.00%)\n", - "Epoch 7669: model set back to train mode\n", - "Epoch 7669: model parameters saved\n", - "Epoch 7670 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7670: avg_loss appended (1.3125)\n", - "Epoch 7670: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7670: accuracy appended (60.00%)\n", - "Epoch 7670: model set back to train mode\n", - "Epoch 7670: model parameters saved\n", - "Epoch 7671 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7671: avg_loss appended (1.3125)\n", - "Epoch 7671: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7671: accuracy appended (60.00%)\n", - "Epoch 7671: model set back to train mode\n", - "Epoch 7671: model parameters saved\n", - "Epoch 7672 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7672: avg_loss appended (1.3125)\n", - "Epoch 7672: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7672: accuracy appended (60.00%)\n", - "Epoch 7672: model set back to train mode\n", - "Epoch 7672: model parameters saved\n", - "Epoch 7673 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7673: avg_loss appended (1.3125)\n", - "Epoch 7673: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7673: accuracy appended (60.00%)\n", - "Epoch 7673: model set back to train mode\n", - "Epoch 7673: model parameters saved\n", - "Epoch 7674 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7674: avg_loss appended (1.3125)\n", - "Epoch 7674: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7674: accuracy appended (60.00%)\n", - "Epoch 7674: model set back to train mode\n", - "Epoch 7674: model parameters saved\n", - "Epoch 7675 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7675: avg_loss appended (1.3125)\n", - "Epoch 7675: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7675: accuracy appended (60.00%)\n", - "Epoch 7675: model set back to train mode\n", - "Epoch 7675: model parameters saved\n", - "Epoch 7676 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7676: avg_loss appended (1.3125)\n", - "Epoch 7676: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7676: accuracy appended (60.00%)\n", - "Epoch 7676: model set back to train mode\n", - "Epoch 7676: model parameters saved\n", - "Epoch 7677 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7677: avg_loss appended (1.3125)\n", - "Epoch 7677: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7677: accuracy appended (60.00%)\n", - "Epoch 7677: model set back to train mode\n", - "Epoch 7677: model parameters saved\n", - "Epoch 7678 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7678: avg_loss appended (1.3125)\n", - "Epoch 7678: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7678: accuracy appended (60.00%)\n", - "Epoch 7678: model set back to train mode\n", - "Epoch 7678: model parameters saved\n", - "Epoch 7679 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7679: avg_loss appended (1.3125)\n", - "Epoch 7679: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7679: accuracy appended (60.00%)\n", - "Epoch 7679: model set back to train mode\n", - "Epoch 7679: model parameters saved\n", - "Epoch 7680 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7680: avg_loss appended (1.3125)\n", - "Epoch 7680: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7680: accuracy appended (60.00%)\n", - "Epoch 7680: model set back to train mode\n", - "Epoch 7680: model parameters saved\n", - "Epoch 7681 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7681: avg_loss appended (1.3125)\n", - "Epoch 7681: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7681: accuracy appended (60.00%)\n", - "Epoch 7681: model set back to train mode\n", - "Epoch 7681: model parameters saved\n", - "Epoch 7682 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7682: avg_loss appended (1.3125)\n", - "Epoch 7682: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7682: accuracy appended (60.00%)\n", - "Epoch 7682: model set back to train mode\n", - "Epoch 7682: model parameters saved\n", - "Epoch 7683 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7683: avg_loss appended (1.3125)\n", - "Epoch 7683: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7683: accuracy appended (60.00%)\n", - "Epoch 7683: model set back to train mode\n", - "Epoch 7683: model parameters saved\n", - "Epoch 7684 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7684: avg_loss appended (1.3125)\n", - "Epoch 7684: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7684: accuracy appended (60.00%)\n", - "Epoch 7684: model set back to train mode\n", - "Epoch 7684: model parameters saved\n", - "Epoch 7685 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7685: avg_loss appended (1.3125)\n", - "Epoch 7685: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7685: accuracy appended (60.00%)\n", - "Epoch 7685: model set back to train mode\n", - "Epoch 7685: model parameters saved\n", - "Epoch 7686 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7686: avg_loss appended (1.3125)\n", - "Epoch 7686: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7686: accuracy appended (60.00%)\n", - "Epoch 7686: model set back to train mode\n", - "Epoch 7686: model parameters saved\n", - "Epoch 7687 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7687: avg_loss appended (1.3125)\n", - "Epoch 7687: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7687: accuracy appended (60.00%)\n", - "Epoch 7687: model set back to train mode\n", - "Epoch 7687: model parameters saved\n", - "Epoch 7688 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7688: avg_loss appended (1.3125)\n", - "Epoch 7688: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7688: accuracy appended (60.00%)\n", - "Epoch 7688: model set back to train mode\n", - "Epoch 7688: model parameters saved\n", - "Epoch 7689 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7689: avg_loss appended (1.3125)\n", - "Epoch 7689: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7689: accuracy appended (60.00%)\n", - "Epoch 7689: model set back to train mode\n", - "Epoch 7689: model parameters saved\n", - "Epoch 7690 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7690: avg_loss appended (1.3125)\n", - "Epoch 7690: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7690: accuracy appended (60.00%)\n", - "Epoch 7690: model set back to train mode\n", - "Epoch 7690: model parameters saved\n", - "Epoch 7691 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7691: avg_loss appended (1.3125)\n", - "Epoch 7691: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7691: accuracy appended (60.00%)\n", - "Epoch 7691: model set back to train mode\n", - "Epoch 7691: model parameters saved\n", - "Epoch 7692 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7692: avg_loss appended (1.3125)\n", - "Epoch 7692: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7692: accuracy appended (60.00%)\n", - "Epoch 7692: model set back to train mode\n", - "Epoch 7692: model parameters saved\n", - "Epoch 7693 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7693: avg_loss appended (1.3125)\n", - "Epoch 7693: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7693: accuracy appended (60.00%)\n", - "Epoch 7693: model set back to train mode\n", - "Epoch 7693: model parameters saved\n", - "Epoch 7694 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7694: avg_loss appended (1.3125)\n", - "Epoch 7694: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7694: accuracy appended (60.00%)\n", - "Epoch 7694: model set back to train mode\n", - "Epoch 7694: model parameters saved\n", - "Epoch 7695 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7695: avg_loss appended (1.3125)\n", - "Epoch 7695: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7695: accuracy appended (60.00%)\n", - "Epoch 7695: model set back to train mode\n", - "Epoch 7695: model parameters saved\n", - "Epoch 7696 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7696: avg_loss appended (1.3125)\n", - "Epoch 7696: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7696: accuracy appended (60.00%)\n", - "Epoch 7696: model set back to train mode\n", - "Epoch 7696: model parameters saved\n", - "Epoch 7697 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7697: avg_loss appended (1.3125)\n", - "Epoch 7697: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7697: accuracy appended (60.00%)\n", - "Epoch 7697: model set back to train mode\n", - "Epoch 7697: model parameters saved\n", - "Epoch 7698 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7698: avg_loss appended (1.3125)\n", - "Epoch 7698: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7698: accuracy appended (60.00%)\n", - "Epoch 7698: model set back to train mode\n", - "Epoch 7698: model parameters saved\n", - "Epoch 7699 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7699: avg_loss appended (1.3125)\n", - "Epoch 7699: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7699: accuracy appended (60.00%)\n", - "Epoch 7699: model set back to train mode\n", - "Epoch 7699: model parameters saved\n", - "Epoch 7700 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7700: avg_loss appended (1.3125)\n", - "Epoch 7700: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7700: accuracy appended (60.00%)\n", - "Epoch 7700: model set back to train mode\n", - "Epoch 7700: model parameters saved\n", - "Epoch 7700/10000, Loss: 1.3125, Accuracy: 60.00%\n", - "Epoch 7701 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7701: avg_loss appended (1.3125)\n", - "Epoch 7701: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7701: accuracy appended (60.00%)\n", - "Epoch 7701: model set back to train mode\n", - "Epoch 7701: model parameters saved\n", - "Epoch 7702 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7702: avg_loss appended (1.3125)\n", - "Epoch 7702: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7702: accuracy appended (60.00%)\n", - "Epoch 7702: model set back to train mode\n", - "Epoch 7702: model parameters saved\n", - "Epoch 7703 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7703: avg_loss appended (1.3125)\n", - "Epoch 7703: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7703: accuracy appended (60.00%)\n", - "Epoch 7703: model set back to train mode\n", - "Epoch 7703: model parameters saved\n", - "Epoch 7704 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7704: avg_loss appended (1.3125)\n", - "Epoch 7704: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7704: accuracy appended (60.00%)\n", - "Epoch 7704: model set back to train mode\n", - "Epoch 7704: model parameters saved\n", - "Epoch 7705 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7705: avg_loss appended (1.3125)\n", - "Epoch 7705: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7705: accuracy appended (60.00%)\n", - "Epoch 7705: model set back to train mode\n", - "Epoch 7705: model parameters saved\n", - "Epoch 7706 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7706: avg_loss appended (1.3125)\n", - "Epoch 7706: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7706: accuracy appended (60.00%)\n", - "Epoch 7706: model set back to train mode\n", - "Epoch 7706: model parameters saved\n", - "Epoch 7707 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7707: avg_loss appended (1.3125)\n", - "Epoch 7707: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7707: accuracy appended (60.00%)\n", - "Epoch 7707: model set back to train mode\n", - "Epoch 7707: model parameters saved\n", - "Epoch 7708 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7708: avg_loss appended (1.3125)\n", - "Epoch 7708: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7708: accuracy appended (60.00%)\n", - "Epoch 7708: model set back to train mode\n", - "Epoch 7708: model parameters saved\n", - "Epoch 7709 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7709: avg_loss appended (1.3125)\n", - "Epoch 7709: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7709: accuracy appended (60.00%)\n", - "Epoch 7709: model set back to train mode\n", - "Epoch 7709: model parameters saved\n", - "Epoch 7710 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7710: avg_loss appended (1.3125)\n", - "Epoch 7710: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7710: accuracy appended (60.00%)\n", - "Epoch 7710: model set back to train mode\n", - "Epoch 7710: model parameters saved\n", - "Epoch 7711 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7711: avg_loss appended (1.3125)\n", - "Epoch 7711: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7711: accuracy appended (60.00%)\n", - "Epoch 7711: model set back to train mode\n", - "Epoch 7711: model parameters saved\n", - "Epoch 7712 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7712: avg_loss appended (1.3125)\n", - "Epoch 7712: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7712: accuracy appended (60.00%)\n", - "Epoch 7712: model set back to train mode\n", - "Epoch 7712: model parameters saved\n", - "Epoch 7713 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7713: avg_loss appended (1.3125)\n", - "Epoch 7713: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7713: accuracy appended (60.00%)\n", - "Epoch 7713: model set back to train mode\n", - "Epoch 7713: model parameters saved\n", - "Epoch 7714 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7714: avg_loss appended (1.3125)\n", - "Epoch 7714: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7714: accuracy appended (60.00%)\n", - "Epoch 7714: model set back to train mode\n", - "Epoch 7714: model parameters saved\n", - "Epoch 7715 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7715: avg_loss appended (1.3125)\n", - "Epoch 7715: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7715: accuracy appended (60.00%)\n", - "Epoch 7715: model set back to train mode\n", - "Epoch 7715: model parameters saved\n", - "Epoch 7716 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7716: avg_loss appended (1.3125)\n", - "Epoch 7716: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7716: accuracy appended (60.00%)\n", - "Epoch 7716: model set back to train mode\n", - "Epoch 7716: model parameters saved\n", - "Epoch 7717 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7717: avg_loss appended (1.3125)\n", - "Epoch 7717: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7717: accuracy appended (60.00%)\n", - "Epoch 7717: model set back to train mode\n", - "Epoch 7717: model parameters saved\n", - "Epoch 7718 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7718: avg_loss appended (1.3125)\n", - "Epoch 7718: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7718: accuracy appended (60.00%)\n", - "Epoch 7718: model set back to train mode\n", - "Epoch 7718: model parameters saved\n", - "Epoch 7719 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7719: avg_loss appended (1.3125)\n", - "Epoch 7719: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7719: accuracy appended (60.00%)\n", - "Epoch 7719: model set back to train mode\n", - "Epoch 7719: model parameters saved\n", - "Epoch 7720 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7720: avg_loss appended (1.3125)\n", - "Epoch 7720: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7720: accuracy appended (60.00%)\n", - "Epoch 7720: model set back to train mode\n", - "Epoch 7720: model parameters saved\n", - "Epoch 7721 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7721: avg_loss appended (1.3125)\n", - "Epoch 7721: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7721: accuracy appended (60.00%)\n", - "Epoch 7721: model set back to train mode\n", - "Epoch 7721: model parameters saved\n", - "Epoch 7722 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7722: avg_loss appended (1.3125)\n", - "Epoch 7722: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7722: accuracy appended (60.00%)\n", - "Epoch 7722: model set back to train mode\n", - "Epoch 7722: model parameters saved\n", - "Epoch 7723 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7723: avg_loss appended (1.3125)\n", - "Epoch 7723: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7723: accuracy appended (60.00%)\n", - "Epoch 7723: model set back to train mode\n", - "Epoch 7723: model parameters saved\n", - "Epoch 7724 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7724: avg_loss appended (1.3125)\n", - "Epoch 7724: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7724: accuracy appended (60.00%)\n", - "Epoch 7724: model set back to train mode\n", - "Epoch 7724: model parameters saved\n", - "Epoch 7725 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7725: avg_loss appended (1.3125)\n", - "Epoch 7725: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7725: accuracy appended (60.00%)\n", - "Epoch 7725: model set back to train mode\n", - "Epoch 7725: model parameters saved\n", - "Epoch 7726 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7726: avg_loss appended (1.3125)\n", - "Epoch 7726: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7726: accuracy appended (60.00%)\n", - "Epoch 7726: model set back to train mode\n", - "Epoch 7726: model parameters saved\n", - "Epoch 7727 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7727: avg_loss appended (1.3125)\n", - "Epoch 7727: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7727: accuracy appended (60.00%)\n", - "Epoch 7727: model set back to train mode\n", - "Epoch 7727: model parameters saved\n", - "Epoch 7728 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7728: avg_loss appended (1.3125)\n", - "Epoch 7728: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7728: accuracy appended (60.00%)\n", - "Epoch 7728: model set back to train mode\n", - "Epoch 7728: model parameters saved\n", - "Epoch 7729 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7729: avg_loss appended (1.3125)\n", - "Epoch 7729: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7729: accuracy appended (60.00%)\n", - "Epoch 7729: model set back to train mode\n", - "Epoch 7729: model parameters saved\n", - "Epoch 7730 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7730: avg_loss appended (1.3125)\n", - "Epoch 7730: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7730: accuracy appended (60.00%)\n", - "Epoch 7730: model set back to train mode\n", - "Epoch 7730: model parameters saved\n", - "Epoch 7731 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7731: avg_loss appended (1.3125)\n", - "Epoch 7731: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7731: accuracy appended (60.00%)\n", - "Epoch 7731: model set back to train mode\n", - "Epoch 7731: model parameters saved\n", - "Epoch 7732 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7732: avg_loss appended (1.3125)\n", - "Epoch 7732: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7732: accuracy appended (60.00%)\n", - "Epoch 7732: model set back to train mode\n", - "Epoch 7732: model parameters saved\n", - "Epoch 7733 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7733: avg_loss appended (1.3125)\n", - "Epoch 7733: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7733: accuracy appended (60.00%)\n", - "Epoch 7733: model set back to train mode\n", - "Epoch 7733: model parameters saved\n", - "Epoch 7734 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7734: avg_loss appended (1.3125)\n", - "Epoch 7734: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7734: accuracy appended (60.00%)\n", - "Epoch 7734: model set back to train mode\n", - "Epoch 7734: model parameters saved\n", - "Epoch 7735 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7735: avg_loss appended (1.3125)\n", - "Epoch 7735: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7735: accuracy appended (60.00%)\n", - "Epoch 7735: model set back to train mode\n", - "Epoch 7735: model parameters saved\n", - "Epoch 7736 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7736: avg_loss appended (1.3125)\n", - "Epoch 7736: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7736: accuracy appended (60.00%)\n", - "Epoch 7736: model set back to train mode\n", - "Epoch 7736: model parameters saved\n", - "Epoch 7737 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7737: avg_loss appended (1.3125)\n", - "Epoch 7737: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7737: accuracy appended (60.00%)\n", - "Epoch 7737: model set back to train mode\n", - "Epoch 7737: model parameters saved\n", - "Epoch 7738 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7738: avg_loss appended (1.3125)\n", - "Epoch 7738: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7738: accuracy appended (60.00%)\n", - "Epoch 7738: model set back to train mode\n", - "Epoch 7738: model parameters saved\n", - "Epoch 7739 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7739: avg_loss appended (1.3125)\n", - "Epoch 7739: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7739: accuracy appended (60.00%)\n", - "Epoch 7739: model set back to train mode\n", - "Epoch 7739: model parameters saved\n", - "Epoch 7740 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7740: avg_loss appended (1.3125)\n", - "Epoch 7740: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7740: accuracy appended (60.00%)\n", - "Epoch 7740: model set back to train mode\n", - "Epoch 7740: model parameters saved\n", - "Epoch 7741 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7741: avg_loss appended (1.3125)\n", - "Epoch 7741: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7741: accuracy appended (60.00%)\n", - "Epoch 7741: model set back to train mode\n", - "Epoch 7741: model parameters saved\n", - "Epoch 7742 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7742: avg_loss appended (1.3125)\n", - "Epoch 7742: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7742: accuracy appended (60.00%)\n", - "Epoch 7742: model set back to train mode\n", - "Epoch 7742: model parameters saved\n", - "Epoch 7743 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7743: avg_loss appended (1.3125)\n", - "Epoch 7743: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7743: accuracy appended (60.00%)\n", - "Epoch 7743: model set back to train mode\n", - "Epoch 7743: model parameters saved\n", - "Epoch 7744 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7744: avg_loss appended (1.3125)\n", - "Epoch 7744: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7744: accuracy appended (60.00%)\n", - "Epoch 7744: model set back to train mode\n", - "Epoch 7744: model parameters saved\n", - "Epoch 7745 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7745: avg_loss appended (1.3125)\n", - "Epoch 7745: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7745: accuracy appended (60.00%)\n", - "Epoch 7745: model set back to train mode\n", - "Epoch 7745: model parameters saved\n", - "Epoch 7746 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7746: avg_loss appended (1.3125)\n", - "Epoch 7746: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7746: accuracy appended (60.00%)\n", - "Epoch 7746: model set back to train mode\n", - "Epoch 7746: model parameters saved\n", - "Epoch 7747 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7747: avg_loss appended (1.3125)\n", - "Epoch 7747: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7747: accuracy appended (60.00%)\n", - "Epoch 7747: model set back to train mode\n", - "Epoch 7747: model parameters saved\n", - "Epoch 7748 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7748: avg_loss appended (1.3125)\n", - "Epoch 7748: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7748: accuracy appended (60.00%)\n", - "Epoch 7748: model set back to train mode\n", - "Epoch 7748: model parameters saved\n", - "Epoch 7749 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7749: avg_loss appended (1.3125)\n", - "Epoch 7749: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7749: accuracy appended (60.00%)\n", - "Epoch 7749: model set back to train mode\n", - "Epoch 7749: model parameters saved\n", - "Epoch 7750 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7750: avg_loss appended (1.3125)\n", - "Epoch 7750: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7750: accuracy appended (60.00%)\n", - "Epoch 7750: model set back to train mode\n", - "Epoch 7750: model parameters saved\n", - "Epoch 7751 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7751: avg_loss appended (1.3125)\n", - "Epoch 7751: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7751: accuracy appended (60.00%)\n", - "Epoch 7751: model set back to train mode\n", - "Epoch 7751: model parameters saved\n", - "Epoch 7752 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7752: avg_loss appended (1.3125)\n", - "Epoch 7752: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7752: accuracy appended (60.00%)\n", - "Epoch 7752: model set back to train mode\n", - "Epoch 7752: model parameters saved\n", - "Epoch 7753 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7753: avg_loss appended (1.3125)\n", - "Epoch 7753: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7753: accuracy appended (60.00%)\n", - "Epoch 7753: model set back to train mode\n", - "Epoch 7753: model parameters saved\n", - "Epoch 7754 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7754: avg_loss appended (1.3125)\n", - "Epoch 7754: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7754: accuracy appended (60.00%)\n", - "Epoch 7754: model set back to train mode\n", - "Epoch 7754: model parameters saved\n", - "Epoch 7755 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7755: avg_loss appended (1.3125)\n", - "Epoch 7755: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7755: accuracy appended (60.00%)\n", - "Epoch 7755: model set back to train mode\n", - "Epoch 7755: model parameters saved\n", - "Epoch 7756 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7756: avg_loss appended (1.3125)\n", - "Epoch 7756: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7756: accuracy appended (60.00%)\n", - "Epoch 7756: model set back to train mode\n", - "Epoch 7756: model parameters saved\n", - "Epoch 7757 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7757: avg_loss appended (1.3125)\n", - "Epoch 7757: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7757: accuracy appended (60.00%)\n", - "Epoch 7757: model set back to train mode\n", - "Epoch 7757: model parameters saved\n", - "Epoch 7758 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7758: avg_loss appended (1.3125)\n", - "Epoch 7758: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7758: accuracy appended (60.00%)\n", - "Epoch 7758: model set back to train mode\n", - "Epoch 7758: model parameters saved\n", - "Epoch 7759 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7759: avg_loss appended (1.3125)\n", - "Epoch 7759: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7759: accuracy appended (60.00%)\n", - "Epoch 7759: model set back to train mode\n", - "Epoch 7759: model parameters saved\n", - "Epoch 7760 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7760: avg_loss appended (1.3125)\n", - "Epoch 7760: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7760: accuracy appended (60.00%)\n", - "Epoch 7760: model set back to train mode\n", - "Epoch 7760: model parameters saved\n", - "Epoch 7761 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7761: avg_loss appended (1.3125)\n", - "Epoch 7761: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7761: accuracy appended (60.00%)\n", - "Epoch 7761: model set back to train mode\n", - "Epoch 7761: model parameters saved\n", - "Epoch 7762 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7762: avg_loss appended (1.3125)\n", - "Epoch 7762: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7762: accuracy appended (60.00%)\n", - "Epoch 7762: model set back to train mode\n", - "Epoch 7762: model parameters saved\n", - "Epoch 7763 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7763: avg_loss appended (1.3125)\n", - "Epoch 7763: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7763: accuracy appended (60.00%)\n", - "Epoch 7763: model set back to train mode\n", - "Epoch 7763: model parameters saved\n", - "Epoch 7764 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7764: avg_loss appended (1.3125)\n", - "Epoch 7764: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7764: accuracy appended (60.00%)\n", - "Epoch 7764: model set back to train mode\n", - "Epoch 7764: model parameters saved\n", - "Epoch 7765 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7765: avg_loss appended (1.3125)\n", - "Epoch 7765: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7765: accuracy appended (60.00%)\n", - "Epoch 7765: model set back to train mode\n", - "Epoch 7765: model parameters saved\n", - "Epoch 7766 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7766: avg_loss appended (1.3125)\n", - "Epoch 7766: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7766: accuracy appended (60.00%)\n", - "Epoch 7766: model set back to train mode\n", - "Epoch 7766: model parameters saved\n", - "Epoch 7767 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7767: avg_loss appended (1.3125)\n", - "Epoch 7767: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7767: accuracy appended (60.00%)\n", - "Epoch 7767: model set back to train mode\n", - "Epoch 7767: model parameters saved\n", - "Epoch 7768 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7768: avg_loss appended (1.3125)\n", - "Epoch 7768: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7768: accuracy appended (60.00%)\n", - "Epoch 7768: model set back to train mode\n", - "Epoch 7768: model parameters saved\n", - "Epoch 7769 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7769: avg_loss appended (1.3125)\n", - "Epoch 7769: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7769: accuracy appended (60.00%)\n", - "Epoch 7769: model set back to train mode\n", - "Epoch 7769: model parameters saved\n", - "Epoch 7770 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7770: avg_loss appended (1.3125)\n", - "Epoch 7770: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7770: accuracy appended (60.00%)\n", - "Epoch 7770: model set back to train mode\n", - "Epoch 7770: model parameters saved\n", - "Epoch 7771 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7771: avg_loss appended (1.3125)\n", - "Epoch 7771: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7771: accuracy appended (60.00%)\n", - "Epoch 7771: model set back to train mode\n", - "Epoch 7771: model parameters saved\n", - "Epoch 7772 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7772: avg_loss appended (1.3125)\n", - "Epoch 7772: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7772: accuracy appended (60.00%)\n", - "Epoch 7772: model set back to train mode\n", - "Epoch 7772: model parameters saved\n", - "Epoch 7773 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7773: avg_loss appended (1.3125)\n", - "Epoch 7773: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7773: accuracy appended (60.00%)\n", - "Epoch 7773: model set back to train mode\n", - "Epoch 7773: model parameters saved\n", - "Epoch 7774 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7774: avg_loss appended (1.3125)\n", - "Epoch 7774: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7774: accuracy appended (60.00%)\n", - "Epoch 7774: model set back to train mode\n", - "Epoch 7774: model parameters saved\n", - "Epoch 7775 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7775: avg_loss appended (1.3125)\n", - "Epoch 7775: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7775: accuracy appended (60.00%)\n", - "Epoch 7775: model set back to train mode\n", - "Epoch 7775: model parameters saved\n", - "Epoch 7776 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7776: avg_loss appended (1.3125)\n", - "Epoch 7776: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7776: accuracy appended (60.00%)\n", - "Epoch 7776: model set back to train mode\n", - "Epoch 7776: model parameters saved\n", - "Epoch 7777 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7777: avg_loss appended (1.3125)\n", - "Epoch 7777: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7777: accuracy appended (60.00%)\n", - "Epoch 7777: model set back to train mode\n", - "Epoch 7777: model parameters saved\n", - "Epoch 7778 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7778: avg_loss appended (1.3125)\n", - "Epoch 7778: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7778: accuracy appended (60.00%)\n", - "Epoch 7778: model set back to train mode\n", - "Epoch 7778: model parameters saved\n", - "Epoch 7779 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7779: avg_loss appended (1.3125)\n", - "Epoch 7779: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7779: accuracy appended (60.00%)\n", - "Epoch 7779: model set back to train mode\n", - "Epoch 7779: model parameters saved\n", - "Epoch 7780 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7780: avg_loss appended (1.3125)\n", - "Epoch 7780: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7780: accuracy appended (60.00%)\n", - "Epoch 7780: model set back to train mode\n", - "Epoch 7780: model parameters saved\n", - "Epoch 7781 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7781: avg_loss appended (1.3125)\n", - "Epoch 7781: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7781: accuracy appended (60.00%)\n", - "Epoch 7781: model set back to train mode\n", - "Epoch 7781: model parameters saved\n", - "Epoch 7782 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7782: avg_loss appended (1.3125)\n", - "Epoch 7782: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7782: accuracy appended (60.00%)\n", - "Epoch 7782: model set back to train mode\n", - "Epoch 7782: model parameters saved\n", - "Epoch 7783 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7783: avg_loss appended (1.3125)\n", - "Epoch 7783: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7783: accuracy appended (60.00%)\n", - "Epoch 7783: model set back to train mode\n", - "Epoch 7783: model parameters saved\n", - "Epoch 7784 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7784: avg_loss appended (1.3125)\n", - "Epoch 7784: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7784: accuracy appended (60.00%)\n", - "Epoch 7784: model set back to train mode\n", - "Epoch 7784: model parameters saved\n", - "Epoch 7785 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7785: avg_loss appended (1.3125)\n", - "Epoch 7785: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7785: accuracy appended (60.00%)\n", - "Epoch 7785: model set back to train mode\n", - "Epoch 7785: model parameters saved\n", - "Epoch 7786 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7786: avg_loss appended (1.3125)\n", - "Epoch 7786: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7786: accuracy appended (60.00%)\n", - "Epoch 7786: model set back to train mode\n", - "Epoch 7786: model parameters saved\n", - "Epoch 7787 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7787: avg_loss appended (1.3125)\n", - "Epoch 7787: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7787: accuracy appended (60.00%)\n", - "Epoch 7787: model set back to train mode\n", - "Epoch 7787: model parameters saved\n", - "Epoch 7788 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7788: avg_loss appended (1.3125)\n", - "Epoch 7788: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7788: accuracy appended (60.00%)\n", - "Epoch 7788: model set back to train mode\n", - "Epoch 7788: model parameters saved\n", - "Epoch 7789 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7789: avg_loss appended (1.3125)\n", - "Epoch 7789: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7789: accuracy appended (60.00%)\n", - "Epoch 7789: model set back to train mode\n", - "Epoch 7789: model parameters saved\n", - "Epoch 7790 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7790: avg_loss appended (1.3125)\n", - "Epoch 7790: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7790: accuracy appended (60.00%)\n", - "Epoch 7790: model set back to train mode\n", - "Epoch 7790: model parameters saved\n", - "Epoch 7791 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7791: avg_loss appended (1.3125)\n", - "Epoch 7791: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7791: accuracy appended (60.00%)\n", - "Epoch 7791: model set back to train mode\n", - "Epoch 7791: model parameters saved\n", - "Epoch 7792 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7792: avg_loss appended (1.3125)\n", - "Epoch 7792: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7792: accuracy appended (60.00%)\n", - "Epoch 7792: model set back to train mode\n", - "Epoch 7792: model parameters saved\n", - "Epoch 7793 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7793: avg_loss appended (1.3125)\n", - "Epoch 7793: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7793: accuracy appended (60.00%)\n", - "Epoch 7793: model set back to train mode\n", - "Epoch 7793: model parameters saved\n", - "Epoch 7794 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7794: avg_loss appended (1.3125)\n", - "Epoch 7794: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7794: accuracy appended (60.00%)\n", - "Epoch 7794: model set back to train mode\n", - "Epoch 7794: model parameters saved\n", - "Epoch 7795 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7795: avg_loss appended (1.3125)\n", - "Epoch 7795: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7795: accuracy appended (60.00%)\n", - "Epoch 7795: model set back to train mode\n", - "Epoch 7795: model parameters saved\n", - "Epoch 7796 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7796: avg_loss appended (1.3125)\n", - "Epoch 7796: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7796: accuracy appended (60.00%)\n", - "Epoch 7796: model set back to train mode\n", - "Epoch 7796: model parameters saved\n", - "Epoch 7797 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7797: avg_loss appended (1.3125)\n", - "Epoch 7797: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7797: accuracy appended (60.00%)\n", - "Epoch 7797: model set back to train mode\n", - "Epoch 7797: model parameters saved\n", - "Epoch 7798 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7798: avg_loss appended (1.3125)\n", - "Epoch 7798: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7798: accuracy appended (60.00%)\n", - "Epoch 7798: model set back to train mode\n", - "Epoch 7798: model parameters saved\n", - "Epoch 7799 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7799: avg_loss appended (1.3125)\n", - "Epoch 7799: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7799: accuracy appended (60.00%)\n", - "Epoch 7799: model set back to train mode\n", - "Epoch 7799: model parameters saved\n", - "Epoch 7800 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7800: avg_loss appended (1.3125)\n", - "Epoch 7800: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7800: accuracy appended (60.00%)\n", - "Epoch 7800: model set back to train mode\n", - "Epoch 7800: model parameters saved\n", - "Epoch 7800/10000, Loss: 1.3125, Accuracy: 60.00%\n", - "Epoch 7801 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7801: avg_loss appended (1.3125)\n", - "Epoch 7801: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7801: accuracy appended (60.00%)\n", - "Epoch 7801: model set back to train mode\n", - "Epoch 7801: model parameters saved\n", - "Epoch 7802 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7802: avg_loss appended (1.3125)\n", - "Epoch 7802: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7802: accuracy appended (60.00%)\n", - "Epoch 7802: model set back to train mode\n", - "Epoch 7802: model parameters saved\n", - "Epoch 7803 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7803: avg_loss appended (1.3125)\n", - "Epoch 7803: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7803: accuracy appended (60.00%)\n", - "Epoch 7803: model set back to train mode\n", - "Epoch 7803: model parameters saved\n", - "Epoch 7804 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7804: avg_loss appended (1.3125)\n", - "Epoch 7804: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7804: accuracy appended (60.00%)\n", - "Epoch 7804: model set back to train mode\n", - "Epoch 7804: model parameters saved\n", - "Epoch 7805 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7805: avg_loss appended (1.3125)\n", - "Epoch 7805: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7805: accuracy appended (60.00%)\n", - "Epoch 7805: model set back to train mode\n", - "Epoch 7805: model parameters saved\n", - "Epoch 7806 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7806: avg_loss appended (1.3125)\n", - "Epoch 7806: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7806: accuracy appended (60.00%)\n", - "Epoch 7806: model set back to train mode\n", - "Epoch 7806: model parameters saved\n", - "Epoch 7807 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7807: avg_loss appended (1.3125)\n", - "Epoch 7807: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7807: accuracy appended (60.00%)\n", - "Epoch 7807: model set back to train mode\n", - "Epoch 7807: model parameters saved\n", - "Epoch 7808 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7808: avg_loss appended (1.3125)\n", - "Epoch 7808: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7808: accuracy appended (60.00%)\n", - "Epoch 7808: model set back to train mode\n", - "Epoch 7808: model parameters saved\n", - "Epoch 7809 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7809: avg_loss appended (1.3125)\n", - "Epoch 7809: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7809: accuracy appended (60.00%)\n", - "Epoch 7809: model set back to train mode\n", - "Epoch 7809: model parameters saved\n", - "Epoch 7810 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7810: avg_loss appended (1.3125)\n", - "Epoch 7810: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7810: accuracy appended (60.00%)\n", - "Epoch 7810: model set back to train mode\n", - "Epoch 7810: model parameters saved\n", - "Epoch 7811 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7811: avg_loss appended (1.3125)\n", - "Epoch 7811: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7811: accuracy appended (60.00%)\n", - "Epoch 7811: model set back to train mode\n", - "Epoch 7811: model parameters saved\n", - "Epoch 7812 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7812: avg_loss appended (1.3125)\n", - "Epoch 7812: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7812: accuracy appended (60.00%)\n", - "Epoch 7812: model set back to train mode\n", - "Epoch 7812: model parameters saved\n", - "Epoch 7813 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7813: avg_loss appended (1.3125)\n", - "Epoch 7813: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7813: accuracy appended (60.00%)\n", - "Epoch 7813: model set back to train mode\n", - "Epoch 7813: model parameters saved\n", - "Epoch 7814 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7814: avg_loss appended (1.3125)\n", - "Epoch 7814: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7814: accuracy appended (60.00%)\n", - "Epoch 7814: model set back to train mode\n", - "Epoch 7814: model parameters saved\n", - "Epoch 7815 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7815: avg_loss appended (1.3125)\n", - "Epoch 7815: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7815: accuracy appended (60.00%)\n", - "Epoch 7815: model set back to train mode\n", - "Epoch 7815: model parameters saved\n", - "Epoch 7816 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7816: avg_loss appended (1.3125)\n", - "Epoch 7816: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7816: accuracy appended (60.00%)\n", - "Epoch 7816: model set back to train mode\n", - "Epoch 7816: model parameters saved\n", - "Epoch 7817 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7817: avg_loss appended (1.3125)\n", - "Epoch 7817: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7817: accuracy appended (60.00%)\n", - "Epoch 7817: model set back to train mode\n", - "Epoch 7817: model parameters saved\n", - "Epoch 7818 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7818: avg_loss appended (1.3125)\n", - "Epoch 7818: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7818: accuracy appended (60.00%)\n", - "Epoch 7818: model set back to train mode\n", - "Epoch 7818: model parameters saved\n", - "Epoch 7819 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7819: avg_loss appended (1.3125)\n", - "Epoch 7819: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7819: accuracy appended (60.00%)\n", - "Epoch 7819: model set back to train mode\n", - "Epoch 7819: model parameters saved\n", - "Epoch 7820 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7820: avg_loss appended (1.3125)\n", - "Epoch 7820: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7820: accuracy appended (60.00%)\n", - "Epoch 7820: model set back to train mode\n", - "Epoch 7820: model parameters saved\n", - "Epoch 7821 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7821: avg_loss appended (1.3125)\n", - "Epoch 7821: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7821: accuracy appended (60.00%)\n", - "Epoch 7821: model set back to train mode\n", - "Epoch 7821: model parameters saved\n", - "Epoch 7822 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7822: avg_loss appended (1.3125)\n", - "Epoch 7822: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7822: accuracy appended (60.00%)\n", - "Epoch 7822: model set back to train mode\n", - "Epoch 7822: model parameters saved\n", - "Epoch 7823 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7823: avg_loss appended (1.3125)\n", - "Epoch 7823: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7823: accuracy appended (60.00%)\n", - "Epoch 7823: model set back to train mode\n", - "Epoch 7823: model parameters saved\n", - "Epoch 7824 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7824: avg_loss appended (1.3125)\n", - "Epoch 7824: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7824: accuracy appended (60.00%)\n", - "Epoch 7824: model set back to train mode\n", - "Epoch 7824: model parameters saved\n", - "Epoch 7825 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7825: avg_loss appended (1.3125)\n", - "Epoch 7825: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7825: accuracy appended (60.00%)\n", - "Epoch 7825: model set back to train mode\n", - "Epoch 7825: model parameters saved\n", - "Epoch 7826 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7826: avg_loss appended (1.3125)\n", - "Epoch 7826: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7826: accuracy appended (60.00%)\n", - "Epoch 7826: model set back to train mode\n", - "Epoch 7826: model parameters saved\n", - "Epoch 7827 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7827: avg_loss appended (1.3125)\n", - "Epoch 7827: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7827: accuracy appended (60.00%)\n", - "Epoch 7827: model set back to train mode\n", - "Epoch 7827: model parameters saved\n", - "Epoch 7828 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7828: avg_loss appended (1.3125)\n", - "Epoch 7828: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7828: accuracy appended (60.00%)\n", - "Epoch 7828: model set back to train mode\n", - "Epoch 7828: model parameters saved\n", - "Epoch 7829 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7829: avg_loss appended (1.3125)\n", - "Epoch 7829: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7829: accuracy appended (60.00%)\n", - "Epoch 7829: model set back to train mode\n", - "Epoch 7829: model parameters saved\n", - "Epoch 7830 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7830: avg_loss appended (1.3125)\n", - "Epoch 7830: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7830: accuracy appended (60.00%)\n", - "Epoch 7830: model set back to train mode\n", - "Epoch 7830: model parameters saved\n", - "Epoch 7831 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7831: avg_loss appended (1.3125)\n", - "Epoch 7831: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7831: accuracy appended (60.00%)\n", - "Epoch 7831: model set back to train mode\n", - "Epoch 7831: model parameters saved\n", - "Epoch 7832 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7832: avg_loss appended (1.3125)\n", - "Epoch 7832: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7832: accuracy appended (60.00%)\n", - "Epoch 7832: model set back to train mode\n", - "Epoch 7832: model parameters saved\n", - "Epoch 7833 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7833: avg_loss appended (1.3125)\n", - "Epoch 7833: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7833: accuracy appended (60.00%)\n", - "Epoch 7833: model set back to train mode\n", - "Epoch 7833: model parameters saved\n", - "Epoch 7834 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7834: avg_loss appended (1.3125)\n", - "Epoch 7834: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7834: accuracy appended (60.00%)\n", - "Epoch 7834: model set back to train mode\n", - "Epoch 7834: model parameters saved\n", - "Epoch 7835 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7835: avg_loss appended (1.3125)\n", - "Epoch 7835: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7835: accuracy appended (60.00%)\n", - "Epoch 7835: model set back to train mode\n", - "Epoch 7835: model parameters saved\n", - "Epoch 7836 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7836: avg_loss appended (1.3125)\n", - "Epoch 7836: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7836: accuracy appended (60.00%)\n", - "Epoch 7836: model set back to train mode\n", - "Epoch 7836: model parameters saved\n", - "Epoch 7837 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7837: avg_loss appended (1.3125)\n", - "Epoch 7837: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7837: accuracy appended (60.00%)\n", - "Epoch 7837: model set back to train mode\n", - "Epoch 7837: model parameters saved\n", - "Epoch 7838 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7838: avg_loss appended (1.3125)\n", - "Epoch 7838: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7838: accuracy appended (60.00%)\n", - "Epoch 7838: model set back to train mode\n", - "Epoch 7838: model parameters saved\n", - "Epoch 7839 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7839: avg_loss appended (1.3125)\n", - "Epoch 7839: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7839: accuracy appended (60.00%)\n", - "Epoch 7839: model set back to train mode\n", - "Epoch 7839: model parameters saved\n", - "Epoch 7840 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7840: avg_loss appended (1.3125)\n", - "Epoch 7840: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7840: accuracy appended (60.00%)\n", - "Epoch 7840: model set back to train mode\n", - "Epoch 7840: model parameters saved\n", - "Epoch 7841 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7841: avg_loss appended (1.3125)\n", - "Epoch 7841: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7841: accuracy appended (60.00%)\n", - "Epoch 7841: model set back to train mode\n", - "Epoch 7841: model parameters saved\n", - "Epoch 7842 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7842: avg_loss appended (1.3125)\n", - "Epoch 7842: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7842: accuracy appended (60.00%)\n", - "Epoch 7842: model set back to train mode\n", - "Epoch 7842: model parameters saved\n", - "Epoch 7843 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7843: avg_loss appended (1.3125)\n", - "Epoch 7843: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7843: accuracy appended (60.00%)\n", - "Epoch 7843: model set back to train mode\n", - "Epoch 7843: model parameters saved\n", - "Epoch 7844 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7844: avg_loss appended (1.3125)\n", - "Epoch 7844: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7844: accuracy appended (60.00%)\n", - "Epoch 7844: model set back to train mode\n", - "Epoch 7844: model parameters saved\n", - "Epoch 7845 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7845: avg_loss appended (1.3125)\n", - "Epoch 7845: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7845: accuracy appended (60.00%)\n", - "Epoch 7845: model set back to train mode\n", - "Epoch 7845: model parameters saved\n", - "Epoch 7846 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7846: avg_loss appended (1.3125)\n", - "Epoch 7846: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7846: accuracy appended (60.00%)\n", - "Epoch 7846: model set back to train mode\n", - "Epoch 7846: model parameters saved\n", - "Epoch 7847 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7847: avg_loss appended (1.3125)\n", - "Epoch 7847: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7847: accuracy appended (60.00%)\n", - "Epoch 7847: model set back to train mode\n", - "Epoch 7847: model parameters saved\n", - "Epoch 7848 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7848: avg_loss appended (1.3125)\n", - "Epoch 7848: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7848: accuracy appended (60.00%)\n", - "Epoch 7848: model set back to train mode\n", - "Epoch 7848: model parameters saved\n", - "Epoch 7849 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7849: avg_loss appended (1.3125)\n", - "Epoch 7849: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7849: accuracy appended (60.00%)\n", - "Epoch 7849: model set back to train mode\n", - "Epoch 7849: model parameters saved\n", - "Epoch 7850 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7850: avg_loss appended (1.3125)\n", - "Epoch 7850: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7850: accuracy appended (60.00%)\n", - "Epoch 7850: model set back to train mode\n", - "Epoch 7850: model parameters saved\n", - "Epoch 7851 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7851: avg_loss appended (1.3125)\n", - "Epoch 7851: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7851: accuracy appended (60.00%)\n", - "Epoch 7851: model set back to train mode\n", - "Epoch 7851: model parameters saved\n", - "Epoch 7852 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7852: avg_loss appended (1.3125)\n", - "Epoch 7852: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7852: accuracy appended (60.00%)\n", - "Epoch 7852: model set back to train mode\n", - "Epoch 7852: model parameters saved\n", - "Epoch 7853 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7853: avg_loss appended (1.3125)\n", - "Epoch 7853: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7853: accuracy appended (60.00%)\n", - "Epoch 7853: model set back to train mode\n", - "Epoch 7853: model parameters saved\n", - "Epoch 7854 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7854: avg_loss appended (1.3125)\n", - "Epoch 7854: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7854: accuracy appended (60.00%)\n", - "Epoch 7854: model set back to train mode\n", - "Epoch 7854: model parameters saved\n", - "Epoch 7855 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7855: avg_loss appended (1.3125)\n", - "Epoch 7855: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7855: accuracy appended (60.00%)\n", - "Epoch 7855: model set back to train mode\n", - "Epoch 7855: model parameters saved\n", - "Epoch 7856 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7856: avg_loss appended (1.3125)\n", - "Epoch 7856: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7856: accuracy appended (60.00%)\n", - "Epoch 7856: model set back to train mode\n", - "Epoch 7856: model parameters saved\n", - "Epoch 7857 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7857: avg_loss appended (1.3125)\n", - "Epoch 7857: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7857: accuracy appended (60.00%)\n", - "Epoch 7857: model set back to train mode\n", - "Epoch 7857: model parameters saved\n", - "Epoch 7858 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7858: avg_loss appended (1.3125)\n", - "Epoch 7858: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7858: accuracy appended (60.00%)\n", - "Epoch 7858: model set back to train mode\n", - "Epoch 7858: model parameters saved\n", - "Epoch 7859 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7859: avg_loss appended (1.3125)\n", - "Epoch 7859: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7859: accuracy appended (60.00%)\n", - "Epoch 7859: model set back to train mode\n", - "Epoch 7859: model parameters saved\n", - "Epoch 7860 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7860: avg_loss appended (1.3125)\n", - "Epoch 7860: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7860: accuracy appended (60.00%)\n", - "Epoch 7860: model set back to train mode\n", - "Epoch 7860: model parameters saved\n", - "Epoch 7861 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7861: avg_loss appended (1.3125)\n", - "Epoch 7861: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7861: accuracy appended (60.00%)\n", - "Epoch 7861: model set back to train mode\n", - "Epoch 7861: model parameters saved\n", - "Epoch 7862 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7862: avg_loss appended (1.3125)\n", - "Epoch 7862: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7862: accuracy appended (60.00%)\n", - "Epoch 7862: model set back to train mode\n", - "Epoch 7862: model parameters saved\n", - "Epoch 7863 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7863: avg_loss appended (1.3125)\n", - "Epoch 7863: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7863: accuracy appended (60.00%)\n", - "Epoch 7863: model set back to train mode\n", - "Epoch 7863: model parameters saved\n", - "Epoch 7864 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7864: avg_loss appended (1.3125)\n", - "Epoch 7864: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7864: accuracy appended (60.00%)\n", - "Epoch 7864: model set back to train mode\n", - "Epoch 7864: model parameters saved\n", - "Epoch 7865 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7865: avg_loss appended (1.3125)\n", - "Epoch 7865: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7865: accuracy appended (60.00%)\n", - "Epoch 7865: model set back to train mode\n", - "Epoch 7865: model parameters saved\n", - "Epoch 7866 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7866: avg_loss appended (1.3125)\n", - "Epoch 7866: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7866: accuracy appended (60.00%)\n", - "Epoch 7866: model set back to train mode\n", - "Epoch 7866: model parameters saved\n", - "Epoch 7867 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7867: avg_loss appended (1.3125)\n", - "Epoch 7867: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7867: accuracy appended (60.00%)\n", - "Epoch 7867: model set back to train mode\n", - "Epoch 7867: model parameters saved\n", - "Epoch 7868 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7868: avg_loss appended (1.3125)\n", - "Epoch 7868: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7868: accuracy appended (60.00%)\n", - "Epoch 7868: model set back to train mode\n", - "Epoch 7868: model parameters saved\n", - "Epoch 7869 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7869: avg_loss appended (1.3125)\n", - "Epoch 7869: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7869: accuracy appended (60.00%)\n", - "Epoch 7869: model set back to train mode\n", - "Epoch 7869: model parameters saved\n", - "Epoch 7870 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7870: avg_loss appended (1.3125)\n", - "Epoch 7870: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7870: accuracy appended (60.00%)\n", - "Epoch 7870: model set back to train mode\n", - "Epoch 7870: model parameters saved\n", - "Epoch 7871 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7871: avg_loss appended (1.3125)\n", - "Epoch 7871: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7871: accuracy appended (60.00%)\n", - "Epoch 7871: model set back to train mode\n", - "Epoch 7871: model parameters saved\n", - "Epoch 7872 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7872: avg_loss appended (1.3125)\n", - "Epoch 7872: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7872: accuracy appended (60.00%)\n", - "Epoch 7872: model set back to train mode\n", - "Epoch 7872: model parameters saved\n", - "Epoch 7873 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7873: avg_loss appended (1.3125)\n", - "Epoch 7873: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7873: accuracy appended (60.00%)\n", - "Epoch 7873: model set back to train mode\n", - "Epoch 7873: model parameters saved\n", - "Epoch 7874 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7874: avg_loss appended (1.3125)\n", - "Epoch 7874: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7874: accuracy appended (60.00%)\n", - "Epoch 7874: model set back to train mode\n", - "Epoch 7874: model parameters saved\n", - "Epoch 7875 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7875: avg_loss appended (1.3125)\n", - "Epoch 7875: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7875: accuracy appended (60.00%)\n", - "Epoch 7875: model set back to train mode\n", - "Epoch 7875: model parameters saved\n", - "Epoch 7876 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7876: avg_loss appended (1.3125)\n", - "Epoch 7876: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7876: accuracy appended (60.00%)\n", - "Epoch 7876: model set back to train mode\n", - "Epoch 7876: model parameters saved\n", - "Epoch 7877 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7877: avg_loss appended (1.3125)\n", - "Epoch 7877: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7877: accuracy appended (60.00%)\n", - "Epoch 7877: model set back to train mode\n", - "Epoch 7877: model parameters saved\n", - "Epoch 7878 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7878: avg_loss appended (1.3125)\n", - "Epoch 7878: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7878: accuracy appended (60.00%)\n", - "Epoch 7878: model set back to train mode\n", - "Epoch 7878: model parameters saved\n", - "Epoch 7879 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7879: avg_loss appended (1.3125)\n", - "Epoch 7879: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7879: accuracy appended (60.00%)\n", - "Epoch 7879: model set back to train mode\n", - "Epoch 7879: model parameters saved\n", - "Epoch 7880 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7880: avg_loss appended (1.3125)\n", - "Epoch 7880: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7880: accuracy appended (60.00%)\n", - "Epoch 7880: model set back to train mode\n", - "Epoch 7880: model parameters saved\n", - "Epoch 7881 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7881: avg_loss appended (1.3125)\n", - "Epoch 7881: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7881: accuracy appended (60.00%)\n", - "Epoch 7881: model set back to train mode\n", - "Epoch 7881: model parameters saved\n", - "Epoch 7882 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7882: avg_loss appended (1.3125)\n", - "Epoch 7882: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7882: accuracy appended (60.00%)\n", - "Epoch 7882: model set back to train mode\n", - "Epoch 7882: model parameters saved\n", - "Epoch 7883 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7883: avg_loss appended (1.3125)\n", - "Epoch 7883: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7883: accuracy appended (60.00%)\n", - "Epoch 7883: model set back to train mode\n", - "Epoch 7883: model parameters saved\n", - "Epoch 7884 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7884: avg_loss appended (1.3125)\n", - "Epoch 7884: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7884: accuracy appended (60.00%)\n", - "Epoch 7884: model set back to train mode\n", - "Epoch 7884: model parameters saved\n", - "Epoch 7885 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7885: avg_loss appended (1.3125)\n", - "Epoch 7885: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7885: accuracy appended (60.00%)\n", - "Epoch 7885: model set back to train mode\n", - "Epoch 7885: model parameters saved\n", - "Epoch 7886 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7886: avg_loss appended (1.3125)\n", - "Epoch 7886: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7886: accuracy appended (60.00%)\n", - "Epoch 7886: model set back to train mode\n", - "Epoch 7886: model parameters saved\n", - "Epoch 7887 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7887: avg_loss appended (1.3125)\n", - "Epoch 7887: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7887: accuracy appended (60.00%)\n", - "Epoch 7887: model set back to train mode\n", - "Epoch 7887: model parameters saved\n", - "Epoch 7888 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7888: avg_loss appended (1.3125)\n", - "Epoch 7888: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7888: accuracy appended (60.00%)\n", - "Epoch 7888: model set back to train mode\n", - "Epoch 7888: model parameters saved\n", - "Epoch 7889 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7889: avg_loss appended (1.3125)\n", - "Epoch 7889: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7889: accuracy appended (60.00%)\n", - "Epoch 7889: model set back to train mode\n", - "Epoch 7889: model parameters saved\n", - "Epoch 7890 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7890: avg_loss appended (1.3125)\n", - "Epoch 7890: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7890: accuracy appended (60.00%)\n", - "Epoch 7890: model set back to train mode\n", - "Epoch 7890: model parameters saved\n", - "Epoch 7891 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7891: avg_loss appended (1.3125)\n", - "Epoch 7891: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7891: accuracy appended (60.00%)\n", - "Epoch 7891: model set back to train mode\n", - "Epoch 7891: model parameters saved\n", - "Epoch 7892 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7892: avg_loss appended (1.3125)\n", - "Epoch 7892: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7892: accuracy appended (60.00%)\n", - "Epoch 7892: model set back to train mode\n", - "Epoch 7892: model parameters saved\n", - "Epoch 7893 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7893: avg_loss appended (1.3125)\n", - "Epoch 7893: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7893: accuracy appended (60.00%)\n", - "Epoch 7893: model set back to train mode\n", - "Epoch 7893: model parameters saved\n", - "Epoch 7894 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7894: avg_loss appended (1.3125)\n", - "Epoch 7894: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7894: accuracy appended (60.00%)\n", - "Epoch 7894: model set back to train mode\n", - "Epoch 7894: model parameters saved\n", - "Epoch 7895 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7895: avg_loss appended (1.3125)\n", - "Epoch 7895: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7895: accuracy appended (60.00%)\n", - "Epoch 7895: model set back to train mode\n", - "Epoch 7895: model parameters saved\n", - "Epoch 7896 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7896: avg_loss appended (1.3125)\n", - "Epoch 7896: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7896: accuracy appended (60.00%)\n", - "Epoch 7896: model set back to train mode\n", - "Epoch 7896: model parameters saved\n", - "Epoch 7897 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7897: avg_loss appended (1.3125)\n", - "Epoch 7897: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7897: accuracy appended (60.00%)\n", - "Epoch 7897: model set back to train mode\n", - "Epoch 7897: model parameters saved\n", - "Epoch 7898 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7898: avg_loss appended (1.3125)\n", - "Epoch 7898: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7898: accuracy appended (60.00%)\n", - "Epoch 7898: model set back to train mode\n", - "Epoch 7898: model parameters saved\n", - "Epoch 7899 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7899: avg_loss appended (1.3125)\n", - "Epoch 7899: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7899: accuracy appended (60.00%)\n", - "Epoch 7899: model set back to train mode\n", - "Epoch 7899: model parameters saved\n", - "Epoch 7900 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7900: avg_loss appended (1.3125)\n", - "Epoch 7900: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7900: accuracy appended (60.00%)\n", - "Epoch 7900: model set back to train mode\n", - "Epoch 7900: model parameters saved\n", - "Epoch 7900/10000, Loss: 1.3125, Accuracy: 60.00%\n", - "Epoch 7901 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7901: avg_loss appended (1.3125)\n", - "Epoch 7901: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7901: accuracy appended (60.00%)\n", - "Epoch 7901: model set back to train mode\n", - "Epoch 7901: model parameters saved\n", - "Epoch 7902 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7902: avg_loss appended (1.3125)\n", - "Epoch 7902: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7902: accuracy appended (60.00%)\n", - "Epoch 7902: model set back to train mode\n", - "Epoch 7902: model parameters saved\n", - "Epoch 7903 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7903: avg_loss appended (1.3125)\n", - "Epoch 7903: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7903: accuracy appended (60.00%)\n", - "Epoch 7903: model set back to train mode\n", - "Epoch 7903: model parameters saved\n", - "Epoch 7904 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7904: avg_loss appended (1.3125)\n", - "Epoch 7904: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7904: accuracy appended (60.00%)\n", - "Epoch 7904: model set back to train mode\n", - "Epoch 7904: model parameters saved\n", - "Epoch 7905 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7905: avg_loss appended (1.3125)\n", - "Epoch 7905: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7905: accuracy appended (60.00%)\n", - "Epoch 7905: model set back to train mode\n", - "Epoch 7905: model parameters saved\n", - "Epoch 7906 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7906: avg_loss appended (1.3125)\n", - "Epoch 7906: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7906: accuracy appended (60.00%)\n", - "Epoch 7906: model set back to train mode\n", - "Epoch 7906: model parameters saved\n", - "Epoch 7907 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7907: avg_loss appended (1.3125)\n", - "Epoch 7907: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7907: accuracy appended (60.00%)\n", - "Epoch 7907: model set back to train mode\n", - "Epoch 7907: model parameters saved\n", - "Epoch 7908 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7908: avg_loss appended (1.3125)\n", - "Epoch 7908: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7908: accuracy appended (60.00%)\n", - "Epoch 7908: model set back to train mode\n", - "Epoch 7908: model parameters saved\n", - "Epoch 7909 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7909: avg_loss appended (1.3125)\n", - "Epoch 7909: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7909: accuracy appended (60.00%)\n", - "Epoch 7909: model set back to train mode\n", - "Epoch 7909: model parameters saved\n", - "Epoch 7910 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7910: avg_loss appended (1.3125)\n", - "Epoch 7910: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7910: accuracy appended (60.00%)\n", - "Epoch 7910: model set back to train mode\n", - "Epoch 7910: model parameters saved\n", - "Epoch 7911 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7911: avg_loss appended (1.3125)\n", - "Epoch 7911: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7911: accuracy appended (60.00%)\n", - "Epoch 7911: model set back to train mode\n", - "Epoch 7911: model parameters saved\n", - "Epoch 7912 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7912: avg_loss appended (1.3125)\n", - "Epoch 7912: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7912: accuracy appended (60.00%)\n", - "Epoch 7912: model set back to train mode\n", - "Epoch 7912: model parameters saved\n", - "Epoch 7913 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7913: avg_loss appended (1.3125)\n", - "Epoch 7913: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7913: accuracy appended (60.00%)\n", - "Epoch 7913: model set back to train mode\n", - "Epoch 7913: model parameters saved\n", - "Epoch 7914 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7914: avg_loss appended (1.3125)\n", - "Epoch 7914: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7914: accuracy appended (60.00%)\n", - "Epoch 7914: model set back to train mode\n", - "Epoch 7914: model parameters saved\n", - "Epoch 7915 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7915: avg_loss appended (1.3125)\n", - "Epoch 7915: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7915: accuracy appended (60.00%)\n", - "Epoch 7915: model set back to train mode\n", - "Epoch 7915: model parameters saved\n", - "Epoch 7916 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7916: avg_loss appended (1.3125)\n", - "Epoch 7916: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7916: accuracy appended (60.00%)\n", - "Epoch 7916: model set back to train mode\n", - "Epoch 7916: model parameters saved\n", - "Epoch 7917 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7917: avg_loss appended (1.3125)\n", - "Epoch 7917: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7917: accuracy appended (60.00%)\n", - "Epoch 7917: model set back to train mode\n", - "Epoch 7917: model parameters saved\n", - "Epoch 7918 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7918: avg_loss appended (1.3125)\n", - "Epoch 7918: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7918: accuracy appended (60.00%)\n", - "Epoch 7918: model set back to train mode\n", - "Epoch 7918: model parameters saved\n", - "Epoch 7919 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7919: avg_loss appended (1.3125)\n", - "Epoch 7919: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7919: accuracy appended (60.00%)\n", - "Epoch 7919: model set back to train mode\n", - "Epoch 7919: model parameters saved\n", - "Epoch 7920 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7920: avg_loss appended (1.3125)\n", - "Epoch 7920: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7920: accuracy appended (60.00%)\n", - "Epoch 7920: model set back to train mode\n", - "Epoch 7920: model parameters saved\n", - "Epoch 7921 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7921: avg_loss appended (1.3125)\n", - "Epoch 7921: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7921: accuracy appended (60.00%)\n", - "Epoch 7921: model set back to train mode\n", - "Epoch 7921: model parameters saved\n", - "Epoch 7922 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7922: avg_loss appended (1.3125)\n", - "Epoch 7922: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7922: accuracy appended (60.00%)\n", - "Epoch 7922: model set back to train mode\n", - "Epoch 7922: model parameters saved\n", - "Epoch 7923 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7923: avg_loss appended (1.3125)\n", - "Epoch 7923: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7923: accuracy appended (60.00%)\n", - "Epoch 7923: model set back to train mode\n", - "Epoch 7923: model parameters saved\n", - "Epoch 7924 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7924: avg_loss appended (1.3125)\n", - "Epoch 7924: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7924: accuracy appended (60.00%)\n", - "Epoch 7924: model set back to train mode\n", - "Epoch 7924: model parameters saved\n", - "Epoch 7925 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7925: avg_loss appended (1.3125)\n", - "Epoch 7925: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7925: accuracy appended (60.00%)\n", - "Epoch 7925: model set back to train mode\n", - "Epoch 7925: model parameters saved\n", - "Epoch 7926 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7926: avg_loss appended (1.3125)\n", - "Epoch 7926: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7926: accuracy appended (60.00%)\n", - "Epoch 7926: model set back to train mode\n", - "Epoch 7926: model parameters saved\n", - "Epoch 7927 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7927: avg_loss appended (1.3125)\n", - "Epoch 7927: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7927: accuracy appended (60.00%)\n", - "Epoch 7927: model set back to train mode\n", - "Epoch 7927: model parameters saved\n", - "Epoch 7928 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7928: avg_loss appended (1.3125)\n", - "Epoch 7928: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7928: accuracy appended (60.00%)\n", - "Epoch 7928: model set back to train mode\n", - "Epoch 7928: model parameters saved\n", - "Epoch 7929 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7929: avg_loss appended (1.3125)\n", - "Epoch 7929: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7929: accuracy appended (60.00%)\n", - "Epoch 7929: model set back to train mode\n", - "Epoch 7929: model parameters saved\n", - "Epoch 7930 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7930: avg_loss appended (1.3125)\n", - "Epoch 7930: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7930: accuracy appended (60.00%)\n", - "Epoch 7930: model set back to train mode\n", - "Epoch 7930: model parameters saved\n", - "Epoch 7931 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7931: avg_loss appended (1.3125)\n", - "Epoch 7931: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7931: accuracy appended (60.00%)\n", - "Epoch 7931: model set back to train mode\n", - "Epoch 7931: model parameters saved\n", - "Epoch 7932 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7932: avg_loss appended (1.3125)\n", - "Epoch 7932: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7932: accuracy appended (60.00%)\n", - "Epoch 7932: model set back to train mode\n", - "Epoch 7932: model parameters saved\n", - "Epoch 7933 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7933: avg_loss appended (1.3125)\n", - "Epoch 7933: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7933: accuracy appended (60.00%)\n", - "Epoch 7933: model set back to train mode\n", - "Epoch 7933: model parameters saved\n", - "Epoch 7934 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7934: avg_loss appended (1.3125)\n", - "Epoch 7934: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7934: accuracy appended (60.00%)\n", - "Epoch 7934: model set back to train mode\n", - "Epoch 7934: model parameters saved\n", - "Epoch 7935 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7935: avg_loss appended (1.3125)\n", - "Epoch 7935: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7935: accuracy appended (60.00%)\n", - "Epoch 7935: model set back to train mode\n", - "Epoch 7935: model parameters saved\n", - "Epoch 7936 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7936: avg_loss appended (1.3125)\n", - "Epoch 7936: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7936: accuracy appended (60.00%)\n", - "Epoch 7936: model set back to train mode\n", - "Epoch 7936: model parameters saved\n", - "Epoch 7937 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7937: avg_loss appended (1.3125)\n", - "Epoch 7937: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7937: accuracy appended (60.00%)\n", - "Epoch 7937: model set back to train mode\n", - "Epoch 7937: model parameters saved\n", - "Epoch 7938 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7938: avg_loss appended (1.3125)\n", - "Epoch 7938: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7938: accuracy appended (60.00%)\n", - "Epoch 7938: model set back to train mode\n", - "Epoch 7938: model parameters saved\n", - "Epoch 7939 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7939: avg_loss appended (1.3125)\n", - "Epoch 7939: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7939: accuracy appended (60.00%)\n", - "Epoch 7939: model set back to train mode\n", - "Epoch 7939: model parameters saved\n", - "Epoch 7940 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7940: avg_loss appended (1.3125)\n", - "Epoch 7940: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7940: accuracy appended (60.00%)\n", - "Epoch 7940: model set back to train mode\n", - "Epoch 7940: model parameters saved\n", - "Epoch 7941 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7941: avg_loss appended (1.3125)\n", - "Epoch 7941: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7941: accuracy appended (60.00%)\n", - "Epoch 7941: model set back to train mode\n", - "Epoch 7941: model parameters saved\n", - "Epoch 7942 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7942: avg_loss appended (1.3125)\n", - "Epoch 7942: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7942: accuracy appended (60.00%)\n", - "Epoch 7942: model set back to train mode\n", - "Epoch 7942: model parameters saved\n", - "Epoch 7943 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7943: avg_loss appended (1.3125)\n", - "Epoch 7943: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7943: accuracy appended (60.00%)\n", - "Epoch 7943: model set back to train mode\n", - "Epoch 7943: model parameters saved\n", - "Epoch 7944 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7944: avg_loss appended (1.3125)\n", - "Epoch 7944: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7944: accuracy appended (60.00%)\n", - "Epoch 7944: model set back to train mode\n", - "Epoch 7944: model parameters saved\n", - "Epoch 7945 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7945: avg_loss appended (1.3125)\n", - "Epoch 7945: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7945: accuracy appended (60.00%)\n", - "Epoch 7945: model set back to train mode\n", - "Epoch 7945: model parameters saved\n", - "Epoch 7946 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7946: avg_loss appended (1.3125)\n", - "Epoch 7946: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7946: accuracy appended (60.00%)\n", - "Epoch 7946: model set back to train mode\n", - "Epoch 7946: model parameters saved\n", - "Epoch 7947 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7947: avg_loss appended (1.3125)\n", - "Epoch 7947: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7947: accuracy appended (60.00%)\n", - "Epoch 7947: model set back to train mode\n", - "Epoch 7947: model parameters saved\n", - "Epoch 7948 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7948: avg_loss appended (1.3125)\n", - "Epoch 7948: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7948: accuracy appended (60.00%)\n", - "Epoch 7948: model set back to train mode\n", - "Epoch 7948: model parameters saved\n", - "Epoch 7949 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7949: avg_loss appended (1.3125)\n", - "Epoch 7949: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7949: accuracy appended (60.00%)\n", - "Epoch 7949: model set back to train mode\n", - "Epoch 7949: model parameters saved\n", - "Epoch 7950 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7950: avg_loss appended (1.3125)\n", - "Epoch 7950: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7950: accuracy appended (60.00%)\n", - "Epoch 7950: model set back to train mode\n", - "Epoch 7950: model parameters saved\n", - "Epoch 7951 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7951: avg_loss appended (1.3125)\n", - "Epoch 7951: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7951: accuracy appended (60.00%)\n", - "Epoch 7951: model set back to train mode\n", - "Epoch 7951: model parameters saved\n", - "Epoch 7952 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7952: avg_loss appended (1.3125)\n", - "Epoch 7952: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7952: accuracy appended (60.00%)\n", - "Epoch 7952: model set back to train mode\n", - "Epoch 7952: model parameters saved\n", - "Epoch 7953 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7953: avg_loss appended (1.3125)\n", - "Epoch 7953: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7953: accuracy appended (60.00%)\n", - "Epoch 7953: model set back to train mode\n", - "Epoch 7953: model parameters saved\n", - "Epoch 7954 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7954: avg_loss appended (1.3125)\n", - "Epoch 7954: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7954: accuracy appended (60.00%)\n", - "Epoch 7954: model set back to train mode\n", - "Epoch 7954: model parameters saved\n", - "Epoch 7955 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7955: avg_loss appended (1.3125)\n", - "Epoch 7955: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7955: accuracy appended (60.00%)\n", - "Epoch 7955: model set back to train mode\n", - "Epoch 7955: model parameters saved\n", - "Epoch 7956 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7956: avg_loss appended (1.3125)\n", - "Epoch 7956: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7956: accuracy appended (60.00%)\n", - "Epoch 7956: model set back to train mode\n", - "Epoch 7956: model parameters saved\n", - "Epoch 7957 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7957: avg_loss appended (1.3125)\n", - "Epoch 7957: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7957: accuracy appended (60.00%)\n", - "Epoch 7957: model set back to train mode\n", - "Epoch 7957: model parameters saved\n", - "Epoch 7958 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7958: avg_loss appended (1.3125)\n", - "Epoch 7958: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7958: accuracy appended (60.00%)\n", - "Epoch 7958: model set back to train mode\n", - "Epoch 7958: model parameters saved\n", - "Epoch 7959 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7959: avg_loss appended (1.3125)\n", - "Epoch 7959: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7959: accuracy appended (60.00%)\n", - "Epoch 7959: model set back to train mode\n", - "Epoch 7959: model parameters saved\n", - "Epoch 7960 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7960: avg_loss appended (1.3125)\n", - "Epoch 7960: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7960: accuracy appended (60.00%)\n", - "Epoch 7960: model set back to train mode\n", - "Epoch 7960: model parameters saved\n", - "Epoch 7961 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7961: avg_loss appended (1.3125)\n", - "Epoch 7961: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7961: accuracy appended (60.00%)\n", - "Epoch 7961: model set back to train mode\n", - "Epoch 7961: model parameters saved\n", - "Epoch 7962 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7962: avg_loss appended (1.3125)\n", - "Epoch 7962: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7962: accuracy appended (60.00%)\n", - "Epoch 7962: model set back to train mode\n", - "Epoch 7962: model parameters saved\n", - "Epoch 7963 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7963: avg_loss appended (1.3125)\n", - "Epoch 7963: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7963: accuracy appended (60.00%)\n", - "Epoch 7963: model set back to train mode\n", - "Epoch 7963: model parameters saved\n", - "Epoch 7964 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7964: avg_loss appended (1.3125)\n", - "Epoch 7964: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7964: accuracy appended (60.00%)\n", - "Epoch 7964: model set back to train mode\n", - "Epoch 7964: model parameters saved\n", - "Epoch 7965 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7965: avg_loss appended (1.3125)\n", - "Epoch 7965: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7965: accuracy appended (60.00%)\n", - "Epoch 7965: model set back to train mode\n", - "Epoch 7965: model parameters saved\n", - "Epoch 7966 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7966: avg_loss appended (1.3125)\n", - "Epoch 7966: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7966: accuracy appended (60.00%)\n", - "Epoch 7966: model set back to train mode\n", - "Epoch 7966: model parameters saved\n", - "Epoch 7967 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7967: avg_loss appended (1.3125)\n", - "Epoch 7967: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7967: accuracy appended (60.00%)\n", - "Epoch 7967: model set back to train mode\n", - "Epoch 7967: model parameters saved\n", - "Epoch 7968 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7968: avg_loss appended (1.3125)\n", - "Epoch 7968: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7968: accuracy appended (60.00%)\n", - "Epoch 7968: model set back to train mode\n", - "Epoch 7968: model parameters saved\n", - "Epoch 7969 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7969: avg_loss appended (1.3125)\n", - "Epoch 7969: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7969: accuracy appended (60.00%)\n", - "Epoch 7969: model set back to train mode\n", - "Epoch 7969: model parameters saved\n", - "Epoch 7970 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7970: avg_loss appended (1.3125)\n", - "Epoch 7970: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7970: accuracy appended (60.00%)\n", - "Epoch 7970: model set back to train mode\n", - "Epoch 7970: model parameters saved\n", - "Epoch 7971 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7971: avg_loss appended (1.3125)\n", - "Epoch 7971: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7971: accuracy appended (60.00%)\n", - "Epoch 7971: model set back to train mode\n", - "Epoch 7971: model parameters saved\n", - "Epoch 7972 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7972: avg_loss appended (1.3125)\n", - "Epoch 7972: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7972: accuracy appended (60.00%)\n", - "Epoch 7972: model set back to train mode\n", - "Epoch 7972: model parameters saved\n", - "Epoch 7973 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7973: avg_loss appended (1.3125)\n", - "Epoch 7973: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7973: accuracy appended (60.00%)\n", - "Epoch 7973: model set back to train mode\n", - "Epoch 7973: model parameters saved\n", - "Epoch 7974 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7974: avg_loss appended (1.3125)\n", - "Epoch 7974: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7974: accuracy appended (60.00%)\n", - "Epoch 7974: model set back to train mode\n", - "Epoch 7974: model parameters saved\n", - "Epoch 7975 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7975: avg_loss appended (1.3125)\n", - "Epoch 7975: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7975: accuracy appended (60.00%)\n", - "Epoch 7975: model set back to train mode\n", - "Epoch 7975: model parameters saved\n", - "Epoch 7976 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7976: avg_loss appended (1.3125)\n", - "Epoch 7976: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7976: accuracy appended (60.00%)\n", - "Epoch 7976: model set back to train mode\n", - "Epoch 7976: model parameters saved\n", - "Epoch 7977 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7977: avg_loss appended (1.3125)\n", - "Epoch 7977: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7977: accuracy appended (60.00%)\n", - "Epoch 7977: model set back to train mode\n", - "Epoch 7977: model parameters saved\n", - "Epoch 7978 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7978: avg_loss appended (1.3125)\n", - "Epoch 7978: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7978: accuracy appended (60.00%)\n", - "Epoch 7978: model set back to train mode\n", - "Epoch 7978: model parameters saved\n", - "Epoch 7979 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7979: avg_loss appended (1.3125)\n", - "Epoch 7979: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7979: accuracy appended (60.00%)\n", - "Epoch 7979: model set back to train mode\n", - "Epoch 7979: model parameters saved\n", - "Epoch 7980 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7980: avg_loss appended (1.3125)\n", - "Epoch 7980: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7980: accuracy appended (60.00%)\n", - "Epoch 7980: model set back to train mode\n", - "Epoch 7980: model parameters saved\n", - "Epoch 7981 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7981: avg_loss appended (1.3125)\n", - "Epoch 7981: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7981: accuracy appended (60.00%)\n", - "Epoch 7981: model set back to train mode\n", - "Epoch 7981: model parameters saved\n", - "Epoch 7982 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7982: avg_loss appended (1.3125)\n", - "Epoch 7982: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7982: accuracy appended (60.00%)\n", - "Epoch 7982: model set back to train mode\n", - "Epoch 7982: model parameters saved\n", - "Epoch 7983 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7983: avg_loss appended (1.3125)\n", - "Epoch 7983: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7983: accuracy appended (60.00%)\n", - "Epoch 7983: model set back to train mode\n", - "Epoch 7983: model parameters saved\n", - "Epoch 7984 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7984: avg_loss appended (1.3125)\n", - "Epoch 7984: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7984: accuracy appended (60.00%)\n", - "Epoch 7984: model set back to train mode\n", - "Epoch 7984: model parameters saved\n", - "Epoch 7985 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7985: avg_loss appended (1.3125)\n", - "Epoch 7985: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7985: accuracy appended (60.00%)\n", - "Epoch 7985: model set back to train mode\n", - "Epoch 7985: model parameters saved\n", - "Epoch 7986 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7986: avg_loss appended (1.3125)\n", - "Epoch 7986: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7986: accuracy appended (60.00%)\n", - "Epoch 7986: model set back to train mode\n", - "Epoch 7986: model parameters saved\n", - "Epoch 7987 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7987: avg_loss appended (1.3125)\n", - "Epoch 7987: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7987: accuracy appended (60.00%)\n", - "Epoch 7987: model set back to train mode\n", - "Epoch 7987: model parameters saved\n", - "Epoch 7988 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7988: avg_loss appended (1.3125)\n", - "Epoch 7988: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7988: accuracy appended (60.00%)\n", - "Epoch 7988: model set back to train mode\n", - "Epoch 7988: model parameters saved\n", - "Epoch 7989 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7989: avg_loss appended (1.3125)\n", - "Epoch 7989: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7989: accuracy appended (60.00%)\n", - "Epoch 7989: model set back to train mode\n", - "Epoch 7989: model parameters saved\n", - "Epoch 7990 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7990: avg_loss appended (1.3125)\n", - "Epoch 7990: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7990: accuracy appended (60.00%)\n", - "Epoch 7990: model set back to train mode\n", - "Epoch 7990: model parameters saved\n", - "Epoch 7991 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7991: avg_loss appended (1.3125)\n", - "Epoch 7991: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7991: accuracy appended (60.00%)\n", - "Epoch 7991: model set back to train mode\n", - "Epoch 7991: model parameters saved\n", - "Epoch 7992 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7992: avg_loss appended (1.3125)\n", - "Epoch 7992: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7992: accuracy appended (60.00%)\n", - "Epoch 7992: model set back to train mode\n", - "Epoch 7992: model parameters saved\n", - "Epoch 7993 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7993: avg_loss appended (1.3125)\n", - "Epoch 7993: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7993: accuracy appended (60.00%)\n", - "Epoch 7993: model set back to train mode\n", - "Epoch 7993: model parameters saved\n", - "Epoch 7994 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7994: avg_loss appended (1.3125)\n", - "Epoch 7994: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7994: accuracy appended (60.00%)\n", - "Epoch 7994: model set back to train mode\n", - "Epoch 7994: model parameters saved\n", - "Epoch 7995 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7995: avg_loss appended (1.3125)\n", - "Epoch 7995: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7995: accuracy appended (60.00%)\n", - "Epoch 7995: model set back to train mode\n", - "Epoch 7995: model parameters saved\n", - "Epoch 7996 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7996: avg_loss appended (1.3125)\n", - "Epoch 7996: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7996: accuracy appended (60.00%)\n", - "Epoch 7996: model set back to train mode\n", - "Epoch 7996: model parameters saved\n", - "Epoch 7997 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7997: avg_loss appended (1.3125)\n", - "Epoch 7997: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7997: accuracy appended (60.00%)\n", - "Epoch 7997: model set back to train mode\n", - "Epoch 7997: model parameters saved\n", - "Epoch 7998 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7998: avg_loss appended (1.3125)\n", - "Epoch 7998: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7998: accuracy appended (60.00%)\n", - "Epoch 7998: model set back to train mode\n", - "Epoch 7998: model parameters saved\n", - "Epoch 7999 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 7999: avg_loss appended (1.3125)\n", - "Epoch 7999: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 7999: accuracy appended (60.00%)\n", - "Epoch 7999: model set back to train mode\n", - "Epoch 7999: model parameters saved\n", - "Epoch 8000 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8000: avg_loss appended (1.3125)\n", - "Epoch 8000: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8000: accuracy appended (60.00%)\n", - "Epoch 8000: model set back to train mode\n", - "Epoch 8000: model parameters saved\n", - "Epoch 8000/10000, Loss: 1.3125, Accuracy: 60.00%\n", - "Epoch 8001 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8001: avg_loss appended (1.3125)\n", - "Epoch 8001: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8001: accuracy appended (60.00%)\n", - "Epoch 8001: model set back to train mode\n", - "Epoch 8001: model parameters saved\n", - "Epoch 8002 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8002: avg_loss appended (1.3125)\n", - "Epoch 8002: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8002: accuracy appended (60.00%)\n", - "Epoch 8002: model set back to train mode\n", - "Epoch 8002: model parameters saved\n", - "Epoch 8003 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8003: avg_loss appended (1.3125)\n", - "Epoch 8003: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8003: accuracy appended (60.00%)\n", - "Epoch 8003: model set back to train mode\n", - "Epoch 8003: model parameters saved\n", - "Epoch 8004 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8004: avg_loss appended (1.3125)\n", - "Epoch 8004: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8004: accuracy appended (60.00%)\n", - "Epoch 8004: model set back to train mode\n", - "Epoch 8004: model parameters saved\n", - "Epoch 8005 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8005: avg_loss appended (1.3125)\n", - "Epoch 8005: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8005: accuracy appended (60.00%)\n", - "Epoch 8005: model set back to train mode\n", - "Epoch 8005: model parameters saved\n", - "Epoch 8006 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8006: avg_loss appended (1.3125)\n", - "Epoch 8006: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8006: accuracy appended (60.00%)\n", - "Epoch 8006: model set back to train mode\n", - "Epoch 8006: model parameters saved\n", - "Epoch 8007 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8007: avg_loss appended (1.3125)\n", - "Epoch 8007: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8007: accuracy appended (60.00%)\n", - "Epoch 8007: model set back to train mode\n", - "Epoch 8007: model parameters saved\n", - "Epoch 8008 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8008: avg_loss appended (1.3125)\n", - "Epoch 8008: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8008: accuracy appended (60.00%)\n", - "Epoch 8008: model set back to train mode\n", - "Epoch 8008: model parameters saved\n", - "Epoch 8009 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8009: avg_loss appended (1.3125)\n", - "Epoch 8009: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8009: accuracy appended (60.00%)\n", - "Epoch 8009: model set back to train mode\n", - "Epoch 8009: model parameters saved\n", - "Epoch 8010 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8010: avg_loss appended (1.3125)\n", - "Epoch 8010: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8010: accuracy appended (60.00%)\n", - "Epoch 8010: model set back to train mode\n", - "Epoch 8010: model parameters saved\n", - "Epoch 8011 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8011: avg_loss appended (1.3125)\n", - "Epoch 8011: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8011: accuracy appended (60.00%)\n", - "Epoch 8011: model set back to train mode\n", - "Epoch 8011: model parameters saved\n", - "Epoch 8012 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8012: avg_loss appended (1.3125)\n", - "Epoch 8012: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8012: accuracy appended (60.00%)\n", - "Epoch 8012: model set back to train mode\n", - "Epoch 8012: model parameters saved\n", - "Epoch 8013 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8013: avg_loss appended (1.3125)\n", - "Epoch 8013: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8013: accuracy appended (60.00%)\n", - "Epoch 8013: model set back to train mode\n", - "Epoch 8013: model parameters saved\n", - "Epoch 8014 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8014: avg_loss appended (1.3125)\n", - "Epoch 8014: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8014: accuracy appended (60.00%)\n", - "Epoch 8014: model set back to train mode\n", - "Epoch 8014: model parameters saved\n", - "Epoch 8015 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8015: avg_loss appended (1.3125)\n", - "Epoch 8015: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8015: accuracy appended (60.00%)\n", - "Epoch 8015: model set back to train mode\n", - "Epoch 8015: model parameters saved\n", - "Epoch 8016 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8016: avg_loss appended (1.3125)\n", - "Epoch 8016: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8016: accuracy appended (60.00%)\n", - "Epoch 8016: model set back to train mode\n", - "Epoch 8016: model parameters saved\n", - "Epoch 8017 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8017: avg_loss appended (1.3125)\n", - "Epoch 8017: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8017: accuracy appended (60.00%)\n", - "Epoch 8017: model set back to train mode\n", - "Epoch 8017: model parameters saved\n", - "Epoch 8018 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8018: avg_loss appended (1.3125)\n", - "Epoch 8018: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8018: accuracy appended (60.00%)\n", - "Epoch 8018: model set back to train mode\n", - "Epoch 8018: model parameters saved\n", - "Epoch 8019 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8019: avg_loss appended (1.3125)\n", - "Epoch 8019: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8019: accuracy appended (60.00%)\n", - "Epoch 8019: model set back to train mode\n", - "Epoch 8019: model parameters saved\n", - "Epoch 8020 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8020: avg_loss appended (1.3125)\n", - "Epoch 8020: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8020: accuracy appended (60.00%)\n", - "Epoch 8020: model set back to train mode\n", - "Epoch 8020: model parameters saved\n", - "Epoch 8021 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8021: avg_loss appended (1.3125)\n", - "Epoch 8021: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8021: accuracy appended (60.00%)\n", - "Epoch 8021: model set back to train mode\n", - "Epoch 8021: model parameters saved\n", - "Epoch 8022 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8022: avg_loss appended (1.3125)\n", - "Epoch 8022: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8022: accuracy appended (60.00%)\n", - "Epoch 8022: model set back to train mode\n", - "Epoch 8022: model parameters saved\n", - "Epoch 8023 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8023: avg_loss appended (1.3125)\n", - "Epoch 8023: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8023: accuracy appended (60.00%)\n", - "Epoch 8023: model set back to train mode\n", - "Epoch 8023: model parameters saved\n", - "Epoch 8024 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8024: avg_loss appended (1.3125)\n", - "Epoch 8024: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8024: accuracy appended (60.00%)\n", - "Epoch 8024: model set back to train mode\n", - "Epoch 8024: model parameters saved\n", - "Epoch 8025 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8025: avg_loss appended (1.3125)\n", - "Epoch 8025: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8025: accuracy appended (60.00%)\n", - "Epoch 8025: model set back to train mode\n", - "Epoch 8025: model parameters saved\n", - "Epoch 8026 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8026: avg_loss appended (1.3125)\n", - "Epoch 8026: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8026: accuracy appended (60.00%)\n", - "Epoch 8026: model set back to train mode\n", - "Epoch 8026: model parameters saved\n", - "Epoch 8027 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8027: avg_loss appended (1.3125)\n", - "Epoch 8027: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8027: accuracy appended (60.00%)\n", - "Epoch 8027: model set back to train mode\n", - "Epoch 8027: model parameters saved\n", - "Epoch 8028 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8028: avg_loss appended (1.3125)\n", - "Epoch 8028: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8028: accuracy appended (60.00%)\n", - "Epoch 8028: model set back to train mode\n", - "Epoch 8028: model parameters saved\n", - "Epoch 8029 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8029: avg_loss appended (1.3125)\n", - "Epoch 8029: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8029: accuracy appended (60.00%)\n", - "Epoch 8029: model set back to train mode\n", - "Epoch 8029: model parameters saved\n", - "Epoch 8030 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8030: avg_loss appended (1.3125)\n", - "Epoch 8030: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8030: accuracy appended (60.00%)\n", - "Epoch 8030: model set back to train mode\n", - "Epoch 8030: model parameters saved\n", - "Epoch 8031 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8031: avg_loss appended (1.3125)\n", - "Epoch 8031: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8031: accuracy appended (60.00%)\n", - "Epoch 8031: model set back to train mode\n", - "Epoch 8031: model parameters saved\n", - "Epoch 8032 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8032: avg_loss appended (1.3125)\n", - "Epoch 8032: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8032: accuracy appended (60.00%)\n", - "Epoch 8032: model set back to train mode\n", - "Epoch 8032: model parameters saved\n", - "Epoch 8033 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8033: avg_loss appended (1.3125)\n", - "Epoch 8033: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8033: accuracy appended (60.00%)\n", - "Epoch 8033: model set back to train mode\n", - "Epoch 8033: model parameters saved\n", - "Epoch 8034 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8034: avg_loss appended (1.3125)\n", - "Epoch 8034: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8034: accuracy appended (60.00%)\n", - "Epoch 8034: model set back to train mode\n", - "Epoch 8034: model parameters saved\n", - "Epoch 8035 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8035: avg_loss appended (1.3125)\n", - "Epoch 8035: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8035: accuracy appended (60.00%)\n", - "Epoch 8035: model set back to train mode\n", - "Epoch 8035: model parameters saved\n", - "Epoch 8036 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8036: avg_loss appended (1.3125)\n", - "Epoch 8036: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8036: accuracy appended (60.00%)\n", - "Epoch 8036: model set back to train mode\n", - "Epoch 8036: model parameters saved\n", - "Epoch 8037 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8037: avg_loss appended (1.3125)\n", - "Epoch 8037: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8037: accuracy appended (60.00%)\n", - "Epoch 8037: model set back to train mode\n", - "Epoch 8037: model parameters saved\n", - "Epoch 8038 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8038: avg_loss appended (1.3125)\n", - "Epoch 8038: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8038: accuracy appended (60.00%)\n", - "Epoch 8038: model set back to train mode\n", - "Epoch 8038: model parameters saved\n", - "Epoch 8039 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8039: avg_loss appended (1.3125)\n", - "Epoch 8039: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8039: accuracy appended (60.00%)\n", - "Epoch 8039: model set back to train mode\n", - "Epoch 8039: model parameters saved\n", - "Epoch 8040 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8040: avg_loss appended (1.3125)\n", - "Epoch 8040: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8040: accuracy appended (60.00%)\n", - "Epoch 8040: model set back to train mode\n", - "Epoch 8040: model parameters saved\n", - "Epoch 8041 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8041: avg_loss appended (1.3125)\n", - "Epoch 8041: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8041: accuracy appended (60.00%)\n", - "Epoch 8041: model set back to train mode\n", - "Epoch 8041: model parameters saved\n", - "Epoch 8042 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8042: avg_loss appended (1.3125)\n", - "Epoch 8042: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8042: accuracy appended (60.00%)\n", - "Epoch 8042: model set back to train mode\n", - "Epoch 8042: model parameters saved\n", - "Epoch 8043 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8043: avg_loss appended (1.3125)\n", - "Epoch 8043: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8043: accuracy appended (60.00%)\n", - "Epoch 8043: model set back to train mode\n", - "Epoch 8043: model parameters saved\n", - "Epoch 8044 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8044: avg_loss appended (1.3125)\n", - "Epoch 8044: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8044: accuracy appended (60.00%)\n", - "Epoch 8044: model set back to train mode\n", - "Epoch 8044: model parameters saved\n", - "Epoch 8045 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8045: avg_loss appended (1.3125)\n", - "Epoch 8045: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8045: accuracy appended (60.00%)\n", - "Epoch 8045: model set back to train mode\n", - "Epoch 8045: model parameters saved\n", - "Epoch 8046 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8046: avg_loss appended (1.3125)\n", - "Epoch 8046: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8046: accuracy appended (60.00%)\n", - "Epoch 8046: model set back to train mode\n", - "Epoch 8046: model parameters saved\n", - "Epoch 8047 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8047: avg_loss appended (1.3125)\n", - "Epoch 8047: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8047: accuracy appended (60.00%)\n", - "Epoch 8047: model set back to train mode\n", - "Epoch 8047: model parameters saved\n", - "Epoch 8048 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8048: avg_loss appended (1.3125)\n", - "Epoch 8048: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8048: accuracy appended (60.00%)\n", - "Epoch 8048: model set back to train mode\n", - "Epoch 8048: model parameters saved\n", - "Epoch 8049 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8049: avg_loss appended (1.3125)\n", - "Epoch 8049: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8049: accuracy appended (60.00%)\n", - "Epoch 8049: model set back to train mode\n", - "Epoch 8049: model parameters saved\n", - "Epoch 8050 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8050: avg_loss appended (1.3125)\n", - "Epoch 8050: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8050: accuracy appended (60.00%)\n", - "Epoch 8050: model set back to train mode\n", - "Epoch 8050: model parameters saved\n", - "Epoch 8051 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8051: avg_loss appended (1.3125)\n", - "Epoch 8051: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8051: accuracy appended (60.00%)\n", - "Epoch 8051: model set back to train mode\n", - "Epoch 8051: model parameters saved\n", - "Epoch 8052 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8052: avg_loss appended (1.3125)\n", - "Epoch 8052: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8052: accuracy appended (60.00%)\n", - "Epoch 8052: model set back to train mode\n", - "Epoch 8052: model parameters saved\n", - "Epoch 8053 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8053: avg_loss appended (1.3125)\n", - "Epoch 8053: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8053: accuracy appended (60.00%)\n", - "Epoch 8053: model set back to train mode\n", - "Epoch 8053: model parameters saved\n", - "Epoch 8054 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8054: avg_loss appended (1.3125)\n", - "Epoch 8054: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8054: accuracy appended (60.00%)\n", - "Epoch 8054: model set back to train mode\n", - "Epoch 8054: model parameters saved\n", - "Epoch 8055 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8055: avg_loss appended (1.3125)\n", - "Epoch 8055: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8055: accuracy appended (60.00%)\n", - "Epoch 8055: model set back to train mode\n", - "Epoch 8055: model parameters saved\n", - "Epoch 8056 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8056: avg_loss appended (1.3125)\n", - "Epoch 8056: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8056: accuracy appended (60.00%)\n", - "Epoch 8056: model set back to train mode\n", - "Epoch 8056: model parameters saved\n", - "Epoch 8057 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8057: avg_loss appended (1.3125)\n", - "Epoch 8057: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8057: accuracy appended (60.00%)\n", - "Epoch 8057: model set back to train mode\n", - "Epoch 8057: model parameters saved\n", - "Epoch 8058 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8058: avg_loss appended (1.3125)\n", - "Epoch 8058: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8058: accuracy appended (60.00%)\n", - "Epoch 8058: model set back to train mode\n", - "Epoch 8058: model parameters saved\n", - "Epoch 8059 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8059: avg_loss appended (1.3125)\n", - "Epoch 8059: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8059: accuracy appended (60.00%)\n", - "Epoch 8059: model set back to train mode\n", - "Epoch 8059: model parameters saved\n", - "Epoch 8060 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8060: avg_loss appended (1.3125)\n", - "Epoch 8060: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8060: accuracy appended (60.00%)\n", - "Epoch 8060: model set back to train mode\n", - "Epoch 8060: model parameters saved\n", - "Epoch 8061 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8061: avg_loss appended (1.3125)\n", - "Epoch 8061: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8061: accuracy appended (60.00%)\n", - "Epoch 8061: model set back to train mode\n", - "Epoch 8061: model parameters saved\n", - "Epoch 8062 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8062: avg_loss appended (1.3125)\n", - "Epoch 8062: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8062: accuracy appended (60.00%)\n", - "Epoch 8062: model set back to train mode\n", - "Epoch 8062: model parameters saved\n", - "Epoch 8063 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8063: avg_loss appended (1.3125)\n", - "Epoch 8063: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8063: accuracy appended (60.00%)\n", - "Epoch 8063: model set back to train mode\n", - "Epoch 8063: model parameters saved\n", - "Epoch 8064 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8064: avg_loss appended (1.3125)\n", - "Epoch 8064: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8064: accuracy appended (60.00%)\n", - "Epoch 8064: model set back to train mode\n", - "Epoch 8064: model parameters saved\n", - "Epoch 8065 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8065: avg_loss appended (1.3125)\n", - "Epoch 8065: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8065: accuracy appended (60.00%)\n", - "Epoch 8065: model set back to train mode\n", - "Epoch 8065: model parameters saved\n", - "Epoch 8066 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8066: avg_loss appended (1.3125)\n", - "Epoch 8066: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8066: accuracy appended (60.00%)\n", - "Epoch 8066: model set back to train mode\n", - "Epoch 8066: model parameters saved\n", - "Epoch 8067 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8067: avg_loss appended (1.3125)\n", - "Epoch 8067: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8067: accuracy appended (60.00%)\n", - "Epoch 8067: model set back to train mode\n", - "Epoch 8067: model parameters saved\n", - "Epoch 8068 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8068: avg_loss appended (1.3125)\n", - "Epoch 8068: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8068: accuracy appended (60.00%)\n", - "Epoch 8068: model set back to train mode\n", - "Epoch 8068: model parameters saved\n", - "Epoch 8069 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8069: avg_loss appended (1.3125)\n", - "Epoch 8069: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8069: accuracy appended (60.00%)\n", - "Epoch 8069: model set back to train mode\n", - "Epoch 8069: model parameters saved\n", - "Epoch 8070 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8070: avg_loss appended (1.3125)\n", - "Epoch 8070: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8070: accuracy appended (60.00%)\n", - "Epoch 8070: model set back to train mode\n", - "Epoch 8070: model parameters saved\n", - "Epoch 8071 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8071: avg_loss appended (1.3125)\n", - "Epoch 8071: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8071: accuracy appended (60.00%)\n", - "Epoch 8071: model set back to train mode\n", - "Epoch 8071: model parameters saved\n", - "Epoch 8072 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8072: avg_loss appended (1.3125)\n", - "Epoch 8072: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8072: accuracy appended (60.00%)\n", - "Epoch 8072: model set back to train mode\n", - "Epoch 8072: model parameters saved\n", - "Epoch 8073 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8073: avg_loss appended (1.3125)\n", - "Epoch 8073: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8073: accuracy appended (60.00%)\n", - "Epoch 8073: model set back to train mode\n", - "Epoch 8073: model parameters saved\n", - "Epoch 8074 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8074: avg_loss appended (1.3125)\n", - "Epoch 8074: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8074: accuracy appended (60.00%)\n", - "Epoch 8074: model set back to train mode\n", - "Epoch 8074: model parameters saved\n", - "Epoch 8075 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8075: avg_loss appended (1.3125)\n", - "Epoch 8075: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8075: accuracy appended (60.00%)\n", - "Epoch 8075: model set back to train mode\n", - "Epoch 8075: model parameters saved\n", - "Epoch 8076 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8076: avg_loss appended (1.3125)\n", - "Epoch 8076: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8076: accuracy appended (60.00%)\n", - "Epoch 8076: model set back to train mode\n", - "Epoch 8076: model parameters saved\n", - "Epoch 8077 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8077: avg_loss appended (1.3125)\n", - "Epoch 8077: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8077: accuracy appended (60.00%)\n", - "Epoch 8077: model set back to train mode\n", - "Epoch 8077: model parameters saved\n", - "Epoch 8078 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8078: avg_loss appended (1.3125)\n", - "Epoch 8078: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8078: accuracy appended (60.00%)\n", - "Epoch 8078: model set back to train mode\n", - "Epoch 8078: model parameters saved\n", - "Epoch 8079 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8079: avg_loss appended (1.3125)\n", - "Epoch 8079: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8079: accuracy appended (60.00%)\n", - "Epoch 8079: model set back to train mode\n", - "Epoch 8079: model parameters saved\n", - "Epoch 8080 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8080: avg_loss appended (1.3125)\n", - "Epoch 8080: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8080: accuracy appended (60.00%)\n", - "Epoch 8080: model set back to train mode\n", - "Epoch 8080: model parameters saved\n", - "Epoch 8081 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8081: avg_loss appended (1.3125)\n", - "Epoch 8081: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8081: accuracy appended (60.00%)\n", - "Epoch 8081: model set back to train mode\n", - "Epoch 8081: model parameters saved\n", - "Epoch 8082 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8082: avg_loss appended (1.3125)\n", - "Epoch 8082: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8082: accuracy appended (60.00%)\n", - "Epoch 8082: model set back to train mode\n", - "Epoch 8082: model parameters saved\n", - "Epoch 8083 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8083: avg_loss appended (1.3125)\n", - "Epoch 8083: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8083: accuracy appended (60.00%)\n", - "Epoch 8083: model set back to train mode\n", - "Epoch 8083: model parameters saved\n", - "Epoch 8084 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8084: avg_loss appended (1.3125)\n", - "Epoch 8084: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8084: accuracy appended (60.00%)\n", - "Epoch 8084: model set back to train mode\n", - "Epoch 8084: model parameters saved\n", - "Epoch 8085 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8085: avg_loss appended (1.3125)\n", - "Epoch 8085: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8085: accuracy appended (60.00%)\n", - "Epoch 8085: model set back to train mode\n", - "Epoch 8085: model parameters saved\n", - "Epoch 8086 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8086: avg_loss appended (1.3125)\n", - "Epoch 8086: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8086: accuracy appended (60.00%)\n", - "Epoch 8086: model set back to train mode\n", - "Epoch 8086: model parameters saved\n", - "Epoch 8087 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8087: avg_loss appended (1.3125)\n", - "Epoch 8087: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8087: accuracy appended (60.00%)\n", - "Epoch 8087: model set back to train mode\n", - "Epoch 8087: model parameters saved\n", - "Epoch 8088 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8088: avg_loss appended (1.3125)\n", - "Epoch 8088: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8088: accuracy appended (60.00%)\n", - "Epoch 8088: model set back to train mode\n", - "Epoch 8088: model parameters saved\n", - "Epoch 8089 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8089: avg_loss appended (1.3125)\n", - "Epoch 8089: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8089: accuracy appended (60.00%)\n", - "Epoch 8089: model set back to train mode\n", - "Epoch 8089: model parameters saved\n", - "Epoch 8090 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8090: avg_loss appended (1.3125)\n", - "Epoch 8090: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8090: accuracy appended (60.00%)\n", - "Epoch 8090: model set back to train mode\n", - "Epoch 8090: model parameters saved\n", - "Epoch 8091 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8091: avg_loss appended (1.3125)\n", - "Epoch 8091: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8091: accuracy appended (60.00%)\n", - "Epoch 8091: model set back to train mode\n", - "Epoch 8091: model parameters saved\n", - "Epoch 8092 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8092: avg_loss appended (1.3125)\n", - "Epoch 8092: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8092: accuracy appended (60.00%)\n", - "Epoch 8092: model set back to train mode\n", - "Epoch 8092: model parameters saved\n", - "Epoch 8093 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8093: avg_loss appended (1.3125)\n", - "Epoch 8093: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8093: accuracy appended (60.00%)\n", - "Epoch 8093: model set back to train mode\n", - "Epoch 8093: model parameters saved\n", - "Epoch 8094 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8094: avg_loss appended (1.3125)\n", - "Epoch 8094: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8094: accuracy appended (60.00%)\n", - "Epoch 8094: model set back to train mode\n", - "Epoch 8094: model parameters saved\n", - "Epoch 8095 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8095: avg_loss appended (1.3125)\n", - "Epoch 8095: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8095: accuracy appended (60.00%)\n", - "Epoch 8095: model set back to train mode\n", - "Epoch 8095: model parameters saved\n", - "Epoch 8096 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8096: avg_loss appended (1.3125)\n", - "Epoch 8096: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8096: accuracy appended (60.00%)\n", - "Epoch 8096: model set back to train mode\n", - "Epoch 8096: model parameters saved\n", - "Epoch 8097 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8097: avg_loss appended (1.3125)\n", - "Epoch 8097: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8097: accuracy appended (60.00%)\n", - "Epoch 8097: model set back to train mode\n", - "Epoch 8097: model parameters saved\n", - "Epoch 8098 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8098: avg_loss appended (1.3125)\n", - "Epoch 8098: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8098: accuracy appended (60.00%)\n", - "Epoch 8098: model set back to train mode\n", - "Epoch 8098: model parameters saved\n", - "Epoch 8099 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8099: avg_loss appended (1.3125)\n", - "Epoch 8099: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8099: accuracy appended (60.00%)\n", - "Epoch 8099: model set back to train mode\n", - "Epoch 8099: model parameters saved\n", - "Epoch 8100 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8100: avg_loss appended (1.3125)\n", - "Epoch 8100: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8100: accuracy appended (60.00%)\n", - "Epoch 8100: model set back to train mode\n", - "Epoch 8100: model parameters saved\n", - "Epoch 8100/10000, Loss: 1.3125, Accuracy: 60.00%\n", - "Epoch 8101 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8101: avg_loss appended (1.3125)\n", - "Epoch 8101: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8101: accuracy appended (60.00%)\n", - "Epoch 8101: model set back to train mode\n", - "Epoch 8101: model parameters saved\n", - "Epoch 8102 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8102: avg_loss appended (1.3125)\n", - "Epoch 8102: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8102: accuracy appended (60.00%)\n", - "Epoch 8102: model set back to train mode\n", - "Epoch 8102: model parameters saved\n", - "Epoch 8103 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8103: avg_loss appended (1.3125)\n", - "Epoch 8103: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8103: accuracy appended (60.00%)\n", - "Epoch 8103: model set back to train mode\n", - "Epoch 8103: model parameters saved\n", - "Epoch 8104 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8104: avg_loss appended (1.3125)\n", - "Epoch 8104: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8104: accuracy appended (60.00%)\n", - "Epoch 8104: model set back to train mode\n", - "Epoch 8104: model parameters saved\n", - "Epoch 8105 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8105: avg_loss appended (1.3125)\n", - "Epoch 8105: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8105: accuracy appended (60.00%)\n", - "Epoch 8105: model set back to train mode\n", - "Epoch 8105: model parameters saved\n", - "Epoch 8106 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8106: avg_loss appended (1.3125)\n", - "Epoch 8106: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8106: accuracy appended (60.00%)\n", - "Epoch 8106: model set back to train mode\n", - "Epoch 8106: model parameters saved\n", - "Epoch 8107 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8107: avg_loss appended (1.3125)\n", - "Epoch 8107: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8107: accuracy appended (60.00%)\n", - "Epoch 8107: model set back to train mode\n", - "Epoch 8107: model parameters saved\n", - "Epoch 8108 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8108: avg_loss appended (1.3125)\n", - "Epoch 8108: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8108: accuracy appended (60.00%)\n", - "Epoch 8108: model set back to train mode\n", - "Epoch 8108: model parameters saved\n", - "Epoch 8109 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8109: avg_loss appended (1.3125)\n", - "Epoch 8109: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8109: accuracy appended (60.00%)\n", - "Epoch 8109: model set back to train mode\n", - "Epoch 8109: model parameters saved\n", - "Epoch 8110 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8110: avg_loss appended (1.3125)\n", - "Epoch 8110: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8110: accuracy appended (60.00%)\n", - "Epoch 8110: model set back to train mode\n", - "Epoch 8110: model parameters saved\n", - "Epoch 8111 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8111: avg_loss appended (1.3125)\n", - "Epoch 8111: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8111: accuracy appended (60.00%)\n", - "Epoch 8111: model set back to train mode\n", - "Epoch 8111: model parameters saved\n", - "Epoch 8112 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8112: avg_loss appended (1.3125)\n", - "Epoch 8112: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8112: accuracy appended (60.00%)\n", - "Epoch 8112: model set back to train mode\n", - "Epoch 8112: model parameters saved\n", - "Epoch 8113 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8113: avg_loss appended (1.3125)\n", - "Epoch 8113: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8113: accuracy appended (60.00%)\n", - "Epoch 8113: model set back to train mode\n", - "Epoch 8113: model parameters saved\n", - "Epoch 8114 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8114: avg_loss appended (1.3125)\n", - "Epoch 8114: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8114: accuracy appended (60.00%)\n", - "Epoch 8114: model set back to train mode\n", - "Epoch 8114: model parameters saved\n", - "Epoch 8115 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8115: avg_loss appended (1.3125)\n", - "Epoch 8115: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8115: accuracy appended (60.00%)\n", - "Epoch 8115: model set back to train mode\n", - "Epoch 8115: model parameters saved\n", - "Epoch 8116 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8116: avg_loss appended (1.3125)\n", - "Epoch 8116: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8116: accuracy appended (60.00%)\n", - "Epoch 8116: model set back to train mode\n", - "Epoch 8116: model parameters saved\n", - "Epoch 8117 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8117: avg_loss appended (1.3125)\n", - "Epoch 8117: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8117: accuracy appended (60.00%)\n", - "Epoch 8117: model set back to train mode\n", - "Epoch 8117: model parameters saved\n", - "Epoch 8118 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8118: avg_loss appended (1.3125)\n", - "Epoch 8118: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8118: accuracy appended (60.00%)\n", - "Epoch 8118: model set back to train mode\n", - "Epoch 8118: model parameters saved\n", - "Epoch 8119 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8119: avg_loss appended (1.3125)\n", - "Epoch 8119: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8119: accuracy appended (60.00%)\n", - "Epoch 8119: model set back to train mode\n", - "Epoch 8119: model parameters saved\n", - "Epoch 8120 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8120: avg_loss appended (1.3125)\n", - "Epoch 8120: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8120: accuracy appended (60.00%)\n", - "Epoch 8120: model set back to train mode\n", - "Epoch 8120: model parameters saved\n", - "Epoch 8121 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8121: avg_loss appended (1.3125)\n", - "Epoch 8121: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8121: accuracy appended (60.00%)\n", - "Epoch 8121: model set back to train mode\n", - "Epoch 8121: model parameters saved\n", - "Epoch 8122 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8122: avg_loss appended (1.3125)\n", - "Epoch 8122: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8122: accuracy appended (60.00%)\n", - "Epoch 8122: model set back to train mode\n", - "Epoch 8122: model parameters saved\n", - "Epoch 8123 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8123: avg_loss appended (1.3125)\n", - "Epoch 8123: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8123: accuracy appended (60.00%)\n", - "Epoch 8123: model set back to train mode\n", - "Epoch 8123: model parameters saved\n", - "Epoch 8124 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8124: avg_loss appended (1.3125)\n", - "Epoch 8124: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8124: accuracy appended (60.00%)\n", - "Epoch 8124: model set back to train mode\n", - "Epoch 8124: model parameters saved\n", - "Epoch 8125 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8125: avg_loss appended (1.3125)\n", - "Epoch 8125: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8125: accuracy appended (60.00%)\n", - "Epoch 8125: model set back to train mode\n", - "Epoch 8125: model parameters saved\n", - "Epoch 8126 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8126: avg_loss appended (1.3125)\n", - "Epoch 8126: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8126: accuracy appended (60.00%)\n", - "Epoch 8126: model set back to train mode\n", - "Epoch 8126: model parameters saved\n", - "Epoch 8127 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8127: avg_loss appended (1.3125)\n", - "Epoch 8127: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8127: accuracy appended (60.00%)\n", - "Epoch 8127: model set back to train mode\n", - "Epoch 8127: model parameters saved\n", - "Epoch 8128 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8128: avg_loss appended (1.3125)\n", - "Epoch 8128: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8128: accuracy appended (60.00%)\n", - "Epoch 8128: model set back to train mode\n", - "Epoch 8128: model parameters saved\n", - "Epoch 8129 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8129: avg_loss appended (1.3125)\n", - "Epoch 8129: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8129: accuracy appended (60.00%)\n", - "Epoch 8129: model set back to train mode\n", - "Epoch 8129: model parameters saved\n", - "Epoch 8130 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8130: avg_loss appended (1.3125)\n", - "Epoch 8130: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8130: accuracy appended (60.00%)\n", - "Epoch 8130: model set back to train mode\n", - "Epoch 8130: model parameters saved\n", - "Epoch 8131 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8131: avg_loss appended (1.3125)\n", - "Epoch 8131: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8131: accuracy appended (60.00%)\n", - "Epoch 8131: model set back to train mode\n", - "Epoch 8131: model parameters saved\n", - "Epoch 8132 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8132: avg_loss appended (1.3125)\n", - "Epoch 8132: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8132: accuracy appended (60.00%)\n", - "Epoch 8132: model set back to train mode\n", - "Epoch 8132: model parameters saved\n", - "Epoch 8133 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8133: avg_loss appended (1.3125)\n", - "Epoch 8133: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8133: accuracy appended (60.00%)\n", - "Epoch 8133: model set back to train mode\n", - "Epoch 8133: model parameters saved\n", - "Epoch 8134 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8134: avg_loss appended (1.3125)\n", - "Epoch 8134: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8134: accuracy appended (60.00%)\n", - "Epoch 8134: model set back to train mode\n", - "Epoch 8134: model parameters saved\n", - "Epoch 8135 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8135: avg_loss appended (1.3125)\n", - "Epoch 8135: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8135: accuracy appended (60.00%)\n", - "Epoch 8135: model set back to train mode\n", - "Epoch 8135: model parameters saved\n", - "Epoch 8136 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8136: avg_loss appended (1.3125)\n", - "Epoch 8136: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8136: accuracy appended (60.00%)\n", - "Epoch 8136: model set back to train mode\n", - "Epoch 8136: model parameters saved\n", - "Epoch 8137 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8137: avg_loss appended (1.3125)\n", - "Epoch 8137: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8137: accuracy appended (60.00%)\n", - "Epoch 8137: model set back to train mode\n", - "Epoch 8137: model parameters saved\n", - "Epoch 8138 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8138: avg_loss appended (1.3125)\n", - "Epoch 8138: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8138: accuracy appended (60.00%)\n", - "Epoch 8138: model set back to train mode\n", - "Epoch 8138: model parameters saved\n", - "Epoch 8139 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8139: avg_loss appended (1.3125)\n", - "Epoch 8139: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8139: accuracy appended (60.00%)\n", - "Epoch 8139: model set back to train mode\n", - "Epoch 8139: model parameters saved\n", - "Epoch 8140 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8140: avg_loss appended (1.3125)\n", - "Epoch 8140: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8140: accuracy appended (60.00%)\n", - "Epoch 8140: model set back to train mode\n", - "Epoch 8140: model parameters saved\n", - "Epoch 8141 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8141: avg_loss appended (1.3125)\n", - "Epoch 8141: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8141: accuracy appended (60.00%)\n", - "Epoch 8141: model set back to train mode\n", - "Epoch 8141: model parameters saved\n", - "Epoch 8142 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8142: avg_loss appended (1.3125)\n", - "Epoch 8142: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8142: accuracy appended (60.00%)\n", - "Epoch 8142: model set back to train mode\n", - "Epoch 8142: model parameters saved\n", - "Epoch 8143 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8143: avg_loss appended (1.3125)\n", - "Epoch 8143: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8143: accuracy appended (60.00%)\n", - "Epoch 8143: model set back to train mode\n", - "Epoch 8143: model parameters saved\n", - "Epoch 8144 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8144: avg_loss appended (1.3125)\n", - "Epoch 8144: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8144: accuracy appended (60.00%)\n", - "Epoch 8144: model set back to train mode\n", - "Epoch 8144: model parameters saved\n", - "Epoch 8145 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8145: avg_loss appended (1.3125)\n", - "Epoch 8145: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8145: accuracy appended (60.00%)\n", - "Epoch 8145: model set back to train mode\n", - "Epoch 8145: model parameters saved\n", - "Epoch 8146 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8146: avg_loss appended (1.3125)\n", - "Epoch 8146: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8146: accuracy appended (60.00%)\n", - "Epoch 8146: model set back to train mode\n", - "Epoch 8146: model parameters saved\n", - "Epoch 8147 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8147: avg_loss appended (1.3125)\n", - "Epoch 8147: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8147: accuracy appended (60.00%)\n", - "Epoch 8147: model set back to train mode\n", - "Epoch 8147: model parameters saved\n", - "Epoch 8148 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8148: avg_loss appended (1.3125)\n", - "Epoch 8148: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8148: accuracy appended (60.00%)\n", - "Epoch 8148: model set back to train mode\n", - "Epoch 8148: model parameters saved\n", - "Epoch 8149 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8149: avg_loss appended (1.3125)\n", - "Epoch 8149: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8149: accuracy appended (60.00%)\n", - "Epoch 8149: model set back to train mode\n", - "Epoch 8149: model parameters saved\n", - "Epoch 8150 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8150: avg_loss appended (1.3125)\n", - "Epoch 8150: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8150: accuracy appended (60.00%)\n", - "Epoch 8150: model set back to train mode\n", - "Epoch 8150: model parameters saved\n", - "Epoch 8151 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8151: avg_loss appended (1.3125)\n", - "Epoch 8151: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8151: accuracy appended (60.00%)\n", - "Epoch 8151: model set back to train mode\n", - "Epoch 8151: model parameters saved\n", - "Epoch 8152 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8152: avg_loss appended (1.3125)\n", - "Epoch 8152: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8152: accuracy appended (60.00%)\n", - "Epoch 8152: model set back to train mode\n", - "Epoch 8152: model parameters saved\n", - "Epoch 8153 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8153: avg_loss appended (1.3125)\n", - "Epoch 8153: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8153: accuracy appended (60.00%)\n", - "Epoch 8153: model set back to train mode\n", - "Epoch 8153: model parameters saved\n", - "Epoch 8154 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8154: avg_loss appended (1.3125)\n", - "Epoch 8154: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8154: accuracy appended (60.00%)\n", - "Epoch 8154: model set back to train mode\n", - "Epoch 8154: model parameters saved\n", - "Epoch 8155 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8155: avg_loss appended (1.3125)\n", - "Epoch 8155: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8155: accuracy appended (60.00%)\n", - "Epoch 8155: model set back to train mode\n", - "Epoch 8155: model parameters saved\n", - "Epoch 8156 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8156: avg_loss appended (1.3125)\n", - "Epoch 8156: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8156: accuracy appended (60.00%)\n", - "Epoch 8156: model set back to train mode\n", - "Epoch 8156: model parameters saved\n", - "Epoch 8157 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8157: avg_loss appended (1.3125)\n", - "Epoch 8157: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8157: accuracy appended (60.00%)\n", - "Epoch 8157: model set back to train mode\n", - "Epoch 8157: model parameters saved\n", - "Epoch 8158 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8158: avg_loss appended (1.3125)\n", - "Epoch 8158: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8158: accuracy appended (60.00%)\n", - "Epoch 8158: model set back to train mode\n", - "Epoch 8158: model parameters saved\n", - "Epoch 8159 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8159: avg_loss appended (1.3125)\n", - "Epoch 8159: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8159: accuracy appended (60.00%)\n", - "Epoch 8159: model set back to train mode\n", - "Epoch 8159: model parameters saved\n", - "Epoch 8160 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8160: avg_loss appended (1.3125)\n", - "Epoch 8160: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8160: accuracy appended (60.00%)\n", - "Epoch 8160: model set back to train mode\n", - "Epoch 8160: model parameters saved\n", - "Epoch 8161 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8161: avg_loss appended (1.3125)\n", - "Epoch 8161: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8161: accuracy appended (60.00%)\n", - "Epoch 8161: model set back to train mode\n", - "Epoch 8161: model parameters saved\n", - "Epoch 8162 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8162: avg_loss appended (1.3125)\n", - "Epoch 8162: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8162: accuracy appended (60.00%)\n", - "Epoch 8162: model set back to train mode\n", - "Epoch 8162: model parameters saved\n", - "Epoch 8163 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8163: avg_loss appended (1.3125)\n", - "Epoch 8163: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8163: accuracy appended (60.00%)\n", - "Epoch 8163: model set back to train mode\n", - "Epoch 8163: model parameters saved\n", - "Epoch 8164 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8164: avg_loss appended (1.3125)\n", - "Epoch 8164: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8164: accuracy appended (60.00%)\n", - "Epoch 8164: model set back to train mode\n", - "Epoch 8164: model parameters saved\n", - "Epoch 8165 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8165: avg_loss appended (1.3125)\n", - "Epoch 8165: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8165: accuracy appended (60.00%)\n", - "Epoch 8165: model set back to train mode\n", - "Epoch 8165: model parameters saved\n", - "Epoch 8166 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8166: avg_loss appended (1.3125)\n", - "Epoch 8166: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8166: accuracy appended (60.00%)\n", - "Epoch 8166: model set back to train mode\n", - "Epoch 8166: model parameters saved\n", - "Epoch 8167 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8167: avg_loss appended (1.3125)\n", - "Epoch 8167: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8167: accuracy appended (60.00%)\n", - "Epoch 8167: model set back to train mode\n", - "Epoch 8167: model parameters saved\n", - "Epoch 8168 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8168: avg_loss appended (1.3125)\n", - "Epoch 8168: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8168: accuracy appended (60.00%)\n", - "Epoch 8168: model set back to train mode\n", - "Epoch 8168: model parameters saved\n", - "Epoch 8169 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8169: avg_loss appended (1.3125)\n", - "Epoch 8169: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8169: accuracy appended (60.00%)\n", - "Epoch 8169: model set back to train mode\n", - "Epoch 8169: model parameters saved\n", - "Epoch 8170 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8170: avg_loss appended (1.3125)\n", - "Epoch 8170: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8170: accuracy appended (60.00%)\n", - "Epoch 8170: model set back to train mode\n", - "Epoch 8170: model parameters saved\n", - "Epoch 8171 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8171: avg_loss appended (1.3125)\n", - "Epoch 8171: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8171: accuracy appended (60.00%)\n", - "Epoch 8171: model set back to train mode\n", - "Epoch 8171: model parameters saved\n", - "Epoch 8172 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8172: avg_loss appended (1.3125)\n", - "Epoch 8172: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8172: accuracy appended (60.00%)\n", - "Epoch 8172: model set back to train mode\n", - "Epoch 8172: model parameters saved\n", - "Epoch 8173 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8173: avg_loss appended (1.3125)\n", - "Epoch 8173: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8173: accuracy appended (60.00%)\n", - "Epoch 8173: model set back to train mode\n", - "Epoch 8173: model parameters saved\n", - "Epoch 8174 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8174: avg_loss appended (1.3125)\n", - "Epoch 8174: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8174: accuracy appended (60.00%)\n", - "Epoch 8174: model set back to train mode\n", - "Epoch 8174: model parameters saved\n", - "Epoch 8175 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8175: avg_loss appended (1.3125)\n", - "Epoch 8175: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8175: accuracy appended (60.00%)\n", - "Epoch 8175: model set back to train mode\n", - "Epoch 8175: model parameters saved\n", - "Epoch 8176 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8176: avg_loss appended (1.3125)\n", - "Epoch 8176: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8176: accuracy appended (60.00%)\n", - "Epoch 8176: model set back to train mode\n", - "Epoch 8176: model parameters saved\n", - "Epoch 8177 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8177: avg_loss appended (1.3125)\n", - "Epoch 8177: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8177: accuracy appended (60.00%)\n", - "Epoch 8177: model set back to train mode\n", - "Epoch 8177: model parameters saved\n", - "Epoch 8178 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8178: avg_loss appended (1.3125)\n", - "Epoch 8178: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8178: accuracy appended (60.00%)\n", - "Epoch 8178: model set back to train mode\n", - "Epoch 8178: model parameters saved\n", - "Epoch 8179 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8179: avg_loss appended (1.3125)\n", - "Epoch 8179: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8179: accuracy appended (60.00%)\n", - "Epoch 8179: model set back to train mode\n", - "Epoch 8179: model parameters saved\n", - "Epoch 8180 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8180: avg_loss appended (1.3125)\n", - "Epoch 8180: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8180: accuracy appended (60.00%)\n", - "Epoch 8180: model set back to train mode\n", - "Epoch 8180: model parameters saved\n", - "Epoch 8181 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8181: avg_loss appended (1.3125)\n", - "Epoch 8181: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8181: accuracy appended (60.00%)\n", - "Epoch 8181: model set back to train mode\n", - "Epoch 8181: model parameters saved\n", - "Epoch 8182 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8182: avg_loss appended (1.3125)\n", - "Epoch 8182: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8182: accuracy appended (60.00%)\n", - "Epoch 8182: model set back to train mode\n", - "Epoch 8182: model parameters saved\n", - "Epoch 8183 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8183: avg_loss appended (1.3125)\n", - "Epoch 8183: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8183: accuracy appended (60.00%)\n", - "Epoch 8183: model set back to train mode\n", - "Epoch 8183: model parameters saved\n", - "Epoch 8184 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8184: avg_loss appended (1.3125)\n", - "Epoch 8184: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8184: accuracy appended (60.00%)\n", - "Epoch 8184: model set back to train mode\n", - "Epoch 8184: model parameters saved\n", - "Epoch 8185 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8185: avg_loss appended (1.3125)\n", - "Epoch 8185: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8185: accuracy appended (60.00%)\n", - "Epoch 8185: model set back to train mode\n", - "Epoch 8185: model parameters saved\n", - "Epoch 8186 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8186: avg_loss appended (1.3125)\n", - "Epoch 8186: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8186: accuracy appended (60.00%)\n", - "Epoch 8186: model set back to train mode\n", - "Epoch 8186: model parameters saved\n", - "Epoch 8187 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8187: avg_loss appended (1.3125)\n", - "Epoch 8187: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8187: accuracy appended (60.00%)\n", - "Epoch 8187: model set back to train mode\n", - "Epoch 8187: model parameters saved\n", - "Epoch 8188 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8188: avg_loss appended (1.3125)\n", - "Epoch 8188: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8188: accuracy appended (60.00%)\n", - "Epoch 8188: model set back to train mode\n", - "Epoch 8188: model parameters saved\n", - "Epoch 8189 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8189: avg_loss appended (1.3125)\n", - "Epoch 8189: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8189: accuracy appended (60.00%)\n", - "Epoch 8189: model set back to train mode\n", - "Epoch 8189: model parameters saved\n", - "Epoch 8190 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8190: avg_loss appended (1.3125)\n", - "Epoch 8190: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8190: accuracy appended (60.00%)\n", - "Epoch 8190: model set back to train mode\n", - "Epoch 8190: model parameters saved\n", - "Epoch 8191 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8191: avg_loss appended (1.3125)\n", - "Epoch 8191: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8191: accuracy appended (60.00%)\n", - "Epoch 8191: model set back to train mode\n", - "Epoch 8191: model parameters saved\n", - "Epoch 8192 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8192: avg_loss appended (1.3125)\n", - "Epoch 8192: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8192: accuracy appended (60.00%)\n", - "Epoch 8192: model set back to train mode\n", - "Epoch 8192: model parameters saved\n", - "Epoch 8193 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8193: avg_loss appended (1.3125)\n", - "Epoch 8193: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8193: accuracy appended (60.00%)\n", - "Epoch 8193: model set back to train mode\n", - "Epoch 8193: model parameters saved\n", - "Epoch 8194 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8194: avg_loss appended (1.3125)\n", - "Epoch 8194: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8194: accuracy appended (60.00%)\n", - "Epoch 8194: model set back to train mode\n", - "Epoch 8194: model parameters saved\n", - "Epoch 8195 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8195: avg_loss appended (1.3125)\n", - "Epoch 8195: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8195: accuracy appended (60.00%)\n", - "Epoch 8195: model set back to train mode\n", - "Epoch 8195: model parameters saved\n", - "Epoch 8196 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8196: avg_loss appended (1.3125)\n", - "Epoch 8196: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8196: accuracy appended (60.00%)\n", - "Epoch 8196: model set back to train mode\n", - "Epoch 8196: model parameters saved\n", - "Epoch 8197 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8197: avg_loss appended (1.3125)\n", - "Epoch 8197: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8197: accuracy appended (60.00%)\n", - "Epoch 8197: model set back to train mode\n", - "Epoch 8197: model parameters saved\n", - "Epoch 8198 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8198: avg_loss appended (1.3125)\n", - "Epoch 8198: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8198: accuracy appended (60.00%)\n", - "Epoch 8198: model set back to train mode\n", - "Epoch 8198: model parameters saved\n", - "Epoch 8199 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8199: avg_loss appended (1.3125)\n", - "Epoch 8199: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8199: accuracy appended (60.00%)\n", - "Epoch 8199: model set back to train mode\n", - "Epoch 8199: model parameters saved\n", - "Epoch 8200 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8200: avg_loss appended (1.3125)\n", - "Epoch 8200: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8200: accuracy appended (60.00%)\n", - "Epoch 8200: model set back to train mode\n", - "Epoch 8200: model parameters saved\n", - "Epoch 8200/10000, Loss: 1.3125, Accuracy: 60.00%\n", - "Epoch 8201 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8201: avg_loss appended (1.3125)\n", - "Epoch 8201: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8201: accuracy appended (60.00%)\n", - "Epoch 8201: model set back to train mode\n", - "Epoch 8201: model parameters saved\n", - "Epoch 8202 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8202: avg_loss appended (1.3125)\n", - "Epoch 8202: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8202: accuracy appended (60.00%)\n", - "Epoch 8202: model set back to train mode\n", - "Epoch 8202: model parameters saved\n", - "Epoch 8203 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8203: avg_loss appended (1.3125)\n", - "Epoch 8203: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8203: accuracy appended (60.00%)\n", - "Epoch 8203: model set back to train mode\n", - "Epoch 8203: model parameters saved\n", - "Epoch 8204 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8204: avg_loss appended (1.3125)\n", - "Epoch 8204: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8204: accuracy appended (60.00%)\n", - "Epoch 8204: model set back to train mode\n", - "Epoch 8204: model parameters saved\n", - "Epoch 8205 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8205: avg_loss appended (1.3125)\n", - "Epoch 8205: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8205: accuracy appended (60.00%)\n", - "Epoch 8205: model set back to train mode\n", - "Epoch 8205: model parameters saved\n", - "Epoch 8206 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8206: avg_loss appended (1.3125)\n", - "Epoch 8206: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8206: accuracy appended (60.00%)\n", - "Epoch 8206: model set back to train mode\n", - "Epoch 8206: model parameters saved\n", - "Epoch 8207 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8207: avg_loss appended (1.3125)\n", - "Epoch 8207: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8207: accuracy appended (60.00%)\n", - "Epoch 8207: model set back to train mode\n", - "Epoch 8207: model parameters saved\n", - "Epoch 8208 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8208: avg_loss appended (1.3125)\n", - "Epoch 8208: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8208: accuracy appended (60.00%)\n", - "Epoch 8208: model set back to train mode\n", - "Epoch 8208: model parameters saved\n", - "Epoch 8209 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8209: avg_loss appended (1.3125)\n", - "Epoch 8209: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8209: accuracy appended (60.00%)\n", - "Epoch 8209: model set back to train mode\n", - "Epoch 8209: model parameters saved\n", - "Epoch 8210 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8210: avg_loss appended (1.3125)\n", - "Epoch 8210: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8210: accuracy appended (60.00%)\n", - "Epoch 8210: model set back to train mode\n", - "Epoch 8210: model parameters saved\n", - "Epoch 8211 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8211: avg_loss appended (1.3125)\n", - "Epoch 8211: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8211: accuracy appended (60.00%)\n", - "Epoch 8211: model set back to train mode\n", - "Epoch 8211: model parameters saved\n", - "Epoch 8212 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8212: avg_loss appended (1.3125)\n", - "Epoch 8212: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8212: accuracy appended (60.00%)\n", - "Epoch 8212: model set back to train mode\n", - "Epoch 8212: model parameters saved\n", - "Epoch 8213 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8213: avg_loss appended (1.3125)\n", - "Epoch 8213: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8213: accuracy appended (60.00%)\n", - "Epoch 8213: model set back to train mode\n", - "Epoch 8213: model parameters saved\n", - "Epoch 8214 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8214: avg_loss appended (1.3125)\n", - "Epoch 8214: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8214: accuracy appended (60.00%)\n", - "Epoch 8214: model set back to train mode\n", - "Epoch 8214: model parameters saved\n", - "Epoch 8215 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8215: avg_loss appended (1.3125)\n", - "Epoch 8215: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8215: accuracy appended (60.00%)\n", - "Epoch 8215: model set back to train mode\n", - "Epoch 8215: model parameters saved\n", - "Epoch 8216 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8216: avg_loss appended (1.3125)\n", - "Epoch 8216: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8216: accuracy appended (60.00%)\n", - "Epoch 8216: model set back to train mode\n", - "Epoch 8216: model parameters saved\n", - "Epoch 8217 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8217: avg_loss appended (1.3125)\n", - "Epoch 8217: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8217: accuracy appended (60.00%)\n", - "Epoch 8217: model set back to train mode\n", - "Epoch 8217: model parameters saved\n", - "Epoch 8218 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8218: avg_loss appended (1.3125)\n", - "Epoch 8218: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8218: accuracy appended (60.00%)\n", - "Epoch 8218: model set back to train mode\n", - "Epoch 8218: model parameters saved\n", - "Epoch 8219 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8219: avg_loss appended (1.3125)\n", - "Epoch 8219: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8219: accuracy appended (60.00%)\n", - "Epoch 8219: model set back to train mode\n", - "Epoch 8219: model parameters saved\n", - "Epoch 8220 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8220: avg_loss appended (1.3125)\n", - "Epoch 8220: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8220: accuracy appended (60.00%)\n", - "Epoch 8220: model set back to train mode\n", - "Epoch 8220: model parameters saved\n", - "Epoch 8221 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8221: avg_loss appended (1.3125)\n", - "Epoch 8221: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8221: accuracy appended (60.00%)\n", - "Epoch 8221: model set back to train mode\n", - "Epoch 8221: model parameters saved\n", - "Epoch 8222 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8222: avg_loss appended (1.3125)\n", - "Epoch 8222: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8222: accuracy appended (60.00%)\n", - "Epoch 8222: model set back to train mode\n", - "Epoch 8222: model parameters saved\n", - "Epoch 8223 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8223: avg_loss appended (1.3125)\n", - "Epoch 8223: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8223: accuracy appended (60.00%)\n", - "Epoch 8223: model set back to train mode\n", - "Epoch 8223: model parameters saved\n", - "Epoch 8224 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8224: avg_loss appended (1.3125)\n", - "Epoch 8224: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8224: accuracy appended (60.00%)\n", - "Epoch 8224: model set back to train mode\n", - "Epoch 8224: model parameters saved\n", - "Epoch 8225 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8225: avg_loss appended (1.3125)\n", - "Epoch 8225: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8225: accuracy appended (60.00%)\n", - "Epoch 8225: model set back to train mode\n", - "Epoch 8225: model parameters saved\n", - "Epoch 8226 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8226: avg_loss appended (1.3125)\n", - "Epoch 8226: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8226: accuracy appended (60.00%)\n", - "Epoch 8226: model set back to train mode\n", - "Epoch 8226: model parameters saved\n", - "Epoch 8227 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8227: avg_loss appended (1.3125)\n", - "Epoch 8227: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8227: accuracy appended (60.00%)\n", - "Epoch 8227: model set back to train mode\n", - "Epoch 8227: model parameters saved\n", - "Epoch 8228 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8228: avg_loss appended (1.3125)\n", - "Epoch 8228: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8228: accuracy appended (60.00%)\n", - "Epoch 8228: model set back to train mode\n", - "Epoch 8228: model parameters saved\n", - "Epoch 8229 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8229: avg_loss appended (1.3125)\n", - "Epoch 8229: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8229: accuracy appended (60.00%)\n", - "Epoch 8229: model set back to train mode\n", - "Epoch 8229: model parameters saved\n", - "Epoch 8230 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8230: avg_loss appended (1.3125)\n", - "Epoch 8230: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8230: accuracy appended (60.00%)\n", - "Epoch 8230: model set back to train mode\n", - "Epoch 8230: model parameters saved\n", - "Epoch 8231 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8231: avg_loss appended (1.3125)\n", - "Epoch 8231: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8231: accuracy appended (60.00%)\n", - "Epoch 8231: model set back to train mode\n", - "Epoch 8231: model parameters saved\n", - "Epoch 8232 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8232: avg_loss appended (1.3125)\n", - "Epoch 8232: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8232: accuracy appended (60.00%)\n", - "Epoch 8232: model set back to train mode\n", - "Epoch 8232: model parameters saved\n", - "Epoch 8233 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8233: avg_loss appended (1.3125)\n", - "Epoch 8233: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8233: accuracy appended (60.00%)\n", - "Epoch 8233: model set back to train mode\n", - "Epoch 8233: model parameters saved\n", - "Epoch 8234 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8234: avg_loss appended (1.3125)\n", - "Epoch 8234: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8234: accuracy appended (60.00%)\n", - "Epoch 8234: model set back to train mode\n", - "Epoch 8234: model parameters saved\n", - "Epoch 8235 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8235: avg_loss appended (1.3125)\n", - "Epoch 8235: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8235: accuracy appended (60.00%)\n", - "Epoch 8235: model set back to train mode\n", - "Epoch 8235: model parameters saved\n", - "Epoch 8236 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8236: avg_loss appended (1.3125)\n", - "Epoch 8236: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8236: accuracy appended (60.00%)\n", - "Epoch 8236: model set back to train mode\n", - "Epoch 8236: model parameters saved\n", - "Epoch 8237 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8237: avg_loss appended (1.3125)\n", - "Epoch 8237: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8237: accuracy appended (60.00%)\n", - "Epoch 8237: model set back to train mode\n", - "Epoch 8237: model parameters saved\n", - "Epoch 8238 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8238: avg_loss appended (1.3125)\n", - "Epoch 8238: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8238: accuracy appended (60.00%)\n", - "Epoch 8238: model set back to train mode\n", - "Epoch 8238: model parameters saved\n", - "Epoch 8239 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8239: avg_loss appended (1.3125)\n", - "Epoch 8239: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8239: accuracy appended (60.00%)\n", - "Epoch 8239: model set back to train mode\n", - "Epoch 8239: model parameters saved\n", - "Epoch 8240 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8240: avg_loss appended (1.3125)\n", - "Epoch 8240: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8240: accuracy appended (60.00%)\n", - "Epoch 8240: model set back to train mode\n", - "Epoch 8240: model parameters saved\n", - "Epoch 8241 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8241: avg_loss appended (1.3125)\n", - "Epoch 8241: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8241: accuracy appended (60.00%)\n", - "Epoch 8241: model set back to train mode\n", - "Epoch 8241: model parameters saved\n", - "Epoch 8242 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8242: avg_loss appended (1.3125)\n", - "Epoch 8242: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8242: accuracy appended (60.00%)\n", - "Epoch 8242: model set back to train mode\n", - "Epoch 8242: model parameters saved\n", - "Epoch 8243 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8243: avg_loss appended (1.3125)\n", - "Epoch 8243: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8243: accuracy appended (60.00%)\n", - "Epoch 8243: model set back to train mode\n", - "Epoch 8243: model parameters saved\n", - "Epoch 8244 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8244: avg_loss appended (1.3125)\n", - "Epoch 8244: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8244: accuracy appended (60.00%)\n", - "Epoch 8244: model set back to train mode\n", - "Epoch 8244: model parameters saved\n", - "Epoch 8245 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8245: avg_loss appended (1.3125)\n", - "Epoch 8245: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8245: accuracy appended (60.00%)\n", - "Epoch 8245: model set back to train mode\n", - "Epoch 8245: model parameters saved\n", - "Epoch 8246 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8246: avg_loss appended (1.3125)\n", - "Epoch 8246: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8246: accuracy appended (60.00%)\n", - "Epoch 8246: model set back to train mode\n", - "Epoch 8246: model parameters saved\n", - "Epoch 8247 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8247: avg_loss appended (1.3125)\n", - "Epoch 8247: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8247: accuracy appended (60.00%)\n", - "Epoch 8247: model set back to train mode\n", - "Epoch 8247: model parameters saved\n", - "Epoch 8248 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8248: avg_loss appended (1.3125)\n", - "Epoch 8248: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8248: accuracy appended (60.00%)\n", - "Epoch 8248: model set back to train mode\n", - "Epoch 8248: model parameters saved\n", - "Epoch 8249 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8249: avg_loss appended (1.3125)\n", - "Epoch 8249: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8249: accuracy appended (60.00%)\n", - "Epoch 8249: model set back to train mode\n", - "Epoch 8249: model parameters saved\n", - "Epoch 8250 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8250: avg_loss appended (1.3125)\n", - "Epoch 8250: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8250: accuracy appended (60.00%)\n", - "Epoch 8250: model set back to train mode\n", - "Epoch 8250: model parameters saved\n", - "Epoch 8251 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8251: avg_loss appended (1.3125)\n", - "Epoch 8251: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8251: accuracy appended (60.00%)\n", - "Epoch 8251: model set back to train mode\n", - "Epoch 8251: model parameters saved\n", - "Epoch 8252 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8252: avg_loss appended (1.3125)\n", - "Epoch 8252: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8252: accuracy appended (60.00%)\n", - "Epoch 8252: model set back to train mode\n", - "Epoch 8252: model parameters saved\n", - "Epoch 8253 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8253: avg_loss appended (1.3125)\n", - "Epoch 8253: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8253: accuracy appended (60.00%)\n", - "Epoch 8253: model set back to train mode\n", - "Epoch 8253: model parameters saved\n", - "Epoch 8254 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8254: avg_loss appended (1.3125)\n", - "Epoch 8254: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8254: accuracy appended (60.00%)\n", - "Epoch 8254: model set back to train mode\n", - "Epoch 8254: model parameters saved\n", - "Epoch 8255 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8255: avg_loss appended (1.3125)\n", - "Epoch 8255: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8255: accuracy appended (60.00%)\n", - "Epoch 8255: model set back to train mode\n", - "Epoch 8255: model parameters saved\n", - "Epoch 8256 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8256: avg_loss appended (1.3125)\n", - "Epoch 8256: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8256: accuracy appended (60.00%)\n", - "Epoch 8256: model set back to train mode\n", - "Epoch 8256: model parameters saved\n", - "Epoch 8257 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8257: avg_loss appended (1.3125)\n", - "Epoch 8257: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8257: accuracy appended (60.00%)\n", - "Epoch 8257: model set back to train mode\n", - "Epoch 8257: model parameters saved\n", - "Epoch 8258 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8258: avg_loss appended (1.3125)\n", - "Epoch 8258: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8258: accuracy appended (60.00%)\n", - "Epoch 8258: model set back to train mode\n", - "Epoch 8258: model parameters saved\n", - "Epoch 8259 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8259: avg_loss appended (1.3125)\n", - "Epoch 8259: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8259: accuracy appended (60.00%)\n", - "Epoch 8259: model set back to train mode\n", - "Epoch 8259: model parameters saved\n", - "Epoch 8260 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8260: avg_loss appended (1.3125)\n", - "Epoch 8260: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8260: accuracy appended (60.00%)\n", - "Epoch 8260: model set back to train mode\n", - "Epoch 8260: model parameters saved\n", - "Epoch 8261 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8261: avg_loss appended (1.3125)\n", - "Epoch 8261: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8261: accuracy appended (60.00%)\n", - "Epoch 8261: model set back to train mode\n", - "Epoch 8261: model parameters saved\n", - "Epoch 8262 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8262: avg_loss appended (1.3125)\n", - "Epoch 8262: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8262: accuracy appended (60.00%)\n", - "Epoch 8262: model set back to train mode\n", - "Epoch 8262: model parameters saved\n", - "Epoch 8263 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8263: avg_loss appended (1.3125)\n", - "Epoch 8263: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8263: accuracy appended (60.00%)\n", - "Epoch 8263: model set back to train mode\n", - "Epoch 8263: model parameters saved\n", - "Epoch 8264 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8264: avg_loss appended (1.3125)\n", - "Epoch 8264: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8264: accuracy appended (60.00%)\n", - "Epoch 8264: model set back to train mode\n", - "Epoch 8264: model parameters saved\n", - "Epoch 8265 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8265: avg_loss appended (1.3125)\n", - "Epoch 8265: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8265: accuracy appended (60.00%)\n", - "Epoch 8265: model set back to train mode\n", - "Epoch 8265: model parameters saved\n", - "Epoch 8266 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8266: avg_loss appended (1.3125)\n", - "Epoch 8266: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8266: accuracy appended (60.00%)\n", - "Epoch 8266: model set back to train mode\n", - "Epoch 8266: model parameters saved\n", - "Epoch 8267 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8267: avg_loss appended (1.3125)\n", - "Epoch 8267: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8267: accuracy appended (60.00%)\n", - "Epoch 8267: model set back to train mode\n", - "Epoch 8267: model parameters saved\n", - "Epoch 8268 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8268: avg_loss appended (1.3125)\n", - "Epoch 8268: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8268: accuracy appended (60.00%)\n", - "Epoch 8268: model set back to train mode\n", - "Epoch 8268: model parameters saved\n", - "Epoch 8269 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8269: avg_loss appended (1.3125)\n", - "Epoch 8269: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8269: accuracy appended (60.00%)\n", - "Epoch 8269: model set back to train mode\n", - "Epoch 8269: model parameters saved\n", - "Epoch 8270 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8270: avg_loss appended (1.3125)\n", - "Epoch 8270: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8270: accuracy appended (60.00%)\n", - "Epoch 8270: model set back to train mode\n", - "Epoch 8270: model parameters saved\n", - "Epoch 8271 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8271: avg_loss appended (1.3125)\n", - "Epoch 8271: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8271: accuracy appended (60.00%)\n", - "Epoch 8271: model set back to train mode\n", - "Epoch 8271: model parameters saved\n", - "Epoch 8272 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8272: avg_loss appended (1.3125)\n", - "Epoch 8272: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8272: accuracy appended (60.00%)\n", - "Epoch 8272: model set back to train mode\n", - "Epoch 8272: model parameters saved\n", - "Epoch 8273 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8273: avg_loss appended (1.3125)\n", - "Epoch 8273: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8273: accuracy appended (60.00%)\n", - "Epoch 8273: model set back to train mode\n", - "Epoch 8273: model parameters saved\n", - "Epoch 8274 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8274: avg_loss appended (1.3125)\n", - "Epoch 8274: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8274: accuracy appended (60.00%)\n", - "Epoch 8274: model set back to train mode\n", - "Epoch 8274: model parameters saved\n", - "Epoch 8275 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8275: avg_loss appended (1.3125)\n", - "Epoch 8275: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8275: accuracy appended (60.00%)\n", - "Epoch 8275: model set back to train mode\n", - "Epoch 8275: model parameters saved\n", - "Epoch 8276 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8276: avg_loss appended (1.3125)\n", - "Epoch 8276: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8276: accuracy appended (60.00%)\n", - "Epoch 8276: model set back to train mode\n", - "Epoch 8276: model parameters saved\n", - "Epoch 8277 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8277: avg_loss appended (1.3125)\n", - "Epoch 8277: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8277: accuracy appended (60.00%)\n", - "Epoch 8277: model set back to train mode\n", - "Epoch 8277: model parameters saved\n", - "Epoch 8278 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8278: avg_loss appended (1.3125)\n", - "Epoch 8278: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8278: accuracy appended (60.00%)\n", - "Epoch 8278: model set back to train mode\n", - "Epoch 8278: model parameters saved\n", - "Epoch 8279 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8279: avg_loss appended (1.3125)\n", - "Epoch 8279: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8279: accuracy appended (60.00%)\n", - "Epoch 8279: model set back to train mode\n", - "Epoch 8279: model parameters saved\n", - "Epoch 8280 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8280: avg_loss appended (1.3125)\n", - "Epoch 8280: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8280: accuracy appended (60.00%)\n", - "Epoch 8280: model set back to train mode\n", - "Epoch 8280: model parameters saved\n", - "Epoch 8281 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8281: avg_loss appended (1.3125)\n", - "Epoch 8281: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8281: accuracy appended (60.00%)\n", - "Epoch 8281: model set back to train mode\n", - "Epoch 8281: model parameters saved\n", - "Epoch 8282 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8282: avg_loss appended (1.3125)\n", - "Epoch 8282: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8282: accuracy appended (60.00%)\n", - "Epoch 8282: model set back to train mode\n", - "Epoch 8282: model parameters saved\n", - "Epoch 8283 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8283: avg_loss appended (1.3125)\n", - "Epoch 8283: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8283: accuracy appended (60.00%)\n", - "Epoch 8283: model set back to train mode\n", - "Epoch 8283: model parameters saved\n", - "Epoch 8284 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8284: avg_loss appended (1.3125)\n", - "Epoch 8284: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8284: accuracy appended (60.00%)\n", - "Epoch 8284: model set back to train mode\n", - "Epoch 8284: model parameters saved\n", - "Epoch 8285 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8285: avg_loss appended (1.3125)\n", - "Epoch 8285: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8285: accuracy appended (60.00%)\n", - "Epoch 8285: model set back to train mode\n", - "Epoch 8285: model parameters saved\n", - "Epoch 8286 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8286: avg_loss appended (1.3125)\n", - "Epoch 8286: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8286: accuracy appended (60.00%)\n", - "Epoch 8286: model set back to train mode\n", - "Epoch 8286: model parameters saved\n", - "Epoch 8287 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8287: avg_loss appended (1.3125)\n", - "Epoch 8287: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8287: accuracy appended (60.00%)\n", - "Epoch 8287: model set back to train mode\n", - "Epoch 8287: model parameters saved\n", - "Epoch 8288 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8288: avg_loss appended (1.3125)\n", - "Epoch 8288: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8288: accuracy appended (60.00%)\n", - "Epoch 8288: model set back to train mode\n", - "Epoch 8288: model parameters saved\n", - "Epoch 8289 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8289: avg_loss appended (1.3125)\n", - "Epoch 8289: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8289: accuracy appended (60.00%)\n", - "Epoch 8289: model set back to train mode\n", - "Epoch 8289: model parameters saved\n", - "Epoch 8290 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8290: avg_loss appended (1.3125)\n", - "Epoch 8290: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8290: accuracy appended (60.00%)\n", - "Epoch 8290: model set back to train mode\n", - "Epoch 8290: model parameters saved\n", - "Epoch 8291 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8291: avg_loss appended (1.3125)\n", - "Epoch 8291: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8291: accuracy appended (60.00%)\n", - "Epoch 8291: model set back to train mode\n", - "Epoch 8291: model parameters saved\n", - "Epoch 8292 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8292: avg_loss appended (1.3125)\n", - "Epoch 8292: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8292: accuracy appended (60.00%)\n", - "Epoch 8292: model set back to train mode\n", - "Epoch 8292: model parameters saved\n", - "Epoch 8293 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8293: avg_loss appended (1.3125)\n", - "Epoch 8293: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8293: accuracy appended (60.00%)\n", - "Epoch 8293: model set back to train mode\n", - "Epoch 8293: model parameters saved\n", - "Epoch 8294 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8294: avg_loss appended (1.3125)\n", - "Epoch 8294: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8294: accuracy appended (60.00%)\n", - "Epoch 8294: model set back to train mode\n", - "Epoch 8294: model parameters saved\n", - "Epoch 8295 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8295: avg_loss appended (1.3125)\n", - "Epoch 8295: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8295: accuracy appended (60.00%)\n", - "Epoch 8295: model set back to train mode\n", - "Epoch 8295: model parameters saved\n", - "Epoch 8296 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8296: avg_loss appended (1.3125)\n", - "Epoch 8296: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8296: accuracy appended (60.00%)\n", - "Epoch 8296: model set back to train mode\n", - "Epoch 8296: model parameters saved\n", - "Epoch 8297 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8297: avg_loss appended (1.3125)\n", - "Epoch 8297: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8297: accuracy appended (60.00%)\n", - "Epoch 8297: model set back to train mode\n", - "Epoch 8297: model parameters saved\n", - "Epoch 8298 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8298: avg_loss appended (1.3125)\n", - "Epoch 8298: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8298: accuracy appended (60.00%)\n", - "Epoch 8298: model set back to train mode\n", - "Epoch 8298: model parameters saved\n", - "Epoch 8299 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8299: avg_loss appended (1.3125)\n", - "Epoch 8299: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8299: accuracy appended (60.00%)\n", - "Epoch 8299: model set back to train mode\n", - "Epoch 8299: model parameters saved\n", - "Epoch 8300 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8300: avg_loss appended (1.3125)\n", - "Epoch 8300: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8300: accuracy appended (60.00%)\n", - "Epoch 8300: model set back to train mode\n", - "Epoch 8300: model parameters saved\n", - "Epoch 8300/10000, Loss: 1.3125, Accuracy: 60.00%\n", - "Epoch 8301 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8301: avg_loss appended (1.3125)\n", - "Epoch 8301: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8301: accuracy appended (60.00%)\n", - "Epoch 8301: model set back to train mode\n", - "Epoch 8301: model parameters saved\n", - "Epoch 8302 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8302: avg_loss appended (1.3125)\n", - "Epoch 8302: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8302: accuracy appended (60.00%)\n", - "Epoch 8302: model set back to train mode\n", - "Epoch 8302: model parameters saved\n", - "Epoch 8303 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8303: avg_loss appended (1.3125)\n", - "Epoch 8303: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8303: accuracy appended (60.00%)\n", - "Epoch 8303: model set back to train mode\n", - "Epoch 8303: model parameters saved\n", - "Epoch 8304 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8304: avg_loss appended (1.3125)\n", - "Epoch 8304: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8304: accuracy appended (60.00%)\n", - "Epoch 8304: model set back to train mode\n", - "Epoch 8304: model parameters saved\n", - "Epoch 8305 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8305: avg_loss appended (1.3125)\n", - "Epoch 8305: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8305: accuracy appended (60.00%)\n", - "Epoch 8305: model set back to train mode\n", - "Epoch 8305: model parameters saved\n", - "Epoch 8306 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8306: avg_loss appended (1.3125)\n", - "Epoch 8306: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8306: accuracy appended (60.00%)\n", - "Epoch 8306: model set back to train mode\n", - "Epoch 8306: model parameters saved\n", - "Epoch 8307 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8307: avg_loss appended (1.3125)\n", - "Epoch 8307: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8307: accuracy appended (60.00%)\n", - "Epoch 8307: model set back to train mode\n", - "Epoch 8307: model parameters saved\n", - "Epoch 8308 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8308: avg_loss appended (1.3125)\n", - "Epoch 8308: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8308: accuracy appended (60.00%)\n", - "Epoch 8308: model set back to train mode\n", - "Epoch 8308: model parameters saved\n", - "Epoch 8309 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8309: avg_loss appended (1.3125)\n", - "Epoch 8309: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8309: accuracy appended (60.00%)\n", - "Epoch 8309: model set back to train mode\n", - "Epoch 8309: model parameters saved\n", - "Epoch 8310 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8310: avg_loss appended (1.3125)\n", - "Epoch 8310: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8310: accuracy appended (60.00%)\n", - "Epoch 8310: model set back to train mode\n", - "Epoch 8310: model parameters saved\n", - "Epoch 8311 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8311: avg_loss appended (1.3125)\n", - "Epoch 8311: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8311: accuracy appended (60.00%)\n", - "Epoch 8311: model set back to train mode\n", - "Epoch 8311: model parameters saved\n", - "Epoch 8312 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8312: avg_loss appended (1.3125)\n", - "Epoch 8312: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8312: accuracy appended (60.00%)\n", - "Epoch 8312: model set back to train mode\n", - "Epoch 8312: model parameters saved\n", - "Epoch 8313 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8313: avg_loss appended (1.3125)\n", - "Epoch 8313: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8313: accuracy appended (60.00%)\n", - "Epoch 8313: model set back to train mode\n", - "Epoch 8313: model parameters saved\n", - "Epoch 8314 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8314: avg_loss appended (1.3125)\n", - "Epoch 8314: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8314: accuracy appended (60.00%)\n", - "Epoch 8314: model set back to train mode\n", - "Epoch 8314: model parameters saved\n", - "Epoch 8315 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8315: avg_loss appended (1.3125)\n", - "Epoch 8315: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8315: accuracy appended (60.00%)\n", - "Epoch 8315: model set back to train mode\n", - "Epoch 8315: model parameters saved\n", - "Epoch 8316 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8316: avg_loss appended (1.3125)\n", - "Epoch 8316: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8316: accuracy appended (60.00%)\n", - "Epoch 8316: model set back to train mode\n", - "Epoch 8316: model parameters saved\n", - "Epoch 8317 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8317: avg_loss appended (1.3125)\n", - "Epoch 8317: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8317: accuracy appended (60.00%)\n", - "Epoch 8317: model set back to train mode\n", - "Epoch 8317: model parameters saved\n", - "Epoch 8318 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8318: avg_loss appended (1.3125)\n", - "Epoch 8318: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8318: accuracy appended (60.00%)\n", - "Epoch 8318: model set back to train mode\n", - "Epoch 8318: model parameters saved\n", - "Epoch 8319 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8319: avg_loss appended (1.3125)\n", - "Epoch 8319: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8319: accuracy appended (60.00%)\n", - "Epoch 8319: model set back to train mode\n", - "Epoch 8319: model parameters saved\n", - "Epoch 8320 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8320: avg_loss appended (1.3125)\n", - "Epoch 8320: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8320: accuracy appended (60.00%)\n", - "Epoch 8320: model set back to train mode\n", - "Epoch 8320: model parameters saved\n", - "Epoch 8321 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8321: avg_loss appended (1.3125)\n", - "Epoch 8321: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8321: accuracy appended (60.00%)\n", - "Epoch 8321: model set back to train mode\n", - "Epoch 8321: model parameters saved\n", - "Epoch 8322 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8322: avg_loss appended (1.3125)\n", - "Epoch 8322: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8322: accuracy appended (60.00%)\n", - "Epoch 8322: model set back to train mode\n", - "Epoch 8322: model parameters saved\n", - "Epoch 8323 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8323: avg_loss appended (1.3125)\n", - "Epoch 8323: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8323: accuracy appended (60.00%)\n", - "Epoch 8323: model set back to train mode\n", - "Epoch 8323: model parameters saved\n", - "Epoch 8324 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8324: avg_loss appended (1.3125)\n", - "Epoch 8324: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8324: accuracy appended (60.00%)\n", - "Epoch 8324: model set back to train mode\n", - "Epoch 8324: model parameters saved\n", - "Epoch 8325 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8325: avg_loss appended (1.3125)\n", - "Epoch 8325: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8325: accuracy appended (60.00%)\n", - "Epoch 8325: model set back to train mode\n", - "Epoch 8325: model parameters saved\n", - "Epoch 8326 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8326: avg_loss appended (1.3125)\n", - "Epoch 8326: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8326: accuracy appended (60.00%)\n", - "Epoch 8326: model set back to train mode\n", - "Epoch 8326: model parameters saved\n", - "Epoch 8327 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8327: avg_loss appended (1.3125)\n", - "Epoch 8327: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8327: accuracy appended (60.00%)\n", - "Epoch 8327: model set back to train mode\n", - "Epoch 8327: model parameters saved\n", - "Epoch 8328 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8328: avg_loss appended (1.3125)\n", - "Epoch 8328: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8328: accuracy appended (60.00%)\n", - "Epoch 8328: model set back to train mode\n", - "Epoch 8328: model parameters saved\n", - "Epoch 8329 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8329: avg_loss appended (1.3125)\n", - "Epoch 8329: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8329: accuracy appended (60.00%)\n", - "Epoch 8329: model set back to train mode\n", - "Epoch 8329: model parameters saved\n", - "Epoch 8330 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8330: avg_loss appended (1.3125)\n", - "Epoch 8330: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8330: accuracy appended (60.00%)\n", - "Epoch 8330: model set back to train mode\n", - "Epoch 8330: model parameters saved\n", - "Epoch 8331 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8331: avg_loss appended (1.3125)\n", - "Epoch 8331: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8331: accuracy appended (60.00%)\n", - "Epoch 8331: model set back to train mode\n", - "Epoch 8331: model parameters saved\n", - "Epoch 8332 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8332: avg_loss appended (1.3125)\n", - "Epoch 8332: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8332: accuracy appended (60.00%)\n", - "Epoch 8332: model set back to train mode\n", - "Epoch 8332: model parameters saved\n", - "Epoch 8333 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8333: avg_loss appended (1.3125)\n", - "Epoch 8333: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8333: accuracy appended (60.00%)\n", - "Epoch 8333: model set back to train mode\n", - "Epoch 8333: model parameters saved\n", - "Epoch 8334 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8334: avg_loss appended (1.3125)\n", - "Epoch 8334: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8334: accuracy appended (60.00%)\n", - "Epoch 8334: model set back to train mode\n", - "Epoch 8334: model parameters saved\n", - "Epoch 8335 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8335: avg_loss appended (1.3125)\n", - "Epoch 8335: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8335: accuracy appended (60.00%)\n", - "Epoch 8335: model set back to train mode\n", - "Epoch 8335: model parameters saved\n", - "Epoch 8336 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8336: avg_loss appended (1.3125)\n", - "Epoch 8336: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8336: accuracy appended (60.00%)\n", - "Epoch 8336: model set back to train mode\n", - "Epoch 8336: model parameters saved\n", - "Epoch 8337 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8337: avg_loss appended (1.3125)\n", - "Epoch 8337: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8337: accuracy appended (60.00%)\n", - "Epoch 8337: model set back to train mode\n", - "Epoch 8337: model parameters saved\n", - "Epoch 8338 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8338: avg_loss appended (1.3125)\n", - "Epoch 8338: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8338: accuracy appended (60.00%)\n", - "Epoch 8338: model set back to train mode\n", - "Epoch 8338: model parameters saved\n", - "Epoch 8339 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8339: avg_loss appended (1.3125)\n", - "Epoch 8339: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8339: accuracy appended (60.00%)\n", - "Epoch 8339: model set back to train mode\n", - "Epoch 8339: model parameters saved\n", - "Epoch 8340 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8340: avg_loss appended (1.3125)\n", - "Epoch 8340: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8340: accuracy appended (60.00%)\n", - "Epoch 8340: model set back to train mode\n", - "Epoch 8340: model parameters saved\n", - "Epoch 8341 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8341: avg_loss appended (1.3125)\n", - "Epoch 8341: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8341: accuracy appended (60.00%)\n", - "Epoch 8341: model set back to train mode\n", - "Epoch 8341: model parameters saved\n", - "Epoch 8342 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8342: avg_loss appended (1.3125)\n", - "Epoch 8342: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8342: accuracy appended (60.00%)\n", - "Epoch 8342: model set back to train mode\n", - "Epoch 8342: model parameters saved\n", - "Epoch 8343 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8343: avg_loss appended (1.3125)\n", - "Epoch 8343: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8343: accuracy appended (60.00%)\n", - "Epoch 8343: model set back to train mode\n", - "Epoch 8343: model parameters saved\n", - "Epoch 8344 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8344: avg_loss appended (1.3125)\n", - "Epoch 8344: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8344: accuracy appended (60.00%)\n", - "Epoch 8344: model set back to train mode\n", - "Epoch 8344: model parameters saved\n", - "Epoch 8345 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8345: avg_loss appended (1.3125)\n", - "Epoch 8345: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8345: accuracy appended (60.00%)\n", - "Epoch 8345: model set back to train mode\n", - "Epoch 8345: model parameters saved\n", - "Epoch 8346 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8346: avg_loss appended (1.3125)\n", - "Epoch 8346: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8346: accuracy appended (60.00%)\n", - "Epoch 8346: model set back to train mode\n", - "Epoch 8346: model parameters saved\n", - "Epoch 8347 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8347: avg_loss appended (1.3125)\n", - "Epoch 8347: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8347: accuracy appended (60.00%)\n", - "Epoch 8347: model set back to train mode\n", - "Epoch 8347: model parameters saved\n", - "Epoch 8348 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8348: avg_loss appended (1.3125)\n", - "Epoch 8348: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8348: accuracy appended (60.00%)\n", - "Epoch 8348: model set back to train mode\n", - "Epoch 8348: model parameters saved\n", - "Epoch 8349 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8349: avg_loss appended (1.3125)\n", - "Epoch 8349: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8349: accuracy appended (60.00%)\n", - "Epoch 8349: model set back to train mode\n", - "Epoch 8349: model parameters saved\n", - "Epoch 8350 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8350: avg_loss appended (1.3125)\n", - "Epoch 8350: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8350: accuracy appended (60.00%)\n", - "Epoch 8350: model set back to train mode\n", - "Epoch 8350: model parameters saved\n", - "Epoch 8351 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8351: avg_loss appended (1.3125)\n", - "Epoch 8351: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8351: accuracy appended (60.00%)\n", - "Epoch 8351: model set back to train mode\n", - "Epoch 8351: model parameters saved\n", - "Epoch 8352 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8352: avg_loss appended (1.3125)\n", - "Epoch 8352: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8352: accuracy appended (60.00%)\n", - "Epoch 8352: model set back to train mode\n", - "Epoch 8352: model parameters saved\n", - "Epoch 8353 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8353: avg_loss appended (1.3125)\n", - "Epoch 8353: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8353: accuracy appended (60.00%)\n", - "Epoch 8353: model set back to train mode\n", - "Epoch 8353: model parameters saved\n", - "Epoch 8354 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8354: avg_loss appended (1.3125)\n", - "Epoch 8354: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8354: accuracy appended (60.00%)\n", - "Epoch 8354: model set back to train mode\n", - "Epoch 8354: model parameters saved\n", - "Epoch 8355 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8355: avg_loss appended (1.3125)\n", - "Epoch 8355: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8355: accuracy appended (60.00%)\n", - "Epoch 8355: model set back to train mode\n", - "Epoch 8355: model parameters saved\n", - "Epoch 8356 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8356: avg_loss appended (1.3125)\n", - "Epoch 8356: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8356: accuracy appended (60.00%)\n", - "Epoch 8356: model set back to train mode\n", - "Epoch 8356: model parameters saved\n", - "Epoch 8357 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8357: avg_loss appended (1.3125)\n", - "Epoch 8357: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8357: accuracy appended (60.00%)\n", - "Epoch 8357: model set back to train mode\n", - "Epoch 8357: model parameters saved\n", - "Epoch 8358 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8358: avg_loss appended (1.3125)\n", - "Epoch 8358: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8358: accuracy appended (60.00%)\n", - "Epoch 8358: model set back to train mode\n", - "Epoch 8358: model parameters saved\n", - "Epoch 8359 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8359: avg_loss appended (1.3125)\n", - "Epoch 8359: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8359: accuracy appended (60.00%)\n", - "Epoch 8359: model set back to train mode\n", - "Epoch 8359: model parameters saved\n", - "Epoch 8360 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8360: avg_loss appended (1.3125)\n", - "Epoch 8360: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8360: accuracy appended (60.00%)\n", - "Epoch 8360: model set back to train mode\n", - "Epoch 8360: model parameters saved\n", - "Epoch 8361 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8361: avg_loss appended (1.3125)\n", - "Epoch 8361: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8361: accuracy appended (60.00%)\n", - "Epoch 8361: model set back to train mode\n", - "Epoch 8361: model parameters saved\n", - "Epoch 8362 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8362: avg_loss appended (1.3125)\n", - "Epoch 8362: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8362: accuracy appended (60.00%)\n", - "Epoch 8362: model set back to train mode\n", - "Epoch 8362: model parameters saved\n", - "Epoch 8363 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8363: avg_loss appended (1.3125)\n", - "Epoch 8363: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8363: accuracy appended (60.00%)\n", - "Epoch 8363: model set back to train mode\n", - "Epoch 8363: model parameters saved\n", - "Epoch 8364 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8364: avg_loss appended (1.3125)\n", - "Epoch 8364: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8364: accuracy appended (60.00%)\n", - "Epoch 8364: model set back to train mode\n", - "Epoch 8364: model parameters saved\n", - "Epoch 8365 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8365: avg_loss appended (1.3125)\n", - "Epoch 8365: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8365: accuracy appended (60.00%)\n", - "Epoch 8365: model set back to train mode\n", - "Epoch 8365: model parameters saved\n", - "Epoch 8366 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8366: avg_loss appended (1.3125)\n", - "Epoch 8366: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8366: accuracy appended (60.00%)\n", - "Epoch 8366: model set back to train mode\n", - "Epoch 8366: model parameters saved\n", - "Epoch 8367 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8367: avg_loss appended (1.3125)\n", - "Epoch 8367: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8367: accuracy appended (60.00%)\n", - "Epoch 8367: model set back to train mode\n", - "Epoch 8367: model parameters saved\n", - "Epoch 8368 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8368: avg_loss appended (1.3125)\n", - "Epoch 8368: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8368: accuracy appended (60.00%)\n", - "Epoch 8368: model set back to train mode\n", - "Epoch 8368: model parameters saved\n", - "Epoch 8369 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8369: avg_loss appended (1.3125)\n", - "Epoch 8369: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8369: accuracy appended (60.00%)\n", - "Epoch 8369: model set back to train mode\n", - "Epoch 8369: model parameters saved\n", - "Epoch 8370 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8370: avg_loss appended (1.3125)\n", - "Epoch 8370: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8370: accuracy appended (60.00%)\n", - "Epoch 8370: model set back to train mode\n", - "Epoch 8370: model parameters saved\n", - "Epoch 8371 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8371: avg_loss appended (1.3125)\n", - "Epoch 8371: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8371: accuracy appended (60.00%)\n", - "Epoch 8371: model set back to train mode\n", - "Epoch 8371: model parameters saved\n", - "Epoch 8372 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8372: avg_loss appended (1.3125)\n", - "Epoch 8372: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8372: accuracy appended (60.00%)\n", - "Epoch 8372: model set back to train mode\n", - "Epoch 8372: model parameters saved\n", - "Epoch 8373 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8373: avg_loss appended (1.3125)\n", - "Epoch 8373: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8373: accuracy appended (60.00%)\n", - "Epoch 8373: model set back to train mode\n", - "Epoch 8373: model parameters saved\n", - "Epoch 8374 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8374: avg_loss appended (1.3125)\n", - "Epoch 8374: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8374: accuracy appended (60.00%)\n", - "Epoch 8374: model set back to train mode\n", - "Epoch 8374: model parameters saved\n", - "Epoch 8375 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8375: avg_loss appended (1.3125)\n", - "Epoch 8375: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8375: accuracy appended (60.00%)\n", - "Epoch 8375: model set back to train mode\n", - "Epoch 8375: model parameters saved\n", - "Epoch 8376 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8376: avg_loss appended (1.3125)\n", - "Epoch 8376: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8376: accuracy appended (60.00%)\n", - "Epoch 8376: model set back to train mode\n", - "Epoch 8376: model parameters saved\n", - "Epoch 8377 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8377: avg_loss appended (1.3125)\n", - "Epoch 8377: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8377: accuracy appended (60.00%)\n", - "Epoch 8377: model set back to train mode\n", - "Epoch 8377: model parameters saved\n", - "Epoch 8378 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8378: avg_loss appended (1.3125)\n", - "Epoch 8378: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8378: accuracy appended (60.00%)\n", - "Epoch 8378: model set back to train mode\n", - "Epoch 8378: model parameters saved\n", - "Epoch 8379 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8379: avg_loss appended (1.3125)\n", - "Epoch 8379: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8379: accuracy appended (60.00%)\n", - "Epoch 8379: model set back to train mode\n", - "Epoch 8379: model parameters saved\n", - "Epoch 8380 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8380: avg_loss appended (1.3125)\n", - "Epoch 8380: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8380: accuracy appended (60.00%)\n", - "Epoch 8380: model set back to train mode\n", - "Epoch 8380: model parameters saved\n", - "Epoch 8381 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8381: avg_loss appended (1.3125)\n", - "Epoch 8381: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8381: accuracy appended (60.00%)\n", - "Epoch 8381: model set back to train mode\n", - "Epoch 8381: model parameters saved\n", - "Epoch 8382 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8382: avg_loss appended (1.3125)\n", - "Epoch 8382: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8382: accuracy appended (60.00%)\n", - "Epoch 8382: model set back to train mode\n", - "Epoch 8382: model parameters saved\n", - "Epoch 8383 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8383: avg_loss appended (1.3125)\n", - "Epoch 8383: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8383: accuracy appended (60.00%)\n", - "Epoch 8383: model set back to train mode\n", - "Epoch 8383: model parameters saved\n", - "Epoch 8384 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8384: avg_loss appended (1.3125)\n", - "Epoch 8384: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8384: accuracy appended (60.00%)\n", - "Epoch 8384: model set back to train mode\n", - "Epoch 8384: model parameters saved\n", - "Epoch 8385 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8385: avg_loss appended (1.3125)\n", - "Epoch 8385: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8385: accuracy appended (60.00%)\n", - "Epoch 8385: model set back to train mode\n", - "Epoch 8385: model parameters saved\n", - "Epoch 8386 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8386: avg_loss appended (1.3125)\n", - "Epoch 8386: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8386: accuracy appended (60.00%)\n", - "Epoch 8386: model set back to train mode\n", - "Epoch 8386: model parameters saved\n", - "Epoch 8387 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8387: avg_loss appended (1.3125)\n", - "Epoch 8387: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8387: accuracy appended (60.00%)\n", - "Epoch 8387: model set back to train mode\n", - "Epoch 8387: model parameters saved\n", - "Epoch 8388 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8388: avg_loss appended (1.3125)\n", - "Epoch 8388: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8388: accuracy appended (60.00%)\n", - "Epoch 8388: model set back to train mode\n", - "Epoch 8388: model parameters saved\n", - "Epoch 8389 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8389: avg_loss appended (1.3125)\n", - "Epoch 8389: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8389: accuracy appended (60.00%)\n", - "Epoch 8389: model set back to train mode\n", - "Epoch 8389: model parameters saved\n", - "Epoch 8390 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8390: avg_loss appended (1.3125)\n", - "Epoch 8390: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8390: accuracy appended (60.00%)\n", - "Epoch 8390: model set back to train mode\n", - "Epoch 8390: model parameters saved\n", - "Epoch 8391 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8391: avg_loss appended (1.3125)\n", - "Epoch 8391: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8391: accuracy appended (60.00%)\n", - "Epoch 8391: model set back to train mode\n", - "Epoch 8391: model parameters saved\n", - "Epoch 8392 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8392: avg_loss appended (1.3125)\n", - "Epoch 8392: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8392: accuracy appended (60.00%)\n", - "Epoch 8392: model set back to train mode\n", - "Epoch 8392: model parameters saved\n", - "Epoch 8393 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8393: avg_loss appended (1.3125)\n", - "Epoch 8393: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8393: accuracy appended (60.00%)\n", - "Epoch 8393: model set back to train mode\n", - "Epoch 8393: model parameters saved\n", - "Epoch 8394 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8394: avg_loss appended (1.3125)\n", - "Epoch 8394: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8394: accuracy appended (60.00%)\n", - "Epoch 8394: model set back to train mode\n", - "Epoch 8394: model parameters saved\n", - "Epoch 8395 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8395: avg_loss appended (1.3125)\n", - "Epoch 8395: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8395: accuracy appended (60.00%)\n", - "Epoch 8395: model set back to train mode\n", - "Epoch 8395: model parameters saved\n", - "Epoch 8396 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8396: avg_loss appended (1.3125)\n", - "Epoch 8396: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8396: accuracy appended (60.00%)\n", - "Epoch 8396: model set back to train mode\n", - "Epoch 8396: model parameters saved\n", - "Epoch 8397 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8397: avg_loss appended (1.3125)\n", - "Epoch 8397: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8397: accuracy appended (60.00%)\n", - "Epoch 8397: model set back to train mode\n", - "Epoch 8397: model parameters saved\n", - "Epoch 8398 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8398: avg_loss appended (1.3125)\n", - "Epoch 8398: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8398: accuracy appended (60.00%)\n", - "Epoch 8398: model set back to train mode\n", - "Epoch 8398: model parameters saved\n", - "Epoch 8399 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8399: avg_loss appended (1.3125)\n", - "Epoch 8399: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8399: accuracy appended (60.00%)\n", - "Epoch 8399: model set back to train mode\n", - "Epoch 8399: model parameters saved\n", - "Epoch 8400 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8400: avg_loss appended (1.3125)\n", - "Epoch 8400: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8400: accuracy appended (60.00%)\n", - "Epoch 8400: model set back to train mode\n", - "Epoch 8400: model parameters saved\n", - "Epoch 8400/10000, Loss: 1.3125, Accuracy: 60.00%\n", - "Epoch 8401 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8401: avg_loss appended (1.3125)\n", - "Epoch 8401: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8401: accuracy appended (60.00%)\n", - "Epoch 8401: model set back to train mode\n", - "Epoch 8401: model parameters saved\n", - "Epoch 8402 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8402: avg_loss appended (1.3125)\n", - "Epoch 8402: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8402: accuracy appended (60.00%)\n", - "Epoch 8402: model set back to train mode\n", - "Epoch 8402: model parameters saved\n", - "Epoch 8403 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8403: avg_loss appended (1.3125)\n", - "Epoch 8403: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8403: accuracy appended (60.00%)\n", - "Epoch 8403: model set back to train mode\n", - "Epoch 8403: model parameters saved\n", - "Epoch 8404 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8404: avg_loss appended (1.3125)\n", - "Epoch 8404: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8404: accuracy appended (60.00%)\n", - "Epoch 8404: model set back to train mode\n", - "Epoch 8404: model parameters saved\n", - "Epoch 8405 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8405: avg_loss appended (1.3125)\n", - "Epoch 8405: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8405: accuracy appended (60.00%)\n", - "Epoch 8405: model set back to train mode\n", - "Epoch 8405: model parameters saved\n", - "Epoch 8406 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8406: avg_loss appended (1.3125)\n", - "Epoch 8406: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8406: accuracy appended (60.00%)\n", - "Epoch 8406: model set back to train mode\n", - "Epoch 8406: model parameters saved\n", - "Epoch 8407 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8407: avg_loss appended (1.3125)\n", - "Epoch 8407: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8407: accuracy appended (60.00%)\n", - "Epoch 8407: model set back to train mode\n", - "Epoch 8407: model parameters saved\n", - "Epoch 8408 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8408: avg_loss appended (1.3125)\n", - "Epoch 8408: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8408: accuracy appended (60.00%)\n", - "Epoch 8408: model set back to train mode\n", - "Epoch 8408: model parameters saved\n", - "Epoch 8409 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8409: avg_loss appended (1.3125)\n", - "Epoch 8409: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8409: accuracy appended (60.00%)\n", - "Epoch 8409: model set back to train mode\n", - "Epoch 8409: model parameters saved\n", - "Epoch 8410 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8410: avg_loss appended (1.3125)\n", - "Epoch 8410: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8410: accuracy appended (60.00%)\n", - "Epoch 8410: model set back to train mode\n", - "Epoch 8410: model parameters saved\n", - "Epoch 8411 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8411: avg_loss appended (1.3125)\n", - "Epoch 8411: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8411: accuracy appended (60.00%)\n", - "Epoch 8411: model set back to train mode\n", - "Epoch 8411: model parameters saved\n", - "Epoch 8412 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8412: avg_loss appended (1.3125)\n", - "Epoch 8412: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8412: accuracy appended (60.00%)\n", - "Epoch 8412: model set back to train mode\n", - "Epoch 8412: model parameters saved\n", - "Epoch 8413 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8413: avg_loss appended (1.3125)\n", - "Epoch 8413: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8413: accuracy appended (60.00%)\n", - "Epoch 8413: model set back to train mode\n", - "Epoch 8413: model parameters saved\n", - "Epoch 8414 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8414: avg_loss appended (1.3125)\n", - "Epoch 8414: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8414: accuracy appended (60.00%)\n", - "Epoch 8414: model set back to train mode\n", - "Epoch 8414: model parameters saved\n", - "Epoch 8415 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8415: avg_loss appended (1.3125)\n", - "Epoch 8415: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8415: accuracy appended (60.00%)\n", - "Epoch 8415: model set back to train mode\n", - "Epoch 8415: model parameters saved\n", - "Epoch 8416 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8416: avg_loss appended (1.3125)\n", - "Epoch 8416: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8416: accuracy appended (60.00%)\n", - "Epoch 8416: model set back to train mode\n", - "Epoch 8416: model parameters saved\n", - "Epoch 8417 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8417: avg_loss appended (1.3125)\n", - "Epoch 8417: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8417: accuracy appended (60.00%)\n", - "Epoch 8417: model set back to train mode\n", - "Epoch 8417: model parameters saved\n", - "Epoch 8418 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8418: avg_loss appended (1.3125)\n", - "Epoch 8418: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8418: accuracy appended (60.00%)\n", - "Epoch 8418: model set back to train mode\n", - "Epoch 8418: model parameters saved\n", - "Epoch 8419 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8419: avg_loss appended (1.3125)\n", - "Epoch 8419: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8419: accuracy appended (60.00%)\n", - "Epoch 8419: model set back to train mode\n", - "Epoch 8419: model parameters saved\n", - "Epoch 8420 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8420: avg_loss appended (1.3125)\n", - "Epoch 8420: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8420: accuracy appended (60.00%)\n", - "Epoch 8420: model set back to train mode\n", - "Epoch 8420: model parameters saved\n", - "Epoch 8421 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8421: avg_loss appended (1.3125)\n", - "Epoch 8421: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8421: accuracy appended (60.00%)\n", - "Epoch 8421: model set back to train mode\n", - "Epoch 8421: model parameters saved\n", - "Epoch 8422 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8422: avg_loss appended (1.3125)\n", - "Epoch 8422: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8422: accuracy appended (60.00%)\n", - "Epoch 8422: model set back to train mode\n", - "Epoch 8422: model parameters saved\n", - "Epoch 8423 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8423: avg_loss appended (1.3125)\n", - "Epoch 8423: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8423: accuracy appended (60.00%)\n", - "Epoch 8423: model set back to train mode\n", - "Epoch 8423: model parameters saved\n", - "Epoch 8424 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8424: avg_loss appended (1.3125)\n", - "Epoch 8424: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8424: accuracy appended (60.00%)\n", - "Epoch 8424: model set back to train mode\n", - "Epoch 8424: model parameters saved\n", - "Epoch 8425 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8425: avg_loss appended (1.3125)\n", - "Epoch 8425: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8425: accuracy appended (60.00%)\n", - "Epoch 8425: model set back to train mode\n", - "Epoch 8425: model parameters saved\n", - "Epoch 8426 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8426: avg_loss appended (1.3125)\n", - "Epoch 8426: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8426: accuracy appended (60.00%)\n", - "Epoch 8426: model set back to train mode\n", - "Epoch 8426: model parameters saved\n", - "Epoch 8427 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8427: avg_loss appended (1.3125)\n", - "Epoch 8427: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8427: accuracy appended (60.00%)\n", - "Epoch 8427: model set back to train mode\n", - "Epoch 8427: model parameters saved\n", - "Epoch 8428 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8428: avg_loss appended (1.3125)\n", - "Epoch 8428: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8428: accuracy appended (60.00%)\n", - "Epoch 8428: model set back to train mode\n", - "Epoch 8428: model parameters saved\n", - "Epoch 8429 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8429: avg_loss appended (1.3125)\n", - "Epoch 8429: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8429: accuracy appended (60.00%)\n", - "Epoch 8429: model set back to train mode\n", - "Epoch 8429: model parameters saved\n", - "Epoch 8430 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8430: avg_loss appended (1.3125)\n", - "Epoch 8430: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8430: accuracy appended (60.00%)\n", - "Epoch 8430: model set back to train mode\n", - "Epoch 8430: model parameters saved\n", - "Epoch 8431 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8431: avg_loss appended (1.3125)\n", - "Epoch 8431: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8431: accuracy appended (60.00%)\n", - "Epoch 8431: model set back to train mode\n", - "Epoch 8431: model parameters saved\n", - "Epoch 8432 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8432: avg_loss appended (1.3125)\n", - "Epoch 8432: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8432: accuracy appended (60.00%)\n", - "Epoch 8432: model set back to train mode\n", - "Epoch 8432: model parameters saved\n", - "Epoch 8433 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8433: avg_loss appended (1.3125)\n", - "Epoch 8433: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8433: accuracy appended (60.00%)\n", - "Epoch 8433: model set back to train mode\n", - "Epoch 8433: model parameters saved\n", - "Epoch 8434 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8434: avg_loss appended (1.3125)\n", - "Epoch 8434: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8434: accuracy appended (60.00%)\n", - "Epoch 8434: model set back to train mode\n", - "Epoch 8434: model parameters saved\n", - "Epoch 8435 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8435: avg_loss appended (1.3125)\n", - "Epoch 8435: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8435: accuracy appended (60.00%)\n", - "Epoch 8435: model set back to train mode\n", - "Epoch 8435: model parameters saved\n", - "Epoch 8436 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8436: avg_loss appended (1.3125)\n", - "Epoch 8436: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8436: accuracy appended (60.00%)\n", - "Epoch 8436: model set back to train mode\n", - "Epoch 8436: model parameters saved\n", - "Epoch 8437 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8437: avg_loss appended (1.3125)\n", - "Epoch 8437: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8437: accuracy appended (60.00%)\n", - "Epoch 8437: model set back to train mode\n", - "Epoch 8437: model parameters saved\n", - "Epoch 8438 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8438: avg_loss appended (1.3125)\n", - "Epoch 8438: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8438: accuracy appended (60.00%)\n", - "Epoch 8438: model set back to train mode\n", - "Epoch 8438: model parameters saved\n", - "Epoch 8439 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8439: avg_loss appended (1.3125)\n", - "Epoch 8439: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8439: accuracy appended (60.00%)\n", - "Epoch 8439: model set back to train mode\n", - "Epoch 8439: model parameters saved\n", - "Epoch 8440 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8440: avg_loss appended (1.3125)\n", - "Epoch 8440: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8440: accuracy appended (60.00%)\n", - "Epoch 8440: model set back to train mode\n", - "Epoch 8440: model parameters saved\n", - "Epoch 8441 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8441: avg_loss appended (1.3125)\n", - "Epoch 8441: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8441: accuracy appended (60.00%)\n", - "Epoch 8441: model set back to train mode\n", - "Epoch 8441: model parameters saved\n", - "Epoch 8442 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8442: avg_loss appended (1.3125)\n", - "Epoch 8442: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8442: accuracy appended (60.00%)\n", - "Epoch 8442: model set back to train mode\n", - "Epoch 8442: model parameters saved\n", - "Epoch 8443 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8443: avg_loss appended (1.3125)\n", - "Epoch 8443: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8443: accuracy appended (60.00%)\n", - "Epoch 8443: model set back to train mode\n", - "Epoch 8443: model parameters saved\n", - "Epoch 8444 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8444: avg_loss appended (1.3125)\n", - "Epoch 8444: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8444: accuracy appended (60.00%)\n", - "Epoch 8444: model set back to train mode\n", - "Epoch 8444: model parameters saved\n", - "Epoch 8445 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8445: avg_loss appended (1.3125)\n", - "Epoch 8445: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8445: accuracy appended (60.00%)\n", - "Epoch 8445: model set back to train mode\n", - "Epoch 8445: model parameters saved\n", - "Epoch 8446 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8446: avg_loss appended (1.3125)\n", - "Epoch 8446: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8446: accuracy appended (60.00%)\n", - "Epoch 8446: model set back to train mode\n", - "Epoch 8446: model parameters saved\n", - "Epoch 8447 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8447: avg_loss appended (1.3125)\n", - "Epoch 8447: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8447: accuracy appended (60.00%)\n", - "Epoch 8447: model set back to train mode\n", - "Epoch 8447: model parameters saved\n", - "Epoch 8448 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8448: avg_loss appended (1.3125)\n", - "Epoch 8448: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8448: accuracy appended (60.00%)\n", - "Epoch 8448: model set back to train mode\n", - "Epoch 8448: model parameters saved\n", - "Epoch 8449 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8449: avg_loss appended (1.3125)\n", - "Epoch 8449: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8449: accuracy appended (60.00%)\n", - "Epoch 8449: model set back to train mode\n", - "Epoch 8449: model parameters saved\n", - "Epoch 8450 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8450: avg_loss appended (1.3125)\n", - "Epoch 8450: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8450: accuracy appended (60.00%)\n", - "Epoch 8450: model set back to train mode\n", - "Epoch 8450: model parameters saved\n", - "Epoch 8451 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8451: avg_loss appended (1.3125)\n", - "Epoch 8451: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8451: accuracy appended (60.00%)\n", - "Epoch 8451: model set back to train mode\n", - "Epoch 8451: model parameters saved\n", - "Epoch 8452 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8452: avg_loss appended (1.3125)\n", - "Epoch 8452: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8452: accuracy appended (60.00%)\n", - "Epoch 8452: model set back to train mode\n", - "Epoch 8452: model parameters saved\n", - "Epoch 8453 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8453: avg_loss appended (1.3125)\n", - "Epoch 8453: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8453: accuracy appended (60.00%)\n", - "Epoch 8453: model set back to train mode\n", - "Epoch 8453: model parameters saved\n", - "Epoch 8454 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8454: avg_loss appended (1.3125)\n", - "Epoch 8454: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8454: accuracy appended (60.00%)\n", - "Epoch 8454: model set back to train mode\n", - "Epoch 8454: model parameters saved\n", - "Epoch 8455 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8455: avg_loss appended (1.3125)\n", - "Epoch 8455: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8455: accuracy appended (60.00%)\n", - "Epoch 8455: model set back to train mode\n", - "Epoch 8455: model parameters saved\n", - "Epoch 8456 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8456: avg_loss appended (1.3125)\n", - "Epoch 8456: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8456: accuracy appended (60.00%)\n", - "Epoch 8456: model set back to train mode\n", - "Epoch 8456: model parameters saved\n", - "Epoch 8457 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8457: avg_loss appended (1.3125)\n", - "Epoch 8457: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8457: accuracy appended (60.00%)\n", - "Epoch 8457: model set back to train mode\n", - "Epoch 8457: model parameters saved\n", - "Epoch 8458 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8458: avg_loss appended (1.3125)\n", - "Epoch 8458: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8458: accuracy appended (60.00%)\n", - "Epoch 8458: model set back to train mode\n", - "Epoch 8458: model parameters saved\n", - "Epoch 8459 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8459: avg_loss appended (1.3125)\n", - "Epoch 8459: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8459: accuracy appended (60.00%)\n", - "Epoch 8459: model set back to train mode\n", - "Epoch 8459: model parameters saved\n", - "Epoch 8460 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8460: avg_loss appended (1.3125)\n", - "Epoch 8460: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8460: accuracy appended (60.00%)\n", - "Epoch 8460: model set back to train mode\n", - "Epoch 8460: model parameters saved\n", - "Epoch 8461 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8461: avg_loss appended (1.3125)\n", - "Epoch 8461: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8461: accuracy appended (60.00%)\n", - "Epoch 8461: model set back to train mode\n", - "Epoch 8461: model parameters saved\n", - "Epoch 8462 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8462: avg_loss appended (1.3125)\n", - "Epoch 8462: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8462: accuracy appended (60.00%)\n", - "Epoch 8462: model set back to train mode\n", - "Epoch 8462: model parameters saved\n", - "Epoch 8463 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8463: avg_loss appended (1.3125)\n", - "Epoch 8463: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8463: accuracy appended (60.00%)\n", - "Epoch 8463: model set back to train mode\n", - "Epoch 8463: model parameters saved\n", - "Epoch 8464 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8464: avg_loss appended (1.3125)\n", - "Epoch 8464: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8464: accuracy appended (60.00%)\n", - "Epoch 8464: model set back to train mode\n", - "Epoch 8464: model parameters saved\n", - "Epoch 8465 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8465: avg_loss appended (1.3125)\n", - "Epoch 8465: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8465: accuracy appended (60.00%)\n", - "Epoch 8465: model set back to train mode\n", - "Epoch 8465: model parameters saved\n", - "Epoch 8466 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8466: avg_loss appended (1.3125)\n", - "Epoch 8466: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8466: accuracy appended (60.00%)\n", - "Epoch 8466: model set back to train mode\n", - "Epoch 8466: model parameters saved\n", - "Epoch 8467 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8467: avg_loss appended (1.3125)\n", - "Epoch 8467: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8467: accuracy appended (60.00%)\n", - "Epoch 8467: model set back to train mode\n", - "Epoch 8467: model parameters saved\n", - "Epoch 8468 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8468: avg_loss appended (1.3125)\n", - "Epoch 8468: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8468: accuracy appended (60.00%)\n", - "Epoch 8468: model set back to train mode\n", - "Epoch 8468: model parameters saved\n", - "Epoch 8469 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8469: avg_loss appended (1.3125)\n", - "Epoch 8469: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8469: accuracy appended (60.00%)\n", - "Epoch 8469: model set back to train mode\n", - "Epoch 8469: model parameters saved\n", - "Epoch 8470 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8470: avg_loss appended (1.3125)\n", - "Epoch 8470: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8470: accuracy appended (60.00%)\n", - "Epoch 8470: model set back to train mode\n", - "Epoch 8470: model parameters saved\n", - "Epoch 8471 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8471: avg_loss appended (1.3125)\n", - "Epoch 8471: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8471: accuracy appended (60.00%)\n", - "Epoch 8471: model set back to train mode\n", - "Epoch 8471: model parameters saved\n", - "Epoch 8472 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8472: avg_loss appended (1.3125)\n", - "Epoch 8472: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8472: accuracy appended (60.00%)\n", - "Epoch 8472: model set back to train mode\n", - "Epoch 8472: model parameters saved\n", - "Epoch 8473 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8473: avg_loss appended (1.3125)\n", - "Epoch 8473: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8473: accuracy appended (60.00%)\n", - "Epoch 8473: model set back to train mode\n", - "Epoch 8473: model parameters saved\n", - "Epoch 8474 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8474: avg_loss appended (1.3125)\n", - "Epoch 8474: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8474: accuracy appended (60.00%)\n", - "Epoch 8474: model set back to train mode\n", - "Epoch 8474: model parameters saved\n", - "Epoch 8475 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8475: avg_loss appended (1.3125)\n", - "Epoch 8475: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8475: accuracy appended (60.00%)\n", - "Epoch 8475: model set back to train mode\n", - "Epoch 8475: model parameters saved\n", - "Epoch 8476 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8476: avg_loss appended (1.3125)\n", - "Epoch 8476: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8476: accuracy appended (60.00%)\n", - "Epoch 8476: model set back to train mode\n", - "Epoch 8476: model parameters saved\n", - "Epoch 8477 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8477: avg_loss appended (1.3125)\n", - "Epoch 8477: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8477: accuracy appended (60.00%)\n", - "Epoch 8477: model set back to train mode\n", - "Epoch 8477: model parameters saved\n", - "Epoch 8478 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8478: avg_loss appended (1.3125)\n", - "Epoch 8478: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8478: accuracy appended (60.00%)\n", - "Epoch 8478: model set back to train mode\n", - "Epoch 8478: model parameters saved\n", - "Epoch 8479 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8479: avg_loss appended (1.3125)\n", - "Epoch 8479: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8479: accuracy appended (60.00%)\n", - "Epoch 8479: model set back to train mode\n", - "Epoch 8479: model parameters saved\n", - "Epoch 8480 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8480: avg_loss appended (1.3125)\n", - "Epoch 8480: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8480: accuracy appended (60.00%)\n", - "Epoch 8480: model set back to train mode\n", - "Epoch 8480: model parameters saved\n", - "Epoch 8481 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8481: avg_loss appended (1.3125)\n", - "Epoch 8481: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8481: accuracy appended (60.00%)\n", - "Epoch 8481: model set back to train mode\n", - "Epoch 8481: model parameters saved\n", - "Epoch 8482 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8482: avg_loss appended (1.3125)\n", - "Epoch 8482: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8482: accuracy appended (60.00%)\n", - "Epoch 8482: model set back to train mode\n", - "Epoch 8482: model parameters saved\n", - "Epoch 8483 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8483: avg_loss appended (1.3125)\n", - "Epoch 8483: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8483: accuracy appended (60.00%)\n", - "Epoch 8483: model set back to train mode\n", - "Epoch 8483: model parameters saved\n", - "Epoch 8484 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8484: avg_loss appended (1.3125)\n", - "Epoch 8484: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8484: accuracy appended (60.00%)\n", - "Epoch 8484: model set back to train mode\n", - "Epoch 8484: model parameters saved\n", - "Epoch 8485 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8485: avg_loss appended (1.3125)\n", - "Epoch 8485: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8485: accuracy appended (60.00%)\n", - "Epoch 8485: model set back to train mode\n", - "Epoch 8485: model parameters saved\n", - "Epoch 8486 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8486: avg_loss appended (1.3125)\n", - "Epoch 8486: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8486: accuracy appended (60.00%)\n", - "Epoch 8486: model set back to train mode\n", - "Epoch 8486: model parameters saved\n", - "Epoch 8487 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8487: avg_loss appended (1.3125)\n", - "Epoch 8487: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8487: accuracy appended (60.00%)\n", - "Epoch 8487: model set back to train mode\n", - "Epoch 8487: model parameters saved\n", - "Epoch 8488 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8488: avg_loss appended (1.3125)\n", - "Epoch 8488: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8488: accuracy appended (60.00%)\n", - "Epoch 8488: model set back to train mode\n", - "Epoch 8488: model parameters saved\n", - "Epoch 8489 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8489: avg_loss appended (1.3125)\n", - "Epoch 8489: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8489: accuracy appended (60.00%)\n", - "Epoch 8489: model set back to train mode\n", - "Epoch 8489: model parameters saved\n", - "Epoch 8490 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8490: avg_loss appended (1.3125)\n", - "Epoch 8490: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8490: accuracy appended (60.00%)\n", - "Epoch 8490: model set back to train mode\n", - "Epoch 8490: model parameters saved\n", - "Epoch 8491 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8491: avg_loss appended (1.3125)\n", - "Epoch 8491: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8491: accuracy appended (60.00%)\n", - "Epoch 8491: model set back to train mode\n", - "Epoch 8491: model parameters saved\n", - "Epoch 8492 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8492: avg_loss appended (1.3125)\n", - "Epoch 8492: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8492: accuracy appended (60.00%)\n", - "Epoch 8492: model set back to train mode\n", - "Epoch 8492: model parameters saved\n", - "Epoch 8493 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8493: avg_loss appended (1.3125)\n", - "Epoch 8493: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8493: accuracy appended (60.00%)\n", - "Epoch 8493: model set back to train mode\n", - "Epoch 8493: model parameters saved\n", - "Epoch 8494 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8494: avg_loss appended (1.3125)\n", - "Epoch 8494: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8494: accuracy appended (60.00%)\n", - "Epoch 8494: model set back to train mode\n", - "Epoch 8494: model parameters saved\n", - "Epoch 8495 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8495: avg_loss appended (1.3125)\n", - "Epoch 8495: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8495: accuracy appended (60.00%)\n", - "Epoch 8495: model set back to train mode\n", - "Epoch 8495: model parameters saved\n", - "Epoch 8496 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8496: avg_loss appended (1.3125)\n", - "Epoch 8496: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8496: accuracy appended (60.00%)\n", - "Epoch 8496: model set back to train mode\n", - "Epoch 8496: model parameters saved\n", - "Epoch 8497 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8497: avg_loss appended (1.3125)\n", - "Epoch 8497: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8497: accuracy appended (60.00%)\n", - "Epoch 8497: model set back to train mode\n", - "Epoch 8497: model parameters saved\n", - "Epoch 8498 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8498: avg_loss appended (1.3125)\n", - "Epoch 8498: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8498: accuracy appended (60.00%)\n", - "Epoch 8498: model set back to train mode\n", - "Epoch 8498: model parameters saved\n", - "Epoch 8499 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8499: avg_loss appended (1.3125)\n", - "Epoch 8499: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8499: accuracy appended (60.00%)\n", - "Epoch 8499: model set back to train mode\n", - "Epoch 8499: model parameters saved\n", - "Epoch 8500 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8500: avg_loss appended (1.3125)\n", - "Epoch 8500: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8500: accuracy appended (60.00%)\n", - "Epoch 8500: model set back to train mode\n", - "Epoch 8500: model parameters saved\n", - "Epoch 8500/10000, Loss: 1.3125, Accuracy: 60.00%\n", - "Epoch 8501 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8501: avg_loss appended (1.3125)\n", - "Epoch 8501: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8501: accuracy appended (60.00%)\n", - "Epoch 8501: model set back to train mode\n", - "Epoch 8501: model parameters saved\n", - "Epoch 8502 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8502: avg_loss appended (1.3125)\n", - "Epoch 8502: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8502: accuracy appended (60.00%)\n", - "Epoch 8502: model set back to train mode\n", - "Epoch 8502: model parameters saved\n", - "Epoch 8503 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8503: avg_loss appended (1.3125)\n", - "Epoch 8503: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8503: accuracy appended (60.00%)\n", - "Epoch 8503: model set back to train mode\n", - "Epoch 8503: model parameters saved\n", - "Epoch 8504 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8504: avg_loss appended (1.3125)\n", - "Epoch 8504: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8504: accuracy appended (60.00%)\n", - "Epoch 8504: model set back to train mode\n", - "Epoch 8504: model parameters saved\n", - "Epoch 8505 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8505: avg_loss appended (1.3125)\n", - "Epoch 8505: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8505: accuracy appended (60.00%)\n", - "Epoch 8505: model set back to train mode\n", - "Epoch 8505: model parameters saved\n", - "Epoch 8506 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8506: avg_loss appended (1.3125)\n", - "Epoch 8506: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8506: accuracy appended (60.00%)\n", - "Epoch 8506: model set back to train mode\n", - "Epoch 8506: model parameters saved\n", - "Epoch 8507 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8507: avg_loss appended (1.3125)\n", - "Epoch 8507: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8507: accuracy appended (60.00%)\n", - "Epoch 8507: model set back to train mode\n", - "Epoch 8507: model parameters saved\n", - "Epoch 8508 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8508: avg_loss appended (1.3125)\n", - "Epoch 8508: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8508: accuracy appended (60.00%)\n", - "Epoch 8508: model set back to train mode\n", - "Epoch 8508: model parameters saved\n", - "Epoch 8509 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8509: avg_loss appended (1.3125)\n", - "Epoch 8509: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8509: accuracy appended (60.00%)\n", - "Epoch 8509: model set back to train mode\n", - "Epoch 8509: model parameters saved\n", - "Epoch 8510 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8510: avg_loss appended (1.3125)\n", - "Epoch 8510: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8510: accuracy appended (60.00%)\n", - "Epoch 8510: model set back to train mode\n", - "Epoch 8510: model parameters saved\n", - "Epoch 8511 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8511: avg_loss appended (1.3125)\n", - "Epoch 8511: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8511: accuracy appended (60.00%)\n", - "Epoch 8511: model set back to train mode\n", - "Epoch 8511: model parameters saved\n", - "Epoch 8512 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8512: avg_loss appended (1.3125)\n", - "Epoch 8512: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8512: accuracy appended (60.00%)\n", - "Epoch 8512: model set back to train mode\n", - "Epoch 8512: model parameters saved\n", - "Epoch 8513 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8513: avg_loss appended (1.3125)\n", - "Epoch 8513: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8513: accuracy appended (60.00%)\n", - "Epoch 8513: model set back to train mode\n", - "Epoch 8513: model parameters saved\n", - "Epoch 8514 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8514: avg_loss appended (1.3125)\n", - "Epoch 8514: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8514: accuracy appended (60.00%)\n", - "Epoch 8514: model set back to train mode\n", - "Epoch 8514: model parameters saved\n", - "Epoch 8515 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8515: avg_loss appended (1.3125)\n", - "Epoch 8515: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8515: accuracy appended (60.00%)\n", - "Epoch 8515: model set back to train mode\n", - "Epoch 8515: model parameters saved\n", - "Epoch 8516 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8516: avg_loss appended (1.3125)\n", - "Epoch 8516: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8516: accuracy appended (60.00%)\n", - "Epoch 8516: model set back to train mode\n", - "Epoch 8516: model parameters saved\n", - "Epoch 8517 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8517: avg_loss appended (1.3125)\n", - "Epoch 8517: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8517: accuracy appended (60.00%)\n", - "Epoch 8517: model set back to train mode\n", - "Epoch 8517: model parameters saved\n", - "Epoch 8518 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8518: avg_loss appended (1.3125)\n", - "Epoch 8518: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8518: accuracy appended (60.00%)\n", - "Epoch 8518: model set back to train mode\n", - "Epoch 8518: model parameters saved\n", - "Epoch 8519 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8519: avg_loss appended (1.3125)\n", - "Epoch 8519: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8519: accuracy appended (60.00%)\n", - "Epoch 8519: model set back to train mode\n", - "Epoch 8519: model parameters saved\n", - "Epoch 8520 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8520: avg_loss appended (1.3125)\n", - "Epoch 8520: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8520: accuracy appended (60.00%)\n", - "Epoch 8520: model set back to train mode\n", - "Epoch 8520: model parameters saved\n", - "Epoch 8521 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8521: avg_loss appended (1.3125)\n", - "Epoch 8521: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8521: accuracy appended (60.00%)\n", - "Epoch 8521: model set back to train mode\n", - "Epoch 8521: model parameters saved\n", - "Epoch 8522 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8522: avg_loss appended (1.3125)\n", - "Epoch 8522: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8522: accuracy appended (60.00%)\n", - "Epoch 8522: model set back to train mode\n", - "Epoch 8522: model parameters saved\n", - "Epoch 8523 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8523: avg_loss appended (1.3125)\n", - "Epoch 8523: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8523: accuracy appended (60.00%)\n", - "Epoch 8523: model set back to train mode\n", - "Epoch 8523: model parameters saved\n", - "Epoch 8524 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8524: avg_loss appended (1.3125)\n", - "Epoch 8524: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8524: accuracy appended (60.00%)\n", - "Epoch 8524: model set back to train mode\n", - "Epoch 8524: model parameters saved\n", - "Epoch 8525 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8525: avg_loss appended (1.3125)\n", - "Epoch 8525: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8525: accuracy appended (60.00%)\n", - "Epoch 8525: model set back to train mode\n", - "Epoch 8525: model parameters saved\n", - "Epoch 8526 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8526: avg_loss appended (1.3125)\n", - "Epoch 8526: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8526: accuracy appended (60.00%)\n", - "Epoch 8526: model set back to train mode\n", - "Epoch 8526: model parameters saved\n", - "Epoch 8527 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8527: avg_loss appended (1.3125)\n", - "Epoch 8527: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8527: accuracy appended (60.00%)\n", - "Epoch 8527: model set back to train mode\n", - "Epoch 8527: model parameters saved\n", - "Epoch 8528 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8528: avg_loss appended (1.3125)\n", - "Epoch 8528: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8528: accuracy appended (60.00%)\n", - "Epoch 8528: model set back to train mode\n", - "Epoch 8528: model parameters saved\n", - "Epoch 8529 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8529: avg_loss appended (1.3125)\n", - "Epoch 8529: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8529: accuracy appended (60.00%)\n", - "Epoch 8529: model set back to train mode\n", - "Epoch 8529: model parameters saved\n", - "Epoch 8530 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8530: avg_loss appended (1.3125)\n", - "Epoch 8530: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8530: accuracy appended (60.00%)\n", - "Epoch 8530: model set back to train mode\n", - "Epoch 8530: model parameters saved\n", - "Epoch 8531 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8531: avg_loss appended (1.3125)\n", - "Epoch 8531: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8531: accuracy appended (60.00%)\n", - "Epoch 8531: model set back to train mode\n", - "Epoch 8531: model parameters saved\n", - "Epoch 8532 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8532: avg_loss appended (1.3125)\n", - "Epoch 8532: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8532: accuracy appended (60.00%)\n", - "Epoch 8532: model set back to train mode\n", - "Epoch 8532: model parameters saved\n", - "Epoch 8533 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8533: avg_loss appended (1.3125)\n", - "Epoch 8533: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8533: accuracy appended (60.00%)\n", - "Epoch 8533: model set back to train mode\n", - "Epoch 8533: model parameters saved\n", - "Epoch 8534 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8534: avg_loss appended (1.3125)\n", - "Epoch 8534: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8534: accuracy appended (60.00%)\n", - "Epoch 8534: model set back to train mode\n", - "Epoch 8534: model parameters saved\n", - "Epoch 8535 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8535: avg_loss appended (1.3125)\n", - "Epoch 8535: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8535: accuracy appended (60.00%)\n", - "Epoch 8535: model set back to train mode\n", - "Epoch 8535: model parameters saved\n", - "Epoch 8536 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8536: avg_loss appended (1.3125)\n", - "Epoch 8536: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8536: accuracy appended (60.00%)\n", - "Epoch 8536: model set back to train mode\n", - "Epoch 8536: model parameters saved\n", - "Epoch 8537 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8537: avg_loss appended (1.3125)\n", - "Epoch 8537: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8537: accuracy appended (60.00%)\n", - "Epoch 8537: model set back to train mode\n", - "Epoch 8537: model parameters saved\n", - "Epoch 8538 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8538: avg_loss appended (1.3125)\n", - "Epoch 8538: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8538: accuracy appended (60.00%)\n", - "Epoch 8538: model set back to train mode\n", - "Epoch 8538: model parameters saved\n", - "Epoch 8539 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8539: avg_loss appended (1.3125)\n", - "Epoch 8539: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8539: accuracy appended (60.00%)\n", - "Epoch 8539: model set back to train mode\n", - "Epoch 8539: model parameters saved\n", - "Epoch 8540 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8540: avg_loss appended (1.3125)\n", - "Epoch 8540: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8540: accuracy appended (60.00%)\n", - "Epoch 8540: model set back to train mode\n", - "Epoch 8540: model parameters saved\n", - "Epoch 8541 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8541: avg_loss appended (1.3125)\n", - "Epoch 8541: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8541: accuracy appended (60.00%)\n", - "Epoch 8541: model set back to train mode\n", - "Epoch 8541: model parameters saved\n", - "Epoch 8542 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8542: avg_loss appended (1.3125)\n", - "Epoch 8542: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8542: accuracy appended (60.00%)\n", - "Epoch 8542: model set back to train mode\n", - "Epoch 8542: model parameters saved\n", - "Epoch 8543 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8543: avg_loss appended (1.3125)\n", - "Epoch 8543: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8543: accuracy appended (60.00%)\n", - "Epoch 8543: model set back to train mode\n", - "Epoch 8543: model parameters saved\n", - "Epoch 8544 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8544: avg_loss appended (1.3125)\n", - "Epoch 8544: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8544: accuracy appended (60.00%)\n", - "Epoch 8544: model set back to train mode\n", - "Epoch 8544: model parameters saved\n", - "Epoch 8545 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8545: avg_loss appended (1.3125)\n", - "Epoch 8545: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8545: accuracy appended (60.00%)\n", - "Epoch 8545: model set back to train mode\n", - "Epoch 8545: model parameters saved\n", - "Epoch 8546 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8546: avg_loss appended (1.3125)\n", - "Epoch 8546: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8546: accuracy appended (60.00%)\n", - "Epoch 8546: model set back to train mode\n", - "Epoch 8546: model parameters saved\n", - "Epoch 8547 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8547: avg_loss appended (1.3125)\n", - "Epoch 8547: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8547: accuracy appended (60.00%)\n", - "Epoch 8547: model set back to train mode\n", - "Epoch 8547: model parameters saved\n", - "Epoch 8548 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8548: avg_loss appended (1.3125)\n", - "Epoch 8548: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8548: accuracy appended (60.00%)\n", - "Epoch 8548: model set back to train mode\n", - "Epoch 8548: model parameters saved\n", - "Epoch 8549 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8549: avg_loss appended (1.3125)\n", - "Epoch 8549: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8549: accuracy appended (60.00%)\n", - "Epoch 8549: model set back to train mode\n", - "Epoch 8549: model parameters saved\n", - "Epoch 8550 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8550: avg_loss appended (1.3125)\n", - "Epoch 8550: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8550: accuracy appended (60.00%)\n", - "Epoch 8550: model set back to train mode\n", - "Epoch 8550: model parameters saved\n", - "Epoch 8551 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8551: avg_loss appended (1.3125)\n", - "Epoch 8551: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8551: accuracy appended (60.00%)\n", - "Epoch 8551: model set back to train mode\n", - "Epoch 8551: model parameters saved\n", - "Epoch 8552 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8552: avg_loss appended (1.3125)\n", - "Epoch 8552: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8552: accuracy appended (60.00%)\n", - "Epoch 8552: model set back to train mode\n", - "Epoch 8552: model parameters saved\n", - "Epoch 8553 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8553: avg_loss appended (1.3125)\n", - "Epoch 8553: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8553: accuracy appended (60.00%)\n", - "Epoch 8553: model set back to train mode\n", - "Epoch 8553: model parameters saved\n", - "Epoch 8554 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8554: avg_loss appended (1.3125)\n", - "Epoch 8554: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8554: accuracy appended (60.00%)\n", - "Epoch 8554: model set back to train mode\n", - "Epoch 8554: model parameters saved\n", - "Epoch 8555 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8555: avg_loss appended (1.3125)\n", - "Epoch 8555: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8555: accuracy appended (60.00%)\n", - "Epoch 8555: model set back to train mode\n", - "Epoch 8555: model parameters saved\n", - "Epoch 8556 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8556: avg_loss appended (1.3125)\n", - "Epoch 8556: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8556: accuracy appended (60.00%)\n", - "Epoch 8556: model set back to train mode\n", - "Epoch 8556: model parameters saved\n", - "Epoch 8557 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8557: avg_loss appended (1.3125)\n", - "Epoch 8557: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8557: accuracy appended (60.00%)\n", - "Epoch 8557: model set back to train mode\n", - "Epoch 8557: model parameters saved\n", - "Epoch 8558 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8558: avg_loss appended (1.3125)\n", - "Epoch 8558: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8558: accuracy appended (60.00%)\n", - "Epoch 8558: model set back to train mode\n", - "Epoch 8558: model parameters saved\n", - "Epoch 8559 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8559: avg_loss appended (1.3125)\n", - "Epoch 8559: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8559: accuracy appended (60.00%)\n", - "Epoch 8559: model set back to train mode\n", - "Epoch 8559: model parameters saved\n", - "Epoch 8560 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8560: avg_loss appended (1.3125)\n", - "Epoch 8560: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8560: accuracy appended (60.00%)\n", - "Epoch 8560: model set back to train mode\n", - "Epoch 8560: model parameters saved\n", - "Epoch 8561 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8561: avg_loss appended (1.3125)\n", - "Epoch 8561: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8561: accuracy appended (60.00%)\n", - "Epoch 8561: model set back to train mode\n", - "Epoch 8561: model parameters saved\n", - "Epoch 8562 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8562: avg_loss appended (1.3125)\n", - "Epoch 8562: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8562: accuracy appended (60.00%)\n", - "Epoch 8562: model set back to train mode\n", - "Epoch 8562: model parameters saved\n", - "Epoch 8563 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8563: avg_loss appended (1.3125)\n", - "Epoch 8563: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8563: accuracy appended (60.00%)\n", - "Epoch 8563: model set back to train mode\n", - "Epoch 8563: model parameters saved\n", - "Epoch 8564 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8564: avg_loss appended (1.3125)\n", - "Epoch 8564: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8564: accuracy appended (60.00%)\n", - "Epoch 8564: model set back to train mode\n", - "Epoch 8564: model parameters saved\n", - "Epoch 8565 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8565: avg_loss appended (1.3125)\n", - "Epoch 8565: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8565: accuracy appended (60.00%)\n", - "Epoch 8565: model set back to train mode\n", - "Epoch 8565: model parameters saved\n", - "Epoch 8566 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8566: avg_loss appended (1.3125)\n", - "Epoch 8566: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8566: accuracy appended (60.00%)\n", - "Epoch 8566: model set back to train mode\n", - "Epoch 8566: model parameters saved\n", - "Epoch 8567 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8567: avg_loss appended (1.3125)\n", - "Epoch 8567: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8567: accuracy appended (60.00%)\n", - "Epoch 8567: model set back to train mode\n", - "Epoch 8567: model parameters saved\n", - "Epoch 8568 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8568: avg_loss appended (1.3125)\n", - "Epoch 8568: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8568: accuracy appended (60.00%)\n", - "Epoch 8568: model set back to train mode\n", - "Epoch 8568: model parameters saved\n", - "Epoch 8569 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8569: avg_loss appended (1.3125)\n", - "Epoch 8569: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8569: accuracy appended (60.00%)\n", - "Epoch 8569: model set back to train mode\n", - "Epoch 8569: model parameters saved\n", - "Epoch 8570 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8570: avg_loss appended (1.3125)\n", - "Epoch 8570: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8570: accuracy appended (60.00%)\n", - "Epoch 8570: model set back to train mode\n", - "Epoch 8570: model parameters saved\n", - "Epoch 8571 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8571: avg_loss appended (1.3125)\n", - "Epoch 8571: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8571: accuracy appended (60.00%)\n", - "Epoch 8571: model set back to train mode\n", - "Epoch 8571: model parameters saved\n", - "Epoch 8572 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8572: avg_loss appended (1.3125)\n", - "Epoch 8572: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8572: accuracy appended (60.00%)\n", - "Epoch 8572: model set back to train mode\n", - "Epoch 8572: model parameters saved\n", - "Epoch 8573 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8573: avg_loss appended (1.3125)\n", - "Epoch 8573: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8573: accuracy appended (60.00%)\n", - "Epoch 8573: model set back to train mode\n", - "Epoch 8573: model parameters saved\n", - "Epoch 8574 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8574: avg_loss appended (1.3125)\n", - "Epoch 8574: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8574: accuracy appended (60.00%)\n", - "Epoch 8574: model set back to train mode\n", - "Epoch 8574: model parameters saved\n", - "Epoch 8575 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8575: avg_loss appended (1.3125)\n", - "Epoch 8575: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8575: accuracy appended (60.00%)\n", - "Epoch 8575: model set back to train mode\n", - "Epoch 8575: model parameters saved\n", - "Epoch 8576 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8576: avg_loss appended (1.3125)\n", - "Epoch 8576: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8576: accuracy appended (60.00%)\n", - "Epoch 8576: model set back to train mode\n", - "Epoch 8576: model parameters saved\n", - "Epoch 8577 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8577: avg_loss appended (1.3125)\n", - "Epoch 8577: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8577: accuracy appended (60.00%)\n", - "Epoch 8577: model set back to train mode\n", - "Epoch 8577: model parameters saved\n", - "Epoch 8578 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8578: avg_loss appended (1.3125)\n", - "Epoch 8578: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8578: accuracy appended (60.00%)\n", - "Epoch 8578: model set back to train mode\n", - "Epoch 8578: model parameters saved\n", - "Epoch 8579 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8579: avg_loss appended (1.3125)\n", - "Epoch 8579: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8579: accuracy appended (60.00%)\n", - "Epoch 8579: model set back to train mode\n", - "Epoch 8579: model parameters saved\n", - "Epoch 8580 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8580: avg_loss appended (1.3125)\n", - "Epoch 8580: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8580: accuracy appended (60.00%)\n", - "Epoch 8580: model set back to train mode\n", - "Epoch 8580: model parameters saved\n", - "Epoch 8581 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8581: avg_loss appended (1.3125)\n", - "Epoch 8581: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8581: accuracy appended (60.00%)\n", - "Epoch 8581: model set back to train mode\n", - "Epoch 8581: model parameters saved\n", - "Epoch 8582 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8582: avg_loss appended (1.3125)\n", - "Epoch 8582: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8582: accuracy appended (60.00%)\n", - "Epoch 8582: model set back to train mode\n", - "Epoch 8582: model parameters saved\n", - "Epoch 8583 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8583: avg_loss appended (1.3125)\n", - "Epoch 8583: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8583: accuracy appended (60.00%)\n", - "Epoch 8583: model set back to train mode\n", - "Epoch 8583: model parameters saved\n", - "Epoch 8584 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8584: avg_loss appended (1.3125)\n", - "Epoch 8584: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8584: accuracy appended (60.00%)\n", - "Epoch 8584: model set back to train mode\n", - "Epoch 8584: model parameters saved\n", - "Epoch 8585 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8585: avg_loss appended (1.3125)\n", - "Epoch 8585: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8585: accuracy appended (60.00%)\n", - "Epoch 8585: model set back to train mode\n", - "Epoch 8585: model parameters saved\n", - "Epoch 8586 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8586: avg_loss appended (1.3125)\n", - "Epoch 8586: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8586: accuracy appended (60.00%)\n", - "Epoch 8586: model set back to train mode\n", - "Epoch 8586: model parameters saved\n", - "Epoch 8587 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8587: avg_loss appended (1.3125)\n", - "Epoch 8587: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8587: accuracy appended (60.00%)\n", - "Epoch 8587: model set back to train mode\n", - "Epoch 8587: model parameters saved\n", - "Epoch 8588 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8588: avg_loss appended (1.3125)\n", - "Epoch 8588: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8588: accuracy appended (60.00%)\n", - "Epoch 8588: model set back to train mode\n", - "Epoch 8588: model parameters saved\n", - "Epoch 8589 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8589: avg_loss appended (1.3125)\n", - "Epoch 8589: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8589: accuracy appended (60.00%)\n", - "Epoch 8589: model set back to train mode\n", - "Epoch 8589: model parameters saved\n", - "Epoch 8590 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8590: avg_loss appended (1.3125)\n", - "Epoch 8590: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8590: accuracy appended (60.00%)\n", - "Epoch 8590: model set back to train mode\n", - "Epoch 8590: model parameters saved\n", - "Epoch 8591 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8591: avg_loss appended (1.3125)\n", - "Epoch 8591: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8591: accuracy appended (60.00%)\n", - "Epoch 8591: model set back to train mode\n", - "Epoch 8591: model parameters saved\n", - "Epoch 8592 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8592: avg_loss appended (1.3125)\n", - "Epoch 8592: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8592: accuracy appended (60.00%)\n", - "Epoch 8592: model set back to train mode\n", - "Epoch 8592: model parameters saved\n", - "Epoch 8593 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8593: avg_loss appended (1.3125)\n", - "Epoch 8593: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8593: accuracy appended (60.00%)\n", - "Epoch 8593: model set back to train mode\n", - "Epoch 8593: model parameters saved\n", - "Epoch 8594 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8594: avg_loss appended (1.3125)\n", - "Epoch 8594: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8594: accuracy appended (60.00%)\n", - "Epoch 8594: model set back to train mode\n", - "Epoch 8594: model parameters saved\n", - "Epoch 8595 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8595: avg_loss appended (1.3125)\n", - "Epoch 8595: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8595: accuracy appended (60.00%)\n", - "Epoch 8595: model set back to train mode\n", - "Epoch 8595: model parameters saved\n", - "Epoch 8596 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8596: avg_loss appended (1.3125)\n", - "Epoch 8596: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8596: accuracy appended (60.00%)\n", - "Epoch 8596: model set back to train mode\n", - "Epoch 8596: model parameters saved\n", - "Epoch 8597 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8597: avg_loss appended (1.3125)\n", - "Epoch 8597: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8597: accuracy appended (60.00%)\n", - "Epoch 8597: model set back to train mode\n", - "Epoch 8597: model parameters saved\n", - "Epoch 8598 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8598: avg_loss appended (1.3125)\n", - "Epoch 8598: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8598: accuracy appended (60.00%)\n", - "Epoch 8598: model set back to train mode\n", - "Epoch 8598: model parameters saved\n", - "Epoch 8599 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8599: avg_loss appended (1.3125)\n", - "Epoch 8599: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8599: accuracy appended (60.00%)\n", - "Epoch 8599: model set back to train mode\n", - "Epoch 8599: model parameters saved\n", - "Epoch 8600 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8600: avg_loss appended (1.3125)\n", - "Epoch 8600: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8600: accuracy appended (60.00%)\n", - "Epoch 8600: model set back to train mode\n", - "Epoch 8600: model parameters saved\n", - "Epoch 8600/10000, Loss: 1.3125, Accuracy: 60.00%\n", - "Epoch 8601 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8601: avg_loss appended (1.3125)\n", - "Epoch 8601: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8601: accuracy appended (60.00%)\n", - "Epoch 8601: model set back to train mode\n", - "Epoch 8601: model parameters saved\n", - "Epoch 8602 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8602: avg_loss appended (1.3125)\n", - "Epoch 8602: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8602: accuracy appended (60.00%)\n", - "Epoch 8602: model set back to train mode\n", - "Epoch 8602: model parameters saved\n", - "Epoch 8603 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8603: avg_loss appended (1.3125)\n", - "Epoch 8603: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8603: accuracy appended (60.00%)\n", - "Epoch 8603: model set back to train mode\n", - "Epoch 8603: model parameters saved\n", - "Epoch 8604 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8604: avg_loss appended (1.3125)\n", - "Epoch 8604: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8604: accuracy appended (60.00%)\n", - "Epoch 8604: model set back to train mode\n", - "Epoch 8604: model parameters saved\n", - "Epoch 8605 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8605: avg_loss appended (1.3125)\n", - "Epoch 8605: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8605: accuracy appended (60.00%)\n", - "Epoch 8605: model set back to train mode\n", - "Epoch 8605: model parameters saved\n", - "Epoch 8606 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8606: avg_loss appended (1.3125)\n", - "Epoch 8606: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8606: accuracy appended (60.00%)\n", - "Epoch 8606: model set back to train mode\n", - "Epoch 8606: model parameters saved\n", - "Epoch 8607 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8607: avg_loss appended (1.3125)\n", - "Epoch 8607: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8607: accuracy appended (60.00%)\n", - "Epoch 8607: model set back to train mode\n", - "Epoch 8607: model parameters saved\n", - "Epoch 8608 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8608: avg_loss appended (1.3125)\n", - "Epoch 8608: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8608: accuracy appended (60.00%)\n", - "Epoch 8608: model set back to train mode\n", - "Epoch 8608: model parameters saved\n", - "Epoch 8609 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8609: avg_loss appended (1.3125)\n", - "Epoch 8609: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8609: accuracy appended (60.00%)\n", - "Epoch 8609: model set back to train mode\n", - "Epoch 8609: model parameters saved\n", - "Epoch 8610 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8610: avg_loss appended (1.3125)\n", - "Epoch 8610: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8610: accuracy appended (60.00%)\n", - "Epoch 8610: model set back to train mode\n", - "Epoch 8610: model parameters saved\n", - "Epoch 8611 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8611: avg_loss appended (1.3125)\n", - "Epoch 8611: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8611: accuracy appended (60.00%)\n", - "Epoch 8611: model set back to train mode\n", - "Epoch 8611: model parameters saved\n", - "Epoch 8612 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8612: avg_loss appended (1.3125)\n", - "Epoch 8612: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8612: accuracy appended (60.00%)\n", - "Epoch 8612: model set back to train mode\n", - "Epoch 8612: model parameters saved\n", - "Epoch 8613 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8613: avg_loss appended (1.3125)\n", - "Epoch 8613: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8613: accuracy appended (60.00%)\n", - "Epoch 8613: model set back to train mode\n", - "Epoch 8613: model parameters saved\n", - "Epoch 8614 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8614: avg_loss appended (1.3125)\n", - "Epoch 8614: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8614: accuracy appended (60.00%)\n", - "Epoch 8614: model set back to train mode\n", - "Epoch 8614: model parameters saved\n", - "Epoch 8615 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8615: avg_loss appended (1.3125)\n", - "Epoch 8615: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8615: accuracy appended (60.00%)\n", - "Epoch 8615: model set back to train mode\n", - "Epoch 8615: model parameters saved\n", - "Epoch 8616 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8616: avg_loss appended (1.3125)\n", - "Epoch 8616: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8616: accuracy appended (60.00%)\n", - "Epoch 8616: model set back to train mode\n", - "Epoch 8616: model parameters saved\n", - "Epoch 8617 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8617: avg_loss appended (1.3125)\n", - "Epoch 8617: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8617: accuracy appended (60.00%)\n", - "Epoch 8617: model set back to train mode\n", - "Epoch 8617: model parameters saved\n", - "Epoch 8618 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8618: avg_loss appended (1.3125)\n", - "Epoch 8618: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8618: accuracy appended (60.00%)\n", - "Epoch 8618: model set back to train mode\n", - "Epoch 8618: model parameters saved\n", - "Epoch 8619 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8619: avg_loss appended (1.3125)\n", - "Epoch 8619: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8619: accuracy appended (60.00%)\n", - "Epoch 8619: model set back to train mode\n", - "Epoch 8619: model parameters saved\n", - "Epoch 8620 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8620: avg_loss appended (1.3125)\n", - "Epoch 8620: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8620: accuracy appended (60.00%)\n", - "Epoch 8620: model set back to train mode\n", - "Epoch 8620: model parameters saved\n", - "Epoch 8621 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8621: avg_loss appended (1.3125)\n", - "Epoch 8621: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8621: accuracy appended (60.00%)\n", - "Epoch 8621: model set back to train mode\n", - "Epoch 8621: model parameters saved\n", - "Epoch 8622 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8622: avg_loss appended (1.3125)\n", - "Epoch 8622: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8622: accuracy appended (60.00%)\n", - "Epoch 8622: model set back to train mode\n", - "Epoch 8622: model parameters saved\n", - "Epoch 8623 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8623: avg_loss appended (1.3125)\n", - "Epoch 8623: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8623: accuracy appended (60.00%)\n", - "Epoch 8623: model set back to train mode\n", - "Epoch 8623: model parameters saved\n", - "Epoch 8624 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8624: avg_loss appended (1.3125)\n", - "Epoch 8624: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8624: accuracy appended (60.00%)\n", - "Epoch 8624: model set back to train mode\n", - "Epoch 8624: model parameters saved\n", - "Epoch 8625 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8625: avg_loss appended (1.3125)\n", - "Epoch 8625: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8625: accuracy appended (60.00%)\n", - "Epoch 8625: model set back to train mode\n", - "Epoch 8625: model parameters saved\n", - "Epoch 8626 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8626: avg_loss appended (1.3125)\n", - "Epoch 8626: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8626: accuracy appended (60.00%)\n", - "Epoch 8626: model set back to train mode\n", - "Epoch 8626: model parameters saved\n", - "Epoch 8627 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8627: avg_loss appended (1.3125)\n", - "Epoch 8627: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8627: accuracy appended (60.00%)\n", - "Epoch 8627: model set back to train mode\n", - "Epoch 8627: model parameters saved\n", - "Epoch 8628 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8628: avg_loss appended (1.3125)\n", - "Epoch 8628: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8628: accuracy appended (60.00%)\n", - "Epoch 8628: model set back to train mode\n", - "Epoch 8628: model parameters saved\n", - "Epoch 8629 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8629: avg_loss appended (1.3125)\n", - "Epoch 8629: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8629: accuracy appended (60.00%)\n", - "Epoch 8629: model set back to train mode\n", - "Epoch 8629: model parameters saved\n", - "Epoch 8630 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8630: avg_loss appended (1.3125)\n", - "Epoch 8630: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8630: accuracy appended (60.00%)\n", - "Epoch 8630: model set back to train mode\n", - "Epoch 8630: model parameters saved\n", - "Epoch 8631 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8631: avg_loss appended (1.3125)\n", - "Epoch 8631: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8631: accuracy appended (60.00%)\n", - "Epoch 8631: model set back to train mode\n", - "Epoch 8631: model parameters saved\n", - "Epoch 8632 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8632: avg_loss appended (1.3125)\n", - "Epoch 8632: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8632: accuracy appended (60.00%)\n", - "Epoch 8632: model set back to train mode\n", - "Epoch 8632: model parameters saved\n", - "Epoch 8633 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8633: avg_loss appended (1.3125)\n", - "Epoch 8633: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8633: accuracy appended (60.00%)\n", - "Epoch 8633: model set back to train mode\n", - "Epoch 8633: model parameters saved\n", - "Epoch 8634 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8634: avg_loss appended (1.3125)\n", - "Epoch 8634: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8634: accuracy appended (60.00%)\n", - "Epoch 8634: model set back to train mode\n", - "Epoch 8634: model parameters saved\n", - "Epoch 8635 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8635: avg_loss appended (1.3125)\n", - "Epoch 8635: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8635: accuracy appended (60.00%)\n", - "Epoch 8635: model set back to train mode\n", - "Epoch 8635: model parameters saved\n", - "Epoch 8636 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8636: avg_loss appended (1.3125)\n", - "Epoch 8636: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8636: accuracy appended (60.00%)\n", - "Epoch 8636: model set back to train mode\n", - "Epoch 8636: model parameters saved\n", - "Epoch 8637 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8637: avg_loss appended (1.3125)\n", - "Epoch 8637: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8637: accuracy appended (60.00%)\n", - "Epoch 8637: model set back to train mode\n", - "Epoch 8637: model parameters saved\n", - "Epoch 8638 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8638: avg_loss appended (1.3125)\n", - "Epoch 8638: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8638: accuracy appended (60.00%)\n", - "Epoch 8638: model set back to train mode\n", - "Epoch 8638: model parameters saved\n", - "Epoch 8639 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8639: avg_loss appended (1.3125)\n", - "Epoch 8639: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8639: accuracy appended (60.00%)\n", - "Epoch 8639: model set back to train mode\n", - "Epoch 8639: model parameters saved\n", - "Epoch 8640 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8640: avg_loss appended (1.3125)\n", - "Epoch 8640: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8640: accuracy appended (60.00%)\n", - "Epoch 8640: model set back to train mode\n", - "Epoch 8640: model parameters saved\n", - "Epoch 8641 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8641: avg_loss appended (1.3125)\n", - "Epoch 8641: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8641: accuracy appended (60.00%)\n", - "Epoch 8641: model set back to train mode\n", - "Epoch 8641: model parameters saved\n", - "Epoch 8642 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8642: avg_loss appended (1.3125)\n", - "Epoch 8642: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8642: accuracy appended (60.00%)\n", - "Epoch 8642: model set back to train mode\n", - "Epoch 8642: model parameters saved\n", - "Epoch 8643 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8643: avg_loss appended (1.3125)\n", - "Epoch 8643: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8643: accuracy appended (60.00%)\n", - "Epoch 8643: model set back to train mode\n", - "Epoch 8643: model parameters saved\n", - "Epoch 8644 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8644: avg_loss appended (1.3125)\n", - "Epoch 8644: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8644: accuracy appended (60.00%)\n", - "Epoch 8644: model set back to train mode\n", - "Epoch 8644: model parameters saved\n", - "Epoch 8645 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8645: avg_loss appended (1.3125)\n", - "Epoch 8645: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8645: accuracy appended (60.00%)\n", - "Epoch 8645: model set back to train mode\n", - "Epoch 8645: model parameters saved\n", - "Epoch 8646 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8646: avg_loss appended (1.3125)\n", - "Epoch 8646: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8646: accuracy appended (60.00%)\n", - "Epoch 8646: model set back to train mode\n", - "Epoch 8646: model parameters saved\n", - "Epoch 8647 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8647: avg_loss appended (1.3125)\n", - "Epoch 8647: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8647: accuracy appended (60.00%)\n", - "Epoch 8647: model set back to train mode\n", - "Epoch 8647: model parameters saved\n", - "Epoch 8648 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8648: avg_loss appended (1.3125)\n", - "Epoch 8648: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8648: accuracy appended (60.00%)\n", - "Epoch 8648: model set back to train mode\n", - "Epoch 8648: model parameters saved\n", - "Epoch 8649 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8649: avg_loss appended (1.3125)\n", - "Epoch 8649: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8649: accuracy appended (60.00%)\n", - "Epoch 8649: model set back to train mode\n", - "Epoch 8649: model parameters saved\n", - "Epoch 8650 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8650: avg_loss appended (1.3125)\n", - "Epoch 8650: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8650: accuracy appended (60.00%)\n", - "Epoch 8650: model set back to train mode\n", - "Epoch 8650: model parameters saved\n", - "Epoch 8651 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8651: avg_loss appended (1.3125)\n", - "Epoch 8651: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8651: accuracy appended (60.00%)\n", - "Epoch 8651: model set back to train mode\n", - "Epoch 8651: model parameters saved\n", - "Epoch 8652 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8652: avg_loss appended (1.3125)\n", - "Epoch 8652: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8652: accuracy appended (60.00%)\n", - "Epoch 8652: model set back to train mode\n", - "Epoch 8652: model parameters saved\n", - "Epoch 8653 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8653: avg_loss appended (1.3125)\n", - "Epoch 8653: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8653: accuracy appended (60.00%)\n", - "Epoch 8653: model set back to train mode\n", - "Epoch 8653: model parameters saved\n", - "Epoch 8654 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8654: avg_loss appended (1.3125)\n", - "Epoch 8654: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8654: accuracy appended (60.00%)\n", - "Epoch 8654: model set back to train mode\n", - "Epoch 8654: model parameters saved\n", - "Epoch 8655 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8655: avg_loss appended (1.3125)\n", - "Epoch 8655: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8655: accuracy appended (60.00%)\n", - "Epoch 8655: model set back to train mode\n", - "Epoch 8655: model parameters saved\n", - "Epoch 8656 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8656: avg_loss appended (1.3125)\n", - "Epoch 8656: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8656: accuracy appended (60.00%)\n", - "Epoch 8656: model set back to train mode\n", - "Epoch 8656: model parameters saved\n", - "Epoch 8657 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8657: avg_loss appended (1.3125)\n", - "Epoch 8657: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8657: accuracy appended (60.00%)\n", - "Epoch 8657: model set back to train mode\n", - "Epoch 8657: model parameters saved\n", - "Epoch 8658 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8658: avg_loss appended (1.3125)\n", - "Epoch 8658: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8658: accuracy appended (60.00%)\n", - "Epoch 8658: model set back to train mode\n", - "Epoch 8658: model parameters saved\n", - "Epoch 8659 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8659: avg_loss appended (1.3125)\n", - "Epoch 8659: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8659: accuracy appended (60.00%)\n", - "Epoch 8659: model set back to train mode\n", - "Epoch 8659: model parameters saved\n", - "Epoch 8660 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8660: avg_loss appended (1.3125)\n", - "Epoch 8660: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8660: accuracy appended (60.00%)\n", - "Epoch 8660: model set back to train mode\n", - "Epoch 8660: model parameters saved\n", - "Epoch 8661 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8661: avg_loss appended (1.3125)\n", - "Epoch 8661: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8661: accuracy appended (60.00%)\n", - "Epoch 8661: model set back to train mode\n", - "Epoch 8661: model parameters saved\n", - "Epoch 8662 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8662: avg_loss appended (1.3125)\n", - "Epoch 8662: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8662: accuracy appended (60.00%)\n", - "Epoch 8662: model set back to train mode\n", - "Epoch 8662: model parameters saved\n", - "Epoch 8663 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8663: avg_loss appended (1.3125)\n", - "Epoch 8663: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8663: accuracy appended (60.00%)\n", - "Epoch 8663: model set back to train mode\n", - "Epoch 8663: model parameters saved\n", - "Epoch 8664 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8664: avg_loss appended (1.3125)\n", - "Epoch 8664: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8664: accuracy appended (60.00%)\n", - "Epoch 8664: model set back to train mode\n", - "Epoch 8664: model parameters saved\n", - "Epoch 8665 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8665: avg_loss appended (1.3125)\n", - "Epoch 8665: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8665: accuracy appended (60.00%)\n", - "Epoch 8665: model set back to train mode\n", - "Epoch 8665: model parameters saved\n", - "Epoch 8666 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8666: avg_loss appended (1.3125)\n", - "Epoch 8666: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8666: accuracy appended (60.00%)\n", - "Epoch 8666: model set back to train mode\n", - "Epoch 8666: model parameters saved\n", - "Epoch 8667 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8667: avg_loss appended (1.3125)\n", - "Epoch 8667: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8667: accuracy appended (60.00%)\n", - "Epoch 8667: model set back to train mode\n", - "Epoch 8667: model parameters saved\n", - "Epoch 8668 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8668: avg_loss appended (1.3125)\n", - "Epoch 8668: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8668: accuracy appended (60.00%)\n", - "Epoch 8668: model set back to train mode\n", - "Epoch 8668: model parameters saved\n", - "Epoch 8669 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8669: avg_loss appended (1.3125)\n", - "Epoch 8669: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8669: accuracy appended (60.00%)\n", - "Epoch 8669: model set back to train mode\n", - "Epoch 8669: model parameters saved\n", - "Epoch 8670 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8670: avg_loss appended (1.3125)\n", - "Epoch 8670: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8670: accuracy appended (60.00%)\n", - "Epoch 8670: model set back to train mode\n", - "Epoch 8670: model parameters saved\n", - "Epoch 8671 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8671: avg_loss appended (1.3125)\n", - "Epoch 8671: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8671: accuracy appended (60.00%)\n", - "Epoch 8671: model set back to train mode\n", - "Epoch 8671: model parameters saved\n", - "Epoch 8672 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8672: avg_loss appended (1.3125)\n", - "Epoch 8672: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8672: accuracy appended (60.00%)\n", - "Epoch 8672: model set back to train mode\n", - "Epoch 8672: model parameters saved\n", - "Epoch 8673 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8673: avg_loss appended (1.3125)\n", - "Epoch 8673: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8673: accuracy appended (60.00%)\n", - "Epoch 8673: model set back to train mode\n", - "Epoch 8673: model parameters saved\n", - "Epoch 8674 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8674: avg_loss appended (1.3125)\n", - "Epoch 8674: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8674: accuracy appended (60.00%)\n", - "Epoch 8674: model set back to train mode\n", - "Epoch 8674: model parameters saved\n", - "Epoch 8675 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8675: avg_loss appended (1.3125)\n", - "Epoch 8675: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8675: accuracy appended (60.00%)\n", - "Epoch 8675: model set back to train mode\n", - "Epoch 8675: model parameters saved\n", - "Epoch 8676 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8676: avg_loss appended (1.3125)\n", - "Epoch 8676: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8676: accuracy appended (60.00%)\n", - "Epoch 8676: model set back to train mode\n", - "Epoch 8676: model parameters saved\n", - "Epoch 8677 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8677: avg_loss appended (1.3125)\n", - "Epoch 8677: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8677: accuracy appended (60.00%)\n", - "Epoch 8677: model set back to train mode\n", - "Epoch 8677: model parameters saved\n", - "Epoch 8678 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8678: avg_loss appended (1.3125)\n", - "Epoch 8678: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8678: accuracy appended (60.00%)\n", - "Epoch 8678: model set back to train mode\n", - "Epoch 8678: model parameters saved\n", - "Epoch 8679 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8679: avg_loss appended (1.3125)\n", - "Epoch 8679: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8679: accuracy appended (60.00%)\n", - "Epoch 8679: model set back to train mode\n", - "Epoch 8679: model parameters saved\n", - "Epoch 8680 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8680: avg_loss appended (1.3125)\n", - "Epoch 8680: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8680: accuracy appended (60.00%)\n", - "Epoch 8680: model set back to train mode\n", - "Epoch 8680: model parameters saved\n", - "Epoch 8681 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8681: avg_loss appended (1.3125)\n", - "Epoch 8681: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8681: accuracy appended (60.00%)\n", - "Epoch 8681: model set back to train mode\n", - "Epoch 8681: model parameters saved\n", - "Epoch 8682 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8682: avg_loss appended (1.3125)\n", - "Epoch 8682: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8682: accuracy appended (60.00%)\n", - "Epoch 8682: model set back to train mode\n", - "Epoch 8682: model parameters saved\n", - "Epoch 8683 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8683: avg_loss appended (1.3125)\n", - "Epoch 8683: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8683: accuracy appended (60.00%)\n", - "Epoch 8683: model set back to train mode\n", - "Epoch 8683: model parameters saved\n", - "Epoch 8684 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8684: avg_loss appended (1.3125)\n", - "Epoch 8684: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8684: accuracy appended (60.00%)\n", - "Epoch 8684: model set back to train mode\n", - "Epoch 8684: model parameters saved\n", - "Epoch 8685 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8685: avg_loss appended (1.3125)\n", - "Epoch 8685: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8685: accuracy appended (60.00%)\n", - "Epoch 8685: model set back to train mode\n", - "Epoch 8685: model parameters saved\n", - "Epoch 8686 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8686: avg_loss appended (1.3125)\n", - "Epoch 8686: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8686: accuracy appended (60.00%)\n", - "Epoch 8686: model set back to train mode\n", - "Epoch 8686: model parameters saved\n", - "Epoch 8687 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8687: avg_loss appended (1.3125)\n", - "Epoch 8687: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8687: accuracy appended (60.00%)\n", - "Epoch 8687: model set back to train mode\n", - "Epoch 8687: model parameters saved\n", - "Epoch 8688 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8688: avg_loss appended (1.3125)\n", - "Epoch 8688: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8688: accuracy appended (60.00%)\n", - "Epoch 8688: model set back to train mode\n", - "Epoch 8688: model parameters saved\n", - "Epoch 8689 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8689: avg_loss appended (1.3125)\n", - "Epoch 8689: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8689: accuracy appended (60.00%)\n", - "Epoch 8689: model set back to train mode\n", - "Epoch 8689: model parameters saved\n", - "Epoch 8690 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8690: avg_loss appended (1.3125)\n", - "Epoch 8690: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8690: accuracy appended (60.00%)\n", - "Epoch 8690: model set back to train mode\n", - "Epoch 8690: model parameters saved\n", - "Epoch 8691 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8691: avg_loss appended (1.3125)\n", - "Epoch 8691: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8691: accuracy appended (60.00%)\n", - "Epoch 8691: model set back to train mode\n", - "Epoch 8691: model parameters saved\n", - "Epoch 8692 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8692: avg_loss appended (1.3125)\n", - "Epoch 8692: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8692: accuracy appended (60.00%)\n", - "Epoch 8692: model set back to train mode\n", - "Epoch 8692: model parameters saved\n", - "Epoch 8693 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8693: avg_loss appended (1.3125)\n", - "Epoch 8693: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8693: accuracy appended (60.00%)\n", - "Epoch 8693: model set back to train mode\n", - "Epoch 8693: model parameters saved\n", - "Epoch 8694 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8694: avg_loss appended (1.3125)\n", - "Epoch 8694: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8694: accuracy appended (60.00%)\n", - "Epoch 8694: model set back to train mode\n", - "Epoch 8694: model parameters saved\n", - "Epoch 8695 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8695: avg_loss appended (1.3125)\n", - "Epoch 8695: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8695: accuracy appended (60.00%)\n", - "Epoch 8695: model set back to train mode\n", - "Epoch 8695: model parameters saved\n", - "Epoch 8696 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8696: avg_loss appended (1.3125)\n", - "Epoch 8696: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8696: accuracy appended (60.00%)\n", - "Epoch 8696: model set back to train mode\n", - "Epoch 8696: model parameters saved\n", - "Epoch 8697 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8697: avg_loss appended (1.3125)\n", - "Epoch 8697: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8697: accuracy appended (60.00%)\n", - "Epoch 8697: model set back to train mode\n", - "Epoch 8697: model parameters saved\n", - "Epoch 8698 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8698: avg_loss appended (1.3125)\n", - "Epoch 8698: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8698: accuracy appended (60.00%)\n", - "Epoch 8698: model set back to train mode\n", - "Epoch 8698: model parameters saved\n", - "Epoch 8699 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8699: avg_loss appended (1.3125)\n", - "Epoch 8699: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8699: accuracy appended (60.00%)\n", - "Epoch 8699: model set back to train mode\n", - "Epoch 8699: model parameters saved\n", - "Epoch 8700 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8700: avg_loss appended (1.3125)\n", - "Epoch 8700: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8700: accuracy appended (60.00%)\n", - "Epoch 8700: model set back to train mode\n", - "Epoch 8700: model parameters saved\n", - "Epoch 8700/10000, Loss: 1.3125, Accuracy: 60.00%\n", - "Epoch 8701 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8701: avg_loss appended (1.3125)\n", - "Epoch 8701: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8701: accuracy appended (60.00%)\n", - "Epoch 8701: model set back to train mode\n", - "Epoch 8701: model parameters saved\n", - "Epoch 8702 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8702: avg_loss appended (1.3125)\n", - "Epoch 8702: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8702: accuracy appended (60.00%)\n", - "Epoch 8702: model set back to train mode\n", - "Epoch 8702: model parameters saved\n", - "Epoch 8703 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8703: avg_loss appended (1.3125)\n", - "Epoch 8703: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8703: accuracy appended (60.00%)\n", - "Epoch 8703: model set back to train mode\n", - "Epoch 8703: model parameters saved\n", - "Epoch 8704 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8704: avg_loss appended (1.3125)\n", - "Epoch 8704: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8704: accuracy appended (60.00%)\n", - "Epoch 8704: model set back to train mode\n", - "Epoch 8704: model parameters saved\n", - "Epoch 8705 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8705: avg_loss appended (1.3125)\n", - "Epoch 8705: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8705: accuracy appended (60.00%)\n", - "Epoch 8705: model set back to train mode\n", - "Epoch 8705: model parameters saved\n", - "Epoch 8706 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8706: avg_loss appended (1.3125)\n", - "Epoch 8706: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8706: accuracy appended (60.00%)\n", - "Epoch 8706: model set back to train mode\n", - "Epoch 8706: model parameters saved\n", - "Epoch 8707 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8707: avg_loss appended (1.3125)\n", - "Epoch 8707: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8707: accuracy appended (60.00%)\n", - "Epoch 8707: model set back to train mode\n", - "Epoch 8707: model parameters saved\n", - "Epoch 8708 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8708: avg_loss appended (1.3125)\n", - "Epoch 8708: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8708: accuracy appended (60.00%)\n", - "Epoch 8708: model set back to train mode\n", - "Epoch 8708: model parameters saved\n", - "Epoch 8709 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8709: avg_loss appended (1.3125)\n", - "Epoch 8709: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8709: accuracy appended (60.00%)\n", - "Epoch 8709: model set back to train mode\n", - "Epoch 8709: model parameters saved\n", - "Epoch 8710 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8710: avg_loss appended (1.3125)\n", - "Epoch 8710: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8710: accuracy appended (60.00%)\n", - "Epoch 8710: model set back to train mode\n", - "Epoch 8710: model parameters saved\n", - "Epoch 8711 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8711: avg_loss appended (1.3125)\n", - "Epoch 8711: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8711: accuracy appended (60.00%)\n", - "Epoch 8711: model set back to train mode\n", - "Epoch 8711: model parameters saved\n", - "Epoch 8712 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8712: avg_loss appended (1.3125)\n", - "Epoch 8712: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8712: accuracy appended (60.00%)\n", - "Epoch 8712: model set back to train mode\n", - "Epoch 8712: model parameters saved\n", - "Epoch 8713 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8713: avg_loss appended (1.3125)\n", - "Epoch 8713: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8713: accuracy appended (60.00%)\n", - "Epoch 8713: model set back to train mode\n", - "Epoch 8713: model parameters saved\n", - "Epoch 8714 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8714: avg_loss appended (1.3125)\n", - "Epoch 8714: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8714: accuracy appended (60.00%)\n", - "Epoch 8714: model set back to train mode\n", - "Epoch 8714: model parameters saved\n", - "Epoch 8715 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8715: avg_loss appended (1.3125)\n", - "Epoch 8715: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8715: accuracy appended (60.00%)\n", - "Epoch 8715: model set back to train mode\n", - "Epoch 8715: model parameters saved\n", - "Epoch 8716 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8716: avg_loss appended (1.3125)\n", - "Epoch 8716: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8716: accuracy appended (60.00%)\n", - "Epoch 8716: model set back to train mode\n", - "Epoch 8716: model parameters saved\n", - "Epoch 8717 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8717: avg_loss appended (1.3125)\n", - "Epoch 8717: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8717: accuracy appended (60.00%)\n", - "Epoch 8717: model set back to train mode\n", - "Epoch 8717: model parameters saved\n", - "Epoch 8718 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8718: avg_loss appended (1.3125)\n", - "Epoch 8718: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8718: accuracy appended (60.00%)\n", - "Epoch 8718: model set back to train mode\n", - "Epoch 8718: model parameters saved\n", - "Epoch 8719 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8719: avg_loss appended (1.3125)\n", - "Epoch 8719: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8719: accuracy appended (60.00%)\n", - "Epoch 8719: model set back to train mode\n", - "Epoch 8719: model parameters saved\n", - "Epoch 8720 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8720: avg_loss appended (1.3125)\n", - "Epoch 8720: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8720: accuracy appended (60.00%)\n", - "Epoch 8720: model set back to train mode\n", - "Epoch 8720: model parameters saved\n", - "Epoch 8721 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8721: avg_loss appended (1.3125)\n", - "Epoch 8721: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8721: accuracy appended (60.00%)\n", - "Epoch 8721: model set back to train mode\n", - "Epoch 8721: model parameters saved\n", - "Epoch 8722 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8722: avg_loss appended (1.3125)\n", - "Epoch 8722: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8722: accuracy appended (60.00%)\n", - "Epoch 8722: model set back to train mode\n", - "Epoch 8722: model parameters saved\n", - "Epoch 8723 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8723: avg_loss appended (1.3125)\n", - "Epoch 8723: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8723: accuracy appended (60.00%)\n", - "Epoch 8723: model set back to train mode\n", - "Epoch 8723: model parameters saved\n", - "Epoch 8724 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8724: avg_loss appended (1.3125)\n", - "Epoch 8724: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8724: accuracy appended (60.00%)\n", - "Epoch 8724: model set back to train mode\n", - "Epoch 8724: model parameters saved\n", - "Epoch 8725 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8725: avg_loss appended (1.3125)\n", - "Epoch 8725: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8725: accuracy appended (60.00%)\n", - "Epoch 8725: model set back to train mode\n", - "Epoch 8725: model parameters saved\n", - "Epoch 8726 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8726: avg_loss appended (1.3125)\n", - "Epoch 8726: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8726: accuracy appended (60.00%)\n", - "Epoch 8726: model set back to train mode\n", - "Epoch 8726: model parameters saved\n", - "Epoch 8727 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8727: avg_loss appended (1.3125)\n", - "Epoch 8727: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8727: accuracy appended (60.00%)\n", - "Epoch 8727: model set back to train mode\n", - "Epoch 8727: model parameters saved\n", - "Epoch 8728 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8728: avg_loss appended (1.3125)\n", - "Epoch 8728: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8728: accuracy appended (60.00%)\n", - "Epoch 8728: model set back to train mode\n", - "Epoch 8728: model parameters saved\n", - "Epoch 8729 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8729: avg_loss appended (1.3125)\n", - "Epoch 8729: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8729: accuracy appended (60.00%)\n", - "Epoch 8729: model set back to train mode\n", - "Epoch 8729: model parameters saved\n", - "Epoch 8730 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8730: avg_loss appended (1.3125)\n", - "Epoch 8730: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8730: accuracy appended (60.00%)\n", - "Epoch 8730: model set back to train mode\n", - "Epoch 8730: model parameters saved\n", - "Epoch 8731 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8731: avg_loss appended (1.3125)\n", - "Epoch 8731: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8731: accuracy appended (60.00%)\n", - "Epoch 8731: model set back to train mode\n", - "Epoch 8731: model parameters saved\n", - "Epoch 8732 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8732: avg_loss appended (1.3125)\n", - "Epoch 8732: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8732: accuracy appended (60.00%)\n", - "Epoch 8732: model set back to train mode\n", - "Epoch 8732: model parameters saved\n", - "Epoch 8733 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8733: avg_loss appended (1.3125)\n", - "Epoch 8733: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8733: accuracy appended (60.00%)\n", - "Epoch 8733: model set back to train mode\n", - "Epoch 8733: model parameters saved\n", - "Epoch 8734 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8734: avg_loss appended (1.3125)\n", - "Epoch 8734: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8734: accuracy appended (60.00%)\n", - "Epoch 8734: model set back to train mode\n", - "Epoch 8734: model parameters saved\n", - "Epoch 8735 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8735: avg_loss appended (1.3125)\n", - "Epoch 8735: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8735: accuracy appended (60.00%)\n", - "Epoch 8735: model set back to train mode\n", - "Epoch 8735: model parameters saved\n", - "Epoch 8736 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8736: avg_loss appended (1.3125)\n", - "Epoch 8736: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8736: accuracy appended (60.00%)\n", - "Epoch 8736: model set back to train mode\n", - "Epoch 8736: model parameters saved\n", - "Epoch 8737 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8737: avg_loss appended (1.3125)\n", - "Epoch 8737: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8737: accuracy appended (60.00%)\n", - "Epoch 8737: model set back to train mode\n", - "Epoch 8737: model parameters saved\n", - "Epoch 8738 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8738: avg_loss appended (1.3125)\n", - "Epoch 8738: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8738: accuracy appended (60.00%)\n", - "Epoch 8738: model set back to train mode\n", - "Epoch 8738: model parameters saved\n", - "Epoch 8739 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8739: avg_loss appended (1.3125)\n", - "Epoch 8739: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8739: accuracy appended (60.00%)\n", - "Epoch 8739: model set back to train mode\n", - "Epoch 8739: model parameters saved\n", - "Epoch 8740 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8740: avg_loss appended (1.3125)\n", - "Epoch 8740: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8740: accuracy appended (60.00%)\n", - "Epoch 8740: model set back to train mode\n", - "Epoch 8740: model parameters saved\n", - "Epoch 8741 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8741: avg_loss appended (1.3125)\n", - "Epoch 8741: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8741: accuracy appended (60.00%)\n", - "Epoch 8741: model set back to train mode\n", - "Epoch 8741: model parameters saved\n", - "Epoch 8742 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8742: avg_loss appended (1.3125)\n", - "Epoch 8742: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8742: accuracy appended (60.00%)\n", - "Epoch 8742: model set back to train mode\n", - "Epoch 8742: model parameters saved\n", - "Epoch 8743 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8743: avg_loss appended (1.3125)\n", - "Epoch 8743: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8743: accuracy appended (60.00%)\n", - "Epoch 8743: model set back to train mode\n", - "Epoch 8743: model parameters saved\n", - "Epoch 8744 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8744: avg_loss appended (1.3125)\n", - "Epoch 8744: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8744: accuracy appended (60.00%)\n", - "Epoch 8744: model set back to train mode\n", - "Epoch 8744: model parameters saved\n", - "Epoch 8745 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8745: avg_loss appended (1.3125)\n", - "Epoch 8745: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8745: accuracy appended (60.00%)\n", - "Epoch 8745: model set back to train mode\n", - "Epoch 8745: model parameters saved\n", - "Epoch 8746 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8746: avg_loss appended (1.3125)\n", - "Epoch 8746: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8746: accuracy appended (60.00%)\n", - "Epoch 8746: model set back to train mode\n", - "Epoch 8746: model parameters saved\n", - "Epoch 8747 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8747: avg_loss appended (1.3125)\n", - "Epoch 8747: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8747: accuracy appended (60.00%)\n", - "Epoch 8747: model set back to train mode\n", - "Epoch 8747: model parameters saved\n", - "Epoch 8748 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8748: avg_loss appended (1.3125)\n", - "Epoch 8748: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8748: accuracy appended (60.00%)\n", - "Epoch 8748: model set back to train mode\n", - "Epoch 8748: model parameters saved\n", - "Epoch 8749 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8749: avg_loss appended (1.3125)\n", - "Epoch 8749: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8749: accuracy appended (60.00%)\n", - "Epoch 8749: model set back to train mode\n", - "Epoch 8749: model parameters saved\n", - "Epoch 8750 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8750: avg_loss appended (1.3125)\n", - "Epoch 8750: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8750: accuracy appended (60.00%)\n", - "Epoch 8750: model set back to train mode\n", - "Epoch 8750: model parameters saved\n", - "Epoch 8751 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8751: avg_loss appended (1.3125)\n", - "Epoch 8751: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8751: accuracy appended (60.00%)\n", - "Epoch 8751: model set back to train mode\n", - "Epoch 8751: model parameters saved\n", - "Epoch 8752 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8752: avg_loss appended (1.3125)\n", - "Epoch 8752: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8752: accuracy appended (60.00%)\n", - "Epoch 8752: model set back to train mode\n", - "Epoch 8752: model parameters saved\n", - "Epoch 8753 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8753: avg_loss appended (1.3125)\n", - "Epoch 8753: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8753: accuracy appended (60.00%)\n", - "Epoch 8753: model set back to train mode\n", - "Epoch 8753: model parameters saved\n", - "Epoch 8754 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8754: avg_loss appended (1.3125)\n", - "Epoch 8754: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8754: accuracy appended (60.00%)\n", - "Epoch 8754: model set back to train mode\n", - "Epoch 8754: model parameters saved\n", - "Epoch 8755 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8755: avg_loss appended (1.3125)\n", - "Epoch 8755: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8755: accuracy appended (60.00%)\n", - "Epoch 8755: model set back to train mode\n", - "Epoch 8755: model parameters saved\n", - "Epoch 8756 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8756: avg_loss appended (1.3125)\n", - "Epoch 8756: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8756: accuracy appended (60.00%)\n", - "Epoch 8756: model set back to train mode\n", - "Epoch 8756: model parameters saved\n", - "Epoch 8757 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8757: avg_loss appended (1.3125)\n", - "Epoch 8757: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8757: accuracy appended (60.00%)\n", - "Epoch 8757: model set back to train mode\n", - "Epoch 8757: model parameters saved\n", - "Epoch 8758 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8758: avg_loss appended (1.3125)\n", - "Epoch 8758: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8758: accuracy appended (60.00%)\n", - "Epoch 8758: model set back to train mode\n", - "Epoch 8758: model parameters saved\n", - "Epoch 8759 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8759: avg_loss appended (1.3125)\n", - "Epoch 8759: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8759: accuracy appended (60.00%)\n", - "Epoch 8759: model set back to train mode\n", - "Epoch 8759: model parameters saved\n", - "Epoch 8760 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8760: avg_loss appended (1.3125)\n", - "Epoch 8760: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8760: accuracy appended (60.00%)\n", - "Epoch 8760: model set back to train mode\n", - "Epoch 8760: model parameters saved\n", - "Epoch 8761 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8761: avg_loss appended (1.3125)\n", - "Epoch 8761: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8761: accuracy appended (60.00%)\n", - "Epoch 8761: model set back to train mode\n", - "Epoch 8761: model parameters saved\n", - "Epoch 8762 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8762: avg_loss appended (1.3125)\n", - "Epoch 8762: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8762: accuracy appended (60.00%)\n", - "Epoch 8762: model set back to train mode\n", - "Epoch 8762: model parameters saved\n", - "Epoch 8763 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8763: avg_loss appended (1.3125)\n", - "Epoch 8763: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8763: accuracy appended (60.00%)\n", - "Epoch 8763: model set back to train mode\n", - "Epoch 8763: model parameters saved\n", - "Epoch 8764 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8764: avg_loss appended (1.3125)\n", - "Epoch 8764: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8764: accuracy appended (60.00%)\n", - "Epoch 8764: model set back to train mode\n", - "Epoch 8764: model parameters saved\n", - "Epoch 8765 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8765: avg_loss appended (1.3125)\n", - "Epoch 8765: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8765: accuracy appended (60.00%)\n", - "Epoch 8765: model set back to train mode\n", - "Epoch 8765: model parameters saved\n", - "Epoch 8766 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8766: avg_loss appended (1.3125)\n", - "Epoch 8766: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8766: accuracy appended (60.00%)\n", - "Epoch 8766: model set back to train mode\n", - "Epoch 8766: model parameters saved\n", - "Epoch 8767 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8767: avg_loss appended (1.3125)\n", - "Epoch 8767: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8767: accuracy appended (60.00%)\n", - "Epoch 8767: model set back to train mode\n", - "Epoch 8767: model parameters saved\n", - "Epoch 8768 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8768: avg_loss appended (1.3125)\n", - "Epoch 8768: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8768: accuracy appended (60.00%)\n", - "Epoch 8768: model set back to train mode\n", - "Epoch 8768: model parameters saved\n", - "Epoch 8769 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8769: avg_loss appended (1.3125)\n", - "Epoch 8769: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8769: accuracy appended (60.00%)\n", - "Epoch 8769: model set back to train mode\n", - "Epoch 8769: model parameters saved\n", - "Epoch 8770 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8770: avg_loss appended (1.3125)\n", - "Epoch 8770: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8770: accuracy appended (60.00%)\n", - "Epoch 8770: model set back to train mode\n", - "Epoch 8770: model parameters saved\n", - "Epoch 8771 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8771: avg_loss appended (1.3125)\n", - "Epoch 8771: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8771: accuracy appended (60.00%)\n", - "Epoch 8771: model set back to train mode\n", - "Epoch 8771: model parameters saved\n", - "Epoch 8772 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8772: avg_loss appended (1.3125)\n", - "Epoch 8772: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8772: accuracy appended (60.00%)\n", - "Epoch 8772: model set back to train mode\n", - "Epoch 8772: model parameters saved\n", - "Epoch 8773 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8773: avg_loss appended (1.3125)\n", - "Epoch 8773: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8773: accuracy appended (60.00%)\n", - "Epoch 8773: model set back to train mode\n", - "Epoch 8773: model parameters saved\n", - "Epoch 8774 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8774: avg_loss appended (1.3125)\n", - "Epoch 8774: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8774: accuracy appended (60.00%)\n", - "Epoch 8774: model set back to train mode\n", - "Epoch 8774: model parameters saved\n", - "Epoch 8775 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8775: avg_loss appended (1.3125)\n", - "Epoch 8775: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8775: accuracy appended (60.00%)\n", - "Epoch 8775: model set back to train mode\n", - "Epoch 8775: model parameters saved\n", - "Epoch 8776 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8776: avg_loss appended (1.3125)\n", - "Epoch 8776: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8776: accuracy appended (60.00%)\n", - "Epoch 8776: model set back to train mode\n", - "Epoch 8776: model parameters saved\n", - "Epoch 8777 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8777: avg_loss appended (1.3125)\n", - "Epoch 8777: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8777: accuracy appended (60.00%)\n", - "Epoch 8777: model set back to train mode\n", - "Epoch 8777: model parameters saved\n", - "Epoch 8778 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8778: avg_loss appended (1.3125)\n", - "Epoch 8778: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8778: accuracy appended (60.00%)\n", - "Epoch 8778: model set back to train mode\n", - "Epoch 8778: model parameters saved\n", - "Epoch 8779 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8779: avg_loss appended (1.3125)\n", - "Epoch 8779: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8779: accuracy appended (60.00%)\n", - "Epoch 8779: model set back to train mode\n", - "Epoch 8779: model parameters saved\n", - "Epoch 8780 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8780: avg_loss appended (1.3125)\n", - "Epoch 8780: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8780: accuracy appended (60.00%)\n", - "Epoch 8780: model set back to train mode\n", - "Epoch 8780: model parameters saved\n", - "Epoch 8781 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8781: avg_loss appended (1.3125)\n", - "Epoch 8781: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8781: accuracy appended (60.00%)\n", - "Epoch 8781: model set back to train mode\n", - "Epoch 8781: model parameters saved\n", - "Epoch 8782 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8782: avg_loss appended (1.3125)\n", - "Epoch 8782: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8782: accuracy appended (60.00%)\n", - "Epoch 8782: model set back to train mode\n", - "Epoch 8782: model parameters saved\n", - "Epoch 8783 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8783: avg_loss appended (1.3125)\n", - "Epoch 8783: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8783: accuracy appended (60.00%)\n", - "Epoch 8783: model set back to train mode\n", - "Epoch 8783: model parameters saved\n", - "Epoch 8784 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8784: avg_loss appended (1.3125)\n", - "Epoch 8784: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8784: accuracy appended (60.00%)\n", - "Epoch 8784: model set back to train mode\n", - "Epoch 8784: model parameters saved\n", - "Epoch 8785 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8785: avg_loss appended (1.3125)\n", - "Epoch 8785: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8785: accuracy appended (60.00%)\n", - "Epoch 8785: model set back to train mode\n", - "Epoch 8785: model parameters saved\n", - "Epoch 8786 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8786: avg_loss appended (1.3125)\n", - "Epoch 8786: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8786: accuracy appended (60.00%)\n", - "Epoch 8786: model set back to train mode\n", - "Epoch 8786: model parameters saved\n", - "Epoch 8787 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8787: avg_loss appended (1.3125)\n", - "Epoch 8787: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8787: accuracy appended (60.00%)\n", - "Epoch 8787: model set back to train mode\n", - "Epoch 8787: model parameters saved\n", - "Epoch 8788 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8788: avg_loss appended (1.3125)\n", - "Epoch 8788: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8788: accuracy appended (60.00%)\n", - "Epoch 8788: model set back to train mode\n", - "Epoch 8788: model parameters saved\n", - "Epoch 8789 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8789: avg_loss appended (1.3125)\n", - "Epoch 8789: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8789: accuracy appended (60.00%)\n", - "Epoch 8789: model set back to train mode\n", - "Epoch 8789: model parameters saved\n", - "Epoch 8790 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8790: avg_loss appended (1.3125)\n", - "Epoch 8790: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8790: accuracy appended (60.00%)\n", - "Epoch 8790: model set back to train mode\n", - "Epoch 8790: model parameters saved\n", - "Epoch 8791 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8791: avg_loss appended (1.3125)\n", - "Epoch 8791: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8791: accuracy appended (60.00%)\n", - "Epoch 8791: model set back to train mode\n", - "Epoch 8791: model parameters saved\n", - "Epoch 8792 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8792: avg_loss appended (1.3125)\n", - "Epoch 8792: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8792: accuracy appended (60.00%)\n", - "Epoch 8792: model set back to train mode\n", - "Epoch 8792: model parameters saved\n", - "Epoch 8793 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8793: avg_loss appended (1.3125)\n", - "Epoch 8793: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8793: accuracy appended (60.00%)\n", - "Epoch 8793: model set back to train mode\n", - "Epoch 8793: model parameters saved\n", - "Epoch 8794 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8794: avg_loss appended (1.3125)\n", - "Epoch 8794: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8794: accuracy appended (60.00%)\n", - "Epoch 8794: model set back to train mode\n", - "Epoch 8794: model parameters saved\n", - "Epoch 8795 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8795: avg_loss appended (1.3125)\n", - "Epoch 8795: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8795: accuracy appended (60.00%)\n", - "Epoch 8795: model set back to train mode\n", - "Epoch 8795: model parameters saved\n", - "Epoch 8796 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8796: avg_loss appended (1.3125)\n", - "Epoch 8796: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8796: accuracy appended (60.00%)\n", - "Epoch 8796: model set back to train mode\n", - "Epoch 8796: model parameters saved\n", - "Epoch 8797 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8797: avg_loss appended (1.3125)\n", - "Epoch 8797: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8797: accuracy appended (60.00%)\n", - "Epoch 8797: model set back to train mode\n", - "Epoch 8797: model parameters saved\n", - "Epoch 8798 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8798: avg_loss appended (1.3125)\n", - "Epoch 8798: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8798: accuracy appended (60.00%)\n", - "Epoch 8798: model set back to train mode\n", - "Epoch 8798: model parameters saved\n", - "Epoch 8799 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8799: avg_loss appended (1.3125)\n", - "Epoch 8799: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8799: accuracy appended (60.00%)\n", - "Epoch 8799: model set back to train mode\n", - "Epoch 8799: model parameters saved\n", - "Epoch 8800 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8800: avg_loss appended (1.3125)\n", - "Epoch 8800: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8800: accuracy appended (60.00%)\n", - "Epoch 8800: model set back to train mode\n", - "Epoch 8800: model parameters saved\n", - "Epoch 8800/10000, Loss: 1.3125, Accuracy: 60.00%\n", - "Epoch 8801 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8801: avg_loss appended (1.3125)\n", - "Epoch 8801: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8801: accuracy appended (60.00%)\n", - "Epoch 8801: model set back to train mode\n", - "Epoch 8801: model parameters saved\n", - "Epoch 8802 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8802: avg_loss appended (1.3125)\n", - "Epoch 8802: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8802: accuracy appended (60.00%)\n", - "Epoch 8802: model set back to train mode\n", - "Epoch 8802: model parameters saved\n", - "Epoch 8803 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8803: avg_loss appended (1.3125)\n", - "Epoch 8803: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8803: accuracy appended (60.00%)\n", - "Epoch 8803: model set back to train mode\n", - "Epoch 8803: model parameters saved\n", - "Epoch 8804 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8804: avg_loss appended (1.3125)\n", - "Epoch 8804: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8804: accuracy appended (60.00%)\n", - "Epoch 8804: model set back to train mode\n", - "Epoch 8804: model parameters saved\n", - "Epoch 8805 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8805: avg_loss appended (1.3125)\n", - "Epoch 8805: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8805: accuracy appended (60.00%)\n", - "Epoch 8805: model set back to train mode\n", - "Epoch 8805: model parameters saved\n", - "Epoch 8806 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8806: avg_loss appended (1.3125)\n", - "Epoch 8806: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8806: accuracy appended (60.00%)\n", - "Epoch 8806: model set back to train mode\n", - "Epoch 8806: model parameters saved\n", - "Epoch 8807 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8807: avg_loss appended (1.3125)\n", - "Epoch 8807: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8807: accuracy appended (60.00%)\n", - "Epoch 8807: model set back to train mode\n", - "Epoch 8807: model parameters saved\n", - "Epoch 8808 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8808: avg_loss appended (1.3125)\n", - "Epoch 8808: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8808: accuracy appended (60.00%)\n", - "Epoch 8808: model set back to train mode\n", - "Epoch 8808: model parameters saved\n", - "Epoch 8809 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8809: avg_loss appended (1.3125)\n", - "Epoch 8809: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8809: accuracy appended (60.00%)\n", - "Epoch 8809: model set back to train mode\n", - "Epoch 8809: model parameters saved\n", - "Epoch 8810 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8810: avg_loss appended (1.3125)\n", - "Epoch 8810: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8810: accuracy appended (60.00%)\n", - "Epoch 8810: model set back to train mode\n", - "Epoch 8810: model parameters saved\n", - "Epoch 8811 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8811: avg_loss appended (1.3125)\n", - "Epoch 8811: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8811: accuracy appended (60.00%)\n", - "Epoch 8811: model set back to train mode\n", - "Epoch 8811: model parameters saved\n", - "Epoch 8812 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8812: avg_loss appended (1.3125)\n", - "Epoch 8812: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8812: accuracy appended (60.00%)\n", - "Epoch 8812: model set back to train mode\n", - "Epoch 8812: model parameters saved\n", - "Epoch 8813 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8813: avg_loss appended (1.3125)\n", - "Epoch 8813: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8813: accuracy appended (60.00%)\n", - "Epoch 8813: model set back to train mode\n", - "Epoch 8813: model parameters saved\n", - "Epoch 8814 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8814: avg_loss appended (1.3125)\n", - "Epoch 8814: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8814: accuracy appended (60.00%)\n", - "Epoch 8814: model set back to train mode\n", - "Epoch 8814: model parameters saved\n", - "Epoch 8815 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8815: avg_loss appended (1.3125)\n", - "Epoch 8815: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8815: accuracy appended (60.00%)\n", - "Epoch 8815: model set back to train mode\n", - "Epoch 8815: model parameters saved\n", - "Epoch 8816 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8816: avg_loss appended (1.3125)\n", - "Epoch 8816: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8816: accuracy appended (60.00%)\n", - "Epoch 8816: model set back to train mode\n", - "Epoch 8816: model parameters saved\n", - "Epoch 8817 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8817: avg_loss appended (1.3125)\n", - "Epoch 8817: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8817: accuracy appended (60.00%)\n", - "Epoch 8817: model set back to train mode\n", - "Epoch 8817: model parameters saved\n", - "Epoch 8818 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8818: avg_loss appended (1.3125)\n", - "Epoch 8818: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8818: accuracy appended (60.00%)\n", - "Epoch 8818: model set back to train mode\n", - "Epoch 8818: model parameters saved\n", - "Epoch 8819 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8819: avg_loss appended (1.3125)\n", - "Epoch 8819: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8819: accuracy appended (60.00%)\n", - "Epoch 8819: model set back to train mode\n", - "Epoch 8819: model parameters saved\n", - "Epoch 8820 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8820: avg_loss appended (1.3125)\n", - "Epoch 8820: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8820: accuracy appended (60.00%)\n", - "Epoch 8820: model set back to train mode\n", - "Epoch 8820: model parameters saved\n", - "Epoch 8821 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8821: avg_loss appended (1.3125)\n", - "Epoch 8821: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8821: accuracy appended (60.00%)\n", - "Epoch 8821: model set back to train mode\n", - "Epoch 8821: model parameters saved\n", - "Epoch 8822 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8822: avg_loss appended (1.3125)\n", - "Epoch 8822: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8822: accuracy appended (60.00%)\n", - "Epoch 8822: model set back to train mode\n", - "Epoch 8822: model parameters saved\n", - "Epoch 8823 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8823: avg_loss appended (1.3125)\n", - "Epoch 8823: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8823: accuracy appended (60.00%)\n", - "Epoch 8823: model set back to train mode\n", - "Epoch 8823: model parameters saved\n", - "Epoch 8824 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8824: avg_loss appended (1.3125)\n", - "Epoch 8824: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8824: accuracy appended (60.00%)\n", - "Epoch 8824: model set back to train mode\n", - "Epoch 8824: model parameters saved\n", - "Epoch 8825 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8825: avg_loss appended (1.3125)\n", - "Epoch 8825: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8825: accuracy appended (60.00%)\n", - "Epoch 8825: model set back to train mode\n", - "Epoch 8825: model parameters saved\n", - "Epoch 8826 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8826: avg_loss appended (1.3125)\n", - "Epoch 8826: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8826: accuracy appended (60.00%)\n", - "Epoch 8826: model set back to train mode\n", - "Epoch 8826: model parameters saved\n", - "Epoch 8827 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8827: avg_loss appended (1.3125)\n", - "Epoch 8827: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8827: accuracy appended (60.00%)\n", - "Epoch 8827: model set back to train mode\n", - "Epoch 8827: model parameters saved\n", - "Epoch 8828 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8828: avg_loss appended (1.3125)\n", - "Epoch 8828: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8828: accuracy appended (60.00%)\n", - "Epoch 8828: model set back to train mode\n", - "Epoch 8828: model parameters saved\n", - "Epoch 8829 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8829: avg_loss appended (1.3125)\n", - "Epoch 8829: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8829: accuracy appended (60.00%)\n", - "Epoch 8829: model set back to train mode\n", - "Epoch 8829: model parameters saved\n", - "Epoch 8830 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8830: avg_loss appended (1.3125)\n", - "Epoch 8830: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8830: accuracy appended (60.00%)\n", - "Epoch 8830: model set back to train mode\n", - "Epoch 8830: model parameters saved\n", - "Epoch 8831 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8831: avg_loss appended (1.3125)\n", - "Epoch 8831: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8831: accuracy appended (60.00%)\n", - "Epoch 8831: model set back to train mode\n", - "Epoch 8831: model parameters saved\n", - "Epoch 8832 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8832: avg_loss appended (1.3125)\n", - "Epoch 8832: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8832: accuracy appended (60.00%)\n", - "Epoch 8832: model set back to train mode\n", - "Epoch 8832: model parameters saved\n", - "Epoch 8833 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8833: avg_loss appended (1.3125)\n", - "Epoch 8833: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8833: accuracy appended (60.00%)\n", - "Epoch 8833: model set back to train mode\n", - "Epoch 8833: model parameters saved\n", - "Epoch 8834 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8834: avg_loss appended (1.3125)\n", - "Epoch 8834: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8834: accuracy appended (60.00%)\n", - "Epoch 8834: model set back to train mode\n", - "Epoch 8834: model parameters saved\n", - "Epoch 8835 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8835: avg_loss appended (1.3125)\n", - "Epoch 8835: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8835: accuracy appended (60.00%)\n", - "Epoch 8835: model set back to train mode\n", - "Epoch 8835: model parameters saved\n", - "Epoch 8836 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8836: avg_loss appended (1.3125)\n", - "Epoch 8836: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8836: accuracy appended (60.00%)\n", - "Epoch 8836: model set back to train mode\n", - "Epoch 8836: model parameters saved\n", - "Epoch 8837 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8837: avg_loss appended (1.3125)\n", - "Epoch 8837: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8837: accuracy appended (60.00%)\n", - "Epoch 8837: model set back to train mode\n", - "Epoch 8837: model parameters saved\n", - "Epoch 8838 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8838: avg_loss appended (1.3125)\n", - "Epoch 8838: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8838: accuracy appended (60.00%)\n", - "Epoch 8838: model set back to train mode\n", - "Epoch 8838: model parameters saved\n", - "Epoch 8839 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8839: avg_loss appended (1.3125)\n", - "Epoch 8839: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8839: accuracy appended (60.00%)\n", - "Epoch 8839: model set back to train mode\n", - "Epoch 8839: model parameters saved\n", - "Epoch 8840 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8840: avg_loss appended (1.3125)\n", - "Epoch 8840: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8840: accuracy appended (60.00%)\n", - "Epoch 8840: model set back to train mode\n", - "Epoch 8840: model parameters saved\n", - "Epoch 8841 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8841: avg_loss appended (1.3125)\n", - "Epoch 8841: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8841: accuracy appended (60.00%)\n", - "Epoch 8841: model set back to train mode\n", - "Epoch 8841: model parameters saved\n", - "Epoch 8842 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8842: avg_loss appended (1.3125)\n", - "Epoch 8842: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8842: accuracy appended (60.00%)\n", - "Epoch 8842: model set back to train mode\n", - "Epoch 8842: model parameters saved\n", - "Epoch 8843 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8843: avg_loss appended (1.3125)\n", - "Epoch 8843: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8843: accuracy appended (60.00%)\n", - "Epoch 8843: model set back to train mode\n", - "Epoch 8843: model parameters saved\n", - "Epoch 8844 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8844: avg_loss appended (1.3125)\n", - "Epoch 8844: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8844: accuracy appended (60.00%)\n", - "Epoch 8844: model set back to train mode\n", - "Epoch 8844: model parameters saved\n", - "Epoch 8845 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8845: avg_loss appended (1.3125)\n", - "Epoch 8845: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8845: accuracy appended (60.00%)\n", - "Epoch 8845: model set back to train mode\n", - "Epoch 8845: model parameters saved\n", - "Epoch 8846 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8846: avg_loss appended (1.3125)\n", - "Epoch 8846: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8846: accuracy appended (60.00%)\n", - "Epoch 8846: model set back to train mode\n", - "Epoch 8846: model parameters saved\n", - "Epoch 8847 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8847: avg_loss appended (1.3125)\n", - "Epoch 8847: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8847: accuracy appended (60.00%)\n", - "Epoch 8847: model set back to train mode\n", - "Epoch 8847: model parameters saved\n", - "Epoch 8848 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8848: avg_loss appended (1.3125)\n", - "Epoch 8848: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8848: accuracy appended (60.00%)\n", - "Epoch 8848: model set back to train mode\n", - "Epoch 8848: model parameters saved\n", - "Epoch 8849 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8849: avg_loss appended (1.3125)\n", - "Epoch 8849: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8849: accuracy appended (60.00%)\n", - "Epoch 8849: model set back to train mode\n", - "Epoch 8849: model parameters saved\n", - "Epoch 8850 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8850: avg_loss appended (1.3125)\n", - "Epoch 8850: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8850: accuracy appended (60.00%)\n", - "Epoch 8850: model set back to train mode\n", - "Epoch 8850: model parameters saved\n", - "Epoch 8851 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8851: avg_loss appended (1.3125)\n", - "Epoch 8851: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8851: accuracy appended (60.00%)\n", - "Epoch 8851: model set back to train mode\n", - "Epoch 8851: model parameters saved\n", - "Epoch 8852 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8852: avg_loss appended (1.3125)\n", - "Epoch 8852: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8852: accuracy appended (60.00%)\n", - "Epoch 8852: model set back to train mode\n", - "Epoch 8852: model parameters saved\n", - "Epoch 8853 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8853: avg_loss appended (1.3125)\n", - "Epoch 8853: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8853: accuracy appended (60.00%)\n", - "Epoch 8853: model set back to train mode\n", - "Epoch 8853: model parameters saved\n", - "Epoch 8854 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8854: avg_loss appended (1.3125)\n", - "Epoch 8854: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8854: accuracy appended (60.00%)\n", - "Epoch 8854: model set back to train mode\n", - "Epoch 8854: model parameters saved\n", - "Epoch 8855 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8855: avg_loss appended (1.3125)\n", - "Epoch 8855: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8855: accuracy appended (60.00%)\n", - "Epoch 8855: model set back to train mode\n", - "Epoch 8855: model parameters saved\n", - "Epoch 8856 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8856: avg_loss appended (1.3125)\n", - "Epoch 8856: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8856: accuracy appended (60.00%)\n", - "Epoch 8856: model set back to train mode\n", - "Epoch 8856: model parameters saved\n", - "Epoch 8857 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8857: avg_loss appended (1.3125)\n", - "Epoch 8857: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8857: accuracy appended (60.00%)\n", - "Epoch 8857: model set back to train mode\n", - "Epoch 8857: model parameters saved\n", - "Epoch 8858 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8858: avg_loss appended (1.3125)\n", - "Epoch 8858: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8858: accuracy appended (60.00%)\n", - "Epoch 8858: model set back to train mode\n", - "Epoch 8858: model parameters saved\n", - "Epoch 8859 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8859: avg_loss appended (1.3125)\n", - "Epoch 8859: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8859: accuracy appended (60.00%)\n", - "Epoch 8859: model set back to train mode\n", - "Epoch 8859: model parameters saved\n", - "Epoch 8860 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8860: avg_loss appended (1.3125)\n", - "Epoch 8860: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8860: accuracy appended (60.00%)\n", - "Epoch 8860: model set back to train mode\n", - "Epoch 8860: model parameters saved\n", - "Epoch 8861 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8861: avg_loss appended (1.3125)\n", - "Epoch 8861: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8861: accuracy appended (60.00%)\n", - "Epoch 8861: model set back to train mode\n", - "Epoch 8861: model parameters saved\n", - "Epoch 8862 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8862: avg_loss appended (1.3125)\n", - "Epoch 8862: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8862: accuracy appended (60.00%)\n", - "Epoch 8862: model set back to train mode\n", - "Epoch 8862: model parameters saved\n", - "Epoch 8863 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8863: avg_loss appended (1.3125)\n", - "Epoch 8863: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8863: accuracy appended (60.00%)\n", - "Epoch 8863: model set back to train mode\n", - "Epoch 8863: model parameters saved\n", - "Epoch 8864 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8864: avg_loss appended (1.3125)\n", - "Epoch 8864: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8864: accuracy appended (60.00%)\n", - "Epoch 8864: model set back to train mode\n", - "Epoch 8864: model parameters saved\n", - "Epoch 8865 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8865: avg_loss appended (1.3125)\n", - "Epoch 8865: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8865: accuracy appended (60.00%)\n", - "Epoch 8865: model set back to train mode\n", - "Epoch 8865: model parameters saved\n", - "Epoch 8866 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8866: avg_loss appended (1.3125)\n", - "Epoch 8866: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8866: accuracy appended (60.00%)\n", - "Epoch 8866: model set back to train mode\n", - "Epoch 8866: model parameters saved\n", - "Epoch 8867 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8867: avg_loss appended (1.3125)\n", - "Epoch 8867: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8867: accuracy appended (60.00%)\n", - "Epoch 8867: model set back to train mode\n", - "Epoch 8867: model parameters saved\n", - "Epoch 8868 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8868: avg_loss appended (1.3125)\n", - "Epoch 8868: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8868: accuracy appended (60.00%)\n", - "Epoch 8868: model set back to train mode\n", - "Epoch 8868: model parameters saved\n", - "Epoch 8869 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8869: avg_loss appended (1.3125)\n", - "Epoch 8869: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8869: accuracy appended (60.00%)\n", - "Epoch 8869: model set back to train mode\n", - "Epoch 8869: model parameters saved\n", - "Epoch 8870 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8870: avg_loss appended (1.3125)\n", - "Epoch 8870: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8870: accuracy appended (60.00%)\n", - "Epoch 8870: model set back to train mode\n", - "Epoch 8870: model parameters saved\n", - "Epoch 8871 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8871: avg_loss appended (1.3125)\n", - "Epoch 8871: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8871: accuracy appended (60.00%)\n", - "Epoch 8871: model set back to train mode\n", - "Epoch 8871: model parameters saved\n", - "Epoch 8872 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8872: avg_loss appended (1.3125)\n", - "Epoch 8872: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8872: accuracy appended (60.00%)\n", - "Epoch 8872: model set back to train mode\n", - "Epoch 8872: model parameters saved\n", - "Epoch 8873 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8873: avg_loss appended (1.3125)\n", - "Epoch 8873: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8873: accuracy appended (60.00%)\n", - "Epoch 8873: model set back to train mode\n", - "Epoch 8873: model parameters saved\n", - "Epoch 8874 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8874: avg_loss appended (1.3125)\n", - "Epoch 8874: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8874: accuracy appended (60.00%)\n", - "Epoch 8874: model set back to train mode\n", - "Epoch 8874: model parameters saved\n", - "Epoch 8875 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8875: avg_loss appended (1.3125)\n", - "Epoch 8875: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8875: accuracy appended (60.00%)\n", - "Epoch 8875: model set back to train mode\n", - "Epoch 8875: model parameters saved\n", - "Epoch 8876 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8876: avg_loss appended (1.3125)\n", - "Epoch 8876: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8876: accuracy appended (60.00%)\n", - "Epoch 8876: model set back to train mode\n", - "Epoch 8876: model parameters saved\n", - "Epoch 8877 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8877: avg_loss appended (1.3125)\n", - "Epoch 8877: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8877: accuracy appended (60.00%)\n", - "Epoch 8877: model set back to train mode\n", - "Epoch 8877: model parameters saved\n", - "Epoch 8878 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8878: avg_loss appended (1.3125)\n", - "Epoch 8878: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8878: accuracy appended (60.00%)\n", - "Epoch 8878: model set back to train mode\n", - "Epoch 8878: model parameters saved\n", - "Epoch 8879 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8879: avg_loss appended (1.3125)\n", - "Epoch 8879: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8879: accuracy appended (60.00%)\n", - "Epoch 8879: model set back to train mode\n", - "Epoch 8879: model parameters saved\n", - "Epoch 8880 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8880: avg_loss appended (1.3125)\n", - "Epoch 8880: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8880: accuracy appended (60.00%)\n", - "Epoch 8880: model set back to train mode\n", - "Epoch 8880: model parameters saved\n", - "Epoch 8881 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8881: avg_loss appended (1.3125)\n", - "Epoch 8881: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8881: accuracy appended (60.00%)\n", - "Epoch 8881: model set back to train mode\n", - "Epoch 8881: model parameters saved\n", - "Epoch 8882 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8882: avg_loss appended (1.3125)\n", - "Epoch 8882: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8882: accuracy appended (60.00%)\n", - "Epoch 8882: model set back to train mode\n", - "Epoch 8882: model parameters saved\n", - "Epoch 8883 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8883: avg_loss appended (1.3125)\n", - "Epoch 8883: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8883: accuracy appended (60.00%)\n", - "Epoch 8883: model set back to train mode\n", - "Epoch 8883: model parameters saved\n", - "Epoch 8884 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8884: avg_loss appended (1.3125)\n", - "Epoch 8884: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8884: accuracy appended (60.00%)\n", - "Epoch 8884: model set back to train mode\n", - "Epoch 8884: model parameters saved\n", - "Epoch 8885 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8885: avg_loss appended (1.3125)\n", - "Epoch 8885: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8885: accuracy appended (60.00%)\n", - "Epoch 8885: model set back to train mode\n", - "Epoch 8885: model parameters saved\n", - "Epoch 8886 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8886: avg_loss appended (1.3125)\n", - "Epoch 8886: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8886: accuracy appended (60.00%)\n", - "Epoch 8886: model set back to train mode\n", - "Epoch 8886: model parameters saved\n", - "Epoch 8887 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8887: avg_loss appended (1.3125)\n", - "Epoch 8887: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8887: accuracy appended (60.00%)\n", - "Epoch 8887: model set back to train mode\n", - "Epoch 8887: model parameters saved\n", - "Epoch 8888 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8888: avg_loss appended (1.3125)\n", - "Epoch 8888: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8888: accuracy appended (60.00%)\n", - "Epoch 8888: model set back to train mode\n", - "Epoch 8888: model parameters saved\n", - "Epoch 8889 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8889: avg_loss appended (1.3125)\n", - "Epoch 8889: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8889: accuracy appended (60.00%)\n", - "Epoch 8889: model set back to train mode\n", - "Epoch 8889: model parameters saved\n", - "Epoch 8890 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8890: avg_loss appended (1.3125)\n", - "Epoch 8890: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8890: accuracy appended (60.00%)\n", - "Epoch 8890: model set back to train mode\n", - "Epoch 8890: model parameters saved\n", - "Epoch 8891 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8891: avg_loss appended (1.3125)\n", - "Epoch 8891: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8891: accuracy appended (60.00%)\n", - "Epoch 8891: model set back to train mode\n", - "Epoch 8891: model parameters saved\n", - "Epoch 8892 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8892: avg_loss appended (1.3125)\n", - "Epoch 8892: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8892: accuracy appended (60.00%)\n", - "Epoch 8892: model set back to train mode\n", - "Epoch 8892: model parameters saved\n", - "Epoch 8893 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8893: avg_loss appended (1.3125)\n", - "Epoch 8893: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8893: accuracy appended (60.00%)\n", - "Epoch 8893: model set back to train mode\n", - "Epoch 8893: model parameters saved\n", - "Epoch 8894 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8894: avg_loss appended (1.3125)\n", - "Epoch 8894: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8894: accuracy appended (60.00%)\n", - "Epoch 8894: model set back to train mode\n", - "Epoch 8894: model parameters saved\n", - "Epoch 8895 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8895: avg_loss appended (1.3125)\n", - "Epoch 8895: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8895: accuracy appended (60.00%)\n", - "Epoch 8895: model set back to train mode\n", - "Epoch 8895: model parameters saved\n", - "Epoch 8896 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8896: avg_loss appended (1.3125)\n", - "Epoch 8896: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8896: accuracy appended (60.00%)\n", - "Epoch 8896: model set back to train mode\n", - "Epoch 8896: model parameters saved\n", - "Epoch 8897 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8897: avg_loss appended (1.3125)\n", - "Epoch 8897: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8897: accuracy appended (60.00%)\n", - "Epoch 8897: model set back to train mode\n", - "Epoch 8897: model parameters saved\n", - "Epoch 8898 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8898: avg_loss appended (1.3125)\n", - "Epoch 8898: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8898: accuracy appended (60.00%)\n", - "Epoch 8898: model set back to train mode\n", - "Epoch 8898: model parameters saved\n", - "Epoch 8899 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8899: avg_loss appended (1.3125)\n", - "Epoch 8899: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8899: accuracy appended (60.00%)\n", - "Epoch 8899: model set back to train mode\n", - "Epoch 8899: model parameters saved\n", - "Epoch 8900 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8900: avg_loss appended (1.3125)\n", - "Epoch 8900: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8900: accuracy appended (60.00%)\n", - "Epoch 8900: model set back to train mode\n", - "Epoch 8900: model parameters saved\n", - "Epoch 8900/10000, Loss: 1.3125, Accuracy: 60.00%\n", - "Epoch 8901 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8901: avg_loss appended (1.3125)\n", - "Epoch 8901: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8901: accuracy appended (60.00%)\n", - "Epoch 8901: model set back to train mode\n", - "Epoch 8901: model parameters saved\n", - "Epoch 8902 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8902: avg_loss appended (1.3125)\n", - "Epoch 8902: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8902: accuracy appended (60.00%)\n", - "Epoch 8902: model set back to train mode\n", - "Epoch 8902: model parameters saved\n", - "Epoch 8903 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8903: avg_loss appended (1.3125)\n", - "Epoch 8903: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8903: accuracy appended (60.00%)\n", - "Epoch 8903: model set back to train mode\n", - "Epoch 8903: model parameters saved\n", - "Epoch 8904 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8904: avg_loss appended (1.3125)\n", - "Epoch 8904: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8904: accuracy appended (60.00%)\n", - "Epoch 8904: model set back to train mode\n", - "Epoch 8904: model parameters saved\n", - "Epoch 8905 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8905: avg_loss appended (1.3125)\n", - "Epoch 8905: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8905: accuracy appended (60.00%)\n", - "Epoch 8905: model set back to train mode\n", - "Epoch 8905: model parameters saved\n", - "Epoch 8906 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8906: avg_loss appended (1.3125)\n", - "Epoch 8906: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8906: accuracy appended (60.00%)\n", - "Epoch 8906: model set back to train mode\n", - "Epoch 8906: model parameters saved\n", - "Epoch 8907 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8907: avg_loss appended (1.3125)\n", - "Epoch 8907: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8907: accuracy appended (60.00%)\n", - "Epoch 8907: model set back to train mode\n", - "Epoch 8907: model parameters saved\n", - "Epoch 8908 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8908: avg_loss appended (1.3125)\n", - "Epoch 8908: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8908: accuracy appended (60.00%)\n", - "Epoch 8908: model set back to train mode\n", - "Epoch 8908: model parameters saved\n", - "Epoch 8909 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8909: avg_loss appended (1.3125)\n", - "Epoch 8909: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8909: accuracy appended (60.00%)\n", - "Epoch 8909: model set back to train mode\n", - "Epoch 8909: model parameters saved\n", - "Epoch 8910 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8910: avg_loss appended (1.3125)\n", - "Epoch 8910: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8910: accuracy appended (60.00%)\n", - "Epoch 8910: model set back to train mode\n", - "Epoch 8910: model parameters saved\n", - "Epoch 8911 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8911: avg_loss appended (1.3125)\n", - "Epoch 8911: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8911: accuracy appended (60.00%)\n", - "Epoch 8911: model set back to train mode\n", - "Epoch 8911: model parameters saved\n", - "Epoch 8912 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8912: avg_loss appended (1.3125)\n", - "Epoch 8912: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8912: accuracy appended (60.00%)\n", - "Epoch 8912: model set back to train mode\n", - "Epoch 8912: model parameters saved\n", - "Epoch 8913 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8913: avg_loss appended (1.3125)\n", - "Epoch 8913: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8913: accuracy appended (60.00%)\n", - "Epoch 8913: model set back to train mode\n", - "Epoch 8913: model parameters saved\n", - "Epoch 8914 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8914: avg_loss appended (1.3125)\n", - "Epoch 8914: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8914: accuracy appended (60.00%)\n", - "Epoch 8914: model set back to train mode\n", - "Epoch 8914: model parameters saved\n", - "Epoch 8915 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8915: avg_loss appended (1.3125)\n", - "Epoch 8915: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8915: accuracy appended (60.00%)\n", - "Epoch 8915: model set back to train mode\n", - "Epoch 8915: model parameters saved\n", - "Epoch 8916 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8916: avg_loss appended (1.3125)\n", - "Epoch 8916: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8916: accuracy appended (60.00%)\n", - "Epoch 8916: model set back to train mode\n", - "Epoch 8916: model parameters saved\n", - "Epoch 8917 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8917: avg_loss appended (1.3125)\n", - "Epoch 8917: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8917: accuracy appended (60.00%)\n", - "Epoch 8917: model set back to train mode\n", - "Epoch 8917: model parameters saved\n", - "Epoch 8918 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8918: avg_loss appended (1.3125)\n", - "Epoch 8918: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8918: accuracy appended (60.00%)\n", - "Epoch 8918: model set back to train mode\n", - "Epoch 8918: model parameters saved\n", - "Epoch 8919 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8919: avg_loss appended (1.3125)\n", - "Epoch 8919: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8919: accuracy appended (60.00%)\n", - "Epoch 8919: model set back to train mode\n", - "Epoch 8919: model parameters saved\n", - "Epoch 8920 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8920: avg_loss appended (1.3125)\n", - "Epoch 8920: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8920: accuracy appended (60.00%)\n", - "Epoch 8920: model set back to train mode\n", - "Epoch 8920: model parameters saved\n", - "Epoch 8921 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8921: avg_loss appended (1.3125)\n", - "Epoch 8921: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8921: accuracy appended (60.00%)\n", - "Epoch 8921: model set back to train mode\n", - "Epoch 8921: model parameters saved\n", - "Epoch 8922 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8922: avg_loss appended (1.3125)\n", - "Epoch 8922: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8922: accuracy appended (60.00%)\n", - "Epoch 8922: model set back to train mode\n", - "Epoch 8922: model parameters saved\n", - "Epoch 8923 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8923: avg_loss appended (1.3125)\n", - "Epoch 8923: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8923: accuracy appended (60.00%)\n", - "Epoch 8923: model set back to train mode\n", - "Epoch 8923: model parameters saved\n", - "Epoch 8924 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8924: avg_loss appended (1.3125)\n", - "Epoch 8924: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8924: accuracy appended (60.00%)\n", - "Epoch 8924: model set back to train mode\n", - "Epoch 8924: model parameters saved\n", - "Epoch 8925 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8925: avg_loss appended (1.3125)\n", - "Epoch 8925: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8925: accuracy appended (60.00%)\n", - "Epoch 8925: model set back to train mode\n", - "Epoch 8925: model parameters saved\n", - "Epoch 8926 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8926: avg_loss appended (1.3125)\n", - "Epoch 8926: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8926: accuracy appended (60.00%)\n", - "Epoch 8926: model set back to train mode\n", - "Epoch 8926: model parameters saved\n", - "Epoch 8927 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8927: avg_loss appended (1.3125)\n", - "Epoch 8927: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8927: accuracy appended (60.00%)\n", - "Epoch 8927: model set back to train mode\n", - "Epoch 8927: model parameters saved\n", - "Epoch 8928 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8928: avg_loss appended (1.3125)\n", - "Epoch 8928: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8928: accuracy appended (60.00%)\n", - "Epoch 8928: model set back to train mode\n", - "Epoch 8928: model parameters saved\n", - "Epoch 8929 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8929: avg_loss appended (1.3125)\n", - "Epoch 8929: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8929: accuracy appended (60.00%)\n", - "Epoch 8929: model set back to train mode\n", - "Epoch 8929: model parameters saved\n", - "Epoch 8930 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8930: avg_loss appended (1.3125)\n", - "Epoch 8930: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8930: accuracy appended (60.00%)\n", - "Epoch 8930: model set back to train mode\n", - "Epoch 8930: model parameters saved\n", - "Epoch 8931 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8931: avg_loss appended (1.3125)\n", - "Epoch 8931: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8931: accuracy appended (60.00%)\n", - "Epoch 8931: model set back to train mode\n", - "Epoch 8931: model parameters saved\n", - "Epoch 8932 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8932: avg_loss appended (1.3125)\n", - "Epoch 8932: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8932: accuracy appended (60.00%)\n", - "Epoch 8932: model set back to train mode\n", - "Epoch 8932: model parameters saved\n", - "Epoch 8933 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8933: avg_loss appended (1.3125)\n", - "Epoch 8933: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8933: accuracy appended (60.00%)\n", - "Epoch 8933: model set back to train mode\n", - "Epoch 8933: model parameters saved\n", - "Epoch 8934 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8934: avg_loss appended (1.3125)\n", - "Epoch 8934: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8934: accuracy appended (60.00%)\n", - "Epoch 8934: model set back to train mode\n", - "Epoch 8934: model parameters saved\n", - "Epoch 8935 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8935: avg_loss appended (1.3125)\n", - "Epoch 8935: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8935: accuracy appended (60.00%)\n", - "Epoch 8935: model set back to train mode\n", - "Epoch 8935: model parameters saved\n", - "Epoch 8936 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8936: avg_loss appended (1.3125)\n", - "Epoch 8936: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8936: accuracy appended (60.00%)\n", - "Epoch 8936: model set back to train mode\n", - "Epoch 8936: model parameters saved\n", - "Epoch 8937 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8937: avg_loss appended (1.3125)\n", - "Epoch 8937: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8937: accuracy appended (60.00%)\n", - "Epoch 8937: model set back to train mode\n", - "Epoch 8937: model parameters saved\n", - "Epoch 8938 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8938: avg_loss appended (1.3125)\n", - "Epoch 8938: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8938: accuracy appended (60.00%)\n", - "Epoch 8938: model set back to train mode\n", - "Epoch 8938: model parameters saved\n", - "Epoch 8939 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8939: avg_loss appended (1.3125)\n", - "Epoch 8939: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8939: accuracy appended (60.00%)\n", - "Epoch 8939: model set back to train mode\n", - "Epoch 8939: model parameters saved\n", - "Epoch 8940 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8940: avg_loss appended (1.3125)\n", - "Epoch 8940: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8940: accuracy appended (60.00%)\n", - "Epoch 8940: model set back to train mode\n", - "Epoch 8940: model parameters saved\n", - "Epoch 8941 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8941: avg_loss appended (1.3125)\n", - "Epoch 8941: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8941: accuracy appended (60.00%)\n", - "Epoch 8941: model set back to train mode\n", - "Epoch 8941: model parameters saved\n", - "Epoch 8942 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8942: avg_loss appended (1.3125)\n", - "Epoch 8942: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8942: accuracy appended (60.00%)\n", - "Epoch 8942: model set back to train mode\n", - "Epoch 8942: model parameters saved\n", - "Epoch 8943 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8943: avg_loss appended (1.3125)\n", - "Epoch 8943: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8943: accuracy appended (60.00%)\n", - "Epoch 8943: model set back to train mode\n", - "Epoch 8943: model parameters saved\n", - "Epoch 8944 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8944: avg_loss appended (1.3125)\n", - "Epoch 8944: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8944: accuracy appended (60.00%)\n", - "Epoch 8944: model set back to train mode\n", - "Epoch 8944: model parameters saved\n", - "Epoch 8945 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8945: avg_loss appended (1.3125)\n", - "Epoch 8945: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8945: accuracy appended (60.00%)\n", - "Epoch 8945: model set back to train mode\n", - "Epoch 8945: model parameters saved\n", - "Epoch 8946 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8946: avg_loss appended (1.3125)\n", - "Epoch 8946: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8946: accuracy appended (60.00%)\n", - "Epoch 8946: model set back to train mode\n", - "Epoch 8946: model parameters saved\n", - "Epoch 8947 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8947: avg_loss appended (1.3125)\n", - "Epoch 8947: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8947: accuracy appended (60.00%)\n", - "Epoch 8947: model set back to train mode\n", - "Epoch 8947: model parameters saved\n", - "Epoch 8948 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8948: avg_loss appended (1.3125)\n", - "Epoch 8948: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8948: accuracy appended (60.00%)\n", - "Epoch 8948: model set back to train mode\n", - "Epoch 8948: model parameters saved\n", - "Epoch 8949 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8949: avg_loss appended (1.3125)\n", - "Epoch 8949: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8949: accuracy appended (60.00%)\n", - "Epoch 8949: model set back to train mode\n", - "Epoch 8949: model parameters saved\n", - "Epoch 8950 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8950: avg_loss appended (1.3125)\n", - "Epoch 8950: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8950: accuracy appended (60.00%)\n", - "Epoch 8950: model set back to train mode\n", - "Epoch 8950: model parameters saved\n", - "Epoch 8951 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8951: avg_loss appended (1.3125)\n", - "Epoch 8951: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8951: accuracy appended (60.00%)\n", - "Epoch 8951: model set back to train mode\n", - "Epoch 8951: model parameters saved\n", - "Epoch 8952 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8952: avg_loss appended (1.3125)\n", - "Epoch 8952: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8952: accuracy appended (60.00%)\n", - "Epoch 8952: model set back to train mode\n", - "Epoch 8952: model parameters saved\n", - "Epoch 8953 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8953: avg_loss appended (1.3125)\n", - "Epoch 8953: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8953: accuracy appended (60.00%)\n", - "Epoch 8953: model set back to train mode\n", - "Epoch 8953: model parameters saved\n", - "Epoch 8954 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8954: avg_loss appended (1.3125)\n", - "Epoch 8954: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8954: accuracy appended (60.00%)\n", - "Epoch 8954: model set back to train mode\n", - "Epoch 8954: model parameters saved\n", - "Epoch 8955 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8955: avg_loss appended (1.3125)\n", - "Epoch 8955: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8955: accuracy appended (60.00%)\n", - "Epoch 8955: model set back to train mode\n", - "Epoch 8955: model parameters saved\n", - "Epoch 8956 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8956: avg_loss appended (1.3125)\n", - "Epoch 8956: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8956: accuracy appended (60.00%)\n", - "Epoch 8956: model set back to train mode\n", - "Epoch 8956: model parameters saved\n", - "Epoch 8957 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8957: avg_loss appended (1.3125)\n", - "Epoch 8957: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8957: accuracy appended (60.00%)\n", - "Epoch 8957: model set back to train mode\n", - "Epoch 8957: model parameters saved\n", - "Epoch 8958 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8958: avg_loss appended (1.3125)\n", - "Epoch 8958: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8958: accuracy appended (60.00%)\n", - "Epoch 8958: model set back to train mode\n", - "Epoch 8958: model parameters saved\n", - "Epoch 8959 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8959: avg_loss appended (1.3125)\n", - "Epoch 8959: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8959: accuracy appended (60.00%)\n", - "Epoch 8959: model set back to train mode\n", - "Epoch 8959: model parameters saved\n", - "Epoch 8960 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8960: avg_loss appended (1.3125)\n", - "Epoch 8960: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8960: accuracy appended (60.00%)\n", - "Epoch 8960: model set back to train mode\n", - "Epoch 8960: model parameters saved\n", - "Epoch 8961 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8961: avg_loss appended (1.3125)\n", - "Epoch 8961: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8961: accuracy appended (60.00%)\n", - "Epoch 8961: model set back to train mode\n", - "Epoch 8961: model parameters saved\n", - "Epoch 8962 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8962: avg_loss appended (1.3125)\n", - "Epoch 8962: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8962: accuracy appended (60.00%)\n", - "Epoch 8962: model set back to train mode\n", - "Epoch 8962: model parameters saved\n", - "Epoch 8963 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8963: avg_loss appended (1.3125)\n", - "Epoch 8963: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8963: accuracy appended (60.00%)\n", - "Epoch 8963: model set back to train mode\n", - "Epoch 8963: model parameters saved\n", - "Epoch 8964 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8964: avg_loss appended (1.3125)\n", - "Epoch 8964: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8964: accuracy appended (60.00%)\n", - "Epoch 8964: model set back to train mode\n", - "Epoch 8964: model parameters saved\n", - "Epoch 8965 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8965: avg_loss appended (1.3125)\n", - "Epoch 8965: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8965: accuracy appended (60.00%)\n", - "Epoch 8965: model set back to train mode\n", - "Epoch 8965: model parameters saved\n", - "Epoch 8966 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8966: avg_loss appended (1.3125)\n", - "Epoch 8966: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8966: accuracy appended (60.00%)\n", - "Epoch 8966: model set back to train mode\n", - "Epoch 8966: model parameters saved\n", - "Epoch 8967 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8967: avg_loss appended (1.3125)\n", - "Epoch 8967: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8967: accuracy appended (60.00%)\n", - "Epoch 8967: model set back to train mode\n", - "Epoch 8967: model parameters saved\n", - "Epoch 8968 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8968: avg_loss appended (1.3125)\n", - "Epoch 8968: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8968: accuracy appended (60.00%)\n", - "Epoch 8968: model set back to train mode\n", - "Epoch 8968: model parameters saved\n", - "Epoch 8969 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8969: avg_loss appended (1.3125)\n", - "Epoch 8969: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8969: accuracy appended (60.00%)\n", - "Epoch 8969: model set back to train mode\n", - "Epoch 8969: model parameters saved\n", - "Epoch 8970 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8970: avg_loss appended (1.3125)\n", - "Epoch 8970: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8970: accuracy appended (60.00%)\n", - "Epoch 8970: model set back to train mode\n", - "Epoch 8970: model parameters saved\n", - "Epoch 8971 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8971: avg_loss appended (1.3125)\n", - "Epoch 8971: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8971: accuracy appended (60.00%)\n", - "Epoch 8971: model set back to train mode\n", - "Epoch 8971: model parameters saved\n", - "Epoch 8972 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8972: avg_loss appended (1.3125)\n", - "Epoch 8972: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8972: accuracy appended (60.00%)\n", - "Epoch 8972: model set back to train mode\n", - "Epoch 8972: model parameters saved\n", - "Epoch 8973 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8973: avg_loss appended (1.3125)\n", - "Epoch 8973: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8973: accuracy appended (60.00%)\n", - "Epoch 8973: model set back to train mode\n", - "Epoch 8973: model parameters saved\n", - "Epoch 8974 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8974: avg_loss appended (1.3125)\n", - "Epoch 8974: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8974: accuracy appended (60.00%)\n", - "Epoch 8974: model set back to train mode\n", - "Epoch 8974: model parameters saved\n", - "Epoch 8975 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8975: avg_loss appended (1.3125)\n", - "Epoch 8975: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8975: accuracy appended (60.00%)\n", - "Epoch 8975: model set back to train mode\n", - "Epoch 8975: model parameters saved\n", - "Epoch 8976 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8976: avg_loss appended (1.3125)\n", - "Epoch 8976: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8976: accuracy appended (60.00%)\n", - "Epoch 8976: model set back to train mode\n", - "Epoch 8976: model parameters saved\n", - "Epoch 8977 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8977: avg_loss appended (1.3125)\n", - "Epoch 8977: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8977: accuracy appended (60.00%)\n", - "Epoch 8977: model set back to train mode\n", - "Epoch 8977: model parameters saved\n", - "Epoch 8978 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8978: avg_loss appended (1.3125)\n", - "Epoch 8978: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8978: accuracy appended (60.00%)\n", - "Epoch 8978: model set back to train mode\n", - "Epoch 8978: model parameters saved\n", - "Epoch 8979 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8979: avg_loss appended (1.3125)\n", - "Epoch 8979: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8979: accuracy appended (60.00%)\n", - "Epoch 8979: model set back to train mode\n", - "Epoch 8979: model parameters saved\n", - "Epoch 8980 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8980: avg_loss appended (1.3125)\n", - "Epoch 8980: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8980: accuracy appended (60.00%)\n", - "Epoch 8980: model set back to train mode\n", - "Epoch 8980: model parameters saved\n", - "Epoch 8981 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8981: avg_loss appended (1.3125)\n", - "Epoch 8981: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8981: accuracy appended (60.00%)\n", - "Epoch 8981: model set back to train mode\n", - "Epoch 8981: model parameters saved\n", - "Epoch 8982 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8982: avg_loss appended (1.3125)\n", - "Epoch 8982: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8982: accuracy appended (60.00%)\n", - "Epoch 8982: model set back to train mode\n", - "Epoch 8982: model parameters saved\n", - "Epoch 8983 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8983: avg_loss appended (1.3125)\n", - "Epoch 8983: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8983: accuracy appended (60.00%)\n", - "Epoch 8983: model set back to train mode\n", - "Epoch 8983: model parameters saved\n", - "Epoch 8984 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8984: avg_loss appended (1.3125)\n", - "Epoch 8984: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8984: accuracy appended (60.00%)\n", - "Epoch 8984: model set back to train mode\n", - "Epoch 8984: model parameters saved\n", - "Epoch 8985 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8985: avg_loss appended (1.3125)\n", - "Epoch 8985: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8985: accuracy appended (60.00%)\n", - "Epoch 8985: model set back to train mode\n", - "Epoch 8985: model parameters saved\n", - "Epoch 8986 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8986: avg_loss appended (1.3125)\n", - "Epoch 8986: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8986: accuracy appended (60.00%)\n", - "Epoch 8986: model set back to train mode\n", - "Epoch 8986: model parameters saved\n", - "Epoch 8987 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8987: avg_loss appended (1.3125)\n", - "Epoch 8987: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8987: accuracy appended (60.00%)\n", - "Epoch 8987: model set back to train mode\n", - "Epoch 8987: model parameters saved\n", - "Epoch 8988 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8988: avg_loss appended (1.3125)\n", - "Epoch 8988: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8988: accuracy appended (60.00%)\n", - "Epoch 8988: model set back to train mode\n", - "Epoch 8988: model parameters saved\n", - "Epoch 8989 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8989: avg_loss appended (1.3125)\n", - "Epoch 8989: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8989: accuracy appended (60.00%)\n", - "Epoch 8989: model set back to train mode\n", - "Epoch 8989: model parameters saved\n", - "Epoch 8990 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8990: avg_loss appended (1.3125)\n", - "Epoch 8990: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8990: accuracy appended (60.00%)\n", - "Epoch 8990: model set back to train mode\n", - "Epoch 8990: model parameters saved\n", - "Epoch 8991 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8991: avg_loss appended (1.3125)\n", - "Epoch 8991: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8991: accuracy appended (60.00%)\n", - "Epoch 8991: model set back to train mode\n", - "Epoch 8991: model parameters saved\n", - "Epoch 8992 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8992: avg_loss appended (1.3125)\n", - "Epoch 8992: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8992: accuracy appended (60.00%)\n", - "Epoch 8992: model set back to train mode\n", - "Epoch 8992: model parameters saved\n", - "Epoch 8993 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8993: avg_loss appended (1.3125)\n", - "Epoch 8993: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8993: accuracy appended (60.00%)\n", - "Epoch 8993: model set back to train mode\n", - "Epoch 8993: model parameters saved\n", - "Epoch 8994 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8994: avg_loss appended (1.3125)\n", - "Epoch 8994: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8994: accuracy appended (60.00%)\n", - "Epoch 8994: model set back to train mode\n", - "Epoch 8994: model parameters saved\n", - "Epoch 8995 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8995: avg_loss appended (1.3125)\n", - "Epoch 8995: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8995: accuracy appended (60.00%)\n", - "Epoch 8995: model set back to train mode\n", - "Epoch 8995: model parameters saved\n", - "Epoch 8996 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8996: avg_loss appended (1.3125)\n", - "Epoch 8996: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8996: accuracy appended (60.00%)\n", - "Epoch 8996: model set back to train mode\n", - "Epoch 8996: model parameters saved\n", - "Epoch 8997 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8997: avg_loss appended (1.3125)\n", - "Epoch 8997: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8997: accuracy appended (60.00%)\n", - "Epoch 8997: model set back to train mode\n", - "Epoch 8997: model parameters saved\n", - "Epoch 8998 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8998: avg_loss appended (1.3125)\n", - "Epoch 8998: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8998: accuracy appended (60.00%)\n", - "Epoch 8998: model set back to train mode\n", - "Epoch 8998: model parameters saved\n", - "Epoch 8999 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 8999: avg_loss appended (1.3125)\n", - "Epoch 8999: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 8999: accuracy appended (60.00%)\n", - "Epoch 8999: model set back to train mode\n", - "Epoch 8999: model parameters saved\n", - "Epoch 9000 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9000: avg_loss appended (1.3125)\n", - "Epoch 9000: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9000: accuracy appended (60.00%)\n", - "Epoch 9000: model set back to train mode\n", - "Epoch 9000: model parameters saved\n", - "Epoch 9000/10000, Loss: 1.3125, Accuracy: 60.00%\n", - "Epoch 9001 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9001: avg_loss appended (1.3125)\n", - "Epoch 9001: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9001: accuracy appended (60.00%)\n", - "Epoch 9001: model set back to train mode\n", - "Epoch 9001: model parameters saved\n", - "Epoch 9002 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9002: avg_loss appended (1.3125)\n", - "Epoch 9002: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9002: accuracy appended (60.00%)\n", - "Epoch 9002: model set back to train mode\n", - "Epoch 9002: model parameters saved\n", - "Epoch 9003 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9003: avg_loss appended (1.3125)\n", - "Epoch 9003: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9003: accuracy appended (60.00%)\n", - "Epoch 9003: model set back to train mode\n", - "Epoch 9003: model parameters saved\n", - "Epoch 9004 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9004: avg_loss appended (1.3125)\n", - "Epoch 9004: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9004: accuracy appended (60.00%)\n", - "Epoch 9004: model set back to train mode\n", - "Epoch 9004: model parameters saved\n", - "Epoch 9005 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9005: avg_loss appended (1.3125)\n", - "Epoch 9005: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9005: accuracy appended (60.00%)\n", - "Epoch 9005: model set back to train mode\n", - "Epoch 9005: model parameters saved\n", - "Epoch 9006 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9006: avg_loss appended (1.3125)\n", - "Epoch 9006: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9006: accuracy appended (60.00%)\n", - "Epoch 9006: model set back to train mode\n", - "Epoch 9006: model parameters saved\n", - "Epoch 9007 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9007: avg_loss appended (1.3125)\n", - "Epoch 9007: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9007: accuracy appended (60.00%)\n", - "Epoch 9007: model set back to train mode\n", - "Epoch 9007: model parameters saved\n", - "Epoch 9008 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9008: avg_loss appended (1.3125)\n", - "Epoch 9008: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9008: accuracy appended (60.00%)\n", - "Epoch 9008: model set back to train mode\n", - "Epoch 9008: model parameters saved\n", - "Epoch 9009 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9009: avg_loss appended (1.3125)\n", - "Epoch 9009: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9009: accuracy appended (60.00%)\n", - "Epoch 9009: model set back to train mode\n", - "Epoch 9009: model parameters saved\n", - "Epoch 9010 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9010: avg_loss appended (1.3125)\n", - "Epoch 9010: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9010: accuracy appended (60.00%)\n", - "Epoch 9010: model set back to train mode\n", - "Epoch 9010: model parameters saved\n", - "Epoch 9011 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9011: avg_loss appended (1.3125)\n", - "Epoch 9011: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9011: accuracy appended (60.00%)\n", - "Epoch 9011: model set back to train mode\n", - "Epoch 9011: model parameters saved\n", - "Epoch 9012 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9012: avg_loss appended (1.3125)\n", - "Epoch 9012: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9012: accuracy appended (60.00%)\n", - "Epoch 9012: model set back to train mode\n", - "Epoch 9012: model parameters saved\n", - "Epoch 9013 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9013: avg_loss appended (1.3125)\n", - "Epoch 9013: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9013: accuracy appended (60.00%)\n", - "Epoch 9013: model set back to train mode\n", - "Epoch 9013: model parameters saved\n", - "Epoch 9014 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9014: avg_loss appended (1.3125)\n", - "Epoch 9014: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9014: accuracy appended (60.00%)\n", - "Epoch 9014: model set back to train mode\n", - "Epoch 9014: model parameters saved\n", - "Epoch 9015 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9015: avg_loss appended (1.3125)\n", - "Epoch 9015: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9015: accuracy appended (60.00%)\n", - "Epoch 9015: model set back to train mode\n", - "Epoch 9015: model parameters saved\n", - "Epoch 9016 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9016: avg_loss appended (1.3125)\n", - "Epoch 9016: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9016: accuracy appended (60.00%)\n", - "Epoch 9016: model set back to train mode\n", - "Epoch 9016: model parameters saved\n", - "Epoch 9017 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9017: avg_loss appended (1.3125)\n", - "Epoch 9017: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9017: accuracy appended (60.00%)\n", - "Epoch 9017: model set back to train mode\n", - "Epoch 9017: model parameters saved\n", - "Epoch 9018 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9018: avg_loss appended (1.3125)\n", - "Epoch 9018: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9018: accuracy appended (60.00%)\n", - "Epoch 9018: model set back to train mode\n", - "Epoch 9018: model parameters saved\n", - "Epoch 9019 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9019: avg_loss appended (1.3125)\n", - "Epoch 9019: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9019: accuracy appended (60.00%)\n", - "Epoch 9019: model set back to train mode\n", - "Epoch 9019: model parameters saved\n", - "Epoch 9020 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9020: avg_loss appended (1.3125)\n", - "Epoch 9020: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9020: accuracy appended (60.00%)\n", - "Epoch 9020: model set back to train mode\n", - "Epoch 9020: model parameters saved\n", - "Epoch 9021 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9021: avg_loss appended (1.3125)\n", - "Epoch 9021: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9021: accuracy appended (60.00%)\n", - "Epoch 9021: model set back to train mode\n", - "Epoch 9021: model parameters saved\n", - "Epoch 9022 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9022: avg_loss appended (1.3125)\n", - "Epoch 9022: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9022: accuracy appended (60.00%)\n", - "Epoch 9022: model set back to train mode\n", - "Epoch 9022: model parameters saved\n", - "Epoch 9023 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9023: avg_loss appended (1.3125)\n", - "Epoch 9023: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9023: accuracy appended (60.00%)\n", - "Epoch 9023: model set back to train mode\n", - "Epoch 9023: model parameters saved\n", - "Epoch 9024 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9024: avg_loss appended (1.3125)\n", - "Epoch 9024: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9024: accuracy appended (60.00%)\n", - "Epoch 9024: model set back to train mode\n", - "Epoch 9024: model parameters saved\n", - "Epoch 9025 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9025: avg_loss appended (1.3125)\n", - "Epoch 9025: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9025: accuracy appended (60.00%)\n", - "Epoch 9025: model set back to train mode\n", - "Epoch 9025: model parameters saved\n", - "Epoch 9026 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9026: avg_loss appended (1.3125)\n", - "Epoch 9026: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9026: accuracy appended (60.00%)\n", - "Epoch 9026: model set back to train mode\n", - "Epoch 9026: model parameters saved\n", - "Epoch 9027 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9027: avg_loss appended (1.3125)\n", - "Epoch 9027: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9027: accuracy appended (60.00%)\n", - "Epoch 9027: model set back to train mode\n", - "Epoch 9027: model parameters saved\n", - "Epoch 9028 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9028: avg_loss appended (1.3125)\n", - "Epoch 9028: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9028: accuracy appended (60.00%)\n", - "Epoch 9028: model set back to train mode\n", - "Epoch 9028: model parameters saved\n", - "Epoch 9029 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9029: avg_loss appended (1.3125)\n", - "Epoch 9029: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9029: accuracy appended (60.00%)\n", - "Epoch 9029: model set back to train mode\n", - "Epoch 9029: model parameters saved\n", - "Epoch 9030 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9030: avg_loss appended (1.3125)\n", - "Epoch 9030: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9030: accuracy appended (60.00%)\n", - "Epoch 9030: model set back to train mode\n", - "Epoch 9030: model parameters saved\n", - "Epoch 9031 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9031: avg_loss appended (1.3125)\n", - "Epoch 9031: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9031: accuracy appended (60.00%)\n", - "Epoch 9031: model set back to train mode\n", - "Epoch 9031: model parameters saved\n", - "Epoch 9032 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9032: avg_loss appended (1.3125)\n", - "Epoch 9032: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9032: accuracy appended (60.00%)\n", - "Epoch 9032: model set back to train mode\n", - "Epoch 9032: model parameters saved\n", - "Epoch 9033 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9033: avg_loss appended (1.3125)\n", - "Epoch 9033: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9033: accuracy appended (60.00%)\n", - "Epoch 9033: model set back to train mode\n", - "Epoch 9033: model parameters saved\n", - "Epoch 9034 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9034: avg_loss appended (1.3125)\n", - "Epoch 9034: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9034: accuracy appended (60.00%)\n", - "Epoch 9034: model set back to train mode\n", - "Epoch 9034: model parameters saved\n", - "Epoch 9035 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9035: avg_loss appended (1.3125)\n", - "Epoch 9035: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9035: accuracy appended (60.00%)\n", - "Epoch 9035: model set back to train mode\n", - "Epoch 9035: model parameters saved\n", - "Epoch 9036 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9036: avg_loss appended (1.3125)\n", - "Epoch 9036: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9036: accuracy appended (60.00%)\n", - "Epoch 9036: model set back to train mode\n", - "Epoch 9036: model parameters saved\n", - "Epoch 9037 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9037: avg_loss appended (1.3125)\n", - "Epoch 9037: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9037: accuracy appended (60.00%)\n", - "Epoch 9037: model set back to train mode\n", - "Epoch 9037: model parameters saved\n", - "Epoch 9038 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9038: avg_loss appended (1.3125)\n", - "Epoch 9038: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9038: accuracy appended (60.00%)\n", - "Epoch 9038: model set back to train mode\n", - "Epoch 9038: model parameters saved\n", - "Epoch 9039 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9039: avg_loss appended (1.3125)\n", - "Epoch 9039: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9039: accuracy appended (60.00%)\n", - "Epoch 9039: model set back to train mode\n", - "Epoch 9039: model parameters saved\n", - "Epoch 9040 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9040: avg_loss appended (1.3125)\n", - "Epoch 9040: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9040: accuracy appended (60.00%)\n", - "Epoch 9040: model set back to train mode\n", - "Epoch 9040: model parameters saved\n", - "Epoch 9041 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9041: avg_loss appended (1.3125)\n", - "Epoch 9041: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9041: accuracy appended (60.00%)\n", - "Epoch 9041: model set back to train mode\n", - "Epoch 9041: model parameters saved\n", - "Epoch 9042 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9042: avg_loss appended (1.3125)\n", - "Epoch 9042: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9042: accuracy appended (60.00%)\n", - "Epoch 9042: model set back to train mode\n", - "Epoch 9042: model parameters saved\n", - "Epoch 9043 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9043: avg_loss appended (1.3125)\n", - "Epoch 9043: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9043: accuracy appended (60.00%)\n", - "Epoch 9043: model set back to train mode\n", - "Epoch 9043: model parameters saved\n", - "Epoch 9044 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9044: avg_loss appended (1.3125)\n", - "Epoch 9044: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9044: accuracy appended (60.00%)\n", - "Epoch 9044: model set back to train mode\n", - "Epoch 9044: model parameters saved\n", - "Epoch 9045 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9045: avg_loss appended (1.3125)\n", - "Epoch 9045: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9045: accuracy appended (60.00%)\n", - "Epoch 9045: model set back to train mode\n", - "Epoch 9045: model parameters saved\n", - "Epoch 9046 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9046: avg_loss appended (1.3125)\n", - "Epoch 9046: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9046: accuracy appended (60.00%)\n", - "Epoch 9046: model set back to train mode\n", - "Epoch 9046: model parameters saved\n", - "Epoch 9047 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9047: avg_loss appended (1.3125)\n", - "Epoch 9047: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9047: accuracy appended (60.00%)\n", - "Epoch 9047: model set back to train mode\n", - "Epoch 9047: model parameters saved\n", - "Epoch 9048 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9048: avg_loss appended (1.3125)\n", - "Epoch 9048: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9048: accuracy appended (60.00%)\n", - "Epoch 9048: model set back to train mode\n", - "Epoch 9048: model parameters saved\n", - "Epoch 9049 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9049: avg_loss appended (1.3125)\n", - "Epoch 9049: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9049: accuracy appended (60.00%)\n", - "Epoch 9049: model set back to train mode\n", - "Epoch 9049: model parameters saved\n", - "Epoch 9050 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9050: avg_loss appended (1.3125)\n", - "Epoch 9050: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9050: accuracy appended (60.00%)\n", - "Epoch 9050: model set back to train mode\n", - "Epoch 9050: model parameters saved\n", - "Epoch 9051 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9051: avg_loss appended (1.3125)\n", - "Epoch 9051: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9051: accuracy appended (60.00%)\n", - "Epoch 9051: model set back to train mode\n", - "Epoch 9051: model parameters saved\n", - "Epoch 9052 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9052: avg_loss appended (1.3125)\n", - "Epoch 9052: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9052: accuracy appended (60.00%)\n", - "Epoch 9052: model set back to train mode\n", - "Epoch 9052: model parameters saved\n", - "Epoch 9053 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9053: avg_loss appended (1.3125)\n", - "Epoch 9053: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9053: accuracy appended (60.00%)\n", - "Epoch 9053: model set back to train mode\n", - "Epoch 9053: model parameters saved\n", - "Epoch 9054 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9054: avg_loss appended (1.3125)\n", - "Epoch 9054: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9054: accuracy appended (60.00%)\n", - "Epoch 9054: model set back to train mode\n", - "Epoch 9054: model parameters saved\n", - "Epoch 9055 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9055: avg_loss appended (1.3125)\n", - "Epoch 9055: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9055: accuracy appended (60.00%)\n", - "Epoch 9055: model set back to train mode\n", - "Epoch 9055: model parameters saved\n", - "Epoch 9056 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9056: avg_loss appended (1.3125)\n", - "Epoch 9056: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9056: accuracy appended (60.00%)\n", - "Epoch 9056: model set back to train mode\n", - "Epoch 9056: model parameters saved\n", - "Epoch 9057 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9057: avg_loss appended (1.3125)\n", - "Epoch 9057: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9057: accuracy appended (60.00%)\n", - "Epoch 9057: model set back to train mode\n", - "Epoch 9057: model parameters saved\n", - "Epoch 9058 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9058: avg_loss appended (1.3125)\n", - "Epoch 9058: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9058: accuracy appended (60.00%)\n", - "Epoch 9058: model set back to train mode\n", - "Epoch 9058: model parameters saved\n", - "Epoch 9059 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9059: avg_loss appended (1.3125)\n", - "Epoch 9059: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9059: accuracy appended (60.00%)\n", - "Epoch 9059: model set back to train mode\n", - "Epoch 9059: model parameters saved\n", - "Epoch 9060 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9060: avg_loss appended (1.3125)\n", - "Epoch 9060: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9060: accuracy appended (60.00%)\n", - "Epoch 9060: model set back to train mode\n", - "Epoch 9060: model parameters saved\n", - "Epoch 9061 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9061: avg_loss appended (1.3125)\n", - "Epoch 9061: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9061: accuracy appended (60.00%)\n", - "Epoch 9061: model set back to train mode\n", - "Epoch 9061: model parameters saved\n", - "Epoch 9062 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9062: avg_loss appended (1.3125)\n", - "Epoch 9062: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9062: accuracy appended (60.00%)\n", - "Epoch 9062: model set back to train mode\n", - "Epoch 9062: model parameters saved\n", - "Epoch 9063 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9063: avg_loss appended (1.3125)\n", - "Epoch 9063: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9063: accuracy appended (60.00%)\n", - "Epoch 9063: model set back to train mode\n", - "Epoch 9063: model parameters saved\n", - "Epoch 9064 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9064: avg_loss appended (1.3125)\n", - "Epoch 9064: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9064: accuracy appended (60.00%)\n", - "Epoch 9064: model set back to train mode\n", - "Epoch 9064: model parameters saved\n", - "Epoch 9065 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9065: avg_loss appended (1.3125)\n", - "Epoch 9065: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9065: accuracy appended (60.00%)\n", - "Epoch 9065: model set back to train mode\n", - "Epoch 9065: model parameters saved\n", - "Epoch 9066 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9066: avg_loss appended (1.3125)\n", - "Epoch 9066: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9066: accuracy appended (60.00%)\n", - "Epoch 9066: model set back to train mode\n", - "Epoch 9066: model parameters saved\n", - "Epoch 9067 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9067: avg_loss appended (1.3125)\n", - "Epoch 9067: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9067: accuracy appended (60.00%)\n", - "Epoch 9067: model set back to train mode\n", - "Epoch 9067: model parameters saved\n", - "Epoch 9068 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9068: avg_loss appended (1.3125)\n", - "Epoch 9068: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9068: accuracy appended (60.00%)\n", - "Epoch 9068: model set back to train mode\n", - "Epoch 9068: model parameters saved\n", - "Epoch 9069 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9069: avg_loss appended (1.3125)\n", - "Epoch 9069: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9069: accuracy appended (60.00%)\n", - "Epoch 9069: model set back to train mode\n", - "Epoch 9069: model parameters saved\n", - "Epoch 9070 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9070: avg_loss appended (1.3125)\n", - "Epoch 9070: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9070: accuracy appended (60.00%)\n", - "Epoch 9070: model set back to train mode\n", - "Epoch 9070: model parameters saved\n", - "Epoch 9071 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9071: avg_loss appended (1.3125)\n", - "Epoch 9071: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9071: accuracy appended (60.00%)\n", - "Epoch 9071: model set back to train mode\n", - "Epoch 9071: model parameters saved\n", - "Epoch 9072 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9072: avg_loss appended (1.3125)\n", - "Epoch 9072: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9072: accuracy appended (60.00%)\n", - "Epoch 9072: model set back to train mode\n", - "Epoch 9072: model parameters saved\n", - "Epoch 9073 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9073: avg_loss appended (1.3125)\n", - "Epoch 9073: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9073: accuracy appended (60.00%)\n", - "Epoch 9073: model set back to train mode\n", - "Epoch 9073: model parameters saved\n", - "Epoch 9074 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9074: avg_loss appended (1.3125)\n", - "Epoch 9074: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9074: accuracy appended (60.00%)\n", - "Epoch 9074: model set back to train mode\n", - "Epoch 9074: model parameters saved\n", - "Epoch 9075 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9075: avg_loss appended (1.3125)\n", - "Epoch 9075: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9075: accuracy appended (60.00%)\n", - "Epoch 9075: model set back to train mode\n", - "Epoch 9075: model parameters saved\n", - "Epoch 9076 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9076: avg_loss appended (1.3125)\n", - "Epoch 9076: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9076: accuracy appended (60.00%)\n", - "Epoch 9076: model set back to train mode\n", - "Epoch 9076: model parameters saved\n", - "Epoch 9077 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9077: avg_loss appended (1.3125)\n", - "Epoch 9077: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9077: accuracy appended (60.00%)\n", - "Epoch 9077: model set back to train mode\n", - "Epoch 9077: model parameters saved\n", - "Epoch 9078 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9078: avg_loss appended (1.3125)\n", - "Epoch 9078: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9078: accuracy appended (60.00%)\n", - "Epoch 9078: model set back to train mode\n", - "Epoch 9078: model parameters saved\n", - "Epoch 9079 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9079: avg_loss appended (1.3125)\n", - "Epoch 9079: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9079: accuracy appended (60.00%)\n", - "Epoch 9079: model set back to train mode\n", - "Epoch 9079: model parameters saved\n", - "Epoch 9080 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9080: avg_loss appended (1.3125)\n", - "Epoch 9080: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9080: accuracy appended (60.00%)\n", - "Epoch 9080: model set back to train mode\n", - "Epoch 9080: model parameters saved\n", - "Epoch 9081 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9081: avg_loss appended (1.3125)\n", - "Epoch 9081: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9081: accuracy appended (60.00%)\n", - "Epoch 9081: model set back to train mode\n", - "Epoch 9081: model parameters saved\n", - "Epoch 9082 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9082: avg_loss appended (1.3125)\n", - "Epoch 9082: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9082: accuracy appended (60.00%)\n", - "Epoch 9082: model set back to train mode\n", - "Epoch 9082: model parameters saved\n", - "Epoch 9083 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9083: avg_loss appended (1.3125)\n", - "Epoch 9083: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9083: accuracy appended (60.00%)\n", - "Epoch 9083: model set back to train mode\n", - "Epoch 9083: model parameters saved\n", - "Epoch 9084 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9084: avg_loss appended (1.3125)\n", - "Epoch 9084: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9084: accuracy appended (60.00%)\n", - "Epoch 9084: model set back to train mode\n", - "Epoch 9084: model parameters saved\n", - "Epoch 9085 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9085: avg_loss appended (1.3125)\n", - "Epoch 9085: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9085: accuracy appended (60.00%)\n", - "Epoch 9085: model set back to train mode\n", - "Epoch 9085: model parameters saved\n", - "Epoch 9086 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9086: avg_loss appended (1.3125)\n", - "Epoch 9086: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9086: accuracy appended (60.00%)\n", - "Epoch 9086: model set back to train mode\n", - "Epoch 9086: model parameters saved\n", - "Epoch 9087 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9087: avg_loss appended (1.3125)\n", - "Epoch 9087: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9087: accuracy appended (60.00%)\n", - "Epoch 9087: model set back to train mode\n", - "Epoch 9087: model parameters saved\n", - "Epoch 9088 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9088: avg_loss appended (1.3125)\n", - "Epoch 9088: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9088: accuracy appended (60.00%)\n", - "Epoch 9088: model set back to train mode\n", - "Epoch 9088: model parameters saved\n", - "Epoch 9089 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9089: avg_loss appended (1.3125)\n", - "Epoch 9089: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9089: accuracy appended (60.00%)\n", - "Epoch 9089: model set back to train mode\n", - "Epoch 9089: model parameters saved\n", - "Epoch 9090 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9090: avg_loss appended (1.3125)\n", - "Epoch 9090: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9090: accuracy appended (60.00%)\n", - "Epoch 9090: model set back to train mode\n", - "Epoch 9090: model parameters saved\n", - "Epoch 9091 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9091: avg_loss appended (1.3125)\n", - "Epoch 9091: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9091: accuracy appended (60.00%)\n", - "Epoch 9091: model set back to train mode\n", - "Epoch 9091: model parameters saved\n", - "Epoch 9092 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9092: avg_loss appended (1.3125)\n", - "Epoch 9092: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9092: accuracy appended (60.00%)\n", - "Epoch 9092: model set back to train mode\n", - "Epoch 9092: model parameters saved\n", - "Epoch 9093 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9093: avg_loss appended (1.3125)\n", - "Epoch 9093: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9093: accuracy appended (60.00%)\n", - "Epoch 9093: model set back to train mode\n", - "Epoch 9093: model parameters saved\n", - "Epoch 9094 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9094: avg_loss appended (1.3125)\n", - "Epoch 9094: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9094: accuracy appended (60.00%)\n", - "Epoch 9094: model set back to train mode\n", - "Epoch 9094: model parameters saved\n", - "Epoch 9095 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9095: avg_loss appended (1.3125)\n", - "Epoch 9095: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9095: accuracy appended (60.00%)\n", - "Epoch 9095: model set back to train mode\n", - "Epoch 9095: model parameters saved\n", - "Epoch 9096 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9096: avg_loss appended (1.3125)\n", - "Epoch 9096: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9096: accuracy appended (60.00%)\n", - "Epoch 9096: model set back to train mode\n", - "Epoch 9096: model parameters saved\n", - "Epoch 9097 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9097: avg_loss appended (1.3125)\n", - "Epoch 9097: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9097: accuracy appended (60.00%)\n", - "Epoch 9097: model set back to train mode\n", - "Epoch 9097: model parameters saved\n", - "Epoch 9098 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9098: avg_loss appended (1.3125)\n", - "Epoch 9098: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9098: accuracy appended (60.00%)\n", - "Epoch 9098: model set back to train mode\n", - "Epoch 9098: model parameters saved\n", - "Epoch 9099 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9099: avg_loss appended (1.3125)\n", - "Epoch 9099: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9099: accuracy appended (60.00%)\n", - "Epoch 9099: model set back to train mode\n", - "Epoch 9099: model parameters saved\n", - "Epoch 9100 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9100: avg_loss appended (1.3125)\n", - "Epoch 9100: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9100: accuracy appended (60.00%)\n", - "Epoch 9100: model set back to train mode\n", - "Epoch 9100: model parameters saved\n", - "Epoch 9100/10000, Loss: 1.3125, Accuracy: 60.00%\n", - "Epoch 9101 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9101: avg_loss appended (1.3125)\n", - "Epoch 9101: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9101: accuracy appended (60.00%)\n", - "Epoch 9101: model set back to train mode\n", - "Epoch 9101: model parameters saved\n", - "Epoch 9102 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9102: avg_loss appended (1.3125)\n", - "Epoch 9102: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9102: accuracy appended (60.00%)\n", - "Epoch 9102: model set back to train mode\n", - "Epoch 9102: model parameters saved\n", - "Epoch 9103 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9103: avg_loss appended (1.3125)\n", - "Epoch 9103: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9103: accuracy appended (60.00%)\n", - "Epoch 9103: model set back to train mode\n", - "Epoch 9103: model parameters saved\n", - "Epoch 9104 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9104: avg_loss appended (1.3125)\n", - "Epoch 9104: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9104: accuracy appended (60.00%)\n", - "Epoch 9104: model set back to train mode\n", - "Epoch 9104: model parameters saved\n", - "Epoch 9105 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9105: avg_loss appended (1.3125)\n", - "Epoch 9105: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9105: accuracy appended (60.00%)\n", - "Epoch 9105: model set back to train mode\n", - "Epoch 9105: model parameters saved\n", - "Epoch 9106 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9106: avg_loss appended (1.3125)\n", - "Epoch 9106: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9106: accuracy appended (60.00%)\n", - "Epoch 9106: model set back to train mode\n", - "Epoch 9106: model parameters saved\n", - "Epoch 9107 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9107: avg_loss appended (1.3125)\n", - "Epoch 9107: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9107: accuracy appended (60.00%)\n", - "Epoch 9107: model set back to train mode\n", - "Epoch 9107: model parameters saved\n", - "Epoch 9108 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9108: avg_loss appended (1.3125)\n", - "Epoch 9108: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9108: accuracy appended (60.00%)\n", - "Epoch 9108: model set back to train mode\n", - "Epoch 9108: model parameters saved\n", - "Epoch 9109 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9109: avg_loss appended (1.3125)\n", - "Epoch 9109: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9109: accuracy appended (60.00%)\n", - "Epoch 9109: model set back to train mode\n", - "Epoch 9109: model parameters saved\n", - "Epoch 9110 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9110: avg_loss appended (1.3125)\n", - "Epoch 9110: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9110: accuracy appended (60.00%)\n", - "Epoch 9110: model set back to train mode\n", - "Epoch 9110: model parameters saved\n", - "Epoch 9111 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9111: avg_loss appended (1.3125)\n", - "Epoch 9111: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9111: accuracy appended (60.00%)\n", - "Epoch 9111: model set back to train mode\n", - "Epoch 9111: model parameters saved\n", - "Epoch 9112 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9112: avg_loss appended (1.3125)\n", - "Epoch 9112: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9112: accuracy appended (60.00%)\n", - "Epoch 9112: model set back to train mode\n", - "Epoch 9112: model parameters saved\n", - "Epoch 9113 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9113: avg_loss appended (1.3125)\n", - "Epoch 9113: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9113: accuracy appended (60.00%)\n", - "Epoch 9113: model set back to train mode\n", - "Epoch 9113: model parameters saved\n", - "Epoch 9114 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9114: avg_loss appended (1.3125)\n", - "Epoch 9114: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9114: accuracy appended (60.00%)\n", - "Epoch 9114: model set back to train mode\n", - "Epoch 9114: model parameters saved\n", - "Epoch 9115 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9115: avg_loss appended (1.3125)\n", - "Epoch 9115: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9115: accuracy appended (60.00%)\n", - "Epoch 9115: model set back to train mode\n", - "Epoch 9115: model parameters saved\n", - "Epoch 9116 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9116: avg_loss appended (1.3125)\n", - "Epoch 9116: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9116: accuracy appended (60.00%)\n", - "Epoch 9116: model set back to train mode\n", - "Epoch 9116: model parameters saved\n", - "Epoch 9117 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9117: avg_loss appended (1.3125)\n", - "Epoch 9117: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9117: accuracy appended (60.00%)\n", - "Epoch 9117: model set back to train mode\n", - "Epoch 9117: model parameters saved\n", - "Epoch 9118 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9118: avg_loss appended (1.3125)\n", - "Epoch 9118: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9118: accuracy appended (60.00%)\n", - "Epoch 9118: model set back to train mode\n", - "Epoch 9118: model parameters saved\n", - "Epoch 9119 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9119: avg_loss appended (1.3125)\n", - "Epoch 9119: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9119: accuracy appended (60.00%)\n", - "Epoch 9119: model set back to train mode\n", - "Epoch 9119: model parameters saved\n", - "Epoch 9120 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9120: avg_loss appended (1.3125)\n", - "Epoch 9120: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9120: accuracy appended (60.00%)\n", - "Epoch 9120: model set back to train mode\n", - "Epoch 9120: model parameters saved\n", - "Epoch 9121 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9121: avg_loss appended (1.3125)\n", - "Epoch 9121: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9121: accuracy appended (60.00%)\n", - "Epoch 9121: model set back to train mode\n", - "Epoch 9121: model parameters saved\n", - "Epoch 9122 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9122: avg_loss appended (1.3125)\n", - "Epoch 9122: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9122: accuracy appended (60.00%)\n", - "Epoch 9122: model set back to train mode\n", - "Epoch 9122: model parameters saved\n", - "Epoch 9123 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9123: avg_loss appended (1.3125)\n", - "Epoch 9123: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9123: accuracy appended (60.00%)\n", - "Epoch 9123: model set back to train mode\n", - "Epoch 9123: model parameters saved\n", - "Epoch 9124 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9124: avg_loss appended (1.3125)\n", - "Epoch 9124: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9124: accuracy appended (60.00%)\n", - "Epoch 9124: model set back to train mode\n", - "Epoch 9124: model parameters saved\n", - "Epoch 9125 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9125: avg_loss appended (1.3125)\n", - "Epoch 9125: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9125: accuracy appended (60.00%)\n", - "Epoch 9125: model set back to train mode\n", - "Epoch 9125: model parameters saved\n", - "Epoch 9126 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9126: avg_loss appended (1.3125)\n", - "Epoch 9126: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9126: accuracy appended (60.00%)\n", - "Epoch 9126: model set back to train mode\n", - "Epoch 9126: model parameters saved\n", - "Epoch 9127 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9127: avg_loss appended (1.3125)\n", - "Epoch 9127: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9127: accuracy appended (60.00%)\n", - "Epoch 9127: model set back to train mode\n", - "Epoch 9127: model parameters saved\n", - "Epoch 9128 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9128: avg_loss appended (1.3125)\n", - "Epoch 9128: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9128: accuracy appended (60.00%)\n", - "Epoch 9128: model set back to train mode\n", - "Epoch 9128: model parameters saved\n", - "Epoch 9129 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9129: avg_loss appended (1.3125)\n", - "Epoch 9129: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9129: accuracy appended (60.00%)\n", - "Epoch 9129: model set back to train mode\n", - "Epoch 9129: model parameters saved\n", - "Epoch 9130 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9130: avg_loss appended (1.3125)\n", - "Epoch 9130: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9130: accuracy appended (60.00%)\n", - "Epoch 9130: model set back to train mode\n", - "Epoch 9130: model parameters saved\n", - "Epoch 9131 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9131: avg_loss appended (1.3125)\n", - "Epoch 9131: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9131: accuracy appended (60.00%)\n", - "Epoch 9131: model set back to train mode\n", - "Epoch 9131: model parameters saved\n", - "Epoch 9132 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9132: avg_loss appended (1.3125)\n", - "Epoch 9132: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9132: accuracy appended (60.00%)\n", - "Epoch 9132: model set back to train mode\n", - "Epoch 9132: model parameters saved\n", - "Epoch 9133 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9133: avg_loss appended (1.3125)\n", - "Epoch 9133: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9133: accuracy appended (60.00%)\n", - "Epoch 9133: model set back to train mode\n", - "Epoch 9133: model parameters saved\n", - "Epoch 9134 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9134: avg_loss appended (1.3125)\n", - "Epoch 9134: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9134: accuracy appended (60.00%)\n", - "Epoch 9134: model set back to train mode\n", - "Epoch 9134: model parameters saved\n", - "Epoch 9135 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9135: avg_loss appended (1.3125)\n", - "Epoch 9135: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9135: accuracy appended (60.00%)\n", - "Epoch 9135: model set back to train mode\n", - "Epoch 9135: model parameters saved\n", - "Epoch 9136 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9136: avg_loss appended (1.3125)\n", - "Epoch 9136: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9136: accuracy appended (60.00%)\n", - "Epoch 9136: model set back to train mode\n", - "Epoch 9136: model parameters saved\n", - "Epoch 9137 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9137: avg_loss appended (1.3125)\n", - "Epoch 9137: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9137: accuracy appended (60.00%)\n", - "Epoch 9137: model set back to train mode\n", - "Epoch 9137: model parameters saved\n", - "Epoch 9138 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9138: avg_loss appended (1.3125)\n", - "Epoch 9138: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9138: accuracy appended (60.00%)\n", - "Epoch 9138: model set back to train mode\n", - "Epoch 9138: model parameters saved\n", - "Epoch 9139 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9139: avg_loss appended (1.3125)\n", - "Epoch 9139: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9139: accuracy appended (60.00%)\n", - "Epoch 9139: model set back to train mode\n", - "Epoch 9139: model parameters saved\n", - "Epoch 9140 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9140: avg_loss appended (1.3125)\n", - "Epoch 9140: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9140: accuracy appended (60.00%)\n", - "Epoch 9140: model set back to train mode\n", - "Epoch 9140: model parameters saved\n", - "Epoch 9141 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9141: avg_loss appended (1.3125)\n", - "Epoch 9141: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9141: accuracy appended (60.00%)\n", - "Epoch 9141: model set back to train mode\n", - "Epoch 9141: model parameters saved\n", - "Epoch 9142 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9142: avg_loss appended (1.3125)\n", - "Epoch 9142: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9142: accuracy appended (60.00%)\n", - "Epoch 9142: model set back to train mode\n", - "Epoch 9142: model parameters saved\n", - "Epoch 9143 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9143: avg_loss appended (1.3125)\n", - "Epoch 9143: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9143: accuracy appended (60.00%)\n", - "Epoch 9143: model set back to train mode\n", - "Epoch 9143: model parameters saved\n", - "Epoch 9144 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9144: avg_loss appended (1.3125)\n", - "Epoch 9144: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9144: accuracy appended (60.00%)\n", - "Epoch 9144: model set back to train mode\n", - "Epoch 9144: model parameters saved\n", - "Epoch 9145 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9145: avg_loss appended (1.3125)\n", - "Epoch 9145: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9145: accuracy appended (60.00%)\n", - "Epoch 9145: model set back to train mode\n", - "Epoch 9145: model parameters saved\n", - "Epoch 9146 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9146: avg_loss appended (1.3125)\n", - "Epoch 9146: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9146: accuracy appended (60.00%)\n", - "Epoch 9146: model set back to train mode\n", - "Epoch 9146: model parameters saved\n", - "Epoch 9147 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9147: avg_loss appended (1.3125)\n", - "Epoch 9147: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9147: accuracy appended (60.00%)\n", - "Epoch 9147: model set back to train mode\n", - "Epoch 9147: model parameters saved\n", - "Epoch 9148 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9148: avg_loss appended (1.3125)\n", - "Epoch 9148: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9148: accuracy appended (60.00%)\n", - "Epoch 9148: model set back to train mode\n", - "Epoch 9148: model parameters saved\n", - "Epoch 9149 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9149: avg_loss appended (1.3125)\n", - "Epoch 9149: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9149: accuracy appended (60.00%)\n", - "Epoch 9149: model set back to train mode\n", - "Epoch 9149: model parameters saved\n", - "Epoch 9150 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9150: avg_loss appended (1.3125)\n", - "Epoch 9150: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9150: accuracy appended (60.00%)\n", - "Epoch 9150: model set back to train mode\n", - "Epoch 9150: model parameters saved\n", - "Epoch 9151 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9151: avg_loss appended (1.3125)\n", - "Epoch 9151: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9151: accuracy appended (60.00%)\n", - "Epoch 9151: model set back to train mode\n", - "Epoch 9151: model parameters saved\n", - "Epoch 9152 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9152: avg_loss appended (1.3125)\n", - "Epoch 9152: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9152: accuracy appended (60.00%)\n", - "Epoch 9152: model set back to train mode\n", - "Epoch 9152: model parameters saved\n", - "Epoch 9153 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9153: avg_loss appended (1.3125)\n", - "Epoch 9153: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9153: accuracy appended (60.00%)\n", - "Epoch 9153: model set back to train mode\n", - "Epoch 9153: model parameters saved\n", - "Epoch 9154 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9154: avg_loss appended (1.3125)\n", - "Epoch 9154: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9154: accuracy appended (60.00%)\n", - "Epoch 9154: model set back to train mode\n", - "Epoch 9154: model parameters saved\n", - "Epoch 9155 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9155: avg_loss appended (1.3125)\n", - "Epoch 9155: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9155: accuracy appended (60.00%)\n", - "Epoch 9155: model set back to train mode\n", - "Epoch 9155: model parameters saved\n", - "Epoch 9156 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9156: avg_loss appended (1.3125)\n", - "Epoch 9156: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9156: accuracy appended (60.00%)\n", - "Epoch 9156: model set back to train mode\n", - "Epoch 9156: model parameters saved\n", - "Epoch 9157 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9157: avg_loss appended (1.3125)\n", - "Epoch 9157: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9157: accuracy appended (60.00%)\n", - "Epoch 9157: model set back to train mode\n", - "Epoch 9157: model parameters saved\n", - "Epoch 9158 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9158: avg_loss appended (1.3125)\n", - "Epoch 9158: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9158: accuracy appended (60.00%)\n", - "Epoch 9158: model set back to train mode\n", - "Epoch 9158: model parameters saved\n", - "Epoch 9159 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9159: avg_loss appended (1.3125)\n", - "Epoch 9159: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9159: accuracy appended (60.00%)\n", - "Epoch 9159: model set back to train mode\n", - "Epoch 9159: model parameters saved\n", - "Epoch 9160 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9160: avg_loss appended (1.3125)\n", - "Epoch 9160: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9160: accuracy appended (60.00%)\n", - "Epoch 9160: model set back to train mode\n", - "Epoch 9160: model parameters saved\n", - "Epoch 9161 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9161: avg_loss appended (1.3125)\n", - "Epoch 9161: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9161: accuracy appended (60.00%)\n", - "Epoch 9161: model set back to train mode\n", - "Epoch 9161: model parameters saved\n", - "Epoch 9162 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9162: avg_loss appended (1.3125)\n", - "Epoch 9162: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9162: accuracy appended (60.00%)\n", - "Epoch 9162: model set back to train mode\n", - "Epoch 9162: model parameters saved\n", - "Epoch 9163 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9163: avg_loss appended (1.3125)\n", - "Epoch 9163: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9163: accuracy appended (60.00%)\n", - "Epoch 9163: model set back to train mode\n", - "Epoch 9163: model parameters saved\n", - "Epoch 9164 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9164: avg_loss appended (1.3125)\n", - "Epoch 9164: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9164: accuracy appended (60.00%)\n", - "Epoch 9164: model set back to train mode\n", - "Epoch 9164: model parameters saved\n", - "Epoch 9165 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9165: avg_loss appended (1.3125)\n", - "Epoch 9165: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9165: accuracy appended (60.00%)\n", - "Epoch 9165: model set back to train mode\n", - "Epoch 9165: model parameters saved\n", - "Epoch 9166 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9166: avg_loss appended (1.3125)\n", - "Epoch 9166: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9166: accuracy appended (60.00%)\n", - "Epoch 9166: model set back to train mode\n", - "Epoch 9166: model parameters saved\n", - "Epoch 9167 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9167: avg_loss appended (1.3125)\n", - "Epoch 9167: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9167: accuracy appended (60.00%)\n", - "Epoch 9167: model set back to train mode\n", - "Epoch 9167: model parameters saved\n", - "Epoch 9168 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9168: avg_loss appended (1.3125)\n", - "Epoch 9168: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9168: accuracy appended (60.00%)\n", - "Epoch 9168: model set back to train mode\n", - "Epoch 9168: model parameters saved\n", - "Epoch 9169 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9169: avg_loss appended (1.3125)\n", - "Epoch 9169: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9169: accuracy appended (60.00%)\n", - "Epoch 9169: model set back to train mode\n", - "Epoch 9169: model parameters saved\n", - "Epoch 9170 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9170: avg_loss appended (1.3125)\n", - "Epoch 9170: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9170: accuracy appended (60.00%)\n", - "Epoch 9170: model set back to train mode\n", - "Epoch 9170: model parameters saved\n", - "Epoch 9171 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9171: avg_loss appended (1.3125)\n", - "Epoch 9171: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9171: accuracy appended (60.00%)\n", - "Epoch 9171: model set back to train mode\n", - "Epoch 9171: model parameters saved\n", - "Epoch 9172 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9172: avg_loss appended (1.3125)\n", - "Epoch 9172: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9172: accuracy appended (60.00%)\n", - "Epoch 9172: model set back to train mode\n", - "Epoch 9172: model parameters saved\n", - "Epoch 9173 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9173: avg_loss appended (1.3125)\n", - "Epoch 9173: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9173: accuracy appended (60.00%)\n", - "Epoch 9173: model set back to train mode\n", - "Epoch 9173: model parameters saved\n", - "Epoch 9174 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9174: avg_loss appended (1.3125)\n", - "Epoch 9174: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9174: accuracy appended (60.00%)\n", - "Epoch 9174: model set back to train mode\n", - "Epoch 9174: model parameters saved\n", - "Epoch 9175 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9175: avg_loss appended (1.3125)\n", - "Epoch 9175: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9175: accuracy appended (60.00%)\n", - "Epoch 9175: model set back to train mode\n", - "Epoch 9175: model parameters saved\n", - "Epoch 9176 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9176: avg_loss appended (1.3125)\n", - "Epoch 9176: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9176: accuracy appended (60.00%)\n", - "Epoch 9176: model set back to train mode\n", - "Epoch 9176: model parameters saved\n", - "Epoch 9177 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9177: avg_loss appended (1.3125)\n", - "Epoch 9177: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9177: accuracy appended (60.00%)\n", - "Epoch 9177: model set back to train mode\n", - "Epoch 9177: model parameters saved\n", - "Epoch 9178 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9178: avg_loss appended (1.3125)\n", - "Epoch 9178: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9178: accuracy appended (60.00%)\n", - "Epoch 9178: model set back to train mode\n", - "Epoch 9178: model parameters saved\n", - "Epoch 9179 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9179: avg_loss appended (1.3125)\n", - "Epoch 9179: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9179: accuracy appended (60.00%)\n", - "Epoch 9179: model set back to train mode\n", - "Epoch 9179: model parameters saved\n", - "Epoch 9180 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9180: avg_loss appended (1.3125)\n", - "Epoch 9180: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9180: accuracy appended (60.00%)\n", - "Epoch 9180: model set back to train mode\n", - "Epoch 9180: model parameters saved\n", - "Epoch 9181 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9181: avg_loss appended (1.3125)\n", - "Epoch 9181: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9181: accuracy appended (60.00%)\n", - "Epoch 9181: model set back to train mode\n", - "Epoch 9181: model parameters saved\n", - "Epoch 9182 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9182: avg_loss appended (1.3125)\n", - "Epoch 9182: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9182: accuracy appended (60.00%)\n", - "Epoch 9182: model set back to train mode\n", - "Epoch 9182: model parameters saved\n", - "Epoch 9183 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9183: avg_loss appended (1.3125)\n", - "Epoch 9183: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9183: accuracy appended (60.00%)\n", - "Epoch 9183: model set back to train mode\n", - "Epoch 9183: model parameters saved\n", - "Epoch 9184 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9184: avg_loss appended (1.3125)\n", - "Epoch 9184: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9184: accuracy appended (60.00%)\n", - "Epoch 9184: model set back to train mode\n", - "Epoch 9184: model parameters saved\n", - "Epoch 9185 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9185: avg_loss appended (1.3125)\n", - "Epoch 9185: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9185: accuracy appended (60.00%)\n", - "Epoch 9185: model set back to train mode\n", - "Epoch 9185: model parameters saved\n", - "Epoch 9186 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9186: avg_loss appended (1.3125)\n", - "Epoch 9186: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9186: accuracy appended (60.00%)\n", - "Epoch 9186: model set back to train mode\n", - "Epoch 9186: model parameters saved\n", - "Epoch 9187 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9187: avg_loss appended (1.3125)\n", - "Epoch 9187: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9187: accuracy appended (60.00%)\n", - "Epoch 9187: model set back to train mode\n", - "Epoch 9187: model parameters saved\n", - "Epoch 9188 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9188: avg_loss appended (1.3125)\n", - "Epoch 9188: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9188: accuracy appended (60.00%)\n", - "Epoch 9188: model set back to train mode\n", - "Epoch 9188: model parameters saved\n", - "Epoch 9189 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9189: avg_loss appended (1.3125)\n", - "Epoch 9189: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9189: accuracy appended (60.00%)\n", - "Epoch 9189: model set back to train mode\n", - "Epoch 9189: model parameters saved\n", - "Epoch 9190 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9190: avg_loss appended (1.3125)\n", - "Epoch 9190: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9190: accuracy appended (60.00%)\n", - "Epoch 9190: model set back to train mode\n", - "Epoch 9190: model parameters saved\n", - "Epoch 9191 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9191: avg_loss appended (1.3125)\n", - "Epoch 9191: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9191: accuracy appended (60.00%)\n", - "Epoch 9191: model set back to train mode\n", - "Epoch 9191: model parameters saved\n", - "Epoch 9192 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9192: avg_loss appended (1.3125)\n", - "Epoch 9192: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9192: accuracy appended (60.00%)\n", - "Epoch 9192: model set back to train mode\n", - "Epoch 9192: model parameters saved\n", - "Epoch 9193 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9193: avg_loss appended (1.3125)\n", - "Epoch 9193: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9193: accuracy appended (60.00%)\n", - "Epoch 9193: model set back to train mode\n", - "Epoch 9193: model parameters saved\n", - "Epoch 9194 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9194: avg_loss appended (1.3125)\n", - "Epoch 9194: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9194: accuracy appended (60.00%)\n", - "Epoch 9194: model set back to train mode\n", - "Epoch 9194: model parameters saved\n", - "Epoch 9195 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9195: avg_loss appended (1.3125)\n", - "Epoch 9195: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9195: accuracy appended (60.00%)\n", - "Epoch 9195: model set back to train mode\n", - "Epoch 9195: model parameters saved\n", - "Epoch 9196 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9196: avg_loss appended (1.3125)\n", - "Epoch 9196: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9196: accuracy appended (60.00%)\n", - "Epoch 9196: model set back to train mode\n", - "Epoch 9196: model parameters saved\n", - "Epoch 9197 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9197: avg_loss appended (1.3125)\n", - "Epoch 9197: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9197: accuracy appended (60.00%)\n", - "Epoch 9197: model set back to train mode\n", - "Epoch 9197: model parameters saved\n", - "Epoch 9198 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9198: avg_loss appended (1.3125)\n", - "Epoch 9198: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9198: accuracy appended (60.00%)\n", - "Epoch 9198: model set back to train mode\n", - "Epoch 9198: model parameters saved\n", - "Epoch 9199 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9199: avg_loss appended (1.3125)\n", - "Epoch 9199: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9199: accuracy appended (60.00%)\n", - "Epoch 9199: model set back to train mode\n", - "Epoch 9199: model parameters saved\n", - "Epoch 9200 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9200: avg_loss appended (1.3125)\n", - "Epoch 9200: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9200: accuracy appended (60.00%)\n", - "Epoch 9200: model set back to train mode\n", - "Epoch 9200: model parameters saved\n", - "Epoch 9200/10000, Loss: 1.3125, Accuracy: 60.00%\n", - "Epoch 9201 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9201: avg_loss appended (1.3125)\n", - "Epoch 9201: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9201: accuracy appended (60.00%)\n", - "Epoch 9201: model set back to train mode\n", - "Epoch 9201: model parameters saved\n", - "Epoch 9202 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9202: avg_loss appended (1.3125)\n", - "Epoch 9202: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9202: accuracy appended (60.00%)\n", - "Epoch 9202: model set back to train mode\n", - "Epoch 9202: model parameters saved\n", - "Epoch 9203 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9203: avg_loss appended (1.3125)\n", - "Epoch 9203: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9203: accuracy appended (60.00%)\n", - "Epoch 9203: model set back to train mode\n", - "Epoch 9203: model parameters saved\n", - "Epoch 9204 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9204: avg_loss appended (1.3125)\n", - "Epoch 9204: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9204: accuracy appended (60.00%)\n", - "Epoch 9204: model set back to train mode\n", - "Epoch 9204: model parameters saved\n", - "Epoch 9205 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9205: avg_loss appended (1.3125)\n", - "Epoch 9205: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9205: accuracy appended (60.00%)\n", - "Epoch 9205: model set back to train mode\n", - "Epoch 9205: model parameters saved\n", - "Epoch 9206 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9206: avg_loss appended (1.3125)\n", - "Epoch 9206: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9206: accuracy appended (60.00%)\n", - "Epoch 9206: model set back to train mode\n", - "Epoch 9206: model parameters saved\n", - "Epoch 9207 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9207: avg_loss appended (1.3125)\n", - "Epoch 9207: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9207: accuracy appended (60.00%)\n", - "Epoch 9207: model set back to train mode\n", - "Epoch 9207: model parameters saved\n", - "Epoch 9208 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9208: avg_loss appended (1.3125)\n", - "Epoch 9208: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9208: accuracy appended (60.00%)\n", - "Epoch 9208: model set back to train mode\n", - "Epoch 9208: model parameters saved\n", - "Epoch 9209 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9209: avg_loss appended (1.3125)\n", - "Epoch 9209: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9209: accuracy appended (60.00%)\n", - "Epoch 9209: model set back to train mode\n", - "Epoch 9209: model parameters saved\n", - "Epoch 9210 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9210: avg_loss appended (1.3125)\n", - "Epoch 9210: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9210: accuracy appended (60.00%)\n", - "Epoch 9210: model set back to train mode\n", - "Epoch 9210: model parameters saved\n", - "Epoch 9211 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9211: avg_loss appended (1.3125)\n", - "Epoch 9211: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9211: accuracy appended (60.00%)\n", - "Epoch 9211: model set back to train mode\n", - "Epoch 9211: model parameters saved\n", - "Epoch 9212 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9212: avg_loss appended (1.3125)\n", - "Epoch 9212: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9212: accuracy appended (60.00%)\n", - "Epoch 9212: model set back to train mode\n", - "Epoch 9212: model parameters saved\n", - "Epoch 9213 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9213: avg_loss appended (1.3125)\n", - "Epoch 9213: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9213: accuracy appended (60.00%)\n", - "Epoch 9213: model set back to train mode\n", - "Epoch 9213: model parameters saved\n", - "Epoch 9214 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9214: avg_loss appended (1.3125)\n", - "Epoch 9214: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9214: accuracy appended (60.00%)\n", - "Epoch 9214: model set back to train mode\n", - "Epoch 9214: model parameters saved\n", - "Epoch 9215 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9215: avg_loss appended (1.3125)\n", - "Epoch 9215: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9215: accuracy appended (60.00%)\n", - "Epoch 9215: model set back to train mode\n", - "Epoch 9215: model parameters saved\n", - "Epoch 9216 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9216: avg_loss appended (1.3125)\n", - "Epoch 9216: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9216: accuracy appended (60.00%)\n", - "Epoch 9216: model set back to train mode\n", - "Epoch 9216: model parameters saved\n", - "Epoch 9217 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9217: avg_loss appended (1.3125)\n", - "Epoch 9217: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9217: accuracy appended (60.00%)\n", - "Epoch 9217: model set back to train mode\n", - "Epoch 9217: model parameters saved\n", - "Epoch 9218 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9218: avg_loss appended (1.3125)\n", - "Epoch 9218: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9218: accuracy appended (60.00%)\n", - "Epoch 9218: model set back to train mode\n", - "Epoch 9218: model parameters saved\n", - "Epoch 9219 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9219: avg_loss appended (1.3125)\n", - "Epoch 9219: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9219: accuracy appended (60.00%)\n", - "Epoch 9219: model set back to train mode\n", - "Epoch 9219: model parameters saved\n", - "Epoch 9220 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9220: avg_loss appended (1.3125)\n", - "Epoch 9220: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9220: accuracy appended (60.00%)\n", - "Epoch 9220: model set back to train mode\n", - "Epoch 9220: model parameters saved\n", - "Epoch 9221 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9221: avg_loss appended (1.3125)\n", - "Epoch 9221: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9221: accuracy appended (60.00%)\n", - "Epoch 9221: model set back to train mode\n", - "Epoch 9221: model parameters saved\n", - "Epoch 9222 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9222: avg_loss appended (1.3125)\n", - "Epoch 9222: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9222: accuracy appended (60.00%)\n", - "Epoch 9222: model set back to train mode\n", - "Epoch 9222: model parameters saved\n", - "Epoch 9223 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9223: avg_loss appended (1.3125)\n", - "Epoch 9223: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9223: accuracy appended (60.00%)\n", - "Epoch 9223: model set back to train mode\n", - "Epoch 9223: model parameters saved\n", - "Epoch 9224 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9224: avg_loss appended (1.3125)\n", - "Epoch 9224: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9224: accuracy appended (60.00%)\n", - "Epoch 9224: model set back to train mode\n", - "Epoch 9224: model parameters saved\n", - "Epoch 9225 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9225: avg_loss appended (1.3125)\n", - "Epoch 9225: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9225: accuracy appended (60.00%)\n", - "Epoch 9225: model set back to train mode\n", - "Epoch 9225: model parameters saved\n", - "Epoch 9226 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9226: avg_loss appended (1.3125)\n", - "Epoch 9226: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9226: accuracy appended (60.00%)\n", - "Epoch 9226: model set back to train mode\n", - "Epoch 9226: model parameters saved\n", - "Epoch 9227 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9227: avg_loss appended (1.3125)\n", - "Epoch 9227: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9227: accuracy appended (60.00%)\n", - "Epoch 9227: model set back to train mode\n", - "Epoch 9227: model parameters saved\n", - "Epoch 9228 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9228: avg_loss appended (1.3125)\n", - "Epoch 9228: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9228: accuracy appended (60.00%)\n", - "Epoch 9228: model set back to train mode\n", - "Epoch 9228: model parameters saved\n", - "Epoch 9229 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9229: avg_loss appended (1.3125)\n", - "Epoch 9229: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9229: accuracy appended (60.00%)\n", - "Epoch 9229: model set back to train mode\n", - "Epoch 9229: model parameters saved\n", - "Epoch 9230 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9230: avg_loss appended (1.3125)\n", - "Epoch 9230: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9230: accuracy appended (60.00%)\n", - "Epoch 9230: model set back to train mode\n", - "Epoch 9230: model parameters saved\n", - "Epoch 9231 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9231: avg_loss appended (1.3125)\n", - "Epoch 9231: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9231: accuracy appended (60.00%)\n", - "Epoch 9231: model set back to train mode\n", - "Epoch 9231: model parameters saved\n", - "Epoch 9232 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9232: avg_loss appended (1.3125)\n", - "Epoch 9232: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9232: accuracy appended (60.00%)\n", - "Epoch 9232: model set back to train mode\n", - "Epoch 9232: model parameters saved\n", - "Epoch 9233 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9233: avg_loss appended (1.3125)\n", - "Epoch 9233: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9233: accuracy appended (60.00%)\n", - "Epoch 9233: model set back to train mode\n", - "Epoch 9233: model parameters saved\n", - "Epoch 9234 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9234: avg_loss appended (1.3125)\n", - "Epoch 9234: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9234: accuracy appended (60.00%)\n", - "Epoch 9234: model set back to train mode\n", - "Epoch 9234: model parameters saved\n", - "Epoch 9235 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9235: avg_loss appended (1.3125)\n", - "Epoch 9235: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9235: accuracy appended (60.00%)\n", - "Epoch 9235: model set back to train mode\n", - "Epoch 9235: model parameters saved\n", - "Epoch 9236 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9236: avg_loss appended (1.3125)\n", - "Epoch 9236: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9236: accuracy appended (60.00%)\n", - "Epoch 9236: model set back to train mode\n", - "Epoch 9236: model parameters saved\n", - "Epoch 9237 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9237: avg_loss appended (1.3125)\n", - "Epoch 9237: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9237: accuracy appended (60.00%)\n", - "Epoch 9237: model set back to train mode\n", - "Epoch 9237: model parameters saved\n", - "Epoch 9238 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9238: avg_loss appended (1.3125)\n", - "Epoch 9238: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9238: accuracy appended (60.00%)\n", - "Epoch 9238: model set back to train mode\n", - "Epoch 9238: model parameters saved\n", - "Epoch 9239 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9239: avg_loss appended (1.3125)\n", - "Epoch 9239: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9239: accuracy appended (60.00%)\n", - "Epoch 9239: model set back to train mode\n", - "Epoch 9239: model parameters saved\n", - "Epoch 9240 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9240: avg_loss appended (1.3125)\n", - "Epoch 9240: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9240: accuracy appended (60.00%)\n", - "Epoch 9240: model set back to train mode\n", - "Epoch 9240: model parameters saved\n", - "Epoch 9241 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9241: avg_loss appended (1.3125)\n", - "Epoch 9241: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9241: accuracy appended (60.00%)\n", - "Epoch 9241: model set back to train mode\n", - "Epoch 9241: model parameters saved\n", - "Epoch 9242 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9242: avg_loss appended (1.3125)\n", - "Epoch 9242: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9242: accuracy appended (60.00%)\n", - "Epoch 9242: model set back to train mode\n", - "Epoch 9242: model parameters saved\n", - "Epoch 9243 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9243: avg_loss appended (1.3125)\n", - "Epoch 9243: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9243: accuracy appended (60.00%)\n", - "Epoch 9243: model set back to train mode\n", - "Epoch 9243: model parameters saved\n", - "Epoch 9244 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9244: avg_loss appended (1.3125)\n", - "Epoch 9244: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9244: accuracy appended (60.00%)\n", - "Epoch 9244: model set back to train mode\n", - "Epoch 9244: model parameters saved\n", - "Epoch 9245 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9245: avg_loss appended (1.3125)\n", - "Epoch 9245: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9245: accuracy appended (60.00%)\n", - "Epoch 9245: model set back to train mode\n", - "Epoch 9245: model parameters saved\n", - "Epoch 9246 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9246: avg_loss appended (1.3125)\n", - "Epoch 9246: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9246: accuracy appended (60.00%)\n", - "Epoch 9246: model set back to train mode\n", - "Epoch 9246: model parameters saved\n", - "Epoch 9247 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9247: avg_loss appended (1.3125)\n", - "Epoch 9247: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9247: accuracy appended (60.00%)\n", - "Epoch 9247: model set back to train mode\n", - "Epoch 9247: model parameters saved\n", - "Epoch 9248 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9248: avg_loss appended (1.3125)\n", - "Epoch 9248: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9248: accuracy appended (60.00%)\n", - "Epoch 9248: model set back to train mode\n", - "Epoch 9248: model parameters saved\n", - "Epoch 9249 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9249: avg_loss appended (1.3125)\n", - "Epoch 9249: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9249: accuracy appended (60.00%)\n", - "Epoch 9249: model set back to train mode\n", - "Epoch 9249: model parameters saved\n", - "Epoch 9250 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9250: avg_loss appended (1.3125)\n", - "Epoch 9250: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9250: accuracy appended (60.00%)\n", - "Epoch 9250: model set back to train mode\n", - "Epoch 9250: model parameters saved\n", - "Epoch 9251 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9251: avg_loss appended (1.3125)\n", - "Epoch 9251: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9251: accuracy appended (60.00%)\n", - "Epoch 9251: model set back to train mode\n", - "Epoch 9251: model parameters saved\n", - "Epoch 9252 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9252: avg_loss appended (1.3125)\n", - "Epoch 9252: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9252: accuracy appended (60.00%)\n", - "Epoch 9252: model set back to train mode\n", - "Epoch 9252: model parameters saved\n", - "Epoch 9253 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9253: avg_loss appended (1.3125)\n", - "Epoch 9253: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9253: accuracy appended (60.00%)\n", - "Epoch 9253: model set back to train mode\n", - "Epoch 9253: model parameters saved\n", - "Epoch 9254 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9254: avg_loss appended (1.3125)\n", - "Epoch 9254: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9254: accuracy appended (60.00%)\n", - "Epoch 9254: model set back to train mode\n", - "Epoch 9254: model parameters saved\n", - "Epoch 9255 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9255: avg_loss appended (1.3125)\n", - "Epoch 9255: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9255: accuracy appended (60.00%)\n", - "Epoch 9255: model set back to train mode\n", - "Epoch 9255: model parameters saved\n", - "Epoch 9256 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9256: avg_loss appended (1.3125)\n", - "Epoch 9256: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9256: accuracy appended (60.00%)\n", - "Epoch 9256: model set back to train mode\n", - "Epoch 9256: model parameters saved\n", - "Epoch 9257 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9257: avg_loss appended (1.3125)\n", - "Epoch 9257: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9257: accuracy appended (60.00%)\n", - "Epoch 9257: model set back to train mode\n", - "Epoch 9257: model parameters saved\n", - "Epoch 9258 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9258: avg_loss appended (1.3125)\n", - "Epoch 9258: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9258: accuracy appended (60.00%)\n", - "Epoch 9258: model set back to train mode\n", - "Epoch 9258: model parameters saved\n", - "Epoch 9259 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9259: avg_loss appended (1.3125)\n", - "Epoch 9259: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9259: accuracy appended (60.00%)\n", - "Epoch 9259: model set back to train mode\n", - "Epoch 9259: model parameters saved\n", - "Epoch 9260 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9260: avg_loss appended (1.3125)\n", - "Epoch 9260: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9260: accuracy appended (60.00%)\n", - "Epoch 9260: model set back to train mode\n", - "Epoch 9260: model parameters saved\n", - "Epoch 9261 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9261: avg_loss appended (1.3125)\n", - "Epoch 9261: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9261: accuracy appended (60.00%)\n", - "Epoch 9261: model set back to train mode\n", - "Epoch 9261: model parameters saved\n", - "Epoch 9262 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9262: avg_loss appended (1.3125)\n", - "Epoch 9262: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9262: accuracy appended (60.00%)\n", - "Epoch 9262: model set back to train mode\n", - "Epoch 9262: model parameters saved\n", - "Epoch 9263 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9263: avg_loss appended (1.3125)\n", - "Epoch 9263: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9263: accuracy appended (60.00%)\n", - "Epoch 9263: model set back to train mode\n", - "Epoch 9263: model parameters saved\n", - "Epoch 9264 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9264: avg_loss appended (1.3125)\n", - "Epoch 9264: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9264: accuracy appended (60.00%)\n", - "Epoch 9264: model set back to train mode\n", - "Epoch 9264: model parameters saved\n", - "Epoch 9265 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9265: avg_loss appended (1.3125)\n", - "Epoch 9265: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9265: accuracy appended (60.00%)\n", - "Epoch 9265: model set back to train mode\n", - "Epoch 9265: model parameters saved\n", - "Epoch 9266 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9266: avg_loss appended (1.3125)\n", - "Epoch 9266: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9266: accuracy appended (60.00%)\n", - "Epoch 9266: model set back to train mode\n", - "Epoch 9266: model parameters saved\n", - "Epoch 9267 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9267: avg_loss appended (1.3125)\n", - "Epoch 9267: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9267: accuracy appended (60.00%)\n", - "Epoch 9267: model set back to train mode\n", - "Epoch 9267: model parameters saved\n", - "Epoch 9268 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9268: avg_loss appended (1.3125)\n", - "Epoch 9268: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9268: accuracy appended (60.00%)\n", - "Epoch 9268: model set back to train mode\n", - "Epoch 9268: model parameters saved\n", - "Epoch 9269 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9269: avg_loss appended (1.3125)\n", - "Epoch 9269: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9269: accuracy appended (60.00%)\n", - "Epoch 9269: model set back to train mode\n", - "Epoch 9269: model parameters saved\n", - "Epoch 9270 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9270: avg_loss appended (1.3125)\n", - "Epoch 9270: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9270: accuracy appended (60.00%)\n", - "Epoch 9270: model set back to train mode\n", - "Epoch 9270: model parameters saved\n", - "Epoch 9271 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9271: avg_loss appended (1.3125)\n", - "Epoch 9271: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9271: accuracy appended (60.00%)\n", - "Epoch 9271: model set back to train mode\n", - "Epoch 9271: model parameters saved\n", - "Epoch 9272 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9272: avg_loss appended (1.3125)\n", - "Epoch 9272: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9272: accuracy appended (60.00%)\n", - "Epoch 9272: model set back to train mode\n", - "Epoch 9272: model parameters saved\n", - "Epoch 9273 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9273: avg_loss appended (1.3125)\n", - "Epoch 9273: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9273: accuracy appended (60.00%)\n", - "Epoch 9273: model set back to train mode\n", - "Epoch 9273: model parameters saved\n", - "Epoch 9274 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9274: avg_loss appended (1.3125)\n", - "Epoch 9274: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9274: accuracy appended (60.00%)\n", - "Epoch 9274: model set back to train mode\n", - "Epoch 9274: model parameters saved\n", - "Epoch 9275 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9275: avg_loss appended (1.3125)\n", - "Epoch 9275: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9275: accuracy appended (60.00%)\n", - "Epoch 9275: model set back to train mode\n", - "Epoch 9275: model parameters saved\n", - "Epoch 9276 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9276: avg_loss appended (1.3125)\n", - "Epoch 9276: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9276: accuracy appended (60.00%)\n", - "Epoch 9276: model set back to train mode\n", - "Epoch 9276: model parameters saved\n", - "Epoch 9277 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9277: avg_loss appended (1.3125)\n", - "Epoch 9277: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9277: accuracy appended (60.00%)\n", - "Epoch 9277: model set back to train mode\n", - "Epoch 9277: model parameters saved\n", - "Epoch 9278 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9278: avg_loss appended (1.3125)\n", - "Epoch 9278: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9278: accuracy appended (60.00%)\n", - "Epoch 9278: model set back to train mode\n", - "Epoch 9278: model parameters saved\n", - "Epoch 9279 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9279: avg_loss appended (1.3125)\n", - "Epoch 9279: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9279: accuracy appended (60.00%)\n", - "Epoch 9279: model set back to train mode\n", - "Epoch 9279: model parameters saved\n", - "Epoch 9280 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9280: avg_loss appended (1.3125)\n", - "Epoch 9280: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9280: accuracy appended (60.00%)\n", - "Epoch 9280: model set back to train mode\n", - "Epoch 9280: model parameters saved\n", - "Epoch 9281 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9281: avg_loss appended (1.3125)\n", - "Epoch 9281: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9281: accuracy appended (60.00%)\n", - "Epoch 9281: model set back to train mode\n", - "Epoch 9281: model parameters saved\n", - "Epoch 9282 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9282: avg_loss appended (1.3125)\n", - "Epoch 9282: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9282: accuracy appended (60.00%)\n", - "Epoch 9282: model set back to train mode\n", - "Epoch 9282: model parameters saved\n", - "Epoch 9283 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9283: avg_loss appended (1.3125)\n", - "Epoch 9283: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9283: accuracy appended (60.00%)\n", - "Epoch 9283: model set back to train mode\n", - "Epoch 9283: model parameters saved\n", - "Epoch 9284 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9284: avg_loss appended (1.3125)\n", - "Epoch 9284: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9284: accuracy appended (60.00%)\n", - "Epoch 9284: model set back to train mode\n", - "Epoch 9284: model parameters saved\n", - "Epoch 9285 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9285: avg_loss appended (1.3125)\n", - "Epoch 9285: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9285: accuracy appended (60.00%)\n", - "Epoch 9285: model set back to train mode\n", - "Epoch 9285: model parameters saved\n", - "Epoch 9286 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9286: avg_loss appended (1.3125)\n", - "Epoch 9286: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9286: accuracy appended (60.00%)\n", - "Epoch 9286: model set back to train mode\n", - "Epoch 9286: model parameters saved\n", - "Epoch 9287 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9287: avg_loss appended (1.3125)\n", - "Epoch 9287: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9287: accuracy appended (60.00%)\n", - "Epoch 9287: model set back to train mode\n", - "Epoch 9287: model parameters saved\n", - "Epoch 9288 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9288: avg_loss appended (1.3125)\n", - "Epoch 9288: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9288: accuracy appended (60.00%)\n", - "Epoch 9288: model set back to train mode\n", - "Epoch 9288: model parameters saved\n", - "Epoch 9289 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9289: avg_loss appended (1.3125)\n", - "Epoch 9289: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9289: accuracy appended (60.00%)\n", - "Epoch 9289: model set back to train mode\n", - "Epoch 9289: model parameters saved\n", - "Epoch 9290 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9290: avg_loss appended (1.3125)\n", - "Epoch 9290: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9290: accuracy appended (60.00%)\n", - "Epoch 9290: model set back to train mode\n", - "Epoch 9290: model parameters saved\n", - "Epoch 9291 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9291: avg_loss appended (1.3125)\n", - "Epoch 9291: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9291: accuracy appended (60.00%)\n", - "Epoch 9291: model set back to train mode\n", - "Epoch 9291: model parameters saved\n", - "Epoch 9292 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9292: avg_loss appended (1.3125)\n", - "Epoch 9292: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9292: accuracy appended (60.00%)\n", - "Epoch 9292: model set back to train mode\n", - "Epoch 9292: model parameters saved\n", - "Epoch 9293 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9293: avg_loss appended (1.3125)\n", - "Epoch 9293: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9293: accuracy appended (60.00%)\n", - "Epoch 9293: model set back to train mode\n", - "Epoch 9293: model parameters saved\n", - "Epoch 9294 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9294: avg_loss appended (1.3125)\n", - "Epoch 9294: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9294: accuracy appended (60.00%)\n", - "Epoch 9294: model set back to train mode\n", - "Epoch 9294: model parameters saved\n", - "Epoch 9295 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9295: avg_loss appended (1.3125)\n", - "Epoch 9295: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9295: accuracy appended (60.00%)\n", - "Epoch 9295: model set back to train mode\n", - "Epoch 9295: model parameters saved\n", - "Epoch 9296 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9296: avg_loss appended (1.3125)\n", - "Epoch 9296: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9296: accuracy appended (60.00%)\n", - "Epoch 9296: model set back to train mode\n", - "Epoch 9296: model parameters saved\n", - "Epoch 9297 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9297: avg_loss appended (1.3125)\n", - "Epoch 9297: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9297: accuracy appended (60.00%)\n", - "Epoch 9297: model set back to train mode\n", - "Epoch 9297: model parameters saved\n", - "Epoch 9298 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9298: avg_loss appended (1.3125)\n", - "Epoch 9298: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9298: accuracy appended (60.00%)\n", - "Epoch 9298: model set back to train mode\n", - "Epoch 9298: model parameters saved\n", - "Epoch 9299 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9299: avg_loss appended (1.3125)\n", - "Epoch 9299: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9299: accuracy appended (60.00%)\n", - "Epoch 9299: model set back to train mode\n", - "Epoch 9299: model parameters saved\n", - "Epoch 9300 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9300: avg_loss appended (1.3125)\n", - "Epoch 9300: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9300: accuracy appended (60.00%)\n", - "Epoch 9300: model set back to train mode\n", - "Epoch 9300: model parameters saved\n", - "Epoch 9300/10000, Loss: 1.3125, Accuracy: 60.00%\n", - "Epoch 9301 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9301: avg_loss appended (1.3125)\n", - "Epoch 9301: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9301: accuracy appended (60.00%)\n", - "Epoch 9301: model set back to train mode\n", - "Epoch 9301: model parameters saved\n", - "Epoch 9302 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9302: avg_loss appended (1.3125)\n", - "Epoch 9302: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9302: accuracy appended (60.00%)\n", - "Epoch 9302: model set back to train mode\n", - "Epoch 9302: model parameters saved\n", - "Epoch 9303 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9303: avg_loss appended (1.3125)\n", - "Epoch 9303: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9303: accuracy appended (60.00%)\n", - "Epoch 9303: model set back to train mode\n", - "Epoch 9303: model parameters saved\n", - "Epoch 9304 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9304: avg_loss appended (1.3125)\n", - "Epoch 9304: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9304: accuracy appended (60.00%)\n", - "Epoch 9304: model set back to train mode\n", - "Epoch 9304: model parameters saved\n", - "Epoch 9305 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9305: avg_loss appended (1.3125)\n", - "Epoch 9305: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9305: accuracy appended (60.00%)\n", - "Epoch 9305: model set back to train mode\n", - "Epoch 9305: model parameters saved\n", - "Epoch 9306 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9306: avg_loss appended (1.3125)\n", - "Epoch 9306: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9306: accuracy appended (60.00%)\n", - "Epoch 9306: model set back to train mode\n", - "Epoch 9306: model parameters saved\n", - "Epoch 9307 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9307: avg_loss appended (1.3125)\n", - "Epoch 9307: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9307: accuracy appended (60.00%)\n", - "Epoch 9307: model set back to train mode\n", - "Epoch 9307: model parameters saved\n", - "Epoch 9308 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9308: avg_loss appended (1.3125)\n", - "Epoch 9308: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9308: accuracy appended (60.00%)\n", - "Epoch 9308: model set back to train mode\n", - "Epoch 9308: model parameters saved\n", - "Epoch 9309 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9309: avg_loss appended (1.3125)\n", - "Epoch 9309: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9309: accuracy appended (60.00%)\n", - "Epoch 9309: model set back to train mode\n", - "Epoch 9309: model parameters saved\n", - "Epoch 9310 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9310: avg_loss appended (1.3125)\n", - "Epoch 9310: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9310: accuracy appended (60.00%)\n", - "Epoch 9310: model set back to train mode\n", - "Epoch 9310: model parameters saved\n", - "Epoch 9311 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9311: avg_loss appended (1.3125)\n", - "Epoch 9311: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9311: accuracy appended (60.00%)\n", - "Epoch 9311: model set back to train mode\n", - "Epoch 9311: model parameters saved\n", - "Epoch 9312 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9312: avg_loss appended (1.3125)\n", - "Epoch 9312: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9312: accuracy appended (60.00%)\n", - "Epoch 9312: model set back to train mode\n", - "Epoch 9312: model parameters saved\n", - "Epoch 9313 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9313: avg_loss appended (1.3125)\n", - "Epoch 9313: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9313: accuracy appended (60.00%)\n", - "Epoch 9313: model set back to train mode\n", - "Epoch 9313: model parameters saved\n", - "Epoch 9314 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9314: avg_loss appended (1.3125)\n", - "Epoch 9314: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9314: accuracy appended (60.00%)\n", - "Epoch 9314: model set back to train mode\n", - "Epoch 9314: model parameters saved\n", - "Epoch 9315 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9315: avg_loss appended (1.3125)\n", - "Epoch 9315: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9315: accuracy appended (60.00%)\n", - "Epoch 9315: model set back to train mode\n", - "Epoch 9315: model parameters saved\n", - "Epoch 9316 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9316: avg_loss appended (1.3125)\n", - "Epoch 9316: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9316: accuracy appended (60.00%)\n", - "Epoch 9316: model set back to train mode\n", - "Epoch 9316: model parameters saved\n", - "Epoch 9317 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9317: avg_loss appended (1.3125)\n", - "Epoch 9317: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9317: accuracy appended (60.00%)\n", - "Epoch 9317: model set back to train mode\n", - "Epoch 9317: model parameters saved\n", - "Epoch 9318 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9318: avg_loss appended (1.3125)\n", - "Epoch 9318: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9318: accuracy appended (60.00%)\n", - "Epoch 9318: model set back to train mode\n", - "Epoch 9318: model parameters saved\n", - "Epoch 9319 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9319: avg_loss appended (1.3125)\n", - "Epoch 9319: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9319: accuracy appended (60.00%)\n", - "Epoch 9319: model set back to train mode\n", - "Epoch 9319: model parameters saved\n", - "Epoch 9320 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9320: avg_loss appended (1.3125)\n", - "Epoch 9320: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9320: accuracy appended (60.00%)\n", - "Epoch 9320: model set back to train mode\n", - "Epoch 9320: model parameters saved\n", - "Epoch 9321 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9321: avg_loss appended (1.3125)\n", - "Epoch 9321: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9321: accuracy appended (60.00%)\n", - "Epoch 9321: model set back to train mode\n", - "Epoch 9321: model parameters saved\n", - "Epoch 9322 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9322: avg_loss appended (1.3125)\n", - "Epoch 9322: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9322: accuracy appended (60.00%)\n", - "Epoch 9322: model set back to train mode\n", - "Epoch 9322: model parameters saved\n", - "Epoch 9323 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9323: avg_loss appended (1.3125)\n", - "Epoch 9323: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9323: accuracy appended (60.00%)\n", - "Epoch 9323: model set back to train mode\n", - "Epoch 9323: model parameters saved\n", - "Epoch 9324 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9324: avg_loss appended (1.3125)\n", - "Epoch 9324: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9324: accuracy appended (60.00%)\n", - "Epoch 9324: model set back to train mode\n", - "Epoch 9324: model parameters saved\n", - "Epoch 9325 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9325: avg_loss appended (1.3125)\n", - "Epoch 9325: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9325: accuracy appended (60.00%)\n", - "Epoch 9325: model set back to train mode\n", - "Epoch 9325: model parameters saved\n", - "Epoch 9326 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9326: avg_loss appended (1.3125)\n", - "Epoch 9326: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9326: accuracy appended (60.00%)\n", - "Epoch 9326: model set back to train mode\n", - "Epoch 9326: model parameters saved\n", - "Epoch 9327 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9327: avg_loss appended (1.3125)\n", - "Epoch 9327: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9327: accuracy appended (60.00%)\n", - "Epoch 9327: model set back to train mode\n", - "Epoch 9327: model parameters saved\n", - "Epoch 9328 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9328: avg_loss appended (1.3125)\n", - "Epoch 9328: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9328: accuracy appended (60.00%)\n", - "Epoch 9328: model set back to train mode\n", - "Epoch 9328: model parameters saved\n", - "Epoch 9329 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9329: avg_loss appended (1.3125)\n", - "Epoch 9329: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9329: accuracy appended (60.00%)\n", - "Epoch 9329: model set back to train mode\n", - "Epoch 9329: model parameters saved\n", - "Epoch 9330 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9330: avg_loss appended (1.3125)\n", - "Epoch 9330: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9330: accuracy appended (60.00%)\n", - "Epoch 9330: model set back to train mode\n", - "Epoch 9330: model parameters saved\n", - "Epoch 9331 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9331: avg_loss appended (1.3125)\n", - "Epoch 9331: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9331: accuracy appended (60.00%)\n", - "Epoch 9331: model set back to train mode\n", - "Epoch 9331: model parameters saved\n", - "Epoch 9332 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9332: avg_loss appended (1.3125)\n", - "Epoch 9332: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9332: accuracy appended (60.00%)\n", - "Epoch 9332: model set back to train mode\n", - "Epoch 9332: model parameters saved\n", - "Epoch 9333 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9333: avg_loss appended (1.3125)\n", - "Epoch 9333: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9333: accuracy appended (60.00%)\n", - "Epoch 9333: model set back to train mode\n", - "Epoch 9333: model parameters saved\n", - "Epoch 9334 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9334: avg_loss appended (1.3125)\n", - "Epoch 9334: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9334: accuracy appended (60.00%)\n", - "Epoch 9334: model set back to train mode\n", - "Epoch 9334: model parameters saved\n", - "Epoch 9335 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9335: avg_loss appended (1.3125)\n", - "Epoch 9335: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9335: accuracy appended (60.00%)\n", - "Epoch 9335: model set back to train mode\n", - "Epoch 9335: model parameters saved\n", - "Epoch 9336 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9336: avg_loss appended (1.3125)\n", - "Epoch 9336: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9336: accuracy appended (60.00%)\n", - "Epoch 9336: model set back to train mode\n", - "Epoch 9336: model parameters saved\n", - "Epoch 9337 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9337: avg_loss appended (1.3125)\n", - "Epoch 9337: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9337: accuracy appended (60.00%)\n", - "Epoch 9337: model set back to train mode\n", - "Epoch 9337: model parameters saved\n", - "Epoch 9338 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9338: avg_loss appended (1.3125)\n", - "Epoch 9338: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9338: accuracy appended (60.00%)\n", - "Epoch 9338: model set back to train mode\n", - "Epoch 9338: model parameters saved\n", - "Epoch 9339 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9339: avg_loss appended (1.3125)\n", - "Epoch 9339: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9339: accuracy appended (60.00%)\n", - "Epoch 9339: model set back to train mode\n", - "Epoch 9339: model parameters saved\n", - "Epoch 9340 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9340: avg_loss appended (1.3125)\n", - "Epoch 9340: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9340: accuracy appended (60.00%)\n", - "Epoch 9340: model set back to train mode\n", - "Epoch 9340: model parameters saved\n", - "Epoch 9341 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9341: avg_loss appended (1.3125)\n", - "Epoch 9341: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9341: accuracy appended (60.00%)\n", - "Epoch 9341: model set back to train mode\n", - "Epoch 9341: model parameters saved\n", - "Epoch 9342 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9342: avg_loss appended (1.3125)\n", - "Epoch 9342: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9342: accuracy appended (60.00%)\n", - "Epoch 9342: model set back to train mode\n", - "Epoch 9342: model parameters saved\n", - "Epoch 9343 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9343: avg_loss appended (1.3125)\n", - "Epoch 9343: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9343: accuracy appended (60.00%)\n", - "Epoch 9343: model set back to train mode\n", - "Epoch 9343: model parameters saved\n", - "Epoch 9344 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9344: avg_loss appended (1.3125)\n", - "Epoch 9344: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9344: accuracy appended (60.00%)\n", - "Epoch 9344: model set back to train mode\n", - "Epoch 9344: model parameters saved\n", - "Epoch 9345 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9345: avg_loss appended (1.3125)\n", - "Epoch 9345: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9345: accuracy appended (60.00%)\n", - "Epoch 9345: model set back to train mode\n", - "Epoch 9345: model parameters saved\n", - "Epoch 9346 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9346: avg_loss appended (1.3125)\n", - "Epoch 9346: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9346: accuracy appended (60.00%)\n", - "Epoch 9346: model set back to train mode\n", - "Epoch 9346: model parameters saved\n", - "Epoch 9347 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9347: avg_loss appended (1.3125)\n", - "Epoch 9347: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9347: accuracy appended (60.00%)\n", - "Epoch 9347: model set back to train mode\n", - "Epoch 9347: model parameters saved\n", - "Epoch 9348 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9348: avg_loss appended (1.3125)\n", - "Epoch 9348: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9348: accuracy appended (60.00%)\n", - "Epoch 9348: model set back to train mode\n", - "Epoch 9348: model parameters saved\n", - "Epoch 9349 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9349: avg_loss appended (1.3125)\n", - "Epoch 9349: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9349: accuracy appended (60.00%)\n", - "Epoch 9349: model set back to train mode\n", - "Epoch 9349: model parameters saved\n", - "Epoch 9350 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9350: avg_loss appended (1.3125)\n", - "Epoch 9350: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9350: accuracy appended (60.00%)\n", - "Epoch 9350: model set back to train mode\n", - "Epoch 9350: model parameters saved\n", - "Epoch 9351 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9351: avg_loss appended (1.3125)\n", - "Epoch 9351: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9351: accuracy appended (60.00%)\n", - "Epoch 9351: model set back to train mode\n", - "Epoch 9351: model parameters saved\n", - "Epoch 9352 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9352: avg_loss appended (1.3125)\n", - "Epoch 9352: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9352: accuracy appended (60.00%)\n", - "Epoch 9352: model set back to train mode\n", - "Epoch 9352: model parameters saved\n", - "Epoch 9353 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9353: avg_loss appended (1.3125)\n", - "Epoch 9353: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9353: accuracy appended (60.00%)\n", - "Epoch 9353: model set back to train mode\n", - "Epoch 9353: model parameters saved\n", - "Epoch 9354 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9354: avg_loss appended (1.3125)\n", - "Epoch 9354: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9354: accuracy appended (60.00%)\n", - "Epoch 9354: model set back to train mode\n", - "Epoch 9354: model parameters saved\n", - "Epoch 9355 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9355: avg_loss appended (1.3125)\n", - "Epoch 9355: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9355: accuracy appended (60.00%)\n", - "Epoch 9355: model set back to train mode\n", - "Epoch 9355: model parameters saved\n", - "Epoch 9356 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9356: avg_loss appended (1.3125)\n", - "Epoch 9356: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9356: accuracy appended (60.00%)\n", - "Epoch 9356: model set back to train mode\n", - "Epoch 9356: model parameters saved\n", - "Epoch 9357 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9357: avg_loss appended (1.3125)\n", - "Epoch 9357: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9357: accuracy appended (60.00%)\n", - "Epoch 9357: model set back to train mode\n", - "Epoch 9357: model parameters saved\n", - "Epoch 9358 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9358: avg_loss appended (1.3125)\n", - "Epoch 9358: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9358: accuracy appended (60.00%)\n", - "Epoch 9358: model set back to train mode\n", - "Epoch 9358: model parameters saved\n", - "Epoch 9359 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9359: avg_loss appended (1.3125)\n", - "Epoch 9359: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9359: accuracy appended (60.00%)\n", - "Epoch 9359: model set back to train mode\n", - "Epoch 9359: model parameters saved\n", - "Epoch 9360 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9360: avg_loss appended (1.3125)\n", - "Epoch 9360: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9360: accuracy appended (60.00%)\n", - "Epoch 9360: model set back to train mode\n", - "Epoch 9360: model parameters saved\n", - "Epoch 9361 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9361: avg_loss appended (1.3125)\n", - "Epoch 9361: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9361: accuracy appended (60.00%)\n", - "Epoch 9361: model set back to train mode\n", - "Epoch 9361: model parameters saved\n", - "Epoch 9362 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9362: avg_loss appended (1.3125)\n", - "Epoch 9362: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9362: accuracy appended (60.00%)\n", - "Epoch 9362: model set back to train mode\n", - "Epoch 9362: model parameters saved\n", - "Epoch 9363 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9363: avg_loss appended (1.3125)\n", - "Epoch 9363: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9363: accuracy appended (60.00%)\n", - "Epoch 9363: model set back to train mode\n", - "Epoch 9363: model parameters saved\n", - "Epoch 9364 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9364: avg_loss appended (1.3125)\n", - "Epoch 9364: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9364: accuracy appended (60.00%)\n", - "Epoch 9364: model set back to train mode\n", - "Epoch 9364: model parameters saved\n", - "Epoch 9365 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9365: avg_loss appended (1.3125)\n", - "Epoch 9365: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9365: accuracy appended (60.00%)\n", - "Epoch 9365: model set back to train mode\n", - "Epoch 9365: model parameters saved\n", - "Epoch 9366 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9366: avg_loss appended (1.3125)\n", - "Epoch 9366: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9366: accuracy appended (60.00%)\n", - "Epoch 9366: model set back to train mode\n", - "Epoch 9366: model parameters saved\n", - "Epoch 9367 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9367: avg_loss appended (1.3125)\n", - "Epoch 9367: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9367: accuracy appended (60.00%)\n", - "Epoch 9367: model set back to train mode\n", - "Epoch 9367: model parameters saved\n", - "Epoch 9368 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9368: avg_loss appended (1.3125)\n", - "Epoch 9368: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9368: accuracy appended (60.00%)\n", - "Epoch 9368: model set back to train mode\n", - "Epoch 9368: model parameters saved\n", - "Epoch 9369 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9369: avg_loss appended (1.3125)\n", - "Epoch 9369: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9369: accuracy appended (60.00%)\n", - "Epoch 9369: model set back to train mode\n", - "Epoch 9369: model parameters saved\n", - "Epoch 9370 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9370: avg_loss appended (1.3125)\n", - "Epoch 9370: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9370: accuracy appended (60.00%)\n", - "Epoch 9370: model set back to train mode\n", - "Epoch 9370: model parameters saved\n", - "Epoch 9371 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9371: avg_loss appended (1.3125)\n", - "Epoch 9371: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9371: accuracy appended (60.00%)\n", - "Epoch 9371: model set back to train mode\n", - "Epoch 9371: model parameters saved\n", - "Epoch 9372 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9372: avg_loss appended (1.3125)\n", - "Epoch 9372: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9372: accuracy appended (60.00%)\n", - "Epoch 9372: model set back to train mode\n", - "Epoch 9372: model parameters saved\n", - "Epoch 9373 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9373: avg_loss appended (1.3125)\n", - "Epoch 9373: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9373: accuracy appended (60.00%)\n", - "Epoch 9373: model set back to train mode\n", - "Epoch 9373: model parameters saved\n", - "Epoch 9374 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9374: avg_loss appended (1.3125)\n", - "Epoch 9374: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9374: accuracy appended (60.00%)\n", - "Epoch 9374: model set back to train mode\n", - "Epoch 9374: model parameters saved\n", - "Epoch 9375 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9375: avg_loss appended (1.3125)\n", - "Epoch 9375: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9375: accuracy appended (60.00%)\n", - "Epoch 9375: model set back to train mode\n", - "Epoch 9375: model parameters saved\n", - "Epoch 9376 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9376: avg_loss appended (1.3125)\n", - "Epoch 9376: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9376: accuracy appended (60.00%)\n", - "Epoch 9376: model set back to train mode\n", - "Epoch 9376: model parameters saved\n", - "Epoch 9377 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9377: avg_loss appended (1.3125)\n", - "Epoch 9377: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9377: accuracy appended (60.00%)\n", - "Epoch 9377: model set back to train mode\n", - "Epoch 9377: model parameters saved\n", - "Epoch 9378 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9378: avg_loss appended (1.3125)\n", - "Epoch 9378: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9378: accuracy appended (60.00%)\n", - "Epoch 9378: model set back to train mode\n", - "Epoch 9378: model parameters saved\n", - "Epoch 9379 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9379: avg_loss appended (1.3125)\n", - "Epoch 9379: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9379: accuracy appended (60.00%)\n", - "Epoch 9379: model set back to train mode\n", - "Epoch 9379: model parameters saved\n", - "Epoch 9380 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9380: avg_loss appended (1.3125)\n", - "Epoch 9380: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9380: accuracy appended (60.00%)\n", - "Epoch 9380: model set back to train mode\n", - "Epoch 9380: model parameters saved\n", - "Epoch 9381 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9381: avg_loss appended (1.3125)\n", - "Epoch 9381: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9381: accuracy appended (60.00%)\n", - "Epoch 9381: model set back to train mode\n", - "Epoch 9381: model parameters saved\n", - "Epoch 9382 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9382: avg_loss appended (1.3125)\n", - "Epoch 9382: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9382: accuracy appended (60.00%)\n", - "Epoch 9382: model set back to train mode\n", - "Epoch 9382: model parameters saved\n", - "Epoch 9383 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9383: avg_loss appended (1.3125)\n", - "Epoch 9383: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9383: accuracy appended (60.00%)\n", - "Epoch 9383: model set back to train mode\n", - "Epoch 9383: model parameters saved\n", - "Epoch 9384 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9384: avg_loss appended (1.3125)\n", - "Epoch 9384: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9384: accuracy appended (60.00%)\n", - "Epoch 9384: model set back to train mode\n", - "Epoch 9384: model parameters saved\n", - "Epoch 9385 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9385: avg_loss appended (1.3125)\n", - "Epoch 9385: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9385: accuracy appended (60.00%)\n", - "Epoch 9385: model set back to train mode\n", - "Epoch 9385: model parameters saved\n", - "Epoch 9386 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9386: avg_loss appended (1.3125)\n", - "Epoch 9386: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9386: accuracy appended (60.00%)\n", - "Epoch 9386: model set back to train mode\n", - "Epoch 9386: model parameters saved\n", - "Epoch 9387 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9387: avg_loss appended (1.3125)\n", - "Epoch 9387: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9387: accuracy appended (60.00%)\n", - "Epoch 9387: model set back to train mode\n", - "Epoch 9387: model parameters saved\n", - "Epoch 9388 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9388: avg_loss appended (1.3125)\n", - "Epoch 9388: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9388: accuracy appended (60.00%)\n", - "Epoch 9388: model set back to train mode\n", - "Epoch 9388: model parameters saved\n", - "Epoch 9389 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9389: avg_loss appended (1.3125)\n", - "Epoch 9389: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9389: accuracy appended (60.00%)\n", - "Epoch 9389: model set back to train mode\n", - "Epoch 9389: model parameters saved\n", - "Epoch 9390 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9390: avg_loss appended (1.3125)\n", - "Epoch 9390: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9390: accuracy appended (60.00%)\n", - "Epoch 9390: model set back to train mode\n", - "Epoch 9390: model parameters saved\n", - "Epoch 9391 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9391: avg_loss appended (1.3125)\n", - "Epoch 9391: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9391: accuracy appended (60.00%)\n", - "Epoch 9391: model set back to train mode\n", - "Epoch 9391: model parameters saved\n", - "Epoch 9392 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9392: avg_loss appended (1.3125)\n", - "Epoch 9392: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9392: accuracy appended (60.00%)\n", - "Epoch 9392: model set back to train mode\n", - "Epoch 9392: model parameters saved\n", - "Epoch 9393 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9393: avg_loss appended (1.3125)\n", - "Epoch 9393: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9393: accuracy appended (60.00%)\n", - "Epoch 9393: model set back to train mode\n", - "Epoch 9393: model parameters saved\n", - "Epoch 9394 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9394: avg_loss appended (1.3125)\n", - "Epoch 9394: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9394: accuracy appended (60.00%)\n", - "Epoch 9394: model set back to train mode\n", - "Epoch 9394: model parameters saved\n", - "Epoch 9395 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9395: avg_loss appended (1.3125)\n", - "Epoch 9395: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9395: accuracy appended (60.00%)\n", - "Epoch 9395: model set back to train mode\n", - "Epoch 9395: model parameters saved\n", - "Epoch 9396 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9396: avg_loss appended (1.3125)\n", - "Epoch 9396: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9396: accuracy appended (60.00%)\n", - "Epoch 9396: model set back to train mode\n", - "Epoch 9396: model parameters saved\n", - "Epoch 9397 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9397: avg_loss appended (1.3125)\n", - "Epoch 9397: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9397: accuracy appended (60.00%)\n", - "Epoch 9397: model set back to train mode\n", - "Epoch 9397: model parameters saved\n", - "Epoch 9398 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9398: avg_loss appended (1.3125)\n", - "Epoch 9398: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9398: accuracy appended (60.00%)\n", - "Epoch 9398: model set back to train mode\n", - "Epoch 9398: model parameters saved\n", - "Epoch 9399 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9399: avg_loss appended (1.3125)\n", - "Epoch 9399: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9399: accuracy appended (60.00%)\n", - "Epoch 9399: model set back to train mode\n", - "Epoch 9399: model parameters saved\n", - "Epoch 9400 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9400: avg_loss appended (1.3125)\n", - "Epoch 9400: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9400: accuracy appended (60.00%)\n", - "Epoch 9400: model set back to train mode\n", - "Epoch 9400: model parameters saved\n", - "Epoch 9400/10000, Loss: 1.3125, Accuracy: 60.00%\n", - "Epoch 9401 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9401: avg_loss appended (1.3125)\n", - "Epoch 9401: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9401: accuracy appended (60.00%)\n", - "Epoch 9401: model set back to train mode\n", - "Epoch 9401: model parameters saved\n", - "Epoch 9402 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9402: avg_loss appended (1.3125)\n", - "Epoch 9402: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9402: accuracy appended (60.00%)\n", - "Epoch 9402: model set back to train mode\n", - "Epoch 9402: model parameters saved\n", - "Epoch 9403 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9403: avg_loss appended (1.3125)\n", - "Epoch 9403: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9403: accuracy appended (60.00%)\n", - "Epoch 9403: model set back to train mode\n", - "Epoch 9403: model parameters saved\n", - "Epoch 9404 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9404: avg_loss appended (1.3125)\n", - "Epoch 9404: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9404: accuracy appended (60.00%)\n", - "Epoch 9404: model set back to train mode\n", - "Epoch 9404: model parameters saved\n", - "Epoch 9405 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9405: avg_loss appended (1.3125)\n", - "Epoch 9405: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9405: accuracy appended (60.00%)\n", - "Epoch 9405: model set back to train mode\n", - "Epoch 9405: model parameters saved\n", - "Epoch 9406 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9406: avg_loss appended (1.3125)\n", - "Epoch 9406: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9406: accuracy appended (60.00%)\n", - "Epoch 9406: model set back to train mode\n", - "Epoch 9406: model parameters saved\n", - "Epoch 9407 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9407: avg_loss appended (1.3125)\n", - "Epoch 9407: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9407: accuracy appended (60.00%)\n", - "Epoch 9407: model set back to train mode\n", - "Epoch 9407: model parameters saved\n", - "Epoch 9408 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9408: avg_loss appended (1.3125)\n", - "Epoch 9408: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9408: accuracy appended (60.00%)\n", - "Epoch 9408: model set back to train mode\n", - "Epoch 9408: model parameters saved\n", - "Epoch 9409 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9409: avg_loss appended (1.3125)\n", - "Epoch 9409: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9409: accuracy appended (60.00%)\n", - "Epoch 9409: model set back to train mode\n", - "Epoch 9409: model parameters saved\n", - "Epoch 9410 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9410: avg_loss appended (1.3125)\n", - "Epoch 9410: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9410: accuracy appended (60.00%)\n", - "Epoch 9410: model set back to train mode\n", - "Epoch 9410: model parameters saved\n", - "Epoch 9411 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9411: avg_loss appended (1.3125)\n", - "Epoch 9411: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9411: accuracy appended (60.00%)\n", - "Epoch 9411: model set back to train mode\n", - "Epoch 9411: model parameters saved\n", - "Epoch 9412 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9412: avg_loss appended (1.3125)\n", - "Epoch 9412: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9412: accuracy appended (60.00%)\n", - "Epoch 9412: model set back to train mode\n", - "Epoch 9412: model parameters saved\n", - "Epoch 9413 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9413: avg_loss appended (1.3125)\n", - "Epoch 9413: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9413: accuracy appended (60.00%)\n", - "Epoch 9413: model set back to train mode\n", - "Epoch 9413: model parameters saved\n", - "Epoch 9414 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9414: avg_loss appended (1.3125)\n", - "Epoch 9414: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9414: accuracy appended (60.00%)\n", - "Epoch 9414: model set back to train mode\n", - "Epoch 9414: model parameters saved\n", - "Epoch 9415 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9415: avg_loss appended (1.3125)\n", - "Epoch 9415: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9415: accuracy appended (60.00%)\n", - "Epoch 9415: model set back to train mode\n", - "Epoch 9415: model parameters saved\n", - "Epoch 9416 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9416: avg_loss appended (1.3125)\n", - "Epoch 9416: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9416: accuracy appended (60.00%)\n", - "Epoch 9416: model set back to train mode\n", - "Epoch 9416: model parameters saved\n", - "Epoch 9417 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9417: avg_loss appended (1.3125)\n", - "Epoch 9417: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9417: accuracy appended (60.00%)\n", - "Epoch 9417: model set back to train mode\n", - "Epoch 9417: model parameters saved\n", - "Epoch 9418 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9418: avg_loss appended (1.3125)\n", - "Epoch 9418: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9418: accuracy appended (60.00%)\n", - "Epoch 9418: model set back to train mode\n", - "Epoch 9418: model parameters saved\n", - "Epoch 9419 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9419: avg_loss appended (1.3125)\n", - "Epoch 9419: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9419: accuracy appended (60.00%)\n", - "Epoch 9419: model set back to train mode\n", - "Epoch 9419: model parameters saved\n", - "Epoch 9420 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9420: avg_loss appended (1.3125)\n", - "Epoch 9420: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9420: accuracy appended (60.00%)\n", - "Epoch 9420: model set back to train mode\n", - "Epoch 9420: model parameters saved\n", - "Epoch 9421 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9421: avg_loss appended (1.3125)\n", - "Epoch 9421: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9421: accuracy appended (60.00%)\n", - "Epoch 9421: model set back to train mode\n", - "Epoch 9421: model parameters saved\n", - "Epoch 9422 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9422: avg_loss appended (1.3125)\n", - "Epoch 9422: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9422: accuracy appended (60.00%)\n", - "Epoch 9422: model set back to train mode\n", - "Epoch 9422: model parameters saved\n", - "Epoch 9423 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9423: avg_loss appended (1.3125)\n", - "Epoch 9423: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9423: accuracy appended (60.00%)\n", - "Epoch 9423: model set back to train mode\n", - "Epoch 9423: model parameters saved\n", - "Epoch 9424 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9424: avg_loss appended (1.3125)\n", - "Epoch 9424: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9424: accuracy appended (60.00%)\n", - "Epoch 9424: model set back to train mode\n", - "Epoch 9424: model parameters saved\n", - "Epoch 9425 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9425: avg_loss appended (1.3125)\n", - "Epoch 9425: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9425: accuracy appended (60.00%)\n", - "Epoch 9425: model set back to train mode\n", - "Epoch 9425: model parameters saved\n", - "Epoch 9426 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9426: avg_loss appended (1.3125)\n", - "Epoch 9426: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9426: accuracy appended (60.00%)\n", - "Epoch 9426: model set back to train mode\n", - "Epoch 9426: model parameters saved\n", - "Epoch 9427 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9427: avg_loss appended (1.3125)\n", - "Epoch 9427: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9427: accuracy appended (60.00%)\n", - "Epoch 9427: model set back to train mode\n", - "Epoch 9427: model parameters saved\n", - "Epoch 9428 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9428: avg_loss appended (1.3125)\n", - "Epoch 9428: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9428: accuracy appended (60.00%)\n", - "Epoch 9428: model set back to train mode\n", - "Epoch 9428: model parameters saved\n", - "Epoch 9429 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9429: avg_loss appended (1.3125)\n", - "Epoch 9429: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9429: accuracy appended (60.00%)\n", - "Epoch 9429: model set back to train mode\n", - "Epoch 9429: model parameters saved\n", - "Epoch 9430 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9430: avg_loss appended (1.3125)\n", - "Epoch 9430: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9430: accuracy appended (60.00%)\n", - "Epoch 9430: model set back to train mode\n", - "Epoch 9430: model parameters saved\n", - "Epoch 9431 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9431: avg_loss appended (1.3125)\n", - "Epoch 9431: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9431: accuracy appended (60.00%)\n", - "Epoch 9431: model set back to train mode\n", - "Epoch 9431: model parameters saved\n", - "Epoch 9432 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9432: avg_loss appended (1.3125)\n", - "Epoch 9432: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9432: accuracy appended (60.00%)\n", - "Epoch 9432: model set back to train mode\n", - "Epoch 9432: model parameters saved\n", - "Epoch 9433 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9433: avg_loss appended (1.3125)\n", - "Epoch 9433: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9433: accuracy appended (60.00%)\n", - "Epoch 9433: model set back to train mode\n", - "Epoch 9433: model parameters saved\n", - "Epoch 9434 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9434: avg_loss appended (1.3125)\n", - "Epoch 9434: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9434: accuracy appended (60.00%)\n", - "Epoch 9434: model set back to train mode\n", - "Epoch 9434: model parameters saved\n", - "Epoch 9435 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9435: avg_loss appended (1.3125)\n", - "Epoch 9435: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9435: accuracy appended (60.00%)\n", - "Epoch 9435: model set back to train mode\n", - "Epoch 9435: model parameters saved\n", - "Epoch 9436 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9436: avg_loss appended (1.3125)\n", - "Epoch 9436: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9436: accuracy appended (60.00%)\n", - "Epoch 9436: model set back to train mode\n", - "Epoch 9436: model parameters saved\n", - "Epoch 9437 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9437: avg_loss appended (1.3125)\n", - "Epoch 9437: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9437: accuracy appended (60.00%)\n", - "Epoch 9437: model set back to train mode\n", - "Epoch 9437: model parameters saved\n", - "Epoch 9438 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9438: avg_loss appended (1.3125)\n", - "Epoch 9438: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9438: accuracy appended (60.00%)\n", - "Epoch 9438: model set back to train mode\n", - "Epoch 9438: model parameters saved\n", - "Epoch 9439 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9439: avg_loss appended (1.3125)\n", - "Epoch 9439: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9439: accuracy appended (60.00%)\n", - "Epoch 9439: model set back to train mode\n", - "Epoch 9439: model parameters saved\n", - "Epoch 9440 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9440: avg_loss appended (1.3125)\n", - "Epoch 9440: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9440: accuracy appended (60.00%)\n", - "Epoch 9440: model set back to train mode\n", - "Epoch 9440: model parameters saved\n", - "Epoch 9441 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9441: avg_loss appended (1.3125)\n", - "Epoch 9441: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9441: accuracy appended (60.00%)\n", - "Epoch 9441: model set back to train mode\n", - "Epoch 9441: model parameters saved\n", - "Epoch 9442 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9442: avg_loss appended (1.3125)\n", - "Epoch 9442: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9442: accuracy appended (60.00%)\n", - "Epoch 9442: model set back to train mode\n", - "Epoch 9442: model parameters saved\n", - "Epoch 9443 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9443: avg_loss appended (1.3125)\n", - "Epoch 9443: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9443: accuracy appended (60.00%)\n", - "Epoch 9443: model set back to train mode\n", - "Epoch 9443: model parameters saved\n", - "Epoch 9444 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9444: avg_loss appended (1.3125)\n", - "Epoch 9444: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9444: accuracy appended (60.00%)\n", - "Epoch 9444: model set back to train mode\n", - "Epoch 9444: model parameters saved\n", - "Epoch 9445 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9445: avg_loss appended (1.3125)\n", - "Epoch 9445: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9445: accuracy appended (60.00%)\n", - "Epoch 9445: model set back to train mode\n", - "Epoch 9445: model parameters saved\n", - "Epoch 9446 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9446: avg_loss appended (1.3125)\n", - "Epoch 9446: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9446: accuracy appended (60.00%)\n", - "Epoch 9446: model set back to train mode\n", - "Epoch 9446: model parameters saved\n", - "Epoch 9447 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9447: avg_loss appended (1.3125)\n", - "Epoch 9447: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9447: accuracy appended (60.00%)\n", - "Epoch 9447: model set back to train mode\n", - "Epoch 9447: model parameters saved\n", - "Epoch 9448 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9448: avg_loss appended (1.3125)\n", - "Epoch 9448: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9448: accuracy appended (60.00%)\n", - "Epoch 9448: model set back to train mode\n", - "Epoch 9448: model parameters saved\n", - "Epoch 9449 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9449: avg_loss appended (1.3125)\n", - "Epoch 9449: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9449: accuracy appended (60.00%)\n", - "Epoch 9449: model set back to train mode\n", - "Epoch 9449: model parameters saved\n", - "Epoch 9450 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9450: avg_loss appended (1.3125)\n", - "Epoch 9450: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9450: accuracy appended (60.00%)\n", - "Epoch 9450: model set back to train mode\n", - "Epoch 9450: model parameters saved\n", - "Epoch 9451 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9451: avg_loss appended (1.3125)\n", - "Epoch 9451: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9451: accuracy appended (60.00%)\n", - "Epoch 9451: model set back to train mode\n", - "Epoch 9451: model parameters saved\n", - "Epoch 9452 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9452: avg_loss appended (1.3125)\n", - "Epoch 9452: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9452: accuracy appended (60.00%)\n", - "Epoch 9452: model set back to train mode\n", - "Epoch 9452: model parameters saved\n", - "Epoch 9453 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9453: avg_loss appended (1.3125)\n", - "Epoch 9453: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9453: accuracy appended (60.00%)\n", - "Epoch 9453: model set back to train mode\n", - "Epoch 9453: model parameters saved\n", - "Epoch 9454 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9454: avg_loss appended (1.3125)\n", - "Epoch 9454: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9454: accuracy appended (60.00%)\n", - "Epoch 9454: model set back to train mode\n", - "Epoch 9454: model parameters saved\n", - "Epoch 9455 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9455: avg_loss appended (1.3125)\n", - "Epoch 9455: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9455: accuracy appended (60.00%)\n", - "Epoch 9455: model set back to train mode\n", - "Epoch 9455: model parameters saved\n", - "Epoch 9456 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9456: avg_loss appended (1.3125)\n", - "Epoch 9456: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9456: accuracy appended (60.00%)\n", - "Epoch 9456: model set back to train mode\n", - "Epoch 9456: model parameters saved\n", - "Epoch 9457 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9457: avg_loss appended (1.3125)\n", - "Epoch 9457: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9457: accuracy appended (60.00%)\n", - "Epoch 9457: model set back to train mode\n", - "Epoch 9457: model parameters saved\n", - "Epoch 9458 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9458: avg_loss appended (1.3125)\n", - "Epoch 9458: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9458: accuracy appended (60.00%)\n", - "Epoch 9458: model set back to train mode\n", - "Epoch 9458: model parameters saved\n", - "Epoch 9459 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9459: avg_loss appended (1.3125)\n", - "Epoch 9459: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9459: accuracy appended (60.00%)\n", - "Epoch 9459: model set back to train mode\n", - "Epoch 9459: model parameters saved\n", - "Epoch 9460 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9460: avg_loss appended (1.3125)\n", - "Epoch 9460: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9460: accuracy appended (60.00%)\n", - "Epoch 9460: model set back to train mode\n", - "Epoch 9460: model parameters saved\n", - "Epoch 9461 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9461: avg_loss appended (1.3125)\n", - "Epoch 9461: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9461: accuracy appended (60.00%)\n", - "Epoch 9461: model set back to train mode\n", - "Epoch 9461: model parameters saved\n", - "Epoch 9462 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9462: avg_loss appended (1.3125)\n", - "Epoch 9462: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9462: accuracy appended (60.00%)\n", - "Epoch 9462: model set back to train mode\n", - "Epoch 9462: model parameters saved\n", - "Epoch 9463 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9463: avg_loss appended (1.3125)\n", - "Epoch 9463: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9463: accuracy appended (60.00%)\n", - "Epoch 9463: model set back to train mode\n", - "Epoch 9463: model parameters saved\n", - "Epoch 9464 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9464: avg_loss appended (1.3125)\n", - "Epoch 9464: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9464: accuracy appended (60.00%)\n", - "Epoch 9464: model set back to train mode\n", - "Epoch 9464: model parameters saved\n", - "Epoch 9465 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9465: avg_loss appended (1.3125)\n", - "Epoch 9465: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9465: accuracy appended (60.00%)\n", - "Epoch 9465: model set back to train mode\n", - "Epoch 9465: model parameters saved\n", - "Epoch 9466 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9466: avg_loss appended (1.3125)\n", - "Epoch 9466: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9466: accuracy appended (60.00%)\n", - "Epoch 9466: model set back to train mode\n", - "Epoch 9466: model parameters saved\n", - "Epoch 9467 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9467: avg_loss appended (1.3125)\n", - "Epoch 9467: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9467: accuracy appended (60.00%)\n", - "Epoch 9467: model set back to train mode\n", - "Epoch 9467: model parameters saved\n", - "Epoch 9468 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9468: avg_loss appended (1.3125)\n", - "Epoch 9468: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9468: accuracy appended (60.00%)\n", - "Epoch 9468: model set back to train mode\n", - "Epoch 9468: model parameters saved\n", - "Epoch 9469 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9469: avg_loss appended (1.3125)\n", - "Epoch 9469: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9469: accuracy appended (60.00%)\n", - "Epoch 9469: model set back to train mode\n", - "Epoch 9469: model parameters saved\n", - "Epoch 9470 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9470: avg_loss appended (1.3125)\n", - "Epoch 9470: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9470: accuracy appended (60.00%)\n", - "Epoch 9470: model set back to train mode\n", - "Epoch 9470: model parameters saved\n", - "Epoch 9471 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9471: avg_loss appended (1.3125)\n", - "Epoch 9471: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9471: accuracy appended (60.00%)\n", - "Epoch 9471: model set back to train mode\n", - "Epoch 9471: model parameters saved\n", - "Epoch 9472 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9472: avg_loss appended (1.3125)\n", - "Epoch 9472: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9472: accuracy appended (60.00%)\n", - "Epoch 9472: model set back to train mode\n", - "Epoch 9472: model parameters saved\n", - "Epoch 9473 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9473: avg_loss appended (1.3125)\n", - "Epoch 9473: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9473: accuracy appended (60.00%)\n", - "Epoch 9473: model set back to train mode\n", - "Epoch 9473: model parameters saved\n", - "Epoch 9474 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9474: avg_loss appended (1.3125)\n", - "Epoch 9474: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9474: accuracy appended (60.00%)\n", - "Epoch 9474: model set back to train mode\n", - "Epoch 9474: model parameters saved\n", - "Epoch 9475 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9475: avg_loss appended (1.3125)\n", - "Epoch 9475: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9475: accuracy appended (60.00%)\n", - "Epoch 9475: model set back to train mode\n", - "Epoch 9475: model parameters saved\n", - "Epoch 9476 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9476: avg_loss appended (1.3125)\n", - "Epoch 9476: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9476: accuracy appended (60.00%)\n", - "Epoch 9476: model set back to train mode\n", - "Epoch 9476: model parameters saved\n", - "Epoch 9477 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9477: avg_loss appended (1.3125)\n", - "Epoch 9477: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9477: accuracy appended (60.00%)\n", - "Epoch 9477: model set back to train mode\n", - "Epoch 9477: model parameters saved\n", - "Epoch 9478 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9478: avg_loss appended (1.3125)\n", - "Epoch 9478: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9478: accuracy appended (60.00%)\n", - "Epoch 9478: model set back to train mode\n", - "Epoch 9478: model parameters saved\n", - "Epoch 9479 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9479: avg_loss appended (1.3125)\n", - "Epoch 9479: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9479: accuracy appended (60.00%)\n", - "Epoch 9479: model set back to train mode\n", - "Epoch 9479: model parameters saved\n", - "Epoch 9480 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9480: avg_loss appended (1.3125)\n", - "Epoch 9480: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9480: accuracy appended (60.00%)\n", - "Epoch 9480: model set back to train mode\n", - "Epoch 9480: model parameters saved\n", - "Epoch 9481 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9481: avg_loss appended (1.3125)\n", - "Epoch 9481: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9481: accuracy appended (60.00%)\n", - "Epoch 9481: model set back to train mode\n", - "Epoch 9481: model parameters saved\n", - "Epoch 9482 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9482: avg_loss appended (1.3125)\n", - "Epoch 9482: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9482: accuracy appended (60.00%)\n", - "Epoch 9482: model set back to train mode\n", - "Epoch 9482: model parameters saved\n", - "Epoch 9483 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9483: avg_loss appended (1.3125)\n", - "Epoch 9483: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9483: accuracy appended (60.00%)\n", - "Epoch 9483: model set back to train mode\n", - "Epoch 9483: model parameters saved\n", - "Epoch 9484 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9484: avg_loss appended (1.3125)\n", - "Epoch 9484: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9484: accuracy appended (60.00%)\n", - "Epoch 9484: model set back to train mode\n", - "Epoch 9484: model parameters saved\n", - "Epoch 9485 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9485: avg_loss appended (1.3125)\n", - "Epoch 9485: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9485: accuracy appended (60.00%)\n", - "Epoch 9485: model set back to train mode\n", - "Epoch 9485: model parameters saved\n", - "Epoch 9486 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9486: avg_loss appended (1.3125)\n", - "Epoch 9486: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9486: accuracy appended (60.00%)\n", - "Epoch 9486: model set back to train mode\n", - "Epoch 9486: model parameters saved\n", - "Epoch 9487 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9487: avg_loss appended (1.3125)\n", - "Epoch 9487: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9487: accuracy appended (60.00%)\n", - "Epoch 9487: model set back to train mode\n", - "Epoch 9487: model parameters saved\n", - "Epoch 9488 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9488: avg_loss appended (1.3125)\n", - "Epoch 9488: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9488: accuracy appended (60.00%)\n", - "Epoch 9488: model set back to train mode\n", - "Epoch 9488: model parameters saved\n", - "Epoch 9489 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9489: avg_loss appended (1.3125)\n", - "Epoch 9489: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9489: accuracy appended (60.00%)\n", - "Epoch 9489: model set back to train mode\n", - "Epoch 9489: model parameters saved\n", - "Epoch 9490 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9490: avg_loss appended (1.3125)\n", - "Epoch 9490: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9490: accuracy appended (60.00%)\n", - "Epoch 9490: model set back to train mode\n", - "Epoch 9490: model parameters saved\n", - "Epoch 9491 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9491: avg_loss appended (1.3125)\n", - "Epoch 9491: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9491: accuracy appended (60.00%)\n", - "Epoch 9491: model set back to train mode\n", - "Epoch 9491: model parameters saved\n", - "Epoch 9492 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9492: avg_loss appended (1.3125)\n", - "Epoch 9492: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9492: accuracy appended (60.00%)\n", - "Epoch 9492: model set back to train mode\n", - "Epoch 9492: model parameters saved\n", - "Epoch 9493 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9493: avg_loss appended (1.3125)\n", - "Epoch 9493: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9493: accuracy appended (60.00%)\n", - "Epoch 9493: model set back to train mode\n", - "Epoch 9493: model parameters saved\n", - "Epoch 9494 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9494: avg_loss appended (1.3125)\n", - "Epoch 9494: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9494: accuracy appended (60.00%)\n", - "Epoch 9494: model set back to train mode\n", - "Epoch 9494: model parameters saved\n", - "Epoch 9495 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9495: avg_loss appended (1.3125)\n", - "Epoch 9495: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9495: accuracy appended (60.00%)\n", - "Epoch 9495: model set back to train mode\n", - "Epoch 9495: model parameters saved\n", - "Epoch 9496 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9496: avg_loss appended (1.3125)\n", - "Epoch 9496: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9496: accuracy appended (60.00%)\n", - "Epoch 9496: model set back to train mode\n", - "Epoch 9496: model parameters saved\n", - "Epoch 9497 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9497: avg_loss appended (1.3125)\n", - "Epoch 9497: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9497: accuracy appended (60.00%)\n", - "Epoch 9497: model set back to train mode\n", - "Epoch 9497: model parameters saved\n", - "Epoch 9498 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9498: avg_loss appended (1.3125)\n", - "Epoch 9498: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9498: accuracy appended (60.00%)\n", - "Epoch 9498: model set back to train mode\n", - "Epoch 9498: model parameters saved\n", - "Epoch 9499 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9499: avg_loss appended (1.3125)\n", - "Epoch 9499: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9499: accuracy appended (60.00%)\n", - "Epoch 9499: model set back to train mode\n", - "Epoch 9499: model parameters saved\n", - "Epoch 9500 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9500: avg_loss appended (1.3125)\n", - "Epoch 9500: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9500: accuracy appended (60.00%)\n", - "Epoch 9500: model set back to train mode\n", - "Epoch 9500: model parameters saved\n", - "Epoch 9500/10000, Loss: 1.3125, Accuracy: 60.00%\n", - "Epoch 9501 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9501: avg_loss appended (1.3125)\n", - "Epoch 9501: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9501: accuracy appended (60.00%)\n", - "Epoch 9501: model set back to train mode\n", - "Epoch 9501: model parameters saved\n", - "Epoch 9502 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9502: avg_loss appended (1.3125)\n", - "Epoch 9502: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9502: accuracy appended (60.00%)\n", - "Epoch 9502: model set back to train mode\n", - "Epoch 9502: model parameters saved\n", - "Epoch 9503 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9503: avg_loss appended (1.3125)\n", - "Epoch 9503: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9503: accuracy appended (60.00%)\n", - "Epoch 9503: model set back to train mode\n", - "Epoch 9503: model parameters saved\n", - "Epoch 9504 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9504: avg_loss appended (1.3125)\n", - "Epoch 9504: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9504: accuracy appended (60.00%)\n", - "Epoch 9504: model set back to train mode\n", - "Epoch 9504: model parameters saved\n", - "Epoch 9505 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9505: avg_loss appended (1.3125)\n", - "Epoch 9505: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9505: accuracy appended (60.00%)\n", - "Epoch 9505: model set back to train mode\n", - "Epoch 9505: model parameters saved\n", - "Epoch 9506 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9506: avg_loss appended (1.3125)\n", - "Epoch 9506: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9506: accuracy appended (60.00%)\n", - "Epoch 9506: model set back to train mode\n", - "Epoch 9506: model parameters saved\n", - "Epoch 9507 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9507: avg_loss appended (1.3125)\n", - "Epoch 9507: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9507: accuracy appended (60.00%)\n", - "Epoch 9507: model set back to train mode\n", - "Epoch 9507: model parameters saved\n", - "Epoch 9508 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9508: avg_loss appended (1.3125)\n", - "Epoch 9508: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9508: accuracy appended (60.00%)\n", - "Epoch 9508: model set back to train mode\n", - "Epoch 9508: model parameters saved\n", - "Epoch 9509 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9509: avg_loss appended (1.3125)\n", - "Epoch 9509: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9509: accuracy appended (60.00%)\n", - "Epoch 9509: model set back to train mode\n", - "Epoch 9509: model parameters saved\n", - "Epoch 9510 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9510: avg_loss appended (1.3125)\n", - "Epoch 9510: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9510: accuracy appended (60.00%)\n", - "Epoch 9510: model set back to train mode\n", - "Epoch 9510: model parameters saved\n", - "Epoch 9511 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9511: avg_loss appended (1.3125)\n", - "Epoch 9511: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9511: accuracy appended (60.00%)\n", - "Epoch 9511: model set back to train mode\n", - "Epoch 9511: model parameters saved\n", - "Epoch 9512 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9512: avg_loss appended (1.3125)\n", - "Epoch 9512: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9512: accuracy appended (60.00%)\n", - "Epoch 9512: model set back to train mode\n", - "Epoch 9512: model parameters saved\n", - "Epoch 9513 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9513: avg_loss appended (1.3125)\n", - "Epoch 9513: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9513: accuracy appended (60.00%)\n", - "Epoch 9513: model set back to train mode\n", - "Epoch 9513: model parameters saved\n", - "Epoch 9514 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9514: avg_loss appended (1.3125)\n", - "Epoch 9514: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9514: accuracy appended (60.00%)\n", - "Epoch 9514: model set back to train mode\n", - "Epoch 9514: model parameters saved\n", - "Epoch 9515 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9515: avg_loss appended (1.3125)\n", - "Epoch 9515: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9515: accuracy appended (60.00%)\n", - "Epoch 9515: model set back to train mode\n", - "Epoch 9515: model parameters saved\n", - "Epoch 9516 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9516: avg_loss appended (1.3125)\n", - "Epoch 9516: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9516: accuracy appended (60.00%)\n", - "Epoch 9516: model set back to train mode\n", - "Epoch 9516: model parameters saved\n", - "Epoch 9517 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9517: avg_loss appended (1.3125)\n", - "Epoch 9517: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9517: accuracy appended (60.00%)\n", - "Epoch 9517: model set back to train mode\n", - "Epoch 9517: model parameters saved\n", - "Epoch 9518 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9518: avg_loss appended (1.3125)\n", - "Epoch 9518: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9518: accuracy appended (60.00%)\n", - "Epoch 9518: model set back to train mode\n", - "Epoch 9518: model parameters saved\n", - "Epoch 9519 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9519: avg_loss appended (1.3125)\n", - "Epoch 9519: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9519: accuracy appended (60.00%)\n", - "Epoch 9519: model set back to train mode\n", - "Epoch 9519: model parameters saved\n", - "Epoch 9520 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9520: avg_loss appended (1.3125)\n", - "Epoch 9520: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9520: accuracy appended (60.00%)\n", - "Epoch 9520: model set back to train mode\n", - "Epoch 9520: model parameters saved\n", - "Epoch 9521 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9521: avg_loss appended (1.3125)\n", - "Epoch 9521: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9521: accuracy appended (60.00%)\n", - "Epoch 9521: model set back to train mode\n", - "Epoch 9521: model parameters saved\n", - "Epoch 9522 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9522: avg_loss appended (1.3125)\n", - "Epoch 9522: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9522: accuracy appended (60.00%)\n", - "Epoch 9522: model set back to train mode\n", - "Epoch 9522: model parameters saved\n", - "Epoch 9523 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9523: avg_loss appended (1.3125)\n", - "Epoch 9523: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9523: accuracy appended (60.00%)\n", - "Epoch 9523: model set back to train mode\n", - "Epoch 9523: model parameters saved\n", - "Epoch 9524 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9524: avg_loss appended (1.3125)\n", - "Epoch 9524: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9524: accuracy appended (60.00%)\n", - "Epoch 9524: model set back to train mode\n", - "Epoch 9524: model parameters saved\n", - "Epoch 9525 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9525: avg_loss appended (1.3125)\n", - "Epoch 9525: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9525: accuracy appended (60.00%)\n", - "Epoch 9525: model set back to train mode\n", - "Epoch 9525: model parameters saved\n", - "Epoch 9526 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9526: avg_loss appended (1.3125)\n", - "Epoch 9526: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9526: accuracy appended (60.00%)\n", - "Epoch 9526: model set back to train mode\n", - "Epoch 9526: model parameters saved\n", - "Epoch 9527 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9527: avg_loss appended (1.3125)\n", - "Epoch 9527: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9527: accuracy appended (60.00%)\n", - "Epoch 9527: model set back to train mode\n", - "Epoch 9527: model parameters saved\n", - "Epoch 9528 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9528: avg_loss appended (1.3125)\n", - "Epoch 9528: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9528: accuracy appended (60.00%)\n", - "Epoch 9528: model set back to train mode\n", - "Epoch 9528: model parameters saved\n", - "Epoch 9529 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9529: avg_loss appended (1.3125)\n", - "Epoch 9529: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9529: accuracy appended (60.00%)\n", - "Epoch 9529: model set back to train mode\n", - "Epoch 9529: model parameters saved\n", - "Epoch 9530 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9530: avg_loss appended (1.3125)\n", - "Epoch 9530: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9530: accuracy appended (60.00%)\n", - "Epoch 9530: model set back to train mode\n", - "Epoch 9530: model parameters saved\n", - "Epoch 9531 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9531: avg_loss appended (1.3125)\n", - "Epoch 9531: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9531: accuracy appended (60.00%)\n", - "Epoch 9531: model set back to train mode\n", - "Epoch 9531: model parameters saved\n", - "Epoch 9532 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9532: avg_loss appended (1.3125)\n", - "Epoch 9532: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9532: accuracy appended (60.00%)\n", - "Epoch 9532: model set back to train mode\n", - "Epoch 9532: model parameters saved\n", - "Epoch 9533 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9533: avg_loss appended (1.3125)\n", - "Epoch 9533: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9533: accuracy appended (60.00%)\n", - "Epoch 9533: model set back to train mode\n", - "Epoch 9533: model parameters saved\n", - "Epoch 9534 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9534: avg_loss appended (1.3125)\n", - "Epoch 9534: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9534: accuracy appended (60.00%)\n", - "Epoch 9534: model set back to train mode\n", - "Epoch 9534: model parameters saved\n", - "Epoch 9535 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9535: avg_loss appended (1.3125)\n", - "Epoch 9535: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9535: accuracy appended (60.00%)\n", - "Epoch 9535: model set back to train mode\n", - "Epoch 9535: model parameters saved\n", - "Epoch 9536 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9536: avg_loss appended (1.3125)\n", - "Epoch 9536: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9536: accuracy appended (60.00%)\n", - "Epoch 9536: model set back to train mode\n", - "Epoch 9536: model parameters saved\n", - "Epoch 9537 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9537: avg_loss appended (1.3125)\n", - "Epoch 9537: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9537: accuracy appended (60.00%)\n", - "Epoch 9537: model set back to train mode\n", - "Epoch 9537: model parameters saved\n", - "Epoch 9538 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9538: avg_loss appended (1.3125)\n", - "Epoch 9538: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9538: accuracy appended (60.00%)\n", - "Epoch 9538: model set back to train mode\n", - "Epoch 9538: model parameters saved\n", - "Epoch 9539 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9539: avg_loss appended (1.3125)\n", - "Epoch 9539: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9539: accuracy appended (60.00%)\n", - "Epoch 9539: model set back to train mode\n", - "Epoch 9539: model parameters saved\n", - "Epoch 9540 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9540: avg_loss appended (1.3125)\n", - "Epoch 9540: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9540: accuracy appended (60.00%)\n", - "Epoch 9540: model set back to train mode\n", - "Epoch 9540: model parameters saved\n", - "Epoch 9541 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9541: avg_loss appended (1.3125)\n", - "Epoch 9541: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9541: accuracy appended (60.00%)\n", - "Epoch 9541: model set back to train mode\n", - "Epoch 9541: model parameters saved\n", - "Epoch 9542 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9542: avg_loss appended (1.3125)\n", - "Epoch 9542: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9542: accuracy appended (60.00%)\n", - "Epoch 9542: model set back to train mode\n", - "Epoch 9542: model parameters saved\n", - "Epoch 9543 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9543: avg_loss appended (1.3125)\n", - "Epoch 9543: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9543: accuracy appended (60.00%)\n", - "Epoch 9543: model set back to train mode\n", - "Epoch 9543: model parameters saved\n", - "Epoch 9544 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9544: avg_loss appended (1.3125)\n", - "Epoch 9544: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9544: accuracy appended (60.00%)\n", - "Epoch 9544: model set back to train mode\n", - "Epoch 9544: model parameters saved\n", - "Epoch 9545 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9545: avg_loss appended (1.3125)\n", - "Epoch 9545: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9545: accuracy appended (60.00%)\n", - "Epoch 9545: model set back to train mode\n", - "Epoch 9545: model parameters saved\n", - "Epoch 9546 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9546: avg_loss appended (1.3125)\n", - "Epoch 9546: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9546: accuracy appended (60.00%)\n", - "Epoch 9546: model set back to train mode\n", - "Epoch 9546: model parameters saved\n", - "Epoch 9547 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9547: avg_loss appended (1.3125)\n", - "Epoch 9547: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9547: accuracy appended (60.00%)\n", - "Epoch 9547: model set back to train mode\n", - "Epoch 9547: model parameters saved\n", - "Epoch 9548 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9548: avg_loss appended (1.3125)\n", - "Epoch 9548: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9548: accuracy appended (60.00%)\n", - "Epoch 9548: model set back to train mode\n", - "Epoch 9548: model parameters saved\n", - "Epoch 9549 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9549: avg_loss appended (1.3125)\n", - "Epoch 9549: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9549: accuracy appended (60.00%)\n", - "Epoch 9549: model set back to train mode\n", - "Epoch 9549: model parameters saved\n", - "Epoch 9550 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9550: avg_loss appended (1.3125)\n", - "Epoch 9550: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9550: accuracy appended (60.00%)\n", - "Epoch 9550: model set back to train mode\n", - "Epoch 9550: model parameters saved\n", - "Epoch 9551 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9551: avg_loss appended (1.3125)\n", - "Epoch 9551: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9551: accuracy appended (60.00%)\n", - "Epoch 9551: model set back to train mode\n", - "Epoch 9551: model parameters saved\n", - "Epoch 9552 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9552: avg_loss appended (1.3125)\n", - "Epoch 9552: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9552: accuracy appended (60.00%)\n", - "Epoch 9552: model set back to train mode\n", - "Epoch 9552: model parameters saved\n", - "Epoch 9553 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9553: avg_loss appended (1.3125)\n", - "Epoch 9553: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9553: accuracy appended (60.00%)\n", - "Epoch 9553: model set back to train mode\n", - "Epoch 9553: model parameters saved\n", - "Epoch 9554 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9554: avg_loss appended (1.3125)\n", - "Epoch 9554: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9554: accuracy appended (60.00%)\n", - "Epoch 9554: model set back to train mode\n", - "Epoch 9554: model parameters saved\n", - "Epoch 9555 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9555: avg_loss appended (1.3125)\n", - "Epoch 9555: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9555: accuracy appended (60.00%)\n", - "Epoch 9555: model set back to train mode\n", - "Epoch 9555: model parameters saved\n", - "Epoch 9556 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9556: avg_loss appended (1.3125)\n", - "Epoch 9556: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9556: accuracy appended (60.00%)\n", - "Epoch 9556: model set back to train mode\n", - "Epoch 9556: model parameters saved\n", - "Epoch 9557 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9557: avg_loss appended (1.3125)\n", - "Epoch 9557: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9557: accuracy appended (60.00%)\n", - "Epoch 9557: model set back to train mode\n", - "Epoch 9557: model parameters saved\n", - "Epoch 9558 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9558: avg_loss appended (1.3125)\n", - "Epoch 9558: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9558: accuracy appended (60.00%)\n", - "Epoch 9558: model set back to train mode\n", - "Epoch 9558: model parameters saved\n", - "Epoch 9559 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9559: avg_loss appended (1.3125)\n", - "Epoch 9559: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9559: accuracy appended (60.00%)\n", - "Epoch 9559: model set back to train mode\n", - "Epoch 9559: model parameters saved\n", - "Epoch 9560 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9560: avg_loss appended (1.3125)\n", - "Epoch 9560: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9560: accuracy appended (60.00%)\n", - "Epoch 9560: model set back to train mode\n", - "Epoch 9560: model parameters saved\n", - "Epoch 9561 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9561: avg_loss appended (1.3125)\n", - "Epoch 9561: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9561: accuracy appended (60.00%)\n", - "Epoch 9561: model set back to train mode\n", - "Epoch 9561: model parameters saved\n", - "Epoch 9562 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9562: avg_loss appended (1.3125)\n", - "Epoch 9562: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9562: accuracy appended (60.00%)\n", - "Epoch 9562: model set back to train mode\n", - "Epoch 9562: model parameters saved\n", - "Epoch 9563 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9563: avg_loss appended (1.3125)\n", - "Epoch 9563: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9563: accuracy appended (60.00%)\n", - "Epoch 9563: model set back to train mode\n", - "Epoch 9563: model parameters saved\n", - "Epoch 9564 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9564: avg_loss appended (1.3125)\n", - "Epoch 9564: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9564: accuracy appended (60.00%)\n", - "Epoch 9564: model set back to train mode\n", - "Epoch 9564: model parameters saved\n", - "Epoch 9565 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9565: avg_loss appended (1.3125)\n", - "Epoch 9565: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9565: accuracy appended (60.00%)\n", - "Epoch 9565: model set back to train mode\n", - "Epoch 9565: model parameters saved\n", - "Epoch 9566 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9566: avg_loss appended (1.3125)\n", - "Epoch 9566: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9566: accuracy appended (60.00%)\n", - "Epoch 9566: model set back to train mode\n", - "Epoch 9566: model parameters saved\n", - "Epoch 9567 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9567: avg_loss appended (1.3125)\n", - "Epoch 9567: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9567: accuracy appended (60.00%)\n", - "Epoch 9567: model set back to train mode\n", - "Epoch 9567: model parameters saved\n", - "Epoch 9568 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9568: avg_loss appended (1.3125)\n", - "Epoch 9568: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9568: accuracy appended (60.00%)\n", - "Epoch 9568: model set back to train mode\n", - "Epoch 9568: model parameters saved\n", - "Epoch 9569 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9569: avg_loss appended (1.3125)\n", - "Epoch 9569: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9569: accuracy appended (60.00%)\n", - "Epoch 9569: model set back to train mode\n", - "Epoch 9569: model parameters saved\n", - "Epoch 9570 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9570: avg_loss appended (1.3125)\n", - "Epoch 9570: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9570: accuracy appended (60.00%)\n", - "Epoch 9570: model set back to train mode\n", - "Epoch 9570: model parameters saved\n", - "Epoch 9571 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9571: avg_loss appended (1.3125)\n", - "Epoch 9571: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9571: accuracy appended (60.00%)\n", - "Epoch 9571: model set back to train mode\n", - "Epoch 9571: model parameters saved\n", - "Epoch 9572 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9572: avg_loss appended (1.3125)\n", - "Epoch 9572: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9572: accuracy appended (60.00%)\n", - "Epoch 9572: model set back to train mode\n", - "Epoch 9572: model parameters saved\n", - "Epoch 9573 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9573: avg_loss appended (1.3125)\n", - "Epoch 9573: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9573: accuracy appended (60.00%)\n", - "Epoch 9573: model set back to train mode\n", - "Epoch 9573: model parameters saved\n", - "Epoch 9574 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9574: avg_loss appended (1.3125)\n", - "Epoch 9574: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9574: accuracy appended (60.00%)\n", - "Epoch 9574: model set back to train mode\n", - "Epoch 9574: model parameters saved\n", - "Epoch 9575 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9575: avg_loss appended (1.3125)\n", - "Epoch 9575: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9575: accuracy appended (60.00%)\n", - "Epoch 9575: model set back to train mode\n", - "Epoch 9575: model parameters saved\n", - "Epoch 9576 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9576: avg_loss appended (1.3125)\n", - "Epoch 9576: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9576: accuracy appended (60.00%)\n", - "Epoch 9576: model set back to train mode\n", - "Epoch 9576: model parameters saved\n", - "Epoch 9577 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9577: avg_loss appended (1.3125)\n", - "Epoch 9577: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9577: accuracy appended (60.00%)\n", - "Epoch 9577: model set back to train mode\n", - "Epoch 9577: model parameters saved\n", - "Epoch 9578 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9578: avg_loss appended (1.3125)\n", - "Epoch 9578: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9578: accuracy appended (60.00%)\n", - "Epoch 9578: model set back to train mode\n", - "Epoch 9578: model parameters saved\n", - "Epoch 9579 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9579: avg_loss appended (1.3125)\n", - "Epoch 9579: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9579: accuracy appended (60.00%)\n", - "Epoch 9579: model set back to train mode\n", - "Epoch 9579: model parameters saved\n", - "Epoch 9580 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9580: avg_loss appended (1.3125)\n", - "Epoch 9580: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9580: accuracy appended (60.00%)\n", - "Epoch 9580: model set back to train mode\n", - "Epoch 9580: model parameters saved\n", - "Epoch 9581 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9581: avg_loss appended (1.3125)\n", - "Epoch 9581: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9581: accuracy appended (60.00%)\n", - "Epoch 9581: model set back to train mode\n", - "Epoch 9581: model parameters saved\n", - "Epoch 9582 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9582: avg_loss appended (1.3125)\n", - "Epoch 9582: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9582: accuracy appended (60.00%)\n", - "Epoch 9582: model set back to train mode\n", - "Epoch 9582: model parameters saved\n", - "Epoch 9583 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9583: avg_loss appended (1.3125)\n", - "Epoch 9583: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9583: accuracy appended (60.00%)\n", - "Epoch 9583: model set back to train mode\n", - "Epoch 9583: model parameters saved\n", - "Epoch 9584 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9584: avg_loss appended (1.3125)\n", - "Epoch 9584: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9584: accuracy appended (60.00%)\n", - "Epoch 9584: model set back to train mode\n", - "Epoch 9584: model parameters saved\n", - "Epoch 9585 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9585: avg_loss appended (1.3125)\n", - "Epoch 9585: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9585: accuracy appended (60.00%)\n", - "Epoch 9585: model set back to train mode\n", - "Epoch 9585: model parameters saved\n", - "Epoch 9586 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9586: avg_loss appended (1.3125)\n", - "Epoch 9586: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9586: accuracy appended (60.00%)\n", - "Epoch 9586: model set back to train mode\n", - "Epoch 9586: model parameters saved\n", - "Epoch 9587 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9587: avg_loss appended (1.3125)\n", - "Epoch 9587: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9587: accuracy appended (60.00%)\n", - "Epoch 9587: model set back to train mode\n", - "Epoch 9587: model parameters saved\n", - "Epoch 9588 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9588: avg_loss appended (1.3125)\n", - "Epoch 9588: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9588: accuracy appended (60.00%)\n", - "Epoch 9588: model set back to train mode\n", - "Epoch 9588: model parameters saved\n", - "Epoch 9589 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9589: avg_loss appended (1.3125)\n", - "Epoch 9589: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9589: accuracy appended (60.00%)\n", - "Epoch 9589: model set back to train mode\n", - "Epoch 9589: model parameters saved\n", - "Epoch 9590 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9590: avg_loss appended (1.3125)\n", - "Epoch 9590: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9590: accuracy appended (60.00%)\n", - "Epoch 9590: model set back to train mode\n", - "Epoch 9590: model parameters saved\n", - "Epoch 9591 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9591: avg_loss appended (1.3125)\n", - "Epoch 9591: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9591: accuracy appended (60.00%)\n", - "Epoch 9591: model set back to train mode\n", - "Epoch 9591: model parameters saved\n", - "Epoch 9592 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9592: avg_loss appended (1.3125)\n", - "Epoch 9592: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9592: accuracy appended (60.00%)\n", - "Epoch 9592: model set back to train mode\n", - "Epoch 9592: model parameters saved\n", - "Epoch 9593 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9593: avg_loss appended (1.3125)\n", - "Epoch 9593: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9593: accuracy appended (60.00%)\n", - "Epoch 9593: model set back to train mode\n", - "Epoch 9593: model parameters saved\n", - "Epoch 9594 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9594: avg_loss appended (1.3125)\n", - "Epoch 9594: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9594: accuracy appended (60.00%)\n", - "Epoch 9594: model set back to train mode\n", - "Epoch 9594: model parameters saved\n", - "Epoch 9595 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9595: avg_loss appended (1.3125)\n", - "Epoch 9595: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9595: accuracy appended (60.00%)\n", - "Epoch 9595: model set back to train mode\n", - "Epoch 9595: model parameters saved\n", - "Epoch 9596 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9596: avg_loss appended (1.3125)\n", - "Epoch 9596: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9596: accuracy appended (60.00%)\n", - "Epoch 9596: model set back to train mode\n", - "Epoch 9596: model parameters saved\n", - "Epoch 9597 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9597: avg_loss appended (1.3125)\n", - "Epoch 9597: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9597: accuracy appended (60.00%)\n", - "Epoch 9597: model set back to train mode\n", - "Epoch 9597: model parameters saved\n", - "Epoch 9598 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9598: avg_loss appended (1.3125)\n", - "Epoch 9598: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9598: accuracy appended (60.00%)\n", - "Epoch 9598: model set back to train mode\n", - "Epoch 9598: model parameters saved\n", - "Epoch 9599 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9599: avg_loss appended (1.3125)\n", - "Epoch 9599: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9599: accuracy appended (60.00%)\n", - "Epoch 9599: model set back to train mode\n", - "Epoch 9599: model parameters saved\n", - "Epoch 9600 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9600: avg_loss appended (1.3125)\n", - "Epoch 9600: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9600: accuracy appended (60.00%)\n", - "Epoch 9600: model set back to train mode\n", - "Epoch 9600: model parameters saved\n", - "Epoch 9600/10000, Loss: 1.3125, Accuracy: 60.00%\n", - "Epoch 9601 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9601: avg_loss appended (1.3125)\n", - "Epoch 9601: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9601: accuracy appended (60.00%)\n", - "Epoch 9601: model set back to train mode\n", - "Epoch 9601: model parameters saved\n", - "Epoch 9602 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9602: avg_loss appended (1.3125)\n", - "Epoch 9602: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9602: accuracy appended (60.00%)\n", - "Epoch 9602: model set back to train mode\n", - "Epoch 9602: model parameters saved\n", - "Epoch 9603 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9603: avg_loss appended (1.3125)\n", - "Epoch 9603: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9603: accuracy appended (60.00%)\n", - "Epoch 9603: model set back to train mode\n", - "Epoch 9603: model parameters saved\n", - "Epoch 9604 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9604: avg_loss appended (1.3125)\n", - "Epoch 9604: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9604: accuracy appended (60.00%)\n", - "Epoch 9604: model set back to train mode\n", - "Epoch 9604: model parameters saved\n", - "Epoch 9605 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9605: avg_loss appended (1.3125)\n", - "Epoch 9605: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9605: accuracy appended (60.00%)\n", - "Epoch 9605: model set back to train mode\n", - "Epoch 9605: model parameters saved\n", - "Epoch 9606 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9606: avg_loss appended (1.3125)\n", - "Epoch 9606: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9606: accuracy appended (60.00%)\n", - "Epoch 9606: model set back to train mode\n", - "Epoch 9606: model parameters saved\n", - "Epoch 9607 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9607: avg_loss appended (1.3125)\n", - "Epoch 9607: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9607: accuracy appended (60.00%)\n", - "Epoch 9607: model set back to train mode\n", - "Epoch 9607: model parameters saved\n", - "Epoch 9608 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9608: avg_loss appended (1.3125)\n", - "Epoch 9608: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9608: accuracy appended (60.00%)\n", - "Epoch 9608: model set back to train mode\n", - "Epoch 9608: model parameters saved\n", - "Epoch 9609 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9609: avg_loss appended (1.3125)\n", - "Epoch 9609: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9609: accuracy appended (60.00%)\n", - "Epoch 9609: model set back to train mode\n", - "Epoch 9609: model parameters saved\n", - "Epoch 9610 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9610: avg_loss appended (1.3125)\n", - "Epoch 9610: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9610: accuracy appended (60.00%)\n", - "Epoch 9610: model set back to train mode\n", - "Epoch 9610: model parameters saved\n", - "Epoch 9611 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9611: avg_loss appended (1.3125)\n", - "Epoch 9611: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9611: accuracy appended (60.00%)\n", - "Epoch 9611: model set back to train mode\n", - "Epoch 9611: model parameters saved\n", - "Epoch 9612 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9612: avg_loss appended (1.3125)\n", - "Epoch 9612: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9612: accuracy appended (60.00%)\n", - "Epoch 9612: model set back to train mode\n", - "Epoch 9612: model parameters saved\n", - "Epoch 9613 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9613: avg_loss appended (1.3125)\n", - "Epoch 9613: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9613: accuracy appended (60.00%)\n", - "Epoch 9613: model set back to train mode\n", - "Epoch 9613: model parameters saved\n", - "Epoch 9614 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9614: avg_loss appended (1.3125)\n", - "Epoch 9614: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9614: accuracy appended (60.00%)\n", - "Epoch 9614: model set back to train mode\n", - "Epoch 9614: model parameters saved\n", - "Epoch 9615 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9615: avg_loss appended (1.3125)\n", - "Epoch 9615: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9615: accuracy appended (60.00%)\n", - "Epoch 9615: model set back to train mode\n", - "Epoch 9615: model parameters saved\n", - "Epoch 9616 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9616: avg_loss appended (1.3125)\n", - "Epoch 9616: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9616: accuracy appended (60.00%)\n", - "Epoch 9616: model set back to train mode\n", - "Epoch 9616: model parameters saved\n", - "Epoch 9617 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9617: avg_loss appended (1.3125)\n", - "Epoch 9617: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9617: accuracy appended (60.00%)\n", - "Epoch 9617: model set back to train mode\n", - "Epoch 9617: model parameters saved\n", - "Epoch 9618 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9618: avg_loss appended (1.3125)\n", - "Epoch 9618: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9618: accuracy appended (60.00%)\n", - "Epoch 9618: model set back to train mode\n", - "Epoch 9618: model parameters saved\n", - "Epoch 9619 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9619: avg_loss appended (1.3125)\n", - "Epoch 9619: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9619: accuracy appended (60.00%)\n", - "Epoch 9619: model set back to train mode\n", - "Epoch 9619: model parameters saved\n", - "Epoch 9620 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9620: avg_loss appended (1.3125)\n", - "Epoch 9620: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9620: accuracy appended (60.00%)\n", - "Epoch 9620: model set back to train mode\n", - "Epoch 9620: model parameters saved\n", - "Epoch 9621 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9621: avg_loss appended (1.3125)\n", - "Epoch 9621: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9621: accuracy appended (60.00%)\n", - "Epoch 9621: model set back to train mode\n", - "Epoch 9621: model parameters saved\n", - "Epoch 9622 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9622: avg_loss appended (1.3125)\n", - "Epoch 9622: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9622: accuracy appended (60.00%)\n", - "Epoch 9622: model set back to train mode\n", - "Epoch 9622: model parameters saved\n", - "Epoch 9623 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9623: avg_loss appended (1.3125)\n", - "Epoch 9623: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9623: accuracy appended (60.00%)\n", - "Epoch 9623: model set back to train mode\n", - "Epoch 9623: model parameters saved\n", - "Epoch 9624 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9624: avg_loss appended (1.3125)\n", - "Epoch 9624: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9624: accuracy appended (60.00%)\n", - "Epoch 9624: model set back to train mode\n", - "Epoch 9624: model parameters saved\n", - "Epoch 9625 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9625: avg_loss appended (1.3125)\n", - "Epoch 9625: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9625: accuracy appended (60.00%)\n", - "Epoch 9625: model set back to train mode\n", - "Epoch 9625: model parameters saved\n", - "Epoch 9626 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9626: avg_loss appended (1.3125)\n", - "Epoch 9626: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9626: accuracy appended (60.00%)\n", - "Epoch 9626: model set back to train mode\n", - "Epoch 9626: model parameters saved\n", - "Epoch 9627 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9627: avg_loss appended (1.3125)\n", - "Epoch 9627: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9627: accuracy appended (60.00%)\n", - "Epoch 9627: model set back to train mode\n", - "Epoch 9627: model parameters saved\n", - "Epoch 9628 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9628: avg_loss appended (1.3125)\n", - "Epoch 9628: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9628: accuracy appended (60.00%)\n", - "Epoch 9628: model set back to train mode\n", - "Epoch 9628: model parameters saved\n", - "Epoch 9629 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9629: avg_loss appended (1.3125)\n", - "Epoch 9629: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9629: accuracy appended (60.00%)\n", - "Epoch 9629: model set back to train mode\n", - "Epoch 9629: model parameters saved\n", - "Epoch 9630 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9630: avg_loss appended (1.3125)\n", - "Epoch 9630: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9630: accuracy appended (60.00%)\n", - "Epoch 9630: model set back to train mode\n", - "Epoch 9630: model parameters saved\n", - "Epoch 9631 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9631: avg_loss appended (1.3125)\n", - "Epoch 9631: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9631: accuracy appended (60.00%)\n", - "Epoch 9631: model set back to train mode\n", - "Epoch 9631: model parameters saved\n", - "Epoch 9632 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9632: avg_loss appended (1.3125)\n", - "Epoch 9632: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9632: accuracy appended (60.00%)\n", - "Epoch 9632: model set back to train mode\n", - "Epoch 9632: model parameters saved\n", - "Epoch 9633 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9633: avg_loss appended (1.3125)\n", - "Epoch 9633: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9633: accuracy appended (60.00%)\n", - "Epoch 9633: model set back to train mode\n", - "Epoch 9633: model parameters saved\n", - "Epoch 9634 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9634: avg_loss appended (1.3125)\n", - "Epoch 9634: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9634: accuracy appended (60.00%)\n", - "Epoch 9634: model set back to train mode\n", - "Epoch 9634: model parameters saved\n", - "Epoch 9635 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9635: avg_loss appended (1.3125)\n", - "Epoch 9635: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9635: accuracy appended (60.00%)\n", - "Epoch 9635: model set back to train mode\n", - "Epoch 9635: model parameters saved\n", - "Epoch 9636 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9636: avg_loss appended (1.3125)\n", - "Epoch 9636: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9636: accuracy appended (60.00%)\n", - "Epoch 9636: model set back to train mode\n", - "Epoch 9636: model parameters saved\n", - "Epoch 9637 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9637: avg_loss appended (1.3125)\n", - "Epoch 9637: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9637: accuracy appended (60.00%)\n", - "Epoch 9637: model set back to train mode\n", - "Epoch 9637: model parameters saved\n", - "Epoch 9638 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9638: avg_loss appended (1.3125)\n", - "Epoch 9638: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9638: accuracy appended (60.00%)\n", - "Epoch 9638: model set back to train mode\n", - "Epoch 9638: model parameters saved\n", - "Epoch 9639 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9639: avg_loss appended (1.3125)\n", - "Epoch 9639: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9639: accuracy appended (60.00%)\n", - "Epoch 9639: model set back to train mode\n", - "Epoch 9639: model parameters saved\n", - "Epoch 9640 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9640: avg_loss appended (1.3125)\n", - "Epoch 9640: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9640: accuracy appended (60.00%)\n", - "Epoch 9640: model set back to train mode\n", - "Epoch 9640: model parameters saved\n", - "Epoch 9641 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9641: avg_loss appended (1.3125)\n", - "Epoch 9641: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9641: accuracy appended (60.00%)\n", - "Epoch 9641: model set back to train mode\n", - "Epoch 9641: model parameters saved\n", - "Epoch 9642 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9642: avg_loss appended (1.3125)\n", - "Epoch 9642: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9642: accuracy appended (60.00%)\n", - "Epoch 9642: model set back to train mode\n", - "Epoch 9642: model parameters saved\n", - "Epoch 9643 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9643: avg_loss appended (1.3125)\n", - "Epoch 9643: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9643: accuracy appended (60.00%)\n", - "Epoch 9643: model set back to train mode\n", - "Epoch 9643: model parameters saved\n", - "Epoch 9644 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9644: avg_loss appended (1.3125)\n", - "Epoch 9644: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9644: accuracy appended (60.00%)\n", - "Epoch 9644: model set back to train mode\n", - "Epoch 9644: model parameters saved\n", - "Epoch 9645 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9645: avg_loss appended (1.3125)\n", - "Epoch 9645: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9645: accuracy appended (60.00%)\n", - "Epoch 9645: model set back to train mode\n", - "Epoch 9645: model parameters saved\n", - "Epoch 9646 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9646: avg_loss appended (1.3125)\n", - "Epoch 9646: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9646: accuracy appended (60.00%)\n", - "Epoch 9646: model set back to train mode\n", - "Epoch 9646: model parameters saved\n", - "Epoch 9647 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9647: avg_loss appended (1.3125)\n", - "Epoch 9647: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9647: accuracy appended (60.00%)\n", - "Epoch 9647: model set back to train mode\n", - "Epoch 9647: model parameters saved\n", - "Epoch 9648 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9648: avg_loss appended (1.3125)\n", - "Epoch 9648: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9648: accuracy appended (60.00%)\n", - "Epoch 9648: model set back to train mode\n", - "Epoch 9648: model parameters saved\n", - "Epoch 9649 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9649: avg_loss appended (1.3125)\n", - "Epoch 9649: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9649: accuracy appended (60.00%)\n", - "Epoch 9649: model set back to train mode\n", - "Epoch 9649: model parameters saved\n", - "Epoch 9650 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9650: avg_loss appended (1.3125)\n", - "Epoch 9650: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9650: accuracy appended (60.00%)\n", - "Epoch 9650: model set back to train mode\n", - "Epoch 9650: model parameters saved\n", - "Epoch 9651 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9651: avg_loss appended (1.3125)\n", - "Epoch 9651: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9651: accuracy appended (60.00%)\n", - "Epoch 9651: model set back to train mode\n", - "Epoch 9651: model parameters saved\n", - "Epoch 9652 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9652: avg_loss appended (1.3125)\n", - "Epoch 9652: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9652: accuracy appended (60.00%)\n", - "Epoch 9652: model set back to train mode\n", - "Epoch 9652: model parameters saved\n", - "Epoch 9653 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9653: avg_loss appended (1.3125)\n", - "Epoch 9653: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9653: accuracy appended (60.00%)\n", - "Epoch 9653: model set back to train mode\n", - "Epoch 9653: model parameters saved\n", - "Epoch 9654 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9654: avg_loss appended (1.3125)\n", - "Epoch 9654: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9654: accuracy appended (60.00%)\n", - "Epoch 9654: model set back to train mode\n", - "Epoch 9654: model parameters saved\n", - "Epoch 9655 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9655: avg_loss appended (1.3125)\n", - "Epoch 9655: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9655: accuracy appended (60.00%)\n", - "Epoch 9655: model set back to train mode\n", - "Epoch 9655: model parameters saved\n", - "Epoch 9656 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9656: avg_loss appended (1.3125)\n", - "Epoch 9656: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9656: accuracy appended (60.00%)\n", - "Epoch 9656: model set back to train mode\n", - "Epoch 9656: model parameters saved\n", - "Epoch 9657 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9657: avg_loss appended (1.3125)\n", - "Epoch 9657: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9657: accuracy appended (60.00%)\n", - "Epoch 9657: model set back to train mode\n", - "Epoch 9657: model parameters saved\n", - "Epoch 9658 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9658: avg_loss appended (1.3125)\n", - "Epoch 9658: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9658: accuracy appended (60.00%)\n", - "Epoch 9658: model set back to train mode\n", - "Epoch 9658: model parameters saved\n", - "Epoch 9659 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9659: avg_loss appended (1.3125)\n", - "Epoch 9659: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9659: accuracy appended (60.00%)\n", - "Epoch 9659: model set back to train mode\n", - "Epoch 9659: model parameters saved\n", - "Epoch 9660 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9660: avg_loss appended (1.3125)\n", - "Epoch 9660: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9660: accuracy appended (60.00%)\n", - "Epoch 9660: model set back to train mode\n", - "Epoch 9660: model parameters saved\n", - "Epoch 9661 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9661: avg_loss appended (1.3125)\n", - "Epoch 9661: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9661: accuracy appended (60.00%)\n", - "Epoch 9661: model set back to train mode\n", - "Epoch 9661: model parameters saved\n", - "Epoch 9662 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9662: avg_loss appended (1.3125)\n", - "Epoch 9662: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9662: accuracy appended (60.00%)\n", - "Epoch 9662: model set back to train mode\n", - "Epoch 9662: model parameters saved\n", - "Epoch 9663 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9663: avg_loss appended (1.3125)\n", - "Epoch 9663: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9663: accuracy appended (60.00%)\n", - "Epoch 9663: model set back to train mode\n", - "Epoch 9663: model parameters saved\n", - "Epoch 9664 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9664: avg_loss appended (1.3125)\n", - "Epoch 9664: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9664: accuracy appended (60.00%)\n", - "Epoch 9664: model set back to train mode\n", - "Epoch 9664: model parameters saved\n", - "Epoch 9665 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9665: avg_loss appended (1.3125)\n", - "Epoch 9665: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9665: accuracy appended (60.00%)\n", - "Epoch 9665: model set back to train mode\n", - "Epoch 9665: model parameters saved\n", - "Epoch 9666 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9666: avg_loss appended (1.3125)\n", - "Epoch 9666: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9666: accuracy appended (60.00%)\n", - "Epoch 9666: model set back to train mode\n", - "Epoch 9666: model parameters saved\n", - "Epoch 9667 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9667: avg_loss appended (1.3125)\n", - "Epoch 9667: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9667: accuracy appended (60.00%)\n", - "Epoch 9667: model set back to train mode\n", - "Epoch 9667: model parameters saved\n", - "Epoch 9668 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9668: avg_loss appended (1.3125)\n", - "Epoch 9668: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9668: accuracy appended (60.00%)\n", - "Epoch 9668: model set back to train mode\n", - "Epoch 9668: model parameters saved\n", - "Epoch 9669 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9669: avg_loss appended (1.3125)\n", - "Epoch 9669: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9669: accuracy appended (60.00%)\n", - "Epoch 9669: model set back to train mode\n", - "Epoch 9669: model parameters saved\n", - "Epoch 9670 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9670: avg_loss appended (1.3125)\n", - "Epoch 9670: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9670: accuracy appended (60.00%)\n", - "Epoch 9670: model set back to train mode\n", - "Epoch 9670: model parameters saved\n", - "Epoch 9671 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9671: avg_loss appended (1.3125)\n", - "Epoch 9671: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9671: accuracy appended (60.00%)\n", - "Epoch 9671: model set back to train mode\n", - "Epoch 9671: model parameters saved\n", - "Epoch 9672 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9672: avg_loss appended (1.3125)\n", - "Epoch 9672: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9672: accuracy appended (60.00%)\n", - "Epoch 9672: model set back to train mode\n", - "Epoch 9672: model parameters saved\n", - "Epoch 9673 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9673: avg_loss appended (1.3125)\n", - "Epoch 9673: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9673: accuracy appended (60.00%)\n", - "Epoch 9673: model set back to train mode\n", - "Epoch 9673: model parameters saved\n", - "Epoch 9674 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9674: avg_loss appended (1.3125)\n", - "Epoch 9674: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9674: accuracy appended (60.00%)\n", - "Epoch 9674: model set back to train mode\n", - "Epoch 9674: model parameters saved\n", - "Epoch 9675 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9675: avg_loss appended (1.3125)\n", - "Epoch 9675: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9675: accuracy appended (60.00%)\n", - "Epoch 9675: model set back to train mode\n", - "Epoch 9675: model parameters saved\n", - "Epoch 9676 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9676: avg_loss appended (1.3125)\n", - "Epoch 9676: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9676: accuracy appended (60.00%)\n", - "Epoch 9676: model set back to train mode\n", - "Epoch 9676: model parameters saved\n", - "Epoch 9677 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9677: avg_loss appended (1.3125)\n", - "Epoch 9677: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9677: accuracy appended (60.00%)\n", - "Epoch 9677: model set back to train mode\n", - "Epoch 9677: model parameters saved\n", - "Epoch 9678 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9678: avg_loss appended (1.3125)\n", - "Epoch 9678: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9678: accuracy appended (60.00%)\n", - "Epoch 9678: model set back to train mode\n", - "Epoch 9678: model parameters saved\n", - "Epoch 9679 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9679: avg_loss appended (1.3125)\n", - "Epoch 9679: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9679: accuracy appended (60.00%)\n", - "Epoch 9679: model set back to train mode\n", - "Epoch 9679: model parameters saved\n", - "Epoch 9680 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9680: avg_loss appended (1.3125)\n", - "Epoch 9680: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9680: accuracy appended (60.00%)\n", - "Epoch 9680: model set back to train mode\n", - "Epoch 9680: model parameters saved\n", - "Epoch 9681 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9681: avg_loss appended (1.3125)\n", - "Epoch 9681: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9681: accuracy appended (60.00%)\n", - "Epoch 9681: model set back to train mode\n", - "Epoch 9681: model parameters saved\n", - "Epoch 9682 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9682: avg_loss appended (1.3125)\n", - "Epoch 9682: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9682: accuracy appended (60.00%)\n", - "Epoch 9682: model set back to train mode\n", - "Epoch 9682: model parameters saved\n", - "Epoch 9683 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9683: avg_loss appended (1.3125)\n", - "Epoch 9683: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9683: accuracy appended (60.00%)\n", - "Epoch 9683: model set back to train mode\n", - "Epoch 9683: model parameters saved\n", - "Epoch 9684 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9684: avg_loss appended (1.3125)\n", - "Epoch 9684: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9684: accuracy appended (60.00%)\n", - "Epoch 9684: model set back to train mode\n", - "Epoch 9684: model parameters saved\n", - "Epoch 9685 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9685: avg_loss appended (1.3125)\n", - "Epoch 9685: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9685: accuracy appended (60.00%)\n", - "Epoch 9685: model set back to train mode\n", - "Epoch 9685: model parameters saved\n", - "Epoch 9686 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9686: avg_loss appended (1.3125)\n", - "Epoch 9686: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9686: accuracy appended (60.00%)\n", - "Epoch 9686: model set back to train mode\n", - "Epoch 9686: model parameters saved\n", - "Epoch 9687 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9687: avg_loss appended (1.3125)\n", - "Epoch 9687: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9687: accuracy appended (60.00%)\n", - "Epoch 9687: model set back to train mode\n", - "Epoch 9687: model parameters saved\n", - "Epoch 9688 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9688: avg_loss appended (1.3125)\n", - "Epoch 9688: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9688: accuracy appended (60.00%)\n", - "Epoch 9688: model set back to train mode\n", - "Epoch 9688: model parameters saved\n", - "Epoch 9689 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9689: avg_loss appended (1.3125)\n", - "Epoch 9689: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9689: accuracy appended (60.00%)\n", - "Epoch 9689: model set back to train mode\n", - "Epoch 9689: model parameters saved\n", - "Epoch 9690 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9690: avg_loss appended (1.3125)\n", - "Epoch 9690: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9690: accuracy appended (60.00%)\n", - "Epoch 9690: model set back to train mode\n", - "Epoch 9690: model parameters saved\n", - "Epoch 9691 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9691: avg_loss appended (1.3125)\n", - "Epoch 9691: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9691: accuracy appended (60.00%)\n", - "Epoch 9691: model set back to train mode\n", - "Epoch 9691: model parameters saved\n", - "Epoch 9692 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9692: avg_loss appended (1.3125)\n", - "Epoch 9692: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9692: accuracy appended (60.00%)\n", - "Epoch 9692: model set back to train mode\n", - "Epoch 9692: model parameters saved\n", - "Epoch 9693 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9693: avg_loss appended (1.3125)\n", - "Epoch 9693: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9693: accuracy appended (60.00%)\n", - "Epoch 9693: model set back to train mode\n", - "Epoch 9693: model parameters saved\n", - "Epoch 9694 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9694: avg_loss appended (1.3125)\n", - "Epoch 9694: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9694: accuracy appended (60.00%)\n", - "Epoch 9694: model set back to train mode\n", - "Epoch 9694: model parameters saved\n", - "Epoch 9695 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9695: avg_loss appended (1.3125)\n", - "Epoch 9695: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9695: accuracy appended (60.00%)\n", - "Epoch 9695: model set back to train mode\n", - "Epoch 9695: model parameters saved\n", - "Epoch 9696 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9696: avg_loss appended (1.3125)\n", - "Epoch 9696: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9696: accuracy appended (60.00%)\n", - "Epoch 9696: model set back to train mode\n", - "Epoch 9696: model parameters saved\n", - "Epoch 9697 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9697: avg_loss appended (1.3125)\n", - "Epoch 9697: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9697: accuracy appended (60.00%)\n", - "Epoch 9697: model set back to train mode\n", - "Epoch 9697: model parameters saved\n", - "Epoch 9698 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9698: avg_loss appended (1.3125)\n", - "Epoch 9698: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9698: accuracy appended (60.00%)\n", - "Epoch 9698: model set back to train mode\n", - "Epoch 9698: model parameters saved\n", - "Epoch 9699 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9699: avg_loss appended (1.3125)\n", - "Epoch 9699: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9699: accuracy appended (60.00%)\n", - "Epoch 9699: model set back to train mode\n", - "Epoch 9699: model parameters saved\n", - "Epoch 9700 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9700: avg_loss appended (1.3125)\n", - "Epoch 9700: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9700: accuracy appended (60.00%)\n", - "Epoch 9700: model set back to train mode\n", - "Epoch 9700: model parameters saved\n", - "Epoch 9700/10000, Loss: 1.3125, Accuracy: 60.00%\n", - "Epoch 9701 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9701: avg_loss appended (1.3125)\n", - "Epoch 9701: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9701: accuracy appended (60.00%)\n", - "Epoch 9701: model set back to train mode\n", - "Epoch 9701: model parameters saved\n", - "Epoch 9702 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9702: avg_loss appended (1.3125)\n", - "Epoch 9702: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9702: accuracy appended (60.00%)\n", - "Epoch 9702: model set back to train mode\n", - "Epoch 9702: model parameters saved\n", - "Epoch 9703 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9703: avg_loss appended (1.3125)\n", - "Epoch 9703: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9703: accuracy appended (60.00%)\n", - "Epoch 9703: model set back to train mode\n", - "Epoch 9703: model parameters saved\n", - "Epoch 9704 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9704: avg_loss appended (1.3125)\n", - "Epoch 9704: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9704: accuracy appended (60.00%)\n", - "Epoch 9704: model set back to train mode\n", - "Epoch 9704: model parameters saved\n", - "Epoch 9705 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9705: avg_loss appended (1.3125)\n", - "Epoch 9705: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9705: accuracy appended (60.00%)\n", - "Epoch 9705: model set back to train mode\n", - "Epoch 9705: model parameters saved\n", - "Epoch 9706 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9706: avg_loss appended (1.3125)\n", - "Epoch 9706: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9706: accuracy appended (60.00%)\n", - "Epoch 9706: model set back to train mode\n", - "Epoch 9706: model parameters saved\n", - "Epoch 9707 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9707: avg_loss appended (1.3125)\n", - "Epoch 9707: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9707: accuracy appended (60.00%)\n", - "Epoch 9707: model set back to train mode\n", - "Epoch 9707: model parameters saved\n", - "Epoch 9708 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9708: avg_loss appended (1.3125)\n", - "Epoch 9708: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9708: accuracy appended (60.00%)\n", - "Epoch 9708: model set back to train mode\n", - "Epoch 9708: model parameters saved\n", - "Epoch 9709 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9709: avg_loss appended (1.3125)\n", - "Epoch 9709: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9709: accuracy appended (60.00%)\n", - "Epoch 9709: model set back to train mode\n", - "Epoch 9709: model parameters saved\n", - "Epoch 9710 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9710: avg_loss appended (1.3125)\n", - "Epoch 9710: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9710: accuracy appended (60.00%)\n", - "Epoch 9710: model set back to train mode\n", - "Epoch 9710: model parameters saved\n", - "Epoch 9711 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9711: avg_loss appended (1.3125)\n", - "Epoch 9711: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9711: accuracy appended (60.00%)\n", - "Epoch 9711: model set back to train mode\n", - "Epoch 9711: model parameters saved\n", - "Epoch 9712 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9712: avg_loss appended (1.3125)\n", - "Epoch 9712: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9712: accuracy appended (60.00%)\n", - "Epoch 9712: model set back to train mode\n", - "Epoch 9712: model parameters saved\n", - "Epoch 9713 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9713: avg_loss appended (1.3125)\n", - "Epoch 9713: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9713: accuracy appended (60.00%)\n", - "Epoch 9713: model set back to train mode\n", - "Epoch 9713: model parameters saved\n", - "Epoch 9714 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9714: avg_loss appended (1.3125)\n", - "Epoch 9714: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9714: accuracy appended (60.00%)\n", - "Epoch 9714: model set back to train mode\n", - "Epoch 9714: model parameters saved\n", - "Epoch 9715 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9715: avg_loss appended (1.3125)\n", - "Epoch 9715: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9715: accuracy appended (60.00%)\n", - "Epoch 9715: model set back to train mode\n", - "Epoch 9715: model parameters saved\n", - "Epoch 9716 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9716: avg_loss appended (1.3125)\n", - "Epoch 9716: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9716: accuracy appended (60.00%)\n", - "Epoch 9716: model set back to train mode\n", - "Epoch 9716: model parameters saved\n", - "Epoch 9717 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9717: avg_loss appended (1.3125)\n", - "Epoch 9717: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9717: accuracy appended (60.00%)\n", - "Epoch 9717: model set back to train mode\n", - "Epoch 9717: model parameters saved\n", - "Epoch 9718 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9718: avg_loss appended (1.3125)\n", - "Epoch 9718: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9718: accuracy appended (60.00%)\n", - "Epoch 9718: model set back to train mode\n", - "Epoch 9718: model parameters saved\n", - "Epoch 9719 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9719: avg_loss appended (1.3125)\n", - "Epoch 9719: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9719: accuracy appended (60.00%)\n", - "Epoch 9719: model set back to train mode\n", - "Epoch 9719: model parameters saved\n", - "Epoch 9720 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9720: avg_loss appended (1.3125)\n", - "Epoch 9720: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9720: accuracy appended (60.00%)\n", - "Epoch 9720: model set back to train mode\n", - "Epoch 9720: model parameters saved\n", - "Epoch 9721 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9721: avg_loss appended (1.3125)\n", - "Epoch 9721: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9721: accuracy appended (60.00%)\n", - "Epoch 9721: model set back to train mode\n", - "Epoch 9721: model parameters saved\n", - "Epoch 9722 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9722: avg_loss appended (1.3125)\n", - "Epoch 9722: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9722: accuracy appended (60.00%)\n", - "Epoch 9722: model set back to train mode\n", - "Epoch 9722: model parameters saved\n", - "Epoch 9723 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9723: avg_loss appended (1.3125)\n", - "Epoch 9723: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9723: accuracy appended (60.00%)\n", - "Epoch 9723: model set back to train mode\n", - "Epoch 9723: model parameters saved\n", - "Epoch 9724 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9724: avg_loss appended (1.3125)\n", - "Epoch 9724: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9724: accuracy appended (60.00%)\n", - "Epoch 9724: model set back to train mode\n", - "Epoch 9724: model parameters saved\n", - "Epoch 9725 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9725: avg_loss appended (1.3125)\n", - "Epoch 9725: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9725: accuracy appended (60.00%)\n", - "Epoch 9725: model set back to train mode\n", - "Epoch 9725: model parameters saved\n", - "Epoch 9726 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9726: avg_loss appended (1.3125)\n", - "Epoch 9726: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9726: accuracy appended (60.00%)\n", - "Epoch 9726: model set back to train mode\n", - "Epoch 9726: model parameters saved\n", - "Epoch 9727 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9727: avg_loss appended (1.3125)\n", - "Epoch 9727: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9727: accuracy appended (60.00%)\n", - "Epoch 9727: model set back to train mode\n", - "Epoch 9727: model parameters saved\n", - "Epoch 9728 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9728: avg_loss appended (1.3125)\n", - "Epoch 9728: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9728: accuracy appended (60.00%)\n", - "Epoch 9728: model set back to train mode\n", - "Epoch 9728: model parameters saved\n", - "Epoch 9729 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9729: avg_loss appended (1.3125)\n", - "Epoch 9729: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9729: accuracy appended (60.00%)\n", - "Epoch 9729: model set back to train mode\n", - "Epoch 9729: model parameters saved\n", - "Epoch 9730 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9730: avg_loss appended (1.3125)\n", - "Epoch 9730: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9730: accuracy appended (60.00%)\n", - "Epoch 9730: model set back to train mode\n", - "Epoch 9730: model parameters saved\n", - "Epoch 9731 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9731: avg_loss appended (1.3125)\n", - "Epoch 9731: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9731: accuracy appended (60.00%)\n", - "Epoch 9731: model set back to train mode\n", - "Epoch 9731: model parameters saved\n", - "Epoch 9732 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9732: avg_loss appended (1.3125)\n", - "Epoch 9732: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9732: accuracy appended (60.00%)\n", - "Epoch 9732: model set back to train mode\n", - "Epoch 9732: model parameters saved\n", - "Epoch 9733 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9733: avg_loss appended (1.3125)\n", - "Epoch 9733: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9733: accuracy appended (60.00%)\n", - "Epoch 9733: model set back to train mode\n", - "Epoch 9733: model parameters saved\n", - "Epoch 9734 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9734: avg_loss appended (1.3125)\n", - "Epoch 9734: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9734: accuracy appended (60.00%)\n", - "Epoch 9734: model set back to train mode\n", - "Epoch 9734: model parameters saved\n", - "Epoch 9735 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9735: avg_loss appended (1.3125)\n", - "Epoch 9735: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9735: accuracy appended (60.00%)\n", - "Epoch 9735: model set back to train mode\n", - "Epoch 9735: model parameters saved\n", - "Epoch 9736 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9736: avg_loss appended (1.3125)\n", - "Epoch 9736: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9736: accuracy appended (60.00%)\n", - "Epoch 9736: model set back to train mode\n", - "Epoch 9736: model parameters saved\n", - "Epoch 9737 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9737: avg_loss appended (1.3125)\n", - "Epoch 9737: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9737: accuracy appended (60.00%)\n", - "Epoch 9737: model set back to train mode\n", - "Epoch 9737: model parameters saved\n", - "Epoch 9738 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9738: avg_loss appended (1.3125)\n", - "Epoch 9738: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9738: accuracy appended (60.00%)\n", - "Epoch 9738: model set back to train mode\n", - "Epoch 9738: model parameters saved\n", - "Epoch 9739 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9739: avg_loss appended (1.3125)\n", - "Epoch 9739: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9739: accuracy appended (60.00%)\n", - "Epoch 9739: model set back to train mode\n", - "Epoch 9739: model parameters saved\n", - "Epoch 9740 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9740: avg_loss appended (1.3125)\n", - "Epoch 9740: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9740: accuracy appended (60.00%)\n", - "Epoch 9740: model set back to train mode\n", - "Epoch 9740: model parameters saved\n", - "Epoch 9741 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9741: avg_loss appended (1.3125)\n", - "Epoch 9741: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9741: accuracy appended (60.00%)\n", - "Epoch 9741: model set back to train mode\n", - "Epoch 9741: model parameters saved\n", - "Epoch 9742 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9742: avg_loss appended (1.3125)\n", - "Epoch 9742: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9742: accuracy appended (60.00%)\n", - "Epoch 9742: model set back to train mode\n", - "Epoch 9742: model parameters saved\n", - "Epoch 9743 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9743: avg_loss appended (1.3125)\n", - "Epoch 9743: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9743: accuracy appended (60.00%)\n", - "Epoch 9743: model set back to train mode\n", - "Epoch 9743: model parameters saved\n", - "Epoch 9744 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9744: avg_loss appended (1.3125)\n", - "Epoch 9744: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9744: accuracy appended (60.00%)\n", - "Epoch 9744: model set back to train mode\n", - "Epoch 9744: model parameters saved\n", - "Epoch 9745 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9745: avg_loss appended (1.3125)\n", - "Epoch 9745: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9745: accuracy appended (60.00%)\n", - "Epoch 9745: model set back to train mode\n", - "Epoch 9745: model parameters saved\n", - "Epoch 9746 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9746: avg_loss appended (1.3125)\n", - "Epoch 9746: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9746: accuracy appended (60.00%)\n", - "Epoch 9746: model set back to train mode\n", - "Epoch 9746: model parameters saved\n", - "Epoch 9747 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9747: avg_loss appended (1.3125)\n", - "Epoch 9747: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9747: accuracy appended (60.00%)\n", - "Epoch 9747: model set back to train mode\n", - "Epoch 9747: model parameters saved\n", - "Epoch 9748 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9748: avg_loss appended (1.3125)\n", - "Epoch 9748: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9748: accuracy appended (60.00%)\n", - "Epoch 9748: model set back to train mode\n", - "Epoch 9748: model parameters saved\n", - "Epoch 9749 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9749: avg_loss appended (1.3125)\n", - "Epoch 9749: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9749: accuracy appended (60.00%)\n", - "Epoch 9749: model set back to train mode\n", - "Epoch 9749: model parameters saved\n", - "Epoch 9750 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9750: avg_loss appended (1.3125)\n", - "Epoch 9750: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9750: accuracy appended (60.00%)\n", - "Epoch 9750: model set back to train mode\n", - "Epoch 9750: model parameters saved\n", - "Epoch 9751 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9751: avg_loss appended (1.3125)\n", - "Epoch 9751: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9751: accuracy appended (60.00%)\n", - "Epoch 9751: model set back to train mode\n", - "Epoch 9751: model parameters saved\n", - "Epoch 9752 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9752: avg_loss appended (1.3125)\n", - "Epoch 9752: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9752: accuracy appended (60.00%)\n", - "Epoch 9752: model set back to train mode\n", - "Epoch 9752: model parameters saved\n", - "Epoch 9753 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9753: avg_loss appended (1.3125)\n", - "Epoch 9753: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9753: accuracy appended (60.00%)\n", - "Epoch 9753: model set back to train mode\n", - "Epoch 9753: model parameters saved\n", - "Epoch 9754 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9754: avg_loss appended (1.3125)\n", - "Epoch 9754: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9754: accuracy appended (60.00%)\n", - "Epoch 9754: model set back to train mode\n", - "Epoch 9754: model parameters saved\n", - "Epoch 9755 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9755: avg_loss appended (1.3125)\n", - "Epoch 9755: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9755: accuracy appended (60.00%)\n", - "Epoch 9755: model set back to train mode\n", - "Epoch 9755: model parameters saved\n", - "Epoch 9756 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9756: avg_loss appended (1.3125)\n", - "Epoch 9756: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9756: accuracy appended (60.00%)\n", - "Epoch 9756: model set back to train mode\n", - "Epoch 9756: model parameters saved\n", - "Epoch 9757 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9757: avg_loss appended (1.3125)\n", - "Epoch 9757: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9757: accuracy appended (60.00%)\n", - "Epoch 9757: model set back to train mode\n", - "Epoch 9757: model parameters saved\n", - "Epoch 9758 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9758: avg_loss appended (1.3125)\n", - "Epoch 9758: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9758: accuracy appended (60.00%)\n", - "Epoch 9758: model set back to train mode\n", - "Epoch 9758: model parameters saved\n", - "Epoch 9759 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9759: avg_loss appended (1.3125)\n", - "Epoch 9759: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9759: accuracy appended (60.00%)\n", - "Epoch 9759: model set back to train mode\n", - "Epoch 9759: model parameters saved\n", - "Epoch 9760 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9760: avg_loss appended (1.3125)\n", - "Epoch 9760: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9760: accuracy appended (60.00%)\n", - "Epoch 9760: model set back to train mode\n", - "Epoch 9760: model parameters saved\n", - "Epoch 9761 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9761: avg_loss appended (1.3125)\n", - "Epoch 9761: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9761: accuracy appended (60.00%)\n", - "Epoch 9761: model set back to train mode\n", - "Epoch 9761: model parameters saved\n", - "Epoch 9762 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9762: avg_loss appended (1.3125)\n", - "Epoch 9762: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9762: accuracy appended (60.00%)\n", - "Epoch 9762: model set back to train mode\n", - "Epoch 9762: model parameters saved\n", - "Epoch 9763 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9763: avg_loss appended (1.3125)\n", - "Epoch 9763: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9763: accuracy appended (60.00%)\n", - "Epoch 9763: model set back to train mode\n", - "Epoch 9763: model parameters saved\n", - "Epoch 9764 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9764: avg_loss appended (1.3125)\n", - "Epoch 9764: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9764: accuracy appended (60.00%)\n", - "Epoch 9764: model set back to train mode\n", - "Epoch 9764: model parameters saved\n", - "Epoch 9765 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9765: avg_loss appended (1.3125)\n", - "Epoch 9765: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9765: accuracy appended (60.00%)\n", - "Epoch 9765: model set back to train mode\n", - "Epoch 9765: model parameters saved\n", - "Epoch 9766 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9766: avg_loss appended (1.3125)\n", - "Epoch 9766: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9766: accuracy appended (60.00%)\n", - "Epoch 9766: model set back to train mode\n", - "Epoch 9766: model parameters saved\n", - "Epoch 9767 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9767: avg_loss appended (1.3125)\n", - "Epoch 9767: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9767: accuracy appended (60.00%)\n", - "Epoch 9767: model set back to train mode\n", - "Epoch 9767: model parameters saved\n", - "Epoch 9768 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9768: avg_loss appended (1.3125)\n", - "Epoch 9768: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9768: accuracy appended (60.00%)\n", - "Epoch 9768: model set back to train mode\n", - "Epoch 9768: model parameters saved\n", - "Epoch 9769 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9769: avg_loss appended (1.3125)\n", - "Epoch 9769: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9769: accuracy appended (60.00%)\n", - "Epoch 9769: model set back to train mode\n", - "Epoch 9769: model parameters saved\n", - "Epoch 9770 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9770: avg_loss appended (1.3125)\n", - "Epoch 9770: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9770: accuracy appended (60.00%)\n", - "Epoch 9770: model set back to train mode\n", - "Epoch 9770: model parameters saved\n", - "Epoch 9771 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9771: avg_loss appended (1.3125)\n", - "Epoch 9771: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9771: accuracy appended (60.00%)\n", - "Epoch 9771: model set back to train mode\n", - "Epoch 9771: model parameters saved\n", - "Epoch 9772 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9772: avg_loss appended (1.3125)\n", - "Epoch 9772: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9772: accuracy appended (60.00%)\n", - "Epoch 9772: model set back to train mode\n", - "Epoch 9772: model parameters saved\n", - "Epoch 9773 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9773: avg_loss appended (1.3125)\n", - "Epoch 9773: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9773: accuracy appended (60.00%)\n", - "Epoch 9773: model set back to train mode\n", - "Epoch 9773: model parameters saved\n", - "Epoch 9774 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9774: avg_loss appended (1.3125)\n", - "Epoch 9774: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9774: accuracy appended (60.00%)\n", - "Epoch 9774: model set back to train mode\n", - "Epoch 9774: model parameters saved\n", - "Epoch 9775 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9775: avg_loss appended (1.3125)\n", - "Epoch 9775: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9775: accuracy appended (60.00%)\n", - "Epoch 9775: model set back to train mode\n", - "Epoch 9775: model parameters saved\n", - "Epoch 9776 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9776: avg_loss appended (1.3125)\n", - "Epoch 9776: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9776: accuracy appended (60.00%)\n", - "Epoch 9776: model set back to train mode\n", - "Epoch 9776: model parameters saved\n", - "Epoch 9777 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9777: avg_loss appended (1.3125)\n", - "Epoch 9777: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9777: accuracy appended (60.00%)\n", - "Epoch 9777: model set back to train mode\n", - "Epoch 9777: model parameters saved\n", - "Epoch 9778 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9778: avg_loss appended (1.3125)\n", - "Epoch 9778: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9778: accuracy appended (60.00%)\n", - "Epoch 9778: model set back to train mode\n", - "Epoch 9778: model parameters saved\n", - "Epoch 9779 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9779: avg_loss appended (1.3125)\n", - "Epoch 9779: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9779: accuracy appended (60.00%)\n", - "Epoch 9779: model set back to train mode\n", - "Epoch 9779: model parameters saved\n", - "Epoch 9780 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9780: avg_loss appended (1.3125)\n", - "Epoch 9780: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9780: accuracy appended (60.00%)\n", - "Epoch 9780: model set back to train mode\n", - "Epoch 9780: model parameters saved\n", - "Epoch 9781 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9781: avg_loss appended (1.3125)\n", - "Epoch 9781: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9781: accuracy appended (60.00%)\n", - "Epoch 9781: model set back to train mode\n", - "Epoch 9781: model parameters saved\n", - "Epoch 9782 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9782: avg_loss appended (1.3125)\n", - "Epoch 9782: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9782: accuracy appended (60.00%)\n", - "Epoch 9782: model set back to train mode\n", - "Epoch 9782: model parameters saved\n", - "Epoch 9783 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9783: avg_loss appended (1.3125)\n", - "Epoch 9783: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9783: accuracy appended (60.00%)\n", - "Epoch 9783: model set back to train mode\n", - "Epoch 9783: model parameters saved\n", - "Epoch 9784 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9784: avg_loss appended (1.3125)\n", - "Epoch 9784: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9784: accuracy appended (60.00%)\n", - "Epoch 9784: model set back to train mode\n", - "Epoch 9784: model parameters saved\n", - "Epoch 9785 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9785: avg_loss appended (1.3125)\n", - "Epoch 9785: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9785: accuracy appended (60.00%)\n", - "Epoch 9785: model set back to train mode\n", - "Epoch 9785: model parameters saved\n", - "Epoch 9786 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9786: avg_loss appended (1.3125)\n", - "Epoch 9786: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9786: accuracy appended (60.00%)\n", - "Epoch 9786: model set back to train mode\n", - "Epoch 9786: model parameters saved\n", - "Epoch 9787 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9787: avg_loss appended (1.3125)\n", - "Epoch 9787: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9787: accuracy appended (60.00%)\n", - "Epoch 9787: model set back to train mode\n", - "Epoch 9787: model parameters saved\n", - "Epoch 9788 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9788: avg_loss appended (1.3125)\n", - "Epoch 9788: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9788: accuracy appended (60.00%)\n", - "Epoch 9788: model set back to train mode\n", - "Epoch 9788: model parameters saved\n", - "Epoch 9789 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9789: avg_loss appended (1.3125)\n", - "Epoch 9789: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9789: accuracy appended (60.00%)\n", - "Epoch 9789: model set back to train mode\n", - "Epoch 9789: model parameters saved\n", - "Epoch 9790 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9790: avg_loss appended (1.3125)\n", - "Epoch 9790: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9790: accuracy appended (60.00%)\n", - "Epoch 9790: model set back to train mode\n", - "Epoch 9790: model parameters saved\n", - "Epoch 9791 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9791: avg_loss appended (1.3125)\n", - "Epoch 9791: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9791: accuracy appended (60.00%)\n", - "Epoch 9791: model set back to train mode\n", - "Epoch 9791: model parameters saved\n", - "Epoch 9792 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9792: avg_loss appended (1.3125)\n", - "Epoch 9792: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9792: accuracy appended (60.00%)\n", - "Epoch 9792: model set back to train mode\n", - "Epoch 9792: model parameters saved\n", - "Epoch 9793 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9793: avg_loss appended (1.3125)\n", - "Epoch 9793: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9793: accuracy appended (60.00%)\n", - "Epoch 9793: model set back to train mode\n", - "Epoch 9793: model parameters saved\n", - "Epoch 9794 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9794: avg_loss appended (1.3125)\n", - "Epoch 9794: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9794: accuracy appended (60.00%)\n", - "Epoch 9794: model set back to train mode\n", - "Epoch 9794: model parameters saved\n", - "Epoch 9795 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9795: avg_loss appended (1.3125)\n", - "Epoch 9795: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9795: accuracy appended (60.00%)\n", - "Epoch 9795: model set back to train mode\n", - "Epoch 9795: model parameters saved\n", - "Epoch 9796 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9796: avg_loss appended (1.3125)\n", - "Epoch 9796: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9796: accuracy appended (60.00%)\n", - "Epoch 9796: model set back to train mode\n", - "Epoch 9796: model parameters saved\n", - "Epoch 9797 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9797: avg_loss appended (1.3125)\n", - "Epoch 9797: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9797: accuracy appended (60.00%)\n", - "Epoch 9797: model set back to train mode\n", - "Epoch 9797: model parameters saved\n", - "Epoch 9798 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9798: avg_loss appended (1.3125)\n", - "Epoch 9798: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9798: accuracy appended (60.00%)\n", - "Epoch 9798: model set back to train mode\n", - "Epoch 9798: model parameters saved\n", - "Epoch 9799 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9799: avg_loss appended (1.3125)\n", - "Epoch 9799: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9799: accuracy appended (60.00%)\n", - "Epoch 9799: model set back to train mode\n", - "Epoch 9799: model parameters saved\n", - "Epoch 9800 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9800: avg_loss appended (1.3125)\n", - "Epoch 9800: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9800: accuracy appended (60.00%)\n", - "Epoch 9800: model set back to train mode\n", - "Epoch 9800: model parameters saved\n", - "Epoch 9800/10000, Loss: 1.3125, Accuracy: 60.00%\n", - "Epoch 9801 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9801: avg_loss appended (1.3125)\n", - "Epoch 9801: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9801: accuracy appended (60.00%)\n", - "Epoch 9801: model set back to train mode\n", - "Epoch 9801: model parameters saved\n", - "Epoch 9802 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9802: avg_loss appended (1.3125)\n", - "Epoch 9802: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9802: accuracy appended (60.00%)\n", - "Epoch 9802: model set back to train mode\n", - "Epoch 9802: model parameters saved\n", - "Epoch 9803 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9803: avg_loss appended (1.3125)\n", - "Epoch 9803: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9803: accuracy appended (60.00%)\n", - "Epoch 9803: model set back to train mode\n", - "Epoch 9803: model parameters saved\n", - "Epoch 9804 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9804: avg_loss appended (1.3125)\n", - "Epoch 9804: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9804: accuracy appended (60.00%)\n", - "Epoch 9804: model set back to train mode\n", - "Epoch 9804: model parameters saved\n", - "Epoch 9805 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9805: avg_loss appended (1.3125)\n", - "Epoch 9805: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9805: accuracy appended (60.00%)\n", - "Epoch 9805: model set back to train mode\n", - "Epoch 9805: model parameters saved\n", - "Epoch 9806 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9806: avg_loss appended (1.3125)\n", - "Epoch 9806: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9806: accuracy appended (60.00%)\n", - "Epoch 9806: model set back to train mode\n", - "Epoch 9806: model parameters saved\n", - "Epoch 9807 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9807: avg_loss appended (1.3125)\n", - "Epoch 9807: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9807: accuracy appended (60.00%)\n", - "Epoch 9807: model set back to train mode\n", - "Epoch 9807: model parameters saved\n", - "Epoch 9808 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9808: avg_loss appended (1.3125)\n", - "Epoch 9808: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9808: accuracy appended (60.00%)\n", - "Epoch 9808: model set back to train mode\n", - "Epoch 9808: model parameters saved\n", - "Epoch 9809 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9809: avg_loss appended (1.3125)\n", - "Epoch 9809: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9809: accuracy appended (60.00%)\n", - "Epoch 9809: model set back to train mode\n", - "Epoch 9809: model parameters saved\n", - "Epoch 9810 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9810: avg_loss appended (1.3125)\n", - "Epoch 9810: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9810: accuracy appended (60.00%)\n", - "Epoch 9810: model set back to train mode\n", - "Epoch 9810: model parameters saved\n", - "Epoch 9811 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9811: avg_loss appended (1.3125)\n", - "Epoch 9811: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9811: accuracy appended (60.00%)\n", - "Epoch 9811: model set back to train mode\n", - "Epoch 9811: model parameters saved\n", - "Epoch 9812 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9812: avg_loss appended (1.3125)\n", - "Epoch 9812: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9812: accuracy appended (60.00%)\n", - "Epoch 9812: model set back to train mode\n", - "Epoch 9812: model parameters saved\n", - "Epoch 9813 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9813: avg_loss appended (1.3125)\n", - "Epoch 9813: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9813: accuracy appended (60.00%)\n", - "Epoch 9813: model set back to train mode\n", - "Epoch 9813: model parameters saved\n", - "Epoch 9814 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9814: avg_loss appended (1.3125)\n", - "Epoch 9814: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9814: accuracy appended (60.00%)\n", - "Epoch 9814: model set back to train mode\n", - "Epoch 9814: model parameters saved\n", - "Epoch 9815 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9815: avg_loss appended (1.3125)\n", - "Epoch 9815: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9815: accuracy appended (60.00%)\n", - "Epoch 9815: model set back to train mode\n", - "Epoch 9815: model parameters saved\n", - "Epoch 9816 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9816: avg_loss appended (1.3125)\n", - "Epoch 9816: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9816: accuracy appended (60.00%)\n", - "Epoch 9816: model set back to train mode\n", - "Epoch 9816: model parameters saved\n", - "Epoch 9817 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9817: avg_loss appended (1.3125)\n", - "Epoch 9817: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9817: accuracy appended (60.00%)\n", - "Epoch 9817: model set back to train mode\n", - "Epoch 9817: model parameters saved\n", - "Epoch 9818 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9818: avg_loss appended (1.3125)\n", - "Epoch 9818: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9818: accuracy appended (60.00%)\n", - "Epoch 9818: model set back to train mode\n", - "Epoch 9818: model parameters saved\n", - "Epoch 9819 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9819: avg_loss appended (1.3125)\n", - "Epoch 9819: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9819: accuracy appended (60.00%)\n", - "Epoch 9819: model set back to train mode\n", - "Epoch 9819: model parameters saved\n", - "Epoch 9820 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9820: avg_loss appended (1.3125)\n", - "Epoch 9820: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9820: accuracy appended (60.00%)\n", - "Epoch 9820: model set back to train mode\n", - "Epoch 9820: model parameters saved\n", - "Epoch 9821 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9821: avg_loss appended (1.3125)\n", - "Epoch 9821: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9821: accuracy appended (60.00%)\n", - "Epoch 9821: model set back to train mode\n", - "Epoch 9821: model parameters saved\n", - "Epoch 9822 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9822: avg_loss appended (1.3125)\n", - "Epoch 9822: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9822: accuracy appended (60.00%)\n", - "Epoch 9822: model set back to train mode\n", - "Epoch 9822: model parameters saved\n", - "Epoch 9823 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9823: avg_loss appended (1.3125)\n", - "Epoch 9823: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9823: accuracy appended (60.00%)\n", - "Epoch 9823: model set back to train mode\n", - "Epoch 9823: model parameters saved\n", - "Epoch 9824 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9824: avg_loss appended (1.3125)\n", - "Epoch 9824: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9824: accuracy appended (60.00%)\n", - "Epoch 9824: model set back to train mode\n", - "Epoch 9824: model parameters saved\n", - "Epoch 9825 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9825: avg_loss appended (1.3125)\n", - "Epoch 9825: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9825: accuracy appended (60.00%)\n", - "Epoch 9825: model set back to train mode\n", - "Epoch 9825: model parameters saved\n", - "Epoch 9826 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9826: avg_loss appended (1.3125)\n", - "Epoch 9826: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9826: accuracy appended (60.00%)\n", - "Epoch 9826: model set back to train mode\n", - "Epoch 9826: model parameters saved\n", - "Epoch 9827 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9827: avg_loss appended (1.3125)\n", - "Epoch 9827: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9827: accuracy appended (60.00%)\n", - "Epoch 9827: model set back to train mode\n", - "Epoch 9827: model parameters saved\n", - "Epoch 9828 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9828: avg_loss appended (1.3125)\n", - "Epoch 9828: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9828: accuracy appended (60.00%)\n", - "Epoch 9828: model set back to train mode\n", - "Epoch 9828: model parameters saved\n", - "Epoch 9829 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9829: avg_loss appended (1.3125)\n", - "Epoch 9829: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9829: accuracy appended (60.00%)\n", - "Epoch 9829: model set back to train mode\n", - "Epoch 9829: model parameters saved\n", - "Epoch 9830 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9830: avg_loss appended (1.3125)\n", - "Epoch 9830: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9830: accuracy appended (60.00%)\n", - "Epoch 9830: model set back to train mode\n", - "Epoch 9830: model parameters saved\n", - "Epoch 9831 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9831: avg_loss appended (1.3125)\n", - "Epoch 9831: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9831: accuracy appended (60.00%)\n", - "Epoch 9831: model set back to train mode\n", - "Epoch 9831: model parameters saved\n", - "Epoch 9832 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9832: avg_loss appended (1.3125)\n", - "Epoch 9832: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9832: accuracy appended (60.00%)\n", - "Epoch 9832: model set back to train mode\n", - "Epoch 9832: model parameters saved\n", - "Epoch 9833 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9833: avg_loss appended (1.3125)\n", - "Epoch 9833: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9833: accuracy appended (60.00%)\n", - "Epoch 9833: model set back to train mode\n", - "Epoch 9833: model parameters saved\n", - "Epoch 9834 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9834: avg_loss appended (1.3125)\n", - "Epoch 9834: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9834: accuracy appended (60.00%)\n", - "Epoch 9834: model set back to train mode\n", - "Epoch 9834: model parameters saved\n", - "Epoch 9835 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9835: avg_loss appended (1.3125)\n", - "Epoch 9835: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9835: accuracy appended (60.00%)\n", - "Epoch 9835: model set back to train mode\n", - "Epoch 9835: model parameters saved\n", - "Epoch 9836 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9836: avg_loss appended (1.3125)\n", - "Epoch 9836: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9836: accuracy appended (60.00%)\n", - "Epoch 9836: model set back to train mode\n", - "Epoch 9836: model parameters saved\n", - "Epoch 9837 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9837: avg_loss appended (1.3125)\n", - "Epoch 9837: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9837: accuracy appended (60.00%)\n", - "Epoch 9837: model set back to train mode\n", - "Epoch 9837: model parameters saved\n", - "Epoch 9838 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9838: avg_loss appended (1.3125)\n", - "Epoch 9838: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9838: accuracy appended (60.00%)\n", - "Epoch 9838: model set back to train mode\n", - "Epoch 9838: model parameters saved\n", - "Epoch 9839 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9839: avg_loss appended (1.3125)\n", - "Epoch 9839: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9839: accuracy appended (60.00%)\n", - "Epoch 9839: model set back to train mode\n", - "Epoch 9839: model parameters saved\n", - "Epoch 9840 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9840: avg_loss appended (1.3125)\n", - "Epoch 9840: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9840: accuracy appended (60.00%)\n", - "Epoch 9840: model set back to train mode\n", - "Epoch 9840: model parameters saved\n", - "Epoch 9841 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9841: avg_loss appended (1.3125)\n", - "Epoch 9841: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9841: accuracy appended (60.00%)\n", - "Epoch 9841: model set back to train mode\n", - "Epoch 9841: model parameters saved\n", - "Epoch 9842 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9842: avg_loss appended (1.3125)\n", - "Epoch 9842: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9842: accuracy appended (60.00%)\n", - "Epoch 9842: model set back to train mode\n", - "Epoch 9842: model parameters saved\n", - "Epoch 9843 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9843: avg_loss appended (1.3125)\n", - "Epoch 9843: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9843: accuracy appended (60.00%)\n", - "Epoch 9843: model set back to train mode\n", - "Epoch 9843: model parameters saved\n", - "Epoch 9844 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9844: avg_loss appended (1.3125)\n", - "Epoch 9844: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9844: accuracy appended (60.00%)\n", - "Epoch 9844: model set back to train mode\n", - "Epoch 9844: model parameters saved\n", - "Epoch 9845 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9845: avg_loss appended (1.3125)\n", - "Epoch 9845: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9845: accuracy appended (60.00%)\n", - "Epoch 9845: model set back to train mode\n", - "Epoch 9845: model parameters saved\n", - "Epoch 9846 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9846: avg_loss appended (1.3125)\n", - "Epoch 9846: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9846: accuracy appended (60.00%)\n", - "Epoch 9846: model set back to train mode\n", - "Epoch 9846: model parameters saved\n", - "Epoch 9847 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9847: avg_loss appended (1.3125)\n", - "Epoch 9847: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9847: accuracy appended (60.00%)\n", - "Epoch 9847: model set back to train mode\n", - "Epoch 9847: model parameters saved\n", - "Epoch 9848 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9848: avg_loss appended (1.3125)\n", - "Epoch 9848: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9848: accuracy appended (60.00%)\n", - "Epoch 9848: model set back to train mode\n", - "Epoch 9848: model parameters saved\n", - "Epoch 9849 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9849: avg_loss appended (1.3125)\n", - "Epoch 9849: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9849: accuracy appended (60.00%)\n", - "Epoch 9849: model set back to train mode\n", - "Epoch 9849: model parameters saved\n", - "Epoch 9850 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9850: avg_loss appended (1.3125)\n", - "Epoch 9850: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9850: accuracy appended (60.00%)\n", - "Epoch 9850: model set back to train mode\n", - "Epoch 9850: model parameters saved\n", - "Epoch 9851 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9851: avg_loss appended (1.3125)\n", - "Epoch 9851: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9851: accuracy appended (60.00%)\n", - "Epoch 9851: model set back to train mode\n", - "Epoch 9851: model parameters saved\n", - "Epoch 9852 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9852: avg_loss appended (1.3125)\n", - "Epoch 9852: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9852: accuracy appended (60.00%)\n", - "Epoch 9852: model set back to train mode\n", - "Epoch 9852: model parameters saved\n", - "Epoch 9853 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9853: avg_loss appended (1.3125)\n", - "Epoch 9853: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9853: accuracy appended (60.00%)\n", - "Epoch 9853: model set back to train mode\n", - "Epoch 9853: model parameters saved\n", - "Epoch 9854 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9854: avg_loss appended (1.3125)\n", - "Epoch 9854: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9854: accuracy appended (60.00%)\n", - "Epoch 9854: model set back to train mode\n", - "Epoch 9854: model parameters saved\n", - "Epoch 9855 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9855: avg_loss appended (1.3125)\n", - "Epoch 9855: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9855: accuracy appended (60.00%)\n", - "Epoch 9855: model set back to train mode\n", - "Epoch 9855: model parameters saved\n", - "Epoch 9856 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9856: avg_loss appended (1.3125)\n", - "Epoch 9856: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9856: accuracy appended (60.00%)\n", - "Epoch 9856: model set back to train mode\n", - "Epoch 9856: model parameters saved\n", - "Epoch 9857 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9857: avg_loss appended (1.3125)\n", - "Epoch 9857: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9857: accuracy appended (60.00%)\n", - "Epoch 9857: model set back to train mode\n", - "Epoch 9857: model parameters saved\n", - "Epoch 9858 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9858: avg_loss appended (1.3125)\n", - "Epoch 9858: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9858: accuracy appended (60.00%)\n", - "Epoch 9858: model set back to train mode\n", - "Epoch 9858: model parameters saved\n", - "Epoch 9859 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9859: avg_loss appended (1.3125)\n", - "Epoch 9859: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9859: accuracy appended (60.00%)\n", - "Epoch 9859: model set back to train mode\n", - "Epoch 9859: model parameters saved\n", - "Epoch 9860 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9860: avg_loss appended (1.3125)\n", - "Epoch 9860: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9860: accuracy appended (60.00%)\n", - "Epoch 9860: model set back to train mode\n", - "Epoch 9860: model parameters saved\n", - "Epoch 9861 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9861: avg_loss appended (1.3125)\n", - "Epoch 9861: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9861: accuracy appended (60.00%)\n", - "Epoch 9861: model set back to train mode\n", - "Epoch 9861: model parameters saved\n", - "Epoch 9862 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9862: avg_loss appended (1.3125)\n", - "Epoch 9862: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9862: accuracy appended (60.00%)\n", - "Epoch 9862: model set back to train mode\n", - "Epoch 9862: model parameters saved\n", - "Epoch 9863 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9863: avg_loss appended (1.3125)\n", - "Epoch 9863: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9863: accuracy appended (60.00%)\n", - "Epoch 9863: model set back to train mode\n", - "Epoch 9863: model parameters saved\n", - "Epoch 9864 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9864: avg_loss appended (1.3125)\n", - "Epoch 9864: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9864: accuracy appended (60.00%)\n", - "Epoch 9864: model set back to train mode\n", - "Epoch 9864: model parameters saved\n", - "Epoch 9865 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9865: avg_loss appended (1.3125)\n", - "Epoch 9865: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9865: accuracy appended (60.00%)\n", - "Epoch 9865: model set back to train mode\n", - "Epoch 9865: model parameters saved\n", - "Epoch 9866 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9866: avg_loss appended (1.3125)\n", - "Epoch 9866: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9866: accuracy appended (60.00%)\n", - "Epoch 9866: model set back to train mode\n", - "Epoch 9866: model parameters saved\n", - "Epoch 9867 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9867: avg_loss appended (1.3125)\n", - "Epoch 9867: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9867: accuracy appended (60.00%)\n", - "Epoch 9867: model set back to train mode\n", - "Epoch 9867: model parameters saved\n", - "Epoch 9868 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9868: avg_loss appended (1.3125)\n", - "Epoch 9868: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9868: accuracy appended (60.00%)\n", - "Epoch 9868: model set back to train mode\n", - "Epoch 9868: model parameters saved\n", - "Epoch 9869 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9869: avg_loss appended (1.3125)\n", - "Epoch 9869: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9869: accuracy appended (60.00%)\n", - "Epoch 9869: model set back to train mode\n", - "Epoch 9869: model parameters saved\n", - "Epoch 9870 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9870: avg_loss appended (1.3125)\n", - "Epoch 9870: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9870: accuracy appended (60.00%)\n", - "Epoch 9870: model set back to train mode\n", - "Epoch 9870: model parameters saved\n", - "Epoch 9871 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9871: avg_loss appended (1.3125)\n", - "Epoch 9871: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9871: accuracy appended (60.00%)\n", - "Epoch 9871: model set back to train mode\n", - "Epoch 9871: model parameters saved\n", - "Epoch 9872 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9872: avg_loss appended (1.3125)\n", - "Epoch 9872: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9872: accuracy appended (60.00%)\n", - "Epoch 9872: model set back to train mode\n", - "Epoch 9872: model parameters saved\n", - "Epoch 9873 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9873: avg_loss appended (1.3125)\n", - "Epoch 9873: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9873: accuracy appended (60.00%)\n", - "Epoch 9873: model set back to train mode\n", - "Epoch 9873: model parameters saved\n", - "Epoch 9874 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9874: avg_loss appended (1.3125)\n", - "Epoch 9874: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9874: accuracy appended (60.00%)\n", - "Epoch 9874: model set back to train mode\n", - "Epoch 9874: model parameters saved\n", - "Epoch 9875 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9875: avg_loss appended (1.3125)\n", - "Epoch 9875: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9875: accuracy appended (60.00%)\n", - "Epoch 9875: model set back to train mode\n", - "Epoch 9875: model parameters saved\n", - "Epoch 9876 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9876: avg_loss appended (1.3125)\n", - "Epoch 9876: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9876: accuracy appended (60.00%)\n", - "Epoch 9876: model set back to train mode\n", - "Epoch 9876: model parameters saved\n", - "Epoch 9877 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9877: avg_loss appended (1.3125)\n", - "Epoch 9877: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9877: accuracy appended (60.00%)\n", - "Epoch 9877: model set back to train mode\n", - "Epoch 9877: model parameters saved\n", - "Epoch 9878 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9878: avg_loss appended (1.3125)\n", - "Epoch 9878: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9878: accuracy appended (60.00%)\n", - "Epoch 9878: model set back to train mode\n", - "Epoch 9878: model parameters saved\n", - "Epoch 9879 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9879: avg_loss appended (1.3125)\n", - "Epoch 9879: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9879: accuracy appended (60.00%)\n", - "Epoch 9879: model set back to train mode\n", - "Epoch 9879: model parameters saved\n", - "Epoch 9880 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9880: avg_loss appended (1.3125)\n", - "Epoch 9880: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9880: accuracy appended (60.00%)\n", - "Epoch 9880: model set back to train mode\n", - "Epoch 9880: model parameters saved\n", - "Epoch 9881 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9881: avg_loss appended (1.3125)\n", - "Epoch 9881: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9881: accuracy appended (60.00%)\n", - "Epoch 9881: model set back to train mode\n", - "Epoch 9881: model parameters saved\n", - "Epoch 9882 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9882: avg_loss appended (1.3125)\n", - "Epoch 9882: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9882: accuracy appended (60.00%)\n", - "Epoch 9882: model set back to train mode\n", - "Epoch 9882: model parameters saved\n", - "Epoch 9883 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9883: avg_loss appended (1.3125)\n", - "Epoch 9883: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9883: accuracy appended (60.00%)\n", - "Epoch 9883: model set back to train mode\n", - "Epoch 9883: model parameters saved\n", - "Epoch 9884 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9884: avg_loss appended (1.3125)\n", - "Epoch 9884: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9884: accuracy appended (60.00%)\n", - "Epoch 9884: model set back to train mode\n", - "Epoch 9884: model parameters saved\n", - "Epoch 9885 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9885: avg_loss appended (1.3125)\n", - "Epoch 9885: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9885: accuracy appended (60.00%)\n", - "Epoch 9885: model set back to train mode\n", - "Epoch 9885: model parameters saved\n", - "Epoch 9886 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9886: avg_loss appended (1.3125)\n", - "Epoch 9886: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9886: accuracy appended (60.00%)\n", - "Epoch 9886: model set back to train mode\n", - "Epoch 9886: model parameters saved\n", - "Epoch 9887 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9887: avg_loss appended (1.3125)\n", - "Epoch 9887: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9887: accuracy appended (60.00%)\n", - "Epoch 9887: model set back to train mode\n", - "Epoch 9887: model parameters saved\n", - "Epoch 9888 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9888: avg_loss appended (1.3125)\n", - "Epoch 9888: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9888: accuracy appended (60.00%)\n", - "Epoch 9888: model set back to train mode\n", - "Epoch 9888: model parameters saved\n", - "Epoch 9889 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9889: avg_loss appended (1.3125)\n", - "Epoch 9889: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9889: accuracy appended (60.00%)\n", - "Epoch 9889: model set back to train mode\n", - "Epoch 9889: model parameters saved\n", - "Epoch 9890 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9890: avg_loss appended (1.3125)\n", - "Epoch 9890: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9890: accuracy appended (60.00%)\n", - "Epoch 9890: model set back to train mode\n", - "Epoch 9890: model parameters saved\n", - "Epoch 9891 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9891: avg_loss appended (1.3125)\n", - "Epoch 9891: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9891: accuracy appended (60.00%)\n", - "Epoch 9891: model set back to train mode\n", - "Epoch 9891: model parameters saved\n", - "Epoch 9892 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9892: avg_loss appended (1.3125)\n", - "Epoch 9892: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9892: accuracy appended (60.00%)\n", - "Epoch 9892: model set back to train mode\n", - "Epoch 9892: model parameters saved\n", - "Epoch 9893 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9893: avg_loss appended (1.3125)\n", - "Epoch 9893: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9893: accuracy appended (60.00%)\n", - "Epoch 9893: model set back to train mode\n", - "Epoch 9893: model parameters saved\n", - "Epoch 9894 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9894: avg_loss appended (1.3125)\n", - "Epoch 9894: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9894: accuracy appended (60.00%)\n", - "Epoch 9894: model set back to train mode\n", - "Epoch 9894: model parameters saved\n", - "Epoch 9895 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9895: avg_loss appended (1.3125)\n", - "Epoch 9895: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9895: accuracy appended (60.00%)\n", - "Epoch 9895: model set back to train mode\n", - "Epoch 9895: model parameters saved\n", - "Epoch 9896 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9896: avg_loss appended (1.3125)\n", - "Epoch 9896: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9896: accuracy appended (60.00%)\n", - "Epoch 9896: model set back to train mode\n", - "Epoch 9896: model parameters saved\n", - "Epoch 9897 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9897: avg_loss appended (1.3125)\n", - "Epoch 9897: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9897: accuracy appended (60.00%)\n", - "Epoch 9897: model set back to train mode\n", - "Epoch 9897: model parameters saved\n", - "Epoch 9898 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9898: avg_loss appended (1.3125)\n", - "Epoch 9898: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9898: accuracy appended (60.00%)\n", - "Epoch 9898: model set back to train mode\n", - "Epoch 9898: model parameters saved\n", - "Epoch 9899 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9899: avg_loss appended (1.3125)\n", - "Epoch 9899: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9899: accuracy appended (60.00%)\n", - "Epoch 9899: model set back to train mode\n", - "Epoch 9899: model parameters saved\n", - "Epoch 9900 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9900: avg_loss appended (1.3125)\n", - "Epoch 9900: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9900: accuracy appended (60.00%)\n", - "Epoch 9900: model set back to train mode\n", - "Epoch 9900: model parameters saved\n", - "Epoch 9900/10000, Loss: 1.3125, Accuracy: 60.00%\n", - "Epoch 9901 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9901: avg_loss appended (1.3125)\n", - "Epoch 9901: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9901: accuracy appended (60.00%)\n", - "Epoch 9901: model set back to train mode\n", - "Epoch 9901: model parameters saved\n", - "Epoch 9902 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9902: avg_loss appended (1.3125)\n", - "Epoch 9902: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9902: accuracy appended (60.00%)\n", - "Epoch 9902: model set back to train mode\n", - "Epoch 9902: model parameters saved\n", - "Epoch 9903 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9903: avg_loss appended (1.3125)\n", - "Epoch 9903: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9903: accuracy appended (60.00%)\n", - "Epoch 9903: model set back to train mode\n", - "Epoch 9903: model parameters saved\n", - "Epoch 9904 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9904: avg_loss appended (1.3125)\n", - "Epoch 9904: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9904: accuracy appended (60.00%)\n", - "Epoch 9904: model set back to train mode\n", - "Epoch 9904: model parameters saved\n", - "Epoch 9905 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9905: avg_loss appended (1.3125)\n", - "Epoch 9905: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9905: accuracy appended (60.00%)\n", - "Epoch 9905: model set back to train mode\n", - "Epoch 9905: model parameters saved\n", - "Epoch 9906 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9906: avg_loss appended (1.3125)\n", - "Epoch 9906: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9906: accuracy appended (60.00%)\n", - "Epoch 9906: model set back to train mode\n", - "Epoch 9906: model parameters saved\n", - "Epoch 9907 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9907: avg_loss appended (1.3125)\n", - "Epoch 9907: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9907: accuracy appended (60.00%)\n", - "Epoch 9907: model set back to train mode\n", - "Epoch 9907: model parameters saved\n", - "Epoch 9908 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9908: avg_loss appended (1.3125)\n", - "Epoch 9908: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9908: accuracy appended (60.00%)\n", - "Epoch 9908: model set back to train mode\n", - "Epoch 9908: model parameters saved\n", - "Epoch 9909 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9909: avg_loss appended (1.3125)\n", - "Epoch 9909: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9909: accuracy appended (60.00%)\n", - "Epoch 9909: model set back to train mode\n", - "Epoch 9909: model parameters saved\n", - "Epoch 9910 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9910: avg_loss appended (1.3125)\n", - "Epoch 9910: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9910: accuracy appended (60.00%)\n", - "Epoch 9910: model set back to train mode\n", - "Epoch 9910: model parameters saved\n", - "Epoch 9911 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9911: avg_loss appended (1.3125)\n", - "Epoch 9911: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9911: accuracy appended (60.00%)\n", - "Epoch 9911: model set back to train mode\n", - "Epoch 9911: model parameters saved\n", - "Epoch 9912 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9912: avg_loss appended (1.3125)\n", - "Epoch 9912: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9912: accuracy appended (60.00%)\n", - "Epoch 9912: model set back to train mode\n", - "Epoch 9912: model parameters saved\n", - "Epoch 9913 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9913: avg_loss appended (1.3125)\n", - "Epoch 9913: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9913: accuracy appended (60.00%)\n", - "Epoch 9913: model set back to train mode\n", - "Epoch 9913: model parameters saved\n", - "Epoch 9914 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9914: avg_loss appended (1.3125)\n", - "Epoch 9914: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9914: accuracy appended (60.00%)\n", - "Epoch 9914: model set back to train mode\n", - "Epoch 9914: model parameters saved\n", - "Epoch 9915 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9915: avg_loss appended (1.3125)\n", - "Epoch 9915: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9915: accuracy appended (60.00%)\n", - "Epoch 9915: model set back to train mode\n", - "Epoch 9915: model parameters saved\n", - "Epoch 9916 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9916: avg_loss appended (1.3125)\n", - "Epoch 9916: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9916: accuracy appended (60.00%)\n", - "Epoch 9916: model set back to train mode\n", - "Epoch 9916: model parameters saved\n", - "Epoch 9917 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9917: avg_loss appended (1.3125)\n", - "Epoch 9917: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9917: accuracy appended (60.00%)\n", - "Epoch 9917: model set back to train mode\n", - "Epoch 9917: model parameters saved\n", - "Epoch 9918 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9918: avg_loss appended (1.3125)\n", - "Epoch 9918: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9918: accuracy appended (60.00%)\n", - "Epoch 9918: model set back to train mode\n", - "Epoch 9918: model parameters saved\n", - "Epoch 9919 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9919: avg_loss appended (1.3125)\n", - "Epoch 9919: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9919: accuracy appended (60.00%)\n", - "Epoch 9919: model set back to train mode\n", - "Epoch 9919: model parameters saved\n", - "Epoch 9920 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9920: avg_loss appended (1.3125)\n", - "Epoch 9920: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9920: accuracy appended (60.00%)\n", - "Epoch 9920: model set back to train mode\n", - "Epoch 9920: model parameters saved\n", - "Epoch 9921 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9921: avg_loss appended (1.3125)\n", - "Epoch 9921: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9921: accuracy appended (60.00%)\n", - "Epoch 9921: model set back to train mode\n", - "Epoch 9921: model parameters saved\n", - "Epoch 9922 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9922: avg_loss appended (1.3125)\n", - "Epoch 9922: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9922: accuracy appended (60.00%)\n", - "Epoch 9922: model set back to train mode\n", - "Epoch 9922: model parameters saved\n", - "Epoch 9923 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9923: avg_loss appended (1.3125)\n", - "Epoch 9923: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9923: accuracy appended (60.00%)\n", - "Epoch 9923: model set back to train mode\n", - "Epoch 9923: model parameters saved\n", - "Epoch 9924 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9924: avg_loss appended (1.3125)\n", - "Epoch 9924: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9924: accuracy appended (60.00%)\n", - "Epoch 9924: model set back to train mode\n", - "Epoch 9924: model parameters saved\n", - "Epoch 9925 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9925: avg_loss appended (1.3125)\n", - "Epoch 9925: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9925: accuracy appended (60.00%)\n", - "Epoch 9925: model set back to train mode\n", - "Epoch 9925: model parameters saved\n", - "Epoch 9926 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9926: avg_loss appended (1.3125)\n", - "Epoch 9926: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9926: accuracy appended (60.00%)\n", - "Epoch 9926: model set back to train mode\n", - "Epoch 9926: model parameters saved\n", - "Epoch 9927 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9927: avg_loss appended (1.3125)\n", - "Epoch 9927: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9927: accuracy appended (60.00%)\n", - "Epoch 9927: model set back to train mode\n", - "Epoch 9927: model parameters saved\n", - "Epoch 9928 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9928: avg_loss appended (1.3125)\n", - "Epoch 9928: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9928: accuracy appended (60.00%)\n", - "Epoch 9928: model set back to train mode\n", - "Epoch 9928: model parameters saved\n", - "Epoch 9929 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9929: avg_loss appended (1.3125)\n", - "Epoch 9929: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9929: accuracy appended (60.00%)\n", - "Epoch 9929: model set back to train mode\n", - "Epoch 9929: model parameters saved\n", - "Epoch 9930 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9930: avg_loss appended (1.3125)\n", - "Epoch 9930: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9930: accuracy appended (60.00%)\n", - "Epoch 9930: model set back to train mode\n", - "Epoch 9930: model parameters saved\n", - "Epoch 9931 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9931: avg_loss appended (1.3125)\n", - "Epoch 9931: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9931: accuracy appended (60.00%)\n", - "Epoch 9931: model set back to train mode\n", - "Epoch 9931: model parameters saved\n", - "Epoch 9932 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9932: avg_loss appended (1.3125)\n", - "Epoch 9932: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9932: accuracy appended (60.00%)\n", - "Epoch 9932: model set back to train mode\n", - "Epoch 9932: model parameters saved\n", - "Epoch 9933 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9933: avg_loss appended (1.3125)\n", - "Epoch 9933: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9933: accuracy appended (60.00%)\n", - "Epoch 9933: model set back to train mode\n", - "Epoch 9933: model parameters saved\n", - "Epoch 9934 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9934: avg_loss appended (1.3125)\n", - "Epoch 9934: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9934: accuracy appended (60.00%)\n", - "Epoch 9934: model set back to train mode\n", - "Epoch 9934: model parameters saved\n", - "Epoch 9935 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9935: avg_loss appended (1.3125)\n", - "Epoch 9935: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9935: accuracy appended (60.00%)\n", - "Epoch 9935: model set back to train mode\n", - "Epoch 9935: model parameters saved\n", - "Epoch 9936 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9936: avg_loss appended (1.3125)\n", - "Epoch 9936: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9936: accuracy appended (60.00%)\n", - "Epoch 9936: model set back to train mode\n", - "Epoch 9936: model parameters saved\n", - "Epoch 9937 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9937: avg_loss appended (1.3125)\n", - "Epoch 9937: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9937: accuracy appended (60.00%)\n", - "Epoch 9937: model set back to train mode\n", - "Epoch 9937: model parameters saved\n", - "Epoch 9938 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9938: avg_loss appended (1.3125)\n", - "Epoch 9938: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9938: accuracy appended (60.00%)\n", - "Epoch 9938: model set back to train mode\n", - "Epoch 9938: model parameters saved\n", - "Epoch 9939 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9939: avg_loss appended (1.3125)\n", - "Epoch 9939: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9939: accuracy appended (60.00%)\n", - "Epoch 9939: model set back to train mode\n", - "Epoch 9939: model parameters saved\n", - "Epoch 9940 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9940: avg_loss appended (1.3125)\n", - "Epoch 9940: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9940: accuracy appended (60.00%)\n", - "Epoch 9940: model set back to train mode\n", - "Epoch 9940: model parameters saved\n", - "Epoch 9941 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9941: avg_loss appended (1.3125)\n", - "Epoch 9941: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9941: accuracy appended (60.00%)\n", - "Epoch 9941: model set back to train mode\n", - "Epoch 9941: model parameters saved\n", - "Epoch 9942 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9942: avg_loss appended (1.3125)\n", - "Epoch 9942: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9942: accuracy appended (60.00%)\n", - "Epoch 9942: model set back to train mode\n", - "Epoch 9942: model parameters saved\n", - "Epoch 9943 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9943: avg_loss appended (1.3125)\n", - "Epoch 9943: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9943: accuracy appended (60.00%)\n", - "Epoch 9943: model set back to train mode\n", - "Epoch 9943: model parameters saved\n", - "Epoch 9944 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9944: avg_loss appended (1.3125)\n", - "Epoch 9944: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9944: accuracy appended (60.00%)\n", - "Epoch 9944: model set back to train mode\n", - "Epoch 9944: model parameters saved\n", - "Epoch 9945 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9945: avg_loss appended (1.3125)\n", - "Epoch 9945: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9945: accuracy appended (60.00%)\n", - "Epoch 9945: model set back to train mode\n", - "Epoch 9945: model parameters saved\n", - "Epoch 9946 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9946: avg_loss appended (1.3125)\n", - "Epoch 9946: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9946: accuracy appended (60.00%)\n", - "Epoch 9946: model set back to train mode\n", - "Epoch 9946: model parameters saved\n", - "Epoch 9947 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9947: avg_loss appended (1.3125)\n", - "Epoch 9947: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9947: accuracy appended (60.00%)\n", - "Epoch 9947: model set back to train mode\n", - "Epoch 9947: model parameters saved\n", - "Epoch 9948 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9948: avg_loss appended (1.3125)\n", - "Epoch 9948: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9948: accuracy appended (60.00%)\n", - "Epoch 9948: model set back to train mode\n", - "Epoch 9948: model parameters saved\n", - "Epoch 9949 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9949: avg_loss appended (1.3125)\n", - "Epoch 9949: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9949: accuracy appended (60.00%)\n", - "Epoch 9949: model set back to train mode\n", - "Epoch 9949: model parameters saved\n", - "Epoch 9950 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9950: avg_loss appended (1.3125)\n", - "Epoch 9950: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9950: accuracy appended (60.00%)\n", - "Epoch 9950: model set back to train mode\n", - "Epoch 9950: model parameters saved\n", - "Epoch 9951 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9951: avg_loss appended (1.3125)\n", - "Epoch 9951: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9951: accuracy appended (60.00%)\n", - "Epoch 9951: model set back to train mode\n", - "Epoch 9951: model parameters saved\n", - "Epoch 9952 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9952: avg_loss appended (1.3125)\n", - "Epoch 9952: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9952: accuracy appended (60.00%)\n", - "Epoch 9952: model set back to train mode\n", - "Epoch 9952: model parameters saved\n", - "Epoch 9953 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9953: avg_loss appended (1.3125)\n", - "Epoch 9953: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9953: accuracy appended (60.00%)\n", - "Epoch 9953: model set back to train mode\n", - "Epoch 9953: model parameters saved\n", - "Epoch 9954 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9954: avg_loss appended (1.3125)\n", - "Epoch 9954: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9954: accuracy appended (60.00%)\n", - "Epoch 9954: model set back to train mode\n", - "Epoch 9954: model parameters saved\n", - "Epoch 9955 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9955: avg_loss appended (1.3125)\n", - "Epoch 9955: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9955: accuracy appended (60.00%)\n", - "Epoch 9955: model set back to train mode\n", - "Epoch 9955: model parameters saved\n", - "Epoch 9956 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9956: avg_loss appended (1.3125)\n", - "Epoch 9956: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9956: accuracy appended (60.00%)\n", - "Epoch 9956: model set back to train mode\n", - "Epoch 9956: model parameters saved\n", - "Epoch 9957 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9957: avg_loss appended (1.3125)\n", - "Epoch 9957: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9957: accuracy appended (60.00%)\n", - "Epoch 9957: model set back to train mode\n", - "Epoch 9957: model parameters saved\n", - "Epoch 9958 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9958: avg_loss appended (1.3125)\n", - "Epoch 9958: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9958: accuracy appended (60.00%)\n", - "Epoch 9958: model set back to train mode\n", - "Epoch 9958: model parameters saved\n", - "Epoch 9959 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9959: avg_loss appended (1.3125)\n", - "Epoch 9959: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9959: accuracy appended (60.00%)\n", - "Epoch 9959: model set back to train mode\n", - "Epoch 9959: model parameters saved\n", - "Epoch 9960 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9960: avg_loss appended (1.3125)\n", - "Epoch 9960: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9960: accuracy appended (60.00%)\n", - "Epoch 9960: model set back to train mode\n", - "Epoch 9960: model parameters saved\n", - "Epoch 9961 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9961: avg_loss appended (1.3125)\n", - "Epoch 9961: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9961: accuracy appended (60.00%)\n", - "Epoch 9961: model set back to train mode\n", - "Epoch 9961: model parameters saved\n", - "Epoch 9962 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9962: avg_loss appended (1.3125)\n", - "Epoch 9962: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9962: accuracy appended (60.00%)\n", - "Epoch 9962: model set back to train mode\n", - "Epoch 9962: model parameters saved\n", - "Epoch 9963 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9963: avg_loss appended (1.3125)\n", - "Epoch 9963: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9963: accuracy appended (60.00%)\n", - "Epoch 9963: model set back to train mode\n", - "Epoch 9963: model parameters saved\n", - "Epoch 9964 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9964: avg_loss appended (1.3125)\n", - "Epoch 9964: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9964: accuracy appended (60.00%)\n", - "Epoch 9964: model set back to train mode\n", - "Epoch 9964: model parameters saved\n", - "Epoch 9965 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9965: avg_loss appended (1.3125)\n", - "Epoch 9965: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9965: accuracy appended (60.00%)\n", - "Epoch 9965: model set back to train mode\n", - "Epoch 9965: model parameters saved\n", - "Epoch 9966 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9966: avg_loss appended (1.3125)\n", - "Epoch 9966: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9966: accuracy appended (60.00%)\n", - "Epoch 9966: model set back to train mode\n", - "Epoch 9966: model parameters saved\n", - "Epoch 9967 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9967: avg_loss appended (1.3125)\n", - "Epoch 9967: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9967: accuracy appended (60.00%)\n", - "Epoch 9967: model set back to train mode\n", - "Epoch 9967: model parameters saved\n", - "Epoch 9968 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9968: avg_loss appended (1.3125)\n", - "Epoch 9968: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9968: accuracy appended (60.00%)\n", - "Epoch 9968: model set back to train mode\n", - "Epoch 9968: model parameters saved\n", - "Epoch 9969 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9969: avg_loss appended (1.3125)\n", - "Epoch 9969: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9969: accuracy appended (60.00%)\n", - "Epoch 9969: model set back to train mode\n", - "Epoch 9969: model parameters saved\n", - "Epoch 9970 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9970: avg_loss appended (1.3125)\n", - "Epoch 9970: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9970: accuracy appended (60.00%)\n", - "Epoch 9970: model set back to train mode\n", - "Epoch 9970: model parameters saved\n", - "Epoch 9971 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9971: avg_loss appended (1.3125)\n", - "Epoch 9971: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9971: accuracy appended (60.00%)\n", - "Epoch 9971: model set back to train mode\n", - "Epoch 9971: model parameters saved\n", - "Epoch 9972 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9972: avg_loss appended (1.3125)\n", - "Epoch 9972: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9972: accuracy appended (60.00%)\n", - "Epoch 9972: model set back to train mode\n", - "Epoch 9972: model parameters saved\n", - "Epoch 9973 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9973: avg_loss appended (1.3125)\n", - "Epoch 9973: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9973: accuracy appended (60.00%)\n", - "Epoch 9973: model set back to train mode\n", - "Epoch 9973: model parameters saved\n", - "Epoch 9974 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9974: avg_loss appended (1.3125)\n", - "Epoch 9974: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9974: accuracy appended (60.00%)\n", - "Epoch 9974: model set back to train mode\n", - "Epoch 9974: model parameters saved\n", - "Epoch 9975 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9975: avg_loss appended (1.3125)\n", - "Epoch 9975: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9975: accuracy appended (60.00%)\n", - "Epoch 9975: model set back to train mode\n", - "Epoch 9975: model parameters saved\n", - "Epoch 9976 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9976: avg_loss appended (1.3125)\n", - "Epoch 9976: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9976: accuracy appended (60.00%)\n", - "Epoch 9976: model set back to train mode\n", - "Epoch 9976: model parameters saved\n", - "Epoch 9977 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9977: avg_loss appended (1.3125)\n", - "Epoch 9977: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9977: accuracy appended (60.00%)\n", - "Epoch 9977: model set back to train mode\n", - "Epoch 9977: model parameters saved\n", - "Epoch 9978 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9978: avg_loss appended (1.3125)\n", - "Epoch 9978: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9978: accuracy appended (60.00%)\n", - "Epoch 9978: model set back to train mode\n", - "Epoch 9978: model parameters saved\n", - "Epoch 9979 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9979: avg_loss appended (1.3125)\n", - "Epoch 9979: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9979: accuracy appended (60.00%)\n", - "Epoch 9979: model set back to train mode\n", - "Epoch 9979: model parameters saved\n", - "Epoch 9980 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9980: avg_loss appended (1.3125)\n", - "Epoch 9980: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9980: accuracy appended (60.00%)\n", - "Epoch 9980: model set back to train mode\n", - "Epoch 9980: model parameters saved\n", - "Epoch 9981 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9981: avg_loss appended (1.3125)\n", - "Epoch 9981: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9981: accuracy appended (60.00%)\n", - "Epoch 9981: model set back to train mode\n", - "Epoch 9981: model parameters saved\n", - "Epoch 9982 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9982: avg_loss appended (1.3125)\n", - "Epoch 9982: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9982: accuracy appended (60.00%)\n", - "Epoch 9982: model set back to train mode\n", - "Epoch 9982: model parameters saved\n", - "Epoch 9983 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9983: avg_loss appended (1.3125)\n", - "Epoch 9983: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9983: accuracy appended (60.00%)\n", - "Epoch 9983: model set back to train mode\n", - "Epoch 9983: model parameters saved\n", - "Epoch 9984 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9984: avg_loss appended (1.3125)\n", - "Epoch 9984: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9984: accuracy appended (60.00%)\n", - "Epoch 9984: model set back to train mode\n", - "Epoch 9984: model parameters saved\n", - "Epoch 9985 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9985: avg_loss appended (1.3125)\n", - "Epoch 9985: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9985: accuracy appended (60.00%)\n", - "Epoch 9985: model set back to train mode\n", - "Epoch 9985: model parameters saved\n", - "Epoch 9986 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9986: avg_loss appended (1.3125)\n", - "Epoch 9986: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9986: accuracy appended (60.00%)\n", - "Epoch 9986: model set back to train mode\n", - "Epoch 9986: model parameters saved\n", - "Epoch 9987 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9987: avg_loss appended (1.3125)\n", - "Epoch 9987: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9987: accuracy appended (60.00%)\n", - "Epoch 9987: model set back to train mode\n", - "Epoch 9987: model parameters saved\n", - "Epoch 9988 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9988: avg_loss appended (1.3125)\n", - "Epoch 9988: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9988: accuracy appended (60.00%)\n", - "Epoch 9988: model set back to train mode\n", - "Epoch 9988: model parameters saved\n", - "Epoch 9989 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9989: avg_loss appended (1.3125)\n", - "Epoch 9989: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9989: accuracy appended (60.00%)\n", - "Epoch 9989: model set back to train mode\n", - "Epoch 9989: model parameters saved\n", - "Epoch 9990 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9990: avg_loss appended (1.3125)\n", - "Epoch 9990: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9990: accuracy appended (60.00%)\n", - "Epoch 9990: model set back to train mode\n", - "Epoch 9990: model parameters saved\n", - "Epoch 9991 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9991: avg_loss appended (1.3125)\n", - "Epoch 9991: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9991: accuracy appended (60.00%)\n", - "Epoch 9991: model set back to train mode\n", - "Epoch 9991: model parameters saved\n", - "Epoch 9992 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9992: avg_loss appended (1.3125)\n", - "Epoch 9992: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9992: accuracy appended (60.00%)\n", - "Epoch 9992: model set back to train mode\n", - "Epoch 9992: model parameters saved\n", - "Epoch 9993 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9993: avg_loss appended (1.3125)\n", - "Epoch 9993: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9993: accuracy appended (60.00%)\n", - "Epoch 9993: model set back to train mode\n", - "Epoch 9993: model parameters saved\n", - "Epoch 9994 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9994: avg_loss appended (1.3125)\n", - "Epoch 9994: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9994: accuracy appended (60.00%)\n", - "Epoch 9994: model set back to train mode\n", - "Epoch 9994: model parameters saved\n", - "Epoch 9995 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9995: avg_loss appended (1.3125)\n", - "Epoch 9995: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9995: accuracy appended (60.00%)\n", - "Epoch 9995: model set back to train mode\n", - "Epoch 9995: model parameters saved\n", - "Epoch 9996 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9996: avg_loss appended (1.3125)\n", - "Epoch 9996: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9996: accuracy appended (60.00%)\n", - "Epoch 9996: model set back to train mode\n", - "Epoch 9996: model parameters saved\n", - "Epoch 9997 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9997: avg_loss appended (1.3125)\n", - "Epoch 9997: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9997: accuracy appended (60.00%)\n", - "Epoch 9997: model set back to train mode\n", - "Epoch 9997: model parameters saved\n", - "Epoch 9998 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9998: avg_loss appended (1.3125)\n", - "Epoch 9998: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9998: accuracy appended (60.00%)\n", - "Epoch 9998: model set back to train mode\n", - "Epoch 9998: model parameters saved\n", - "Epoch 9999 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 9999: avg_loss appended (1.3125)\n", - "Epoch 9999: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 9999: accuracy appended (60.00%)\n", - "Epoch 9999: model set back to train mode\n", - "Epoch 9999: model parameters saved\n", - "Epoch 10000 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (1.3125)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (1.3125)\n", - "Epoch 10000: avg_loss appended (1.3125)\n", - "Epoch 10000: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=240, total=400)\n", - "Final test accuracy: 60.00%\n", - "Epoch 10000: accuracy appended (60.00%)\n", - "Epoch 10000: model set back to train mode\n", - "Epoch 10000: model parameters saved\n", - "Epoch 10000/10000, Loss: 1.3125, Accuracy: 60.00%\n", - "Training loop finished.\n" - ] - } - ], + "outputs": [], "source": [ "seed = 0 # or any integer you like\n", "random.seed(seed)\n", @@ -320502,8 +389,12 @@ "torch.manual_seed(seed)\n", "torch.cuda.manual_seed_all(seed) # if using GPU\n", "\n", + "# TEST_MODE: Reduce p, hidden_size and epochs for faster automated testing\n", + "import os\n", + "TEST_MODE = os.environ.get(\"NOTEBOOK_TEST_MODE\", \"0\") == \"1\"\n", + "\n", "# Data Generation using the new function\n", - "p = 10 # Modulus\n", + "p = 10 # Keep same value in TEST_MODE to avoid index errors # Modulus (reduced in test mode)\n", "\n", "# Get base vector\n", "# template = generate_template(p, 2, 1.0)\n", @@ -320526,7 +417,7 @@ "# dataloader = DataLoader(dataset, batch_size=32, shuffle=False)\n", "\n", "# Initialize model\n", - "hidden_size = 6 * 3\n", + "hidden_size = 6 if TEST_MODE else 6 * 3 # Reduced in test mode\n", "model = TwoLayerNet(p=p, hidden_size=hidden_size, nonlinearity='square', init_scale=1e-2, output_scale=1e0)\n", "\n", "# Create loss function\n", @@ -320538,8 +429,8 @@ "# optimizer = optim.Adam(model.parameters(), lr=0.001, betas=(0.9, 0.999))\n", "\n", "# Train the model\n", - "epochs = 10000 #1000001\n", - "loss_history, accuracy_history, param_history = train(model, dataloader, loss, optimizer, epochs=epochs, verbose_interval=epochs//100)" + "epochs = 2 if TEST_MODE else 10000\n", + "loss_history, accuracy_history, param_history = train(model, dataloader, loss, optimizer, epochs=epochs, verbose_interval=max(1, epochs//100))" ] }, { @@ -320552,7 +443,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "id": "489e82e1-61c8-43e6-b260-fd96c815dec8", "metadata": {}, "outputs": [], @@ -320736,209 +627,10 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "id": "5b3eddcc-8c3e-45dd-8f57-45585a021f5d", "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - " 0%| | 0/50 [00:00 \u001b[39m\u001b[32m3\u001b[39m results = \u001b[43mtrain_agf\u001b[49m\u001b[43m(\u001b[49m\u001b[43mX_tensor\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mY_tensor\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43minit_sz\u001b[49m\u001b[43m=\u001b[49m\u001b[43mmodel\u001b[49m\u001b[43m.\u001b[49m\u001b[43minit_scale\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43magf_steps\u001b[49m\u001b[43m=\u001b[49m\u001b[32;43m50\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfrom_init\u001b[49m\u001b[43m=\u001b[49m\u001b[43mparam_history\u001b[49m\u001b[43m[\u001b[49m\u001b[32;43m0\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 4\u001b[39m \u001b[43m \u001b[49m\u001b[43mutilmax_lr\u001b[49m\u001b[43m=\u001b[49m\u001b[43mutilmax_lr\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcostmin_lr\u001b[49m\u001b[43m=\u001b[49m\u001b[43mcostmin_lr\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 5\u001b[39m \u001b[43m \u001b[49m\u001b[43mcostmin_maxiter\u001b[49m\u001b[43m=\u001b[49m\u001b[32;43m1e4\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mloss_thresh\u001b[49m\u001b[43m=\u001b[49m\u001b[32;43m1e-4\u001b[39;49m\u001b[43m)\u001b[49m\n", - "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 148\u001b[39m, in \u001b[36mtrain_agf\u001b[39m\u001b[34m(X_train, Y_train, init_sz, agf_steps, from_init, utilmax_lr, costmin_lr, costmin_maxiter, loss_thresh)\u001b[39m\n\u001b[32m 146\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m n.active:\n\u001b[32m 147\u001b[39m \u001b[38;5;28;01mcontinue\u001b[39;00m\n\u001b[32m--> \u001b[39m\u001b[32m148\u001b[39m \u001b[43mn\u001b[49m\u001b[43m.\u001b[49m\u001b[43mutility_step\u001b[49m\u001b[43m(\u001b[49m\u001b[43mX_train\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mresidual\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mutilmax_lr\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 149\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m n.util_acc > n.c_a:\n\u001b[32m 150\u001b[39m n.active = \u001b[38;5;28;01mTrue\u001b[39;00m\n", - "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[9]\u001b[39m\u001b[32m, line 50\u001b[39m, in \u001b[36mModsumSubNetwork.utility_step\u001b[39m\u001b[34m(self, x, residual, learning_rate)\u001b[39m\n\u001b[32m 47\u001b[39m \u001b[38;5;28mself\u001b[39m.util_acc += \u001b[32m3\u001b[39m * learning_rate * util.item()\n\u001b[32m 48\u001b[39m norm_th = \u001b[32m1\u001b[39m/(\u001b[32m1\u001b[39m + \u001b[38;5;28mself\u001b[39m.c_a - \u001b[38;5;28mself\u001b[39m.util_acc)\n\u001b[32m---> \u001b[39m\u001b[32m50\u001b[39m \u001b[43mutil\u001b[49m\u001b[43m.\u001b[49m\u001b[43mbackward\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 51\u001b[39m \u001b[38;5;28;01mwith\u001b[39;00m torch.no_grad():\n\u001b[32m 52\u001b[39m \u001b[38;5;28mself\u001b[39m.w.weight += norm_th * learning_rate * \u001b[38;5;28mself\u001b[39m.w.weight.grad\n", - "\u001b[36mFile \u001b[39m\u001b[32m~/anaconda3/envs/gagf/lib/python3.12/site-packages/torch/_tensor.py:647\u001b[39m, in \u001b[36mTensor.backward\u001b[39m\u001b[34m(self, gradient, retain_graph, create_graph, inputs)\u001b[39m\n\u001b[32m 637\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m has_torch_function_unary(\u001b[38;5;28mself\u001b[39m):\n\u001b[32m 638\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m handle_torch_function(\n\u001b[32m 639\u001b[39m Tensor.backward,\n\u001b[32m 640\u001b[39m (\u001b[38;5;28mself\u001b[39m,),\n\u001b[32m (...)\u001b[39m\u001b[32m 645\u001b[39m inputs=inputs,\n\u001b[32m 646\u001b[39m )\n\u001b[32m--> \u001b[39m\u001b[32m647\u001b[39m \u001b[43mtorch\u001b[49m\u001b[43m.\u001b[49m\u001b[43mautograd\u001b[49m\u001b[43m.\u001b[49m\u001b[43mbackward\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 648\u001b[39m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mgradient\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mretain_graph\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcreate_graph\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43minputs\u001b[49m\u001b[43m=\u001b[49m\u001b[43minputs\u001b[49m\n\u001b[32m 649\u001b[39m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n", - "\u001b[36mFile \u001b[39m\u001b[32m~/anaconda3/envs/gagf/lib/python3.12/site-packages/torch/autograd/__init__.py:347\u001b[39m, in \u001b[36mbackward\u001b[39m\u001b[34m(tensors, grad_tensors, retain_graph, create_graph, grad_variables, inputs)\u001b[39m\n\u001b[32m 344\u001b[39m tensors = \u001b[38;5;28mtuple\u001b[39m(tensors)\n\u001b[32m 346\u001b[39m grad_tensors_ = _tensor_or_tensors_to_tuple(grad_tensors, \u001b[38;5;28mlen\u001b[39m(tensors))\n\u001b[32m--> \u001b[39m\u001b[32m347\u001b[39m grad_tensors_ = \u001b[43m_make_grads\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtensors\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mgrad_tensors_\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mis_grads_batched\u001b[49m\u001b[43m=\u001b[49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m)\u001b[49m\n\u001b[32m 348\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m retain_graph \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[32m 349\u001b[39m retain_graph = create_graph\n", - "\u001b[36mFile \u001b[39m\u001b[32m~/anaconda3/envs/gagf/lib/python3.12/site-packages/torch/autograd/__init__.py:197\u001b[39m, in \u001b[36m_make_grads\u001b[39m\u001b[34m(outputs, grads, is_grads_batched)\u001b[39m\n\u001b[32m 195\u001b[39m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[32m 196\u001b[39m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(out, torch.Tensor)\n\u001b[32m--> \u001b[39m\u001b[32m197\u001b[39m out_numel_is_1 = \u001b[43mout\u001b[49m\u001b[43m.\u001b[49m\u001b[43mnumel\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m == \u001b[32m1\u001b[39m\n\u001b[32m 198\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m out_numel_is_1:\n\u001b[32m 199\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mRuntimeError\u001b[39;00m(\n\u001b[32m 200\u001b[39m \u001b[33m\"\u001b[39m\u001b[33mgrad can be implicitly created only for scalar outputs\u001b[39m\u001b[33m\"\u001b[39m\n\u001b[32m 201\u001b[39m )\n", - "\u001b[31mKeyboardInterrupt\u001b[39m: " - ] - } - ], + "outputs": [], "source": [ "costmin_lr = 0.01\n", "utilmax_lr = 0.1\n", @@ -320957,21 +649,10 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": null, "id": "ff46febe-abb5-459a-bb06-a18a26afb967", "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAk0AAAJOCAYAAACqbjP2AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAPW1JREFUeJzt3Xl4VPXd///XSUIWMoQtIWFNgqIsgrLeEmURtApalbpUwFurXlhstVL7o7R3e8st3/vWFndar6KtS2+pUG8XQOoKQhWRVSOKBATCTsKEAMkkMev5/YE5zWRmkk8yk0wyPB/XlfaczzbvSenw4pwz51i2bdsCAABAg6LCXQAAAEB7QGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwEBPuAs5WeXl5Wr16tbZu3aqtW7fq888/V2lpqdLT07V///5wlwcAAOohNIXJsmXL9POf/zzcZQAAAEOEpjBJSkrS5MmTNWrUKI0aNUoHDx7UL37xi3CXBQAAArC4I3jbsGzZMk2fPp3TcwAAtFFcCA4AAGAgYkNTdXW1tm/frueff1733HOPRo0apdjYWFmWJcuyNHHixGavXVFRoZdffllTp05Venq64uPj1bNnT2VlZemxxx5TQUFB6N4IAABoEyLymqbly5dr5syZKi0tDfnaOTk5mj59urKzs73a8/LylJeXp08//VSPPvqoXnzxRU2dOjXkrw8AAMIjIkPTqVOnWiQwHT58WJMnT9bRo0clSZZlafz48TrnnHPkdru1evVqlZWV6fjx47r++uv17rvvatKkSSGvAwAAtL6IDE21UlNTNXr0aOfnvffe09NPP93s9WbMmOEEpvT0dK1YsUIXXnih019QUKBbbrlFa9asUWVlpW666Sbt3btXXbp0CfatAACAMIvI0HTVVVfpwIED6tevn1f7pk2bmr3m22+/rY8//liSFBsbq7feektDhw71GpOcnKwVK1Zo2LBh2rdvnwoLC7Vw4UI9/PDDzX5dAADQNkTkheBpaWk+gSlYzzzzjLN9++23+wSmWomJiVqwYIGz/+yzz6qqqiqktQAAgNYXkaEp1Dwej9asWePs33HHHQ2Ov+GGG+RyuSRJhYWF+uijj1q0PgAA0PIITQY2bNig8vJySWeOJI0ePbrB8fHx8Ro7dqyz/+GHH7ZofQAAoOURmgzs3LnT2R46dKhiYhq/FGzEiBF+5wMAgPYpIi8ED7Vdu3Y52+np6UZz6l5TlZOTE/KamqumpkYnTpzwauvevbuiosjPAAA0hNBkoG7ISE1NNZqTlpbmbBcWFvr0Hzp0SMOHD3f2KyoqnPbk5GSn/ZJLLtGKFSuaVG9JSUnAPrfbrczMTK+248ePKyUlpUmvAQDA2YbQZMDj8TjbCQkJRnPqjqs7v1Z1dbXPER/J90jQ6dOnm1KqJDkXoQMAgNAhNBn49ttvne3Y2FijOXFxcc52WVmZT39GRoZs2w6+OAAA0CoITQbi4+Od7drTaI2p/badZH50KlT8Hdmq5e/0HAAAaByhyUDd013+jhr5U3dca58uS0xMDNjXEs/kAwDgbMBXpgx0797d2c7Pzzeak5eX52x369Yt5DUBAIDWRWgycP755zvbBw4cMJpz8OBBZ3vgwIEhrwkAALQuQpOBQYMGOdtffvml0bPkPvvsM7/zAQBA+0RoMpCVleV8G66kpERbt25tcHx5ebk2btzo7E+aNKlF6wMAAC2P0GTA5XJp8uTJzv5LL73U4Pg33nhDxcXFks5czzR+/PiWLA8AALQCQpOhn/zkJ872Sy+9pB07dvgdV1paqgcffNDZv/vuu42eVRdKJSUlDf4AAICmIzQZuvrqqzVu3DhJZ06/XXPNNdq+fbvXmBMnTuj666/Xnj17JJ05yjRv3rxWr9XlcgX84R5NAAA0j2VH6G2pp06dqqNHj3q15eXlObcMSExM1Lnnnusz7+2331avXr38rnn48GGNGTNGx44dkyRZlqUJEybonHPOkdvt1urVq537IMXExOjdd9/1Oq3XWizLatJ4nj0HAEDjIjY0ZWRkGN8eoK7c3FxlZGQE7M/JydH06dOVnZ0dcExKSopefPFFXX311U1+/VDggb0AAIQedwRvooEDB2rTpk1atmyZli5dqh07dig/P19dunRR//799YMf/EB33HGHkpOTw1YjdwQHACD0IvZIE/xzu93q0aOHVxtHmgAAaBwXggMAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABjgPk0RqKGbW/LsOQAAmofQFIFcLle4SwAAIOJweg4AAMAAR5oikMfjCdjn79lzAACgcYSmCMSz5wAACD1OzwEAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABggNAEAABjgjuARqKSkpFl9AAAgMEJTBHK5XOEuAQCAiMPpOQAAAAMcaYpAHo8nYJ/b7VZmZmYrVgMAQGQgNEWgxMTEgH2lpaWtWAkAAJGD03MAAAAGCE0AAAAGCE0AAAAGCE0AAAAGCE0AAAAGCE0AAAAGCE0AAAAGCE0AAAAGCE0AAAAGCE0AAAAGeIxKBCopKWlWHwAACIzQFIFcLle4SwAAIOJweg4AAMAAR5oikMfjCdjndruVmZnZitUAABAZCE0RKDExMWBfaWlpK1YCAEDk4PQcAACAAUITAACAAUITAACAAUITAACAAUITAACAAUITAACAAUITAACAAUITAACAAUITAACAAUITAACAAUITAACAAUITAACAAUITAACAgZhwF4DQKykpaVYfAAAIjNAUgVwuV7hLAAAg4nB6DgAAwABHmiKQx+MJ2Od2u5WZmdmK1QAAEBkITREoMTExYF9paWkrVgIAQOTg9BwAAIABQhMAAIABQhMAAIABQhMAAIABQhMAAIABQhMAAIABQhMAAIABQhMAAIABQhMAAIABQhMAAIABQhMAAIABQhMAAIABQhMAAIABQhMAAIABQhMAAIABQhMAAIABQhMAAIABQhMAAICBmHAXgNArKSlpVh8AAAiM0BSBXC5XuEsAACDicHoOAADAAEeaIpDH4wnY53a7lZmZ2YrVAAAQGQhNESgxMTFgX2lpaStWAgBA5OD0HAAAgAFCEwAAgAFCEwAAgAFCEwAAgAFCEwAAgAFCEwAAgAFCEwAAgAFCEwAAgAFCEwAAgAFCEwAAgAFCEwAAgAFCEwAAgAFCEwAAgAFCEwAAgAFCEwAAgAFCEwAAgAFCEwAAgAFCEwAAgAFCEwAAgAFCEwAAgAFCEwAAgAFCEwAAgAFCEwAAgAFCEwAAgIGYcBeA0CspKWlWHwAACIzQFIFcLle4SwAAIOJweg4AAMAAR5oikMfjCdjndruVmZnZitUAABAZCE0RKDExMWBfaWlpK1YCAEDk4PQcAACAAUITAACAAUITAACAAUITAACAAUITAACAAUITAACAAUITAACAAUITAACAAUITAACAAe4IDv1z13F1cdf47bOsxuc3NsaSySJBdX9XR8OjzNYwGNPISmZrBDugdepo7HcautdpfI3GVmm199voGg33R1mWkl1xSukU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YmJiwL7699MCAABmgg5NF110kSzLUnp6ute35wAAACJJ0LccqL2A++KLLw66GAAAgLYq6NCUlpYmiW9sAQCAyBb06bmBAwfq0KFDOnDgQCjqQRgMGzaswWvRRowYoZUrV3q1XXvttc4jcBrywAMP6IEHHnD2i4uLNWjQIKO6VqxYoZEjRzr7q1at0uzZsxud53K5lJOT49U2d+5cLV26tNG5V199tZ599lmvtlGjRvk8JsifhQsXasaMGc7+rl27NHny5EbnSdKWLVvUs2dPZ/+5557TggULGp133nnn+TymaObMmfrnP//Z6NxZs2Zp/vz5Xm19+vQxqnfJkiXOjW0lad26dbr11luN5h4+fNhr/6GHHtKf//znRudNmDBBf/vb37zaJk2apN27dzc698EHH9Tdd9/t7B87dkyjR482qnfNmjU6//zznf1XXnnF6350gaSlpWnr1q1ebT/+8Y/1j3/8o9G506dP16OPPurVNnDgQHk8nkbnLl68WNdcc42zv23bNl133XWNzpOknTt3qlOnTs7+E088oSeeeKLReXxG8BlRXyg/I9qSoEPTzTffrA8++EDr16/XiRMnvB7Ui/ahsf+z9+3b16fN7XbryJEjja5dVFTktW/bttE86cytKuoqKyszmlv3Q7/WyZMnjeYWFhb6tOXl5RnNrX+RfVVVlfF7ra6u9tr3eDxGczt37uzTVlBQYDS39mHZdZnWW15e7rNvOtdfHSZzCwoKfNry8/ON5tYPG9XV1cb1VlVVee2XlpY2+70WFhYazT158qRP29GjR1VcXNzo3LKyMq/9iooK43rrf5m6qKjIaC6fEXxG1BfKz4i2JOjQNHPmTD355JPauXOnfvrTn2rZsmWhqAutKC0trcEjTf5uR5CSkuJzM1N/kpKSvPYtyzKaJ0mxsbFe+wkJCUZz/Z0q7tq1q9Hcbt26+bTVnoJuTP2HTsfExBi/1/q/f5fLZTQ3NTXVpy05Odlorr8PU9N6a58rWXffdK6/OkzmJicn+7Slpqb6/WCvr/6fiejoaON6Y2K8PyY7duxoNNffn5tu3boZze3atatPW69evYyONCUkJHjtx8bGGr/X+vd4S0pKMprLZwSfEfWF8jOiLQnJfZpycnJ01VVX6dChQ7ryyiv11FNP6bzzzgtFfQgxt9utHj16eLVxnyYAABpnHJpqz52OGTNGV111lU97QUGBFi9e7BxCHDZsmEaOHKmUlBSff/kE8uCDDzapeDQdoQkAgOYxDk1RUVGyLEs//elPtWjRIp/2umzbbvKjPCTfc7YIPUITAADNE/Q1TZLvxYOB2hrSnJAFAADQWoIOTfW/jggAABCJCE0AAAAGgr4jOAAAwNkgJNc0oW0pKSlpVh8AAAiM0BSBeA4gAAChx+k5AAAAA02+T1OvXr00YMCA0BdiWVqzZk3I1z0bNXQKzu12KzMz06uN+zQBANC4Jp+eO3r0qI4ePRrSIpp7M0z4l5iYGLCv/gMjAQCAmSaHphA8qg4AAKDdaXJoGjNmjKZMmdIStQAAALRZzQpN3NASAACcbfj2HAAAgAFCEwAAgAFCEwAAgAFCEwAAgAFCEwAAgAFCEwAAgIEmhSZubAkAAM5Wxvdpys3NlSQlJSW1WDEAAABtlXFoSk9Pb8k6AAAA2jSuaQIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBgfMsBtB8lJSXN6gMAAIERmiKQy+UKdwkAAEQcTs8BAAAY4EhTBPJ4PAH73G63MjMzW7EaAAAiA6EpAiUmJgbsKy0tbcVKAACIHJyeAwAAMEBoAgAAMEBoAgAAMEBoAgAAMEBoAgAAMEBoAgAAMEBoAgAAMEBoAgAAMEBoAgAAMEBoAgAAMEBoAgAAMEBoAgAAMEBoAgAAMEBoAgAAMEBoAgAAMEBoAgAAMEBoAgAAMEBoAgAAMEBoAgAAMEBoAgAAMEBoAgAAMEBoAgAAMEBoAgAAMEBoAgAAMBAT7gIQeiUlJc3qAwAAgRGaIpDL5Qp3CQAARBxOzwEAABjgSFME8ng8AfvcbrcyMzNbsRoAACIDoSkCJSYmBuwrLS1txUoAAIgcnJ4DAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwQGgCAAAwEBPuAhB6JSUlzeoDAACBEZoikMvlCncJAABEHE7PAQAAGOBIUwTyeDwB+9xutzIzM1uxGgAAIgOhKQIlJiYG7CstLW3FSgAAiBycngMAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADBAaAIAADAQE+4C0Lpqamp82goKCsJQCQAADevevbuiotrO8R1C01mmsLDQp23w4MFhqAQAgIYdP35cKSkp4S7D0XbiGwAAQBtGaAIAADBAaAIAADBg2bZth7sItJ6qqip98803Xm3dunVrUxfa1SopKVFmZqYkKTc3V4mJiW32NZq7TlPmmYwNdkxr/M5bWnv5c9NW/syYjOPPTNt5jeas057+zNTv69evX5v6+4kLwc8yMTExGjRoULjLMNKxY0dnOyUlpUU+yEL1Gs1dpynzTMYGO6Y1fuctrb38uWkrf2ZMxvFnpu28RnPWaU9/Zur3taXAJHF6DgAAwAihCQAAwAChCQAAwAChCQAAwAChCQAAwAChCQAAwAD3aQIAADDAkSYAAAADhCYAAAADhCYAAAADhCYAAAADhCYAAAADhCYAAAADhCYAABDxDh06pKSkJFmWJcuytH///iavQWgCAAARb9asWSouLg5qDUITAACIaC+++KLee+89TZs2Lah1uCM4AACIWMeOHdPgwYPVpUsXrVq1ShdccIEkKTc3VxkZGU1aK6YF6gMAAGgT7rnnHp06dUp///vflZiYGNRanJ4DAABNUl1dre3bt+v555/XPffco1GjRik2Nta5yHrixInNXruiokIvv/yypk6dqvT0dMXHx6tnz57KysrSY489poKCAuO1li5dqhUrVujWW2/V9773vWbXVIvTcwAAwNjy5cs1c+ZMlZaWBhwzYcIErVu3rslr5+TkaPr06crOzg44pkePHnrxxRc1derUBtdyu90aPHiwJGnnzp1KTk7W/v37lZmZKYnTcwAAoIWdOnWqwcDUXIcPH9bkyZN19OhRSZJlWRo/frzOOeccud1urV69WmVlZTp+/Liuv/56vfvuu5o0aVLA9e69914VFBRoyZIlSk5ODkmNhCYAANBkqampGj16tPPz3nvv6emnn272ejNmzHACU3p6ulasWKELL7zQ6S8oKNAtt9yiNWvWqLKyUjfddJP27t2rLl26+Ky1fPlyvfrqq7rqqqs0c+bMZtdUH6EJAAAYu+qqq3TgwAH169fPq33Tpk3NXvPtt9/Wxx9/LEmKjY3VW2+9paFDh3qNSU5O1ooVKzRs2DDt27dPhYWFWrhwoR5++GGvcSdPntQ999yjxMRELV68uNk1+cOF4AAAwFhaWppPYArWM88842zffvvtPoGpVmJiohYsWODsP/vss6qqqvIaM3fuXOXl5em///u/lZ6eHtI6CU0AACBsPB6P1qxZ4+zfcccdDY6/4YYb5HK5JEmFhYX66KOPvPq3bt0qSXr44YeVlpbm9TN69Ghn3OjRo5WWlqb777/fuFZCEwAACJsNGzaovLxc0pkjSXWDjT/x8fEaO3ass//hhx/6Hed2u5Wfn+/1U/d2BQUFBcrPz9fp06eNayU0AQCAsNm5c6ezPXToUMXENH659YgRI/zOl6Ts7GzZtu33Jzc31xmXm5sr27b10ksvGddKaAIAAGGza9cuZ9v0GqS611Tl5OSEvKZACE0AACBsTpw44WynpqYazUlLS3O2CwsLQ15TIIQmAAAQNh6Px9lOSEgwmlN3XN35LY37NAEAgLD59ttvne3Y2FijOXFxcc52WVmZ8WtlZGQomKfHcaQJAACETXx8vLNdUVFhNKf223aS+dGpUCA0AQCAsKm955JkftSo7ri681saoQkAAIRN9+7dne38/HyjOXl5ec52t27dQl5TIIQmAAAQNueff76zfeDAAaM5Bw8edLYHDhwY8poCITQBAICwGTRokLP95Zdf+jxLzp/PPvvM7/yWRmgCAABhk5WV5XwbrqSkxHl2XCDl5eXauHGjsz9p0qQWra8uQhMAAAgbl8ulyZMnO/uNPdbkjTfeUHFxsaQz1zONHz++JcvzQmgCAABh9ZOf/MTZfumll7Rjxw6/40pLS/Xggw86+3fffbfRs+pChdAEAADC6uqrr9a4ceMknTn9ds0112j79u1eY06cOKHrr79ee/bskXTmKNO8efNatU7LDubWmAAA4KwzdepUHT161KstLy/PuWVAYmKizj33XJ95b7/9tnr16uV3zcOHD2vMmDE6duyYJMmyLE2YMEHnnHOO3G63Vq9erdLSUklSTEyM3n33Xa/Teq2B0AQAAJokIyPD+PYAdeXm5iojIyNgf05OjqZPn67s7OyAY1JSUvTiiy/q6quvbvLrB4tnzwEAgDZh4MCB2rRpk5YtW6alS5dqx44dys/PV5cuXdS/f3/94Ac/0B133KHk5OSw1MeRJgAAAANcCA4AAGCA0AQAAGCA0AQAAGCA0AQAAGCA0AQAAGCA0AQAAGCA0AQAAGCA0AQAAGCA0AQAAGCA0AQAAGCA0AQAAGCA0AQAAGCA0AQAAGCA0AQAbdzEiRNlWZYsy9K6devCXQ5w1iI0AWhxdf/Sb+rPj370o3CXDwCSCE0AAABGYsJdAICzy+jRozVmzBjj8RdffHELVgMA5ghNAFrV1KlT9V//9V/hLgMAmozTcwAAAAYITQAAAAYITQDanYyMDOfbdfv375ck5eTkaM6cORo8eLCSkpKUlJSkYcOG6be//a3y8vKatH5BQYF+97vfacKECerZs6fi4uKUnJys4cOHa+7cufr666+bXHN+fr4WLlyoK664Qv369VNCQoISEhLUr18/TZkyRQsXLnTei4nCwkL9/ve/1+jRo5WcnKyEhAT1799fd911l7766iujNSorK7VkyRL94Ac/UP/+/eVyuRQTE6NOnTrp3HPP1ZVXXqkHH3xQmzdvbvL7BSKSDQAtbMKECbYkW5I9f/78oNdLT0931svNzbWfe+45Oy4uzmmr/9O1a1d7xYoVRms///zzdufOnQOuJcmOjo6258yZY1dVVTW6XnV1tf3QQw/ZHTt2bHBNSXZUVJS9Y8cOnzXq/v7Wrl1rr1+/3u7du3eD9T333HMN1rVr1y570KBBjdZU+/PNN98Y/f6ASMaF4ADatRUrVmjOnDmSpN69e+vSSy+Vy+XS7t279cknn6impkYnT57UjTfeqLfeektXXnllwLUee+wxzZ0719mPi4vThAkT1K9fP508eVJr165VYWGhqqur9dRTT+ngwYN67bXXZFmW3/Wqq6t100036c0333TaYmNjNXbsWGVkZKhDhw7Ky8vTtm3bdOzYMdXU1KiioqLB9/vVV1/p17/+tTwej3r06KFx48ape/fuOnLkiD788EOVlZWpurpas2fP1tChQ/1++7C4uFiXX365Dh06JEmKiorS8OHDNWjQILlcLpWWlurIkSP64osvVFBQ0GA9wFkl3KkNQORrySNNsbGxdlRUlP3444/b1dXVXuN27NhhDxkyxBmblpZmFxYW+l3zk08+saOjo52xU6ZMsfPy8rzGfPvtt/bcuXO9jsA8/vjjAeucN2+e19h7773XLigo8Dt206ZN9m233WZ/9dVXPn11f39xcXF2dHS0/fjjj9uVlZVe4w4ePGhfcMEFztjLLrvM72s99dRTzpjBgwfbOTk5fsfV1NTYmzdvtu+55x774MGDAd8ncLawbNu2WzemATjbTJw4Uf/85z8lNf0+TQsWLFC3bt282jIyMnTgwAFn/3e/+53mzZvnd35eXp6GDh3qHDH5z//8Ty1YsMBn3IQJE/TRRx9JkrKysrR27VrFxsb6XfP+++/XokWLJElJSUk6fPiwOnXq5DVm9+7dGjRokGpqaiRJjzzyiH71q1+ZvGUfdX9/kvTss8/q7rvv9jv2q6++0rBhw2TbtizL0pEjR9SzZ0+vMTfeeKNef/11SdIHH3ygyy+/vFl1AWedMIc2AGeBukdKmvqTm5vrs17dI02ZmZk+R1zqW7RokTO+V69edk1NjVf/119/7fWan332WYPreTweOzk52Rm/ePFinzGzZ892+i+++GKf12yKur+/oUOHNjp+zJgxzviVK1f69F9xxRVOf3Z2drPrAs42fHsOQLs2Y8YMxcQ0fHnmrbfequjoaEnS0aNHtWvXLq/+tWvXOtsXXXSRhg8f3uB6iYmJmj59ut/5td59911n+9577w143VNT3XTTTY2OqVu/v2/k9e3b19levHhxSOoCzgaEJgCtav78+bJt2/gnIyOjwfXGjh3b6Gt27dpV559/vrP/+eefe/XX3c/KyjJ6H5dccomz/dlnn3n15efne4WVyy67zGhNE0OHDm10TPfu3Z3toqIin/6bb77Z2V68eLHGjBmjZ555Rnv27AlNkUCEIjQBaNf69evX5HFut9urr+5+enq60Xp1w1z9b5jl5+c723FxcerVq5fRmiY6d+7c6JgOHTo425WVlT79V155pe677z5nf8uWLbr33ns1YMAApaWl6cYbb9Qf//hHHT58ODRFAxGC0ASgXevYsaPRuMTERGe7uLjYq8/j8fgd19z16u67XC6j9UyF6jTfokWL9MYbb/hclJ+fn6/XX39d9913n/r166cbb7xRBw8eDMlrAu0doQlAu1ZaWmo0rqSkxNmu/023usGm7rjmrld3v24ga2umTZumTZs26cCBA/rrX/+qH//4xxo8eLDTb9u2Xn/9dY0YMUK7d+8OY6VA20BoAtCumR4Fqb2RoyQlJyd79aWkpDR5vbrXLNVfLzU11dkuLy/XsWPHjNYMl379+um2227T4sWLtWPHDh08eFAPPfSQcxTvxIkTeuCBB8JcJRB+hCYA7drGjRsbHXPq1Cnl5OQ4+yNGjPDqr/ttsw0bNhi9bt1x9ddLTU31uubpww8/NFqzrejbt68efPBBPffcc07b+++/r/Ly8jBWBYQfoQlAu7Z06VJVV1c3OOZvf/ubM6Znz55e36STpEmTJjnbn3/+ubZv397geqWlpVq2bJnf+bWmTJnibD/zzDOy2+F9hK+99lpnu7KyUoWFhWGsBgg/QhOAdm3v3r168sknA/bn5+d73QH8rrvu8rmYeuDAgRo/fryzf++99/r91lmt3/72tzp+/LikM3cEnzFjhs+YOXPmKCrqzEfsp59+qt///vdmb6gVmD5Pru4pzaioKK9bGQBnI0ITgHYtNjZW8+bN09NPP+08sqTWzp07dcUVVzgBJzU1VT//+c/9rvPII484N8D8+OOPdcMNNzjzalVUVOjXv/61V0ibP3++32/InXfeefrFL37h7P/617/WfffdF/BozebNm/WjH/1IO3bsMHjXwRk7dqxmzJihd955J+ADgnfv3q3bb7/d2Z88eXLAx8oAZ4uGb6MLACH29ttvGx/pkM7cUmDhwoUB+xcuXKg5c+Zozpw5euyxx3TppZfK5XJp9+7dWr9+vROkYmJi9MILL/g8x65WVlaWfve732nu3LmSpLfeekv9+vXTZZddpr59++rkyZNau3atTpw44cyZNm1awBAmSQ8//LBycnL01ltvSZL++Mc/6rnnntPYsWOVmZmpmJgY5eXladu2bc7F4nPmzDH+3TRXZWWlli5dqqVLlyohIUHDhg1T//79lZSUpJMnT2rfvn3aunWrMz4hIUGPPfZYi9cFtHlheXgLgLNKMM+e69y5s896dZ89l5uba//pT3+yY2NjA67RpUsX+4033jCq9S9/+YudlJTUYE3R0dH2/fffb1dVVTW6XnV1tf0f//EfdlxcXKPvNTo62t65c2eDv7+1a9c2+prz5893xs+fP9+n/4ILLjD+/WdmZtqffPKJya8OiHgcaQLQ7s2ePVvjxo3T4sWLtXr1audO1hkZGfr+97+v++67Tz179jRa66677tJ1112nP//5z3rnnXe0e/duFRYWqlOnTurbt68uv/xy3XnnnV73M2pIVFSU/ud//kezZ8/WSy+9pA8++EB79uxRQUGBYmJi1KNHDw0ZMkSTJ0/WD3/4Q/Xu3bvZvwdT2dnZ2rhxo9auXavNmzdr165dOnr0qEpLS9WxY0elpaXpoosu0rXXXqubb75ZcXFxLV4T0B5Ytt0Ov9IB4KyWkZGhAwcOSJJyc3MbfT4dAIQCF4IDAAAYIDQBAAAYIDQBAAAYIDQBAAAYIDQBAAAYIDQBAAAY4JYDAAAABjjSBAAAYIDQBAAAYIDQBAAAYIDQBAAAYIDQBAAAYIDQBAAAYIDQBAAAYIDQBAAAYIDQBAAAYOD/B/fE8qZ2BiZiAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "fig, ax = plt.subplots(1, 1, figsize=(6, 6))\n", "ax.plot(list(loss_history), lw=4)\n", @@ -321023,4220 +704,10 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": null, "id": "68b25ca9-6339-49dd-9d45-577a51798a25", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n", - "Input x shape: torch.Size([400, 20])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 10])\n" - ] - }, - { - "data": { - "image/png": "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dyIjIwNXXXUV0tLSkJCQgAkTJiAry78D3L7zzjvYsmULAODAgQPiaxs3bgQADBs2DHfeeadfY2oKEyciIqIQodFosGHDBixevBhff/01vv/+e1RUVMBms2HhwoXYs2cPunfv7rd4tmzZgmXLljm99tNPP+Gnn34SnystcWJTHRERUQiJjIzEo48+ii1btqC0tBRWqxWvvfYaampqsGrVKr/GsnTp0kab+pYuXerXeKRg4kRERBTikpKSAACdOnWSORLlY+JEREQUwp577jncfffd6N27NyZOnCh3OIrHPk4U3C6bBQgCoFLJHUnQmJI1BYIgQMVjGrJ6DksBBAD8CAQ8i8WCN998E9dddx1efPHFJkcOJyZOFOzCouWOIOgYdAa5QyCZ6cP51REsdDodTp06JXcYAYVNdUREREQSMXEiIiIikoj1rRTcCn4BbBZAowNSmneLAXKWU5oDi80CnUaHXu17yR0OyaAo/yLsNgFqjQoJaW3kDofIr5g4UXDL+wkwVTr6OjFx8ondhbthtBhh0BmYOIWoguPlMNdYoY/QMnGikMOmOiIiIiKJmDgRERERScTEiYiIiEgiJk5EREREEjFxIiIiCkEzZsyASqXy+MjMzJQ7PMXiVXVEREQhaPjw4SgvL8eqVaug0WiQnZ2Nnj17IjExEdnZ2a2+/draWixcuBC7d+/Gr7/+irKyMsTGxqJz58648847MWPGDOh0ulaPw1tMnIiIiEJQcXExVq9ejQceeAALFy5EYmKiX7dfVVWF//znPxg8eDCuu+46xMfH48KFC/juu+8wd+5cfPLJJ/juu++gViurcYyJExERUYjZtWsXnnzySTz88MN48cUXZYmhXbt2qKiogF6vd3rdarVi/Pjx+OGHH/Ddd9/huuuukyW+higrjSPytch2gCHO8Zd8IjYsFm3D2yI2LFbuUEgm4QYdIqL1CDcorxmFpPnuu+8AAL/73e9ki0GtVrslTQCg1WoxefJkAMCvv/7q77CaxBonCm7Z0+WOIOjc2OVGuUMgmXUfkix3CD5nF+woN5XLHYZksWGxUKuaX/chCAIA4Ntvv8VDDz3kq7B8wm634/vvvwcA9O7dW+Zo3DFxIiKikFduKsfI/46UOwzJNk3dhHbhza9JnzlzJt555x386U9/wuLFizFkyBB06NABvXv3xsyZMxss9+qrr6K8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/feLz3ft2oX58+eja9euSEpKwpQpU7B48WKcOXPGN0ET+RkTJyKiBkRGRkpazmAwiNOVlZVO86qqqjwu19z11X8eFRUlaX1S+arJ77XXXsOKFSvcOuqfP38eX3zxBe6//36kpqZiypQpOHXqlE+2SeQvTJyIiBpQXV0taTmj0ShOu14BVz+5qb9cc9dX/3n9pExpJk+ejB07diA/Px/Lli3D3XffjZ49e4rzBUHAF198gQEDBuDYsWMyRkrkHSZOREQNkFobcmmwRwCIi4tzmhcfH+/1+ur3YXJdX2JiojhtMplw7tw5SeuUS2pqKmbOnIk33ngDOTk5OHXqFJ555hmxNq+0tBQPPfSQzFESScfEiYioAdu3b29ymfLychw5ckR8PmDAAKf59a9C27p1q6Tt1l/OdX2JiYlOfaDWr18vaZ1K0alTJzz11FN46623xNd++OEHmEwmGaMiko6JExFRA5YvXw6bzdboMh999JG4THJystMVdgAwZswYcfqXX37B/v37G11fdXU1PvnkE4/lL7n22mvF6ddffx1CAI5jPHHiRHHaYrGgrKxMxmiIpGPiRETUgBMnTuCf//xng/PPnz/vNFL4vHnz3DpYd+/eHSNGjBCfz58/3+PVaJc88cQTKCoqAuAYOXz69Oluyzz44INQqx2n723btuEf//iHtB3yA6n3n6vfvKlWq52GOSBSMiZOREQN0Ov1WLBgAf71r3+Jtze55PDhwxg/fryY5CQmJuKPf/yjx/U8//zz4iCZmzdvxs033yyWu8RsNuPxxx93StQWLVrk8cq5rKws/OlPfxKfP/7447j//vsbrLXZuXMnZs+ejZycHAl73TJDhgzB9OnT8d133zV4U+Fjx45h1qxZ4vOxY8c2eAsaIqVpfEhcIqIAsnr1ask1HoBjuIEXXnihwfkvvPACHnzwQTz44IN46aWXMGzYMERFReHYsWPYsmWLmExptVq89957bve9u2To0KH4+9//jkceeQQA8M033yA1NRWjR49Gp06dcOHCBWzYsAGlpaVimcmTJzeYiAHA3/72Nxw5cgTffPMNAGDx4sV46623MGTIEGRkZECr1aKwsBA///yz2IH8wQcflHxsmstisWD58uVYvnw5IiIi0LdvX2RmZqJNmza4cOECTp48id27d4vLR0RE4KWXXmr1uIh8RpYbvRAR+UhL7lUXExPjtr7696rLzc0V/vOf/wh6vb7BdcTGxgorVqyQFOs777wjtGnTptGYNBqN8Ic//EGwWq1Nrs9mswkLFy4UwsLCmtxXjUYjHD58uNHjt2HDhia3uWjRInH5RYsWuc3v3bu35OOfkZEh/PTTT1IOHZFisMaJiKgR99xzD4YPH4433ngDa9euFUe8Tk9Pxw033ID7778fycnJktY1b9483HjjjXj77bfx3Xff4dixYygrK0N0dDQ6deqEcePGYe7cuU7jHTVGrVbjueeewz333IOlS5dizZo1+PXXX1FSUgKtVouEhAT06tULY8eOxdSpU9GhQ4dmHwep9u7di+3bt2PDhg3YuXMnjh49ioKCAlRXVyMyMhJJSUnIzs7GxIkTceuttyIsLKzVYyLyJZUgBODlGERErSQ9PR35+fkAgNzc3CbvZ0dEoYWdw4mIiIgkYuJEREREJBETJyIiIiKJmDgRERERScTEiYiIiEgiJk5EREREEnE4AiIiIiKJWONEREREJBETJyIiIiKJmDgRERERScTEiYiIiEgiJk5EREREEjFxIiIiIpKIiRMRERGRREyciIiIiCRi4kREREQk0f8DLAUEY6CShf0AAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "# === SETTINGS ===\n", "p = Y_tensor.shape[1]\n", @@ -325363,48 +834,10 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": null, "id": "e333d1ab-1501-434f-86d2-82c10bb58f11", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Input x shape: torch.Size([1, 20])\n", - "x1 (x @ U.T) shape: torch.Size([1, 18])\n", - "x2 (x @ V.T) shape: torch.Size([1, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([1, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([1, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([1, 10])\n", - "Input x shape: torch.Size([1, 20])\n", - "x1 (x @ U.T) shape: torch.Size([1, 18])\n", - "x2 (x @ V.T) shape: torch.Size([1, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([1, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([1, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([1, 10])\n", - "Input x shape: torch.Size([1, 20])\n", - "x1 (x @ U.T) shape: torch.Size([1, 18])\n", - "x2 (x @ V.T) shape: torch.Size([1, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([1, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([1, 10])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([1, 10])\n" - ] - }, - { - "data": { - "image/png": "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/PllpmVj1apVhISEUKNGDXJycjh79ixmsxkPDw/rWmSVRdfAakztHQjAl/tiee2/3/LAAw8Aua0fsbGxeHp6Ur9+fWrWrElISAir/rE2ZWn5d8vh0KFDadOmDQcPHqRatWps27aNdu3alXpchbV69Wq0Wm2+iuNubm5otVrrpK6C3OhCg9ylh2rUqJHn+fXr19O3b19atWpF586dycjIQK/Pu0jfO++8w86dO/Ns8/Pz4/HHH6dLly783//9H/369bvt6zh48CCffvqpNe527drl+70p6Fq3u17NmjW5fPnyba9fFBWzbVncEbNF8frqE8ReN1C7igv/N7R5hSqiKSoOvV7PDz/8gI+PD59++inTpk2jWrVq+Pr64ubmxvHjxzl69Ch79uwp9eKoq1evxmKxcOLECRITEwEICAigefPmREdHs3r16nI/u7Awxt9Vl/Px6Ww4EceMVSfxdPIkICCAmJgYrl27xs6dO2ndujU1atSw/qEvzffn38V1lVLs3bsXk8mEq6srGzdupFWrVqUWT1HExMTcdIkkV1dXYmJibnrsoUOHrOP1XF1d83wBWbduHZ988gkrV67E39+fTZs2MWPGDHS6vGVudu/ene+8iYmJrFmzBk/P3H/320lISCA5OZmgoCDrtr1791q76G51rdtdLysrq8RniEpLVCX25c4LHLiYhLNex5wHWuLpXMBS4EKUEVqtlvnz5zN8+HAg98MzKSkJHx8fu7ZsHD9+nIsXL5KYmIhOp6N169a0bNkSnU532z9kFZFGo+G1QUE09/ck1WAk3DUY3xo16d69O15eXhiNRsLCwjh58iTOzs6l/v7caDmsWbMmTk5OnD59GpPJhJubG35+fpw7d65U4ykKf39/MjMzC3wuMzMTf3//Ap9TSvHXX3/Rtm1bAFq2bMmZM2eszx8+fJh27dpZW1Jffvll2rdvf9t4UlJSGDhwINOnT2fu3Lm88MILeZ6fMGECK1euzLPt4MGDZGRkcOFC7pjcH374gZycnDuqoXa764WHh5d4QixJVCV15NJ1vt8bCcCMQUEE+nrYNyAh7oBGo0Gv1+Pv749Wq+Xq1avs3r2btLS0O+rCKE5paWk88sgjnDx5EqPRiLu7O127dqV27drWfW71h6wic3LQMfO+YNycHDB51iLFtyVubm506dKF+vXrAxAREcGJEydKvfr3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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "\n", @@ -325477,33 +910,10 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": null, "id": "9de707bf-838e-4384-8150-3d8fe4586fc3", "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/tmp/ipykernel_808458/986218514.py:114: UserWarning: There are no gridspecs with layoutgrids. Possibly did not call parent GridSpec with the \"figure\" keyword\n", - " plt.savefig(\"W-weights.pdf\", bbox_inches='tight')\n", - "/tmp/ipykernel_808458/986218514.py:114: UserWarning: There are no gridspecs with layoutgrids. Possibly did not call parent GridSpec with the \"figure\" keyword\n", - " plt.savefig(\"W-weights.pdf\", bbox_inches='tight')\n", - "/home/nmiolane/anaconda3/envs/gagf/lib/python3.12/site-packages/IPython/core/pylabtools.py:170: UserWarning: There are no gridspecs with layoutgrids. Possibly did not call parent GridSpec with the \"figure\" keyword\n", - " fig.canvas.print_figure(bytes_io, **kw)\n" - ] - }, - { - "data": { - "image/png": "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yZMns3z5cgAsFgsLFixg9OjRZ/VxnIgWZ1mwWCw4HI7jttvt9ur768LKlSu59dZbGTt2LC+++OIpx0uSxIMPPsgff/zB8uXLuf766+sXOFBRUXHC+/Lz82ndunW9j3le4rTCrvmw9Wut863i0sQJWQ86MyhO7cPXXMQen1AtFa7n9doXz95ftcdfnAFJ32m3qETtMXcY2zybKFTkwfJXtMde9XrrjGD008Q9nVFznwlOjdlPa5SQeB38+TTsnK9tl45MBla/ozlNm4uTL20FLPmPVusSNDfviCcb183bHGg9DG76RetYvfZ/WpmErydrwumg+0SToGPYuHEjs2bNYtmyZaSnpxMcHMyAAQN44YUX6NChQ2OHJxAIBAKB4DzjmWeeqaFBvPbaazz66Okv0JeVlbF161YcDgedOnUiNjb2vHXsnQqdTke7du2Ij48nOTmZNWvWEBUZSWLKO8guGyBBv9ug7+1apoq1QKvR32l8rfWng4ODWbRoEZMnT2bRokXYbDbGjx/PwoULGTPm3DfFanECX2RkJFlZWcdtz8nJASAqKuqUx9i2bRsTJ06ka9euzJs3D72+bk9jVW2/oqKiekR8lJM16rBarad1zPOKijxN1Nv2neZCAs1947JqNe2MPpp1tjmLPQGxMOBO6D9Nq9W3fTYkL9EurrOTYOUbmm242xQwNYOUbo9be71X/9/RlZReNwEybPwYXOXaaz94evMRpM4VflHQeaJWr1JRQXUf6QTt1ESx8/35rCzU2tzvPeLW9ovSVtzajGjUsJoVeqNW57HzRFj+Muz7Tav1mPwnjHke4gc2doRNgldffZXVq1czZcoUunfvTm5uLu+//z69evVi3bp1dO3atbFDFAgEAoFAcJ7wwgsv1BD33njjDR5++OHTOpaiKKSkpLB//35at25Np06dzosaew2BwWAgISGB1q1bk7noTZwpf2MwGND5R2lmCJMvDLy7TseyWCzMnz+fyy67jN9++w2Hw8GkSZP47bffznm6bosT+BITE1m2bBllZWU1ctPXr19fff/JSE1N5aKLLiIsLIxFixbVqy5eWprW8EGkytST0kOwfkbNLo4BcdD7Jq0b6LoPteYVzrKWI/ZIknbxHD9QS+HdMVdLVy7L0Zxua/8HiddA71vAK6ixoz098vfB70/C4V3a/yO6wej/aJ1OARImtIy6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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", @@ -325529,7 +939,7 @@ " if col == 2:\n", " ax = fig.add_subplot(gs[row, col], projection='polar')\n", " else:\n", - " ax = fig.add_subplot(gs[row, col]) # ⬅ no sharex anymore\n", + " ax = fig.add_subplot(gs[row, col]) # \u2b05 no sharex anymore\n", " axes[row, col] = ax\n", "\n", "num_freqs = None\n", @@ -325606,7 +1016,7 @@ " ax.plot([phase, phase], [0, norm], color=color, linewidth=2, alpha=alpha)\n", " ax.scatter(phase, norm, color=color, s=40, alpha=alpha)\n", " angles = np.arange(0, 360, 45)\n", - " # ax.set_thetagrids(angles, [f\"{a}°\" if a in [45,135,225,315] else \"\" for a in angles])\n", + " # ax.set_thetagrids(angles, [f\"{a}\u00b0\" if a in [45,135,225,315] else \"\" for a in angles])\n", " ax.set_thetagrids(angles, [\"\" for a in angles])\n", " ax.set_yticklabels([])\n", " ax.spines['polar'].set_linewidth(2)\n", @@ -325651,4 +1061,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} +} \ No newline at end of file diff --git a/notebooks/fourier_power_only.svg b/notebooks/fourier_power_only.svg new file mode 100644 index 0000000..5e7f8f3 --- /dev/null +++ b/notebooks/fourier_power_only.svg @@ -0,0 +1,1054 @@ + + + + + + + + 2026-02-05T16:49:52.817529 + image/svg+xml + + + Matplotlib v3.10.8, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/notebooks/loss-without-lines.svg b/notebooks/loss-without-lines.svg new file mode 100644 index 0000000..fbd1f69 --- /dev/null +++ b/notebooks/loss-without-lines.svg @@ -0,0 +1,778 @@ + + + + + + + + 2026-02-05T16:49:52.258832 + image/svg+xml + + + Matplotlib v3.10.8, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/notebooks/modular_arithmetic.ipynb b/notebooks/modular_arithmetic.ipynb index 8abfa65..f03fcf3 100644 --- a/notebooks/modular_arithmetic.ipynb +++ b/notebooks/modular_arithmetic.ipynb @@ -2,18 +2,15 @@ "cells": [ { "cell_type": "markdown", - "id": "51d11caf-0971-4324-b63b-819b714a9c3c", "metadata": {}, "source": [ "# Modular Addition" - ] + ], + "id": "51d11caf-0971-4324-b63b-819b714a9c3c" }, { "cell_type": "code", - "execution_count": 1, - "id": "80f249f1-6985-4c73-86cd-04e1adac3e8d", "metadata": {}, - "outputs": [], "source": [ "import numpy as np\n", "import random\n", @@ -29,22 +26,22 @@ "from matplotlib.ticker import FormatStrFormatter\n", "from matplotlib.ticker import FuncFormatter\n", "from matplotlib.ticker import MaxNLocator" - ] + ], + "execution_count": null, + "outputs": [], + "id": "80f249f1-6985-4c73-86cd-04e1adac3e8d" }, { "cell_type": "markdown", - "id": "9fd05577-db56-4d0a-bb93-1d0b48cecaf6", "metadata": {}, "source": [ "## Dataset" - ] + ], + "id": "9fd05577-db56-4d0a-bb93-1d0b48cecaf6" }, { "cell_type": "code", - "execution_count": 2, - "id": "f19bd1ad-9e8f-4720-b317-afe13fafae88", "metadata": {}, - "outputs": [], "source": [ "def one_hot(p):\n", " \"\"\"One-hot encode an integer value in R^p.\"\"\"\n", @@ -92,22 +89,22 @@ " idx += 1\n", " \n", " return X, Y" - ] + ], + "execution_count": null, + "outputs": [], + "id": "f19bd1ad-9e8f-4720-b317-afe13fafae88" }, { "cell_type": "markdown", - "id": "7a0ecbbd-ceaf-4bef-af4a-13a22fa70063", "metadata": {}, "source": [ "## Architecture" - ] + ], + "id": "7a0ecbbd-ceaf-4bef-af4a-13a22fa70063" }, { "cell_type": "code", - "execution_count": 3, - "id": "2cf22b7d-49e7-445b-8742-2e75cd1fa55a", "metadata": {}, - "outputs": [], "source": [ "class TwoLayerNet(nn.Module):\n", " def __init__(self, p, hidden_size, nonlinearity='square', init_scale=1.0, output_scale=1.0):\n", @@ -167,22 +164,22 @@ " print(f\"x_out after scaling with output_scale={self.output_scale}: shape {x_out.shape}\")\n", " \n", " return x_out" - ] + ], + "execution_count": null, + "outputs": [], + "id": "2cf22b7d-49e7-445b-8742-2e75cd1fa55a" }, { "cell_type": "markdown", - "id": "f7e7336b-5c6e-48af-a357-2b2c877f6168", "metadata": {}, "source": [ "## Optimization" - ] + ], + "id": "f7e7336b-5c6e-48af-a357-2b2c877f6168" }, { "cell_type": "code", - "execution_count": 4, - "id": "1035f81c-e877-4655-8640-4e4c3d323af8", "metadata": {}, - "outputs": [], "source": [ "def test_accuracy(model, dataloader):\n", " correct = 0\n", @@ -263,22 +260,22 @@ "\n", " print(\"Training loop finished.\")\n", " return loss_history, accuracy_history, param_history # Return loss history for plotting" - ] + ], + "execution_count": null, + "outputs": [], + "id": "1035f81c-e877-4655-8640-4e4c3d323af8" }, { "cell_type": "markdown", - "id": "0e86c4f6-83a6-4465-abf0-7d104432cc9c", "metadata": {}, "source": [ "## Plotting functions" - ] + ], + "id": "0e86c4f6-83a6-4465-abf0-7d104432cc9c" }, { "cell_type": "code", - "execution_count": 5, - "id": "014e2d10-9550-4fd4-adb7-168a27fda1b3", "metadata": {}, - "outputs": [], "source": [ "def style_axes(ax, numyticks=5, numxticks=5, labelsize=24):\n", " # Y-axis ticks\n", @@ -307,14 +304,14 @@ " ax.spines[spine].set_visible(False)\n", " for spine in [\"left\", \"bottom\"]:\n", " ax.spines[spine].set_linewidth(3)" - ] + ], + "execution_count": null, + "outputs": [], + "id": "014e2d10-9550-4fd4-adb7-168a27fda1b3" }, { "cell_type": "code", - "execution_count": 6, - "id": "20989d96-f34f-4be7-a0f9-4b92fb7f235a", "metadata": {}, - "outputs": [], "source": [ "def get_power(points):\n", " p = len(points)\n", @@ -365,4714 +362,22 @@ " ax.plot(xs, curr_val.real, color=color, alpha=alpha)\n", " else:\n", " ax.plot(np.arange(p), points, color=color, alpha=alpha) " - ] + ], + "execution_count": null, + "outputs": [], + "id": "20989d96-f34f-4be7-a0f9-4b92fb7f235a" }, { "cell_type": "markdown", - "id": "e99dae27-f8fe-403a-b70f-0bcaf818cbe7", "metadata": {}, "source": [ "## Gradient Descent Experiment" - ] + ], + "id": "e99dae27-f8fe-403a-b70f-0bcaf818cbe7" }, { "cell_type": "code", - "execution_count": 7, - "id": "bcd15c5a-5745-41ba-b015-48e403160c7e", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Initialized U with shape torch.Size([18, 20])\n", - "Initialized V with shape torch.Size([18, 20])\n", - "Initialized W with shape torch.Size([18, 20])\n", - "Starting training loop...\n", - "Model set to train mode.\n", - "Epoch 1 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 1: avg_loss appended (0.6562)\n", - "Epoch 1: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 1: accuracy appended (6.50%)\n", - "Epoch 1: model set back to train mode\n", - "Epoch 1: model parameters saved\n", - "Epoch 2 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 2: avg_loss appended (0.6562)\n", - "Epoch 2: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 2: accuracy appended (6.50%)\n", - "Epoch 2: model set back to train mode\n", - "Epoch 2: model parameters saved\n", - "Epoch 3 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 3: avg_loss appended (0.6562)\n", - "Epoch 3: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 3: accuracy appended (6.50%)\n", - "Epoch 3: model set back to train mode\n", - "Epoch 3: model parameters saved\n", - "Epoch 4 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 4: avg_loss appended (0.6562)\n", - "Epoch 4: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 4: accuracy appended (6.50%)\n", - "Epoch 4: model set back to train mode\n", - "Epoch 4: model parameters saved\n", - "Epoch 5 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 5: avg_loss appended (0.6562)\n", - "Epoch 5: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 5: accuracy appended (6.50%)\n", - "Epoch 5: model set back to train mode\n", - "Epoch 5: model parameters saved\n", - "Epoch 6 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 6: avg_loss appended (0.6562)\n", - "Epoch 6: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 6: accuracy appended (6.50%)\n", - "Epoch 6: model set back to train mode\n", - "Epoch 6: model parameters saved\n", - "Epoch 7 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 7: avg_loss appended (0.6562)\n", - "Epoch 7: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 7: accuracy appended (6.50%)\n", - "Epoch 7: model set back to train mode\n", - "Epoch 7: model parameters saved\n", - "Epoch 8 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 8: avg_loss appended (0.6562)\n", - "Epoch 8: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 8: accuracy appended (6.50%)\n", - "Epoch 8: model set back to train mode\n", - "Epoch 8: model parameters saved\n", - "Epoch 9 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 9: avg_loss appended (0.6562)\n", - "Epoch 9: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 9: accuracy appended (6.50%)\n", - "Epoch 9: model set back to train mode\n", - "Epoch 9: model parameters saved\n", - "Epoch 10 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 10: avg_loss appended (0.6562)\n", - "Epoch 10: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 10: accuracy appended (6.50%)\n", - "Epoch 10: model set back to train mode\n", - "Epoch 10: model parameters saved\n", - "Epoch 11 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 11: avg_loss appended (0.6562)\n", - "Epoch 11: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 11: accuracy appended (6.50%)\n", - "Epoch 11: model set back to train mode\n", - "Epoch 11: model parameters saved\n", - "Epoch 12 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 12: avg_loss appended (0.6562)\n", - "Epoch 12: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 12: accuracy appended (6.50%)\n", - "Epoch 12: model set back to train mode\n", - "Epoch 12: model parameters saved\n", - "Epoch 13 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 13: avg_loss appended (0.6562)\n", - "Epoch 13: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 13: accuracy appended (6.50%)\n", - "Epoch 13: model set back to train mode\n", - "Epoch 13: model parameters saved\n", - "Epoch 14 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 14: avg_loss appended (0.6562)\n", - "Epoch 14: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 14: accuracy appended (6.50%)\n", - "Epoch 14: model set back to train mode\n", - "Epoch 14: model parameters saved\n", - "Epoch 15 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 15: avg_loss appended (0.6562)\n", - "Epoch 15: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 15: accuracy appended (6.50%)\n", - "Epoch 15: model set back to train mode\n", - "Epoch 15: model parameters saved\n", - "Epoch 16 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 16: avg_loss appended (0.6562)\n", - "Epoch 16: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 16: accuracy appended (6.50%)\n", - "Epoch 16: model set back to train mode\n", - "Epoch 16: model parameters saved\n", - "Epoch 17 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 17: avg_loss appended (0.6562)\n", - "Epoch 17: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 17: accuracy appended (6.50%)\n", - "Epoch 17: model set back to train mode\n", - "Epoch 17: model parameters saved\n", - "Epoch 18 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 18: avg_loss appended (0.6562)\n", - "Epoch 18: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 18: accuracy appended (6.50%)\n", - "Epoch 18: model set back to train mode\n", - "Epoch 18: model parameters saved\n", - "Epoch 19 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 19: avg_loss appended (0.6562)\n", - "Epoch 19: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 19: accuracy appended (6.50%)\n", - "Epoch 19: model set back to train mode\n", - "Epoch 19: model parameters saved\n", - "Epoch 20 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 20: avg_loss appended (0.6562)\n", - "Epoch 20: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 20: accuracy appended (6.50%)\n", - "Epoch 20: model set back to train mode\n", - "Epoch 20: model parameters saved\n", - "Epoch 21 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 21: avg_loss appended (0.6562)\n", - "Epoch 21: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 21: accuracy appended (6.50%)\n", - "Epoch 21: model set back to train mode\n", - "Epoch 21: model parameters saved\n", - "Epoch 22 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 22: avg_loss appended (0.6562)\n", - "Epoch 22: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 22: accuracy appended (6.50%)\n", - "Epoch 22: model set back to train mode\n", - "Epoch 22: model parameters saved\n", - "Epoch 23 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 23: avg_loss appended (0.6562)\n", - "Epoch 23: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 23: accuracy appended (6.50%)\n", - "Epoch 23: model set back to train mode\n", - "Epoch 23: model parameters saved\n", - "Epoch 24 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 24: avg_loss appended (0.6562)\n", - "Epoch 24: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 24: accuracy appended (6.50%)\n", - "Epoch 24: model set back to train mode\n", - "Epoch 24: model parameters saved\n", - "Epoch 25 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 25: avg_loss appended (0.6562)\n", - "Epoch 25: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 25: accuracy appended (6.50%)\n", - "Epoch 25: model set back to train mode\n", - "Epoch 25: model parameters saved\n", - "Epoch 26 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 26: avg_loss appended (0.6562)\n", - "Epoch 26: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 26: accuracy appended (6.50%)\n", - "Epoch 26: model set back to train mode\n", - "Epoch 26: model parameters saved\n", - "Epoch 27 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 27: avg_loss appended (0.6562)\n", - "Epoch 27: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 27: accuracy appended (6.50%)\n", - "Epoch 27: model set back to train mode\n", - "Epoch 27: model parameters saved\n", - "Epoch 28 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 28: avg_loss appended (0.6562)\n", - "Epoch 28: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 28: accuracy appended (6.50%)\n", - "Epoch 28: model set back to train mode\n", - "Epoch 28: model parameters saved\n", - "Epoch 29 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 29: avg_loss appended (0.6562)\n", - "Epoch 29: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 29: accuracy appended (6.50%)\n", - "Epoch 29: model set back to train mode\n", - "Epoch 29: model parameters saved\n", - "Epoch 30 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 30: avg_loss appended (0.6562)\n", - "Epoch 30: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 30: accuracy appended (6.50%)\n", - "Epoch 30: model set back to train mode\n", - "Epoch 30: model parameters saved\n", - "Epoch 31 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 31: avg_loss appended (0.6562)\n", - "Epoch 31: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 31: accuracy appended (6.50%)\n", - "Epoch 31: model set back to train mode\n", - "Epoch 31: model parameters saved\n", - "Epoch 32 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 32: avg_loss appended (0.6562)\n", - "Epoch 32: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 32: accuracy appended (6.50%)\n", - "Epoch 32: model set back to train mode\n", - "Epoch 32: model parameters saved\n", - "Epoch 33 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 33: avg_loss appended (0.6562)\n", - "Epoch 33: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 33: accuracy appended (6.50%)\n", - "Epoch 33: model set back to train mode\n", - "Epoch 33: model parameters saved\n", - "Epoch 34 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 34: avg_loss appended (0.6562)\n", - "Epoch 34: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 34: accuracy appended (6.50%)\n", - "Epoch 34: model set back to train mode\n", - "Epoch 34: model parameters saved\n", - "Epoch 35 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 35: avg_loss appended (0.6562)\n", - "Epoch 35: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 35: accuracy appended (6.50%)\n", - "Epoch 35: model set back to train mode\n", - "Epoch 35: model parameters saved\n", - "Epoch 36 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 36: avg_loss appended (0.6562)\n", - "Epoch 36: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 36: accuracy appended (6.50%)\n", - "Epoch 36: model set back to train mode\n", - "Epoch 36: model parameters saved\n", - "Epoch 37 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 37: avg_loss appended (0.6562)\n", - "Epoch 37: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 37: accuracy appended (6.50%)\n", - "Epoch 37: model set back to train mode\n", - "Epoch 37: model parameters saved\n", - "Epoch 38 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 38: avg_loss appended (0.6562)\n", - "Epoch 38: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 38: accuracy appended (6.50%)\n", - "Epoch 38: model set back to train mode\n", - "Epoch 38: model parameters saved\n", - "Epoch 39 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 39: avg_loss appended (0.6562)\n", - "Epoch 39: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 39: accuracy appended (6.50%)\n", - "Epoch 39: model set back to train mode\n", - "Epoch 39: model parameters saved\n", - "Epoch 40 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 40: avg_loss appended (0.6562)\n", - "Epoch 40: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 40: accuracy appended (6.50%)\n", - "Epoch 40: model set back to train mode\n", - "Epoch 40: model parameters saved\n", - "Epoch 41 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 41: avg_loss appended (0.6562)\n", - "Epoch 41: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 41: accuracy appended (6.50%)\n", - "Epoch 41: model set back to train mode\n", - "Epoch 41: model parameters saved\n", - "Epoch 42 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 42: avg_loss appended (0.6562)\n", - "Epoch 42: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 42: accuracy appended (6.50%)\n", - "Epoch 42: model set back to train mode\n", - "Epoch 42: model parameters saved\n", - "Epoch 43 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 43: avg_loss appended (0.6562)\n", - "Epoch 43: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 43: accuracy appended (6.50%)\n", - "Epoch 43: model set back to train mode\n", - "Epoch 43: model parameters saved\n", - "Epoch 44 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 44: avg_loss appended (0.6562)\n", - "Epoch 44: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 44: accuracy appended (6.50%)\n", - "Epoch 44: model set back to train mode\n", - "Epoch 44: model parameters saved\n", - "Epoch 45 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 45: avg_loss appended (0.6562)\n", - "Epoch 45: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 45: accuracy appended (6.50%)\n", - "Epoch 45: model set back to train mode\n", - "Epoch 45: model parameters saved\n", - "Epoch 46 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 46: avg_loss appended (0.6562)\n", - "Epoch 46: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 46: accuracy appended (6.50%)\n", - "Epoch 46: model set back to train mode\n", - "Epoch 46: model parameters saved\n", - "Epoch 47 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 47: avg_loss appended (0.6562)\n", - "Epoch 47: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 47: accuracy appended (6.50%)\n", - "Epoch 47: model set back to train mode\n", - "Epoch 47: model parameters saved\n", - "Epoch 48 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 48: avg_loss appended (0.6562)\n", - "Epoch 48: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 48: accuracy appended (6.50%)\n", - "Epoch 48: model set back to train mode\n", - "Epoch 48: model parameters saved\n", - "Epoch 49 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 49: avg_loss appended (0.6562)\n", - "Epoch 49: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 49: accuracy appended (6.50%)\n", - "Epoch 49: model set back to train mode\n", - "Epoch 49: model parameters saved\n", - "Epoch 50 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 50: avg_loss appended (0.6562)\n", - "Epoch 50: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 50: accuracy appended (6.50%)\n", - "Epoch 50: model set back to train mode\n", - "Epoch 50: model parameters saved\n", - "Epoch 51 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 51: avg_loss appended (0.6562)\n", - "Epoch 51: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 51: accuracy appended (6.50%)\n", - "Epoch 51: model set back to train mode\n", - "Epoch 51: model parameters saved\n", - "Epoch 52 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 52: avg_loss appended (0.6562)\n", - "Epoch 52: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 52: accuracy appended (6.50%)\n", - "Epoch 52: model set back to train mode\n", - "Epoch 52: model parameters saved\n", - "Epoch 53 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 53: avg_loss appended (0.6562)\n", - "Epoch 53: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 53: accuracy appended (6.50%)\n", - "Epoch 53: model set back to train mode\n", - "Epoch 53: model parameters saved\n", - "Epoch 54 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 54: avg_loss appended (0.6562)\n", - "Epoch 54: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 54: accuracy appended (6.50%)\n", - "Epoch 54: model set back to train mode\n", - "Epoch 54: model parameters saved\n", - "Epoch 55 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 55: avg_loss appended (0.6562)\n", - "Epoch 55: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 55: accuracy appended (6.50%)\n", - "Epoch 55: model set back to train mode\n", - "Epoch 55: model parameters saved\n", - "Epoch 56 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 56: avg_loss appended (0.6562)\n", - "Epoch 56: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 56: accuracy appended (6.50%)\n", - "Epoch 56: model set back to train mode\n", - "Epoch 56: model parameters saved\n", - "Epoch 57 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 57: avg_loss appended (0.6562)\n", - "Epoch 57: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 57: accuracy appended (6.50%)\n", - "Epoch 57: model set back to train mode\n", - "Epoch 57: model parameters saved\n", - "Epoch 58 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 58: avg_loss appended (0.6562)\n", - "Epoch 58: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 58: accuracy appended (6.50%)\n", - "Epoch 58: model set back to train mode\n", - "Epoch 58: model parameters saved\n", - "Epoch 59 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 59: avg_loss appended (0.6562)\n", - "Epoch 59: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 59: accuracy appended (6.50%)\n", - "Epoch 59: model set back to train mode\n", - "Epoch 59: model parameters saved\n", - "Epoch 60 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 60: avg_loss appended (0.6562)\n", - "Epoch 60: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 60: accuracy appended (6.50%)\n", - "Epoch 60: model set back to train mode\n", - "Epoch 60: model parameters saved\n", - "Epoch 61 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 61: avg_loss appended (0.6562)\n", - "Epoch 61: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 61: accuracy appended (6.50%)\n", - "Epoch 61: model set back to train mode\n", - "Epoch 61: model parameters saved\n", - "Epoch 62 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 62: avg_loss appended (0.6562)\n", - "Epoch 62: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 62: accuracy appended (6.50%)\n", - "Epoch 62: model set back to train mode\n", - "Epoch 62: model parameters saved\n", - "Epoch 63 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 63: avg_loss appended (0.6562)\n", - "Epoch 63: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 63: accuracy appended (6.50%)\n", - "Epoch 63: model set back to train mode\n", - "Epoch 63: model parameters saved\n", - "Epoch 64 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 64: avg_loss appended (0.6562)\n", - "Epoch 64: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 64: accuracy appended (6.50%)\n", - "Epoch 64: model set back to train mode\n", - "Epoch 64: model parameters saved\n", - "Epoch 65 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 65: avg_loss appended (0.6562)\n", - "Epoch 65: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 65: accuracy appended (6.50%)\n", - "Epoch 65: model set back to train mode\n", - "Epoch 65: model parameters saved\n", - "Epoch 66 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 66: avg_loss appended (0.6562)\n", - "Epoch 66: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 66: accuracy appended (6.50%)\n", - "Epoch 66: model set back to train mode\n", - "Epoch 66: model parameters saved\n", - "Epoch 67 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 67: avg_loss appended (0.6562)\n", - "Epoch 67: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=26, total=400)\n", - "Final test accuracy: 6.50%\n", - "Epoch 67: accuracy appended (6.50%)\n", - "Epoch 67: model set back to train mode\n", - "Epoch 67: model parameters saved\n", - "Epoch 68 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 68: avg_loss appended (0.6562)\n", - "Epoch 68: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=28, total=400)\n", - "Final test accuracy: 7.00%\n", - "Epoch 68: accuracy appended (7.00%)\n", - "Epoch 68: model set back to train mode\n", - "Epoch 68: model parameters saved\n", - "Epoch 69 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 69: avg_loss appended (0.6562)\n", - "Epoch 69: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=28, total=400)\n", - "Final test accuracy: 7.00%\n", - "Epoch 69: accuracy appended (7.00%)\n", - "Epoch 69: model set back to train mode\n", - "Epoch 69: model parameters saved\n", - "Epoch 70 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 70: avg_loss appended (0.6562)\n", - "Epoch 70: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=28, total=400)\n", - "Final test accuracy: 7.00%\n", - "Epoch 70: accuracy appended (7.00%)\n", - "Epoch 70: model set back to train mode\n", - "Epoch 70: model parameters saved\n", - "Epoch 71 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 71: avg_loss appended (0.6562)\n", - "Epoch 71: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=28, total=400)\n", - "Final test accuracy: 7.00%\n", - "Epoch 71: accuracy appended (7.00%)\n", - "Epoch 71: model set back to train mode\n", - "Epoch 71: model parameters saved\n", - "Epoch 72 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 72: avg_loss appended (0.6562)\n", - "Epoch 72: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=28, total=400)\n", - "Final test accuracy: 7.00%\n", - "Epoch 72: accuracy appended (7.00%)\n", - "Epoch 72: model set back to train mode\n", - "Epoch 72: model parameters saved\n", - "Epoch 73 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 73: avg_loss appended (0.6562)\n", - "Epoch 73: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=28, total=400)\n", - "Final test accuracy: 7.00%\n", - "Epoch 73: accuracy appended (7.00%)\n", - "Epoch 73: model set back to train mode\n", - "Epoch 73: model parameters saved\n", - "Epoch 74 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 74: avg_loss appended (0.6562)\n", - "Epoch 74: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=28, total=400)\n", - "Final test accuracy: 7.00%\n", - "Epoch 74: accuracy appended (7.00%)\n", - "Epoch 74: model set back to train mode\n", - "Epoch 74: model parameters saved\n", - "Epoch 75 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 75: avg_loss appended (0.6562)\n", - "Epoch 75: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=28, total=400)\n", - "Final test accuracy: 7.00%\n", - "Epoch 75: accuracy appended (7.00%)\n", - "Epoch 75: model set back to train mode\n", - "Epoch 75: model parameters saved\n", - "Epoch 76 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 76: avg_loss appended (0.6562)\n", - "Epoch 76: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=28, total=400)\n", - "Final test accuracy: 7.00%\n", - "Epoch 76: accuracy appended (7.00%)\n", - "Epoch 76: model set back to train mode\n", - "Epoch 76: model parameters saved\n", - "Epoch 77 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 77: avg_loss appended (0.6562)\n", - "Epoch 77: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=28, total=400)\n", - "Final test accuracy: 7.00%\n", - "Epoch 77: accuracy appended (7.00%)\n", - "Epoch 77: model set back to train mode\n", - "Epoch 77: model parameters saved\n", - "Epoch 78 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 78: avg_loss appended (0.6562)\n", - "Epoch 78: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=28, total=400)\n", - "Final test accuracy: 7.00%\n", - "Epoch 78: accuracy appended (7.00%)\n", - "Epoch 78: model set back to train mode\n", - "Epoch 78: model parameters saved\n", - "Epoch 79 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 79: avg_loss appended (0.6562)\n", - "Epoch 79: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=28, total=400)\n", - "Final test accuracy: 7.00%\n", - "Epoch 79: accuracy appended (7.00%)\n", - "Epoch 79: model set back to train mode\n", - "Epoch 79: model parameters saved\n", - "Epoch 80 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 80: avg_loss appended (0.6562)\n", - "Epoch 80: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=28, total=400)\n", - "Final test accuracy: 7.00%\n", - "Epoch 80: accuracy appended (7.00%)\n", - "Epoch 80: model set back to train mode\n", - "Epoch 80: model parameters saved\n", - "Epoch 81 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 81: avg_loss appended (0.6562)\n", - "Epoch 81: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=28, total=400)\n", - "Final test accuracy: 7.00%\n", - "Epoch 81: accuracy appended (7.00%)\n", - "Epoch 81: model set back to train mode\n", - "Epoch 81: model parameters saved\n", - "Epoch 82 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 82: avg_loss appended (0.6562)\n", - "Epoch 82: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=28, total=400)\n", - "Final test accuracy: 7.00%\n", - "Epoch 82: accuracy appended (7.00%)\n", - "Epoch 82: model set back to train mode\n", - "Epoch 82: model parameters saved\n", - "Epoch 83 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 83: avg_loss appended (0.6562)\n", - "Epoch 83: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=28, total=400)\n", - "Final test accuracy: 7.00%\n", - "Epoch 83: accuracy appended (7.00%)\n", - "Epoch 83: model set back to train mode\n", - "Epoch 83: model parameters saved\n", - "Epoch 84 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 84: avg_loss appended (0.6562)\n", - "Epoch 84: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=28, total=400)\n", - "Final test accuracy: 7.00%\n", - "Epoch 84: accuracy appended (7.00%)\n", - "Epoch 84: model set back to train mode\n", - "Epoch 84: model parameters saved\n", - "Epoch 85 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 85: avg_loss appended (0.6562)\n", - "Epoch 85: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=28, total=400)\n", - "Final test accuracy: 7.00%\n", - "Epoch 85: accuracy appended (7.00%)\n", - "Epoch 85: model set back to train mode\n", - "Epoch 85: model parameters saved\n", - "Epoch 86 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 86: avg_loss appended (0.6562)\n", - "Epoch 86: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=30, total=400)\n", - "Final test accuracy: 7.50%\n", - "Epoch 86: accuracy appended (7.50%)\n", - "Epoch 86: model set back to train mode\n", - "Epoch 86: model parameters saved\n", - "Epoch 87 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 87: avg_loss appended (0.6562)\n", - "Epoch 87: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=30, total=400)\n", - "Final test accuracy: 7.50%\n", - "Epoch 87: accuracy appended (7.50%)\n", - "Epoch 87: model set back to train mode\n", - "Epoch 87: model parameters saved\n", - "Epoch 88 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 88: avg_loss appended (0.6562)\n", - "Epoch 88: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=30, total=400)\n", - "Final test accuracy: 7.50%\n", - "Epoch 88: accuracy appended (7.50%)\n", - "Epoch 88: model set back to train mode\n", - "Epoch 88: model parameters saved\n", - "Epoch 89 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 89: avg_loss appended (0.6562)\n", - "Epoch 89: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=30, total=400)\n", - "Final test accuracy: 7.50%\n", - "Epoch 89: accuracy appended (7.50%)\n", - "Epoch 89: model set back to train mode\n", - "Epoch 89: model parameters saved\n", - "Epoch 90 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 90: avg_loss appended (0.6562)\n", - "Epoch 90: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=30, total=400)\n", - "Final test accuracy: 7.50%\n", - "Epoch 90: accuracy appended (7.50%)\n", - "Epoch 90: model set back to train mode\n", - "Epoch 90: model parameters saved\n", - "Epoch 91 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 91: avg_loss appended (0.6562)\n", - "Epoch 91: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=30, total=400)\n", - "Final test accuracy: 7.50%\n", - "Epoch 91: accuracy appended (7.50%)\n", - "Epoch 91: model set back to train mode\n", - "Epoch 91: model parameters saved\n", - "Epoch 92 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 92: avg_loss appended (0.6562)\n", - "Epoch 92: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=30, total=400)\n", - "Final test accuracy: 7.50%\n", - "Epoch 92: accuracy appended (7.50%)\n", - "Epoch 92: model set back to train mode\n", - "Epoch 92: model parameters saved\n", - "Epoch 93 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 93: avg_loss appended (0.6562)\n", - "Epoch 93: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=30, total=400)\n", - "Final test accuracy: 7.50%\n", - "Epoch 93: accuracy appended (7.50%)\n", - "Epoch 93: model set back to train mode\n", - "Epoch 93: model parameters saved\n", - "Epoch 94 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 94: avg_loss appended (0.6562)\n", - "Epoch 94: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=30, total=400)\n", - "Final test accuracy: 7.50%\n", - "Epoch 94: accuracy appended (7.50%)\n", - "Epoch 94: model set back to train mode\n", - "Epoch 94: model parameters saved\n", - "Epoch 95 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 95: avg_loss appended (0.6562)\n", - "Epoch 95: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=30, total=400)\n", - "Final test accuracy: 7.50%\n", - "Epoch 95: accuracy appended (7.50%)\n", - "Epoch 95: model set back to train mode\n", - "Epoch 95: model parameters saved\n", - "Epoch 96 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 96: avg_loss appended (0.6562)\n", - "Epoch 96: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=30, total=400)\n", - "Final test accuracy: 7.50%\n", - "Epoch 96: accuracy appended (7.50%)\n", - "Epoch 96: model set back to train mode\n", - "Epoch 96: model parameters saved\n", - "Epoch 97 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 97: avg_loss appended (0.6562)\n", - "Epoch 97: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=30, total=400)\n", - "Final test accuracy: 7.50%\n", - "Epoch 97: accuracy appended (7.50%)\n", - "Epoch 97: model set back to train mode\n", - "Epoch 97: model parameters saved\n", - "Epoch 98 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 98: avg_loss appended (0.6562)\n", - "Epoch 98: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=30, total=400)\n", - "Final test accuracy: 7.50%\n", - "Epoch 98: accuracy appended (7.50%)\n", - "Epoch 98: model set back to train mode\n", - "Epoch 98: model parameters saved\n", - "Epoch 99 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 99: avg_loss appended (0.6562)\n", - "Epoch 99: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=30, total=400)\n", - "Final test accuracy: 7.50%\n", - "Epoch 99: accuracy appended (7.50%)\n", - "Epoch 99: model set back to train mode\n", - "Epoch 99: model parameters saved\n", - "Epoch 100 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 100: avg_loss appended (0.6562)\n", - "Epoch 100: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=30, total=400)\n", - "Final test accuracy: 7.50%\n", - "Epoch 100: accuracy appended (7.50%)\n", - "Epoch 100: model set back to train mode\n", - "Epoch 100: model parameters saved\n", - "Epoch 101 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 101: avg_loss appended (0.6562)\n", - "Epoch 101: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=30, total=400)\n", - "Final test accuracy: 7.50%\n", - "Epoch 101: accuracy appended (7.50%)\n", - "Epoch 101: model set back to train mode\n", - "Epoch 101: model parameters saved\n", - "Epoch 102 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 102: avg_loss appended (0.6562)\n", - "Epoch 102: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=30, total=400)\n", - "Final test accuracy: 7.50%\n", - "Epoch 102: accuracy appended (7.50%)\n", - "Epoch 102: model set back to train mode\n", - "Epoch 102: model parameters saved\n", - "Epoch 103 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 103: avg_loss appended (0.6562)\n", - "Epoch 103: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=30, total=400)\n", - "Final test accuracy: 7.50%\n", - "Epoch 103: accuracy appended (7.50%)\n", - "Epoch 103: model set back to train mode\n", - "Epoch 103: model parameters saved\n", - "Epoch 104 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 104: avg_loss appended (0.6562)\n", - "Epoch 104: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=30, total=400)\n", - "Final test accuracy: 7.50%\n", - "Epoch 104: accuracy appended (7.50%)\n", - "Epoch 104: model set back to train mode\n", - "Epoch 104: model parameters saved\n", - "Epoch 105 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 105: avg_loss appended (0.6562)\n", - "Epoch 105: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=30, total=400)\n", - "Final test accuracy: 7.50%\n", - "Epoch 105: accuracy appended (7.50%)\n", - "Epoch 105: model set back to train mode\n", - "Epoch 105: model parameters saved\n", - "Epoch 106 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 106: avg_loss appended (0.6562)\n", - "Epoch 106: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=30, total=400)\n", - "Final test accuracy: 7.50%\n", - "Epoch 106: accuracy appended (7.50%)\n", - "Epoch 106: model set back to train mode\n", - "Epoch 106: model parameters saved\n", - "Epoch 107 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 107: avg_loss appended (0.6562)\n", - "Epoch 107: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=30, total=400)\n", - "Final test accuracy: 7.50%\n", - "Epoch 107: accuracy appended (7.50%)\n", - "Epoch 107: model set back to train mode\n", - "Epoch 107: model parameters saved\n", - "Epoch 108 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 108: avg_loss appended (0.6562)\n", - "Epoch 108: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=30, total=400)\n", - "Final test accuracy: 7.50%\n", - "Epoch 108: accuracy appended (7.50%)\n", - "Epoch 108: model set back to train mode\n", - "Epoch 108: model parameters saved\n", - "Epoch 109 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 109: avg_loss appended (0.6562)\n", - "Epoch 109: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=30, total=400)\n", - "Final test accuracy: 7.50%\n", - "Epoch 109: accuracy appended (7.50%)\n", - "Epoch 109: model set back to train mode\n", - "Epoch 109: model parameters saved\n", - "Epoch 110 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 110: avg_loss appended (0.6562)\n", - "Epoch 110: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=30, total=400)\n", - "Final test accuracy: 7.50%\n", - "Epoch 110: accuracy appended (7.50%)\n", - "Epoch 110: model set back to train mode\n", - "Epoch 110: model parameters saved\n", - "Epoch 111 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 111: avg_loss appended (0.6562)\n", - "Epoch 111: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=30, total=400)\n", - "Final test accuracy: 7.50%\n", - "Epoch 111: accuracy appended (7.50%)\n", - "Epoch 111: model set back to train mode\n", - "Epoch 111: model parameters saved\n", - "Epoch 112 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 112: avg_loss appended (0.6562)\n", - "Epoch 112: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=30, total=400)\n", - "Final test accuracy: 7.50%\n", - "Epoch 112: accuracy appended (7.50%)\n", - "Epoch 112: model set back to train mode\n", - "Epoch 112: model parameters saved\n", - "Epoch 113 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 113: avg_loss appended (0.6562)\n", - "Epoch 113: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=30, total=400)\n", - "Final test accuracy: 7.50%\n", - "Epoch 113: accuracy appended (7.50%)\n", - "Epoch 113: model set back to train mode\n", - "Epoch 113: model parameters saved\n", - "Epoch 114 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 114: avg_loss appended (0.6562)\n", - "Epoch 114: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=30, total=400)\n", - "Final test accuracy: 7.50%\n", - "Epoch 114: accuracy appended (7.50%)\n", - "Epoch 114: model set back to train mode\n", - "Epoch 114: model parameters saved\n", - "Epoch 115 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 115: avg_loss appended (0.6562)\n", - "Epoch 115: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=30, total=400)\n", - "Final test accuracy: 7.50%\n", - "Epoch 115: accuracy appended (7.50%)\n", - "Epoch 115: model set back to train mode\n", - "Epoch 115: model parameters saved\n", - "Epoch 116 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 116: avg_loss appended (0.6562)\n", - "Epoch 116: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=30, total=400)\n", - "Final test accuracy: 7.50%\n", - "Epoch 116: accuracy appended (7.50%)\n", - "Epoch 116: model set back to train mode\n", - "Epoch 116: model parameters saved\n", - "Epoch 117 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 117: avg_loss appended (0.6562)\n", - "Epoch 117: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=30, total=400)\n", - "Final test accuracy: 7.50%\n", - "Epoch 117: accuracy appended (7.50%)\n", - "Epoch 117: model set back to train mode\n", - "Epoch 117: model parameters saved\n", - "Epoch 118 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 118: avg_loss appended (0.6562)\n", - "Epoch 118: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=30, total=400)\n", - "Final test accuracy: 7.50%\n", - "Epoch 118: accuracy appended (7.50%)\n", - "Epoch 118: model set back to train mode\n", - "Epoch 118: model parameters saved\n", - "Epoch 119 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 119: avg_loss appended (0.6562)\n", - "Epoch 119: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=30, total=400)\n", - "Final test accuracy: 7.50%\n", - "Epoch 119: accuracy appended (7.50%)\n", - "Epoch 119: model set back to train mode\n", - "Epoch 119: model parameters saved\n", - "Epoch 120 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 120: avg_loss appended (0.6562)\n", - "Epoch 120: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=30, total=400)\n", - "Final test accuracy: 7.50%\n", - "Epoch 120: accuracy appended (7.50%)\n", - "Epoch 120: model set back to train mode\n", - "Epoch 120: model parameters saved\n", - "Epoch 121 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 121: avg_loss appended (0.6562)\n", - "Epoch 121: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=30, total=400)\n", - "Final test accuracy: 7.50%\n", - "Epoch 121: accuracy appended (7.50%)\n", - "Epoch 121: model set back to train mode\n", - "Epoch 121: model parameters saved\n", - "Epoch 122 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 122: avg_loss appended (0.6562)\n", - "Epoch 122: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=30, total=400)\n", - "Final test accuracy: 7.50%\n", - "Epoch 122: accuracy appended (7.50%)\n", - "Epoch 122: model set back to train mode\n", - "Epoch 122: model parameters saved\n", - "Epoch 123 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 123: avg_loss appended (0.6562)\n", - "Epoch 123: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=30, total=400)\n", - "Final test accuracy: 7.50%\n", - "Epoch 123: accuracy appended (7.50%)\n", - "Epoch 123: model set back to train mode\n", - "Epoch 123: model parameters saved\n", - "Epoch 124 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 124: avg_loss appended (0.6562)\n", - "Epoch 124: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=30, total=400)\n", - "Final test accuracy: 7.50%\n", - "Epoch 124: accuracy appended (7.50%)\n", - "Epoch 124: model set back to train mode\n", - "Epoch 124: model parameters saved\n", - "Epoch 125 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 125: avg_loss appended (0.6562)\n", - "Epoch 125: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=30, total=400)\n", - "Final test accuracy: 7.50%\n", - "Epoch 125: accuracy appended (7.50%)\n", - "Epoch 125: model set back to train mode\n", - "Epoch 125: model parameters saved\n", - "Epoch 126 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 126: avg_loss appended (0.6562)\n", - "Epoch 126: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=30, total=400)\n", - "Final test accuracy: 7.50%\n", - "Epoch 126: accuracy appended (7.50%)\n", - "Epoch 126: model set back to train mode\n", - "Epoch 126: model parameters saved\n", - "Epoch 127 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 127: avg_loss appended (0.6562)\n", - "Epoch 127: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=30, total=400)\n", - "Final test accuracy: 7.50%\n", - "Epoch 127: accuracy appended (7.50%)\n", - "Epoch 127: model set back to train mode\n", - "Epoch 127: model parameters saved\n", - "Epoch 128 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 128: avg_loss appended (0.6562)\n", - "Epoch 128: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=30, total=400)\n", - "Final test accuracy: 7.50%\n", - "Epoch 128: accuracy appended (7.50%)\n", - "Epoch 128: model set back to train mode\n", - "Epoch 128: model parameters saved\n", - "Epoch 129 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 129: avg_loss appended (0.6562)\n", - "Epoch 129: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=30, total=400)\n", - "Final test accuracy: 7.50%\n", - "Epoch 129: accuracy appended (7.50%)\n", - "Epoch 129: model set back to train mode\n", - "Epoch 129: model parameters saved\n", - "Epoch 130 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 130: avg_loss appended (0.6562)\n", - "Epoch 130: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=30, total=400)\n", - "Final test accuracy: 7.50%\n", - "Epoch 130: accuracy appended (7.50%)\n", - "Epoch 130: model set back to train mode\n", - "Epoch 130: model parameters saved\n", - "Epoch 131 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 131: avg_loss appended (0.6562)\n", - "Epoch 131: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=32, total=400)\n", - "Final test accuracy: 8.00%\n", - "Epoch 131: accuracy appended (8.00%)\n", - "Epoch 131: model set back to train mode\n", - "Epoch 131: model parameters saved\n", - "Epoch 132 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 132: avg_loss appended (0.6562)\n", - "Epoch 132: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=32, total=400)\n", - "Final test accuracy: 8.00%\n", - "Epoch 132: accuracy appended (8.00%)\n", - "Epoch 132: model set back to train mode\n", - "Epoch 132: model parameters saved\n", - "Epoch 133 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 133: avg_loss appended (0.6562)\n", - "Epoch 133: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=32, total=400)\n", - "Final test accuracy: 8.00%\n", - "Epoch 133: accuracy appended (8.00%)\n", - "Epoch 133: model set back to train mode\n", - "Epoch 133: model parameters saved\n", - "Epoch 134 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 134: avg_loss appended (0.6562)\n", - "Epoch 134: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=32, total=400)\n", - "Final test accuracy: 8.00%\n", - "Epoch 134: accuracy appended (8.00%)\n", - "Epoch 134: model set back to train mode\n", - "Epoch 134: model parameters saved\n", - "Epoch 135 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 135: avg_loss appended (0.6562)\n", - "Epoch 135: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=32, total=400)\n", - "Final test accuracy: 8.00%\n", - "Epoch 135: accuracy appended (8.00%)\n", - "Epoch 135: model set back to train mode\n", - "Epoch 135: model parameters saved\n", - "Epoch 136 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 136: avg_loss appended (0.6562)\n", - "Epoch 136: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=32, total=400)\n", - "Final test accuracy: 8.00%\n", - "Epoch 136: accuracy appended (8.00%)\n", - "Epoch 136: model set back to train mode\n", - "Epoch 136: model parameters saved\n", - "Epoch 137 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 137: avg_loss appended (0.6562)\n", - "Epoch 137: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=32, total=400)\n", - "Final test accuracy: 8.00%\n", - "Epoch 137: accuracy appended (8.00%)\n", - "Epoch 137: model set back to train mode\n", - "Epoch 137: model parameters saved\n", - "Epoch 138 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 138: avg_loss appended (0.6562)\n", - "Epoch 138: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=32, total=400)\n", - "Final test accuracy: 8.00%\n", - "Epoch 138: accuracy appended (8.00%)\n", - "Epoch 138: model set back to train mode\n", - "Epoch 138: model parameters saved\n", - "Epoch 139 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 139: avg_loss appended (0.6562)\n", - "Epoch 139: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=32, total=400)\n", - "Final test accuracy: 8.00%\n", - "Epoch 139: accuracy appended (8.00%)\n", - "Epoch 139: model set back to train mode\n", - "Epoch 139: model parameters saved\n", - "Epoch 140 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 140: avg_loss appended (0.6562)\n", - "Epoch 140: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=32, total=400)\n", - "Final test accuracy: 8.00%\n", - "Epoch 140: accuracy appended (8.00%)\n", - "Epoch 140: model set back to train mode\n", - "Epoch 140: model parameters saved\n", - "Epoch 141 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 141: avg_loss appended (0.6562)\n", - "Epoch 141: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=32, total=400)\n", - "Final test accuracy: 8.00%\n", - "Epoch 141: accuracy appended (8.00%)\n", - "Epoch 141: model set back to train mode\n", - "Epoch 141: model parameters saved\n", - "Epoch 142 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 142: avg_loss appended (0.6562)\n", - "Epoch 142: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=32, total=400)\n", - "Final test accuracy: 8.00%\n", - "Epoch 142: accuracy appended (8.00%)\n", - "Epoch 142: model set back to train mode\n", - "Epoch 142: model parameters saved\n", - "Epoch 143 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 143: avg_loss appended (0.6562)\n", - "Epoch 143: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=32, total=400)\n", - "Final test accuracy: 8.00%\n", - "Epoch 143: accuracy appended (8.00%)\n", - "Epoch 143: model set back to train mode\n", - "Epoch 143: model parameters saved\n", - "Epoch 144 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 144: avg_loss appended (0.6562)\n", - "Epoch 144: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=32, total=400)\n", - "Final test accuracy: 8.00%\n", - "Epoch 144: accuracy appended (8.00%)\n", - "Epoch 144: model set back to train mode\n", - "Epoch 144: model parameters saved\n", - "Epoch 145 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 145: avg_loss appended (0.6562)\n", - "Epoch 145: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n", - "Batch 1: accuracy updated (correct=32, total=400)\n", - "Final test accuracy: 8.00%\n", - "Epoch 145: accuracy appended (8.00%)\n", - "Epoch 145: model set back to train mode\n", - "Epoch 145: model parameters saved\n", - "Epoch 146 started.\n", - " Batch 1: inputs reshaped\n", - " Batch 1: optimizer gradients zeroed\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - " Batch 1: model forward pass done\n", - " Batch 1: loss computed (0.6562)\n", - " Batch 1: backward pass done\n", - " Batch 1: optimizer step done\n", - " Batch 1: running_loss updated (0.6562)\n", - "Epoch 146: avg_loss appended (0.6562)\n", - "Epoch 146: model set to eval mode for accuracy check\n", - "Starting test_accuracy evaluation...\n", - "Batch 1: inputs reshaped\n", - "Input x shape: torch.Size([400, 40])\n", - "x1 (x @ U.T) shape: torch.Size([400, 18])\n", - "x2 (x @ V.T) shape: torch.Size([400, 18])\n", - "x_combined (x1 + x2) shape: torch.Size([400, 18])\n", - "Applied square nonlinearity\n", - "x_out (x_combined @ W) shape: torch.Size([400, 20])\n", - "x_out after scaling with output_scale=1.0: shape torch.Size([400, 20])\n", - "Batch 1: model forward pass done\n" - ] - }, - { - "ename": "KeyboardInterrupt", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[31m---------------------------------------------------------------------------\u001b[39m", - "\u001b[31mKeyboardInterrupt\u001b[39m Traceback (most recent call last)", - "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[7]\u001b[39m\u001b[32m, line 44\u001b[39m\n\u001b[32m 40\u001b[39m \u001b[38;5;66;03m# optimizer = optim.Adam(model.parameters(), lr=0.001, betas=(0.9, 0.999))\u001b[39;00m\n\u001b[32m 41\u001b[39m \n\u001b[32m 42\u001b[39m \u001b[38;5;66;03m# Train the model\u001b[39;00m\n\u001b[32m 43\u001b[39m epochs = \u001b[32m1000001\u001b[39m\n\u001b[32m---> \u001b[39m\u001b[32m44\u001b[39m loss_history, accuracy_history, param_history = \u001b[43mtrain\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmodel\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdataloader\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mloss\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43moptimizer\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mepochs\u001b[49m\u001b[43m=\u001b[49m\u001b[43mepochs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mverbose_interval\u001b[49m\u001b[43m=\u001b[49m\u001b[43mepochs\u001b[49m\u001b[43m/\u001b[49m\u001b[43m/\u001b[49m\u001b[32;43m100\u001b[39;49m\u001b[43m)\u001b[49m\n", - "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[4]\u001b[39m\u001b[32m, line 59\u001b[39m, in \u001b[36mtrain\u001b[39m\u001b[34m(model, dataloader, criterion, optimizer, epochs, verbose_interval)\u001b[39m\n\u001b[32m 57\u001b[39m model.eval()\n\u001b[32m 58\u001b[39m \u001b[38;5;28mprint\u001b[39m(\u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[33mEpoch \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mepoch+\u001b[32m1\u001b[39m\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m: model set to eval mode for accuracy check\u001b[39m\u001b[33m\"\u001b[39m)\n\u001b[32m---> \u001b[39m\u001b[32m59\u001b[39m accuracy = \u001b[43mtest_accuracy\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmodel\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdataloader\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 60\u001b[39m accuracy_history.append(accuracy)\n\u001b[32m 61\u001b[39m \u001b[38;5;28mprint\u001b[39m(\u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[33mEpoch \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mepoch+\u001b[32m1\u001b[39m\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m: accuracy appended (\u001b[39m\u001b[38;5;132;01m{\u001b[39;00maccuracy\u001b[38;5;132;01m:\u001b[39;00m\u001b[33m.2f\u001b[39m\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m%)\u001b[39m\u001b[33m\"\u001b[39m)\n", - "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[4]\u001b[39m\u001b[32m, line 12\u001b[39m, in \u001b[36mtest_accuracy\u001b[39m\u001b[34m(model, dataloader)\u001b[39m\n\u001b[32m 10\u001b[39m outputs = model(inputs)\n\u001b[32m 11\u001b[39m \u001b[38;5;28mprint\u001b[39m(\u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[33mBatch \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mi+\u001b[32m1\u001b[39m\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m: model forward pass done\u001b[39m\u001b[33m\"\u001b[39m)\n\u001b[32m---> \u001b[39m\u001b[32m12\u001b[39m _, predicted = \u001b[43mtorch\u001b[49m\u001b[43m.\u001b[49m\u001b[43mmax\u001b[49m\u001b[43m(\u001b[49m\u001b[43moutputs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[32;43m1\u001b[39;49m\u001b[43m)\u001b[49m \u001b[38;5;66;03m# Get the index of the largest value (class)\u001b[39;00m\n\u001b[32m 13\u001b[39m _, true_labels = torch.max(labels, \u001b[32m1\u001b[39m) \u001b[38;5;66;03m# Get the true class from the one-hot encoding\u001b[39;00m\n\u001b[32m 14\u001b[39m correct += (predicted == true_labels).sum().item()\n", - "\u001b[31mKeyboardInterrupt\u001b[39m: " - ] - } - ], "source": [ "seed = 0 # or any integer you like\n", "random.seed(seed)\n", @@ -5081,7 +386,10 @@ "torch.cuda.manual_seed_all(seed) # if using GPU\n", "\n", "# Data Generation using the new function\n", - "p = 20 # Modulus\n", + "# TEST_MODE: Reduce p and hidden_size for faster automated testing\n", + "import os\n", + "TEST_MODE = os.environ.get(\"NOTEBOOK_TEST_MODE\", \"0\") == \"1\"\n", + "p = 20 # Keep same value in TEST_MODE to avoid index errors # Modulus (reduced in test mode)\n", "\n", "# Get base vector\n", "# template = generate_template(p, 2, 1.0)\n", @@ -5104,7 +412,7 @@ "# dataloader = DataLoader(dataset, batch_size=32, shuffle=False)\n", "\n", "# Initialize model\n", - "hidden_size = 6 * 3\n", + "hidden_size = 6 if TEST_MODE else 6 * 3 # Reduced in test mode\n", "model = TwoLayerNet(p=p, hidden_size=hidden_size, nonlinearity='square', init_scale=1e-2, output_scale=1e0)\n", "\n", "# Create loss function\n", @@ -5116,24 +424,27 @@ "# optimizer = optim.Adam(model.parameters(), lr=0.001, betas=(0.9, 0.999))\n", "\n", "# Train the model\n", - "epochs = 1000001\n", - "loss_history, accuracy_history, param_history = train(model, dataloader, loss, optimizer, epochs=epochs, verbose_interval=epochs//100)" - ] + "# TEST_MODE: Set to reduce epochs for automated testing\n", + "import os\n", + "TEST_MODE = os.environ.get(\"NOTEBOOK_TEST_MODE\", \"0\") == \"1\"\n", + "epochs = 2 if TEST_MODE else 1000001\n", + "loss_history, accuracy_history, param_history = train(model, dataloader, loss, optimizer, epochs=epochs, verbose_interval=max(1, epochs//100))" + ], + "execution_count": null, + "outputs": [], + "id": "bcd15c5a-5745-41ba-b015-48e403160c7e" }, { "cell_type": "markdown", - "id": "eae371c4-1405-4ac5-982c-0ebacb688ed7", "metadata": {}, "source": [ "## AGF Numerics" - ] + ], + "id": "eae371c4-1405-4ac5-982c-0ebacb688ed7" }, { "cell_type": "code", - "execution_count": null, - "id": "489e82e1-61c8-43e6-b260-fd96c815dec8", "metadata": {}, - "outputs": [], "source": [ "class ModsumSubNetwork(nn.Module):\n", " \n", @@ -5310,237 +621,36 @@ " break\n", " \n", " return results" - ] + ], + "execution_count": null, + "outputs": [], + "id": "489e82e1-61c8-43e6-b260-fd96c815dec8" }, { "cell_type": "code", - "execution_count": null, - "id": "5b3eddcc-8c3e-45dd-8f57-45585a021f5d", "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - " 2%|█▉ | 1/50 [00:07<06:21, 7.79s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "loss: 0.59959\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - " 4%|███▊ | 2/50 [00:11<04:12, 5.27s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "loss: 0.40936\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - " 6%|█████▋ | 3/50 [00:15<03:39, 4.68s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "loss: 0.28390\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - " 8%|███████▌ | 4/50 [00:22<04:18, 5.62s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "loss: 0.22541\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - " 10%|█████████▌ | 5/50 [00:28<04:25, 5.89s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "loss: 0.15626\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - " 12%|███████████▍ | 6/50 [01:00<10:52, 14.82s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "loss: 0.13111\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - " 14%|█████████████▎ | 7/50 [01:08<08:58, 12.52s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "loss: 0.09157\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - " 16%|███████████████▏ | 8/50 [01:16<07:38, 10.91s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "loss: 0.05218\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - " 18%|█████████████████ | 9/50 [01:26<07:19, 10.73s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "loss: 0.03127\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - " 20%|██████████████████▊ | 10/50 [02:48<21:48, 32.70s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "loss: 0.03125\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - " 22%|████████████████████▋ | 11/50 [03:38<24:44, 38.06s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "loss: 0.02345\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - " 24%|██████████████████████▌ | 12/50 [04:17<24:16, 38.33s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "loss: 0.00857\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - " 24%|██████████████████████▌ | 12/50 [04:30<14:16, 22.53s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "loss: 0.00007\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], "source": [ "costmin_lr = 0.01\n", "utilmax_lr = 0.1\n", "results = train_agf(X_tensor, Y_tensor, init_sz=model.init_scale, agf_steps=50, from_init=param_history[0],\n", " utilmax_lr=utilmax_lr, costmin_lr=costmin_lr,\n", " costmin_maxiter=1e4, loss_thresh=1e-4)" - ] + ], + "execution_count": null, + "outputs": [], + "id": "5b3eddcc-8c3e-45dd-8f57-45585a021f5d" }, { "cell_type": "markdown", - "id": "0f48aebc-a439-405a-a057-3f5c24cca91a", "metadata": {}, "source": [ "## Plot Loss" - ] + ], + "id": "0f48aebc-a439-405a-a057-3f5c24cca91a" }, { "cell_type": "code", - "execution_count": null, - "id": "ff46febe-abb5-459a-bb06-a18a26afb967", "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], "source": [ "fig, ax = plt.subplots(1, 1, figsize=(6, 6))\n", "ax.plot(list(loss_history), lw=4)\n", @@ -5580,33 +690,22 @@ "plt.tight_layout()\n", "plt.savefig(\"loss-without-lines.pdf\", bbox_inches=\"tight\")\n", "plt.show()" - ] + ], + "execution_count": null, + "outputs": [], + "id": "ff46febe-abb5-459a-bb06-a18a26afb967" }, { "cell_type": "markdown", - "id": "40b851e7-6256-43cd-b9f3-aca38db04917", "metadata": {}, "source": [ "## Power Spectrum of output" - ] + ], + "id": "40b851e7-6256-43cd-b9f3-aca38db04917" }, { "cell_type": "code", - "execution_count": null, - "id": "68b25ca9-6339-49dd-9d45-577a51798a25", "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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669fvx7z589HWFgYVqxYgV/+8pcu+zty5IhzoEqdTof7778fixcvxn//+1+P526xWPDmm28CAB577DH/nZRWYIkTEZH7DX4BNg4PQffff7/X4QhuvPFGl/VmzZrlkTQBwIoVK3D69GncdNNNeP75551JEwBERETgzTffRHJyMt577z1cvnzZuax+qINnnnnGmTQBgFqtxpIlS5CamurX5/nKK6+gpKQEv/71r/GrX/3KmTQBQEJCAt59911oNBosXboUgntvUwBDhgzB888/70yaAGDAgAG49957AQBbtmxxWX/RokUAgBdeeMEjaQIcPRYbP++HH34YGo0Gq1atgtFodFn3448/RkFBAUaMGIHBgwe34dm3HxMnIqLaMtdpdRigadtd2Um+rrnmGsyaNcv5N336dEyfPh0TJ050We+OO+7wuv2GDRsAAHfddZfX5ZGRkRg6dCisVquz+s1gMODUqVMAgBkzZnhsExYW5jXZaI+W4kxLS0OvXr1QVFTktbrspptu8nork/rkx2AwOOcVFBTgwIEDUCqVePDBB32Kr1OnTrjllltQXl6O9957z2XZv//9bwDilTYBrKojIgJqylBpEiAAUACIiowVOSASQ3PDETSWkZHhdfszZ84AAO69915n6UtTioqKAAB5eXkAgMTExCaHPMjMzPQlfJ/Vxzlq1KgW1y0qKkJWVpbLvK5du3pdNzo6GgBQW1vrnHf+/HkAjmQoJsb3Dhdz5szBRx99hH//+9+YM2cOAODnn3/Gt99+i5SUlCaT147AxImIqLYMff9dBUOlgLQoBfL+Fit2RCRh4eHhXufb7Y6emTfccANSUlKa3Ue3bt38HldT8TQ1/4477oBer292H94aXzeu2guU4cOHY+jQodi3bx927NiBMWPGOEubZs+e7VIN2tGYOBER1Vx2nWb7JmqDLl264NixY3jwwQd9LhFJS0sDABQXF6OqqsprqVNubq7XbeuTh8rKSq/L67v4e4vz5MmTeOqppzB06FCf4myr+tKpixcvory8vNWlTg899BCWLl2KQYMG4X//+x/UarWzBEosbONEROTexomDX1Ib1Dci//DDD33eJj09Hd27dwcArFq1ymO5yWTCmjVrvG5bn3QdPXrU6/L6tkz+iLOtUlNTMWjQINjtdpeehL647bbb0KlTJ3z66ad44YUXYDQaceut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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], "source": [ "# === SETTINGS ===\n", "p = Y_tensor.shape[1]\n", @@ -5721,33 +820,22 @@ "plt.tight_layout()\n", "plt.savefig(\"fourier_power_only.pdf\", bbox_inches=\"tight\")\n", "plt.show()" - ] + ], + "execution_count": null, + "outputs": [], + "id": "68b25ca9-6339-49dd-9d45-577a51798a25" }, { "cell_type": "markdown", - "id": "5ef2c971-d9f1-41e6-b8eb-4e467496ccfd", "metadata": {}, "source": [ "## Plot outputs" - ] + ], + "id": "5ef2c971-d9f1-41e6-b8eb-4e467496ccfd" }, { "cell_type": "code", - "execution_count": null, - "id": "e333d1ab-1501-434f-86d2-82c10bb58f11", "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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8Pl8yM7ORnV1NY4fP46UlJRRz+NaVhaNEELIHYICKysrCydOnEBBQQGsViuOHDmCmpoanDlzBgsWLJA7nmo888wzMBgMsNvtiI6ORn19PYqKijB+/HhUV1fj8ccflzuiIh08eBDd3d1obW1FYWEhVq5c6X+l4+bNm2EymdDc3AybzYaIiAhs3boVbrcb+/btw5QpU1BbW8tbIA/gfvPc1dUFm82G1atX+9/m5dSpUzh58iQcDgc+++wz/qHwI/Lz83HgwAEsX74cWVlZI47n5uYCANey0sj7rE8Khr6+PvH666+LmJgYodPpxLx580RpaancsVTnwIEDIjk5WZjNZhESEiIsFovIzc0VjY2NckdTtLi4OAFg1I+mpib/eVeuXBFLliwRYWFhIiIiQuTk5Ij29nb5givM/ea5q6tL5ObmCqvVKsLCwoROpxOJiYliz549or+/X+74j7yFCxf+4Pz+769irmXl4JUoIiIiIgl47ZWIiIhIApYoIiIiIglYooiIiIgkYIkiIiIikoAlioiIiEgCligiIiIiCViiiIiIiCRgiSIiIiKSgCWKiIiISAKWKCIiIiIJWKKIiIiIJGCJIiIiIpKAJYqIiIhIgv8C/nQa5zFSRLwAAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], "source": [ "import matplotlib.pyplot as plt\n", "\n", @@ -5807,45 +895,22 @@ "# axes[-1].set_xlabel(\"Output Index\", fontsize=20)\n", "plt.tight_layout()\n", "plt.savefig(\"predictions.pdf\", bbox_inches='tight')" - ] + ], + "execution_count": null, + "outputs": [], + "id": "e333d1ab-1501-434f-86d2-82c10bb58f11" }, { "cell_type": "markdown", - "id": "b267424b-a0e5-47e3-9e01-1dc41e05e026", "metadata": {}, "source": [ "## Plot Weights" - ] + ], + "id": "b267424b-a0e5-47e3-9e01-1dc41e05e026" }, { "cell_type": "code", - "execution_count": null, - "id": "9de707bf-838e-4384-8150-3d8fe4586fc3", "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/var/folders/4g/shvz3x5d6rx38cxrtg_wmtw80000gn/T/ipykernel_46920/4254458089.py:113: UserWarning: There are no gridspecs with layoutgrids. Possibly did not call parent GridSpec with the \"figure\" keyword\n", - " plt.savefig(\"W-weights.pdf\", bbox_inches='tight')\n", - "/var/folders/4g/shvz3x5d6rx38cxrtg_wmtw80000gn/T/ipykernel_46920/4254458089.py:113: UserWarning: There are no gridspecs with layoutgrids. Possibly did not call parent GridSpec with the \"figure\" keyword\n", - " plt.savefig(\"W-weights.pdf\", bbox_inches='tight')\n", - "/Users/danielkunin/Library/Python/3.9/lib/python/site-packages/IPython/core/pylabtools.py:152: UserWarning: There are no gridspecs with layoutgrids. Possibly did not call parent GridSpec with the \"figure\" keyword\n", - " fig.canvas.print_figure(bytes_io, **kw)\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAABOUAAAIrCAYAAACgbS15AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd3hUVfrA8e+dlpn0CiEVCCF0CL33Jl3Eigpir7CWdXF1xbX/drGvXcAuWFAUkU7oEEJLAVJJCOk9k0yf+/tjyJiQThfO53nyMOXcc89Mwsy9733PeSVZlmUEQRAEQRAEQRAEQRAEQbhkFJd7AIIgCIIgCIIgCIIgCIJwrRFBOUEQBEEQBEEQBEEQBEG4xERQThAEQRAEQRAEQRAEQRAuMRGUEwRBEARBEARBEARBEIRLTATlBEEQBEEQBEEQBEEQBOESE0E5QRAEQRAEQRAEQRAEQbjERFBOEARBEARBEARBEARBEC4xEZQTBEEQBEEQBEEQBEEQhEtMBOUEQRAEQRAEQRAEQRAE4RITQTlBEIQWWrFiBZIkIUkS8+fPv6T7rtmvJEmXdL+CIAiCIAiCIFxb2rdv7zz3OHny5OUezlVNBOUEQbhohg0b5vwwf/zxx1u0zeuvv14nAPX666+3aLu//e1vzm0GDx58PsMWBEEQhGve6NGj63wft/Rn27Ztl3vogiAI16TmPrc9PDxo3749M2fO5N1336W8vPxyD1lABOUEQbiIRo4c6by9ffv2Fm1zdrtz2W7UqFEt2uZaV/uLW5xECYIgCIIgCMLVS6/Xk5mZyZo1a3jssccICwvjiy++uNzDuuapLvcABEG4eo0aNYrXXnsNgMOHD1NZWYmHh0ej7e12O7t27arz2K5du7Db7SgUjV9DqKio4MiRI877tYOBgiAIgiCcnwEDBjBw4MAWtQ0ODr7IoxEEQRCac/bntizLlJWVERsbS0pKCuA4h5o3bx5Go5H77rvvcg31mieCcoIgXDTDhg1DqVRis9mw2Wzs2rWLyZMnN9r+yJEjzjTqsLAwsrKyKC8v58iRI0RHRze63e7du7HZbAAoFAqGDx9+YV/IGfPnz7/ka8kJgiAIwuU2ZcoUlixZcrmHIQiCILRQU5/bq1ev5q677nKedz322GNMmTKFkJCQSzhCoYaYvioIwkXj4eFRJ5jW3FTU2s8/+eST57Rd79698fLyau1QBUEQBEEQBEEQrnrXX389X3/9tfO+yWTi/fffv4wjuraJoJwgCBdVa9aVq3nexcWFu+++2xlca01QTqwnJwiCIAiCIAiC0LipU6fSu3dv5/1NmzZdxtFc20RQThCEi6p2UC42Nhaj0dho2x07dgCONRBcXV0ZMmRInccbYjQaiY2NbXB/tRUXF7N06VImTJhAaGgoWq0Wb29vunXrxsMPP8yBAweafS0rVqxwFkZoyTTW0tJSXnrpJfr374+Pjw/u7u5ERUVxzz331Blz7apIrXHixAkWLVpE165dcXd3x9PTk969e7N48WKKiooa3a5mXzExMc7HxowZ02CVphUrVtTbvqioiP/+97+MHz+eoKAgtFotarUab29vunfvzpw5c3jjjTfIyMho1esRBEEQrg4nT550fo+0b9/e+fjOnTu555576NKlC15eXkiSxKJFixrs49SpU7z44ouMGDGCoKAgXFxc8PX1JTo6mieffJLk5ORWjengwYPce++9dOzYEZ1OR0BAAAMHDuT//u//KCkpAVr2Pb9kyRJnm5ZM6d22bZuz/ejRo1s01mPHjvHMM88wcOBA2rZti0ajISAggEGDBvGvf/2LnJycZvtoqJhTSUkJr7/+OgMGDMDf3x+dTkfHjh25++67SUhIaNHYalu3bh33338/PXr0wM/Pz3ks0LdvX+6//37WrFmD1Wp1ti8oKECj0SBJEkqlktOnT7doP7Is06FDB+frWbNmTavHKghCfUOHDnXeTk9Pb7Z9dnY2zz33HL1798bb2xs3Nze6dOnCo48+SmZmZov2WV5ezrfffsv999/PoEGD8Pf3R6PR4OnpSUREBLfeeiurVq3Cbre3+HVs2bKFu+++m549e+Lt7Y1KpcLV1ZWQkBBGjBjBokWL+O233zCbzc32dSHOGVtNFgRBuIiKi4tlSZJkQAbkrVu3NtguKSnJ2Wbx4sWyLMvyyy+/7HwsKSmpwe22bdvmbCNJklxUVFSvzXvvvSd7eXk52zX0I0mSvGDBAtlkMjX6WpYvX+5sP2/evCZf95YtW+S2bds2uj+FQiEvWbJElmW5zuONObvNBx98ILu4uDTav5+fnxwbG9tsX839LF++vM62P//8s+zj49OibYODg5t8jwRBEIQr16hRo5yf588//3yrts3IyHBuGx4eLptMJvn+++9v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vXv3vmTTx0JCQnjttdeIi4vjwIEDjB07lpkzZ5KYmHhJ9i9c+SIiIuqsPfbyyy87P/gaK/JQoyZoJ8syL7/8svPx4OBgIiIi6rW///77nYuXHjx4kBdeeKHF4ywqKsJms7W4fW0LFixw3n7rrbeanOKxZs2aOqncl1rt0uXNTbc1mUwtXkOm9vSfNm3anNvgBEE4b5f6OKBGbGwsH330kViYXWiVJ554wrm+2OrVq+utEdeUhqYcde3alaFDhzrvL1y4sNH13ex2O4899liLTsYGDBjgzDTft28fx44da7Tt+++/36Lj4Kefftp5+91332XTpk3NblPjUk23CgoK4uabb3bev//++y/IhTelUuk8dpJlmdtvv92ZUdO1a1eGDRt23vsQBOHyqz0jqqmZNNXV1XUyaBtTVFTUov3abLY6yRxnn5tcrnPG2kRQ7ip23XXX8dJLL3H99dc3+LzJZOLJJ58kODgYNzc3Bg0adF4LFU6fPp0pU6YQGRlJ586defnll3F3d2/xlAHh2lA7I+63335r8PGG1F5XrvZ2jQXzvLy8ePPNN533X3jhBebNm9foujKyLLNr1y4eeughwsLCzrlAwV133UWnTp0Ax0LI48ePJy4url67H374gdtuu63OOgaXWo8ePeqMp6mTkdzcXEJDQ3nyySc5cOBAo+02btzI888/77x/3XXXXZjBCoLQapf6OAAcn3tz587lk08+wcfH57z6Eq4tERERPPvss877CxYs4Mknn2z0xMtqtbJhwwbuuOOOOlnqtb388svOANqGDRu47bbbKCsrq9OmoqKCO+64g3Xr1qHRaJodZ2BgoDOzTZZlbr311nrrw1qtVpYuXcpjjz3Wou/5UaNGMW/ePOe2U6dO5dVXX230YpjRaOTnn39m5syZdbLTL7ZXX30VX19fwLHe05AhQxrNmCsrK+Pjjz/m73//e7P93n333c4smn379tV5XBCEq8P06dOdtz///HOWLl1aL6CVmprKxIkTOXjwYLPVsJ966ilGjhzJF198Ue9zvUZxcTH33nuvMyjn6elZ52INXL5zxtpU592D8Jf1yCOPkJSUxHfffUdQUBCrV69m8uTJxMfHExkZeV5922w2vv/+e6qqqhgyZMgFGrFwNRg1ahTfffddncd8fHzqBIga0r17d3x9fSkpKanzeFMZdvPnzyc9PZ0X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R5t909VSdejQAe3atTO7wHNycjKfJxtUUlKC/Px8m50adb+orKxEbGws0tLSsGPHDnTr1s3kPJ8d6bAd0PTudr/bqtqpY7du3ZI4iWHNq5qaGsyaNQudO3c2/hw7dgxpaWno3Lmzza3Rdydba6f16dMHQN21xGrXjLS178D169fD2dkZcXFxUkepIy8vz+wISJ1OBwA2tQNv27ZtMXjwYOMmKXv37kXHjh0REhIicTLz2Bag+x075cis+Ph46PV6rFq1ynisqqoKa9asQf/+/eHj4yNhOtJoNHWOnTlzBtu3b8fIkSMhl/PRtjVPPvkkduzYgczMTOOxH3/8EWlpaRgzZoyEyVq2yspKlJSU1Dm+aNEiCIKA6OhoCVK1DHq9HuPGjcORI0ewZcsWDBw40Gw5PjvSYDugaVl6v0vpxo0bdY7pdDp89dVXUKlUNtGJGBYWhm3bttX5CQ0Nha+vL7Zt24Zp06ZJHbPZtNNq12X74osvTI6vXr0aSqXSuKOoLdBoNNi7dy+eeOIJODk5SR2njqCgIJw6darOiNKNGzdCLpejR48eEiVr2KZNm5CSkoLZs2fbzH1pDtsCdD/jRg9kVv/+/TFmzBjMnTsXN27cQEBAANatW4f09PQ6X9wkvnHjxkGlUmHQoEFo3749Lly4gFWrVsHJyQkffPCB1PFanOXLl6OoqMj4Zvn7779HVlYWAODll1+Gq6sr3n77bWzZsgXDhg3DK6+8gtLSUixduhTdu3fH1KlTpYx/X7vbtbl58ybCw8MxYcIE4xviXbt2ITExEdHR0Rg1apRk2e93r7/+OrZv347Y2FgUFhbiP//5j8n5SZMmAQCfHYk0t3aAJZ/DUrL0fpfSCy+8gOLiYkRGRqJDhw64fv061q9fj0uXLuEf//iHTYzu8vDwwOOPP17n+McffwwAZs9Jobm008LDw/Hss8/iyy+/RHV1NaKionDgwAFs2bIFc+fOtanp1Zs2bUJ1dbVNTl0FgDfffBM7d+7EkCFDMHPmTLi7u2PHjh3YuXMnnnvuOZuoy4MHD2LhwoUYOXIk3N3dcfToUaxZswbR0dF45ZVXJMvFdjS1eAJRPSoqKoQ33nhD8PLyEhwcHIR+/foJSUlJUsciQRD++c9/ChEREYKbm5ugVCoFtVotTJo0Sbh8+bLU0VqkTp06CQDM/ly9etVYLjU1VRg5cqTg5OQktGnTRpg4caJw/fp16YK3AHe7Njdv3hQmTZokBAQECE5OToKDg4MQGhoqJCQkCFqtVur497WoqKh6r80fmyd8dqTRnNoBln4OS6Ux97tUNm7cKIwYMULw9PQUlEql0LZtW2HEiBHCd999J3W0u4qKihJCQ0OljmHUnNppWq1WWLBggdCpUyfBzs5OCAgIEJYtWyZ1rDoGDBggtG/fXqiurpY6Sr2OHTsmPPLII4KXl5dgZ2cnBAUFCYsXLxZ0Op3U0QRBEIRff/1VGDlypODh4SE4ODgIISEhwpIlS4SqqipJc7EdTS2dTBBsZCslIiIiIiIiIiKiFsJ2J44TERERERERERHdp9gpR0REREREREREJDJ2yhEREREREREREYmMnXJEREREREREREQiY6ccERERERERERGRyNgpR0REREREREREJDJ2yhEREREREREREYmMnXJEREREREREREQiY6ccERERERERERGRyNgpR0REREREREREJDJ2yhEREREREREREYmMnXJEREREREREREQiY6ccERERERERERGRyP4fUvCFguHBgO8AAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", @@ -5870,7 +935,7 @@ " if col == 2:\n", " ax = fig.add_subplot(gs[row, col], projection='polar')\n", " else:\n", - " ax = fig.add_subplot(gs[row, col]) # ⬅ no sharex anymore\n", + " ax = fig.add_subplot(gs[row, col]) # \u2b05 no sharex anymore\n", " axes[row, col] = ax\n", "\n", "num_freqs = None\n", @@ -5947,7 +1012,7 @@ " ax.plot([phase, phase], [0, norm], color=color, linewidth=2, alpha=alpha)\n", " ax.scatter(phase, norm, color=color, s=40, alpha=alpha)\n", " angles = np.arange(0, 360, 45)\n", - " # ax.set_thetagrids(angles, [f\"{a}°\" if a in [45,135,225,315] else \"\" for a in angles])\n", + " # ax.set_thetagrids(angles, [f\"{a}\u00b0\" if a in [45,135,225,315] else \"\" for a in angles])\n", " ax.set_thetagrids(angles, [\"\" for a in angles])\n", " ax.set_yticklabels([])\n", " ax.spines['polar'].set_linewidth(2)\n", @@ -5960,15 +1025,18 @@ " ax.set_position([pos.x0 - 0.155, pos.y0, pos.width, pos.height])\n", "\n", "plt.savefig(\"W-weights.pdf\", bbox_inches='tight')" - ] + ], + "execution_count": null, + "outputs": [], + "id": "9de707bf-838e-4384-8150-3d8fe4586fc3" }, { "cell_type": "code", - "execution_count": null, - "id": "9f5f56f9-7055-4056-9a18-7d91b3be50f8", "metadata": {}, + "source": [], + "execution_count": null, "outputs": [], - "source": [] + "id": "9f5f56f9-7055-4056-9a18-7d91b3be50f8" } ], "metadata": { @@ -5992,4 +1060,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} +} \ No newline at end of file diff --git a/notebooks/paper_figures.ipynb b/notebooks/paper_figures.ipynb index 713d21f..e168bb7 100644 --- a/notebooks/paper_figures.ipynb +++ b/notebooks/paper_figures.ipynb @@ -42,26 +42,10 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "id": "7ff57238", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Git root path: /home/adele/group-agf\n", - "\n", - "Working directory: /home/adele/group-agf/gagf\n", - "Directory added to path: /home/adele/group-agf\n", - "Directory added to path: /home/adele/group-agf/gagf/group_learning\n", - "Directory added to path: /home/adele/group-agf/gagf/group_learning/saved_datasets\n", - "Directory added to path: /home/adele/group-agf/gagf/notebooks\n", - "Directory added to path: /home/adele/group-agf/gagf/notebooks/saved_models\n", - "Directory added to path: /tmp/adele/\n" - ] - } - ], + "outputs": [], "source": [ "import numpy as np\n", "import random\n", @@ -93,18 +77,10 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "id": "d9fef4df", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Group name: dihedral, group size: 8\n" - ] - } - ], + "outputs": [], "source": [ "# parameters\n", "config = {\n", @@ -135,18 +111,10 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "id": "aa742e82", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "/tmp/adele/model_group_namedihedral_group_size8_init0.01_lr0.001_mom0.9_bs128_epochs5000_seed10_run_start10-31_14-42-46.pkl\n" - ] - } - ], + "outputs": [], "source": [ "from pyexpat import model\n", "\n", @@ -167,107 +135,10 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "id": "14393dea", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Computing inverse FT at element: (+, 0[2pi/4])\n", - "Irrep (1, 1)\n", - "FT (1, 1)\n", - "Irrep (1, 1)\n", - "FT (1, 1)\n", - "Irrep (2, 2)\n", - "FT (2, 2)\n", - "Irrep (1, 1)\n", - "FT (1, 1)\n", - "Irrep (1, 1)\n", - "FT (1, 1)\n", - "Computing inverse FT at element: (+, 1[2pi/4])\n", - "Irrep (1, 1)\n", - "FT (1, 1)\n", - "Irrep (1, 1)\n", - "FT (1, 1)\n", - "Irrep (2, 2)\n", - "FT (2, 2)\n", - "Irrep (1, 1)\n", - "FT (1, 1)\n", - "Irrep (1, 1)\n", - "FT (1, 1)\n", - "Computing inverse FT at element: (+, 2[2pi/4])\n", - "Irrep (1, 1)\n", - "FT (1, 1)\n", - "Irrep (1, 1)\n", - "FT (1, 1)\n", - "Irrep (2, 2)\n", - "FT (2, 2)\n", - "Irrep (1, 1)\n", - "FT (1, 1)\n", - "Irrep (1, 1)\n", - "FT (1, 1)\n", - "Computing inverse FT at element: (+, 3[2pi/4])\n", - "Irrep (1, 1)\n", - "FT (1, 1)\n", - "Irrep (1, 1)\n", - "FT (1, 1)\n", - "Irrep (2, 2)\n", - "FT (2, 2)\n", - "Irrep (1, 1)\n", - "FT (1, 1)\n", - "Irrep (1, 1)\n", - "FT (1, 1)\n", - "Computing inverse FT at element: (-, 0[2pi/4])\n", - "Irrep (1, 1)\n", - "FT (1, 1)\n", - "Irrep (1, 1)\n", - "FT (1, 1)\n", - "Irrep (2, 2)\n", - "FT (2, 2)\n", - "Irrep (1, 1)\n", - "FT (1, 1)\n", - "Irrep (1, 1)\n", - "FT (1, 1)\n", - "Computing inverse FT at element: (-, 1[2pi/4])\n", - "Irrep (1, 1)\n", - "FT (1, 1)\n", - "Irrep (1, 1)\n", - "FT (1, 1)\n", - "Irrep (2, 2)\n", - "FT (2, 2)\n", - "Irrep (1, 1)\n", - "FT (1, 1)\n", - "Irrep (1, 1)\n", - "FT (1, 1)\n", - "Computing inverse FT at element: (-, 2[2pi/4])\n", - "Irrep (1, 1)\n", - "FT (1, 1)\n", - "Irrep (1, 1)\n", - "FT (1, 1)\n", - "Irrep (2, 2)\n", - "FT (2, 2)\n", - "Irrep (1, 1)\n", - "FT (1, 1)\n", - "Irrep (1, 1)\n", - "FT (1, 1)\n", - "Computing inverse FT at element: (-, 3[2pi/4])\n", - "Irrep (1, 1)\n", - "FT (1, 1)\n", - "Irrep (1, 1)\n", - "FT (1, 1)\n", - "Irrep (2, 2)\n", - "FT (2, 2)\n", - "Irrep (1, 1)\n", - "FT (1, 1)\n", - "Irrep (1, 1)\n", - "FT (1, 1)\n", - "X_tensor shape: torch.Size([64, 16]), Y_tensor shape: torch.Size([64, 8])\n", - "GPU is available. Using CUDA.\n" - ] - } - ], + "outputs": [], "source": [ "X, Y, template = datasets.load_dataset(config)\n", "template_power = power.GroupPower(template, config['group'])\n", @@ -276,7 +147,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "id": "78975e86", "metadata": {}, "outputs": [], @@ -300,585 +171,10 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "id": "a1723c01", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Computing power at step 1 with output shape (64, 8)\n", - "Computing power at step 2 with output shape (64, 8)\n", - "Computing power at step 3 with output shape (64, 8)\n", - "Computing power at step 4 with output shape (64, 8)\n", - "Computing power at step 5 with output shape (64, 8)\n", - "Computing power at step 6 with output shape (64, 8)\n", - "Computing power at step 7 with output shape (64, 8)\n", - "Computing power at step 8 with output shape (64, 8)\n", - "Computing power at step 9 with output shape (64, 8)\n", - "Computing power at step 10 with output shape (64, 8)\n", - "Computing power at step 11 with output shape (64, 8)\n", - "Computing power at step 12 with output shape (64, 8)\n", - "Computing power at step 13 with output shape (64, 8)\n", - "Computing power at step 14 with output shape (64, 8)\n", - "Computing power at step 15 with output shape (64, 8)\n", - "Computing power at step 16 with output shape (64, 8)\n", - "Computing power at step 17 with output shape (64, 8)\n", - "Computing power at step 18 with output shape (64, 8)\n", - "Computing power at step 19 with output shape (64, 8)\n", - "Computing power at step 20 with output shape (64, 8)\n", - "Computing power at step 21 with output shape (64, 8)\n", - "Computing power at step 22 with output shape (64, 8)\n", - "Computing power at step 23 with output shape (64, 8)\n", - "Computing power at step 24 with output shape (64, 8)\n", - "Computing power at step 25 with output shape (64, 8)\n", - "Computing power at step 26 with output shape (64, 8)\n", - "Computing power at step 27 with output shape (64, 8)\n", - "Computing power at step 28 with output shape (64, 8)\n", - "Computing power at step 29 with output shape (64, 8)\n", - "Computing power at step 30 with output shape (64, 8)\n", - "Computing power at step 31 with output shape (64, 8)\n", - "Computing power at step 32 with output shape (64, 8)\n", - "Computing power at step 33 with output shape (64, 8)\n", - "Computing power at step 34 with output shape (64, 8)\n", - "Computing power at step 35 with output shape (64, 8)\n", - "Computing power at step 36 with output shape (64, 8)\n", - "Computing power at step 37 with output shape (64, 8)\n", - "Computing power at step 38 with output shape (64, 8)\n", - "Computing power at step 39 with output shape (64, 8)\n", - "Computing power at step 40 with output shape (64, 8)\n", - "Computing power at step 41 with output shape (64, 8)\n", - "Computing power at step 42 with output shape (64, 8)\n", - "Computing power at step 43 with output shape (64, 8)\n", - "Computing power at step 44 with output shape (64, 8)\n", - "Computing power at step 45 with output shape (64, 8)\n", - "Computing power at step 46 with output shape (64, 8)\n", - "Computing power at step 47 with output shape (64, 8)\n", - "Computing power at step 48 with output shape (64, 8)\n", - "Computing power at step 49 with output shape (64, 8)\n", - "Computing power at step 50 with output shape (64, 8)\n", - "Computing power at step 51 with output shape (64, 8)\n", - "Computing power at step 52 with output shape (64, 8)\n", - "Computing power at step 53 with output shape (64, 8)\n", - "Computing power at step 54 with output shape (64, 8)\n", - "Computing power at step 55 with output shape (64, 8)\n", - "Computing power at step 56 with output shape (64, 8)\n", - "Computing power at step 57 with output shape (64, 8)\n", - "Computing power at step 58 with output shape (64, 8)\n", - "Computing power at step 59 with output shape (64, 8)\n", - "Computing power at step 60 with output shape (64, 8)\n", - "Computing power at step 61 with output shape (64, 8)\n", - "Computing power at step 62 with output shape (64, 8)\n", - "Computing power at step 63 with output shape (64, 8)\n", - "Computing power at step 64 with output shape (64, 8)\n", - "Computing power at step 65 with output shape (64, 8)\n", - "Computing power at step 66 with output shape (64, 8)\n", - "Computing power at step 67 with output shape (64, 8)\n", - "Computing power at step 68 with output shape (64, 8)\n", - "Computing power at step 69 with output shape (64, 8)\n", - "Computing power at step 70 with output shape (64, 8)\n", - "Computing power at step 71 with output shape (64, 8)\n", - "Computing power at step 72 with output shape (64, 8)\n", - "Computing power at step 73 with output shape (64, 8)\n", - "Computing power at step 74 with output shape (64, 8)\n", - "Computing power at step 75 with output shape (64, 8)\n", - "Computing power at step 76 with output shape (64, 8)\n", - "Computing power at step 77 with output shape (64, 8)\n", - "Computing power at step 78 with output shape (64, 8)\n", - "Computing power at step 79 with output shape (64, 8)\n", - "Computing power at step 80 with output shape (64, 8)\n", - "Computing power at step 81 with output shape (64, 8)\n", - "Computing power at step 82 with output shape (64, 8)\n", - "Computing power at step 83 with output shape (64, 8)\n", - "Computing power at step 84 with output shape (64, 8)\n", - "Computing power at step 85 with output shape (64, 8)\n", - "Computing power at step 86 with output shape (64, 8)\n", - "Computing power at step 87 with output shape (64, 8)\n", - "Computing power at step 88 with output shape (64, 8)\n", - "Computing power at step 89 with output shape (64, 8)\n", - "Computing power at step 90 with output shape (64, 8)\n", - "Computing power at step 91 with output shape (64, 8)\n", - "Computing power at step 92 with output shape (64, 8)\n", - "Computing power at step 93 with output shape (64, 8)\n", - "Computing power at step 94 with output shape (64, 8)\n", - "Computing power at step 95 with output shape (64, 8)\n", - "Computing power at step 96 with output shape (64, 8)\n", - "Computing power at step 97 with output shape (64, 8)\n", - "Computing power at step 98 with output shape (64, 8)\n", - "Computing power at step 99 with output shape (64, 8)\n", - "Computing power at step 100 with output shape (64, 8)\n", - "Computing power at step 101 with output shape (64, 8)\n", - "Computing power at step 102 with output shape (64, 8)\n", - "Computing power at step 103 with output shape (64, 8)\n", - "Computing power at step 104 with output shape (64, 8)\n", - "Computing power at step 105 with output shape (64, 8)\n", - "Computing power at step 106 with output shape (64, 8)\n", - "Computing power at step 107 with output shape (64, 8)\n", - "Computing power at step 108 with output shape (64, 8)\n", - "Computing power at step 109 with output shape (64, 8)\n", - "Computing power at step 110 with output shape (64, 8)\n", - "Computing power at step 111 with output shape (64, 8)\n", - "Computing power at step 112 with output shape (64, 8)\n", - "Computing power at step 113 with output shape (64, 8)\n", - "Computing power at step 114 with output shape (64, 8)\n", - "Computing power at step 115 with output shape (64, 8)\n", - "Computing power at step 116 with output shape (64, 8)\n", - "Computing power at step 117 with output shape (64, 8)\n", - "Computing power at step 118 with output shape (64, 8)\n", - "Computing power at step 119 with output shape (64, 8)\n", - "Computing power at step 120 with output shape (64, 8)\n", - "Computing power at step 121 with output shape (64, 8)\n", - "Computing power at step 122 with output shape (64, 8)\n", - "Computing power at step 123 with output shape (64, 8)\n", - "Computing power at step 124 with output shape (64, 8)\n", - "Computing power at step 125 with output shape (64, 8)\n", - "Computing power at step 126 with output shape (64, 8)\n", - "Computing power at step 127 with output shape (64, 8)\n", - "Computing power at step 128 with output shape (64, 8)\n", - "Computing power at step 130 with output shape (64, 8)\n", - "Computing power at step 131 with output shape (64, 8)\n", - "Computing power at step 132 with output shape (64, 8)\n", - "Computing power at step 133 with output shape (64, 8)\n", - "Computing power at step 134 with output shape (64, 8)\n", - "Computing power at step 135 with output shape (64, 8)\n", - "Computing power at step 136 with output shape (64, 8)\n", - "Computing power at step 138 with output shape (64, 8)\n", - "Computing power at step 139 with output shape (64, 8)\n", - "Computing power at step 140 with output shape (64, 8)\n", - "Computing power at step 141 with output shape (64, 8)\n", - "Computing power at step 142 with output shape (64, 8)\n", - "Computing power at step 144 with output shape (64, 8)\n", - "Computing power at step 145 with output shape (64, 8)\n", - "Computing power at step 146 with output shape (64, 8)\n", - "Computing power at step 147 with output shape (64, 8)\n", - "Computing power at step 149 with output shape (64, 8)\n", - "Computing power at step 150 with output shape (64, 8)\n", - "Computing power at step 151 with output shape (64, 8)\n", - "Computing power at step 152 with output shape (64, 8)\n", - "Computing power at step 154 with output shape (64, 8)\n", - "Computing power at step 155 with output shape (64, 8)\n", - "Computing power at step 156 with output shape (64, 8)\n", - "Computing power at step 158 with output shape (64, 8)\n", - "Computing power at step 159 with output shape (64, 8)\n", - "Computing power at step 160 with output shape (64, 8)\n", - "Computing power at step 162 with output shape (64, 8)\n", - "Computing power at step 163 with output shape (64, 8)\n", - "Computing power at step 165 with output shape (64, 8)\n", - "Computing power at step 166 with output shape (64, 8)\n", - "Computing power at step 167 with output shape (64, 8)\n", - "Computing power at step 169 with output shape (64, 8)\n", - "Computing power at step 170 with output shape (64, 8)\n", - "Computing power at step 172 with output shape (64, 8)\n", - "Computing power at step 173 with output shape (64, 8)\n", - "Computing power at step 175 with output shape (64, 8)\n", - "Computing power at step 176 with output shape (64, 8)\n", - "Computing power at step 178 with output shape (64, 8)\n", - "Computing power at step 179 with output shape (64, 8)\n", - "Computing power at step 181 with output shape (64, 8)\n", - "Computing power at step 182 with output shape (64, 8)\n", - "Computing power at step 184 with output shape (64, 8)\n", - "Computing power at step 186 with output shape (64, 8)\n", - "Computing power at step 187 with output shape (64, 8)\n", - "Computing power at step 189 with output shape (64, 8)\n", - "Computing power at step 190 with output shape (64, 8)\n", - "Computing power at step 192 with output shape (64, 8)\n", - "Computing power at step 194 with output shape (64, 8)\n", - "Computing power at step 195 with output shape (64, 8)\n", - "Computing power at step 197 with output shape (64, 8)\n", - "Computing power at step 199 with output shape (64, 8)\n", - "Computing power at step 200 with output shape (64, 8)\n", - "Computing power at step 202 with output shape (64, 8)\n", - "Computing power at step 204 with output shape (64, 8)\n", - "Computing power at step 206 with output shape (64, 8)\n", - "Computing power at step 207 with output shape (64, 8)\n", - "Computing power at step 209 with output shape (64, 8)\n", - "Computing power at step 211 with output shape (64, 8)\n", - "Computing power at step 213 with output shape (64, 8)\n", - "Computing power at step 215 with output shape (64, 8)\n", - "Computing power at step 216 with output shape (64, 8)\n", - "Computing power at step 218 with output shape (64, 8)\n", - "Computing power at step 220 with output shape (64, 8)\n", - "Computing power at step 222 with output shape (64, 8)\n", - "Computing power at step 224 with output shape (64, 8)\n", - "Computing power at step 226 with output shape (64, 8)\n", - "Computing power at step 228 with output shape (64, 8)\n", - "Computing power at step 230 with output shape (64, 8)\n", - "Computing power at step 232 with output shape (64, 8)\n", - "Computing power at step 234 with output shape (64, 8)\n", - "Computing power at step 236 with output shape (64, 8)\n", - "Computing power at step 238 with output shape (64, 8)\n", - "Computing power at step 240 with output shape (64, 8)\n", - "Computing power at step 242 with output shape (64, 8)\n", - "Computing power at step 244 with output shape (64, 8)\n", - "Computing power at step 246 with output shape (64, 8)\n", - "Computing power at step 248 with output shape (64, 8)\n", - "Computing power at step 250 with output shape (64, 8)\n", - "Computing power at step 252 with output shape (64, 8)\n", - "Computing power at step 255 with output shape (64, 8)\n", - "Computing power at step 257 with output shape (64, 8)\n", - "Computing power at step 259 with output shape (64, 8)\n", - "Computing power at step 261 with output shape (64, 8)\n", - "Computing power at step 263 with output shape (64, 8)\n", - "Computing power at step 266 with output shape (64, 8)\n", - "Computing power at step 268 with output shape (64, 8)\n", - "Computing power at step 270 with output shape (64, 8)\n", - "Computing power at step 273 with output shape (64, 8)\n", - "Computing power at step 275 with output shape (64, 8)\n", - "Computing power at step 277 with output shape (64, 8)\n", - "Computing power at step 280 with output shape (64, 8)\n", - "Computing power at step 282 with output shape (64, 8)\n", - "Computing power at step 284 with output shape (64, 8)\n", - "Computing power at step 287 with output shape (64, 8)\n", - "Computing power at step 289 with output shape (64, 8)\n", - "Computing power at step 292 with output shape (64, 8)\n", - "Computing power at step 294 with output shape (64, 8)\n", - "Computing power at step 297 with output shape (64, 8)\n", - "Computing power at step 299 with output shape (64, 8)\n", - "Computing power at step 302 with output shape (64, 8)\n", - "Computing power at step 305 with output shape (64, 8)\n", - "Computing power at step 307 with output shape (64, 8)\n", - "Computing power at step 310 with output shape (64, 8)\n", - "Computing power at step 312 with output shape (64, 8)\n", - "Computing power at step 315 with output shape (64, 8)\n", - "Computing power at step 318 with output shape (64, 8)\n", - "Computing power at step 321 with output shape (64, 8)\n", - "Computing power at step 323 with output shape (64, 8)\n", - "Computing power at step 326 with output shape (64, 8)\n", - "Computing power at step 329 with output shape (64, 8)\n", - "Computing power at step 332 with output shape (64, 8)\n", - "Computing power at step 335 with output shape (64, 8)\n", - "Computing power at step 337 with output shape (64, 8)\n", - "Computing power at step 340 with output shape (64, 8)\n", - "Computing power at step 343 with output shape (64, 8)\n", - "Computing power at step 346 with output shape (64, 8)\n", - "Computing power at step 349 with output shape (64, 8)\n", - "Computing power at step 352 with output shape (64, 8)\n", - "Computing power at step 355 with output shape (64, 8)\n", - "Computing power at step 358 with output shape (64, 8)\n", - "Computing power at step 361 with output shape (64, 8)\n", - "Computing power at step 364 with output shape (64, 8)\n", - "Computing power at step 368 with output shape (64, 8)\n", - "Computing power at step 371 with output shape (64, 8)\n", - "Computing power at step 374 with output shape (64, 8)\n", - "Computing power at step 377 with output shape (64, 8)\n", - "Computing power at step 380 with output shape (64, 8)\n", - "Computing power at step 384 with output shape (64, 8)\n", - "Computing power at step 387 with output shape (64, 8)\n", - "Computing power at step 390 with output shape (64, 8)\n", - "Computing power at step 394 with output shape (64, 8)\n", - "Computing power at step 397 with output shape (64, 8)\n", - "Computing power at step 400 with output shape (64, 8)\n", - "Computing power at step 404 with output shape (64, 8)\n", - "Computing power at step 407 with output shape (64, 8)\n", - "Computing power at step 411 with output shape (64, 8)\n", - "Computing power at step 414 with output shape (64, 8)\n", - "Computing power at step 418 with output shape (64, 8)\n", - "Computing power at step 421 with output shape (64, 8)\n", - "Computing power at step 425 with output shape (64, 8)\n", - "Computing power at step 429 with output shape (64, 8)\n", - "Computing power at step 432 with output shape (64, 8)\n", - "Computing power at step 436 with output shape (64, 8)\n", - "Computing power at step 440 with output shape (64, 8)\n", - "Computing power at step 443 with output shape (64, 8)\n", - "Computing power at step 447 with output shape (64, 8)\n", - "Computing power at step 451 with output shape (64, 8)\n", - "Computing power at step 455 with output shape (64, 8)\n", - "Computing power at step 459 with output shape (64, 8)\n", - "Computing power at step 463 with output shape (64, 8)\n", - "Computing power at step 467 with output shape (64, 8)\n", - "Computing power at step 471 with output shape (64, 8)\n", - "Computing power at step 475 with output shape (64, 8)\n", - "Computing power at step 479 with output shape (64, 8)\n", - "Computing power at step 483 with output shape (64, 8)\n", - "Computing power at step 487 with output shape (64, 8)\n", - "Computing power at step 491 with output shape (64, 8)\n", - "Computing power at step 496 with output shape (64, 8)\n", - "Computing power at step 500 with output shape (64, 8)\n", - "Computing power at step 504 with output shape (64, 8)\n", - "Computing power at step 508 with output shape (64, 8)\n", - "Computing power at step 513 with output shape (64, 8)\n", - "Computing power at step 517 with output shape (64, 8)\n", - "Computing power at step 522 with output shape (64, 8)\n", - "Computing power at step 526 with output shape (64, 8)\n", - "Computing power at step 531 with output shape (64, 8)\n", - "Computing power at step 535 with output shape (64, 8)\n", - "Computing power at step 540 with output shape (64, 8)\n", - "Computing power at step 544 with output shape (64, 8)\n", - "Computing power at step 549 with output shape (64, 8)\n", - "Computing power at step 554 with output shape (64, 8)\n", - "Computing power at step 558 with output shape (64, 8)\n", - "Computing power at step 563 with output shape (64, 8)\n", - "Computing power at step 568 with output shape (64, 8)\n", - "Computing power at step 573 with output shape (64, 8)\n", - "Computing power at step 578 with output shape (64, 8)\n", - "Computing power at step 583 with output shape (64, 8)\n", - "Computing power at step 588 with output shape (64, 8)\n", - "Computing power at step 593 with output shape (64, 8)\n", - "Computing power at step 598 with output shape (64, 8)\n", - "Computing power at step 603 with output shape (64, 8)\n", - "Computing power at step 608 with output shape (64, 8)\n", - "Computing power at step 613 with output shape (64, 8)\n", - "Computing power at step 619 with output shape (64, 8)\n", - "Computing power at step 624 with output shape (64, 8)\n", - "Computing power at step 629 with output shape (64, 8)\n", - "Computing power at step 635 with output shape (64, 8)\n", - "Computing power at step 640 with output shape (64, 8)\n", - "Computing power at step 646 with output shape (64, 8)\n", - "Computing power at step 651 with output shape (64, 8)\n", - "Computing power at step 657 with output shape (64, 8)\n", - "Computing power at step 662 with output shape (64, 8)\n", - "Computing power at step 668 with output shape (64, 8)\n", - "Computing power at step 674 with output shape (64, 8)\n", - "Computing power at step 679 with output shape (64, 8)\n", - "Computing power at step 685 with output shape (64, 8)\n", - "Computing power at step 691 with output shape (64, 8)\n", - "Computing power at step 697 with output shape (64, 8)\n", - "Computing power at step 703 with output shape (64, 8)\n", - "Computing power at step 709 with output shape (64, 8)\n", - "Computing power at step 715 with output shape (64, 8)\n", - "Computing power at step 721 with output shape (64, 8)\n", - "Computing power at step 727 with output shape (64, 8)\n", - "Computing power at step 734 with output shape (64, 8)\n", - "Computing power at step 740 with output shape (64, 8)\n", - "Computing power at step 746 with output shape (64, 8)\n", - "Computing power at step 753 with output shape (64, 8)\n", - "Computing power at step 759 with output shape (64, 8)\n", - "Computing power at step 766 with output shape (64, 8)\n", - "Computing power at step 772 with output shape (64, 8)\n", - "Computing power at step 779 with output shape (64, 8)\n", - "Computing power at step 785 with output shape (64, 8)\n", - "Computing power at step 792 with output shape (64, 8)\n", - "Computing power at step 799 with output shape (64, 8)\n", - "Computing power at step 806 with output shape (64, 8)\n", - "Computing power at step 813 with output shape (64, 8)\n", - "Computing power at step 820 with output shape (64, 8)\n", - "Computing power at step 827 with output shape (64, 8)\n", - "Computing power at step 834 with output shape (64, 8)\n", - "Computing power at step 841 with output shape (64, 8)\n", - "Computing power at step 848 with output shape (64, 8)\n", - "Computing power at step 855 with output shape (64, 8)\n", - "Computing power at step 863 with output shape (64, 8)\n", - "Computing power at step 870 with output shape (64, 8)\n", - "Computing power at step 878 with output shape (64, 8)\n", - "Computing power at step 885 with output shape (64, 8)\n", - "Computing power at step 893 with output shape (64, 8)\n", - "Computing power at step 900 with output shape (64, 8)\n", - "Computing power at step 908 with output shape (64, 8)\n", - "Computing power at step 916 with output shape (64, 8)\n", - "Computing power at step 924 with output shape (64, 8)\n", - "Computing power at step 932 with output shape (64, 8)\n", - "Computing power at step 940 with output shape (64, 8)\n", - "Computing power at step 948 with output shape (64, 8)\n", - "Computing power at step 956 with output shape (64, 8)\n", - "Computing power at step 964 with output shape (64, 8)\n", - "Computing power at step 972 with output shape (64, 8)\n", - "Computing power at step 981 with output shape (64, 8)\n", - "Computing power at step 989 with output shape (64, 8)\n", - "Computing power at step 997 with output shape (64, 8)\n", - "Computing power at step 1006 with output shape (64, 8)\n", - "Computing power at step 1015 with output shape (64, 8)\n", - "Computing power at step 1023 with output shape (64, 8)\n", - "Computing power at step 1032 with output shape (64, 8)\n", - "Computing power at step 1041 with output shape (64, 8)\n", - "Computing power at step 1050 with output shape (64, 8)\n", - "Computing power at step 1059 with output shape (64, 8)\n", - "Computing power at step 1068 with output shape (64, 8)\n", - "Computing power at step 1077 with output shape (64, 8)\n", - "Computing power at step 1086 with output shape (64, 8)\n", - "Computing power at step 1096 with output shape (64, 8)\n", - "Computing power at step 1105 with output shape (64, 8)\n", - "Computing power at step 1114 with output shape (64, 8)\n", - "Computing power at step 1124 with output shape (64, 8)\n", - "Computing power at step 1134 with output shape (64, 8)\n", - "Computing power at step 1143 with output shape (64, 8)\n", - "Computing power at step 1153 with output shape (64, 8)\n", - "Computing power at step 1163 with output shape (64, 8)\n", - "Computing power at step 1173 with output shape (64, 8)\n", - "Computing power at step 1183 with output shape (64, 8)\n", - "Computing power at step 1193 with output shape (64, 8)\n", - "Computing power at step 1203 with output shape (64, 8)\n", - "Computing power at step 1214 with output shape (64, 8)\n", - "Computing power at step 1224 with output shape (64, 8)\n", - "Computing power at step 1234 with output shape (64, 8)\n", - "Computing power at step 1245 with output shape (64, 8)\n", - "Computing power at step 1256 with output shape (64, 8)\n", - "Computing power at step 1266 with output shape (64, 8)\n", - "Computing power at step 1277 with output shape (64, 8)\n", - "Computing power at step 1288 with output shape (64, 8)\n", - "Computing power at step 1299 with output shape (64, 8)\n", - "Computing power at step 1310 with output shape (64, 8)\n", - "Computing power at step 1322 with output shape (64, 8)\n", - "Computing power at step 1333 with output shape (64, 8)\n", - "Computing power at step 1344 with output shape (64, 8)\n", - "Computing power at step 1356 with output shape (64, 8)\n", - "Computing power at step 1368 with output shape (64, 8)\n", - "Computing power at step 1379 with output shape (64, 8)\n", - "Computing power at step 1391 with output shape (64, 8)\n", - "Computing power at step 1403 with output shape (64, 8)\n", - "Computing power at step 1415 with output shape (64, 8)\n", - "Computing power at step 1427 with output shape (64, 8)\n", - "Computing power at step 1439 with output shape (64, 8)\n", - "Computing power at step 1452 with output shape (64, 8)\n", - "Computing power at step 1464 with output shape (64, 8)\n", - "Computing power at step 1477 with output shape (64, 8)\n", - "Computing power at step 1489 with output shape (64, 8)\n", - "Computing power at step 1502 with output shape (64, 8)\n", - "Computing power at step 1515 with output shape (64, 8)\n", - "Computing power at step 1528 with output shape (64, 8)\n", - "Computing power at step 1541 with output shape (64, 8)\n", - "Computing power at step 1554 with output shape (64, 8)\n", - "Computing power at step 1567 with output shape (64, 8)\n", - "Computing power at step 1581 with output shape (64, 8)\n", - "Computing power at step 1594 with output shape (64, 8)\n", - "Computing power at step 1608 with output shape (64, 8)\n", - "Computing power at step 1622 with output shape (64, 8)\n", - "Computing power at step 1636 with output shape (64, 8)\n", - "Computing power at step 1650 with output shape (64, 8)\n", - "Computing power at step 1664 with output shape (64, 8)\n", - "Computing power at step 1678 with output shape (64, 8)\n", - "Computing power at step 1692 with output shape (64, 8)\n", - "Computing power at step 1707 with output shape (64, 8)\n", - "Computing power at step 1722 with output shape (64, 8)\n", - "Computing power at step 1736 with output shape (64, 8)\n", - "Computing power at step 1751 with output shape (64, 8)\n", - "Computing power at step 1766 with output shape (64, 8)\n", - "Computing power at step 1781 with output shape (64, 8)\n", - "Computing power at step 1797 with output shape (64, 8)\n", - "Computing power at step 1812 with output shape (64, 8)\n", - "Computing power at step 1828 with output shape (64, 8)\n", - "Computing power at step 1843 with output shape (64, 8)\n", - "Computing power at step 1859 with output shape (64, 8)\n", - "Computing power at step 1875 with output shape (64, 8)\n", - "Computing power at step 1891 with output shape (64, 8)\n", - "Computing power at step 1907 with output shape (64, 8)\n", - "Computing power at step 1923 with output shape (64, 8)\n", - "Computing power at step 1940 with output shape (64, 8)\n", - "Computing power at step 1957 with output shape (64, 8)\n", - "Computing power at step 1973 with output shape (64, 8)\n", - "Computing power at step 1990 with output shape (64, 8)\n", - "Computing power at step 2007 with output shape (64, 8)\n", - "Computing power at step 2024 with output shape (64, 8)\n", - "Computing power at step 2042 with output shape (64, 8)\n", - "Computing power at step 2059 with output shape (64, 8)\n", - "Computing power at step 2077 with output shape (64, 8)\n", - "Computing power at step 2095 with output shape (64, 8)\n", - "Computing power at step 2113 with output shape (64, 8)\n", - "Computing power at step 2131 with output shape (64, 8)\n", - "Computing power at step 2149 with output shape (64, 8)\n", - "Computing power at step 2167 with output shape (64, 8)\n", - "Computing power at step 2186 with output shape (64, 8)\n", - "Computing power at step 2205 with output shape (64, 8)\n", - "Computing power at step 2224 with output shape (64, 8)\n", - "Computing power at step 2243 with output shape (64, 8)\n", - "Computing power at step 2262 with output shape (64, 8)\n", - "Computing power at step 2281 with output shape (64, 8)\n", - "Computing power at step 2301 with output shape (64, 8)\n", - "Computing power at step 2320 with output shape (64, 8)\n", - "Computing power at step 2340 with output shape (64, 8)\n", - "Computing power at step 2360 with output shape (64, 8)\n", - "Computing power at step 2380 with output shape (64, 8)\n", - "Computing power at step 2401 with output shape (64, 8)\n", - "Computing power at step 2421 with output shape (64, 8)\n", - "Computing power at step 2442 with output shape (64, 8)\n", - "Computing power at step 2463 with output shape (64, 8)\n", - "Computing power at step 2484 with output shape (64, 8)\n", - "Computing power at step 2505 with output shape (64, 8)\n", - "Computing power at step 2527 with output shape (64, 8)\n", - "Computing power at step 2549 with output shape (64, 8)\n", - "Computing power at step 2570 with output shape (64, 8)\n", - "Computing power at step 2592 with output shape (64, 8)\n", - "Computing power at step 2615 with output shape (64, 8)\n", - "Computing power at step 2637 with output shape (64, 8)\n", - "Computing power at step 2660 with output shape (64, 8)\n", - "Computing power at step 2682 with output shape (64, 8)\n", - "Computing power at step 2705 with output shape (64, 8)\n", - "Computing power at step 2728 with output shape (64, 8)\n", - "Computing power at step 2752 with output shape (64, 8)\n", - "Computing power at step 2775 with output shape (64, 8)\n", - "Computing power at step 2799 with output shape (64, 8)\n", - "Computing power at step 2823 with output shape (64, 8)\n", - "Computing power at step 2847 with output shape (64, 8)\n", - "Computing power at step 2872 with output shape (64, 8)\n", - "Computing power at step 2896 with output shape (64, 8)\n", - "Computing power at step 2921 with output shape (64, 8)\n", - "Computing power at step 2946 with output shape (64, 8)\n", - "Computing power at step 2971 with output shape (64, 8)\n", - "Computing power at step 2997 with output shape (64, 8)\n", - "Computing power at step 3022 with output shape (64, 8)\n", - "Computing power at step 3048 with output shape (64, 8)\n", - "Computing power at step 3074 with output shape (64, 8)\n", - "Computing power at step 3101 with output shape (64, 8)\n", - "Computing power at step 3127 with output shape (64, 8)\n", - "Computing power at step 3154 with output shape (64, 8)\n", - "Computing power at step 3181 with output shape (64, 8)\n", - "Computing power at step 3208 with output shape (64, 8)\n", - "Computing power at step 3236 with output shape (64, 8)\n", - "Computing power at step 3264 with output shape (64, 8)\n", - "Computing power at step 3291 with output shape (64, 8)\n", - "Computing power at step 3320 with output shape (64, 8)\n", - "Computing power at step 3348 with output shape (64, 8)\n", - "Computing power at step 3377 with output shape (64, 8)\n", - "Computing power at step 3406 with output shape (64, 8)\n", - "Computing power at step 3435 with output shape (64, 8)\n", - "Computing power at step 3464 with output shape (64, 8)\n", - "Computing power at step 3494 with output shape (64, 8)\n", - "Computing power at step 3524 with output shape (64, 8)\n", - "Computing power at step 3554 with output shape (64, 8)\n", - "Computing power at step 3584 with output shape (64, 8)\n", - "Computing power at step 3615 with output shape (64, 8)\n", - "Computing power at step 3646 with output shape (64, 8)\n", - "Computing power at step 3677 with output shape (64, 8)\n", - "Computing power at step 3709 with output shape (64, 8)\n", - "Computing power at step 3741 with output shape (64, 8)\n", - "Computing power at step 3773 with output shape (64, 8)\n", - "Computing power at step 3805 with output shape (64, 8)\n", - "Computing power at step 3837 with output shape (64, 8)\n", - "Computing power at step 3870 with output shape (64, 8)\n", - "Computing power at step 3903 with output shape (64, 8)\n", - "Computing power at step 3937 with output shape (64, 8)\n", - "Computing power at step 3971 with output shape (64, 8)\n", - "Computing power at step 4005 with output shape (64, 8)\n", - "Computing power at step 4039 with output shape (64, 8)\n", - "Computing power at step 4074 with output shape (64, 8)\n", - "Computing power at step 4108 with output shape (64, 8)\n", - "Computing power at step 4144 with output shape (64, 8)\n", - "Computing power at step 4179 with output shape (64, 8)\n", - "Computing power at step 4215 with output shape (64, 8)\n", - "Computing power at step 4251 with output shape (64, 8)\n", - "Computing power at step 4287 with output shape (64, 8)\n", - "Computing power at step 4324 with output shape (64, 8)\n", - "Computing power at step 4361 with output shape (64, 8)\n", - "Computing power at step 4398 with output shape (64, 8)\n", - "Computing power at step 4436 with output shape (64, 8)\n", - "Computing power at step 4474 with output shape (64, 8)\n", - "Computing power at step 4512 with output shape (64, 8)\n", - "Computing power at step 4551 with output shape (64, 8)\n", - "Computing power at step 4590 with output shape (64, 8)\n", - "Computing power at step 4629 with output shape (64, 8)\n", - "Computing power at step 4669 with output shape (64, 8)\n", - "Computing power at step 4709 with output shape (64, 8)\n", - "Computing power at step 4749 with output shape (64, 8)\n", - "Computing power at step 4790 with output shape (64, 8)\n", - "Computing power at step 4831 with output shape (64, 8)\n", - "Computing power at step 4872 with output shape (64, 8)\n", - "Computing power at step 4914 with output shape (64, 8)\n", - "Computing power at step 4956 with output shape (64, 8)\n", - "Computing power at step 4998 with output shape (64, 8)\n", - "Powers over time shape: (557, 5)\n" - ] - }, - { - "data": { - "image/png": "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T7Q7deokTZ42aNAghIaG2jokIiJyMuzpJiIiIndh06S7RYsWyMjIkJVZS7IrE+xBgwY1+ozbzz//PN577z1pu02bNkhNTa318b/88guWL1+O3377DVevXoWnpydatmyJESNGYMaMGejYsaMdoiYici1MuomIiMhd2DTpvnbtmkVZx44dZUm2+VJXjenQoUN4//3363VsQUEBZs2ahTVr1sjKS0pKcOPGDZw6dQrvv/8+/vGPf+Bvf/ubLcIlInJJBtGA7JJsWRmHlxMREZGrsvnw8g4dOsiS7IiICFs/Rb3odDo89thjMBgM9Tp27Nix2LFjh1QWGxuLXr16QavV4tdff8W1a9eg0+kwb9486HQ6vPrqq7YMn4jIZdzQ3kCFKF8Wkj3dRERE5Kps3tPtLEm2uYULF+LUqVMAgIkTJ2L16tW1Pvb111+XEm6NRoMvvvgCiYmJUn15eTlefvllvP322wCA+fPnY+DAgRg4cKANz4CIyDVkl8p7uQUICPYKdlA0RERERPZl03W6nTXhPnfuHP71r38BAB555BEMGzas1sdmZmbi3XfflbYXL14sS7gBwMPDA2+99RYSEhIAGO9j5xBzIiLrcrQ5su1Az0CoFWoHRUNERERkXzZNup2RKIp47LHHUFZWhqCgIFkCXRvLly9HcXExAKB9+/aYNWtWtfu+9dZbUCiML+mBAwdw7Nix+gdOROSickrlSXeIV4iDIiEiIiKyP7uv0w0YlxE7evQosrOzUVhYCD8/P4SGhqJXr15o3769XZ/7448/xr59+wAAb7/9dp0nctuwYYP0eOrUqRAEodp9W7dujcGDB+Pnn38GAHz33Xfo2bNn3YMmInJhTLqJiIjIndgt6S4oKMAHH3yATz75xOqs5pWaN2+OJ554As888wz8/f1tGsPly5fx17/+FQDQv39/TJ8+vU7Ha7Va/Pbbb9L2oEGDbnlMfHy8lHTv2LED//znP+v0nERErs58eHmIhkk3ERERuS67DC8/cOAAunXrhtdeew3p6ekQRbHan6tXr+LVV19F9+7dZQmuLTz11FMoLCyEh4cHPv300xp7qa05f/68NNu5IAi16rXu1auX9PiPP/6oW8BERG6APd1ERETkTmze033kyBGMGDFCug8aABQKBdq3b4+oqCj4+PiguLgYqampuHDhgpTUpqWlYfjw4di1a5cs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qFH4/PPPrR5HRETuJVubLdsO1XDmciIiInJ99Uq6T5w4AQBo164dHnjggRr3HTNmDNq1awdRFHHy5Mn6PB0REbkA9nQTERGRO6pX0p2TkwNBEHDHHXfUav+4uDjpOCIick/mE6kx6SYiIiJ3UK+ku6ioCAAQGBhYq/0r96s8joiI3E9uaa5smxOpERERkTuo95JhQNVa3ERERLfC4eVERETkjhqUdBMREdWGQTQgV8uebiIiInI/TLqJiMju8svyUSFWyMrY001ERETuoF7rdFc6dOgQ/vnPf9Zqv0q12R8AXn311XrHRUREzsV8aDnAnm4iIiJyD4IoimJdD1IoFHa/n1uv19u1/aYsKysL4eHhsrLMzEyEhYU5KCIiopodvHYQj217TNr29/DHvgn7HBgRERERUeNoUE93PfL1WuEEbUREroWTqBEREZG7qlfSPWDAACbGRERUaxZrdHNoOREREbmJeiXdu3btsnEYRETkytjTTURERO6Ks5cTEZHdZZdmy7ZDvUIdFAkRERFR42LSTUREdsfh5UREROSumHQTEZHdcXg5ERERuSsm3UREZHfs6SYiIiJ3xaSbiIjsShRF5GpzZWXs6SYiIiJ3waSbiIjsqqC8ABWGClkZe7qJiIjIXTDpJiIiuzKfuRxgTzcRERG5DybdRERkV+aTqPl5+MFD6eGgaIiIiIgaF5NuIiKyK06iRkRERO6MSTcREdkVlwsjIiIid8akm4iI7Io93UREROTOmHQTEZFdsaebiIiI3BmTbiIisivz2ctDvUIdFAkRERFR42PSTUREdsXh5UREROTOmHQTEZFdcXg5ERERuTMm3UREZDeiKCJXmysrY083ERERuRMm3UREZDcF5QXQGXSyMvZ0ExERkTth0k1ERHZjfj83wKSbiIiI3AuTbiIishvz+7n91H7wVHo6KBoiIiKixsekm4iI7IaTqBEREZG7Y9JNRER2Yz68PFgT7KBIiIiIiByDSTcREdkNe7qJiIjI3THpJiIiuzHv6eZyYURERORumHQTEZHdsKebiIiI3B2TbiIispvs0mzZdqhXqIMiISIiInIMJt1ERGQ3HF5ORERE7o5JNxER2YUoisgtzZWVcXg5ERERuRsm3UREZBcF5QUoN5TLyph0ExERkbth0k1ERHZhfj83AIR5hTkgEiIiIiLHYdJNRER2kVmSKdsO8AyAh9LDQdEQEREROQaTbiIisgvznm72chMREZE7YtJNRER2kVWaJdvmcmFERETkjph0ExGRXWSVyJNu9nQTERGRO2LSTUREdmExvNybSTcRERG5HybdRERkF+bDy9nTTURERO6ISTcREdmFeU93qDfv6SYiIiL3w6SbiIjsgvd0ExERETHpJiIiOyjWFaOkokRWxqSbiIiI3BGTbiIisjnzXm6AS4YRERGRe2LSTURENmc+iZqP2gfeam8HRUNERETkOEy6iYjI5iyWC+PQciIiInJTTLqJiMjmLCZR4xrdRERE5KaYdBMRkc1ZLBfG+7mJiIjITTHpJiIimzO/p5vDy4mIiMhdMekmIiKbY9JNREREZMSkm4iIbM78nu5Qbw4vJyIiIvfEpJuIiGzOvKc73CvcQZEQERERORaTbiIisilthRaF5YWyMvZ0ExERkbti0k1ERDZlPnM5wHu6iYiIyH0x6SYiIpsyT7o1Sg181b4OioaIiIjIsZh0ExGRTZnfzx3qFQpBEBwUDREREZFjMekmIiKbMp+5PMybQ8uJiIjIfTHpJiIimzIfXh7qxUnUiIiIyH0x6SYiIpvKLMmUbYd7c7kwIiIicl9MuomIyKbcoafbUFKCitxciKLo6FCIiIjIyakcHQAREbkW84nUXGm5MO35C8hcuBDFBw4AoghVZCSCH30UwZMnQVDxTyoRERFZcsme7tTUVPz3v//FpEmT0L17dwQFBUGtViM4OBjdunXD448/jt27d9er7cOHD+Opp55C586d4e/vD39/f3Tu3BlPPfUUDh8+bOMzISJqesx7ul0l6S45fBipiYko3r8fuNnDXZGRgcyFC3Fp5kwYSkocHCERERE5I0F0obFxx44dwxNPPIFDhw7Vav9BgwZh+fLlaN269S33LS8vx4svvogPP/yw2uGEgiDg//7v//DWW29BrVbXKfa6yMrKQni4/B7JzMxMhIW5xgdbImq6dAYdeq3sJStbN3od2ge1d1BEtlGRnY2L94+G/saNavfx6dcPLT/+CAoPj0aMjIiIiJydS42FO3/+vEXC3b59e8TGxiI0NBR5eXnYv38/rly5AgDYtWsX+vbti19//RUxMTE1tj1z5kysWLFC2o6JiUGfPn0AAL/99hsuXrwIURSxePFiFBQU4H//+5+Nz46IyPnllOZYlLlCT/f1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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "power_over_training_plot, freq_colors = plot.plot_training_power_over_time(\n", " template_power, \n", @@ -895,41 +191,10 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "id": "89459141", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Computing alpha values for template of shape: (8,)\n", - "[9.86076132e-32 8.23211396e+00 8.90238548e+01 2.01360777e+01\n", - " 6.19307773e+00]\n", - "Found 4 non-zero power coefficients.\n", - "Plotting 4 theoretical plateau lines.\n", - "Plotting alpha value 0: 15.448140529674484\n", - "Plotting alpha value 1: 4.320158676530766\n", - "Plotting alpha value 2: 1.8031489615435536\n", - "Plotting alpha value 3: 0.7741347159909615\n", - "Freq colors: ['C2', 'C3', 'C1', 'C4', 'C0'], number of alpha intervals: 3\n", - "Color for alpha value 0 (alpha=15.448140529674484): C2, number of points: 77\n", - "Color for alpha value 1 (alpha=4.320158676530766): C3, number of points: 179\n", - "Color for alpha value 2 (alpha=1.8031489615435536): C1, number of points: 306\n", - "Color for alpha values < 0.7741347159909615: C4, number of points: 4438\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "loss_plot = plot.plot_loss_curve(loss_history, template_power, show=False, freq_colors=freq_colors)\n" ] @@ -939,39 +204,17 @@ "execution_count": null, "id": "86b2dd11", "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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09GkSROULVsWjo6OKF26NNq0aZPt/m4NqampmDp1KipXrgwnJycEBgZi4MCBuHbtWrbvfDHl/AV4csx/++23Ub9+feV3r1mzJqZMmZLrMSk72Z1jZB3+6aefIjw8HG5ubihZsiQ6dOiAX3/9NU/rBwA2bNiAdu3awcfHB46OjihbtixeeOEFnDx50ux5mXu+lnWdpKen44033lCOq+XLl8fEiRPx8OFDAEBSUhJee+01VKhQAc7OzggJCcGMGTOMHj91du3ahe7duyMgIACOjo7w9fVFt27dsu2CL+t6/vrrr9G0aVN4enrCzc0NTZo0MTgn0NV/7969AICWLVvq7YdZ8/Po0aPo1asXypUrB0dHR3h6eqJChQqIjo42em7q4+ODDh064Pz589i+fXvOK56IiIomISIispDg4GABICtWrNAbPn36dAEgffv2FW9vb/H395fo6Gjp3r27jBs3TkREYmNjBYAMGTJEnJycJCQkRHr27CmdOnWS999/X0REkpOTpUWLFgJA3N3dpXnz5hITEyNVq1YVAFK6dGk5duyYQb3mzp0rAASANGzYUPr06SPPPPOMAJCxY8cKAAkODtabZvfu3QJAmjdvnu3y6ub5tCtXrkiNGjUEgLi6uspzzz0nvXv3lmeffVa8vLwMvku37Nmtt/79+0vp0qXFz89PevToIc8//7y4ubkJAGnSpImkpaWZXPe///5bgoKCBIAEBARIu3btpFOnTuLn5ycAJCwsTO7du5ftMj9N913ZnVLs379fGX/+/Hm9cdeuXZPatWsLAPH29pY2bdpIt27dlO0oJCRELl26pDfNihUrBIB07txZKlasKCVLlpSuXbtKt27dpFSpUgJAqlatKrdu3TJaz4iICGnQoIG4ublJ+/btpVevXtKmTRul3Pz588XOzk5ZFzExMdK0aVNxdHQUAPLGG2/ozffGjRsSGBgoAKR8+fLSpUsX6dWrlzz77LPi7e0tXl5eButk7969Sl1DQkKkc+fOEhUVpQxr27atPHr0SG8a3Tby6quviqenpwQHB0vPnj2lTZs24uLiIgCka9euetOMGzdOmjRpIgCkYsWKEhsbq3zmzJmjlJs5c6YAkNDQUGndurX07t1bmjdvrixz9+7dRavVKuU3bdqk1AeA3nxjY2MlISFBb50b2w6//fZbcXZ2Vn6v3r17S6tWrcTe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W9OmTVP79u2Vnp5u+3FlZ2crOztbUVFRat++ve677z5ZluUZ8/vf/14XX3yxIiIiFBsbq//5n//xac5AU0Gj6kajgMChUXWjUUDg0Ki60SggcGhU3WgUnMQCfRNRWVmpefPm6f3339e6deu0f/9+TZw4UZKUkJCgNWvWSJIKCwt16NAhLVq0SIsWLVJqaqoyMzN16NAhHTp0SAkJCTp+/Liuu+469evXT++++67Wr1+vkpISjR492utn/vnPf1arVq2Un5+v3/zmN5o7d642bNjg+f5NN92kw4cP6x//+IcKCgp0xRVXaMiQITp27Jgk6fnnn9ecOXP00EMP6d1331XHjh31+9//vl6Pf8aMGXr44Ye1a9cu9enTxzO/sLAwvfPOO1q6dKlPjys0NFTbtm3TokWLtGDBAv3pT3+SJL377ru64447NHfuXBUWFmr9+vUaOHBgveYMBBMaRaMAk9EoGgWYjEbRKMBkNIpGwQEWjDRhwgSrWbNmVqtWrTy3//mf//F8f9CgQdadd9553vtv377dkmSdPHnSsizLevPNNy1J1tdff+01rqb9zJs3zxo6dKjXtgMHDliSrMLCQs/9rr32Wq8xV155pXXvvfdalmVZ//znP63IyEirvLzca0xiYqL1xBNPWJZlWampqdbPf/5zr++npKRYl19++Xkf1759+yxJ1r/+9S+vx7Vu3bpqj6tfv371elw9evSw3G63Z8y9995r9ejRw7Isy1qzZo0VGRlplZaWnneOQDCgUTWjUYAZaFTNaBRgBhpVMxoFmIFG1YxGwZ94B73BfvCDH2jHjh2e2+OPP37esQUFBbrxxhvVuXNntWnTRoMGDZIkFRUV+fxz33//fb355ptq3bq155aUlCRJ2rNnj2fcuSOD53Ts2NHzMab3339fZWVluuCCC7z2s2/fPs8+du3apZSUFK99pKam+jxfSerfv3+1bcnJyfV6XFdddZVcLpfXnD777DNVVVXphz/8obp06aLu3bvr1ltv1apVq3T69Ol6zRlo7GiUfTQKaHg0yj4aBTQ8GmUfjQIaHo2yj0bBCVwk1mCtWrXSRRddVOe4U6dOKT09Xenp6Vq1apViYmJUVFSk9PR0nTlzxuefW1ZWphtvvFGPPPJIte917NjR8+fmzZt7fc/lcsntdnv20bFjR23atKnaPqKjo32eU11atWpV5za7j6s2bdq00XvvvadNmzbp9ddf1/333685c+Zo+/btfnlcgMlolH00Cmh4NMo+GgU0PBplH40CGh6Nso9GwQks0DcBn3zyiY4ePaqHH35YCQkJkr45N9W3nbtidFVVVbXt3912xRVXaM2aNeratWu1q0/bdcUVV6i4uFihoaHq2rVrjWN69Oih/Px8jR8/3rNt69at9fp5dudk53Hl5+d7fb1161ZdfPHFnguihIaGKi0tTWlpaZo9e7aio6P1xhtv6Cc/+Ynf5g40ZjTK/pxoFNDwaJT9OdEooOHRKPtzolFAw6NR9udEo1AbTnHTBHTu3FlhYWFavHix9u7dq5deeknz5s3zGtOlSxe5XC69/PLL+uqrr1RWViZJ6tq1q/Lz87V//34dOXJEbrdbWVlZOnbsmMaOHavt27drz549eu2115SRkVEtnueTlpam1NRUjRgxQq+//rr279+vLVu26Fe/+pUn1nfeeaeWLVum5cuX69NPP9Xs2bP10UcfOfvkfIvdx1VUVKScnBwVFhbqL3/5ixYvXqw777xTkvTyyy/r8ccf144dO/T555/rmWeekdvt1qWXXuq3eQONHY2yh0YBgUGj7KFRQGDQKHtoFBAYNMoeGoW6sEDfBMTExOjpp5/WCy+8oJ49e+rhhx/Wo48+6jWmU6dOeuCBBzRjxgzFxsYqOztbknT33XerWbNm6tmzp+ejSPHx8XrnnXdUVVWloUOHqnfv3po2bZqio6MVEmLvV8blcunVV1/VwIEDlZGRoUsuuURjxozR559/rtjYWEnSzTffrPvuu0/33HOPkpOT9fnnn2vq1KnOPjnfYvdxjR8/Xv/+9781YMAAZWVl6c4779TkyZMlffNxqLVr1+q6665Tjx49tHTpUv3lL3/RZZdd5rd5A40djbKHRgGBQaPsoVFAYNAoe2gUEBg0yh4ahbq4LMuyAj0JwBSDBw9W3759tXDhwkBPBQCqoVEATEajAJiMRgEwGY0KbryDHgAAAAAAAACAAGCBHgAAAAAAAACAAOAUNwAAAAAAAAAABADvoAcAAAAAAAAAIABYoAcAAAAAAAAAIABYoAcAAAAAAAAAIABYoAcAAAAAAAAAIABYoAcAAAAAAAAAIABYoAcAAAAAAAAAIABYoAcAAAAAAAAAIABYoAcAAAAAAAAAIAD+H0w/rRPKFMXAAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "irreps_plot = plot.plot_irreps(config['group'], config['group_name'], show=False)\n" ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "id": "9d8be8b8", "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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SZMmxYEHHhiffPJJHV4JkGrKu2X69Onx2muvxYQJE+o8P2yPeo2mERHXX399fPbZZ1t8j4033ngjsiyLHj16RIcOHap8vP7667Fy5co6n7tbt25VPl+yZElERBxyyCHV7tuzZ8/K2zdr0aJFdOjQocqxffbZJ1avXr3V825eGOvXr69227p166rcB6i7prhfgIZnt0Q8+uijcf3118d3vvOduOiii7brscCWNfX9cuyxx8ZJJ50UV155ZcyaNStuuumm+PGPf1zrxwM1a4q75eOPP45rr702rrrqqjjggAPqMjpst6L6fsKSkpIYMmRITJ06Na655ppqt1dUVERBQUHMmzcvCgsLq93epk2byv+9pfenKC8vr/GxOxoma3rO2thvv/0iImr8Kc/y5cujbdu2NV6FCmyfprhfgIbX1HfL008/Heecc04MGjQo7rnnnh1+PuDvmvp+SXXv3j369OkTDz74YFxyySX1+tzQ1DTF3TJx4sTYsGFDfPvb347FixdHRMS7774bERGrV6+OxYsXx/777x/NmzffofkgVe/RNGLTTz1mzpxZ4yXT3bt3jyzLolu3bnHwwQdv9Xn22WefGt+geMmSJVFSUrLNObp06RIREQsXLozjjjuuym0LFy6svH1Hde7cOTp06BALFiyodttLL70Uhx12WL2cB2h6+wXYOZrqbvmv//qvOPXUU6Nfv37x2GOPRVFRg3xrCE1aU90vNVm7dm2Nv50HbL+mtlveeeedWL16dfTq1avabePHj4/x48fHK6+8or9Qr+r91/MjNv0LOmTIkLj33nsr/wrrZqeddloUFhbGTTfdFFmWVbkty7L48MMPqzzPiy++GBs2bKg8NmfOnFi6dGmt5ujXr1907Ngx7rnnnir/cZ43b168/vrrMWjQoLq8vBp961vfqjbbM888E//7v/8bZ5xxRr2dB5q6prhfgIbXFHfL5ufr2rVrzJkzx1sJQQNpavvls88+q/HXbF966aV47bXXol+/fvVyHmjqmtpuufTSS+PJJ5+s8nHvvfdGRMTw4cPjySefrPbWAbCjGuxyguuuuy5mzJgRCxcurPKTgO7du8fYsWPj2muvjcWLF8fgwYNjzz33jLfffjuefPLJuOCCC2L06NEREXHeeefF448/HieeeGKUlZXFokWLYubMmdG9e/dazdCsWbOYMGFCjBgx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jjvuiKFDh8YDDzxQefzggw+O7373u/Hzn/88TjnllAafg6al3v7JHjNmTJSXl8dtt91Wq/vPnDkz+vbtGy1btoy2bdvGmWeeGUuXLq1yn65du8bw4cOrPXbAgAExYMCAys83f4P/yCOPxPXXXx+dO3eOVq1axccffxwREbNmzao8V/v27WPIkCHVLmkfPnx4tGnTJpYtWxaDBw+ONm3aRIcOHWL06NFRXl5e669DeXl55XmB+tHU98sdd9wRRx55ZJx66qlRUVHh10+gnjT13fJ569evjyeeeCJKS0vjH/7hH7b78cDfNfX98vHHH0fHjh0rg2lExBe+8IVo06ZNtGzZslZfE6C6prxbfvvb38Znn30WZ555ZpXjmz9/5JFHavU1ge1Rb9G0W7ducc4558R9990X77333lbvO27cuDjnnHOiR48ecccdd8Tll18ezzzzTBxzzDHx0Ucf1XmGW265JebOnRujR4+O8ePHR/PmzWP69OlRVlYWhYWFceutt8b5558fs2fPjv79+1c7V3l5eZxwwgnRrl27mDhxYpSWlsakSZNi6tSptTr/p59+Gl/4whdir732irZt28aoUaPib3/7W51fD7BJU94vH3/8cbz00ktxxBFHxJgxY2KvvfaKNm3aRElJSTz22GN1fj1A094tNXnqqafio48+irPPPrvOrwfYpKnvlwEDBsQvfvGLmDx5cixevDj+/Oc/x6hRo+Kvf/1rXHbZZXV+TdDUNeXdsn79+oiIaj94adWqVURE/O53v6vza4ItynbQtGnTsojIXn755WzRokVZUVFRdumll1beXlpamvXq1avy88WLF2eFhYXZuHHjqjzPa6+9lhUVFVU53qVLl2zYsGHVzllaWpqVlpZWfj5//vwsIrKSkpLs008/rTy+YcOGrGPHjlnv3r2ztWvXVh6fM2dOFhHZDTfcUHls2LBhWURkN998c5Vz9enTJ+vbt+82vw7XXHNN9v3vfz979NFHs4cffrjy+Y466qhs48aN23w8UJ39kmW///3vs4jI2rVrl+27777Z3XffnT344IPZkUcemRUUFGTz5s3b6uOB6uyWmn3rW9/KiouLs9WrV2/3Y4FN7JdN3n///ez444/PIqLyo3379tkLL7ywzccC1dktWfa73/0ui4jslltuqXL8F7/4RRYRWZs2bbb6eKiLen3jiZKSkhg6dGhMnTo1li9fXuN9Zs+eHRUVFVFWVharVq2q/OjUqVP06NEj5s+fX+fzDxs2rMpPHRYsWBArV66Miy++OFq0aFF5fNCgQdGzZ88a/3rjyJEjq3x+9NFHx1tvvbXNc996661x2223RVlZWZx55pkxffr0GDduXDz//PPx+OOP1/k1AZs01f2y+Wr1Dz/8MH72s5/FRRddFP/yL/8SzzzzTLRr1y7Gjh1b59cENN3d8nkff/xxzJ07N77xjW/E3nvvvX0vAqhRU94vrVq1ikMOOSSGDRsWs2bNip/85Cex3377xWmnnRZvvvlmnV8T0HR3y+GHHx7/+I//GBMmTIhp06bF4sWLY968eXHhhRdGs2bNYu3atXV+TbAl9f5uvddff3189tlnW3yPjTfeeCOyLIsePXpEhw4dqny8/vrrO/SXoLt161bl8yVLlkRExCGHHFLtvj179qy8fbMWLVpEhw4dqhzbZ599YvXq1XWa54orrog99tgjfvWrX9Xp8UBVTXG/bP6GpFu3bvGP//iPlcfbtGkTp5xySrz00kvx2Wef1f6FANU0xd3yeU888USsW7fOr+ZDPWuq++WMM86Id955J6ZPnx6nn356jBgxIp599tnYsGFDXHfdddv7UoDPaaq75YknnohDDz00zj333OjWrVuccsopUVZWFn369Ik2bdps70uBbSqq7ycsKSmJIUOGxNSpU+Oaa66pdntFRUUUFBTEvHnzorCwsNrt6T/o6RuHp8rLy2t87I6+qXhNz7kjWrZsGe3atYu//OUv9fq80FQ1xf2y+a9i7rvvvtVu69ixY2zcuDE++eST2GuvvXZoPmjKmuJu+bwHH3ww9tprrzj55JPr5fmATZrifnnrrbfiF7/4RbX3J2zbtm30798/nn/++R2aC2iauyUionPnzvGf//mf8cYbb8SKFSuiR48e0alTp9h///3j4IMP3qG5oCb1Hk0jNv3UY+bMmTFhwoRqt3Xv3j2yLItu3bpt8x/qffbZp8Y3KF6yZEmUlJRsc44uXbpERMTChQvjuOOOq3LbwoULK29vKGvWrIlVq1ZV+ykKUHdNbb/sv//+0alTp2p/eTIi4r333osWLVrEnnvuWS/ngqasqe2W1PLly2P+/PkxfPjwKC4urvfnh6auqe2X999/PyKixr+EvXHjRr8hA/Wkqe2WVI8ePaJHjx4REfGnP/0pli9fHsOHD6/380C9/3p+xKZ/QYcMGRL33ntvrFixosptp512WhQWFsZNN90UWZZVuS3Lsvjwww+rPM+LL74YGzZsqDw2Z86cWLp0aa3m6NevX3Ts2DHuueeeyr+0FhExb968eP3112PQoEF1eXnVrFu3LtasWVPt+C233BJZlsWJJ55YL+cBmt5+iYj49re/HUuXLo2nn3668tiqVaviZz/7WRx33HGxxx4NssqhSWmKu2WzRx55JCoqKvxqPjSQprZfDjrooNhjjz3i0UcfrfKa3n333XjuueeiT58+9XIeaOqa2m6pSUVFRVx99dXRqlWrau+TCvWhQa40jYi47rrrYsaMGbFw4cLo1atX5fHu3bvH2LFj49prr43FixfH4MGDY88994y33347nnzyybjgggti9OjRERFx3nnnxeOPPx4nnnhilJWVxaJFi2LmzJnRvXv3Ws3QrFmzmDBhQowYMSJKS0vjrLPOivfffz/uuuuu6Nq1a1xxxRX18lpXrFgRffr0ibPOOit69uwZERG//OUv46mnnooTTzwx/vmf/7lezgNs0pT2S0TEtddeG4899lh861vfiiuvvDL22muvuOeee2Ljxo0xfvz4ejsPNHVNbbds9uCDD8b+++8fAwYMqPfnBjZpSvulQ4cOce6558b9998fxx9/fJx22mmxZs2auPvuu2Pt2rVx7bXX1st5gKa1WyIiLrvssli3bl0cdthhsXHjxnjooYfipZdeip/+9Kdx4IEH1tt5oFK2g6ZNm5ZFRPbyyy9Xu23YsGFZRGS9evWqdtsTTzyR9e/fP2vdunXWunXrrGfPntmoUaOyhQsXVrnfpEmTss6dO2fFxcXZUUcdlS1YsCArLS3NSktLK+8zf/78LCKyWbNm1Tjjo48+mvXp0ycrLi7O2rZtm5199tnZu+++W23W1q1bV3vsjTfemG3ry7R69epsyJAh2UEHHZS1atUqKy4uznr16pWNHz8+27Bhw1YfC2yZ/fJ3ixYtyk499dTsC1/4QtayZcvsuOOOy1566aVaPRaoym75uz//+c9ZRGRXXnllre4PbJ39ssnGjRuzyZMnZ4cddljWpk2brE2bNtmxxx6b/frXv97mY4Hq7Ja/fx0OPfTQrHXr1tmee+6ZHX/88fYKDaogyz53rTYAAAAAQBPmjfAAAAAAABKiKQAAAABAQjQFAAAAAEiIpgAAAAAACdEUAAAAACAhmgIAAAAAJERTAAAAAIBEUd4D1KTPRXfkPUK8MuXKvEcAGkD32/PfL4uusl+gsTnotvx3y5vX2C3Q2Iz83dC8R4h7+s7IewSgAXzt6HF5jxC/eu66vEeArXKlKQAAAABAQjQFAAAAAEiIpgAAAAAACdEUAAAAACAhmgIAAAAAJERTAAAAAICEaAoAAAAAkBBNAQAAAAASoikAAAAAQEI0BQAAAABIiKYAAAAAAAnRFAAAAAAgIZoCAAAAACREUwAAAACAhGgKAAAAAJAQTQEAAAAAEqIpAAAAAEBCNAUAAAAASIimAAAAAAAJ0RQAAAAAICGaAgAAAAAkRFMAAAAAgIRoCgAAAACQEE0BAAAAABKiKQAAAABAQjQFAAAAAEiIpgAAAAAACdEUAAAAACAhmgIAAAAAJERTAAAAAICEaAoAAAAAkCjKe4CatL/3t3mPEDEl7wGAhtDjtj/nPULEVXkPANS3F4ZOzHuEiLgy7wGAerboiHV5jxBRkfcAQEMoeP6/8x4BdnmuNAUAAAAASIimAAAAAAAJ0RQAAAAAICGaAgAAAAAkRFMAAAAAgIRoCgAAAACQEE0BAAAAABKiKQAAAABAQjQFAAAAAEiIpgAAAAAACdEUAAAAACAhmgIAAAAAJERTAAAAAICEaAoAAAAAkBBNAQAAAAASoikAAAAAQEI0BQAAAABIiKYAAAAAAAnRFAAAAAAgIZoCAAAAACREUwAAAACAhGgKAAAAAJAQTQEAAAAAEqIpAAAAAEBCNAUAAAAASIimAAAAAAAJ0RQAAAAAICGaAgAAAAAkRFMAAAAAgIRoCgAAAACQEE0BAAAAABKiKQAAAABAoijvAWryv3cfmfcIQCP15vd75j0C0Agd9cDovEeIN67NewKgvi39wVfzHgFopL72P2vyHgF2ea40BQAAAABIiKYAAAAAAAnRFAAAAAAgIZoCAAAAACREUwAAAACAhGgKAAAAAJAQTQEAAAAAEqIpAAAAAEBCNAUAAAAASIimAAAAAAAJ0RQAAAAAICGaAgAAAAAkRFMAAAAAgIRoCgAAAACQEE0BAAAAABKiKQAAAABAQjQFAAAAAEiIpgAAAAAACdEUAAAAACAhmgIAAAAAJERTAAAAAICEaAoAAAAAkBBNAQAAAAASoikAAAAAQEI0BQAAAABIiKYAAAAAAAnRFAAAAAAgIZoCAAAAACREUwAAAACAhGgKAAAAAJAQTQEAAAAAEgVZlmV5D/F5y97dL+8RovM/LM97BKABVKzokfcIsUenN/IeAahnJ7QamvcI8ctPZ+Q9AlDPfN8CNBT7BbbNlaYAAAAAAAnRFAAAAAAgIZoCAAAAACREUwAAAACAhGgKAAAAAJAQTQEAAAAAEqIpAAAAAEBCNAUAAAAASIimAAAAAAAJ0RQAAAAAICGaAgAAAAAkRFMAAAAAgIRoCgAAAACQEE0BAAAAABKiKQAAAABAQjQFAAAAAEiIpgAAAAAACdEUAAAAACAhmgIAAAAAJERTAAAAAICEaAoAAAAAkBBNAQAAAAASoikAAAAAQEI0BQAAAABIiKYAAAAAAAnRFAAAAAAgIZoCAAAAACREUwAAAACAhGgKAAAAAJAQTQEAAAAAEqIpAAAAAEBCNAUAAAAASBTlPUBNTh57Vd4jxCv35D0B0BBO2P+wvEeIpyvyngCob/PeejHvEYBGqDzL/5sGV9lA4/SNQwfmPUL84v28J4Ct899AAAAAAICEaAoAAAAAkBBNAQAAAAASoikAAAAAQEI0BQAAAABIiKYAAAAAAAnRFAAAAAAgIZoCAAAAACREUwAAAACAhGgKAAAAAJAQTQEAAAAAEqIpAAAAAEBCNAUAAAAASIimAAAAAAAJ0RQAAAAAICGaAgAAAAAkRFMAAAAAgIRoCgAAAACQEE0BAAAAABKiKQAAAABAQjQFAAAAAEiIpgAAAAAACdEUAAAAACAhmgIAAAAAJERTAAAAAICEaAoAAAAAkBBNAQAAAAASoikAAAAAQEI0BQAAAABIiKYAAAAAAAnRFAAAAAAgUZT3ADX53b9OyXuEiLgy7wGABvDOjV/NewSgETr4pxflPUK8+f28JwDq22F3XpL3CPHHCXlPADSET/t1zXsE2OW50hQAAAAAICGaAgAAAAAkRFMAAAAAgIRoCgAAAACQEE0BAAAAABKiKQAAAABAQjQFAAAAAEiIpgAAAAAACdEUAAAAACAhmgIAAAAAJERTAAAAAICEaAoAAAAAkBBNAQAAAAASoikAAAAAQEI0BQAAAABIiKYAAAAAAAnRFAAAAAAgIZoCAAAAACREUwAAAACAhGgKAAAAAJAQTQEAAAAAEqIpAAAAAEBCNAUAAAAASIimAAAAAAAJ0RQAAAAAICGaAgAAAAAkRFMAAAAAgIRoCgAAAACQEE0BAAAAABKiKQAAAABAQjQFAAAAAEiIpgAAAAAAiYIsy7K8h/i8N5bul/cI0eOA5XmPADSAp9/umfcIMbDbn/MeAahnA/c4I+8R4umKWXmPANSzkw68PO8RYt47d+Y9AtAA3nk3/+5y4D/oLuzaXGkKAAAAAJAQTQEAAAAAEqIpAAAAAEBCNAUAAAAASIimAAAAAAAJ0RQAAAAAICGaAgAAAAAkRFMAAAAAgIRoCgAAAACQEE0BAAAAABKiKQAAAABAQjQFAAAAAEiIpgAAAAAACdEUAAAAACAhmgIAAAAAJERTAAAAAICEaAoAAAAAkBBNAQAAAAASoikAAAAAQEI0BQAAAABIiKYAAAAAAAnRFAAAAAAgIZoCAAAAACREUwAAAACAhGgKAAAAAJAQTQEAAAAAEqIpAAAAAEBCNAUAAAAASIimAAAAAAAJ0RQAAAAAICGaAgAAAAAkivIeoCbfvvmqvEeI39+X9wRAQ7josQvyHiHe/H7eEwD1bdGkf8p7BKAR+uQnzfIeAWikpn/UL+8R4oZ/yHsC2DpXmgIAAAAAJERTAAAAAICEaAoAAAAAkBBNAQAAAAASoikAAAAAQEI0BQAAAABIiKYAAAAAAAnRFAAAAAAgIZoCAAAAACREUwAAAACAhGgKAAAAAJAQTQEAAAAAEqIpAAAAAEBCNAUAAAAASIimAAAAAAAJ0RQAAAAAICGaAgAAAAAkRFMAAAAAgIRoCgAAAACQEE0BAAAAABKiKQAAAABAQjQFAAAAAEiIpgAAAAAACdEUAAAAACAhmgIAAAAAJERTAAAAAICEaAoAAAAAkBBNAQAAAAASoikAAAAAQEI0BQAAAABIiKYAAAAAAAnRFAAAAAAgUZBlWZb3EAAAAAAAuwpXmgIAAAAAJERTAAAAAICEaAoAAAAAkBBNAQAAAAASoikAAAAAQEI0BQAAAABIiKYAAAAAAAnRFAAAAAAgIZoCAAAAACREUwAAAACAhGgKAAAAAJAQTQEAAAAAEqIpAAAAAEBCNAUAAAAASIimAAAAAACJ7Yqm06dPj4KCgmjRokUsW7as2u0DBgyI3r1719twu6qXXnopLr744ujbt280a9YsCgoKtnr///t//2988YtfjBYtWkSPHj1i8uTJO2lS2D3YLZtsz26ZMmVKnHHGGXHggQdGQUFBDB8+fOcNCrsR+2WT2u6XpUuXxk033RRHHnlk7LPPPtG+ffsYMGBA/OpXv9rJE8OuzW7ZpLa7Ze3atfGd73wnevfuHXvttVe0adMmDj300Ljrrrti48aNO3lq2LXZL5tsb3fZ7D//8z+joKAgCgoKYtWqVQ08JY1dna40Xb9+fdx22231Pctu46mnnor7778/CgoKoqSkZKv3vffee+O8886LXr16xeTJk+MrX/lKXHrppTFhwoSdNC3sPuyW2u+WCRMmxK9//evo1atXFBUV7aQJYfdlv9Ruv/zsZz+LCRMmxEEHHRRjx46NH/zgB7FmzZoYOHBgTJs2bSdODLsHu6V2u2Xt2rXxxz/+Mb7xjW/ErbfeGhMnToxDDz00rrjiihg2bNhOnBh2H/ZL7f+/0WYVFRXx3e9+N1q3bt3A09FU1CmaHnbYYXHffffFe++9V9/z1Mm6deuioqJip53voosuir/+9a+xYMGCGDhw4Bbvt3bt2rjuuuti0KBB8fjjj8f5558fDzzwQJx99tlxyy23xOrVq3fazLA7sFtqt1siIn7zm9/EqlWrYt68eVFcXLyTJoTdl/1Su/1y7LHHxjvvvBMPPfRQjBo1Ki677LJ44YUXomfPnnHDDTfstHlhd2G31G63tG3bNl588cX44Q9/GBdffHGMHDkyHnjggRg1alQ8/PDDsWLFip02M+wu7Jfa/3+jzaZOnRpLly6N8847r4Gno6moUzQdM2ZMlJeX1/qnHjNnzoy+fftGy5Yto23btnHmmWfG0qVLq9yna9euNf566YABA2LAgAGVnz/77LNRUFAQjzzySFx//fXRuXPnaNWqVXz88ccRETFr1qzKc7Vv3z6GDBlS7ZL24cOHR5s2bWLZsmUxePDgaNOmTXTo0CFGjx4d5eXl23w9++67b7Rs2XKb95s/f358+OGHcfHFF1c5PmrUqPjkk09i7ty523wOaErsltrtloiILl261PpXVAD7pbb7pVevXtG+ffsqx4qLi+Mb3/hGvPvuu7FmzZptPgc0JXZL7b93qUnXrl0jIuKjjz6q83NAY2W/bN9++ctf/hLXX3993HzzzbH33nvX+nGwNXWKpt26dYtzzjmnVj/1GDduXJxzzjnRo0ePuOOOO+Lyyy+PZ555Jo455pgd+o/jLbfcEnPnzo3Ro0fH+PHjo3nz5jF9+vQoKyuLwsLCuPXWW+P888+P2bNnR//+/audq7y8PE444YRo165dTJw4MUpLS2PSpEkxderUOs/0ea+88kpERPTr16/K8b59+8Yee+xReTuwid0CNBT7ZcesWLEiWrVqFa1atWrwc8HuxG7ZPhs2bIhVq1bF0qVL48knn4yJEydGly5d4qCDDqr3c8Huzn7ZPj/4wQ+iU6dOceGFF9b7c9OEZdth2rRpWURkL7/8crZo0aKsqKgou/TSSytvLy0tzXr16lX5+eLFi7PCwsJs3LhxVZ7ntddey4qKiqoc79KlSzZs2LBq5ywtLc1KS0srP58/f34WEVlJSUn26aefVh7fsGFD1rFjx6x3797Z2rVrK4/PmTMni4jshhtuqDw2bNiwLCKym2++ucq5+vTpk/Xt27f2X5Asy0aNGpVt6cs4atSorLCwsMbbOnTokJ155pnbdS5orOyW6ra2Wz6vdevWNb5GwH6pyfbslyzLsjfeeCNr0aJFNnTo0O06DzRmdkt1tdktDz/8cBYRlR/9+vXL/vCHP2zXeaCxs1+q29Z+efXVV7PCwsLsl7/8ZZZlWXbjjTdmEZF98MEH23Ue+Lw6XWkaEVFSUhJDhw6NqVOnxvLly2u8z+zZs6OioiLKyspi1apVlR+dOnWKHj16xPz58+t6+hg2bFiVS7UXLFgQK1eujIsvvjhatGhReXzQoEHRs2fPGn8VfuTIkVU+P/roo+Ott96q80yft3bt2mjevHmNt7Vo0SLWrl1bb+eCxsJuARqK/bL9Pv300zjjjDOiZcuWTfqPUcDW2C21d+yxx8bTTz8ds2bNipEjR0azZs3ik08+qffzQGNhv9TOpZdeGieddFJ8/etfr9fnhTpH04iI66+/Pj777LMtfhP9xhtvRJZl0aNHj+jQoUOVj9dffz1WrlxZ53N369atyudLliyJiIhDDjmk2n179uxZeftmLVq0iA4dOlQ5ts8++9TrH2dq2bJlbNiwocbb1q1bt0Pv/wONmd0CNBT7pfbKy8vjzDPPjD/96U/x+OOPx/77798g54HGwG6pnX333Te+9rWvxemnnx5TpkyJk08+OQYOHOgPQcFW2C9b9+ijj8YLL7wQkyZNqrfnhM2KduTBJSUlMWTIkJg6dWpcc8011W6vqKiIgoKCmDdvXhQWFla7vU2bNpX/e0t/0KS8vLzGx+5ocKzpOevbfvvtF+Xl5bFy5cro2LFj5fENGzbEhx9+6P98wBbYLUBDsV9q7/zzz485c+bEgw8+GMcdd9xOPTfsbuyWujn99NPjuuuui5/97GfehxC2wH7ZuquuuirOOOOMaN68eSxevDgi/v7H5ZYuXRobNmzQXqizHYqmEZt+6jFz5syYMGFCtdu6d+8eWZZFt27d4uCDD97q8+yzzz41vkHxkiVLoqSkZJtzdOnSJSIiFi5cWO0b+4ULF1bevjMddthhEbHpEvZvfOMblccXLFgQFRUVlbcD1dktQEOxX7btqquuimnTpsWdd94ZZ511Vm5zwO7Ebtl+m9+u7K9//WvOk8CuzX7ZsqVLl8ZDDz0UDz30ULXbDj/88Dj00EPjv//7v3f6XDQOO/Tr+RGb/gUdMmRI3HvvvdV+reK0006LwsLCuOmmmyLLsiq3ZVkWH374YZXnefHFF6v8OvucOXNi6dKltZqjX79+0bFjx7jnnnti/fr1lcfnzZsXr7/+egwaNKguL2+HHHfccdG2bduYMmVKleNTpkyJVq1a5TIT7C7sFqCh2C9bd/vtt8fEiRNjzJgxcdlll+UyA+yO7JYtW7VqVbXXHRFx//33R8SmmYEts1+27Mknn6z28e1vfzsiIh544IH40Y9+tNNnovHY4StNIyKuu+66mDFjRixcuDB69epVebx79+4xduzYuPbaa2Px4sUxePDg2HPPPePtt9+OJ598Mi644IIYPXp0REScd9558fjjj8eJJ54YZWVlsWjRopg5c2Z07969VjM0a9YsJkyYECNGjIjS0tI466yz4v3334+77rorunbtGldccUV9vNSI2PRTmBkzZkTEpqtGIyLGjh0bEZt+8jJ06NCI2HQp+y233BKjRo2KM844I0444YR47rnnYubMmTFu3Lho27Ztvc0EjZHdUvNuiYj4+c9/Hq+++mpERGzcuDH+8Ic/VN73m9/8Znz5y1+ut7mgMbJfat4vTz75ZFx99dXRo0eP+OIXvxgzZ86s8jwDBw6Mfffdt97mgsbGbql5t8ycOTPuueeeGDx4cJSUlMSaNWvil7/8ZTz99NNxyimneAsQqAX7peb9Mnjw4GqP3Xxl6UknnRTt27evt5logrLtMG3atCwispdffrnabcOGDcsiIuvVq1e125544omsf//+WevWrbPWrVtnPXv2zEaNGpUtXLiwyv0mTZqUde7cOSsuLs6OOuqobMGCBVlpaWlWWlpaeZ/58+dnEZHNmjWrxhkfffTRrE+fPllxcXHWtm3b7Oyzz87efffdarO2bt262mNvvPHGrDZfks0z1PSRzrrZ1KlTs0MOOSRr3rx51r179+xHP/pRVlFRsc3zQFNht1SdoTa7ZfPXpaaPadOmbfNc0FTYL1Vn2NZ+2fx8W/qYP3/+Ns8FTYHdUnWGbe2Wl19+OTvjjDOyAw88MCsuLs5at26dHX744dkdd9yRbdy4cZvngabEfqk6Q227S03n+OCDD7Z5Htiagiyr4fckAAAAAACaqB1+T1MAAAAAgMZENAUAAAAASIimAAAAAAAJ0RQAAAAAICGaAgAAAAAkRFMAAAAAgIRoCgAAAACQKMp7gJp0nTwp7xFi8Xe/l/cIQAM4sfd1eY8Qv/ifcXmPANSzAV+/Le8R4tn/d03eIwD17MNlnfMeIdp1Xpb3CEADqFjRI+8RYo9Ob+Q9AmyVK00BAAAAABKiKQAAAABAQjQFAAAAAEiIpgAAAAAACdEUAAAAACAhmgIAAAAAJERTAAAAAICEaAoAAAAAkBBNAQAAAAASoikAAAAAQEI0BQAAAABIiKYAAAAAAAnRFAAAAAAgIZoCAAAAACREUwAAAACAhGgKAAAAAJAQTQEAAAAAEqIpAAAAAEBCNAUAAAAASIimAAAAAAAJ0RQAAAAAICGaAgAAAAAkRFMAAAAAgIRoCgAAAACQEE0BAAAAABKiKQAAAABAQjQFAAAAAEiIpgAAAAAACdEUAAAAACAhmgIAAAAAJERTAAAAAIBEUd4D1KTHZS/mPULEd/MeAGgIK0rb5T0C0Ai9Xebn0ED9G3jT9/IeIX4/Ne8JgIbwtbPPzXuE+PUzeU8AW+c7fAAAAACAhGgKAAAAAJAQTQEAAAAAEqIpAAAAAEBCNAUAAAAASIimAAAAAAAJ0RQAAAAAICGaAgAAAAAkRFMAAAAAgIRoCgAAAACQEE0BAAAAABKiKQAAAABAQjQFAAAAAEiIpgAAAAAACdEUAAAAACAhmgIAAAAAJERTAAAAAICEaAoAAAAAkBBNAQAAAAASoikAAAAAQEI0BQAAAABIiKYAAAAAAAnRFAAAAAAgIZoCAAAAACREUwAAAACAhGgKAAAAAJAQTQEAAAAAEqIpAAAAAEBCNAUAAAAASIimAAAAAAAJ0RQAAAAAICGaAgAAAAAkivIeoCaLx30l7xGARurqyx/Je4SIuDLvAYB69vbJ9+U9QkRcnfcAQD1r/99r8h4BaKT2WF+e9wiwy3OlKQAAAABAQjQFAAAAAEiIpgAAAAAACdEUAAAAACAhmgIAAAAAJERTAAAAAICEaAoAAAAAkBBNAQAAAAASoikAAAAAQEI0BQAAAABIiKYAAAAAAAnRFAAAAAAgIZoCAAAAACREUwAAAACAhGgKAAAAAJAQTQEAAAAAEqIpAAAAAEBCNAUAAAAASIimAAAAAAAJ0RQAAAAAICGaAgAAAAAkRFMAAAAAgIRoCgAAAACQEE0BAAAAABKiKQAAAABAQjQFAAAAAEiIpgAAAAAACdEUAAAAACAhmgIAAAAAJERTAAAAAICEaAoAAAAAkCjKe4CaLBwxJe8RIuLKvAcAGsA9S0rzHiH+pUfeEwD17bDbLs57hPjDnXlPANS3bMJHeY8ANFLvHdM67xFgl+dKUwAAAACAhGgKAAAAAJAQTQEAAAAAEqIpAAAAAEBCNAUAAAAASIimAAAAAAAJ0RQAAAAAICGaAgAAAAAkRFMAAAAAgIRoCgAAAACQEE0BAAAAABKiKQAAAABAQjQFAAAAAEiIpgAAAAAACdEUAAAAACAhmgIAAAAAJERTAAAAAICEaAoAAAAAkBBNAQAAAAASoikAAAAAQEI0BQAAAABIiKYAAAAAAAnRFAAAAAAgIZoCAAAAACREUwAAAACAhGgKAAAAAJAQTQEAAAAAEqIpAAAAAEBCNAUAAAAASIimAAAAAAAJ0RQAAAAAICGaAgAAAAAkivIeAGBnWrK0fd4jAI3Q37pU5D0C0AgtWtEh7xGARurTzuV5jwC7PFeaAgAAAAAkRFMAAAAAgIRoCgAAAACQEE0BAAAAABKiKQAAAABAQjQFAAAAAEiIpgAAAAAACdEUAAAAACAhmgIAAAAAJERTAAAAAICEaAoAAAAAkBBNAQAAAAASoikAAAAAQEI0BQAAAABIiKYAAAAAAAnRFAAAAAAgIZoCAAAAACREUwAAAACAhGgKAAAAAJAQTQEAAAAAEqIpAAAAAEBCNAUAAAAASIimAAAAAAAJ0RQAAAAAICGaAgAAAAAkRFMAAAAAgIRoCgAAAACQEE0BAAAAABKiKQAAAABAQjQFAAAAAEiIpgAAAAAAiaK8B6jJwf/fOXmPEG+W5T0B0BDePun+vEeIiO/nPQBQz7p/78W8R4i4Iu8BgPr25rHT8h4hIsbkPQDQAHr2Xpr3CLDLc6UpAAAAAEBCNAUAAAAASIimAAAAAAAJ0RQAAAAAICGaAgAAAAAkRFMAAAAAgIRoCgAAAACQEE0BAAAAABKiKQAAAABAQjQFAAAAAEiIpgAAAAAACdEUAAAAACAhmgIAAAAAJERTAAAAAICEaAoAAAAAkBBNAQAAAAASoikAAAAAQEI0BQAAAABIiKYAAAAAAAnRFAAAAAAgIZoCAAAAACREUwAAAACAhGgKAAAAAJAQTQEAAAAAEqIpAAAAAEBCNAUAAAAASIimAAAAAAAJ0RQAAAAAICGaAgAAAAAkRFMAAAAAgIRoCgAAAACQEE0BAAAAABJFeQ9Qk25n/iHvESLK8h4AaAi9Jl+c9wjx+ri8JwDq2xt3/VPeIwCN0Bfvzf/7loU35j0B0BAWrWyf9wiwy3OlKQAAAABAQjQFAAAAAEiIpgAAAAAACdEUAAAAACAhmgIAAAAAJERTAAAAAICEaAoAAAAAkBBNAQAAAAASoikAAAAAQEI0BQAAAABIiKYAAAAAAAnRFAAAAAAgIZoCAAAAACREUwAAAACAhGgKAAAAAJAQTQEAAAAAEqIpAAAAAEBCNAUAAAAASIimAAAAAAAJ0RQAAAAAICGaAgAAAAAkRFMAAAAAgIRoCgAAAACQEE0BAAAAABKiKQAAAABAQjQFAAAAAEiIpgAAAAAACdEUAAAAACAhmgIAAAAAJERTAAAAAICEaAoAAAAAkCjKe4CafHDRV/IeAWik/uHWF/IeIWLcFXlPANSzuwdNy3uEiPhe3gMA9ezAm3aB71tu9H0LNEZdv/2HvEeIOCPvAWDrXGkKAAAAAJAQTQEAAAAAEqIpAAAAAEBCNAUAAAAASIimAAAAAAAJ0RQAAAAAICGaAgAAAAAkRFMAAAAAgIRoCgAAAACQEE0BAAAAABKiKQAAAABAQjQFAAAAAEiIpgAAAAAACdEUAAAAACAhmgIAAAAAJERTAAAAAICEaAoAAAAAkBBNAQAAAAASoikAAAAAQEI0BQAAAABIiKYAAAAAAAnRFAAAAAAgIZoCAAAAACREUwAAAACAhGgKAAAAAJAQTQEAAAAAEqIpAAAAAEBCNAUAAAAASIimAAAAAAAJ0RQAAAAAICGaAgAAAAAkRFMAAAAAgERBlmVZ3kMAAAAAAOwqXGkKAAAAAJAQTQEAAAAAEqIpAAAAAEBCNAUAAAAASIimAAAAAAAJ0RQAAAAAICGaAgAAAAAkRFMAAAAAgIRoCgAAAACQEE0BAAAAABKiKQAAAABAQjQFAAAAAEiIpgAAAAAACdEUAAAAACAhmgIAAAAAJLYrmk6fPj0KCgqiRYsWsWzZsmq3DxgwIHr37l1vw+2qXnrppbj44oujb9++0axZsygoKNjifQsKCmr8uO2223bixLBrs1s22Z7dEhHx/vvvx4UXXhidO3eOFi1aRNeuXeM73/nOTpoWdg/2yya13S+bv15b+njwwQd38uSwa7JbNtme713++te/xtVXXx09evSIli1bRpcuXeI73/lOvPPOOztxYtj12S+bbM9+ef/992PEiBHRsWPHaNmyZRx++OExa9asnTgtjVWdrjRdv359k45+Tz31VNx///1RUFAQJSUl27z/wIEDY8aMGVU+TjnllJ0wKexe7Jba75alS5fGEUccEfPmzYuRI0fG3XffHeedd1588MEHO2la2L3YL7XbL8ccc0y171lmzJgRhx9+eBQWFsbxxx+/E6eGXZ/dUrvdUlFREQMHDoy77747Tj311Jg8eXKcddZZMWvWrPjqV78aa9as2YlTw+7Bfqndfvn444+jf//+8cQTT8SFF14YEydOjD333DPKysrioYce2okT0yhl22HatGlZRGSHHXZYVlxcnC1btqzK7aWlpVmvXr225ynrxdq1a7Py8vKddr4VK1Zkn376aZZlWTZq1Khsa1/GiMhGjRq1s0aD3ZLdssn27JaTTjop69atW7Zq1aqdNR7sluyXTbZnv3zep59+mu25557ZwIEDG2o82O3YLZvUdrc8//zzWURkP/7xj6sc/8lPfpJFRDZ79uwGnxV2F/bLJrXdLz/84Q+ziMieeeaZymPl5eXZEUcckXXq1Clbv379TpmXxqlOV5qOGTMmysvLa/1Tj5kzZ0bfvn2jZcuW0bZt2zjzzDNj6dKlVe7TtWvXGD58eLXHDhgwIAYMGFD5+bPPPhsFBQXxyCOPxPXXXx+dO3eOVq1axccffxwREbNmzao8V/v27WPIkCHVLmkfPnx4tGnTJpYtWxaDBw+ONm3aRIcOHWL06NFRXl6+zdez7777RsuWLWv12jdbu3ZtrFu3brseA02N3VK73fLnP/855s2bF1dddVW0a9cu1q1bFxs3btzm46Aps1+2/3uXzX7+85/HmjVr4uyzz67T46Exs1tqt1s2z7TvvvtWOb7ffvtFRNR5P0FjZr/Ubr8899xz0aFDhzjuuOMqj+2xxx5RVlYWK1asiN/85jfbfA7YkjpF027dusU555wT9913X7z33ntbve+4cePinHPOiR49esQdd9wRl19+eTzzzDNxzDHHxEcffVSX00dExC233BJz586N0aNHx/jx46N58+Yxffr0KCsri8LCwrj11lvj/PPPj9mzZ0f//v2rnau8vDxOOOGEaNeuXUycODFKS0tj0qRJMXXq1DrPtCXTp0+P1q1bR8uWLeNLX/qSS8RhC+yW2vnVr34VEZu+kTj++OOjZcuW0bJlyzjppJNi8eLF9XYeaEzsl7p78MEHo2XLlnHaaac16Hlgd2S31E6/fv2idevW8YMf/CB+/etfx7Jly+I3v/lNXH311XHEEUfE1772tXo7FzQW9kvtrF+/vsa42qpVq4iI+N3vfldv56IJ2p7LUjdfJv7yyy9nixYtyoqKirJLL7208vbPXya+ePHirLCwMBs3blyV53nttdeyoqKiKse7dOmSDRs2rNo5S0tLs9LS0srP58+fn0VEVlJSUnmpdpZl2YYNG7KOHTtmvXv3ztauXVt5fM6cOVlEZDfccEPlsWHDhmURkd18881VztWnT5+sb9++tf+CZNv+FbevfvWr2Z133pn97Gc/y6ZMmZL17t07i4js7rvv3q7zQGNmt1S3td1y6aWXZhGRtWvXLjvxxBOzRx99NLv99tuzNm3aZN27d88++eST7ToXNGb2S3Xb8+v5H374Yda8efOsrKxsu84BjZ3dUt22dsucOXOy/fbbL4uIyo8TTjghW7NmzXadBxo7+6W6re2X7373u9kee+yRLV68uMrxM888M4uI7JJLLtmuc0GqTleaRkSUlJTE0KFDY+rUqbF8+fIa7zN79uyoqKiIsrKyWLVqVeVHp06dokePHjF//vy6nj6GDRtW5acJCxYsiJUrV8bFF18cLVq0qDw+aNCg6NmzZ8ydO7fac4wcObLK50cffXS89dZbdZ6pJs8//3xcdtll8c1vfjNGjhwZv/vd76J3794xZsyYWLt2bb2eCxoDu2Xb/va3v0VERKdOnWLu3LlRVlYWo0ePjvvuuy8WLVrkanbYAvtl+z3++OOxYcMGv5oPW2G31E6HDh2iT58+MW7cuPiP//iP+Nd//dd47rnnYsSIEfV6HmhM7JdtO++886KwsDDKysrihRdeiEWLFsWtt94aTz75ZESE7sIOqXM0jYi4/vrr47PPPtvie2y88cYbkWVZ9OjRIzp06FDl4/XXX4+VK1fW+dzdunWr8vmSJUsiIuKQQw6pdt+ePXtW3r5ZixYtokOHDlWO7bPPPrF69eo6z1QbzZs3j0suuSQ++ugjl4nDFtgtW7f5G5eysrLYY4+/r/EzzjgjioqK4oUXXqi3c0FjY79snwcffDDatm0bJ510UoOdAxoDu2Xr3nrrrTj22GPj3HPPjTFjxsQ///M/x4033hh33313PP744zFv3rx6Oxc0NvbL1n35y1+Ohx56KBYtWhRHHXVUHHTQQfFv//Zvceedd0ZERJs2bertXDQ9RTvy4JKSkhgyZEhMnTo1rrnmmmq3V1RUREFBQcybNy8KCwur3Z7+w1tQUFDjOcrLy2t87I6+WXhNz7mzHHDAARER8Ze//CW3GWBXZrds3f777x8R1f+YQmFhYbRr167Bf/gDuzP7pfbeeeedeO655+KCCy6IZs2a7dRzw+7Gbtm66dOnx7p16+Lkk0+ucvyb3/xmRGz67Tw/nIGa2S/bdvrpp8c3v/nNePXVV6O8vDwOP/zwePbZZyMi4uCDD94pM9A47VA0jdj0U4+ZM2fGhAkTqt3WvXv3yLIsunXrts1/UPfZZ58a36B4yZIlUVJSss05unTpEhERCxcurPJX0zYf23z7rmDzpeif/4kL8Hd2y5b17ds3IqLaX6jcsGFDrFq1ym6BbbBfaufhhx+OLMv8aj7Ukt2yZe+//35kWVbtL2Zv3LgxIiI+++yznT4T7E7sl21r3rx5HHHEEZWfb/7juf7QHDtih349P2LTv6BDhgyJe++9N1asWFHlttNOOy0KCwvjpptuiizLqtyWZVl8+OGHVZ7nxRdfjA0bNlQemzNnTixdurRWc/Tr1y86duwY99xzT6xfv77y+Lx58+L111+PQYMG1eXl7ZAPPvig2rE1a9bEnXfeGe3bt68MH0B1dsuWDRgwIDp27BgPPvhgrFu3rvL49OnTo7y8PAYOHLjTZ4Ldif1SOw899FAceOCB0b9//1zngN2F3bJlBx98cGRZFo899liV4w8//HBERPTp02enzwS7E/tl+7zxxhtxzz33xMknn+xKU3bIDl9pGhFx3XXXxYwZM2LhwoXRq1evyuPdu3ePsWPHxrXXXhuLFy+OwYMHx5577hlvv/12PPnkk3HBBRfE6NGjI2LTm/c+/vjjceKJJ0ZZWVksWrQoZs6cGd27d6/VDM2aNYsJEybEiBEjorS0NM4666x4//3346677oquXbvGFVdcUR8vNSI2/RRmxowZEbHpjZAjIsaOHRsRm37yMnTo0IiI+Pd///f4j//4jzjllFPiwAMPjOXLl8dPfvKTeOedd2LGjBnRvHnzepsJGiO7pebdUlxcHLfffnsMGzYsjjnmmBg6dGi88847cdddd8XRRx8dp512Wr3NBI2V/VLzftnsf/7nf+IPf/hDXHPNNVv8VT6gOrul5t0yfPjwmDhxYlx44YXxyiuvRK9eveL3v/993H///dGrV6849dRT620maKzsly1/7/KlL30pzjjjjDjwwAPj7bffjilTpkTbtm3jnnvuqbd5aKKy7TBt2rQsIrKXX3652m3Dhg3LIiLr1atXtdueeOKJrH///lnr1q2z1q1bZz179sxGjRqVLVy4sMr9Jk2alHXu3DkrLi7OjjrqqGzBggVZaWlpVlpaWnmf+fPnZxGRzZo1q8YZH3300axPnz5ZcXFx1rZt2+zss8/O3n333Wqztm7dutpjb7zxxqw2X5LNM9T0kc76//7f/8sGDhyYderUKWvWrFm29957Z1//+tezZ555ZpvngKbEbqk6w7Z2y2YPP/xwduihh2bFxcXZvvvum11yySXZxx9/vM3zQFNiv1Sdobb75ZprrskiIvvDH/6wzeeGpshuqTpDbXbLu+++m5177rlZt27dsubNm2f77bdfdv7552cffPDBNs8DTYn9UnWG2uyXM888MzvggAOy5s2bZ/vvv382cuTI7P3339/mOWBbCrLsc9dvAwAAAAA0YTv8nqYAAAAAAI2JaAoAAAAAkBBNAQAAAAASoikAAAAAQEI0BQAAAABIiKYAAAAAAAnRFAAAAAAgUZT3ADUp++2FeY8Qj33l3rxHABrASQdclvcIMW/pXXmPANSzQ7/7o7xHiFcnX5H3CEA9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ACSiKQAAAABAIpoCAAAAACSiKQAAAABAIpoCAAAAACSiKQAAAABAIpoCAAAAACSiKQAAAABAIpoCAAAAACSiKQAAAABAIpoCAAAAACSiKQAAAABAUlX2AB3ZNnNF2SNExFfLHgA4Di5dV/6/2y/dUvYEQE97fuUFZY8A9ELjHi7/fcuLXyt7AuB4+Nen/2/ZI8AJz5WmAAAAAACJaAoAAAAAkIimAAAAAACJaAoAAAAAkIimAAAAAACJaAoAAAAAkIimAAAAAACJaAoAAAAAkIimAAAAAACJaAoAAAAAkIimAAAAAACJaAoAAAAAkIimAAAAAACJaAoAAAAAkIimAAAAAACJaAoAAAAAkIimAAAAAACJaAoAAAAAkIimAAAAAACJaAoAAAAAkIimAAAAAACJaAoAAAAAkIimAAAAAACJaAoAAAAAkIimAAAAAACJaAoAAAAAkIimAAAAAACJaAoAAAAAkIimAAAAAACJaAoAAAAAkIimAAAAAABJVdkDdKTuwTlljxBblpQ9AXA8nDnvN2WPEHFL2QMAPe3UvZVljwD0QqMX/HvZI0R8rewBgOPh+cNvlD1CjCl7AHgHrjQFAAAAAEhEUwAAAACARDQFAAAAAEhEUwAAAACARDQFAAAAAEhEUwAAAACARDQFAAAAAEhEUwAAAACARDQFAAAAAEhEUwAAAACARDQFAAAAAEhEUwAAAACARDQFAAAAAEhEUwAAAACARDQFAAAAAEhEUwAAAACARDQFAAAAAEhEUwAAAACARDQFAAAAAEhEUwAAAACARDQFAAAAAEhEUwAAAACARDQFAAAAAEhEUwAAAACARDQFAAAAAEhEUwAAAACARDQFAAAAAEhEUwAAAACARDQFAAAAAEhEUwAAAACARDQFAAAAAEhEUwAAAACApKIoiqLsIQAAAAAAThSuNAUAAAAASERTAAAAAIBENAUAAAAASERTAAAAAIBENAUAAAAASERTAAAAAIBENAUAAAAASERTAAAAAIBENAUAAAAASERTAAAAAIBENAUAAAAASERTAAAAAIBENAUAAAAASERTAAAAAIBENAUAAAAASLoUTdesWRMVFRVRXV0dO3fubHf7hAkTYuzYsT023ImopaUl1qxZE5dddll87GMfi5qamhg7dmwsXrw4Dhw40OFjvv/978c555wT1dXVUVtbGw8++OC7PDWc2OyWru+WFStWxLRp02LYsGFRUVER11xzzbs/NLwH2C9d2y87duyIRYsWxQUXXBADBw6MwYMHx4QJE+Kpp54qaXo4MdktXdstTU1Ncd1118XYsWPjAx/4QAwYMCDOPffceOCBB+Lw4cMlvQIA6Fy3rjQ9ePBg3HvvvT09y3vC/v3749prr43XX389Zs+eHcuXL48LLrgg7rjjjvj85z8fRVG0uf9DDz0U119/fdTV1cWDDz4YF154Ydx8882xdOnSkl4BnLjslqPfLUuXLo1f/OIXUVdXF1VVVSVNDe8d9svR7ZfHH388li5dGmeeeWYsXrw4vvWtb8W+ffti4sSJsXr16hJfBZyY7Jaj2y1NTU3x3HPPxeTJk+Oee+6JZcuWxbnnnhvz5s2LhoaGEl8FAHSi6ILVq1cXEVGcd955Rd++fYudO3e2ub2+vr6oq6vrylP2iKampqK5ufldOdfBgweLX//61+2OL1q0qIiIYsOGDa3H9u/fX5x22mnFlClT2tz3qquuKmpqaoo///nPx31eeC+wW7q2W4qiKLZv3160tLQURVEUNTU1RUNDw7sxJrzn2C9d2y/PPvts8frrr7e534EDB4oxY8YUH/3oR4/7rPBeYbd0/b1LR7785S8XEVG8+uqrx2NEADgm3brS9NZbb43m5uaj/lvVxsbGGDduXPTr1y8GDRoUM2bMiB07drS5z4gRIzr8eOmECRNiwoQJrd//8pe/jIqKivjRj34UCxcujDPOOCP69+8ff/vb3yIiYu3ata3nGjx4cMycObPdR2auueaaGDBgQOzcuTOmTp0aAwYMiCFDhsT8+fOjubm509fSp0+f+OQnP9nu+OWXXx4REVu2bGk9tnHjxtizZ0/MmTOnzX3nzp0bb7zxRjzxxBOdngtONnbL0e2WiIjhw4dHRUVFp88JvM1+Obr9UldXF4MHD25zv759+8bkyZPjlVdeiX379nV6LjjZ2C1H/96lIyNGjIiIiL/85S/veF8AeLd1K5qOHDkyZs2aFd/97nfjj3/8Y6f3XbJkScyaNStqa2vj/vvvj6985Svx85//PD7zmc8c038c77rrrnjiiSdi/vz5cffdd0efPn1izZo1MX369KisrIx77rknbrjhhnjsscfioosuaneu5ubmmDRpUpx22mmxbNmyqK+vj/vuuy9WrVrVrXlee+21iIg2f9B4+umnIyJi/Pjxbe47bty4OOWUU1pvB95kt7TX0W4Bus5+aa8r++W1116L/v37R//+/bt1Luit7Jb2Otsthw4dit27d8eOHTti3bp1sWzZshg+fHiceeaZ3ToXABxXXbks9a2PoWzatKl44YUXiqqqquLmm29uvf0fP4ayffv2orKysliyZEmb5/n9739fVFVVtTk+fPjwDj9eWl9fX9TX17d+v3HjxiIiilGjRhX79+9vPX7o0KFi6NChxdixY4umpqbW4+vXry8iorj99ttbjzU0NBQRUdx5551tznX++ecX48aNO/ofSHLJJZcU73//+4u9e/e2Hps7d25RWVnZ4f2HDBlSzJgxo1vngt7GbjmyjnbLP/LxfDgy++XIjma/FEVRbNu2raiuri6uvvrqbp0HeiO75cg62y0PP/xwERGtX+PHjy+eeeaZbp0HAI63bl1pGhExatSouPrqq2PVqlXx6quvdnifxx57LFpaWmL69Omxe/fu1q8PfehDUVtbGxs3buzu6aOhoSH69evX+v3mzZtj165dMWfOnKiurm49PmXKlBgzZkyHH4WfPXt2m+8//elPx4svvtjlWe6+++546qmn4t57740PfvCDrcebmpqiT58+HT6muro6mpqaunwu6O3slrcdabcA3WO/vO1o98v+/ftj2rRp0a9fv5P2f3YD78Rueds77ZbPfvazsWHDhli7dm3Mnj07Tj311HjjjTe6fB4AeDd0O5pGRCxcuDD+/ve/H/FN9LZt26IoiqitrY0hQ4a0+dqyZUvs2rWr2+ceOXJkm+9ffvnliIg4++yz2913zJgxrbe/pbq6OoYMGdLm2MCBA2Pv3r1dmuORRx6JhQsXxnXXXRc33XRTm9v69esXhw4d6vBxBw4caPPmBnib3dL5bgG6z345+v3S3NwcM2bMiD/84Q/x6KOPxkc+8pEunQdOJnbL0e2W008/PS655JK44oorYsWKFXHppZfGxIkTWz/SDwAnkqpjefCoUaNi5syZsWrVqvjGN77R7vaWlpaoqKiIJ598MiorK9vdPmDAgNZ/PtL/0KS5ubnDxx5rcOzoObtqw4YNMWvWrJgyZUqsXLmy3e0f/vCHo7m5OXbt2hVDhw5tPX7o0KHYs2ePP3zAEdgtne8WoPvsl6PfLzfccEOsX78+fvjDH8bFF198zOeG3sxu6d57lyuuuCJuu+22ePzxx+PGG2885jkAoCcdUzSNePNvVRsbG2Pp0qXtbhs9enQURREjR46Ms846q9PnGThwYIe/AP3ll1+OUaNGveMcw4cPj4iIrVu3tntjv3Xr1tbbe8pvf/vbuPzyy2P8+PHx4x//OKqq2v8ozzvvvIh48yMykydPbj2+efPmaGlpab0daM9uOfJuAY6N/fLO+2XBggWxevXqWL58eVx55ZU9Ogf0VnZL19+7vPXryv7617/26EwA0BOO6eP5EW++AZg5c2Y89NBD7T5W8cUvfjEqKytj0aJFURRFm9uKoog9e/a0eZ7f/OY3bT7Ovn79+tixY8dRzTF+/PgYOnRorFy5Mg4ePNh6/Mknn4wtW7bElClTuvPyOvTW840YMSLWr19/xL/dvfjii2PQoEGxYsWKNsdXrFgR/fv379GZoLexW468W4BjY790vl++/e1vx7Jly+LWW2+NW265pcdmgN7Objnybtm9e3e71x0R8b3vfa91ZgA40fTIJUy33XZb/OAHP4itW7dGXV1d6/HRo0fH4sWL45vf/GZs3749pk6dGu973/vipZdeinXr1sWXvvSlmD9/fkREXH/99fHoo4/G5z73uZg+fXq88MIL0djYGKNHjz6qGU499dRYunRpXHvttVFfXx9XXnll/OlPf4oHHnggRowYEfPmzeuJlxr79u2LSZMmxd69e2PBggXtfpH66NGj48ILL4yINz8qc9ddd8XcuXNj2rRpMWnSpPjVr34VjY2NsWTJkhg0aFCPzAS9ld3ytrxbIiJ++tOfxu9+97uIiDh8+HA888wzsXjx4oiIuOyyy+LjH/94j8wFvZX98ra8X9atWxdf//rXo7a2Ns4555xobGxsc9+JEyfG6aef3iNzQW9kt7wt75bGxsZYuXJlTJ06NUaNGhX79u2Ln/3sZ7Fhw4b4whe+4FeAAHBiKrpg9erVRUQUmzZtandbQ0NDERFFXV1du9t+8pOfFBdddFFRU1NT1NTUFGPGjCnmzp1bbN26tc397rvvvuKMM84o+vbtW3zqU58qNm/eXNTX1xf19fWt99m4cWMREcXatWs7nPGRRx4pzj///KJv377FoEGDiquuuqp45ZVX2s1aU1PT7rF33HFH8U4/kpdeeqmIiCN+NTQ0tHvMqlWrirPPPrvo06dPMXr06OI73/lO0dLS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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "neuron_indices = list(range(config['group_size'] * config['frequencies_to_learn']))\n", "neuron_weights_plot = plot.plot_neuron_weights(\n", @@ -986,21 +229,10 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "id": "31eec909", "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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k3j77bdx584dzJs3D2FhYTh+/Ljevlu2bInt27dj5syZ8PPzQ3BwMNq2bStdHx8fj/79+6Nnz544dOgQli1bhmHDhqFp06bSNi+//DKmT5+Ol19+Ga1atcLevXtx7ty5Ej9Hy5YtAQCffvopnn32WVhbW6Nfv35Sg0ZERET0MLp37w4bGxv069cPr732GrKysrBgwQJ4eXnh+vXrJu3jtddew5w5czB06FCMHTsWvr6+WL58Oezs7ADcX+VkYWGBn3/+Gb169UJERARefPFF+Pv749q1a9i1axecnZ2xfv16AOyBiEiHICKqYv79918xdOhQ4evrK6ytrYWPj48YOnSoOH36dIltt27dKho1aiRsbGxE/fr1xbJly8SkSZNE8Ze/mJgY8dhjjwl7e3sBQIwYMUIIIaRto6OjxdNPPy3UarVwc3MTb775prh7967ePu7cuSNeeukl4eLiItRqtRgyZIhITk4WAMSkSZP0tv3888+Fv7+/sLCwEABEfHx8RT5EREREVIOMGTOmRG+zbt060aRJE2FnZyeCgoLEV199JRYuXFii7wgMDBR9+vQxuN+LFy+KPn36CHt7e+Hp6Snee+898eeffwoA4vDhw3rbnjhxQgwaNEi4u7sLW1tbERgYKIYMGSJ27Nihtx17ICISQgiVEDprN4mISM/kyZMxZcoUpKSkwMPDQ+5yiIiIiGT1/fff491338XVq1fh7+8vdzlEVEUxM4qIiIiIiIhKuHv3rt73OTk5+OmnnxAaGspBFBE9FGZGERERERERUQmDBg1CnTp10KxZM6Snp2PZsmWIiYnB8uXL5S6NiKo4DqOIiIiIiIiohB49euDnn3/G8uXLUVhYiPDwcKxcuRLPPPOM3KURURXHzCgiIiIiIiIiIjIbZkYREREREREREZHZcBhFRERERERERERmI2tm1N69e/HNN9/g2LFjuH79OlavXo2BAwdK1wshMGnSJCxYsABpaWlo37495s2bh9DQUJPvQ6PRIDExEWq1GiqVqhJ+CiIiIqrphBDIzMyEn58fLCyU91kf+yEiIiKqbOXph2QdRmVnZ6Np06YYNWoUBg0aVOL6r7/+GrNmzcKSJUsQHByMzz77DD169EB0dDTs7OxMuo/ExEQEBARUdOlEREREJVy5cgW1a9eWu4wS2A8RERGRuZjSDykmwFylUumtjBJC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qVM4f/481Gq13uU5OTm4cOGC9P3ChQsRFhYGCwsLREVFsfEiIiIixWA/RERKw2EUEVVr1tbWet+rVCpoNBqTb5+VlYWWLVti+fLlJa7z9PSU/n3q1ClkZ2fDwsIC169fh6+v74MXTURERFSB2A8RkdJwGEVENVbDhg1x5coVvWbp8OHDetu0aNECq1atgpeXF5ydnQ3u59atWxg5ciQ+/fRTXL9+HcOHD8fx48dhb29f6T8DERER0cNgP0REcmCAORHVWN26dUNYWBhGjBiBU6dOYd++ffj000/1thk+fDg8PDwwYMAA7Nu3D/Hx8di9ezfefvttXL16FQAwevRoBAQEYMKECZg5cyYKCwsxfvx4OX4kIiIionJhP0REcuAwiohqLAsLC6xevRp3795FmzZt8PLLL+OLL77Q28bBwQF79+5FnTp1MGjQIDRs2BAvvfQScnJy4OzsjF9//RUbN27E0qVLYWVlBUdHRyxbtgwLFizApk2bZPrJiIiIiEzDfoiI5MCz6RERERERERERkdlwZRQREREREREREZkNh1FERERERERERGQ2HEYREREREREREZHZcBhFRERERERERERmw2EUERERERERERGZDYdRRERERERERERkNhxGERERERERERGR2XAYRUREREREREREZsNhFBERERERERERmQ2HUUREREREREREZDYcRhERERERERERkdlwGEVERERERERERGbzfwlzmOunCIVsAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "model_predictions_plot = plot.plot_model_outputs(config['group_name'], config['group_size'], model, X, Y, idx=13, step=1, show=True) \n" ] @@ -1035,4 +267,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} +} \ No newline at end of file diff --git a/notebooks/rnn_gagf.ipynb b/notebooks/rnn_gagf.ipynb new file mode 100644 index 0000000..14d7162 --- /dev/null +++ b/notebooks/rnn_gagf.ipynb @@ -0,0 +1,2112 @@ +{ + "cells": [ + { + "cell_type": "code", + "metadata": {}, + "source": [ + "import os\n", + "import yaml\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from pathlib import Path\n", + "import seaborn as sns\n", + "\n", + "def load_sweep_results_grid(sweep_dir: str, k_values: list, hidden_dims: list):\n", + " \"\"\"\n", + " Load sweep results and organize into a grid for heatmap visualization.\n", + " \n", + " Args:\n", + " sweep_dir: Path to the sweep directory\n", + " k_values: List of k (sequence length) values\n", + " hidden_dims: List of hidden dimension values\n", + " \n", + " Returns:\n", + " grid: 2D numpy array with shape (len(hidden_dims), len(k_values))\n", + " containing mean final train losses\n", + " std_grid: 2D numpy array with standard deviations (if multiple seeds)\n", + " \"\"\"\n", + " sweep_path = Path(sweep_dir)\n", + " \n", + " # Initialize grids\n", + " grid = np.full((len(hidden_dims), len(k_values)), np.nan)\n", + " std_grid = np.full((len(hidden_dims), len(k_values)), np.nan)\n", + " \n", + " # Load results for each experiment\n", + " for i, h in enumerate(hidden_dims):\n", + " for j, k in enumerate(k_values):\n", + " exp_name = f\"k{k}_h{h}\"\n", + " exp_dir = sweep_path / exp_name\n", + " \n", + " if not exp_dir.exists():\n", + " print(f\"Warning: Experiment {exp_name} not found\")\n", + " continue\n", + " \n", + " # Load experiment summary\n", + " summary_file = exp_dir / \"experiment_summary.yaml\"\n", + " if summary_file.exists():\n", + " with open(summary_file, 'r') as f:\n", + " summary = yaml.safe_load(f)\n", + " \n", + " # Get mean train loss\n", + " if 'train_loss_stats' in summary:\n", + " grid[i, j] = summary['train_loss_stats']['mean']\n", + " std_grid[i, j] = summary['train_loss_stats']['std']\n", + " else:\n", + " print(f\"Warning: No train_loss_stats in {exp_name}\")\n", + " else:\n", + " print(f\"Warning: No summary file for {exp_name}\")\n", + " \n", + " return grid, std_grid\n" + ], + "execution_count": null, + "outputs": [], + "id": "af291059" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1D Analysis Functions\n", + "\n", + "Analyze individual 1D experiments from the sweep with detailed power spectrum and neuron specialization plots.\n" + ], + "id": "c433cb4d" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "import torch\n", + "import numpy as np\n", + "from pathlib import Path\n", + "from gagf.rnns.utils import (\n", + " plot_prediction_power_spectrum_over_time_1d,\n", + " plot_wout_neuron_specialization_1d,\n", + " plot_model_predictions_over_time_1d,\n", + " topk_template_freqs_1d,\n", + ")\n", + "from gagf.rnns.model import SequentialMLP\n", + "\n", + "def analyze_1d_experiment(sweep_dir, exp_name, seed=0, num_freqs_to_track=10):\n", + " \"\"\"\n", + " Analyze a single 1D experiment from the sweep.\n", + " \n", + " Args:\n", + " sweep_dir: Path to sweep directory\n", + " exp_name: Experiment name (e.g., \"k3_h360\")\n", + " seed: Seed number to analyze\n", + " num_freqs_to_track: Number of top frequencies to track\n", + " \n", + " Returns:\n", + " Dictionary with analysis results\n", + " \"\"\"\n", + " # Setup paths\n", + " sweep_path = Path(sweep_dir)\n", + " exp_dir = sweep_path / exp_name / f\"seed_{seed}\"\n", + " \n", + " if not exp_dir.exists():\n", + " print(f\"Experiment directory not found: {exp_dir}\")\n", + " return None\n", + " \n", + " print(f\"Analyzing: {exp_name}, seed {seed}\")\n", + " print(f\"Directory: {exp_dir}\")\n", + " \n", + " # Load config\n", + " with open(exp_dir / \"config.yaml\", 'r') as f:\n", + " config = yaml.safe_load(f)\n", + " \n", + " # Load template\n", + " template = np.load(exp_dir / \"template.npy\")\n", + " p = len(template)\n", + " k = config['data']['k']\n", + " hidden_dim = config['model']['hidden_dim']\n", + " \n", + " print(f\" p={p}, k={k}, hidden_dim={hidden_dim}\")\n", + " \n", + " # Load training history\n", + " train_loss_hist = np.load(exp_dir / \"train_loss_history.npy\")\n", + " param_hist = torch.load(exp_dir / \"param_history.pt\", map_location='cpu')\n", + " \n", + " # Create model\n", + " device = 'cpu'\n", + " template_torch = torch.tensor(template, dtype=torch.float32, device=device)\n", + " model = SequentialMLP(\n", + " p=p,\n", + " d=hidden_dim,\n", + " template=template_torch,\n", + " k=k,\n", + " init_scale=config['model']['init_scale'],\n", + " return_all_outputs=config['model']['return_all_outputs'],\n", + " ).to(device)\n", + " \n", + " # Generate evaluation data\n", + " from gagf.rnns.datamodule import build_modular_addition_sequence_dataset_1d\n", + " X_data, Y_data, _ = build_modular_addition_sequence_dataset_1d(\n", + " p, template, k,\n", + " mode='sampled',\n", + " num_samples=1000,\n", + " return_all_outputs=config['model']['return_all_outputs'],\n", + " )\n", + " X_data_t = torch.tensor(X_data, dtype=torch.float32, device=device)\n", + " Y_data_t = torch.tensor(Y_data, dtype=torch.float32, device=device)\n", + " \n", + " # Get tracked frequencies\n", + " tracked_freqs = topk_template_freqs_1d(template, K=num_freqs_to_track)\n", + " colors = plt.cm.tab10(np.linspace(0, 1, len(tracked_freqs)))\n", + " \n", + " # Checkpoints to analyze\n", + " checkpoint_indices = [0, len(param_hist)//4, len(param_hist)//2, \n", + " 3*len(param_hist)//4, len(param_hist)-1]\n", + " \n", + " # Plot 1: Power spectrum over time\n", + " print(\"\\\\n Plotting power spectrum analysis...\")\n", + " fig1, _, _, _ = plot_prediction_power_spectrum_over_time_1d(\n", + " model, param_hist, X_data_t, Y_data_t, template, p,\n", + " loss_history=train_loss_hist,\n", + " num_freqs_to_track=num_freqs_to_track,\n", + " num_samples=100,\n", + " save_path=exp_dir / \"power_spectrum_analysis_1d.pdf\",\n", + " show=True\n", + " )\n", + " \n", + " # Plot 2: Model predictions over time\n", + " print(\" Plotting predictions over time...\")\n", + " fig2, _ = plot_model_predictions_over_time_1d(\n", + " model, param_hist, X_data_t, Y_data_t, p,\n", + " steps=checkpoint_indices,\n", + " save_path=exp_dir / \"predictions_over_time_1d.pdf\",\n", + " show=True\n", + " )\n", + " \n", + " # Plot 3: W_out neuron specialization\n", + " print(\" Plotting W_out neuron specialization...\")\n", + " figs3 = plot_wout_neuron_specialization_1d(\n", + " param_hist, tracked_freqs, colors, p,\n", + " steps=checkpoint_indices,\n", + " dead_thresh_l2=0.25,\n", + " save_dir=exp_dir,\n", + " show=True\n", + " )\n", + " \n", + " print(\"\\\\n \u2713 Analysis complete!\")\n", + " \n", + " return {\n", + " 'config': config,\n", + " 'template': template,\n", + " 'train_loss': train_loss_hist,\n", + " 'tracked_freqs': tracked_freqs,\n", + " }\n", + "\n", + "# Example usage:\n", + "# sweep_dir = \"/home/facosta/group-agf/sweeps/sweep_mlp_scaling_20251202_XXXXXX\"\n", + "# result = analyze_1d_experiment(sweep_dir, \"k3_h360\", seed=0)\n" + ], + "execution_count": null, + "outputs": [], + "id": "95df6861" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Analyze RNNs trained on GAGF sequential task" + ], + "id": "7bc3db90" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Set up" + ], + "id": "11fb7c9b" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "# autoreload\n", + "%load_ext autoreload\n", + "%autoreload 2\n", + "# jupyter black formatter\n", + "%load_ext jupyter_black\n", + "\n", + "import subprocess\n", + "import os\n", + "import sys\n", + "\n", + "gitroot_path = subprocess.check_output(\n", + " [\"git\", \"rev-parse\", \"--show-toplevel\"], universal_newlines=True\n", + ").strip()\n", + "\n", + "os.chdir(gitroot_path)\n", + "print(\"Working directory: \", os.getcwd())\n", + "\n", + "if gitroot_path not in sys.path:\n", + " sys.path.insert(0, gitroot_path)\n", + "print(\"Directory added to path: \", gitroot_path)" + ], + "execution_count": null, + "outputs": [], + "id": "43581ce4" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Sequence-to-sequence sweep across different values of k (sequence length)" + ], + "id": "f0407a17" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Loss curves" + ], + "id": "070e8c55" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "import os\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from pathlib import Path\n", + "from typing import Dict, List, Optional\n", + "\n", + "\n", + "def get_sweep_experiments(sweep_dir: str) -> List[str]:\n", + " \"\"\"\n", + " Get all experiment names from a sweep directory.\n", + "\n", + " Args:\n", + " sweep_dir: Path to sweep directory\n", + "\n", + " Returns:\n", + " List of experiment names (subdirectories with seed_0)\n", + " \"\"\"\n", + " sweep_path = Path(sweep_dir)\n", + " experiments = []\n", + "\n", + " for item in sweep_path.iterdir():\n", + " if (\n", + " item.is_dir()\n", + " and not item.name.startswith(\".\")\n", + " and item.name not in [\"configs\"]\n", + " ):\n", + " # Check if it has a seed_0 subdirectory\n", + " if (item / \"seed_0\").exists():\n", + " experiments.append(item.name)\n", + "\n", + " return sorted(experiments)\n", + "\n", + "\n", + "def load_experiment_losses(\n", + " sweep_dir: str, experiment_name: str, seed: int = 0\n", + ") -> Dict[str, np.ndarray]:\n", + " \"\"\"\n", + " Load training and validation loss histories for an experiment.\n", + "\n", + " Args:\n", + " sweep_dir: Path to sweep directory\n", + " experiment_name: Name of the experiment subdirectory\n", + " seed: Seed number (default: 0)\n", + "\n", + " Returns:\n", + " Dictionary with 'train' and 'val' loss arrays (if they exist)\n", + " \"\"\"\n", + " exp_path = Path(sweep_dir) / experiment_name / f\"seed_{seed}\"\n", + " losses = {}\n", + "\n", + " train_loss_path = exp_path / \"train_loss_history.npy\"\n", + " if train_loss_path.exists():\n", + " losses[\"train\"] = np.load(train_loss_path)\n", + "\n", + " val_loss_path = exp_path / \"val_loss_history.npy\"\n", + " if val_loss_path.exists():\n", + " losses[\"val\"] = np.load(val_loss_path)\n", + "\n", + " return losses\n", + "\n", + "\n", + "def load_all_sweep_losses(\n", + " sweep_dir: str, seed: int = 0\n", + ") -> Dict[str, Dict[str, np.ndarray]]:\n", + " \"\"\"\n", + " Load loss histories for all experiments in a sweep.\n", + "\n", + " Args:\n", + " sweep_dir: Path to sweep directory\n", + " seed: Seed number (default: 0)\n", + "\n", + " Returns:\n", + " Dictionary mapping experiment names to their loss dictionaries\n", + " \"\"\"\n", + " experiments = get_sweep_experiments(sweep_dir)\n", + " all_losses = {}\n", + "\n", + " for exp_name in experiments:\n", + " all_losses[exp_name] = load_experiment_losses(sweep_dir, exp_name, seed)\n", + "\n", + " return all_losses\n", + "\n", + "\n", + "def remove_outliers_local(loss_history, window=10, threshold=3.0):\n", + " \"\"\"\n", + " Replace outliers with local median if they deviate too much.\n", + "\n", + " Args:\n", + " loss_history: Array of loss values\n", + " window: Window size for local statistics\n", + " threshold: How many local standard deviations to consider an outlier\n", + "\n", + " Returns:\n", + " Tuple of (cleaned loss history, whether any outliers were found)\n", + " \"\"\"\n", + " cleaned = loss_history.copy()\n", + " half_window = window // 2\n", + " outliers_found = False\n", + "\n", + " for i in range(len(loss_history)):\n", + " start = max(0, i - half_window)\n", + " end = min(len(loss_history), i + half_window + 1)\n", + " local_window = loss_history[start:end]\n", + "\n", + " local_median = np.median(local_window)\n", + " local_std = np.std(local_window)\n", + "\n", + " # If the value is too far from local median, replace it\n", + " if abs(loss_history[i] - local_median) > threshold * local_std:\n", + " cleaned[i] = local_median\n", + " outliers_found = True\n", + "\n", + " return cleaned, outliers_found" + ], + "execution_count": null, + "outputs": [], + "id": "cf050abb" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "# Set up your sweep directory\n", + "sweep_dir = \"/home/facosta/group-agf/sweeps/seq_seq_sweep_20251113_120513\"\n", + "\n", + "# Get all experiments in the sweep\n", + "experiments = get_sweep_experiments(sweep_dir)\n", + "print(f\"Found experiments: {experiments}\")\n", + "\n", + "# Load losses for all experiments\n", + "all_losses = load_all_sweep_losses(sweep_dir)" + ], + "execution_count": null, + "outputs": [], + "id": "6b5653c8" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "def plot_loss_comparison(\n", + " sweep_dir: str,\n", + " experiments: Optional[List[str]] = None,\n", + " loss_type: str = \"train\",\n", + " log_scale: bool = True,\n", + " figsize: tuple = (10, 6),\n", + " seed: int = 0,\n", + " remove_outliers: bool = False,\n", + " outlier_window: int = 10,\n", + " outlier_threshold: float = 3.0,\n", + " template_2d: Optional[np.ndarray] = None,\n", + " p1: Optional[int] = None,\n", + " p2: Optional[int] = None,\n", + " show_theory_bands: bool = True,\n", + " num_theory_lines: Optional[int] = None,\n", + " color_by_k: bool = True,\n", + " cmap: str = \"viridis\",\n", + "):\n", + " \"\"\"\n", + " Plot and compare loss curves from multiple experiments.\n", + "\n", + " Args:\n", + " sweep_dir: Path to sweep directory\n", + " experiments: List of experiment names to plot (None = all experiments)\n", + " loss_type: 'train' or 'val'\n", + " log_scale: Whether to use log scale for both axes\n", + " figsize: Figure size tuple\n", + " seed: Seed number (default: 0)\n", + " remove_outliers: Whether to remove outliers using local outlier replacement\n", + " outlier_window: Window size for outlier detection (default: 10)\n", + " outlier_threshold: Threshold in standard deviations for outlier detection (default: 3.0)\n", + " template_2d: Optional 2D template array for computing theory lines\n", + " p1: First dimension of template (required if template_2d is provided)\n", + " p2: Second dimension of template (required if template_2d is provided)\n", + " show_theory_bands: Whether to show colored bands between theory lines (default: True)\n", + " num_theory_lines: Number of theory lines to show (default: None = show all)\n", + " color_by_k: Whether to color lines by k value (default: True)\n", + " cmap: Colormap name for k-based coloring (default: 'viridis')\n", + " \"\"\"\n", + " if experiments is None:\n", + " experiments = get_sweep_experiments(sweep_dir)\n", + "\n", + " fig, ax = plt.subplots(figsize=figsize)\n", + "\n", + " # Compute theory lines if template is provided\n", + " theory_levels = None\n", + " if template_2d is not None:\n", + " if p1 is None or p2 is None:\n", + " raise ValueError(\"p1 and p2 must be provided if template_2d is given\")\n", + "\n", + " # Import the helper function (assuming it's in utils.py)\n", + " from gagf.rnns.utils import get_power_2d_adele\n", + "\n", + " # Compute power spectrum of template\n", + " _, _, power = get_power_2d_adele(template_2d)\n", + " power_flat = np.sort(power.flatten()[power.flatten() > 1e-20])[::-1]\n", + "\n", + " # Theory levels (cumulative tail sums)\n", + " alpha_values = np.array(\n", + " [np.sum(power_flat[k:]) for k in range(len(power_flat))]\n", + " )\n", + " coef = 1.0 / (p1 * p2)\n", + " theory_levels = coef * alpha_values # strictly decreasing\n", + "\n", + " # Limit number of lines if specified\n", + " if num_theory_lines is not None:\n", + " theory_levels = theory_levels[: num_theory_lines + 1]\n", + "\n", + " # Generate colors for bands\n", + " n_bands = len(theory_levels) - 1\n", + " colors = plt.cm.tab10(np.linspace(0, 1, max(n_bands, 1)))\n", + "\n", + " # Draw colored bands between theory lines\n", + " if show_theory_bands and n_bands > 0:\n", + " for i in range(n_bands):\n", + " y_top = theory_levels[i]\n", + " y_bot = theory_levels[i + 1]\n", + " ax.axhspan(\n", + " y_bot,\n", + " y_top,\n", + " facecolor=colors[i % len(colors)],\n", + " alpha=0.15,\n", + " zorder=-3,\n", + " )\n", + "\n", + " # Draw the black theory lines\n", + " for y in theory_levels:\n", + " ax.axhline(\n", + " y=y,\n", + " color=\"black\",\n", + " linestyle=\"--\",\n", + " linewidth=1.5,\n", + " alpha=0.7,\n", + " zorder=-2,\n", + " label=\"_nolegend_\",\n", + " )\n", + "\n", + " # Extract k values and set up colormap\n", + " k_values = {}\n", + " if color_by_k:\n", + " import re\n", + "\n", + " for exp_name in experiments:\n", + " # Try to extract k value from experiment name (e.g., \"k_2_seqseq\" -> 2)\n", + " match = re.search(r\"k[_\\s]*(\\d+)\", exp_name, re.IGNORECASE)\n", + " if match:\n", + " k_values[exp_name] = int(match.group(1))\n", + "\n", + " if k_values:\n", + " k_min = min(k_values.values())\n", + " k_max = max(k_values.values())\n", + " norm = plt.cm.colors.Normalize(vmin=k_min, vmax=k_max)\n", + " colormap = plt.cm.get_cmap(cmap)\n", + " scalar_map = plt.cm.ScalarMappable(norm=norm, cmap=colormap)\n", + "\n", + " # Plot loss curves\n", + " for exp_name in experiments:\n", + " losses = load_experiment_losses(sweep_dir, exp_name, seed)\n", + " if loss_type in losses:\n", + " loss_history = losses[loss_type]\n", + "\n", + " # Apply outlier removal if requested\n", + " if remove_outliers:\n", + " loss_history, outliers_found = remove_outliers_local(\n", + " loss_history, window=outlier_window, threshold=outlier_threshold\n", + " )\n", + " if outliers_found:\n", + " print(f\"Outliers from {exp_name} removed for plot\")\n", + "\n", + " # Determine color\n", + " if color_by_k and exp_name in k_values:\n", + " color = scalar_map.to_rgba(k_values[exp_name])\n", + " else:\n", + " color = None # Use default color cycle\n", + "\n", + " ax.plot(loss_history, label=exp_name, alpha=0.8, linewidth=2, color=color)\n", + "\n", + " ax.set_xlabel(\"Step\", fontsize=14)\n", + " ax.set_ylabel(f\"{loss_type.capitalize()} Loss\", fontsize=14)\n", + " title = f\"{loss_type.capitalize()} Loss Comparison - {Path(sweep_dir).name}\"\n", + " if remove_outliers:\n", + " title += \" (outliers removed)\"\n", + " ax.set_title(title, fontsize=14)\n", + " ax.legend(fontsize=10)\n", + " ax.grid(True, alpha=0.3)\n", + "\n", + " if log_scale:\n", + " ax.set_xscale(\"log\")\n", + " ax.set_yscale(\"log\")\n", + "\n", + " # Add colorbar if coloring by k\n", + " if color_by_k and k_values:\n", + " cbar = plt.colorbar(scalar_map, ax=ax, label=\"k (sequence length)\", pad=0.02)\n", + " cbar.ax.tick_params(labelsize=10)\n", + "\n", + " plt.tight_layout()\n", + " plt.show()\n", + "\n", + " return fig, ax, theory_levels" + ], + "execution_count": null, + "outputs": [], + "id": "fa6b246a" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "template_path = os.path.join(sweep_dir, \"k_2_seqseq\", \"seed_0\", \"template.npy\")\n", + "template_2d = np.load(template_path)\n", + "p1, p2 = template_2d.shape\n", + "\n", + "plt.imshow(template_2d)" + ], + "execution_count": null, + "outputs": [], + "id": "a8e3f5e3" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "# First, load the template from one of your experiments\n", + "# (assuming they all use the same template)\n", + "template_path = os.path.join(sweep_dir, \"k_2_seqseq\", \"seed_0\", \"template.npy\")\n", + "template_2d = np.load(template_path)\n", + "p1, p2 = template_2d.shape\n", + "\n", + "# Plot with theory lines\n", + "fig, ax, theory_levels = plot_loss_comparison(\n", + " sweep_dir,\n", + " template_2d=template_2d,\n", + " p1=p1,\n", + " p2=p2,\n", + " remove_outliers=True,\n", + " num_theory_lines=10, # Show first 10 theory lines\n", + " log_scale=True,\n", + " cmap=\"viridis\",\n", + ")\n", + "\n", + "# Print the theory levels (plateau values)\n", + "print(\"Theory plateau levels:\")\n", + "for i, level in enumerate(theory_levels):\n", + " print(f\" Plateau {i}: {level:.6e}\")" + ], + "execution_count": null, + "outputs": [], + "id": "dd4bf1a8" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Time to reach plateau" + ], + "id": "ead6933c" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "def calculate_time_to_plateau(\n", + " sweep_dir: str,\n", + " template_2d: np.ndarray,\n", + " p1: int,\n", + " p2: int,\n", + " target_plateau_idx: int = 1,\n", + " loss_type: str = \"train\",\n", + " seed: int = 0,\n", + " tolerance: float = 1.1,\n", + " experiments: Optional[List[str]] = None,\n", + ") -> Dict[str, int]:\n", + " \"\"\"\n", + " Calculate the step at which each experiment's loss reaches a target plateau.\n", + "\n", + " Args:\n", + " sweep_dir: Path to sweep directory\n", + " template_2d: 2D template array for computing theory lines\n", + " p1, p2: Dimensions of template\n", + " target_plateau_idx: Index of target plateau (1 = first drop, 2 = second drop, etc.)\n", + " loss_type: 'train' or 'val'\n", + " seed: Seed number\n", + " tolerance: Multiplier for plateau threshold (loss must be <= tolerance * plateau_level)\n", + " experiments: List of experiment names (None = all experiments)\n", + "\n", + " Returns:\n", + " Dictionary mapping experiment names to step numbers\n", + " \"\"\"\n", + " from gagf.rnns.utils import get_power_2d_adele\n", + "\n", + " # Compute theory levels\n", + " _, _, power = get_power_2d_adele(template_2d)\n", + " power_flat = np.sort(power.flatten()[power.flatten() > 1e-20])[::-1]\n", + " alpha_values = np.array([np.sum(power_flat[k:]) for k in range(len(power_flat))])\n", + " coef = 1.0 / (p1 * p2)\n", + " theory_levels = coef * alpha_values\n", + "\n", + " if target_plateau_idx >= len(theory_levels):\n", + " raise ValueError(\n", + " f\"target_plateau_idx {target_plateau_idx} exceeds available plateaus ({len(theory_levels)})\"\n", + " )\n", + "\n", + " target_level = theory_levels[target_plateau_idx]\n", + " threshold = tolerance * target_level\n", + "\n", + " if experiments is None:\n", + " experiments = get_sweep_experiments(sweep_dir)\n", + "\n", + " times_to_plateau = {}\n", + "\n", + " for exp_name in experiments:\n", + " losses = load_experiment_losses(sweep_dir, exp_name, seed)\n", + " if loss_type in losses:\n", + " loss_history = losses[loss_type]\n", + "\n", + " # Find first step where loss drops below threshold\n", + " crossing_indices = np.where(loss_history <= threshold)[0]\n", + "\n", + " if len(crossing_indices) > 0:\n", + " times_to_plateau[exp_name] = crossing_indices[0]\n", + " else:\n", + " times_to_plateau[exp_name] = None # Never reached\n", + "\n", + " return times_to_plateau, theory_levels\n", + "\n", + "\n", + "def plot_time_to_plateau(\n", + " sweep_dir: str,\n", + " template_2d: np.ndarray,\n", + " p1: int,\n", + " p2: int,\n", + " target_plateau_idx: int = 1,\n", + " loss_type: str = \"train\",\n", + " seed: int = 0,\n", + " tolerance: float = 1.1,\n", + " experiments: Optional[List[str]] = None,\n", + " figsize: tuple = (10, 6),\n", + " sort_by: str = \"time\",\n", + "):\n", + " \"\"\"\n", + " Plot the time to reach a target plateau for different experiments.\n", + "\n", + " Args:\n", + " sweep_dir: Path to sweep directory\n", + " template_2d: 2D template array\n", + " p1, p2: Template dimensions\n", + " target_plateau_idx: Which plateau to measure (1 = first drop)\n", + " loss_type: 'train' or 'val'\n", + " seed: Seed number\n", + " tolerance: Multiplier for plateau threshold\n", + " experiments: List of experiment names (None = all)\n", + " figsize: Figure size\n", + " sort_by: 'time' (sort by time to plateau) or 'name' (alphabetical)\n", + " \"\"\"\n", + " times, theory_levels = calculate_time_to_plateau(\n", + " sweep_dir,\n", + " template_2d,\n", + " p1,\n", + " p2,\n", + " target_plateau_idx,\n", + " loss_type,\n", + " seed,\n", + " tolerance,\n", + " experiments,\n", + " )\n", + "\n", + " # Filter out experiments that never reached the plateau\n", + " reached = {k: v for k, v in times.items() if v is not None}\n", + " not_reached = [k for k, v in times.items() if v is None]\n", + "\n", + " if not reached:\n", + " print(\"No experiments reached the target plateau!\")\n", + " return\n", + "\n", + " # Sort experiments\n", + " if sort_by == \"time\":\n", + " sorted_items = sorted(reached.items(), key=lambda x: x[1])\n", + " else: # alphabetical\n", + " sorted_items = sorted(reached.items(), key=lambda x: x[0])\n", + "\n", + " exp_names = [item[0] for item in sorted_items]\n", + " steps = [item[1] for item in sorted_items]\n", + "\n", + " # Create bar plot\n", + " fig, ax = plt.subplots(figsize=figsize)\n", + " bars = ax.bar(range(len(exp_names)), steps, alpha=0.7, edgecolor=\"black\")\n", + "\n", + " # Color bars by value (gradient)\n", + " colors = plt.cm.viridis(np.linspace(0.2, 0.9, len(steps)))\n", + " for bar, color in zip(bars, colors):\n", + " bar.set_color(color)\n", + "\n", + " ax.set_xticks(range(len(exp_names)))\n", + " ax.set_xticklabels(exp_names, rotation=45, ha=\"right\")\n", + " ax.set_xlabel(\"Experiment\", fontsize=12)\n", + " ax.set_ylabel(\"Steps to Reach Plateau\", fontsize=12)\n", + " ax.set_title(\n", + " f\"Time to Reach Plateau {target_plateau_idx} (Level: {theory_levels[target_plateau_idx]:.2e})\",\n", + " fontsize=13,\n", + " )\n", + " ax.grid(True, alpha=0.3, axis=\"y\")\n", + "\n", + " # Add value labels on bars\n", + " for i, (bar, step) in enumerate(zip(bars, steps)):\n", + " height = bar.get_height()\n", + " ax.text(\n", + " bar.get_x() + bar.get_width() / 2.0,\n", + " height,\n", + " f\"{int(step):,}\",\n", + " ha=\"center\",\n", + " va=\"bottom\",\n", + " fontsize=9,\n", + " )\n", + "\n", + " plt.tight_layout()\n", + "\n", + " # Print summary\n", + " print(\n", + " f\"\\nTime to reach plateau {target_plateau_idx} (threshold: {theory_levels[target_plateau_idx]:.2e}):\"\n", + " )\n", + " print(\"-\" * 60)\n", + " for name, step in sorted_items:\n", + " print(f\" {name:30s}: {step:8,} steps\")\n", + "\n", + " if not_reached:\n", + " print(f\"\\nExperiments that did not reach plateau {target_plateau_idx}:\")\n", + " for name in not_reached:\n", + " print(f\" - {name}\")\n", + "\n", + " plt.show()\n", + "\n", + " return fig, ax, times, theory_levels" + ], + "execution_count": null, + "outputs": [], + "id": "4e1d02b4" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "def plot_time_to_plateau(\n", + " sweep_dir: str,\n", + " template_2d: np.ndarray,\n", + " p1: int,\n", + " p2: int,\n", + " target_plateau_idx: int = 1,\n", + " loss_type: str = \"train\",\n", + " seed: int = 0,\n", + " tolerance: float = 1.1,\n", + " experiments: Optional[List[str]] = None,\n", + " figsize: tuple = (10, 6),\n", + " sort_by: str = \"time\",\n", + " color_by_k: bool = True,\n", + " cmap: str = \"viridis\",\n", + "):\n", + " \"\"\"\n", + " Plot the time to reach a target plateau for different experiments.\n", + "\n", + " Args:\n", + " sweep_dir: Path to sweep directory\n", + " template_2d: 2D template array\n", + " p1, p2: Template dimensions\n", + " target_plateau_idx: Which plateau to measure (1 = first drop)\n", + " loss_type: 'train' or 'val'\n", + " seed: Seed number\n", + " tolerance: Multiplier for plateau threshold\n", + " experiments: List of experiment names (None = all)\n", + " figsize: Figure size\n", + " sort_by: 'time' (sort by time to plateau) or 'name' (alphabetical)\n", + " color_by_k: Whether to color bars by k value (default: True)\n", + " cmap: Colormap name for k-based coloring (default: 'viridis')\n", + " \"\"\"\n", + " times, theory_levels = calculate_time_to_plateau(\n", + " sweep_dir,\n", + " template_2d,\n", + " p1,\n", + " p2,\n", + " target_plateau_idx,\n", + " loss_type,\n", + " seed,\n", + " tolerance,\n", + " experiments,\n", + " )\n", + "\n", + " # Filter out experiments that never reached the plateau\n", + " reached = {k: v for k, v in times.items() if v is not None}\n", + " not_reached = [k for k, v in times.items() if v is None]\n", + "\n", + " if not reached:\n", + " print(\"No experiments reached the target plateau!\")\n", + " return\n", + "\n", + " # Sort experiments\n", + " if sort_by == \"time\":\n", + " sorted_items = sorted(reached.items(), key=lambda x: x[1])\n", + " else: # alphabetical\n", + " sorted_items = sorted(reached.items(), key=lambda x: x[0])\n", + "\n", + " exp_names = [item[0] for item in sorted_items]\n", + " steps = [item[1] for item in sorted_items]\n", + "\n", + " # Extract k values and set up colormap\n", + " k_values = []\n", + " if color_by_k:\n", + " import re\n", + "\n", + " for exp_name in exp_names:\n", + " # Try to extract k value from experiment name (e.g., \"k_2_seqseq\" -> 2)\n", + " match = re.search(r\"k[_\\s]*(\\d+)\", exp_name, re.IGNORECASE)\n", + " if match:\n", + " k_values.append(int(match.group(1)))\n", + " else:\n", + " k_values.append(None)\n", + "\n", + " # Check if we have valid k values\n", + " valid_k_values = [k for k in k_values if k is not None]\n", + " if valid_k_values:\n", + " k_min = min(valid_k_values)\n", + " k_max = max(valid_k_values)\n", + " norm = plt.cm.colors.Normalize(vmin=k_min, vmax=k_max)\n", + " colormap = plt.cm.get_cmap(cmap)\n", + " scalar_map = plt.cm.ScalarMappable(norm=norm, cmap=colormap)\n", + " else:\n", + " color_by_k = False # Fall back if no k values found\n", + "\n", + " # Create bar plot\n", + " fig, ax = plt.subplots(figsize=figsize)\n", + " bars = ax.bar(range(len(exp_names)), steps, alpha=0.7, edgecolor=\"black\")\n", + "\n", + " # Color bars\n", + " if color_by_k and valid_k_values:\n", + " for bar, k_val in zip(bars, k_values):\n", + " if k_val is not None:\n", + " bar.set_color(scalar_map.to_rgba(k_val))\n", + " else:\n", + " bar.set_color(\"gray\") # Fallback color\n", + " else:\n", + " # Color bars by position (gradient from blue to yellow)\n", + " colors = plt.cm.viridis(np.linspace(0.2, 0.9, len(steps)))\n", + " for bar, color in zip(bars, colors):\n", + " bar.set_color(color)\n", + "\n", + " ax.set_xticks(range(len(exp_names)))\n", + " ax.set_xticklabels(exp_names, rotation=45, ha=\"right\")\n", + " ax.set_xlabel(\"Experiment\", fontsize=12)\n", + " ax.set_ylabel(\"Steps to Reach Plateau\", fontsize=12)\n", + " ax.set_title(\n", + " f\"Time to Reach Plateau {target_plateau_idx} (Level: {theory_levels[target_plateau_idx]:.2e})\",\n", + " fontsize=13,\n", + " )\n", + " ax.grid(True, alpha=0.3, axis=\"y\")\n", + "\n", + " # Add value labels on bars\n", + " for i, (bar, step) in enumerate(zip(bars, steps)):\n", + " height = bar.get_height()\n", + " ax.text(\n", + " bar.get_x() + bar.get_width() / 2.0,\n", + " height,\n", + " f\"{int(step):,}\",\n", + " ha=\"center\",\n", + " va=\"bottom\",\n", + " fontsize=9,\n", + " )\n", + "\n", + " # Add colorbar if coloring by k\n", + " if color_by_k and valid_k_values:\n", + " cbar = plt.colorbar(scalar_map, ax=ax, label=\"k (sequence length)\", pad=0.02)\n", + " cbar.ax.tick_params(labelsize=10)\n", + "\n", + " plt.tight_layout()\n", + "\n", + " # Print summary\n", + " print(\n", + " f\"\\nTime to reach plateau {target_plateau_idx} (threshold: {theory_levels[target_plateau_idx]:.2e}):\"\n", + " )\n", + " print(\"-\" * 60)\n", + " for name, step in sorted_items:\n", + " print(f\" {name:30s}: {step:8,} steps\")\n", + "\n", + " if not_reached:\n", + " print(f\"\\nExperiments that did not reach plateau {target_plateau_idx}:\")\n", + " for name in not_reached:\n", + " print(f\" - {name}\")\n", + "\n", + " plt.show()\n", + "\n", + " return fig, ax, times, theory_levels" + ], + "execution_count": null, + "outputs": [], + "id": "b5b266d4" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "# Load template\n", + "template_path = os.path.join(sweep_dir, \"k_2_seqseq\", \"seed_0\", \"template.npy\")\n", + "template_2d = np.load(template_path)\n", + "p1, p2 = template_2d.shape\n", + "\n", + "# get the times without plotting\n", + "times_dict, theory_levels = calculate_time_to_plateau(\n", + " sweep_dir, template_2d, p1, p2, target_plateau_idx=1\n", + ")" + ], + "execution_count": null, + "outputs": [], + "id": "b015323f" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "# Plot time to first drop (plateau index 1)\n", + "fig, ax, times, levels = plot_time_to_plateau(\n", + " sweep_dir,\n", + " template_2d,\n", + " p1,\n", + " p2,\n", + " target_plateau_idx=1, # First drop\n", + " tolerance=1.1, # Loss must be <= 1.1 * theory_level\n", + " sort_by=\"name\",\n", + ")\n", + "\n", + "# Plot time to second drop (plateau index 2)\n", + "plot_time_to_plateau(\n", + " sweep_dir,\n", + " template_2d,\n", + " p1,\n", + " p2,\n", + " target_plateau_idx=2,\n", + " tolerance=1.05, # Second drop\n", + " cmap=\"viridis\",\n", + " sort_by=\"name\",\n", + ")\n", + "\n", + "# Plot time to third drop (plateau index 3)\n", + "plot_time_to_plateau(\n", + " sweep_dir,\n", + " template_2d,\n", + " p1,\n", + " p2,\n", + " target_plateau_idx=3,\n", + " tolerance=1.05, # Second drop\n", + " cmap=\"viridis\",\n", + " sort_by=\"name\",\n", + ")\n", + "\n", + "# Plot time to fourth drop (plateau index 4)\n", + "plot_time_to_plateau(\n", + " sweep_dir,\n", + " template_2d,\n", + " p1,\n", + " p2,\n", + " target_plateau_idx=4,\n", + " tolerance=1.05, # Second drop\n", + " cmap=\"viridis\",\n", + " sort_by=\"name\",\n", + ");" + ], + "execution_count": null, + "outputs": [], + "id": "eb63ea4a" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Sequence-to-one sweep across different values of k (sequence length)" + ], + "id": "5536cdb2" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- 1st sweep dir: \"/home/facosta/group-agf/sweeps/optim_sweep_20251113_001549\" (k=4, 5)\n", + "- 2nd sweep dir: \"/home/facosta/group-agf/sweeps/optim_sweep_20251113_145528\" (k=2, 3)" + ], + "id": "063d9df4" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "def load_losses_from_multiple_sweeps(\n", + " sweep_experiments: Dict[str, List[str]], loss_type: str = \"train\", seed: int = 0\n", + ") -> Dict[str, Dict[str, np.ndarray]]:\n", + " \"\"\"\n", + " Load loss histories from experiments across multiple sweeps.\n", + "\n", + " Args:\n", + " sweep_experiments: Dictionary mapping sweep_dir -> list of experiment names\n", + " e.g., {sweep_dir_1: [\"exp1\", \"exp2\"], sweep_dir_2: [\"exp3\", \"exp4\"]}\n", + " loss_type: 'train' or 'val'\n", + " seed: Seed number\n", + "\n", + " Returns:\n", + " Dictionary mapping experiment names to their loss dictionaries\n", + " Note: Experiment names must be unique across sweeps\n", + " \"\"\"\n", + " all_losses = {}\n", + "\n", + " for sweep_dir, exp_names in sweep_experiments.items():\n", + " for exp_name in exp_names:\n", + " losses = load_experiment_losses(sweep_dir, exp_name, seed)\n", + " if loss_type in losses:\n", + " # Store with experiment name as key\n", + " all_losses[exp_name] = losses\n", + " else:\n", + " print(\n", + " f\"Warning: No {loss_type} loss found for {exp_name} in {sweep_dir}\"\n", + " )\n", + "\n", + " return all_losses\n", + "\n", + "\n", + "def create_color_mapping_from_multiple_sweeps(\n", + " sweep_experiments: Dict[str, List[str]],\n", + " parameter_path: str,\n", + " cmap: str = \"viridis\",\n", + " seed: int = 0,\n", + " log_scale: bool = False,\n", + ") -> tuple:\n", + " \"\"\"\n", + " Create color mapping for experiments across multiple sweeps.\n", + "\n", + " Args:\n", + " sweep_experiments: Dictionary mapping sweep_dir -> list of experiment names\n", + " parameter_path: Dot-separated path to parameter (e.g., 'data.batch_size')\n", + " cmap: Colormap name\n", + " seed: Seed number\n", + " log_scale: Whether to use logarithmic scale for color mapping\n", + "\n", + " Returns:\n", + " Tuple of (color_mapping dict, scalar_map, param_values dict)\n", + " \"\"\"\n", + " param_values = {}\n", + "\n", + " # Extract parameters from all experiments across all sweeps\n", + " for sweep_dir, exp_names in sweep_experiments.items():\n", + " for exp_name in exp_names:\n", + " value = extract_config_parameter(sweep_dir, exp_name, parameter_path, seed)\n", + " if value is not None:\n", + " param_values[exp_name] = value\n", + "\n", + " if not param_values:\n", + " print(f\"Warning: Could not extract '{parameter_path}' from any experiments\")\n", + " return {}, None, {}\n", + "\n", + " # Create color mapping\n", + " values = list(param_values.values())\n", + " v_min = min(values)\n", + " v_max = max(values)\n", + "\n", + " # Use log or linear normalization\n", + " if log_scale:\n", + " if v_min <= 0:\n", + " print(\n", + " f\"Warning: log_scale requested but found non-positive values (min={v_min}). Using linear scale.\"\n", + " )\n", + " norm = plt.cm.colors.Normalize(vmin=v_min, vmax=v_max)\n", + " else:\n", + " norm = plt.cm.colors.LogNorm(vmin=v_min, vmax=v_max)\n", + " else:\n", + " norm = plt.cm.colors.Normalize(vmin=v_min, vmax=v_max)\n", + "\n", + " colormap = plt.cm.get_cmap(cmap)\n", + "\n", + " color_mapping = {}\n", + " for exp_name, value in param_values.items():\n", + " color_mapping[exp_name] = colormap(norm(value))\n", + "\n", + " scalar_map = plt.cm.ScalarMappable(norm=norm, cmap=colormap)\n", + "\n", + " return color_mapping, scalar_map, param_values\n", + "\n", + "\n", + "def plot_loss_comparison_multi_sweep(\n", + " sweep_experiments: Dict[str, List[str]],\n", + " loss_type: str = \"train\",\n", + " log_scale: bool = True,\n", + " figsize: tuple = (10, 6),\n", + " seed: int = 0,\n", + " remove_outliers: bool = False,\n", + " outlier_window: int = 10,\n", + " outlier_threshold: float = 3.0,\n", + " template_2d: Optional[np.ndarray] = None,\n", + " p1: Optional[int] = None,\n", + " p2: Optional[int] = None,\n", + " show_theory_bands: bool = True,\n", + " num_theory_lines: Optional[int] = None,\n", + " color_mapping: Optional[Dict[str, tuple]] = None,\n", + " colorbar_label: Optional[str] = None,\n", + " scalar_map: Optional[plt.cm.ScalarMappable] = None,\n", + "):\n", + " \"\"\"\n", + " Plot and compare loss curves from experiments across multiple sweeps.\n", + "\n", + " Args:\n", + " sweep_experiments: Dictionary mapping sweep_dir -> list of experiment names\n", + " e.g., {sweep_dir_1: [\"exp1\", \"exp2\"], sweep_dir_2: [\"exp3\"]}\n", + " loss_type: 'train' or 'val'\n", + " log_scale: Whether to use log scale for both axes\n", + " figsize: Figure size tuple\n", + " seed: Seed number\n", + " remove_outliers: Whether to remove outliers\n", + " outlier_window: Window size for outlier detection\n", + " outlier_threshold: Threshold for outlier detection\n", + " template_2d: Optional 2D template array for computing theory lines\n", + " p1, p2: Template dimensions\n", + " show_theory_bands: Whether to show colored bands between theory lines\n", + " num_theory_lines: Number of theory lines to show\n", + " color_mapping: Dictionary mapping experiment names to RGBA colors\n", + " colorbar_label: Label for colorbar\n", + " scalar_map: ScalarMappable for colorbar\n", + " \"\"\"\n", + " fig, ax = plt.subplots(figsize=figsize)\n", + "\n", + " # Compute theory lines if template is provided\n", + " theory_levels = None\n", + " if template_2d is not None:\n", + " if p1 is None or p2 is None:\n", + " raise ValueError(\"p1 and p2 must be provided if template_2d is given\")\n", + "\n", + " from gagf.rnns.utils import get_power_2d_adele\n", + "\n", + " _, _, power = get_power_2d_adele(template_2d)\n", + " power_flat = np.sort(power.flatten()[power.flatten() > 1e-20])[::-1]\n", + "\n", + " alpha_values = np.array(\n", + " [np.sum(power_flat[k:]) for k in range(len(power_flat))]\n", + " )\n", + " coef = 1.0 / (p1 * p2)\n", + " theory_levels = coef * alpha_values\n", + "\n", + " if num_theory_lines is not None:\n", + " theory_levels = theory_levels[: num_theory_lines + 1]\n", + "\n", + " n_bands = len(theory_levels) - 1\n", + " colors = plt.cm.tab10(np.linspace(0, 1, max(n_bands, 1)))\n", + "\n", + " if show_theory_bands and n_bands > 0:\n", + " for i in range(n_bands):\n", + " y_top = theory_levels[i]\n", + " y_bot = theory_levels[i + 1]\n", + " ax.axhspan(\n", + " y_bot,\n", + " y_top,\n", + " facecolor=colors[i % len(colors)],\n", + " alpha=0.15,\n", + " zorder=-3,\n", + " )\n", + "\n", + " for y in theory_levels:\n", + " ax.axhline(\n", + " y=y,\n", + " color=\"black\",\n", + " linestyle=\"--\",\n", + " linewidth=1.5,\n", + " alpha=0.7,\n", + " zorder=-2,\n", + " label=\"_nolegend_\",\n", + " )\n", + "\n", + " # Plot loss curves from all sweeps\n", + " for sweep_dir, exp_names in sweep_experiments.items():\n", + " for exp_name in exp_names:\n", + " losses = load_experiment_losses(sweep_dir, exp_name, seed)\n", + " if loss_type in losses:\n", + " loss_history = losses[loss_type]\n", + "\n", + " if remove_outliers:\n", + " loss_history, outliers_found = remove_outliers_local(\n", + " loss_history, window=outlier_window, threshold=outlier_threshold\n", + " )\n", + " if outliers_found:\n", + " print(f\"Outliers from {exp_name} removed for plot\")\n", + "\n", + " # Determine color\n", + " if color_mapping and exp_name in color_mapping:\n", + " color = color_mapping[exp_name]\n", + " else:\n", + " color = None\n", + "\n", + " ax.plot(\n", + " loss_history, label=exp_name, alpha=0.8, linewidth=2, color=color\n", + " )\n", + "\n", + " ax.set_xlabel(\"Step\", fontsize=14)\n", + " ax.set_ylabel(f\"{loss_type.capitalize()} Loss\", fontsize=14)\n", + " ax.set_title(\n", + " f\"{loss_type.capitalize()} Loss Comparison (Multiple Sweeps)\", fontsize=14\n", + " )\n", + " ax.legend(fontsize=10)\n", + " ax.grid(True, alpha=0.3)\n", + "\n", + " if log_scale:\n", + " ax.set_xscale(\"log\")\n", + " ax.set_yscale(\"log\")\n", + "\n", + " if color_mapping and scalar_map is not None:\n", + " label = colorbar_label if colorbar_label else \"Parameter Value\"\n", + " cbar = plt.colorbar(scalar_map, ax=ax, label=label, pad=0.02)\n", + " cbar.ax.tick_params(labelsize=10)\n", + "\n", + " plt.tight_layout()\n", + " plt.show()\n", + "\n", + " return fig, ax, theory_levels" + ], + "execution_count": null, + "outputs": [], + "id": "d96f443e" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "# Define which experiments from which sweeps\n", + "sweep_experiments = {\n", + " \"/home/facosta/group-agf/sweeps/optim_sweep_20251113_001549\": [\n", + " \"k_4_seqone\",\n", + " \"k_5_seqone\",\n", + " ],\n", + " \"/home/facosta/group-agf/sweeps/optim_sweep_20251113_145528\": [\n", + " \"k_2_seqone\",\n", + " \"k_3_seqone\",\n", + " ],\n", + "}\n", + "\n", + "# Load template (assuming same template across all)\n", + "template_path = os.path.join(\n", + " list(sweep_experiments.keys())[0], # First sweep\n", + " list(sweep_experiments.values())[0][0], # First experiment\n", + " \"seed_0\",\n", + " \"template.npy\",\n", + ")\n", + "template_2d = np.load(template_path)\n", + "p1, p2 = template_2d.shape\n", + "\n", + "# Create color mapping based on parameter across all sweeps\n", + "color_map, scalar_map, k_values = create_color_mapping_from_multiple_sweeps(\n", + " sweep_experiments,\n", + " \"data.k\", # or 'data.batch_size', 'training.learning_rate', etc.\n", + " cmap=\"viridis\",\n", + " log_scale=False,\n", + ")\n", + "\n", + "# Plot\n", + "plot_loss_comparison_multi_sweep(\n", + " sweep_experiments,\n", + " template_2d=template_2d,\n", + " p1=p1,\n", + " p2=p2,\n", + " color_mapping=color_map,\n", + " colorbar_label=\"k (sequence length)\",\n", + " scalar_map=scalar_map,\n", + " num_theory_lines=10,\n", + " remove_outliers=False,\n", + " log_scale=True,\n", + ")\n", + "\n", + "# Print extracted values to verify\n", + "print(\"Extracted k values:\", k_values)" + ], + "execution_count": null, + "outputs": [], + "id": "9ac8e706" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "def calculate_time_to_plateau_multi_sweep(\n", + " sweep_experiments: Dict[str, List[str]],\n", + " template_2d: np.ndarray,\n", + " p1: int,\n", + " p2: int,\n", + " target_plateau_idx: int = 1,\n", + " loss_type: str = \"train\",\n", + " seed: int = 0,\n", + " tolerance: float = 1.1,\n", + ") -> tuple:\n", + " \"\"\"\n", + " Calculate time to plateau for experiments across multiple sweeps.\n", + "\n", + " Args:\n", + " sweep_experiments: Dictionary mapping sweep_dir -> list of experiment names\n", + " template_2d: 2D template array\n", + " p1, p2: Template dimensions\n", + " target_plateau_idx: Which plateau to measure (1 = first drop)\n", + " loss_type: 'train' or 'val'\n", + " seed: Seed number\n", + " tolerance: Multiplier for plateau threshold\n", + "\n", + " Returns:\n", + " Tuple of (times_to_plateau dict, theory_levels array)\n", + " \"\"\"\n", + " from gagf.rnns.utils import get_power_2d_adele\n", + "\n", + " # Compute theory levels\n", + " _, _, power = get_power_2d_adele(template_2d)\n", + " power_flat = np.sort(power.flatten()[power.flatten() > 1e-20])[::-1]\n", + " alpha_values = np.array([np.sum(power_flat[k:]) for k in range(len(power_flat))])\n", + " coef = 1.0 / (p1 * p2)\n", + " theory_levels = coef * alpha_values\n", + "\n", + " if target_plateau_idx >= len(theory_levels):\n", + " raise ValueError(\n", + " f\"target_plateau_idx {target_plateau_idx} exceeds available plateaus ({len(theory_levels)})\"\n", + " )\n", + "\n", + " target_level = theory_levels[target_plateau_idx]\n", + " threshold = tolerance * target_level\n", + "\n", + " times_to_plateau = {}\n", + "\n", + " # Process all experiments across all sweeps\n", + " for sweep_dir, exp_names in sweep_experiments.items():\n", + " for exp_name in exp_names:\n", + " losses = load_experiment_losses(sweep_dir, exp_name, seed)\n", + " if loss_type in losses:\n", + " loss_history = losses[loss_type]\n", + "\n", + " # Find first step where loss drops below threshold\n", + " crossing_indices = np.where(loss_history <= threshold)[0]\n", + "\n", + " if len(crossing_indices) > 0:\n", + " times_to_plateau[exp_name] = crossing_indices[0]\n", + " else:\n", + " times_to_plateau[exp_name] = None # Never reached\n", + "\n", + " return times_to_plateau, theory_levels\n", + "\n", + "\n", + "def plot_time_to_plateau_multi_sweep(\n", + " sweep_experiments: Dict[str, List[str]],\n", + " template_2d: np.ndarray,\n", + " p1: int,\n", + " p2: int,\n", + " target_plateau_idx: int = 1,\n", + " loss_type: str = \"train\",\n", + " seed: int = 0,\n", + " tolerance: float = 1.1,\n", + " figsize: tuple = (10, 6),\n", + " sort_by: str = \"time\",\n", + " color_mapping: Optional[Dict[str, tuple]] = None,\n", + " colorbar_label: Optional[str] = None,\n", + " scalar_map: Optional[plt.cm.ScalarMappable] = None,\n", + " show_not_reached: bool = True,\n", + "):\n", + " \"\"\"\n", + " Plot time to reach a target plateau for experiments across multiple sweeps.\n", + "\n", + " Args:\n", + " sweep_experiments: Dictionary mapping sweep_dir -> list of experiment names\n", + " template_2d: 2D template array\n", + " p1, p2: Template dimensions\n", + " target_plateau_idx: Which plateau to measure (1 = first drop)\n", + " loss_type: 'train' or 'val'\n", + " seed: Seed number\n", + " tolerance: Multiplier for plateau threshold\n", + " figsize: Figure size\n", + " sort_by: 'time' (sort by time to plateau) or 'name' (alphabetical)\n", + " color_mapping: Dictionary mapping experiment names to RGBA colors\n", + " colorbar_label: Label for colorbar\n", + " scalar_map: ScalarMappable for colorbar\n", + " show_not_reached: Whether to show experiments that didn't reach plateau\n", + " \"\"\"\n", + " times, theory_levels = calculate_time_to_plateau_multi_sweep(\n", + " sweep_experiments,\n", + " template_2d,\n", + " p1,\n", + " p2,\n", + " target_plateau_idx,\n", + " loss_type,\n", + " seed,\n", + " tolerance,\n", + " )\n", + "\n", + " # Separate reached vs not reached\n", + " reached = {k: v for k, v in times.items() if v is not None}\n", + " not_reached = {k: v for k, v in times.items() if v is None}\n", + "\n", + " if not reached and not not_reached:\n", + " print(\"No experiments found!\")\n", + " return\n", + "\n", + " # Sort experiments that reached the plateau\n", + " if reached:\n", + " if sort_by == \"time\":\n", + " sorted_reached = sorted(reached.items(), key=lambda x: x[1])\n", + " else: # alphabetical\n", + " sorted_reached = sorted(reached.items(), key=lambda x: x[0])\n", + " else:\n", + " sorted_reached = []\n", + "\n", + " # Add not-reached experiments at the end if requested\n", + " if show_not_reached and not_reached:\n", + " not_reached_sorted = sorted(not_reached.keys())\n", + " exp_names = [item[0] for item in sorted_reached] + not_reached_sorted\n", + " # Use a very large value for visualization (e.g., max reached time * 1.5)\n", + " max_reached_time = max([v for v in reached.values()]) if reached else 10000\n", + " placeholder_time = max_reached_time * 1.3\n", + " steps = [item[1] for item in sorted_reached] + [placeholder_time] * len(\n", + " not_reached_sorted\n", + " )\n", + " reached_mask = [True] * len(sorted_reached) + [False] * len(not_reached_sorted)\n", + " else:\n", + " exp_names = [item[0] for item in sorted_reached]\n", + " steps = [item[1] for item in sorted_reached]\n", + " reached_mask = [True] * len(sorted_reached)\n", + "\n", + " if not exp_names:\n", + " print(\"No experiments to plot!\")\n", + " return\n", + "\n", + " # Create bar plot\n", + " fig, ax = plt.subplots(figsize=figsize)\n", + " bars = ax.bar(range(len(exp_names)), steps, alpha=0.7, edgecolor=\"black\")\n", + "\n", + " # Color bars\n", + " for i, (bar, exp_name, did_reach) in enumerate(zip(bars, exp_names, reached_mask)):\n", + " if not did_reach:\n", + " # Gray out experiments that didn't reach plateau\n", + " bar.set_color(\"lightgray\")\n", + " bar.set_alpha(0.4)\n", + " bar.set_hatch(\"///\")\n", + " elif color_mapping and exp_name in color_mapping:\n", + " bar.set_color(color_mapping[exp_name])\n", + " else:\n", + " # Default gradient coloring\n", + " colors = plt.cm.viridis(\n", + " np.linspace(0.2, 0.9, len([m for m in reached_mask if m]))\n", + " )\n", + " bar.set_color(colors[i] if did_reach else \"lightgray\")\n", + "\n", + " ax.set_xticks(range(len(exp_names)))\n", + " ax.set_xticklabels(exp_names, rotation=45, ha=\"right\")\n", + " ax.set_xlabel(\"Experiment\", fontsize=12)\n", + " ax.set_ylabel(\"Steps to Reach Plateau\", fontsize=12)\n", + " ax.set_title(\n", + " f\"Time to Reach Plateau {target_plateau_idx} (Level: {theory_levels[target_plateau_idx]:.2e})\",\n", + " fontsize=13,\n", + " )\n", + " ax.grid(True, alpha=0.3, axis=\"y\")\n", + "\n", + " # Add value labels on bars\n", + " for i, (bar, step, did_reach, exp_name) in enumerate(\n", + " zip(bars, steps, reached_mask, exp_names)\n", + " ):\n", + " height = bar.get_height()\n", + " if did_reach:\n", + " ax.text(\n", + " bar.get_x() + bar.get_width() / 2.0,\n", + " height,\n", + " f\"{int(step):,}\",\n", + " ha=\"center\",\n", + " va=\"bottom\",\n", + " fontsize=9,\n", + " )\n", + " else:\n", + " # Add \"Did not reach\" annotation\n", + " ax.text(\n", + " bar.get_x() + bar.get_width() / 2.0,\n", + " height / 2,\n", + " \"Did not\\nreach\",\n", + " ha=\"center\",\n", + " va=\"center\",\n", + " fontsize=8,\n", + " style=\"italic\",\n", + " color=\"darkgray\",\n", + " weight=\"bold\",\n", + " )\n", + "\n", + " # Add colorbar if color mapping provided (only for experiments that reached)\n", + " if color_mapping and scalar_map is not None and reached:\n", + " label = colorbar_label if colorbar_label else \"Parameter Value\"\n", + " cbar = plt.colorbar(scalar_map, ax=ax, label=label, pad=0.02)\n", + " cbar.ax.tick_params(labelsize=10)\n", + "\n", + " plt.tight_layout()\n", + "\n", + " # Print summary\n", + " print(\n", + " f\"\\nTime to reach plateau {target_plateau_idx} (threshold: {theory_levels[target_plateau_idx]:.2e}):\"\n", + " )\n", + " print(\"-\" * 60)\n", + " if reached:\n", + " for name, step in sorted_reached:\n", + " print(f\" {name:30s}: {step:8,} steps\")\n", + "\n", + " if not_reached:\n", + " print(f\"\\nExperiments that did not reach plateau {target_plateau_idx}:\")\n", + " for name in not_reached_sorted:\n", + " print(f\" - {name}\")\n", + "\n", + " plt.show()\n", + "\n", + " return fig, ax, times, theory_levels" + ], + "execution_count": null, + "outputs": [], + "id": "1019938c" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "# Define your experiments across multiple sweeps\n", + "sweep_experiments = {\n", + " \"/home/facosta/group-agf/sweeps/optim_sweep_20251113_001549\": [\n", + " \"k_4_seqone\",\n", + " \"k_5_seqone\",\n", + " ],\n", + " \"/home/facosta/group-agf/sweeps/optim_sweep_20251113_145528\": [\n", + " \"k_2_seqone\",\n", + " \"k_3_seqone\",\n", + " ],\n", + "}\n", + "\n", + "# Load template\n", + "template_path = os.path.join(\n", + " \"/home/facosta/group-agf/sweeps/optim_sweep_20251113_001549\",\n", + " \"k_4_seqone\",\n", + " \"seed_0\",\n", + " \"template.npy\",\n", + ")\n", + "template_2d = np.load(template_path)\n", + "p1, p2 = template_2d.shape\n", + "\n", + "# Create color mapping by k value\n", + "color_map, scalar_map, k_values = create_color_mapping_from_multiple_sweeps(\n", + " sweep_experiments, \"data.k\", cmap=\"viridis\", log_scale=False\n", + ")\n", + "\n", + "# Plot time to first plateau\n", + "fig, ax, times, levels = plot_time_to_plateau_multi_sweep(\n", + " sweep_experiments,\n", + " template_2d,\n", + " p1,\n", + " p2,\n", + " target_plateau_idx=1, # First drop\n", + " tolerance=1.1,\n", + " color_mapping=color_map,\n", + " colorbar_label=\"k (sequence length)\",\n", + " scalar_map=scalar_map,\n", + " sort_by=\"name\", # or 'time'\n", + " show_not_reached=True, # Show experiments that didn't reach plateau\n", + ")" + ], + "execution_count": null, + "outputs": [], + "id": "84c284b1" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Batch size sweep (seq-to-one, k=3)" + ], + "id": "78bfc515" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "import yaml\n", + "\n", + "\n", + "def extract_config_parameter(\n", + " sweep_dir: str, experiment_name: str, parameter_path: str, seed: int = 0\n", + ") -> any:\n", + " \"\"\"\n", + " Extract a parameter value from an experiment's config file.\n", + "\n", + " Args:\n", + " sweep_dir: Path to sweep directory\n", + " experiment_name: Name of experiment\n", + " parameter_path: Dot-separated path to parameter (e.g., 'data.batch_size', 'training.learning_rate')\n", + " seed: Seed number (for getting from seed_X/config.yaml)\n", + "\n", + " Returns:\n", + " Parameter value or None if not found\n", + " \"\"\"\n", + " # Try configs directory first\n", + " config_path = Path(sweep_dir) / \"configs\" / f\"{experiment_name}_config.yaml\"\n", + "\n", + " # If not there, try seed_X directory\n", + " if not config_path.exists():\n", + " config_path = Path(sweep_dir) / experiment_name / f\"seed_{seed}\" / \"config.yaml\"\n", + "\n", + " if not config_path.exists():\n", + " return None\n", + "\n", + " try:\n", + " with open(config_path, \"r\") as f:\n", + " config = yaml.safe_load(f)\n", + "\n", + " # Navigate through nested structure using dot notation\n", + " value = config\n", + " for key in parameter_path.split(\".\"):\n", + " value = value[key]\n", + "\n", + " return value\n", + " except (KeyError, TypeError):\n", + " return None\n", + "\n", + "\n", + "def create_color_mapping(\n", + " sweep_dir: str,\n", + " parameter_path: str,\n", + " experiments: Optional[List[str]] = None,\n", + " cmap: str = \"viridis\",\n", + " seed: int = 0,\n", + " log_scale: bool = False,\n", + ") -> tuple:\n", + " \"\"\"\n", + " Create a color mapping for experiments based on a config parameter.\n", + "\n", + " Args:\n", + " sweep_dir: Path to sweep directory\n", + " parameter_path: Dot-separated path to parameter (e.g., 'data.batch_size')\n", + " experiments: List of experiment names (None = all)\n", + " cmap: Colormap name\n", + " seed: Seed number\n", + " log_scale: Whether to use logarithmic scale for color mapping\n", + "\n", + " Returns:\n", + " Tuple of (color_mapping dict, scalar_map, param_values dict)\n", + " \"\"\"\n", + " if experiments is None:\n", + " experiments = get_sweep_experiments(sweep_dir)\n", + "\n", + " # Extract parameter values for all experiments\n", + " param_values = {}\n", + " for exp_name in experiments:\n", + " value = extract_config_parameter(sweep_dir, exp_name, parameter_path, seed)\n", + " if value is not None:\n", + " param_values[exp_name] = value\n", + "\n", + " if not param_values:\n", + " print(f\"Warning: Could not extract '{parameter_path}' from any experiments\")\n", + " return {}, None, {}\n", + "\n", + " # Create color mapping\n", + " values = list(param_values.values())\n", + " v_min = min(values)\n", + " v_max = max(values)\n", + "\n", + " # Use log or linear normalization\n", + " if log_scale:\n", + " if v_min <= 0:\n", + " print(\n", + " f\"Warning: log_scale requested but found non-positive values (min={v_min}). Using linear scale.\"\n", + " )\n", + " norm = plt.cm.colors.Normalize(vmin=v_min, vmax=v_max)\n", + " else:\n", + " norm = plt.cm.colors.LogNorm(vmin=v_min, vmax=v_max)\n", + " else:\n", + " norm = plt.cm.colors.Normalize(vmin=v_min, vmax=v_max)\n", + "\n", + " colormap = plt.cm.get_cmap(cmap)\n", + "\n", + " color_mapping = {}\n", + " for exp_name, value in param_values.items():\n", + " color_mapping[exp_name] = colormap(norm(value))\n", + "\n", + " # Also return the scalar mappable for colorbar\n", + " scalar_map = plt.cm.ScalarMappable(norm=norm, cmap=colormap)\n", + "\n", + " return color_mapping, scalar_map, param_values" + ], + "execution_count": null, + "outputs": [], + "id": "ac01c062" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "def plot_loss_comparison(\n", + " sweep_dir: str,\n", + " experiments: Optional[List[str]] = None,\n", + " loss_type: str = \"train\",\n", + " log_scale: bool = True,\n", + " figsize: tuple = (10, 6),\n", + " seed: int = 0,\n", + " remove_outliers: bool = False,\n", + " outlier_window: int = 10,\n", + " outlier_threshold: float = 3.0,\n", + " template_2d: Optional[np.ndarray] = None,\n", + " p1: Optional[int] = None,\n", + " p2: Optional[int] = None,\n", + " show_theory_bands: bool = True,\n", + " num_theory_lines: Optional[int] = None,\n", + " color_mapping: Optional[Dict[str, tuple]] = None,\n", + " colorbar_label: Optional[str] = None,\n", + " scalar_map: Optional[plt.cm.ScalarMappable] = None,\n", + "):\n", + " \"\"\"\n", + " Plot and compare loss curves from multiple experiments.\n", + "\n", + " Args:\n", + " sweep_dir: Path to sweep directory\n", + " experiments: List of experiment names to plot (None = all experiments)\n", + " loss_type: 'train' or 'val'\n", + " log_scale: Whether to use log scale for both axes\n", + " figsize: Figure size tuple\n", + " seed: Seed number (default: 0)\n", + " remove_outliers: Whether to remove outliers using local outlier replacement\n", + " outlier_window: Window size for outlier detection (default: 10)\n", + " outlier_threshold: Threshold in standard deviations for outlier detection (default: 3.0)\n", + " template_2d: Optional 2D template array for computing theory lines\n", + " p1: First dimension of template (required if template_2d is provided)\n", + " p2: Second dimension of template (required if template_2d is provided)\n", + " show_theory_bands: Whether to show colored bands between theory lines (default: True)\n", + " num_theory_lines: Number of theory lines to show (default: None = show all)\n", + " color_mapping: Dictionary mapping experiment names to RGBA colors\n", + " colorbar_label: Label for colorbar (if color_mapping provided)\n", + " scalar_map: ScalarMappable for colorbar (if color_mapping provided)\n", + " \"\"\"\n", + " if experiments is None:\n", + " experiments = get_sweep_experiments(sweep_dir)\n", + "\n", + " fig, ax = plt.subplots(figsize=figsize)\n", + "\n", + " # Compute theory lines if template is provided\n", + " theory_levels = None\n", + " if template_2d is not None:\n", + " if p1 is None or p2 is None:\n", + " raise ValueError(\"p1 and p2 must be provided if template_2d is given\")\n", + "\n", + " # Import the helper function (assuming it's in utils.py)\n", + " from gagf.rnns.utils import get_power_2d_adele\n", + "\n", + " # Compute power spectrum of template\n", + " _, _, power = get_power_2d_adele(template_2d)\n", + " power_flat = np.sort(power.flatten()[power.flatten() > 1e-20])[::-1]\n", + "\n", + " # Theory levels (cumulative tail sums)\n", + " alpha_values = np.array(\n", + " [np.sum(power_flat[k:]) for k in range(len(power_flat))]\n", + " )\n", + " coef = 1.0 / (p1 * p2)\n", + " theory_levels = coef * alpha_values # strictly decreasing\n", + "\n", + " # Limit number of lines if specified\n", + " if num_theory_lines is not None:\n", + " theory_levels = theory_levels[: num_theory_lines + 1]\n", + "\n", + " # Generate colors for bands\n", + " n_bands = len(theory_levels) - 1\n", + " colors = plt.cm.tab10(np.linspace(0, 1, max(n_bands, 1)))\n", + "\n", + " # Draw colored bands between theory lines\n", + " if show_theory_bands and n_bands > 0:\n", + " for i in range(n_bands):\n", + " y_top = theory_levels[i]\n", + " y_bot = theory_levels[i + 1]\n", + " ax.axhspan(\n", + " y_bot,\n", + " y_top,\n", + " facecolor=colors[i % len(colors)],\n", + " alpha=0.15,\n", + " zorder=-3,\n", + " )\n", + "\n", + " # Draw the black theory lines\n", + " for y in theory_levels:\n", + " ax.axhline(\n", + " y=y,\n", + " color=\"black\",\n", + " linestyle=\"--\",\n", + " linewidth=1.5,\n", + " alpha=0.7,\n", + " zorder=-2,\n", + " label=\"_nolegend_\",\n", + " )\n", + "\n", + " # Plot loss curves\n", + " for exp_name in experiments:\n", + " losses = load_experiment_losses(sweep_dir, exp_name, seed)\n", + " if loss_type in losses:\n", + " loss_history = losses[loss_type]\n", + "\n", + " # Apply outlier removal if requested\n", + " if remove_outliers:\n", + " loss_history, outliers_found = remove_outliers_local(\n", + " loss_history, window=outlier_window, threshold=outlier_threshold\n", + " )\n", + " if outliers_found:\n", + " print(f\"Outliers from {exp_name} removed for plot\")\n", + "\n", + " # Determine color\n", + " if color_mapping and exp_name in color_mapping:\n", + " color = color_mapping[exp_name]\n", + " else:\n", + " color = None # Use default color cycle\n", + "\n", + " ax.plot(loss_history, label=exp_name, alpha=0.8, linewidth=2, color=color)\n", + "\n", + " ax.set_xlabel(\"Step\", fontsize=14)\n", + " ax.set_ylabel(f\"{loss_type.capitalize()} Loss\", fontsize=14)\n", + " title = f\"{loss_type.capitalize()} Loss Comparison - {Path(sweep_dir).name}\"\n", + " if remove_outliers:\n", + " title += \" (outliers removed)\"\n", + " ax.set_title(title, fontsize=14)\n", + " ax.legend(fontsize=10)\n", + " ax.grid(True, alpha=0.3)\n", + "\n", + " if log_scale:\n", + " ax.set_xscale(\"log\")\n", + " ax.set_yscale(\"log\")\n", + "\n", + " # Add colorbar if color mapping provided\n", + " if color_mapping and scalar_map is not None:\n", + " label = colorbar_label if colorbar_label else \"Parameter Value\"\n", + " cbar = plt.colorbar(scalar_map, ax=ax, label=label, pad=0.02)\n", + " cbar.ax.tick_params(labelsize=10)\n", + "\n", + " plt.tight_layout()\n", + " plt.show()\n", + "\n", + " return fig, ax, theory_levels" + ], + "execution_count": null, + "outputs": [], + "id": "b2da02fb" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "# Set up your sweep directory\n", + "batch_sweep_dir = \"/home/facosta/group-agf/sweeps/batch_sweep_20251113_171834\"\n", + "\n", + "# Get all experiments in the sweep\n", + "batch_experiments = get_sweep_experiments(batch_sweep_dir)\n", + "print(f\"Found experiments: {batch_experiments}\")\n", + "\n", + "# Load losses for all experiments\n", + "batch_all_losses = load_all_sweep_losses(batch_sweep_dir)" + ], + "execution_count": null, + "outputs": [], + "id": "8b2ce522" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "# First, load the template from one of your experiments\n", + "# (assuming they all use the same template)\n", + "template_path = os.path.join(batch_sweep_dir, \"batch_1000\", \"seed_0\", \"template.npy\")\n", + "template_2d = np.load(template_path)\n", + "p1, p2 = template_2d.shape\n", + "\n", + "plt.imshow(template_2d)" + ], + "execution_count": null, + "outputs": [], + "id": "520500f3" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "# Example 1: Color by batch_size\n", + "color_map, scalar_map, batch_values = create_color_mapping(\n", + " batch_sweep_dir,\n", + " \"data.batch_size\",\n", + " cmap=\"viridis\",\n", + " log_scale=True,\n", + ")\n", + "\n", + "plot_loss_comparison(\n", + " batch_sweep_dir,\n", + " template_2d=template_2d,\n", + " p1=p1,\n", + " p2=p2,\n", + " color_mapping=color_map,\n", + " colorbar_label=\"Batch Size\",\n", + " scalar_map=scalar_map,\n", + " num_theory_lines=10,\n", + " remove_outliers=True,\n", + " log_scale=False,\n", + ")\n", + "\n", + "\n", + "# Print the extracted values to verify\n", + "print(\"Batch sizes:\", batch_values)\n", + "\n", + "# Print the theory levels (plateau values)\n", + "print(\"Theory plateau levels:\")\n", + "for i, level in enumerate(theory_levels):\n", + " print(f\" Plateau {i}: {level:.6e}\")" + ], + "execution_count": null, + "outputs": [], + "id": "b9761849" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## MLP Scaling Sweep Heatmap\n", + "\n", + "Visualize the relationship between sequence length (k) and hidden dimension (width) for SequentialMLP.\n", + "\n", + "**Sweep parameters:**\n", + "- Model: SequentialMLP\n", + "- Dimension: 1, p = 10\n", + "- k values: 2, 3, 4, 5, 6 (5 values)\n", + "- hidden_dim values: 60, 360, 2160, 12960, 77760 (5 values = 10\u00d76\u00b9 through 10\u00d76\u2075)\n", + "- num_steps varies with k: k=2\u219250k, k=3\u2192100k, k=4\u2192150k, k=5\u2192200k, k=6\u2192250k\n", + "- Total: 25 experiments \u00d7 3 seeds = 75 runs" + ], + "id": "7acdd373" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "def plot_scaling_heatmap(\n", + " sweep_dir: str,\n", + " k_values: list = [2, 3, 4, 5, 6, 7, 8],\n", + " hidden_dims: list = [60, 360, 2160, 12960, 77760, 466560, 2799360],\n", + " use_log_scale: bool = True,\n", + " save_path: str = None\n", + "): \n", + " \"\"\"\n", + " Create a heatmap of final train loss vs k and hidden_dim.\n", + " \n", + " Args:\n", + " sweep_dir: Path to the sweep directory\n", + " k_values: List of k values (x-axis)\n", + " hidden_dims: List of hidden dimension values (y-axis)\n", + " use_log_scale: Whether to use log scale for the loss values\n", + " save_path: Optional path to save the figure\n", + " \"\"\"\n", + " # Load results\n", + " grid, std_grid = load_sweep_results_grid(sweep_dir, k_values, hidden_dims)\n", + " \n", + " # Apply log scale if requested\n", + " plot_grid = np.log10(grid) if use_log_scale else grid\n", + " \n", + " # Create figure\n", + " fig, ax = plt.subplots(figsize=(12, 10)) \n", + " \n", + " \n", + " # Create heatmap\n", + " im = ax.imshow(plot_grid, aspect='auto', cmap='viridis', origin='lower')\n", + " \n", + " # Set ticks and labels\n", + " ax.set_xticks(range(len(k_values)))\n", + " ax.set_yticks(range(len(hidden_dims)))\n", + " ax.set_xticklabels(k_values)\n", + " ax.set_yticklabels([f\"{h:,}\" for h in hidden_dims])\n", + " \n", + " # Labels\n", + " ax.set_xlabel('Sequence Length (k)', fontsize=14)\n", + " ax.set_ylabel('Hidden Dimension (width)', fontsize=14)\n", + " title = 'Final Train Loss: SequentialMLP Scaling'\n", + " if use_log_scale:\n", + " title += ' (log\u2081\u2080)'\n", + " ax.set_title(title, fontsize=16, pad=20)\n", + " \n", + " # Add colorbar\n", + " cbar = plt.colorbar(im, ax=ax)\n", + " cbar_label = 'log\u2081\u2080(Train Loss)' if use_log_scale else 'Train Loss'\n", + " cbar.set_label(cbar_label, fontsize=12)\n", + " \n", + " # Add text annotations\n", + "\n", + " # Add text annotations\n", + " for i in range(len(hidden_dims)):\n", + " for j in range(len(k_values)):\n", + " if not np.isnan(grid[i, j]):\n", + " text_val = f\"{grid[i, j]:.2e}\"\n", + " text_color = 'white' if plot_grid[i, j] < plot_grid[~np.isnan(plot_grid)].mean() else 'black'\n", + " ax.text(j, i, text_val, ha='center', va='center', \n", + " color=text_color, fontsize=8)\n", + " \n", + " plt.tight_layout()\n", + " \n", + " if save_path:\n", + " plt.savefig(save_path, dpi=300, bbox_inches='tight')\n", + " print(f\"Figure saved to: {save_path}\")\n", + " \n", + " plt.show()\n", + " \n", + " return grid" + ], + "execution_count": null, + "outputs": [], + "id": "92d3289e" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [], + "execution_count": null, + "outputs": [], + "id": "2e5c22df" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [], + "execution_count": null, + "outputs": [], + "id": "b10c9d83" + } + ], + "metadata": { + "kernelspec": { + "display_name": "gagf-PDhBFja6-py3.12", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.2" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} \ No newline at end of file diff --git a/notebooks/seq_mlp.ipynb b/notebooks/seq_mlp.ipynb new file mode 100644 index 0000000..b99fb65 --- /dev/null +++ b/notebooks/seq_mlp.ipynb @@ -0,0 +1,2071 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# MLP Scaling: $H$ vs $k$\n", + "\n", + "Hidden neurons vs sequence length scaling experiments." + ], + "id": "4265f1a8" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Set up" + ], + "id": "5a05ce99" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "# autoreload\n", + "%load_ext autoreload\n", + "%autoreload 2\n", + "# jupyter black formatter\n", + "%load_ext jupyter_black\n", + "\n", + "import subprocess\n", + "import os\n", + "import sys\n", + "\n", + "gitroot_path = subprocess.check_output(\n", + " [\"git\", \"rev-parse\", \"--show-toplevel\"], universal_newlines=True\n", + ").strip()\n", + "\n", + "os.chdir(gitroot_path)\n", + "print(\"Working directory: \", os.getcwd())\n", + "\n", + "if gitroot_path not in sys.path:\n", + " sys.path.insert(0, gitroot_path)\n", + "print(\"Directory added to path: \", gitroot_path)\n", + "\n", + "import yaml\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from pathlib import Path" + ], + "execution_count": null, + "outputs": [], + "id": "5cfe1142" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Specify experiment directory" + ], + "id": "15a42140" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "sweep_dir = \"/data/facosta/sweeps/sweep_mlp_scaling_20251212_161329\"\n", + "os.path.exists(sweep_dir)" + ], + "execution_count": null, + "outputs": [], + "id": "2ebd6750" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Final Loss Heatmap" + ], + "id": "cb3acce2" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "def load_sweep_results_grid(sweep_dir: str, k_values: list, hidden_dims: list):\n", + " \"\"\"\n", + " Load sweep results and organize into a grid for heatmap visualization.\n", + "\n", + " Args:\n", + " sweep_dir: Path to the sweep directory\n", + " k_values: List of k (sequence length) values\n", + " hidden_dims: List of hidden dimension values\n", + "\n", + " Returns:\n", + " grid: 2D numpy array with shape (len(hidden_dims), len(k_values))\n", + " containing mean final train losses\n", + " std_grid: 2D numpy array with standard deviations (if multiple seeds)\n", + " \"\"\"\n", + " sweep_path = Path(sweep_dir)\n", + "\n", + " # Initialize grids\n", + " grid = np.full((len(hidden_dims), len(k_values)), np.nan)\n", + " std_grid = np.full((len(hidden_dims), len(k_values)), np.nan)\n", + "\n", + " # Load results for each experiment\n", + " for i, h in enumerate(hidden_dims):\n", + " for j, k in enumerate(k_values):\n", + " exp_name = f\"k{k}_h{h}\"\n", + " exp_dir = sweep_path / exp_name\n", + "\n", + " if not exp_dir.exists():\n", + " print(f\"Warning: Experiment {exp_name} not found\")\n", + " continue\n", + "\n", + " # Load experiment summary\n", + " summary_file = exp_dir / \"experiment_summary.yaml\"\n", + " if summary_file.exists():\n", + " with open(summary_file, \"r\") as f:\n", + " summary = yaml.safe_load(f)\n", + "\n", + " # Get mean train loss\n", + " if \"train_loss_stats\" in summary:\n", + " grid[i, j] = summary[\"train_loss_stats\"][\"mean\"]\n", + " std_grid[i, j] = summary[\"train_loss_stats\"][\"std\"]\n", + " else:\n", + " print(f\"Warning: No train_loss_stats in {exp_name}\")\n", + " else:\n", + " print(f\"Warning: No summary file for {exp_name}\")\n", + "\n", + " return grid, std_grid" + ], + "execution_count": null, + "outputs": [], + "id": "af291059" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "k_values = [2, 3, 4, 5, 6, 7, 8]\n", + "\n", + "# hidden_dims = [60, 360, 2160, 12960, 77760]\n", + "hidden_dims = [6, 6**2, 6**3, 6**4, 6**5, 6**6]\n", + "\n", + "grid, _ = load_sweep_results_grid(sweep_dir, k_values, hidden_dims)" + ], + "execution_count": null, + "outputs": [], + "id": "54e321b2" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "plt.figure(figsize=(8, 6))\n", + "plt.imshow(grid, aspect=\"auto\", norm=None)\n", + "\n", + "# Correct labels: rows = hidden_dims (y), columns = k_values (x)\n", + "plt.xlabel(\"Sequence Length (k)\")\n", + "plt.ylabel(\"Hidden Dimension\")\n", + "\n", + "# Set tick labels to show actual values\n", + "plt.xticks(range(len(k_values)), k_values)\n", + "plt.yticks(range(len(hidden_dims)), hidden_dims)\n", + "\n", + "plt.gca().invert_yaxis()\n", + "\n", + "plt.title(\"Final Train Loss\")\n", + "\n", + "plt.colorbar(label=\"Final Train Loss\")\n", + "plt.show()" + ], + "execution_count": null, + "outputs": [], + "id": "2f62021a" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Loss Curve Integral Heatmap" + ], + "id": "fbcf4b02" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "def load_sweep_results_grid_integral(sweep_dir: str, k_values: list, hidden_dims: list):\n", + " \"\"\"\n", + " Load sweep results and compute integral of loss curves.\n", + "\n", + " Returns:\n", + " grid: 2D array with mean integral of loss curves\n", + " std_grid: 2D array with standard deviations across seeds\n", + " \"\"\"\n", + " sweep_path = Path(sweep_dir)\n", + "\n", + " grid = np.full((len(hidden_dims), len(k_values)), np.nan)\n", + " std_grid = np.full((len(hidden_dims), len(k_values)), np.nan)\n", + "\n", + " for i, h in enumerate(hidden_dims):\n", + " for j, k in enumerate(k_values):\n", + " exp_name = f\"k{k}_h{h}\"\n", + " exp_dir = sweep_path / exp_name\n", + "\n", + " if not exp_dir.exists():\n", + " continue\n", + "\n", + " # Collect integrals from all seeds\n", + " integrals = []\n", + " for seed_dir in exp_dir.glob(\"seed_*\"):\n", + " loss_file = seed_dir / \"train_loss_history.npy\"\n", + " if loss_file.exists():\n", + " loss_history = np.load(loss_file)\n", + " # Compute integral using trapezoidal rule\n", + " integral = np.trapz(loss_history)\n", + " integrals.append(integral)\n", + "\n", + " if integrals:\n", + " grid[i, j] = np.mean(integrals)\n", + " std_grid[i, j] = np.std(integrals) if len(integrals) > 1 else 0.0\n", + "\n", + " return grid, std_grid" + ], + "execution_count": null, + "outputs": [], + "id": "4bb980bb" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "integral_grid, integral_std = load_sweep_results_grid_integral(\n", + " sweep_dir, k_values, hidden_dims\n", + ")\n", + "\n", + "from matplotlib.colors import LogNorm, SymLogNorm\n", + "\n", + "plt.figure(figsize=(8, 6))\n", + "plt.imshow(integral_grid, aspect=\"auto\", norm=LogNorm())\n", + "plt.xlabel(\"Sequence Length (k)\")\n", + "plt.ylabel(\"Hidden Dimension\")\n", + "plt.xticks(range(len(k_values)), k_values)\n", + "plt.yticks(range(len(hidden_dims)), hidden_dims)\n", + "\n", + "plt.gca().invert_yaxis()\n", + "plt.colorbar(label=\"Loss Curve Integral\")\n", + "plt.title(\"Loss Curve Integral\")\n", + "plt.show()" + ], + "execution_count": null, + "outputs": [], + "id": "8e5017cd" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Steps to Convergence Heatmap" + ], + "id": "6b9956cf" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "def load_sweep_results_grid_convergence(\n", + " sweep_dir: str, k_values: list, hidden_dims: list, reduction_threshold: float = 0.99\n", + "):\n", + " \"\"\"\n", + " Load sweep results and compute steps to convergence.\n", + "\n", + " Convergence is defined as reaching `reduction_threshold` loss reduction\n", + " (e.g., 0.99 = 99% reduction from initial loss).\n", + "\n", + " If convergence is not reached, the grid point is set to NaN (blacked out).\n", + "\n", + " Args:\n", + " sweep_dir: Path to the sweep directory\n", + " k_values: List of k (sequence length) values\n", + " hidden_dims: List of hidden dimension values\n", + " reduction_threshold: Fraction of loss reduction to consider converged\n", + "\n", + " Returns:\n", + " grid: 2D array with mean steps to convergence (NaN if didn't converge)\n", + " std_grid: 2D array with standard deviations across seeds\n", + " \"\"\"\n", + " sweep_path = Path(sweep_dir)\n", + "\n", + " grid = np.full((len(hidden_dims), len(k_values)), np.nan)\n", + " std_grid = np.full((len(hidden_dims), len(k_values)), np.nan)\n", + "\n", + " for i, h in enumerate(hidden_dims):\n", + " for j, k in enumerate(k_values):\n", + " exp_name = f\"k{k}_h{h}\"\n", + " exp_dir = sweep_path / exp_name\n", + "\n", + " if not exp_dir.exists():\n", + " continue\n", + "\n", + " # Collect convergence steps from all seeds\n", + " convergence_steps = []\n", + " for seed_dir in exp_dir.glob(\"seed_*\"):\n", + " loss_file = seed_dir / \"train_loss_history.npy\"\n", + " if loss_file.exists():\n", + " loss_history = np.load(loss_file)\n", + " initial_loss = loss_history[0]\n", + "\n", + " if initial_loss > 0:\n", + " # Compute reduction at each step\n", + " reductions = 1 - loss_history / initial_loss\n", + "\n", + " # Find first step where reduction >= threshold\n", + " converged_mask = reductions >= reduction_threshold\n", + " if np.any(converged_mask):\n", + " step = np.argmax(converged_mask) # First True\n", + " convergence_steps.append(step)\n", + " # else: Never converged - don't add to list\n", + "\n", + " if convergence_steps:\n", + " grid[i, j] = np.mean(convergence_steps)\n", + " std_grid[i, j] = (\n", + " np.std(convergence_steps) if len(convergence_steps) > 1 else 0.0\n", + " )\n", + " # else: No seeds converged - grid[i,j] remains NaN (blacked out)\n", + "\n", + " return grid, std_grid" + ], + "execution_count": null, + "outputs": [], + "id": "4bf3dbcc" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "reduction_threshold = 0.6\n", + "conv_grid, conv_std = load_sweep_results_grid_convergence(\n", + " sweep_dir, k_values, hidden_dims, reduction_threshold=reduction_threshold\n", + ")\n", + "plt.figure(figsize=(10, 6)) # Made slightly wider to accommodate legend\n", + "cmap = plt.cm.viridis_r.copy()\n", + "cmap.set_bad(color=\"black\")\n", + "plt.imshow(conv_grid, aspect=\"equal\", cmap=cmap, norm=LogNorm())\n", + "\n", + "plt.xlabel(\"Sequence Length ($k$)\")\n", + "plt.ylabel(\"Hidden Dimension $H$\")\n", + "plt.xticks(range(len(k_values)), k_values)\n", + "\n", + "# Create y-tick labels with both power notation and actual values\n", + "ytick_labels = [f\"$6^{i+1}$ ({val:,})\" for i, val in enumerate(hidden_dims)]\n", + "plt.yticks(range(len(hidden_dims)), ytick_labels)\n", + "plt.gca().invert_yaxis()\n", + "\n", + "x_step = np.arange(len(k_values)) - 0.5\n", + "y_step = np.minimum(x_step, len(hidden_dims)) # Example: stays within bounds\n", + "\n", + "plt.step(\n", + " x_step,\n", + " y_step,\n", + " where=\"post\",\n", + " color=\"red\",\n", + " linewidth=3,\n", + " linestyle=\"--\",\n", + " label=\"Theory boundary ($H > 6^{k-1}$)\",\n", + ")\n", + "\n", + "# Place legend outside the plot area (to the right)\n", + "plt.legend(loc=\"upper center\", bbox_to_anchor=(0.5, -0.12), fontsize=12, frameon=True)\n", + "\n", + "plt.colorbar(label=f\"Steps to {reduction_threshold*100}% Convergence\")\n", + "plt.title(f\"Steps to {reduction_threshold*100}% Convergence (black = did not converge)\")\n", + "plt.tight_layout() # Adjust layout to prevent clipping\n", + "plt.show()" + ], + "execution_count": null, + "outputs": [], + "id": "6b083a66" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "def load_sweep_results_grid_spikiness(\n", + " sweep_dir: str,\n", + " k_values: list,\n", + " hidden_dims: list,\n", + "):\n", + " \"\"\"\n", + " Compute fraction of training steps where loss increased (instability).\n", + "\n", + " Returns:\n", + " grid: 2D array with mean frac_upward across seeds\n", + " std_grid: 2D array with standard deviations\n", + " \"\"\"\n", + " sweep_path = Path(sweep_dir)\n", + "\n", + " grid = np.full((len(hidden_dims), len(k_values)), np.nan)\n", + " std_grid = np.full((len(hidden_dims), len(k_values)), np.nan)\n", + "\n", + " for i, h in enumerate(hidden_dims):\n", + " for j, k in enumerate(k_values):\n", + " exp_name = f\"k{k}_h{h}\"\n", + " exp_dir = sweep_path / exp_name\n", + "\n", + " if not exp_dir.exists():\n", + " continue\n", + "\n", + " frac_upwards = []\n", + " for seed_dir in exp_dir.glob(\"seed_*\"):\n", + " loss_file = seed_dir / \"train_loss_history.npy\"\n", + " if loss_file.exists():\n", + " loss_history = np.load(loss_file)\n", + " log_loss = np.log10(loss_history + 1e-10)\n", + " log_changes = np.diff(log_loss)\n", + "\n", + " # Fraction of steps where loss went UP\n", + " frac_upward = np.sum(log_changes > 0) / len(log_changes)\n", + " frac_upwards.append(frac_upward)\n", + "\n", + " if frac_upwards:\n", + " grid[i, j] = np.mean(frac_upwards)\n", + " std_grid[i, j] = np.std(frac_upwards) if len(frac_upwards) > 1 else 0.0\n", + "\n", + " return grid, std_grid" + ], + "execution_count": null, + "outputs": [], + "id": "130132a9" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "# Load both convergence and spikiness data\n", + "reduction_threshold = 0.6 # Adjust as needed\n", + "conv_grid, conv_std = load_sweep_results_grid_convergence(\n", + " sweep_dir, k_values, hidden_dims, reduction_threshold=reduction_threshold\n", + ")\n", + "\n", + "stability_grid, stability_std = load_sweep_results_grid_spikiness(\n", + " sweep_dir, k_values, hidden_dims\n", + ")\n", + "\n", + "# Create a masked version of stability_grid where non-converged runs are NaN\n", + "stability_grid_masked = stability_grid.copy()\n", + "stability_grid_masked[np.isnan(conv_grid)] = np.nan # Mask non-converged runs\n", + "\n", + "# Create plot\n", + "plt.figure(figsize=(10, 6))\n", + "\n", + "# Use a colormap with bad values (NaN) shown as black\n", + "cmap = plt.cm.plasma.copy()\n", + "cmap.set_bad(color=\"black\")\n", + "\n", + "plt.imshow(stability_grid_masked, aspect=\"equal\", cmap=cmap, vmin=0, vmax=0.5)\n", + "\n", + "plt.xlabel(\"Sequence Length ($k$)\")\n", + "plt.ylabel(\"Hidden Dimension $H$\")\n", + "plt.xticks(range(len(k_values)), k_values)\n", + "\n", + "# Create y-tick labels with both power notation and actual values\n", + "ytick_labels = [f\"$6^{i+1}$ ({val:,})\" for i, val in enumerate(hidden_dims)]\n", + "plt.yticks(range(len(hidden_dims)), ytick_labels)\n", + "plt.gca().invert_yaxis()\n", + "\n", + "x_step = np.arange(len(k_values)) - 0.5\n", + "y_step = np.minimum(x_step, len(hidden_dims)) # Example: stays within bounds\n", + "\n", + "plt.step(\n", + " x_step,\n", + " y_step,\n", + " where=\"post\",\n", + " color=\"red\",\n", + " linewidth=3,\n", + " linestyle=\"--\",\n", + " label=\"Theory boundary ($H > 6^{k-1}$)\",\n", + ")\n", + "\n", + "plt.legend(loc=\"upper left\", fontsize=10, frameon=True)\n", + "\n", + "plt.colorbar(label=\"Fraction of Upward Steps\")\n", + "plt.title(\n", + " f\"Training Instability\\n(black = did not converge)\",\n", + " fontsize=13,\n", + " fontweight=\"bold\",\n", + ")\n", + "\n", + "plt.tight_layout()\n", + "plt.show()\n", + "\n", + "# Print summary\n", + "n_converged = np.sum(~np.isnan(conv_grid))\n", + "n_not_converged = np.sum(np.isnan(conv_grid))\n", + "print(f\"\\n{'='*60}\")\n", + "print(f\"Converged runs: {n_converged} ({100*n_converged/conv_grid.size:.1f}%)\")\n", + "print(\n", + " f\"Did not converge (black): {n_not_converged} ({100*n_not_converged/conv_grid.size:.1f}%)\"\n", + ")\n", + "print(f\"{'='*60}\\n\")" + ], + "execution_count": null, + "outputs": [], + "id": "4fba73d0" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "stability_grid, stability_std = load_sweep_results_grid_spikiness(\n", + " sweep_dir, k_values, hidden_dims\n", + ")\n", + "\n", + "# Create side-by-side subplots\n", + "plt.figure(figsize=(10, 6))\n", + "\n", + "# ========== RIGHT PANEL: SPIKINESS ==========\n", + "# Use a different colormap - plasma, magma, or RdYlGn_r work well\n", + "plt.imshow(stability_grid, aspect=\"equal\", cmap=\"plasma\", vmin=0, vmax=0.5)\n", + "\n", + "\n", + "plt.xlabel(\"Sequence Length ($k$)\")\n", + "plt.ylabel(\"Hidden Dimension $H$\")\n", + "plt.xticks(range(len(k_values)), k_values)\n", + "\n", + "# Create y-tick labels with both power notation and actual values\n", + "ytick_labels = [f\"$6^{i+1}$ ({val:,})\" for i, val in enumerate(hidden_dims)]\n", + "plt.yticks(range(len(hidden_dims)), ytick_labels)\n", + "plt.gca().invert_yaxis()\n", + "\n", + "x_step = np.arange(len(k_values)) - 0.5\n", + "y_step = np.minimum(x_step, len(hidden_dims)) # Example: stays within bounds\n", + "\n", + "plt.step(\n", + " x_step,\n", + " y_step,\n", + " where=\"post\",\n", + " color=\"red\",\n", + " linewidth=3,\n", + " linestyle=\"--\",\n", + " label=\"Theory boundary ($H > 6^{k-1}$)\",\n", + ")\n", + "\n", + "plt.legend(loc=\"upper left\", fontsize=10, frameon=True)\n", + "\n", + "plt.colorbar(label=\"Fraction of Upward Steps\")\n", + "# cbar2.ax.axhline(0.3, color=\"white\", linewidth=2, linestyle=\"--\") # Mark threshold\n", + "plt.title(\n", + " \"Training Instability\\n(higher = more unstable)\", fontsize=13, fontweight=\"bold\"\n", + ")\n", + "\n", + "plt.tight_layout()\n", + "plt.show()" + ], + "execution_count": null, + "outputs": [], + "id": "7a228687" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "# Load both metrics\n", + "reduction_threshold = 0.6\n", + "conv_grid, conv_std = load_sweep_results_grid_convergence(\n", + " sweep_dir, k_values, hidden_dims, reduction_threshold=reduction_threshold\n", + ")\n", + "stability_grid, stability_std = load_sweep_results_grid_spikiness(\n", + " sweep_dir, k_values, hidden_dims\n", + ")\n", + "\n", + "# Create binary mask: 1 if converged AND spiky, 0 otherwise\n", + "spikiness_threshold = 0.3 # Adjust this threshold as needed\n", + "\n", + "converged_and_spiky = np.zeros_like(conv_grid)\n", + "for i in range(len(hidden_dims)):\n", + " for j in range(len(k_values)):\n", + " converged = not np.isnan(conv_grid[i, j])\n", + " spiky = stability_grid[i, j] > spikiness_threshold\n", + "\n", + " if converged and spiky:\n", + " converged_and_spiky[i, j] = 1.0\n", + " else:\n", + " converged_and_spiky[i, j] = np.nan # Will show as white\n", + "\n", + "# Plot\n", + "plt.figure(figsize=(8, 6.5))\n", + "\n", + "# Custom colormap: white for NaN, red for 1\n", + "cmap = plt.cm.Reds.copy()\n", + "cmap.set_bad(color=\"white\")\n", + "\n", + "im = plt.imshow(converged_and_spiky, aspect=\"equal\", cmap=cmap, vmin=0, vmax=1)\n", + "\n", + "plt.xlabel(\"Sequence Length (k)\", fontsize=12)\n", + "plt.ylabel(\"Hidden Dimension\", fontsize=12)\n", + "plt.xticks(range(len(k_values)), k_values)\n", + "\n", + "ytick_labels = [f\"$6^{i+1}$ ({val:,})\" for i, val in enumerate(hidden_dims)]\n", + "plt.yticks(range(len(hidden_dims)), ytick_labels)\n", + "plt.gca().invert_yaxis()\n", + "\n", + "# Add theory boundary\n", + "x_step = np.arange(len(k_values)) - 0.5\n", + "y_step = np.minimum(x_step, len(hidden_dims))\n", + "plt.step(\n", + " x_step,\n", + " y_step,\n", + " where=\"post\",\n", + " color=\"blue\",\n", + " linewidth=3,\n", + " linestyle=\"--\",\n", + " label=\"Theory boundary\",\n", + ")\n", + "plt.legend(loc=\"upper left\", fontsize=10, frameon=True)\n", + "\n", + "# Add text annotations showing spikiness values in colored cells\n", + "for i in range(len(hidden_dims)):\n", + " for j in range(len(k_values)):\n", + " if converged_and_spiky[i, j] == 1.0:\n", + " spikiness_val = stability_grid[i, j]\n", + " plt.text(\n", + " j,\n", + " i,\n", + " f\"{spikiness_val:.2f}\",\n", + " ha=\"center\",\n", + " va=\"center\",\n", + " fontsize=9,\n", + " color=\"white\",\n", + " fontweight=\"bold\",\n", + " )\n", + "\n", + "plt.colorbar(im, label=\"Converged & Spiky\", ticks=[0, 1])\n", + "plt.title(\n", + " f\"Converged BUT Spiky Runs\\n(threshold: frac_upward > {spikiness_threshold})\",\n", + " fontsize=13,\n", + " fontweight=\"bold\",\n", + ")\n", + "plt.tight_layout()\n", + "plt.show()\n", + "\n", + "# Print summary\n", + "n_converged_spiky = np.sum(converged_and_spiky == 1.0)\n", + "n_converged_total = np.sum(~np.isnan(conv_grid))\n", + "print(f\"\\n{'='*60}\")\n", + "print(f\"SUMMARY: Converged & Spiky Runs\")\n", + "print(f\"{'='*60}\")\n", + "print(f\"Spikiness threshold: {spikiness_threshold} (frac_upward)\")\n", + "print(f\"Converged & spiky: {n_converged_spiky}\")\n", + "print(f\"Total converged: {n_converged_total}\")\n", + "print(f\"Percentage: {100*n_converged_spiky/n_converged_total:.1f}%\")\n", + "print(f\"{'='*60}\\n\")" + ], + "execution_count": null, + "outputs": [], + "id": "5eb6bb45" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "# Load both metrics\n", + "reduction_threshold = 0.6\n", + "conv_grid, conv_std = load_sweep_results_grid_convergence(\n", + " sweep_dir, k_values, hidden_dims, reduction_threshold=reduction_threshold\n", + ")\n", + "stability_grid, stability_std = load_sweep_results_grid_spikiness(\n", + " sweep_dir, k_values, hidden_dims\n", + ")\n", + "\n", + "# Parameters\n", + "spikiness_threshold = 0.3\n", + "\n", + "# Create modified grid for plotting\n", + "# Strategy: Use a modified colormap and data array\n", + "plot_grid = conv_grid.copy()\n", + "\n", + "# Create mask for spiky converged runs\n", + "spiky_mask = np.zeros_like(conv_grid, dtype=bool)\n", + "for i in range(len(hidden_dims)):\n", + " for j in range(len(k_values)):\n", + " converged = not np.isnan(conv_grid[i, j])\n", + " spiky = stability_grid[i, j] > spikiness_threshold\n", + " if converged and spiky:\n", + " spiky_mask[i, j] = True\n", + "\n", + "# Plot\n", + "fig, ax = plt.subplots(figsize=(10, 6.5))\n", + "\n", + "# First: plot convergence grid with viridis_r (will handle black for NaN)\n", + "cmap_conv = plt.cm.viridis_r.copy()\n", + "cmap_conv.set_bad(color=\"black\")\n", + "im = ax.imshow(plot_grid, aspect=\"equal\", cmap=cmap_conv, norm=LogNorm())\n", + "\n", + "# Second: overlay red patches for spiky converged runs\n", + "for i in range(len(hidden_dims)):\n", + " for j in range(len(k_values)):\n", + " if spiky_mask[i, j]:\n", + " # Draw red square\n", + " rect = plt.Rectangle(\n", + " (j - 0.5, i - 0.5),\n", + " 1,\n", + " 1,\n", + " facecolor=\"red\",\n", + " edgecolor=\"darkred\",\n", + " linewidth=2,\n", + " alpha=0.9,\n", + " )\n", + " ax.add_patch(rect)\n", + "\n", + " # # Add convergence value in white text\n", + " # conv_val = conv_grid[i, j]\n", + " # ax.text(\n", + " # j,\n", + " # i,\n", + " # f\"{int(conv_val)}\",\n", + " # ha=\"center\",\n", + " # va=\"center\",\n", + " # fontsize=8,\n", + " # color=\"white\",\n", + " # fontweight=\"bold\",\n", + " # )\n", + "\n", + "# Formatting\n", + "ax.set_xlabel(\"Sequence Length (k)\", fontsize=12)\n", + "ax.set_ylabel(\"Hidden Dimension\", fontsize=12)\n", + "ax.set_xticks(range(len(k_values)))\n", + "ax.set_xticklabels(k_values)\n", + "\n", + "ytick_labels = [f\"$6^{i+1}$ ({val:,})\" for i, val in enumerate(hidden_dims)]\n", + "ax.set_yticks(range(len(hidden_dims)))\n", + "ax.set_yticklabels(ytick_labels)\n", + "ax.invert_yaxis()\n", + "\n", + "# Add theory boundary\n", + "x_step = np.arange(len(k_values)) - 0.5\n", + "y_step = np.minimum(x_step, len(hidden_dims))\n", + "ax.step(\n", + " x_step,\n", + " y_step,\n", + " where=\"post\",\n", + " color=\"cyan\",\n", + " linewidth=3,\n", + " linestyle=\"--\",\n", + " label=\"Theory boundary\",\n", + ")\n", + "\n", + "# Custom legend\n", + "from matplotlib.patches import Patch\n", + "\n", + "legend_elements = [\n", + " Patch(facecolor=\"black\", label=\"Did not converge\"),\n", + " Patch(\n", + " facecolor=\"red\",\n", + " edgecolor=\"darkred\",\n", + " linewidth=2,\n", + " label=f\"Spiky (frac_up > {spikiness_threshold})\",\n", + " ),\n", + " Patch(facecolor=\"yellow\", label=\"Smooth convergence\"),\n", + " plt.Line2D(\n", + " [0], [0], color=\"cyan\", linewidth=3, linestyle=\"--\", label=\"Theory boundary\"\n", + " ),\n", + "]\n", + "ax.legend(\n", + " handles=legend_elements,\n", + " loc=\"upper center\",\n", + " bbox_to_anchor=(0.5, -0.12),\n", + " fontsize=10,\n", + " frameon=True,\n", + " ncol=4,\n", + ")\n", + "\n", + "plt.colorbar(im, ax=ax, label=f\"Steps to {reduction_threshold*100}% Convergence\")\n", + "ax.set_title(\"Convergence Speed & Spikiness Combined\", fontsize=13, fontweight=\"bold\")\n", + "plt.tight_layout()\n", + "plt.show()\n", + "\n", + "# Print summary\n", + "n_not_converged = np.sum(np.isnan(conv_grid))\n", + "n_converged_spiky = np.sum(spiky_mask)\n", + "n_converged_smooth = np.sum(~np.isnan(conv_grid)) - n_converged_spiky\n", + "total = conv_grid.size\n", + "\n", + "print(f\"\\n{'='*60}\")\n", + "print(f\"SUMMARY\")\n", + "print(f\"{'='*60}\")\n", + "print(\n", + " f\"Did not converge (black): {n_not_converged:3d} ({100*n_not_converged/total:.1f}%)\"\n", + ")\n", + "print(\n", + " f\"Spiky converged (red): {n_converged_spiky:3d} ({100*n_converged_spiky/total:.1f}%)\"\n", + ")\n", + "print(\n", + " f\"Smooth converged (color): {n_converged_smooth:3d} ({100*n_converged_smooth/total:.1f}%)\"\n", + ")\n", + "print(f\"{'='*60}\\n\")" + ], + "execution_count": null, + "outputs": [], + "id": "c7b2bf5c" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Curve plot: Convergence steps vs Sequence Length $k$ for different hidden dimensions\n", + "- x-axis: sequence length $k$\n", + "- y-axis: number of steps to convergence\n", + "- different curves for different hidden dimensions" + ], + "id": "2f5cbbf5" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "def plot_convergence_vs_k(\n", + " conv_grid,\n", + " k_values,\n", + " hidden_dims,\n", + " save_path=None,\n", + " show=True,\n", + " log_x=True,\n", + " log_y=True,\n", + " reduction_threshold=0.9,\n", + "):\n", + " \"\"\"\n", + " Plot steps to convergence vs sequence length k for different hidden dimensions.\n", + "\n", + " Args:\n", + " conv_grid: 2D array (len(hidden_dims), len(k_values)) with convergence steps\n", + " k_values: List of k (sequence length) values\n", + " hidden_dims: List of hidden dimension values\n", + " save_path: Where to save the plot\n", + " show: Whether to display the plot\n", + " log_x: Whether to use log scale for x-axis\n", + " log_y: Whether to use log scale for y-axis\n", + " reduction_threshold: Threshold used for convergence\n", + " \"\"\"\n", + " fig, ax = plt.subplots(figsize=(10, 6))\n", + "\n", + " # Use a nice sequential colormap for different widths\n", + " colors = plt.cm.plasma(np.linspace(0.15, 0.95, len(hidden_dims)))\n", + "\n", + " for i, (h, color) in enumerate(zip(hidden_dims, colors)):\n", + " # Extract convergence steps for this hidden dim across all k values\n", + " steps_for_h = conv_grid[i, :]\n", + "\n", + " # Only plot converged points\n", + " converged_mask = ~np.isnan(steps_for_h)\n", + " k_converged = np.array(k_values)[converged_mask]\n", + " steps_converged = steps_for_h[converged_mask]\n", + "\n", + " if len(steps_converged) > 0:\n", + " # Plot with line and markers\n", + " ax.plot(\n", + " k_converged,\n", + " steps_converged,\n", + " color=color,\n", + " marker=\"o\",\n", + " markersize=7,\n", + " linewidth=2.5,\n", + " label=f\"h={h:,}\",\n", + " markeredgewidth=0.5,\n", + " markeredgecolor=\"white\",\n", + " )\n", + "\n", + " # Formatting\n", + " ax.set_xlabel(\"Sequence Length ($k$)\", fontsize=14)\n", + " ax.set_ylabel(\"Steps to Convergence\", fontsize=14)\n", + " ax.set_title(\n", + " f\"Steps to {reduction_threshold*100}% Convergence vs Sequence Length $k$\",\n", + " fontsize=16,\n", + " )\n", + " if log_y:\n", + " ax.set_yscale(\"log\")\n", + " if log_x:\n", + " ax.set_xscale(\"log\")\n", + " ax.grid(True, alpha=0.3, which=\"both\", linestyle=\"--\", linewidth=0.5)\n", + " ax.legend(fontsize=11, framealpha=0.9, loc=\"best\")\n", + "\n", + " # Make k values discrete on x-axis\n", + " ax.set_xticks(k_values)\n", + " ax.set_xticklabels(k_values)\n", + "\n", + " plt.tight_layout()\n", + "\n", + " if save_path:\n", + " plt.savefig(save_path, dpi=150, bbox_inches=\"tight\")\n", + " print(f\"Saved to {save_path}\")\n", + "\n", + " if show:\n", + " plt.show()\n", + " else:\n", + " plt.close()\n", + "\n", + " return fig, ax\n", + "\n", + "\n", + "reduction_threshold = 0.9\n", + "conv_grid, conv_std = load_sweep_results_grid_convergence(\n", + " sweep_dir,\n", + " k_values,\n", + " hidden_dims,\n", + " reduction_threshold=reduction_threshold,\n", + ")\n", + "\n", + "\n", + "plot_convergence_vs_k(\n", + " conv_grid=conv_grid,\n", + " k_values=k_values,\n", + " hidden_dims=hidden_dims,\n", + " save_path=None,\n", + " show=True,\n", + " log_x=False,\n", + " log_y=True,\n", + " reduction_threshold=reduction_threshold,\n", + ")" + ], + "execution_count": null, + "outputs": [], + "id": "adddc2c6" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Curve plot : Normalized Convergence Steps vs Sequence Length for different hidden dimensions\n", + "- x-axis: sequence length\n", + "- y-axis: normalized convergence steps ($\\text{steps} / |G|^k$)\n", + "- different curves for different hidden dimensions $H$" + ], + "id": "3e814b11" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "def plot_convergence_vs_k_normalized(\n", + " conv_grid,\n", + " k_values,\n", + " hidden_dims,\n", + " p: int = 100, # Vocabulary size\n", + " batch_size: int = 1000, # Batch size used in training\n", + " save_path=None,\n", + " show=True,\n", + " log_x=False,\n", + " log_y=True,\n", + " reduction_threshold=0.9,\n", + "):\n", + " \"\"\"\n", + " Plot fraction of data space seen to convergence vs sequence length k.\n", + "\n", + " Normalizes steps to convergence by the data space size (p^k) to show\n", + " what fraction of the data space needs to be seen for convergence.\n", + "\n", + " Args:\n", + " conv_grid: 2D array (len(hidden_dims), len(k_values)) with convergence steps\n", + " k_values: List of k (sequence length) values\n", + " hidden_dims: List of hidden dimension values\n", + " p: Vocabulary size (data space per token)\n", + " batch_size: Batch size used during training\n", + " save_path: Where to save the plot\n", + " show: Whether to display the plot\n", + " log_x: Whether to use log scale for x-axis\n", + " log_y: Whether to use log scale for y-axis\n", + " reduction_threshold: Threshold used for convergence\n", + " \"\"\"\n", + " fig, ax = plt.subplots(figsize=(10, 6))\n", + "\n", + " # Use a nice sequential colormap for different widths\n", + " colors = plt.cm.plasma(np.linspace(0.15, 0.95, len(hidden_dims)))\n", + "\n", + " for i, (h, color) in enumerate(zip(hidden_dims, colors)):\n", + " # Extract convergence steps for this hidden dim across all k values\n", + " steps_for_h = conv_grid[i, :]\n", + "\n", + " # Only plot converged points\n", + " converged_mask = ~np.isnan(steps_for_h)\n", + " k_converged = np.array(k_values)[converged_mask]\n", + " steps_converged = steps_for_h[converged_mask]\n", + "\n", + " if len(steps_converged) > 0:\n", + " # Normalize by data space size for each k\n", + " # samples_seen = steps * batch_size\n", + " # fraction = samples_seen / p^k\n", + " fractions = []\n", + " for k_val, steps_val in zip(k_converged, steps_converged):\n", + " data_space_size = p**k_val\n", + " samples_seen = steps_val * batch_size\n", + " fraction = samples_seen / data_space_size\n", + " fractions.append(fraction)\n", + "\n", + " # Plot with line and markers\n", + " ax.plot(\n", + " k_converged,\n", + " fractions,\n", + " color=color,\n", + " marker=\"o\",\n", + " markersize=7,\n", + " linewidth=2.5,\n", + " label=f\"h={h:,}\",\n", + " markeredgewidth=0.5,\n", + " markeredgecolor=\"white\",\n", + " )\n", + "\n", + " # Formatting\n", + " ax.set_xlabel(\"Sequence Length (k)\", fontsize=14)\n", + " ax.set_ylabel(\"Data points seen / $p^k$ to convergence\", fontsize=14)\n", + " ax.set_title(\n", + " f\"Data Efficiency to {reduction_threshold*100}% Convergence\",\n", + " fontsize=16,\n", + " )\n", + "\n", + " if log_y:\n", + " ax.set_yscale(\"log\")\n", + " if log_x:\n", + " ax.set_xscale(\"log\")\n", + " else:\n", + " # Make k values discrete on x-axis\n", + " ax.set_xticks(k_values)\n", + " ax.set_xticklabels(k_values)\n", + "\n", + " ax.grid(True, alpha=0.3, which=\"both\", linestyle=\"--\", linewidth=0.5)\n", + " ax.legend(fontsize=11, framealpha=0.9, loc=\"best\")\n", + "\n", + " plt.tight_layout()\n", + "\n", + " if save_path:\n", + " plt.savefig(save_path, dpi=150, bbox_inches=\"tight\")\n", + " print(f\"Saved to {save_path}\")\n", + "\n", + " if show:\n", + " plt.show()\n", + " else:\n", + " plt.close()\n", + "\n", + " return fig, ax\n", + "\n", + "\n", + "reduction_threshold = 0.9\n", + "conv_grid, conv_std = load_sweep_results_grid_convergence(\n", + " sweep_dir,\n", + " k_values,\n", + " hidden_dims,\n", + " reduction_threshold=reduction_threshold,\n", + ")\n", + "\n", + "\n", + "plot_convergence_vs_k_normalized(\n", + " conv_grid=conv_grid,\n", + " k_values=k_values,\n", + " hidden_dims=hidden_dims,\n", + " p=10, # Your vocabulary size\n", + " batch_size=1000, # Your batch size\n", + " save_path=None,\n", + " show=True,\n", + " log_x=False,\n", + " log_y=True,\n", + " reduction_threshold=reduction_threshold,\n", + ")" + ], + "execution_count": null, + "outputs": [], + "id": "e116a0e1" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Curve plot: Loss vs Training Steps for different sequence lengths, fixed hidden dimension\n", + "- x-axis: # training steps\n", + "- y-axis: training loss\n", + "- different curves for different sequence lengths" + ], + "id": "e0f758af" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from pathlib import Path\n", + "\n", + "\n", + "def plot_loss_curves_fixed_width(\n", + " sweep_dir: str,\n", + " k_values: list,\n", + " hidden_dim: int = 77760,\n", + " seed: int = 0,\n", + " save_path: str = None,\n", + " show: bool = True,\n", + " log_x: bool = True,\n", + " log_y: bool = True,\n", + "):\n", + " \"\"\"\n", + " Plot loss curves for different sequence lengths k with fixed hidden dimension.\n", + "\n", + " Args:\n", + " sweep_dir: Path to sweep directory\n", + " k_values: List of k values to plot (e.g., [2, 3, 4, 5, 6, 7, 8])\n", + " hidden_dim: Fixed hidden dimension (default: 77760)\n", + " seed: Which seed to plot (default: 0)\n", + " save_path: Where to save the plot\n", + " show: Whether to display the plot\n", + " log_x: Whether to use log scale for x-axis\n", + " log_y: Whether to use log scale for y-axis\n", + " \"\"\"\n", + " sweep_path = Path(sweep_dir)\n", + "\n", + " # Create figure\n", + " fig, ax = plt.subplots(figsize=(10, 6))\n", + "\n", + " # Use a nice sequential colormap (plasma, magma, cividis, YlOrRd, etc.)\n", + " colors = plt.cm.plasma(\n", + " np.linspace(0.15, 0.95, len(k_values))\n", + " ) # Avoid too light/dark\n", + "\n", + " for k, color in zip(k_values, colors):\n", + " run_dir = sweep_path / f\"k{k}_h{hidden_dim}\" / f\"seed_{seed}\"\n", + " loss_file = run_dir / \"train_loss_history.npy\"\n", + "\n", + " if not loss_file.exists():\n", + " print(f\"Warning: No data found for k={k}, h={hidden_dim}\")\n", + " continue\n", + "\n", + " # Load loss history\n", + " loss_history = np.load(loss_file)\n", + " steps = np.arange(len(loss_history))\n", + "\n", + " # Plot\n", + " ax.plot(steps, loss_history, color=color, lw=2.5, label=f\"k={k}\")\n", + "\n", + " # Formatting\n", + " ax.set_xlabel(\"Training Steps\", fontsize=14)\n", + " ax.set_ylabel(\"Training Loss\", fontsize=14)\n", + " ax.set_title(f\"Loss vs Training Steps (h={hidden_dim:,})\", fontsize=16)\n", + " if log_x:\n", + " ax.set_xscale(\"log\")\n", + " if log_y:\n", + " ax.set_yscale(\"log\")\n", + " ax.grid(True, alpha=0.3, which=\"both\", linestyle=\"--\", linewidth=0.5)\n", + " ax.legend(fontsize=11, framealpha=0.9, loc=\"best\")\n", + "\n", + " plt.tight_layout()\n", + "\n", + " if save_path:\n", + " plt.savefig(save_path, dpi=150, bbox_inches=\"tight\")\n", + " print(f\"Saved to {save_path}\")\n", + "\n", + " if show:\n", + " plt.show()\n", + " else:\n", + " plt.close()\n", + "\n", + " return fig, ax\n", + "\n", + "\n", + "plot_loss_curves_fixed_width(\n", + " sweep_dir=sweep_dir,\n", + " k_values=[2, 3, 4, 5, 6, 7, 8],\n", + " hidden_dim=6**2,\n", + " seed=0,\n", + " save_path=None,\n", + " show=True,\n", + " log_x=True,\n", + " log_y=True,\n", + ")" + ], + "execution_count": null, + "outputs": [], + "id": "7e809783" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "def compute_spikiness_metrics_upward_only(loss_history):\n", + " \"\"\"\n", + " Compute spikiness focusing ONLY on upward jumps (loss increases).\n", + "\n", + " This separates:\n", + " - Fast learning (large downward jumps) = STABLE\n", + " - Instability (upward jumps) = UNSTABLE/SPIKY\n", + " \"\"\"\n", + " log_loss = np.log10(loss_history + 1e-10)\n", + " log_changes = np.diff(log_loss) # Can be positive or negative\n", + "\n", + " # Separate upward (bad) from downward (good)\n", + " upward_spikes = log_changes[log_changes > 0] # Loss INCREASES\n", + " downward_drops = log_changes[log_changes < 0] # Loss DECREASES\n", + "\n", + " metrics = {}\n", + "\n", + " # Count how many steps are upward vs downward\n", + " metrics[\"n_upward\"] = len(upward_spikes)\n", + " metrics[\"n_downward\"] = len(downward_drops)\n", + " metrics[\"frac_upward\"] = (\n", + " len(upward_spikes) / len(log_changes) if len(log_changes) > 0 else 0\n", + " )\n", + "\n", + " if len(upward_spikes) > 0:\n", + " # Metrics based ONLY on upward spikes (instability)\n", + " metrics[\"upward_p95\"] = np.percentile(upward_spikes, 95)\n", + " metrics[\"upward_p999\"] = np.percentile(upward_spikes, 99.9)\n", + " metrics[\"upward_max\"] = np.max(upward_spikes)\n", + " metrics[\"upward_mean\"] = np.mean(upward_spikes)\n", + " metrics[\"upward_std\"] = np.std(upward_spikes)\n", + " else:\n", + " # Perfectly monotonic decrease (never went up!)\n", + " metrics[\"upward_p95\"] = 0.0\n", + " metrics[\"upward_p999\"] = 0.0\n", + " metrics[\"upward_max\"] = 0.0\n", + " metrics[\"upward_mean\"] = 0.0\n", + " metrics[\"upward_std\"] = 0.0\n", + "\n", + " if len(downward_drops) > 0:\n", + " # For reference: how fast is it learning?\n", + " metrics[\"downward_p95\"] = np.percentile(\n", + " np.abs(downward_drops), 95\n", + " ) # Large drops = fast\n", + " metrics[\"downward_mean\"] = np.mean(np.abs(downward_drops))\n", + " else:\n", + " metrics[\"downward_p95\"] = 0.0\n", + " metrics[\"downward_mean\"] = 0.0\n", + "\n", + " # Ratio: upward spikes vs downward progress\n", + " if metrics[\"downward_mean\"] > 0:\n", + " metrics[\"spike_to_progress_ratio\"] = (\n", + " metrics[\"upward_mean\"] / metrics[\"downward_mean\"]\n", + " )\n", + " else:\n", + " metrics[\"spike_to_progress_ratio\"] = (\n", + " np.inf if metrics[\"upward_mean\"] > 0 else 0.0\n", + " )\n", + "\n", + " # Late-stage upward spikes (last 20%)\n", + " cutoff = int(0.8 * len(log_changes))\n", + " late_changes = log_changes[cutoff:]\n", + " late_upward = late_changes[late_changes > 0]\n", + "\n", + " if len(late_upward) > 0:\n", + " metrics[\"late_upward_p95\"] = np.percentile(late_upward, 95)\n", + " metrics[\"late_upward_max\"] = np.max(late_upward)\n", + " else:\n", + " metrics[\"late_upward_p95\"] = 0.0\n", + " metrics[\"late_upward_max\"] = 0.0\n", + "\n", + " return metrics\n", + "\n", + "\n", + "def plot_loss_curves_with_upward_metrics(\n", + " sweep_dir: str,\n", + " k_values: list,\n", + " hidden_dim: int = 36,\n", + " seed: int = 0,\n", + " save_path: str = None,\n", + " show: bool = True,\n", + " log_x: bool = True,\n", + " log_y: bool = True,\n", + "):\n", + " \"\"\"Plot loss curves with metrics focused on upward spikes only.\"\"\"\n", + " sweep_path = Path(sweep_dir)\n", + "\n", + " fig, ax = plt.subplots(figsize=(10, 6))\n", + " colors = plt.cm.plasma(np.linspace(0.15, 0.95, len(k_values)))\n", + "\n", + " metrics_data = []\n", + "\n", + " for k, color in zip(k_values, colors):\n", + " run_dir = sweep_path / f\"k{k}_h{hidden_dim}\" / f\"seed_{seed}\"\n", + " loss_file = run_dir / \"train_loss_history.npy\"\n", + "\n", + " if not loss_file.exists():\n", + " print(f\"Warning: No data found for k={k}, h={hidden_dim}\")\n", + " continue\n", + "\n", + " loss_history = np.load(loss_file)\n", + " steps = np.arange(len(loss_history))\n", + "\n", + " ax.plot(steps, loss_history, color=color, lw=2.5, label=f\"k={k}\")\n", + "\n", + " # Compute upward-only metrics\n", + " metrics = compute_spikiness_metrics_upward_only(loss_history)\n", + " metrics[\"k\"] = k\n", + " metrics[\"n_steps\"] = len(loss_history)\n", + " metrics_data.append(metrics)\n", + "\n", + " # Formatting\n", + " ax.set_xlabel(\"Training Steps\", fontsize=14)\n", + " ax.set_ylabel(\"Training Loss\", fontsize=14)\n", + " ax.set_title(f\"Loss vs Training Steps (h={hidden_dim:,})\", fontsize=16)\n", + " if log_x:\n", + " ax.set_xscale(\"log\")\n", + " if log_y:\n", + " ax.set_yscale(\"log\")\n", + " ax.grid(True, alpha=0.3, which=\"both\", linestyle=\"--\", linewidth=0.5)\n", + " ax.legend(fontsize=11, framealpha=0.9, loc=\"best\")\n", + "\n", + " plt.tight_layout()\n", + "\n", + " if save_path:\n", + " plt.savefig(save_path, dpi=150, bbox_inches=\"tight\")\n", + " print(f\"Saved to {save_path}\")\n", + "\n", + " if show:\n", + " plt.show()\n", + " else:\n", + " plt.close()\n", + "\n", + " # Print metrics\n", + " df = pd.DataFrame(metrics_data)\n", + " col_order = [\n", + " \"k\",\n", + " \"n_steps\",\n", + " \"frac_upward\",\n", + " \"upward_p95\",\n", + " \"upward_p999\",\n", + " \"upward_max\",\n", + " \"late_upward_p95\",\n", + " \"spike_to_progress_ratio\",\n", + " \"downward_p95\",\n", + " ]\n", + " df = df[col_order]\n", + "\n", + " print(\"\\n\" + \"=\" * 100)\n", + " print(f\"UPWARD SPIKE METRICS (h={hidden_dim})\")\n", + " print(\"=\" * 100)\n", + " print(\"\\nMetric Definitions:\")\n", + " print(\" frac_upward : Fraction of steps where loss INCREASED\")\n", + " print(\" upward_p95 : 95th percentile of upward jumps (instability)\")\n", + " print(\" upward_p999 : 99.9th percentile of upward jumps\")\n", + " print(\" upward_max : Worst upward spike\")\n", + " print(\" late_upward_p95 : 95th percentile of upward jumps in last 20%\")\n", + " print(\n", + " \" spike_to_progress_ratio : Mean upward / mean downward (higher = more unstable)\"\n", + " )\n", + " print(\n", + " \" downward_p95 : 95th percentile of downward jumps (learning speed)\"\n", + " )\n", + " print(\"\\n\" + \"-\" * 100)\n", + "\n", + " pd.set_option(\"display.max_columns\", None)\n", + " pd.set_option(\"display.width\", None)\n", + " pd.set_option(\"display.float_format\", \"{:.4f}\".format)\n", + " print(df.to_string(index=False))\n", + " print(\"=\" * 100 + \"\\n\")\n", + "\n", + " return fig, ax, df\n", + "\n", + "\n", + "# Call it:\n", + "fig, ax, metrics_df = plot_loss_curves_with_upward_metrics(\n", + " sweep_dir=sweep_dir,\n", + " k_values=[2, 3, 4, 5, 6, 7, 8],\n", + " hidden_dim=6**6,\n", + " seed=0,\n", + " save_path=None,\n", + " show=True,\n", + " log_x=True,\n", + " log_y=True,\n", + ")" + ], + "execution_count": null, + "outputs": [], + "id": "e5cd8b97" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "def load_sweep_results_grid_spikiness(\n", + " sweep_dir: str,\n", + " k_values: list,\n", + " hidden_dims: list,\n", + "):\n", + " \"\"\"\n", + " Compute fraction of training steps where loss increased (instability).\n", + "\n", + " Returns:\n", + " grid: 2D array with mean frac_upward across seeds\n", + " std_grid: 2D array with standard deviations\n", + " \"\"\"\n", + " sweep_path = Path(sweep_dir)\n", + "\n", + " grid = np.full((len(hidden_dims), len(k_values)), np.nan)\n", + " std_grid = np.full((len(hidden_dims), len(k_values)), np.nan)\n", + "\n", + " for i, h in enumerate(hidden_dims):\n", + " for j, k in enumerate(k_values):\n", + " exp_name = f\"k{k}_h{h}\"\n", + " exp_dir = sweep_path / exp_name\n", + "\n", + " if not exp_dir.exists():\n", + " continue\n", + "\n", + " frac_upwards = []\n", + " for seed_dir in exp_dir.glob(\"seed_*\"):\n", + " loss_file = seed_dir / \"train_loss_history.npy\"\n", + " if loss_file.exists():\n", + " loss_history = np.load(loss_file)\n", + " log_loss = np.log10(loss_history + 1e-10)\n", + " log_changes = np.diff(log_loss)\n", + "\n", + " # Fraction of steps where loss went UP\n", + " frac_upward = np.sum(log_changes > 0) / len(log_changes)\n", + " frac_upwards.append(frac_upward)\n", + "\n", + " if frac_upwards:\n", + " grid[i, j] = np.mean(frac_upwards)\n", + " std_grid[i, j] = np.std(frac_upwards) if len(frac_upwards) > 1 else 0.0\n", + "\n", + " return grid, std_grid" + ], + "execution_count": null, + "outputs": [], + "id": "bd0b5026" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "# Compute stability grid\n", + "stability_grid, stability_std = load_sweep_results_grid_spikiness(\n", + " sweep_dir, k_values, hidden_dims\n", + ")\n", + "\n", + "# Plot\n", + "plt.figure(figsize=(8, 6.5))\n", + "plt.imshow(stability_grid, aspect=\"equal\", cmap=\"viridis\") # , norm=LogNorm())\n", + "plt.xlabel(\"Sequence Length (k)\")\n", + "plt.ylabel(\"Hidden Dimension\")\n", + "ytick_labels = [f\"$6^{i+1}$ ({val:,})\" for i, val in enumerate(hidden_dims)]\n", + "plt.yticks(range(len(hidden_dims)), ytick_labels)\n", + "plt.xticks(range(len(k_values)), k_values)\n", + "plt.gca().invert_yaxis()\n", + "plt.colorbar(label=\"Training Spikiness\")\n", + "plt.title(\"Training Spikiness\")\n", + "plt.tight_layout()\n", + "plt.show()" + ], + "execution_count": null, + "outputs": [], + "id": "6d858f63" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Varying group size (num frequencies)" + ], + "id": "298e758e" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "def load_sweep_results_grid_convergence_3d(\n", + " sweep_dir: str,\n", + " k_values: list,\n", + " hidden_dims: list,\n", + " num_frequencies: int,\n", + " reduction_threshold: float = 0.99,\n", + "):\n", + " \"\"\"\n", + " Load sweep results and compute steps to convergence for 3D sweeps over k, h, and f.\n", + "\n", + " This function is designed for sweeps that include num_frequencies as a parameter,\n", + " using directory naming format: k{k}_h{h}_f{f}\n", + "\n", + " Convergence is defined as reaching `reduction_threshold` loss reduction\n", + " (e.g., 0.99 = 99% reduction from initial loss).\n", + "\n", + " If convergence is not reached, the grid point is set to NaN (blacked out).\n", + "\n", + " Args:\n", + " sweep_dir: Path to the sweep directory\n", + " k_values: List of k (sequence length) values\n", + " hidden_dims: List of hidden dimension values\n", + " num_frequencies: Number of frequencies (f parameter)\n", + " reduction_threshold: Fraction of loss reduction to consider converged\n", + "\n", + " Returns:\n", + " grid: 2D array with mean steps to convergence (NaN if didn't converge)\n", + " std_grid: 2D array with standard deviations across seeds\n", + " \"\"\"\n", + " sweep_path = Path(sweep_dir)\n", + "\n", + " grid = np.full((len(hidden_dims), len(k_values)), np.nan)\n", + " std_grid = np.full((len(hidden_dims), len(k_values)), np.nan)\n", + "\n", + " for i, h in enumerate(hidden_dims):\n", + " for j, k in enumerate(k_values):\n", + " exp_name = f\"k{k}_h{h}_f{num_frequencies}\"\n", + " exp_dir = sweep_path / exp_name\n", + "\n", + " if not exp_dir.exists():\n", + " continue\n", + "\n", + " # Collect convergence steps from all seeds\n", + " convergence_steps = []\n", + " for seed_dir in exp_dir.glob(\"seed_*\"):\n", + " loss_file = seed_dir / \"train_loss_history.npy\"\n", + " if loss_file.exists():\n", + " loss_history = np.load(loss_file)\n", + " initial_loss = loss_history[0]\n", + "\n", + " if initial_loss > 0:\n", + " # Compute reduction at each step\n", + " reductions = 1 - loss_history / initial_loss\n", + "\n", + " # Find first step where reduction >= threshold\n", + " converged_mask = reductions >= reduction_threshold\n", + " if np.any(converged_mask):\n", + " step = np.argmax(converged_mask) # First True\n", + " convergence_steps.append(step)\n", + " # else: Never converged - don't add to list\n", + "\n", + " if convergence_steps:\n", + " grid[i, j] = np.mean(convergence_steps)\n", + " std_grid[i, j] = (\n", + " np.std(convergence_steps) if len(convergence_steps) > 1 else 0.0\n", + " )\n", + " # else: No seeds converged - grid[i,j] remains NaN (blacked out)\n", + "\n", + " return grid, std_grid" + ], + "execution_count": null, + "outputs": [], + "id": "74cd5103" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## num_freq = 2" + ], + "id": "418d1ac0" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "# Example using the new 3D sweep (k, h, f)\n", + "new_sweep_dir = \"/home/facosta/group-agf/sweeps/sweep_mlp_scaling_20251212_172318\"\n", + "\n", + "# Define parameter values for the new sweep\n", + "k_values_new = [2, 3, 4, 5, 6, 7, 8]\n", + "hidden_dims_new = [6, 36, 216, 1296, 7776, 46656]\n", + "num_frequencies = 2 # Set this to the frequency value you want to visualize\n", + "\n", + "# Load convergence data for a specific frequency\n", + "reduction_threshold = 0.5\n", + "conv_grid_new, conv_std_new = load_sweep_results_grid_convergence_3d(\n", + " new_sweep_dir,\n", + " k_values_new,\n", + " hidden_dims_new,\n", + " reduction_threshold=reduction_threshold,\n", + " num_frequencies=num_frequencies,\n", + ")\n", + "\n", + "# Plot the heatmap\n", + "plt.figure(figsize=(8, 6))\n", + "cmap = plt.cm.viridis_r.copy()\n", + "cmap.set_bad(color=\"black\")\n", + "plt.imshow(conv_grid_new, aspect=\"equal\", cmap=cmap, norm=LogNorm())\n", + "\n", + "plt.xlabel(\"Sequence Length (k)\")\n", + "plt.ylabel(\"Hidden Dimension\")\n", + "plt.xticks(range(len(k_values_new)), k_values_new)\n", + "plt.yticks(range(len(hidden_dims_new)), hidden_dims_new)\n", + "plt.gca().invert_yaxis()\n", + "\n", + "plt.colorbar(label=f\"Steps to {reduction_threshold*100}% Convergence\")\n", + "plt.title(f\"Steps to Convergence (f={num_frequencies}, black = did not converge)\")\n", + "plt.show()" + ], + "execution_count": null, + "outputs": [], + "id": "01cf6f19" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## num_freq = 3" + ], + "id": "ec9b06b2" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "# Example using the new 3D sweep (k, h, f)\n", + "new_sweep_dir = \"/home/facosta/group-agf/sweeps/sweep_mlp_scaling_20251212_172318\"\n", + "\n", + "# Define parameter values for the new sweep\n", + "k_values_new = [2, 3, 4, 5, 6, 7, 8]\n", + "hidden_dims_new = [6, 36, 216, 1296, 7776, 46656]\n", + "num_frequencies = 3 # Set this to the frequency value you want to visualize\n", + "\n", + "# Load convergence data for a specific frequency\n", + "reduction_threshold = 0.5\n", + "conv_grid_new, conv_std_new = load_sweep_results_grid_convergence_3d(\n", + " new_sweep_dir,\n", + " k_values_new,\n", + " hidden_dims_new,\n", + " reduction_threshold=reduction_threshold,\n", + " num_frequencies=num_frequencies,\n", + ")\n", + "\n", + "# Plot the heatmap\n", + "plt.figure(figsize=(8, 6))\n", + "cmap = plt.cm.viridis_r.copy()\n", + "cmap.set_bad(color=\"black\")\n", + "plt.imshow(conv_grid_new, aspect=\"equal\", cmap=cmap, norm=LogNorm())\n", + "\n", + "plt.xlabel(\"Sequence Length (k)\")\n", + "plt.ylabel(\"Hidden Dimension\")\n", + "plt.xticks(range(len(k_values_new)), k_values_new)\n", + "plt.yticks(range(len(hidden_dims_new)), hidden_dims_new)\n", + "plt.gca().invert_yaxis()\n", + "\n", + "plt.colorbar(label=f\"Steps to {reduction_threshold*100}% Convergence\")\n", + "plt.title(f\"Steps to Convergence (f={num_frequencies}, black = did not converge)\")\n", + "plt.show()" + ], + "execution_count": null, + "outputs": [], + "id": "32e86647" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## num_freq = 4" + ], + "id": "44a4e9c7" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "# Example using the new 3D sweep (k, h, f)\n", + "new_sweep_dir = \"/home/facosta/group-agf/sweeps/sweep_mlp_scaling_20251212_172318\"\n", + "\n", + "# Define parameter values for the new sweep\n", + "k_values_new = [2, 3, 4, 5, 6, 7, 8]\n", + "hidden_dims_new = [6, 36, 216, 1296, 7776, 46656]\n", + "num_frequencies = 4 # Set this to the frequency value you want to visualize\n", + "\n", + "# Load convergence data for a specific frequency\n", + "reduction_threshold = 0.5\n", + "conv_grid_new, conv_std_new = load_sweep_results_grid_convergence_3d(\n", + " new_sweep_dir,\n", + " k_values_new,\n", + " hidden_dims_new,\n", + " reduction_threshold=reduction_threshold,\n", + " num_frequencies=num_frequencies,\n", + ")\n", + "\n", + "# Plot the heatmap\n", + "plt.figure(figsize=(8, 6))\n", + "cmap = plt.cm.viridis_r.copy()\n", + "cmap.set_bad(color=\"black\")\n", + "plt.imshow(conv_grid_new, aspect=\"equal\", cmap=cmap, norm=LogNorm())\n", + "\n", + "plt.xlabel(\"Sequence Length (k)\")\n", + "plt.ylabel(\"Hidden Dimension\")\n", + "plt.xticks(range(len(k_values_new)), k_values_new)\n", + "plt.yticks(range(len(hidden_dims_new)), hidden_dims_new)\n", + "plt.gca().invert_yaxis()\n", + "\n", + "plt.colorbar(label=f\"Steps to {reduction_threshold*100}% Convergence\")\n", + "plt.title(f\"Steps to Convergence (f={num_frequencies}, black = did not converge)\")\n", + "plt.show()" + ], + "execution_count": null, + "outputs": [], + "id": "e77f1a4e" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## num_freq = 5" + ], + "id": "aa9ae86c" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "# Example using the new 3D sweep (k, h, f)\n", + "new_sweep_dir = \"/home/facosta/group-agf/sweeps/sweep_mlp_scaling_20251212_172318\"\n", + "\n", + "# Define parameter values for the new sweep\n", + "k_values_new = [2, 3, 4, 5, 6, 7, 8]\n", + "hidden_dims_new = [6, 36, 216, 1296, 7776, 46656]\n", + "num_frequencies = 5 # Set this to the frequency value you want to visualize\n", + "\n", + "# Load convergence data for a specific frequency\n", + "reduction_threshold = 0.5\n", + "conv_grid_new, conv_std_new = load_sweep_results_grid_convergence_3d(\n", + " new_sweep_dir,\n", + " k_values_new,\n", + " hidden_dims_new,\n", + " reduction_threshold=reduction_threshold,\n", + " num_frequencies=num_frequencies,\n", + ")\n", + "\n", + "# Plot the heatmap\n", + "plt.figure(figsize=(8, 6))\n", + "cmap = plt.cm.viridis_r.copy()\n", + "cmap.set_bad(color=\"black\")\n", + "plt.imshow(conv_grid_new, aspect=\"equal\", cmap=cmap, norm=LogNorm())\n", + "\n", + "plt.xlabel(\"Sequence Length (k)\")\n", + "plt.ylabel(\"Hidden Dimension\")\n", + "plt.xticks(range(len(k_values_new)), k_values_new)\n", + "plt.yticks(range(len(hidden_dims_new)), hidden_dims_new)\n", + "plt.gca().invert_yaxis()\n", + "\n", + "plt.colorbar(label=f\"Steps to {reduction_threshold*100}% Convergence\")\n", + "plt.title(f\"Steps to Convergence (f={num_frequencies}, black = did not converge)\")\n", + "plt.show()" + ], + "execution_count": null, + "outputs": [], + "id": "0ce18ab9" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Grid plot: Convergence vs k for different num_frequencies, across different hidden dimensions\n" + ], + "id": "f8585f79" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "def plot_convergence_vs_k_grid_by_frequency(\n", + " sweep_dir: str,\n", + " k_values: list,\n", + " hidden_dims: list,\n", + " num_frequencies_values: list,\n", + " reduction_threshold: float = 0.99,\n", + " figsize=(18, 12),\n", + " log_x=False,\n", + " log_y=True,\n", + " save_path=None,\n", + " show=True,\n", + "):\n", + " \"\"\"\n", + " Create a grid of plots showing convergence vs k for different frequencies.\n", + "\n", + " Each subplot corresponds to a different hidden dimension.\n", + " Within each subplot, different curves represent different num_frequencies values.\n", + "\n", + " Args:\n", + " sweep_dir: Path to the sweep directory\n", + " k_values: List of k (sequence length) values\n", + " hidden_dims: List of hidden dimension values (one subplot per hidden dim)\n", + " num_frequencies_values: List of num_frequencies values to compare\n", + " reduction_threshold: Threshold for convergence definition\n", + " figsize: Figure size tuple\n", + " log_x: Whether to use log scale for x-axis\n", + " log_y: Whether to use log scale for y-axis\n", + " save_path: Where to save the plot\n", + " show: Whether to display the plot\n", + "\n", + " Returns:\n", + " fig, axes: Matplotlib figure and axes objects\n", + " \"\"\"\n", + " sweep_path = Path(sweep_dir)\n", + "\n", + " # Determine grid layout (2x3 or 3x2 based on number of hidden dims)\n", + " n_plots = len(hidden_dims)\n", + " if n_plots == 6:\n", + " nrows, ncols = 2, 3\n", + " elif n_plots == 4:\n", + " nrows, ncols = 2, 2\n", + " else:\n", + " # General case: aim for squarish layout\n", + " ncols = int(np.ceil(np.sqrt(n_plots)))\n", + " nrows = int(np.ceil(n_plots / ncols))\n", + "\n", + " fig, axes = plt.subplots(nrows, ncols, figsize=figsize)\n", + " axes_flat = axes.flatten() if n_plots > 1 else [axes]\n", + "\n", + " # Use a nice colormap for different frequencies\n", + " colors = plt.cm.viridis(np.linspace(0.15, 0.85, len(num_frequencies_values)))\n", + "\n", + " for idx, h in enumerate(hidden_dims):\n", + " ax = axes_flat[idx]\n", + "\n", + " # For each frequency, plot convergence vs k\n", + " for f_idx, num_freq in enumerate(num_frequencies_values):\n", + " convergence_steps_for_k = []\n", + " k_values_converged = []\n", + "\n", + " for k in k_values:\n", + " exp_name = f\"k{k}_h{h}_f{num_freq}\"\n", + " exp_dir = sweep_path / exp_name\n", + "\n", + " if not exp_dir.exists():\n", + " continue\n", + "\n", + " # Collect convergence steps from all seeds\n", + " convergence_steps = []\n", + " for seed_dir in exp_dir.glob(\"seed_*\"):\n", + " loss_file = seed_dir / \"train_loss_history.npy\"\n", + " if loss_file.exists():\n", + " loss_history = np.load(loss_file)\n", + " initial_loss = loss_history[0]\n", + "\n", + " if initial_loss > 0:\n", + " reductions = 1 - loss_history / initial_loss\n", + " converged_mask = reductions >= reduction_threshold\n", + " if np.any(converged_mask):\n", + " step = np.argmax(converged_mask)\n", + " convergence_steps.append(step)\n", + "\n", + " # Take mean across seeds if any converged\n", + " if convergence_steps:\n", + " k_values_converged.append(k)\n", + " convergence_steps_for_k.append(np.mean(convergence_steps))\n", + "\n", + " # Plot this frequency's curve\n", + " if len(k_values_converged) > 0:\n", + " ax.plot(\n", + " k_values_converged,\n", + " convergence_steps_for_k,\n", + " color=colors[f_idx],\n", + " marker=\"o\",\n", + " markersize=6,\n", + " linewidth=2,\n", + " label=f\"f={num_freq}\",\n", + " markeredgewidth=0.5,\n", + " markeredgecolor=\"white\",\n", + " )\n", + "\n", + " # Formatting for this subplot\n", + " ax.set_xlabel(\"Sequence Length (k)\", fontsize=11)\n", + " ax.set_ylabel(\"Steps to Convergence\", fontsize=11)\n", + " ax.set_title(f\"h = {h:,}\", fontsize=13, fontweight=\"bold\")\n", + "\n", + " if log_y:\n", + " ax.set_yscale(\"log\")\n", + " if log_x:\n", + " ax.set_xscale(\"log\")\n", + " else:\n", + " # Make k values discrete on x-axis\n", + " ax.set_xticks(k_values)\n", + " ax.set_xticklabels(k_values)\n", + "\n", + " ax.grid(True, alpha=0.3, which=\"both\", linestyle=\"--\", linewidth=0.5)\n", + " ax.legend(fontsize=9, framealpha=0.9, loc=\"best\")\n", + "\n", + " # Hide any unused subplots\n", + " for idx in range(n_plots, len(axes_flat)):\n", + " axes_flat[idx].axis(\"off\")\n", + "\n", + " # Overall title\n", + " fig.suptitle(\n", + " f\"Convergence vs Sequence Length by Number of Frequencies\\n\"\n", + " f\"({reduction_threshold*100:.0f}% Loss Reduction Threshold)\",\n", + " fontsize=16,\n", + " fontweight=\"bold\",\n", + " y=0.995,\n", + " )\n", + "\n", + " plt.tight_layout()\n", + "\n", + " if save_path:\n", + " plt.savefig(save_path, dpi=150, bbox_inches=\"tight\")\n", + " print(f\"Saved to {save_path}\")\n", + "\n", + " if show:\n", + " plt.show()\n", + " else:\n", + " plt.close()\n", + "\n", + " return fig, axes" + ], + "execution_count": null, + "outputs": [], + "id": "97c43fc0" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "# Example usage: Create grid plot\n", + "new_sweep_dir = \"/home/facosta/group-agf/sweeps/sweep_mlp_scaling_20251212_172318\"\n", + "\n", + "k_values_new = [2, 3, 4, 5, 6, 7, 8]\n", + "hidden_dims_new = [6, 36, 216, 1296, 7776, 46656]\n", + "num_frequencies_values = [2, 3, 4, 5] # All frequency values to compare\n", + "\n", + "plot_convergence_vs_k_grid_by_frequency(\n", + " sweep_dir=new_sweep_dir,\n", + " k_values=k_values_new,\n", + " hidden_dims=hidden_dims_new,\n", + " num_frequencies_values=num_frequencies_values,\n", + " reduction_threshold=0.5,\n", + " figsize=(18, 12),\n", + " log_x=False,\n", + " log_y=True,\n", + " save_path=None,\n", + " show=True,\n", + ")" + ], + "execution_count": null, + "outputs": [], + "id": "acd00a0a" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## p=2 experiments" + ], + "id": "85c094f2" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "# Define sweep directory and parameters\n", + "sweep_dir = \"/home/facosta/group-agf/sweeps/p2_scaling_sweep_20251215_205347\"\n", + "\n", + "# Parameters from p2_scaling_sweep.yaml\n", + "k_values = [2, 3, 4, 5, 6, 7, 8]\n", + "hidden_dims = [\n", + " 4,\n", + " 8,\n", + " 16,\n", + " 32,\n", + " 64,\n", + " 128,\n", + " 256,\n", + " 512,\n", + " 1024,\n", + " 2048,\n", + " 4096,\n", + " 8192,\n", + " 16384,\n", + " 32768,\n", + " 65536,\n", + "]\n", + "\n", + "# Load convergence data\n", + "reduction_threshold = 0.6 # 90% loss reduction\n", + "conv_grid, conv_std = load_sweep_results_grid_convergence(\n", + " sweep_dir, k_values, hidden_dims, reduction_threshold=reduction_threshold\n", + ")\n", + "\n", + "\n", + "from matplotlib.colors import LogNorm\n", + "\n", + "# Plot the heatmap\n", + "plt.figure(figsize=(10, 8))\n", + "cmap = plt.cm.viridis_r.copy()\n", + "cmap.set_bad(color=\"black\")\n", + "plt.imshow(conv_grid, aspect=\"auto\", cmap=cmap, norm=LogNorm())\n", + "\n", + "plt.xlabel(\"Sequence Length (k)\", fontsize=12)\n", + "plt.ylabel(\"Hidden Dimension (h)\", fontsize=12)\n", + "plt.xticks(range(len(k_values)), k_values)\n", + "\n", + "# Create y-tick labels with both power notation and actual values for larger dims\n", + "ytick_labels = []\n", + "for h in hidden_dims:\n", + " if h >= 1024:\n", + " power = int(np.log2(h))\n", + " ytick_labels.append(f\"$2^{{{power}}}$ ({h:,})\")\n", + " else:\n", + " ytick_labels.append(f\"{h}\")\n", + "\n", + "plt.yticks(range(len(hidden_dims)), ytick_labels, fontsize=9)\n", + "plt.gca().invert_yaxis()\n", + "\n", + "# Add theoretical boundary line (h > p^(k-1), where p=2)\n", + "# For p=2: boundary at h = 2^(k-1), so h=1,2,4,8,16,32,64\n", + "x_step = np.arange(len(k_values)) - 0.5\n", + "# Find y index where h = 2^(k-1) for each k\n", + "y_boundary = []\n", + "for i, k in enumerate(k_values):\n", + " boundary_h = 2 ** (k - 1)\n", + " # Find closest hidden_dim index\n", + " try:\n", + " y_idx = hidden_dims.index(boundary_h)\n", + " except ValueError:\n", + " # If exact match not found, find closest\n", + " y_idx = np.argmin(np.abs(np.array(hidden_dims) - boundary_h))\n", + " y_boundary.append(y_idx)\n", + "\n", + "plt.step(\n", + " x_step,\n", + " y_boundary,\n", + " where=\"post\",\n", + " color=\"red\",\n", + " linewidth=3,\n", + " linestyle=\"--\",\n", + " label=r\"Theory boundary ($h > 2^{k-1}$)\",\n", + ")\n", + "\n", + "plt.legend(loc=\"upper left\", fontsize=11, frameon=True)\n", + "plt.colorbar(label=f\"Steps to {reduction_threshold*100:.0f}% Convergence\")\n", + "plt.title(\n", + " f\"p=2 Scaling: Steps to {reduction_threshold*100:.0f}% Convergence\\n(black = did not converge)\",\n", + " fontsize=13,\n", + " fontweight=\"bold\",\n", + ")\n", + "plt.tight_layout()\n", + "plt.show()\n", + "\n", + "# Print summary statistics\n", + "n_not_converged = np.sum(np.isnan(conv_grid))\n", + "n_converged = np.sum(~np.isnan(conv_grid))\n", + "total = conv_grid.size\n", + "\n", + "print(f\"\\n{'='*60}\")\n", + "print(f\"CONVERGENCE SUMMARY (p=2 scaling)\")\n", + "print(f\"{'='*60}\")\n", + "print(f\"Converged: {n_converged:3d} ({100*n_converged/total:.1f}%)\")\n", + "print(f\"Did not converge: {n_not_converged:3d} ({100*n_not_converged/total:.1f}%)\")\n", + "print(f\"Total experiments: {total:3d}\")\n", + "print(f\"{'='*60}\\n\")" + ], + "execution_count": null, + "outputs": [], + "id": "3a80c6fc" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [], + "execution_count": null, + "outputs": [], + "id": "b1e10a36" + } + ], + "metadata": { + "kernelspec": { + "display_name": "gagf-PDhBFja6-py3.12", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.2" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} \ No newline at end of file diff --git a/notebooks/seq_mlp_group_size.ipynb b/notebooks/seq_mlp_group_size.ipynb new file mode 100644 index 0000000..2ec9be7 --- /dev/null +++ b/notebooks/seq_mlp_group_size.ipynb @@ -0,0 +1,1393 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# MLP Scaling: $H$ vs $|G|$ \n", + "\n", + "Hidden neurons vs group size scaling experiments." + ], + "id": "c8c5c4b6" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Set up" + ], + "id": "155908c2" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "# autoreload\n", + "%load_ext autoreload\n", + "%autoreload 2\n", + "# jupyter black formatter\n", + "%load_ext jupyter_black\n", + "\n", + "import subprocess\n", + "import os\n", + "import sys\n", + "\n", + "gitroot_path = subprocess.check_output(\n", + " [\"git\", \"rev-parse\", \"--show-toplevel\"], universal_newlines=True\n", + ").strip()\n", + "\n", + "os.chdir(gitroot_path)\n", + "print(\"Working directory: \", os.getcwd())\n", + "\n", + "if gitroot_path not in sys.path:\n", + " sys.path.insert(0, gitroot_path)\n", + "print(\"Directory added to path: \", gitroot_path)\n", + "\n", + "import yaml\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from pathlib import Path" + ], + "execution_count": null, + "outputs": [], + "id": "7fc4c5b6" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Specify experiment directory" + ], + "id": "9831010d" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "# sweep_dir = \"/home/facosta/group-agf/sweeps/onehot_scaling_sweep_20251215_175955\"\n", + "sweep_dir = \"/home/facosta/group-agf/sweep_results/onehot_scaling_sweep_20260112_022012\"\n", + "print(os.path.exists(sweep_dir))" + ], + "execution_count": null, + "outputs": [], + "id": "b9f8fc25" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Steps to Convergence" + ], + "id": "d8342c22" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "def load_sweep_results_grid_convergence_p_h(\n", + " sweep_dir: str,\n", + " k: int,\n", + " p_values: list,\n", + " hidden_dims: list,\n", + " reduction_threshold: float = 0.99,\n", + " max_p: int = None,\n", + "):\n", + " \"\"\"\n", + " Load sweep results and compute steps to convergence for p vs hidden_dim sweep.\n", + "\n", + " Updated for experiment naming: k{k}_p{p}_h{h}\n", + " Only loads completed experiments (checks for run_summary.yaml).\n", + "\n", + " Convergence is defined as reaching `reduction_threshold` loss reduction\n", + " (e.g., 0.99 = 99% reduction from initial loss).\n", + "\n", + " If convergence is not reached, the grid point is set to NaN (blacked out).\n", + "\n", + " Args:\n", + " sweep_dir: Path to the sweep directory\n", + " k: Sequence length parameter (2, 3, or 4)\n", + " p_values: List of p (group size) values\n", + " hidden_dims: List of hidden dimension values\n", + " reduction_threshold: Fraction of loss reduction to consider converged\n", + " max_p: Maximum p value to include (filters incomplete experiments)\n", + "\n", + " Returns:\n", + " grid: 2D array with mean steps to convergence (NaN if didn't converge)\n", + " Shape: (len(hidden_dims), len(p_values))\n", + " std_grid: 2D array with standard deviations across seeds\n", + " \"\"\"\n", + " sweep_path = Path(sweep_dir)\n", + "\n", + " grid = np.full((len(hidden_dims), len(p_values)), np.nan)\n", + " std_grid = np.full((len(hidden_dims), len(p_values)), np.nan)\n", + "\n", + " for i, h in enumerate(hidden_dims):\n", + " for j, p in enumerate(p_values):\n", + " # Filter by max_p if specified\n", + " if max_p is not None and p > max_p:\n", + " continue\n", + "\n", + " exp_name = f\"k{k}_p{p}_h{h}\"\n", + " exp_dir = sweep_path / exp_name\n", + "\n", + " if not exp_dir.exists():\n", + " continue\n", + "\n", + " # Check if experiment is completed (has run_summary.yaml)\n", + " seed_dir = exp_dir / \"seed_0\"\n", + " if not seed_dir.exists() or not (seed_dir / \"run_summary.yaml\").exists():\n", + " continue # Skip incomplete experiments\n", + "\n", + " # Collect convergence steps from all seeds\n", + " convergence_steps = []\n", + " for seed_dir in exp_dir.glob(\"seed_*\"):\n", + " loss_file = seed_dir / \"train_loss_history.npy\"\n", + " if loss_file.exists():\n", + " loss_history = np.load(loss_file)\n", + " initial_loss = loss_history[0]\n", + "\n", + " if initial_loss > 0:\n", + " # Compute reduction at each step\n", + " reductions = 1 - loss_history / initial_loss\n", + "\n", + " # Find first step where reduction >= threshold\n", + " converged_mask = reductions >= reduction_threshold\n", + " if np.any(converged_mask):\n", + " step = np.argmax(converged_mask) # First True\n", + " convergence_steps.append(step)\n", + " # else: Never converged - don't add to list\n", + "\n", + " if convergence_steps:\n", + " grid[i, j] = np.mean(convergence_steps)\n", + " std_grid[i, j] = (\n", + " np.std(convergence_steps) if len(convergence_steps) > 1 else 0.0\n", + " )\n", + " # else: No seeds converged - grid[i,j] remains NaN (blacked out)\n", + "\n", + " return grid, std_grid" + ], + "execution_count": null, + "outputs": [], + "id": "bc6dd932" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "def load_sweep_results_grid_final_loss_p_h(\n", + " sweep_dir: str,\n", + " k: int,\n", + " p_values: list,\n", + " hidden_dims: list,\n", + " max_p: int = None,\n", + "):\n", + " \"\"\"\n", + " Load sweep results and compute final training loss for p vs hidden_dim sweep.\n", + "\n", + " Updated for experiment naming: k{k}_p{p}_h{h}\n", + " Only loads completed experiments (checks for run_summary.yaml).\n", + "\n", + " Args:\n", + " sweep_dir: Path to the sweep directory\n", + " k: Sequence length parameter (2, 3, or 4)\n", + " p_values: List of p (group size) values\n", + " hidden_dims: List of hidden dimension values\n", + " max_p: Maximum p value to include (filters incomplete experiments)\n", + "\n", + " Returns:\n", + " grid: 2D array with mean final training loss (NaN if experiment incomplete)\n", + " Shape: (len(hidden_dims), len(p_values))\n", + " std_grid: 2D array with standard deviations across seeds\n", + " \"\"\"\n", + " sweep_path = Path(sweep_dir)\n", + "\n", + " grid = np.full((len(hidden_dims), len(p_values)), np.nan)\n", + " std_grid = np.full((len(hidden_dims), len(p_values)), np.nan)\n", + "\n", + " for i, h in enumerate(hidden_dims):\n", + " for j, p in enumerate(p_values):\n", + " # Filter by max_p if specified\n", + " if max_p is not None and p > max_p:\n", + " continue\n", + "\n", + " exp_name = f\"k{k}_p{p}_h{h}\"\n", + " exp_dir = sweep_path / exp_name\n", + "\n", + " if not exp_dir.exists():\n", + " continue\n", + "\n", + " # Check if experiment is completed (has run_summary.yaml)\n", + " seed_dir = exp_dir / \"seed_0\"\n", + " if not seed_dir.exists() or not (seed_dir / \"run_summary.yaml\").exists():\n", + " continue # Skip incomplete experiments\n", + "\n", + " # Collect final losses from all seeds\n", + " final_losses = []\n", + " for seed_dir in exp_dir.glob(\"seed_*\"):\n", + " loss_file = seed_dir / \"train_loss_history.npy\"\n", + " if loss_file.exists():\n", + " loss_history = np.load(loss_file)\n", + " if len(loss_history) > 0:\n", + " final_loss = loss_history[-1] # Last value\n", + " final_losses.append(final_loss)\n", + "\n", + " if final_losses:\n", + " grid[i, j] = np.mean(final_losses)\n", + " std_grid[i, j] = np.std(final_losses) if len(final_losses) > 1 else 0.0\n", + " # else: No seeds found - grid[i,j] remains NaN (blacked out)\n", + "\n", + " return grid, std_grid" + ], + "execution_count": null, + "outputs": [], + "id": "9a87f24d" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "def load_training_loss_curves_p(\n", + " sweep_dir: str,\n", + " k: int,\n", + " hidden_dim: int,\n", + " p_values: list,\n", + "):\n", + " \"\"\"\n", + " Load training loss histories for different group sizes (p) with fixed k and hidden_dim.\n", + "\n", + " Args:\n", + " sweep_dir: Path to the sweep directory\n", + " k: Sequence length parameter (fixed)\n", + " hidden_dim: Hidden dimension (fixed)\n", + " p_values: List of p (group size) values to plot\n", + "\n", + " Returns:\n", + " curves: Dictionary mapping p -> list of loss histories (one per seed)\n", + " Each loss history is a numpy array\n", + " \"\"\"\n", + " sweep_path = Path(sweep_dir)\n", + "\n", + " curves = {}\n", + "\n", + " for p in p_values:\n", + " exp_name = f\"k{k}_p{p}_h{hidden_dim}\"\n", + " exp_dir = sweep_path / exp_name\n", + "\n", + " if not exp_dir.exists():\n", + " continue\n", + "\n", + " # Check if experiment is completed\n", + " seed_dir = exp_dir / \"seed_0\"\n", + " if not seed_dir.exists() or not (seed_dir / \"run_summary.yaml\").exists():\n", + " continue # Skip incomplete experiments\n", + "\n", + " # Collect loss histories from all seeds\n", + " loss_histories = []\n", + " for seed_dir in exp_dir.glob(\"seed_*\"):\n", + " loss_file = seed_dir / \"train_loss_history.npy\"\n", + " if loss_file.exists():\n", + " loss_history = np.load(loss_file)\n", + " if len(loss_history) > 0:\n", + " loss_histories.append(loss_history)\n", + "\n", + " if loss_histories:\n", + " curves[p] = loss_histories\n", + "\n", + " return curves" + ], + "execution_count": null, + "outputs": [], + "id": "3bb53f80" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "def load_sweep_results_grid_final_val_loss_p_h(\n", + " sweep_dir: str,\n", + " k: int,\n", + " p_values: list,\n", + " hidden_dims: list,\n", + " max_p: int = None,\n", + "):\n", + " \"\"\"\n", + " Load sweep results and compute final validation loss for p vs hidden_dim sweep.\n", + "\n", + " Updated for experiment naming: k{k}_p{p}_h{h}\n", + " Only loads completed experiments (checks for run_summary.yaml).\n", + "\n", + " Args:\n", + " sweep_dir: Path to the sweep directory\n", + " k: Sequence length parameter (2, 3, or 4)\n", + " p_values: List of p (group size) values\n", + " hidden_dims: List of hidden dimension values\n", + " max_p: Maximum p value to include (filters incomplete experiments)\n", + "\n", + " Returns:\n", + " grid: 2D array with mean final validation loss (NaN if experiment incomplete)\n", + " Shape: (len(hidden_dims), len(p_values))\n", + " std_grid: 2D array with standard deviations across seeds\n", + " \"\"\"\n", + " sweep_path = Path(sweep_dir)\n", + "\n", + " grid = np.full((len(hidden_dims), len(p_values)), np.nan)\n", + " std_grid = np.full((len(hidden_dims), len(p_values)), np.nan)\n", + "\n", + " for i, h in enumerate(hidden_dims):\n", + " for j, p in enumerate(p_values):\n", + " # Filter by max_p if specified\n", + " if max_p is not None and p > max_p:\n", + " continue\n", + "\n", + " exp_name = f\"k{k}_p{p}_h{h}\"\n", + " exp_dir = sweep_path / exp_name\n", + "\n", + " if not exp_dir.exists():\n", + " continue\n", + "\n", + " # Check if experiment is completed (has run_summary.yaml)\n", + " seed_dir = exp_dir / \"seed_0\"\n", + " if not seed_dir.exists() or not (seed_dir / \"run_summary.yaml\").exists():\n", + " continue # Skip incomplete experiments\n", + "\n", + " # Collect final validation losses from all seeds\n", + " final_losses = []\n", + " for seed_dir in exp_dir.glob(\"seed_*\"):\n", + " loss_file = seed_dir / \"val_loss_history.npy\"\n", + " if loss_file.exists():\n", + " loss_history = np.load(loss_file)\n", + " if len(loss_history) > 0:\n", + " final_loss = loss_history[-1] # Last value\n", + " final_losses.append(final_loss)\n", + "\n", + " if final_losses:\n", + " grid[i, j] = np.mean(final_losses)\n", + " std_grid[i, j] = np.std(final_losses) if len(final_losses) > 1 else 0.0\n", + " # else: No seeds found - grid[i,j] remains NaN (blacked out)\n", + "\n", + " return grid, std_grid" + ], + "execution_count": null, + "outputs": [], + "id": "bf14dee1" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "# Define parameter values from the sweep config\n", + "# Filter to p <= 55 for completed experiments\n", + "p_values = [5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70]\n", + "hidden_dims = [80, 160, 240, 320, 400, 480, 560, 640, 720, 800, 880, 960, 1040, 1120]\n", + "k_values = [2, 3] # , 4] # Different k values to plot separately" + ], + "execution_count": null, + "outputs": [], + "id": "42ce6ffd" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Plot steps to convergence grid" + ], + "id": "7bf99dee" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "# Load convergence data for each k value separately\n", + "reduction_threshold = 0.90\n", + "max_p = 70 # Only visualize completed experiments (p <= 55)\n", + "\n", + "from matplotlib.colors import LogNorm\n", + "\n", + "# Create separate plots for each k value\n", + "for k in k_values:\n", + " conv_grid, conv_std = load_sweep_results_grid_convergence_p_h(\n", + " sweep_dir,\n", + " k,\n", + " p_values,\n", + " hidden_dims,\n", + " reduction_threshold=reduction_threshold,\n", + " max_p=max_p,\n", + " )\n", + "\n", + " # Filter p values - only show p <= max_p\n", + " p_values_filtered = [p for p in p_values if p <= max_p]\n", + "\n", + " # Plot convergence heatmap: p (group size) vs hidden_dim\n", + " plt.figure(figsize=(12, 8))\n", + " cmap = plt.cm.viridis_r.copy()\n", + " cmap.set_bad(color=\"black\")\n", + " # Set extent to align cells with tick positions\n", + " # extent: [left, right, bottom, top] in data coordinates\n", + " plt.imshow(\n", + " conv_grid[:, : len(p_values_filtered)],\n", + " aspect=\"equal\",\n", + " cmap=cmap,\n", + " norm=LogNorm(),\n", + " )\n", + "\n", + " plt.xlabel(\"Group Size $|G|$\", fontsize=14)\n", + " plt.ylabel(\"Hidden Dimension $H$\", fontsize=14)\n", + " plt.xticks(\n", + " range(len(p_values_filtered)), p_values_filtered, rotation=45, ha=\"center\"\n", + " )\n", + "\n", + " # Set y-axis ticks (hidden dimensions)\n", + " plt.yticks(range(len(hidden_dims)), hidden_dims)\n", + " plt.gca().invert_yaxis()\n", + "\n", + " # Theory boundaries\n", + " x_step = np.arange(len(p_values_filtered) + 1) - 0.5\n", + "\n", + " # Upper boundary: H = (k+1)*2^{k-1} * |G|\n", + " upper_boundary_coeff = (k + 1) * (2 ** (k - 1)) * reduction_threshold\n", + " y_step_upper = [\n", + " min(\n", + " len(hidden_dims) - 1,\n", + " (\n", + " # Find the first H that satisfies H >= upper_boundary_coeff * p\n", + " np.argmax(np.array(hidden_dims) >= upper_boundary_coeff * p)\n", + " if upper_boundary_coeff * p <= max(hidden_dims)\n", + " else len(hidden_dims) - 1\n", + " ),\n", + " )\n", + " for p in p_values_filtered\n", + " ]\n", + " y_step_upper.append(y_step_upper[-1]) # Extend for step plot\n", + " # Convert to edge positions (subtract 0.5 to place at bottom edge of cells)\n", + " y_step_upper = [y - 0.5 for y in y_step_upper]\n", + "\n", + " # Lower boundary: H = 2^{k-1} * |G|\n", + " lower_boundary_coeff = 2 ** (k - 1) * reduction_threshold\n", + " y_step_lower = [\n", + " min(\n", + " len(hidden_dims) - 1,\n", + " (\n", + " # Find the first H that satisfies H >= lower_boundary_coeff * p\n", + " np.argmax(np.array(hidden_dims) >= lower_boundary_coeff * p)\n", + " if lower_boundary_coeff * p <= max(hidden_dims)\n", + " else len(hidden_dims) - 1\n", + " ),\n", + " )\n", + " for p in p_values_filtered\n", + " ]\n", + " y_step_lower.append(y_step_lower[-1]) # Extend for step plot\n", + " # Convert to edge positions (subtract 0.5 to place at bottom edge of cells)\n", + " y_step_lower = [y - 0.5 for y in y_step_lower]\n", + "\n", + " plt.step(\n", + " x_step,\n", + " y_step_upper,\n", + " where=\"post\",\n", + " color=\"red\",\n", + " linewidth=4,\n", + " linestyle=\"-\",\n", + " label=f\"Upper boundary ($H$ = $(k+1) \\\\cdot 2^{{k-1}} |G| x {reduction_threshold}$ = {upper_boundary_coeff * reduction_threshold} * |G|) \",\n", + " )\n", + "\n", + " plt.step(\n", + " x_step,\n", + " y_step_lower,\n", + " where=\"post\",\n", + " color=\"white\",\n", + " linewidth=4,\n", + " linestyle=\"-\",\n", + " label=f\"Lower boundary ($H$ = $2^{{k-1}} |G| x {reduction_threshold}$ = {lower_boundary_coeff * reduction_threshold} * |G|) \",\n", + " )\n", + "\n", + " # Place legend outside the plot area\n", + " plt.legend(\n", + " loc=\"upper center\", bbox_to_anchor=(0.5, -0.12), fontsize=12, frameon=True\n", + " )\n", + "\n", + " plt.colorbar(label=f\"Steps to {reduction_threshold*100}% Convergence\")\n", + " plt.title(\n", + " f\"Steps to {reduction_threshold*100}% Convergence: Group Size $|G|$ vs Hidden Dimension $H$\\n($k={k}$, black = did not converge, p \u2264 {max_p})\",\n", + " fontsize=14,\n", + " fontweight=\"bold\",\n", + " )\n", + " plt.tight_layout()\n", + " plt.show()" + ], + "execution_count": null, + "outputs": [], + "id": "522570f5" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Final Training Loss\n", + " " + ], + "id": "28e479df" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "# Load final training loss data for each k value separately\n", + "max_p = 70 # Only visualize completed experiments (p <= 55)\n", + "\n", + "from matplotlib.colors import LogNorm\n", + "\n", + "# Create separate plots for each k value\n", + "for k in k_values:\n", + " loss_grid, loss_std = load_sweep_results_grid_final_loss_p_h(\n", + " sweep_dir,\n", + " k,\n", + " p_values,\n", + " hidden_dims,\n", + " max_p=max_p,\n", + " )\n", + "\n", + " # Filter p values - only show p <= max_p\n", + " p_values_filtered = [p for p in p_values if p <= max_p]\n", + "\n", + " # Plot final loss heatmap: p (group size) vs hidden_dim\n", + " plt.figure(figsize=(12, 8))\n", + " cmap = plt.cm.viridis_r.copy()\n", + " cmap.set_bad(color=\"black\")\n", + " # Set extent to align cells with tick positions\n", + " # extent: [left, right, bottom, top] in data coordinates\n", + " plt.imshow(\n", + " loss_grid[:, : len(p_values_filtered)],\n", + " aspect=\"equal\",\n", + " cmap=cmap,\n", + " norm=LogNorm(),\n", + " )\n", + "\n", + " plt.xlabel(\"Group Size $|G|$\", fontsize=14)\n", + " plt.ylabel(\"Hidden Dimension $H$\", fontsize=14)\n", + " plt.xticks(\n", + " range(len(p_values_filtered)), p_values_filtered, rotation=45, ha=\"center\"\n", + " )\n", + "\n", + " # Set y-axis ticks (hidden dimensions)\n", + " plt.yticks(range(len(hidden_dims)), hidden_dims)\n", + " plt.gca().invert_yaxis()\n", + "\n", + " # Theory boundaries\n", + " x_step = np.arange(len(p_values_filtered) + 1) - 0.5\n", + "\n", + " # Upper boundary: H = (k+1)*2^{k-1} * |G|\n", + " upper_boundary_coeff = (k + 1) * (2 ** (k - 1))\n", + " y_step_upper = [\n", + " min(\n", + " len(hidden_dims) - 1,\n", + " (\n", + " # Find the first H that satisfies H >= upper_boundary_coeff * p\n", + " np.argmax(np.array(hidden_dims) >= upper_boundary_coeff * p)\n", + " if upper_boundary_coeff * p <= max(hidden_dims)\n", + " else len(hidden_dims) - 1\n", + " ),\n", + " )\n", + " for p in p_values_filtered\n", + " ]\n", + " y_step_upper.append(y_step_upper[-1]) # Extend for step plot\n", + " # Convert to edge positions (subtract 0.5 to place at bottom edge of cells)\n", + " y_step_upper = [y - 0.5 for y in y_step_upper]\n", + "\n", + " # Lower boundary: H = 2^{k-1} * |G|\n", + " lower_boundary_coeff = 2 ** (k - 1)\n", + " y_step_lower = [\n", + " min(\n", + " len(hidden_dims) - 1,\n", + " (\n", + " # Find the first H that satisfies H >= lower_boundary_coeff * p\n", + " np.argmax(np.array(hidden_dims) >= lower_boundary_coeff * p)\n", + " if lower_boundary_coeff * p <= max(hidden_dims)\n", + " else len(hidden_dims) - 1\n", + " ),\n", + " )\n", + " for p in p_values_filtered\n", + " ]\n", + " y_step_lower.append(y_step_lower[-1]) # Extend for step plot\n", + " # Convert to edge positions (subtract 0.5 to place at bottom edge of cells)\n", + " y_step_lower = [y - 0.5 for y in y_step_lower]\n", + "\n", + " plt.step(\n", + " x_step,\n", + " y_step_upper,\n", + " where=\"post\",\n", + " color=\"magenta\",\n", + " linewidth=3,\n", + " linestyle=\"--\",\n", + " label=f\"Upper boundary ($H$ \u2265 $(k+1) \\\\cdot 2^{{k-1}} |G|$)\",\n", + " )\n", + "\n", + " plt.step(\n", + " x_step,\n", + " y_step_lower,\n", + " where=\"post\",\n", + " color=\"red\",\n", + " linewidth=3,\n", + " linestyle=\"--\",\n", + " label=f\"Lower boundary ($H$ \u2265 $2^{{k-1}} |G|$)\",\n", + " )\n", + "\n", + " # Place legend outside the plot area\n", + " plt.legend(\n", + " loc=\"upper center\", bbox_to_anchor=(0.5, -0.12), fontsize=12, frameon=True\n", + " )\n", + "\n", + " plt.colorbar(label=\"Final Training Loss\")\n", + " plt.title(\n", + " f\"Final Training Loss: Group Size $|G|$ vs Hidden Dimension $H$\\n($k={k}$)\",\n", + " fontsize=14,\n", + " fontweight=\"bold\",\n", + " )\n", + " plt.tight_layout()\n", + " plt.show()" + ], + "execution_count": null, + "outputs": [], + "id": "06fb5f82" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Training Loss Curves by Group Size\n" + ], + "id": "93d367cb" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "# Plot training loss curves for different group sizes\n", + "# Specify the hidden dimension to use\n", + "hidden_dim = 160 # Change this to plot different hidden dimensions\n", + "\n", + "# Use all available p values (or filter as needed)\n", + "p_values_to_plot = [p for p in p_values if p <= 55] # Adjust max_p as needed\n", + "\n", + "# Create separate plots for each k value\n", + "for k in k_values:\n", + " # Load training loss curves for different p values\n", + " curves = load_training_loss_curves_p(\n", + " sweep_dir,\n", + " k,\n", + " hidden_dim,\n", + " p_values_to_plot,\n", + " )\n", + "\n", + " if not curves:\n", + " print(f\"No data found for k={k}, H={hidden_dim}\")\n", + " continue\n", + "\n", + " # Create plot\n", + " plt.figure(figsize=(10, 8))\n", + "\n", + " # Plot each group size as a separate curve\n", + " # Use a colormap to distinguish different p values\n", + " colors = plt.cm.viridis(np.linspace(0, 1, len(curves)))\n", + "\n", + " for i, (p, loss_histories) in enumerate(sorted(curves.items())):\n", + " # Plot mean curve with shaded error bars\n", + " # Find the maximum length to align all curves\n", + " max_len = max(len(hist) for hist in loss_histories)\n", + "\n", + " # Pad shorter histories with NaN or last value\n", + " aligned_histories = []\n", + " for hist in loss_histories:\n", + " if len(hist) < max_len:\n", + " padded = np.full(max_len, np.nan)\n", + " padded[: len(hist)] = hist\n", + " aligned_histories.append(padded)\n", + " else:\n", + " aligned_histories.append(hist)\n", + "\n", + " aligned_histories = np.array(aligned_histories)\n", + "\n", + " # Compute mean and std across seeds\n", + " mean_loss = np.nanmean(aligned_histories, axis=0)\n", + " std_loss = np.nanstd(aligned_histories, axis=0)\n", + "\n", + " # Create step array (1-indexed for log scale)\n", + " steps = np.arange(1, len(mean_loss) + 1)\n", + "\n", + " # Plot mean curve\n", + " plt.loglog(\n", + " steps,\n", + " mean_loss,\n", + " color=colors[i],\n", + " linewidth=2,\n", + " label=f\"$|G|={p}$\",\n", + " )\n", + "\n", + " # Plot shaded error region (optional, can be commented out if too cluttered)\n", + " # plt.fill_between(\n", + " # steps,\n", + " # mean_loss - std_loss,\n", + " # mean_loss + std_loss,\n", + " # color=colors[i],\n", + " # alpha=0.2,\n", + " # )\n", + "\n", + " plt.xlabel(\"Training Steps\", fontsize=14)\n", + " plt.ylabel(\"Training Loss\", fontsize=14)\n", + " plt.title(\n", + " f\"Training Loss Curves: Group Size $|G|$ vs Steps\\n($k={k}$, $H={hidden_dim}$)\",\n", + " fontsize=14,\n", + " fontweight=\"bold\",\n", + " )\n", + " plt.legend(loc=\"best\", fontsize=10, ncol=2)\n", + " plt.grid(True, alpha=0.3, which=\"both\")\n", + " plt.tight_layout()\n", + " plt.show()" + ], + "execution_count": null, + "outputs": [], + "id": "5ed8f9c0" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "# Load final validation loss data for each k value separately\n", + "max_p = 60 # Only visualize completed experiments (p <= 55)\n", + "\n", + "from matplotlib.colors import LogNorm\n", + "\n", + "# Create separate plots for each k value\n", + "for k in k_values:\n", + " loss_grid, loss_std = load_sweep_results_grid_final_val_loss_p_h(\n", + " sweep_dir,\n", + " k,\n", + " p_values,\n", + " hidden_dims,\n", + " max_p=max_p,\n", + " )\n", + "\n", + " # Filter p values - only show p <= max_p\n", + " p_values_filtered = [p for p in p_values if p <= max_p]\n", + "\n", + " # Plot final validation loss heatmap: p (group size) vs hidden_dim\n", + " plt.figure(figsize=(12, 8))\n", + " cmap = plt.cm.viridis_r.copy()\n", + " cmap.set_bad(color=\"black\")\n", + " # Set extent to align cells with tick positions\n", + " # extent: [left, right, bottom, top] in data coordinates\n", + " plt.imshow(\n", + " loss_grid[:, : len(p_values_filtered)],\n", + " aspect=\"equal\",\n", + " cmap=cmap,\n", + " norm=LogNorm(),\n", + " )\n", + "\n", + " plt.xlabel(\"Group Size $|G|$\", fontsize=14)\n", + " plt.ylabel(\"Hidden Dimension $H$\", fontsize=14)\n", + " plt.xticks(\n", + " range(len(p_values_filtered)), p_values_filtered, rotation=45, ha=\"center\"\n", + " )\n", + "\n", + " # Set y-axis ticks (hidden dimensions)\n", + " plt.yticks(range(len(hidden_dims)), hidden_dims)\n", + " plt.gca().invert_yaxis()\n", + "\n", + " # Theory boundaries\n", + " x_step = np.arange(len(p_values_filtered) + 1) - 0.5\n", + "\n", + " # Upper boundary: H = (k+1)*2^{k-1} * |G|\n", + " upper_boundary_coeff = (k + 1) * (2 ** (k - 1))\n", + " y_step_upper = [\n", + " min(\n", + " len(hidden_dims) - 1,\n", + " (\n", + " # Find the first H that satisfies H >= upper_boundary_coeff * p\n", + " np.argmax(np.array(hidden_dims) >= upper_boundary_coeff * p)\n", + " if upper_boundary_coeff * p <= max(hidden_dims)\n", + " else len(hidden_dims) - 1\n", + " ),\n", + " )\n", + " for p in p_values_filtered\n", + " ]\n", + " y_step_upper.append(y_step_upper[-1]) # Extend for step plot\n", + " # Convert to edge positions (subtract 0.5 to place at bottom edge of cells)\n", + " y_step_upper = [y - 0.5 for y in y_step_upper]\n", + "\n", + " # Lower boundary: H = 2^{k-1} * |G|\n", + " lower_boundary_coeff = 2 ** (k - 1)\n", + " y_step_lower = [\n", + " min(\n", + " len(hidden_dims) - 1,\n", + " (\n", + " # Find the first H that satisfies H >= lower_boundary_coeff * p\n", + " np.argmax(np.array(hidden_dims) >= lower_boundary_coeff * p)\n", + " if lower_boundary_coeff * p <= max(hidden_dims)\n", + " else len(hidden_dims) - 1\n", + " ),\n", + " )\n", + " for p in p_values_filtered\n", + " ]\n", + " y_step_lower.append(y_step_lower[-1]) # Extend for step plot\n", + " # Convert to edge positions (subtract 0.5 to place at bottom edge of cells)\n", + " y_step_lower = [y - 0.5 for y in y_step_lower]\n", + "\n", + " plt.step(\n", + " x_step,\n", + " y_step_upper,\n", + " where=\"post\",\n", + " color=\"red\",\n", + " linewidth=3,\n", + " linestyle=\"--\",\n", + " label=f\"Upper boundary ($H$ \u2265 $(k+1) \\\\cdot 2^{{k-1}} |G|$)\",\n", + " )\n", + "\n", + " plt.step(\n", + " x_step,\n", + " y_step_lower,\n", + " where=\"post\",\n", + " color=\"blue\",\n", + " linewidth=3,\n", + " linestyle=\"--\",\n", + " label=f\"Lower boundary ($H$ \u2265 $2^{{k-1}} |G|$)\",\n", + " )\n", + "\n", + " # Place legend outside the plot area\n", + " plt.legend(\n", + " loc=\"upper center\", bbox_to_anchor=(0.5, -0.12), fontsize=12, frameon=True\n", + " )\n", + "\n", + " plt.colorbar(label=\"Final Validation Loss\")\n", + " plt.title(\n", + " f\"Final Validation Loss: Group Size $|G|$ vs Hidden Dimension $H$\\n($k={k}$, black = incomplete experiment, p \u2264 {max_p})\",\n", + " fontsize=14,\n", + " fontweight=\"bold\",\n", + " )\n", + " plt.tight_layout()\n", + " plt.show()" + ], + "execution_count": null, + "outputs": [], + "id": "96be1620" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Training Instability" + ], + "id": "d3111eeb" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "def load_sweep_results_grid_spikiness_p_h(\n", + " sweep_dir: str, k: int, p_values: list, hidden_dims: list, max_p: int = None\n", + "):\n", + " \"\"\"\n", + " Compute fraction of training steps where loss increased (instability) for p vs h sweeps.\n", + "\n", + " Updated for experiment naming: k{k}_p{p}_h{h}\n", + " Only loads completed experiments (checks for run_summary.yaml).\n", + "\n", + " Args:\n", + " sweep_dir: Path to the sweep directory\n", + " k: Sequence length parameter (2, 3, or 4)\n", + " p_values: List of p (group size) values\n", + " hidden_dims: List of hidden dimension values\n", + " max_p: Maximum p value to include (filters incomplete experiments)\n", + "\n", + " Returns:\n", + " grid: 2D array with mean frac_upward across seeds\n", + " Shape: (len(hidden_dims), len(p_values))\n", + " std_grid: 2D array with standard deviations\n", + " \"\"\"\n", + " sweep_path = Path(sweep_dir)\n", + "\n", + " grid = np.full((len(hidden_dims), len(p_values)), np.nan)\n", + " std_grid = np.full((len(hidden_dims), len(p_values)), np.nan)\n", + "\n", + " for i, h in enumerate(hidden_dims):\n", + " for j, p in enumerate(p_values):\n", + " # Filter by max_p if specified\n", + " if max_p is not None and p > max_p:\n", + " continue\n", + "\n", + " exp_name = f\"k{k}_p{p}_h{h}\"\n", + " exp_dir = sweep_path / exp_name\n", + "\n", + " if not exp_dir.exists():\n", + " continue\n", + "\n", + " # Check if experiment is completed\n", + " seed_dir = exp_dir / \"seed_0\"\n", + " if not seed_dir.exists() or not (seed_dir / \"run_summary.yaml\").exists():\n", + " continue # Skip incomplete experiments\n", + "\n", + " frac_upwards = []\n", + " for seed_dir in exp_dir.glob(\"seed_*\"):\n", + " loss_file = seed_dir / \"train_loss_history.npy\"\n", + " if loss_file.exists():\n", + " loss_history = np.load(loss_file)\n", + " log_loss = np.log10(loss_history + 1e-10)\n", + " log_changes = np.diff(log_loss)\n", + "\n", + " # Fraction of steps where loss went UP\n", + " frac_upward = np.sum(log_changes > 0) / len(log_changes)\n", + " frac_upwards.append(frac_upward)\n", + "\n", + " if frac_upwards:\n", + " grid[i, j] = np.mean(frac_upwards)\n", + " std_grid[i, j] = np.std(frac_upwards) if len(frac_upwards) > 1 else 0.0\n", + "\n", + " return grid, std_grid" + ], + "execution_count": null, + "outputs": [], + "id": "d743a392" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "# Load spikiness data for each k value separately\n", + "max_p = 70 # Only visualize completed experiments\n", + "\n", + "# Create separate plots for each k value\n", + "for k in k_values:\n", + " spike_grid_p, spike_std_p = load_sweep_results_grid_spikiness_p_h(\n", + " sweep_dir, k, p_values, hidden_dims, max_p=max_p\n", + " )\n", + "\n", + " p_values_filtered = [p for p in p_values if p <= max_p]\n", + "\n", + " # Plot\n", + " plt.figure(figsize=(12, 8))\n", + " # Set extent to align cells with tick positions\n", + " plt.imshow(\n", + " spike_grid_p[:, : len(p_values_filtered)],\n", + " aspect=\"equal\",\n", + " cmap=\"plasma\",\n", + " extent=[-0.5, len(p_values_filtered) - 0.5, len(hidden_dims) - 0.5, -0.5],\n", + " )\n", + " plt.xlabel(\"Group Size $|G|$\", fontsize=14)\n", + " plt.ylabel(\"Hidden Dimension $H$\", fontsize=14)\n", + " plt.xticks(\n", + " range(len(p_values_filtered)), p_values_filtered, rotation=45, ha=\"center\"\n", + " )\n", + " plt.yticks(range(len(hidden_dims)), hidden_dims)\n", + " plt.gca().invert_yaxis()\n", + "\n", + " # Theory boundaries\n", + " x_step = np.arange(len(p_values_filtered) + 1) - 0.5\n", + "\n", + " # Upper boundary: H = (k+1)*2^{k-1} * |G|\n", + " upper_boundary_coeff = (k + 1) * (2 ** (k - 1))\n", + " y_step_upper = [\n", + " min(\n", + " len(hidden_dims) - 1,\n", + " (\n", + " np.argmax(np.array(hidden_dims) >= upper_boundary_coeff * p)\n", + " if upper_boundary_coeff * p <= max(hidden_dims)\n", + " else len(hidden_dims) - 1\n", + " ),\n", + " )\n", + " for p in p_values_filtered\n", + " ]\n", + " y_step_upper.append(y_step_upper[-1])\n", + " # Convert to edge positions (subtract 0.5 to place at bottom edge of cells)\n", + " y_step_upper = [y - 0.5 for y in y_step_upper]\n", + "\n", + " # Lower boundary: H = 2^{k-1} * |G|\n", + " lower_boundary_coeff = 2 ** (k - 1)\n", + " y_step_lower = [\n", + " min(\n", + " len(hidden_dims) - 1,\n", + " (\n", + " np.argmax(np.array(hidden_dims) >= lower_boundary_coeff * p)\n", + " if lower_boundary_coeff * p <= max(hidden_dims)\n", + " else len(hidden_dims) - 1\n", + " ),\n", + " )\n", + " for p in p_values_filtered\n", + " ]\n", + " y_step_lower.append(y_step_lower[-1])\n", + " # Convert to edge positions (subtract 0.5 to place at bottom edge of cells)\n", + " y_step_lower = [y - 0.5 for y in y_step_lower]\n", + "\n", + " plt.step(\n", + " x_step,\n", + " y_step_upper,\n", + " where=\"post\",\n", + " color=\"red\",\n", + " linewidth=3,\n", + " linestyle=\"--\",\n", + " label=f\"Upper boundary ($H$ = $(k+1) \\\\cdot 2^{{k-1}} |G|$)\",\n", + " )\n", + "\n", + " plt.step(\n", + " x_step,\n", + " y_step_lower,\n", + " where=\"post\",\n", + " color=\"white\",\n", + " linewidth=3,\n", + " linestyle=\"--\",\n", + " label=f\"Lower boundary ($H$ = $2^{{k-1}} |G|$)\",\n", + " )\n", + "\n", + " plt.legend(\n", + " loc=\"upper center\", bbox_to_anchor=(0.5, -0.12), fontsize=12, frameon=True\n", + " )\n", + "\n", + " plt.colorbar(label=\"Fraction of Upward Steps (Spikiness)\")\n", + " plt.title(\n", + " f\"Training Instability: Group Size $|G|$ vs Hidden Dimension $H$\\n($k={k}$)\",\n", + " fontsize=14,\n", + " fontweight=\"bold\",\n", + " )\n", + " plt.tight_layout()\n", + " plt.show()" + ], + "execution_count": null, + "outputs": [], + "id": "683b555c" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "# Load both metrics for each k value separately\n", + "reduction_threshold = 0.99\n", + "spikiness_threshold = 0.1\n", + "max_p = 55 # Only visualize completed experiments\n", + "\n", + "# Create separate plots for each k value\n", + "for k in k_values:\n", + " conv_grid_p, conv_std_p = load_sweep_results_grid_convergence_p_h(\n", + " sweep_dir, k, p_values, hidden_dims, \n", + " reduction_threshold=reduction_threshold,\n", + " max_p=max_p\n", + " )\n", + " spike_grid_p, spike_std_p = load_sweep_results_grid_spikiness_p_h(\n", + " sweep_dir, k, p_values, hidden_dims, max_p=max_p\n", + " )\n", + " \n", + " p_values_filtered = [p for p in p_values if p <= max_p]\n", + "\n", + " # Create categorical grid: 0=black (no conv), 1=purple (spiky), 2=yellow (smooth)\n", + " category_grid = np.full((len(hidden_dims), len(p_values_filtered)), 0.0) # Start with 0 (black)\n", + "\n", + " for i in range(len(hidden_dims)):\n", + " for j in range(len(p_values_filtered)):\n", + " converged = not np.isnan(conv_grid_p[i, j])\n", + "\n", + " if converged:\n", + " spiky = spike_grid_p[i, j] > spikiness_threshold\n", + " if spiky:\n", + " category_grid[i, j] = 1.0 # Purple (spiky)\n", + " else:\n", + " category_grid[i, j] = 2.0 # Yellow (smooth)\n", + " # else stays 0.0 (black, did not converge)\n", + "\n", + " # Plot\n", + " fig, ax = plt.subplots(figsize=(12, 8))\n", + "\n", + " # Custom colormap: black -> purple -> yellow\n", + " from matplotlib.colors import ListedColormap\n", + "\n", + " colors = [\"black\", \"purple\", \"yellow\"]\n", + " cmap = ListedColormap(colors)\n", + "\n", + " # Set extent to align cells with tick positions\n", + " im = ax.imshow(\n", + " category_grid, \n", + " aspect=\"auto\", \n", + " cmap=cmap, \n", + " vmin=0, \n", + " vmax=2,\n", + " extent=[-0.5, len(p_values_filtered) - 0.5, len(hidden_dims) - 0.5, -0.5]\n", + " )\n", + "\n", + " ax.set_xlabel(\"Group Size $|G|$\", fontsize=14)\n", + " ax.set_ylabel(\"Hidden Dimension $H$\", fontsize=14)\n", + "\n", + " # Set x-axis ticks (p values)\n", + " ax.set_xticks(range(len(p_values_filtered)))\n", + " ax.set_xticklabels(p_values_filtered, rotation=45, ha=\"center\")\n", + "\n", + " # Set y-axis ticks (hidden dimensions)\n", + " ax.set_yticks(range(len(hidden_dims)))\n", + " ax.set_yticklabels(hidden_dims)\n", + " ax.invert_yaxis()\n", + "\n", + " # Theory boundaries\n", + " x_step = np.arange(len(p_values_filtered) + 1) - 0.5\n", + " \n", + " # Upper boundary: H = (k+1)*2^{k-1} * |G|\n", + " upper_boundary_coeff = (k + 1) * (2 ** (k - 1))\n", + " y_step_upper = [\n", + " min(\n", + " len(hidden_dims) - 1,\n", + " (\n", + " np.argmax(np.array(hidden_dims) >= upper_boundary_coeff * p)\n", + " if upper_boundary_coeff * p <= max(hidden_dims)\n", + " else len(hidden_dims) - 1\n", + " ),\n", + " )\n", + " for p in p_values_filtered\n", + " ]\n", + " y_step_upper.append(y_step_upper[-1])\n", + " # Convert to edge positions (subtract 0.5 to place at bottom edge of cells)\n", + " y_step_upper = [y - 0.5 for y in y_step_upper]\n", + "\n", + " # Lower boundary: H = 2^{k-1} * |G|\n", + " lower_boundary_coeff = 2 ** (k - 1)\n", + " y_step_lower = [\n", + " min(\n", + " len(hidden_dims) - 1,\n", + " (\n", + " np.argmax(np.array(hidden_dims) >= lower_boundary_coeff * p)\n", + " if lower_boundary_coeff * p <= max(hidden_dims)\n", + " else len(hidden_dims) - 1\n", + " ),\n", + " )\n", + " for p in p_values_filtered\n", + " ]\n", + " y_step_lower.append(y_step_lower[-1])\n", + " # Convert to edge positions (subtract 0.5 to place at bottom edge of cells)\n", + " y_step_lower = [y - 0.5 for y in y_step_lower]\n", + "\n", + " ax.step(\n", + " x_step,\n", + " y_step_upper,\n", + " where=\"post\",\n", + " color=\"red\",\n", + " linewidth=3,\n", + " linestyle=\"--\",\n", + " label=f\"Upper boundary ($H$ \u2265 $(k+1) \\\\cdot 2^{{k-1}} |G|$)\",\n", + " )\n", + " \n", + " ax.step(\n", + " x_step,\n", + " y_step_lower,\n", + " where=\"post\",\n", + " color=\"blue\",\n", + " linewidth=3,\n", + " linestyle=\"--\",\n", + " label=f\"Lower boundary ($H$ \u2265 $2^{{k-1}} |G|$)\",\n", + " )\n", + "\n", + " # Create custom legend\n", + " from matplotlib.patches import Patch\n", + "\n", + " legend_elements = [\n", + " Patch(facecolor=\"black\", label=\"Did not converge\"),\n", + " Patch(facecolor=\"purple\", label=f\"Spiky (frac_up > {spikiness_threshold})\"),\n", + " Patch(facecolor=\"yellow\", label=\"Smooth convergence\"),\n", + " plt.Line2D([0], [0], color=\"r\", linewidth=3, linestyle=\"--\", label=f\"Upper boundary ($H$ \u2265 $(k+1) \\\\cdot 2^{{k-1}} |G|$)\"),\n", + " plt.Line2D([0], [0], color=\"b\", linewidth=3, linestyle=\"--\", label=f\"Lower boundary ($H$ \u2265 $2^{{k-1}} |G|$)\"),\n", + " ]\n", + "\n", + " ax.legend(handles=legend_elements, loc=\"upper left\", fontsize=11, frameon=True)\n", + "\n", + " ax.set_title(\n", + " f\"Convergence & Spikiness: $|G|$ vs $H$ ($k={k}$)\\nThresholds: {reduction_threshold*100}% convergence, {spikiness_threshold} spikiness (p \u2264 {max_p})\",\n", + " fontsize=14,\n", + " fontweight=\"bold\",\n", + " )\n", + " plt.tight_layout()\n", + " plt.show()" + ], + "execution_count": null, + "outputs": [], + "id": "772517ad" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [ + "# Load both convergence and spikiness data for each k value separately\n", + "reduction_threshold = 0.99\n", + "max_p = 55 # Only visualize completed experiments\n", + "\n", + "# Create separate plots for each k value\n", + "for k in k_values:\n", + " conv_grid_p, conv_std_p = load_sweep_results_grid_convergence_p_h(\n", + " sweep_dir,\n", + " k,\n", + " p_values,\n", + " hidden_dims,\n", + " reduction_threshold=reduction_threshold,\n", + " max_p=max_p,\n", + " )\n", + " spike_grid_p, spike_std_p = load_sweep_results_grid_spikiness_p_h(\n", + " sweep_dir, k, p_values, hidden_dims, max_p=max_p\n", + " )\n", + "\n", + " p_values_filtered = [p for p in p_values if p <= max_p]\n", + "\n", + " # Mask spikiness grid: only show spikiness for converged runs\n", + " spike_grid_masked = spike_grid_p.copy()\n", + " for i in range(len(hidden_dims)):\n", + " for j in range(len(p_values_filtered)):\n", + " if np.isnan(conv_grid_p[i, j]):\n", + " # Did not converge - set to NaN (will be black)\n", + " spike_grid_masked[i, j] = np.nan\n", + "\n", + " # Plot with masked spikiness\n", + " plt.figure(figsize=(12, 8))\n", + "\n", + " # Use colormap with black for NaN\n", + " cmap_spike = plt.cm.plasma.copy()\n", + " cmap_spike.set_bad(color=\"black\")\n", + "\n", + " # Set extent to align cells with tick positions\n", + " plt.imshow(\n", + " spike_grid_masked[:, : len(p_values_filtered)],\n", + " aspect=\"auto\",\n", + " cmap=cmap_spike,\n", + " vmin=0,\n", + " vmax=0.5,\n", + " extent=[-0.5, len(p_values_filtered) - 0.5, len(hidden_dims) - 0.5, -0.5],\n", + " )\n", + " plt.xlabel(\"Group Size $|G|$\", fontsize=14)\n", + " plt.ylabel(\"Hidden Dimension $H$\", fontsize=14)\n", + " plt.xticks(\n", + " range(len(p_values_filtered)), p_values_filtered, rotation=45, ha=\"center\"\n", + " )\n", + " plt.yticks(range(len(hidden_dims)), hidden_dims)\n", + " plt.gca().invert_yaxis()\n", + "\n", + " # Theory boundaries\n", + " x_step = np.arange(len(p_values_filtered) + 1) - 0.5\n", + "\n", + " # Upper boundary: H = (k+1)*2^{k-1} * |G|\n", + " upper_boundary_coeff = (k + 1) * (2 ** (k - 1))\n", + " y_step_upper = [\n", + " min(\n", + " len(hidden_dims) - 1,\n", + " (\n", + " np.argmax(np.array(hidden_dims) >= upper_boundary_coeff * p)\n", + " if upper_boundary_coeff * p <= max(hidden_dims)\n", + " else len(hidden_dims) - 1\n", + " ),\n", + " )\n", + " for p in p_values_filtered\n", + " ]\n", + " y_step_upper.append(y_step_upper[-1])\n", + " # Convert to edge positions (subtract 0.5 to place at bottom edge of cells)\n", + " y_step_upper = [y - 0.5 for y in y_step_upper]\n", + "\n", + " # Lower boundary: H = 2^{k-1} * |G|\n", + " lower_boundary_coeff = 2 ** (k - 1)\n", + " y_step_lower = [\n", + " min(\n", + " len(hidden_dims) - 1,\n", + " (\n", + " np.argmax(np.array(hidden_dims) >= lower_boundary_coeff * p)\n", + " if lower_boundary_coeff * p <= max(hidden_dims)\n", + " else len(hidden_dims) - 1\n", + " ),\n", + " )\n", + " for p in p_values_filtered\n", + " ]\n", + " y_step_lower.append(y_step_lower[-1])\n", + " # Convert to edge positions (subtract 0.5 to place at bottom edge of cells)\n", + " y_step_lower = [y - 0.5 for y in y_step_lower]\n", + "\n", + " plt.step(\n", + " x_step,\n", + " y_step_upper,\n", + " where=\"post\",\n", + " color=\"red\",\n", + " linewidth=3,\n", + " linestyle=\"--\",\n", + " label=f\"Upper boundary ($H$ \u2265 $(k+1) \\\\cdot 2^{{k-1}} |G|$)\",\n", + " )\n", + "\n", + " plt.step(\n", + " x_step,\n", + " y_step_lower,\n", + " where=\"post\",\n", + " color=\"blue\",\n", + " linewidth=3,\n", + " linestyle=\"--\",\n", + " label=f\"Lower boundary ($H$ \u2265 $2^{{k-1}} |G|$)\",\n", + " )\n", + "\n", + " # Custom legend\n", + " from matplotlib.patches import Patch\n", + "\n", + " legend_elements = [\n", + " Patch(facecolor=\"black\", label=\"Did not converge\"),\n", + " Patch(facecolor=\"purple\", label=\"Low spikiness (~0)\"),\n", + " Patch(facecolor=\"yellow\", label=\"High spikiness (~0.5)\"),\n", + " plt.Line2D(\n", + " [0],\n", + " [0],\n", + " color=\"red\",\n", + " linewidth=3,\n", + " linestyle=\"--\",\n", + " label=f\"Upper boundary ($H$ \u2265 $(k+1) \\\\cdot 2^{{k-1}} |G|$)\",\n", + " ),\n", + " plt.Line2D(\n", + " [0],\n", + " [0],\n", + " color=\"white\",\n", + " linewidth=3,\n", + " linestyle=\"--\",\n", + " label=f\"Lower boundary ($H$ \u2265 $2^{{k-1}} |G|$)\",\n", + " ),\n", + " ]\n", + " plt.legend(\n", + " handles=legend_elements,\n", + " loc=\"upper center\",\n", + " bbox_to_anchor=(0.5, -0.12),\n", + " fontsize=11,\n", + " frameon=True,\n", + " ncol=5,\n", + " )\n", + "\n", + " plt.colorbar(label=\"Fraction of Upward Steps (Spikiness)\")\n", + " plt.title(\n", + " f\"Training Instability: Group Size $|G|$ vs Hidden Dimension $H$\\n($k={k}$, black = did not converge, p \u2264 {max_p})\",\n", + " fontsize=14,\n", + " fontweight=\"bold\",\n", + " )\n", + " plt.tight_layout()\n", + " plt.show()" + ], + "execution_count": null, + "outputs": [], + "id": "53ed6f4f" + }, + { + "cell_type": "code", + "metadata": {}, + "source": [], + "execution_count": null, + "outputs": [], + "id": "3f30eb24" + } + ], + "metadata": { + "kernelspec": { + "display_name": "gagf", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} \ No newline at end of file diff --git a/notebooks/template_bar.pdf b/notebooks/template_bar.pdf new file mode 100644 index 0000000000000000000000000000000000000000..63f21bfef5b0e7b207514e865c6c751850cb81f5 GIT binary patch literal 9599 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 literal 0 HcmV?d00001 diff --git a/notebooks/template_fft_bar.pdf b/notebooks/template_fft_bar.pdf new file mode 100644 index 0000000000000000000000000000000000000000..808eaf63c097394b1381482cb68fdebcdd95297c GIT binary patch literal 13204 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 literal 0 HcmV?d00001 diff --git a/notebooks/znz_znz.ipynb b/notebooks/znz_znz.ipynb index 79d0b9b..60c23f7 100644 --- a/notebooks/znz_znz.ipynb +++ b/notebooks/znz_znz.ipynb @@ -2,34 +2,16 @@ "cells": [ { "cell_type": "markdown", - "id": "51d11caf-0971-4324-b63b-819b714a9c3c", "metadata": {}, "source": [ "# Learning Z/nZ x Z/nZ group actions\n", "This notebook is adapted from the `modular arithmetic` notebook, replacing `Z/nZ` group action with `Z/nZ x Z/nZ` group action " - ] + ], + "id": "51d11caf-0971-4324-b63b-819b714a9c3c" }, { "cell_type": "code", - "execution_count": 1, - "id": "80f249f1-6985-4c73-86cd-04e1adac3e8d", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Git root path: /home/adele/group-agf\n", - "\n", - "Working directory: /home/adele/group-agf/gagf\n", - "Directory added to path: /home/adele/group-agf\n", - "Directory added to path: /home/adele/group-agf/gagf/group_learning\n", - "Directory added to path: /home/adele/group-agf/gagf/group_learning/saved_datasets\n", - "Directory added to path: /home/adele/group-agf/gagf/notebooks\n", - "Directory added to path: /home/adele/group-agf/gagf/notebooks/saved_models\n" - ] - } - ], "source": [ "import numpy as np\n", "import random\n", @@ -56,38 +38,41 @@ "import group_agf.binary_action_learning.power as power\n", "import group_agf.binary_action_learning.train as train\n", "import group_agf.binary_action_learning.plot as plot\n" - ] + ], + "execution_count": null, + "outputs": [], + "id": "80f249f1-6985-4c73-86cd-04e1adac3e8d" }, { "cell_type": "markdown", - "id": "da0f43df", "metadata": {}, "source": [ "# Define Dataset and Visualize" - ] + ], + "id": "da0f43df" }, { "cell_type": "code", - "execution_count": 2, - "id": "f5dba48b", "metadata": {}, - "outputs": [], "source": [ "from group_agf.binary_action_learning.default_config import verbose_interval\n", + "import os\n", "\n", + "# TEST_MODE: Set to reduce epochs for automated testing\n", + "TEST_MODE = os.environ.get(\"NOTEBOOK_TEST_MODE\", \"0\") == \"1\"\n", "\n", - "p = 5\n", + "p = 3 if TEST_MODE else 5 # Reduced in test mode\n", "mnist_digit = 4\n", - "dataset_fraction = 0.2\n", + "dataset_fraction = 0.1 if TEST_MODE else 0.2 # Reduced in test mode\n", "template_type = 'mnist'\n", "seed = 47\n", - "batch_size = 128\n", - "hidden_size = 128\n", + "batch_size = 32 if TEST_MODE else 128 # Reduced in test mode\n", + "hidden_size = 32 if TEST_MODE else 128 # Reduced in test mode\n", "lr = 0.001\n", "mom = 0.9\n", "init_scale = 1e-2\n", - "epochs = 1000\n", - "verbose_interval = 100\n", + "epochs = 2 if TEST_MODE else 1000\n", + "verbose_interval = max(1, epochs // 10)\n", "\n", "model_save_path = (\n", " f\"/tmp/adele/model_\"\n", @@ -97,47 +82,27 @@ " f\"type{template_type}_\"\n", " f\"seed{seed}.pkl\"\n", ")" - ] + ], + "execution_count": null, + "outputs": [], + "id": "f5dba48b" }, { "cell_type": "code", - "execution_count": null, - "id": "615fe334", "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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VkhISMDSpUtx584ddOrUCQcPHsSaNWvQq1cvdOnSxaxtc3V1RXp6OhISEhAVFYUffvgB27dvx8cff6z6w/fiiy+iS5cu+Ne//oULFy6gVatW+PHHH7Ft2zaMHDlSbeIQY02fPh27d+9GVFQUhg4diqZNm+LWrVs4cuQIdu3ahVu3bpm8z8jISGzcuBHJyclo164dPD098eKLL6Jbt24ICgrCU089hcDAQJw8eRILFixAjx491B69adKkCTp16mRwQpF69eqhefPm2LVrF9588021dXv27MGePXsAPPyDWFhYiClTpgAAnnnmGTzzzDOqugqFQuN4s2bNwksvvYRu3bqhf//+OH78OBYsWIAhQ4ZoXJHatWsXhBDo2bOnyd8rki/miSbmiXR5MmjQIKxZswbnz59X3d1j6nkY244LFy4gPDwcCQkJWL16tar822+/xe+//w4AKCkpwR9//KH6Prz00ktqj94yF43HLNHELGGWVMV5VPbnYcr2hw8fxq1btyTPROaJJuYJ86QqzsMa8mTChAmYOHEidu/ejc6dO+s8D1dXV3Tr1g27du3CpEmTVOUdO3ZUq1erVi3VANHx48fRsGFDLFu2TJUlxcXF2LJlCzIzM1VZcubMGXh4eODq1au4efMm3N3d8euvv+LXX39VO4fHz2P+/Pk626ut/cySh5gl/2CWmL59VWUJ8HBiYQBo164devXqpbbOWs/j4sWLeOmll1QXcTZv3qy2XcuWLdV+L8p/5uWv3QGAqVOnokOHDujUqROGDRuGK1eu4NNPP0W3bt0QFxentr8K9xWFlfvvf/8rhg4dKsLCwoSzs7Pw8vISTz31lJg/f7548OCBql5JSYmYOHGiCA8PF9WqVROhoaEiJSVFrY4QQtStW1f06NFD4zgAxIgRI9TKzp8/LwCIWbNmqcoSEhKEh4eHOHfunOjWrZtwd3cXgYGBYvz48aKsrExt+7t374r3339fhISEiGrVqomGDRuKWbNmCaVSafDY5W1NSEhQK8vJyREjRowQoaGholq1aiIoKEh07dpVLF26VFVn9+7dAoDYvHmz1vNZtWqVqqygoEC89tprwtfXVwAQdevWFUIIsWTJEvHMM8+IGjVqCBcXF1G/fn3x0Ucfiby8PI22d+rUSaPt2syZM0d4enqKe/fuqZWPHz9eANC6jB8/XlXv7t27AoDo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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], "source": [ "template = datasets.choose_template(p, template_type, mnist_digit)\n", "group = 'cnxcn'\n", "\n", "top_frequency_plot = plot.plot_top_template_components(group, template, p)" - ] + ], + "execution_count": null, + "outputs": [], + "id": "615fe334" }, { "cell_type": "code", - "execution_count": 4, - "id": "a28838b7", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "X_tensor shape: torch.Size([125, 50]), Y_tensor shape: torch.Size([125, 25])\n", - "GPU is available. Using CUDA.\n" - ] - } - ], "source": [ "X, Y, translations = datasets.load_modular_addition_dataset_2d(p, template, fraction=dataset_fraction, random_state=seed, template_type=template_type)\n", "\n", @@ -145,40 +110,22 @@ "\n", "dataset = TensorDataset(X, Y)\n", "dataloader = DataLoader(dataset, batch_size=batch_size, shuffle=False)" - ] + ], + "execution_count": null, + "outputs": [], + "id": "a28838b7" }, { "cell_type": "markdown", - "id": "111a2530", "metadata": {}, "source": [ "# Define Model and Train" - ] + ], + "id": "111a2530" }, { "cell_type": "code", - "execution_count": 5, - "id": "00b56ec1", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Epoch 100/1000, Loss: 0.0208, Accuracy: 95.20%\n", - "Epoch 200/1000, Loss: 0.0079, Accuracy: 94.40%\n", - "Epoch 300/1000, Loss: 0.0034, Accuracy: 93.60%\n", - "Epoch 400/1000, Loss: 0.0013, Accuracy: 96.00%\n", - "Epoch 500/1000, Loss: 0.0005, Accuracy: 96.00%\n", - "Epoch 600/1000, Loss: 0.0002, Accuracy: 100.00%\n", - "Epoch 700/1000, Loss: 0.0001, Accuracy: 100.00%\n", - "Epoch 800/1000, Loss: 0.0000, Accuracy: 100.00%\n", - "Epoch 900/1000, Loss: 0.0000, Accuracy: 100.00%\n", - "Epoch 1000/1000, Loss: 0.0000, Accuracy: 100.00%\n", - "Training history saved to /tmp/adele/model_p5_digit4_frac0.2_typemnist_seed47.pkl. You can reload it later with pickle.load(open(/tmp/adele/model_p5_digit4_frac0.2_typemnist_seed47.pkl, 'rb')).\n" - ] - } - ], "source": [ "np.random.seed(seed)\n", "torch.manual_seed(seed)\n", @@ -198,158 +145,71 @@ " verbose_interval=verbose_interval,\n", " model_save_path=model_save_path\n", ")" - ] + ], + "execution_count": null, + "outputs": [], + "id": "00b56ec1" }, { "cell_type": "markdown", - "id": "e3b19dcc", "metadata": {}, "source": [ "# Plot loss, power, and model output" - ] + ], + "id": "e3b19dcc" }, { "cell_type": "code", - "execution_count": 6, - "id": "5989bcd9", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[[7.88860905e-33 7.33358700e-01 7.05039577e-03]\n", - " [8.12947267e-01 4.61487568e-01 3.90681279e-02]\n", - " [6.18294264e-02 5.41821331e-02 2.70363545e-02]\n", - " [0.00000000e+00 3.39143925e-02 2.07441338e-02]\n", - " [0.00000000e+00 1.20469910e-01 4.20715659e-02]]\n", - "Plotting alpha value 0: 0.09656639897639972\n", - "Plotting alpha value 1: 0.06404850829810516\n", - "Plotting alpha value 2: 0.03471416030083618\n", - "Plotting alpha value 3: 0.01625465758805998\n", - "Plotting alpha value 4: 0.011435861199303197\n", - "Plotting alpha value 5: 0.00896268414414812\n", - "Plotting alpha value 6: 0.006795398818855064\n", - "Plotting alpha value 7: 0.005112536181609164\n", - "Plotting alpha value 8: 0.0035498110647676803\n", - "Plotting alpha value 9: 0.0021932353627725897\n", - "Plotting alpha value 10: 0.0011117811835692204\n", - "Plotting alpha value 11: 0.000282015830801134\n" - ] - }, - { - "data": { - "image/png": "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AGiBNmzYoMcee0w33nij2rdvr6ioKMXGxqp379768Y9/rMOHD1/T87LRHgAAANACjR07VpmZmQoLC1N6erpSU1NVVFSkkydPqrq6WhEREXr55Zf10EMP1et5KTAAAACAFuiVV15RWlqabr75ZkVHRzv7s7Oz9fjjj+vNN99UdHS0Dh8+rPbt25t+XgoMAAAAAAaXLl1Senq6Lly4oL///e+aPXu26VjmYAAAAAAwiIqKUteuXSVJpaWl9YqlwAAAAGgh7Ha7vvjiCz3//PP60Y9+pKFDhyoiIkIWi0UWi0WjRo3y+WueOHFCK1as0PTp03X99dcrMTFR4eHhSkpK0oABAzRr1ixt2bLF568bDBrz911ZWalXXnlF48ePV6dOnRQVFaX09HSNGDFCzzzzjAoKChqUe0FBgQ4ePChJGjZsWL1iGSIFAADQArz11luaNm2aysrKPJ4zcuRIbd682Sevt3fvXs2ePVs7duwwdf6oUaP08ssvq2PHjj55/UBrzN/3wYMHNWXKFO3bt8/jOW3atNGLL76o8ePH1+u58/PztWvXLv3qV7/S3r17NXXqVK1atapezxFWr7MBAADQJF24cKHOD7u+dujQIZfiomfPnrruuuuUnJysCxcuaNu2bTpz5owkafPmzbrxxhv18ccfO4fmNGWN9fs+c+aMxowZo5ycHEmSxWLRrbfeqm7duik/P18bN25UeXm5zp07p7vvvlvvvvuuMjIy6nzOt956S/fcc4+hr0uXLlq2bJlmzJhR7xwpMAAAAFqQ1NRUDRs2zPnz3nvv6bnnnmu01+vevbt++MMfavr06WrXrp3hWE1NjV566SU9/vjjKisrU05OjqZNm6Zt27bJYrE0Wk7+5Ovf99SpU53FRadOnbR27Vpdf/31zuMFBQV66KGHlJmZqaqqKj3wwAM6duyYWrVq5fE5W7durZtuukk1NTXKycnRmTNndOLECa1evVq33nqrevfuXa8cKTAAAABagDvvvFMnT550GYK0ffv2Rnm99PR0vfjii/rOd76j0NBQt+eEhIToBz/4gRITE3XvvfdKkj777DO9//77uuOOOxr0+qWlpYqNjb2mWJvNJqvV2qDXb4zf9zvvvKOPP/5YkhQREaG3335b/fv3N5yTnJystWvXasCAATp+/LgKCwu1aNEi/e53v/P4vLfccou2bt3qbJ89e1a//vWv9cILL+hb3/qWvvjiC3Xq1Ml0nkzyBgAAaAHS0tL8Or9h5MiR+v73v++xuLjaPffco+HDhzvbGzZsaNBrf/LJJ+rSpcs1TR7/4IMP1LVr1wYXXo3x+/7rX//qfPy9733Ppbi4IjY2VgsXLnS2ly1bpurqatOvk56erueff1633367iouL9dvf/rZeeVJgAAAAIOBuuukm5+MTJ05c8/McOHBA48ePV35+viZMmGD4Zt6bTZs2afLkycrPz9edd96pw4cPX3Mevmaz2ZSZmelsP/zww3Wef9999znvwhQWFuqjjz6q92veddddkqRdu3bVK44CAwAAAAF39ZwLu91+zc/TvXt33XrrrZIuD5MaN26ctm3b5jVu8+bNuuuuu1ReXi5JGj16dFBNNt+2bZsqKiokXb5D4W3p2KioKN14443O9qZNm+r9mlfuetT3fw8KDAAAAATcl19+6XzcoUOHa36e8PBwvfbaa7rzzjslXf7mf9y4cXUOefr44481ceJE56pPEydO1D//+U+FhQXPdOUDBw44H/fv399UboMHD3Ybb9brr78uSRo0aFC94igwAAAAEFCnTp0yfMM+duzYBj1fZGSk3nzzTefzFBcX64477tDOnTtdzv3kk080fvx4527V48aN02uvvabw8PAG5eBrhw4dcj42O+H66jkgVzbNu2LXrl369a9/bXjeK06dOqWpU6dq69atCg0N1RNPPFGvXCkwAAAAEFBz5sxxDsPp2LGjc+x/Q0RFRWnt2rUaOXKkJOnixYu6/fbbtWfPHuc5n376qcaNGyebzSZJuu222/TGG28oMjKywa/va+fPn3c+Tk1NNRWTlpbmfFxYWGg4ZrPZ9Nvf/la9e/dWcnKyBg8erBtuuEFdu3ZV586dtWbNGsXGxmrVqlX1voMRPPd9AAAA0OK8/PLLzqE4kvT000/77AN+TEyMNmzYoDvuuEOffPKJLly4oLFjx2rTpk2qrKzUnXfeqZKSEkmX51ysXbtWUVFRPnltX7tSBElSdHS0qZirz7s6XpKuv/56/fnPf9bmzZv15Zdf6vjx4yotLVV8fLy+9a1vaezYsZo1a5bat29f71wpMAAAABAQu3bt0uzZs53tKVOmaOrUqT59jdjYWP373//W7bffrs8++0xFRUUaO3as7Ha7iouLJV3eB+Ltt982/cE9EC5d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NacrP0eOHDH1+wPQPDHJGwDQYqxdu1ZPPvmkJKldu3a6+eabZbVadfjwYX3yySeqqalRUVGR7r//fr399tu64447PD7XM888o7lz5zrbkZGRGjlypDp27KiioiJ9+OGHKiwslN1u1x//+EedOnVKr732miwWi9vns9vteuCBB/Tmm286+yIiInTjjTeqc+fOCg8PV25urnbv3q2zZ8+qpqZGlZWVdb7fr776Sr/85S9ls9nUpk0b3XLLLWrdurWys7O1adMmlZeXy263a/bs2erfv7/bVbhKSko0duxYnT59WpIUEhKiQYMGqU+fPrJarSorK1N2drY+//xzFRQU1JkPgBYi0BUOAABXa8w7GBEREY6QkBDHs88+67Db7Ybz9u/f7+jXr5/z3LS0NEdhYaHb5/zkk08coaGhznPHjRvnyM3NNZxz6dIlx9y5cw3f7D/77LMe8/z5z39uOPexxx5zFBQUuD13+/btju9+97uOr776yuXY1b+/yMhIR2hoqOPZZ591VFVVGc47deqU47rrrnOeO3r0aLev9cc//tF5Tt++fR0HDx50e15NTY1jx44djh/96EeOU6dOeXyfAJo/i8PhcPi3pAEAwLNRo0Zpy5Ytkuq/D8bChQuVlJRk6OvcubNOnjzpbP/+97/Xz3/+c7fxubm56t+/v/Ob+P/+7//WwoULXc4bOXKkPvroI0nSiBEj9OGHHyoiIsLtcz7xxBP605/+JEmKj4/XmTNnFBcXZzjn8OHD6tOnj2pqaiRJTz/9tH7xi1+Yecsurv79SdKyZcs0c+ZMt+d+9dVXGjBggBwOhywWi7Kzs5Wenm445/7779frr78uSfrggw80duzYa8oLQAsS4AIHAACDq7+Br+9PVlaWy/NdfQejS5cuLt/k1/anP/3JeX7btm0dNTU1huNff/214TX37NlT5/PZbDZHcnKy8/ylS5e6nDN79mzn8RtuuMHlNevj6t9f//79vZ4/fPhw5/nr1q1zOX7bbbc5j+/bt++a8wLQcrCKFACgxZg6darCwuqefjh9+nSFhoZKknJycnTo0CHD8Q8//ND5eODAgRo0aFCdzxcbG6spU6a4jb/i3XffdT5+7LHHPM7TqK8HHnjA6zlX5+9uZaoOHTo4Hy9dutQneQFo3igwAABBa/78+XI4HKZ/OnfuXOfz3XjjjV5fMzExUb169XK29+7dazh+dXvEiBGm3sdNN93kfLxnzx7Dsby8PMMH+9GjR5t6TjP69+/v9ZzWrVs7HxcXF7scf/DBB52Ply5dquHDh+uvf/2rjh496pskATQ7FBgAgBajY8eO9T4vPz/fcOzqdqdOnUw939WFT+2VlvLy8pyPIyMj1bZtW1PPaUZCQoLXc8LDw52Pq6qqXI7fcccdevzxx53tnTt36rHHHlOPHj2Ulpam+++/X3/5y1905swZ3yQNoMmjwAAAtBgxMTGmzouNjXU+LikpMRyz2Wxuz7vW57u6bbVaTT2fWb4aavWnP/1Jb7zxhsuE+7y8PL3++ut6/PHH1bFjR91///06deqUT14TQNNFgQEAaDHKyspMnVdaWup8XHvFp6uLgKvPu9bnu7p9dfESbO655x5t375dJ0+e1Msvv6xZs2apb9++zuMOh0Ovv/66Bg8erMOHDwcwUwCBRoEBAGgxzH67fmVTOUlKTk42HEtJSan38109x6L286WmpjofV1RU6OzZs6aeM1A6duyo7373u1q6dKn279+vU6dOacGCBc67Q+fPn9ecOXMCnCWAQKLAAAC0GJ999pnXcy5cuKCDBw8624MHDzYcv3rVpW3btpl63avPq/18qamphjkamzZtMvWcwaJDhw6aN2+eli9f7ux7//33VVFREcCsAAQSBQYAoMVYs2aN7HZ7neesWrXKeU56erphRSlJysjIcD7eu3evvvjiizqfr6ysTK+++qrb+CvGjRvnfPzXv/5Vjia4B+6kSZOcj6uqqlRYWBjAbAAEEgUGAKDFOHbsmP7whz94PJ6Xl2fYufuRRx5xmSjdu3dv3Xrrrc72Y4895nb1pSt+/etf69y5c5Iu7+Q9depUl3OefPJJhYRc/if5008/1f/8z/+Ye0N+UHvVK0+uHlYWEhJiWP4WQMtCgQEAaDEiIiL085//XM8995xqamoMxw4cOKDbbrvNWQykpqbqpz/9qdvnefrpp52b8X388ce67777nHFXVFZW6pe//KWhoJk/f77blaJ69uypn/3sZ872L3/5Sz3++OMe7wLs2LFD3//+97V//34T77phbrzxRk2dOlX//ve/VVlZ6facw4cP63vf+56zPWbMGEVERDR6bgCCU93bmQIAEEDvvPOO6W/QpcvL0C5atMjj8UWLFunJJ5/Uk08+qWeeeUY333yzrFarDh8+rK1btzqLjrCwML3wwgtKSkpy+zwjRozQ73//e82dO1eS9Pbbb6tjx44aPXq0OnTooKKiIn344Yc6f/68M+aee+7xWLBI0u9+9zsdPHhQb7/9tiTpL3/5i5YvX64bb7xRXbp0UVhYmHJzc7V7927nRPAnn3zS9O/mWlVVVWnNmjVas2aNoqOjNWDAAHXt2lXx8fEqKirS8ePHtWvXLuf50dHReuaZZxo9LwDBiwIDABC0du7cqZ07d5o+PyEhoc4CY/LkyYqMjNQTTzyhM2fOGOZGXNGqVSu98MILGj9+fJ2v9V//9V9KTEzUnDlzVFxcrIqKCr377rsu54WGhuqxxx7Ts88+W+e+FGFhYXrrrbf03//933r22WdVUVGhyspKbdmyRVu2bHH7vFFRUXXm6AtXL6NbXl6u7du3a/v27W7P7dKli1auXKkBAwY0el4AghcFBgCgRZk9e7ZuueUWLV26VBs3bnTuQN25c2fdddddevzxx5Wenm7quR555BFNnjxZK1as0L///W8dPnxYhYWFiouLU4cOHTR27Fj94Ac/MOwXUZeQkBD99re/1ezZs/XSSy/pgw8+0NGjR1VQUKCwsDC1adNG/fr105gxY/Ttb39b7dq1u+bfg1n79u3TZ599pg8//FA7duzQoUOHlJOTo7KyMsXExCgtLU0DBw7UpEmT9OCDDyoyMrLRcwIQ3CyOprhUBQAAJnXu3FknT56UJGVlZRmWhAUA+B6TvAEAAAD4DAUGAAAAAJ+hwAAAAADgMxQYAAAAAHyGAgMAAACAz1BgAAAAAPAZlqkFAAAA4DPcwQAAAADgMxQYAAAAAHyGAgMAAACAz1BgAAAAAPAZCgwAAAAAPkOBAQAAAMBnKDAAAAAA+AwFBgAAAACf+f8ByAaVMEAwq68AAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], "source": [ "loss_plot = plot.plot_loss_curve(loss_history, template)" - ] + ], + "execution_count": null, + "outputs": [], + "id": "5989bcd9" }, { "cell_type": "code", - "execution_count": 7, - "id": "b1965705", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "top_5_power_idx: [ 3 1 4 13 6]\n", - "Powers over time shape: (424, 15)\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAJOCAYAAACqS2TfAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAA3bxJREFUeJzs3Xd8VfX9P/DXXcnNHpDFSkJkyR5GwLKMBQVqGUoAAUHB1UqtUG2xCoLoD0GLgrZWvmVIcRUKKqisMJRdRDbEkAQChOybndx7z/n9cZObe869SW6SO5Kb1/PxuHDP+pz3XSf3fT9LIYqiCCIiIiIiIiJyOKW7AyAiIiIiIiLyVEy6iYiIiIiIiJyESTcRERERERGRkzDpJiIiIiIiInISJt1ERERERERETsKkm4iIiIiIiMhJ1O4OgFoeQRCQm5srWdemTRsolfwNh4iIiIiIyBKTbmqw3NxchIeHS9ZlZWUhLCzMTRERERERERE1T6yaJCIiIiIiInISJt1ERERERERETsKkm4iIiIiIiMhJmHQTEREREREROQmTbiIiIiIiIiInYdJNRERERERE5CRMuomIiIiIiIichEk3ERERERERkZMw6SYiIiIiIiJyEibdRERERERERE7CpJuIiIiIiIjISZh0ExERERERETkJk24iIiIiIiIiJ2HSTUREREREROQkTLqJiIiIiIiInIRJNxEREREREZGTMOkmIiIiIiIichIm3UREREREREROwqSbiIiIiIiIyEmYdBMRERERERE5idrdARARETU3FdeuofzCBXh17Aiffv3cHQ4RERG1YEy6iYiIqoiCgNuLXoFu+3bzuvCXXkKbJ+a4LygiIiJq0di8nIiIqErRd99JEm4AyFq5EiXHjrsnICIiImrxmHQTEREBEEUROR/909YGZL/3nusDIiIiIo/ApJuIiAhA2alTqLhyxfa2n35C5fXrLo6IiIiIPAGTbiIiIgDFP/5Y53bdV1+7KBIiIiLyJEy6iYiIAJTW02+7+NAhF0VCREREnoRJNxERtXpCSQnKzp+XrAt98gnJcvmFCzAWF7syLCIiIvIATLqJiKjVK/3pDGAw1KxQq9HmyScBjaZmndGIstOnXR4bERERtWxMuomIqNUrv3RRsqzteTfUoaHw6dtHsr7kOKcOIyIiooZh0k1ERK1exdVkybK2ew8AgO8990jWl/981mUxERERkWdg0k1ERK1exdWrkmXvrl0AAD59pDXd5RcvQjQaXRYXERERtXxMuomIqFUT9XpUXLsmWaft2tX0f8+ekvVCaSkq09JcFRoRERF5ACbdRETUqlWmpQF6vWSdd1XSrQkPhzoiQrKt/MIFV4VGREREHoBJNxERtWoVv/wiWVZHREAVFGReltd2M+kmIiKihmDSTURErVpl+nXJsndcZ8mytkcPyXJFsnTQNSIiIqK6MOkmIqJWrfKGNOnWdOwkWa5ual6tnEk3ERERNQCTbiIiatX0NzIky14dO0iWvbt0kSwbs3NgyM93elxERETkGZh0ExFRq1Z544ZkWV7T7dWpIxQajWQdm5gTERGRvZh0ExFRqyVUVsKQmSlZ59Wpo2RZoVbDKy5Oso5JNxEREdmLSTcREbVa+oybgChK1mk6drTaT97EnEk3ERER2YtJNxERtVp62SBqqpAQqPz9rfazTrp/sdqHiIiIyBYm3URE1GpVZkgHUbNVyw0A3l3ukixXJCdDlNWQExEREdnCpJuIiFotQ+YdybKmXTub+3l3kU4bJhQWwpCV7bS4iIiIyHMw6SYiolZLLxtETRMRYXM/TbsoKH19JevYr5uIiIjswaSbiIhaLfnI5erISJv7KZRKeNloYk5ERERUHybdRETUaunvyJqXR9lOugHAO06WdKdwMDUiIiKqH5NuIiJqlURRtK7prqV5OQB43yVNuit/SXFKXERERORZmHQTEVGrZMzPh1hZKVmniYqqdX/vu+IkyxUpKRzBnIiIiOrFpJuIiFoleS03lEqo27atdX/vOGnSLRQVwZCV5YzQiIiIyIMw6SYiolZJPnK5OiwMCrW61v3V7dpZj2D+C/t1ExERUd2YdBMRUatkNV1YLSOXV1MoFPCS1XZXprBfNxEREdWNSTcREbVK8qbh6vDweo+RNzGv4GBqREREVA8m3URE1CoZcnIky+qwsHqPsRpMjc3LiYiIqB5MuomIqFUyZsuS7vD6k26vu+RzdXMEcyIiIqobk24iImqVDNnZkuW6Ri6vJp+rW9DpYJTVmBMRERFZYtJNREStkrx5ucqOpFvTrh0UPj6SdRUcTI2IiIjqUPvcKERERB5KFAQYcnMl6+zp061QKuHduTPKL1wwr6tI/gV+gwc7PEYi8nx6vR5Go9HdYRA1WyqVChqNxt1hNBmTbiIianWM+fmA7Iuuum39STdgGkxNknSncDA1ImqYwsJC5OTkoKKiwt2hEDV73t7eaNu2LQIDA90dSqMx6SYiolZH3rQcCgXUbULtOtYrTtqvu9JB04aJlZUoPXMGxrx8eMVEw7tbNygUCoeUTUTNR2FhIW7evAl/f3+0bdsWGo2Gn3UiG0RRhF6vh06nw82bNwGgxSbeTLqJiKjVMchGLleFhkKhtu9Poq1pw0RRbNKXZt3Onbjz//6fZER1r7g4hM2fj8AxoxtdLhE1Pzk5OfD390eHDh2YbBPVw8fHBwEBAcjIyEBOTk6LTbo5kBoREbU6hpyGj1xeTT6CubGgAIas7Fr2rl/uv9bj1oKFVlOYVaak4OYf/oCbCxbCWFzS6PKJqPnQ6/WoqKhAUFAQE24iOykUCgQFBaGiogJ6vd7d4TQKk24iImp1rKYLs2MQtWqaDh2g9POTrCu/dLFRcRT/+COy3n67zn0Kd+5E2pQpHCWdyANUD5rmCQNDEblS9WempQ48yKSbiIhaHWOObOTyNm3sPlahVMK7e3fJuopLlxoeQ3EJbr/6qtV6ZVCQ1brKa9eQ9ugUFH77bYPPQ0TND2u5iRqmpX9m2KebiIhaHWNBvmRZFWrfIGrVtD16oOx//zMvl19seNKds3YtDLduS9aF/fGPaDNvLgp37kLmsmUQCgvN24TSUtz844soO3MG4QsXQmGjpkzU61F+8SLKr16FMTcPQkkJFFpvqPz9oWrbFuqwMPMNAMSyMhiLi2HMz4cxLw+GvDwY8wtgzMuDUaeDKEhrFKy/9MiW5dvrWFZoNFD6+EDp6wOFjw+UPr7SZV9fKH39TP/7+Zr+9/Gxu+89ERFRc8G/XERE1OoY8uRJd0iDjtfefbdkubyBNd36rCzkf/qpZJ1vfDzazJsLhVKJoN+Mh0//fsiYPx8VsoQ+b+MmlP50Bm3mzYV33F3Q37qF8vPnUHriJErPnIFYWtqgWFoahbc3lH5VybjlrToxr9qmkGz3k2wz71t1YyJPRETOxL8yRETU6hjzpUm3OqShSXcPybI+IwPGwkKo7BxVNe///gXRcn5etRpRy5ZCoazp9eXVoQNitmxB5rJl0G3dJjm+/OxZ3Hx+foNi9hRiRQWMFRUw5uU5rEyFRgOFl5fp5u1ddd+0TunlXbPNywsKby8ovbwAjQYKlRoKlQpQq6BQqqBQqwDLdSp11bpa7itVptp/RVUrAqUSVQumRgQKhWl99Q0KQGljnWUZ5pvSRkME0wplQAC0si4SRPaKiYlBenp6nfv87W9/wwsvvOCagIhaACbdRETU6sgTtoY2L/eOi4NCo4FoMYpq+aXL8Ls3vv5zFxQg//PPJeuCJ06AV3S01b5KrRbtli+HT79+uLPsDYiVlQ2Kk+wj6vWm17KkdYwS7zNoIGI2b3Z3GNTC3XfffbhLNptDtbtlrYGIWjsm3eQQeVs+RdDkyfDq0N68zqjToWDbfwEA3p1j4T9ihOQY3Tc7zSMIt5kzW7Kt/NIllBw7DgDwHz4M3nE18+IKlZXI//cWAICmXTurOWyL9u5F5Y0MAEDI1EQofXzM2ypSU1F84CAAwPeee+DTq6f0cWzaBNEoQN0mFEEPPyzZVvzDj6hITgYABE34raRmTH/7Ngq/+x4A4NO7F3wHDZIcm//5FxBKS6H09UVI4hTJttJTp1B27jwAIPDBMdBERZm3GfLzodu+AwDg3aUL/H91n+RY3VdfwZCbB4VKidBZsyTbys5fQOnJkwAA/5Ej4B0ba94mlJUh/zPTl36vjh0Q8MADkmMLv98N/a1bAICQx6abanWqVKSkoPjQYQCA3+B7oe0hrfHLXb8BgGk06KDx4yTbig8eRMW1VABA8KSJUFkMGFWZcRNFe/YAAHz69YVv//6SY/M//RRCeQVUgQEInjxZsq3k+AmUXzSNHh04diw0EeHmbYacHOi+/gYAoO3eDX5DhkiOLfjvdhgLCqDQaBA64zHJtrKzZ1H6v9MAgICE++HVqZN5m7G4BAVffgkA8IqORsD9oyTHFn77LfSZdwAAoTNnSJqvll+5ipIjRwAAfkOHQtutq3mbaDAg7xPTl2FNZAQCH3pIUm7R/iRUVtUwBD/6KFT+NaNoV16/jqJ9+wEAvgMHwKdPH8mxeZv/DVGvhyo4GMETJ0i2lRw9ivLLVwAAQb8ZL5lCS38nC4W7dgEwNauWJ5YFW7fCWFgEpdYbIdOmSbaV/vQTys78DAAI+PWvm801Qj56uSrY9HluyDXCu0sX8/sOMI0yXr1c1zVCf+M6xPJyi5OroG7fAbnrN9R6jRCKSxA8bRqK9uy26gdui1dcHDQd2kMo0MFYWgqxogIKpRKG7GwINhJLhVYLdZs2UIWGQhUSDFVgEPSZmVCoVFAFBsArJgYQRfP+FalpEIqKAADed98NhUoJVG02FhRAn5EBURShaRcFdWjVIHVVx5dduACIIhReXtCEh0MoL4dQVgqxtAz6rCwIxcWmBFihgFhWxh8anMCQeQdlZ8/yGgHXf48oun4dxi53QTQYJNuEykrzGA4KHx+oZDMkGPLyAEEAlEqoZT8SGktKIJaVAQCUgYGSv9miwQBjQYGpXG8tVAH+0nILCoCqWORTJwplZebrhTIgAEpvb8n2OYmJeHzaNCi8vKxa+Rh1OhhyTNMgqkJDJa14hPJyCMXFpnL9/CTPLwDzcVCroQ4OlpZbVGRuJaQKDpb8bZU8h76+UPn6SsvNzTVdh1Qqq9ZNxuISiOVVz2FQEJQWY2aIej2MOp2pXK0WKn/Zc5ifDxiNgEJhNSinUFoKoarLj/w5FI1Gc6ur2p7D6h92VW3aSMbUkDyH/v5QarU15YoijLmmwUIVGo3kuxYAGAsLzddVVUiIqWVOdbkVFeZre3X3G/ufw2Lz3zZVUJBk3BFBr4dgfg59JN9d6nsOjaWlEEtLYdDrrT439V0jmhMm3eQQQkkJYJR+ECCK5guCYNmMsvqYslLzdjlRrzdvk3/AANRsq7pASraVV9SUa/ElEQBgMNQcq7f+ImcsLgaMAgTZHwAAECstyhUE6TajUFOujS+IQmkdj7WysuZYo7RcCJbl2ngOS8tM21XWExGI+ppyIX8OLV+bcutyxfKy2uOVPIfWcyWay5VdUIGqi3ltr43RotxKG+WWlEAoK5f8cTDHZPEcQjbwk2jxHNp8H5aWQCguhsLiS4qtckWDfIqKmudQrCiHnFBWXsdzaPn+ruM5LLMexVqssCxX+hyKBmPd78OSEoiVlVB4WQ/AZfnaiIL8fVhfuVXvb/k1AKbX0hxvM7lGGIuKrd676uo+3Q24Rnjf3UOSdFempdZMPVbLNUIUBBTt2SvZFjhmDJTe3vVeI1T+/ui07v9Q+r9TKPz6G5T9/LMpmdZooAoJgbZnTwRNnADfQYPMX8rzP/vclJSolAh77jlTaCUlMOTmovzyZZSd+RkKjQZB48fBu0uXmuevtBS5//cvAIBXbKzVD2i6HTtQef0GAKDN009JvuSXX7mCot2mH9D8Rwy3Suyy16w1PeeREQh59FHJtsLdu1Fx5SoA049VquBg02tdWoqKq8nQ7doFUa+H9113watTJ9N1oepLbcnhwxDKygCFwvSDQ9UXNaGkFIacHNMXTb0eMBptXrtaE9Fo5DXCTd8jxNISQBCttgE13wEU8nMCgCBANAryHgPmGK2+P9gs18Y+VeXaKli0LNdmTFXb5e8H+bF1xGSrXHO8yjritVlozTkVtp5jQYAoiFDYfLBCrTGJsO+1gdK6XHufB1vlinY+1rqeQ6hsHG9nTGItMUEQbY8kblGuCNlbyvK1sfU+NFa9v208h9XvM5sx13ONaE6YdJNDKP38AJXs7aRQQFn1a6D811EAppFqZb8Wmg/VaMzbbA1wY96mtf6jptR615Qrvyio1TXHaqyTLJW/P0SjAKWvdbkKL4tyldIkV6FS1pRrI3mr/qVQ/oth9f7mY+XJs9KyXBvPoa8PlP7+1sfB9PjM8cqfQ8vXRmtdrkLrU/trI3kOrb+Ymcv1sX6sSu86XhuVRbk2vvBVv8eUfnU/h1BKk3KFxXNo833o6wexUm/zsUheG7U82a95DhXeWsgpfbR1PIeW7++6nkPrchXeluVKn0OFWlX3+9DPD6KXF5S+1j+IWL42CqX8fVhfub4QjUbb7yWvmsfaXK4Rtn7oUFX/Yt+Aa4T27ruhw1bztsq0dPiPur8qANvXiIqUFKta9pAZj6Ei+RfTYfVcI5Q+WoQ8+ihCHn0UoihCn5WFwp27oFAobLaGsXWNUPr5wcvPD8bCIuhv3jI/bulJm881orqmRh0VZW5t4tO3j1VrGKXW2+7WMOrQEFMtXmkp9DdvonD3HsBggKZ9O3h36QKxosL0Y0dlJUqPn4CxqAgQRfj07gWxstJ00xugv3MHhjt3IAoCNJERUGq1EA1GU1JbUYHKGzcAQTDVYgUFQTQagKrtxrw8CJWVgChCFRwMQKz6di9CrKgw144pvL1Nz6MomrZVf8kURShUKii8vWu2QYRYUWlKMkXR9LmqvtaKoulLvF5vGjyO1wjTNhd/j1D4+tlMzgCL7wC2Ehql0nTFlz/3Vfvb+h5gXa6NfZTKWo9VWJZrMybTdqv3Q9Wxd90zCOk3buBaSgrOnjuH9957D2fOnEF+fj72bt+OEffdBygUyM/Px+rVq7Fjxw6kpKTAaDSic0wMpkyahIWLFsHX8rpYFa/BYMDa997DvzZsQHJyMgICAjDsV7/Cq3/8I07//DPmzp+Pxx9/HBs2bDAfunTlSixbuRKvvvQSlq5YIQtYiUPHjuKBCRMwYvhwHDh4sGZT1XN4KzMT7/7jH/h+3z6kp6dDpVKhe/fumPHoo3h61iyoldLr3ezZs7Fx40ase/99DB86FK//8QXs3b8f+fn56NChA6YmJmLR734Hb8vPqYXTZ89izYcf4odjx3D7zh34+vqiY8eOGD16NJ6bOxcd27TBhi1bMO8Pf8Do0aPx/fff18Rc9boplErcunUL0dHRUKvVyMjIQLBGY9f7xVZirVAqAYVY7/vQ6kjJe8nGsSolFBDrfp8Jts9Z1zWiWRGJGigrK0tE1VeD6ltWVpa7wyIiskvp+fPixW7da2539xQFQWhwOWUXLkjL6dZd1Gdn13lM+tx5kv1TJkxs1LmJqGUqKysTL168KJaVlbk7lEaLjo4WAYjr16+3a7/f//73IgBx0KBB4rRp08QRI0aIhw4dEkVRFC9cuCB27NhRBCBGRUWJDz74oPib3/xGjIiIEAGI/fr1EwsKCiTlGo1GccKECSIA0cvLSxw9erSYmJgoxsTEiFqtVnzuuedEAOLjjz8uOW7x4sUiAHHx4sU2401KShIBiCNGjLDadvDgQTEkJEQEIMbExIgPP/ywOGbMGPO60aNHi5WVlZJjHn/8cRGA+Ic//EEMDAwUo6OjxSlTpogPPPCA6OPjIwIQJ0yYYDOWt99+W1QqlSIAsWvXruKUKVPE3/zmN2KPHj0kz315ebkYFhYmKhQK8cqVKzbLeu2110QA4pw5c2xubyla+meHNd1ERNSqGPMLJMuqkBDbTeUs5acDGScB/wig0xBApYZ3165Q+vqaayQBU//UwF//2mYRFampKDl8WLIu9LHp9Z+biKgF+/vf/44dO3bgYVkf97KyMjz88MO4ceMG/vrXv+LVV1+FV1VLidLSUsydOxeffvop/vjHP+Jf//qXpLzt27cjIiICSUlJ6FE1tozBYMD8+fPx4YcfOjT+zMxMTJo0CQUFBfjwww/x9NNPQ1lV05ubm4spU6Zg9+7deOutt/Daa69ZHf/ee+/hlVdeweuvvw5VVRe58+fPY/Dgwdi+fTuOHj2KIRbjzXz11Vd46aWXoNVqsXHjRkyZIh3n4+LFi+a/G97e3njqqaewfPlyfPDBB3jvvfck++r1evzzn/8EAPz+97933JNCDVZ72wIiIiIPZMyXjlyuDgmu+4Drx4C/3wdsfRLYOB74+xCgOAsKtRo+/fpKdq0evNCW/C3SebmVQUEIHDeulr2JiJq3OXPmmJqgy24jR46U7Pf4449bJdwAsHHjRqSkpGD8+PFYtmyZOeEGAF9fX/zzn/9EeHg4PvnkE+RbTPO4evVqAMCSJUvMCTcAqNVqvPvuu4iMjHTo41y9ejVyc3Pxu9/9Ds8++6w54QaANm3aYNOmTdBoNFi7dq3NftADBw7EsmXLzAk3APTq1QszZ84EAOzdKx3nY/HixQCA5cuXWyXcgGlkeMvH/dxzz0Gj0WDjxo0okQ2UuXXrVmRmZmLIkCEYMGBAIx49OQqTbiIialXkc3SrQuqYLqysAPhyDlBZVLMu5yqw43emPr4DB0p2Lz161PY5i0ug2yadazv4kclWo/YSEbUU9913Hx5//HGr24MPPijZ75FHHrF5/M6dOwEAiYmJNrf7+/tj0KBBMBgMOFn1g+bNmzfxyy+mMTBmzJhhdYxWq7WZqDZFfXG2b98eXbp0QXZ2NpKrZrmxNH78eJstmqoT55s3b5rXZWZm4syZM1AqlXjyySftiq9du3Z45JFHoNPp8Mknn0i2ffDBBwBYy90csHk5ERG1Kgb5HN2yaU8k/rceKLplvT55N3DlW/jfdx9yqkbjBoCK5F+gv3MHmogIye667dulU3UplQiZNr1R8RMRNQdz587F7Nmz690vJibG5vpr164BAGbOnGmu9a1NdtUAlBkZpqnc2rZtC/9aBtGLtZgi1RGq4xw2bFi9+2ZnZ6Nr166SdZ0sphu1FFg1RVi5xRSS169fBwBERUUhSDbVV13mz5+PTz/9FB988AGeeeYZAMDZs2fxww8/ICIiotYfPsh1mHQTEVGrYtWnO7SOpPvyztq3HfsQ2hnboQwMNM8NC5jmow+xqGkRBQH5//635FD/UaMk8xETEXkqn1pa9AhVU409+OCDiJD9UCkXHR3t8Lhqi6e29Y888gj8/KxH9rfURjbHNABJc3RnGTx4MOLj43HixAkcPHgQI0aMMNdyP/XUU5Km++QeTLqJiKhVMebJ+3TXknQX3QEyTtVeUNphKHKvwm/oUBR9913NYd99L0m6i/fvR2VqquTQ0BmPNTxwIiIP0rFjR1y+fBlPPvmk3TWx7dubfqzMyclBcXGxzdrutLQ0m8dWJ55FRUU2t6enp9caZ3JyMl5++WUMGjTIrjgbq7pW/Pbt29DpdA2u7Z4xYwbWrl2Lvn374t///jfUarW55pvci326iYioVbG7T3fKPphmRaze0QvQBkv3Of8fBI4ZLVlVcvy4eS5u0WhE9nvvS7Z73RUH38GDGxM6EZHHeOihhwAAX3zxhd3HdOjQAZ07dwYAbNmyxWp7RUUFvvzyS5vHVifsly5dsrm9uu+2I+JsrMjISPTt2xeCIEhGbLfHlClTEBUVhe3bt2P58uUoKSnBxIkT0a5dOydFSw3BpJuIiFoVg1XSXUtN960z0uUuo4H+soF7LvwX/sOHQ2HZfNJoRP6nnwEACnftQoVsYJ22zzzLacKIqNV76qmnEB0djS+//BIvv/yyzRrozMxMfPzxx5J1L7zwAgDT6OWXL182rzcajVi4cCFu3bIxDgeA+++/H0qlEt9//z0OHjxoXi+KIt5//31s3brV5nF/+tOfEBwcjHfffRfvvPMOKisrrfZJTU3F5s2b633M9qgevfyVV16xGdPFixdt/nCg0Wjw7LPPwmAwYNWqVQA4gFpzwqSbiIhaFXlNt7q2Pt2Z56TL7foBvSZJ1+Vdg1KXjMCqmhDz6n//G+VXruDO/1shWe/dtSsCx0r3JSJqjfz8/LBz507ExMTg7bffRqdOnTBixAg89thjmDhxInr27Il27drh1VdflRz3u9/9Dr/5zW9w+/Zt9O3bFw8++CCmTZuGLl26YN26dXj22Wdtnq9jx454/vnnIQgCEhISMGrUKEyePBldunTBwoUL8ec//9nmcR06dMCOHTsQEhKChQsXomPHjkhISMCMGTPwm9/8BnfddRc6d+6MtWvX2jy+oSZOnIjly5ejvLwcjzzyCHr06IGpU6fit7/9LXr27ImePXvi+PHjNo99+umn4e3tDQDo06cPhg8f7pCYqOmYdBMRUashCgKMBQWSdTZrukURuHNBui6iN9BuABASI11/YRtCH39cskrQ6ZD62wkw5uZK1of9YT4ULhhUh4ioJejZsyfOnj2Lt99+Gz169MDZs2fx5Zdf4vjx4/Dz88PChQvx3//+V3KMUqnEtm3b8M477+Cuu+7CgQMHsGfPHvTp0wfHjh1DfHx8ref729/+hnfeeQddu3bFkSNHcODAAdx99904duwYxowZU+txw4cPx4ULF/Dqq6+iQ4cOOHnyJL788kucOXMGERERWLx4sVWNfFMsWrQIR44cwbRp01BUVIRt27bhhx9+gEajwUsvvYT777/f5nHh4eHo168fANOPE9R8KERbs7gT1SE7Oxvh4eGSdVlZWQgLC3NTRERE9jHk5yN5yFDJursOJEETGSndMT8deK+PdN0fLwBBHYC9S4Af/lazPqgT8MJZ3FywEIW7dtV6bv+EBHRYu4ZNy4lasfLycqSmpiI2NhZardbd4XikDRs2YM6cOXj88cexYcMGd4fjUlevXkX37t0RFBSEmzdvwtfX190hOUxL/+zw53YiImo15NOFAbXUdMublmuDgcCqKb56ypqY664Dt35CxF/+DJWN6WIAQBPdCVHLljLhJiIip3nttdcgiiKeffZZj0q4PQGTbiIiajWM+dLpwpS+vlBW9X+TyP1FuhzRE6hOmCN7A6Gdpdsv7oA6LAzRG9ZD07GjZJO2Tx9Er18PdWgto6QTERE10ldffYUnn3wSgwcPxueff47IyEi89NJL7g6LZDhPNxERtRpW04XVlggXyOZrDY2tua9QAHf/VtrE/OIO4IEl8O7SBZ2/+RolP/wA/e1MeN8VB9/4ePbjJiIipzh9+jT+9a9/ISAgAA888ADeffddBAcHuzsskmHSTURErYYhT1rTXet0YfmypDs4Rrrc42Fp0p2fCtw5D0T2htLbGwEJCU0PloiIGmz27NmYPXu2u8NwmSVLlmDJkiXuDoPq4dE/vVdWVuKTTz7B2LFjER0dDa1Wi6ioKAwdOhSrVq1CTk6Ow8514MABKBSKRt9qG+ghLS2twWXdddddDntcRESeRN6nW1XbdGH5adLlkGjpcrv+pgHULF3c0aTYiIiIyDN5bNJ9+fJl3HvvvZg1axa+/fZbXL9+HRUVFcjMzMTRo0fxpz/9CT179sSuOkaadaVI+ci5RETkcEZZTbc62EbSLRgB3Q3pOvk0YQoFcPfD0nUXtpumGiMiIiKy4JHNyzMyMpCQkIBbt24BABQKBYYPH464uDhkZ2dj7969KCsrQ1ZWFiZMmIDvvvuu1vnu7NW+ffsGzYe3e/duJCcnAwAiIiLwwAMP1HtMQEAAZs2aVe9+nLqLiMg2Y4EdfbqLbgPGSum64Gjr/e7+LXB0bc1ybjKQfRkI7+GASImIiMhTeGTSPX36dHPCHR0djR07dqBv377m7Tk5OZg6dSr27dsHvV6PRx99FCkpKU0adKBLly5Yu3Zt/TsCMBqN6NChg3n5scceg1pd/0sRGhpq9zmIiMiaIU+WdNvq0y3vz632AfzDrfdrPwgIaAcU3apZd+G/TLqJiIhIwuOal+/atQuHDx8GAHh5eeHrr7+WJNwA0LZtW+zYsQOdO5umfMnLy8Pbb7/tshi///57ZGZmmpcff/xxl52biKg1M+p0kmVVcJD1TgXXpcvBnWqmC7OkVFo3MT/zKSAITYySiIiIPInHJd0ffPCB+f7jjz+O3r1729zPz88PS5cuNS9/9NFHMBgMTo8PADZu3Gi+379/f/Tp08cl5yUiau0EedIdFGy9U9Ft6XJQ+9oL7JMoXdZdB9J/aFxwRERE5JE8KukuLi7Gvn37zMtz5sypc//JkyfD398fgKm2+9ChQ06NDwAKCgrw1VdfmZdZy01E5DpWNd1BgdY7FWVKlwPa1V5gu/5A+N3SdT/9u5HRERG1HjNmzKh1Jp7q1qiuIIoiBg4ciNGjR7vsnC3dlStXoFar8eGHH7o7lBbDo5LuI0eOoKKiAoCpJvuee+6pc3+tVoshQ4aYl/fv3+/U+ADgiy++QHl5OQBAo9Fg+vTpTj8nEREBoiDAWFgoWacKstG8XF7THVDH7BIKBdDvMem6izuAcp3t/YmICAAwbNgwjBs3DgCgUqkwcOBAzJw5EwsXLsSyZctcFsemTZtw+vRpSQtYSydPnsTYsWMRHBwMPz8/DB48GF988YVdZd+8eROrV6/G6NGj0alTJ3h5eSEyMhKTJ0/G8ePHHRJ/U+JrbDndunXDtGnT8Prrr6OoqKipD6FV8KiB1C5dumS+37t3b7sGJxswYAD27NljdbyzWDYtHzt2bINGGjcYDNizZw9OnTqFnJwcaLVatG3bFoMGDUJ8fDy8vb2dETIRkUcQSkqs+lurAu2p6a5nSsc+icDexYBQ1UXJUAac2QIMfrYJ0RIRebbs7Gzs2rUL8+fPx6JFixAREeHyGARBwJIlSzBs2DAMHjzYantSUhLGjBkDrVaLqVOnIiAgAFu3bkViYiJu3LiBBQsW1Fn+mjVrsGLFCsTFxWH06NEICwtDcnIytm/fju3bt2PLli1ITEyss4y6NDW+ppTz0ksvYfPmzXj//ffxyiuvNPoxtBqiB3n22WdFACIAMTEx0a5jPvjgA/Mxd999t1Pju3r1qvlcAMRt27bVe0xqaqrkmNpuISEh4iuvvCIWFRU59TGIoihmZWVZnT8rK8vp5yUiaoqKGzfEi926S26GomLrHd/tJYqLA2tuF7+uv/DPZkiPWd1XFI1Ghz8GImrZysrKxIsXL4plZWXuDsWtTpw4IQIQFy5c6NY4vvnmGxGA+PHHH1tt0+v1YlxcnOjt7S3+9NNP5vUFBQVi165dRS8vLzEtLa3O8rdu3SoeOHDAav2hQ4dEjUYjhoSEiOXl5Y2K3RHxNbWcPn36iNHR0aLRBX/vWvpnx6Oal+fm5prv2/trWWRkTQ1GXl6ew2OytGnTJvP9Nm3amJvUOEJ+fj6WL1+OQYMG4erVq00ur6SkpM4bEVFLI+/PDZUKSj9f6TpRtNG8PKr+wu99Rrqcnwr8sqfhQRIRtQLffvstAGDevHlujWP9+vVQKBSYPHmy1bb9+/cjJSUF06dPR79+/czrg4KCsGjRIlRWVkpasNoyadIkjBgxwmr9sGHDMGrUKOTn5+PcuXONit0R8TW1nClTpiA9PR1JSUmNegytiUc1Ly8uLjbf9/HxsesYy/0sj3c0URSxefNm8/L06dPh5eVl17EBAQGYPHkyHnzwQfTv3x/t27eHRqNBVlYWjh07ho8++gh79+4FYBrY4MEHH8Tx48cb1HRdrnqAOSIiT2E9cnkQFPKpwErzAEEvXVdf83IAiB4KRPQG7lh8eTr+D6DrmEZGS0StiSgIMBYUuDsMu6mCg6FQNr7uThRFAMA333yDF1980VFhNTiGpKQkdOvWDSEhIVbbDxw4AAA2B1gbM8Z0bT948GCjz6/RaADAru6wtjgqvqaUUz021r59+5CQkFDvuVozj0q6qwcoA2B3QmvZD7qsrMzhMVU7ePAg0tLSzMv2jloeFRWFW7du2UyCO3TogEceeQSPPPII/vnPf+KZZ56BKIpITU3FX/7yF6xbt85R4RMRtXhWg6jZ7M8tq+WGAvAPr79whQK492ngq9/XrEvZD2RfAcK6NTxYImpVjAUFSB56n7vDsFuXIz9CHRra6ONnzZqFdevWYcGCBVi7di2GDBmC9u3bo1evXpg1a1atx61evRoFDfhxYsKECZLaW0uXLl1CXl4eHnroIZvbk5OTAQBdunSx2hYZGQl/f3/zPg11/fp17N27F1FRUbVOb1wfR8XXlHIGDRoEAPjxxx/tjru18qikW6vVmu9XVlbadUz1aOeA/bXjjWHZLKNXr14YOHCgXcd5e3vbNUDaU089hfT0dLz55psAgA0bNmD58uWNHpSirlr/7OxsxMbGNqpcIiJ3MRZY13RbkQ+i5hcGqDT2naD3I8Ce14Ayi65KJ/4JjHungZHWIT8duHMBMJQDShXgF26qiQ+OBppQ60RE5EqxsbFYu3YtXnjhBaSmpiI1NRUA8Pzzz9ebdKenp9t9npiYmFqT7oyMDAC1d0nVVbWOCrL1twJAYGCgeZ+G0Ov1mDlzJioqKrBixQqoVKoGl+HI+JpSTmBgILRarfm5pNp5VNJtWRtsb6215X7OalJdWlqKrVu3mpedNTf3X/7yF/ztb39DWVkZjEYj9uzZgxkzZjSqLD8/v1q3lZaWNjZEIiK3kdd0K4NtfMEoviNdDmjAD5caH2DgbOCHd2vWnfkUuP9VwCfY/nJsufIdkLQcyDxre7tPKBA7HLjnSSBmmKnm3R6CAFQWAaIAQFF1nI3/RaHmplAAai2g8rL/PEREVXQ6HRITE7F7925MmjQJq1atQv/+/REVFSWpQLPFstVoU1WPBRUcHOywMusjCAJmz56NQ4cOYd68eZg5c6bLzu0soaGhyMnJcXcYzZ5HJd1t2rQx379z504de9bIzKyp1QhtQjOZumzbts08h51KpcJjjz1WzxGN4+/vj3vvvdfcN8MVU6AREbUURl2BZFkVaCPpLsmWLvvZ0bTc0j1PAj++B4hG07K+BDi9CbhvfsPKqWaoBL79E/C/DXXvV5YHXNxuukX1BYYtALr/Rlr7XVYA3DoNpB8Frh8FMs9VzScuNi42AFB5mxJwtVdNIq7WAmrvmpuq+r7FftX7anyqtvkAGm3NttrWe/kB3gH2tz4gombnySefxJ49e7Bt2zZMmDDBbXFUt3C17J5qqbrmt7Za3sLCQpt9wWsjCAKeeOIJbNmyBTNmzMA//vGPBkbsnPiaWk5ZWRl8fX1r3U4mHpV0d+tW02/O3qYn169fN9/v3r27w2MCpE3LR48ejagoO0bCbSTLsvmrExFRDUHep9tWUzqrpLttw04S1AHo8RtT8lvt+D9Mc3Y3NFEsyQE+nwlcP9Kw427/DHwxy/SDQZs4wFgJFN0BCp3Q/M9YYbpV1L+rQ6m1puTbO7Dq/wBAG1RzX7ItEPDyBTS+pqRd41u17FezzKb55Gaq4GB0OdJy+sWqGlk7nJ6ejm3btmHy5MmNSrgd2ae7esDh2mYvqu7jnJycbNUtNDMzE8XFxYiPj7crDkEQMGfOHGzatAnTpk3Dhg0boGzidcdR8TWlHEEQoNPp0LNnz8Y8hFbFo5LuHj16mO+fO3cOBoOh3hEBT58+bfN4R8nIyMD+/fvNy7Nnz3b4OSxZTudVVxNxIqLWxqpPt62B1EpkP1b6NWIWiCG/lybdhTeBC9uBPo/aX0bmOeCz6UDBdettPiGmhNpYCRRnmWrTbSnJMt08kaHcdJP/SNJYah9TIq72MdXGq7xMP5IoNTX3VV7W95UqQKGsucmX5TfJdgWgUMma6FfdN69r6LKd+wREmn4comZDoVQ2aWCyluLUqVMQRRH9+/dv1PGO7NPds2dPKJVKXLlyxeb2ESNG4K233sLu3bsxdepUybbvv//evE99LBPuxMREfPLJJ43ux+2M+JpSTnJyMgRBaPRgcK2JRyXdQ4cOhbe3NyoqKlBSUoJTp05h8ODBte5fUVGBY8eOmZfvv/9+h8e0efNmCIIAwNRn5OGHH3b4OSz99NNP5vvt2rVz6rmIiFoSq9HLbfXpbmpNNwB0vAfoeC9w43jNuqNrTAOt1dcHOu8acPBt4OznVf2sLah9gLErgX7TTclbtYLrwJVvgWN/N80PTg1nKDPdWotOQ5l0k1tU95/evn075s+f3+DxlBzZpzs4OBh9+vTBqVOnIAiCVc1zQkICOnfujC1btmD+/Pnm5F2n0+HNN9+El5eX1aBvKSkp0Ov1iIuLg0ajMTcp37RpEx599FFs3rzZroR75MiROHjwIJKSkjBy5Eib+zgivsaWU+34cdPfOXuS+9bOo5Juf39/JCQkYNeuXQBMI3jXlXRb9rUODQ3F8OHDHR6TZdPyxMTEegeIaIq9e/fixo0b5uXaPqROcWIdMHQ6EBJds64sH/jp36b7bbsCXWXz/537T81IwUN/L912+yyQesh0v8uvpVPuGCqAEx+b7gd3BO7+rfTYS98A+Wmm+4OeMNVeVMv5Bbj6nel+zH1AO9kvrcf+DghGU+1W30Tptl/2AVlV/eT7TgP8asYQgC7DVJMFAO0HmObstXRqPVBZYmrKOGiOdFv6EeBmVYuLnhNMzVOrleQCP39quh/eA7hLNgfiz5+bkgSlytR81dKtn4C0qqZqXR8E2t5Vs62yFDj1L9P9kBigx3jpsRd3AAVV76X4eaa+ldWyrwDJe0z3Y4cDUX2kxx5Za/o/INKUZFi6uhvIuWq63/8xU41dtfx04NLXpvsd4003SyfXAfpyUxPSAbKBR1IPm5rUAkCvyUCgRReO4izg7Bem+5G9gM4jpcee2WKam1nlBdz7lHRbxv9MfV8BoPtYILRzzbaKIuB/VZ/vNnFAN9mUI+e3AYW3TPfvfQZQWVxu71wAUpJM9+NGAREWzbKMBlNzZAAIbAf0miQt98q3QG6K6f7Ax03NZ6vlXQMum65/6DQE6CCbJeH4P021o76hpsTN0rUDQOZ50/0+U6TTZBXeBs5XDQYZ1ReIHSY99vQnpr7BGi1wz1zpthsnTDfA9CXfjdcIo6y/mvLOCaDyEek1Qt4EW17Tbe81YsDj0qT79s/AzgWm95Cta8QPq03v/1unrZNtAPAOMn1m4kZJE+6SXODiV6b7D70NVBSayrKcL9ySysv0GnYaYnqNi+6YPt9xCRavjWi6Rpz93LQY2B7o8kBNDa0omN5nBTdMc5p3H2taZ6g01T7npwK3zgCCwTSqum+o6TUxVpj+zzhl2qbSmJ5HQ7nps20oM7U0qCw2fQ6UKtP+hjLbzwk1XuEt0/WN1wjXf4/ITgV8+pje45YMlUB5gem+xhfwliWjJTlVAxkqrX8MrCgG9FWD3GqDTa01qhkNNTMqqLWAVtbCpzTP9HkErKdHrCw1fR4BUzcNjcV3WMEIlJoGIoPKy3qwyLIC03sJMMWrMCW0I0eORPw9g3Di5EnExsRg9K8TEB0bh/DwcIwdOxZdu3Y1/d0GAKXa9F60VK4zvX6AaZvS4m+roaJqnAqYvm95yVp8lmQDomhqYVL1HW7ixIlYvHgxjh3aj6GDqr7P+AQDKi+o1WqsW7cOY8aMwfDhwzB18gQEBAVj6/avkZ6ejlWrViEmJsb0PAhGAAokJCQgPT0dqampiImJwdLFf8XGjRvh7++Hrnd1xhtvvFETjygA+jJMGP8Q+g0YaPp+U/30VlXYqSuLTM+HX5j0R1t9GdQVRVi3ZiXGTJiK4cOHY+rUqQgICMDWrVtN8S1fgpgI6Y/L5vjOn0RMdCfAt43scQ7H1Mm/RYC/P7Z+vQvp6ddrHicAFGcDEE3XZ9822LNnD9RqNcaPH2/6XqSv+vHSJ0TapcpYaXpPAKYxOyy/uwCmv2Wi0fQY5X93K0tMtwp9zXu1Wn3XiGbEo5JuAHjuueckSffzzz9vs59BaWkpXnvtNfPyU0891ejJ6Wtz4sQJXL582bzc0Kbl1dOe2TPneHZ2Np555hnzco8ePTBgwIAGna9JKoutPwiiaPoAAqYvVVbHlNRslzPqa7YZ9dbbq7fpbdRMGMotypUNECTYUa5glP6BNZdbUXOs/AugYLR4rDY6N9b1WC3LFYzSbaJQd7n6qnItv4RXs3wOBfljree10Zc1/bWRX1Crz2V+DuWvjaHux1pRbIpLaeNzarR8bRr4HFa/NmobnzNjXa+NWPf70BHPYX3lWj2HFu9Do63HWmT6Ymf5I0q1ut7fYn3lVj2H8muAvFw3XyOMhbLm5d4irK4RpfnSZV/5l1s7rxG9HgFCYqU1z9cOVCWZsufw4g7gwP+rvaa1bVegy2jAy7/ua4RgMP3Q1fsRU2KQedaUyOtLTV8+f/VHoG23mvf6jROmJAAAfEOAoPY15VaW1HzWtIFAcCfpebWBNc9Bx3ul76nM86Yv64Apbnlil/SW6f/AdqYfjiTPxVemH6UA07znvqGm94lgALIumn5oNFYCYd1NP3ZVFJoef0URcPV7U9yA6bFUr68oAkpzTNcQo97G9bAVEo28Rrjre0RlCaAVrMuFWPP5tvUjkyiYttvqBly9zVa8knJtDJpYfazNVjhiHeWiZpuyjnhlVCoVkvZ8h7Xv/Q1ffbsb3+3eC51uK4xGIxYtWoTTp0+je7uqRFFh48GKlo+njnhtPYdC1QwMFsXOnTsXy5Ytw+ZPP8PQAT2tyh01ahR+OHgAi1/7Kz7ftgN6vQG9e/fGihUrkJiYKH2sNp7DtDRTU/ji4hIsf2uFdUwAYjq2Rz+L5vaiKOLChQuIie6EwYP62Xweq5+HUb8agh+S9mLxG2/h888/h16vN8W3+M9InPzb2n+wFKSvz6hRo/DDDz9g8WuvVj1OPXr36oUVK96ueZyA6bMuioBCgdLSUmzfvh3jx483ta4t19mOtfo5rfN9aKx6Dm295lWxVp9b/jzUdY1oRjwu6R43bhyGDRuGw4cPo6KiAuPHj8eOHTvQp09NbVxubi6mTZuGX375BYCplvvll1+2WV5aWppkTur169fbnTxb1nJ37dq1zlp3W27duoVhw4bh+eefR2JiIqKjo632EUURu3btwu9+9ztzHxeFQoFVq1Y1eYCGBvHyt06GFIqaxEtto4a/ehRaW1Samm22Bh+q3qaxMbd69QA7piCk25R2lCsYTQPsWJXrXXOs/KKgVFk8VhtfVqp/bZX/6iovV548K5R1l6upeg5tJd2Wz6FS/ljreW1s/Qppq9y6Xhubj9XitZH/cVKq636s3lXvMVvlqixfmwY+h15+pi9CKhtJt6qu10ZR9/vQEc9hfeVaPYcW70OVrccaAKgq638fyt/fivrK9TN9WdbYeC9J3t/uvUYIVvN0B0NyjRBF06/mluS/uNt7jVBpgMHPmUYer5aXYkqALd+HJ/8P2PmidVmA6RxDngOifwXcqaphtPca0fYu082or2kNEynrc9dSrhEKhakcbbApUQdMLWzkrWFUGvtaw/ScaKrJqiw1/XBZkGH6ccJYaUrWw7qb7hv1pv/TfwTKC01xtB9Qs95YaarhLbxpeu8EdzJdpwSj6UuisRLIvgpAND3WgMiabaJgaiFVnfBZ1u6KoumH7OrxBXzbWDxXomm7rqolksqrpnay+stoaY6pXBFAYKT0mqgvNdVsBkTyGuGu7xFeflXPnzxBU9R8vm0lHgqlKVmsdVv161xXuTYSa8mxVhvrKBd2xGu7XF9fP7z04ny89OJ80/dHL1+sWbMG8+fPx86dO9H96Zl1lGv5eOqI19axSiUgKiSfiXbt2mHq1Kn47MutWLFkEQIC/K3KjY+/B9/+9zPTgq1rn/mxKqyav2/4v39iw9//ZlrQBkmv05atBSzivXDhAvLy8rDs1b9A7WXj8wRInof4+Hvw7bff1mwTxZquUrLnIS0tTdpaQPI44/HtN1/V3VpAoQIUIqBQYsuWLSguLsYf//hH2fNgK17U8z5UVb2/63iPKgTr7fVdI5oRhSja+rmhZcvIyEB8fDxu374NwJSEjhgxAnFxccjOzsbevXvNc02r1Wp89913SEhIsFlWY5PuyspKREVFmUdEXL58ORYtWtSgxyE/d0xMDHr37o22bdtCo9EgOzsbx48fx61btyTHrVy5EgsXLmzQuRoiOzsb4eHSJkhZWVnmUSCJiJobUa/H5d7SrhCdd34D77i4mhXlOuD/yWp0/3BWmhA1RGUJ8O7dNU1GAVPN7/QvTF8Ujv0D+M7GD75qH1O3jvv+0Lg+5UTUbJWXlyM1NRWxsbFO7XLY0nz55ZeYMmUKPv/8c0yZMsWl505PT0f37t3x6quvNvi7ujP8/e9/x+uvv460tLRm+x4xGAzo2rUrevfujR07drjknC39s+NxNd0A0KFDB+zfvx/Tpk3DmTNnIIoiDhw4YJ6/ulpYWBjWr19fa8LdFN9884054VYqlbUOQNAQaWlpdQ4g0b59e3z44YdOH6yNiKilkQ+iBtiYMkw+cjnQtKTXy8/URPqgRZPC5N3A6Y2mPrUHbTQ17DkReHAFEBDR+PMSEbUgy5cvxzvvvINevXq55TtsdHQ0Nm7ciDt37rj83LY8++yzePbZZ+vf0Y2uX7+OWbNmYebMmfXvTAA8NOkGTHNuHz9+HJ999hk+/fRTXLhwAXfu3EFwcDA6d+6MSZMmYc6cOWjb1jm1CJZNy++//3506NChjr1ti46Oxrlz53D06FEcOXIEFy5cQE5ODnJzc1FaWorAwEBERUXhnnvuwUMPPYSJEyeaRyIkIqIa8kHUABtThslHLq+e17kphj5vGkjRcuqur/9ge9+Ri4ARL9U/wjkRkYfQ6/X46KOPMG7cOKxcudJtNZiurl1v6Tp37owlS5a4O4wWxSObl5NzsXk5EbU0pT/9hPRpNaMxK3x90f30/6Q7Xfoa+HxGzXJwJ+CFWkYBb4iLO4Av6mntlPAaMGxB089FRM1aS28iS+QuLf2z48KRtoiIiNxDXtNtVcsN1AxoU823jWNOfvdvTTXeNimAce8y4SYiIvJgTLqJiMjjCbI+3Vb9uQHTqM6WHJV0A8CvlwEP/j/JPKxo0wWYsRW450nHnYeIiIiaHY/t001ERFTNKJ8uzFZNd5ks6fYJdVwACgUw+Flg4Bwg56qpr3hoZ/bfJiIiagWYdBMRkceTj16uCrZV0y2bo9uRNd3VNFrTHNNERETUarB5OREReTx5n26lXX26HVjTTURERK0Wk24iIvJ4QqGseXlQsPVOVs3LQ5wXEBEREbUaTLqJiMjjWfXpdvVAakRERNRqMekmIiKPZ9WnO4jNy4mIiMg1mHQTEZHHs5qnW17TLQhAeYF0nSNHLyciIokZM2ZAoVDYvHXu3NllcYiiiIEDB2L06NEuO2dLd+XKFajVanz44YfuDqXFYNJNREQer96B1MoLAFGQrmPzciIipxk2bBjGjRsHAFCpVBg4cCBmzpyJhQsXYtmyZS6LY9OmTTh9+jSWLl1qc/vJkycxduxYBAcHw8/PD4MHD8YXX3zRqHM5sixHlXvz5k2sXr0ao0ePRqdOneDl5YXIyEhMnjwZx48ft3lMt27dMG3aNLz++usoKipqcvytAacMIyIijyaKoo3m5cHSncpk04UBbF5ORORE2dnZ2LVrF+bPn49FixYhIiLC5TEIgoAlS5Zg2LBhGDx4sNX2pKQkjBkzBlqtFlOnTkVAQAC2bt2KxMRE3LhxAwsWLLD7XI4sy5HlrlmzBitWrEBcXBxGjx6NsLAwJCcnY/v27di+fTu2bNmCxMREq+NeeuklbN68Ge+//z5eeeWVRsXemihEURTdHQS1LNnZ2QgPD5esy8rKQlhYmJsiIiKqnVBWhiv9B0jWxe3+Hl6dOtWsuHEC+L9f1yyrfYC/ZrooQiJqLcrLy5GamorY2FhotVp3h+M2J0+eRHx8PBYuXIiVK1e6LY6dO3di/Pjx+PjjjzF37lzJNoPBgO7duyMjIwPHjh1Dv379AAA6nQ7x8fFIS0vD1atXER0dXe95HFmWo8vdtm0b2rRpgxEjRkjWHz58GAkJCfD398ft27fh7e1tdWzfvn2h0+lw7do1KJXObUDd0j87bF5OREQezVho3fRNJW9ebjVyOWu5iYic5dtvvwUAzJs3z61xrF+/HgqFApMnT7batn//fqSkpGD69OnmZBYAgoKCsGjRIlRWVmLjxo12nceRZTm63EmTJlkl3ICp+f+oUaOQn5+Pc+fO2Tx2ypQpSE9PR1JSUoNjb23YvJyIiDyaUFRotU7p7y9dIW9ezkHUiMiVBAEoy6t/v+bCJxRoQs1mdUPbb775Bi+++KKjompwDElJSejWrRtCQkKsth84cAAAbA6wNmbMGADAwYMH7TqXI8tyRbnVNBoNAECttp0yDhkyBACwb98+JCQkNPo8rQGTbiIi8mjymm6lnx8U8i8QViOXBzs1JiIiibI8YGWcu6Ow359SAL+2jT581qxZWLduHRYsWIC1a9diyJAhaN++PXr16oVZs2bVetzq1atRUFBg93kmTJggqQG2dOnSJeTl5eGhhx6yuT05ORkA0KVLF6ttkZGR8Pf3N+9TH0eW5YpyAeD69evYu3cvoqKi0Lt3b5v7DBo0CADw448/NuocrQmTbiIi8mjymm5lQID1TmUF0mVtkPU+RETkELGxsVi7di1eeOEFpKamIjU1FQDw/PPP15t0p6en232emJiYWpPujIwMAKh1ADdd1awXQfIpJqsEBgaa96mPI8tyRbl6vR4zZ85ERUUFVqxYAZVKVWv5Wq3W/FxS7Zh0ExGRR5PXdKtsJt3y5uXWTQ2JiKjpdDodEhMTsXv3bkyaNAmrVq1C//79ERUVVe8AWWlpaQ6LIzc3FwAQHBzssDI9gSAImD17Ng4dOoR58+Zh5syZde4fGhqKnJwcF0XXcjHpJiIij2aU13TLB1ED2LyciMhFnnzySezZswfbtm3DhAkT3BaHj48PANOo2LZU1x7XVlNcWFhosy+4s8tyZrmCIOCJJ57Ali1bMGPGDPzjH/+o95iysjL4+vrafY7Wikk3ERF5NMGumu4C6bI22GnxEBFZ8Qk19ZNuKRo52GR6ejq2bduGyZMnNyrhdmSf7uqpbvPybA9gV91POjk5GQMHDpRsy8zMRHFxMeLj4+2Kw5FlOatcQRAwZ84cbNq0CdOmTcOGDRvqnQZMEATodDr07NmzwbG3Nky6iYjIo1nXdNtIulnTTUTupFQ2aWCyluLUqVMQRRH9+/dv1PGO7NPds2dPKJVKXLlyxeb2ESNG4K233sLu3bsxdepUybbvv//evI89HFmWM8q1TLgTExPxySef1NqP21JycjIEQah1oDWqwXm6iYjIo1nXdNtoXs6abiIip6vuP719+3YUFxc3+Pi0tDSIomj3bfbs2XXG0qdPH5w6dQqCIFhtT0hIQOfOnbFlyxacOXPGvF6n0+HNN9+El5eX1aBvKSkpuHz5MvR6fZPLGjlyJBQKhXlaMFscEWN1k/JNmzbh0UcfxebNm+1KuAHg+PHjABr3g0Frw5puIiLyaMYi2ZRhrOkmInKLkSNHIj4+HidOnEBsbCxGjx6N6OhohIeHY+zYsejatatL45k4cSIWL16MY8eOYejQoZJtarUa69atw5gxYzB8+HBMnToVAQEB2Lp1K9LT07Fq1SrExMRIjklISEB6ejpSU1Ml2xpTVvUPAbXNke2oGJcuXYqNGzfC398fXbt2xRtvvGF1ntqa6e/ZswdqtRrjx4+vNUYyYdJNREQeTSiUNi+3r6abo5cTETmaSqVCUlIS1q5di6+++grfffcddDodjEYjFi1ahNOnT6N79+4ui2fu3LlYtmwZNm/ebJV0A8CoUaPwww8/YPHixfj888+h1+vRu3dvrFixAomJiQ06V0PKEkURFy5cQExMDAYPHuywcm2pHhG+uLgYy5cvt7mPrWb6paWl2L59O8aPH4927drVe57WTiGKoujuIKhlyc7ORnh4uGRdVlaWeUAKIqLmJHVKIsrPnjUvR72xDMGPPFKzg74MWB4pPej500CbOBdFSEStRXl5OVJTUxEbG1vv9FityZo1azB//nysWrUKCxYscOm5Z86ciZ07dyI9PR0BtgbadIPz58+jd+/e+OCDD/Dcc8+5Oxyb1q1bh3nz5uHgwYMYPny408/X0j877NNNREQeTV7TrZTXdMtruQH26SYicqHISNMPnx07dnT5ud944w2UlZVhzZo1Lj93bQ4fPoyIiAg88cQT7g7FJoPBgDfffBMPP/ywSxJuT8Ckm4iIPJq8T7dK3qdb3p8bALRBzguIiIjMli9fjqeffhq9evXCww8/7PLzR0dHY+PGjc2mlhsAnn32WWRmZjbbGt3r169j1qxZePfdd90dSovBPt1EROSxRFFseE23VwCg4p9HIiJn0+v1+OijjzBu3DisXLnSbUnmlClT3HLelqpz585YsmSJu8NoUfitgoiIPJZYUQFRNnVLvTXdHLmciMglNBoNrl+/7u4wiJyOzcuJiMhjGWW13ACglDch5BzdRERE5ERMuomIyGMJsv7cAKDy95euYE03ERERORGTbiIi8ljymm6Fry8UGo10J6uabg6iRkRERI7DpJuIiDyWvKZbZWt0WtZ0ExERkRMx6SYiIo9lLKxnujCAfbqJiIjIqZh0ExGRxxKK6pkuDGBNNxERETkVk24iIvJYVjXdtpqXs6abiIiInIhJNxEReSyrmu5Ae2q6Q5wXEBEREbU6TLqJiMhjsaabiKh5mjFjBhQKhc1b586dXRaHKIoYOHAgRo8e7bJztmRXrlyBWq3Ghx9+6O5QWhQm3URE5LGMVjXd9oxezppuIiJnGzZsGMaNGwcAUKlUGDhwIGbOnImFCxdi2bJlLotj06ZNOH36NJYuXWpz+8mTJzF27FgEBwfDz88PgwcPxhdffGFX2Tdv3sTq1asxevRodOrUCV5eXoiMjMTkyZNx/Phxh8Tv6vi6deuGadOm4fXXX0eRbIYQqp3a3QEQERE5i2BV0y1rXq4vAwzl0nUcSI2IyOmys7Oxa9cuzJ8/H4sWLUJERITLYxAEAUuWLMGwYcMwePBgq+1JSUkYM2YMtFotpk6dioCAAGzduhWJiYm4ceMGFixYUGf5a9aswYoVKxAXF4fRo0cjLCwMycnJ2L59O7Zv344tW7YgMTGx0fG7K76XXnoJmzdvxvvvv49XXnml0fG3JgpRFEV3B0EtS3Z2NsLDwyXrsrKyEBYW5qaIiIhsS01MRPnPZ83LkcuWIuTRR2t2KLwNvNtdetCfrgF+bVwUIRG1JuXl5UhNTUVsbCy0Wq27w3GbkydPIj4+HgsXLsTKlSvdFsfOnTsxfvx4fPzxx5g7d65km8FgQPfu3ZGRkYFjx46hX79+AACdTof4+HikpaXh6tWriI6OrrX8bdu2oU2bNhgxYoRk/eHDh5GQkAB/f3/cvn0b3t7eDY7d3fH17dsXOp0O165dg1Lp/MbTLf2zw+blRETkseqt6ZY3LQcAbZDzAiIiInz77bcAgHnz5rk1jvXr10OhUGDy5MlW2/bv34+UlBRMnz7dnNACQFBQEBYtWoTKykps3LixzvInTZpkldACpqb1o0aNQn5+Ps6dO9eo2N0d35QpU5Ceno6kpKRGxd/asHk5ERF5LKOsv5lK3qdbPoiaVwCg4p9GInItURBRXqJ3dxh20/ppoFAqGn18dUPbb775Bi+++KKjwmpwDElJSejWrRtCQqzH8jhw4AAA2BxgbcyYMQCAgwcPNvr8Go0GAKBWN+5vjrvjGzJkCABg3759SEhIaPR5Wgt+syAiIo8lFMoGUpOPXm41iFqwU+MhIrKlvESPf/3pB3eHYbcnVv4KPgFejT5+1qxZWLduHRYsWIC1a9diyJAhaN++PXr16oVZs2bVetzq1atRUFBg93kmTJggqQW2dOnSJeTl5eGhhx6yuT05ORkA0KVLF6ttkZGR8Pf3N+/TUNevX8fevXsRFRWF3r17N6oMd8c3aNAgAMCPP/7YqHO0Nky6iYjIIwkVFRArKyXrrKYM43RhREQuFxsbi7Vr1+KFF15AamoqUlNTAQDPP/98vUl3enq63eeJiYmpNenOyMgAgFoHcNPpdABMzbVtCQwMNO/TEHq9HjNnzkRFRQVWrFgBlUrV4DKaQ3yBgYHQarXm55HqxqSbiIg8kryWGwCUgfX06WZNNxGRU+l0OiQmJmL37t2YNGkSVq1ahf79+yMqKqreAbLS0tIcFkdubi4AIDg42GFl1kcQBMyePRuHDh3CvHnzMHPmTJed2x4NjS80NBQ5OTkuiq5lY9JNREQeSd6fGwBU/v7SFVY13RxEjYjImZ588kns2bMH27Ztw4QJE9wWh4+PDwDTqNi2VNcg11ZbXFhYaLMveG0EQcATTzyBLVu2YMaMGfjHP/7RwIibX3xlZWXw9fW1+xytGZNuIiLySPKaboWPDxResj6IrOkmomZA66fBEyt/5e4w7Kb10zTquPT0dGzbtg2TJ09uVMLtyD7d1VPd5uXl2dxe3Vc6OTkZAwcOlGzLzMxEcXEx4uPj7YpDEATMmTMHmzZtwrRp07Bhw4YmT7Pl7vgEQYBOp0PPnj0b9wBaGSbdRETkkaxGLpf35wbYp5uImgWFUtGkgclailOnTkEURfTv379RxzuyT3fPnj2hVCpx5coVm9tHjBiBt956C7t378bUqVMl277//nvzPvWxTGgTExPxySefNLofd3OKLzk5GYIgNHoguNaG83QTEZFHMspHLpdPFwawppuIyIWq+09v374dxcXFDT4+LS0NoijafZs9e3adsfTp0wenTp2CIAhW2xMSEtC5c2ds2bIFZ86cMa/X6XR488034eXlZTXoW0pKCi5fvgy93jT9W3WT7U2bNuHRRx/F5s2b7UpoR44cCYVCYZ4WzBZ3xgcAx48fB2BfYk+s6SYiIg8lWNV0B1rvxJpuIiKXGTlyJOLj43HixAnExsZi9OjRiI6ORnh4OMaOHYuuXbu6NJ6JEydi8eLFOHbsGIYOHSrZplarsW7dOowZMwbDhw/H1KlTERAQgK1btyI9PR2rVq1CTEyM5JiEhASkp6cjNTUVMTExWLp0KTZu3Ah/f3907doVb7zxhlUMtprAV/8IUNcc3u6MDwD27NkDtVqN8ePH1xoj1WDSTUREHslYKE267avptn/QGSIiahiVSoWkpCSsXbsWX331Fb777jvodDoYjUYsWrQIp0+fRvfu3V0Wz9y5c7Fs2TJs3rzZKukGgFGjRuGHH37A4sWL8fnnn0Ov16N3795YsWIFEhMT6y2/erT14uJiLF++3OY+8ibwoijiwoULiImJweDBg+ss3x3xAUBpaSm2b9+O8ePHo127dvWehwCFKIqiu4OgliU7Oxvh4eGSdVlZWeYBKYiImoOsd95B7sfrzMuB48ej/aqV0p1WdQOKM2uWH9sKdHnARRESUWtTXl6O1NRUxMbG1js9VmuyZs0azJ8/H6tWrcKCBQtceu6ZM2di586dSE9PR4CtsT9c7Pz58+jduzc++OADPPfcc+4Ox6Z169Zh3rx5OHjwIIYPH+6Sc7b0zw77dBMRkUeS13Sr2KebiKhZioyMBAB07NjR5ed+4403UFZWhjVr1rj83LYcPnwYEREReOKJJ9wdik0GgwFvvvkmHn74YZcl3J6ASTcREXkkoUg2kJq8T7e+HDDI5mdln24iIpdavnw5nn76afTq1QsPP/ywy88fHR2NjRs3NotabgB49tlnkZmZ2Wxrc69fv45Zs2bh3XffdXcoLQr7dBMRkUeqt6ZbXssNsKabiMiF9Ho9PvroI4wbNw4rV650W6I5ZcoUt5y3JercuTOWLFni7jBaHCbdRETkkeSjlyv9ZUm3fORyANAGOS8gIiKS0Gg0uH79urvDIHI6Ni8nIiKPZJRPGVZfTbeXP6DSODcoIiIianWYdBMRkUcy1tenm3N0ExERkQsw6SYiIo8kNLRPN+foJiIiIidg0k1ERB5HqKiAWFEhWaeUj0wrr+nmIGpERETkBEy6iYjI48gHUQMAVaCsebm8ppuDqBEREZETMOkmIiKPI58uDLBV050vXWZNNxERETkBk24iIvI4gmwQNYVWC6WXl3QnDqRGRERELsCkm4iIPI68plslr+UGbAykFuy0eIiIiKj1YtJNREQeR17TrZT35wZY001E5EYzZsyAQqGweevcubPL4hBFEQMHDsTo0aNdds7W7MqVK1Cr1fjwww/dHYpLMekmIiKP07iabk4ZRkTkKsOGDcO4ceMAACqVCgMHDsTMmTOxcOFCLFu2zGVxbNq0CadPn8bSpUudUv7JkycxduxYBAcHw8/PD4MHD8YXX3xh9/E3b97E6tWrMXr0aHTq1AleXl6IjIzE5MmTcfz48RYXX7du3TBt2jS8/vrrKLIx6KmnUrs7ACIiIkczWtV020i6WdNNROQ22dnZ2LVrF+bPn49FixYhIiLC5TEIgoAlS5Zg2LBhGDx4sMPLT0pKwpgxY6DVajF16lQEBARg69atSExMxI0bN7BgwYJ6y1izZg1WrFiBuLg4jB49GmFhYUhOTsb27duxfft2bNmyBYmJiS0qvpdeegmbN2/G+++/j1deeaVRsbc0ClEURXcHQS1LdnY2wsPDJeuysrIQFhbmpoiIiKSy3nkXuR9/bF4OHDcO7d9ZJd3pjQjAUF6zPHcf0GGQiyIkotaovLwcqampiI2NhVardXc4bnPy5EnEx8dj4cKFWLlypdvi2LlzJ8aPH4+PP/4Yc+fOdWjZBoMB3bt3R0ZGBo4dO4Z+/foBAHQ6HeLj45GWloarV68iOjq6znK2bduGNm3aYMSIEZL1hw8fRkJCAvz9/XH79m14e3u3qPj69u0LnU6Ha9euQamsv/F1S//ssHk5ERF5HKua7gB/6Q76cmnCDbCmm4jIRb799lsAwLx589wax/r166FQKDB58mSHl71//36kpKRg+vTp5oQWAIKCgrBo0SJUVlZi48aN9ZYzadIkq4QWMDXPHzVqFPLz83Hu3LkWF9+UKVOQnp6OpKSkBsfeErF5OREReRyhqFiyrAqQDaQm788NcPRyInIbURBgLChwdxh2UwUHQ2FH7WRtqhvafvPNN3jxxRcdFVaDY0hKSkK3bt0QEuL4MT0OHDgAADYHaBszZgwA4ODBg006h0ajAQCo1Q1P6dwd35AhQwAA+/btQ0JCQpPO0xIw6SYiIo9Tb59ueX9uANAGOS8gIqI6GAsKkDz0PneHYbcuR36EOjS00cfPmjUL69atw4IFC7B27VoMGTIE7du3R69evTBr1qxaj1u9ejUKGvDjxIQJEyS1uJYuXbqEvLw8PPTQQw2M3j7JyckAgC5dulhti4yMhL+/v3mfxrh+/Tr27t2LqKgo9O7du8XFN2iQqTvXjz/+2OhztCRMuomIyOMIVqOX11PT7eUPqDTODYqIiAAAsbGxWLt2LV544QWkpqYiNTUVAPD888/Xm3Snp6fbfZ6YmJhak+6MjAwAcNoAbjqdDoCpubYtgYGB5n0aSq/XY+bMmaioqMCKFSugUqlaXHyBgYHQarXm18HTMekmIiKPY5RNQ6Kqr6ab/bmJiFxCp9MhMTERu3fvxqRJk7Bq1Sr0798fUVFR9Q6QlZaW5rA4cnNzAQDBwcG17rNgwQJUVFTYXeYf/vAHmzXHjiQIAmbPno1Dhw5h3rx5mDlzplPP11ANiS80NBQ5OTkujM59mHQTEZHHEQrlA6nVU9PN/txERC7x5JNPYs+ePdi2bRsmTJjgtjh8fHwAmEbFrs1HH32EkpISu8t85JFHzEl3dQ1ybbXFhYWFDe5LLggCnnjiCWzZsgUzZszAP/7xjwYdb6k5xFdWVgZfX98GnaOlYtJNREQehzXdRNSSqIKD0eVIy+nbqqqjdrgu6enp2LZtGyZPntyohNuRfbqrp7rNy8ur9fji4uJat9WnOvlOTk7GwIEDJdsyMzNRXFyM+Ph4u8sTBAFz5szBpk2bMG3aNGzYsMGuqbaaa3yCIECn06Fnz56NewAtDJNuIiLyKGJlJURZzYUyQJZ0s6abiJoRhVLZpIHJWopTp05BFEX079+/Ucc7sk93z549oVQqceXKlUbFUp8RI0bgrbfewu7duzF16lTJtu+//968jz0sE9rExER88sknjerH3ZziS05OhiAIjRoEriXiPN1ERORRjDZqJlTypJs13URELlfdf3r79u2NqkVOS0uDKIp232bPnl1nLH369MGpU6cgCEIjH1HtEhIS0LlzZ2zZsgVnzpwxr9fpdHjzzTfh5eVlc9C4lJQUXL58GXq9HkBNk+1Nmzbh0UcfxebNm+tNaEeOHAmFQmGeFqy5xQcAx48fB2B/Yt/SsaabiIg8irw/NwAoA2V9usvypcus6SYicrqRI0ciPj4eJ06cQGxsLEaPHo3o6GiEh4dj7Nix6Nq1q0vjmThxIhYvXoxjx45h6NChDi1brVZj3bp1GDNmDIYPH46pU6ciICAAW7duRXp6OlatWoWYmBir4xISEpCeno7U1FTExMRg6dKl2LhxI/z9/dG1a1e88cYbVsfIm9FX/4hQ1/zd7owPAPbs2QO1Wo3x48fXGqMnYdJNREQeRd6fW+HlBaW3t3QnNi8nInI5lUqFpKQkrF27Fl999RW+++476HQ6GI1GLFq0CKdPn0b37t1dFs/cuXOxbNkybN682eFJNwCMGjUKP/zwAxYvXozPP/8cer0evXv3xooVK5CYmGhXGdUjthcXF2P58uU297FsRi+KIi5cuICYmBgMHjy42cUHAKWlpdi+fTvGjx+Pdu3a2XWelk4hiqLo7iCoZcnOzkZ4eLhkXVZWlnlACiIidyr+8UfceHKueVnVti26/nBYutP/jQFuHKtZHvcOcM9cEBE5U3l5OVJTUxEbG1vv9FityZo1azB//nysWrUKCxYscOm5Z86ciZ07dyI9PR0B8q5ILdD58+fRu3dvfPDBB3juuefcHY5N69atw7x583Dw4EEMHz7crmNa+mfHoX26BwwYgAEDBuC+++4zt/MnIiJyJUE+crmtL1Hy5uXs001E5DaRkZEAgI4dO7r83G+88QbKysqwZs0al5/bGQ4fPoyIiAg88cQT7g7FJoPBgDfffBMPP/yw3Qm3J3Bo0v3zzz/j559/RmhoKDQajSOLJiIisotRPke3fLowwEbz8obNRUpERI6xfPlyPP300+jVqxcefvhhl58/OjoaGzdu9IhabgB49tlnkZmZ2Wxrg69fv45Zs2bh3XffdXcoLuXQPt1t2rRBbm5uq2mbT0REzY91TbdsEDVR5EBqRETNgF6vx0cffYRx48Zh5cqVbksUp0yZ4pbztkadO3fGkiVL3B2Gyzk06e7QoQNyc3Oh0+kcWSwREZHd5AOpKQP8pTvoywBjpXQda7qJiFxOo9Hg+vXr7g6DyOkc2rx87NixEEURP/74oyOLJSIisptQWE9Nt7yWG2CfbiIiInIahybdTzzxBLRaLW7duoV//etfjiyaiIjILvKabpW8T7e8PzcAaIOcFxARERG1ag5Nujt37ozVq1dDFEX87ne/w2effebI4omIiOolyAdSs6rpLpAua4MApcq5QREREVGr5dA+3devX8eDDz6It99+G4sWLcJjjz2G9957D1OnTsXAgQMRFhYGHx8fu8rq1KmTI0MjIqJWot6abk4XRkRERC7k0KQ7JiYGCoXCvCyKIk6cOIETJ040qByFQgGDweDI0IiIqJUQiuqp6eZ0YURERORCDk26q4miCIVCYU7ARVF0xmmIiIisGOUDqdVX083pwoiIiMiJHJp0d+rUSVLTTURE5GryebqVAfKku0C6zOblRERE5EQOTbrT0tIcWRwREVGDiAYDhNJSyTqVPOlm83IiIrebMWMG/v3vf9vcFhsbi2vXrrkkDlEUMWjQILRp0wa7d+92yTk9wZUrV9CzZ0+8//77eO6559wdTrPn0NHLiYiI3Ek+iBpga/RyNi8nInK3YcOGYdy4cQAAlUqFgQMHYubMmVi4cCGWLVvmsjg2bdqE06dPY+nSpTa3nzx5EmPHjkVwcDD8/PwwePBgfPHFF00+74oVK8zdcY8dO9akshwZo71ldevWDdOmTcPrr7+OIht/e0nKo5PuyspKfPLJJxg7diyio6Oh1WoRFRWFoUOHYtWqVcjJyXHo+TZs2GD+8Nh7mzt3boPOsW/fPsyaNQtdu3aFn58fQkND0adPH/zpT3/C5cuXHfp4iIhaGnnTcsBWn+4C6TJruomIXC47Oxu7du3C/PnzcfPmTZw6dQqbNm3CypUr8dhjj7kkBkEQsGTJEgwbNgyDBw+22p6UlIT77rsPP/zwA6ZMmYJnnnkGmZmZSExMxDvvvNPo854/fx6LFy+Gn59fU8J3eIwNLeull15CVlYW3n///SY/Do8neqhLly6J/fr1EwHUegsPDxd37tzpsHOuX7++zvPZuj355JN2la3T6cTExMQ6y9JoNOKbb77psMdTm6ysLKtzZ2VlOf28RET1KT13XrzYrXvNrVdvURAE6U4fjRTFxYE1t1Mb3BMsEbU6ZWVl4sWLF8WysjJ3h+JWJ06cEAGICxcudGsc33zzjQhA/Pjjj6226fV6MS4uTvT29hZ/+ukn8/qCggKxa9euopeXl5iWltbgc1ZWVooDBgwQ7733XnHGjBkiAPHo0aONit+RMTa2rD59+ojR0dGi0Whs1GOwV0v/7Dhl9HK58+fP48aNG8jPz4fBYMCsWbOcer6MjAwkJCTg1q1bAExTkA0fPhxxcXHIzs7G3r17UVZWhqysLEyYMAHfffcd7r//fofG0L17dyQkJNS739ChQ+vdR6/XY+LEidi/f795Xa9evTBgwACUl5fj8OHDuH37NvR6PRYtWgS9Xo/XXnutSfETEbVE8unCVAEB1gN8WvXpDnZqTEREJPXtt98CAObNm+fWONavXw+FQoHJkydbbdu/fz9SUlIwZ84c9OvXz7w+KCgIixYtwuzZs7Fx48YGf+devnw5Lly4gNOnT+Ptt99uUvyOjLGxZU2ZMgV//etfkZSUZFfu01o5LelOT0/H22+/jU8//RQ6nU6yTZ5037lzB/PnzzcPZPDSSy816dzTp083J9zR0dHYsWMH+vbta96ek5ODqVOnYt++fdDr9Xj00UeRkpKC4ODgJp3X0r333ou1a9c6pKxly5aZE26tVov169dj6tSp5u2VlZX461//ipUrVwIAlixZghEjRmDEiBEOOT8RUUthNV2YfBA1wEafbjYvJyJyJbFqOuFvvvkGL774ottiSEpKQrdu3RASYv134MCBAwCA0aNHW20bM2YMAODgwYMNOufp06exfPlyLF26FHfffXfDg3ZijI0ta8iQIQBMXWCZdNfOKUn3p59+iqeffholJSVWc3TbmlIsIiICWVlZOHjwIHbt2oXnnnsO/v7+jTr3rl27cPjwYQCAl5cXvv76a/Tu3VuyT9u2bbFjxw706dMH165dQ15eHt5++228+eabjTqnM2VlZeHdd981L69evVqScAOmx/n222/j+vXr+PzzzyGKIv7yl7/gyJEjrg6XiMithGLZdGGBskHUBAEol/4QzCnDiMjdREGEUKp3dxh2U/pqoFA2fprgWbNmYd26dViwYAHWrl2LIUOGoH379ujVq1edLWJXr16NgoICu88zYcIESa2tpUuXLiEvLw8PPfSQze3JyckAgC5dulhti4yMhL+/v3kfe1RUVGDWrFno169fkysYnRFjY8saNGgQAODHH3+0O+7WyOFJ99atWzFjxgwApl+QgoODMWTIEKSkpODq1au1Hjd37lwcPHgQZWVl+O677/DII4806vwffPCB+f7jjz9ulXBX8/Pzw9KlS82xfvTRR1i6dCnUape0uLfbxo0bUVJSAgDo2rUrnnrqqVr3ffvtt/Hll19CEAQcPXoUP/30E/r37++qUImI3K7emu7KIkAUpOtY001EbiaU6nH7jePuDsNuUX+9Fyp/r0YfHxsbi7Vr1+KFF15AamoqUlNTAQDPP/98vUl3enq63eeJiYmpNenOyMgAYKr8s6W6pW5QUJDN7YGBgVateevy2muvITk5Gf/73/+gUqnsPq4ujoyxsWUFBgZCq9Wan0+yzaGjlxcUFGDevHkQRREKhQKLFy/G7du3sXPnTvz617+u89iHH37YnPDu27evUecvLi6WHDtnzpw69588ebK5Rj0vLw+HDh1q1Hmdafv27eb7s2fPttlSoFqnTp0kfdP/+9//OjM0IqJmR96nWylPuuVNywH26SYiciGdTocHH3wQEydOxMCBA/Gf//wHKSkpKC0txXvvvVfnsWlpaRBF0e7b7Nmzay0rNzcXABzavbQ2R48exapVq/DXv/4VvXr1cvr5XC00NNThs0J5Gocm3f/85z9RUFBgTrgXL14Mb29vu44NCAhAjx49IIoifv7550ad/8iRI6ioqABgqsm+55576txfq9Wa+yEAkAxU1hyUl5dL5u0bOXJkvceMGjXKfL+5PR4iImezqumub7owpRrwalx3JiIiargnn3wSe/bswbZt2/Cf//wHkydPRufOneHj41Nn5ZKj+fj4ADB9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AJCTk2O1j+XjycrKQnl5eb0fPsvHExoayunCiKjVMBYVWa1Tyb9ElcpmqfBt3MCdRETUdHq9Hh999BHGjRuHlStXui3JnDJlilvO25J17twZS5YscXcYLYbDk+7g4GAkJSVh2rRpOHDgAADg4sWLAGCek/qrr74CAHOyDQD3338/vvjiC6uBwBqiR48e5vvnzp2DwWCotx/E6dOnbR7vCpZTb9lqst2tWzcolUoIggBRFHHmzJl6B1Nw5+MhInInoVA6XRhUKih8faXryph0ExE1FxqNRlJhROSpHNq8vFpERAT27duHjRs3ol+/fhBF0eYNMCWGGzZswO7du5vcFHro0KHmpL2kpASnTp2qc/+KigrJFAGNHcCtMa5du4ZCiy+Itkb802q1kiS7+keMuhw8eNB835WPh4jI3YzyQdQCAsw/9gIARBEozZUe5MMuOERERORcDq/prqZQKDBz5kzMnDkTmZmZOHr0KG7dugWdTgc/Pz9ERETg3nvvdego2P7+/khISMCuXbsAmEYErKtmeNu2bSiqao4YGhrq0kEA/vWvf5nvBwUFmSegl5swYQKOHDkCwPR4/vznP9da5o0bN7Bv3z7JsURErYUgny5M3p+7sgQwymaC8GXSTURERM7ltKTbUmRkJCZOnOiKU+G5556TJN3PP/88evbsabVfaWkpXnvtNfPyU089ZdeQ/LUpLi62e6TwI0eO4J133jEvT506tdZzP/7443j99ddRUlKCK1euYN26dZg7d67NfV9++WUYjUYAwJAhQzBgwIAGPgoiopbLVk23hLyWG2DzciIiInI6pzQvd6dx48Zh2LBhAEzNx8ePH4+zZ89K9snNzcWECRPwyy+/ADDVcr/88ss2y0tLS4NCoTDfbM2lBwD/+c9/EB8fj02bNkGn09ncp7y8HO+//z4eeOABlJeXAzD1gbecPkwuPDwcL774onl5/vz5+OKLLyT76PV6/PnPf8ann35qXvfWW2/VWiYRkScSiqR9upX1Jd1KNeDdfEarJSIiIs/k0Jru1NRUhzYXb6wtW7YgPj4et2/fRlpaGvr164cRI0YgLi4O2dnZ2Lt3L0pLSwGY5gX/4osvEBwc3OTznjx5Eo8//jjUajW6d++O7t27IyQkBEajETdv3sTRo0cl/bh9fHywY8cOREVF1Vnuq6++ih9//BH79+9HWVkZ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9pJtgiBgw4YNeP7551FaWopbt27hsccew5EjR6BQKOwqf+3atU2OkYiopTLm1STdVoOoqbyAsO4ujsixRFFEbkaJZF1bJt1EREQtmsf16d61axcOHz4MAPDy8sLXX38tSbgBoG3bttixY4e5hjkvLw9vv/12k84bFRWF9evX4/Lly3j55ZetEm4AUCqVeOKJJ7B582bzumPHjmH37t1NOjf9//buPD6q8t4f+OfMPslk3wOEJCA7KFhAoIIKiILibkXbilqXWm299lq0Vdxat+q9rVd/Untb8N62aK9aqRVRdhVkExCIBBBCQvaNLLMv5/z+GHIyZzJJJslMZsnn/XpFzjnPcp45Gc/MN89yiGiocPcUdOdMBNTaQW5RaFlanLBblK8rYxiDbiIiolgWd0H366+/Lm/ffvvtmDx5csB8iYmJeOaZZ+T9P/zhD3C73f0+77x587B8+fKghnZfd911mDFjhrz/0Ucf9fu8RERDiaepc063Id0v6I6D+dyNlcqh5VqDGskZhgi1hoiIiEIhroJus9mMzZs3y/t33HFHj/lvuOEGmEzeHoTm5mZ89tlnYW2frzlz5sjbp0+fHrTzEhHFsh57uuMg6G6qUi6ilpFvgqAKbvoRERERRae4Crp37twJh8MBwNuTPX369B7zGwwGzJo1S97fsmVLWNvny3cOt8fjGbTzEhHFso6ebkEjQpfkNzopHoJuv5XLOZ+biIgo9sXVQmpHjx6VtydPnhzU86qnTZuGjRs3dikfbocPH5a3R4wYEXS5zz77DHv27EFdXR3UajUyMzNx/vnnY/bs2UhMTAxHU4mIooJot0O0eBcZM6S6oFh/UlAD2RMj07AQaqxSLqLGlcuJiIhiX1wF3ceOHZO3R44cGVQZ3+dkl5aWhrxNgVRUVCh61RcsWBB02Xnz5gU8npCQgDvvvBNPPPEEsrOzB9xGIqJo4270mc/tP7Q8axygje25z26XBy11ykegsaebiIgo9sXV8PImnwV2cnJygiqTm5srbzf7zBUMp4cfflgeUl5QUICrr756wHVarVa89tpruOCCC7Br164B12exWHr8ISIabJ7GBnk7HudzN1dbIImS4lh6PkcwERERxbq4CrrN5s65cEajMagyvvl8y4fLW2+9hffee0/ef/7556HX63sso9frcfPNN2PNmjU4cuQI2tra4HQ6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nURERERERDQ4BEmSAj/EOIZVVlZixowZqKmpAQAIgoB58+Zh1KhRaGhowKZNm+RnTWs0GmzYsEExNNzX6dOnUVRUJO+vXr0ay5cvH5Rzd3C5XLjiiiuwZcsW+djkyZMxbdo02O12fPbZZ/L5AODpp59W9KSHWkNDA7KzsxXH6uvruVI6ERERERGRn7gMugGgtLQUy5Yt63HF76ysLKxevRpLlizpNk9fg+5QnttXa2sr7rnnni693L60Wi2eeuop/PKXvwyqzv5i0E1ERERERBScgU1ijmLjxo3D7t278fbbb2Pt2rUoKSlBXV0dUlNTUVxcjOuvvx533HEHMjMzY+LcKSkpeOedd3D33XfjrbfewpdffomamhpotVqMGDECixYtwl133cXHhBEREREREUWRuO3ppvBhTzcREREREVFw4m4hNSIiIiIiIqJowaCbiIiIiIiIKEwYdBMRERERERGFCYNuIiIiIiIiojBh0E1EREREREQUJnH7yDAKH1EUuxxrbGyMQEuIiIiIiIiUMjIyoFJFT/8yg27qs+bm5i7HJkyYEIGWEBERERERKUXb44yjJ/wnIiIiIiIiijMMuomIiIiIiIjChEE3ERERERERUZgIkiRJkW4ExRa3240TJ04ojqWnpysWK7BYLCgqKgIAlJWVITExUZG/t/RYNpivLdTnGkh9fS3bl/zB5B2q77nBfl18zwWfh++56DvfQOsK13suVPn4nou+8w3mPa4vZXiP6xm/y8Xe56p/WkFBARdSo9im0Wgwfvz4HvMkJCTI21lZWV3+p+ktPZYN5msL9bkGUl9fy/YlfzB5h+p7brBfF99zwefhey76zjfQusL1ngtVPr7nou98g3mP60sZ3uN6xu9ysfe56p8WTQE3wOHlRERERERERGHDoJuIiIiIiIgoTBh0ExEREREREYUJg24iIiIiIiKiMGHQTURERERERBQmDLqJiIiIiIiIwoTP6SYiIiIiIiIKE/Z0ExEREREREYUJg24iIiIiIiKiMGHQTURERERERBQmDLqJiIiIiIiIwoRBNxEREREREVGYMOgmIiIiIiIiChMG3URERERERDTkPfXUUxAEocefRx99tM/1asLQViIiIiIiIqKYlJ2djfPOOy9gWmFhYZ/rY9BNREREREREdM6VV16JNWvWhKw+Di8nIiIiIiIiChMG3URERERERERhwuHlREREREREFHYejwclJSXYu3cv9u3bh7179+LQoUNwuVwAgHnz5mHbtm39qtvpdOKdd97B2rVrUVJSgrq6OqSlpaGoqAjXX389li9fjszMzKDq+vrrr3HbbbehpqYGJpMJEydOxE033YRp06b1q22CJElSv0oSERERERERBeGDDz7AbbfdBqvV2m2e/gbdpaWlWLZsGQ4ePNhtnuzsbKxevRqLFy/uNs9TTz2Fp59+utv05cuX44033oDBYOhT+zi8nIiIiIiIiMKqpaWlx4C7vyorKzF//nw54BYEAfPmzcOdd96Jq6++GkajEQBQX1+Pa6+9Flu2bOm2rvz8fDz11FP48ssvUVdXB4fDgaNHj2LFihVQq9VYs2YNfvSjH/W5jezpJiIiIiIiorBas2YN7rjjDuTk5GD69OnyzyeffILf//73APrX0z137lx8/vnnAICRI0di3bp1OP/88+X0xsZG3HLLLdi8eTMAID09HSdPnkRqamqfzvP2229j2bJlAICdO3di1qxZQZdlTzcRERERERGF1RVXXIHy8nLU1tbiww8/xMqVK3HllVf2Ofj1tX79ejng1ul0+PDDDxUBNwBkZmZi3bp1KC4uBgA0NzfjpZde6vO5brnlFsyYMQMA8O677/apLINuIiIiIiIiCqvc3FwUFBSEtM7XX39d3r799tsxefLkgPkSExPxzDPPyPt/+MMf4Ha7+3y+OXPmAABOnDjRp3IMuomIiIiIiCimmM1mecg4ANxxxx095r/hhhtgMpkAeHu7P/vssz6fU6fTAYC82nqwGHQTERERERFRTNm5cyccDgcAb0/29OnTe8xvMBgU87B7WlCtO4cPHwYAjBgxok/lGHQTERERERFRTDl69Ki8PXnyZGg0ml7L+D5n27d8MA4ePIhPPvkEALBo0aI+lWXQTURERERERDHl2LFj8vbIkSODKuM7p7y0tFSRVlJSgnvuuQcHDhzoUu6jjz7ClVdeCY/Hg2nTpuG6667rU1t7/3MAERERERERURRpamqSt3NycoIqk5ubK283Nzcr0lwuF/74xz/ij3/8I1JTU1FUVAStVouysjI0NDQAAKZMmYJ169ZBpepb3zWDbiIiIiIiIoopZrNZ3jYajUGV8c3nWx4ACgsL8etf/xq7du3C0aNHcfLkSdhsNqSmpmLBggW46aab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9TnYVqsVb7/9dsDyHa688kp5+/XXX4ckST3WGY2WLl0qb7tcLjQ3N0ewNUREFCkMuomIiIawkydP4j//8z+7Ta+rq8Mzzzwj7991111dFiMbN24c5s6dK+8/8MADAVf97vD444+jvr4eAJCcnIxbb721S56HHnoIKpX3a8qXX36JF198MbgXNAj8V1vvju+QfJVKpXgUGRERDR0MuomIiIYwnU6HFStW4Pe//z1EUVSkHT16FAsXLpQD5JycHPzbv/1bwHqef/55qNVqAMDnn3+OG264QS7Xwel04rHHHlME+U8++WTAFcrHjBmDn//85/L+Y489hgcffLDb3uI9e/Zg+fLlKCkpCeJVD8ysWbNw66234uOPP4bT6QyY5/jx47j99tvl/fnz50On04W9bUREFH00kW4AERERBW/9+vVB97QC3keCvfTSS92mv/TSS3jooYfw0EMP4eWXX8Z3v/tdmEwmHD9+HF988YUciGs0Gvz5z39Genp6wHpmz56NF154AY888ggA4MMPP0RBQQEuvfRSjBgxAmfPnsXWrVvR1NQkl7nuuuu6DeIB4LnnnkNpaSk+/PBDAMBrr72GN998E7NmzUJRURE0Gg1qa2vx1VdfyYutPfTQQ0Ffm/5yuVxYu3Yt1q5dC6PRiClTpqC4uBjJyck4e/YsTp06hX379sn5jUYjXn755bC3i4iIohODbiIiohiyd+9e7N27N+j8KSkpPQbd11xzDfR6PX72s5+hsrJSMde6Q2pqKv785z9j8eLFPZ7r3//935GWloaHH34YbW1tcDgc2LBhQ5d8arUaDzzwAF555ZUen5ut0WjwwQcf4IknnsArr7wCh8MBp9OJ7du3Y/v27QHrNRgMPbYxFHwfaWaz2bB7927s3r07YN6ioiL85S9/wZQpU8LeLiIiik4MuomIiIa4++67DxdffDFWrVqFTZs2obKyEgBQWFiIq6++Gg8++CDy8vKCquuuu+7CNddcgz/+8Y/4+OOPcfz4cTQ3NyMpKQkjRozAggULcOeddyqeZ90TlUqF3/zmN7jvvvuwZs0abNy4Ed9++y0aGxuh0WiQnZ2NiRMnYv78+fje976HYcOG9fs6BOvgwYPYtWsXtm7dij179uDYsWOorq6G1WpFQkICcnNzccEFF2Dp0qW4+eabodfrw94mIiKKXoIUi8uBEhERUb8VFhaivLwcAFBWVqZ4PBcRERGFFhdSIyIiIiIiIgoTBt1EREREREREYcKgm4iIiIiIiChMGHQTERERERERhQmDbiIiIiIiIqIwYdBNREREREREFCZ8ZBgRERERERFRmLCnm4iIiIiIiChMGHQTERERERERhQmDbiIiIiIiIqIwYdBNREREREREFCYMuomIiIiIiIjChEE3ERERERERUZgw6CYiIiIiIiIKEwbdRERERERERGHCoJuIiIiIiIgoTP4/EAeZ5n9A4WwAAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], "source": [ "template_2d = template.reshape((p, p))\n", "power_over_training_plot = plot.plot_training_power_over_time(template_2d, model, device, param_history, X, p, save_path=None, show=False) " - ] + ], + "execution_count": null, + "outputs": [], + "id": "b1965705" }, { "cell_type": "code", - "execution_count": null, - "id": "d0319335", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAABbsAAASmCAYAAAAHwHZ+AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAZUtJREFUeJzs3Xl0lfWdP/BPDBAgcWFHqbKJYmFURJ1OtQa1uBS1aCvVEQSsW8VqddC6UB0XUCpYHTsu6BSquOJSfwVpx1rsOLWO0rHWtpaxKIgoIFaFImvy/P7gkDYNQsCHPHyT1+uce473We73fWPy4eadu5RkWZYFAAAAAAAkbIeiAwAAAAAAwKel7AYAAAAAIHnKbgAAAAAAkqfsBgAAAAAgecpuAAAAAACSp+wGAAAAACB5ym4AAAAAAJKn7AYAAAAAIHnKbgAAAAAAkqfsBgAAAAAgecru7diUKVOipKQkWrZsGQsXLqyzf8CAAdG3b98CkjW81157LY455pioqKiItm3bxrBhw+K9994rOhY0aWbUei+++GKcd9550b9//2jevHmUlJQUHQkIMyoiorq6OqZMmRInnHBC7L777lFeXh59+/aN66+/PlatWlV0PGjSzKj17r777qisrIxOnTpFWVlZdO/ePUaOHBnz5s0rOho0aWZUXWvXro3PfvazUVJSEhMmTCg6Dpug7E7A6tWr48Ybbyw6RmHefvvtOOyww+JPf/pTjBs3LkaPHh0zZsyIgQMHxpo1a4qOB01eU59RTz31VNxzzz1RUlISPXr0KDoO8Hea8oz6+OOPY+TIkfHee+/FueeeG7fcckscfPDBcfXVV8exxx4bWZYVHRGavKY8oyIiXn755ejevXtceumlcccdd8TQoUNj5syZcdBBB8U777xTdDxo8pr6jPpbt912W7z11ltFx6AelN0J2H///ePuu+/ebv6xX7VqVVRXVzfYeuPGjYsVK1bEz3/+87jgggviiiuuiEceeSReeeWVmDJlSoPlADauqc+ob3zjG/HRRx/F7NmzY+DAgQ22LlA/TXlGtWjRIn75y1/Gr371q7jyyivjrLPOih/84Adx9dVXx7PPPhvPPPNMg+QAPllTnlEREbfffntMmTIl/uVf/iXOOOOMuO6662LGjBmxdOnSuPfeexssB7BxTX1GbbBkyZK49tpr49vf/naDr82WU3Yn4Iorroiqqqp6/zVt6tSp0b9//2jVqlW0bds2TjnllFiwYEGtY7p16xYjRoyoc+6AAQNiwIABNdefffbZKCkpiYceeijGjBkTXbp0idatW8eyZcsiImLatGk1a7Vv3z6GDh1a5yUuI0aMiIqKili4cGEMHjw4KioqokOHDjF69Oioqqra7P157LHH4rjjjos99tijZtsXv/jF2GuvveKRRx6p19cE2Haa+ozq1KlTtGrVql73HWh4TXlGtWjRIj7/+c/X2X7iiSdGxPq3iQOK1ZRn1Cfp1q1bRER8+OGHW3U+kB8zar3LLrss9t577xg6dGi9z6E4yu4EdO/ePU4//fR6/TVt7Nixcfrpp0evXr3i5ptvjm9961vxzDPPxGGHHfapHixs+Av76NGjY9y4cdGiRYuYMmVKDBkyJEpLS+OGG26Is846Kx5//PE49NBD66xVVVUVRx99dLRr1y4mTJgQlZWVMXHixJg0adIm1124cGEsWbIkDjzwwDr7Dj744Hj55Ze3+j4B+WjKMwrY/plRdS1atCgiItq3b7/V9wnIhxm13vvvvx9LliyJ2bNnx8iRIyMi4sgjj9zq+wTkw4xa/xlNP/zhD+OWW27x+UypyNhuTZ48OYuI7KWXXsrmzp2bNWvWLLvgggtq9ldWVmZ9+vSpuT5v3rystLQ0Gzt2bK3befXVV7NmzZrV2t61a9ds+PDhddasrKzMKisra67PmjUri4isR48e2ccff1yzfc2aNVnHjh2zvn37ZitXrqzZPn369Cwisquuuqpm2/Dhw7OIyK699tpaa/Xr1y/r37//Jr8GL730UhYR2b333ltn3yWXXJJFRLZq1apN3gawbZhRdY0aNSrzTytsH8yoT/bFL34x22mnnbIPPvhgq84HPj0zqraysrIsIrKIyNq1a5f927/9W73PBfJnRq1XXV2dHXzwwdmpp56aZVmWvfnmm1lEZDfddNNmz6U4ntmdiB49esSwYcNi0qRJ8e677270mMcffzyqq6tjyJAhsXTp0ppL586do1evXjFr1qytXn/48OG1XqY/e/bsWLJkSZx33nnRsmXLmu2DBg2K3r17x4wZM+rcxrnnnlvr+he+8IV44403NrnuypUrIyKirKyszr4N6244BihOU51RQBrMqL8aN25c/OxnP4sbb7wxdtllly0+H8ifGRUxc+bMeOqpp2LixImxxx57xIoVK7bingDbQlOeUVOmTIlXX301xo8fv9X5aXjK7oSMGTMm1q1b94nvlfT6669HlmXRq1ev6NChQ63La6+9FkuWLNnqtbt3717r+vz58yMiYu+9965zbO/evWv2b9CyZcvo0KFDrW1t2rSJDz74YJPrbhhoq1evrrNv1apVtY4BitUUZxSQDjMq4uGHH44xY8bE17/+9fjGN76xRecC21ZTn1GHH354HHvssXHxxRfHtGnT4pprronvf//79T4f2Laa4oxatmxZXH755XHJJZfE7rvvvjXRKUizogNQfz169IihQ4fGpEmT4rLLLquzv7q6OkpKSmLmzJlRWlpaZ39FRUXNf3/S+wxVVVVt9NxPWyhv7DbrY9ddd42I2OhfD999991o27btRp/1DTS8pjijgHQ09Rn19NNPx+mnnx6DBg2KO++881PfHpCvpj6j/lbPnj2jX79+cf/998f555+f620DW6cpzqgJEybEmjVr4mtf+1rMmzcvIiLefvvtiIj44IMPYt68ebHbbrtFixYtPlU+8qfsTsyYMWNi6tSpG30JRc+ePSPLsujevXvstddem7ydNm3abPQDAubPnx89evTYbI6uXbtGRMScOXPiiCOOqLVvzpw5Nfs/rS5dukSHDh1i9uzZdfa9+OKLsf/+++eyDpCPpjajgLQ01Rn1P//zP3HiiSfGgQceGI888kg0a+ZXANgeNdUZtTErV67c6Kt7geI0tRn11ltvxQcffBB9+vSps2/cuHExbty4ePnll/VS2yFvY5KYnj17xtChQ+Ouu+6KRYsW1dp30kknRWlpaVxzzTWRZVmtfVmWxfvvv1/rdl544YVYs2ZNzbbp06fHggUL6pXjwAMPjI4dO8add95Z60HIzJkz47XXXotBgwZtzd3bqK985St1sj3zzDPxf//3f3HyySfntg7w6TXFGQWkoynOqA23161bt5g+fbq3f4PtWFObUevWrdvo2wi8+OKL8eqrr8aBBx6YyzpAPprajLrgggviiSeeqHW56667IiJixIgR8cQTT9R5ixW2D57WkaArr7wy7rvvvpgzZ06tvzD17Nkzrr/++rj88stj3rx5MXjw4Nhxxx3jzTffjCeeeCLOPvvsGD16dEREnHnmmfHoo4/GMcccE0OGDIm5c+fG1KlTo2fPnvXK0Lx58xg/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+Z/jmWeeiXbt2sX111+/1fcJyE9TnVF/b9myZTFjxoz40pe+FLvsssuW3Qlgm2nKM6p169ax9957x/Dhw2PatGnxgx/8IHbdddc46aST4k9/+tNW3ycgP011Rh1wwAHxj//4jzF+/PiYPHlyzJs3L2bOnBnnnHNONG/ePFauXLnV94ltS9mdkDFjxsS6des+8b2SXn/99ciyLHr16hUdOnSodXnttddiyZIlW7129+7da12fP39+RETsvffedY7t3bt3zf4NWrZsGR06dKi1rU2bNvHBBx9sVZ6LLroodthhh/jZz362VecD+WuKM2rDg67u3bvHP/7jP9Zsr6ioiOOPPz5efPHFWLduXf3vCLDNNMUZ9fcee+yxWLVqlbcwge1QU51RJ598crz11lsxZcqU+OpXvxojR46MZ599NtasWRNXXnnllt4VYBtpqjPqsccei/322y/OOOOM6N69exx//PExZMiQ6NevX1RUVGzpXaGBNCs6APXXo0ePGDp0aEyaNCkuu+yyOvurq6ujpKQkZs6cGaWlpXX2/+0P4t9+AMjfqqqq2ui5n/bDQTZ2m59Gq1atol27dvHnP/8519sFtl5TnFEbPpG8U6dOdfZ17Ngx1q5dGytWrIidd975U+UDPr2mOKP+3v333x8777xzHHfccbncHpCfpjij3njjjfjJT35S531z27ZtG4ceemj88pe//FS5gPw0xRkVEdGlS5f47//+73j99ddj0aJF0atXr+jcuXPstttusddee32qXGw7yu7EjBkzJqZOnRrjx4+vs69nz56RZVl07959sz90bdq02egHBMyfPz969Oix2Rxdu3aNiIg5c+bEEUccUWvfnDlzavZvK8uXL4+lS5fW+escUKymNqN222236Ny5c51P/Y6IeOedd6Jly5ax44475rIW8Ok1tRn1t959992YNWtWjBgxIsrKynK/feDTa2ozavHixRGxvuD6e2vXrvXqONjONLUZ9bd69eoVvXr1ioiIP/zhD/Huu+/GiBEjcl+HfHgbk8T07Nkzhg4dGnfddVcsWrSo1r6TTjopSktL45prroksy2rty7Is3n///Vq388ILL8SaNWtqtk2fPj0WLFhQrxwHHnhgdOzYMe68886aT6iNiJg5c2a89tprMWjQoK25e3WsWrUqli9fXmf7ddddF1mWxTHHHJPLOkA+mtqMioj42te+FgsWLIinn366ZtvSpUvjySefjCOOOCJ22ME/tbC9aIozaoOHHnooqqurvYUJbMea2ozac889Y4cddoiHH3641n16++2347nnnot+/frlsg6Qj6Y2ozamuro6Lr300mjdunWd9wFn++GZ3Qm68sor47777os5c+ZEnz59arb37Nkzrr/++rj88stj3rx5MXjw4Nhxxx3jzTffjCeeeCLOPvvsGD16dEREnHnmmfHoo4/GMcccE0OGDIm5c+fG1KlTo2fPnvXK0Lx58xg/fnyMHDkyKisr49RTT43FixfHrbfeGt26dYuLLrool/u6aNGi6NevX5x66qnRu3fviIj46U9/Gk899VQcc8wx8eUvfzmXdYD8NKUZFRFx+eWXxyOPPBJf+cpX4uKLL46dd9457rzzzli7dm2MGzcut3WAfDS1GbXB/fffH7vttlsMGDAg99sG8tOUZlSHDh3ijDPOiHvuuSeOPPLIOOmkk2L58uVx++23x8qVK+Pyyy/PZR0gP01pRkVEXHjhhbFq1arYf//9Y+3atfHAAw/Eiy++GD/84Q9jjz32yG0dcpax3Zo8eXIWEdlLL71UZ9/w4cOziMj69OlTZ99jjz2WHXrooVl5eXlWXl6e9e7dOxs1alQ2Z86cWsdNnDgx69KlS1ZWVpYdcsgh2ezZs7PKysqssrKy5phZs2ZlEZFNmzZtoxkffvjhrF+/fllZWVnWtm3b7LTTTsvefvvtOlnLy8vrnHv11Vdnm/sW/OCDD7KhQ4dme+65Z9a6deusrKws69OnTzZu3LhszZo1mzwX2LbMqL+aO3duduKJJ2Y77bRT1qpVq+yII47IXnzxxXqdC2wbZtRf/fGPf8wiIrv44ovrdTyw7ZlR661duza77bbbsv333z+rqKjIKioqssMPPzz7+c9/vtlzgW3HjPrr12G//fbLysvLsx133DE78sgjzacElGTZ372+AAAAAAAAEuONRAEAAAAASJ6yGwAAAACA5Cm7AQAAAABInrIbAAAAAIDkKbsBAAAAAEieshsAAAAAgOQpuwEAAAAASF6z+h540PCbt2WOBldSnRUdIVfL92hcf7focPg7RUfI1bsv7lp0hFy9fsXFRUeoY8/vNq4ZVf5WSdERclW2rLroCLn6oHfj+v+zpsuaoiPkav7wy4qOUMf+08cUHSFX+3Vs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zKj6/663QXV1dXzzm9+M8vLybZyOLaXs3o7sv//+cffdd8c777xTdJSIiFi1alVUV1c32Hrf+MY34qOPPorZs2fHwIEDP/G4lStXxpVXXhmDBg2KRx99NM4666y4995747TTTovrrrsuPvjggwbLDE2JGVW/GRUR8Ytf/CKWLl0aM2fOjLKysgZKCE2bGVW/GXX44YfHW2+9FQ888ECMGjUqLrzwwnj++eejd+/ecdVVVzVYXmhqzKj6zai2bdvGCy+8EN/97nfjvPPOi3PPPTfuvffeGDVqVDz44IOxaNGiBssMTYkZVf/f9TaYNGlSLFiwIM4888xtnI4tpezejlxxxRVRVVVV77+mTZ06Nfr37x+tWrWKtm3bximnnBILFiyodUy3bt02+vL5AQMGxIABA2quP/vss1FSUhIPPfRQjBkzJrp06RKtW7eOZcuWRUTEtGnTatZq3759DB06tM5LXEaMGBEVFRWxcOHCGDx4cFRUVESHDh1i9OjRUVVVtdn706lTp2jVqtVmj5s1a1a8//77cd5559XaPmrUqFixYkXMmDFjs7cBbDkzqn4zKiKia9eu9X7pG5APM6p+M6pPnz7Rvn37WtvKysriS1/6Urz99tuxfPnyzd4GsOXMqPo/jtqYbt26RUTEhx9+uNW3AXwyM2rLZtSf//znGDNmTFx77bWxyy671Ps8GoayezvSvXv3OP300+v117SxY8fG6aefHr169Yqbb745vvWtb8UzzzwThx122Kd6AHDdddfFjBkzYvTo0TFu3Lho0aJFTJkyJYYMGRKlpaVxww03xFlnnRWPP/54HHrooXXWqqqqiqOPPjratWsXEyZMiMrKypg4cWJMmjRpqzP9vZdffjkiIg488MBa2/v37x877LBDzX4gX2YUsD0zoz6dRYsWRevWraN169bbfC1oisyoLbNmzZpYunRpLFiwIJ544omYMGFCdO3aNfbcc8/c1wLMqC31ne98Jzp37hznnHNO7rdNDjIKN3ny5CwispdeeimbO3du1qxZs+yCCy6o2V9ZWZn16dOn5vq8efOy0tLSbOzYsbVu59VXX82aNWtWa3vXrl2z4cOH11mzsrIyq6ysrLk+a9asLCKyHj16ZB9//HHN9jVr1mQdO3bM+vbtm61cubJm+/Tp07OIyK666qqabcOHD88iIrv22mtrrdWvX7+sf//+9f+CZFk2atSo7JO+PUeNGpWVlpZudF+HDh2yU045ZYvWAjbNjKprUzPq75WXl2/0PgL5MKPq2pIZlWVZ9vrrr2ctW7bMhg0btkXrAJtnRtVVnxn14IMPZhFRcznwwAOz3/72t1u0DrB5ZlRdm5tRr7zySlZaWpr99Kc/zbIsy66++uosIrL33ntvi9Zh2/HM7u1Mjx49YtiwYTFp0qR49913N3rM448/HtXV1TFkyJBYunRpzaVz587Rq1evmDVr1lavP3z48Fov3Zg9e3YsWbIkzjvvvGjZsmXN9kGDBkXv3r03+pYh5557bq3rX/jCF+KNN97Y6kx/b+XKldGiRYuN7mvZsmWsXLkyt7WA2swoYHtmRm25jz/+OE4++eRo1apVk/5gKmgIZlT9HX744fH000/HtGnT4txzz43mzZvHihUrcl8H+Cszqn4uuOCCOPbYY+Ooo47K9XbJj7J7OzRmzJhYt27dJ/7C8frrr0eWZdGrV6/o0KFDrctrr70WS5Ys2eq1u3fvXuv6/PnzIyJi7733rnNs7969a/Zv0LJly+jQoUOtbW3atMn1QyNbtWoVa9as2ei+VatWfar3ggM2z4wCtmdmVP1VVVXFKaecEn/4wx/i0Ucfjd12222brAP8lRlVP506dYovfvGL8dWvfjXuuOOOOO6442LgwIE+oBK2MTNq0x5++OF4/vnnY+LEibndJvlrVnQA6urRo0cMHTo0Jk2aFJdddlmd/dXV1VFSUhIzZ86M0tLSOvsrKipq/vuTPiCtqqpqo+d+2qJ4Y7eZt1133TWqqqpiyZIl0bFjx5rta9asiffff98varCNmVHA9syMqr+zzjorpk+fHvfff38cccQRDbo2NFVm1Nb56le/GldeeWU8+eST3iMXtiEzatMuueSSOPnkk6NFixYxb968iPjrB+cuWLAg1qxZo5PaDii7t1NjxoyJqVOnxvjx4+vs69mzZ2RZFt27d4+99tprk7fTpk2bjX5AwPz586NHjx6bzdG1a9eIiJgzZ06dX4LmzJlTs78h7b///hGx/iUtX/rSl2q2z549O6qrq2v2A9uOGQVsz8yozbvkkkti8uTJccstt8Spp55aWA5oisyoLbfhrSo/+uijgpNA42dGfbIFCxbEAw88EA888ECdfQcccEDst99+8Zvf/KbBc1GbtzHZTvXs2TOGDh0ad911V52Xap100klRWloa11xzTWRZVmtflmXx/vvv17qdF154odbbfkyfPj0WLFhQrxwHHnhgdOzYMe68885YvXp1zfaZM2fGa6+9FoMGDdqau/epHHHEEdG2bdu44447am2/4447onXr1oVkgqbGjAK2Z2bUpt10000xYcKEuOKKK+LCCy8sJAM0ZWbUJ1u6dGmd+x0Rcc8990TE+szAtmVGfbInnniizuVrX/taRETce++98b3vfa/BM1GXZ3Zvx6688sq47777Ys6cOdGnT5+a7T179ozrr78+Lr/88pg3b14MHjw4dtxxx3jzzTfjiSeeiLPPPjtGjx4dERFnnnlmPProo3HMMcfEkCFDYu7cuTF16tTo2bNnvTI0b948xo8fHyNHjozKyso49dRTY/HixXHrrbdGt27d4qKLLsrt/s6fPz/uu+++iFj/LO2IiOuvvz4i1v9Fb9iwYRGx/qUt1113XYwaNSpOPvnkOProo+O5556LqVOnxtixY6Nt27a5ZQI+mRm18RkVEfHjH/84XnnllYiIWLt2bfz2t7+tOfaEE06IfffdN7dcwMaZURufUU888URceuml0atXr9hnn31i6tSptW5n4MCB0alTp9xyARtnRm18Rk2dOjXuvPPOGDx4cPTo0SOWL18eP/3pT+Ppp5+O448/3lsuQQMxozY+owYPHlzn3A3P5D722GOjffv2uWXiU8go3OTJk7OIyF566aU6+4YPH55FRNanT586+x577LHs0EMPzcrLy7Py8vKsd+/e2ahRo7I5c+bUOm7ixIlZly5dsrKysuyQQw7JZs+enVVWVmaVlZU1x8yaNSuLiGzatGkbzfjwww9n/fr1y8rKyrK2bdtmp512Wvb222/XyVpeXl7n3Kuvvjqrz7fahgwbu/xt1g0mTZqU7b333lmLFi2ynj17Zt/73vey6urqza4DbBkzqnaG+syoDV+XjV0mT5682bWA+jOjamfY3IzacHufdJk1a9Zm1wLqz4yqnWFzM+qll17KTj755GyPPfbIysrKsvLy8uyAAw7Ibr755mzt2rWbXQfYMmZU7Qz17aM2tsZ777232XVoGCVZtpHXCAEAAAAAQEK8ZzcAAAAAAMlTdgMAAAAAkDxlNwAAAAAAyVN2AwAAAACQPGU3AAAAAADJU3YDAAAAAJA8ZTcAAAAAAMlTdgMA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uu++++KAAw6I0tLSOPLIIxswNTQdZlT9ZlR1dXUMHDgwbr/99jjxxBPjtttui1NPPTWmTZsWn//852P58uUNmBqaDjOqfjNq2bJlceihh8Zjjz0W55xzTkyYMCF23HHHGDJkSDzwwAMNmJhNyijc5MmTs4jI9t9//6ysrCxbuHBhrf2VlZVZnz59GjzXypUrs6qqqgZbb9GiRdnHH3+cZVmWjRo1KtvUt2dEZKNGjWqoaNCkmVHrbcmMOvbYY7Pu3btnS5cubah40GSZUettyYz6ex9//HG24447ZgMHDtxW8aDJMqPWq++M+uUvf5lFRPb973+/1vYf/OAHWURkjz/++DbPCk2JGbVefWfUd7/73SwismeeeaZmW1VVVXbQQQdlnTt3zlavXt0gedk0z+zejlxxxRVRVVVV77+mTZ06Nfr37x+tWrWKtm3bximnnBILFiyodUy3bt1ixIgRdc4dMGBADBgwoOb6s88+GyUlJfHQQw/FmDFjokuXLtG6detYtmxZRERMmzatZq327dvH0KFD67zEZcSIEVFRURELFy6MwYMHR0VFRXTo0CFGjx4dVVVVm70/nTp1ilatWtXrvm+wcuXKWLVq1RadA2wdM6p+M+qPf/xjzJw5My655JJo165drFq1KtauXbvZ84BPx4za8sdRG/z4xz+O5cuXx2mnnbZV5wObZ0bVb0ZtyNSpU6da23fdddeIiK2ec8CmmVH1m1HPPfdcdOjQIY444oiabTvssEMMGTIkFi1aFL/4xS82extse8ru7Uj37t3j9NNPj7vvvjveeeedTR47duzYOP3006NXr15x8803x7e+9a145pln4rDDDosPP/xwqzNcd911MWPGjBg9enSMGzcuWrRoEVOmTIkhQ4ZEaWlp3HDDDXHWWWfF448/HoceemidtaqqquLoo4+Odu3axYQJE6KysjImTpwYkyZN2upMn2TKlClRXl4erVq1is9+9rNeMgLbmBlVPz/72c8iYv0DpiOPPDJatWoVrVq1imOPPTbmzZuX2zpAbWbU1rv//vujVatWcdJJJ23TdaApM6Pq58ADD4zy8vL4zne+Ez//+c9j4cKF8Ytf/CIuvfTSOOigg+KLX/xibmsBf2VG1c/q1as3Woq3bt06IiJ+/etf57YWn0LRTy3nry8beemll7K5c+dmzZo1yy644IKa/X//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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], "source": [ "neuron_indices = list(range(20))\n", "group= 'cnxcn'\n", "print(neuron_indices)\n", "neuron_weights_plot = plot.plot_neuron_weights(group, model, p, neuron_indices=neuron_indices, show=True)" - ] + ], + "execution_count": null, + "outputs": [], + "id": "d0319335" }, { "cell_type": "code", - "execution_count": null, - "id": "80fc35d9", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "x shape: torch.Size([1, 50]), y shape: torch.Size([1, 25])\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], "source": [ "idx = 13\n", "plot.plot_model_outputs(p, model, X, Y, idx)" - ] + ], + "execution_count": null, + "outputs": [], + "id": "80fc35d9" }, { "cell_type": "code", - "execution_count": null, - "id": "296b3d56", "metadata": {}, + "source": [], + "execution_count": null, "outputs": [], - "source": [] + "id": "296b3d56" } ], "metadata": { @@ -373,4 +233,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} +} \ No newline at end of file diff --git a/setcwd.py b/setcwd.py index a4637eb..1c35740 100644 --- a/setcwd.py +++ b/setcwd.py @@ -3,8 +3,7 @@ It uses root of github directory to make sure everyone's code runs from the same directory, called current working directory cwd. -It adds the python code in the parent directory of the working directory -in the list of paths. +It adds the repo root to sys.path so imports work correctly. Usage: @@ -25,40 +24,21 @@ def main(): gitroot_path = subprocess.check_output( ["git", "rev-parse", "--show-toplevel"], universal_newlines=True - ) - - print("Git root path: ", gitroot_path) # /home/adele/code/gagf-agf/ - - os.chdir(os.path.join(gitroot_path[:-1], "gagf")) - print("Working directory: ", os.getcwd()) # /home/adele/code/group-agf/ - - sys_dir = os.path.dirname(os.getcwd()) - sys.path.append(sys_dir) # /home/adele/code/group-agf - print("Directory added to path: ", sys_dir) - group_learning_dir = os.path.join(sys_dir, "gagf", "group_learning") - sys.path.append(group_learning_dir) - print("Directory added to path: ", group_learning_dir) - saved_datasets_dir = os.path.join(group_learning_dir, "saved_datasets") - sys.path.append(saved_datasets_dir) - print("Directory added to path: ", saved_datasets_dir) - notebook_dir = os.path.join(os.getcwd(), "notebooks") - sys.path.append(notebook_dir) - print("Directory added to path: ", notebook_dir) - saved_models_dir = os.path.join(notebook_dir, "saved_models") - sys.path.append(saved_models_dir) - print("Directory added to path: ", saved_models_dir) - - model_save_dir = "/tmp/adele/" - sys.path.append(model_save_dir) - print("Directory added to path: ", model_save_dir) + ).strip() + + os.chdir(gitroot_path) + print("Working directory: ", os.getcwd()) + + if gitroot_path not in sys.path: + sys.path.insert(0, gitroot_path) + print("Directory added to path: ", gitroot_path) def get_root_dir(): """Return the root directory of the git repository.""" - gitroot_path = subprocess.check_output( + return subprocess.check_output( ["git", "rev-parse", "--show-toplevel"], universal_newlines=True - ) - return gitroot_path[:-1] # Remove trailing newline + ).strip() diff --git a/test/test_notebooks.py b/test/test_notebooks.py index e361a0a..f39722d 100644 --- a/test/test_notebooks.py +++ b/test/test_notebooks.py @@ -39,14 +39,19 @@ def get_notebooks_dir(): # Notebooks to skip (with reasons) SKIP_NOTEBOOKS = { - # These notebooks have hardcoded paths to /home/facosta/... which don't exist - "seq_mlp_group_size": "Has hardcoded paths to another user's filesystem", - "rnn_gagf": "Has hardcoded paths to another user's filesystem", + # These notebooks have hardcoded paths to /home/facosta/ which don't exist + "seq_mlp_group_size": "Has hardcoded paths to /home/facosta/ filesystem", + "rnn_gagf": "Has hardcoded paths to /home/facosta/ filesystem", # These notebooks require pre-trained model files or external data - "paper_figures": "Requires pre-trained model files not included in repo", + "paper_figures": "Requires pre-trained model .pkl files not included in repo", # These notebooks have import/code issues that need separate debugging - "2D": "Has import issues with missing functions (get_power_2d)", - # These notebooks also don't run + "2D": "Missing function: cannot import 'get_power_2d' from gagf.rnns.utils", + "znz_znz": "Missing function: datasets.choose_template() does not exist", + "seq_mlp": "Plotting error: Invalid vmin/vmax values during visualization", + # These notebooks have visualization code with hardcoded indices that fail with reduced p + "C_n": "IndexError in visualization code when running with reduced parameters", + "dihedral": "IndexError in visualization code when running with reduced parameters", + "modular_arithmetic": "IndexError in visualization code when running with reduced parameters", } From 201cb1c92088d80f80eea79f3cd18a719b6ecfdd Mon Sep 17 00:00:00 2001 From: Nina Miolane Date: Fri, 6 Feb 2026 03:41:22 +0000 Subject: [PATCH 21/30] Add GI suite + lint the repo + precommit hook --- .github/workflows/ci.yml | 60 + .gitignore | 4 +- .pre-commit-config.yaml | 36 + gagf/rnns/README.md | 12 +- gagf/rnns/config.yaml | 36 +- gagf/rnns/create_combined_power_plot.py | 264 ++-- gagf/rnns/create_combined_power_plot_k4_k5.py | 264 ++-- gagf/rnns/datamodule.py | 325 ++--- gagf/rnns/main.py | 1055 ++++++++-------- gagf/rnns/model.py | 65 +- gagf/rnns/optimizers.py | 165 ++- gagf/rnns/run_sweep.py | 245 ++-- gagf/rnns/sweep_configs/example_sweep.yaml | 1 - .../sweep_configs/learning_rate_sweep.yaml | 1 - gagf/rnns/sweep_configs/model_size_sweep.yaml | 1 - .../sweep_configs/onehot_scaling_sweep.yaml | 1 - gagf/rnns/train.py | 95 +- gagf/rnns/utils.py | 821 ++++++------ group_agf/binary_action_learning/datasets.py | 43 +- .../binary_action_learning/default_config.py | 28 +- .../group_fourier_transform.py | 18 +- group_agf/binary_action_learning/main.py | 46 +- group_agf/binary_action_learning/models.py | 6 +- group_agf/binary_action_learning/plot.py | 61 +- group_agf/binary_action_learning/power.py | 50 +- group_agf/binary_action_learning/templates.py | 15 +- group_agf/binary_action_learning/train.py | 47 +- notebooks/fourier_power_only.svg | 1120 ++++++++--------- notebooks/loss-without-lines.svg | 610 ++++----- pyproject.toml | 40 +- setcwd.py | 4 - test/test_bal_datasets.py | 55 +- test/test_bal_group_fourier_transform.py | 33 +- test/test_bal_models.py | 50 +- test/test_bal_power.py | 12 +- test/test_bal_templates.py | 63 +- test/test_notebooks.py | 18 +- test/test_rnns_datamodule.py | 115 +- test/test_rnns_model.py | 57 +- test/test_rnns_optimizers.py | 61 +- test/test_rnns_utils.py | 87 +- 41 files changed, 3142 insertions(+), 2948 deletions(-) create mode 100644 .github/workflows/ci.yml create mode 100644 .pre-commit-config.yaml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..bf8a2fc --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,60 @@ +# Continuous Integration workflow for group-agf +# Runs linting and unit tests on every pull request + +name: CI + +on: + pull_request: + branches: [main, master] + push: + branches: [main, master] + +jobs: + lint: + name: Lint + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.12' + + - name: Install ruff + run: pip install ruff + + - name: Run ruff linter + run: ruff check . --exclude "*.ipynb" + + - name: Run ruff formatter check + run: ruff format --check . --exclude "*.ipynb" + + test: + name: Unit Tests + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.12' + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install torch --index-url https://download.pytorch.org/whl/cpu + pip install numpy scipy pytest + + - name: Install package + run: | + pip install -e . + + - name: Run unit tests + run: | + pytest test/ -v --ignore=test/test_notebooks.py + env: + NOTEBOOK_TEST_MODE: "1" diff --git a/.gitignore b/.gitignore index 4d34dec..a7df437 100644 --- a/.gitignore +++ b/.gitignore @@ -199,9 +199,9 @@ cython_debug/ .abstra/ # Visual Studio Code -# Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore +# Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore # that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore -# and can be added to the global gitignore or merged into this file. However, if you prefer, +# and can be added to the global gitignore or merged into this file. However, if you prefer, # you could uncomment the following to ignore the entire vscode folder # .vscode/ diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..501e63d --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,36 @@ +# Pre-commit hooks for group-agf repository +# Install: pre-commit install +# Run manually: pre-commit run --all-files + +repos: + # General file hygiene + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.5.0 + hooks: + - id: trailing-whitespace + exclude: '\.ipynb$' + - id: end-of-file-fixer + exclude: '\.ipynb$' + - id: check-yaml + - id: check-added-large-files + args: ['--maxkb=1000'] + - id: check-merge-conflict + - id: debug-statements + + # Ruff - Python linting and formatting + - repo: https://github.com/astral-sh/ruff-pre-commit + rev: v0.3.0 + hooks: + # Linter + - id: ruff + args: [--fix, --exit-non-zero-on-fix] + exclude: '\.ipynb$' + # Formatter + - id: ruff-format + exclude: '\.ipynb$' + + # Notebook cell output clearing (optional - uncomment if desired) + # - repo: https://github.com/kynan/nbstripout + # rev: 0.7.1 + # hooks: + # - id: nbstripout diff --git a/gagf/rnns/README.md b/gagf/rnns/README.md index 5031d47..b2d11b4 100644 --- a/gagf/rnns/README.md +++ b/gagf/rnns/README.md @@ -31,7 +31,7 @@ SGD with per-neuron learning rate scaling that exploits model homogeneity. - Learning rate: typically 1.0 for SequentialMLP - Exploits the property: scaling all parameters of neuron i by α scales output by α^degree -### Hybrid (`'hybrid'`) +### Hybrid (`'hybrid'`) Combines per-neuron scaled SGD (for W_in, W_drive, W_out) with Adam (for W_mix). - **Only for QuadraticRNN** - Best for exploiting both MLP-like and recurrent structure @@ -55,7 +55,7 @@ To train a model on modular addition tasks: 1. Edit `gagf/rnns/config.yaml` to specify your experiment. **Key configuration parameters:** - + | Parameter | Options | Description | |-----------|---------|-------------| | `data.dimension` | `1` or `2` | Use 1D cyclic group or 2D product group | @@ -70,7 +70,7 @@ To train a model on modular addition tasks: | `training.learning_rate` | float | Base learning rate | **Example configurations:** - + ```yaml # 1D task with QuadraticRNN data: @@ -82,7 +82,7 @@ To train a model on modular addition tasks: model_type: 'QuadraticRNN' hidden_dim: 200 ``` - + ```yaml # 2D task with SequentialMLP data: @@ -123,7 +123,7 @@ experiments: overrides: model: hidden_dim: 32 - + - name: "hidden_dim_64" overrides: model: @@ -181,4 +181,4 @@ sweeps/ └── seed_2/ ``` -See `gagf/rnns/sweeps/` for more example sweep configurations. \ No newline at end of file +See `gagf/rnns/sweeps/` for more example sweep configurations. diff --git a/gagf/rnns/config.yaml b/gagf/rnns/config.yaml index 8b78cb8..0dc554c 100644 --- a/gagf/rnns/config.yaml +++ b/gagf/rnns/config.yaml @@ -17,27 +17,27 @@ data: # Dimension: 1 for C_p (cyclic group), 2 for C_p1 x C_p2 (product group), 'D3' for Dihedral D3 dimension: D3 # 1 | 2 | 'D3' - + # Group Parameters # For dimension=1: only 'p' is used # For dimension=2: 'p1' and 'p2' are used # For dimension='D3': none of p, p1, p2 are used p: 10 # Cyclic group dimension (1D only) - + p1: 4 #10 # Height/rows dimension (2D only) p2: 4 # Width/cols dimension (2D only) - + k: 5 # Sequence length batch_size: 1000 seed: 5 - + # Template Generation # For dimension=1,2: 'mnist' | 'fourier' | 'gaussian' | 'onehot' # For dimension='D3': 'onehot' | 'custom_fourier' template_type: onehot mnist_label: 4 # MNIST digit (0-9), only if template_type='mnist' n_freqs: 1 # Number of Fourier modes, only if template_type='fourier' - + # D3 custom_fourier template: powers for each irrep's Fourier coefficient # D3 has 3 irreps with dimensions [1, 1, 2], so powers should have 3 values # Large ratio between powers = clearer staircase steps @@ -45,7 +45,7 @@ data: - 0.0 - 2000.0 - 400.0 - + # Dataset Mode (offline training only) mode: exhaustive # 'sampled' | 'exhaustive' num_samples: 1000 @@ -54,16 +54,16 @@ data: # ------------------- model: model_type: SequentialMLP # 'QuadraticRNN' | 'SequentialMLP' - + hidden_dim: 600 # Hidden layer size # Note: SequentialMLP may need larger values (e.g., 600) - + init_scale: 4.5e-3 # Weight initialization scale # Larger k may need larger init_scale - + return_all_outputs: false # true = seq-to-seq guidance (for QuadraticRNN only) - # false = seq-to-one (final output only) - + # false = seq-to-one (final output only) + transform_type: quadratic # 'quadratic' | 'multiplicative' # Only used for QuadraticRNN @@ -71,42 +71,42 @@ model: # ---------------------- training: mode: offline # 'online' | 'offline' - + # Steps/Epochs epochs: 10000 # Used when mode='offline' num_steps: 100 # Used when mode='online' - + # Optimizer optimizer: adam # 'auto' | 'adam' | 'hybrid' | 'per_neuron' # 'auto' selects optimizer based on model: # - SequentialMLP → 'per_neuron' (recommended) # - QuadraticRNN → 'adam' # 'hybrid' is QuadraticRNN-specific only - + learning_rate: 0.00008 # Base learning rate # Recommended settings: # - adam: 1e-3 to 1e-4 # - per_neuron (SequentialMLP): 1.0 (or 0.01 for D3) # - hybrid: see scaling_factor - + betas: - 0.9 - 0.999 # Adam/hybrid beta parameters weight_decay: 0.0 - + # Homogeneity-based scaling parameters scaling_factor: -3 # For 'hybrid' optimizer only (QuadraticRNN) degree: null # For 'per_neuron' optimizer: degree of homogeneity # If null (default), auto-inferred from model: # - SequentialMLP: uses k+1 (k = sequence length) # - Other models: defaults to 2 - + # Training Dynamics grad_clip: 0.1 verbose_interval: 1000 save_param_interval: 10 # Save params every N steps/epochs # Set to null to only save initial & final (memory efficient for sweeps) - + # Early Stopping (optional) # ------------------------- # Stop training early when loss reduction reaches a threshold. diff --git a/gagf/rnns/create_combined_power_plot.py b/gagf/rnns/create_combined_power_plot.py index 2c68093..ad75d80 100644 --- a/gagf/rnns/create_combined_power_plot.py +++ b/gagf/rnns/create_combined_power_plot.py @@ -4,52 +4,55 @@ Each row corresponds to a k value, each column to a scale type (linear, log-x, log-log). """ +import os +from pathlib import Path + +import matplotlib.pyplot as plt import numpy as np import torch -import matplotlib.pyplot as plt import yaml -import os -from pathlib import Path from escnn.group import DihedralGroup -from group_agf.binary_action_learning.group_fourier_transform import compute_group_fourier_coef -from gagf.rnns.model import SequentialMLP + from gagf.rnns.datamodule import build_modular_addition_sequence_dataset_D3 +from gagf.rnns.model import SequentialMLP +from group_agf.binary_action_learning.group_fourier_transform import compute_group_fourier_coef + def load_run_data(run_dir): """Load all necessary data from a run directory.""" run_dir = Path(run_dir) - + # Load config with open(run_dir / "config.yaml") as f: config = yaml.safe_load(f) - + # Load template template = np.load(run_dir / "template.npy") - + # Load parameter history - param_hist = torch.load(run_dir / "param_history.pt", map_location='cpu') - + param_hist = torch.load(run_dir / "param_history.pt", map_location="cpu") + # Get k value - k = config['data']['k'] - + k = config["data"]["k"] + # Create model D3 = DihedralGroup(N=3) group_order = D3.order() template_t = torch.tensor(template, dtype=torch.float32) model = SequentialMLP( p=group_order, - d=config['model']['hidden_dim'], + d=config["model"]["hidden_dim"], template=template_t, k=k, - init_scale=config['model']['init_scale'], + init_scale=config["model"]["init_scale"], ) - + # Generate evaluation data X_eval, Y_eval, _ = build_modular_addition_sequence_dataset_D3( template, k, mode="sampled", num_samples=100, return_all_outputs=False ) X_eval_t = torch.tensor(X_eval, dtype=torch.float32) - + # Compute template power irreps = D3.irreps() n_irreps = len(irreps) @@ -58,123 +61,137 @@ def load_run_data(run_dir): fourier_coef = compute_group_fourier_coef(D3, template, irrep) template_power[i] = irrep.size * np.trace(fourier_coef.conj().T @ fourier_coef) template_power = template_power / group_order - + # Compute param_save_indices - save_interval = config['training'].get('save_param_interval', 10) or 10 + save_interval = config["training"].get("save_param_interval", 10) or 10 param_save_indices = [i * save_interval for i in range(len(param_hist))] - + return { - 'config': config, - 'template': template, - 'param_hist': param_hist, - 'param_save_indices': param_save_indices, - 'model': model, - 'X_eval_t': X_eval_t, - 'D3': D3, - 'template_power': template_power, - 'k': k, + "config": config, + "template": template, + "param_hist": param_hist, + "param_save_indices": param_save_indices, + "model": model, + "X_eval_t": X_eval_t, + "D3": D3, + "template_power": template_power, + "k": k, } + def compute_power_evolution(run_data, num_checkpoints_to_sample=50, num_samples_for_power=100): """Compute power evolution over training.""" - model = run_data['model'] - param_hist = run_data['param_hist'] - param_save_indices = run_data['param_save_indices'] - X_eval_t = run_data['X_eval_t'] - D3 = run_data['D3'] - + model = run_data["model"] + param_hist = run_data["param_hist"] + param_save_indices = run_data["param_save_indices"] + X_eval_t = run_data["X_eval_t"] + D3 = run_data["D3"] + irreps = D3.irreps() n_irreps = len(irreps) - + # Sample checkpoints total_checkpoints = len(param_hist) if total_checkpoints <= num_checkpoints_to_sample: sampled_ckpt_indices = list(range(total_checkpoints)) else: - sampled_ckpt_indices = np.linspace(0, total_checkpoints - 1, num_checkpoints_to_sample, dtype=int).tolist() - + sampled_ckpt_indices = np.linspace( + 0, total_checkpoints - 1, num_checkpoints_to_sample, dtype=int + ).tolist() + epoch_numbers = [param_save_indices[i] for i in sampled_ckpt_indices] - + # Compute model output power at each checkpoint model_powers = np.zeros((len(sampled_ckpt_indices), n_irreps)) X_subset = X_eval_t[:num_samples_for_power] - + for i, ckpt_idx in enumerate(sampled_ckpt_indices): model.load_state_dict(param_hist[ckpt_idx]) model.eval() - + with torch.no_grad(): outputs = model(X_subset) outputs_np = outputs.cpu().numpy() - + powers = np.zeros((len(outputs_np), n_irreps)) for sample_i, output in enumerate(outputs_np): for irrep_i, irrep in enumerate(irreps): fourier_coef = compute_group_fourier_coef(D3, output, irrep) - powers[sample_i, irrep_i] = irrep.size * np.trace(fourier_coef.conj().T @ fourier_coef) + powers[sample_i, irrep_i] = irrep.size * np.trace( + fourier_coef.conj().T @ fourier_coef + ) powers = powers / D3.order() model_powers[i] = np.mean(powers, axis=0) - + return epoch_numbers, model_powers + def create_combined_plot(run_dirs_dict, save_path): """Create 4x3 combined plot.""" # run_dirs_dict: {k: run_dir} - + fig = plt.figure(figsize=(18, 20)) gs = fig.add_gridspec(5, 3, height_ratios=[0.15, 1, 1, 1, 1], hspace=0.3, wspace=0.3) - + # Top row for common parameters ax_title = fig.add_subplot(gs[0, :]) - ax_title.axis('off') - + ax_title.axis("off") + # Load first run to get common parameters first_run_dir = list(run_dirs_dict.values())[0] first_run_data = load_run_data(first_run_dir) - common_config = first_run_data['config'] - + common_config = first_run_data["config"] + # Extract common parameters - hidden_dim = common_config['model']['hidden_dim'] - mode = common_config['data']['mode'] - optimizer = common_config['training']['optimizer'] - + hidden_dim = common_config["model"]["hidden_dim"] + mode = common_config["data"]["mode"] + optimizer = common_config["training"]["optimizer"] + # Create title with common parameters - title_text = f'D3 Power Spectrum Evolution Over Training\n' - title_text += f'Common Parameters: hidden_dim={hidden_dim}, mode={mode}, optimizer={optimizer}' - ax_title.text(0.5, 0.5, title_text, ha='center', va='center', fontsize=14, fontweight='bold', - transform=ax_title.transAxes) - + title_text = "D3 Power Spectrum Evolution Over Training\n" + title_text += f"Common Parameters: hidden_dim={hidden_dim}, mode={mode}, optimizer={optimizer}" + ax_title.text( + 0.5, + 0.5, + title_text, + ha="center", + va="center", + fontsize=14, + fontweight="bold", + transform=ax_title.transAxes, + ) + # Create axes for plots with shared x-axes for each column axes = [] # First create all axes in the first row (no sharing yet) for col in range(3): axes.append([fig.add_subplot(gs[1, col])]) - + # Then create remaining rows sharing x-axis with first row in each column for row in range(1, 4): for col in range(3): - axes[col].append(fig.add_subplot(gs[row+1, col], sharex=axes[col][0])) - + axes[col].append(fig.add_subplot(gs[row + 1, col], sharex=axes[col][0])) + # Convert to row-major format for easier indexing axes = np.array([[axes[col][row] for col in range(3)] for row in range(4)]) - + k_values = sorted(run_dirs_dict.keys()) - + for row_idx, k in enumerate(k_values): run_dir = run_dirs_dict[k] print(f"Loading k={k} from {run_dir}...") run_data = load_run_data(run_dir) - + epoch_numbers, model_powers = compute_power_evolution(run_data) - template_power = run_data['template_power'] - D3 = run_data['D3'] + template_power = run_data["template_power"] + D3 = run_data["D3"] irreps = D3.irreps() - config = run_data['config'] - + config = run_data["config"] + # Get row-specific parameters - learning_rate = config['training']['learning_rate'] - init_scale = config['model']['init_scale'] - + learning_rate = config["training"]["learning_rate"] + init_scale = config["model"]["init_scale"] + # Format init_scale nicely if init_scale >= 1e-3: init_scale_str = f"{init_scale:.0e}" @@ -182,7 +199,7 @@ def create_combined_plot(run_dirs_dict, save_path): init_scale_str = f"{init_scale:.1e}" else: init_scale_str = f"{init_scale:.2e}" - + # Format learning_rate nicely if learning_rate >= 1e-3: lr_str = f"{learning_rate:.0e}" @@ -190,93 +207,114 @@ def create_combined_plot(run_dirs_dict, save_path): lr_str = f"{learning_rate:.1e}" else: lr_str = f"{learning_rate:.2e}" - + # Row label - row_label = f'k={k}, lr={lr_str}, init_scale={init_scale_str}' - + row_label = f"k={k}, lr={lr_str}, init_scale={init_scale_str}" + # Get top irreps top_k_irreps = min(5, len(irreps)) top_irrep_indices = np.argsort(template_power)[::-1][:top_k_irreps] colors_line = plt.cm.tab10(np.linspace(0, 1, top_k_irreps)) - + # Filter for log scales valid_mask = np.array(epoch_numbers) > 0 valid_epochs = np.array(epoch_numbers)[valid_mask] valid_model_powers = model_powers[valid_mask, :] - + # Column 1: Linear scales ax = axes[row_idx, 0] for i, irrep_idx in enumerate(top_irrep_indices): power_values = model_powers[:, irrep_idx] - ax.plot(epoch_numbers, power_values, '-', lw=2, color=colors_line[i], - label=f'Irrep {irrep_idx} (dim={irreps[irrep_idx].size})') - ax.axhline(template_power[irrep_idx], linestyle='--', alpha=0.5, color=colors_line[i]) + ax.plot( + epoch_numbers, + power_values, + "-", + lw=2, + color=colors_line[i], + label=f"Irrep {irrep_idx} (dim={irreps[irrep_idx].size})", + ) + ax.axhline(template_power[irrep_idx], linestyle="--", alpha=0.5, color=colors_line[i]) if row_idx == 3: # Only bottom row shows xlabel - ax.set_xlabel('Epoch') - ax.set_ylabel('Power') + ax.set_xlabel("Epoch") + ax.set_ylabel("Power") if row_idx == 0: - col_title = 'Linear Scales' + col_title = "Linear Scales" else: - col_title = '' - ax.set_title(f'{col_title}\n{row_label}', fontsize=12 if row_idx == 0 else 10) - ax.legend(loc='upper left', fontsize=7) + col_title = "" + ax.set_title(f"{col_title}\n{row_label}", fontsize=12 if row_idx == 0 else 10) + ax.legend(loc="upper left", fontsize=7) ax.grid(True, alpha=0.3) # Hide x-axis labels for non-bottom rows (they're shared) if row_idx < 3: ax.tick_params(labelbottom=False) - + # Column 2: Log x-axis ax = axes[row_idx, 1] for i, irrep_idx in enumerate(top_irrep_indices): power_values = valid_model_powers[:, irrep_idx] - ax.plot(valid_epochs, power_values, '-', lw=2, color=colors_line[i], - label=f'Irrep {irrep_idx} (dim={irreps[irrep_idx].size})') - ax.axhline(template_power[irrep_idx], linestyle='--', alpha=0.5, color=colors_line[i]) - ax.set_xscale('log') + ax.plot( + valid_epochs, + power_values, + "-", + lw=2, + color=colors_line[i], + label=f"Irrep {irrep_idx} (dim={irreps[irrep_idx].size})", + ) + ax.axhline(template_power[irrep_idx], linestyle="--", alpha=0.5, color=colors_line[i]) + ax.set_xscale("log") if row_idx == 3: # Only bottom row shows xlabel - ax.set_xlabel('Epoch (log scale)') - ax.set_ylabel('Power') + ax.set_xlabel("Epoch (log scale)") + ax.set_ylabel("Power") if row_idx == 0: - col_title = 'Log X-axis' + col_title = "Log X-axis" else: - col_title = '' - ax.set_title(f'{col_title}\n{row_label}', fontsize=12 if row_idx == 0 else 10) - ax.legend(loc='upper left', fontsize=7) + col_title = "" + ax.set_title(f"{col_title}\n{row_label}", fontsize=12 if row_idx == 0 else 10) + ax.legend(loc="upper left", fontsize=7) ax.grid(True, alpha=0.3) # Hide x-axis labels for non-bottom rows (they're shared) if row_idx < 3: ax.tick_params(labelbottom=False) - + # Column 3: Log-log scales ax = axes[row_idx, 2] for i, irrep_idx in enumerate(top_irrep_indices): power_values = valid_model_powers[:, irrep_idx] power_mask = power_values > 0 if np.any(power_mask): - ax.plot(valid_epochs[power_mask], power_values[power_mask], '-', lw=2, color=colors_line[i], - label=f'Irrep {irrep_idx} (dim={irreps[irrep_idx].size})') + ax.plot( + valid_epochs[power_mask], + power_values[power_mask], + "-", + lw=2, + color=colors_line[i], + label=f"Irrep {irrep_idx} (dim={irreps[irrep_idx].size})", + ) if template_power[irrep_idx] > 0: - ax.axhline(template_power[irrep_idx], linestyle='--', alpha=0.5, color=colors_line[i]) - ax.set_xscale('log') - ax.set_yscale('log') + ax.axhline( + template_power[irrep_idx], linestyle="--", alpha=0.5, color=colors_line[i] + ) + ax.set_xscale("log") + ax.set_yscale("log") if row_idx == 3: # Only bottom row shows xlabel - ax.set_xlabel('Epoch (log scale)') - ax.set_ylabel('Power (log scale)') + ax.set_xlabel("Epoch (log scale)") + ax.set_ylabel("Power (log scale)") if row_idx == 0: - col_title = 'Log-Log Scales' + col_title = "Log-Log Scales" else: - col_title = '' - ax.set_title(f'{col_title}\n{row_label}', fontsize=12 if row_idx == 0 else 10) - ax.legend(loc='upper left', fontsize=7) + col_title = "" + ax.set_title(f"{col_title}\n{row_label}", fontsize=12 if row_idx == 0 else 10) + ax.legend(loc="upper left", fontsize=7) ax.grid(True, alpha=0.3) # Hide x-axis labels for non-bottom rows (they're shared) if row_idx < 3: ax.tick_params(labelbottom=False) - - plt.savefig(save_path, bbox_inches='tight', dpi=150) + + plt.savefig(save_path, bbox_inches="tight", dpi=150) print(f"\n✓ Saved combined plot to {save_path}") plt.close() + if __name__ == "__main__": # Map k values to run directories # k=2, k=3: 10000 epochs @@ -287,11 +325,11 @@ def create_combined_plot(run_dirs_dict, save_path): 4: "runs/20260114_141256", 5: "runs/20260114_141951", } - + # Verify all directories exist for k, run_dir in run_dirs_dict.items(): if not os.path.exists(run_dir): print(f"Warning: {run_dir} does not exist for k={k}") - + save_path = "runs/combined_power_spectrum_4x3.pdf" create_combined_plot(run_dirs_dict, save_path) diff --git a/gagf/rnns/create_combined_power_plot_k4_k5.py b/gagf/rnns/create_combined_power_plot_k4_k5.py index e9d2e16..ec79a6e 100644 --- a/gagf/rnns/create_combined_power_plot_k4_k5.py +++ b/gagf/rnns/create_combined_power_plot_k4_k5.py @@ -4,52 +4,55 @@ Each row corresponds to a k value, each column to a scale type (linear, log-x, log-log). """ +import os +from pathlib import Path + +import matplotlib.pyplot as plt import numpy as np import torch -import matplotlib.pyplot as plt import yaml -import os -from pathlib import Path from escnn.group import DihedralGroup -from group_agf.binary_action_learning.group_fourier_transform import compute_group_fourier_coef -from gagf.rnns.model import SequentialMLP + from gagf.rnns.datamodule import build_modular_addition_sequence_dataset_D3 +from gagf.rnns.model import SequentialMLP +from group_agf.binary_action_learning.group_fourier_transform import compute_group_fourier_coef + def load_run_data(run_dir): """Load all necessary data from a run directory.""" run_dir = Path(run_dir) - + # Load config with open(run_dir / "config.yaml") as f: config = yaml.safe_load(f) - + # Load template template = np.load(run_dir / "template.npy") - + # Load parameter history - param_hist = torch.load(run_dir / "param_history.pt", map_location='cpu') - + param_hist = torch.load(run_dir / "param_history.pt", map_location="cpu") + # Get k value - k = config['data']['k'] - + k = config["data"]["k"] + # Create model D3 = DihedralGroup(N=3) group_order = D3.order() template_t = torch.tensor(template, dtype=torch.float32) model = SequentialMLP( p=group_order, - d=config['model']['hidden_dim'], + d=config["model"]["hidden_dim"], template=template_t, k=k, - init_scale=config['model']['init_scale'], + init_scale=config["model"]["init_scale"], ) - + # Generate evaluation data X_eval, Y_eval, _ = build_modular_addition_sequence_dataset_D3( template, k, mode="sampled", num_samples=100, return_all_outputs=False ) X_eval_t = torch.tensor(X_eval, dtype=torch.float32) - + # Compute template power irreps = D3.irreps() n_irreps = len(irreps) @@ -58,123 +61,137 @@ def load_run_data(run_dir): fourier_coef = compute_group_fourier_coef(D3, template, irrep) template_power[i] = irrep.size * np.trace(fourier_coef.conj().T @ fourier_coef) template_power = template_power / group_order - + # Compute param_save_indices - save_interval = config['training'].get('save_param_interval', 10) or 10 + save_interval = config["training"].get("save_param_interval", 10) or 10 param_save_indices = [i * save_interval for i in range(len(param_hist))] - + return { - 'config': config, - 'template': template, - 'param_hist': param_hist, - 'param_save_indices': param_save_indices, - 'model': model, - 'X_eval_t': X_eval_t, - 'D3': D3, - 'template_power': template_power, - 'k': k, + "config": config, + "template": template, + "param_hist": param_hist, + "param_save_indices": param_save_indices, + "model": model, + "X_eval_t": X_eval_t, + "D3": D3, + "template_power": template_power, + "k": k, } + def compute_power_evolution(run_data, num_checkpoints_to_sample=50, num_samples_for_power=100): """Compute power evolution over training.""" - model = run_data['model'] - param_hist = run_data['param_hist'] - param_save_indices = run_data['param_save_indices'] - X_eval_t = run_data['X_eval_t'] - D3 = run_data['D3'] - + model = run_data["model"] + param_hist = run_data["param_hist"] + param_save_indices = run_data["param_save_indices"] + X_eval_t = run_data["X_eval_t"] + D3 = run_data["D3"] + irreps = D3.irreps() n_irreps = len(irreps) - + # Sample checkpoints total_checkpoints = len(param_hist) if total_checkpoints <= num_checkpoints_to_sample: sampled_ckpt_indices = list(range(total_checkpoints)) else: - sampled_ckpt_indices = np.linspace(0, total_checkpoints - 1, num_checkpoints_to_sample, dtype=int).tolist() - + sampled_ckpt_indices = np.linspace( + 0, total_checkpoints - 1, num_checkpoints_to_sample, dtype=int + ).tolist() + epoch_numbers = [param_save_indices[i] for i in sampled_ckpt_indices] - + # Compute model output power at each checkpoint model_powers = np.zeros((len(sampled_ckpt_indices), n_irreps)) X_subset = X_eval_t[:num_samples_for_power] - + for i, ckpt_idx in enumerate(sampled_ckpt_indices): model.load_state_dict(param_hist[ckpt_idx]) model.eval() - + with torch.no_grad(): outputs = model(X_subset) outputs_np = outputs.cpu().numpy() - + powers = np.zeros((len(outputs_np), n_irreps)) for sample_i, output in enumerate(outputs_np): for irrep_i, irrep in enumerate(irreps): fourier_coef = compute_group_fourier_coef(D3, output, irrep) - powers[sample_i, irrep_i] = irrep.size * np.trace(fourier_coef.conj().T @ fourier_coef) + powers[sample_i, irrep_i] = irrep.size * np.trace( + fourier_coef.conj().T @ fourier_coef + ) powers = powers / D3.order() model_powers[i] = np.mean(powers, axis=0) - + return epoch_numbers, model_powers + def create_combined_plot(run_dirs_dict, save_path): """Create 2x3 combined plot.""" # run_dirs_dict: {k: run_dir} - + fig = plt.figure(figsize=(18, 10)) gs = fig.add_gridspec(3, 3, height_ratios=[0.15, 1, 1], hspace=0.3, wspace=0.3) - + # Top row for common parameters ax_title = fig.add_subplot(gs[0, :]) - ax_title.axis('off') - + ax_title.axis("off") + # Load first run to get common parameters first_run_dir = list(run_dirs_dict.values())[0] first_run_data = load_run_data(first_run_dir) - common_config = first_run_data['config'] - + common_config = first_run_data["config"] + # Extract common parameters - hidden_dim = common_config['model']['hidden_dim'] - mode = common_config['data']['mode'] - optimizer = common_config['training']['optimizer'] - + hidden_dim = common_config["model"]["hidden_dim"] + mode = common_config["data"]["mode"] + optimizer = common_config["training"]["optimizer"] + # Create title with common parameters - title_text = f'D3 Power Spectrum Evolution Over Training\n' - title_text += f'Common Parameters: hidden_dim={hidden_dim}, mode={mode}, optimizer={optimizer}' - ax_title.text(0.5, 0.5, title_text, ha='center', va='center', fontsize=14, fontweight='bold', - transform=ax_title.transAxes) - + title_text = "D3 Power Spectrum Evolution Over Training\n" + title_text += f"Common Parameters: hidden_dim={hidden_dim}, mode={mode}, optimizer={optimizer}" + ax_title.text( + 0.5, + 0.5, + title_text, + ha="center", + va="center", + fontsize=14, + fontweight="bold", + transform=ax_title.transAxes, + ) + # Create axes for plots with shared x-axes for each column axes = [] # First create all axes in the first row (no sharing yet) for col in range(3): axes.append([fig.add_subplot(gs[1, col])]) - + # Then create remaining rows sharing x-axis with first row in each column for row in range(1, 2): for col in range(3): - axes[col].append(fig.add_subplot(gs[row+1, col], sharex=axes[col][0])) - + axes[col].append(fig.add_subplot(gs[row + 1, col], sharex=axes[col][0])) + # Convert to row-major format for easier indexing axes = np.array([[axes[col][row] for col in range(3)] for row in range(2)]) - + k_values = sorted(run_dirs_dict.keys()) - + for row_idx, k in enumerate(k_values): run_dir = run_dirs_dict[k] print(f"Loading k={k} from {run_dir}...") run_data = load_run_data(run_dir) - + epoch_numbers, model_powers = compute_power_evolution(run_data) - template_power = run_data['template_power'] - D3 = run_data['D3'] + template_power = run_data["template_power"] + D3 = run_data["D3"] irreps = D3.irreps() - config = run_data['config'] - + config = run_data["config"] + # Get row-specific parameters - learning_rate = config['training']['learning_rate'] - init_scale = config['model']['init_scale'] - + learning_rate = config["training"]["learning_rate"] + init_scale = config["model"]["init_scale"] + # Format init_scale nicely if init_scale >= 1e-3: init_scale_str = f"{init_scale:.0e}" @@ -182,7 +199,7 @@ def create_combined_plot(run_dirs_dict, save_path): init_scale_str = f"{init_scale:.1e}" else: init_scale_str = f"{init_scale:.2e}" - + # Format learning_rate nicely if learning_rate >= 1e-3: lr_str = f"{learning_rate:.0e}" @@ -190,104 +207,125 @@ def create_combined_plot(run_dirs_dict, save_path): lr_str = f"{learning_rate:.1e}" else: lr_str = f"{learning_rate:.2e}" - + # Row label - row_label = f'k={k}, lr={lr_str}, init_scale={init_scale_str}' - + row_label = f"k={k}, lr={lr_str}, init_scale={init_scale_str}" + # Get top irreps top_k_irreps = min(5, len(irreps)) top_irrep_indices = np.argsort(template_power)[::-1][:top_k_irreps] colors_line = plt.cm.tab10(np.linspace(0, 1, top_k_irreps)) - + # Filter for log scales valid_mask = np.array(epoch_numbers) > 0 valid_epochs = np.array(epoch_numbers)[valid_mask] valid_model_powers = model_powers[valid_mask, :] - + # Column 1: Linear scales ax = axes[row_idx, 0] for i, irrep_idx in enumerate(top_irrep_indices): power_values = model_powers[:, irrep_idx] - ax.plot(epoch_numbers, power_values, '-', lw=2, color=colors_line[i], - label=f'Irrep {irrep_idx} (dim={irreps[irrep_idx].size})') - ax.axhline(template_power[irrep_idx], linestyle='--', alpha=0.5, color=colors_line[i]) + ax.plot( + epoch_numbers, + power_values, + "-", + lw=2, + color=colors_line[i], + label=f"Irrep {irrep_idx} (dim={irreps[irrep_idx].size})", + ) + ax.axhline(template_power[irrep_idx], linestyle="--", alpha=0.5, color=colors_line[i]) if row_idx == 1: # Only bottom row shows xlabel - ax.set_xlabel('Epoch') - ax.set_ylabel('Power') + ax.set_xlabel("Epoch") + ax.set_ylabel("Power") if row_idx == 0: - col_title = 'Linear Scales' + col_title = "Linear Scales" else: - col_title = '' - ax.set_title(f'{col_title}\n{row_label}', fontsize=12 if row_idx == 0 else 10) - ax.legend(loc='upper left', fontsize=7) + col_title = "" + ax.set_title(f"{col_title}\n{row_label}", fontsize=12 if row_idx == 0 else 10) + ax.legend(loc="upper left", fontsize=7) ax.grid(True, alpha=0.3) # Hide x-axis labels for non-bottom rows (they're shared) if row_idx < 1: ax.tick_params(labelbottom=False) - + # Column 2: Log x-axis ax = axes[row_idx, 1] for i, irrep_idx in enumerate(top_irrep_indices): power_values = valid_model_powers[:, irrep_idx] - ax.plot(valid_epochs, power_values, '-', lw=2, color=colors_line[i], - label=f'Irrep {irrep_idx} (dim={irreps[irrep_idx].size})') - ax.axhline(template_power[irrep_idx], linestyle='--', alpha=0.5, color=colors_line[i]) - ax.set_xscale('log') + ax.plot( + valid_epochs, + power_values, + "-", + lw=2, + color=colors_line[i], + label=f"Irrep {irrep_idx} (dim={irreps[irrep_idx].size})", + ) + ax.axhline(template_power[irrep_idx], linestyle="--", alpha=0.5, color=colors_line[i]) + ax.set_xscale("log") if row_idx == 1: # Only bottom row shows xlabel - ax.set_xlabel('Epoch (log scale)') - ax.set_ylabel('Power') + ax.set_xlabel("Epoch (log scale)") + ax.set_ylabel("Power") if row_idx == 0: - col_title = 'Log X-axis' + col_title = "Log X-axis" else: - col_title = '' - ax.set_title(f'{col_title}\n{row_label}', fontsize=12 if row_idx == 0 else 10) - ax.legend(loc='upper left', fontsize=7) + col_title = "" + ax.set_title(f"{col_title}\n{row_label}", fontsize=12 if row_idx == 0 else 10) + ax.legend(loc="upper left", fontsize=7) ax.grid(True, alpha=0.3) # Hide x-axis labels for non-bottom rows (they're shared) if row_idx < 1: ax.tick_params(labelbottom=False) - + # Column 3: Log-log scales ax = axes[row_idx, 2] for i, irrep_idx in enumerate(top_irrep_indices): power_values = valid_model_powers[:, irrep_idx] power_mask = power_values > 0 if np.any(power_mask): - ax.plot(valid_epochs[power_mask], power_values[power_mask], '-', lw=2, color=colors_line[i], - label=f'Irrep {irrep_idx} (dim={irreps[irrep_idx].size})') + ax.plot( + valid_epochs[power_mask], + power_values[power_mask], + "-", + lw=2, + color=colors_line[i], + label=f"Irrep {irrep_idx} (dim={irreps[irrep_idx].size})", + ) if template_power[irrep_idx] > 0: - ax.axhline(template_power[irrep_idx], linestyle='--', alpha=0.5, color=colors_line[i]) - ax.set_xscale('log') - ax.set_yscale('log') + ax.axhline( + template_power[irrep_idx], linestyle="--", alpha=0.5, color=colors_line[i] + ) + ax.set_xscale("log") + ax.set_yscale("log") if row_idx == 1: # Only bottom row shows xlabel - ax.set_xlabel('Epoch (log scale)') - ax.set_ylabel('Power (log scale)') + ax.set_xlabel("Epoch (log scale)") + ax.set_ylabel("Power (log scale)") if row_idx == 0: - col_title = 'Log-Log Scales' + col_title = "Log-Log Scales" else: - col_title = '' - ax.set_title(f'{col_title}\n{row_label}', fontsize=12 if row_idx == 0 else 10) - ax.legend(loc='upper left', fontsize=7) + col_title = "" + ax.set_title(f"{col_title}\n{row_label}", fontsize=12 if row_idx == 0 else 10) + ax.legend(loc="upper left", fontsize=7) ax.grid(True, alpha=0.3) # Hide x-axis labels for non-bottom rows (they're shared) if row_idx < 1: ax.tick_params(labelbottom=False) - - plt.savefig(save_path, bbox_inches='tight', dpi=150) + + plt.savefig(save_path, bbox_inches="tight", dpi=150) print(f"\n✓ Saved combined plot to {save_path}") plt.close() + if __name__ == "__main__": # Map k values to run directories run_dirs_dict = { 4: "runs/20260114_170639", 5: "runs/20260114_170913", } - + # Verify all directories exist for k, run_dir in run_dirs_dict.items(): if not os.path.exists(run_dir): print(f"Warning: {run_dir} does not exist for k={k}") - + save_path = "runs/combined_power_spectrum_k4_k5_2x3.pdf" create_combined_plot(run_dirs_dict, save_path) diff --git a/gagf/rnns/datamodule.py b/gagf/rnns/datamodule.py index 8b81357..ed3d8af 100644 --- a/gagf/rnns/datamodule.py +++ b/gagf/rnns/datamodule.py @@ -1,21 +1,21 @@ import numpy as np import torch +import torch.nn as nn import torchvision import torchvision.transforms as transforms -import torch.nn as nn - - from torch.utils.data import IterableDataset + class OnlineModularAdditionDataset2D(IterableDataset): """ Online dataset that generates 2D modular addition samples on-the-fly. Fully GPU-accelerated for maximum throughput. """ + def __init__( - self, + self, p1: int, - p2: int, + p2: int, template: np.ndarray, k: int, batch_size: int, @@ -30,24 +30,24 @@ def __init__( self.p_flat = p1 * p2 self.device = device self.return_all_outputs = return_all_outputs - + # Store template on GPU for fast rolling self.template_gpu = torch.tensor(template, device=device, dtype=torch.float32) - + # Pre-compute coordinate grids on GPU for efficient rolling x_coords = torch.arange(p1, device=device) y_coords = torch.arange(p2, device=device) - self.x_grid, self.y_grid = torch.meshgrid(x_coords, y_coords, indexing='ij') - + self.x_grid, self.y_grid = torch.meshgrid(x_coords, y_coords, indexing="ij") + def _roll_2d_batch(self, shifts_x, shifts_y): """ Roll the template by different amounts for each sample in a batch. Fully vectorized on GPU. - + Args: shifts_x: (batch_size,) or (batch_size, k) tensor of row shifts shifts_y: (batch_size,) or (batch_size, k) tensor of col shifts - + Returns: Rolled templates: (batch_size, p1, p2) or (batch_size, k, p1, p2) """ @@ -68,41 +68,43 @@ def _roll_2d_batch(self, shifts_x, shifts_y): y_grid = self.y_grid.unsqueeze(0).unsqueeze(0) # (1, 1, p1, p2) shifts_x = shifts_x.view(batch_size, k, 1, 1) # (batch_size, k, 1, 1) shifts_y = shifts_y.view(batch_size, k, 1, 1) # (batch_size, k, 1, 1) - + # Compute shifted coordinates with modular arithmetic x_shifted = (x_grid - shifts_x) % self.p1 y_shifted = (y_grid - shifts_y) % self.p2 - + # Index into template using advanced indexing rolled = self.template_gpu[x_shifted.long(), y_shifted.long()] - + return rolled - + def __iter__(self): """Generate batches indefinitely on GPU.""" while True: # Generate random shifts on GPU: (batch_size, k) - shifts_x = torch.randint(0, self.p1, (self.batch_size, self.k), - device=self.device, dtype=torch.long) - shifts_y = torch.randint(0, self.p2, (self.batch_size, self.k), - device=self.device, dtype=torch.long) - + shifts_x = torch.randint( + 0, self.p1, (self.batch_size, self.k), device=self.device, dtype=torch.long + ) + shifts_y = torch.randint( + 0, self.p2, (self.batch_size, self.k), device=self.device, dtype=torch.long + ) + # Generate X: roll template for each time step # Shape: (batch_size, k, p1, p2) X_rolled = self._roll_2d_batch(shifts_x, shifts_y) - + # Reshape to (batch_size, k, p_flat) X = X_rolled.reshape(self.batch_size, self.k, self.p_flat) - + if self.return_all_outputs: # Generate Y for ALL cumulative sums (intermediate targets) # Compute cumulative sum at each timestep sx_cumsum = torch.cumsum(shifts_x, dim=1) % self.p1 # (batch_size, k) sy_cumsum = torch.cumsum(shifts_y, dim=1) % self.p2 # (batch_size, k) - + # Roll by all cumulative sums: (batch_size, k, p1, p2) Y_rolled = self._roll_2d_batch(sx_cumsum, sy_cumsum) - + # Reshape to (batch_size, k, p_flat) Y = Y_rolled.reshape(self.batch_size, self.k, self.p_flat) Y = Y[:, 1:, :] @@ -111,13 +113,13 @@ def __iter__(self): # Generate Y: only final cumulative sum (current behavior) sx_cumsum = shifts_x.sum(dim=1) % self.p1 # (batch_size,) sy_cumsum = shifts_y.sum(dim=1) % self.p2 # (batch_size,) - + # Shape: (batch_size, p1, p2) Y_rolled = self._roll_2d_batch(sx_cumsum, sy_cumsum) - + # Reshape to (batch_size, p_flat) Y = Y_rolled.reshape(self.batch_size, self.p_flat) - + yield X, Y @@ -126,8 +128,9 @@ class OnlineModularAdditionDataset1D(IterableDataset): Online dataset that generates 1D modular addition samples on-the-fly. Fully GPU-accelerated for maximum throughput. """ + def __init__( - self, + self, p: int, template: np.ndarray, k: int, @@ -141,18 +144,18 @@ def __init__( self.batch_size = batch_size self.device = device self.return_all_outputs = return_all_outputs - + # Store template on GPU for fast rolling self.template_gpu = torch.tensor(template, device=device, dtype=torch.float32) - + def _roll_1d_batch(self, shifts): """ Roll the 1D template by different amounts for each sample in a batch. Fully vectorized on GPU. - + Args: shifts: (batch_size,) or (batch_size, k) tensor of shifts - + Returns: Rolled templates: (batch_size, p) or (batch_size, k, p) """ @@ -160,42 +163,47 @@ def _roll_1d_batch(self, shifts): # Single roll per sample: (batch_size,) batch_size = shifts.shape[0] # Use advanced indexing - indices = (torch.arange(self.p, device=self.device).unsqueeze(0) - shifts.unsqueeze(1)) % self.p + indices = ( + torch.arange(self.p, device=self.device).unsqueeze(0) - shifts.unsqueeze(1) + ) % self.p rolled = self.template_gpu[indices.long()] else: # Multiple rolls per sample: (batch_size, k) batch_size, k = shifts.shape - indices = (torch.arange(self.p, device=self.device).unsqueeze(0).unsqueeze(0) - - shifts.unsqueeze(2)) % self.p + indices = ( + torch.arange(self.p, device=self.device).unsqueeze(0).unsqueeze(0) + - shifts.unsqueeze(2) + ) % self.p rolled = self.template_gpu[indices.long()] - + return rolled - + def __iter__(self): """Generate batches indefinitely on GPU.""" while True: # Generate random shifts on GPU: (batch_size, k) - shifts = torch.randint(0, self.p, (self.batch_size, self.k), - device=self.device, dtype=torch.long) - + shifts = torch.randint( + 0, self.p, (self.batch_size, self.k), device=self.device, dtype=torch.long + ) + # Generate X: roll template for each time step # Shape: (batch_size, k, p) X = self._roll_1d_batch(shifts) - + if self.return_all_outputs: # Generate Y for ALL cumulative sums (intermediate targets) shifts_cumsum = torch.cumsum(shifts, dim=1) % self.p # (batch_size, k) - + # Roll by all cumulative sums: (batch_size, k, p) Y = self._roll_1d_batch(shifts_cumsum) Y = Y[:, 1:, :] # Remove first timestep else: # Generate Y: only final cumulative sum shifts_cumsum = shifts.sum(dim=1) % self.p # (batch_size,) - + # Shape: (batch_size, p) Y = self._roll_1d_batch(shifts_cumsum) - + yield X, Y @@ -209,7 +217,7 @@ def build_modular_addition_sequence_dataset_1d( ) -> tuple[np.ndarray, np.ndarray, np.ndarray]: """ Build 1D modular addition dataset for cyclic group C_p. - + Args: p: dimension of cyclic group template: (p,) template array @@ -217,30 +225,30 @@ def build_modular_addition_sequence_dataset_1d( mode: "sampled" or "exhaustive" num_samples: number of samples for "sampled" mode return_all_outputs: if True, return intermediate outputs - + Returns: X: (N, k, p) where token t is template rolled by shift_t Y: (N, p) or (N, k-1, p) target rolled by cumulative sum sequence: (N, k) integer group elements (shifts) per token """ assert template.shape == (p,), f"template must be ({p},), got {template.shape}" - + if mode == "exhaustive": - total = p ** k + total = p**k if total > 1_000_000: raise ValueError(f"p^k = {total} is huge; use mode='sampled' instead.") N = total sequence = np.zeros((N, k), dtype=np.int64) for idx in range(N): for t in range(k): - sequence[idx, t] = (idx // (p ** t)) % p + sequence[idx, t] = (idx // (p**t)) % p else: N = int(num_samples) sequence = np.random.randint(0, p, size=(N, k), dtype=np.int64) - + X = np.zeros((N, k, p), dtype=np.float32) Y = np.zeros((N, k, p), dtype=np.float32) - + for i in range(N): cumsum = 0 for t in range(k): @@ -248,12 +256,12 @@ def build_modular_addition_sequence_dataset_1d( X[i, t, :] = np.roll(template, shift) cumsum = (cumsum + shift) % p Y[i, t, :] = np.roll(template, cumsum) - + if not return_all_outputs: Y = Y[:, -1, :] else: Y = Y[:, 1:, :] # Remove first timestep for consistency with 2D - + return X, Y, sequence @@ -297,9 +305,9 @@ def build_modular_addition_sequence_dataset_2d( sequence_xy = np.zeros((N, k, 2), dtype=np.int64) for idx in range(N): for t in range(k): - flat_idx = (idx // (p_flat ** t)) % p_flat + flat_idx = (idx // (p_flat**t)) % p_flat ax = flat_idx // p2 # rows - ay = flat_idx % p2 # cols + ay = flat_idx % p2 # cols sequence_xy[idx, t, 0] = ax sequence_xy[idx, t, 1] = ay else: @@ -320,12 +328,13 @@ def build_modular_addition_sequence_dataset_2d( sx = (sx + ax) % p1 sy = (sy + ay) % p2 Y[i, t, :] = np.roll(np.roll(template, shift=sx, axis=0), shift=sy, axis=1).ravel() - + if not return_all_outputs: Y = Y[:, -1, :] return X, Y, sequence_xy + def build_modular_addition_sequence_dataset_D3( template: np.ndarray, k: int, @@ -335,7 +344,7 @@ def build_modular_addition_sequence_dataset_D3( ) -> tuple[np.ndarray, np.ndarray, np.ndarray]: """ Build D3 (dihedral group) composition dataset for sequence length k. - + Uses the regular representation of D3 to transform the template. For a sequence of k group elements (g1, g2, ..., gk), we compute: - X[i, t, :] = regular_rep(g_t) @ template (template transformed by g_t) @@ -354,70 +363,75 @@ def build_modular_addition_sequence_dataset_D3( sequence: (N, k) integer indices of group elements per token """ from escnn.group import DihedralGroup - + # Create D3 group (dihedral group of order 6) D3 = DihedralGroup(N=3) group_order = D3.order() # = 6 - - assert template.shape == (group_order,), f"template must be ({group_order},), got {template.shape}" - + + assert template.shape == ( + group_order, + ), f"template must be ({group_order},), got {template.shape}" + # Get regular representation and list of elements regular_rep = D3.representations["regular"] elements = list(D3.elements) n_elements = len(elements) # = 6 - + # Pre-compute representation matrices for all elements rep_matrices = np.array([regular_rep(g) for g in elements]) # (6, 6, 6) - + if mode == "exhaustive": # Total number of sequences: n_elements^k - total = n_elements ** k + total = n_elements**k if total > 1_000_000: raise ValueError(f"n_elements^k = {total} is huge; use mode='sampled' instead.") N = total - + # Generate all possible sequences of k element indices sequence = np.zeros((N, k), dtype=np.int64) for idx in range(N): for t in range(k): - sequence[idx, t] = (idx // (n_elements ** t)) % n_elements + sequence[idx, t] = (idx // (n_elements**t)) % n_elements # print(f"sequence: {sequence}") Looking good. else: # Sampled mode: randomly sample sequences N = int(num_samples) sequence = np.random.randint(0, n_elements, size=(N, k), dtype=np.int64) - + # Initialize output arrays X = np.zeros((N, k, group_order), dtype=np.float32) Y = np.zeros((N, k, group_order), dtype=np.float32) - + for i in range(N): # Compute cumulative composition of group elements cumulative_rep = np.eye(group_order) # Identity matrix (identity element) - + for t in range(k): - elem_idx = sequence[i, t] # Take the index of the t-th element of the i-th sequence. - g_rep = rep_matrices[elem_idx] # Regular representation, a 6x6 matrix representing the group element. - + elem_idx = sequence[i, t] # Take the index of the t-th element of the i-th sequence. + g_rep = rep_matrices[ + elem_idx + ] # Regular representation, a 6x6 matrix representing the group element. + # X[i, t] = template transformed by g_t X[i, t, :] = g_rep @ template - + # Update cumulative composition: g1 * g2 * ... * g_t # cumulative_rep = cumulative_rep @ g_rep cumulative_rep = g_rep @ cumulative_rep - + # Y[i, t] = template transformed by cumulative composition Y[i, t, :] = cumulative_rep @ template - + if not return_all_outputs: # Only return final output Y = Y[:, -1, :] # (N, group_order) else: # Return all intermediate outputs (skip first since it's just g1, not a composition) Y = Y[:, 1:, :] # (N, k-1, group_order) - + return X, Y, sequence + def sequence_to_paths_xy(sequence_xy: np.ndarray, p1: int, p2: int) -> np.ndarray: """ Convert a sequence of group elements (ax_t, ay_t) into cumulative positions @@ -439,32 +453,35 @@ def sequence_to_paths_xy(sequence_xy: np.ndarray, p1: int, p2: int) -> np.ndarra paths_xy[:, :, 1] = np.mod(np.cumsum(seq[:, :, 1], axis=1, dtype=np.int64), p2) return paths_xy + def mnist_template_1d(p: int, label: int, root: str = "data", axis: int = 0): """ Return a (p,) 1D template from a random MNIST image by taking a slice or projection. Values are float32 in [0, 1]. - + Args: p: dimension of the cyclic group label: MNIST digit class (0-9) root: MNIST data directory axis: 0 for row average, 1 for column average, 2 for diagonal - + Returns: template: (p,) array """ if not (0 <= int(label) <= 9): raise ValueError("label must be an integer in [0, 9].") - - ds = torchvision.datasets.MNIST(root=root, train=True, download=True, transform=transforms.ToTensor()) + + ds = torchvision.datasets.MNIST( + root=root, train=True, download=True, transform=transforms.ToTensor() + ) cls_idxs = (ds.targets == int(label)).nonzero(as_tuple=True)[0] if cls_idxs.numel() == 0: raise ValueError(f"No samples for label {label}.") - + idx = cls_idxs[torch.randint(len(cls_idxs), (1,)).item()].item() img, _ = ds[idx] # img: (1, 28, 28) in [0,1] img = img[0].numpy() # (28, 28) - + # Get 1D signal from 2D image if axis == 0: # Average over columns (vertical projection) @@ -477,14 +494,15 @@ def mnist_template_1d(p: int, label: int, root: str = "data", axis: int = 0): signal = np.diag(img) # (28,) else: raise ValueError("axis must be 0, 1, or 2") - + # Interpolate to desired size p from scipy.interpolate import interp1d + x_old = np.linspace(0, 1, len(signal)) x_new = np.linspace(0, 1, p) - f = interp1d(x_old, signal, kind='cubic') + f = interp1d(x_old, signal, kind="cubic") template = f(x_new) - + return template.astype(np.float32) @@ -496,14 +514,18 @@ def mnist_template_2d(p1: int, p2: int, label: int, root: str = "data"): if not (0 <= int(label) <= 9): raise ValueError("label must be an integer in [0, 9].") - ds = torchvision.datasets.MNIST(root=root, train=True, download=True, transform=transforms.ToTensor()) + ds = torchvision.datasets.MNIST( + root=root, train=True, download=True, transform=transforms.ToTensor() + ) cls_idxs = (ds.targets == int(label)).nonzero(as_tuple=True)[0] if cls_idxs.numel() == 0: raise ValueError(f"No samples for label {label}.") idx = cls_idxs[torch.randint(len(cls_idxs), (1,)).item()].item() img, _ = ds[idx] # img: (1, 28, 28) in [0,1] - img = nn.functional.interpolate(img.unsqueeze(0), size=(p1, p2), mode="bilinear", align_corners=False)[0, 0] + img = nn.functional.interpolate( + img.unsqueeze(0), size=(p1, p2), mode="bilinear", align_corners=False + )[0, 0] return img.numpy().astype(np.float32) # (p1, p2) @@ -511,92 +533,101 @@ def mnist_template_2d(p1: int, p2: int, label: int, root: str = "data"): ### 1D Templates ### -def generate_fourier_template_1d(p: int, n_freqs: int, amp_max: float = 100, amp_min: float = 10, seed=None): + +def generate_fourier_template_1d( + p: int, n_freqs: int, amp_max: float = 100, amp_min: float = 10, seed=None +): """ Generate 1D template from random Fourier modes. - + Args: p: dimension of cyclic group n_freqs: number of frequency components to include amp_max: maximum amplitude amp_min: minimum amplitude seed: random seed - + Returns: template: (p,) real-valued array """ rng = np.random.default_rng(seed) spectrum = np.zeros(p, dtype=np.complex128) - + # Select frequencies (skip DC) available_freqs = list(range(1, p // 2 + 1)) if len(available_freqs) < n_freqs: - raise ValueError(f"Only {len(available_freqs)} non-DC frequencies available for p={p}, requested {n_freqs}") - - chosen_freqs = rng.choice(available_freqs, size=min(n_freqs, len(available_freqs)), replace=False) - + raise ValueError( + f"Only {len(available_freqs)} non-DC frequencies available for p={p}, requested {n_freqs}" + ) + + chosen_freqs = rng.choice( + available_freqs, size=min(n_freqs, len(available_freqs)), replace=False + ) + # Amplitudes decreasing with frequency index amps = np.sqrt(np.linspace(amp_max, amp_min, len(chosen_freqs))) phases = rng.uniform(0.0, 2 * np.pi, size=len(chosen_freqs)) - + for freq, amp, phi in zip(chosen_freqs, amps, phases): v = amp * np.exp(1j * phi) spectrum[freq] = v spectrum[-freq] = np.conj(v) # Hermitian symmetry for real signal - + template = np.fft.ifft(spectrum).real template -= template.mean() s = template.std() if s > 1e-12: template /= s - + return template.astype(np.float32) -def generate_gaussian_template_1d(p: int, n_gaussians: int = 3, sigma_range: tuple = (0.5, 2.0), seed=None): +def generate_gaussian_template_1d( + p: int, n_gaussians: int = 3, sigma_range: tuple = (0.5, 2.0), seed=None +): """ Generate 1D template as sum of Gaussians. - + Args: p: dimension of cyclic group n_gaussians: number of Gaussian bumps sigma_range: (min_sigma, max_sigma) for Gaussian widths seed: random seed - + Returns: template: (p,) real-valued array """ rng = np.random.default_rng(seed) x = np.arange(p) template = np.zeros(p, dtype=np.float32) - + for _ in range(n_gaussians): center = rng.uniform(0, p) sigma = rng.uniform(*sigma_range) amplitude = rng.uniform(0.5, 1.0) - + # Periodic distance dist = np.minimum(np.abs(x - center), p - np.abs(x - center)) - template += amplitude * np.exp(-(dist ** 2) / (2 * sigma ** 2)) - + template += amplitude * np.exp(-(dist**2) / (2 * sigma**2)) + template -= template.mean() s = template.std() if s > 1e-12: template /= s - + return template.astype(np.float32) def generate_onehot_template_1d(p: int): """ Generate 1D one-hot template for cyclic group C_p. - + This creates a template with a single 1 at position 0 and 0s everywhere else. When rolled, this one-hot encoding uniquely identifies each group element. - + Args: p: dimension of cyclic group - + Returns: template: (p,) array with template[0] = 1, all others = 0 """ @@ -607,17 +638,19 @@ def generate_onehot_template_1d(p: int): ### 2D Templates ### + def gaussian_mixture_template( - p1=20, - p2=20, - n_blobs=8, + p1=20, + p2=20, + n_blobs=8, frac_broad=0.7, - sigma_broad=(3.5, 6.0), + sigma_broad=(3.5, 6.0), sigma_narrow=(1.0, 2.0), - amp_broad=1.0, + amp_broad=1.0, amp_narrow=0.5, - seed=None, - normalize=True): + seed=None, + normalize=True, +): """ Build a (p1 x p2) template as a periodic mixture of Gaussians. Broad Gaussians (low-frequency) get higher weight; a few narrow ones add detail. @@ -640,8 +673,8 @@ def add_blobs(k, sigma_range, amp): return out template = ( - add_blobs(k_broad, sigma_broad, amp_broad) + # broad, low-freq power - add_blobs(k_narrow, sigma_narrow, amp_narrow) # a bit of high-freq detail + add_blobs(k_broad, sigma_broad, amp_broad) # broad, low-freq power + + add_blobs(k_narrow, sigma_narrow, amp_narrow) # a bit of high-freq detail ) if normalize: @@ -651,6 +684,7 @@ def add_blobs(k, sigma_range, amp): template /= s return template.astype(np.float32) + def generate_template_unique_freqs(p1, p2, n_freqs, amp_max=100, amp_min=10, seed=None): """ Real (p1 x p2) template from n_freqs Fourier modes where: @@ -687,7 +721,7 @@ def is_self_conj(ky, kx): continue # DC if is_self_conj(ky, kx): continue # exclude singletons - r2 = (s ** 2) + (kx ** 2) + r2 = (s**2) + (kx**2) cand.append((r2, ky, kx)) cand.sort(key=lambda t: (t[0], abs(ky_signed(t[1])), t[2])) @@ -711,12 +745,14 @@ def is_self_conj(ky, kx): chosen.append((ky, kx)) if len(chosen) < n_freqs: - raise ValueError(f"Could only find {len(chosen)} unique non-conjugate bins; " - f"requested {n_freqs}. Increase grid size or reduce n_freqs.") + raise ValueError( + f"Could only find {len(chosen)} unique non-conjugate bins; " + f"requested {n_freqs}. Increase grid size or reduce n_freqs." + ) # Amplitudes + random phases, then place each bin + its conjugate amps = np.sqrt(np.linspace(amp_max, amp_min, n_freqs, dtype=float)) - phases = rng.uniform(0.0, 2*np.pi, size=n_freqs) + phases = rng.uniform(0.0, 2 * np.pi, size=n_freqs) for (ky, kx), a, phi in zip(chosen, amps, phases): kyc, kxc = (-ky) % p1, (-kx) % p2 @@ -735,28 +771,28 @@ def is_self_conj(ky, kx): def generate_fixed_template_2d(p1: int, p2: int) -> np.ndarray: """ Generate 2D template array from Fourier spectrum. - + Args: p1: height dimension p2: width dimension - + Returns: template: (p1, p2) real-valued array """ # Generate template array from 2D Fourier spectrum spectrum = np.zeros((p1, p2), dtype=complex) - + assert p1 > 5 and p2 > 5, "p1 and p2 must be greater than 5" - + # Set 2D frequency components with specific amplitudes # Format: spectrum[kx, ky] where kx is "vertical freq", ky is "horizontal freq" - + # Axis-aligned frequencies - spectrum[1, 0] = 10.0 # vertical frequency 1 - spectrum[-1, 0] = 10.0 # conjugate - # spectrum[0, 1] = 10.0 # horizontal frequency 1 + spectrum[1, 0] = 10.0 # vertical frequency 1 + spectrum[-1, 0] = 10.0 # conjugate + # spectrum[0, 1] = 10.0 # horizontal frequency 1 # spectrum[0, -1] = 10.0 # conjugate - + # Higher frequency components # spectrum[3, 0] = 7.5 # spectrum[-3, 0] = 7.5 @@ -765,19 +801,19 @@ def generate_fixed_template_2d(p1: int, p2: int) -> np.ndarray: # Diagonal/mixed frequencies spectrum[2, 1] = 5.0 - spectrum[-2, -1] = 5.0 # conjugate + spectrum[-2, -1] = 5.0 # conjugate # spectrum[1, 2] = 5.0 # spectrum[-1, -2] = 5.0 # conjugate - + # Generate signal from spectrum template = np.fft.ifft2(spectrum).real - - return template + return template # Spherically Symmetric Templates + def _fft_indices(n): """ Return integer-like frequency indices aligned with numpy's FFT layout. @@ -786,16 +822,17 @@ def _fft_indices(n): k = np.fft.fftfreq(n) * n return k.astype(int) + def generate_hexagon_tie_template_2d(p1: int, p2: int, k0: float = 6.0, amp: float = 1.0): """ Real template whose 2D Fourier spectrum has equal maxima at six directions (0°, 60°, 120°, 180°, 240°, 300°) with radius ~ k0 (in FFT index units). - + Args: p1, p2: spatial dims (height, width). Require > 5 recommended. k0: desired radius (index units). Not necessarily integer; we round. amp: amplitude per spike (before conjugate pairing) - + Returns: template: (p1, p2) real-valued array """ @@ -834,8 +871,8 @@ def put(kx, ky, val): used.add((-kx, -ky)) # Place equal-amplitude spikes with Hermitian symmetry - put(kx, ky, amp) # +k - put(-kx, -ky, np.conjugate(amp)) # -k (conjugate) + put(kx, ky, amp) # +k + put(-kx, -ky, np.conjugate(amp)) # -k (conjugate) # Remove DC (optional) to avoid mean offset spec[0, 0] = 0.0 @@ -843,8 +880,11 @@ def put(kx, ky, val): # Real template x = np.fft.ifft2(spec).real return x - -def generate_ring_isotropic_template_2d(p1: int, p2: int, r0: float = 6.0, sigma: float = 0.5, total_power: float = 1.0): + + +def generate_ring_isotropic_template_2d( + p1: int, p2: int, r0: float = 6.0, sigma: float = 0.5, total_power: float = 1.0 +): """ Real template with a narrow, isotropic ring in the 2D spectrum: |X(k)| ≈ exp(- (||k||-r0)^2 / (2 sigma^2)). This produces a spherical (circular) symmetry -> orientation tie across the ring. @@ -866,7 +906,7 @@ def generate_ring_isotropic_template_2d(p1: int, p2: int, r0: float = 6.0, sigma R = np.sqrt(kx**2 + ky**2) # Radial Gaussian ring (real, even -> already Hermitian when phases are 0) - mag = np.exp(-0.5 * ((R - r0) / max(sigma, 1e-6))**2) + mag = np.exp(-0.5 * ((R - r0) / max(sigma, 1e-6)) ** 2) # Optional: zero DC mag[0, 0] = 0.0 @@ -882,6 +922,7 @@ def generate_ring_isotropic_template_2d(p1: int, p2: int, r0: float = 6.0, sigma x = np.fft.ifft2(spec).real return x + def generate_gaussian_template_2d( p1: int, p2: int, diff --git a/gagf/rnns/main.py b/gagf/rnns/main.py index 9856642..c99cbe6 100644 --- a/gagf/rnns/main.py +++ b/gagf/rnns/main.py @@ -1,50 +1,41 @@ +import argparse +import json +import os +import time +from datetime import datetime +from pathlib import Path + +import matplotlib.pyplot as plt import numpy as np import torch +import yaml +from torch import nn, optim +from torch.utils.data import DataLoader + from gagf.rnns.datamodule import ( - mnist_template_1d, - mnist_template_2d, generate_fourier_template_1d, generate_gaussian_template_1d, generate_onehot_template_1d, generate_template_unique_freqs, + mnist_template_1d, + mnist_template_2d, ) -from gagf.rnns.optimizers import HybridRNNOptimizer, PerNeuronScaledSGD - -from torch.utils.data import DataLoader -from torch import nn, optim from gagf.rnns.model import QuadraticRNN, SequentialMLP -import time -import yaml -import json -from pathlib import Path -from datetime import datetime -import argparse -import os - +from gagf.rnns.optimizers import HybridRNNOptimizer, PerNeuronScaledSGD from gagf.rnns.utils import ( - plot_training_loss_with_theory, - plot_model_predictions_over_time, + plot_2d_signal, + plot_model_predictions_over_time, plot_model_predictions_over_time_1d, - plot_prediction_power_spectrum_over_time, plot_prediction_power_spectrum_over_time_1d, - plot_fourier_modes_reference, - topk_template_freqs, - topk_template_freqs_1d, - plot_wout_neuron_specialization, - plot_wout_neuron_specialization_1d, + plot_training_loss_with_theory, plot_wmix_frequency_structure, - plot_2d_signal, - compute_theoretical_final_loss_1d, - compute_theoretical_final_loss_2d, + topk_template_freqs, ) -import matplotlib.pyplot as plt - - def load_config(config_path: str) -> dict: """Load configuration from YAML file.""" - with open(config_path, 'r') as f: + with open(config_path) as f: return yaml.safe_load(f) @@ -52,60 +43,61 @@ def setup_run_directory(base_dir: str = "runs") -> Path: """Create timestamped run directory.""" base_dir = Path(base_dir) base_dir.mkdir(exist_ok=True) - + timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") run_dir = os.path.join(base_dir, timestamp) os.makedirs(run_dir, exist_ok=True) os.makedirs(os.path.join(run_dir, "checkpoints"), exist_ok=True) - + return Path(run_dir) + def save_results( - run_dir: Path, - config: dict, - model, - train_loss_hist, - val_loss_hist, - param_hist, - template: np.ndarray, - training_time: float, - device: str + run_dir: Path, + config: dict, + model, + train_loss_hist, + val_loss_hist, + param_hist, + template: np.ndarray, + training_time: float, + device: str, ) -> dict: """Save all experiment results.""" print(f"Saving results to {run_dir}...") - + # Ensure checkpoints directory exists checkpoints_dir = run_dir / "checkpoints" checkpoints_dir.mkdir(exist_ok=True) - + # Save config - with open(run_dir / "config.yaml", 'w') as f: + with open(run_dir / "config.yaml", "w") as f: yaml.dump(config, f, default_flow_style=False) - + # Save template np.save(run_dir / "template.npy", template) - + # Save training history np.save(run_dir / "train_loss_history.npy", np.array(train_loss_hist)) np.save(run_dir / "val_loss_history.npy", np.array(val_loss_hist)) torch.save(param_hist, run_dir / "param_history.pt") - + # Save final model torch.save(model.state_dict(), checkpoints_dir / "final_model.pt") - + # Save metadata metadata = { - 'final_train_loss': float(train_loss_hist[-1]), - 'final_val_loss': float(val_loss_hist[-1]), - 'training_time_seconds': training_time, - 'num_parameters': sum(p.numel() for p in model.parameters()), - 'device': device, - 'description': config.get('description', ''), + "final_train_loss": float(train_loss_hist[-1]), + "final_val_loss": float(val_loss_hist[-1]), + "training_time_seconds": training_time, + "num_parameters": sum(p.numel() for p in model.parameters()), + "device": device, + "description": config.get("description", ""), } - with open(run_dir / "metadata.json", 'w') as f: + with open(run_dir / "metadata.json", "w") as f: json.dump(metadata, f, indent=2) - - print(f" ✓ All results saved") + + print(" ✓ All results saved") return metadata @@ -118,19 +110,19 @@ def produce_plots_2d( train_loss_hist, template_2d: np.ndarray, training_mode: str, - device: str + device: str, ): """ Generate all analysis plots after training (2D only). - + Note: This function currently only supports 2D templates with p1 and p2 dimensions. For 1D templates, basic plots are generated separately in train_single_run. - + Some plots are model-specific: - W_mix frequency structure: QuadraticRNN only (skipped for SequentialMLP) - W_out neuron specialization: All models - Power spectrum, predictions, loss curves: All models - + Args: run_dir: Directory to save plots config: Configuration dictionary (must have dimension=2) @@ -143,100 +135,103 @@ def produce_plots_2d( device: Device string ('cpu' or 'cuda') """ print("\n=== Generating Analysis Plots ===") - + ### ----- COMPUTE X-AXIS VALUES ----- ### - dimension = config['data']['dimension'] + dimension = config["data"]["dimension"] if dimension == 1: - p_flat = config['data']['p'] + p_flat = config["data"]["p"] else: - p_flat = config['data']['p1'] * config['data']['p2'] - - k = config['data']['k'] - batch_size = config['data']['batch_size'] - total_space_size = p_flat ** k - + p_flat = config["data"]["p1"] * config["data"]["p2"] + + k = config["data"]["k"] + batch_size = config["data"]["batch_size"] + total_space_size = p_flat**k + # Calculate different x-axis values for plotting - if training_mode == 'online': + if training_mode == "online": steps = np.arange(len(train_loss_hist)) samples_seen = batch_size * steps fraction_of_space = samples_seen / total_space_size x_label_steps = "Step" else: # offline epochs = np.arange(len(train_loss_hist)) - samples_seen = config['data']['num_samples'] * epochs + samples_seen = config["data"]["num_samples"] * epochs fraction_of_space = samples_seen / total_space_size x_label_steps = "Epoch" - + # Save x-axis data np.save(run_dir / "samples_seen.npy", samples_seen) np.save(run_dir / "fraction_of_space_seen.npy", fraction_of_space) - + print(f"Total data space: {total_space_size:,} sequences") print(f"Samples seen: {samples_seen[-1]:,} ({fraction_of_space[-1]*100:.4f}% of space)") - + ### ----- GENERATE EVALUATION DATA ----- ### print("Generating evaluation data for visualization...") from gagf.rnns.datamodule import build_modular_addition_sequence_dataset_2d + X_seq_2d, Y_seq_2d, _ = build_modular_addition_sequence_dataset_2d( - config['data']['p1'], - config['data']['p2'], - template_2d, - config['data']['k'], - mode="sampled", - num_samples=min(config['data']['num_samples'], 1000), - return_all_outputs=config['model']['return_all_outputs'], + config["data"]["p1"], + config["data"]["p2"], + template_2d, + config["data"]["k"], + mode="sampled", + num_samples=min(config["data"]["num_samples"], 1000), + return_all_outputs=config["model"]["return_all_outputs"], ) X_seq_2d_t = torch.tensor(X_seq_2d, dtype=torch.float32, device=device) Y_seq_2d_t = torch.tensor(Y_seq_2d, dtype=torch.float32, device=device) print(f" Generated {X_seq_2d_t.shape[0]} samples for visualization") - + ### ----- COMPUTE CHECKPOINT INDICES ----- ### total_checkpoints = len(param_hist) - checkpoint_fractions = config['analysis']['checkpoints'] + checkpoint_fractions = config["analysis"]["checkpoints"] checkpoint_indices = [int(f * (total_checkpoints - 1)) for f in checkpoint_fractions] - + print(f"Analysis checkpoints: {checkpoint_indices} (out of {total_checkpoints})") - print(f" Corresponding to step/epoch indices: {[param_save_indices[i] for i in checkpoint_indices]}") - + print( + f" Corresponding to step/epoch indices: {[param_save_indices[i] for i in checkpoint_indices]}" + ) + ### ----- PLOT TRAINING LOSS ----- ### print("\nPlotting training loss...") - + # Plot 1: Loss vs Steps/Epochs plot_training_loss_with_theory( loss_history=train_loss_hist, - template_2d=template_2d, - p1=config['data']['p1'], - p2=config['data']['p2'], + template_2d=template_2d, + p1=config["data"]["p1"], + p2=config["data"]["p2"], x_values=None, x_label=x_label_steps, save_path=os.path.join(run_dir, "training_loss_vs_steps.pdf"), show=False, ) - + # Plot 2: Loss vs Samples Seen plot_training_loss_with_theory( loss_history=train_loss_hist, - template_2d=template_2d, - p1=config['data']['p1'], - p2=config['data']['p2'], + template_2d=template_2d, + p1=config["data"]["p1"], + p2=config["data"]["p2"], x_values=samples_seen, x_label="Samples Seen", save_path=os.path.join(run_dir, "training_loss_vs_samples.pdf"), show=False, ) - + # Plot 3: Loss vs Fraction of Space plot_training_loss_with_theory( loss_history=train_loss_hist, - template_2d=template_2d, - p1=config['data']['p1'], - p2=config['data']['p2'], + template_2d=template_2d, + p1=config["data"]["p1"], + p2=config["data"]["p2"], x_values=fraction_of_space, x_label="Samples Seen / Data Space Size", save_path=os.path.join(run_dir, "training_loss_vs_fraction.pdf"), show=False, ) - + ### ----- PLOT MODEL PREDICTIONS ----- ### print("Plotting model predictions over time...") plot_model_predictions_over_time( @@ -244,13 +239,13 @@ def produce_plots_2d( param_hist, X_seq_2d_t, Y_seq_2d_t, - config['data']['p1'], - config['data']['p2'], + config["data"]["p1"], + config["data"]["p2"], steps=checkpoint_indices, save_path=os.path.join(run_dir, "predictions_over_time.pdf"), - show=False + show=False, ) - + # ### ----- PLOT POWER SPECTRUM ANALYSIS ----- ### # print("Analyzing power spectrum of predictions over training...") # plot_prediction_power_spectrum_over_time( @@ -269,12 +264,12 @@ def produce_plots_2d( # save_path=os.path.join(run_dir, "power_spectrum_analysis.pdf"), # show=False # ) - + ### ----- PLOT FOURIER MODES REFERENCE ----- ### print("Creating Fourier modes reference...") tracked_freqs = topk_template_freqs(template_2d, K=10) colors = plt.cm.tab10(np.linspace(0, 1, len(tracked_freqs))) - + # plot_fourier_modes_reference( # tracked_freqs, # colors, @@ -285,7 +280,7 @@ def produce_plots_2d( # individual_dir=os.path.join(run_dir, "fourier_modes"), # show=False # ) - + # ### ----- PLOT W_OUT NEURON SPECIALIZATION ----- ### # print("Visualizing W_out neuron specialization...") # plot_wout_neuron_specialization( @@ -299,26 +294,26 @@ def produce_plots_2d( # save_dir=run_dir, # show=False # ) - + ### ----- PLOT W_MIX FREQUENCY STRUCTURE (QuadraticRNN only) ----- ### - model_type = config['model']['model_type'] - if model_type == 'QuadraticRNN': + model_type = config["model"]["model_type"] + if model_type == "QuadraticRNN": print("Visualizing W_mix frequency structure...") plot_wmix_frequency_structure( param_hist, tracked_freqs, colors, - config['data']['p1'], - config['data']['p2'], + config["data"]["p1"], + config["data"]["p2"], steps=checkpoint_indices, within_group_order="phase", dead_l2_thresh=0.1, save_path=os.path.join(run_dir, "wmix_frequency_structure.pdf"), - show=False + show=False, ) else: print("Skipping W_mix frequency structure plot (not applicable for SequentialMLP)") - + print("\n✓ All plots generated successfully!") @@ -331,11 +326,11 @@ def produce_plots_1d( train_loss_hist, template_1d: np.ndarray, training_mode: str, - device: str + device: str, ): """ Generate all analysis plots after training (1D version). - + Args: run_dir: Directory to save plots config: Configuration dictionary (must have dimension=1) @@ -348,84 +343,87 @@ def produce_plots_1d( device: Device string ('cpu' or 'cuda') """ print("\n=== Generating Analysis Plots (1D) ===") - + ### ----- COMPUTE X-AXIS VALUES ----- ### - p = config['data']['p'] - k = config['data']['k'] - batch_size = config['data']['batch_size'] - total_space_size = p ** k - + p = config["data"]["p"] + k = config["data"]["k"] + batch_size = config["data"]["batch_size"] + total_space_size = p**k + # Calculate different x-axis values for plotting - if training_mode == 'online': + if training_mode == "online": steps = np.arange(len(train_loss_hist)) samples_seen = batch_size * steps fraction_of_space = samples_seen / total_space_size x_label_steps = "Step" else: # offline epochs = np.arange(len(train_loss_hist)) - samples_seen = config['data']['num_samples'] * epochs + samples_seen = config["data"]["num_samples"] * epochs fraction_of_space = samples_seen / total_space_size x_label_steps = "Epoch" - + # Save x-axis data np.save(run_dir / "samples_seen.npy", samples_seen) np.save(run_dir / "fraction_of_space_seen.npy", fraction_of_space) - + print(f"Total data space: {total_space_size:,} sequences") print(f"Samples seen: {samples_seen[-1]:,} ({fraction_of_space[-1]*100:.4f}% of space)") - + ### ----- GENERATE EVALUATION DATA ----- ### print("Generating evaluation data for visualization...") from gagf.rnns.datamodule import build_modular_addition_sequence_dataset_1d + X_seq_1d, Y_seq_1d, _ = build_modular_addition_sequence_dataset_1d( - config['data']['p'], - template_1d, - config['data']['k'], - mode="sampled", - num_samples=min(config['data']['num_samples'], 1000), - return_all_outputs=config['model']['return_all_outputs'], + config["data"]["p"], + template_1d, + config["data"]["k"], + mode="sampled", + num_samples=min(config["data"]["num_samples"], 1000), + return_all_outputs=config["model"]["return_all_outputs"], ) X_seq_1d_t = torch.tensor(X_seq_1d, dtype=torch.float32, device=device) Y_seq_1d_t = torch.tensor(Y_seq_1d, dtype=torch.float32, device=device) print(f" Generated {X_seq_1d_t.shape[0]} samples for visualization") - + ### ----- COMPUTE CHECKPOINT INDICES ----- ### total_checkpoints = len(param_hist) - checkpoint_fractions = config['analysis']['checkpoints'] + checkpoint_fractions = config["analysis"]["checkpoints"] checkpoint_indices = [int(f * (total_checkpoints - 1)) for f in checkpoint_fractions] - + print(f"Analysis checkpoints: {checkpoint_indices} (out of {total_checkpoints})") - print(f" Corresponding to step/epoch indices: {[param_save_indices[i] for i in checkpoint_indices]}") - + print( + f" Corresponding to step/epoch indices: {[param_save_indices[i] for i in checkpoint_indices]}" + ) + ### ----- PLOT TRAINING LOSS ----- ### print("\nPlotting training loss...") - + # Create a 2x2 subplot for different scale combinations fig, axes = plt.subplots(2, 2, figsize=(12, 10)) - - x_values = steps if training_mode == 'online' else epochs - + + x_values = steps if training_mode == "online" else epochs + scale_configs = [ - ('linear', 'linear', 'Linear Scale'), - ('linear', 'log', 'Log Y'), - ('log', 'linear', 'Log X'), - ('log', 'log', 'Log-Log'), + ("linear", "linear", "Linear Scale"), + ("linear", "log", "Log Y"), + ("log", "linear", "Log X"), + ("log", "log", "Log-Log"), ] - + for ax, (xscale, yscale, title) in zip(axes.flat, scale_configs): - ax.plot(x_values, train_loss_hist, lw=2, color='#1f77b4') + ax.plot(x_values, train_loss_hist, lw=2, color="#1f77b4") ax.set_xscale(xscale) ax.set_yscale(yscale) ax.set_xlabel(x_label_steps) - ax.set_ylabel('Training Loss') + ax.set_ylabel("Training Loss") ax.set_title(title) ax.grid(True, alpha=0.3) - + plt.tight_layout() - plt.savefig(os.path.join(run_dir, "training_loss.pdf"), bbox_inches='tight', dpi=150) + plt.savefig(os.path.join(run_dir, "training_loss.pdf"), bbox_inches="tight", dpi=150) plt.close() print(" ✓ Saved training loss plot (all scales)") - + ### ----- PLOT MODEL PREDICTIONS ----- ### print("Plotting model predictions over time...") plot_model_predictions_over_time_1d( @@ -436,9 +434,9 @@ def produce_plots_1d( p, steps=checkpoint_indices, save_path=os.path.join(run_dir, "predictions_over_time.pdf"), - show=False + show=False, ) - + ### ----- PLOT POWER SPECTRUM ANALYSIS ----- ### print("Analyzing power spectrum of predictions over training...") plot_prediction_power_spectrum_over_time_1d( @@ -454,14 +452,14 @@ def produce_plots_1d( checkpoint_indices=checkpoint_indices, num_samples=100, save_path=os.path.join(run_dir, "power_spectrum_analysis.pdf"), - show=False + show=False, ) - + # ### ----- PLOT W_OUT NEURON SPECIALIZATION ----- ### # print("Visualizing W_out neuron specialization...") # tracked_freqs = topk_template_freqs_1d(template_1d, K=min(10, p // 4)) # colors = plt.cm.tab10(np.linspace(0, 1, len(tracked_freqs))) - + # plot_wout_neuron_specialization_1d( # param_hist, # tracked_freqs, @@ -472,7 +470,7 @@ def produce_plots_1d( # save_dir=run_dir, # show=False # ) - + print("\n✓ All 1D plots generated successfully!") @@ -488,7 +486,7 @@ def plot_model_predictions_over_time_D3( ): """ Plot model predictions vs targets at different training checkpoints for D3. - + Args: model: Trained model param_hist: List of parameter snapshots @@ -500,50 +498,54 @@ def plot_model_predictions_over_time_D3( num_samples: Number of samples to show """ n_checkpoints = len(checkpoint_indices) - - fig, axes = plt.subplots(num_samples, n_checkpoints, figsize=(4 * n_checkpoints, 3 * num_samples)) + + fig, axes = plt.subplots( + num_samples, n_checkpoints, figsize=(4 * n_checkpoints, 3 * num_samples) + ) if num_samples == 1: axes = axes.reshape(1, -1) if n_checkpoints == 1: axes = axes.reshape(-1, 1) - + # Select random sample indices - sample_indices = np.random.choice(len(X_eval), size=min(num_samples, len(X_eval)), replace=False) - + sample_indices = np.random.choice( + len(X_eval), size=min(num_samples, len(X_eval)), replace=False + ) + for col, ckpt_idx in enumerate(checkpoint_indices): # Load parameters for this checkpoint model.load_state_dict(param_hist[ckpt_idx]) model.eval() - + with torch.no_grad(): outputs = model(X_eval[sample_indices]) outputs_np = outputs.cpu().numpy() targets_np = Y_eval[sample_indices].cpu().numpy() - + for row, (output, target) in enumerate(zip(outputs_np, targets_np)): ax = axes[row, col] x_axis = np.arange(group_order) - - ax.bar(x_axis - 0.15, target, width=0.3, label='Target', alpha=0.7, color='#2ecc71') - ax.bar(x_axis + 0.15, output, width=0.3, label='Output', alpha=0.7, color='#e74c3c') - + + ax.bar(x_axis - 0.15, target, width=0.3, label="Target", alpha=0.7, color="#2ecc71") + ax.bar(x_axis + 0.15, output, width=0.3, label="Output", alpha=0.7, color="#e74c3c") + if row == 0: - ax.set_title(f'Checkpoint {ckpt_idx}') + ax.set_title(f"Checkpoint {ckpt_idx}") if col == 0: - ax.set_ylabel(f'Sample {sample_indices[row]}') + ax.set_ylabel(f"Sample {sample_indices[row]}") if row == num_samples - 1: - ax.set_xlabel('Group element') + ax.set_xlabel("Group element") if row == 0 and col == n_checkpoints - 1: - ax.legend(loc='upper right', fontsize=8) - + ax.legend(loc="upper right", fontsize=8) + ax.set_xticks(x_axis) ax.grid(True, alpha=0.3) - - plt.suptitle('D3 Model Predictions vs Targets Over Training', fontsize=14) + + plt.suptitle("D3 Model Predictions vs Targets Over Training", fontsize=14) plt.tight_layout() - + if save_path: - plt.savefig(save_path, bbox_inches='tight', dpi=150) + plt.savefig(save_path, bbox_inches="tight", dpi=150) plt.close() @@ -563,7 +565,7 @@ def plot_power_spectrum_over_time_D3( ): """ Plot power spectrum of model outputs vs template power spectrum over training for D3. - + Args: model: Trained model param_hist: List of parameter snapshots @@ -579,94 +581,110 @@ def plot_power_spectrum_over_time_D3( num_checkpoints_to_sample: Number of checkpoints to sample for the evolution plot """ from group_agf.binary_action_learning.group_fourier_transform import compute_group_fourier_coef - + group_order = D3.order() irreps = D3.irreps() n_irreps = len(irreps) - + # Compute template power spectrum template_power = np.zeros(n_irreps) for i, irrep in enumerate(irreps): fourier_coef = compute_group_fourier_coef(D3, template, irrep) template_power[i] = irrep.size * np.trace(fourier_coef.conj().T @ fourier_coef) template_power = template_power / group_order - + print(f" Template power spectrum: {template_power}") - print(f" (These are dim^2 * diag_value^2 / |G| for each irrep)") - + print(" (These are dim^2 * diag_value^2 / |G| for each irrep)") + # Sample checkpoints uniformly for evolution plot total_checkpoints = len(param_hist) if total_checkpoints <= num_checkpoints_to_sample: sampled_ckpt_indices = list(range(total_checkpoints)) else: - sampled_ckpt_indices = np.linspace(0, total_checkpoints - 1, num_checkpoints_to_sample, dtype=int).tolist() - + sampled_ckpt_indices = np.linspace( + 0, total_checkpoints - 1, num_checkpoints_to_sample, dtype=int + ).tolist() + # Get corresponding epoch numbers epoch_numbers = [param_save_indices[i] for i in sampled_ckpt_indices] - + # Compute model output power at each sampled checkpoint n_sampled = len(sampled_ckpt_indices) model_powers = np.zeros((n_sampled, n_irreps)) - + X_subset = X_eval[:num_samples_for_power] - + for i, ckpt_idx in enumerate(sampled_ckpt_indices): model.load_state_dict(param_hist[ckpt_idx]) model.eval() - + with torch.no_grad(): outputs = model(X_subset) outputs_np = outputs.cpu().numpy() - + # Average power over all samples powers = np.zeros((len(outputs_np), n_irreps)) for sample_i, output in enumerate(outputs_np): for irrep_i, irrep in enumerate(irreps): fourier_coef = compute_group_fourier_coef(D3, output, irrep) - powers[sample_i, irrep_i] = irrep.size * np.trace(fourier_coef.conj().T @ fourier_coef) + powers[sample_i, irrep_i] = irrep.size * np.trace( + fourier_coef.conj().T @ fourier_coef + ) powers = powers / group_order model_powers[i] = np.mean(powers, axis=0) - + # Create 3 subplots: linear, log-x, log-log fig, axes = plt.subplots(1, 3, figsize=(18, 5)) - + top_k = min(5, n_irreps) top_irrep_indices = np.argsort(template_power)[::-1][:top_k] - + colors_line = plt.cm.tab10(np.linspace(0, 1, top_k)) - + # Filter out zero epochs for log scales valid_mask = np.array(epoch_numbers) > 0 valid_epochs = np.array(epoch_numbers)[valid_mask] valid_model_powers = model_powers[valid_mask, :] - + # Plot 1: Linear scales ax = axes[0] for i, irrep_idx in enumerate(top_irrep_indices): power_values = model_powers[:, irrep_idx] - ax.plot(epoch_numbers, power_values, '-', lw=2, color=colors_line[i], - label=f'Irrep {irrep_idx} (dim={irreps[irrep_idx].size})') - ax.axhline(template_power[irrep_idx], linestyle='--', alpha=0.5, color=colors_line[i]) - ax.set_xlabel('Epoch') - ax.set_ylabel('Power') - ax.set_title('Linear Scales', fontsize=12) - ax.legend(loc='upper left', fontsize=7) + ax.plot( + epoch_numbers, + power_values, + "-", + lw=2, + color=colors_line[i], + label=f"Irrep {irrep_idx} (dim={irreps[irrep_idx].size})", + ) + ax.axhline(template_power[irrep_idx], linestyle="--", alpha=0.5, color=colors_line[i]) + ax.set_xlabel("Epoch") + ax.set_ylabel("Power") + ax.set_title("Linear Scales", fontsize=12) + ax.legend(loc="upper left", fontsize=7) ax.grid(True, alpha=0.3) - + # Plot 2: Log x-axis only ax = axes[1] for i, irrep_idx in enumerate(top_irrep_indices): power_values = valid_model_powers[:, irrep_idx] - ax.plot(valid_epochs, power_values, '-', lw=2, color=colors_line[i], - label=f'Irrep {irrep_idx} (dim={irreps[irrep_idx].size})') - ax.axhline(template_power[irrep_idx], linestyle='--', alpha=0.5, color=colors_line[i]) - ax.set_xscale('log') - ax.set_xlabel('Epoch (log scale)') - ax.set_ylabel('Power') - ax.set_title('Log X-axis', fontsize=12) - ax.legend(loc='upper left', fontsize=7) + ax.plot( + valid_epochs, + power_values, + "-", + lw=2, + color=colors_line[i], + label=f"Irrep {irrep_idx} (dim={irreps[irrep_idx].size})", + ) + ax.axhline(template_power[irrep_idx], linestyle="--", alpha=0.5, color=colors_line[i]) + ax.set_xscale("log") + ax.set_xlabel("Epoch (log scale)") + ax.set_ylabel("Power") + ax.set_title("Log X-axis", fontsize=12) + ax.legend(loc="upper left", fontsize=7) ax.grid(True, alpha=0.3) - + # Plot 3: Log-log scales ax = axes[2] for i, irrep_idx in enumerate(top_irrep_indices): @@ -674,26 +692,35 @@ def plot_power_spectrum_over_time_D3( # Filter out zero powers for log scale power_mask = power_values > 0 if np.any(power_mask): - ax.plot(valid_epochs[power_mask], power_values[power_mask], '-', lw=2, color=colors_line[i], - label=f'Irrep {irrep_idx} (dim={irreps[irrep_idx].size})') + ax.plot( + valid_epochs[power_mask], + power_values[power_mask], + "-", + lw=2, + color=colors_line[i], + label=f"Irrep {irrep_idx} (dim={irreps[irrep_idx].size})", + ) if template_power[irrep_idx] > 0: - ax.axhline(template_power[irrep_idx], linestyle='--', alpha=0.5, color=colors_line[i]) - ax.set_xscale('log') - ax.set_yscale('log') - ax.set_xlabel('Epoch (log scale)') - ax.set_ylabel('Power (log scale)') - ax.set_title('Log-Log Scales', fontsize=12) - ax.legend(loc='upper left', fontsize=7) + ax.axhline(template_power[irrep_idx], linestyle="--", alpha=0.5, color=colors_line[i]) + ax.set_xscale("log") + ax.set_yscale("log") + ax.set_xlabel("Epoch (log scale)") + ax.set_ylabel("Power (log scale)") + ax.set_title("Log-Log Scales", fontsize=12) + ax.legend(loc="upper left", fontsize=7) ax.grid(True, alpha=0.3) - + # Overall title - fig.suptitle(f'D3 Power Evolution Over Training (k={k}, {optimizer}, init={init_scale:.0e})', - fontsize=14, fontweight='bold') - + fig.suptitle( + f"D3 Power Evolution Over Training (k={k}, {optimizer}, init={init_scale:.0e})", + fontsize=14, + fontweight="bold", + ) + plt.tight_layout() - + if save_path: - plt.savefig(save_path, bbox_inches='tight', dpi=150) + plt.savefig(save_path, bbox_inches="tight", dpi=150) plt.close() @@ -705,11 +732,11 @@ def produce_plots_D3( param_save_indices, train_loss_hist, template_D3: np.ndarray, - device: str = 'cpu', + device: str = "cpu", ): """ Generate all analysis plots after training (D3 version). - + Args: run_dir: Directory to save plots config: Configuration dictionary (must have dimension='D3') @@ -721,20 +748,21 @@ def produce_plots_D3( device: Device string ('cpu' or 'cuda') """ print("\n=== Generating Analysis Plots (D3) ===") - + from escnn.group import DihedralGroup + D3 = DihedralGroup(N=3) group_order = D3.order() # = 6 - - k = config['data']['k'] - batch_size = config['data']['batch_size'] - training_mode = config['training']['mode'] - + + k = config["data"]["k"] + batch_size = config["data"]["batch_size"] + training_mode = config["training"]["mode"] + # Total data space size for D3 with k compositions - total_space_size = group_order ** k - + total_space_size = group_order**k + # Calculate x-axis values - if training_mode == 'online': + if training_mode == "online": steps = np.arange(len(train_loss_hist)) samples_seen = batch_size * steps fraction_of_space = samples_seen / total_space_size @@ -742,11 +770,11 @@ def produce_plots_D3( x_values = steps else: # offline epochs = np.arange(len(train_loss_hist)) - samples_seen = config['data']['num_samples'] * epochs + samples_seen = config["data"]["num_samples"] * epochs fraction_of_space = samples_seen / total_space_size x_label = "Epoch" x_values = epochs - + # Save x-axis data samples_seen_path = run_dir / "samples_seen.npy" fraction_path = run_dir / "fraction_of_space_seen.npy" @@ -754,61 +782,62 @@ def produce_plots_D3( np.save(fraction_path, fraction_of_space) print(f" ✓ Saved {samples_seen_path}") print(f" ✓ Saved {fraction_path}") - + print(f"\nD3 group order: {group_order}") print(f"Sequence length k: {k}") print(f"Total data space: {total_space_size:,} sequences") if len(samples_seen) > 0: print(f"Samples seen: {samples_seen[-1]:,} ({fraction_of_space[-1]*100:.4f}% of space)") - + ### ----- GENERATE EVALUATION DATA ----- ### print("\nGenerating evaluation data for visualization...") from gagf.rnns.datamodule import build_modular_addition_sequence_dataset_D3 + X_eval, Y_eval, _ = build_modular_addition_sequence_dataset_D3( - template_D3, - k, - mode="sampled", - num_samples=min(config['data']['num_samples'], 1000), - return_all_outputs=config['model']['return_all_outputs'], + template_D3, + k, + mode="sampled", + num_samples=min(config["data"]["num_samples"], 1000), + return_all_outputs=config["model"]["return_all_outputs"], ) X_eval_t = torch.tensor(X_eval, dtype=torch.float32, device=device) Y_eval_t = torch.tensor(Y_eval, dtype=torch.float32, device=device) print(f" Generated {X_eval_t.shape[0]} samples for visualization") - + ### ----- COMPUTE CHECKPOINT INDICES ----- ### total_checkpoints = len(param_hist) - checkpoint_fractions = config['analysis']['checkpoints'] + checkpoint_fractions = config["analysis"]["checkpoints"] checkpoint_indices = [int(f * (total_checkpoints - 1)) for f in checkpoint_fractions] print(f"Analysis checkpoints: {checkpoint_indices} (out of {total_checkpoints})") - + ### ----- PLOT TRAINING LOSS ----- ### print("\nPlotting training loss...") - + fig, axes = plt.subplots(2, 2, figsize=(12, 10)) - + scale_configs = [ - ('linear', 'linear', 'Linear Scale'), - ('linear', 'log', 'Log Y'), - ('log', 'linear', 'Log X'), - ('log', 'log', 'Log-Log'), + ("linear", "linear", "Linear Scale"), + ("linear", "log", "Log Y"), + ("log", "linear", "Log X"), + ("log", "log", "Log-Log"), ] - + for ax, (xscale, yscale, title) in zip(axes.flat, scale_configs): - ax.plot(x_values, train_loss_hist, lw=2, color='#1f77b4') + ax.plot(x_values, train_loss_hist, lw=2, color="#1f77b4") ax.set_xscale(xscale) ax.set_yscale(yscale) ax.set_xlabel(x_label) - ax.set_ylabel('Training Loss') + ax.set_ylabel("Training Loss") ax.set_title(title) ax.grid(True, alpha=0.3) - - plt.suptitle(f'D3 Group Composition (k={k})', fontsize=14) + + plt.suptitle(f"D3 Group Composition (k={k})", fontsize=14) plt.tight_layout() training_loss_path = os.path.join(run_dir, "training_loss.pdf") - plt.savefig(training_loss_path, bbox_inches='tight', dpi=150) + plt.savefig(training_loss_path, bbox_inches="tight", dpi=150) plt.close() print(f" ✓ Saved {training_loss_path}") - + ### ----- PLOT MODEL PREDICTIONS OVER TIME ----- ### print("\nPlotting model predictions over time...") plot_model_predictions_over_time_D3( @@ -821,11 +850,11 @@ def produce_plots_D3( save_path=os.path.join(run_dir, "predictions_over_time.pdf"), ) print(f" ✓ Saved {os.path.join(run_dir, 'predictions_over_time.pdf')}") - + ### ----- PLOT POWER SPECTRUM OVER TIME ----- ### print("\nPlotting power spectrum over time...") - optimizer = config['training']['optimizer'] - init_scale = config['model']['init_scale'] + optimizer = config["training"]["optimizer"] + init_scale = config["model"]["init_scale"] plot_power_spectrum_over_time_D3( model=model, param_hist=param_hist, @@ -839,18 +868,19 @@ def produce_plots_D3( save_path=os.path.join(run_dir, "power_spectrum_analysis.pdf"), ) print(f" ✓ Saved {os.path.join(run_dir, 'power_spectrum_analysis.pdf')}") - + print("\n✓ All D3 plots generated successfully!") + def train_single_run(config: dict, run_dir: Path = None) -> dict: """ Train a model (QuadraticRNN or SequentialMLP) on modular addition for a single configuration. - + Args: - config: Configuration dictionary. Must include 'model.model_type' to specify + config: Configuration dictionary. Must include 'model.model_type' to specify 'QuadraticRNN' or 'SequentialMLP'. run_dir: Optional run directory. If None, will create a timestamped directory. - + Returns: dict: Training results including final losses and metadata. """ @@ -858,117 +888,127 @@ def train_single_run(config: dict, run_dir: Path = None) -> dict: if run_dir is None: run_dir = setup_run_directory(base_dir="runs") print(f"Experiment directory: {run_dir}") - + # Set seed - np.random.seed(config['data']['seed']) - torch.manual_seed(config['data']['seed']) - + np.random.seed(config["data"]["seed"]) + torch.manual_seed(config["data"]["seed"]) + # Determine device - device = config['device'] if torch.cuda.is_available() else "cpu" + device = config["device"] if torch.cuda.is_available() else "cpu" print(f"Using device: {device}") - + ### ----- GENERATE DATA ----- ### print("Generating data...") - - dimension = config['data']['dimension'] - template_type = config['data']['template_type'] - + + dimension = config["data"]["dimension"] + template_type = config["data"]["template_type"] + if dimension == 1: # 1D template generation - p = config['data']['p'] + p = config["data"]["p"] p_flat = p - - if template_type == 'mnist': - template_1d = mnist_template_1d(p, config['data']['mnist_label'], root="data") - elif template_type == 'fourier': - n_freqs = config['data']["n_freqs"] - template_1d = generate_fourier_template_1d(p, n_freqs=n_freqs, seed=config['data']['seed']) - elif template_type == 'gaussian': - template_1d = generate_gaussian_template_1d(p, n_gaussians=3, seed=config['data']['seed']) - elif template_type == 'onehot': + + if template_type == "mnist": + template_1d = mnist_template_1d(p, config["data"]["mnist_label"], root="data") + elif template_type == "fourier": + n_freqs = config["data"]["n_freqs"] + template_1d = generate_fourier_template_1d( + p, n_freqs=n_freqs, seed=config["data"]["seed"] + ) + elif template_type == "gaussian": + template_1d = generate_gaussian_template_1d( + p, n_gaussians=3, seed=config["data"]["seed"] + ) + elif template_type == "onehot": template_1d = generate_onehot_template_1d(p) else: raise ValueError(f"Unknown template_type: {template_type}") - + template_1d = template_1d - np.mean(template_1d) template = template_1d # For consistency in code below - + # Visualize 1D template print("Visualizing template...") fig, ax = plt.subplots(figsize=(10, 4)) ax.plot(template_1d) - ax.set_xlabel('Position') - ax.set_ylabel('Value') - ax.set_title('1D Template') + ax.set_xlabel("Position") + ax.set_ylabel("Value") + ax.set_title("1D Template") ax.grid(True, alpha=0.3) fig.savefig(os.path.join(run_dir, "template.pdf"), bbox_inches="tight", dpi=150) - print(f" ✓ Saved template") - + print(" ✓ Saved template") + elif dimension == 2: # 2D template generation - p1 = config['data']['p1'] - p2 = config['data']['p2'] + p1 = config["data"]["p1"] + p2 = config["data"]["p2"] p_flat = p1 * p2 - - if template_type == 'mnist': - template_2d = mnist_template_2d(p1, p2, config['data']['mnist_label'], root="data") - elif template_type == 'fourier': - n_freqs = config['data']["n_freqs"] - template_2d = generate_template_unique_freqs(p1, p2, n_freqs=n_freqs, seed=config['data']['seed']) + + if template_type == "mnist": + template_2d = mnist_template_2d(p1, p2, config["data"]["mnist_label"], root="data") + elif template_type == "fourier": + n_freqs = config["data"]["n_freqs"] + template_2d = generate_template_unique_freqs( + p1, p2, n_freqs=n_freqs, seed=config["data"]["seed"] + ) else: raise ValueError(f"Unknown template_type for 2D: {template_type}") - + template_2d = template_2d - np.mean(template_2d) template = template_2d # For consistency in code below - + # Visualize 2D template print("Visualizing template...") fig, ax = plot_2d_signal(template_2d, title="Template", cmap="gray") fig.savefig(os.path.join(run_dir, "template.pdf"), bbox_inches="tight", dpi=150) - print(f" ✓ Saved template") - elif dimension == 'D3': + print(" ✓ Saved template") + elif dimension == "D3": from escnn.group import DihedralGroup - from group_agf.binary_action_learning.group_fourier_transform import compute_group_inverse_fourier_transform - + + from group_agf.binary_action_learning.group_fourier_transform import ( + compute_group_inverse_fourier_transform, + ) + D3 = DihedralGroup(N=3) # D3 = dihedral group of order 6 (3 rotations * 2 for reflections) group_order = D3.order() # = 6 p_flat = group_order # For D3, the "p" is the group order - + print(f"D3 group order: {group_order}") print(f"D3 irreps: {[irrep.size for irrep in D3.irreps()]} (dimensions)") - - if template_type == 'onehot': + + if template_type == "onehot": # Generate one-hot template of length group_order # This creates a template with a spike at position 1 template_d3 = np.zeros(group_order, dtype=np.float32) template_d3[1] = 10.0 template_d3 = template_d3 - np.mean(template_d3) - print(f"Template type: onehot") - - elif template_type == 'custom_fourier': + print("Template type: onehot") + + elif template_type == "custom_fourier": # Generate template from Fourier coefficients for each irrep # powers specifies the DESIRED POWER SPECTRUM values (not diagonal values) # We convert powers to Fourier coefficient diagonal values using: # diag_value = sqrt(group_size * power / dim^2) # This is because: power = dim^2 * diag_value^2 / group_size - powers = config['data']['powers'] + powers = config["data"]["powers"] irreps = D3.irreps() irrep_dims = [ir.size for ir in irreps] - - assert len(powers) == len(irreps), \ - f"powers must have {len(irreps)} values (one per irrep), got {len(powers)}" - + + assert len(powers) == len( + irreps + ), f"powers must have {len(irreps)} values (one per irrep), got {len(powers)}" + # Convert powers to Fourier coefficient diagonal values # (same formula as in binary_action_learning/main.py) fourier_coef_diag_values = [ np.sqrt(group_order * p / dim**2) if p > 0 else 0.0 for p, dim in zip(powers, irrep_dims) ] - - print(f"Template type: custom_fourier") + + print("Template type: custom_fourier") print(f"Desired powers (per irrep): {powers}") print(f"Fourier coef diagonal values: {fourier_coef_diag_values}") - + # Build spectrum: list of diagonal matrices, one per irrep spectrum = [] for i, irrep in enumerate(irreps): @@ -976,175 +1016,183 @@ def train_single_run(config: dict, run_dir: Path = None) -> dict: diag_values = np.full(irrep.size, diag_val, dtype=float) mat = np.zeros((irrep.size, irrep.size), dtype=float) np.fill_diagonal(mat, diag_values) - print(f" Irrep {i} (dim={irrep.size}): diag_value = {diag_val:.4f} -> power = {powers[i]}") + print( + f" Irrep {i} (dim={irrep.size}): diag_value = {diag_val:.4f} -> power = {powers[i]}" + ) spectrum.append(mat) - + # Generate template via inverse group Fourier transform template_d3 = compute_group_inverse_fourier_transform(D3, spectrum) template_d3 = template_d3 - np.mean(template_d3) template_d3 = template_d3.astype(np.float32) else: - raise ValueError(f"Unknown template_type for D3: {template_type}. Must be 'onehot' or 'custom_fourier'") - + raise ValueError( + f"Unknown template_type for D3: {template_type}. Must be 'onehot' or 'custom_fourier'" + ) + template = template_d3 # For consistency in code below print(f"Template shape: {template.shape}") - + # Visualize D3 template print("Visualizing template...") fig, ax = plt.subplots(figsize=(8, 4)) ax.bar(range(group_order), template_d3) - ax.set_xlabel('Group element index') - ax.set_ylabel('Value') - title = f'D3 Template (order={group_order}, type={template_type})' - if template_type == 'custom_fourier': - title += f'\npowers={powers}' + ax.set_xlabel("Group element index") + ax.set_ylabel("Value") + title = f"D3 Template (order={group_order}, type={template_type})" + if template_type == "custom_fourier": + title += f"\npowers={powers}" ax.set_title(title) ax.set_xticks(range(group_order)) fig.savefig(os.path.join(run_dir, "template.pdf"), bbox_inches="tight", dpi=150) plt.close(fig) - print(f" ✓ Saved template") + print(" ✓ Saved template") else: raise ValueError(f"dimension must be 1 or 2, got {dimension}") - ### ----- SETUP TRAINING ----- ### print("Setting up model and training...") - + # Flatten template for model (works for both 1D and 2D) template_torch = torch.tensor(template, device=device, dtype=torch.float32).flatten() - + # Determine which model to use - model_type = config['model']['model_type'] + model_type = config["model"]["model_type"] print(f"Using model type: {model_type}") - - if model_type == 'QuadraticRNN': + + if model_type == "QuadraticRNN": rnn_2d = QuadraticRNN( p=p_flat, - d=config['model']['hidden_dim'], + d=config["model"]["hidden_dim"], template=template_torch, - init_scale=config['model']['init_scale'], - return_all_outputs=config['model']['return_all_outputs'], - transform_type=config['model']['transform_type'], + init_scale=config["model"]["init_scale"], + return_all_outputs=config["model"]["return_all_outputs"], + transform_type=config["model"]["transform_type"], ).to(device) - elif model_type == 'SequentialMLP': + elif model_type == "SequentialMLP": rnn_2d = SequentialMLP( p=p_flat, - d=config['model']['hidden_dim'], + d=config["model"]["hidden_dim"], template=template_torch, - k=config['data']['k'], - init_scale=config['model']['init_scale'], - return_all_outputs=config['model']['return_all_outputs'], + k=config["data"]["k"], + init_scale=config["model"]["init_scale"], + return_all_outputs=config["model"]["return_all_outputs"], ).to(device) else: - raise ValueError(f"Invalid model_type: {model_type}. Must be 'QuadraticRNN' or 'SequentialMLP'") - + raise ValueError( + f"Invalid model_type: {model_type}. Must be 'QuadraticRNN' or 'SequentialMLP'" + ) + criterion = nn.MSELoss() # Optimizer selection with model-aware defaults - optimizer_name = config['training']['optimizer'] - + optimizer_name = config["training"]["optimizer"] + # Auto-select optimizer if not specified or if 'auto' - if optimizer_name == 'auto' or (optimizer_name not in ['adam', 'hybrid', 'per_neuron']): - if model_type == 'SequentialMLP': - optimizer_name = 'per_neuron' + if optimizer_name == "auto" or (optimizer_name not in ["adam", "hybrid", "per_neuron"]): + if model_type == "SequentialMLP": + optimizer_name = "per_neuron" print(f"Auto-selected optimizer: {optimizer_name} (recommended for SequentialMLP)") else: - optimizer_name = 'adam' + optimizer_name = "adam" print(f"Auto-selected optimizer: {optimizer_name}") else: print(f"Using optimizer: {optimizer_name}") - if optimizer_name == 'adam': + if optimizer_name == "adam": optimizer = optim.Adam( - rnn_2d.parameters(), - lr=config['training']['learning_rate'], - betas=tuple(config['training']['betas']), - weight_decay=config['training']['weight_decay'] + rnn_2d.parameters(), + lr=config["training"]["learning_rate"], + betas=tuple(config["training"]["betas"]), + weight_decay=config["training"]["weight_decay"], ) - elif optimizer_name == 'hybrid': - if model_type != 'QuadraticRNN': - raise ValueError(f"'hybrid' optimizer is only supported for QuadraticRNN, got {model_type}") + elif optimizer_name == "hybrid": + if model_type != "QuadraticRNN": + raise ValueError( + f"'hybrid' optimizer is only supported for QuadraticRNN, got {model_type}" + ) optimizer = HybridRNNOptimizer( rnn_2d, lr=1, - scaling_factor=config['training']['scaling_factor'], - adam_lr=config['training']['learning_rate'], - adam_betas=tuple(config['training']['betas']), + scaling_factor=config["training"]["scaling_factor"], + adam_lr=config["training"]["learning_rate"], + adam_betas=tuple(config["training"]["betas"]), adam_eps=1e-8, ) - elif optimizer_name == 'per_neuron': + elif optimizer_name == "per_neuron": # Per-neuron scaled SGD (recommended for SequentialMLP) - degree = config['training']['degree'] - lr = config['training']['learning_rate'] - + degree = config["training"]["degree"] + lr = config["training"]["learning_rate"] + # For SequentialMLP, use lr=1.0 by default if not specified - if model_type == 'SequentialMLP' and lr == 1.0e-3: + if model_type == "SequentialMLP" and lr == 1.0e-3: print(" Note: Using lr=1.0 for per_neuron optimizer with SequentialMLP") lr = 1.0 - + optimizer = PerNeuronScaledSGD( rnn_2d, lr=lr, - degree=degree # Will auto-infer as k+1 for SequentialMLP (k = sequence length) + degree=degree, # Will auto-infer as k+1 for SequentialMLP (k = sequence length) ) print(f" Degree of homogeneity: {optimizer.param_groups[0]['degree']}") else: - raise ValueError(f"Invalid optimizer: {optimizer_name}. Must be 'adam', 'hybrid', or 'per_neuron'") - - + raise ValueError( + f"Invalid optimizer: {optimizer_name}. Must be 'adam', 'hybrid', or 'per_neuron'" + ) + ### ----- CREATE DATA LOADERS ----- ### - training_mode = config['training']['mode'] - - if training_mode == 'online': + training_mode = config["training"]["mode"] + + if training_mode == "online": print("Using ONLINE data generation...") - + if dimension == 1: from gagf.rnns.datamodule import OnlineModularAdditionDataset1D - + # Training dataset - train_dataset = OnlineModularAdditionDataset1D( - p=config['data']['p'], + train_dataset = OnlineModularAdditionDataset1D( + p=config["data"]["p"], template=template_1d, - k=config['data']['k'], - batch_size=config['data']['batch_size'], + k=config["data"]["k"], + batch_size=config["data"]["batch_size"], device=device, - return_all_outputs=config['model']['return_all_outputs'], + return_all_outputs=config["model"]["return_all_outputs"], ) - + # Validation dataset val_dataset = OnlineModularAdditionDataset1D( - p=config['data']['p'], + p=config["data"]["p"], template=template_1d, - k=config['data']['k'], - batch_size=config['data']['batch_size'], + k=config["data"]["k"], + batch_size=config["data"]["batch_size"], device=device, - return_all_outputs=config['model']['return_all_outputs'], + return_all_outputs=config["model"]["return_all_outputs"], ) elif dimension == 2: from gagf.rnns.datamodule import OnlineModularAdditionDataset2D - + # Training dataset train_dataset = OnlineModularAdditionDataset2D( - p1=config['data']['p1'], - p2=config['data']['p2'], + p1=config["data"]["p1"], + p2=config["data"]["p2"], template=template_2d, - k=config['data']['k'], - batch_size=config['data']['batch_size'], + k=config["data"]["k"], + batch_size=config["data"]["batch_size"], device=device, - return_all_outputs=config['model']['return_all_outputs'], + return_all_outputs=config["model"]["return_all_outputs"], ) - + # Validation dataset val_dataset = OnlineModularAdditionDataset2D( - p1=config['data']['p1'], - p2=config['data']['p2'], + p1=config["data"]["p1"], + p2=config["data"]["p2"], template=template_2d, - k=config['data']['k'], - batch_size=config['data']['batch_size'], + k=config["data"]["k"], + batch_size=config["data"]["batch_size"], device=device, - return_all_outputs=config['model']['return_all_outputs'], + return_all_outputs=config["model"]["return_all_outputs"], ) - elif dimension == 'D3': + elif dimension == "D3": # Online training for D3 is not yet implemented raise NotImplementedError( "Online training mode is not yet implemented for D3. " @@ -1152,85 +1200,85 @@ def train_single_run(config: dict, run_dir: Path = None) -> dict: ) else: raise ValueError(f"dimension must be 1, 2, or 'D3', got {dimension}") - + train_loader = DataLoader(train_dataset, batch_size=None, num_workers=0) val_loader = DataLoader(val_dataset, batch_size=None, num_workers=0) - - num_steps = config['training']['num_steps'] + + num_steps = config["training"]["num_steps"] print(f" Training for {num_steps} steps") - - elif training_mode == 'offline': + + elif training_mode == "offline": print("Using OFFLINE pre-generated dataset...") from torch.utils.data import TensorDataset - + if dimension == 1: from gagf.rnns.datamodule import build_modular_addition_sequence_dataset_1d - + # Generate training dataset X_train, Y_train, _ = build_modular_addition_sequence_dataset_1d( - config['data']['p'], - template_1d, - config['data']['k'], - mode=config['data']['mode'], - num_samples=config['data']['num_samples'], - return_all_outputs=config['model']['return_all_outputs'], + config["data"]["p"], + template_1d, + config["data"]["k"], + mode=config["data"]["mode"], + num_samples=config["data"]["num_samples"], + return_all_outputs=config["model"]["return_all_outputs"], ) - + # Generate validation dataset - val_samples = max(1000, config['data']['num_samples'] // 10) + val_samples = max(1000, config["data"]["num_samples"] // 10) X_val, Y_val, _ = build_modular_addition_sequence_dataset_1d( - config['data']['p'], - template_1d, - config['data']['k'], - mode='sampled', + config["data"]["p"], + template_1d, + config["data"]["k"], + mode="sampled", num_samples=val_samples, - return_all_outputs=config['model']['return_all_outputs'], + return_all_outputs=config["model"]["return_all_outputs"], ) elif dimension == 2: from gagf.rnns.datamodule import build_modular_addition_sequence_dataset_2d - + # Generate training dataset X_train, Y_train, _ = build_modular_addition_sequence_dataset_2d( - config['data']['p1'], - config['data']['p2'], - template_2d, - config['data']['k'], - mode=config['data']['mode'], - num_samples=config['data']['num_samples'], - return_all_outputs=config['model']['return_all_outputs'], + config["data"]["p1"], + config["data"]["p2"], + template_2d, + config["data"]["k"], + mode=config["data"]["mode"], + num_samples=config["data"]["num_samples"], + return_all_outputs=config["model"]["return_all_outputs"], ) - + # Generate validation dataset - val_samples = max(1000, config['data']['num_samples'] // 10) + val_samples = max(1000, config["data"]["num_samples"] // 10) X_val, Y_val, _ = build_modular_addition_sequence_dataset_2d( - config['data']['p1'], - config['data']['p2'], - template_2d, - config['data']['k'], - mode='sampled', + config["data"]["p1"], + config["data"]["p2"], + template_2d, + config["data"]["k"], + mode="sampled", num_samples=val_samples, - return_all_outputs=config['model']['return_all_outputs'], + return_all_outputs=config["model"]["return_all_outputs"], ) - elif dimension == 'D3': + elif dimension == "D3": from gagf.rnns.datamodule import build_modular_addition_sequence_dataset_D3 - + # Generate training dataset X_train, Y_train, _ = build_modular_addition_sequence_dataset_D3( template_d3, - config['data']['k'], - mode=config['data']['mode'], - num_samples=config['data']['num_samples'], - return_all_outputs=config['model']['return_all_outputs'], + config["data"]["k"], + mode=config["data"]["mode"], + num_samples=config["data"]["num_samples"], + return_all_outputs=config["model"]["return_all_outputs"], ) - + # Generate validation dataset - val_samples = max(1000, config['data']['num_samples'] // 10) + val_samples = max(1000, config["data"]["num_samples"] // 10) X_val, Y_val, _ = build_modular_addition_sequence_dataset_D3( template_d3, - config['data']['k'], - mode='sampled', + config["data"]["k"], + mode="sampled", num_samples=val_samples, - return_all_outputs=config['model']['return_all_outputs'], + return_all_outputs=config["model"]["return_all_outputs"], ) else: raise ValueError(f"dimension must be 1 or 2, got {dimension}") @@ -1239,84 +1287,85 @@ def train_single_run(config: dict, run_dir: Path = None) -> dict: Y_train_t = torch.tensor(Y_train, dtype=torch.float32, device=device) X_val_t = torch.tensor(X_val, dtype=torch.float32, device=device) Y_val_t = torch.tensor(Y_val, dtype=torch.float32, device=device) - + train_dataset = TensorDataset(X_train_t, Y_train_t) val_dataset = TensorDataset(X_val_t, Y_val_t) - + train_loader = DataLoader( - train_dataset, - batch_size=config['data']['batch_size'], - shuffle=True - ) - val_loader = DataLoader( - val_dataset, - batch_size=config['data']['batch_size'], - shuffle=False + train_dataset, batch_size=config["data"]["batch_size"], shuffle=True ) - - epochs = config['training']['epochs'] + val_loader = DataLoader(val_dataset, batch_size=config["data"]["batch_size"], shuffle=False) + + epochs = config["training"]["epochs"] print(f" Training for {epochs} epochs with {len(train_dataset)} samples") - + else: raise ValueError(f"Invalid training mode: {training_mode}. Must be 'online' or 'offline'") - + ### ----- TRAIN MODEL ----- ### print(f"Starting training in {training_mode} mode...") - + # Get optional early stopping threshold - reduction_threshold = config['training'].get('reduction_threshold') + reduction_threshold = config["training"].get("reduction_threshold") if reduction_threshold is not None: print(f"Early stopping enabled at {reduction_threshold*100:.1f}% reduction") - + start_time = time.time() - - if training_mode == 'online': + + if training_mode == "online": from gagf.rnns.train import train_online + train_loss_hist, val_loss_hist, param_hist, param_save_indices, final_step = train_online( rnn_2d, train_loader, criterion, optimizer, num_steps=num_steps, - verbose_interval=config['training']['verbose_interval'], - grad_clip=config['training']['grad_clip'], + verbose_interval=config["training"]["verbose_interval"], + grad_clip=config["training"]["grad_clip"], eval_dataloader=val_loader, - save_param_interval=config['training']['save_param_interval'], + save_param_interval=config["training"]["save_param_interval"], reduction_threshold=reduction_threshold, ) else: # offline from gagf.rnns.train import train + train_loss_hist, val_loss_hist, param_hist, param_save_indices, final_step = train( rnn_2d, train_loader, criterion, optimizer, epochs=epochs, - verbose_interval=config['training']['verbose_interval'], - grad_clip=config['training']['grad_clip'], + verbose_interval=config["training"]["verbose_interval"], + grad_clip=config["training"]["grad_clip"], eval_dataloader=val_loader, - save_param_interval=config['training']['save_param_interval'], + save_param_interval=config["training"]["save_param_interval"], reduction_threshold=reduction_threshold, ) - + training_time = time.time() - start_time - print(f"\nTraining complete!") + print("\nTraining complete!") print(f" Final train loss: {train_loss_hist[-1]:.6f}") print(f" Final val loss: {val_loss_hist[-1]:.6f}") print(f" Training time: {training_time:.2f}s") if reduction_threshold is not None: - max_steps_or_epochs = num_steps if training_mode == 'online' else epochs + max_steps_or_epochs = num_steps if training_mode == "online" else epochs stopped_early = final_step < max_steps_or_epochs status = "CONVERGED" if stopped_early else "DID NOT CONVERGE" print(f" Status: {status} at step/epoch {final_step}") ### ----- SAVE RESULTS ----- ### metadata = save_results( - run_dir, config, rnn_2d, - train_loss_hist, val_loss_hist, + run_dir, + config, + rnn_2d, + train_loss_hist, + val_loss_hist, param_hist, - template, training_time, device + template, + training_time, + device, ) ### ----- PRODUCE ALL PLOTS ----- ### @@ -1331,7 +1380,7 @@ def train_single_run(config: dict, run_dir: Path = None) -> dict: train_loss_hist=train_loss_hist, template_2d=template_2d, training_mode=training_mode, - device=device + device=device, ) elif dimension == 1: # Produce detailed plots for 1D @@ -1344,9 +1393,9 @@ def train_single_run(config: dict, run_dir: Path = None) -> dict: train_loss_hist=train_loss_hist, template_1d=template_1d, training_mode=training_mode, - device=device + device=device, ) - elif dimension == 'D3': + elif dimension == "D3": # Produce basic plots for D3 produce_plots_D3( run_dir=run_dir, @@ -1360,7 +1409,7 @@ def train_single_run(config: dict, run_dir: Path = None) -> dict: ) else: raise ValueError(f"dimension must be 1, 2, or 'D3', got {dimension}") - + # Return results dictionary results = { "final_train_loss": float(train_loss_hist[-1]), @@ -1370,19 +1419,19 @@ def train_single_run(config: dict, run_dir: Path = None) -> dict: "run_dir": str(run_dir), "final_step": final_step, } - + # Add early stopping info if enabled if reduction_threshold is not None: - max_steps_or_epochs = num_steps if training_mode == 'online' else epochs + max_steps_or_epochs = num_steps if training_mode == "online" else epochs results["converged"] = final_step < max_steps_or_epochs - + return results def main(config: dict): """ Main entry point for single training run. - + Args: config: Configuration dictionary. """ @@ -1390,15 +1439,17 @@ def main(config: dict): if __name__ == "__main__": - parser = argparse.ArgumentParser(description="Train QuadraticRNN or SequentialMLP on 2D modular addition") + parser = argparse.ArgumentParser( + description="Train QuadraticRNN or SequentialMLP on 2D modular addition" + ) parser.add_argument( - "--config", - type=str, + "--config", + type=str, default="gagf/rnns/config.yaml", - help="Path to config YAML file (default: gagf/rnns/config.yaml)" + help="Path to config YAML file (default: gagf/rnns/config.yaml)", ) args = parser.parse_args() - + config = load_config(args.config) - main(config) \ No newline at end of file + main(config) diff --git a/gagf/rnns/model.py b/gagf/rnns/model.py index 40a27c9..2d24d0a 100644 --- a/gagf/rnns/model.py +++ b/gagf/rnns/model.py @@ -1,5 +1,5 @@ -from torch import nn import torch +from torch import nn class QuadraticRNN(nn.Module): @@ -17,7 +17,7 @@ def __init__( template: torch.Tensor, # put on device before passing to constructor init_scale: float = 1e-2, return_all_outputs: bool = False, - transform_type: str = 'quadratic' # 'quadratic' | 'multiplicative' + transform_type: str = "quadratic", # 'quadratic' | 'multiplicative' ) -> None: """ Args: @@ -44,14 +44,10 @@ def __init__( self.W_drive = nn.Parameter(init_scale * torch.randn(d, p) / torch.sqrt(torch.tensor(p))) self.W_out = nn.Parameter(init_scale * torch.randn(p, d) / torch.sqrt(torch.tensor(d))) - def _apply_transformation( - self, - h1: torch.Tensor, - h2: torch.Tensor - ) -> torch.Tensor: - if self.transform_type == 'quadratic': - return (h1 + h2)**2 - elif self.transform_type == 'multiplicative': + def _apply_transformation(self, h1: torch.Tensor, h2: torch.Tensor) -> torch.Tensor: + if self.transform_type == "quadratic": + return (h1 + h2) ** 2 + elif self.transform_type == "multiplicative": return h1 * h2 else: raise ValueError(f"Invalid transform type: {self.transform_type}") @@ -59,39 +55,39 @@ def _apply_transformation( def forward(self, x_seq: torch.Tensor) -> torch.Tensor: """ x_seq: (batch, k, p) - returns: + returns: if return_all_outputs=False: (batch, p) - only final output if return_all_outputs=True: (batch, k, p) - output at each step - + When k=2, this is equivalent to the 2-layer MLP. When k>2, the W_drive is used to drive the recurrence. """ batch_size = x_seq.shape[0] k = x_seq.shape[1] assert k >= 2, "Sequence length must be at least 2" - + # Initialize h_0 = x_seq[:, 0, :] @ self.W_in.T # (B, d) h_1 = x_seq[:, 1, :] @ self.W_drive.T # (B, d) h = self._apply_transformation(h_0, h_1) - + if self.return_all_outputs: # Store outputs at each step outputs = [] - + # Output after first two tokens y_1 = h @ self.W_out.T # (B, p) outputs.append(y_1) - + # Recurrence for t in range(2, k): xt = x_seq[:, t, :] # (B, p) h = self._apply_transformation(h @ self.W_mix.T, xt @ self.W_drive.T) # (B, d) - + # Output after this token y_t = h @ self.W_out.T # (B, p) outputs.append(y_t) - + # Stack all outputs: (B, k-1, p) # Note: k-1 because we need at least 2 tokens before first prediction return torch.stack(outputs, dim=1) @@ -101,20 +97,21 @@ def forward(self, x_seq: torch.Tensor) -> torch.Tensor: for t in range(2, k): xt = x_seq[:, t, :] # (B, p) h = self._apply_transformation(h @ self.W_mix.T, xt @ self.W_drive.T) # (B, d) - + y = h @ self.W_out.T # (B, p) return y + class SequentialMLP(nn.Module): """ MLP that processes k unordered input vectors by concatenating them. - + Architecture: x_concat = concat(x1, x2, ..., xk) # shape: (batch, k*p) h = x_concat @ W_in.T # shape: (batch, hidden_size) h_activated = h^k # k-th power activation y = h_activated @ W_out.T # shape: (batch, p) - + Note: The inputs are unordered (not sequential), so the model is permutation-invariant with respect to the ordering of the k inputs (ok for commutative groups!). """ @@ -144,39 +141,41 @@ def __init__( self.init_scale = init_scale self.template = template self.return_all_outputs = return_all_outputs - + # Parameters # W_in: maps concatenated input (k*p) to hidden (d) # W_out: maps hidden (d) to output (p) - self.W_in = nn.Parameter(init_scale * torch.randn(d, k * p) / torch.sqrt(torch.tensor(k * p))) + self.W_in = nn.Parameter( + init_scale * torch.randn(d, k * p) / torch.sqrt(torch.tensor(k * p)) + ) self.W_out = nn.Parameter(init_scale * torch.randn(p, d) / torch.sqrt(torch.tensor(d))) def forward(self, x_seq: torch.Tensor) -> torch.Tensor: """ Process k unordered input vectors. - + Args: x_seq: (batch, k, p) - k input vectors of dimension p each - + Returns: (batch, p) - output vector Note: return_all_outputs is ignored for MLP (no intermediate outputs) """ batch_size = x_seq.shape[0] k_actual = x_seq.shape[1] - + assert k_actual == self.k, f"Expected k={self.k} inputs, got {k_actual}" - + # Concatenate all k inputs x_concat = x_seq.reshape(batch_size, self.k * self.p) # (batch, k*p) - + # First layer: linear transformation h = x_concat @ self.W_in.T # (batch, d) - + # Activation: k-th power - h_activated = h ** self.k # (batch, d) - + h_activated = h**self.k # (batch, d) + # Second layer: output y = h_activated @ self.W_out.T # (batch, p) - - return y \ No newline at end of file + + return y diff --git a/gagf/rnns/optimizers.py b/gagf/rnns/optimizers.py index c02cedb..aee937f 100644 --- a/gagf/rnns/optimizers.py +++ b/gagf/rnns/optimizers.py @@ -1,29 +1,26 @@ import torch + class PerNeuronScaledSGD(torch.optim.Optimizer): """ Per-neuron scaled SGD optimizer that exploits model homogeneity. - + Learning rate scaling per neuron i: eta_i = lr * ||theta_i||^(2-degree) - + where: - theta_i comprises all parameters associated with neuron i - degree is the degree of homogeneity of the model - + For SequentialMLP with sequence length k: - theta_i = (W_in[i, :], W_out[:, i]) - degree = k+1 (activation is x^k, one more layer for W_out = x^(k+1)) - + The scaling exploits the homogeneity property: if we scale all parameters of neuron i by α, the output scales by α^(2-degree). """ - def __init__(self, - model, - lr=1.0, - degree=None - ) -> None: + def __init__(self, model, lr=1.0, degree=None) -> None: """ Args: model: SequentialMLP or compatible model @@ -36,53 +33,53 @@ def __init__(self, """ # Infer degree of homogeneity from model if not provided if degree is None: - if hasattr(model, 'k'): + if hasattr(model, "k"): # For SequentialMLP: degree = k+1 # (k from activation power, +1 from output layer) degree = model.k + 1 else: # Default back to SGD degree = 2 - + # Get model parameters params = list(model.parameters()) - + super().__init__( - [{'params': params, 'model': model, 'model_type': type(model).__name__}], - dict(lr=lr, degree=degree) + [{"params": params, "model": model, "model_type": type(model).__name__}], + dict(lr=lr, degree=degree), ) @torch.no_grad() def step(self, closure=None): group = self.param_groups[0] - model = group['model'] - lr = group['lr'] - degree = group['degree'] - model_type = group['model_type'] - - if model_type == 'SequentialMLP': + model = group["model"] + lr = group["lr"] + degree = group["degree"] + model_type = group["model_type"] + + if model_type == "SequentialMLP": # SequentialMLP: W_in (d, k*p), W_out (p, d) # where k is the sequence length W_in = model.W_in W_out = model.W_out g_in = W_in.grad g_out = W_out.grad - + if g_in is None or g_out is None: return - + # Per-neuron norms: theta_i = (W_in[i, :], W_out[:, i]) u2 = (W_in**2).sum(dim=1) # (d,) w2 = (W_out**2).sum(dim=0) # (d,) theta_norm = torch.sqrt(u2 + w2 + 1e-12) # (d,) - + # Scale = ||theta_i||^(2-degree) - scale = theta_norm.pow(2-degree) - + scale = theta_norm.pow(2 - degree) + # Scale each neuron's gradients g_in.mul_(scale.view(-1, 1)) g_out.mul_(scale.view(1, -1)) - + # SGD update W_in.add_(g_in, alpha=-lr) W_out.add_(g_out, alpha=-lr) @@ -96,25 +93,25 @@ class HybridRNNOptimizer(torch.optim.Optimizer): Hybrid optimizer for QuadraticRNN: - Per-neuron scaled SGD for W_in, W_drive, W_out (the MLP-like components) - Regular Adam for W_mix (the recurrent component) - + The per-neuron scaling is: eta_i = lr * ||theta_i||^scaling_factor where: - theta_i = (W_in[i,:], W_drive[i,:], W_out[:,i]) - scaling_factor is typically negative (e.g., -1 to -3) - + Note: For QuadraticRNN, we use 'scaling_factor' (can be negative) rather than 'degree' (which is positive and related to homogeneity degree). """ def __init__( - self, - model, - lr=1e-2, - scaling_factor=-1, - adam_lr=1e-3, - adam_betas=(0.9, 0.999), - adam_eps=1e-8 + self, + model, + lr=1e-2, + scaling_factor=-1, + adam_lr=1e-3, + adam_betas=(0.9, 0.999), + adam_eps=1e-8, ): """ Args: @@ -128,103 +125,103 @@ def __init__( # Create parameter groups scaled_params = [model.W_in, model.W_drive, model.W_out] adam_params = [model.W_mix] - + defaults = dict( - model=model, - lr=lr, - scaling_factor=scaling_factor, + model=model, + lr=lr, + scaling_factor=scaling_factor, adam_lr=adam_lr, adam_betas=adam_betas, - adam_eps=adam_eps + adam_eps=adam_eps, ) - + # Initialize with all params super().__init__( [ - {'params': scaled_params, 'type': 'scaled_sgd'}, - {'params': adam_params, 'type': 'adam'} - ], - defaults + {"params": scaled_params, "type": "scaled_sgd"}, + {"params": adam_params, "type": "adam"}, + ], + defaults, ) - + # Initialize Adam state for W_mix - self.state['step'] = 0 + self.state["step"] = 0 for param in adam_params: self.state[param] = { - 'exp_avg': torch.zeros_like(param), - 'exp_avg_sq': torch.zeros_like(param) + "exp_avg": torch.zeros_like(param), + "exp_avg_sq": torch.zeros_like(param), } @torch.no_grad() def step(self, closure=None): """Performs a single optimization step.""" - + for group in self.param_groups: - if group['type'] == 'scaled_sgd': + if group["type"] == "scaled_sgd": # Per-neuron scaled SGD for W_in, W_drive, W_out - model = self.defaults['model'] - lr = self.defaults['lr'] - scaling_factor = self.defaults['scaling_factor'] - + model = self.defaults["model"] + lr = self.defaults["lr"] + scaling_factor = self.defaults["scaling_factor"] + W_in, W_drive, W_out = model.W_in, model.W_drive, model.W_out g_in, g_drive, g_out = W_in.grad, W_drive.grad, W_out.grad - + if g_in is None or g_drive is None or g_out is None: continue - + # Compute per-neuron norms u2 = (W_in**2).sum(dim=1) # (d,) v2 = (W_drive**2).sum(dim=1) # (d,) w2 = (W_out**2).sum(dim=0) # (d,) theta_norm = torch.sqrt(u2 + v2 + w2 + 1e-12) # (d,) - + # Scale = ||theta_i||^scaling_factor scale = theta_norm.pow(scaling_factor) - + # Scale each neuron's gradients g_in_scaled = g_in * scale.view(-1, 1) g_drive_scaled = g_drive * scale.view(-1, 1) g_out_scaled = g_out * scale.view(1, -1) - + # SGD update W_in.add_(g_in_scaled, alpha=-lr) W_drive.add_(g_drive_scaled, alpha=-lr) W_out.add_(g_out_scaled, alpha=-lr) - - elif group['type'] == 'adam': + + elif group["type"] == "adam": # Regular Adam for W_mix - adam_lr = self.defaults['adam_lr'] - beta1, beta2 = self.defaults['adam_betas'] - eps = self.defaults['adam_eps'] - - self.state['step'] += 1 - step = self.state['step'] - - for param in group['params']: + adam_lr = self.defaults["adam_lr"] + beta1, beta2 = self.defaults["adam_betas"] + eps = self.defaults["adam_eps"] + + self.state["step"] += 1 + step = self.state["step"] + + for param in group["params"]: if param.grad is None: continue - + grad = param.grad state = self.state[param] - - exp_avg = state['exp_avg'] - exp_avg_sq = state['exp_avg_sq'] - + + exp_avg = state["exp_avg"] + exp_avg_sq = state["exp_avg_sq"] + # Update biased first and second moment estimates exp_avg.mul_(beta1).add_(grad, alpha=1 - beta1) exp_avg_sq.mul_(beta2).addcmul_(grad, grad, value=1 - beta2) - + # Bias correction - bias_correction1 = 1 - beta1 ** step - bias_correction2 = 1 - beta2 ** step - + bias_correction1 = 1 - beta1**step + bias_correction2 = 1 - beta2**step + # Compute step size step_size = adam_lr / bias_correction1 - + # Compute bias-corrected second moment - denom = (exp_avg_sq.sqrt() / (bias_correction2 ** 0.5)).add_(eps) - + denom = (exp_avg_sq.sqrt() / (bias_correction2**0.5)).add_(eps) + # Update parameters param.addcdiv_(exp_avg, denom, value=-step_size) - - return None \ No newline at end of file + + return None diff --git a/gagf/rnns/run_sweep.py b/gagf/rnns/run_sweep.py index 1314502..6e54b7d 100644 --- a/gagf/rnns/run_sweep.py +++ b/gagf/rnns/run_sweep.py @@ -6,20 +6,21 @@ with multiple seeds for uncertainty quantification. """ -import os -import sys -import yaml import argparse -import datetime import copy -from typing import List, Dict, Any, Tuple, Optional -from pathlib import Path +import datetime +import multiprocessing +import os +import sys +import traceback +from concurrent.futures import ProcessPoolExecutor, as_completed from itertools import product +from pathlib import Path +from typing import Any, Dict, List, Optional, Tuple + import numpy as np import torch -from concurrent.futures import ProcessPoolExecutor, as_completed -import traceback -import multiprocessing +import yaml def deep_merge_dict(base: Dict, override: Dict) -> Dict: @@ -38,7 +39,7 @@ def load_sweep_config(sweep_file: str) -> Dict: if not os.path.exists(sweep_file): raise FileNotFoundError(f"Sweep file not found: {sweep_file}") - with open(sweep_file, "r") as f: + with open(sweep_file) as f: sweep_config = yaml.safe_load(f) # Load base configuration @@ -46,7 +47,7 @@ def load_sweep_config(sweep_file: str) -> Dict: if not os.path.exists(base_config_path): raise FileNotFoundError(f"Base config file not found: {base_config_path}") - with open(base_config_path, "r") as f: + with open(base_config_path) as f: base_config = yaml.safe_load(f) sweep_config["_base_config"] = base_config @@ -56,17 +57,18 @@ def load_sweep_config(sweep_file: str) -> Dict: def expand_parameter_grid(parameter_grid: Dict) -> List[Dict]: """ Expand a parameter grid specification into a list of parameter combinations. - + Args: parameter_grid: Nested dict with lists as leaf values. - Example: {'data': {'p': [5, 10], 'k': [2, 3]}, + Example: {'data': {'p': [5, 10], 'k': [2, 3]}, 'model': {'hidden_dim': [64, 128]}} - + Returns: List of override dicts, one per combination. Example: [{'data': {'p': 5, 'k': 2}, 'model': {'hidden_dim': 64}}, ...] """ - def flatten_dict(d, parent_key=''): + + def flatten_dict(d, parent_key=""): """Flatten nested dict to dot-notation keys.""" items = [] for k, v in d.items(): @@ -76,12 +78,12 @@ def flatten_dict(d, parent_key=''): else: items.append((new_key, v)) return dict(items) - + def unflatten_dict(d): """Convert dot-notation keys back to nested dict.""" result = {} for key, value in d.items(): - parts = key.split('.') + parts = key.split(".") current = result for part in parts[:-1]: if part not in current: @@ -89,46 +91,47 @@ def unflatten_dict(d): current = current[part] current[parts[-1]] = value return result - + # Flatten to get all parameter paths flat = flatten_dict(parameter_grid) - + # Get parameter names and their value lists param_names = list(flat.keys()) - param_values = [flat[name] if isinstance(flat[name], list) else [flat[name]] - for name in param_names] - + param_values = [ + flat[name] if isinstance(flat[name], list) else [flat[name]] for name in param_names + ] + # Generate all combinations combinations = [] for values in product(*param_values): combo = dict(zip(param_names, values)) combinations.append(unflatten_dict(combo)) - + return combinations def generate_experiment_name(overrides: Dict) -> str: """ Generate a concise experiment name from parameter overrides. - + Example: {'data': {'p': 10, 'k': 2}, 'model': {'hidden_dim': 64}} -> "p10_k2_h64" """ name_parts = [] - + # Common parameter abbreviations abbrev = { - 'p': 'p', - 'p1': 'p1', - 'p2': 'p2', - 'k': 'k', - 'hidden_dim': 'h', - 'n_freqs': 'f', - 'learning_rate': 'lr', - 'batch_size': 'bs', + "p": "p", + "p1": "p1", + "p2": "p2", + "k": "k", + "hidden_dim": "h", + "n_freqs": "f", + "learning_rate": "lr", + "batch_size": "bs", } - - def extract_params(d, prefix=''): + + def extract_params(d, prefix=""): """Recursively extract parameters.""" for key, value in sorted(d.items()): if isinstance(value, dict): @@ -136,7 +139,7 @@ def extract_params(d, prefix=''): else: param_name = abbrev.get(key, key) name_parts.append(f"{param_name}{value}") - + extract_params(overrides) return "_".join(name_parts) @@ -144,48 +147,48 @@ def extract_params(d, prefix=''): def generate_experiment_configs(sweep_config: Dict) -> List[Tuple[str, Dict]]: """ Generate all individual experiment configurations from sweep. - + Supports two modes: 1. Explicit experiments list (original behavior) 2. Parameter grid (cartesian product of parameter lists) """ base_config = sweep_config["_base_config"] global_overrides = sweep_config.get("global_overrides", {}) - + # Check if using parameter grid or explicit experiments if "parameter_grid" in sweep_config: # Generate experiments from parameter grid print("Generating experiments from parameter grid...") param_combinations = expand_parameter_grid(sweep_config["parameter_grid"]) - + experiment_configs = [] for overrides in param_combinations: exp_name = generate_experiment_name(overrides) - + # Merge: base -> global_overrides -> specific overrides config = deep_merge_dict(base_config, global_overrides) merged_config = deep_merge_dict(config, overrides) experiment_configs.append((exp_name, merged_config)) - + print(f"Generated {len(experiment_configs)} experiments from parameter grid") - + elif "experiments" in sweep_config: # Use explicit experiments list (original behavior) experiments = sweep_config["experiments"] - + experiment_configs = [] for exp in experiments: exp_name = exp["name"] overrides = exp.get("overrides", {}) - + # Merge: base -> global_overrides -> specific overrides config = deep_merge_dict(base_config, global_overrides) merged_config = deep_merge_dict(config, overrides) experiment_configs.append((exp_name, merged_config)) - + else: raise ValueError("Sweep config must contain either 'experiments' or 'parameter_grid'") - + # Validate: Check for duplicate experiment names exp_names = [name for name, _ in experiment_configs] if len(exp_names) != len(set(exp_names)): @@ -195,7 +198,7 @@ def generate_experiment_configs(sweep_config: Dict) -> List[Tuple[str, Dict]]: "Each experiment must have a unique name. " "If using parameter_grid, ensure parameter combinations produce unique names." ) - + return experiment_configs @@ -203,7 +206,7 @@ def save_sweep_metadata( sweep_dir: Path, sweep_config: Dict, experiment_configs: List[Tuple[str, Dict]] ) -> None: """Save sweep metadata and configurations.""" - + # Save sweep metadata sweep_metadata = { "sweep_name": sweep_dir.name, @@ -235,14 +238,14 @@ def run_single_seed( exp_name: str, config: Dict, seed: int, sweep_dir: Path, gpu_id: Optional[int] = None ) -> Dict[str, Any]: """Run a single experiment seed (for multiprocessing). - + Args: exp_name: Name of the experiment config: Configuration dictionary seed: Random seed to use sweep_dir: Directory to save sweep results gpu_id: Optional GPU ID to use (overrides config device) - + Returns: Dictionary with run results """ @@ -251,15 +254,15 @@ def run_single_seed( project_root = Path(__file__).resolve().parent.parent.parent if str(project_root) not in sys.path: sys.path.insert(0, str(project_root)) - + # Create seed config seed_config = copy.deepcopy(config) seed_config["data"]["seed"] = seed - + # Override device if GPU ID specified if gpu_id is not None: seed_config["device"] = f"cuda:{gpu_id}" - + # Create seed-specific run directory exp_dir = sweep_dir / exp_name seed_dir = exp_dir / f"seed_{seed}" @@ -268,10 +271,10 @@ def run_single_seed( try: # Import here to avoid circular dependency from gagf.rnns.main import train_single_run - + # Run training result = train_single_run(seed_config, run_dir=seed_dir) - + # Save run summary run_summary = { "experiment_name": exp_name, @@ -283,23 +286,23 @@ def run_single_seed( "training_time": result.get("training_time", None), "completed_at": datetime.datetime.now().isoformat(), } - + summary_path = seed_dir / "run_summary.yaml" with open(summary_path, "w") as f: yaml.dump(run_summary, f, default_flow_style=False, indent=2) - + print(f"✓ {exp_name} seed {seed} completed successfully (GPU: {gpu_id})") - if run_summary['final_train_loss'] is not None: + if run_summary["final_train_loss"] is not None: print(f" Train loss: {run_summary['final_train_loss']:.6f}") - if run_summary['final_val_loss'] is not None: + if run_summary["final_val_loss"] is not None: print(f" Val loss: {run_summary['final_val_loss']:.6f}") - + return run_summary - + except Exception as e: print(f"✗ {exp_name} seed {seed} failed with error: {str(e)} (GPU: {gpu_id})") traceback.print_exc() - + error_summary = { "experiment_name": exp_name, "seed": seed, @@ -307,11 +310,11 @@ def run_single_seed( "error": str(e), "failed_at": datetime.datetime.now().isoformat(), } - + error_path = seed_dir / "error_summary.yaml" with open(error_path, "w") as f: yaml.dump(error_summary, f, default_flow_style=False, indent=2) - + return error_summary @@ -319,10 +322,10 @@ def run_experiment( exp_name: str, config: Dict, seeds: List[int], sweep_dir: Path, gpu_id: int = None ) -> List[Dict[str, Any]]: """Run a single experiment configuration with multiple seeds. - + This function is kept for backward compatibility. For multi-GPU sweeps, use run_parameter_sweep with gpu_ids parameter instead. - + Args: exp_name: Name of the experiment config: Configuration dictionary @@ -355,14 +358,10 @@ def run_experiment( # Generate experiment summary successful_runs = [r for r in run_results if r["status"] == "completed"] train_losses = [ - r["final_train_loss"] - for r in successful_runs - if r.get("final_train_loss") is not None + r["final_train_loss"] for r in successful_runs if r.get("final_train_loss") is not None ] val_losses = [ - r["final_val_loss"] - for r in successful_runs - if r.get("final_val_loss") is not None + r["final_val_loss"] for r in successful_runs if r.get("final_val_loss") is not None ] exp_summary = { @@ -413,16 +412,13 @@ def run_experiment( return run_results -def generate_sweep_summary( - sweep_dir: Path, all_results: Dict[str, List[Dict[str, Any]]] -) -> None: +def generate_sweep_summary(sweep_dir: Path, all_results: Dict[str, List[Dict[str, Any]]]) -> None: """Generate overall sweep summary.""" # Aggregate statistics across all experiments total_runs = sum(len(results) for results in all_results.values()) total_successful = sum( - len([r for r in results if r["status"] == "completed"]) - for results in all_results.values() + len([r for r in results if r["status"] == "completed"]) for results in all_results.values() ) # Per-experiment statistics @@ -430,14 +426,10 @@ def generate_sweep_summary( for exp_name, results in all_results.items(): successful = [r for r in results if r["status"] == "completed"] train_losses = [ - r["final_train_loss"] - for r in successful - if r.get("final_train_loss") is not None + r["final_train_loss"] for r in successful if r.get("final_train_loss") is not None ] val_losses = [ - r["final_val_loss"] - for r in successful - if r.get("final_val_loss") is not None + r["final_val_loss"] for r in successful if r.get("final_val_loss") is not None ] stats = { @@ -508,9 +500,11 @@ def generate_sweep_summary( print() -def run_parameter_sweep(sweep_file: str, gpu_ids: Optional[List[int]] = None, gpu_id: Optional[int] = None): +def run_parameter_sweep( + sweep_file: str, gpu_ids: Optional[List[int]] = None, gpu_id: Optional[int] = None +): """Run full parameter sweep experiment. - + Args: sweep_file: Path to sweep configuration file gpu_ids: List of GPU IDs to use for parallel execution (e.g., [0,1,2,3,4,5,6,7]). @@ -567,15 +561,17 @@ def run_parameter_sweep(sweep_file: str, gpu_ids: Optional[List[int]] = None, gp if use_parallel: # Parallel execution: distribute tasks across GPUs print(f"\n{'='*80}") - print(f"PARALLEL EXECUTION MODE: Distributing {len(experiment_configs) * n_seeds} tasks across {len(gpu_ids)} GPUs") + print( + f"PARALLEL EXECUTION MODE: Distributing {len(experiment_configs) * n_seeds} tasks across {len(gpu_ids)} GPUs" + ) print(f"{'='*80}") - + # Flatten experiments with seeds into individual tasks tasks = [] for exp_name, config in experiment_configs: for seed in seeds: tasks.append((exp_name, config, seed, sweep_dir)) - + # Distribute tasks across GPUs using round-robin all_results = {} with ProcessPoolExecutor(max_workers=len(gpu_ids)) as executor: @@ -586,7 +582,7 @@ def run_parameter_sweep(sweep_file: str, gpu_ids: Optional[List[int]] = None, gp gpu_id = gpu_ids[task_idx % len(gpu_ids)] # Round-robin assignment future = executor.submit(run_single_seed, exp_name, config, seed, sweep_dir, gpu_id) future_to_task[future] = (exp_name, seed, gpu_id) - + # Collect results as they complete completed = 0 for future in as_completed(future_to_task): @@ -597,35 +593,43 @@ def run_parameter_sweep(sweep_file: str, gpu_ids: Optional[List[int]] = None, gp if exp_name not in all_results: all_results[exp_name] = [] all_results[exp_name].append(result) - print(f"[{completed}/{len(tasks)}] Completed: {exp_name} seed {seed} (GPU {assigned_gpu})") + print( + f"[{completed}/{len(tasks)}] Completed: {exp_name} seed {seed} (GPU {assigned_gpu})" + ) except Exception as e: # This catch handles exceptions during result retrieval/serialization # (run_single_seed already catches training exceptions and returns error dict) - print(f"[{completed}/{len(tasks)}] Failed: {exp_name} seed {seed} (GPU {assigned_gpu}): {e}") + print( + f"[{completed}/{len(tasks)}] Failed: {exp_name} seed {seed} (GPU {assigned_gpu}): {e}" + ) if exp_name not in all_results: all_results[exp_name] = [] - all_results[exp_name].append({ - "experiment_name": exp_name, - "seed": seed, - "status": "failed", - "error": str(e) - }) - + all_results[exp_name].append( + { + "experiment_name": exp_name, + "seed": seed, + "status": "failed", + "error": str(e), + } + ) + # Verify all tasks completed total_expected = len(experiment_configs) * len(seeds) total_completed = sum(len(results) for results in all_results.values()) if total_completed != total_expected: - print(f"\n⚠️ WARNING: Expected {total_expected} runs, but collected {total_completed} results") + print( + f"\n⚠️ WARNING: Expected {total_expected} runs, but collected {total_completed} results" + ) print("This may indicate some tasks failed silently or were not properly tracked.") - + # Generate experiment summaries for each experiment for exp_name in all_results.keys(): exp_dir = sweep_dir / exp_name run_results = all_results[exp_name] - + # Sort results by seed for consistent ordering - run_results.sort(key=lambda x: x.get('seed', 0)) - + run_results.sort(key=lambda x: x.get("seed", 0)) + successful_runs = [r for r in run_results if r["status"] == "completed"] train_losses = [ r["final_train_loss"] @@ -633,9 +637,7 @@ def run_parameter_sweep(sweep_file: str, gpu_ids: Optional[List[int]] = None, gp if r.get("final_train_loss") is not None ] val_losses = [ - r["final_val_loss"] - for r in successful_runs - if r.get("final_val_loss") is not None + r["final_val_loss"] for r in successful_runs if r.get("final_val_loss") is not None ] exp_summary = { @@ -674,9 +676,11 @@ def run_parameter_sweep(sweep_file: str, gpu_ids: Optional[List[int]] = None, gp else: # Sequential execution: run experiments one at a time (original behavior) print(f"\n{'='*80}") - print(f"SEQUENTIAL EXECUTION MODE: Running on GPU {gpu_ids[0] if gpu_ids[0] is not None else 'CPU'}") + print( + f"SEQUENTIAL EXECUTION MODE: Running on GPU {gpu_ids[0] if gpu_ids[0] is not None else 'CPU'}" + ) print(f"{'='*80}") - + all_results = {} for exp_name, config in experiment_configs: results = run_experiment(exp_name, config, seeds, sweep_dir, gpu_id=gpu_ids[0]) @@ -687,21 +691,25 @@ def run_parameter_sweep(sweep_file: str, gpu_ids: Optional[List[int]] = None, gp def main(): - parser = argparse.ArgumentParser(description="Run parameter sweep experiment for QuadraticRNN or SequentialMLP") - parser.add_argument( - "--sweep", type=str, required=True, help="Path to sweep configuration file" + parser = argparse.ArgumentParser( + description="Run parameter sweep experiment for QuadraticRNN or SequentialMLP" ) + parser.add_argument("--sweep", type=str, required=True, help="Path to sweep configuration file") parser.add_argument( - "--gpu", type=int, default=None, - help="Single GPU ID to use (e.g., 0 or 1). Overrides device in config. Deprecated: use --gpus instead." + "--gpu", + type=int, + default=None, + help="Single GPU ID to use (e.g., 0 or 1). Overrides device in config. Deprecated: use --gpus instead.", ) parser.add_argument( - "--gpus", type=str, default=None, + "--gpus", + type=str, + default=None, help="Comma-separated GPU IDs (e.g., '0,1,2,3,4,5,6,7') or 'auto' to use all available GPUs. " - "If not specified, uses --gpu or config default. Parallel execution enabled when multiple GPUs specified." + "If not specified, uses --gpu or config default. Parallel execution enabled when multiple GPUs specified.", ) args = parser.parse_args() - + # Parse GPU IDs gpu_ids = None if args.gpus: @@ -728,10 +736,9 @@ def main(): # This is required because CUDA cannot be re-initialized in forked subprocesses # Must be set before any ProcessPoolExecutor is created try: - multiprocessing.set_start_method('spawn', force=True) + multiprocessing.set_start_method("spawn", force=True) except RuntimeError: # Start method already set, which is fine pass - - main() + main() diff --git a/gagf/rnns/sweep_configs/example_sweep.yaml b/gagf/rnns/sweep_configs/example_sweep.yaml index 4c6e98b..ad0ebfb 100644 --- a/gagf/rnns/sweep_configs/example_sweep.yaml +++ b/gagf/rnns/sweep_configs/example_sweep.yaml @@ -22,4 +22,3 @@ experiments: overrides: model: hidden_dim: 64 - diff --git a/gagf/rnns/sweep_configs/learning_rate_sweep.yaml b/gagf/rnns/sweep_configs/learning_rate_sweep.yaml index 5150446..b71e8ef 100644 --- a/gagf/rnns/sweep_configs/learning_rate_sweep.yaml +++ b/gagf/rnns/sweep_configs/learning_rate_sweep.yaml @@ -40,4 +40,3 @@ experiments: training: optimizer: 'hybrid' scaling_factor: -4 - diff --git a/gagf/rnns/sweep_configs/model_size_sweep.yaml b/gagf/rnns/sweep_configs/model_size_sweep.yaml index 565353a..6129788 100644 --- a/gagf/rnns/sweep_configs/model_size_sweep.yaml +++ b/gagf/rnns/sweep_configs/model_size_sweep.yaml @@ -40,4 +40,3 @@ experiments: k: 7 p1: 14 p2: 14 - diff --git a/gagf/rnns/sweep_configs/onehot_scaling_sweep.yaml b/gagf/rnns/sweep_configs/onehot_scaling_sweep.yaml index 612057f..70b8891 100644 --- a/gagf/rnns/sweep_configs/onehot_scaling_sweep.yaml +++ b/gagf/rnns/sweep_configs/onehot_scaling_sweep.yaml @@ -18,4 +18,3 @@ parameter_grid: k: [2, 3, 4] model: hidden_dim: [80, 160, 240, 320, 400, 480, 560, 640, 720, 800, 880, 960, 1040, 1120, 1200, 1280, 1360, 1440, 1520, 1600] - diff --git a/gagf/rnns/train.py b/gagf/rnns/train.py index 41dc3b0..896f046 100644 --- a/gagf/rnns/train.py +++ b/gagf/rnns/train.py @@ -1,11 +1,11 @@ """Training function for Quadratic RNN with sequential inputs.""" -from torch import nn +from typing import Optional + import torch -from torch.utils.data import DataLoader import torch.optim as optim - -from typing import Optional +from torch import nn +from torch.utils.data import DataLoader def train( @@ -22,7 +22,7 @@ def train( ) -> tuple[list[float], list[float], list[dict[str, torch.Tensor]], list[int], int]: """ Train a model with sequential inputs (offline/epoch-based). - + Args: model: The model to train dataloader: Training data loader @@ -37,7 +37,7 @@ def train( reduction_threshold: If provided, stop training when loss reduction reaches this threshold (e.g., 0.99 = 99% reduction). If None, train for full epochs. - + Returns: tuple: (train_loss_history, val_loss_history, param_history, param_save_epochs, final_epoch) @@ -64,7 +64,7 @@ def train( param_history.append(snap0) param_save_epochs.append(0) initial_loss = val_loss0 - + if reduction_threshold is not None: print(f" Initial loss: {initial_loss:.6f}") print(f" Early stopping at {reduction_threshold*100:.1f}% reduction") @@ -103,10 +103,11 @@ def train( # Only save parameters at intervals or at the end # If save_param_interval is None, only save at the very end - should_save = (save_param_interval is not None and - (epoch % save_param_interval == 0 or epoch == epochs)) or \ - (save_param_interval is None and epoch == epochs) - + should_save = ( + save_param_interval is not None + and (epoch % save_param_interval == 0 or epoch == epochs) + ) or (save_param_interval is None and epoch == epochs) + if should_save: with torch.no_grad(): snap = {n: p.detach().cpu().clone() for n, p in model.named_parameters()} @@ -125,14 +126,19 @@ def train( snap = {n: p.detach().cpu().clone() for n, p in model.named_parameters()} param_history.append(snap) param_save_epochs.append(epoch) - print(f"\n[CONVERGED] Epoch {epoch}: {reduction*100:.1f}% reduction >= {reduction_threshold*100:.1f}% threshold") + print( + f"\n[CONVERGED] Epoch {epoch}: {reduction*100:.1f}% reduction >= {reduction_threshold*100:.1f}% threshold" + ) break if epoch % verbose_interval == 0: - print(f"[Epoch {epoch:>5}/{epochs}] loss: {avg_loss:.6f} | reduction: {reduction*100:>6.1f}%") + print( + f"[Epoch {epoch:>5}/{epochs}] loss: {avg_loss:.6f} | reduction: {reduction*100:>6.1f}%" + ) return train_loss_history, val_loss_history, param_history, param_save_epochs, final_epoch + def train_online( model: nn.Module, dataloader: DataLoader, @@ -147,7 +153,7 @@ def train_online( ) -> tuple[list[float], list[float], list[dict[str, torch.Tensor]], list[int], int]: """ Train with online data generation (step-based instead of epoch-based). - + Args: model: The model to train dataloader: Training data loader (online/infinite) @@ -157,19 +163,19 @@ def train_online( verbose_interval: Print progress every N steps grad_clip: Optional gradient clipping value eval_dataloader: Optional separate validation loader - save_param_interval: If provided, save params every N steps. + save_param_interval: If provided, save params every N steps. If None, only save initial and final params (memory efficient!) reduction_threshold: If provided, stop training when loss reduction reaches this threshold (e.g., 0.99 = 99% reduction). If None, train for full num_steps. - + Returns: - tuple: (train_loss_history, val_loss_history, param_history, + tuple: (train_loss_history, val_loss_history, param_history, param_save_steps, final_step) """ train_loss_history, val_loss_history, param_history = [], [], [] param_save_steps = [] - + # Initial evaluation (step 0) model.eval() with torch.no_grad(): @@ -181,43 +187,43 @@ def train_online( X_batch, Y_batch = next(iter(dataloader)) out = model(X_batch) val_loss0 = criterion(out, Y_batch).item() - + snap0 = {n: p.detach().cpu().clone() for n, p in model.named_parameters()} - + train_loss_history.append(val_loss0) val_loss_history.append(val_loss0) param_history.append(snap0) param_save_steps.append(0) initial_loss = val_loss0 - + if reduction_threshold is not None: print(f" Initial loss: {initial_loss:.6f}") print(f" Early stopping at {reduction_threshold*100:.1f}% reduction") - + # Training loop model.train() data_iter = iter(dataloader) final_step = num_steps - + for step in range(1, num_steps + 1): # Get fresh batch X_batch, Y_batch = next(data_iter) - + # Training step optimizer.zero_grad() outputs = model(X_batch) loss = criterion(outputs, Y_batch) loss.backward() - + if grad_clip is not None: torch.nn.utils.clip_grad_norm_(model.parameters(), grad_clip) - + optimizer.step() - + # Record training loss current_loss = loss.item() train_loss_history.append(current_loss) - + # Evaluation on validation set model.eval() with torch.no_grad(): @@ -229,25 +235,26 @@ def train_online( X_eval, Y_eval = next(data_iter) out = model(X_eval) val_loss = criterion(out, Y_eval).item() - + val_loss_history.append(val_loss) - + # Only save parameters at specified intervals or at the end # If save_param_interval is None, only save at the very end - should_save = (save_param_interval is not None and - (step % save_param_interval == 0 or step == num_steps)) or \ - (save_param_interval is None and step == num_steps) - + should_save = ( + save_param_interval is not None + and (step % save_param_interval == 0 or step == num_steps) + ) or (save_param_interval is None and step == num_steps) + if should_save: snap = {n: p.detach().cpu().clone() for n, p in model.named_parameters()} param_history.append(snap) param_save_steps.append(step) - + model.train() - + # Compute reduction for logging and early stopping reduction = 1 - current_loss / initial_loss if initial_loss > 0 else 0 - + # Check early stopping if reduction_threshold is not None and reduction >= reduction_threshold: final_step = step @@ -257,10 +264,14 @@ def train_online( snap = {n: p.detach().cpu().clone() for n, p in model.named_parameters()} param_history.append(snap) param_save_steps.append(step) - print(f"\n[CONVERGED] Step {step}: {reduction*100:.1f}% reduction >= {reduction_threshold*100:.1f}% threshold") + print( + f"\n[CONVERGED] Step {step}: {reduction*100:.1f}% reduction >= {reduction_threshold*100:.1f}% threshold" + ) break - + if step % verbose_interval == 0: - print(f"[Step {step:>6}/{num_steps}] loss: {current_loss:.6f} | reduction: {reduction*100:>6.1f}%") - - return train_loss_history, val_loss_history, param_history, param_save_steps, final_step \ No newline at end of file + print( + f"[Step {step:>6}/{num_steps}] loss: {current_loss:.6f} | reduction: {reduction*100:>6.1f}%" + ) + + return train_loss_history, val_loss_history, param_history, param_save_steps, final_step diff --git a/gagf/rnns/utils.py b/gagf/rnns/utils.py index 05dce96..419ae18 100644 --- a/gagf/rnns/utils.py +++ b/gagf/rnns/utils.py @@ -1,11 +1,10 @@ -from matplotlib.ticker import MaxNLocator -import numpy as np import matplotlib.pyplot as plt - - +import numpy as np +from matplotlib.ticker import MaxNLocator ### ----- VISUALIZATION FUNCTIONS ----- ### + def style_axes(ax, numyticks=5, numxticks=5, labelsize=24): # Y-axis ticks ax.tick_params( @@ -53,17 +52,12 @@ def style_axes(ax, numyticks=5, numxticks=5, labelsize=24): ax.spines[spine].set_linewidth(3) - def plot_train_val_loss( - train_loss_history, - val_loss_history, - save_path=None, - show=True, - xlabel='Step' + train_loss_history, val_loss_history, save_path=None, show=True, xlabel="Step" ): """ Plot training and validation loss vs steps. - + Args: train_loss_history: List of training loss values val_loss_history: List of validation loss values @@ -72,28 +66,28 @@ def plot_train_val_loss( xlabel: Label for x-axis (e.g., 'Step' or 'Epoch') """ fig, ax = plt.subplots(1, 1, figsize=(10, 6)) - + steps = np.arange(len(train_loss_history)) - - ax.plot(steps, train_loss_history, lw=2, color='#1f77b4', label='Training Loss', alpha=0.7) - ax.plot(steps, val_loss_history, lw=2, color='#ff7f0e', label='Validation Loss') - + + ax.plot(steps, train_loss_history, lw=2, color="#1f77b4", label="Training Loss", alpha=0.7) + ax.plot(steps, val_loss_history, lw=2, color="#ff7f0e", label="Validation Loss") + ax.set_xlabel(xlabel, fontsize=14) - ax.set_ylabel('Loss', fontsize=14) - ax.set_title('Training vs Validation Loss', fontsize=16) + ax.set_ylabel("Loss", fontsize=14) + ax.set_title("Training vs Validation Loss", fontsize=16) ax.legend(fontsize=12) ax.grid(True, alpha=0.3) - ax.set_yscale('log') # Log scale often helps see loss curves - + ax.set_yscale("log") # Log scale often helps see loss curves + if save_path: - fig.savefig(save_path, bbox_inches='tight', dpi=150) + fig.savefig(save_path, bbox_inches="tight", dpi=150) print(f" ✓ Saved to {save_path}") - + if show: plt.show() else: plt.close(fig) - + return fig, ax @@ -162,6 +156,7 @@ def plot_2d_power_spectrum( ### ----- POWER SPECTRUM FUNCTIONS ----- ### + def get_power_1d(points_1d): """ Compute 1D power spectrum using rfft (for real-valued inputs). @@ -178,7 +173,7 @@ def get_power_1d(points_1d): # Perform 1D FFT ft = np.fft.rfft(points_1d) power = np.abs(ft) ** 2 / p - + # Handle conjugate symmetry for real signals power = 2 * power.copy() power[0] = power[0] / 2 # DC component @@ -193,12 +188,12 @@ def get_power_1d(points_1d): def topk_template_freqs_1d(template_1d: np.ndarray, K: int, min_power: float = 1e-20): """ Return top-K frequency indices by power for 1D template. - + Args: template_1d: 1D template array (p,) K: Number of top frequencies to return min_power: Minimum power threshold - + Returns: List of frequency indices (as integers) """ @@ -230,51 +225,53 @@ def topk_template_freqs(template_2d: np.ndarray, K: int, min_power: float = 1e-2 def get_power_2d_adele(points, no_freq=False): """ Compute 2D power spectrum using rfft2 with proper symmetry handling. - + Args: points: (M, N) array, the 2D signal no_freq: if True, only return power (no frequency arrays) - + Returns: freqs_u: frequency bins for rows (if no_freq=False) freqs_v: frequency bins for columns (if no_freq=False) power: 2D power spectrum (M, N//2 + 1) """ M, N = points.shape - + # Perform 2D rFFT ft = np.fft.rfft2(points) - + # Power spectrum normalized by total number of samples - power = np.abs(ft)**2 / (M * N) + power = np.abs(ft) ** 2 / (M * N) # Construct weighting to handle real conjugate symmetry weight = 2 * np.ones((M, N // 2 + 1)) weight[0, 0] = 1 # handles DC component - weight[(M//2 + 1):, 0] = 0 # handles DC frequency in second axis + weight[(M // 2 + 1) :, 0] = 0 # handles DC frequency in second axis if M % 2 == 0: - weight[M//2, 0] = 1 + weight[M // 2, 0] = 1 if N % 2 == 0: - weight[(M//2 + 1):, N//2] = 0 - weight[0, N//2] = 1 + weight[(M // 2 + 1) :, N // 2] = 0 + weight[0, N // 2] = 1 if (M % 2 == 0) and (N % 2 == 0): - weight[M//2, N//2] = 1 + weight[M // 2, N // 2] = 1 # Reweight power to account for redundancies power = weight * power # Check Parseval's theorem total_power = np.sum(power) - norm_squared = np.linalg.norm(points)**2 + norm_squared = np.linalg.norm(points) ** 2 if not np.isclose(total_power, norm_squared, rtol=1e-6): - print(f"Warning: Total power {total_power:.3f} does not match norm squared {norm_squared:.3f}") + print( + f"Warning: Total power {total_power:.3f} does not match norm squared {norm_squared:.3f}" + ) if no_freq: return power # Frequency bins - freqs_u = np.fft.fftfreq(M) # full symmetric frequencies (rows) - freqs_v = np.fft.rfftfreq(N) # only non-negative frequencies (columns) + freqs_u = np.fft.fftfreq(M) # full symmetric frequencies (rows) + freqs_v = np.fft.rfftfreq(N) # only non-negative frequencies (columns) return freqs_u, freqs_v, power @@ -282,13 +279,13 @@ def get_power_2d_adele(points, no_freq=False): def compute_theoretical_loss_levels_2d(template_2d): """ Compute theoretical MSE loss levels based on template power spectrum. - + Returns both the initial loss (before learning) and final loss (fully converged). The theory predicts step-wise loss reductions as each Fourier mode is learned. - + Args: template_2d: 2D template array (p1, p2) - + Returns: dict with: 'initial': Expected MSE before any learning (= Var(template)) @@ -297,29 +294,29 @@ def compute_theoretical_loss_levels_2d(template_2d): """ p1, p2 = template_2d.shape power = get_power_2d_adele(template_2d, no_freq=True) - + power_flat = power.flatten() power_flat = np.sort(power_flat[power_flat > 1e-20])[::-1] # Descending - + coef = 1.0 / (p1 * p2) - + # Theory levels: cumulative tail sums levels = [coef * np.sum(power_flat[k:]) for k in range(len(power_flat) + 1)] - + return { - 'initial': levels[0] if levels else 0.0, # Before learning any mode - 'final': 0.0, # When all modes are learned - 'levels': levels, + "initial": levels[0] if levels else 0.0, # Before learning any mode + "final": 0.0, # When all modes are learned + "levels": levels, } def compute_theoretical_loss_levels_1d(template_1d): """ Compute theoretical MSE loss levels based on 1D template power spectrum. - + Args: template_1d: 1D template array (p,) - + Returns: dict with: 'initial': Expected MSE before any learning @@ -328,44 +325,44 @@ def compute_theoretical_loss_levels_1d(template_1d): """ p = len(template_1d) power, _ = get_power_1d(template_1d) - + power = np.sort(power[power > 1e-20])[::-1] # Descending - + coef = 1.0 / p - + # Theory levels: cumulative tail sums levels = [coef * np.sum(power[k:]) for k in range(len(power) + 1)] - + return { - 'initial': levels[0] if levels else 0.0, - 'final': 0.0, - 'levels': levels, + "initial": levels[0] if levels else 0.0, + "final": 0.0, + "levels": levels, } # Backward compatibility aliases def compute_theoretical_final_loss_2d(template_2d): """Returns expected initial loss (for setting convergence targets).""" - return compute_theoretical_loss_levels_2d(template_2d)['initial'] + return compute_theoretical_loss_levels_2d(template_2d)["initial"] def compute_theoretical_final_loss_1d(template_1d): """Returns expected initial loss (for setting convergence targets).""" - return compute_theoretical_loss_levels_1d(template_1d)['initial'] + return compute_theoretical_loss_levels_1d(template_1d)["initial"] def _tracked_power_from_fft2(power2d, kx, ky, p1, p2): """ Sum power at (kx, ky) and its real-signal mirror (-kx, -ky). - + For real signals, the full FFT has conjugate symmetry, so power at (kx, ky) and (-kx, -ky) are equal. This helper sums both for consistent power measurement. - + Args: power2d: 2D power spectrum from fft2 (shape: p1, p2) kx, ky: Frequency indices p1, p2: Dimensions of the signal - + Returns: float: Total power at this frequency (including mirror) """ @@ -400,17 +397,16 @@ def _signed_k(k: int, n: int) -> int: def _pretty_k(k: int, n: int) -> str: """Format frequency for display (handles Nyquist frequency with ± symbol).""" if n % 2 == 0 and k == n // 2: - return r"\pm{}".format(n // 2) + return rf"\pm{n // 2}" return f"{_signed_k(k, n)}" def _permutation_from_groups_with_dead( - dom_idx, phase, dom_power, l2, *, - within="phase", dead_l2_thresh=1e-1 + dom_idx, phase, dom_power, l2, *, within="phase", dead_l2_thresh=1e-1 ): """ Create neuron permutation grouped by dominant frequency. - + Args: dom_idx: Dominant frequency index for each neuron phase: Phase at dominant frequency for each neuron @@ -418,7 +414,7 @@ def _permutation_from_groups_with_dead( l2: L2 norm of each neuron's weights within: How to order within groups ('phase', 'power', 'phase_power', 'none') dead_l2_thresh: L2 threshold below which neurons are "dead" - + Returns: perm: Permutation indices ordered_keys: Ordered list of group keys (-1 for dead) @@ -429,10 +425,10 @@ def _permutation_from_groups_with_dead( for i, f in enumerate(dom_idx): key = -1 if dead_mask[i] else int(f) groups.setdefault(key, []).append(i) - + freq_keys = sorted([k for k in groups.keys() if k >= 0]) ordered_keys = freq_keys + ([-1] if -1 in groups else []) - + perm, boundaries = [], [] for f in ordered_keys: idxs = groups[f] @@ -440,31 +436,25 @@ def _permutation_from_groups_with_dead( idxs = sorted(idxs, key=lambda i: l2[i]) else: if within == "phase" and phase is not None: - idxs = sorted(idxs, key=lambda i: (phase[i] + 2*np.pi) % (2*np.pi)) + idxs = sorted(idxs, key=lambda i: (phase[i] + 2 * np.pi) % (2 * np.pi)) elif within == "power" and dom_power is not None: idxs = sorted(idxs, key=lambda i: -dom_power[i]) elif within == "phase_power": - idxs = sorted(idxs, key=lambda i: - ((phase[i] + 2*np.pi) % (2*np.pi), -dom_power[i])) + idxs = sorted( + idxs, key=lambda i: ((phase[i] + 2 * np.pi) % (2 * np.pi), -dom_power[i]) + ) perm.extend(idxs) boundaries.append(len(perm)) - + return np.array(perm, dtype=int), ordered_keys, boundaries def plot_training_loss_with_theory( - loss_history, - template_2d, - p1, - p2, - x_values=None, - x_label="Step", - save_path=None, - show=True + loss_history, template_2d, p1, p2, x_values=None, x_label="Step", save_path=None, show=True ): """ Plot training loss with theoretical power spectrum lines. - + Args: loss_history: List of loss values template_2d: The 2D template array (p1, p2) @@ -475,46 +465,47 @@ def plot_training_loss_with_theory( show: Whether to display the plot """ fig, ax = plt.subplots(1, 1, figsize=(10, 6)) - + # Use provided x_values or default to indices if x_values is None: x_values = np.arange(len(loss_history)) - + # Plot loss - ax.plot(x_values, loss_history, lw=4, color='#1f77b4', label='Training Loss') - + ax.plot(x_values, loss_history, lw=4, color="#1f77b4", label="Training Loss") + # Compute power spectrum of template x_freq, y_freq, power = get_power_2d_adele(template_2d) power = power.flatten() valid = power > 1e-20 power = power[valid] power = np.sort(power)[::-1] # Descending order - + # Plot theoretical lines (cumulative tail sums) alpha_values = [np.sum(power[k:]) for k in range(len(power))] coef = 1 / (p1 * p2) for k, alpha in enumerate(alpha_values): ax.axhline(y=coef * alpha, color="black", linestyle="--", linewidth=2, zorder=-2) - + ax.set_xlabel(x_label, fontsize=24) ax.set_ylabel("Train Loss", fontsize=24) - + style_axes(ax) ax.grid(False) - + plt.tight_layout() - + if save_path: plt.savefig(save_path, bbox_inches="tight", dpi=150) print(f" ✓ Saved loss plot to {save_path}") - + if show: plt.show() else: plt.close() - + return fig, ax + def plot_model_predictions_over_time( model, param_history, @@ -526,11 +517,11 @@ def plot_model_predictions_over_time( example_idx=None, cmap="gray", save_path=None, - show=False + show=False, ): """ Plot model predictions at different training steps vs ground truth. - + Args: model: The trained model param_history: List of parameter snapshots from training @@ -544,100 +535,80 @@ def plot_model_predictions_over_time( show: Whether to display the plot """ import torch - + # Default steps if steps is None: final_step = len(param_history) - 1 steps = [1, min(5, final_step), min(10, final_step), final_step] steps = sorted(list(set(steps))) # Remove duplicates - + # Random example if not specified if example_idx is None: example_idx = int(np.random.randint(len(Y_data))) - + device = next(model.parameters()).device model.to(device).eval() - + # Ground truth if Y_data.dim() == 3: - Y_data = Y_data[:,-1,:] # only final time step + Y_data = Y_data[:, -1, :] # only final time step with torch.no_grad(): truth_2d = Y_data[example_idx].reshape(p1, p2).cpu().numpy() - + # Collect predictions at each step preds = [] for step in steps: model.load_state_dict(param_history[step], strict=True) with torch.no_grad(): - x = X_data[example_idx:example_idx+1].to(device) + x = X_data[example_idx : example_idx + 1].to(device) pred_2d = model(x) if pred_2d.dim() == 3: - pred_2d = pred_2d[:,-1,:] # only final time step - + pred_2d = pred_2d[:, -1, :] # only final time step + pred_2d = pred_2d.reshape(p1, p2).detach().cpu().numpy() - + preds.append(pred_2d) - + # Shared color scale based on ground truth vmin = np.min(truth_2d) vmax = np.max(truth_2d) - + # Plot: rows = [Prediction, Target], cols = time steps - fig, axes = plt.subplots( - 2, len(steps), - figsize=(3.5*len(steps), 6), - layout="constrained" - ) - + fig, axes = plt.subplots(2, len(steps), figsize=(3.5 * len(steps), 6), layout="constrained") + # Handle case where there's only one step if len(steps) == 1: axes = axes.reshape(2, 1) - + for col, (step, pred_2d) in enumerate(zip(steps, preds)): # Prediction - im = axes[0, col].imshow( - pred_2d, - vmin=vmin, - vmax=vmax, - cmap=cmap, - origin="upper" - ) + im = axes[0, col].imshow(pred_2d, vmin=vmin, vmax=vmax, cmap=cmap, origin="upper") axes[0, col].set_title(f"Epoch {step}", fontsize=12) axes[0, col].set_xticks([]) axes[0, col].set_yticks([]) - + # Target (same for all columns) - axes[1, col].imshow( - truth_2d, - vmin=vmin, - vmax=vmax, - cmap=cmap, - origin="upper" - ) + axes[1, col].imshow(truth_2d, vmin=vmin, vmax=vmax, cmap=cmap, origin="upper") axes[1, col].set_xticks([]) axes[1, col].set_yticks([]) - + axes[0, 0].set_ylabel("Prediction", fontsize=14) axes[1, 0].set_ylabel("Target", fontsize=14) - + # Single shared colorbar on the right - fig.colorbar( - im, - ax=axes, - location="right", - shrink=0.9, - pad=0.02 - ).set_label("Value", fontsize=12) - + fig.colorbar(im, ax=axes, location="right", shrink=0.9, pad=0.02).set_label( + "Value", fontsize=12 + ) + if save_path: plt.savefig(save_path, bbox_inches="tight", dpi=150) print(f" ✓ Saved predictions plot to {save_path}") - + if show: plt.show() else: plt.close() - + return fig, axes @@ -650,11 +621,11 @@ def plot_model_predictions_over_time_1d( steps=None, example_idx=None, save_path=None, - show=False + show=False, ): """ Plot model predictions at different training steps vs ground truth (1D version). - + Args: model: The trained model param_history: List of parameter snapshots from training @@ -667,79 +638,79 @@ def plot_model_predictions_over_time_1d( show: Whether to display the plot """ import torch - + # Default steps if steps is None: final_step = len(param_history) - 1 steps = [1, min(5, final_step), min(10, final_step), final_step] steps = sorted(list(set(steps))) - + # Random example if not specified if example_idx is None: example_idx = int(np.random.randint(len(Y_data))) - + device = next(model.parameters()).device model.to(device).eval() - + # Ground truth if Y_data.dim() == 3: Y_data = Y_data[:, -1, :] # only final time step with torch.no_grad(): truth_1d = Y_data[example_idx].cpu().numpy() - + # Collect predictions at each step preds = [] for step in steps: model.load_state_dict(param_history[step], strict=True) with torch.no_grad(): - x = X_data[example_idx:example_idx+1].to(device) + x = X_data[example_idx : example_idx + 1].to(device) pred = model(x) if pred.dim() == 3: pred = pred[:, -1, :] # only final time step pred_1d = pred.squeeze().detach().cpu().numpy() preds.append(pred_1d) - + # Plot: rows = [Prediction, Target], cols = time steps - fig, axes = plt.subplots( - 2, len(steps), - figsize=(3.5*len(steps), 4), - layout="constrained" - ) - + fig, axes = plt.subplots(2, len(steps), figsize=(3.5 * len(steps), 4), layout="constrained") + # Handle case where there's only one step if len(steps) == 1: axes = axes.reshape(2, 1) - + x = np.arange(p) - + for col, (step, pred_1d) in enumerate(zip(steps, preds)): # Prediction - axes[0, col].plot(x, pred_1d, 'b-', lw=2) + axes[0, col].plot(x, pred_1d, "b-", lw=2) axes[0, col].set_title(f"Epoch {step}", fontsize=12) - axes[0, col].set_ylim(truth_1d.min() - 0.1 * np.abs(truth_1d.min()), - truth_1d.max() + 0.1 * np.abs(truth_1d.max())) + axes[0, col].set_ylim( + truth_1d.min() - 0.1 * np.abs(truth_1d.min()), + truth_1d.max() + 0.1 * np.abs(truth_1d.max()), + ) axes[0, col].set_xticks([]) axes[0, col].grid(True, alpha=0.3) - + # Target (same for all columns) - axes[1, col].plot(x, truth_1d, 'k-', lw=2) - axes[1, col].set_ylim(truth_1d.min() - 0.1 * np.abs(truth_1d.min()), - truth_1d.max() + 0.1 * np.abs(truth_1d.max())) + axes[1, col].plot(x, truth_1d, "k-", lw=2) + axes[1, col].set_ylim( + truth_1d.min() - 0.1 * np.abs(truth_1d.min()), + truth_1d.max() + 0.1 * np.abs(truth_1d.max()), + ) axes[1, col].set_xticks([]) axes[1, col].grid(True, alpha=0.3) - + axes[0, 0].set_ylabel("Prediction", fontsize=14) axes[1, 0].set_ylabel("Target", fontsize=14) - + if save_path: plt.savefig(save_path, bbox_inches="tight", dpi=150) print(f" ✓ Saved predictions plot to {save_path}") - + if show: plt.show() else: plt.close() - + return fig, axes @@ -757,15 +728,15 @@ def plot_prediction_power_spectrum_over_time( checkpoint_indices=None, num_samples=100, save_path=None, - show=False + show=False, ): """ Plot training loss with power spectrum analysis of predictions over time. - + Creates a two-panel plot: - Top: Training loss with colored bands for theory lines - Bottom: Power in tracked frequencies over time (computed at ALL saved checkpoints) - + Args: model: The trained model param_history: List of parameter snapshots (includes epoch 0) @@ -784,60 +755,60 @@ def plot_prediction_power_spectrum_over_time( import torch from matplotlib.ticker import FormatStrFormatter from tqdm import tqdm - + device = next(model.parameters()).device - + # Identify top-K frequencies from template tracked_freqs = topk_template_freqs(template_2d, K=num_freqs_to_track) template_power_2d = get_power_2d_adele(template_2d, no_freq=True) target_powers = {(kx, ky): template_power_2d[kx, ky] for (kx, ky) in tracked_freqs} - + # Analyze ALL saved parameter checkpoints for full temporal resolution T = len(param_history) steps_analysis = list(range(len(param_history))) # Analyze ALL saved params - + # Get the actual step/epoch numbers for x-axis plotting if param_save_indices is not None: actual_steps = param_save_indices # All the actual step numbers else: actual_steps = list(range(len(param_history))) # If None, indices = steps - + # Track average output power at those frequencies over training powers_over_time = {freq: [] for freq in tracked_freqs} - + print(f" Analyzing {len(steps_analysis)} checkpoints for power spectrum...") - + with torch.no_grad(): for step in tqdm(steps_analysis, desc=" Computing power spectra", leave=False): model.load_state_dict(param_history[step], strict=True) model.eval() - + # Get predictions for a batch outputs_flat = ( model(X_data[:num_samples].to(device)).detach().cpu().numpy() ) # (num_samples, p1*p2) - + # Compute power spectrum for each sample, then average powers_batch = [] for i in range(outputs_flat.shape[0]): if outputs_flat.ndim == 3: - out_2d = outputs_flat[i][-1,:] # only final time step + out_2d = outputs_flat[i][-1, :] # only final time step else: out_2d = outputs_flat[i] out_2d = out_2d.reshape(p1, p2) power_i = get_power_2d_adele(out_2d, no_freq=True) # (p1, p2//2+1) powers_batch.append(power_i) avg_power = np.mean(powers_batch, axis=0) # (p1, p2//2+1) - + # Record power at each tracked frequency for kx, ky in tracked_freqs: powers_over_time[(kx, ky)].append(avg_power[kx, ky]) - + # Convert lists to arrays for freq in tracked_freqs: powers_over_time[freq] = np.array(powers_over_time[freq]) - + if param_save_indices is None: # Assume params were saved at every step (old behavior) loss_epochs = np.arange(len(param_history)) @@ -847,50 +818,50 @@ def plot_prediction_power_spectrum_over_time( loss_epochs = np.array(param_save_indices) # Extract only the loss values at those indices loss_history_subset = [loss_history[i] for i in param_save_indices] - + # --- Create the plot --- colors = plt.cm.tab10(np.linspace(0, 1, len(tracked_freqs))) - + fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(10, 10), sharex=True) fig.subplots_adjust(left=0.12, right=0.98, top=0.96, bottom=0.10, hspace=0.12) - + # --- Top panel: Training loss with theory bands --- - ax1.plot(loss_epochs, loss_history_subset, lw=4, color='#1f77b4', label='Training Loss') - + ax1.plot(loss_epochs, loss_history_subset, lw=4, color="#1f77b4", label="Training Loss") + # Compute power spectrum of template for theory lines _, _, power = get_power_2d_adele(template_2d) power_flat = np.sort(power.flatten()[power.flatten() > 1e-20])[::-1] - + # Theory levels (cumulative tail sums) alpha_values = np.array([np.sum(power_flat[k:]) for k in range(len(power_flat))]) coef = 1.0 / (p1 * p2) y_levels = coef * alpha_values # strictly decreasing - + # Shade horizontal bands between successive theory lines n_bands = min(len(tracked_freqs), len(y_levels) - 1) for i in range(n_bands): y_top = y_levels[i] y_bot = y_levels[i + 1] ax1.axhspan(y_bot, y_top, facecolor=colors[i], alpha=0.15, zorder=-3) - + # Draw the black theory lines - for y in y_levels[:n_bands + 1]: + for y in y_levels[: n_bands + 1]: ax1.axhline(y=y, color="black", linestyle="--", linewidth=2, zorder=-2) - + ax1.set_ylabel("Theory Loss Levels", fontsize=20) ax1.set_ylim(y_levels[n_bands], y_levels[0] * 1.1) style_axes(ax1) ax1.grid(False) ax1.tick_params(labelbottom=False) - + # --- Bottom panel: Tracked mode power over time --- for i, (kx, ky) in enumerate(tracked_freqs): ax2.plot( actual_steps, # Use actual step/epoch numbers, not indices - powers_over_time[(kx, ky)], - color=colors[i], + powers_over_time[(kx, ky)], + color=colors[i], lw=3, - label=f"({kx},{ky})" + label=f"({kx},{ky})", ) ax2.axhline( target_powers[(kx, ky)], @@ -899,22 +870,22 @@ def plot_prediction_power_spectrum_over_time( linewidth=2, alpha=0.5, ) - + ax2.set_xlabel("Steps", fontsize=20) ax2.set_ylabel("Power in Prediction", fontsize=20) ax2.grid(True, alpha=0.3) style_axes(ax2) ax2.yaxis.set_major_formatter(FormatStrFormatter("%.1f")) - + if save_path: plt.savefig(save_path, bbox_inches="tight", dpi=150) print(f" ✓ Saved power spectrum plot to {save_path}") - + if show: plt.show() else: plt.close() - + return fig, (ax1, ax2), powers_over_time, tracked_freqs @@ -931,15 +902,15 @@ def plot_prediction_power_spectrum_over_time_1d( checkpoint_indices=None, num_samples=100, save_path=None, - show=False + show=False, ): """ Plot training loss with power spectrum analysis of predictions over time (1D version). - + Creates a two-panel plot: - Top: Training loss with colored bands for theory lines - Bottom: Power in tracked frequencies over time (computed at ALL saved checkpoints) - + Args: model: The trained model param_history: List of parameter snapshots (includes epoch 0) @@ -958,39 +929,39 @@ def plot_prediction_power_spectrum_over_time_1d( import torch from matplotlib.ticker import FormatStrFormatter from tqdm import tqdm - + device = next(model.parameters()).device - + # Identify top-K frequencies from template tracked_freqs = topk_template_freqs_1d(template_1d, K=num_freqs_to_track) template_power, _ = get_power_1d(template_1d) target_powers = {k: template_power[k] for k in tracked_freqs} - + # Analyze ALL saved parameter checkpoints T = len(param_history) steps_analysis = list(range(len(param_history))) - + # Get the actual step/epoch numbers for x-axis if param_save_indices is not None: actual_steps = param_save_indices else: actual_steps = list(range(len(param_history))) - + # Track average output power at those frequencies over training powers_over_time = {freq: [] for freq in tracked_freqs} - + print(f" Analyzing {len(steps_analysis)} checkpoints for power spectrum (1D)...") - + with torch.no_grad(): for step in tqdm(steps_analysis, desc=" Computing power spectra", leave=False): model.load_state_dict(param_history[step], strict=True) model.eval() - + # Get predictions for a batch outputs_flat = ( model(X_data[:num_samples].to(device)).detach().cpu().numpy() ) # (num_samples, p) - + # Compute power spectrum for each sample, then average powers_batch = [] for i in range(outputs_flat.shape[0]): @@ -1001,66 +972,60 @@ def plot_prediction_power_spectrum_over_time_1d( power_i, _ = get_power_1d(out_1d) powers_batch.append(power_i) avg_power = np.mean(powers_batch, axis=0) # (p//2+1,) - + # Record power at each tracked frequency for k in tracked_freqs: powers_over_time[k].append(avg_power[k]) - + # Convert lists to arrays for freq in tracked_freqs: powers_over_time[freq] = np.array(powers_over_time[freq]) - + if param_save_indices is None: loss_epochs = np.arange(len(param_history)) loss_history_subset = loss_history else: loss_epochs = np.array(param_save_indices) loss_history_subset = [loss_history[i] for i in param_save_indices] - + # --- Create the plot --- colors = plt.cm.tab10(np.linspace(0, 1, len(tracked_freqs))) - + fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(10, 10), sharex=True) fig.subplots_adjust(left=0.12, right=0.98, top=0.96, bottom=0.10, hspace=0.12) - + # --- Top panel: Training loss with theory bands --- - ax1.plot(loss_epochs, loss_history_subset, lw=4, color='#1f77b4', label='Training Loss') - + ax1.plot(loss_epochs, loss_history_subset, lw=4, color="#1f77b4", label="Training Loss") + # Compute power spectrum of template for theory lines power, _ = get_power_1d(template_1d) power_sorted = np.sort(power[power > 1e-20])[::-1] - + # Theory levels (cumulative tail sums) alpha_values = np.array([np.sum(power_sorted[k:]) for k in range(len(power_sorted))]) coef = 1.0 / p y_levels = coef * alpha_values # strictly decreasing - + # Shade horizontal bands between successive theory lines n_bands = min(len(tracked_freqs), len(y_levels) - 1) for i in range(n_bands): y_top = y_levels[i] y_bot = y_levels[i + 1] ax1.axhspan(y_bot, y_top, facecolor=colors[i], alpha=0.15, zorder=-3) - + # Draw the black theory lines - for y in y_levels[:n_bands + 1]: + for y in y_levels[: n_bands + 1]: ax1.axhline(y=y, color="black", linestyle="--", linewidth=2, zorder=-2) - + ax1.set_ylabel("Theory Loss Levels", fontsize=20) ax1.set_ylim(y_levels[n_bands], y_levels[0] * 1.1) style_axes(ax1) ax1.grid(False) ax1.tick_params(labelbottom=False) - + # --- Bottom panel: Tracked mode power over time --- for i, k in enumerate(tracked_freqs): - ax2.plot( - actual_steps, - powers_over_time[k], - color=colors[i], - lw=3, - label=f"k={k}" - ) + ax2.plot(actual_steps, powers_over_time[k], color=colors[i], lw=3, label=f"k={k}") ax2.axhline( target_powers[k], color=colors[i], @@ -1068,25 +1033,24 @@ def plot_prediction_power_spectrum_over_time_1d( linewidth=2, alpha=0.5, ) - + ax2.set_xlabel("Steps", fontsize=20) ax2.set_ylabel("Power in Prediction", fontsize=20) ax2.grid(True, alpha=0.3) - ax2.legend(fontsize=10, loc='best', ncol=2) + ax2.legend(fontsize=10, loc="best", ncol=2) style_axes(ax2) ax2.yaxis.set_major_formatter(FormatStrFormatter("%.1f")) - + if save_path: plt.savefig(save_path, bbox_inches="tight", dpi=150) print(f" ✓ Saved power spectrum plot to {save_path}") - + if show: plt.show() else: plt.close() - - return fig, (ax1, ax2), powers_over_time, tracked_freqs + return fig, (ax1, ax2), powers_over_time, tracked_freqs def plot_fourier_modes_reference( @@ -1097,14 +1061,14 @@ def plot_fourier_modes_reference( save_path=None, save_individual=False, individual_dir=None, - show=False + show=False, ): """ Create a reference visualization of tracked Fourier modes. - + Generates a stacked vertical image showing all tracked frequency modes with colored borders matching the power spectrum analysis. - + Args: tracked_freqs: List of (kx, ky) tuples for tracked frequencies colors: Array of colors for each frequency (from plt.cm.tab10 or similar) @@ -1113,37 +1077,39 @@ def plot_fourier_modes_reference( save_individual: Whether to also save individual mode images individual_dir: Directory for individual mode images (if save_individual=True) show: Whether to display the plot - + Returns: fig: The matplotlib figure """ - import matplotlib.patheffects as pe - import matplotlib.gridspec as gridspec from pathlib import Path - + + import matplotlib.gridspec as gridspec + import matplotlib.patheffects as pe + # --- Save individual mode images (optional) --- if save_individual and individual_dir is not None: individual_dir = Path(individual_dir) individual_dir.mkdir(exist_ok=True) - + for i, (kx, ky) in enumerate(tracked_freqs): img = _fourier_mode_2d(p1, p2, kx, ky) - + fig_ind, ax = plt.subplots(figsize=(3.2, 2.2)) ax.imshow(img, cmap="RdBu_r", origin="upper") ax.set_xticks([]) ax.set_yticks([]) - + # Colored border for side in ("left", "right", "top", "bottom"): ax.spines[side].set_edgecolor(colors[i]) ax.spines[side].set_linewidth(8) - + # Frequency label kx_label = _pretty_k(kx, p2) ky_label = _pretty_k(ky, p1) ax.text( - 0.5, 0.5, + 0.5, + 0.5, f"$k=({kx_label},{ky_label})$", color=colors[i], fontsize=25, @@ -1153,29 +1119,29 @@ def plot_fourier_modes_reference( transform=ax.transAxes, path_effects=[pe.withStroke(linewidth=3, foreground="white", alpha=0.8)], ) - + plt.tight_layout() - + # Save with signed indices in filename kx_signed, ky_signed = _signed_k(kx, p2), _signed_k(ky, p1) base = f"mode_{i:03d}_kx{kx}_ky{ky}_signed_{kx_signed}_{ky_signed}" fig_ind.savefig(individual_dir / f"{base}.png", dpi=300, bbox_inches="tight") np.save(individual_dir / f"{base}.npy", img) plt.close(fig_ind) - + print(f" ✓ Saved {len(tracked_freqs)} individual mode images to {individual_dir}") - + # --- Create stacked vertical visualization --- n = len(tracked_freqs) - + # Panel geometry and spacing panel_h_in = 2.2 gap_h_in = 0.35 # whitespace between rows fig_w_in = 4.6 fig_h_in = n * panel_h_in + (n - 1) * gap_h_in - + fig = plt.figure(figsize=(fig_w_in, fig_h_in), dpi=150) - + # Rows alternate: [panel, gap, panel, gap, ..., panel] rows = 2 * n - 1 height_ratios = [] @@ -1183,56 +1149,65 @@ def plot_fourier_modes_reference( height_ratios.append(panel_h_in) if i < n - 1: height_ratios.append(gap_h_in) - + # Layout: image on LEFT, label on RIGHT gs = gridspec.GridSpec( - nrows=rows, ncols=2, + nrows=rows, + ncols=2, width_ratios=[1.0, 0.46], height_ratios=height_ratios, - wspace=0.0, hspace=0.0 + wspace=0.0, + hspace=0.0, ) - + for i, (kx, ky) in enumerate(tracked_freqs): r = 2 * i # even rows are content; odd rows are spacers - + # Image axis (left) ax_img = fig.add_subplot(gs[r, 0]) img = _fourier_mode_2d(p1, p2, kx, ky) ax_img.imshow(img, cmap="RdBu_r", origin="upper", aspect="equal") ax_img.set_xticks([]) ax_img.set_yticks([]) - + # Colored border around the image for side in ("left", "right", "top", "bottom"): ax_img.spines[side].set_edgecolor(colors[i]) ax_img.spines[side].set_linewidth(8) - + # Label axis (right) ax_label = fig.add_subplot(gs[r, 1]) ax_label.set_axis_off() kx_label = _pretty_k(kx, p2) ky_label = _pretty_k(ky, p1) ax_label.text( - 0.0, 0.5, f"$k=({kx_label},{ky_label})$", - color=colors[i], fontsize=45, fontweight="bold", - ha="left", va="center", transform=ax_label.transAxes, - path_effects=[pe.withStroke(linewidth=3, foreground="white", alpha=0.8)] + 0.0, + 0.5, + f"$k=({kx_label},{ky_label})$", + color=colors[i], + fontsize=45, + fontweight="bold", + ha="left", + va="center", + transform=ax_label.transAxes, + path_effects=[pe.withStroke(linewidth=3, foreground="white", alpha=0.8)], ) - + # Adjust to prevent clipping of thick borders fig.subplots_adjust(left=0.02, right=0.98, top=0.985, bottom=0.015) - + if save_path: fig.savefig(save_path, dpi=150, bbox_inches="tight", pad_inches=0.12) print(f" ✓ Saved Fourier modes reference to {save_path}") - + if show: plt.show() else: plt.close() - + return fig + def plot_wout_neuron_specialization( param_history, tracked_freqs, @@ -1242,14 +1217,14 @@ def plot_wout_neuron_specialization( steps=None, dead_thresh_l2=0.25, save_dir=None, - show=False + show=False, ): """ Visualize W_out neurons colored by their dominant tracked frequency. - + Creates grid visualizations of output weight neurons at different training steps, with colored borders indicating which Fourier mode each neuron is tuned to. - + Args: param_history: List of parameter snapshots from training tracked_freqs: List of (kx, ky) tuples for tracked frequencies @@ -1259,79 +1234,76 @@ def plot_wout_neuron_specialization( dead_thresh_l2: L2 norm threshold below which neurons are considered "dead" save_dir: Directory to save figures (Path object) show: Whether to display the plots - + Returns: List of figure objects """ - from matplotlib.patches import Patch - from matplotlib.colors import Normalize + from pathlib import Path + import matplotlib.cm as cm import matplotlib.gridspec as gridspec - from pathlib import Path - + from matplotlib.colors import Normalize + from matplotlib.patches import Patch + # Default steps if steps is None: final_step = len(param_history) - 1 steps = [1, min(5, final_step), final_step] steps = sorted(list(set(steps))) - + # Get dimensions W0 = param_history[steps[0]]["W_out"].detach().cpu().numpy().T # (H, D) H, D = W0.shape assert p1 * p2 == D, f"p1*p2 ({p1*p2}) must equal D ({D})." - + # Compute global color limits across all steps vmin, vmax = np.inf, -np.inf for step in steps: W = param_history[step]["W_out"].detach().cpu().numpy().T vmin = min(vmin, W.min()) vmax = max(vmax, W.max()) - + # Grid layout R_ner, C_ner = _squareish_grid(H) tile_w, tile_h = 2, 2 # inches per neuron tile figsize = (C_ner * tile_w, R_ner * tile_h) - + heat_cmap = "RdBu_r" border_lw = 5.0 dead_color = (0.6, 0.6, 0.6, 1.0) - + figures = [] - + # Create one figure per time step for step in steps: W = param_history[step]["W_out"].detach().cpu().numpy().T # (H, D) - + # Determine dominant frequency for each neuron dom_idx = np.empty(H, dtype=int) l2 = np.linalg.norm(W, axis=1) dead_mask = l2 < dead_thresh_l2 - + for j in range(H): m = W[j].reshape(p1, p2) F = np.fft.fft2(m) P = (F.conj() * F).real - tp = [_tracked_power_from_fft2(P, kx, ky, p1, p2) - for (kx, ky) in tracked_freqs] + tp = [_tracked_power_from_fft2(P, kx, ky, p1, p2) for (kx, ky) in tracked_freqs] dom_idx[j] = int(np.argmax(tp)) - + # Assign colors edge_colors = colors[dom_idx].copy() edge_colors[dead_mask] = dead_color - + # Build figure fig = plt.figure(figsize=figsize) gs = gridspec.GridSpec(R_ner, C_ner, figure=fig, wspace=0.06, hspace=0.06) - + # Plot neuron tiles for j in range(R_ner * C_ner): ax = fig.add_subplot(gs[j // C_ner, j % C_ner]) if j < H: m = W[j].reshape(p1, p2) - ax.imshow( - m, vmin=vmin, vmax=vmax, origin="lower", - aspect="equal", cmap=heat_cmap - ) + ax.imshow(m, vmin=vmin, vmax=vmax, origin="lower", aspect="equal", cmap=heat_cmap) # Colored border ec = edge_colors[j] for sp in ax.spines.values(): @@ -1339,22 +1311,22 @@ def plot_wout_neuron_specialization( sp.set_linewidth(border_lw) else: ax.axis("off") - + ax.set_xticks([]) ax.set_yticks([]) - + if save_dir: save_path = Path(save_dir) / f"wout_neurons_epoch_{step:04d}.pdf" fig.savefig(save_path, bbox_inches="tight", dpi=200) print(f" ✓ Saved W_out visualization for epoch {step}") - + if show: plt.show() else: plt.close() - + figures.append(fig) - + # Create standalone colorbar figure fig_cb = plt.figure(figsize=(6, 1.2)) ax_cb = fig_cb.add_axes([0.1, 0.35, 0.8, 0.3]) @@ -1362,64 +1334,52 @@ def plot_wout_neuron_specialization( sm = cm.ScalarMappable(norm=norm, cmap=heat_cmap) cbar = fig_cb.colorbar(sm, cax=ax_cb, orientation="horizontal") cbar.set_label("Weight value", fontsize=12) - + if save_dir: save_path = Path(save_dir) / "wout_colorbar.pdf" fig_cb.savefig(save_path, bbox_inches="tight", dpi=150) - print(f" ✓ Saved colorbar") - + print(" ✓ Saved colorbar") + if show: plt.show() else: plt.close() - + figures.append(fig_cb) - + # Create standalone legend figure fig_legend = plt.figure(figsize=(6, 2.0)) ax_leg = fig_legend.add_subplot(111) ax_leg.axis("off") - + # Colored edge patches (matching tile borders) handles = [ - Patch( - facecolor="white", - edgecolor=colors[i], - linewidth=2.5, - label=f"k={tracked_freqs[i]}" - ) + Patch(facecolor="white", edgecolor=colors[i], linewidth=2.5, label=f"k={tracked_freqs[i]}") for i in range(len(tracked_freqs)) ] - handles.append( - Patch( - facecolor="white", - edgecolor=dead_color, - linewidth=2.5, - label="dead" - ) - ) - + handles.append(Patch(facecolor="white", edgecolor=dead_color, linewidth=2.5, label="dead")) + ax_leg.legend( - handles=handles, - ncol=min(4, len(handles)), - frameon=True, - loc="center", + handles=handles, + ncol=min(4, len(handles)), + frameon=True, + loc="center", title="Dominant frequency", - fontsize=10 + fontsize=10, ) - + if save_dir: save_path = Path(save_dir) / "wout_legend.pdf" fig_legend.savefig(save_path, bbox_inches="tight", dpi=150) - print(f" ✓ Saved legend") - + print(" ✓ Saved legend") + if show: plt.show() else: plt.close() - + figures.append(fig_legend) - + return figures @@ -1431,15 +1391,15 @@ def plot_wout_neuron_specialization_1d( steps=None, dead_thresh_l2=0.25, save_dir=None, - show=False + show=False, ): """ Visualize W_out neurons colored by their dominant tracked frequency (1D version). - + Creates visualizations of output weight neurons at different training steps, with colored borders indicating which Fourier mode each neuron is tuned to. For 1D, neurons are shown as line plots. - + Args: param_history: List of parameter snapshots from training tracked_freqs: List of frequency indices (integers) @@ -1449,66 +1409,63 @@ def plot_wout_neuron_specialization_1d( dead_thresh_l2: L2 norm threshold below which neurons are considered "dead" save_dir: Directory to save figures (Path object) show: Whether to display the plots - + Returns: List of figure objects """ - from matplotlib.patches import Patch from pathlib import Path - + + from matplotlib.patches import Patch + def tracked_power_from_fft(power1d, k): """Get power at frequency k.""" return float(power1d[k]) - + # Default steps if steps is None: final_step = len(param_history) - 1 steps = [1, min(5, final_step), final_step] steps = sorted(list(set(steps))) - + # Get dimensions W0 = param_history[steps[0]]["W_out"].detach().cpu().numpy().T # (H, p) H, D = W0.shape assert p == D, f"p ({p}) must equal D ({D})." - + figures = [] - + # Create one figure per time step for step in steps: W = param_history[step]["W_out"].detach().cpu().numpy().T # (H, p) - + # Determine dominant frequency for each neuron dom_idx = np.empty(H, dtype=int) l2 = np.linalg.norm(W, axis=1) dead_mask = l2 < dead_thresh_l2 - + for j in range(H): neuron_weights = W[j] power, _ = get_power_1d(neuron_weights) tp = [tracked_power_from_fft(power, k) for k in tracked_freqs] dom_idx[j] = int(np.argmax(tp)) - + # Assign colors edge_colors = colors[dom_idx].copy() edge_colors[dead_mask] = (0.6, 0.6, 0.6, 1.0) - + # Create grid of subplots ncols = min(6, H) nrows = int(np.ceil(H / ncols)) - - fig, axes = plt.subplots( - nrows, ncols, - figsize=(2.5 * ncols, 1.5 * nrows), - squeeze=False - ) - + + fig, axes = plt.subplots(nrows, ncols, figsize=(2.5 * ncols, 1.5 * nrows), squeeze=False) + x = np.arange(p) - + for j in range(nrows * ncols): row = j // ncols col = j % ncols ax = axes[row, col] - + if j < H: # Plot neuron weights ax.plot(x, W[j], color=edge_colors[j], lw=1.5) @@ -1516,83 +1473,74 @@ def tracked_power_from_fft(power1d, k): ax.set_ylim(W.min(), W.max()) ax.set_xticks([]) ax.set_yticks([]) - + # Colored border for spine in ax.spines.values(): spine.set_edgecolor(edge_colors[j]) spine.set_linewidth(3) else: - ax.axis('off') - + ax.axis("off") + plt.tight_layout() - + if save_dir: save_path = Path(save_dir) / f"wout_neurons_1d_epoch_{step:04d}.pdf" fig.savefig(save_path, bbox_inches="tight", dpi=200) print(f" ✓ Saved W_out 1D visualization for epoch {step}") - + if show: plt.show() else: plt.close() - + figures.append(fig) - + # Create legend figure fig_legend = plt.figure(figsize=(8, 2.0)) ax_leg = fig_legend.add_subplot(111) ax_leg.axis("off") - + handles = [ - Patch( - facecolor="white", - edgecolor=colors[i], - linewidth=2.5, - label=f"k={tracked_freqs[i]}" - ) + Patch(facecolor="white", edgecolor=colors[i], linewidth=2.5, label=f"k={tracked_freqs[i]}") for i in range(len(tracked_freqs)) ] handles.append( - Patch( - facecolor="white", - edgecolor=(0.6, 0.6, 0.6, 1.0), - linewidth=2.5, - label="dead" - ) + Patch(facecolor="white", edgecolor=(0.6, 0.6, 0.6, 1.0), linewidth=2.5, label="dead") ) - + ax_leg.legend( handles=handles, ncol=min(5, len(handles)), frameon=True, loc="center", title="Dominant frequency", - fontsize=10 + fontsize=10, ) - + if save_dir: save_path = Path(save_dir) / "wout_legend_1d.pdf" fig_legend.savefig(save_path, bbox_inches="tight", dpi=150) - print(f" ✓ Saved legend") - + print(" ✓ Saved legend") + if show: plt.show() else: plt.close() - + figures.append(fig_legend) - + return figures + def analyze_wout_frequency_dominance(state_dict, tracked_freqs, p1, p2): """ Analyze W_out to find dominant frequency for each neuron. - + Args: state_dict: Model parameters (expects 'W_out' key) tracked_freqs: List of (kx, ky) tuples p1, p2: Template dimensions - + Returns: dom_idx: Dominant frequency index for each neuron phase: Phase at dominant frequency for each neuron @@ -1603,26 +1551,25 @@ def analyze_wout_frequency_dominance(state_dict, tracked_freqs, p1, p2): W = Wo.T # (H, p) H, D = W.shape assert D == p1 * p2 - + dom_idx = np.empty(H, dtype=int) dom_pow = np.empty(H, dtype=float) phase = np.empty(H, dtype=float) l2 = np.linalg.norm(W, axis=1) - + for j in range(H): m = W[j].reshape(p1, p2) F = np.fft.fft2(m) P = (F.conj() * F).real # Power at tracked frequencies - tp = [_tracked_power_from_fft2(P, kx, ky, p1, p2) - for (kx, ky) in tracked_freqs] + tp = [_tracked_power_from_fft2(P, kx, ky, p1, p2) for (kx, ky) in tracked_freqs] jj = int(np.argmax(tp)) dom_idx[j] = jj # Phase at representative bin i0, j0 = tracked_freqs[jj][0] % p1, tracked_freqs[jj][1] % p2 phase[j] = np.angle(F[i0, j0]) dom_pow[j] = tp[jj] - + return dom_idx, phase, dom_pow, l2 @@ -1636,14 +1583,14 @@ def plot_wmix_frequency_structure( within_group_order="phase", dead_l2_thresh=0.1, save_path=None, - show=False + show=False, ): """ Visualize W_mix structure grouped by W_out frequency specialization. - + Creates heatmaps of W_mix reordered to show block structure based on which Fourier mode each neuron is tuned to in W_out. - + Args: param_history: List of parameter snapshots tracked_freqs: List of (kx, ky) frequency tuples @@ -1655,36 +1602,33 @@ def plot_wmix_frequency_structure( dead_l2_thresh: L2 threshold for dead neurons save_path: Path to save figure show: Whether to display plot - + Returns: fig, axes """ from matplotlib.patches import Rectangle - + # Default steps if steps is None: final_step = len(param_history) - 1 steps = [1, min(5, final_step), final_step] steps = sorted(list(set(steps))) - + # Labels for frequencies tracked_labels = [ - ("DC" if (kx, ky) == (0, 0) else f"({kx},{ky})") - for (kx, ky) in tracked_freqs + ("DC" if (kx, ky) == (0, 0) else f"({kx},{ky})") for (kx, ky) in tracked_freqs ] - + # Analyze and reorder for each step Wmix_perm_list = [] group_info_list = [] - + for s in steps: sd = param_history[s] - + # Analyze W_out - dom_idx, phase, dom_power, l2 = analyze_wout_frequency_dominance( - sd, tracked_freqs, p1, p2 - ) - + dom_idx, phase, dom_power, l2 = analyze_wout_frequency_dominance(sd, tracked_freqs, p1, p2) + # Get W_mix (fallback to W_h for compatibility) if "W_mix" in sd: M = sd["W_mix"].detach().cpu().numpy() @@ -1692,50 +1636,47 @@ def plot_wmix_frequency_structure( M = sd["W_h"].detach().cpu().numpy() else: raise KeyError("Neither 'W_mix' nor 'W_h' found in state dict.") - + # Compute permutation perm, group_keys, boundaries = _permutation_from_groups_with_dead( - dom_idx, phase, dom_power, l2, - within=within_group_order, - dead_l2_thresh=dead_l2_thresh + dom_idx, phase, dom_power, l2, within=within_group_order, dead_l2_thresh=dead_l2_thresh ) - + # Reorder M_perm = M[perm][:, perm] Wmix_perm_list.append(M_perm) group_info_list.append((group_keys, boundaries)) - + # Shared color limits vmax = max(np.max(np.abs(M)) for M in Wmix_perm_list) vmin = -vmax if vmax > 0 else 0.0 - + # Create figure n = len(steps) fig, axes = plt.subplots(1, n, figsize=(3.8 * n, 3.8), constrained_layout=True) if n == 1: axes = [axes] - + cmap = "RdBu_r" dead_gray = "0.35" - + im = None for j, (s, M_perm) in enumerate(zip(steps, Wmix_perm_list)): ax = axes[j] im = ax.imshow( - M_perm, cmap=cmap, vmin=vmin, vmax=vmax, - aspect="equal", interpolation="nearest" + M_perm, cmap=cmap, vmin=vmin, vmax=vmax, aspect="equal", interpolation="nearest" ) - + ax.set_yticks([]) ax.tick_params(axis="x", bottom=False) - + group_keys, boundaries = group_info_list[j] - + # Draw separators between groups for b in boundaries[:-1]: ax.axhline(b - 0.5, color="k", lw=0.9, alpha=0.65) ax.axvline(b - 0.5, color="k", lw=0.9, alpha=0.65) - + # Draw colored boxes around frequency groups starts = [0] + boundaries[:-1] ends = [b - 1 for b in boundaries] @@ -1745,19 +1686,20 @@ def plot_wmix_frequency_structure( size = e0 - s0 + 1 rect = Rectangle( (s0 - 0.5, s0 - 0.5), - width=size, height=size, + width=size, + height=size, fill=False, linewidth=2.0, edgecolor=colors[kk], alpha=0.95, - joinstyle="miter" + joinstyle="miter", ) ax.add_patch(rect) - + # Add labels at top centers = [(s + e) / 2.0 for s, e in zip(starts, ends)] sizes = [e - s + 1 for s, e in zip(starts, ends)] - + labels = [] label_colors = [] for kk, nn in zip(group_keys, sizes): @@ -1767,30 +1709,29 @@ def plot_wmix_frequency_structure( else: labels.append(f"{tracked_labels[kk]}\n(n={nn})") label_colors.append(colors[kk]) - + ax.set_xticks(centers) ax.set_xticklabels(labels, fontsize=11, ha="center") ax.tick_params( - axis="x", bottom=False, top=True, - labelbottom=False, labeltop=True, labelsize=11 + axis="x", bottom=False, top=True, labelbottom=False, labeltop=True, labelsize=11 ) for lbl, clr in zip(ax.get_xticklabels(), label_colors): lbl.set_color(clr) - + ax.set_xlabel(f"Epoch {s}", fontsize=18, labelpad=8) - + # Shared colorbar cbar = fig.colorbar(im, ax=axes, shrink=1.0, pad=0.012, aspect=18) cbar.ax.tick_params(labelsize=11) cbar.set_label("Weight value", fontsize=12) - + if save_path: plt.savefig(save_path, bbox_inches="tight", dpi=200) - print(f" ✓ Saved W_mix structure plot") - + print(" ✓ Saved W_mix structure plot") + if show: plt.show() else: plt.close() - - return fig, axes \ No newline at end of file + + return fig, axes diff --git a/group_agf/binary_action_learning/datasets.py b/group_agf/binary_action_learning/datasets.py index 4be750f..e7181dd 100644 --- a/group_agf/binary_action_learning/datasets.py +++ b/group_agf/binary_action_learning/datasets.py @@ -3,6 +3,7 @@ import group_agf.binary_action_learning.templates as templates + def load_dataset(config): """Load dataset based on configuration.""" @@ -10,7 +11,7 @@ def load_dataset(config): if config["group_name"] == "cnxcn": X, Y = cnxcn_dataset(template) - + elif config["group_name"] == "cn": X, Y = cn_dataset(template) @@ -18,16 +19,14 @@ def load_dataset(config): X, Y = group_dataset(config["group"], template) print(f"dataset_fraction: {config['dataset_fraction']}") - + if config["dataset_fraction"] != 1.0: assert 0 < config["dataset_fraction"] <= 1.0, "fraction must be in (0, 1]" # Sample a subset of the dataset according to the specified fraction N = X.shape[0] n_sample = int(np.ceil(N * config["dataset_fraction"])) rng = np.random.default_rng(config["seed"]) - indices = rng.choice( - N, size=n_sample, replace=False - ) # indices of the sampled subset + indices = rng.choice(N, size=n_sample, replace=False) # indices of the sampled subset X = X[indices] Y = Y[indices] @@ -78,9 +77,7 @@ def group_dataset(group, template): # Initialize data arrays group_order = group.order() - assert ( - len(template) == group_order - ), "template must have the same length as the group order" + assert len(template) == group_order, "template must have the same length as the group order" n_samples = group_order**2 X = np.zeros((n_samples, 2, group_order)) Y = np.zeros((n_samples, group_order)) @@ -104,9 +101,9 @@ def group_dataset(group, template): def cn_dataset(template): """Generate a dataset for the cyclic group C_n modular addition operation.""" group_size = len(template) - X = np.zeros((group_size * group_size, 2, group_size)) - Y = np.zeros((group_size * group_size, group_size)) - + X = np.zeros((group_size * group_size, 2, group_size)) + Y = np.zeros((group_size * group_size, group_size)) + # Generate the dataset idx = 0 for a in range(group_size): @@ -116,17 +113,17 @@ def cn_dataset(template): X[idx, 1, :] = np.roll(template, b) Y[idx, :] = np.roll(template, q) idx += 1 - + return X, Y def cnxcn_dataset(template): - """Generate a dataset for the 2D modular addition operation. + r"""Generate a dataset for the 2D modular addition operation. General idea: We are generating a dataset where each sample consists of two inputs (a*template and b*template) and an output (a*b)*template, where $(a, b) \in C_n x C_n$, where $C_n x C_n$ is the product of cn - groups. The template is a flattened 2D array representing the modular addition + groups. The template is a flattened 2D array representing the modular addition operation in a 2D space. Each element $X_i$ will contain the template with a different $a_i$, $b_i$, and @@ -139,7 +136,7 @@ def cnxcn_dataset(template): ---------- template : np.ndarray A flattened 2D square image of shape (image_length*image_length,). - + Returns ------- X : np.ndarray @@ -147,13 +144,13 @@ def cnxcn_dataset(template): 2 inputs (a and b), each with shape (image_length*image_length,). is the total number of combinations of shifted a's and b's. Y : np.ndarray - Output data of shape (image_length^4, image_length*image_length), where each + Output data of shape (image_length^4, image_length*image_length), where each sample is the result of the modular addition. """ image_length = int(np.sqrt(len(template))) # Initialize data arrays X = np.zeros((image_length**4, 2, image_length * image_length)) - Y = np.zeros((image_length**4, image_length * image_length)) + Y = np.zeros((image_length**4, image_length * image_length)) translations = np.zeros((image_length**4, 3, 2), dtype=int) # Generate the dataset @@ -165,15 +162,9 @@ def cnxcn_dataset(template): for b_y in range(image_length): q_x = (a_x + b_x) % image_length q_y = (a_y + b_y) % image_length - X[idx, 0, :] = np.roll( - np.roll(template_2d, a_x, axis=0), a_y, axis=1 - ).flatten() - X[idx, 1, :] = np.roll( - np.roll(template_2d, b_x, axis=0), b_y, axis=1 - ).flatten() - Y[idx, :] = np.roll( - np.roll(template_2d, q_x, axis=0), q_y, axis=1 - ).flatten() + X[idx, 0, :] = np.roll(np.roll(template_2d, a_x, axis=0), a_y, axis=1).flatten() + X[idx, 1, :] = np.roll(np.roll(template_2d, b_x, axis=0), b_y, axis=1).flatten() + Y[idx, :] = np.roll(np.roll(template_2d, q_x, axis=0), q_y, axis=1).flatten() translations[idx, 0, :] = (a_x, a_y) translations[idx, 1, :] = (b_x, b_y) translations[idx, 2, :] = (q_x, q_y) diff --git a/group_agf/binary_action_learning/default_config.py b/group_agf/binary_action_learning/default_config.py index 03f40b0..4188c9a 100644 --- a/group_agf/binary_action_learning/default_config.py +++ b/group_agf/binary_action_learning/default_config.py @@ -1,27 +1,25 @@ -import numpy as np - # Dataset Parameters -group_name = "cnxcn" #, "A5"] # , 'octahedral', 'cn', 'dihedral', 'cnxcn' 'A5'] +group_name = "cnxcn" # , "A5"] # , 'octahedral', 'cn', 'dihedral', 'cnxcn' 'A5'] group_n = [6] # n in Dn [3, 4, 5] -template_type = "one_hot" # "one_hot", "irrep_construction"] +template_type = "one_hot" # "one_hot", "irrep_construction"] powers = { "cn": [[0, 12.5, 10, 7.5, 5, 2.5]], "cnxcn": [[0, 12, 10, 8, 6, 4]], "dihedral": [[0.0, 5.0, 0.0, 7.0, 0.0, 0.0]], # D6: [1,1,2,2,1,1], D5: [1,1,2,2], D3: [1,1,2] - "octahedral": [# [1, 3, 3, 2, 1] - [0.0, 2000.0, 0., 0.0, 0.0], - ], - "A5": [# [1, 3, 5, 3, 4] - [0.0, 1800.0, 0., 1800.0, 0.], # 3:900, 3:900 - [0.0, 900.0, 0.0, 0.0, 1600.], #3:900, 4:1600 - [0.0, 0.0, 2500.0, 900.0, 0.0] , # 5:2500, 3:900 - [0.0, 0.0, 2500.0, 0.0, 1600.0] , # 5:2500, 4:1600 + "octahedral": [ # [1, 3, 3, 2, 1] + [0.0, 2000.0, 0.0, 0.0, 0.0], + ], + "A5": [ # [1, 3, 5, 3, 4] + [0.0, 1800.0, 0.0, 1800.0, 0.0], # 3:900, 3:900 + [0.0, 900.0, 0.0, 0.0, 1600.0], # 3:900, 4:1600 + [0.0, 0.0, 2500.0, 900.0, 0.0], # 5:2500, 3:900 + [0.0, 0.0, 2500.0, 0.0, 1600.0], # 5:2500, 4:1600 ], } # Model Parameters -hidden_factor = [30] #20, 30, 40, 50] # hidden size = hidden_factor * group_size +hidden_factor = [30] # 20, 30, 40, 50] # hidden size = hidden_factor * group_size # Learning Parameters seed = [10] @@ -42,7 +40,7 @@ mom = [0.9] optimizer_name = ["PerNeuronScaledSGD"] -epochs = [1000] #, 50000] +epochs = [1000] # , 50000] verbose_interval = 100 checkpoint_interval = 200000 batch_size = [128] # 128, 256] @@ -62,7 +60,7 @@ "cnxcn": 1.0, "dihedral": 1.0, "octahedral": 1.0, - "A5": 1.0, # [0.2, 0.3, 0.4, 0.5, 0.6] + "A5": 1.0, # [0.2, 0.3, 0.4, 0.5, 0.6] } # model_save_dir = "/tmp/nmiolane/" diff --git a/group_agf/binary_action_learning/group_fourier_transform.py b/group_agf/binary_action_learning/group_fourier_transform.py index 1c398f3..9021ff6 100644 --- a/group_agf/binary_action_learning/group_fourier_transform.py +++ b/group_agf/binary_action_learning/group_fourier_transform.py @@ -23,9 +23,7 @@ def compute_group_fourier_coef(group, template, irrep): _ : np.ndarray, shape=[irrep.size, irrep.size] The (matrix) Fourier coefficient of template x at irrep rho. """ - return sum( - [template[i_g] * irrep(g).conj().T for i_g, g in enumerate(group.elements)] - ) + return sum([template[i_g] * irrep(g).conj().T for i_g, g in enumerate(group.elements)]) def compute_group_fourier_transform(group, template): @@ -81,10 +79,7 @@ def compute_group_inverse_fourier_element(group, fourier_transform, g): / group.order() * sum( [ - irrep.size - * np.trace( - irrep(g) @ fourier_transform[i] - ) + irrep.size * np.trace(irrep(g) @ fourier_transform[i]) for i, irrep in enumerate(irreps) ] ) @@ -109,10 +104,7 @@ def compute_group_inverse_fourier_transform(group, fourier_coefs): The inverse Fourier transform: a signal over the group. """ return np.array( - [ - compute_group_inverse_fourier_element(group, fourier_coefs, g) - for g in group.elements - ] + [compute_group_inverse_fourier_element(group, fourier_coefs, g) for g in group.elements] ) @@ -141,8 +133,6 @@ def group_power_spectrum(group, template): power_spectrum = np.zeros(len(irreps)) for i, irrep in enumerate(irreps): fourier_coef = compute_group_fourier_coef(group, template, irrep) - power_spectrum[i] = irrep.size * np.trace( - fourier_coef.conj().T @ fourier_coef - ) + power_spectrum[i] = irrep.size * np.trace(fourier_coef.conj().T @ fourier_coef) power_spectrum = power_spectrum / group.order() return np.array(power_spectrum) diff --git a/group_agf/binary_action_learning/main.py b/group_agf/binary_action_learning/main.py index 07e3398..cb16edc 100644 --- a/group_agf/binary_action_learning/main.py +++ b/group_agf/binary_action_learning/main.py @@ -3,8 +3,6 @@ import logging import time -from seaborn._core.typing import default - import default_config import numpy as np import torch @@ -45,9 +43,7 @@ def main_run(config): print("Generating dataset...") X, Y, template = datasets.load_dataset(config) - assert ( - len(template) == config["group_size"] - ), "Template size does not match group size." + assert len(template) == config["group_size"], "Template size does not match group size." if config["group_name"] == "cnxcn": template_power = power.CyclicPower(template, template_dim=2) @@ -92,9 +88,7 @@ def main_run(config): model.parameters(), lr=config["lr"], betas=(config["mom"], 0.999) ) elif config["optimizer_name"] == "SGD": - optimizer = optim.SGD( - model.parameters(), lr=config["lr"], momentum=config["mom"] - ) + optimizer = optim.SGD(model.parameters(), lr=config["lr"], momentum=config["mom"]) elif config["optimizer_name"] == "PerNeuronScaledSGD": optimizer = PerNeuronScaledSGD(model, lr=config["lr"]) else: @@ -127,8 +121,7 @@ def main_run(config): param_history, X, config["group_name"], - save_path=config["model_save_dir"] - + f"power_over_training_plot_{run_name}.svg", + save_path=config["model_save_dir"] + f"power_over_training_plot_{run_name}.svg", show=False, logscale=config["power_logscale"], ) @@ -158,9 +151,7 @@ def main_run(config): print("Plots generated and logged to wandb.") if config["group_name"] not in ("cnxcn", "cn"): - print( - f"With irreps' sizes:\n {[irrep.size for irrep in config['group'].irreps()]}" - ) + print(f"With irreps' sizes:\n {[irrep.size for irrep in config['group'].irreps()]}") wandb_config.update({"full_run": full_run}) wandb.finish() @@ -213,7 +204,6 @@ def main(): "batch_size": batch_size, "epochs": epochs, "verbose_interval": default_config.verbose_interval, - "run_start_time": run_start_time, "model_save_dir": default_config.model_save_dir, "powers": powers, "dataset_fraction": default_config.dataset_fraction[group_name], @@ -225,31 +215,21 @@ def main(): } if group_name == "cnxcn": - for ( - image_length, - ) in itertools.product( + for (image_length,) in itertools.product( default_config.image_length, ): group_size = image_length * image_length main_config["group_size"] = group_size main_config["image_length"] = image_length - main_config["dataset_fraction"] = default_config.dataset_fraction[ - "cnxcn" - ] + main_config["dataset_fraction"] = default_config.dataset_fraction["cnxcn"] main_config["fourier_coef_diag_values"] = main_config["powers"] main_run(main_config) elif group_name == "cn": - for ( - group_n, - ) in itertools.product( - default_config.group_n - ): + for (group_n,) in itertools.product(default_config.group_n): main_config["group_size"] = group_n main_config["group_n"] = group_n - main_config["dataset_fraction"] = default_config.dataset_fraction[ - "cn" - ] + main_config["dataset_fraction"] = default_config.dataset_fraction["cn"] main_config["fourier_coef_diag_values"] = main_config["powers"] main_run(main_config) @@ -282,11 +262,7 @@ def main(): main_run(main_config) else: - for ( - group_n, - ) in itertools.product( - default_config.group_n - ): + for (group_n,) in itertools.product(default_config.group_n): if group_name == "dihedral": group = DihedralGroup(group_n) else: @@ -301,9 +277,7 @@ def main(): main_config["group"] = group main_config["group_size"] = group_size main_config["group_n"] = group_n - main_config["dataset_fraction"] = default_config.dataset_fraction[ - group_name - ] + main_config["dataset_fraction"] = default_config.dataset_fraction[group_name] main_config["fourier_coef_diag_values"] = [ np.sqrt(group_size * p / dim**2) for p, dim in zip(main_config["powers"], irrep_dims) diff --git a/group_agf/binary_action_learning/models.py b/group_agf/binary_action_learning/models.py index 3f0d4d6..9750cb3 100644 --- a/group_agf/binary_action_learning/models.py +++ b/group_agf/binary_action_learning/models.py @@ -12,7 +12,7 @@ def __init__( init_scale=1.0, output_scale=1.0, ): - super(TwoLayerNet, self).__init__() + super().__init__() self.group_size = group_size if hidden_size is None: # hidden_size = 6 * group_size @@ -34,9 +34,7 @@ def __init__( / np.sqrt(2 * self.group_size) ) self.W = nn.Parameter( - self.init_scale - * torch.randn(hidden_size, self.group_size) - / np.sqrt(self.group_size) + self.init_scale * torch.randn(hidden_size, self.group_size) / np.sqrt(self.group_size) ) # Second layer weights def forward(self, x): diff --git a/group_agf/binary_action_learning/plot.py b/group_agf/binary_action_learning/plot.py index 3651d89..12b576a 100644 --- a/group_agf/binary_action_learning/plot.py +++ b/group_agf/binary_action_learning/plot.py @@ -1,6 +1,7 @@ +import collections + import matplotlib.pyplot as plt import numpy as np -import collections import torch import group_agf.binary_action_learning.power as power @@ -8,9 +9,7 @@ FONT_SIZES = {"title": 30, "axes_label": 30, "tick_label": 30, "legend": 15} -def plot_loss_curve( - loss_history, template_power, save_path=None, show=False, freq_colors=None -): +def plot_loss_curve(loss_history, template_power, save_path=None, show=False, freq_colors=None): """Plot loss curve over epochs. Parameters @@ -24,7 +23,7 @@ def plot_loss_curve( show : bool, optional Whether to display the plot. freq_colors : list of str, optional - List of colors (in format "C0, C1, etc.") to use for different frequency intervals. + List of colors (in format "C0, C1, etc.") to use for different frequency intervals. If None, a single color is used for the entire loss curve. """ fig = plt.figure(figsize=(6, 6)) @@ -59,9 +58,7 @@ def plot_loss_curve( grouped_epochs[-1].append(epoch) grouped_losses[-1].append(loss) - print( - f"Freq colors: {freq_colors}, number of alpha intervals: {num_alpha_intervals}" - ) + print(f"Freq colors: {freq_colors}, number of alpha intervals: {num_alpha_intervals}") for ai in range(num_alpha_intervals + 1): color = freq_colors[ai] if ai < len(freq_colors) else freq_colors[-1] if ai < num_alpha_intervals: @@ -148,21 +145,17 @@ def plot_training_power_over_time( show : bool, optional Whether to display the plot. return_freq_colors : bool, optional - Whether to return the frequency colors used in the plot + Whether to return the frequency colors used in the plot (to optionally coordinate with loss curve). """ if group_name == "cnxcn": escnn_group = None row_freqs, column_freqs = ( - template_power_object.x_freqs, - template_power_object.y_freqs, - ) + template_power_object.x_freqs, + template_power_object.y_freqs, + ) freq = np.array( - [ - (row_freq, column_freq) - for row_freq in row_freqs - for column_freq in column_freqs - ] + [(row_freq, column_freq) for row_freq in row_freqs for column_freq in column_freqs] ) elif group_name == "cn": escnn_group = None @@ -175,7 +168,6 @@ def plot_training_power_over_time( template_power = np.where(template_power < 1e-20, 0, template_power) flattened_template_power = template_power.flatten() - power_idx = np.argsort(flattened_template_power)[-5:][::-1] model_powers_over_time, steps = power.model_power_over_time( group_name=group_name, @@ -184,7 +176,7 @@ def plot_training_power_over_time( param_history=param_history, model_inputs=X_tensor, ) - + fig = plt.figure(figsize=(6, 7)) for i in power_idx: @@ -281,7 +273,7 @@ def plot_neuron_weights( Path to save the plot. If None, the plot is not saved. show : bool, optional If True, display the plot window. - """ + """ # Get the last linear layer's weights last_layer = None modules = list(model.modules()) @@ -300,7 +292,6 @@ def plot_neuron_weights( "No suitable weights found in model (neither nn.Linear nor custom nn.Parameter 'U')." ) - # Select neurons if neuron_indices is None: if len(weights) <= 16: @@ -323,7 +314,7 @@ def plot_neuron_weights( raise ValueError( f"Expected weight size group_size={config['group_size']}, got {weights.shape[0]}" ) - if config["group_name"] is "cnxcn": # 2D irreps + if config["group_name"] == "cnxcn": # 2D irreps img_len = int(np.sqrt(config["group_size"])) w_img = w.reshape(img_len, img_len) axs[i].imshow(w_img, cmap="viridis") @@ -436,9 +427,7 @@ def to_numpy(t): n_samples, 4, figsize=(15, 3 * n_samples), sharey=True, squeeze=False ) - for row, (x_item, output_item, y_item) in enumerate( - zip(x_np, output_np, y_np) - ): + for row, (x_item, output_item, y_item) in enumerate(zip(x_np, output_np, y_np)): # Flatten and squeeze to expected shapes x_item = np.squeeze(x_item) y_item = np.squeeze(y_item) @@ -454,14 +443,10 @@ def to_numpy(t): ) axs[row, 1].set_title("Input 2") - axs[row, 2].imshow( - output_item.reshape(image_size, image_size), cmap="viridis" - ) + axs[row, 2].imshow(output_item.reshape(image_size, image_size), cmap="viridis") axs[row, 2].set_title("Output") - axs[row, 3].imshow( - y_item.reshape(image_size, image_size), cmap="viridis" - ) + axs[row, 3].imshow(y_item.reshape(image_size, image_size), cmap="viridis") axs[row, 3].set_title("Target") for col in range(4): axs[row, col].axis("off") @@ -534,13 +519,9 @@ def plot_irreps(group, show=False): if matrices.ndim == 1 or (matrices.ndim == 2 and matrices.shape[1] == 1): # 1D irrep: plot as real line (vs. group element index) - axs[i].plot( - range(len(group_elements)), matrices.real, marker="o", label="Re" - ) + axs[i].plot(range(len(group_elements)), matrices.real, marker="o", label="Re") if np.any(np.abs(matrices.imag) > 1e-10): - axs[i].plot( - range(len(group_elements)), matrices.imag, marker="x", label="Im" - ) + axs[i].plot(range(len(group_elements)), matrices.imag, marker="x", label="Im") axs[i].set_title(f"Irrep {i}: {str(irrep)} (dim=1)") axs[i].set_xlabel("Group element idx") axs[i].set_ylabel("Irrep value") @@ -549,9 +530,7 @@ def plot_irreps(group, show=False): d = matrices.shape[1] num_group_elements = len(group_elements) num_irrep_entries = d * d - irrep_matrix_entries = matrices.real.reshape( - num_group_elements, num_irrep_entries - ) + irrep_matrix_entries = matrices.real.reshape(num_group_elements, num_irrep_entries) im = axs[i].imshow(irrep_matrix_entries, aspect="auto", cmap="viridis") axs[i].set_title(f"Irrep {i}: {str(irrep)} (size={d}x{d})") axs[i].set_xlabel("Flattened Irreps") @@ -564,4 +543,4 @@ def plot_irreps(group, show=False): plt.tight_layout() if show: plt.show() - return fig \ No newline at end of file + return fig diff --git a/group_agf/binary_action_learning/power.py b/group_agf/binary_action_learning/power.py index 24bc2bc..601d546 100644 --- a/group_agf/binary_action_learning/power.py +++ b/group_agf/binary_action_learning/power.py @@ -1,5 +1,6 @@ import numpy as np import torch + import group_agf.binary_action_learning.group_fourier_transform as gft @@ -24,26 +25,31 @@ def __init__(self, template, template_dim): self.group_size = len(template) self.freqs, self.power = self.cn_power_spectrum(return_freqs=True) - def cn_power_spectrum(self, return_freqs=False): """Compute the 1D power spectrum of 1D FT.""" num_coefficients = (self.group_size // 2) + 1 - + # Perform FFT and calculate power spectrum - ft = np.fft.fft(self.template) # Could consider using np.fft.rfft which is designed for real valued input. - power = np.abs(ft[:num_coefficients])**2 / self.group_size - + ft = np.fft.fft( + self.template + ) # Could consider using np.fft.rfft which is designed for real valued input. + power = np.abs(ft[:num_coefficients]) ** 2 / self.group_size + # Double power for frequencies strictly between 0 and Nyquist (Nyquist is not doubled if p is even) - if self.group_size % 2 == 0: # group size is even, Nyquist frequency at index num_coefficients - 1 - power[1:num_coefficients - 1] *= 2 + if ( + self.group_size % 2 == 0 + ): # group size is even, Nyquist frequency at index num_coefficients - 1 + power[1 : num_coefficients - 1] *= 2 else: # p is odd, no Nyquist frequency power[1:] *= 2 # Confirm the power sum approximates the squared norm of points total_power = np.sum(power) - norm_squared = np.linalg.norm(self.template)**2 + norm_squared = np.linalg.norm(self.template) ** 2 if not np.isclose(total_power, norm_squared, rtol=1e-3): - print(f"Warning: Total power {total_power:.3f} does not match norm squared {norm_squared:.3f}") + print( + f"Warning: Total power {total_power:.3f} does not match norm squared {norm_squared:.3f}" + ) if return_freqs: freqs = np.fft.rfftfreq(self.group_size) @@ -133,9 +139,7 @@ def loss_plateau_predictions(self): nonzero_power_mask = power > 1e-20 power = power[nonzero_power_mask] - i_power_descending_order = np.argsort(power)[ - ::-1 - ] + i_power_descending_order = np.argsort(power)[::-1] power = power[i_power_descending_order] plateau_predictions = [np.sum(power[k:]) for k in range(len(power))] @@ -185,15 +189,9 @@ def group_power_spectrum(self): power_spectrum = np.zeros(len(irreps)) for i, irrep in enumerate(irreps): - fourier_coef = gft.compute_group_fourier_coef( - self.group, self.template, irrep - ) - power_spectrum[i] = irrep.size * np.trace( - fourier_coef.conj().T @ fourier_coef - ) - power_spectrum = ( - power_spectrum / self.group.order() - ) + fourier_coef = gft.compute_group_fourier_coef(self.group, self.template, irrep) + power_spectrum[i] = irrep.size * np.trace(fourier_coef.conj().T @ fourier_coef) + power_spectrum = power_spectrum / self.group.order() return np.array(power_spectrum) @@ -267,9 +265,7 @@ def model_power_over_time(group_name, model, param_history, model_inputs, group= X_tensor = model_inputs[ :num_inputs_to_compute_power ] # Added by Nina to speed up computation with octahedral. - steps = np.unique( - np.logspace(1, np.log10(len(param_history) - 1), num_points, dtype=int) - ) + steps = np.unique(np.logspace(1, np.log10(len(param_history) - 1), num_points, dtype=int)) steps = steps[steps > 50] steps = np.hstack([np.linspace(1, 50, 5).astype(int), steps]) powers_over_time = np.zeros([len(steps), template_power_length]) @@ -283,9 +279,7 @@ def model_power_over_time(group_name, model, param_history, model_inputs, group= print("outputs dtype", outputs.dtype) outputs_arr = outputs.detach().cpu().numpy().reshape(reshape_dims) - print( - "Computing power at step", step, "with output shape", outputs_arr.shape - ) + print("Computing power at step", step, "with output shape", outputs_arr.shape) powers = [] for out in outputs_arr: @@ -302,7 +296,7 @@ def model_power_over_time(group_name, model, param_history, model_inputs, group= powers.append(one_power_flat) powers = np.array(powers) - average_power = np.mean(powers, axis=0) # shape: (num_samples, template_power_length) + average_power = np.mean(powers, axis=0) # shape: (num_samples, template_power_length) powers_over_time[i_step, :] = average_power powers_over_time = np.array(powers_over_time) # shape: (steps, num_freqs) diff --git a/group_agf/binary_action_learning/templates.py b/group_agf/binary_action_learning/templates.py index 7922125..01fb564 100644 --- a/group_agf/binary_action_learning/templates.py +++ b/group_agf/binary_action_learning/templates.py @@ -3,8 +3,9 @@ from sklearn.datasets import fetch_openml from sklearn.utils import shuffle -from group_agf.binary_action_learning.group_fourier_transform import \ - compute_group_inverse_fourier_transform +from group_agf.binary_action_learning.group_fourier_transform import ( + compute_group_inverse_fourier_transform, +) def one_hot(p): @@ -71,7 +72,7 @@ def fixed_cnxcn_template(image_length, fourier_coef_mags): (0,0), (1,0), (0,1), (1,1), (2,0), (0,2), (2,2), (3,0), (0,3), (3,3), ... (and then their negative counterparts to ensure a real-valued template) where (i,j) represents the frequency mode with frequency i in the first dimension - + Returns ------- template : np.ndarray @@ -85,7 +86,7 @@ def fixed_cnxcn_template(image_length, fourier_coef_mags): fourier_coef_mags = fourier_coef_mags[1:] # Exclude zeroth frequency def mode_selector(i_mag): - i_mode = 1 + i_mag // 3 + i_mode = 1 + i_mag // 3 mode_type = i_mag % 3 if mode_type == 0: return (i_mode, 0) @@ -96,7 +97,7 @@ def mode_selector(i_mag): i_mag = 0 while i_mag < len(fourier_coef_mags): - mode = mode_selector(i_mag) + mode = mode_selector(i_mag) spectrum[mode[0], mode[1]] = fourier_coef_mags[i_mag] spectrum[-mode[0], -mode[1]] = np.conj(fourier_coef_mags[i_mag]) @@ -131,8 +132,8 @@ def fixed_group_template(group, fourier_coef_diag_values): The mean centered template. """ spectrum = [] - assert len(fourier_coef_diag_values) == len( - group.irreps() + assert ( + len(fourier_coef_diag_values) == len(group.irreps()) ), f"Number of Fourier coef. magnitudes on the diagonal {len(fourier_coef_diag_values)} must match number of irreps {len(group.irreps())}" for i, irrep in enumerate(group.irreps()): diag_values = np.full(irrep.size, fourier_coef_diag_values[i], dtype=float) diff --git a/group_agf/binary_action_learning/train.py b/group_agf/binary_action_learning/train.py index 52d7e79..d3a414d 100644 --- a/group_agf/binary_action_learning/train.py +++ b/group_agf/binary_action_learning/train.py @@ -1,5 +1,6 @@ import os import pickle + import torch @@ -11,12 +12,8 @@ def test_accuracy(model, dataloader): for batch_idx, (inputs, labels) in enumerate(dataloader): inputs = inputs.view(inputs.shape[0], -1) # Flatten input for FC layers outputs = model(inputs) - _, predicted = torch.max( - outputs, 1 - ) # Get the index of the largest value (class) - _, true_labels = torch.max( - labels, 1 - ) # Get the true class from the one-hot encoding + _, predicted = torch.max(outputs, 1) # Get the index of the largest value (class) + _, true_labels = torch.max(labels, 1) # Get the true class from the one-hot encoding correct += (predicted == true_labels).sum().item() total += labels.size(0) @@ -51,6 +48,7 @@ def save_param_history(param_history_path, param_history): f"(size: {os.path.getsize(param_history_path) / (1024**3):.2f} GB)" ) + def load_param_history(param_history_path): """Load param_history separately for analysis (can be very large).""" param_history = torch.load(param_history_path)["param_history"] @@ -103,9 +101,7 @@ def save_checkpoint( if "No space left on device" in str(e) or "unexpected pos" in str(e): print(f"ERROR: Failed to save checkpoint due to disk space issues: {e}") print(f"Checkpoint path: {checkpoint_path}") - print( - "Consider cleaning up old checkpoints or using a different save location." - ) + print("Consider cleaning up old checkpoints or using a different save location.") raise else: raise @@ -118,9 +114,7 @@ def load_checkpoint(checkpoint_path, model, optimizer=None, map_location="cpu"): checkpoint = torch.load(checkpoint_path, map_location=map_location, weights_only=False) except Exception as e: # Fallback to pickle for old checkpoints - print( - f"Warning: torch.load failed, trying pickle.load for backward compatibility: {e}" - ) + print(f"Warning: torch.load failed, trying pickle.load for backward compatibility: {e}") with open(checkpoint_path, "rb") as f: checkpoint = pickle.load(f) @@ -130,10 +124,7 @@ def load_checkpoint(checkpoint_path, model, optimizer=None, map_location="cpu"): # For PerNeuronScaledSGD, we need to restore the model reference in param_groups optimizer_state = checkpoint["optimizer_state_dict"] # Restore model reference in param_groups if it was removed during save - if ( - "param_groups" in optimizer_state - and len(optimizer_state["param_groups"]) > 0 - ): + if "param_groups" in optimizer_state and len(optimizer_state["param_groups"]) > 0: # Check if optimizer expects a model reference (e.g., PerNeuronScaledSGD) if hasattr(optimizer, "param_groups") and len(optimizer.param_groups) > 0: if "model" in optimizer.param_groups[0]: @@ -145,9 +136,7 @@ def load_checkpoint(checkpoint_path, model, optimizer=None, map_location="cpu"): except Exception as e: print(f"Warning: Could not fully load optimizer state: {e}") print("Optimizer will continue with current configuration.") - print( - f"Loaded checkpoint from {checkpoint_path} (epoch {checkpoint.get('epoch', -1)})" - ) + print(f"Loaded checkpoint from {checkpoint_path} (epoch {checkpoint.get('epoch', -1)})") return checkpoint @@ -195,17 +184,21 @@ def train( ): print(f"Resuming from checkpoint at {config['checkpoint_path']}.") checkpoint = load_checkpoint(config["checkpoint_path"], model, optimizer) - param_history = load_param_history(config["checkpoint_path"].replace(".pt", "_param_history.pt")) + param_history = load_param_history( + config["checkpoint_path"].replace(".pt", "_param_history.pt") + ) start_epoch = checkpoint.get("epoch", 0) + 1 loss_history = checkpoint.get("loss_history", []) accuracy_history = checkpoint.get("accuracy_history", []) print(f"Resuming training from epoch {start_epoch}") else: - print(f"Starting training from scratch (no checkpoint to resume). Checkpoint path was: {config['checkpoint_path']}") + print( + f"Starting training from scratch (no checkpoint to resume). Checkpoint path was: {config['checkpoint_path']}" + ) for epoch in range(start_epoch, config["epochs"]): running_loss = 0.0 - for (inputs, labels) in dataloader: + for inputs, labels in dataloader: inputs = inputs.view(inputs.shape[0], -1) # Flatten input for FC layers optimizer.zero_grad() @@ -246,12 +239,8 @@ def train( ) # Save checkpoint if at checkpoint interval or at the end of the training - if (epoch + 1) % config["checkpoint_interval"] == 0 or (epoch + 1) == config[ - "epochs" - ]: - checkpoint_path = get_model_save_path( - config, checkpoint_epoch=(epoch + 1) - ) + if (epoch + 1) % config["checkpoint_interval"] == 0 or (epoch + 1) == config["epochs"]: + checkpoint_path = get_model_save_path(config, checkpoint_epoch=(epoch + 1)) # Only save param_history in the final checkpoint to save disk space # (param_history can be very large as it stores all parameters for every epoch) is_final_checkpoint = (epoch + 1) == config["epochs"] @@ -265,7 +254,7 @@ def train( param_history, save_param_history=is_final_checkpoint, ) - + # Save param_history separately only at the end of training (it can be very large) if (epoch + 1) == config["epochs"]: param_history_path = checkpoint_path.replace(".pt", "_param_history.pt") diff --git a/notebooks/fourier_power_only.svg b/notebooks/fourier_power_only.svg index 5e7f8f3..b39f1e3 100644 --- a/notebooks/fourier_power_only.svg +++ b/notebooks/fourier_power_only.svg @@ -21,58 +21,58 @@ - - - - - - - - - @@ -104,85 +104,85 @@ L 0 7 - - - - - @@ -305,137 +305,137 @@ z - - - - - - @@ -452,8 +452,8 @@ z - @@ -477,36 +477,36 @@ L -7 0 - @@ -524,34 +524,34 @@ z - @@ -569,34 +569,34 @@ z - @@ -622,83 +622,83 @@ z - - - - @@ -711,50 +711,50 @@ z - - - - - - - - - @@ -762,101 +762,101 @@ z - - - - - @@ -872,51 +872,51 @@ z - - - @@ -926,9 +926,9 @@ z - @@ -940,9 +940,9 @@ L 125.285 61.605 - @@ -954,9 +954,9 @@ L 125.285 78.685 - @@ -968,32 +968,32 @@ L 125.285 95.765 - - @@ -1003,38 +1003,38 @@ z - - diff --git a/notebooks/loss-without-lines.svg b/notebooks/loss-without-lines.svg index fbd1f69..e379d4c 100644 --- a/notebooks/loss-without-lines.svg +++ b/notebooks/loss-without-lines.svg @@ -21,53 +21,53 @@ - - - - - - - - @@ -99,85 +99,85 @@ L 0 7 - - - - - @@ -300,137 +300,137 @@ z - - - - - - @@ -447,8 +447,8 @@ z - @@ -636,107 +636,107 @@ L -7 0 - - - - - - @@ -754,18 +754,18 @@ z - - - diff --git a/pyproject.toml b/pyproject.toml index dff56da..540710a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,4 +32,42 @@ escnn = "^1.0.11" [build-system] requires = ["poetry-core"] -build-backend = "poetry.core.masonry.api" \ No newline at end of file +build-backend = "poetry.core.masonry.api" + +[tool.ruff] +line-length = 100 +exclude = [ + ".git", + "__pycache__", + "*.ipynb", + ".venv", + "build", + "dist", +] + +[tool.ruff.lint] +select = [ + "E", # pycodestyle errors + "W", # pycodestyle warnings + "F", # Pyflakes + "I", # isort + "B", # flake8-bugbear + "UP", # pyupgrade +] +ignore = [ + "E501", # line too long (handled by formatter) + "B008", # do not perform function calls in argument defaults + "B905", # zip without strict + "F403", # star imports (used intentionally for escnn.group) + "F405", # may be undefined from star imports + "F841", # local variable assigned but never used (common in notebooks/experiments) + "B007", # loop control variable not used (common pattern) +] + +[tool.ruff.lint.isort] +known-first-party = ["gagf", "group_agf"] + +[tool.pytest.ini_options] +testpaths = ["test"] +python_files = ["test_*.py"] +python_functions = ["test_*"] diff --git a/setcwd.py b/setcwd.py index 1c35740..4ed8a84 100644 --- a/setcwd.py +++ b/setcwd.py @@ -39,7 +39,3 @@ def get_root_dir(): return subprocess.check_output( ["git", "rev-parse", "--show-toplevel"], universal_newlines=True ).strip() - - - - diff --git a/test/test_bal_datasets.py b/test/test_bal_datasets.py index cca6aba..3850451 100644 --- a/test/test_bal_datasets.py +++ b/test/test_bal_datasets.py @@ -1,7 +1,7 @@ """Tests for group_agf.binary_action_learning.datasets module.""" -import pytest import numpy as np +import pytest import torch from group_agf.binary_action_learning.datasets import ( @@ -19,10 +19,10 @@ def test_output_shape(self): """Test that output shapes are correct.""" group_size = 7 template = np.random.randn(group_size) - + X, Y = cn_dataset(template) - - n_samples = group_size ** 2 + + n_samples = group_size**2 assert X.shape == (n_samples, 2, group_size), f"X shape mismatch: {X.shape}" assert Y.shape == (n_samples, group_size), f"Y shape mismatch: {Y.shape}" @@ -30,9 +30,9 @@ def test_modular_addition_property(self): """Test that Y is the rolled template by (a+b) mod p.""" group_size = 5 template = np.arange(group_size).astype(float) # [0, 1, 2, 3, 4] - + X, Y = cn_dataset(template) - + # Check a specific case: a=1, b=2 -> q=(1+2)%5=3 # Index = a * group_size + b = 1 * 5 + 2 = 7 idx = 1 * group_size + 2 @@ -43,11 +43,11 @@ def test_covers_all_pairs(self): """Test that all pairs (a, b) are covered.""" group_size = 4 template = np.random.randn(group_size) - + X, Y = cn_dataset(template) - + # Should have exactly group_size^2 samples - assert X.shape[0] == group_size ** 2 + assert X.shape[0] == group_size**2 class TestCnxcnDataset: @@ -57,10 +57,10 @@ def test_output_shape(self): """Test that output shapes are correct.""" image_length = 4 template = np.random.randn(image_length * image_length) - + X, Y = cnxcn_dataset(template) - - n_samples = image_length ** 4 + + n_samples = image_length**4 n_features = image_length * image_length assert X.shape == (n_samples, 2, n_features), f"X shape mismatch: {X.shape}" assert Y.shape == (n_samples, n_features), f"Y shape mismatch: {Y.shape}" @@ -69,10 +69,10 @@ def test_covers_all_combinations(self): """Test that all combinations are covered.""" image_length = 3 template = np.random.randn(image_length * image_length) - + X, Y = cnxcn_dataset(template) - - expected_n = image_length ** 4 + + expected_n = image_length**4 assert X.shape[0] == expected_n @@ -83,16 +83,17 @@ class TestGroupDataset: def dihedral_group(self): """Create a DihedralGroup for testing.""" from escnn.group import DihedralGroup + return DihedralGroup(N=3) # D3 def test_output_shape(self, dihedral_group): """Test that output shapes are correct for D3.""" group_order = dihedral_group.order() # 6 for D3 template = np.random.randn(group_order) - + X, Y = group_dataset(dihedral_group, template) - - n_samples = group_order ** 2 + + n_samples = group_order**2 assert X.shape == (n_samples, 2, group_order), f"X shape mismatch: {X.shape}" assert Y.shape == (n_samples, group_order), f"Y shape mismatch: {Y.shape}" @@ -100,7 +101,7 @@ def test_template_length_mismatch_error(self, dihedral_group): """Test that mismatched template length raises error.""" wrong_size = dihedral_group.order() + 1 template = np.random.randn(wrong_size) - + with pytest.raises(AssertionError): group_dataset(dihedral_group, template) @@ -112,12 +113,12 @@ def test_output_shape_and_type(self): """Test that output shapes and types are correct.""" group_size = 5 n_samples = 10 - + X = np.random.randn(n_samples, 2, group_size) Y = np.random.randn(n_samples, group_size) - + X_tensor, Y_tensor, device = move_dataset_to_device_and_flatten(X, Y, device="cpu") - + assert isinstance(X_tensor, torch.Tensor) assert isinstance(Y_tensor, torch.Tensor) assert X_tensor.shape == (n_samples, 2 * group_size) @@ -127,12 +128,12 @@ def test_flattening(self): """Test that X is correctly flattened.""" group_size = 4 n_samples = 5 - + X = np.arange(n_samples * 2 * group_size).reshape(n_samples, 2, group_size).astype(float) Y = np.random.randn(n_samples, group_size) - + X_tensor, Y_tensor, device = move_dataset_to_device_and_flatten(X, Y, device="cpu") - + # Check first sample expected_flat = np.concatenate([X[0, 0, :], X[0, 1, :]]) np.testing.assert_allclose(X_tensor[0].numpy(), expected_flat) @@ -141,8 +142,8 @@ def test_device_cpu(self): """Test explicit CPU device.""" X = np.random.randn(5, 2, 4) Y = np.random.randn(5, 4) - + X_tensor, Y_tensor, device = move_dataset_to_device_and_flatten(X, Y, device="cpu") - + assert X_tensor.device.type == "cpu" assert Y_tensor.device.type == "cpu" diff --git a/test/test_bal_group_fourier_transform.py b/test/test_bal_group_fourier_transform.py index aad839d..1b04205 100644 --- a/test/test_bal_group_fourier_transform.py +++ b/test/test_bal_group_fourier_transform.py @@ -1,10 +1,11 @@ import numpy as np -import pytest from escnn.group import Octahedral -from group_agf.binary_action_learning.templates import fixed_group_template from group_agf.binary_action_learning.group_fourier_transform import ( - compute_group_fourier_transform, compute_group_inverse_fourier_transform) + compute_group_fourier_transform, + compute_group_inverse_fourier_transform, +) +from group_agf.binary_action_learning.templates import fixed_group_template def test_fourier_inverse_is_identity(): @@ -24,19 +25,25 @@ def test_fourier_inverse_is_identity(): fourier_transform_reconstructed = compute_group_fourier_transform(group, reconstructed) # Check that the original and reconstructed template are close - assert np.allclose(template, reconstructed, atol=1e-10), \ - f"Inversion failed! max diff: {np.max(np.abs(template - reconstructed))}" - print(f'diff: {(np.abs(template - reconstructed))}') + assert np.allclose( + template, reconstructed, atol=1e-10 + ), f"Inversion failed! max diff: {np.max(np.abs(template - reconstructed))}" + print(f"diff: {(np.abs(template - reconstructed))}") # Check that the Fourier transform of the reconstructed template is close to the original Fourier transform - print(f'fourier_transform: {[ft.shape for ft in fourier_transform]}') - print(f'fourier_transform_reconstructed: {[ft.shape for ft in fourier_transform_reconstructed]}') - assert len(fourier_transform) == len(fourier_transform_reconstructed), \ - f"Length mismatch: {len(fourier_transform)} vs {len(fourier_transform_reconstructed)}" + print(f"fourier_transform: {[ft.shape for ft in fourier_transform]}") + print( + f"fourier_transform_reconstructed: {[ft.shape for ft in fourier_transform_reconstructed]}" + ) + assert len(fourier_transform) == len( + fourier_transform_reconstructed + ), f"Length mismatch: {len(fourier_transform)} vs {len(fourier_transform_reconstructed)}" for i, (ft, ft_rec) in enumerate(zip(fourier_transform, fourier_transform_reconstructed)): - assert np.allclose(ft, ft_rec, atol=1e-10), \ - f"Fourier transform failed at index {i}! max diff: {np.max(np.abs(ft - ft_rec))}" - print(f'diff at index {i}: {np.max(np.abs(ft - ft_rec))}') + assert np.allclose( + ft, ft_rec, atol=1e-10 + ), f"Fourier transform failed at index {i}! max diff: {np.max(np.abs(ft - ft_rec))}" + print(f"diff at index {i}: {np.max(np.abs(ft - ft_rec))}") + if __name__ == "__main__": test_fourier_inverse_is_identity() diff --git a/test/test_bal_models.py b/test/test_bal_models.py index 5f4714c..70e3e24 100644 --- a/test/test_bal_models.py +++ b/test/test_bal_models.py @@ -2,7 +2,6 @@ import pytest import torch -import numpy as np from group_agf.binary_action_learning.models import TwoLayerNet @@ -20,82 +19,85 @@ def test_output_shape(self, default_params): model = TwoLayerNet(**default_params) batch_size = 8 group_size = default_params["group_size"] - + # Input is flattened: (batch, 2 * group_size) x = torch.randn(batch_size, 2 * group_size) y = model(x) - - assert y.shape == (batch_size, group_size), f"Expected shape {(batch_size, group_size)}, got {y.shape}" + + assert y.shape == ( + batch_size, + group_size, + ), f"Expected shape {(batch_size, group_size)}, got {y.shape}" def test_square_nonlinearity(self, default_params): """Test that square nonlinearity produces finite results.""" params = {**default_params, "nonlinearity": "square"} model = TwoLayerNet(**params) - + x = torch.randn(4, 2 * default_params["group_size"]) y = model(x) - + assert torch.isfinite(y).all(), "Output contains non-finite values" def test_relu_nonlinearity(self, default_params): """Test that relu nonlinearity produces finite results.""" params = {**default_params, "nonlinearity": "relu"} model = TwoLayerNet(**params) - + x = torch.randn(4, 2 * default_params["group_size"]) y = model(x) - + assert torch.isfinite(y).all(), "Output contains non-finite values" def test_tanh_nonlinearity(self, default_params): """Test that tanh nonlinearity produces finite results.""" params = {**default_params, "nonlinearity": "tanh"} model = TwoLayerNet(**params) - + x = torch.randn(4, 2 * default_params["group_size"]) y = model(x) - + assert torch.isfinite(y).all(), "Output contains non-finite values" def test_gelu_nonlinearity(self, default_params): """Test that gelu nonlinearity produces finite results.""" params = {**default_params, "nonlinearity": "gelu"} model = TwoLayerNet(**params) - + x = torch.randn(4, 2 * default_params["group_size"]) y = model(x) - + assert torch.isfinite(y).all(), "Output contains non-finite values" def test_linear_nonlinearity(self, default_params): """Test that linear (no activation) produces finite results.""" params = {**default_params, "nonlinearity": "linear"} model = TwoLayerNet(**params) - + x = torch.randn(4, 2 * default_params["group_size"]) y = model(x) - + assert torch.isfinite(y).all(), "Output contains non-finite values" def test_invalid_nonlinearity(self, default_params): """Test that invalid nonlinearity raises an error.""" params = {**default_params, "nonlinearity": "invalid"} model = TwoLayerNet(**params) - + x = torch.randn(4, 2 * default_params["group_size"]) - + with pytest.raises(ValueError, match="Invalid nonlinearity"): model(x) def test_gradient_flow(self, default_params): """Test that gradients flow through the model.""" model = TwoLayerNet(**default_params) - + x = torch.randn(4, 2 * default_params["group_size"], requires_grad=True) y = model(x) loss = y.sum() loss.backward() - + # Check that gradients exist for all parameters for name, param in model.named_parameters(): assert param.grad is not None, f"No gradient for {name}" @@ -105,7 +107,7 @@ def test_default_hidden_size(self): """Test that default hidden_size is computed correctly.""" group_size = 8 model = TwoLayerNet(group_size=group_size) - + # Default hidden_size should be 50 * group_size assert model.hidden_size == 50 * group_size @@ -113,22 +115,22 @@ def test_output_scale(self, default_params): """Test that output_scale affects the output magnitude.""" scale_small = 0.1 scale_large = 10.0 - + model_small = TwoLayerNet(**default_params, output_scale=scale_small) model_large = TwoLayerNet(**default_params, output_scale=scale_large) - + # Same random seed for reproducibility torch.manual_seed(42) x = torch.randn(4, 2 * default_params["group_size"]) - + # Initialize both models with same weights torch.manual_seed(42) model_small = TwoLayerNet(**default_params, output_scale=scale_small) torch.manual_seed(42) model_large = TwoLayerNet(**default_params, output_scale=scale_large) - + y_small = model_small(x) y_large = model_large(x) - + # Output with larger scale should have larger absolute values on average assert y_large.abs().mean() > y_small.abs().mean() diff --git a/test/test_bal_power.py b/test/test_bal_power.py index 3757719..2fc5f75 100644 --- a/test/test_bal_power.py +++ b/test/test_bal_power.py @@ -1,8 +1,8 @@ import numpy as np from escnn.group import Octahedral -from group_agf.binary_action_learning.templates import fixed_group_template from group_agf.binary_action_learning.power import GroupPower +from group_agf.binary_action_learning.templates import fixed_group_template def test_power_custom_template(): @@ -10,8 +10,10 @@ def test_power_custom_template(): irrep_sizes = [irrep.size for irrep in group.irreps()] print("Irrep sizes:", irrep_sizes) seed = 42 - powers = [0., 20.0, 20.0, 100.0, 0.0] # on irreps [1, 3, 3, 2, 1] - fourier_coef_diag_values = [np.sqrt(group.order()*p / dim**2) for p, dim in zip(powers, irrep_sizes)] + powers = [0.0, 20.0, 20.0, 100.0, 0.0] # on irreps [1, 3, 3, 2, 1] + fourier_coef_diag_values = [ + np.sqrt(group.order() * p / dim**2) for p, dim in zip(powers, irrep_sizes) + ] template = fixed_group_template(group, fourier_coef_diag_values=fourier_coef_diag_values) gp = GroupPower(template, group) @@ -21,6 +23,4 @@ def test_power_custom_template(): print("Computed power spectrum:", power) print("Expected powers:", expected_powers) print("Max diff:", np.max(np.abs(power - expected_powers))) - assert np.allclose( - power, expected_powers - ), "Power spectrum does not match expected values" + assert np.allclose(power, expected_powers), "Power spectrum does not match expected values" diff --git a/test/test_bal_templates.py b/test/test_bal_templates.py index 9bcd48a..6ce5ca6 100644 --- a/test/test_bal_templates.py +++ b/test/test_bal_templates.py @@ -1,13 +1,13 @@ """Tests for group_agf.binary_action_learning.templates module.""" -import pytest import numpy as np +import pytest from group_agf.binary_action_learning.templates import ( - one_hot, fixed_cn_template, fixed_cnxcn_template, fixed_group_template, + one_hot, ) @@ -18,25 +18,25 @@ def test_output_shape(self): """Test that output shape is correct.""" p = 7 template = one_hot(p) - + assert template.shape == (p,), f"Expected shape ({p},), got {template.shape}" def test_mean_centered(self): """Test that the template is mean-centered.""" p = 10 template = one_hot(p) - + np.testing.assert_allclose(template.mean(), 0, atol=1e-10) def test_has_spike(self): """Test that template has a spike at index 1.""" p = 5 template = one_hot(p) - + # The spike value should be 10 - mean zeroth_freq = 10 / p # Mean of array with value 10 at index 1 expected_spike_value = 10 - zeroth_freq - + np.testing.assert_allclose(template[1], expected_spike_value, rtol=1e-5) @@ -47,27 +47,29 @@ def test_output_shape(self): """Test that output shape is correct.""" group_size = 8 fourier_coef_mags = [0, 5, 3, 2, 1] # Include DC and some frequencies - + template = fixed_cn_template(group_size, fourier_coef_mags) - - assert template.shape == (group_size,), f"Expected shape ({group_size},), got {template.shape}" + + assert template.shape == ( + group_size, + ), f"Expected shape ({group_size},), got {template.shape}" def test_mean_centered(self): """Test that the template is mean-centered.""" group_size = 10 fourier_coef_mags = [0, 5, 3, 2] - + template = fixed_cn_template(group_size, fourier_coef_mags) - + np.testing.assert_allclose(template.mean(), 0, atol=1e-10) def test_real_valued(self): """Test that the template is real-valued.""" group_size = 8 fourier_coef_mags = [0, 5, 3] - + template = fixed_cn_template(group_size, fourier_coef_mags) - + # Template should be real (no imaginary component) assert np.isreal(template).all() @@ -79,28 +81,30 @@ def test_output_shape(self): """Test that output shape is correct (flattened).""" image_length = 6 fourier_coef_mags = [0, 5, 3, 2] # DC and some frequencies - + template = fixed_cnxcn_template(image_length, fourier_coef_mags) - + expected_size = image_length * image_length - assert template.shape == (expected_size,), f"Expected shape ({expected_size},), got {template.shape}" + assert template.shape == ( + expected_size, + ), f"Expected shape ({expected_size},), got {template.shape}" def test_mean_centered(self): """Test that the template is mean-centered.""" image_length = 5 fourier_coef_mags = [0, 5, 3] - + template = fixed_cnxcn_template(image_length, fourier_coef_mags) - + np.testing.assert_allclose(template.mean(), 0, atol=1e-10) def test_real_valued(self): """Test that the template is real-valued.""" image_length = 4 fourier_coef_mags = [0, 5] - + template = fixed_cnxcn_template(image_length, fourier_coef_mags) - + assert np.isreal(template).all() @@ -111,6 +115,7 @@ class TestFixedGroupTemplate: def dihedral_group(self): """Create a DihedralGroup for testing.""" from escnn.group import DihedralGroup + return DihedralGroup(N=3) # D3 has 5 irreps def test_output_shape(self, dihedral_group): @@ -118,24 +123,26 @@ def test_output_shape(self, dihedral_group): group_order = dihedral_group.order() # 6 for D3 num_irreps = len(list(dihedral_group.irreps())) # 5 for D3 fourier_coef_diag_values = [1.0] * num_irreps - + template = fixed_group_template(dihedral_group, fourier_coef_diag_values) - - assert template.shape == (group_order,), f"Expected shape ({group_order},), got {template.shape}" + + assert template.shape == ( + group_order, + ), f"Expected shape ({group_order},), got {template.shape}" def test_mean_centered(self, dihedral_group): """Test that the template is mean-centered.""" num_irreps = len(list(dihedral_group.irreps())) fourier_coef_diag_values = [1.0] * num_irreps - + template = fixed_group_template(dihedral_group, fourier_coef_diag_values) - + np.testing.assert_allclose(template.mean(), 0, atol=1e-10) def test_wrong_num_coefs_error(self, dihedral_group): """Test that mismatched number of coefficients raises error.""" wrong_num_coefs = [1.0, 2.0] # Wrong number - + with pytest.raises(AssertionError): fixed_group_template(dihedral_group, wrong_num_coefs) @@ -143,7 +150,7 @@ def test_real_valued(self, dihedral_group): """Test that the template is real-valued.""" num_irreps = len(list(dihedral_group.irreps())) fourier_coef_diag_values = [1.0] * num_irreps - + template = fixed_group_template(dihedral_group, fourier_coef_diag_values) - + assert np.isreal(template).all() diff --git a/test/test_notebooks.py b/test/test_notebooks.py index f39722d..a4a520c 100644 --- a/test/test_notebooks.py +++ b/test/test_notebooks.py @@ -80,11 +80,11 @@ def notebook_test_env(): def execute_notebook(notebook_path, env): """ Execute a Jupyter notebook using nbconvert. - + Args: notebook_path: Path to the notebook file env: Environment dictionary for the subprocess - + Returns: tuple: (success: bool, error_message: str or None) """ @@ -110,12 +110,12 @@ def execute_notebook(notebook_path, env): cwd=str(get_repo_root()), timeout=360, # 6 minute overall timeout ) - + if result.returncode != 0: error_msg = f"STDOUT:\n{result.stdout}\n\nSTDERR:\n{result.stderr}" return False, error_msg return True, None - + except subprocess.TimeoutExpired: return False, "Notebook execution timed out (>6 minutes)" except Exception as e: @@ -126,20 +126,20 @@ def execute_notebook(notebook_path, env): def test_notebook_execution(notebook_path, notebook_test_env): """ Test that a notebook executes without errors. - + This test runs each notebook with NOTEBOOK_TEST_MODE=1 to ensure reduced epochs are used for faster execution. """ notebook_name = notebook_path.stem - + # Skip notebooks with known issues if notebook_name in SKIP_NOTEBOOKS: pytest.skip(f"Skipped: {SKIP_NOTEBOOKS[notebook_name]}") - + assert notebook_path.exists(), f"Notebook not found: {notebook_path}" - + success, error_msg = execute_notebook(notebook_path, notebook_test_env) - + if not success: pytest.fail(f"Notebook {notebook_path.name} failed to execute:\n{error_msg}") diff --git a/test/test_rnns_datamodule.py b/test/test_rnns_datamodule.py index 0028b47..5085c49 100644 --- a/test/test_rnns_datamodule.py +++ b/test/test_rnns_datamodule.py @@ -1,15 +1,14 @@ """Tests for gagf.rnns.datamodule module.""" -import pytest import numpy as np -import torch +import pytest from gagf.rnns.datamodule import ( + OnlineModularAdditionDataset1D, + OnlineModularAdditionDataset2D, build_modular_addition_sequence_dataset_1d, build_modular_addition_sequence_dataset_2d, build_modular_addition_sequence_dataset_D3, - OnlineModularAdditionDataset1D, - OnlineModularAdditionDataset2D, ) @@ -28,11 +27,11 @@ def test_output_shape_sampled(self, template_1d): p = len(template_1d) k = 3 num_samples = 100 - + X, Y, sequence = build_modular_addition_sequence_dataset_1d( p=p, template=template_1d, k=k, mode="sampled", num_samples=num_samples ) - + assert X.shape == (num_samples, k, p), f"X shape mismatch: {X.shape}" assert Y.shape == (num_samples, p), f"Y shape mismatch: {Y.shape}" assert sequence.shape == (num_samples, k), f"sequence shape mismatch: {sequence.shape}" @@ -41,12 +40,12 @@ def test_output_shape_exhaustive(self, template_1d): """Test output shapes in exhaustive mode.""" p = len(template_1d) k = 2 - + X, Y, sequence = build_modular_addition_sequence_dataset_1d( p=p, template=template_1d, k=k, mode="exhaustive" ) - - expected_n = p ** k + + expected_n = p**k assert X.shape == (expected_n, k, p) assert Y.shape == (expected_n, p) assert sequence.shape == (expected_n, k) @@ -56,12 +55,16 @@ def test_output_shape_return_all_outputs(self, template_1d): p = len(template_1d) k = 4 num_samples = 50 - + X, Y, sequence = build_modular_addition_sequence_dataset_1d( - p=p, template=template_1d, k=k, mode="sampled", - num_samples=num_samples, return_all_outputs=True + p=p, + template=template_1d, + k=k, + mode="sampled", + num_samples=num_samples, + return_all_outputs=True, ) - + # Y should have k-1 outputs (one after each pair of tokens) assert X.shape == (num_samples, k, p) assert Y.shape == (num_samples, k - 1, p) @@ -71,11 +74,11 @@ def test_rolling_correctness(self, template_1d): """Test that X values are rolled versions of template.""" p = len(template_1d) k = 2 - + X, Y, sequence = build_modular_addition_sequence_dataset_1d( p=p, template=template_1d, k=k, mode="exhaustive" ) - + # Check first sample shift_0 = int(sequence[0, 0]) expected_x0 = np.roll(template_1d, shift_0) @@ -97,27 +100,30 @@ def test_output_shape_sampled(self, template_2d): p1, p2 = template_2d.shape k = 3 num_samples = 100 - + X, Y, sequence_xy = build_modular_addition_sequence_dataset_2d( - p1=p1, p2=p2, template=template_2d, k=k, - mode="sampled", num_samples=num_samples + p1=p1, p2=p2, template=template_2d, k=k, mode="sampled", num_samples=num_samples ) - + p_flat = p1 * p2 assert X.shape == (num_samples, k, p_flat), f"X shape mismatch: {X.shape}" assert Y.shape == (num_samples, p_flat), f"Y shape mismatch: {Y.shape}" - assert sequence_xy.shape == (num_samples, k, 2), f"sequence_xy shape mismatch: {sequence_xy.shape}" + assert sequence_xy.shape == ( + num_samples, + k, + 2, + ), f"sequence_xy shape mismatch: {sequence_xy.shape}" def test_output_shape_exhaustive(self, template_2d): """Test output shapes in exhaustive mode.""" p1, p2 = 3, 3 # Use small dimensions for exhaustive template = np.random.randn(p1, p2).astype(np.float32) k = 2 - + X, Y, sequence_xy = build_modular_addition_sequence_dataset_2d( p1=p1, p2=p2, template=template, k=k, mode="exhaustive" ) - + expected_n = (p1 * p2) ** k p_flat = p1 * p2 assert X.shape == (expected_n, k, p_flat) @@ -140,11 +146,11 @@ def test_output_shape_sampled(self, template_d3): k = 3 num_samples = 100 group_order = len(template_d3) - + X, Y, sequence = build_modular_addition_sequence_dataset_D3( template=template_d3, k=k, mode="sampled", num_samples=num_samples ) - + assert X.shape == (num_samples, k, group_order), f"X shape mismatch: {X.shape}" assert Y.shape == (num_samples, group_order), f"Y shape mismatch: {Y.shape}" assert sequence.shape == (num_samples, k), f"sequence shape mismatch: {sequence.shape}" @@ -154,12 +160,12 @@ def test_output_shape_exhaustive(self, template_d3): k = 2 group_order = len(template_d3) n_elements = group_order # D3 has 6 elements - + X, Y, sequence = build_modular_addition_sequence_dataset_D3( template=template_d3, k=k, mode="exhaustive" ) - - expected_n = n_elements ** k + + expected_n = n_elements**k assert X.shape == (expected_n, k, group_order) assert Y.shape == (expected_n, group_order) assert sequence.shape == (expected_n, k) @@ -169,12 +175,15 @@ def test_output_shape_return_all_outputs(self, template_d3): k = 4 num_samples = 50 group_order = len(template_d3) - + X, Y, sequence = build_modular_addition_sequence_dataset_D3( - template=template_d3, k=k, mode="sampled", - num_samples=num_samples, return_all_outputs=True + template=template_d3, + k=k, + mode="sampled", + num_samples=num_samples, + return_all_outputs=True, ) - + assert X.shape == (num_samples, k, group_order) assert Y.shape == (num_samples, k - 1, group_order) assert sequence.shape == (num_samples, k) @@ -189,15 +198,15 @@ def test_batch_shape(self): k = 3 batch_size = 16 template = np.random.randn(p).astype(np.float32) - + dataset = OnlineModularAdditionDataset1D( p=p, template=template, k=k, batch_size=batch_size, device="cpu" ) - + # Get first batch iterator = iter(dataset) X, Y = next(iterator) - + assert X.shape == (batch_size, k, p), f"X shape mismatch: {X.shape}" assert Y.shape == (batch_size, p), f"Y shape mismatch: {Y.shape}" @@ -207,15 +216,19 @@ def test_batch_shape_return_all_outputs(self): k = 4 batch_size = 16 template = np.random.randn(p).astype(np.float32) - + dataset = OnlineModularAdditionDataset1D( - p=p, template=template, k=k, batch_size=batch_size, - device="cpu", return_all_outputs=True + p=p, + template=template, + k=k, + batch_size=batch_size, + device="cpu", + return_all_outputs=True, ) - + iterator = iter(dataset) X, Y = next(iterator) - + assert X.shape == (batch_size, k, p) assert Y.shape == (batch_size, k - 1, p) @@ -229,15 +242,14 @@ def test_batch_shape(self): k = 3 batch_size = 16 template = np.random.randn(p1, p2).astype(np.float32) - + dataset = OnlineModularAdditionDataset2D( - p1=p1, p2=p2, template=template, k=k, - batch_size=batch_size, device="cpu" + p1=p1, p2=p2, template=template, k=k, batch_size=batch_size, device="cpu" ) - + iterator = iter(dataset) X, Y = next(iterator) - + p_flat = p1 * p2 assert X.shape == (batch_size, k, p_flat), f"X shape mismatch: {X.shape}" assert Y.shape == (batch_size, p_flat), f"Y shape mismatch: {Y.shape}" @@ -248,15 +260,20 @@ def test_batch_shape_return_all_outputs(self): k = 4 batch_size = 16 template = np.random.randn(p1, p2).astype(np.float32) - + dataset = OnlineModularAdditionDataset2D( - p1=p1, p2=p2, template=template, k=k, - batch_size=batch_size, device="cpu", return_all_outputs=True + p1=p1, + p2=p2, + template=template, + k=k, + batch_size=batch_size, + device="cpu", + return_all_outputs=True, ) - + iterator = iter(dataset) X, Y = next(iterator) - + p_flat = p1 * p2 assert X.shape == (batch_size, k, p_flat) assert Y.shape == (batch_size, k - 1, p_flat) diff --git a/test/test_rnns_model.py b/test/test_rnns_model.py index 5cdfac1..911a6c7 100644 --- a/test/test_rnns_model.py +++ b/test/test_rnns_model.py @@ -2,7 +2,6 @@ import pytest import torch -import numpy as np from gagf.rnns.model import QuadraticRNN, SequentialMLP @@ -24,10 +23,10 @@ def test_output_shape_basic(self, default_params): batch_size = 8 k = 4 p = default_params["p"] - + x = torch.randn(batch_size, k, p) y = model(x) - + assert y.shape == (batch_size, p), f"Expected shape {(batch_size, p)}, got {y.shape}" def test_output_shape_return_all_outputs(self, default_params): @@ -37,10 +36,10 @@ def test_output_shape_return_all_outputs(self, default_params): batch_size = 8 k = 5 p = default_params["p"] - + x = torch.randn(batch_size, k, p) y = model(x) - + # With return_all_outputs=True, we get k-1 outputs (after first two tokens) expected_shape = (batch_size, k - 1, p) assert y.shape == expected_shape, f"Expected shape {expected_shape}, got {y.shape}" @@ -51,24 +50,24 @@ def test_output_shape_k_equals_2(self, default_params): batch_size = 4 k = 2 p = default_params["p"] - + x = torch.randn(batch_size, k, p) y = model(x) - + assert y.shape == (batch_size, p) def test_quadratic_transform(self, default_params): """Test that quadratic transform is applied correctly.""" params = {**default_params, "transform_type": "quadratic"} model = QuadraticRNN(**params) - + batch_size = 2 k = 3 p = default_params["p"] - + x = torch.randn(batch_size, k, p) y = model(x) - + # Output should be finite assert torch.isfinite(y).all(), "Output contains non-finite values" @@ -76,14 +75,14 @@ def test_multiplicative_transform(self, default_params): """Test that multiplicative transform is applied correctly.""" params = {**default_params, "transform_type": "multiplicative"} model = QuadraticRNN(**params) - + batch_size = 2 k = 3 p = default_params["p"] - + x = torch.randn(batch_size, k, p) y = model(x) - + # Output should be finite assert torch.isfinite(y).all(), "Output contains non-finite values" @@ -91,30 +90,30 @@ def test_invalid_transform_type(self, default_params): """Test that invalid transform type raises an error.""" params = {**default_params, "transform_type": "invalid"} model = QuadraticRNN(**params) - + x = torch.randn(2, 3, default_params["p"]) - + with pytest.raises(ValueError, match="Invalid transform type"): model(x) def test_minimum_sequence_length_error(self, default_params): """Test that k<2 raises an assertion error.""" model = QuadraticRNN(**default_params) - + x = torch.randn(2, 1, default_params["p"]) # k=1 - + with pytest.raises(AssertionError, match="Sequence length must be at least 2"): model(x) def test_gradient_flow(self, default_params): """Test that gradients flow through the model.""" model = QuadraticRNN(**default_params) - + x = torch.randn(4, 3, default_params["p"], requires_grad=True) y = model(x) loss = y.sum() loss.backward() - + # Check that gradients exist for all parameters for name, param in model.named_parameters(): assert param.grad is not None, f"No gradient for {name}" @@ -139,19 +138,19 @@ def test_output_shape(self, default_params): batch_size = 8 k = default_params["k"] p = default_params["p"] - + x = torch.randn(batch_size, k, p) y = model(x) - + assert y.shape == (batch_size, p), f"Expected shape {(batch_size, p)}, got {y.shape}" def test_k_mismatch_error(self, default_params): """Test that mismatched k raises an error.""" model = SequentialMLP(**default_params) - + wrong_k = default_params["k"] + 1 x = torch.randn(2, wrong_k, default_params["p"]) - + with pytest.raises(AssertionError, match="Expected k="): model(x) @@ -160,23 +159,23 @@ def test_different_k_values(self): p = 5 d = 8 template = torch.randn(p) - + for k in [2, 3, 4, 5]: model = SequentialMLP(p=p, d=d, k=k, template=template) x = torch.randn(4, k, p) y = model(x) - + assert y.shape == (4, p), f"Failed for k={k}" def test_gradient_flow(self, default_params): """Test that gradients flow through the model.""" model = SequentialMLP(**default_params) - + x = torch.randn(4, default_params["k"], default_params["p"], requires_grad=True) y = model(x) loss = y.sum() loss.backward() - + # Check that gradients exist for all parameters for name, param in model.named_parameters(): assert param.grad is not None, f"No gradient for {name}" @@ -185,9 +184,9 @@ def test_gradient_flow(self, default_params): def test_k_power_activation(self, default_params): """Test that k-th power activation produces finite results.""" model = SequentialMLP(**default_params) - + # Use small inputs to avoid overflow with k-th power x = torch.randn(4, default_params["k"], default_params["p"]) * 0.1 y = model(x) - + assert torch.isfinite(y).all(), "Output contains non-finite values" diff --git a/test/test_rnns_optimizers.py b/test/test_rnns_optimizers.py index 2d24dce..6f9cd3b 100644 --- a/test/test_rnns_optimizers.py +++ b/test/test_rnns_optimizers.py @@ -3,8 +3,8 @@ import pytest import torch -from gagf.rnns.model import SequentialMLP, QuadraticRNN -from gagf.rnns.optimizers import PerNeuronScaledSGD, HybridRNNOptimizer +from gagf.rnns.model import QuadraticRNN, SequentialMLP +from gagf.rnns.optimizers import HybridRNNOptimizer, PerNeuronScaledSGD class TestPerNeuronScaledSGD: @@ -22,20 +22,20 @@ def sequential_mlp(self): def test_step_updates_parameters(self, sequential_mlp): """Test that optimizer step updates model parameters.""" optimizer = PerNeuronScaledSGD(sequential_mlp, lr=0.01) - + # Store initial parameters initial_w_in = sequential_mlp.W_in.clone() initial_w_out = sequential_mlp.W_out.clone() - + # Forward pass and backward x = torch.randn(4, sequential_mlp.k, sequential_mlp.p) y = sequential_mlp(x) loss = y.sum() loss.backward() - + # Optimizer step optimizer.step() - + # Parameters should have changed assert not torch.allclose(sequential_mlp.W_in, initial_w_in), "W_in not updated" assert not torch.allclose(sequential_mlp.W_out, initial_w_out), "W_out not updated" @@ -43,29 +43,29 @@ def test_step_updates_parameters(self, sequential_mlp): def test_degree_inference(self, sequential_mlp): """Test that degree is correctly inferred from model.""" optimizer = PerNeuronScaledSGD(sequential_mlp, lr=0.01) - + # Degree should be k + 1 for SequentialMLP expected_degree = sequential_mlp.k + 1 - assert optimizer.defaults['degree'] == expected_degree + assert optimizer.defaults["degree"] == expected_degree def test_explicit_degree(self, sequential_mlp): """Test that explicit degree overrides inference.""" explicit_degree = 5 optimizer = PerNeuronScaledSGD(sequential_mlp, lr=0.01, degree=explicit_degree) - - assert optimizer.defaults['degree'] == explicit_degree + + assert optimizer.defaults["degree"] == explicit_degree def test_finite_gradients_after_step(self, sequential_mlp): """Test that gradients remain finite after optimization step.""" optimizer = PerNeuronScaledSGD(sequential_mlp, lr=0.01) - + x = torch.randn(4, sequential_mlp.k, sequential_mlp.p) y = sequential_mlp(x) loss = y.sum() loss.backward() - + optimizer.step() - + # All parameters should still be finite for name, param in sequential_mlp.named_parameters(): assert torch.isfinite(param).all(), f"Non-finite values in {name}" @@ -85,22 +85,19 @@ def quadratic_rnn(self): def test_step_updates_all_parameters(self, quadratic_rnn): """Test that optimizer step updates all model parameters.""" optimizer = HybridRNNOptimizer(quadratic_rnn, lr=0.01, adam_lr=0.001) - + # Store initial parameters - initial_params = { - name: param.clone() - for name, param in quadratic_rnn.named_parameters() - } - + initial_params = {name: param.clone() for name, param in quadratic_rnn.named_parameters()} + # Forward pass and backward x = torch.randn(4, 3, quadratic_rnn.p) y = quadratic_rnn(x) loss = y.sum() loss.backward() - + # Optimizer step optimizer.step() - + # All parameters should have changed for name, param in quadratic_rnn.named_parameters(): assert not torch.allclose(param, initial_params[name]), f"{name} not updated" @@ -108,35 +105,35 @@ def test_step_updates_all_parameters(self, quadratic_rnn): def test_scaled_sgd_for_mlp_params(self, quadratic_rnn): """Test that W_in, W_drive, W_out use scaled SGD.""" optimizer = HybridRNNOptimizer(quadratic_rnn, lr=0.01) - + # The optimizer should have two param groups assert len(optimizer.param_groups) == 2 - + # First group should be scaled_sgd - assert optimizer.param_groups[0]['type'] == 'scaled_sgd' + assert optimizer.param_groups[0]["type"] == "scaled_sgd" # Second group should be adam - assert optimizer.param_groups[1]['type'] == 'adam' + assert optimizer.param_groups[1]["type"] == "adam" def test_adam_for_w_mix(self, quadratic_rnn): """Test that W_mix uses Adam optimizer.""" optimizer = HybridRNNOptimizer(quadratic_rnn, lr=0.01, adam_lr=0.001) - + # W_mix should be in the adam group - adam_params = list(optimizer.param_groups[1]['params']) + adam_params = list(optimizer.param_groups[1]["params"]) assert len(adam_params) == 1 assert adam_params[0] is quadratic_rnn.W_mix def test_finite_parameters_after_step(self, quadratic_rnn): """Test that parameters remain finite after optimization.""" optimizer = HybridRNNOptimizer(quadratic_rnn, lr=0.01, adam_lr=0.001) - + x = torch.randn(4, 3, quadratic_rnn.p) y = quadratic_rnn(x) loss = y.sum() loss.backward() - + optimizer.step() - + # All parameters should be finite for name, param in quadratic_rnn.named_parameters(): assert torch.isfinite(param).all(), f"Non-finite values in {name}" @@ -144,7 +141,7 @@ def test_finite_parameters_after_step(self, quadratic_rnn): def test_multiple_steps(self, quadratic_rnn): """Test that multiple optimization steps work correctly.""" optimizer = HybridRNNOptimizer(quadratic_rnn, lr=0.01, adam_lr=0.001) - + for _ in range(5): optimizer.zero_grad() x = torch.randn(4, 3, quadratic_rnn.p) @@ -152,7 +149,7 @@ def test_multiple_steps(self, quadratic_rnn): loss = y.sum() loss.backward() optimizer.step() - + # All parameters should still be finite after multiple steps for name, param in quadratic_rnn.named_parameters(): assert torch.isfinite(param).all(), f"Non-finite values in {name}" diff --git a/test/test_rnns_utils.py b/test/test_rnns_utils.py index d55ebce..0de5a26 100644 --- a/test/test_rnns_utils.py +++ b/test/test_rnns_utils.py @@ -1,13 +1,12 @@ """Tests for gagf.rnns.utils module.""" -import pytest import numpy as np from gagf.rnns.utils import ( get_power_1d, get_power_2d_adele, - topk_template_freqs_1d, topk_template_freqs, + topk_template_freqs_1d, ) @@ -18,9 +17,9 @@ def test_output_shape(self): """Test that output shape is correct.""" p = 10 signal = np.random.randn(p) - + power, freqs = get_power_1d(signal) - + expected_len = p // 2 + 1 assert power.shape == (expected_len,), f"power shape mismatch: {power.shape}" assert freqs.shape == (expected_len,), f"freqs shape mismatch: {freqs.shape}" @@ -29,28 +28,29 @@ def test_parseval_theorem(self): """Test that Parseval's theorem holds (total power ≈ norm squared).""" p = 16 signal = np.random.randn(p) - + power, _ = get_power_1d(signal) total_power = np.sum(power) norm_squared = np.linalg.norm(signal) ** 2 - + np.testing.assert_allclose( - total_power, norm_squared, rtol=1e-6, - err_msg="Parseval's theorem violated" + total_power, norm_squared, rtol=1e-6, err_msg="Parseval's theorem violated" ) def test_parseval_theorem_odd_length(self): """Test Parseval's theorem for odd-length signals.""" p = 15 signal = np.random.randn(p) - + power, _ = get_power_1d(signal) total_power = np.sum(power) norm_squared = np.linalg.norm(signal) ** 2 - + np.testing.assert_allclose( - total_power, norm_squared, rtol=1e-6, - err_msg="Parseval's theorem violated for odd length" + total_power, + norm_squared, + rtol=1e-6, + err_msg="Parseval's theorem violated for odd length", ) def test_dc_component(self): @@ -58,13 +58,13 @@ def test_dc_component(self): p = 8 constant_value = 3.0 signal = np.full(p, constant_value) - + power, freqs = get_power_1d(signal) - + # DC component should contain all the power for constant signal - expected_dc_power = constant_value ** 2 * p + expected_dc_power = constant_value**2 * p np.testing.assert_allclose(power[0], expected_dc_power, rtol=1e-6) - + # All other components should be zero assert np.allclose(power[1:], 0, atol=1e-10) @@ -76,9 +76,9 @@ def test_output_shape(self): """Test that output shape is correct.""" M, N = 8, 10 signal = np.random.randn(M, N) - + freqs_u, freqs_v, power = get_power_2d_adele(signal) - + expected_power_shape = (M, N // 2 + 1) assert power.shape == expected_power_shape, f"power shape mismatch: {power.shape}" assert freqs_u.shape == (M,), f"freqs_u shape mismatch: {freqs_u.shape}" @@ -88,9 +88,9 @@ def test_output_shape_no_freq(self): """Test output when no_freq=True.""" M, N = 8, 10 signal = np.random.randn(M, N) - + result = get_power_2d_adele(signal, no_freq=True) - + # Should only return power expected_shape = (M, N // 2 + 1) assert result.shape == expected_shape @@ -99,28 +99,29 @@ def test_parseval_theorem(self): """Test that Parseval's theorem holds.""" M, N = 12, 12 signal = np.random.randn(M, N) - + power = get_power_2d_adele(signal, no_freq=True) total_power = np.sum(power) norm_squared = np.linalg.norm(signal) ** 2 - + np.testing.assert_allclose( - total_power, norm_squared, rtol=1e-6, - err_msg="Parseval's theorem violated for 2D" + total_power, norm_squared, rtol=1e-6, err_msg="Parseval's theorem violated for 2D" ) def test_parseval_theorem_rectangular(self): """Test Parseval's theorem for rectangular arrays.""" M, N = 7, 11 # Both odd signal = np.random.randn(M, N) - + power = get_power_2d_adele(signal, no_freq=True) total_power = np.sum(power) norm_squared = np.linalg.norm(signal) ** 2 - + np.testing.assert_allclose( - total_power, norm_squared, rtol=1e-6, - err_msg="Parseval's theorem violated for rectangular array" + total_power, + norm_squared, + rtol=1e-6, + err_msg="Parseval's theorem violated for rectangular array", ) @@ -132,9 +133,9 @@ def test_returns_top_k(self): p = 16 K = 3 template = np.random.randn(p) - + top_freqs = topk_template_freqs_1d(template, K) - + assert len(top_freqs) == K, f"Expected {K} frequencies, got {len(top_freqs)}" def test_returns_sorted_by_power(self): @@ -142,13 +143,13 @@ def test_returns_sorted_by_power(self): p = 16 K = 5 template = np.random.randn(p) - + top_freqs = topk_template_freqs_1d(template, K) power, _ = get_power_1d(template) - + # Get powers for returned frequencies returned_powers = [power[f] for f in top_freqs] - + # Should be in descending order assert returned_powers == sorted(returned_powers, reverse=True) @@ -156,9 +157,9 @@ def test_empty_for_zero_signal(self): """Test that zero signal with high min_power returns empty list.""" p = 8 template = np.zeros(p) - + top_freqs = topk_template_freqs_1d(template, K=3, min_power=1e-10) - + assert top_freqs == [] def test_handles_k_larger_than_freqs(self): @@ -166,9 +167,9 @@ def test_handles_k_larger_than_freqs(self): p = 6 K = 10 # More than available frequencies template = np.random.randn(p) - + top_freqs = topk_template_freqs_1d(template, K) - + # Should return at most p//2 + 1 frequencies assert len(top_freqs) <= p // 2 + 1 @@ -181,9 +182,9 @@ def test_returns_top_k(self): p1, p2 = 8, 8 K = 3 template = np.random.randn(p1, p2) - + top_freqs = topk_template_freqs(template, K) - + assert len(top_freqs) == K, f"Expected {K} frequency pairs, got {len(top_freqs)}" def test_returns_tuples(self): @@ -191,9 +192,9 @@ def test_returns_tuples(self): p1, p2 = 8, 8 K = 3 template = np.random.randn(p1, p2) - + top_freqs = topk_template_freqs(template, K) - + for freq in top_freqs: assert isinstance(freq, tuple), f"Expected tuple, got {type(freq)}" assert len(freq) == 2, f"Expected 2-tuple, got {len(freq)}-tuple" @@ -202,7 +203,7 @@ def test_empty_for_zero_signal(self): """Test that zero signal returns empty list.""" p1, p2 = 6, 6 template = np.zeros((p1, p2)) - + top_freqs = topk_template_freqs(template, K=3, min_power=1e-10) - + assert top_freqs == [] From fcdb9c1dc97af6211d1d7e73cb7afdc5deded387 Mon Sep 17 00:00:00 2001 From: Nina Miolane Date: Fri, 6 Feb 2026 04:51:59 +0000 Subject: [PATCH 22/30] Test main files --- test/test_bal_main.py | 202 ++++++++++++++++++++++++++++++++++ test/test_default_config.py | 66 ++++++++++++ test/test_rnns_config.yaml | 38 +++++++ test/test_rnns_main.py | 208 ++++++++++++++++++++++++++++++++++++ 4 files changed, 514 insertions(+) create mode 100644 test/test_bal_main.py create mode 100644 test/test_default_config.py create mode 100644 test/test_rnns_config.yaml create mode 100644 test/test_rnns_main.py diff --git a/test/test_bal_main.py b/test/test_bal_main.py new file mode 100644 index 0000000..4dbf1bf --- /dev/null +++ b/test/test_bal_main.py @@ -0,0 +1,202 @@ +""" +Tests for group_agf/binary_action_learning/main.py + +This module tests that the main() entry point runs successfully with minimal +configuration. Tests are only run when MAIN_TEST_MODE=1 environment variable +is set to avoid long-running tests in regular CI. + +Expected runtime: < 1 minute with MAIN_TEST_MODE=1 + +Usage: + MAIN_TEST_MODE=1 pytest test/test_bal_main.py -v +""" + +import os +import sys +import tempfile +from pathlib import Path +from unittest.mock import MagicMock, patch + +import pytest + +# Check for MAIN_TEST_MODE +MAIN_TEST_MODE = os.environ.get("MAIN_TEST_MODE", "0") == "1" + +# Add test directory to path and register test_default_config BEFORE any imports +# that might trigger loading of group_agf.binary_action_learning.main +_test_dir = Path(__file__).parent +if str(_test_dir) not in sys.path: + sys.path.insert(0, str(_test_dir)) + +# Import and register test_default_config as 'default_config' in sys.modules +# This must happen before any import of group_agf.binary_action_learning.main +import test_default_config # noqa: E402 + +sys.modules["default_config"] = test_default_config + + +@pytest.fixture +def temp_save_dir(): + """Create a temporary directory for saving model outputs.""" + with tempfile.TemporaryDirectory() as tmpdir: + yield tmpdir + + +@pytest.fixture +def mock_wandb(): + """Mock wandb to avoid actual logging.""" + mock_run = MagicMock() + mock_run.id = "test_run_123" + mock_run.name = "test_run" + + mock_config = MagicMock() + + with patch("wandb.init") as mock_init, patch("wandb.config", mock_config), patch( + "wandb.run", mock_run + ), patch("wandb.log") as mock_log, patch("wandb.finish") as mock_finish, patch( + "wandb.Image" + ) as mock_image: + mock_init.return_value = mock_run + mock_image.return_value = MagicMock() + yield { + "init": mock_init, + "config": mock_config, + "run": mock_run, + "log": mock_log, + "finish": mock_finish, + "image": mock_image, + } + + +@pytest.fixture +def mock_plots(): + """Mock plot functions to skip visualization.""" + with patch("group_agf.binary_action_learning.plot.plot_loss_curve") as mock_loss, patch( + "group_agf.binary_action_learning.plot.plot_training_power_over_time" + ) as mock_power, patch( + "group_agf.binary_action_learning.plot.plot_neuron_weights" + ) as mock_weights, patch( + "group_agf.binary_action_learning.plot.plot_model_outputs" + ) as mock_outputs: + # Return mock figure objects + mock_fig = MagicMock() + mock_loss.return_value = mock_fig + mock_power.return_value = mock_fig + mock_weights.return_value = mock_fig + mock_outputs.return_value = mock_fig + yield { + "loss": mock_loss, + "power": mock_power, + "weights": mock_weights, + "outputs": mock_outputs, + } + + +@pytest.mark.skipif(not MAIN_TEST_MODE, reason="Only run with MAIN_TEST_MODE=1") +def test_main_run_cn_group(temp_save_dir, mock_wandb, mock_plots): + """ + Test main_run() with a minimal cyclic group (C5) configuration. + + This tests the core training pipeline without the full main() iteration. + """ + # Update test_default_config to use temp directory + test_default_config.model_save_dir = temp_save_dir + "/" + + from group_agf.binary_action_learning.main import main_run + + # Create minimal config for C5 group + config = { + "group_name": "cn", + "group_size": 5, + "group_n": 5, + "epochs": 2, + "batch_size": 32, + "hidden_factor": 2, + "init_scale": 1e-2, + "lr": 0.01, + "mom": 0.9, + "optimizer_name": "SGD", + "seed": 42, + "verbose_interval": 1, + "model_save_dir": temp_save_dir + "/", + "dataset_fraction": 1.0, + "powers": [0, 10, 5], + "fourier_coef_diag_values": [0, 10, 5], + "power_logscale": False, + "resume_from_checkpoint": False, + "checkpoint_interval": 1000, + "checkpoint_path": None, + "template_type": "one_hot", + "run_start_time": "test_run", + } + + # Run the training + main_run(config) + + # Verify wandb was called (at least once - may be called multiple times in some flows) + assert mock_wandb["init"].call_count >= 1 + assert mock_wandb["finish"].call_count >= 1 + + +@pytest.mark.skipif(not MAIN_TEST_MODE, reason="Only run with MAIN_TEST_MODE=1") +def test_main_entry_point(temp_save_dir, mock_wandb, mock_plots): + """ + Test the full main() entry point with mocked default_config. + + This tests what happens when you run `python main.py`. + """ + # Update model_save_dir in test_default_config to use temp directory + test_default_config.model_save_dir = temp_save_dir + "/" + + # Import the main module (default_config is already mocked at module level) + from group_agf.binary_action_learning.main import main + + # Run main() + main() + + # Verify wandb was called (at least once for the single config combination) + assert mock_wandb["init"].call_count >= 1 + assert mock_wandb["finish"].call_count >= 1 + + +@pytest.mark.skipif(not MAIN_TEST_MODE, reason="Only run with MAIN_TEST_MODE=1") +def test_main_run_with_adam_optimizer(temp_save_dir, mock_wandb, mock_plots): + """Test main_run() with Adam optimizer.""" + # Update test_default_config to use temp directory + test_default_config.model_save_dir = temp_save_dir + "/" + + from group_agf.binary_action_learning.main import main_run + + config = { + "group_name": "cn", + "group_size": 5, + "group_n": 5, + "epochs": 2, + "batch_size": 32, + "hidden_factor": 2, + "init_scale": 1e-2, + "lr": 0.001, + "mom": 0.9, + "optimizer_name": "Adam", + "seed": 42, + "verbose_interval": 1, + "model_save_dir": temp_save_dir + "/", + "dataset_fraction": 1.0, + "powers": [0, 10, 5], + "fourier_coef_diag_values": [0, 10, 5], + "power_logscale": False, + "resume_from_checkpoint": False, + "checkpoint_interval": 1000, + "checkpoint_path": None, + "template_type": "one_hot", + "run_start_time": "test_run", + } + + main_run(config) + + assert mock_wandb["init"].call_count >= 1 + assert mock_wandb["finish"].call_count >= 1 + + +if __name__ == "__main__": + pytest.main([__file__, "-v"]) diff --git a/test/test_default_config.py b/test/test_default_config.py new file mode 100644 index 0000000..b46bde4 --- /dev/null +++ b/test/test_default_config.py @@ -0,0 +1,66 @@ +""" +Minimal test configuration for binary_action_learning/main.py + +This module mimics the structure of group_agf/binary_action_learning/default_config.py +but with minimal values for fast testing. +""" + +# Dataset Parameters +group_name = "cn" +group_n = [5] # Small cyclic group C5 +template_type = "one_hot" + +powers = { + "cn": [[0, 10, 5]], # Single power configuration + "cnxcn": [[0, 10, 5]], + "dihedral": [[0, 5, 0]], + "octahedral": [[0, 10, 0, 0, 0]], + "A5": [[0, 10, 0, 0, 0]], +} + +# Model Parameters +hidden_factor = [2] # Small hidden size + +# Learning Parameters +seed = [42] +init_scale = { + "cn": [1e-2], + "cnxcn": [1e-2], + "dihedral": [1e-2], + "octahedral": [1e-3], + "A5": [1e-3], +} +lr = { + "cn": [0.01], + "cnxcn": [0.01], + "dihedral": [0.01], + "octahedral": [0.001], + "A5": [0.001], +} +mom = [0.9] +optimizer_name = ["SGD"] # Simple optimizer +epochs = [2] # Minimal epochs +verbose_interval = 1 +checkpoint_interval = 1000 +batch_size = [32] # Small batch size + +# Plotting parameters +power_logscale = False + +# Checkpoint settings +resume_from_checkpoint = False +checkpoint_epoch = 0 + +# cnxcn specific parameters +image_length = [3] # Small image for cnxcn + +dataset_fraction = { + "cn": 1.0, + "cnxcn": 1.0, + "dihedral": 1.0, + "octahedral": 1.0, + "A5": 1.0, +} + +# Use temp directory - will be overwritten in tests +model_save_dir = "/tmp/test_bal/" diff --git a/test/test_rnns_config.yaml b/test/test_rnns_config.yaml new file mode 100644 index 0000000..6c3ac4c --- /dev/null +++ b/test/test_rnns_config.yaml @@ -0,0 +1,38 @@ +# Minimal test configuration for gagf/rnns/main.py +# Used by test_rnns_main.py for fast testing + +data: + dimension: 1 + p: 5 + k: 2 + batch_size: 32 + seed: 42 + template_type: onehot + mode: sampled + num_samples: 100 + +model: + model_type: SequentialMLP + hidden_dim: 10 + init_scale: 0.01 + return_all_outputs: false + transform_type: quadratic + +training: + mode: offline + epochs: 2 + optimizer: adam + learning_rate: 0.001 + betas: [0.9, 0.999] + weight_decay: 0.0 + degree: null + scaling_factor: -3 + grad_clip: 0.1 + verbose_interval: 1 + save_param_interval: null + reduction_threshold: null + +device: cpu + +analysis: + checkpoints: [0.0, 1.0] diff --git a/test/test_rnns_main.py b/test/test_rnns_main.py new file mode 100644 index 0000000..e935f72 --- /dev/null +++ b/test/test_rnns_main.py @@ -0,0 +1,208 @@ +""" +Tests for gagf/rnns/main.py + +This module tests that the main() entry point runs successfully with minimal +configuration. Tests are only run when MAIN_TEST_MODE=1 environment variable +is set to avoid long-running tests in regular CI. + +Expected runtime: < 1 minute with MAIN_TEST_MODE=1 + +Usage: + MAIN_TEST_MODE=1 pytest test/test_rnns_main.py -v +""" + +import os +import tempfile +from pathlib import Path +from unittest.mock import patch + +import pytest + +# Check for MAIN_TEST_MODE +MAIN_TEST_MODE = os.environ.get("MAIN_TEST_MODE", "0") == "1" + + +@pytest.fixture +def temp_run_dir(): + """Create a temporary directory for run outputs.""" + with tempfile.TemporaryDirectory() as tmpdir: + yield Path(tmpdir) + + +@pytest.fixture +def test_config_path(): + """Return the path to the test config file.""" + return Path(__file__).parent / "test_rnns_config.yaml" + + +@pytest.fixture +def mock_plots(): + """Mock all plot functions to skip visualization.""" + with patch("gagf.rnns.main.produce_plots_1d") as mock_1d, patch( + "gagf.rnns.main.produce_plots_2d" + ) as mock_2d, patch("gagf.rnns.main.produce_plots_D3") as mock_d3, patch( + "matplotlib.pyplot.savefig" + ) as mock_savefig, patch("matplotlib.pyplot.close") as mock_close: + yield { + "produce_plots_1d": mock_1d, + "produce_plots_2d": mock_2d, + "produce_plots_D3": mock_d3, + "savefig": mock_savefig, + "close": mock_close, + } + + +@pytest.mark.skipif(not MAIN_TEST_MODE, reason="Only run with MAIN_TEST_MODE=1") +def test_main_with_config_file(temp_run_dir, test_config_path, mock_plots): + """ + Test main() by loading the test config file. + + This tests what happens when you run `python main.py --config test_rnns_config.yaml`. + """ + from gagf.rnns.main import load_config, main + + # Load the test config + config = load_config(str(test_config_path)) + + # Patch the setup_run_directory to use our temp directory + with patch("gagf.rnns.main.setup_run_directory") as mock_setup: + mock_setup.return_value = temp_run_dir + + # Run main + main(config) + + # Verify that plotting was skipped via mocking + # (we mock produce_plots_1d since we use dimension=1 in test config) + mock_plots["produce_plots_1d"].assert_called_once() + + +@pytest.mark.skipif(not MAIN_TEST_MODE, reason="Only run with MAIN_TEST_MODE=1") +def test_train_single_run_1d(temp_run_dir, mock_plots): + """ + Test train_single_run() directly with a minimal 1D config. + """ + from gagf.rnns.main import train_single_run + + # Create minimal config programmatically + config = { + "data": { + "dimension": 1, + "p": 5, + "k": 2, + "batch_size": 32, + "seed": 42, + "template_type": "onehot", + "mode": "sampled", + "num_samples": 100, + }, + "model": { + "model_type": "SequentialMLP", + "hidden_dim": 10, + "init_scale": 1e-2, + "return_all_outputs": False, + "transform_type": "quadratic", + }, + "training": { + "mode": "offline", + "epochs": 2, + "optimizer": "adam", + "learning_rate": 0.001, + "betas": [0.9, 0.999], + "weight_decay": 0.0, + "degree": None, + "scaling_factor": -3, + "grad_clip": 0.1, + "verbose_interval": 1, + "save_param_interval": None, + "reduction_threshold": None, + }, + "device": "cpu", + "analysis": { + "checkpoints": [0.0, 1.0], + }, + } + + # Run training + results = train_single_run(config, run_dir=temp_run_dir) + + # Verify results + assert "final_train_loss" in results + assert "final_val_loss" in results + assert "training_time" in results + assert results["final_train_loss"] > 0 + assert results["final_val_loss"] > 0 + + +@pytest.mark.skipif(not MAIN_TEST_MODE, reason="Only run with MAIN_TEST_MODE=1") +def test_train_single_run_with_quadratic_rnn(temp_run_dir, mock_plots): + """ + Test train_single_run() with QuadraticRNN model type. + """ + from gagf.rnns.main import train_single_run + + config = { + "data": { + "dimension": 1, + "p": 5, + "k": 2, + "batch_size": 32, + "seed": 42, + "template_type": "onehot", + "mode": "sampled", + "num_samples": 100, + }, + "model": { + "model_type": "QuadraticRNN", + "hidden_dim": 10, + "init_scale": 1e-2, + "return_all_outputs": False, + "transform_type": "quadratic", + }, + "training": { + "mode": "offline", + "epochs": 2, + "optimizer": "adam", + "learning_rate": 0.001, + "betas": [0.9, 0.999], + "weight_decay": 0.0, + "degree": None, + "scaling_factor": -3, + "grad_clip": 0.1, + "verbose_interval": 1, + "save_param_interval": None, + "reduction_threshold": None, + }, + "device": "cpu", + "analysis": { + "checkpoints": [0.0, 1.0], + }, + } + + results = train_single_run(config, run_dir=temp_run_dir) + + assert results["final_train_loss"] > 0 + assert results["final_val_loss"] > 0 + + +@pytest.mark.skipif(not MAIN_TEST_MODE, reason="Only run with MAIN_TEST_MODE=1") +def test_load_config(test_config_path): + """Test that load_config correctly loads the YAML file.""" + from gagf.rnns.main import load_config + + config = load_config(str(test_config_path)) + + # Verify expected keys exist + assert "data" in config + assert "model" in config + assert "training" in config + assert "device" in config + assert "analysis" in config + + # Verify some specific values from our test config + assert config["data"]["dimension"] == 1 + assert config["data"]["p"] == 5 + assert config["training"]["epochs"] == 2 + + +if __name__ == "__main__": + pytest.main([__file__, "-v"]) From 1f6bf2d35fb57c7c241d0ae4878d6aa3d8097b19 Mon Sep 17 00:00:00 2001 From: Nina Miolane Date: Fri, 6 Feb 2026 05:02:41 +0000 Subject: [PATCH 23/30] Both mains run with 2 epochs --- gagf/rnns/config.yaml | 2 +- group_agf/binary_action_learning/default_config.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/gagf/rnns/config.yaml b/gagf/rnns/config.yaml index 0dc554c..f13f51b 100644 --- a/gagf/rnns/config.yaml +++ b/gagf/rnns/config.yaml @@ -73,7 +73,7 @@ training: mode: offline # 'online' | 'offline' # Steps/Epochs - epochs: 10000 # Used when mode='offline' + epochs: 2 #10000 # Used when mode='offline' num_steps: 100 # Used when mode='online' # Optimizer diff --git a/group_agf/binary_action_learning/default_config.py b/group_agf/binary_action_learning/default_config.py index 4188c9a..25be107 100644 --- a/group_agf/binary_action_learning/default_config.py +++ b/group_agf/binary_action_learning/default_config.py @@ -40,7 +40,7 @@ mom = [0.9] optimizer_name = ["PerNeuronScaledSGD"] -epochs = [1000] # , 50000] +epochs = [2] # [1000] # , 50000] verbose_interval = 100 checkpoint_interval = 200000 batch_size = [128] # 128, 256] @@ -64,4 +64,4 @@ } # model_save_dir = "/tmp/nmiolane/" -model_save_dir = "/tmp/adele/" +model_save_dir = "/tmp/nmiolane/" From f07a0af23f3e3684ca9d091e5b085af322af7ce0 Mon Sep 17 00:00:00 2001 From: Nina Miolane Date: Fri, 6 Feb 2026 05:03:59 +0000 Subject: [PATCH 24/30] lint repo --- gagf/rnns/run_sweep.py | 26 ++++++++++++------------ gagf/rnns/train.py | 18 ++++++++-------- group_agf/binary_action_learning/main.py | 2 +- 3 files changed, 22 insertions(+), 24 deletions(-) diff --git a/gagf/rnns/run_sweep.py b/gagf/rnns/run_sweep.py index 6e54b7d..fe940d6 100644 --- a/gagf/rnns/run_sweep.py +++ b/gagf/rnns/run_sweep.py @@ -16,14 +16,14 @@ from concurrent.futures import ProcessPoolExecutor, as_completed from itertools import product from pathlib import Path -from typing import Any, Dict, List, Optional, Tuple +from typing import Any import numpy as np import torch import yaml -def deep_merge_dict(base: Dict, override: Dict) -> Dict: +def deep_merge_dict(base: dict, override: dict) -> dict: """Deep merge override dictionary into base dictionary.""" result = copy.deepcopy(base) for key, value in override.items(): @@ -34,7 +34,7 @@ def deep_merge_dict(base: Dict, override: Dict) -> Dict: return result -def load_sweep_config(sweep_file: str) -> Dict: +def load_sweep_config(sweep_file: str) -> dict: """Load sweep configuration with base config and experiments.""" if not os.path.exists(sweep_file): raise FileNotFoundError(f"Sweep file not found: {sweep_file}") @@ -54,7 +54,7 @@ def load_sweep_config(sweep_file: str) -> Dict: return sweep_config -def expand_parameter_grid(parameter_grid: Dict) -> List[Dict]: +def expand_parameter_grid(parameter_grid: dict) -> list[dict]: """ Expand a parameter grid specification into a list of parameter combinations. @@ -110,7 +110,7 @@ def unflatten_dict(d): return combinations -def generate_experiment_name(overrides: Dict) -> str: +def generate_experiment_name(overrides: dict) -> str: """ Generate a concise experiment name from parameter overrides. @@ -144,7 +144,7 @@ def extract_params(d, prefix=""): return "_".join(name_parts) -def generate_experiment_configs(sweep_config: Dict) -> List[Tuple[str, Dict]]: +def generate_experiment_configs(sweep_config: dict) -> list[tuple[str, dict]]: """ Generate all individual experiment configurations from sweep. @@ -203,7 +203,7 @@ def generate_experiment_configs(sweep_config: Dict) -> List[Tuple[str, Dict]]: def save_sweep_metadata( - sweep_dir: Path, sweep_config: Dict, experiment_configs: List[Tuple[str, Dict]] + sweep_dir: Path, sweep_config: dict, experiment_configs: list[tuple[str, dict]] ) -> None: """Save sweep metadata and configurations.""" @@ -235,8 +235,8 @@ def save_sweep_metadata( def run_single_seed( - exp_name: str, config: Dict, seed: int, sweep_dir: Path, gpu_id: Optional[int] = None -) -> Dict[str, Any]: + exp_name: str, config: dict, seed: int, sweep_dir: Path, gpu_id: int | None = None +) -> dict[str, Any]: """Run a single experiment seed (for multiprocessing). Args: @@ -319,8 +319,8 @@ def run_single_seed( def run_experiment( - exp_name: str, config: Dict, seeds: List[int], sweep_dir: Path, gpu_id: int = None -) -> List[Dict[str, Any]]: + exp_name: str, config: dict, seeds: list[int], sweep_dir: Path, gpu_id: int = None +) -> list[dict[str, Any]]: """Run a single experiment configuration with multiple seeds. This function is kept for backward compatibility. For multi-GPU sweeps, @@ -412,7 +412,7 @@ def run_experiment( return run_results -def generate_sweep_summary(sweep_dir: Path, all_results: Dict[str, List[Dict[str, Any]]]) -> None: +def generate_sweep_summary(sweep_dir: Path, all_results: dict[str, list[dict[str, Any]]]) -> None: """Generate overall sweep summary.""" # Aggregate statistics across all experiments @@ -501,7 +501,7 @@ def generate_sweep_summary(sweep_dir: Path, all_results: Dict[str, List[Dict[str def run_parameter_sweep( - sweep_file: str, gpu_ids: Optional[List[int]] = None, gpu_id: Optional[int] = None + sweep_file: str, gpu_ids: list[int] | None = None, gpu_id: int | None = None ): """Run full parameter sweep experiment. diff --git a/gagf/rnns/train.py b/gagf/rnns/train.py index 896f046..8a6b5d8 100644 --- a/gagf/rnns/train.py +++ b/gagf/rnns/train.py @@ -1,7 +1,5 @@ """Training function for Quadratic RNN with sequential inputs.""" -from typing import Optional - import torch import torch.optim as optim from torch import nn @@ -15,10 +13,10 @@ def train( optimizer: optim.Optimizer, epochs: int = 2000, verbose_interval: int = 100, - grad_clip: Optional[float] = None, - eval_dataloader: Optional[DataLoader] = None, - save_param_interval: Optional[int] = None, - reduction_threshold: Optional[float] = None, + grad_clip: float | None = None, + eval_dataloader: DataLoader | None = None, + save_param_interval: int | None = None, + reduction_threshold: float | None = None, ) -> tuple[list[float], list[float], list[dict[str, torch.Tensor]], list[int], int]: """ Train a model with sequential inputs (offline/epoch-based). @@ -146,10 +144,10 @@ def train_online( optimizer: optim.Optimizer, num_steps: int = 10000, verbose_interval: int = 100, - grad_clip: Optional[float] = None, - eval_dataloader: Optional[DataLoader] = None, - save_param_interval: Optional[int] = None, - reduction_threshold: Optional[float] = None, + grad_clip: float | None = None, + eval_dataloader: DataLoader | None = None, + save_param_interval: int | None = None, + reduction_threshold: float | None = None, ) -> tuple[list[float], list[float], list[dict[str, torch.Tensor]], list[int], int]: """ Train with online data generation (step-based instead of epoch-based). diff --git a/group_agf/binary_action_learning/main.py b/group_agf/binary_action_learning/main.py index cb16edc..65fc133 100644 --- a/group_agf/binary_action_learning/main.py +++ b/group_agf/binary_action_learning/main.py @@ -8,7 +8,6 @@ import torch import torch.nn as nn import torch.optim as optim -import wandb from escnn.group import * from torch.utils.data import DataLoader, TensorDataset @@ -17,6 +16,7 @@ import group_agf.binary_action_learning.plot as plot import group_agf.binary_action_learning.power as power import group_agf.binary_action_learning.train as train +import wandb from group_agf.binary_action_learning.optimizer import PerNeuronScaledSGD today = datetime.date.today() From 3ed21cab49cc9c1f0654fa89041d22ed01383496 Mon Sep 17 00:00:00 2001 From: Nina Miolane Date: Fri, 6 Feb 2026 05:08:32 +0000 Subject: [PATCH 25/30] accept notebooks changes --- notebooks/C_n.ipynb | 132 ++++++------- notebooks/modular_arithmetic.ipynb | 160 ++++++++-------- notebooks/rnn_gagf.ipynb | 242 +++++++++++------------ notebooks/seq_mlp.ipynb | 296 ++++++++++++++--------------- notebooks/seq_mlp_group_size.ipynb | 192 +++++++++---------- notebooks/znz_znz.ipynb | 96 +++++----- 6 files changed, 559 insertions(+), 559 deletions(-) diff --git a/notebooks/C_n.ipynb b/notebooks/C_n.ipynb index 3f88ae9..716eff7 100644 --- a/notebooks/C_n.ipynb +++ b/notebooks/C_n.ipynb @@ -2,15 +2,18 @@ "cells": [ { "cell_type": "markdown", + "id": "51d11caf-0971-4324-b63b-819b714a9c3c", "metadata": {}, "source": [ "# Binary Group Composition with $C_n$" - ], - "id": "51d11caf-0971-4324-b63b-819b714a9c3c" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "80f249f1-6985-4c73-86cd-04e1adac3e8d", "metadata": {}, + "outputs": [], "source": [ "import numpy as np\n", "import random\n", @@ -26,22 +29,22 @@ "from matplotlib.ticker import FormatStrFormatter\n", "from matplotlib.ticker import FuncFormatter\n", "from matplotlib.ticker import MaxNLocator" - ], - "execution_count": null, - "outputs": [], - "id": "80f249f1-6985-4c73-86cd-04e1adac3e8d" + ] }, { "cell_type": "markdown", + "id": "9fd05577-db56-4d0a-bb93-1d0b48cecaf6", "metadata": {}, "source": [ "## Dataset" - ], - "id": "9fd05577-db56-4d0a-bb93-1d0b48cecaf6" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "f19bd1ad-9e8f-4720-b317-afe13fafae88", "metadata": {}, + "outputs": [], "source": [ "def one_hot(p):\n", " \"\"\"One-hot encode an integer value in R^p.\"\"\"\n", @@ -93,22 +96,22 @@ " idx += 1\n", " \n", " return X, Y" - ], - "execution_count": null, - "outputs": [], - "id": "f19bd1ad-9e8f-4720-b317-afe13fafae88" + ] }, { "cell_type": "markdown", + "id": "7a0ecbbd-ceaf-4bef-af4a-13a22fa70063", "metadata": {}, "source": [ "## Architecture" - ], - "id": "7a0ecbbd-ceaf-4bef-af4a-13a22fa70063" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "2cf22b7d-49e7-445b-8742-2e75cd1fa55a", "metadata": {}, + "outputs": [], "source": [ "class TwoLayerNet(nn.Module):\n", " def __init__(self, p, hidden_size, nonlinearity='square', init_scale=1.0, output_scale=1.0):\n", @@ -155,22 +158,22 @@ " x_out *= self.output_scale\n", " \n", " return x_out" - ], - "execution_count": null, - "outputs": [], - "id": "2cf22b7d-49e7-445b-8742-2e75cd1fa55a" + ] }, { "cell_type": "markdown", + "id": "f7e7336b-5c6e-48af-a357-2b2c877f6168", "metadata": {}, "source": [ "## Optimization" - ], - "id": "f7e7336b-5c6e-48af-a357-2b2c877f6168" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "bc9ba87b-9607-4a4a-9b00-00c15adb2f5a", "metadata": {}, + "outputs": [], "source": [ "import torch\n", "from torch import nn\n", @@ -310,14 +313,14 @@ " raise ValueError(f\"PerNeuronScaledSGD: Unsupported model structure with {model_type}\")\n", " \n", " return None\n" - ], - "execution_count": null, - "outputs": [], - "id": "bc9ba87b-9607-4a4a-9b00-00c15adb2f5a" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "1035f81c-e877-4655-8640-4e4c3d323af8", "metadata": {}, + "outputs": [], "source": [ "def test_accuracy(model, dataloader):\n", " correct = 0\n", @@ -377,22 +380,22 @@ " print(f\"Epoch {epoch+1}/{epochs}, Loss: {avg_loss:.4f}, Accuracy: {accuracy:.2f}%\")\n", "\n", " return loss_history, accuracy_history, param_history # Return loss history for plotting" - ], - "execution_count": null, - "outputs": [], - "id": "1035f81c-e877-4655-8640-4e4c3d323af8" + ] }, { "cell_type": "markdown", + "id": "0e86c4f6-83a6-4465-abf0-7d104432cc9c", "metadata": {}, "source": [ "## Plotting functions" - ], - "id": "0e86c4f6-83a6-4465-abf0-7d104432cc9c" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "014e2d10-9550-4fd4-adb7-168a27fda1b3", "metadata": {}, + "outputs": [], "source": [ "def style_axes(ax, numyticks=5, numxticks=5, labelsize=24):\n", " # Y-axis ticks\n", @@ -421,14 +424,14 @@ " ax.spines[spine].set_visible(False)\n", " for spine in [\"left\", \"bottom\"]:\n", " ax.spines[spine].set_linewidth(3)" - ], - "execution_count": null, - "outputs": [], - "id": "014e2d10-9550-4fd4-adb7-168a27fda1b3" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "20989d96-f34f-4be7-a0f9-4b92fb7f235a", "metadata": {}, + "outputs": [], "source": [ "def get_power(points):\n", " p = len(points)\n", @@ -479,22 +482,22 @@ " ax.plot(xs, curr_val.real, color=color, alpha=alpha)\n", " else:\n", " ax.plot(np.arange(p), points, color=color, alpha=alpha) " - ], - "execution_count": null, - "outputs": [], - "id": "20989d96-f34f-4be7-a0f9-4b92fb7f235a" + ] }, { "cell_type": "markdown", + "id": "e99dae27-f8fe-403a-b70f-0bcaf818cbe7", "metadata": {}, "source": [ "## Gradient Descent Experiment" - ], - "id": "e99dae27-f8fe-403a-b70f-0bcaf818cbe7" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "bcd15c5a-5745-41ba-b015-48e403160c7e", "metadata": {}, + "outputs": [], "source": [ "seed = 0 # or any integer you like\n", "random.seed(seed)\n", @@ -545,22 +548,22 @@ "TEST_MODE = os.environ.get(\"NOTEBOOK_TEST_MODE\", \"0\") == \"1\"\n", "epochs = 2 if TEST_MODE else 50001\n", "loss_history, accuracy_history, param_history = train(model, dataloader, loss, optimizer, epochs=epochs, verbose_interval=max(1, epochs//10))" - ], - "execution_count": null, - "outputs": [], - "id": "bcd15c5a-5745-41ba-b015-48e403160c7e" + ] }, { "cell_type": "markdown", + "id": "0f48aebc-a439-405a-a057-3f5c24cca91a", "metadata": {}, "source": [ "## Plot Loss" - ], - "id": "0f48aebc-a439-405a-a057-3f5c24cca91a" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "ff46febe-abb5-459a-bb06-a18a26afb967", "metadata": {}, + "outputs": [], "source": [ "fig, ax = plt.subplots(1, 1, figsize=(8, 6))\n", "ax.plot(list(loss_history), lw=7)\n", @@ -589,22 +592,22 @@ "plt.savefig(\"loss-without-lines.pdf\", bbox_inches=\"tight\")\n", "plt.savefig(\"loss-without-lines.svg\", bbox_inches=\"tight\")\n", "plt.show()" - ], - "execution_count": null, - "outputs": [], - "id": "ff46febe-abb5-459a-bb06-a18a26afb967" + ] }, { "cell_type": "markdown", + "id": "40b851e7-6256-43cd-b9f3-aca38db04917", "metadata": {}, "source": [ "## Power Spectrum of output" - ], - "id": "40b851e7-6256-43cd-b9f3-aca38db04917" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "68b25ca9-6339-49dd-9d45-577a51798a25", "metadata": {}, + "outputs": [], "source": [ "# === SETTINGS ===\n", "p = Y_tensor.shape[1]\n", @@ -681,24 +684,24 @@ "plt.savefig(\"fourier_power_only.pdf\", bbox_inches=\"tight\")\n", "plt.savefig(\"fourier_power_only.svg\", bbox_inches=\"tight\")\n", "plt.show()" - ], - "execution_count": null, - "outputs": [], - "id": "68b25ca9-6339-49dd-9d45-577a51798a25" + ] }, { "cell_type": "markdown", + "id": "5ef2c971-d9f1-41e6-b8eb-4e467496ccfd", "metadata": {}, "source": [ "## Plot outputs" - ], - "id": "5ef2c971-d9f1-41e6-b8eb-4e467496ccfd" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "e333d1ab-1501-434f-86d2-82c10bb58f11", "metadata": { "scrolled": true }, + "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", @@ -766,18 +769,15 @@ "\n", "plt.tight_layout()\n", "fig2.savefig(\"template_fft_bar.pdf\", bbox_inches=\"tight\")" - ], - "execution_count": null, - "outputs": [], - "id": "e333d1ab-1501-434f-86d2-82c10bb58f11" + ] }, { "cell_type": "code", - "metadata": {}, - "source": [], "execution_count": null, + "id": "4ecb1adb-66ed-44a1-9b6a-ef5dcc6dbe11", + "metadata": {}, "outputs": [], - "id": "4ecb1adb-66ed-44a1-9b6a-ef5dcc6dbe11" + "source": [] } ], "metadata": { @@ -801,4 +801,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} \ No newline at end of file +} diff --git a/notebooks/modular_arithmetic.ipynb b/notebooks/modular_arithmetic.ipynb index f03fcf3..8f4f355 100644 --- a/notebooks/modular_arithmetic.ipynb +++ b/notebooks/modular_arithmetic.ipynb @@ -2,15 +2,18 @@ "cells": [ { "cell_type": "markdown", + "id": "51d11caf-0971-4324-b63b-819b714a9c3c", "metadata": {}, "source": [ "# Modular Addition" - ], - "id": "51d11caf-0971-4324-b63b-819b714a9c3c" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "80f249f1-6985-4c73-86cd-04e1adac3e8d", "metadata": {}, + "outputs": [], "source": [ "import numpy as np\n", "import random\n", @@ -26,22 +29,22 @@ "from matplotlib.ticker import FormatStrFormatter\n", "from matplotlib.ticker import FuncFormatter\n", "from matplotlib.ticker import MaxNLocator" - ], - "execution_count": null, - "outputs": [], - "id": "80f249f1-6985-4c73-86cd-04e1adac3e8d" + ] }, { "cell_type": "markdown", + "id": "9fd05577-db56-4d0a-bb93-1d0b48cecaf6", "metadata": {}, "source": [ "## Dataset" - ], - "id": "9fd05577-db56-4d0a-bb93-1d0b48cecaf6" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "f19bd1ad-9e8f-4720-b317-afe13fafae88", "metadata": {}, + "outputs": [], "source": [ "def one_hot(p):\n", " \"\"\"One-hot encode an integer value in R^p.\"\"\"\n", @@ -89,22 +92,22 @@ " idx += 1\n", " \n", " return X, Y" - ], - "execution_count": null, - "outputs": [], - "id": "f19bd1ad-9e8f-4720-b317-afe13fafae88" + ] }, { "cell_type": "markdown", + "id": "7a0ecbbd-ceaf-4bef-af4a-13a22fa70063", "metadata": {}, "source": [ "## Architecture" - ], - "id": "7a0ecbbd-ceaf-4bef-af4a-13a22fa70063" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "2cf22b7d-49e7-445b-8742-2e75cd1fa55a", "metadata": {}, + "outputs": [], "source": [ "class TwoLayerNet(nn.Module):\n", " def __init__(self, p, hidden_size, nonlinearity='square', init_scale=1.0, output_scale=1.0):\n", @@ -164,22 +167,22 @@ " print(f\"x_out after scaling with output_scale={self.output_scale}: shape {x_out.shape}\")\n", " \n", " return x_out" - ], - "execution_count": null, - "outputs": [], - "id": "2cf22b7d-49e7-445b-8742-2e75cd1fa55a" + ] }, { "cell_type": "markdown", + "id": "f7e7336b-5c6e-48af-a357-2b2c877f6168", "metadata": {}, "source": [ "## Optimization" - ], - "id": "f7e7336b-5c6e-48af-a357-2b2c877f6168" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "1035f81c-e877-4655-8640-4e4c3d323af8", "metadata": {}, + "outputs": [], "source": [ "def test_accuracy(model, dataloader):\n", " correct = 0\n", @@ -260,22 +263,22 @@ "\n", " print(\"Training loop finished.\")\n", " return loss_history, accuracy_history, param_history # Return loss history for plotting" - ], - "execution_count": null, - "outputs": [], - "id": "1035f81c-e877-4655-8640-4e4c3d323af8" + ] }, { "cell_type": "markdown", + "id": "0e86c4f6-83a6-4465-abf0-7d104432cc9c", "metadata": {}, "source": [ "## Plotting functions" - ], - "id": "0e86c4f6-83a6-4465-abf0-7d104432cc9c" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "014e2d10-9550-4fd4-adb7-168a27fda1b3", "metadata": {}, + "outputs": [], "source": [ "def style_axes(ax, numyticks=5, numxticks=5, labelsize=24):\n", " # Y-axis ticks\n", @@ -304,14 +307,14 @@ " ax.spines[spine].set_visible(False)\n", " for spine in [\"left\", \"bottom\"]:\n", " ax.spines[spine].set_linewidth(3)" - ], - "execution_count": null, - "outputs": [], - "id": "014e2d10-9550-4fd4-adb7-168a27fda1b3" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "20989d96-f34f-4be7-a0f9-4b92fb7f235a", "metadata": {}, + "outputs": [], "source": [ "def get_power(points):\n", " p = len(points)\n", @@ -362,22 +365,22 @@ " ax.plot(xs, curr_val.real, color=color, alpha=alpha)\n", " else:\n", " ax.plot(np.arange(p), points, color=color, alpha=alpha) " - ], - "execution_count": null, - "outputs": [], - "id": "20989d96-f34f-4be7-a0f9-4b92fb7f235a" + ] }, { "cell_type": "markdown", + "id": "e99dae27-f8fe-403a-b70f-0bcaf818cbe7", "metadata": {}, "source": [ "## Gradient Descent Experiment" - ], - "id": "e99dae27-f8fe-403a-b70f-0bcaf818cbe7" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "bcd15c5a-5745-41ba-b015-48e403160c7e", "metadata": {}, + "outputs": [], "source": [ "seed = 0 # or any integer you like\n", "random.seed(seed)\n", @@ -429,22 +432,22 @@ "TEST_MODE = os.environ.get(\"NOTEBOOK_TEST_MODE\", \"0\") == \"1\"\n", "epochs = 2 if TEST_MODE else 1000001\n", "loss_history, accuracy_history, param_history = train(model, dataloader, loss, optimizer, epochs=epochs, verbose_interval=max(1, epochs//100))" - ], - "execution_count": null, - "outputs": [], - "id": "bcd15c5a-5745-41ba-b015-48e403160c7e" + ] }, { "cell_type": "markdown", + "id": "eae371c4-1405-4ac5-982c-0ebacb688ed7", "metadata": {}, "source": [ "## AGF Numerics" - ], - "id": "eae371c4-1405-4ac5-982c-0ebacb688ed7" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "489e82e1-61c8-43e6-b260-fd96c815dec8", "metadata": {}, + "outputs": [], "source": [ "class ModsumSubNetwork(nn.Module):\n", " \n", @@ -621,36 +624,36 @@ " break\n", " \n", " return results" - ], - "execution_count": null, - "outputs": [], - "id": "489e82e1-61c8-43e6-b260-fd96c815dec8" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "5b3eddcc-8c3e-45dd-8f57-45585a021f5d", "metadata": {}, + "outputs": [], "source": [ "costmin_lr = 0.01\n", "utilmax_lr = 0.1\n", "results = train_agf(X_tensor, Y_tensor, init_sz=model.init_scale, agf_steps=50, from_init=param_history[0],\n", " utilmax_lr=utilmax_lr, costmin_lr=costmin_lr,\n", " costmin_maxiter=1e4, loss_thresh=1e-4)" - ], - "execution_count": null, - "outputs": [], - "id": "5b3eddcc-8c3e-45dd-8f57-45585a021f5d" + ] }, { "cell_type": "markdown", + "id": "0f48aebc-a439-405a-a057-3f5c24cca91a", "metadata": {}, "source": [ "## Plot Loss" - ], - "id": "0f48aebc-a439-405a-a057-3f5c24cca91a" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "ff46febe-abb5-459a-bb06-a18a26afb967", "metadata": {}, + "outputs": [], "source": [ "fig, ax = plt.subplots(1, 1, figsize=(6, 6))\n", "ax.plot(list(loss_history), lw=4)\n", @@ -690,22 +693,22 @@ "plt.tight_layout()\n", "plt.savefig(\"loss-without-lines.pdf\", bbox_inches=\"tight\")\n", "plt.show()" - ], - "execution_count": null, - "outputs": [], - "id": "ff46febe-abb5-459a-bb06-a18a26afb967" + ] }, { "cell_type": "markdown", + "id": "40b851e7-6256-43cd-b9f3-aca38db04917", "metadata": {}, "source": [ "## Power Spectrum of output" - ], - "id": "40b851e7-6256-43cd-b9f3-aca38db04917" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "68b25ca9-6339-49dd-9d45-577a51798a25", "metadata": {}, + "outputs": [], "source": [ "# === SETTINGS ===\n", "p = Y_tensor.shape[1]\n", @@ -820,22 +823,22 @@ "plt.tight_layout()\n", "plt.savefig(\"fourier_power_only.pdf\", bbox_inches=\"tight\")\n", "plt.show()" - ], - "execution_count": null, - "outputs": [], - "id": "68b25ca9-6339-49dd-9d45-577a51798a25" + ] }, { "cell_type": "markdown", + "id": "5ef2c971-d9f1-41e6-b8eb-4e467496ccfd", "metadata": {}, "source": [ "## Plot outputs" - ], - "id": "5ef2c971-d9f1-41e6-b8eb-4e467496ccfd" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "e333d1ab-1501-434f-86d2-82c10bb58f11", "metadata": {}, + "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "\n", @@ -895,22 +898,22 @@ "# axes[-1].set_xlabel(\"Output Index\", fontsize=20)\n", "plt.tight_layout()\n", "plt.savefig(\"predictions.pdf\", bbox_inches='tight')" - ], - "execution_count": null, - "outputs": [], - "id": "e333d1ab-1501-434f-86d2-82c10bb58f11" + ] }, { "cell_type": "markdown", + "id": "b267424b-a0e5-47e3-9e01-1dc41e05e026", "metadata": {}, "source": [ "## Plot Weights" - ], - "id": "b267424b-a0e5-47e3-9e01-1dc41e05e026" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "9de707bf-838e-4384-8150-3d8fe4586fc3", "metadata": {}, + "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", @@ -935,7 +938,7 @@ " if col == 2:\n", " ax = fig.add_subplot(gs[row, col], projection='polar')\n", " else:\n", - " ax = fig.add_subplot(gs[row, col]) # \u2b05 no sharex anymore\n", + " ax = fig.add_subplot(gs[row, col]) # ⬅ no sharex anymore\n", " axes[row, col] = ax\n", "\n", "num_freqs = None\n", @@ -1012,7 +1015,7 @@ " ax.plot([phase, phase], [0, norm], color=color, linewidth=2, alpha=alpha)\n", " ax.scatter(phase, norm, color=color, s=40, alpha=alpha)\n", " angles = np.arange(0, 360, 45)\n", - " # ax.set_thetagrids(angles, [f\"{a}\u00b0\" if a in [45,135,225,315] else \"\" for a in angles])\n", + " # ax.set_thetagrids(angles, [f\"{a}°\" if a in [45,135,225,315] else \"\" for a in angles])\n", " ax.set_thetagrids(angles, [\"\" for a in angles])\n", " ax.set_yticklabels([])\n", " ax.spines['polar'].set_linewidth(2)\n", @@ -1025,18 +1028,15 @@ " ax.set_position([pos.x0 - 0.155, pos.y0, pos.width, pos.height])\n", "\n", "plt.savefig(\"W-weights.pdf\", bbox_inches='tight')" - ], - "execution_count": null, - "outputs": [], - "id": "9de707bf-838e-4384-8150-3d8fe4586fc3" + ] }, { "cell_type": "code", - "metadata": {}, - "source": [], "execution_count": null, + "id": "9f5f56f9-7055-4056-9a18-7d91b3be50f8", + "metadata": {}, "outputs": [], - "id": "9f5f56f9-7055-4056-9a18-7d91b3be50f8" + "source": [] } ], "metadata": { @@ -1060,4 +1060,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} \ No newline at end of file +} diff --git a/notebooks/rnn_gagf.ipynb b/notebooks/rnn_gagf.ipynb index 14d7162..45bf545 100644 --- a/notebooks/rnn_gagf.ipynb +++ b/notebooks/rnn_gagf.ipynb @@ -2,7 +2,10 @@ "cells": [ { "cell_type": "code", + "execution_count": null, + "id": "af291059", "metadata": {}, + "outputs": [], "source": [ "import os\n", "import yaml\n", @@ -57,24 +60,24 @@ " print(f\"Warning: No summary file for {exp_name}\")\n", " \n", " return grid, std_grid\n" - ], - "execution_count": null, - "outputs": [], - "id": "af291059" + ] }, { "cell_type": "markdown", + "id": "c433cb4d", "metadata": {}, "source": [ "## 1D Analysis Functions\n", "\n", "Analyze individual 1D experiments from the sweep with detailed power spectrum and neuron specialization plots.\n" - ], - "id": "c433cb4d" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "95df6861", "metadata": {}, + "outputs": [], "source": [ "import torch\n", "import numpy as np\n", @@ -188,7 +191,7 @@ " show=True\n", " )\n", " \n", - " print(\"\\\\n \u2713 Analysis complete!\")\n", + " print(\"\\\\n ✓ Analysis complete!\")\n", " \n", " return {\n", " 'config': config,\n", @@ -200,30 +203,30 @@ "# Example usage:\n", "# sweep_dir = \"/home/facosta/group-agf/sweeps/sweep_mlp_scaling_20251202_XXXXXX\"\n", "# result = analyze_1d_experiment(sweep_dir, \"k3_h360\", seed=0)\n" - ], - "execution_count": null, - "outputs": [], - "id": "95df6861" + ] }, { "cell_type": "markdown", + "id": "7bc3db90", "metadata": {}, "source": [ "# Analyze RNNs trained on GAGF sequential task" - ], - "id": "7bc3db90" + ] }, { "cell_type": "markdown", + "id": "11fb7c9b", "metadata": {}, "source": [ "## Set up" - ], - "id": "11fb7c9b" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "43581ce4", "metadata": {}, + "outputs": [], "source": [ "# autoreload\n", "%load_ext autoreload\n", @@ -245,30 +248,30 @@ "if gitroot_path not in sys.path:\n", " sys.path.insert(0, gitroot_path)\n", "print(\"Directory added to path: \", gitroot_path)" - ], - "execution_count": null, - "outputs": [], - "id": "43581ce4" + ] }, { "cell_type": "markdown", + "id": "f0407a17", "metadata": {}, "source": [ "## Sequence-to-sequence sweep across different values of k (sequence length)" - ], - "id": "f0407a17" + ] }, { "cell_type": "markdown", + "id": "070e8c55", "metadata": {}, "source": [ "### Loss curves" - ], - "id": "070e8c55" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "cf050abb", "metadata": {}, + "outputs": [], "source": [ "import os\n", "import numpy as np\n", @@ -383,14 +386,14 @@ " outliers_found = True\n", "\n", " return cleaned, outliers_found" - ], - "execution_count": null, - "outputs": [], - "id": "cf050abb" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "6b5653c8", "metadata": {}, + "outputs": [], "source": [ "# Set up your sweep directory\n", "sweep_dir = \"/home/facosta/group-agf/sweeps/seq_seq_sweep_20251113_120513\"\n", @@ -401,14 +404,14 @@ "\n", "# Load losses for all experiments\n", "all_losses = load_all_sweep_losses(sweep_dir)" - ], - "execution_count": null, - "outputs": [], - "id": "6b5653c8" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "fa6b246a", "metadata": {}, + "outputs": [], "source": [ "def plot_loss_comparison(\n", " sweep_dir: str,\n", @@ -569,28 +572,28 @@ " plt.show()\n", "\n", " return fig, ax, theory_levels" - ], - "execution_count": null, - "outputs": [], - "id": "fa6b246a" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "a8e3f5e3", "metadata": {}, + "outputs": [], "source": [ "template_path = os.path.join(sweep_dir, \"k_2_seqseq\", \"seed_0\", \"template.npy\")\n", "template_2d = np.load(template_path)\n", "p1, p2 = template_2d.shape\n", "\n", "plt.imshow(template_2d)" - ], - "execution_count": null, - "outputs": [], - "id": "a8e3f5e3" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "dd4bf1a8", "metadata": {}, + "outputs": [], "source": [ "# First, load the template from one of your experiments\n", "# (assuming they all use the same template)\n", @@ -614,22 +617,22 @@ "print(\"Theory plateau levels:\")\n", "for i, level in enumerate(theory_levels):\n", " print(f\" Plateau {i}: {level:.6e}\")" - ], - "execution_count": null, - "outputs": [], - "id": "dd4bf1a8" + ] }, { "cell_type": "markdown", + "id": "ead6933c", "metadata": {}, "source": [ "### Time to reach plateau" - ], - "id": "ead6933c" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "4e1d02b4", "metadata": {}, + "outputs": [], "source": [ "def calculate_time_to_plateau(\n", " sweep_dir: str,\n", @@ -802,14 +805,14 @@ " plt.show()\n", "\n", " return fig, ax, times, theory_levels" - ], - "execution_count": null, - "outputs": [], - "id": "4e1d02b4" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "b5b266d4", "metadata": {}, + "outputs": [], "source": [ "def plot_time_to_plateau(\n", " sweep_dir: str,\n", @@ -958,14 +961,14 @@ " plt.show()\n", "\n", " return fig, ax, times, theory_levels" - ], - "execution_count": null, - "outputs": [], - "id": "b5b266d4" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "b015323f", "metadata": {}, + "outputs": [], "source": [ "# Load template\n", "template_path = os.path.join(sweep_dir, \"k_2_seqseq\", \"seed_0\", \"template.npy\")\n", @@ -976,14 +979,14 @@ "times_dict, theory_levels = calculate_time_to_plateau(\n", " sweep_dir, template_2d, p1, p2, target_plateau_idx=1\n", ")" - ], - "execution_count": null, - "outputs": [], - "id": "b015323f" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "eb63ea4a", "metadata": {}, + "outputs": [], "source": [ "# Plot time to first drop (plateau index 1)\n", "fig, ax, times, levels = plot_time_to_plateau(\n", @@ -1031,31 +1034,31 @@ " cmap=\"viridis\",\n", " sort_by=\"name\",\n", ");" - ], - "execution_count": null, - "outputs": [], - "id": "eb63ea4a" + ] }, { "cell_type": "markdown", + "id": "5536cdb2", "metadata": {}, "source": [ "## Sequence-to-one sweep across different values of k (sequence length)" - ], - "id": "5536cdb2" + ] }, { "cell_type": "markdown", + "id": "063d9df4", "metadata": {}, "source": [ "- 1st sweep dir: \"/home/facosta/group-agf/sweeps/optim_sweep_20251113_001549\" (k=4, 5)\n", "- 2nd sweep dir: \"/home/facosta/group-agf/sweeps/optim_sweep_20251113_145528\" (k=2, 3)" - ], - "id": "063d9df4" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "d96f443e", "metadata": {}, + "outputs": [], "source": [ "def load_losses_from_multiple_sweeps(\n", " sweep_experiments: Dict[str, List[str]], loss_type: str = \"train\", seed: int = 0\n", @@ -1282,14 +1285,14 @@ " plt.show()\n", "\n", " return fig, ax, theory_levels" - ], - "execution_count": null, - "outputs": [], - "id": "d96f443e" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "9ac8e706", "metadata": {}, + "outputs": [], "source": [ "# Define which experiments from which sweeps\n", "sweep_experiments = {\n", @@ -1337,14 +1340,14 @@ "\n", "# Print extracted values to verify\n", "print(\"Extracted k values:\", k_values)" - ], - "execution_count": null, - "outputs": [], - "id": "9ac8e706" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "1019938c", "metadata": {}, + "outputs": [], "source": [ "def calculate_time_to_plateau_multi_sweep(\n", " sweep_experiments: Dict[str, List[str]],\n", @@ -1573,14 +1576,14 @@ " plt.show()\n", "\n", " return fig, ax, times, theory_levels" - ], - "execution_count": null, - "outputs": [], - "id": "1019938c" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "84c284b1", "metadata": {}, + "outputs": [], "source": [ "# Define your experiments across multiple sweeps\n", "sweep_experiments = {\n", @@ -1623,22 +1626,22 @@ " sort_by=\"name\", # or 'time'\n", " show_not_reached=True, # Show experiments that didn't reach plateau\n", ")" - ], - "execution_count": null, - "outputs": [], - "id": "84c284b1" + ] }, { "cell_type": "markdown", + "id": "78bfc515", "metadata": {}, "source": [ "## Batch size sweep (seq-to-one, k=3)" - ], - "id": "78bfc515" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "ac01c062", "metadata": {}, + "outputs": [], "source": [ "import yaml\n", "\n", @@ -1745,14 +1748,14 @@ " scalar_map = plt.cm.ScalarMappable(norm=norm, cmap=colormap)\n", "\n", " return color_mapping, scalar_map, param_values" - ], - "execution_count": null, - "outputs": [], - "id": "ac01c062" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "b2da02fb", "metadata": {}, + "outputs": [], "source": [ "def plot_loss_comparison(\n", " sweep_dir: str,\n", @@ -1898,14 +1901,14 @@ " plt.show()\n", "\n", " return fig, ax, theory_levels" - ], - "execution_count": null, - "outputs": [], - "id": "b2da02fb" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "8b2ce522", "metadata": {}, + "outputs": [], "source": [ "# Set up your sweep directory\n", "batch_sweep_dir = \"/home/facosta/group-agf/sweeps/batch_sweep_20251113_171834\"\n", @@ -1916,14 +1919,14 @@ "\n", "# Load losses for all experiments\n", "batch_all_losses = load_all_sweep_losses(batch_sweep_dir)" - ], - "execution_count": null, - "outputs": [], - "id": "8b2ce522" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "520500f3", "metadata": {}, + "outputs": [], "source": [ "# First, load the template from one of your experiments\n", "# (assuming they all use the same template)\n", @@ -1932,14 +1935,14 @@ "p1, p2 = template_2d.shape\n", "\n", "plt.imshow(template_2d)" - ], - "execution_count": null, - "outputs": [], - "id": "520500f3" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "b9761849", "metadata": {}, + "outputs": [], "source": [ "# Example 1: Color by batch_size\n", "color_map, scalar_map, batch_values = create_color_mapping(\n", @@ -1970,13 +1973,11 @@ "print(\"Theory plateau levels:\")\n", "for i, level in enumerate(theory_levels):\n", " print(f\" Plateau {i}: {level:.6e}\")" - ], - "execution_count": null, - "outputs": [], - "id": "b9761849" + ] }, { "cell_type": "markdown", + "id": "7acdd373", "metadata": {}, "source": [ "## MLP Scaling Sweep Heatmap\n", @@ -1987,15 +1988,17 @@ "- Model: SequentialMLP\n", "- Dimension: 1, p = 10\n", "- k values: 2, 3, 4, 5, 6 (5 values)\n", - "- hidden_dim values: 60, 360, 2160, 12960, 77760 (5 values = 10\u00d76\u00b9 through 10\u00d76\u2075)\n", - "- num_steps varies with k: k=2\u219250k, k=3\u2192100k, k=4\u2192150k, k=5\u2192200k, k=6\u2192250k\n", - "- Total: 25 experiments \u00d7 3 seeds = 75 runs" - ], - "id": "7acdd373" + "- hidden_dim values: 60, 360, 2160, 12960, 77760 (5 values = 10×6¹ through 10×6⁵)\n", + "- num_steps varies with k: k=2→50k, k=3→100k, k=4→150k, k=5→200k, k=6→250k\n", + "- Total: 25 experiments × 3 seeds = 75 runs" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "92d3289e", "metadata": {}, + "outputs": [], "source": [ "def plot_scaling_heatmap(\n", " sweep_dir: str,\n", @@ -2038,12 +2041,12 @@ " ax.set_ylabel('Hidden Dimension (width)', fontsize=14)\n", " title = 'Final Train Loss: SequentialMLP Scaling'\n", " if use_log_scale:\n", - " title += ' (log\u2081\u2080)'\n", + " title += ' (log₁₀)'\n", " ax.set_title(title, fontsize=16, pad=20)\n", " \n", " # Add colorbar\n", " cbar = plt.colorbar(im, ax=ax)\n", - " cbar_label = 'log\u2081\u2080(Train Loss)' if use_log_scale else 'Train Loss'\n", + " cbar_label = 'log₁₀(Train Loss)' if use_log_scale else 'Train Loss'\n", " cbar.set_label(cbar_label, fontsize=12)\n", " \n", " # Add text annotations\n", @@ -2066,26 +2069,23 @@ " plt.show()\n", " \n", " return grid" - ], - "execution_count": null, - "outputs": [], - "id": "92d3289e" + ] }, { "cell_type": "code", - "metadata": {}, - "source": [], "execution_count": null, + "id": "2e5c22df", + "metadata": {}, "outputs": [], - "id": "2e5c22df" + "source": [] }, { "cell_type": "code", - "metadata": {}, - "source": [], "execution_count": null, + "id": "b10c9d83", + "metadata": {}, "outputs": [], - "id": "b10c9d83" + "source": [] } ], "metadata": { @@ -2109,4 +2109,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} \ No newline at end of file +} diff --git a/notebooks/seq_mlp.ipynb b/notebooks/seq_mlp.ipynb index b99fb65..9030713 100644 --- a/notebooks/seq_mlp.ipynb +++ b/notebooks/seq_mlp.ipynb @@ -2,25 +2,28 @@ "cells": [ { "cell_type": "markdown", + "id": "4265f1a8", "metadata": {}, "source": [ "# MLP Scaling: $H$ vs $k$\n", "\n", "Hidden neurons vs sequence length scaling experiments." - ], - "id": "4265f1a8" + ] }, { "cell_type": "markdown", + "id": "5a05ce99", "metadata": {}, "source": [ "## Set up" - ], - "id": "5a05ce99" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "5cfe1142", "metadata": {}, + "outputs": [], "source": [ "# autoreload\n", "%load_ext autoreload\n", @@ -47,41 +50,41 @@ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from pathlib import Path" - ], - "execution_count": null, - "outputs": [], - "id": "5cfe1142" + ] }, { "cell_type": "markdown", + "id": "15a42140", "metadata": {}, "source": [ "## Specify experiment directory" - ], - "id": "15a42140" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "2ebd6750", "metadata": {}, + "outputs": [], "source": [ "sweep_dir = \"/data/facosta/sweeps/sweep_mlp_scaling_20251212_161329\"\n", "os.path.exists(sweep_dir)" - ], - "execution_count": null, - "outputs": [], - "id": "2ebd6750" + ] }, { "cell_type": "markdown", + "id": "cb3acce2", "metadata": {}, "source": [ "### Final Loss Heatmap" - ], - "id": "cb3acce2" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "af291059", "metadata": {}, + "outputs": [], "source": [ "def load_sweep_results_grid(sweep_dir: str, k_values: list, hidden_dims: list):\n", " \"\"\"\n", @@ -129,14 +132,14 @@ " print(f\"Warning: No summary file for {exp_name}\")\n", "\n", " return grid, std_grid" - ], - "execution_count": null, - "outputs": [], - "id": "af291059" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "54e321b2", "metadata": {}, + "outputs": [], "source": [ "k_values = [2, 3, 4, 5, 6, 7, 8]\n", "\n", @@ -144,14 +147,14 @@ "hidden_dims = [6, 6**2, 6**3, 6**4, 6**5, 6**6]\n", "\n", "grid, _ = load_sweep_results_grid(sweep_dir, k_values, hidden_dims)" - ], - "execution_count": null, - "outputs": [], - "id": "54e321b2" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "2f62021a", "metadata": {}, + "outputs": [], "source": [ "plt.figure(figsize=(8, 6))\n", "plt.imshow(grid, aspect=\"auto\", norm=None)\n", @@ -170,22 +173,22 @@ "\n", "plt.colorbar(label=\"Final Train Loss\")\n", "plt.show()" - ], - "execution_count": null, - "outputs": [], - "id": "2f62021a" + ] }, { "cell_type": "markdown", + "id": "fbcf4b02", "metadata": {}, "source": [ "### Loss Curve Integral Heatmap" - ], - "id": "fbcf4b02" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "4bb980bb", "metadata": {}, + "outputs": [], "source": [ "def load_sweep_results_grid_integral(sweep_dir: str, k_values: list, hidden_dims: list):\n", " \"\"\"\n", @@ -223,14 +226,14 @@ " std_grid[i, j] = np.std(integrals) if len(integrals) > 1 else 0.0\n", "\n", " return grid, std_grid" - ], - "execution_count": null, - "outputs": [], - "id": "4bb980bb" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "8e5017cd", "metadata": {}, + "outputs": [], "source": [ "integral_grid, integral_std = load_sweep_results_grid_integral(\n", " sweep_dir, k_values, hidden_dims\n", @@ -249,22 +252,22 @@ "plt.colorbar(label=\"Loss Curve Integral\")\n", "plt.title(\"Loss Curve Integral\")\n", "plt.show()" - ], - "execution_count": null, - "outputs": [], - "id": "8e5017cd" + ] }, { "cell_type": "markdown", + "id": "6b9956cf", "metadata": {}, "source": [ "### Steps to Convergence Heatmap" - ], - "id": "6b9956cf" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "4bf3dbcc", "metadata": {}, + "outputs": [], "source": [ "def load_sweep_results_grid_convergence(\n", " sweep_dir: str, k_values: list, hidden_dims: list, reduction_threshold: float = 0.99\n", @@ -327,14 +330,14 @@ " # else: No seeds converged - grid[i,j] remains NaN (blacked out)\n", "\n", " return grid, std_grid" - ], - "execution_count": null, - "outputs": [], - "id": "4bf3dbcc" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "6b083a66", "metadata": {}, + "outputs": [], "source": [ "reduction_threshold = 0.6\n", "conv_grid, conv_std = load_sweep_results_grid_convergence(\n", @@ -374,14 +377,14 @@ "plt.title(f\"Steps to {reduction_threshold*100}% Convergence (black = did not converge)\")\n", "plt.tight_layout() # Adjust layout to prevent clipping\n", "plt.show()" - ], - "execution_count": null, - "outputs": [], - "id": "6b083a66" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "130132a9", "metadata": {}, + "outputs": [], "source": [ "def load_sweep_results_grid_spikiness(\n", " sweep_dir: str,\n", @@ -425,14 +428,14 @@ " std_grid[i, j] = np.std(frac_upwards) if len(frac_upwards) > 1 else 0.0\n", "\n", " return grid, std_grid" - ], - "execution_count": null, - "outputs": [], - "id": "130132a9" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "4fba73d0", "metadata": {}, + "outputs": [], "source": [ "# Load both convergence and spikiness data\n", "reduction_threshold = 0.6 # Adjust as needed\n", @@ -500,14 +503,14 @@ " f\"Did not converge (black): {n_not_converged} ({100*n_not_converged/conv_grid.size:.1f}%)\"\n", ")\n", "print(f\"{'='*60}\\n\")" - ], - "execution_count": null, - "outputs": [], - "id": "4fba73d0" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "7a228687", "metadata": {}, + "outputs": [], "source": [ "stability_grid, stability_std = load_sweep_results_grid_spikiness(\n", " sweep_dir, k_values, hidden_dims\n", @@ -553,14 +556,14 @@ "\n", "plt.tight_layout()\n", "plt.show()" - ], - "execution_count": null, - "outputs": [], - "id": "7a228687" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "5eb6bb45", "metadata": {}, + "outputs": [], "source": [ "# Load both metrics\n", "reduction_threshold = 0.6\n", @@ -652,14 +655,14 @@ "print(f\"Total converged: {n_converged_total}\")\n", "print(f\"Percentage: {100*n_converged_spiky/n_converged_total:.1f}%\")\n", "print(f\"{'='*60}\\n\")" - ], - "execution_count": null, - "outputs": [], - "id": "5eb6bb45" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "c7b2bf5c", "metadata": {}, + "outputs": [], "source": [ "# Load both metrics\n", "reduction_threshold = 0.6\n", @@ -796,25 +799,25 @@ " f\"Smooth converged (color): {n_converged_smooth:3d} ({100*n_converged_smooth/total:.1f}%)\"\n", ")\n", "print(f\"{'='*60}\\n\")" - ], - "execution_count": null, - "outputs": [], - "id": "c7b2bf5c" + ] }, { "cell_type": "markdown", + "id": "2f5cbbf5", "metadata": {}, "source": [ "### Curve plot: Convergence steps vs Sequence Length $k$ for different hidden dimensions\n", "- x-axis: sequence length $k$\n", "- y-axis: number of steps to convergence\n", "- different curves for different hidden dimensions" - ], - "id": "2f5cbbf5" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "adddc2c6", "metadata": {}, + "outputs": [], "source": [ "def plot_convergence_vs_k(\n", " conv_grid,\n", @@ -918,25 +921,25 @@ " log_y=True,\n", " reduction_threshold=reduction_threshold,\n", ")" - ], - "execution_count": null, - "outputs": [], - "id": "adddc2c6" + ] }, { "cell_type": "markdown", + "id": "3e814b11", "metadata": {}, "source": [ "### Curve plot : Normalized Convergence Steps vs Sequence Length for different hidden dimensions\n", "- x-axis: sequence length\n", "- y-axis: normalized convergence steps ($\\text{steps} / |G|^k$)\n", "- different curves for different hidden dimensions $H$" - ], - "id": "3e814b11" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "e116a0e1", "metadata": {}, + "outputs": [], "source": [ "def plot_convergence_vs_k_normalized(\n", " conv_grid,\n", @@ -1061,25 +1064,25 @@ " log_y=True,\n", " reduction_threshold=reduction_threshold,\n", ")" - ], - "execution_count": null, - "outputs": [], - "id": "e116a0e1" + ] }, { "cell_type": "markdown", + "id": "e0f758af", "metadata": {}, "source": [ "### Curve plot: Loss vs Training Steps for different sequence lengths, fixed hidden dimension\n", "- x-axis: # training steps\n", "- y-axis: training loss\n", "- different curves for different sequence lengths" - ], - "id": "e0f758af" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "7e809783", "metadata": {}, + "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", @@ -1169,14 +1172,14 @@ " log_x=True,\n", " log_y=True,\n", ")" - ], - "execution_count": null, - "outputs": [], - "id": "7e809783" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "e5cd8b97", "metadata": {}, + "outputs": [], "source": [ "def compute_spikiness_metrics_upward_only(loss_history):\n", " \"\"\"\n", @@ -1363,14 +1366,14 @@ " log_x=True,\n", " log_y=True,\n", ")" - ], - "execution_count": null, - "outputs": [], - "id": "e5cd8b97" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "bd0b5026", "metadata": {}, + "outputs": [], "source": [ "def load_sweep_results_grid_spikiness(\n", " sweep_dir: str,\n", @@ -1414,14 +1417,14 @@ " std_grid[i, j] = np.std(frac_upwards) if len(frac_upwards) > 1 else 0.0\n", "\n", " return grid, std_grid" - ], - "execution_count": null, - "outputs": [], - "id": "bd0b5026" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "6d858f63", "metadata": {}, + "outputs": [], "source": [ "# Compute stability grid\n", "stability_grid, stability_std = load_sweep_results_grid_spikiness(\n", @@ -1441,22 +1444,22 @@ "plt.title(\"Training Spikiness\")\n", "plt.tight_layout()\n", "plt.show()" - ], - "execution_count": null, - "outputs": [], - "id": "6d858f63" + ] }, { "cell_type": "markdown", + "id": "298e758e", "metadata": {}, "source": [ "# Varying group size (num frequencies)" - ], - "id": "298e758e" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "74cd5103", "metadata": {}, + "outputs": [], "source": [ "def load_sweep_results_grid_convergence_3d(\n", " sweep_dir: str,\n", @@ -1527,22 +1530,22 @@ " # else: No seeds converged - grid[i,j] remains NaN (blacked out)\n", "\n", " return grid, std_grid" - ], - "execution_count": null, - "outputs": [], - "id": "74cd5103" + ] }, { "cell_type": "markdown", + "id": "418d1ac0", "metadata": {}, "source": [ "## num_freq = 2" - ], - "id": "418d1ac0" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "01cf6f19", "metadata": {}, + "outputs": [], "source": [ "# Example using the new 3D sweep (k, h, f)\n", "new_sweep_dir = \"/home/facosta/group-agf/sweeps/sweep_mlp_scaling_20251212_172318\"\n", @@ -1577,22 +1580,22 @@ "plt.colorbar(label=f\"Steps to {reduction_threshold*100}% Convergence\")\n", "plt.title(f\"Steps to Convergence (f={num_frequencies}, black = did not converge)\")\n", "plt.show()" - ], - "execution_count": null, - "outputs": [], - "id": "01cf6f19" + ] }, { "cell_type": "markdown", + "id": "ec9b06b2", "metadata": {}, "source": [ "## num_freq = 3" - ], - "id": "ec9b06b2" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "32e86647", "metadata": {}, + "outputs": [], "source": [ "# Example using the new 3D sweep (k, h, f)\n", "new_sweep_dir = \"/home/facosta/group-agf/sweeps/sweep_mlp_scaling_20251212_172318\"\n", @@ -1627,22 +1630,22 @@ "plt.colorbar(label=f\"Steps to {reduction_threshold*100}% Convergence\")\n", "plt.title(f\"Steps to Convergence (f={num_frequencies}, black = did not converge)\")\n", "plt.show()" - ], - "execution_count": null, - "outputs": [], - "id": "32e86647" + ] }, { "cell_type": "markdown", + "id": "44a4e9c7", "metadata": {}, "source": [ "## num_freq = 4" - ], - "id": "44a4e9c7" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "e77f1a4e", "metadata": {}, + "outputs": [], "source": [ "# Example using the new 3D sweep (k, h, f)\n", "new_sweep_dir = \"/home/facosta/group-agf/sweeps/sweep_mlp_scaling_20251212_172318\"\n", @@ -1677,22 +1680,22 @@ "plt.colorbar(label=f\"Steps to {reduction_threshold*100}% Convergence\")\n", "plt.title(f\"Steps to Convergence (f={num_frequencies}, black = did not converge)\")\n", "plt.show()" - ], - "execution_count": null, - "outputs": [], - "id": "e77f1a4e" + ] }, { "cell_type": "markdown", + "id": "aa9ae86c", "metadata": {}, "source": [ "## num_freq = 5" - ], - "id": "aa9ae86c" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "0ce18ab9", "metadata": {}, + "outputs": [], "source": [ "# Example using the new 3D sweep (k, h, f)\n", "new_sweep_dir = \"/home/facosta/group-agf/sweeps/sweep_mlp_scaling_20251212_172318\"\n", @@ -1727,22 +1730,22 @@ "plt.colorbar(label=f\"Steps to {reduction_threshold*100}% Convergence\")\n", "plt.title(f\"Steps to Convergence (f={num_frequencies}, black = did not converge)\")\n", "plt.show()" - ], - "execution_count": null, - "outputs": [], - "id": "0ce18ab9" + ] }, { "cell_type": "markdown", + "id": "f8585f79", "metadata": {}, "source": [ "### Grid plot: Convergence vs k for different num_frequencies, across different hidden dimensions\n" - ], - "id": "f8585f79" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "97c43fc0", "metadata": {}, + "outputs": [], "source": [ "def plot_convergence_vs_k_grid_by_frequency(\n", " sweep_dir: str,\n", @@ -1887,14 +1890,14 @@ " plt.close()\n", "\n", " return fig, axes" - ], - "execution_count": null, - "outputs": [], - "id": "97c43fc0" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "acd00a0a", "metadata": {}, + "outputs": [], "source": [ "# Example usage: Create grid plot\n", "new_sweep_dir = \"/home/facosta/group-agf/sweeps/sweep_mlp_scaling_20251212_172318\"\n", @@ -1915,22 +1918,22 @@ " save_path=None,\n", " show=True,\n", ")" - ], - "execution_count": null, - "outputs": [], - "id": "acd00a0a" + ] }, { "cell_type": "markdown", + "id": "85c094f2", "metadata": {}, "source": [ "## p=2 experiments" - ], - "id": "85c094f2" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "3a80c6fc", "metadata": {}, + "outputs": [], "source": [ "# Define sweep directory and parameters\n", "sweep_dir = \"/home/facosta/group-agf/sweeps/p2_scaling_sweep_20251215_205347\"\n", @@ -2033,18 +2036,15 @@ "print(f\"Did not converge: {n_not_converged:3d} ({100*n_not_converged/total:.1f}%)\")\n", "print(f\"Total experiments: {total:3d}\")\n", "print(f\"{'='*60}\\n\")" - ], - "execution_count": null, - "outputs": [], - "id": "3a80c6fc" + ] }, { "cell_type": "code", - "metadata": {}, - "source": [], "execution_count": null, + "id": "b1e10a36", + "metadata": {}, "outputs": [], - "id": "b1e10a36" + "source": [] } ], "metadata": { @@ -2068,4 +2068,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} \ No newline at end of file +} diff --git a/notebooks/seq_mlp_group_size.ipynb b/notebooks/seq_mlp_group_size.ipynb index 2ec9be7..c3ea0cf 100644 --- a/notebooks/seq_mlp_group_size.ipynb +++ b/notebooks/seq_mlp_group_size.ipynb @@ -2,25 +2,28 @@ "cells": [ { "cell_type": "markdown", + "id": "c8c5c4b6", "metadata": {}, "source": [ "# MLP Scaling: $H$ vs $|G|$ \n", "\n", "Hidden neurons vs group size scaling experiments." - ], - "id": "c8c5c4b6" + ] }, { "cell_type": "markdown", + "id": "155908c2", "metadata": {}, "source": [ "## Set up" - ], - "id": "155908c2" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "7fc4c5b6", "metadata": {}, + "outputs": [], "source": [ "# autoreload\n", "%load_ext autoreload\n", @@ -47,42 +50,42 @@ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from pathlib import Path" - ], - "execution_count": null, - "outputs": [], - "id": "7fc4c5b6" + ] }, { "cell_type": "markdown", + "id": "9831010d", "metadata": {}, "source": [ "## Specify experiment directory" - ], - "id": "9831010d" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "b9f8fc25", "metadata": {}, + "outputs": [], "source": [ "# sweep_dir = \"/home/facosta/group-agf/sweeps/onehot_scaling_sweep_20251215_175955\"\n", "sweep_dir = \"/home/facosta/group-agf/sweep_results/onehot_scaling_sweep_20260112_022012\"\n", "print(os.path.exists(sweep_dir))" - ], - "execution_count": null, - "outputs": [], - "id": "b9f8fc25" + ] }, { "cell_type": "markdown", + "id": "d8342c22", "metadata": {}, "source": [ "### Steps to Convergence" - ], - "id": "d8342c22" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "bc6dd932", "metadata": {}, + "outputs": [], "source": [ "def load_sweep_results_grid_convergence_p_h(\n", " sweep_dir: str,\n", @@ -165,14 +168,14 @@ " # else: No seeds converged - grid[i,j] remains NaN (blacked out)\n", "\n", " return grid, std_grid" - ], - "execution_count": null, - "outputs": [], - "id": "bc6dd932" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "9a87f24d", "metadata": {}, + "outputs": [], "source": [ "def load_sweep_results_grid_final_loss_p_h(\n", " sweep_dir: str,\n", @@ -237,14 +240,14 @@ " # else: No seeds found - grid[i,j] remains NaN (blacked out)\n", "\n", " return grid, std_grid" - ], - "execution_count": null, - "outputs": [], - "id": "9a87f24d" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "3bb53f80", "metadata": {}, + "outputs": [], "source": [ "def load_training_loss_curves_p(\n", " sweep_dir: str,\n", @@ -294,14 +297,14 @@ " curves[p] = loss_histories\n", "\n", " return curves" - ], - "execution_count": null, - "outputs": [], - "id": "3bb53f80" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "bf14dee1", "metadata": {}, + "outputs": [], "source": [ "def load_sweep_results_grid_final_val_loss_p_h(\n", " sweep_dir: str,\n", @@ -366,36 +369,36 @@ " # else: No seeds found - grid[i,j] remains NaN (blacked out)\n", "\n", " return grid, std_grid" - ], - "execution_count": null, - "outputs": [], - "id": "bf14dee1" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "42ce6ffd", "metadata": {}, + "outputs": [], "source": [ "# Define parameter values from the sweep config\n", "# Filter to p <= 55 for completed experiments\n", "p_values = [5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70]\n", "hidden_dims = [80, 160, 240, 320, 400, 480, 560, 640, 720, 800, 880, 960, 1040, 1120]\n", "k_values = [2, 3] # , 4] # Different k values to plot separately" - ], - "execution_count": null, - "outputs": [], - "id": "42ce6ffd" + ] }, { "cell_type": "markdown", + "id": "7bf99dee", "metadata": {}, "source": [ "### Plot steps to convergence grid" - ], - "id": "7bf99dee" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "522570f5", "metadata": {}, + "outputs": [], "source": [ "# Load convergence data for each k value separately\n", "reduction_threshold = 0.90\n", @@ -506,29 +509,29 @@ "\n", " plt.colorbar(label=f\"Steps to {reduction_threshold*100}% Convergence\")\n", " plt.title(\n", - " f\"Steps to {reduction_threshold*100}% Convergence: Group Size $|G|$ vs Hidden Dimension $H$\\n($k={k}$, black = did not converge, p \u2264 {max_p})\",\n", + " f\"Steps to {reduction_threshold*100}% Convergence: Group Size $|G|$ vs Hidden Dimension $H$\\n($k={k}$, black = did not converge, p ≤ {max_p})\",\n", " fontsize=14,\n", " fontweight=\"bold\",\n", " )\n", " plt.tight_layout()\n", " plt.show()" - ], - "execution_count": null, - "outputs": [], - "id": "522570f5" + ] }, { "cell_type": "markdown", + "id": "28e479df", "metadata": {}, "source": [ "### Final Training Loss\n", " " - ], - "id": "28e479df" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "06fb5f82", "metadata": {}, + "outputs": [], "source": [ "# Load final training loss data for each k value separately\n", "max_p = 70 # Only visualize completed experiments (p <= 55)\n", @@ -617,7 +620,7 @@ " color=\"magenta\",\n", " linewidth=3,\n", " linestyle=\"--\",\n", - " label=f\"Upper boundary ($H$ \u2265 $(k+1) \\\\cdot 2^{{k-1}} |G|$)\",\n", + " label=f\"Upper boundary ($H$ ≥ $(k+1) \\\\cdot 2^{{k-1}} |G|$)\",\n", " )\n", "\n", " plt.step(\n", @@ -627,7 +630,7 @@ " color=\"red\",\n", " linewidth=3,\n", " linestyle=\"--\",\n", - " label=f\"Lower boundary ($H$ \u2265 $2^{{k-1}} |G|$)\",\n", + " label=f\"Lower boundary ($H$ ≥ $2^{{k-1}} |G|$)\",\n", " )\n", "\n", " # Place legend outside the plot area\n", @@ -643,22 +646,22 @@ " )\n", " plt.tight_layout()\n", " plt.show()" - ], - "execution_count": null, - "outputs": [], - "id": "06fb5f82" + ] }, { "cell_type": "markdown", + "id": "93d367cb", "metadata": {}, "source": [ "### Training Loss Curves by Group Size\n" - ], - "id": "93d367cb" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "5ed8f9c0", "metadata": {}, + "outputs": [], "source": [ "# Plot training loss curves for different group sizes\n", "# Specify the hidden dimension to use\n", @@ -741,14 +744,14 @@ " plt.grid(True, alpha=0.3, which=\"both\")\n", " plt.tight_layout()\n", " plt.show()" - ], - "execution_count": null, - "outputs": [], - "id": "5ed8f9c0" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "96be1620", "metadata": {}, + "outputs": [], "source": [ "# Load final validation loss data for each k value separately\n", "max_p = 60 # Only visualize completed experiments (p <= 55)\n", @@ -837,7 +840,7 @@ " color=\"red\",\n", " linewidth=3,\n", " linestyle=\"--\",\n", - " label=f\"Upper boundary ($H$ \u2265 $(k+1) \\\\cdot 2^{{k-1}} |G|$)\",\n", + " label=f\"Upper boundary ($H$ ≥ $(k+1) \\\\cdot 2^{{k-1}} |G|$)\",\n", " )\n", "\n", " plt.step(\n", @@ -847,7 +850,7 @@ " color=\"blue\",\n", " linewidth=3,\n", " linestyle=\"--\",\n", - " label=f\"Lower boundary ($H$ \u2265 $2^{{k-1}} |G|$)\",\n", + " label=f\"Lower boundary ($H$ ≥ $2^{{k-1}} |G|$)\",\n", " )\n", "\n", " # Place legend outside the plot area\n", @@ -857,28 +860,28 @@ "\n", " plt.colorbar(label=\"Final Validation Loss\")\n", " plt.title(\n", - " f\"Final Validation Loss: Group Size $|G|$ vs Hidden Dimension $H$\\n($k={k}$, black = incomplete experiment, p \u2264 {max_p})\",\n", + " f\"Final Validation Loss: Group Size $|G|$ vs Hidden Dimension $H$\\n($k={k}$, black = incomplete experiment, p ≤ {max_p})\",\n", " fontsize=14,\n", " fontweight=\"bold\",\n", " )\n", " plt.tight_layout()\n", " plt.show()" - ], - "execution_count": null, - "outputs": [], - "id": "96be1620" + ] }, { "cell_type": "markdown", + "id": "d3111eeb", "metadata": {}, "source": [ "### Training Instability" - ], - "id": "d3111eeb" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "d743a392", "metadata": {}, + "outputs": [], "source": [ "def load_sweep_results_grid_spikiness_p_h(\n", " sweep_dir: str, k: int, p_values: list, hidden_dims: list, max_p: int = None\n", @@ -940,14 +943,14 @@ " std_grid[i, j] = np.std(frac_upwards) if len(frac_upwards) > 1 else 0.0\n", "\n", " return grid, std_grid" - ], - "execution_count": null, - "outputs": [], - "id": "d743a392" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "683b555c", "metadata": {}, + "outputs": [], "source": [ "# Load spikiness data for each k value separately\n", "max_p = 70 # Only visualize completed experiments\n", @@ -1046,14 +1049,14 @@ " )\n", " plt.tight_layout()\n", " plt.show()" - ], - "execution_count": null, - "outputs": [], - "id": "683b555c" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "772517ad", "metadata": {}, + "outputs": [], "source": [ "# Load both metrics for each k value separately\n", "reduction_threshold = 0.99\n", @@ -1163,7 +1166,7 @@ " color=\"red\",\n", " linewidth=3,\n", " linestyle=\"--\",\n", - " label=f\"Upper boundary ($H$ \u2265 $(k+1) \\\\cdot 2^{{k-1}} |G|$)\",\n", + " label=f\"Upper boundary ($H$ ≥ $(k+1) \\\\cdot 2^{{k-1}} |G|$)\",\n", " )\n", " \n", " ax.step(\n", @@ -1173,7 +1176,7 @@ " color=\"blue\",\n", " linewidth=3,\n", " linestyle=\"--\",\n", - " label=f\"Lower boundary ($H$ \u2265 $2^{{k-1}} |G|$)\",\n", + " label=f\"Lower boundary ($H$ ≥ $2^{{k-1}} |G|$)\",\n", " )\n", "\n", " # Create custom legend\n", @@ -1183,27 +1186,27 @@ " Patch(facecolor=\"black\", label=\"Did not converge\"),\n", " Patch(facecolor=\"purple\", label=f\"Spiky (frac_up > {spikiness_threshold})\"),\n", " Patch(facecolor=\"yellow\", label=\"Smooth convergence\"),\n", - " plt.Line2D([0], [0], color=\"r\", linewidth=3, linestyle=\"--\", label=f\"Upper boundary ($H$ \u2265 $(k+1) \\\\cdot 2^{{k-1}} |G|$)\"),\n", - " plt.Line2D([0], [0], color=\"b\", linewidth=3, linestyle=\"--\", label=f\"Lower boundary ($H$ \u2265 $2^{{k-1}} |G|$)\"),\n", + " plt.Line2D([0], [0], color=\"r\", linewidth=3, linestyle=\"--\", label=f\"Upper boundary ($H$ ≥ $(k+1) \\\\cdot 2^{{k-1}} |G|$)\"),\n", + " plt.Line2D([0], [0], color=\"b\", linewidth=3, linestyle=\"--\", label=f\"Lower boundary ($H$ ≥ $2^{{k-1}} |G|$)\"),\n", " ]\n", "\n", " ax.legend(handles=legend_elements, loc=\"upper left\", fontsize=11, frameon=True)\n", "\n", " ax.set_title(\n", - " f\"Convergence & Spikiness: $|G|$ vs $H$ ($k={k}$)\\nThresholds: {reduction_threshold*100}% convergence, {spikiness_threshold} spikiness (p \u2264 {max_p})\",\n", + " f\"Convergence & Spikiness: $|G|$ vs $H$ ($k={k}$)\\nThresholds: {reduction_threshold*100}% convergence, {spikiness_threshold} spikiness (p ≤ {max_p})\",\n", " fontsize=14,\n", " fontweight=\"bold\",\n", " )\n", " plt.tight_layout()\n", " plt.show()" - ], - "execution_count": null, - "outputs": [], - "id": "772517ad" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "53ed6f4f", "metadata": {}, + "outputs": [], "source": [ "# Load both convergence and spikiness data for each k value separately\n", "reduction_threshold = 0.99\n", @@ -1301,7 +1304,7 @@ " color=\"red\",\n", " linewidth=3,\n", " linestyle=\"--\",\n", - " label=f\"Upper boundary ($H$ \u2265 $(k+1) \\\\cdot 2^{{k-1}} |G|$)\",\n", + " label=f\"Upper boundary ($H$ ≥ $(k+1) \\\\cdot 2^{{k-1}} |G|$)\",\n", " )\n", "\n", " plt.step(\n", @@ -1311,7 +1314,7 @@ " color=\"blue\",\n", " linewidth=3,\n", " linestyle=\"--\",\n", - " label=f\"Lower boundary ($H$ \u2265 $2^{{k-1}} |G|$)\",\n", + " label=f\"Lower boundary ($H$ ≥ $2^{{k-1}} |G|$)\",\n", " )\n", "\n", " # Custom legend\n", @@ -1327,7 +1330,7 @@ " color=\"red\",\n", " linewidth=3,\n", " linestyle=\"--\",\n", - " label=f\"Upper boundary ($H$ \u2265 $(k+1) \\\\cdot 2^{{k-1}} |G|$)\",\n", + " label=f\"Upper boundary ($H$ ≥ $(k+1) \\\\cdot 2^{{k-1}} |G|$)\",\n", " ),\n", " plt.Line2D(\n", " [0],\n", @@ -1335,7 +1338,7 @@ " color=\"white\",\n", " linewidth=3,\n", " linestyle=\"--\",\n", - " label=f\"Lower boundary ($H$ \u2265 $2^{{k-1}} |G|$)\",\n", + " label=f\"Lower boundary ($H$ ≥ $2^{{k-1}} |G|$)\",\n", " ),\n", " ]\n", " plt.legend(\n", @@ -1349,24 +1352,21 @@ "\n", " plt.colorbar(label=\"Fraction of Upward Steps (Spikiness)\")\n", " plt.title(\n", - " f\"Training Instability: Group Size $|G|$ vs Hidden Dimension $H$\\n($k={k}$, black = did not converge, p \u2264 {max_p})\",\n", + " f\"Training Instability: Group Size $|G|$ vs Hidden Dimension $H$\\n($k={k}$, black = did not converge, p ≤ {max_p})\",\n", " fontsize=14,\n", " fontweight=\"bold\",\n", " )\n", " plt.tight_layout()\n", " plt.show()" - ], - "execution_count": null, - "outputs": [], - "id": "53ed6f4f" + ] }, { "cell_type": "code", - "metadata": {}, - "source": [], "execution_count": null, + "id": "3f30eb24", + "metadata": {}, "outputs": [], - "id": "3f30eb24" + "source": [] } ], "metadata": { @@ -1390,4 +1390,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} \ No newline at end of file +} diff --git a/notebooks/znz_znz.ipynb b/notebooks/znz_znz.ipynb index 60c23f7..33391c2 100644 --- a/notebooks/znz_znz.ipynb +++ b/notebooks/znz_znz.ipynb @@ -2,16 +2,19 @@ "cells": [ { "cell_type": "markdown", + "id": "51d11caf-0971-4324-b63b-819b714a9c3c", "metadata": {}, "source": [ "# Learning Z/nZ x Z/nZ group actions\n", "This notebook is adapted from the `modular arithmetic` notebook, replacing `Z/nZ` group action with `Z/nZ x Z/nZ` group action " - ], - "id": "51d11caf-0971-4324-b63b-819b714a9c3c" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "80f249f1-6985-4c73-86cd-04e1adac3e8d", "metadata": {}, + "outputs": [], "source": [ "import numpy as np\n", "import random\n", @@ -38,22 +41,22 @@ "import group_agf.binary_action_learning.power as power\n", "import group_agf.binary_action_learning.train as train\n", "import group_agf.binary_action_learning.plot as plot\n" - ], - "execution_count": null, - "outputs": [], - "id": "80f249f1-6985-4c73-86cd-04e1adac3e8d" + ] }, { "cell_type": "markdown", + "id": "da0f43df", "metadata": {}, "source": [ "# Define Dataset and Visualize" - ], - "id": "da0f43df" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "f5dba48b", "metadata": {}, + "outputs": [], "source": [ "from group_agf.binary_action_learning.default_config import verbose_interval\n", "import os\n", @@ -82,27 +85,27 @@ " f\"type{template_type}_\"\n", " f\"seed{seed}.pkl\"\n", ")" - ], - "execution_count": null, - "outputs": [], - "id": "f5dba48b" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "615fe334", "metadata": {}, + "outputs": [], "source": [ "template = datasets.choose_template(p, template_type, mnist_digit)\n", "group = 'cnxcn'\n", "\n", "top_frequency_plot = plot.plot_top_template_components(group, template, p)" - ], - "execution_count": null, - "outputs": [], - "id": "615fe334" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "a28838b7", "metadata": {}, + "outputs": [], "source": [ "X, Y, translations = datasets.load_modular_addition_dataset_2d(p, template, fraction=dataset_fraction, random_state=seed, template_type=template_type)\n", "\n", @@ -110,22 +113,22 @@ "\n", "dataset = TensorDataset(X, Y)\n", "dataloader = DataLoader(dataset, batch_size=batch_size, shuffle=False)" - ], - "execution_count": null, - "outputs": [], - "id": "a28838b7" + ] }, { "cell_type": "markdown", + "id": "111a2530", "metadata": {}, "source": [ "# Define Model and Train" - ], - "id": "111a2530" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "00b56ec1", "metadata": {}, + "outputs": [], "source": [ "np.random.seed(seed)\n", "torch.manual_seed(seed)\n", @@ -145,71 +148,68 @@ " verbose_interval=verbose_interval,\n", " model_save_path=model_save_path\n", ")" - ], - "execution_count": null, - "outputs": [], - "id": "00b56ec1" + ] }, { "cell_type": "markdown", + "id": "e3b19dcc", "metadata": {}, "source": [ "# Plot loss, power, and model output" - ], - "id": "e3b19dcc" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "5989bcd9", "metadata": {}, + "outputs": [], "source": [ "loss_plot = plot.plot_loss_curve(loss_history, template)" - ], - "execution_count": null, - "outputs": [], - "id": "5989bcd9" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "b1965705", "metadata": {}, + "outputs": [], "source": [ "template_2d = template.reshape((p, p))\n", "power_over_training_plot = plot.plot_training_power_over_time(template_2d, model, device, param_history, X, p, save_path=None, show=False) " - ], - "execution_count": null, - "outputs": [], - "id": "b1965705" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "d0319335", "metadata": {}, + "outputs": [], "source": [ "neuron_indices = list(range(20))\n", "group= 'cnxcn'\n", "print(neuron_indices)\n", "neuron_weights_plot = plot.plot_neuron_weights(group, model, p, neuron_indices=neuron_indices, show=True)" - ], - "execution_count": null, - "outputs": [], - "id": "d0319335" + ] }, { "cell_type": "code", + "execution_count": null, + "id": "80fc35d9", "metadata": {}, + "outputs": [], "source": [ "idx = 13\n", "plot.plot_model_outputs(p, model, X, Y, idx)" - ], - "execution_count": null, - "outputs": [], - "id": "80fc35d9" + ] }, { "cell_type": "code", - "metadata": {}, - "source": [], "execution_count": null, + "id": "296b3d56", + "metadata": {}, "outputs": [], - "id": "296b3d56" + "source": [] } ], "metadata": { @@ -233,4 +233,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} \ No newline at end of file +} From 96f707c95a5509bb62d356df956bb3b5fa3acca2 Mon Sep 17 00:00:00 2001 From: Nina Miolane Date: Fri, 6 Feb 2026 05:10:17 +0000 Subject: [PATCH 26/30] ruff fix --- group_agf/binary_action_learning/main.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/group_agf/binary_action_learning/main.py b/group_agf/binary_action_learning/main.py index 65fc133..b812e5c 100644 --- a/group_agf/binary_action_learning/main.py +++ b/group_agf/binary_action_learning/main.py @@ -3,7 +3,6 @@ import logging import time -import default_config import numpy as np import torch import torch.nn as nn @@ -11,6 +10,7 @@ from escnn.group import * from torch.utils.data import DataLoader, TensorDataset +import default_config import group_agf.binary_action_learning.datasets as datasets import group_agf.binary_action_learning.models as models import group_agf.binary_action_learning.plot as plot diff --git a/pyproject.toml b/pyproject.toml index 540710a..e1ec5fa 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -65,7 +65,7 @@ ignore = [ ] [tool.ruff.lint.isort] -known-first-party = ["gagf", "group_agf"] +known-first-party = ["gagf", "group_agf", "default_config"] [tool.pytest.ini_options] testpaths = ["test"] From 08dee844b8e7bfea0692e1b9863f10211e0a8d15 Mon Sep 17 00:00:00 2001 From: Nina Miolane Date: Fri, 6 Feb 2026 05:11:16 +0000 Subject: [PATCH 27/30] fxi imports --- gagf/rnns/main.py | 8 +++---- gagf/rnns/run_sweep.py | 20 ++++++++--------- gagf/rnns/train.py | 12 +++++------ gagf/rnns/utils.py | 2 +- group_agf/binary_action_learning/main.py | 2 +- group_agf/binary_action_learning/train.py | 4 ++-- pyproject.toml | 2 ++ test/test_bal_main.py | 26 ++++++++++++----------- test/test_rnns_main.py | 12 ++++++----- 9 files changed, 47 insertions(+), 41 deletions(-) diff --git a/gagf/rnns/main.py b/gagf/rnns/main.py index c99cbe6..14af14f 100644 --- a/gagf/rnns/main.py +++ b/gagf/rnns/main.py @@ -164,7 +164,7 @@ def produce_plots_2d( np.save(run_dir / "fraction_of_space_seen.npy", fraction_of_space) print(f"Total data space: {total_space_size:,} sequences") - print(f"Samples seen: {samples_seen[-1]:,} ({fraction_of_space[-1]*100:.4f}% of space)") + print(f"Samples seen: {samples_seen[-1]:,} ({fraction_of_space[-1] * 100:.4f}% of space)") ### ----- GENERATE EVALUATION DATA ----- ### print("Generating evaluation data for visualization...") @@ -367,7 +367,7 @@ def produce_plots_1d( np.save(run_dir / "fraction_of_space_seen.npy", fraction_of_space) print(f"Total data space: {total_space_size:,} sequences") - print(f"Samples seen: {samples_seen[-1]:,} ({fraction_of_space[-1]*100:.4f}% of space)") + print(f"Samples seen: {samples_seen[-1]:,} ({fraction_of_space[-1] * 100:.4f}% of space)") ### ----- GENERATE EVALUATION DATA ----- ### print("Generating evaluation data for visualization...") @@ -787,7 +787,7 @@ def produce_plots_D3( print(f"Sequence length k: {k}") print(f"Total data space: {total_space_size:,} sequences") if len(samples_seen) > 0: - print(f"Samples seen: {samples_seen[-1]:,} ({fraction_of_space[-1]*100:.4f}% of space)") + print(f"Samples seen: {samples_seen[-1]:,} ({fraction_of_space[-1] * 100:.4f}% of space)") ### ----- GENERATE EVALUATION DATA ----- ### print("\nGenerating evaluation data for visualization...") @@ -1308,7 +1308,7 @@ def train_single_run(config: dict, run_dir: Path = None) -> dict: # Get optional early stopping threshold reduction_threshold = config["training"].get("reduction_threshold") if reduction_threshold is not None: - print(f"Early stopping enabled at {reduction_threshold*100:.1f}% reduction") + print(f"Early stopping enabled at {reduction_threshold * 100:.1f}% reduction") start_time = time.time() diff --git a/gagf/rnns/run_sweep.py b/gagf/rnns/run_sweep.py index fe940d6..0594409 100644 --- a/gagf/rnns/run_sweep.py +++ b/gagf/rnns/run_sweep.py @@ -334,12 +334,12 @@ def run_experiment( gpu_id: Optional GPU ID to use (overrides config device) """ - print(f"\n{'='*80}") + print(f"\n{'=' * 80}") print(f"RUNNING EXPERIMENT: {exp_name}") print(f"Seeds: {seeds}") if gpu_id is not None: print(f"GPU: cuda:{gpu_id}") - print(f"{'='*80}") + print(f"{'=' * 80}") # Create experiment directory exp_dir = sweep_dir / exp_name @@ -348,9 +348,9 @@ def run_experiment( # Run each seed sequentially run_results = [] for seed_idx, seed in enumerate(seeds): - print(f"\n{'-'*60}") + print(f"\n{'-' * 60}") print(f"EXPERIMENT {exp_name} - SEED {seed_idx + 1}/{len(seeds)}: seed={seed}") - print(f"{'-'*60}") + print(f"{'-' * 60}") result = run_single_seed(exp_name, config, seed, sweep_dir, gpu_id) run_results.append(result) @@ -475,9 +475,9 @@ def generate_sweep_summary(sweep_dir: Path, all_results: dict[str, list[dict[str with open(summary_path, "w") as f: yaml.dump(sweep_summary, f, default_flow_style=False, indent=2) - print(f"\n{'='*80}") + print(f"\n{'=' * 80}") print("PARAMETER SWEEP COMPLETE") - print(f"{'='*80}") + print(f"{'=' * 80}") print(f"Total experiments: {len(all_results)}") print(f"Total runs: {total_runs}") print(f"Successful runs: {total_successful}/{total_runs}") @@ -560,11 +560,11 @@ def run_parameter_sweep( if use_parallel: # Parallel execution: distribute tasks across GPUs - print(f"\n{'='*80}") + print(f"\n{'=' * 80}") print( f"PARALLEL EXECUTION MODE: Distributing {len(experiment_configs) * n_seeds} tasks across {len(gpu_ids)} GPUs" ) - print(f"{'='*80}") + print(f"{'=' * 80}") # Flatten experiments with seeds into individual tasks tasks = [] @@ -675,11 +675,11 @@ def run_parameter_sweep( yaml.dump(exp_summary, f, default_flow_style=False, indent=2) else: # Sequential execution: run experiments one at a time (original behavior) - print(f"\n{'='*80}") + print(f"\n{'=' * 80}") print( f"SEQUENTIAL EXECUTION MODE: Running on GPU {gpu_ids[0] if gpu_ids[0] is not None else 'CPU'}" ) - print(f"{'='*80}") + print(f"{'=' * 80}") all_results = {} for exp_name, config in experiment_configs: diff --git a/gagf/rnns/train.py b/gagf/rnns/train.py index 8a6b5d8..b794d81 100644 --- a/gagf/rnns/train.py +++ b/gagf/rnns/train.py @@ -65,7 +65,7 @@ def train( if reduction_threshold is not None: print(f" Initial loss: {initial_loss:.6f}") - print(f" Early stopping at {reduction_threshold*100:.1f}% reduction") + print(f" Early stopping at {reduction_threshold * 100:.1f}% reduction") final_epoch = epochs @@ -125,13 +125,13 @@ def train( param_history.append(snap) param_save_epochs.append(epoch) print( - f"\n[CONVERGED] Epoch {epoch}: {reduction*100:.1f}% reduction >= {reduction_threshold*100:.1f}% threshold" + f"\n[CONVERGED] Epoch {epoch}: {reduction * 100:.1f}% reduction >= {reduction_threshold * 100:.1f}% threshold" ) break if epoch % verbose_interval == 0: print( - f"[Epoch {epoch:>5}/{epochs}] loss: {avg_loss:.6f} | reduction: {reduction*100:>6.1f}%" + f"[Epoch {epoch:>5}/{epochs}] loss: {avg_loss:.6f} | reduction: {reduction * 100:>6.1f}%" ) return train_loss_history, val_loss_history, param_history, param_save_epochs, final_epoch @@ -196,7 +196,7 @@ def train_online( if reduction_threshold is not None: print(f" Initial loss: {initial_loss:.6f}") - print(f" Early stopping at {reduction_threshold*100:.1f}% reduction") + print(f" Early stopping at {reduction_threshold * 100:.1f}% reduction") # Training loop model.train() @@ -263,13 +263,13 @@ def train_online( param_history.append(snap) param_save_steps.append(step) print( - f"\n[CONVERGED] Step {step}: {reduction*100:.1f}% reduction >= {reduction_threshold*100:.1f}% threshold" + f"\n[CONVERGED] Step {step}: {reduction * 100:.1f}% reduction >= {reduction_threshold * 100:.1f}% threshold" ) break if step % verbose_interval == 0: print( - f"[Step {step:>6}/{num_steps}] loss: {current_loss:.6f} | reduction: {reduction*100:>6.1f}%" + f"[Step {step:>6}/{num_steps}] loss: {current_loss:.6f} | reduction: {reduction * 100:>6.1f}%" ) return train_loss_history, val_loss_history, param_history, param_save_steps, final_step diff --git a/gagf/rnns/utils.py b/gagf/rnns/utils.py index 419ae18..f287616 100644 --- a/gagf/rnns/utils.py +++ b/gagf/rnns/utils.py @@ -1254,7 +1254,7 @@ def plot_wout_neuron_specialization( # Get dimensions W0 = param_history[steps[0]]["W_out"].detach().cpu().numpy().T # (H, D) H, D = W0.shape - assert p1 * p2 == D, f"p1*p2 ({p1*p2}) must equal D ({D})." + assert p1 * p2 == D, f"p1*p2 ({p1 * p2}) must equal D ({D})." # Compute global color limits across all steps vmin, vmax = np.inf, -np.inf diff --git a/group_agf/binary_action_learning/main.py b/group_agf/binary_action_learning/main.py index b812e5c..9e91236 100644 --- a/group_agf/binary_action_learning/main.py +++ b/group_agf/binary_action_learning/main.py @@ -7,6 +7,7 @@ import torch import torch.nn as nn import torch.optim as optim +import wandb from escnn.group import * from torch.utils.data import DataLoader, TensorDataset @@ -16,7 +17,6 @@ import group_agf.binary_action_learning.plot as plot import group_agf.binary_action_learning.power as power import group_agf.binary_action_learning.train as train -import wandb from group_agf.binary_action_learning.optimizer import PerNeuronScaledSGD today = datetime.date.today() diff --git a/group_agf/binary_action_learning/train.py b/group_agf/binary_action_learning/train.py index d3a414d..bb5ec0c 100644 --- a/group_agf/binary_action_learning/train.py +++ b/group_agf/binary_action_learning/train.py @@ -214,7 +214,7 @@ def train( if torch.isnan(torch.tensor(avg_loss)): if epoch < 0.75 * config["epochs"]: raise RuntimeError( - f"NaN loss encountered at epoch {epoch+1} (avg_loss={avg_loss})." + f"NaN loss encountered at epoch {epoch + 1} (avg_loss={avg_loss})." ) loss_history.append(avg_loss) @@ -235,7 +235,7 @@ def train( # Print verbose information every `verbose_interval` epochs if (epoch + 1) % config["verbose_interval"] == 0: print( - f"Epoch {epoch+1}/{config["epochs"]}, Loss: {avg_loss:.4f}, Accuracy: {accuracy:.2f}%" + f"Epoch {epoch + 1}/{config['epochs']}, Loss: {avg_loss:.4f}, Accuracy: {accuracy:.2f}%" ) # Save checkpoint if at checkpoint interval or at the end of the training diff --git a/pyproject.toml b/pyproject.toml index e1ec5fa..eec87ae 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -43,6 +43,7 @@ exclude = [ ".venv", "build", "dist", + "wandb", ] [tool.ruff.lint] @@ -66,6 +67,7 @@ ignore = [ [tool.ruff.lint.isort] known-first-party = ["gagf", "group_agf", "default_config"] +known-third-party = ["wandb"] [tool.pytest.ini_options] testpaths = ["test"] diff --git a/test/test_bal_main.py b/test/test_bal_main.py index 4dbf1bf..6bbd811 100644 --- a/test/test_bal_main.py +++ b/test/test_bal_main.py @@ -51,11 +51,14 @@ def mock_wandb(): mock_config = MagicMock() - with patch("wandb.init") as mock_init, patch("wandb.config", mock_config), patch( - "wandb.run", mock_run - ), patch("wandb.log") as mock_log, patch("wandb.finish") as mock_finish, patch( - "wandb.Image" - ) as mock_image: + with ( + patch("wandb.init") as mock_init, + patch("wandb.config", mock_config), + patch("wandb.run", mock_run), + patch("wandb.log") as mock_log, + patch("wandb.finish") as mock_finish, + patch("wandb.Image") as mock_image, + ): mock_init.return_value = mock_run mock_image.return_value = MagicMock() yield { @@ -71,13 +74,12 @@ def mock_wandb(): @pytest.fixture def mock_plots(): """Mock plot functions to skip visualization.""" - with patch("group_agf.binary_action_learning.plot.plot_loss_curve") as mock_loss, patch( - "group_agf.binary_action_learning.plot.plot_training_power_over_time" - ) as mock_power, patch( - "group_agf.binary_action_learning.plot.plot_neuron_weights" - ) as mock_weights, patch( - "group_agf.binary_action_learning.plot.plot_model_outputs" - ) as mock_outputs: + with ( + patch("group_agf.binary_action_learning.plot.plot_loss_curve") as mock_loss, + patch("group_agf.binary_action_learning.plot.plot_training_power_over_time") as mock_power, + patch("group_agf.binary_action_learning.plot.plot_neuron_weights") as mock_weights, + patch("group_agf.binary_action_learning.plot.plot_model_outputs") as mock_outputs, + ): # Return mock figure objects mock_fig = MagicMock() mock_loss.return_value = mock_fig diff --git a/test/test_rnns_main.py b/test/test_rnns_main.py index e935f72..a0ec133 100644 --- a/test/test_rnns_main.py +++ b/test/test_rnns_main.py @@ -38,11 +38,13 @@ def test_config_path(): @pytest.fixture def mock_plots(): """Mock all plot functions to skip visualization.""" - with patch("gagf.rnns.main.produce_plots_1d") as mock_1d, patch( - "gagf.rnns.main.produce_plots_2d" - ) as mock_2d, patch("gagf.rnns.main.produce_plots_D3") as mock_d3, patch( - "matplotlib.pyplot.savefig" - ) as mock_savefig, patch("matplotlib.pyplot.close") as mock_close: + with ( + patch("gagf.rnns.main.produce_plots_1d") as mock_1d, + patch("gagf.rnns.main.produce_plots_2d") as mock_2d, + patch("gagf.rnns.main.produce_plots_D3") as mock_d3, + patch("matplotlib.pyplot.savefig") as mock_savefig, + patch("matplotlib.pyplot.close") as mock_close, + ): yield { "produce_plots_1d": mock_1d, "produce_plots_2d": mock_2d, From 8d61311b7af25134dbbc5506993032d27f7e9a35 Mon Sep 17 00:00:00 2001 From: Nina Miolane Date: Fri, 6 Feb 2026 05:14:45 +0000 Subject: [PATCH 28/30] ruff format --- .pre-commit-config.yaml | 2 +- gagf/rnns/datamodule.py | 6 +++--- gagf/rnns/main.py | 6 +++--- group_agf/binary_action_learning/templates.py | 6 +++--- test/test_bal_group_fourier_transform.py | 18 +++++++++--------- test/test_bal_templates.py | 18 +++++++++--------- 6 files changed, 28 insertions(+), 28 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 501e63d..b7b46ae 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -19,7 +19,7 @@ repos: # Ruff - Python linting and formatting - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.3.0 + rev: v0.14.0 hooks: # Linter - id: ruff diff --git a/gagf/rnns/datamodule.py b/gagf/rnns/datamodule.py index ed3d8af..b76b9ac 100644 --- a/gagf/rnns/datamodule.py +++ b/gagf/rnns/datamodule.py @@ -368,9 +368,9 @@ def build_modular_addition_sequence_dataset_D3( D3 = DihedralGroup(N=3) group_order = D3.order() # = 6 - assert template.shape == ( - group_order, - ), f"template must be ({group_order},), got {template.shape}" + assert template.shape == (group_order,), ( + f"template must be ({group_order},), got {template.shape}" + ) # Get regular representation and list of elements regular_rep = D3.representations["regular"] diff --git a/gagf/rnns/main.py b/gagf/rnns/main.py index 14af14f..88f25ec 100644 --- a/gagf/rnns/main.py +++ b/gagf/rnns/main.py @@ -994,9 +994,9 @@ def train_single_run(config: dict, run_dir: Path = None) -> dict: irreps = D3.irreps() irrep_dims = [ir.size for ir in irreps] - assert len(powers) == len( - irreps - ), f"powers must have {len(irreps)} values (one per irrep), got {len(powers)}" + assert len(powers) == len(irreps), ( + f"powers must have {len(irreps)} values (one per irrep), got {len(powers)}" + ) # Convert powers to Fourier coefficient diagonal values # (same formula as in binary_action_learning/main.py) diff --git a/group_agf/binary_action_learning/templates.py b/group_agf/binary_action_learning/templates.py index 01fb564..2906fc2 100644 --- a/group_agf/binary_action_learning/templates.py +++ b/group_agf/binary_action_learning/templates.py @@ -132,9 +132,9 @@ def fixed_group_template(group, fourier_coef_diag_values): The mean centered template. """ spectrum = [] - assert ( - len(fourier_coef_diag_values) == len(group.irreps()) - ), f"Number of Fourier coef. magnitudes on the diagonal {len(fourier_coef_diag_values)} must match number of irreps {len(group.irreps())}" + assert len(fourier_coef_diag_values) == len(group.irreps()), ( + f"Number of Fourier coef. magnitudes on the diagonal {len(fourier_coef_diag_values)} must match number of irreps {len(group.irreps())}" + ) for i, irrep in enumerate(group.irreps()): diag_values = np.full(irrep.size, fourier_coef_diag_values[i], dtype=float) mat = np.zeros((irrep.size, irrep.size), dtype=float) diff --git a/test/test_bal_group_fourier_transform.py b/test/test_bal_group_fourier_transform.py index 1b04205..684733b 100644 --- a/test/test_bal_group_fourier_transform.py +++ b/test/test_bal_group_fourier_transform.py @@ -25,9 +25,9 @@ def test_fourier_inverse_is_identity(): fourier_transform_reconstructed = compute_group_fourier_transform(group, reconstructed) # Check that the original and reconstructed template are close - assert np.allclose( - template, reconstructed, atol=1e-10 - ), f"Inversion failed! max diff: {np.max(np.abs(template - reconstructed))}" + assert np.allclose(template, reconstructed, atol=1e-10), ( + f"Inversion failed! max diff: {np.max(np.abs(template - reconstructed))}" + ) print(f"diff: {(np.abs(template - reconstructed))}") # Check that the Fourier transform of the reconstructed template is close to the original Fourier transform @@ -35,13 +35,13 @@ def test_fourier_inverse_is_identity(): print( f"fourier_transform_reconstructed: {[ft.shape for ft in fourier_transform_reconstructed]}" ) - assert len(fourier_transform) == len( - fourier_transform_reconstructed - ), f"Length mismatch: {len(fourier_transform)} vs {len(fourier_transform_reconstructed)}" + assert len(fourier_transform) == len(fourier_transform_reconstructed), ( + f"Length mismatch: {len(fourier_transform)} vs {len(fourier_transform_reconstructed)}" + ) for i, (ft, ft_rec) in enumerate(zip(fourier_transform, fourier_transform_reconstructed)): - assert np.allclose( - ft, ft_rec, atol=1e-10 - ), f"Fourier transform failed at index {i}! max diff: {np.max(np.abs(ft - ft_rec))}" + assert np.allclose(ft, ft_rec, atol=1e-10), ( + f"Fourier transform failed at index {i}! max diff: {np.max(np.abs(ft - ft_rec))}" + ) print(f"diff at index {i}: {np.max(np.abs(ft - ft_rec))}") diff --git a/test/test_bal_templates.py b/test/test_bal_templates.py index 6ce5ca6..2cd3509 100644 --- a/test/test_bal_templates.py +++ b/test/test_bal_templates.py @@ -50,9 +50,9 @@ def test_output_shape(self): template = fixed_cn_template(group_size, fourier_coef_mags) - assert template.shape == ( - group_size, - ), f"Expected shape ({group_size},), got {template.shape}" + assert template.shape == (group_size,), ( + f"Expected shape ({group_size},), got {template.shape}" + ) def test_mean_centered(self): """Test that the template is mean-centered.""" @@ -85,9 +85,9 @@ def test_output_shape(self): template = fixed_cnxcn_template(image_length, fourier_coef_mags) expected_size = image_length * image_length - assert template.shape == ( - expected_size, - ), f"Expected shape ({expected_size},), got {template.shape}" + assert template.shape == (expected_size,), ( + f"Expected shape ({expected_size},), got {template.shape}" + ) def test_mean_centered(self): """Test that the template is mean-centered.""" @@ -126,9 +126,9 @@ def test_output_shape(self, dihedral_group): template = fixed_group_template(dihedral_group, fourier_coef_diag_values) - assert template.shape == ( - group_order, - ), f"Expected shape ({group_order},), got {template.shape}" + assert template.shape == (group_order,), ( + f"Expected shape ({group_order},), got {template.shape}" + ) def test_mean_centered(self, dihedral_group): """Test that the template is mean-centered.""" From 0a4b30a779065df7b9fa354bfd9d553867832c9a Mon Sep 17 00:00:00 2001 From: Nina Miolane Date: Fri, 6 Feb 2026 05:16:16 +0000 Subject: [PATCH 29/30] add ci badge --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 321ac04..b66aa20 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,7 @@ # group-agf + +[![CI](https://github.com/geometric-intelligence/group-agf/actions/workflows/ci.yml/badge.svg)](https://github.com/geometric-intelligence/group-agf/actions/workflows/ci.yml) + Group Alternating Gradient Flows # Installing Dependencies From ef7d9f802f92a6cbde1fcc29fafbc0c90410dc70 Mon Sep 17 00:00:00 2001 From: Nina Miolane Date: Fri, 6 Feb 2026 05:18:30 +0000 Subject: [PATCH 30/30] fix install in ci.yml --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bf8a2fc..c9a6503 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -46,8 +46,8 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - pip install torch --index-url https://download.pytorch.org/whl/cpu - pip install numpy scipy pytest + pip install torch torchvision --index-url https://download.pytorch.org/whl/cpu + pip install numpy scipy pytest escnn - name: Install package run: |